2011-12-08 95 views
3

我添加了一个自定义'引用'按钮。tinymce自定义按钮替换内容

ed.addButton('blockquote', { 
    title : 'blockquote', 
    cmd : 'mceblockquote', 
    image : url + '/img/blockquote.gif', 
    onclick : function() { 
     var blockquoteActive = tinyMCE.activeEditor.controlManager.get('blockquote').isActive(); 
     if (blockquoteActive) { 
      //replace <blockquote> tags ?! 
      //set Button inactive  
     } 
     else { 
      ed.selection.setContent('<blockquote>' + ed.selection.getContent() + '</blockquote><br />'); 
     } 
     } 

}); 

ed.onNodeChange.add(function(ed, cm, n) { 
    cm.setActive('blockquote', n.nodeName == 'IMG'); 
}) 

当我点击按钮,一切工作正常。选择引用。

  • 如何在再次点击按钮时替换blockquote-tags?
  • 如何将按钮设置为无效?

问候, saromba

回答

1

试试这个。你可以修改一下。

ed.addButton('blockquote', { 
    title : 'blockquote', 
    cmd : 'mceblockquote', 
    image : url + '/img/blockquote.gif', 
    onclick : function() { 
     var blockquoteActive = tinyMCE.activeEditor.controlManager.get('blockquote').isActive(); 
     if (blockquoteActive) { 
      //replace <blockquote> tags ?! 

      content = ed.selection.getContent(); 
      content.replace(/<\/?blockquote>/ig,''); 
      ed.selection.setContent(content); 

      //set Button inactive 

      // works only if blockquote is registered at the controlManager 
      ed.controlManager.setActive('blockquote', false); 

     } 
     else { 
      ed.selection.setContent('<blockquote>' + ed.selection.getContent() + '</blockquote><br />'); 
     } 
    } 

}); 
+0

喜文,我会明天尝试,并给你feedback.thx – saromba

2

它的工作感谢... 我做了一些改变(也许/可能改进)。

当选择什么都没有,什么都不做

当文本已经报

当用户打上双击,blockquote元素现在被删除

onclick : function() { 
       var blockquoteActive = tinyMCE.activeEditor.controlManager.get('blockquote').isActive(); 
       var selection = ed.selection.getContent(); 
       if (blockquoteActive) { 

        if (selection) { 
         var parElem = ed.dom.getParent(ed.selection.getNode(), 'blockquote'); 
         var inner = parElem.innerHTML; 
         ed.dom.remove(parElem); 
         ed.selection.setContent(inner); 
        } 
        else return 

       } 
       else { 
        if (selection) { 
         ed.selection.setContent('<blockquote>' + ed.selection.getContent() + '</blockquote><br />'); 
        } 
       } 
      }