Movable Typeの独自コンテキストメニューを無効化する

投稿日:

Movable Typeに組み込まれているエディタ (TinyMCE) には、OS標準のコンテキストメニューをオーバーライドする機能が存在する。

Movable Typeはこの独自コンテキストメニューを有効にした上で「リンク」しか項目を用意していない。死ぬほど不便なので無効化する。

Symptom

  • Movable Type を利用している
  • TinyMCE 5 or TinyMCE 6 を利用している
  • エディタによるコンテキストメニューのオーバーライドを無効化したい

Resolution

https://stackoverflow.com/questions/9509082/remove-the-context-menu-in-tinymce を参考にした。

Anton Kostiuchkov 氏がコメントしているとおり、 TinyMCE 5以降はコンテキストメニュー機能がコアに組み込まれているので、TinyMCE読み込み時のオプションで無効化しなければいけない。

TinyMCE 6 の場合

TinyMCE 6 であれば、mt/mt-static/plugins/TinyMCE6/lib/js/adapter.jsを開き、configブロックへ以下のように contextmenu: false, を追加する。

--- adapter.js.default  2022-12-28 22:10:47.519239000 +0900
+++ adapter.js  2022-12-28 22:09:51.045395000 +0900
@@ -23,4 +23,5 @@
         },
         config: {
+            contextmenu: false,
             plugins: 'lists,media,link,fullscreen,table,quickbars',
             external_plugins: {

ブラウザで投稿画面を開き、Ctrl+Shift+R でスーパーリロードしてから動作を確認する。

TinyMCE 5 の場合

mt/mt-static/plugins/TinyMCE5/lib/js/adapter.jsを開き、同様に configブロックへ contextmenu: false, を追加すればいい。

--- adapter.js.default  2022-12-28 23:10:49.319609000 +0900
+++ adapter.js  2022-12-28 23:11:03.105742000 +0900
@@ -36,4 +36,5 @@
         },
         config: {
+            contextmenu: false,
             plugins: 'lists,media,paste,hr,link,textpattern,fullscreen,table,quickbars',
             external_plugins: {

ブラウザで投稿画面を開き、Ctrl+Shift+R でスーパーリロードしてから動作を確認する。

Appendix

Six Apart はこの仕様について「ブラウザのメニューを表示する場合は、極力 Ctrl キー + 右クリックをご利用ください」とコメントしていた。

誰が見ても単に不便でしかないのだが、実用的なメニューを作るまで機能を有効にしないという判断も、ひとまずメニューにカット・コピー・ペーストなどを追加するという判断もできなかったようだ。どうも盲目さを感じる話ではないか。