Google Closure エディターを使用していますが、1 つのボタン (つまりLink
) の機能を変更する必要があります。私は、責任のあるプラグインを継承するか (BasicTextFormatter
この場合)、新しいプラグインを作成するか、どちらか簡単な方だと考えました。私の仮定は、すべて継承によって達成でき、Google Closure ファイルを変更する必要はないというものでした。
goog.editor.Plugin
呼び出しについて学ぶために、ダミーのデバッグ情報を継承して配置することができました。
goog.provide('project.LinkPlugin');
goog.require('goog.editor.Plugin');
project.LinkPlugin = function() {
goog.editor.Plugin.call(this);
}
goog.inherits(project.LinkPlugin, goog.editor.Plugin);
project.LinkPlugin.prototype.getTrogClassId = function() {
return 'projectLinkPlugin';
}
project.LinkPlugin.prototype.isSupportedCommand = function(command) {
console.log('is supported ' + command);
return command == 'myLink';
};
project.LinkPlugin.prototype.execCommandInternal = function(command, var_args) {
console.log('exec command ' + command);
}
プラグインを登録しました。
var editor = new goog.editor.Field('rtfEditor');
editor.registerPlugin(new project.LinkPlugin());
editor.registerPlugin(new goog.editor.plugins.BasicTextFormatter());
...
それから、ボタンを追加する方法がわからなかったので、醜い方法でそれをやろうとしました(少なくとも今のところ)
var buttons = [
...
goog.editor.Command.FONT_SIZE,
'myLink',
goog.editor.Command.UNDO,
...
];
var toolbar = goog.ui.editor.DefaultToolbar.makeToolbar(buttons, toolbarDiv);
そして、私は立ち往生しました。ボタンに関する情報はありますが、GC コードを変更せずdefaulttoolbar.js
にボタンを配列に追加する方法が見つかりません。BUTTONS_
全体が非常にうまく合成され、継承可能であるため、それを達成する方法があるに違いないと感じています。さらに、プラグインの概念は、何かを追加するのがかなり簡単で簡単であることを示しています。
グーグルで調べたところ、これとこれしか見つかりませんでした。どちらの方法でも、GC コードを変更する必要があります。
私は何を逃したのですか?
TL;DR バージョン: 独自のプラグインを GC エディターに追加するクリーンな方法はありますか?
また、プラグインを追加するよりも変更 (継承) した方が簡単な場合は、どうすればよいでしょうか? 元のものではなく、私のものを呼び出す必要があることを指定するにはどうすれexecCommandInternal
ばよいですか?
編集:わかりました、ボタンは文字列の配列だけでなく、goog.ui.Control
. したがって、これはおそらくこのステップを解決します。ともかく。私はそれに取り組み続けます。それでも、すべてがうまく要約されているリンクを誰かが知っている場合、または誰かが最近それを行い、ここに要約できる場合は、大いに感謝します.