article模块加入所见即所得功能支持:
Xoops的内核加入了对Form表单各个种类的封装,这个设计是简化了一些程序设计工作,但是其众多的Form class往往让人头晕。
xoops自带的Koivi,Dhtml编辑器都不怎么出色,很难直接投入商业运用,因此许多人尝试进行Hack.
今天跟霍炬聊的时候,他的话给了我信心,仔细看了代码,发现其实还是不太难的。
下面和我一起做。
我用的Xoops为XOOPS 2.015,artcile模块为0.96.这里系统自带的有三个编辑器,Textarea,koivi,dhtml.在
xoops\Frameworks\xoops22\class\xoopseditor\ 中可以看到。
我在xoops\Frameworks\xoops22\class\xoopseditor\textarea\textarea.php中加入这样一个类:
- <?php
- class XoopsFormTextAreaJsWithTinyMCE extends XoopsFormTextArea{
- var $js="/xoops/js/tiny_mce/tiny_mce.js";
- var $script="<script language=\"javascript\"
- type=\"text/javascript\">\n tinyMCE.init({\n
- mode : \"exact\",\n theme : \"advanced\",\n
- elements : \"text,elm2\",\n plugins :
- \"table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,
- preview,zoom,media,searchreplace,print,contextmenu,paste,
- directionality,fullscreen\",\n
- theme_advanced_buttons1_add_before :
- \"save,newdocument,separator\",\n
- theme_advanced_buttons1_add : \"fontselect,fontsizeselect\",\n theme_advanced_buttons2_add : \"separator,insertdate,inserttime,preview,zoom,
- separator,forecolor,backcolor\",\n
- theme_advanced_buttons2_add_before: \"cut,copy,paste,pastetext,pasteword,separator,
- search,replace,separator\",\n
- theme_advanced_buttons3_add_before :
- \"tablecontrols,separator\",\n
- theme_advanced_buttons3_add : \"emotions,iespell,media,advhr,separator,print,
- separator,ltr,rtl,separator,fullscreen\",\n
- theme_advanced_toolbar_location : \"top\",\n theme_advanced_toolbar_align :
- \"left\",\n theme_advanced_statusbar_location : \"bottom\",\n
- content_css : \"example_word.css\",\n
- plugi2n_insertdate_dateFormat : \"%Y-%m-%d\",\n plugi2n_insertdate_timeFormat : \"%H:%M:%S\",\n
- external_link_list_url : \"example_link_list.js\",\n
- external_image_list_url : \"example_image_list.js\",\n
- media_external_list_url : \"example_media_list.js\",\n file_browser_callback : \"fileBrowserCallBack\",\n
- paste_use_dialog : false,\n
- theme_advanced_resizing : true,\n
- theme_advanced_resize_horizontal : false,\n
- theme_advanced_link_targets : \"_something=My somthing;_something2=My somthing2;_something3=My somthing3;\",\n
- paste_auto_cleanup_on_paste : true,\n paste_convert_headers_to_strong : false,\n paste_strip_class_attributes : \"all\",\n
- paste_remove_spans : false,\n
- paste_remove_styles : false \n });\n\n
- function fileBrowserCallBack(field_name, url, type, win) {\n
- // This is where you insert your custom filebrowser logic\n alert(\"Filebrowser callback: field_name: \" + field_name + \",
- url: \" + url + \", type: \" + type);\n\n
- // Insert new URL, this would normaly be done in a popup\n
- win.document.forms[0].elements[field_name].value = \"someurl.htm\";\n
- }\n</script>";
- function render()
- {
- return "<script src='".$this->js."' >
- </script>".$this->script."<textarea name='".$this->getName()."'
- id='".$this->getName()."' rows='".$this->getRows()."' cols=
- '".$this->getCols()."'".$this->getExtra().">".$this->getValue()."
- </textarea>";
- }
- }
- ?>
然后我们把class FormTextArea extends XoopsFormTextArea 改成
class FormTextArea extends XoopsFormTextAreaJsWithTinyMCE。哈哈,现在成功了。
不过这样也只有当编辑在发布文章选择textarea这个编辑器时才有用,选了koivi和DHTML时还是不行。这也容易,我们把
xoops\modules\article\include\form.article.php中的
- $form_art->addElement(new XoopsFormSelectEditor($form_art,"editor",$editor,$nohtml));
这一行去掉。这样用户就没得选择了。然后我们把默认编辑器设成textarea:
找到
- $form_art->addElement(new XoopsFormEditor(art_constant("MD_TEXT"), $editor, $editor_configs, $nohtml, $onfailure=null));
这一行,把$editor改为”textarea”,ok了,系统不管什么时候都会使用TinyMCE.
当然,您看到了,在Xoops/js目录下加上TinyMCE这个目录。这个您自个儿Google一下 然后去tinyMCE官方网站去下吧。
还没有评论。