坑爹的 xwiki 二次开发
来源:互联网 发布:淘宝网页不显示图片 编辑:程序博客网 时间:2024/05/16 12:37
boss提出一个需求,要对xwiki进行二次开发,建立一系列的模板来满足不同团队的文档需求。
其中,需要在页面上实现一级tag的选择,然后根据一级tag去display二级tag,并且在将相应的tag加到tag云中。
为了这件事情,我调研了2天,其中各种文档缺失 -- xwiki的document就是一坨乱七八糟,杂乱无章,除了不停的search,没有任何办法。
调研结果:
能不能做呢 - 肯定是可以的,好不好做,当然是不好做的:(
基本思路如下-
1. 要为每个团队建立一个space,该space有其特定的dataType,并生成class
该dataType能指定properties - String,Txtbox,Data,email,可以生成特定的documentSheet,并将Sheet生成Template,在Administrator页面可以将Template发布出来,
用户就可以根据指定的template来建立page。
2. 需要做以上的事情有没有可以参考的文档呢 - 幸运的事, 有一个从流程上知道你一步步如何建立dataType到最后发布的tutorial,不幸的事情,该文档充满了陷阱,还有一个大错误。。。
http://platform.xwiki.org/xwiki/bin/view/DevGuide/FAQTutorialManual
陷阱1 - 为啥我的Properties显示不到template?
在create the Authring Template这节,我用的 xwiki5.1,完全不能自动生成template,而且,据说应该把doucument加入到template的语句
在create the Authring Template这节,{{include document="FAQ.FAQClassSheet"/}},就是个错误的语句, 之前我们创建的Sheet不叫 FAQ.FAQClassSheet,而是 FAQ.FAQSheet。
所以你需要手工的将这个code加入template {{include document="FAQ.FAQSheet"/}}
陷阱2- Object Edit Mode
嘛叫ObjectEditMode??为毛我看不见,只能找到Edit,好吧,又是陷阱吧。原来在User Preference里面你需要选择Edit的类型为Advanced,这个时候你才能看到这个Object Edit Mode.
陷阱3- Script的学习文档咋这简单
好吧,建立好了模板,咋处理上面的各个属性呢。。到了脚本出马的时候了。。。。但是脚本怎么写,有没有学习资料啊??
好不容易找到了Velocity的Macro文档
http://extensions.xwiki.org/xwiki/bin/view/Extension/Velocity+Macro
坑爹t又出来了。。一个语言才2个例子,你叫我咋学习??咋学习?咋学习???
陷阱4- 为毛例子Code不work??
好吧,各安天命吧,大家能做,我也能,xwiki有个Extension的库,我一个个的去看吧。总是有人才在里面贴了不少代码,我就抄吧~
好不容易找到一篇 Rename Tag,好像和我要做的事情类似 - http://extensions.xwiki.org/xwiki/bin/view/Extension/Rename+Tags,
看人家说的 - 多简单,建一个wiki page,把代码一贴,嘿嘿,submit一下,我也看看啥效果。。
Follow these steps:
- Create a new wiki page
- Edit it and save it with the present code
- Insert the name of the tag you want to change
- Insert the new name
- Submit
!!!!为毛代码在我这里不work? 贴一遍,再贴一遍,好吧,统统不work。好吧,你确定这不是来耍我来玩的么??调研来,调研去,发现问题是- 人家代码是对的,贴到xwiki把代码给转码了所有的 {{}}都被去掉,还将#变成了number。。。 我彻底的服气了。。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
以上吐槽结束,还是把我自己调好的draft代码pia上吧,挺弱的,但算是完成了boss需要的功能的一小半 -下一步就是html的活,吧radio下面加入selection box。。胜利可期了。。
code:
{{velocity}}
#if ("$!request.Fruit" != "")
#set($value= $request.getParameterValues('Fruit'))
*$request.Fruit
#end
{{html}}
<form action="" method="post">
这篇文章的分类?<br /><br />
<label><input name="Fruit" type="radio" value="测试" />测试</label>
<label><input name="Fruit" type="radio" value="开发" />开发</label>
<label><input name="Fruit" type="radio" value="产品" />产品</label>
<label><input name="Fruit" type="radio" value="解决方案" />解决方案</label>
<label><input name="Fruit" type="radio" value="其它" />其它 </label>
<input type="submit" value="Submit">
</form>
{{/html}}
#set ($newTag = "")
#if($request.Fruit)
#set ($newTag = $request.Fruit)
#end
#set ($taglist = $doc.getObject("XWiki.TagClass").get("tags"))
$doc.getObject("XWiki.TagClass").set("tags",$newTag);
#set ($discard = $doc.save())
#set ($taglist = $doc.getObject("XWiki.TagClass").get("tags"))
#set($class = $doc.getObject('FAQ.FAQClass').xWikiClass)
#foreach($prop in $class.properties)
; $prop.prettyName
: $doc.display($prop.getName())
#end
{{/velocity}}
- 坑爹的 xwiki 二次开发
- Xwiki的简介
- 邪恶的xwiki
- xwiki的搭建
- XWIKI的搭建
- xwiki
- 搭建基于xwiki的知识管理平台
- Centos7的Docker容器里部署xwiki
- 最近捣腾的-xwiki, java cpu负载监控
- xwiki和mysql一些安装问题的解决
- xwiki基于windows系统的安装配置(Oracle数据库)
- XWiki简介
- xwiki操作手册
- 基于Visio的二次开发
- Castle.DynamicProxy的二次开发
- 关于 Discuz! 的二次开发
- sms 的java二次开发
- 短信猫的二次开发
- ASP.NET MVC中的嵌套布局页
- hdu1398 Square Coins 母函数
- linux下端口扫描的实现(TCP connect、TCP SYN、TCP FIN、UDP四种方式)4 TCP SYN方式
- JQuery五:jQuery中.bind() .live() .delegate() .on()的区别
- 用phonegap+jquerymobile写天气预报(二)---初始化问题
- 坑爹的 xwiki 二次开发
- java socket实现多客户端群聊
- iphone 线程总结— detachNewThreadSelector的使用
- VC++6.0 GPS心得体会
- 《实用OpenCV》<二> 在你的电脑上配置OpenCV
- As的用法
- android中常用的弹出提示框
- PHP sprintf() 函数
- 养生保健,延年益寿---剖析互动能量杯的价值