1

tinyMCEエディターに画像を追加し、サーバー側で埋め込みコードやその他のコードに置き換えるカスタムyoutubeプラグインがあります。

残っているのは、エディターで画像を選択したときだけです。advImageアイコンとプラグインアイコンの両方がアクティブに設定されます。advimageを非アクティブに設定したい。私はこのようなものを試しました:

 cm.setActive('image', false);

Thariamaに感謝します(以下の回答を参照)。正しい名前はである必要があります'image'。これは私のYouTubeプラグインeditor_plugin.jsファイルから呼び出され、コンソールでは、画像を選択すると、コードが実行されimage、正しいターゲットであることがわかります。

イメージプラグインを非アクティブに設定するにはどうすればよいですか?

詳細については、タリアマの回答の下にあるコメントを参照してください。

4

2 に答える 2

2

HTMLボタン(コードプラグイン)のボタン/コントロールを非アクティブ化する正しい方法を示します

var cm = tinymce.get('my_editor_id').controlManager;
cm.get('code').setActive(0); // get the control named 'code'

使用可能なコントロールを見つけるには、これをコンソールに記録します

console.log(cm.controls);
于 2012-08-28T12:42:20.077 に答える
0

この後、優先リストの一番上になかったので、しばらくそのままにしておきました。今ではそれが私のリストの最後のものであり、tinyMCEとそれをコード化することでより多くの作業を行ったため、私はすぐに解決策を見つけました。

ルートeditor_template.jsに移動する必要があると思いました。これは、画像がアクティブに設定されていたため、変更する必要がありました。

私のyoutubeの画像(そして今ではvimeoも)には、それがyoutubeなのかvimeoのビデオなのかを教えてくれる代替属性があります。次に、これらのプラグインのいずれかを無効にする必要があります。

このコード(すべてのimgタグのアクティブ状態を設定する)の後に1117行目に配置しました。

p = getParent('IMG');
if (c = cm.get('image'))
    c.setActive(!co && !!p && n.className.indexOf('mceItem') == -1);

そして私のコード:

if(ed.selection.getNode())
            if(ed.selection.getNode().getAttribute('alt') === 'videoYoutube' || ed.selection.getNode().getAttribute('alt') === 'videoVimeo') // Get the current selection in the editor and compare
            {
                cm.setDisabled('image', true); // Change disable state
                cm.setActive('image', false); // Change active state state
            }
            else
            {
                cm.setDisabled('image', false);
            }
            if(ed.selection.getNode().getAttribute('alt') === 'videoYoutube')
            {
                cm.setDisabled('addvimeo', true);
            }
            else if(ed.selection.getNode().getAttribute('alt') === 'videoVimeo')
            {
                cm.setDisabled('addyoutube', true);
            }
            else
            {
                cm.setDisabled('addvimeo', false);
                cm.setDisabled('addyoutube', false);
            }
于 2012-10-24T12:42:29.200 に答える