MediaWiki + VIM是我最近折腾的两大重心。当初选择wiki程序的时候也曾被dokuwiki和moinmoin勾引过好久,dokuwiki不用数据库,很轻巧,moinmoin有我喜欢的Python。不过到最后还是因为维基百科而选择了MediaWiki。永久了也就越来越放不下了,至于其他的两个,先把 MediaWiki折腾好了再说。
个人认为在MediaWiki里面写东西的时候内容隐藏的功能绝不可少。特别像我这种喜欢贴代码和流程思想的人,往往一页写下来老长老长。而且我对 MediaWiki最不满的就是目录无法自动滚动,所以再次浏览或编辑这条目的时候只能PageUp/Down的狂摁,相当难受。
于是乎我今天就在这找到了个好东西—>Toggle。他们自己是这样定义的:This feature allows for toggling the visibility of any part of the page.(能让我们切换页面上一切元素的显示/隐藏状态)哈哈,这下赚大发了。
Toggle不是基于MediaWiki的插件,而是js代码。要想在MediaWiki用它必须修改MediaWiki:Common.js页面(用MediaWiki的原话来说在此处的JavaScript将加载于所有用户每一个页面)。修改方法也很简单,用管理员登陆,在MediaWiki的搜索框中输入MediaWiki:Common.js。点击进入,不存在的话直接创建页面就行了。直接在浏览器中进入可能会出现403Forbidden的情况(亲测,估计是哪个权限没配好)。最后在这个页面增加以下代码http://www.mediawiki.org/wiki/MediaWiki:Common.js
—————————以下是使用介绍—————————
我们可以给为任意元素来生成一个Toggler(就是隐藏/显示的切换器,以下统一用Toggler)。
最简单的方法是手动增加Toggler。要定义一个基本的toggler,只要增加这样的一个元素就行了。
1 | <span class\="\_toggler-CLASS"\>toggler</span\> |
其中“_toggler-CLASS”的“CLASS”对应你要切换的页面元素的Class名称因此像下面的代码就能完美地完成我的目标。
1 | <div style\="display: none;" class\="test"\>隐藏测试</div\> |
代码很好理解,首先创建了一个默认为隐藏的DIV,
填入我们想隐藏的任何东西(代码、图片…)。然后创建了对应这个DIV的切换器。事实上我更喜欢把创建切换器写到创建DIV之前,效果更好。最方便的方法是使用MediaWiki的模板,首先创建模板Template:Hide,填入以下代码并保存。
1 | <includeonly\><span class\="\_togglegroup \_toggle\_initshow \_toggle \_toggler toggle-visible" style\="display:none;"\>\[show\]</span\><span class\="\_toggle\_inithide \_toggle \_toggler toggle-hidden" style\="display:none;"\>\[hide\]</span\> |
Usage
1 | <nowiki\>{{hide|text to hide}}</nowiki\> or <nowiki\>{{hide|1=text to hide}}</nowiki\>. The second form is required when "text to hide" contains an equals sign. This produces:{{hide|text to hide}}</noinclude\> |
接下来我们就可以在Wiki里面就可以用
1 | {{hide|要隐藏的内容}} |
来添加Toggler了,很方便吧… 最有意思的用法是这样的,你点击它的时候把它自己也隐藏了,哈哈。
1 | <span class\="\_toggler-toggle toggle"\>隐藏测试</span\> |
相对高级的应用: toggler可以切换其他的toggler的显示状态,甚至是本身。以下代码就生成了两个相互切换的toggler
1 | #<span class\="\_toggler-toggler2 toggler1"\>Toggle #2</span\> |
你可以使用”_toggler_OPERATION-CLASS”来增加指定功能的toggler,这个Operation包括三种:reset、show、hide。
1 | 同时我们也可以同过元素的ID来增加toggler,方法便是\_toggler--myelement(此Toggler对应的便是用<div id="myelement>...</div>来定义的元素)。 |
更详细的可见OpenWetWare:Toggle,上面还有其他的模板。
—————————以下是扯淡—————————
今天还有另一个收获就是发现了下一步的折腾目标:MediaWiki+Latex和TOC的自动浮动,MediaWiki+Latex好像有蛮多插件,TOC的自动浮动就不知道怎么弄了,继续折腾吧…