小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

!!!!為CKEditor在線編輯器增加一個(gè)自定義插件

 看見就非常 2013-04-13

      CKEditor是一個(gè)非常優(yōu)秀的在線編輯器,它的前身就是FCKEditor,CKEditor據(jù)官方說是重寫了內(nèi)核的,但功能和性能比FCKEditor更為強(qiáng)大和優(yōu)越。記得07年的時(shí)候第一次接觸FCKEditor,那時(shí)候花了一天時(shí)間研究如何在它基礎(chǔ)上增加一個(gè)自定義插件,可以參考這里http://j2ee.blog.sohu.com/36813753.html,但過程比較復(fù)雜和麻煩。其實(shí)CKEditor提供了非常方便的可擴(kuò)展的插件體系,用戶通過它的擴(kuò)展插件體系就可以非常方便的增加自定義插件,我這里簡(jiǎn)單的給出一個(gè)完整的插件示范。

      先到http:///這里下載最新版本的CKEditor,我下載的是3.3.1版,大概有2M左右,包含了全部源碼和測(cè)試用例。下載完畢后,解壓到硬盤,假設(shè)CKEditor解壓后的目錄是${ckeditor},下面提到的都是用這個(gè)進(jìn)行替代。下面就開始一步步制作屬于我們自己的插件了。

一、創(chuàng)建插件目錄結(jié)構(gòu)

1、進(jìn)入到${ckeditor}\plugins目錄下,創(chuàng)建目錄helloworld,這個(gè)目錄名稱就是我們的插件名稱

2、在helloworld目錄下分別建立三個(gè)目錄:dialogsimages、lang

二、編寫插件文件

      每個(gè)插件都會(huì)有一個(gè)plugin.js的插件文件存在于插件目錄的根目錄下,一般使用CKEditor提供的API來進(jìn)行插件的動(dòng)態(tài)增加。首先,我們?cè)?span style="margin: 0px; padding: 0px; color: rgb(178, 34, 34);">helloworld目錄下建立plugin.js文件,使用utf-8存儲(chǔ),該文件的內(nèi)容如下:

  1. /**
  2.  * Title:CKEditor插件示范
  3.  * Author:鐵木箱子(http://www.)
  4.  * Date:2010-08-02
  5.  */
  6. CKEDITOR.plugins.add('helloworld', {
  7. lang:['zh-cn','en'],
  8. requires: ['dialog'],
  9. init: function(a){
  10. var b = a.addCommand('helloworld', new CKEDITOR.dialogCommand('helloworld'));
  11. a.ui.addButton('helloworld', {
  12. label: a.lang.tbTip,
  13. command: 'helloworld',
  14. icon: this.path + 'images/hello.png'
  15. });
  16. CKEDITOR.dialog.add('helloworld', this.path + 'dialogs/helloworld.js');
  17. }
  18. });

三、插件的對(duì)話框

      我們?cè)谏厦娴牟寮募袑懥艘粋€(gè)requires: ['dialog'],表示當(dāng)點(diǎn)擊工具欄上的插件圖標(biāo)時(shí)會(huì)調(diào)用一個(gè)對(duì)話框來進(jìn)行處理。我們先在helloworld\dialogs目錄下建立一個(gè)helloworld.js文件,使用utf-8保存,內(nèi)容如下:

  1. /**
  2.  * Title:CKEditor在線編輯器的代碼插入插件
  3.  * Author:鐵木箱子(http://www.)
  4.  * Date:2010-07-21
  5.  */
  6. CKEDITOR.dialog.add('helloworld', function(editor) {
  7. var _escape = function(value){
  8. return value;
  9. };
  10. return {
  11. title: editor.lang.dlgTitle,
  12.    resizable: CKEDITOR.DIALOG_RESIZE_BOTH,
  13.    minWidth: 360,
  14.    minHeight: 150,
  15.    contents: [{
  16.    id: 'cb',
  17.    name: 'cb',
  18.    label: 'cb',
  19.    title: 'cb',
  20.    elements: [{
  21.    type: 'textarea',
  22.    required: true,
  23.    label: editor.lang.mytxt,
  24.    style: 'width:350px;height:100px',
  25. rows: 6,
  26.    id: 'mytxt',
  27.    'default': 'Hello World'
  28.    }]
  29.    }],
  30.    onOk: function(){
  31.    var mytxt = this.getValueOf('cb', 'mytxt');
  32.    editor.insertHtml(mytxt);
  33.    },
  34.    onLoad: function(){
  35.    }
  36. };
  37. });

四、插件的語言文件支持

      CKEditor本身就是支持i18n的,因此我們可以為插件定義多種語言,這樣可以適應(yīng)更多的場(chǎng)合。進(jìn)入helloworld\lang目錄,在這個(gè)目錄下建立en.jszh-cn.js兩個(gè)文件,分別用來支持中文和英文,內(nèi)容分別如下:

  1. /**
  2.  * 支持英文的語言包(文件名稱en.js),第一個(gè)參數(shù)是插件名稱
  3.  */
  4. CKEDITOR.plugins.setLang('helloworld', 'en', {
  5. tbTip : 'Hello World Plugin Demo',
  6. mytxt : 'Text',
  7. dlgTitle : 'Hello World Plugin Demo(Powered By )'
  8. });
  9.  
  10. /**
  11.  * 支持英文的語言包(文件名稱zh-cn.js),第一個(gè)參數(shù)是插件名稱
  12.  */
  13. CKEDITOR.plugins.setLang('helloworld', 'zh-cn', {
  14. tbTip : 'Hello World插件示范',
  15. mytxt : '文本',
  16. dlgTitle : 'Hello World 插件示范(Powered By )'
  17. });

      這里定義的語言都是我們?cè)诓寮惺褂玫降淖兞浚话阍诓寮募械氖褂檬?span style="margin: 0px; padding: 0px; color: rgb(255, 0, 0);">editor.lang.propName,其中editor是當(dāng)前的編輯器實(shí)體變量,插件一般都會(huì)傳遞的,propName是我們?cè)谡Z言文件中定義的屬性名稱,比如這里的tbTip等。

五、插件的圖片指定

      我們其實(shí)在第二步編寫插件文件中中已經(jīng)指定了插件的圖片文件:icon: this.path + ‘images/hello.png’。這里的icon指的就是在編輯器工具欄上顯示的圖標(biāo),我們這里找一個(gè)16×16大小的png圖片,命名為hello.png,然后放到helloworld\images目錄下即可。

六、演示驗(yàn)證插件

      完成上面5個(gè)步驟后,插件基本上就已經(jīng)完成了。為了能夠使插件可以出現(xiàn)在編輯器的工具欄中,我們還需要做如下配置:

1、打開${ckeditor}\config.js文件,修改內(nèi)容為如下:

  1. CKEDITOR.editorConfig = function( config )
  2. {
  3. // Define changes to default configuration here. For example:
  4. // config.language = 'fr';
  5. // config.uiColor = '#AADC6E';
  6.  
  7. config.language = 'zh-cn';
  8.  
  9. config.toolbar_MyBasic = [
  10. [ 'Bold', 'Italic', '-', 'NumberedList','BulletedList' ],
  11. ['-', 'Link', 'Unlink', 'Image', 'helloworld' ]
  12. ];
  13.  
  14. config.extraPlugins += (config.extraPlugins ? ',helloworld' : 'helloworld');
  15. };

      其中config.extraPlugins這行是關(guān)鍵,表明這個(gè)是我們編寫的額外插件,需要集成到CKEditor中去。這個(gè)僅僅是注冊(cè)而已,如果需要顯示在工具欄中,還要定義一個(gè)toolbar,比如我們這里定義了一個(gè)MyBasic的toolbar,并且只選取了CKEditor中最常用的幾個(gè)工具,然后最后我們?cè)黾恿薶elloworld的插件,這樣我們就把剛才編寫的插件注冊(cè)到MyBasic的toolbar中了。

2、寫一個(gè)demo.html文件進(jìn)行測(cè)試

      我們?cè)?{ckeditor}根目錄下建立一個(gè)demo.html文件來測(cè)試下我們剛寫的插件是否有效,內(nèi)容如下:

  1. <html>
  2. <head>
  3. <title>CKEditor插件編寫示例-Powered By </title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  5. <script type="text/javascript" src="ckeditor.js"></script>
  6. </head>
  7. <body>
  8. <textarea cols="80" id="editor1" name="editor1" rows="10">This is the content!</textarea>
  9. <script>
  10. CKEDITOR.replace("editor1", {
  11. toolbar : 'MyBasic',
  12. height : 300,
  13. width : 800
  14. });
  15. </script>
  16. </body>
  17. </html>

      然后在瀏覽器中打開demo.html文件,就可以看到在編輯器的工具欄中最后一個(gè)就是我們剛寫的插件了,如下圖所示:

CKEditor中helloworld插件運(yùn)行截圖

七、插件包下載和部署

      上面演示效果的完整插件包可以從這里下載,將插件包下載后,安裝如下方式進(jìn)行部署:

1、解壓插件包,將helloworld目錄整個(gè)復(fù)制到${ckeditor}\plugins目錄下;

2、將demo.html文件復(fù)制到${ckeditor}根目錄下;

3、將第六步中的修改config.js文件內(nèi)容替換掉${ckeditor}\config.js文件的內(nèi)容;

4、完成后,在瀏覽器中運(yùn)行demo.html文件即可看到效果

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多