0

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. したがって、これはおそらくこのステップを解決します。ともかく。私はそれに取り組み続けます。それでも、すべてがうまく要約されているリンクを誰かが知っている場合、または誰かが最近それを行い、ここに要約できる場合は、大いに感謝します.

4

1 に答える 1

1

わかった。私が思ったように、これはうまくできており、Google Closure コードを変更する必要はまったくありません。プラグインを GC Editor に追加する 1 つの方法に興味がある場合は、こちらをご覧ください。

基本的に、新しいプラグインを正しく作成し、正しく登録しました(上記のとおり)。次のように、配列属性にagoog.ui.Controlを追加するだけで済みました。makeToolbar

var myLinkButton = goog.ui.editor.ToolbarFactory.makeButton('myLink', 'This is a tooltip', 'My Custom Link', goog.getCssName('tr-link'));

var buttons = [
  goog.editor.Command.BOLD,
  goog.editor.Command.ITALIC,
  goog.editor.Command.UNDERLINE,
  ...
  myLinkButton,
];

var toolbar = goog.ui.editor.DefaultToolbar.makeToolbar(buttons, toolbarDiv);
var toolbarController = new goog.ui.editor.ToolbarController(editor, toolbar);

(下の2行はそのまま)

その後、エディター プラグイン エンジンはmyLinkコマンドをすべての登録済みプラグインに配布し、私のプラグインはそれをキャッチして応答します。プラグインを追加する代わりに変更する必要がある場合 (それでも元のプラグインの何かを保持する必要がある場合)、変更したプラグインを元のプラグインよりも早く登録するだけで十分です。

しばらくの間、頭でキーボードを叩いていましたが、これは簡単なことでした。インターネット上で利用可能なガイドがないのはなぜですか(はるかに原始的なものを含むほとんどすべてのガイドがあります)、私にはまだ謎です.

于 2013-10-10T11:08:37.717 に答える