2015-05-08 5 views
6

Qual è il modo corretto di attivare lo stato di un pulsante del menu del plugin di ckeditor in base alla selezione?Attiva/disattiva lo stato di un pulsante del plug-in CKEditor

Ad esempio, in un collegamento/scollegamento plug-in, vorrei solo abilitare lo scollegamento se il cursore si trova in un collegamento.

editor.addCommand("unlink", { 
    exec: function (editor) { 
     //do something here 
    }, 
    refresh: function (editor, path) { 
     // never seems to get fired. Is this even the right hook? 
    } 
}); 

editor.ui.addButton("Unlink", { 
    label: "Unlink", 
    command: "unlink" 
}); 

Grazie per l'aiuto!

risposta

2

C'è la proprietà CKEDITOR.commandDefinition#contextSensitive che consente di controllare lo stato di un comando in un particolare contesto.

Ad esempio, il actual implementation del tasto Scollega assomiglia:

CKEDITOR.unlinkCommand.prototype = { 
    exec: function(editor) { 
     ... 
    }, 

    refresh: function(editor, path) {  
     var element = path.lastElement && path.lastElement.getAscendant('a', true); 

     if (element && element.getName() == 'a' && element.getAttribute('href') && element.getChildCount()) 
      this.setState(CKEDITOR.TRISTATE_OFF); 
     else 
      this.setState(CKEDITOR.TRISTATE_DISABLED); 
    }, 

    contextSensitive: 1, 
    ... 
}; 
Problemi correlati