0

Google Closure 편집기를 사용 중이고 버튼 하나의 기능 (즉, Link)을 변경해야합니다. 내가 책임있는 플러그인 (이 경우 BasicTextFormatter)을 상속 받겠다 고 생각하거나 새로운 플러그인을 만들 것입니다. 내 가정은 상속을 통해 모든 것을 성취 할 수 있었으며 Google Closure 파일을 변경할 필요가 없다는 것입니다.Google 클로저 편집기에 플러그인 추가

나는 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); 

을 추악한 방법을 시도 그리고 내가 붙어있어. 버튼에 대한 정보는 defaulttoolbar.js에 있으며 GC 코드를 수정하지 않고 BUTTONS_ 배열에 버튼을 추가하는 방법을 찾지 못했습니다. 모든 주위는 너무 멋지게 합성되고 상속 가능하기 때문에, 그것을 달성하는 방법이 있어야한다고 생각합니다. 플러그인 개념은 무언가를 추가하는 것이 쉽고 간단해야한다는 신호입니다.

Google 검색 결과 내역은 모두 thisthis입니다. 두 방법 모두 GC 코드를 변경해야합니다.

내가 무엇을 놓쳤는가?

TL 버전 : 내 플러그인을 GC 편집기에 추가하는 방법이 있습니까?

플러그인을 수정하는 대신 (예 : 상속하는) 플러그인을 추가하는 것이 더 쉬운 경우 어떻게해야합니까? 지정하는 방법, 내 execCommandInternal은 원래 하나가 아니라 호출해야합니까?

편집 : 좋아, 단추가 문자열 배열이 될 수 있다는 것을 알았지 만 goog.ui.Control도 있습니다. 그래서 이것은 아마이 단계를 해결할 것입니다. 어쨌든. 나는 그 일을 계속할 것입니다. 누군가가 링크를 알고 있다면, 모든 것이 잘 요약되어 있거나 누군가가 최근에 그것을 요약하고 여기에서 요약 할 수 있다면, 나는 매우 감사 할 것입니다.

답변

1

확인. 의심 스럽지만 잘 수행되어 Google Closure 코드를 수정할 필요가 없습니다. 누군가가 GC Editor에 플러그인을 추가하는 한 가지 방법에 관심이있는 경우 여기에 있습니다.

기본적으로 새 플러그인을 올바르게 만들었으며 올바르게 등록했습니다 (위 그림 참조). 단지 goog.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); 

편집기 플러그인 엔진은 등록 된 모든 플러그인에 myLink 명령을 배포 내 플러그인을 잡아 응답, 그 후

(아래 두 줄은 동일하게 유지). 추가하는 대신 플러그인을 수정해야하는 경우 (원래 플러그인의 내용을 유지해야하는 경우) 수정 된 플러그인을 원래 플러그인보다 빨리 등록해야합니다.

나는 이것이 쉽다는 것을 알면서 잠시 동안 키보드를 머리에 대고 두드렸다. 왜 인터넷에서 사용할 수있는 가이드가 없는지 (훨씬 원시적 인 것들을 포함하는 거의 모든 것을위한 가이드가 있지만) 여전히 나에게는 수수께끼입니다.

관련 문제