2013-03-23 3 views
0

권한 편집 권한이있는 환경에서 CKEditor를 실행하고 있습니다. 하나의 요구 사항은 모든 사용자에게 표시되는 버튼이지만 특정 버튼의 클릭 이벤트는 사용 중지 된 것입니다.wysiwyg 버튼을 표시 하시겠습니까?

많은 jQuery 솔루션 (attr, off, preventDefault, prop 등)을 사용해 보았지만, 적어도 어떻게 시도했는지는 알 수 없습니다. CKFinder의 '이미지 추가'버튼에 ​​의해 생성

샘플 HTML은 :

<a id="cke_22" 
    class="cke_button cke_button__image cke_button_off " "="" 
    href="javascript:void('Image')" title="Image" tabindex="-1" hidefocus="true" role="button" aria-labelledby="cke_22_label" aria-haspopup="false" 
    onkeydown="return CKEDITOR.tools.callFunction(56,event);" 
    onfocus="return CKEDITOR.tools.callFunction(57,event);" 
    onmousedown="return CKEDITOR.tools.callFunction(58,event);" 
    onclick="CKEDITOR.tools.callFunction(59,this);return false;"> 

    <span class="cke_button_icon cke_button__image_icon">&nbsp;</span> 
    <span id="cke_22_label" class="cke_button_label cke_button__image_label">Image</span> 
</a> 

나는 그들의 문서에 CKEditor 솔루션을 찾을 수없는,하지만 난 뭔가를 놓친 수 있습니다. 일부 여분의 자바 스크립트가 링크를 깨뜨릴 수 있다면 CKEditor 외부의 픽스에 대해 열려 있습니다.

답변

1

이 작업을 수행하려면 CKEditor API를 사용해야합니다. jQuery로 버튼을 비활성화하는 것은 나쁜 생각입니다. 이렇게하면 키보드 단축키, 컨텍스트 메뉴 위치를 차단하지 않고 키보드로 도구 모음을 탐색하는 등의 기능을 중단하게됩니다.

예 :

CKEDITOR.replace('editor1', { 
    on: { 
     loaded: function(evt) { 
      var editor = evt.editor; 

      editor.getCommand('image').on('state', function() { 
       this.disable(); 
      }); 
      editor.getCommand('link').on('state', function() { 
       this.disable(); 
      }); 
     } 
    } 
}); 

그것은 모든 상태 변경에 명령이 비활성화되어 있는지 확인합니다 : 링크이미지 기능이 코드를 사용합니다.

팁 : 사용하지 않으려는 명령의 이름이 확실하지 않은 경우 몇 가지 아이디어가있는 editor.commands 개체를 확인하십시오.

+0

이 방법이 훨씬 더 좋습니다. – Nenotlep

+0

이것은 의미가 있지만 힘든 시간을 보내고 있습니다. CKEDITOR는 데이터를 반환하지만 editor.commands는 비어있는 것으로 표시됩니다. getCommand 문서는별로 도움이되지 않습니다. 분명히 바보 같은 짓을하지 않으면 새로운 질문을 게시 할 수 있습니다. – Chords

+0

'editor'는 전역 변수가 아닙니다. CKEDITOR.instances 객체에서 가져와야합니다. 또는 이벤트 응답자 중 하나의 evt.editor에서 내 대답과 동일하게 처리해야합니다. – Reinmar

0

예를 들어 이미지를 사용하는 것으로 충분하다면 모든 핸들러에 핵을 뿌리면됩니다. CKE 실제로 주기적으로 복원 나도 몰라,하지만 당신이

jQuery('.cke_button__image') 
    .attr('onkeydown','') 
    .attr('onmousedown','') 
    .attr('onclick',''); 

처럼 뭔가를 할 수없는 경우는 CKEditor 데모에서 작동합니다. 속성이 다시 나타나면 절차를 반복하십시오. 이것은 실제 보안 답변이 아닙니다. 반은 괜찮은 해커가 쉽게 이런 제약을 피할 것입니다. 그러나 당신의 recuirements를 채울 것입니다.

관련 문제