正在加载...
2006-11
3

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中加入这样一个类:

  1. <?php
  2. class XoopsFormTextAreaJsWithTinyMCE extends XoopsFormTextArea{
  3.     var $js="/xoops/js/tiny_mce/tiny_mce.js";
  4.     var $script="<script language=\"javascript\" 
  5. type=\"text/javascript\">\n    tinyMCE.init({\n       
  6. mode : \"exact\",\n        theme : \"advanced\",\n   
  7.     elements : \"text,elm2\",\n        plugins :
  8. \"table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,
  9. preview,zoom,media,searchreplace,print,contextmenu,paste,
  10. directionality,fullscreen\",\n       
  11. theme_advanced_buttons1_add_before :
  12. \"save,newdocument,separator\",\n       
  13. theme_advanced_buttons1_add : \"fontselect,fontsizeselect\",\n        theme_advanced_buttons2_add : \"separator,insertdate,inserttime,preview,zoom,
  14. separator,forecolor,backcolor\",\n       
  15. theme_advanced_buttons2_add_before: \"cut,copy,paste,pastetext,pasteword,separator,
  16. search,replace,separator\",\n       
  17. theme_advanced_buttons3_add_before :
  18. \"tablecontrols,separator\",\n       
  19. theme_advanced_buttons3_add : \"emotions,iespell,media,advhr,separator,print,
  20. separator,ltr,rtl,separator,fullscreen\",\n   
  21.     theme_advanced_toolbar_location : \"top\",\n        theme_advanced_toolbar_align :
  22.  \"left\",\n        theme_advanced_statusbar_location : \"bottom\",\n   
  23.     content_css : \"example_word.css\",\n
  24.         plugi2n_insertdate_dateFormat : \"%Y-%m-%d\",\n        plugi2n_insertdate_timeFormat : \"%H:%M:%S\",\n
  25.         external_link_list_url : \"example_link_list.js\",\n       
  26. external_image_list_url : \"example_image_list.js\",\n
  27.         media_external_list_url : \"example_media_list.js\",\n        file_browser_callback : \"fileBrowserCallBack\",\n
  28.         paste_use_dialog : false,\n       
  29. theme_advanced_resizing : true,\n       
  30. theme_advanced_resize_horizontal : false,\n   
  31.     theme_advanced_link_targets : \"_something=My somthing;_something2=My somthing2;_something3=My somthing3;\",\n   
  32.     paste_auto_cleanup_on_paste : true,\n        paste_convert_headers_to_strong : false,\n        paste_strip_class_attributes : \"all\",\n   
  33.     paste_remove_spans : false,\n       
  34. paste_remove_styles : false        \n    });\n\n   
  35. function fileBrowserCallBack(field_name, url, type, win) {\n
  36.         // This is where you insert your custom filebrowser logic\n        alert(\"Filebrowser callback: field_name: \" + field_name + \",
  37. url: \" + url + \", type: \" + type);\n\n       
  38. // Insert new URL, this would normaly be done in a popup\n       
  39. win.document.forms[0].elements[field_name].value = \"someurl.htm\";\n
  40.     }\n</script>";
  41.     function render()
  42.     {
  43.         return "<script src='".$this->js."' >
  44. </script>".$this->script."<textarea name='".$this->getName()."'
  45. id='".$this->getName()."' rows='".$this->getRows()."' cols=
  46. '".$this->getCols()."'".$this->getExtra().">".$this->getValue()."
  47. </textarea>";
  48.     }
  49. }
  50. ?>

然后我们把class FormTextArea extends XoopsFormTextArea 改成
class FormTextArea extends XoopsFormTextAreaJsWithTinyMCE。哈哈,现在成功了。
不过这样也只有当编辑在发布文章选择textarea这个编辑器时才有用,选了koivi和DHTML时还是不行。这也容易,我们把
xoops\modules\article\include\form.article.php中的

  1. $form_art->addElement(new XoopsFormSelectEditor($form_art,"editor",$editor,$nohtml));

这一行去掉。这样用户就没得选择了。然后我们把默认编辑器设成textarea:
找到

  1. $form_art->addElement(new XoopsFormEditor(art_constant("MD_TEXT"), $editor, $editor_configs, $nohtml, $onfailure=null));

这一行,把$editor改为”textarea”,ok了,系统不管什么时候都会使用TinyMCE.
当然,您看到了,在Xoops/js目录下加上TinyMCE这个目录。这个您自个儿Google一下 然后去tinyMCE官方网站去下吧。

: http://www.162cm.com/archives/304.html

本文相关评论 - 1条评论都没有呢

还没有评论。