过年期间,酒足饭饱之余,我又给网站添加了几个模块,同时也把论坛完善了一下,现在似乎已经达到实用的程度,可以写个用户指南了,其余模块以后再说。
做这些主要是为自己玩,练习一下AJAX技术;学会这门手艺的好处,一是有啥想法随时可以试着玩一玩,就像机械爱好者拥有一个自己的车间一样,二是为自己保留一个若干年后再度改行的机会,像我这种十几年没学新东西,只会pascal一种语言,不思进取的程序员,这可不容易啊,呵呵。
小试牛刀之后的体会是,像这个年费仅100元的空间,在这种低流量条件下,其实性能非常不错,可以玩些颇为高级的把戏,我对mysql和php的特性和效率都相当满意,超出预期。
另一个体会是,正则表达式非常强大,作为老程序员,我为以前居然如此忽视它感到羞愧,这东西潜力很大。
值得欣慰的是,在这个产品里我实现了自己以前对BBS的几乎全部期待,Google曾说,假如今天发明email,就该是Wave的样子,尽管听上去是个不祥的类比,但我还是要说,假如今天发明BBS,就该是我这个样子。
祝各位新年快乐。下面是指南:
0)
浏览器兼容性:
0.1)Chrome:和本站其他页面一样,优先考虑Chrome,其余浏览器都未经仔细测试,这是因为我自己用的是Chrome,我太自私了,首先要让自己看着舒服;
0.2)Safari:因为与Chrome同样适用webkit内核,所以兼容性也不错,我在iPad上稍稍试过,暂时未发现差异;
0.3)FireFox:浏览貌似没问题,之前的毛病已经改掉;
0.4)IE7.0+:勉强能看,但有些功能(比如分支展开/折叠)还有问题(好像IE对javascript代码错误的容忍度较低,一遇到无效访问就中断了),有空再处理,不过肯定隐患多多,不指望完全兼容;
1)
页面浏览:
1.1)
帖子树:每个主帖和它的回帖们构成一棵树,每个节点左侧的三角图标指示了其展开/折拢状态(向右表示折拢着),点击该图标可将其展开或折拢;
1.2)
完全展开/折拢:假如你在点击三角图标的同时按下了ctrl键,节点的后代分支将被全部展开或折拢(而不是像普通情况下那样,仅展开到其下一级);
1.3)
浏览模式:分两种,默认模式下,页面被载入时,每棵树只展开到将新近帖子显示出来为止,其余分支皆出于折拢状态(目前新近的定义是30天内,这一点今后有可能会调整),当你(通过页面右上角的复选框)选择了完全展开模式后,所有新旧帖子在页面加载时将全部展开;
1.4)
翻页:顶部和底部都有翻页器,底部翻页器左侧显示了总主帖数和总页数;受宽度所限,并非所有页号都显示在翻页器上,当当前页号(i)大于11且小于(总页数-12)时,该页号将居于翻页器的中间,即,此时翻页器上显示从(i-11)到(i+12)页;
1.5)
排序:默认情况下按最后回复时间(无回复时按主帖时间)降序排序,你可以选择其他排序方式,菜单在顶部翻页器左边;
1.6)
新旧帖区分:旧帖的作者字段以暗蓝色显示,新帖则是亮蓝色;
2)
帖子阅读:
2.1)
独立页面:对于博客文章帖(只能是主帖),点击标题即可打开文章页面,与博客阅读一样;对于通过专用转发书签(详见3.5)转发的帖子,点击标题可打开被转贴的原始页面;对于在论坛里发表的帖子,没有独立页面可打开;
2.2)
帖子内容:帖子在被首次加载时,只显示前140个字符(每个汉字和拉丁字母同样都算一个字符),假如帖子长度超过140,其末尾会显示“(
...)”,点击“
...”可展开全文,此时会显示“摘要”按钮,点击它就隐藏全文而显示摘要;显示摘要时,文本与标题/作者/时间等字段是在同一行内的,而展开全文后,文本将被拉出来独立成块;
2.3)
作者字段:帖子的作者字段是个超链接,点击它将打开一个与论坛首页类似的查询页面,显示该作者所发表或回复过的帖子;这个功能目前还很简单,尚有待改进;
2.4)
时间字段:当主帖是博客文章帖时,帖子的时间字段也是个超链接(虽然字体颜色上看不出),指向文章页面的对应评论栏;
3)
发帖:
3.1)
回帖:每个帖子的末尾有一个回复图标,点击它可显示回帖表单,首次回帖时需处于已登录状态,或输入用户名和电子邮件;此时若再次点击回复图标即可取消回帖并隐藏回帖表单;
3.2)
富文本:发帖功能不支持所见即所得的格式编辑,但可以接受部分简单的HTML标签;
3.2.1
超链接:你输入的url地址在发表后将被解析为超链接,这一点类似于Buzz;不过,假如摘要内容短于全文,上述url在摘要中不会被解析为超链接(这是为了避免截断异常),只有在全文中才会被解析;注意:
输入url时,不能省略“http://”字样,末尾要加个空格,以便于后面的文本做区分;
3.2.2
维基词条:假如你要输入一个指向某维基词条的url,可以利用本站支持的简易标记法:英文词条用“[[
something]]”,中文词条则用“{{词条}}”,会被自动为相应的超链接;
3.3)
输入框:回/发帖表单的文本输入框宽度将随帖子宽度而定,因此回复深度过深时,它会变得太窄,其初始高度回帖时为3行,发主帖时为5行,你可以拖动其右下角来改变其尺寸;
3.4)
回帖成功后,假如被回复的帖子之前处于折拢状态,此时将展开到其下一级节点,也就是新回帖的兄弟节点,新回帖的文本将闪动2秒钟(我如此处理是因为通常回帖的处理速度太快,以至于用户可能察觉不到发生了什么);
3.5)
回帖深度:论坛本身不限制回帖深度,但因为我限制了显示区域的宽度,所有当深度过深时,输入框会变得太窄;其次,由于处理线索化评论的那个wordpress插件限制了最大回复深度为10级,故深度超过10级的回帖,在文章页面里可能无法正常显示(我还没试过);
3.6)
身份:有两种模式标示发帖者身份,一是wordpress所提供的注册/登录模式,二是在发帖时输入用户名/电子邮件的模式,建议经常回帖/发帖者采用前一种,因为我赋予了该模式以更高的权限,详见下;当使用第二种模式时,输入的用户名/电子邮件会在你的浏览器cookie中被保存90天,其间无须再输入;
3.7)
发主帖:点击页面右上角“发帖”按钮,其余与回帖相同,同样,该按钮也是循环式的,再次点击将隐藏发帖表单;
3.8)
转贴:我做了个专门的转帖小窗口,只须将下面的JavaScript代码加为浏览器书签(或者将这个链接拖到书签栏上:
Buzz),即可用该书签将你正在浏览的网页转发到这里,转发之前你可以先选中一段文本,也可以修改标题,并加上自己的点评:
javascript:var d=document,e=encodeURIComponent;var s=window.getSelection();window.open('http://headsalon.org/buzz?url='+e(d.location.href)+'&title='+e(d.title)+'&txt='+e(s.toString()),'buzz','titlebar=0,location=0, toolbar=0,resizable=1,scrollbars=yes,status=0,width=500,height=290');
4)
删改:
4.1)
限制:用户可以删除或修改自己发表的主帖和回帖,前提是你处于已登录状态,且欲删改的帖子没有被别人回复过;
4.2)
按钮:当页面被加载时,当前用户的帖子(主帖或回帖)尾部(回复按钮右侧)将出现“删除”和“修改”按钮,但它们是看不见的,除非你将鼠标移至它们附近,如此设计是出于页面简洁的考虑,或许你已注意到,我的页面严格遵循了简洁主义原则,只突出作者ID、标题和帖子内容,所有meta部分都采用了灰色小字体,我可不想用一堆删除/修改按钮来干扰视线;
4.3)
复核:出于效率考虑,在页面加载时,帖子后面的修改/删除按钮是否出现,仅取决于帖子是不是当前用户发表的,而不考虑是否被别人回复过,后者将在你实际执行修改/删除操作时在后台被检查,这意味着你看到这两个按钮未必等于你能这么做;
4.4)
恢复:删除的帖子只是被标记为删除,短时间(至少几天)内仍在数据库里存着,可以要求恢复,但修改的就无法改回去了,因为这个产品完全绕过了wordpress而直接与数据库打交道,也就无法利用它的文章版本记录机制了;
暂且想到这么多,以后再补充。