本年も宜しくお願いいたします

【summernote + elFinder 】WYSIWYG editorのsummernoteに画像アップロードとファインダ機能をつける

WYSIWYG editorのsummernoteに、

画像アップロードとファインダ機能を付けたかったので、

elFinderを入れました。

前提条件

  • summernote(v0.8.8)
  • elFinder(elFinder-2.1.37)
  • Bootstrap(4.X.X)
  • jquery(3.2.1)
  • jquery UI(1.12.)

作業時のバージョンです。異なるバージョンでの動作は確認していません。

上記全てがすでにインストールされ、それぞれ正常に動いている事を前提条件とします。

summernoteにプラグインを追加する

summernoteのGitHubよりプラグインをダウンロードします。

https://github.com/semplon/summernote-ext-elfinder

 

summernoteを初期化する

通常通り初期化します。fontNamesのinsertの中に[elfinder]を追加します。

 $('#editor1').summernote({
      height: 300,
      lang: "ja-JP",
      fontNames: ["YuGothic","Yu Gothic","Hiragino Kaku Gothic Pro","Meiryo","sans-serif", "Arial","Arial Black","Comic Sans MS","Courier New","Helvetica Neue","Helvetica","Impact","Lucida Grande","Tahoma","Times New Roman","Verdana"],toolbar: [
	         ['style', ['style']],
	         ['style', ['bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', 'clear']],
	          ['fontname', ['fontname']],
	          ['fontsize', ['fontsize']],
	          ['color', ['color']],
	          ['para', ['ul', 'ol', 'paragraph']],
	          ['height', ['height']],
	          ['table', ['table']],
	          ['insert', ['link', 'picture', 'video', 'hr', 'elfinder','readmore']],
	           ['view', ['fullscreen', 'codeview']],
	           ['help', ['help']]
	]
    });

 

elFinderの関数を作る

次にelFinderの関数を書きます。

function elfinderDialog(context){
	var fm = $('<div/>').dialogelfinder({
		url : 'your path/elFinder-2.1.37/php/connector.minimal.php',
		height: 700,
		destroyOnClose : true,
		getFileCallback : function(files, fm) {
			console.log(files);
			context.invoke('editor.insertImage', fm.convAbsUrl(files.url));
		},
		commandsOptions : {
			getfile : {
				oncomplete : 'close',
				folders : false
			}
		}

	}).dialogelfinder('instance');
}

 

htmlファイルに実装する

summernoteのプラグイン、先ほど作成したjs、elFinderを読み込みます。

jquery uiを忘れないようにします。

なお、Bootstrapは省略しています。

<!--jquery-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.12.0/themes/base/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>

<!--summernote elFiner-->
<script src="your path /summernote/summernote-ext-elfinder.js" type="text/javascript"></script>
<script src="your path /elFinder-2.1.37/js/elfinder.full.js" type="text/javascript"></script>
<script src="your path /summernote.js" type="text/javascript"></script>

 

最後にhtmlを設置して完了です。

<textarea id="editor1">デフォルトの文章が入ります</textarea>