今回、CKEditorにYoutube動画貼付け用のpluginを追加することになったので、設置方法をメモる。
インストールしたpluginは
の2つ。
設置方法は
1.ソースをDLして解凍
2.youtubeフォルダとmediaembedフォルダをCKEditorのpluginフォルダ(ckeditor/plugins/)へコピー
3.ckeditor/config.js に config.extraPlugins = 'youtube,ediaembed'; を追加 (MediaEmbedのreadme.txtには「config.extraPlugins = 'MediaEmbed';」と記述されていたが、すべて小文字にしないと動かなかった、、、)
CKEDITOR.editorConfig = function( config ){ ... config.extraPlugins = 'youtube,ediaembed'; };
4.ツールバーに'MediaEmbed','Youtube' を追加 参考ページ
CKEDITOR.editorConfig = function( config ) { ... config.toolbar = 'MyToolbar'; config.toolbar_MyToolbar = [ ... ['MediaEmbed','Youtube'] ]; };
これで、とりあえず利用可能な状態になる。
次に日本語化をする。
CKEditorのpluginを日本語化するには、各pluginごとにlang/ja.jsファイルを作成する必要がある。
幸い、Youtube pluginには lang/en.js があったので、それをコピーして編集すればOK。
1.ckeditor/plugins/youtube/plugin.js の「lang」設定に「ja」を追加
CKEDITOR.plugins.add('youtube',{ lang:['en','uk','ja'], ... })
2. ckeditor/plugins/youtube/lang/en.js をコピーして ja.js を作成して、必要に応じて日本語化する
Youtube plugin はこれでおしまい。
問題はMediaEmbed plugin。。。 langディレクトリがない、、、
というわけで、多言語に対応できるよう修正する
1.ckeditor/plugins/mediaembed/plugin.js を以下のように修正する
( function() { CKEDITOR.plugins.add( 'mediaembed',{ lang:['en','ja'], requires: [ 'iframedialog' ], init: function( editor ){ var me = this; CKEDITOR.dialog.add( 'MediaEmbedDialog', function (){ return { title : editor.lang.mediaembed.title, minWidth : 550, minHeight : 200, contents : [{ id : 'iframe', label : 'Embed Media', expand : true, elements : [{ type : 'html', id : 'pageMediaEmbed', label : 'Embed Media', style : 'width : 100%;margin:0;padding:0;', //html : '<iframe src="'+me.path+'/dialogs/mediaembed.html" frameborder="0" name="iframeMediaEmbed" id="iframeMediaEmbed" allowtransparency="1" style="width:100%;margin:0;padding:0;"></iframe>' html : '<style> body { font: normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif; } #embed { width: 100%; height: 110px; margin: 5px 0 0 0; border: 1px solid #a0a0a0; font: normal 11px Courier, Fixedsys, serif; background-color: #ffffff; }</style> '+editor.lang.mediaembed.inputMsg+'<br /><textarea id="embed" /></textarea>' }] }], onOk : function(){ // CKEditorを複数設置した場合、うまく動作しなかったので修正 /* for (var i=0; i<window.frames.length; i++) { alert(window.frames[i].name); if(window.frames[i].name == 'pageMediaEmbed') { var content = window.frames[i].document.getElementById("embed").value; } }*/ var content = document.getElementById("embed").value; final_html = 'MediaEmbedInsertData|---' + escape('<div class="media_embed">'+content+'</div>') + '---|MediaEmbedInsertData'; this.getParentEditor().insertHtml(final_html); updated_editor_data = this.getParentEditor().getData(); clean_editor_data = updated_editor_data.replace(final_html,'<div class="media_embed">'+content+'</div>'); this.getParentEditor().setData(clean_editor_data); } }; }); editor.addCommand( 'MediaEmbed', new CKEDITOR.dialogCommand( 'MediaEmbedDialog' ) ); editor.ui.addButton( 'MediaEmbed', { label: editor.lang.mediaembed.button, command: 'MediaEmbed', icon: this.path + 'images/icon.gif }); } }); })();
2.ckeditor/plugins/youtube/lang/en.js を作成
CKEDITOR.plugins.setLang('mediaembed', 'en',{ mediaembed :{ title : 'Embed Media Dialog', button : 'Embed Media', inputMsg : 'Paste Embed Code Here: ' } });
3.ckeditor/plugins/youtube/lang/ja.js を作成
CKEDITOR.plugins.setLang('mediaembed', 'ja', { mediaembed :{ title : '動画タグ', button : '動画タグ', inputMsg : '動画の埋め込みコードを貼り付けてください' } });
これで、日本語化できました。。。