2012-11-29 4 views
5

Ich habe Probleme beim Hinzufügen der Source-Schaltfläche zur CKEditor 4-Symbolleiste. Ich habe gerade den neuen CKEditor heruntergeladen.Ich kann die Source-Schaltfläche nicht zur Symbolleiste von CKEditor 4 hinzufügen

Ich verwende ein Config-Objekt namens oConfig:

oConfig.toolbar = 'Custom'; 
oConfig.toolbar_Custom = [ 
    ['Bold', 'Source', 'Italic'] 
]; 

Die Symbolleiste zeigt mich nur mit dem Fett und Kursiv Tasten. This example von CKEditors Dokumentation sagt mir, es sollte funktionieren.

Antwort

13

Es gibt zwei Gründe, warum es passiert werden können:

  1. Sie das Basispaket heruntergeladen haben, wo das sourcearea Plugin ist nicht inbegriffen.

  2. Sie verwenden den CKEditor im Inline-Modus. Der Quellmodus ist im Inline-Modus noch nicht verfügbar.

+1

Ich verwende den Inline-Modus, das war es. Irgendeine Idee wann es verfügbar sein wird? –

+3

Sehr wahrscheinlich in der nächsten Hauptversion (4.1), also in etwa 3 Monaten. Es besteht jedoch die Möglichkeit, dass wir es schneller hinzufügen, wenn wir sehen, dass die Community es wirklich braucht. Hier ist das Ticket: https://dev.ckeditor.com/ticket/9713 – Reinmar

+1

4.1RC wurde veröffentlicht und Sie brauchen das Sourcedialog Plugin – jnoreiga

8

Hier ist ein Plugin, die ich gemacht habe:

Zunächst einmal innerhalb ckeditor/plugins/ einen neuen Ordner namens „htmlSource“, im Innern eine Datei „plugin.js“ und innerhalb dieser Datei mit dem Namen erstellen den Code unten ein:

//-----------------------------Start Plugin Code------------------------- 



plugInName = 'htmlSource'; 

CKEDITOR.plugins.add(plugInName, 
{ 
    init: function (editor) { 

    editor.addCommand('htmlDialog', new CKEDITOR.dialogCommand('htmlDialog')); 
    editor.ui.addButton(plugInName, { 
     label: 'Html Source', 
     icon: 'http://www.example.com/images/btn_html.png', 
     command: 'htmlDialog' 
    }); 

    CKEDITOR.dialog.add('htmlDialog', function (editor) { 
     return { 
      title: 'Fuente Html', 
      minWidth: 600, 
      minHeight: 400, 
      contents: [ 
         { 
          id: 'general', 
          label: 'Settings', 
          elements: 
          [ 
          // UI elements of the Settings tab. 
           { 
           type: 'textarea', 
           id: 'contents', 
           rows: 25, 
           onShow: function() { 
            this.setValue(editor.container.$.innerHTML); 

           }, 
           commit: function (data) {    //--I get only the body part in case I paste a complete html 
            data.contents = this.getValue().replace(/^[\S\s]*<body[^>]*?>/i, "").replace(/<\/body[\S\s]*$/i, ""); 
           } 

          } 
           ] 
         } 
        ], 

      onOk: function() { 
       var data = {}; 
       this.commitContent(data); 
       $(editor.container.$).html(data.contents); 
      }, 
      onCancel: function() { 
       // console.log('Cancel'); 
      } 
     }; 
    }); 
} 


}); 

//--------------------Plugin Code Ends Here-------------------- 

Bitte beachten Sie, dass es ein Parameter Symbol genannt ist, wo Sie die uRL der Plugin-Taste Bild setzen müssen, lege ich ein Beispiel url (‚http://www.example.com/images/btn_html.png‘) nur müssen Sie einen gültigen verwenden um die Plugin-Schaltfläche zu sehen.

Um dieses Plugin in der ckeditor Symbolleiste zu setzen, müssen Sie es in der config.js Datei, zum Beispiel konfigurieren:

CKEDITOR.editorConfig = function (config) { 
    config.plugins = 
    'htmlSource,' + //Here is the plugin 
    'about,' + 
    'a11yhelp,' + 
    'basicstyles,' + 
    'bidi,' + 
    .....; 
config.toolbar = 'Full'; //Add the plugin to the full toolbar 

config.toolbar_Full =  //Note that our plugin will be the first button in the toolbar 
     [ 
     ['htmlSource', '-', 'Save', 'NewPage', 'Preview', '-', 'Templates'], 
     ['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Print', 'SpellChecker', 'Scayt'], 
     ['Undo', 'Redo', '-', 'Find', 'Replace', '-', 'SelectAll', 'RemoveFormat'], 
     ['Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField'], 
     ['BidiLtr', 'BidiRtl'], 
     '/', 
     ['Bold', 'Italic', 'Underline', 'Strike', '-', 'Subscript', 'Superscript'], 
     ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', 'Blockquote', 'CreateDiv'], 
     ['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'], 
     ['Link', 'Unlink', 'Anchor'], 
     ['Image', 'Flash', 'Table', 'HorizontalRule', 'Smiley', 'SpecialChar', 'PageBreak'], 
     '/', 
     ['Styles', 'Format', 'Font', 'FontSize'], 
     ['TextColor', 'BGColor'], 
     ['Maximize', 'ShowBlocks', '-', 'About'] 
    ]; 
}; 

Ich weiß, das funktioniert, so, wenn Sie einige Probleme haben, bitte sagen Sie mir.

+0

Ich rate davon ab, Änderungen am "ckeditor" -Ordner vorzunehmen, da es dadurch schwieriger wird, den Ordner durch eine neuere Version zu ersetzen. Aber ansonsten, gute Antwort: +1. – halfer

+0

Danke dafür. Ich benutze 4.0, und SourceDialog schien nicht zu funktionieren - das scheint aber sehr nett zu sein. – halfer

+0

Ich glaube, das obige erfordert jQuery - also habe ich eine Antwort hinzugefügt, um diese Abhängigkeit zu entfernen. – halfer

3

für mich, half, es zu benutzen:

config.extraPlugins = 'htmlSource'; 

meine bisherigen Antworten aus dem Grund, der Hyper Hygiene gelöscht wurden; obwohl ich es jedem helfen könnte ..

+0

Darüber hinaus müssen Sie dieses htmlSource Plugin in Ihrem Plugin-Verzeichnis haben ... – Bellash

0

Für CKEditor 4.1.1, eine Kombination der obigen zwei Antworten funktionierte für mich, obwohl ich einige kleinere Verbesserungen vornehmen musste. Der Teil, der sagt "Start Plugin hier ---" Ich konnte kopieren, wie es ist. Für die Konfigurationsoptionen, hatte ich

CKEDITOR.config.extraPlugins = 'htmlSource'; // Notice: "extraPlugins". 
CKEDITOR.config.toolbar = 'Full'; 
CKEDITOR.config.toolbar_Full = ...; 

statt

CKEDITOR.editorConfig = function (config) { ... 

Schließlich zu verwenden, das alles wurde im Inline-Modus mit einer Plain-Vanilla-Installation durchgeführt, also musste ich keine zusätzlichen Plugins herunterladen um das zu schaffen.

0

Ich bin Julio Plugin mit Version 4 und benötigt unter Verwendung einer Anpassung vorzunehmen, dies zu vermeiden JS Fehler:

TypeError: $(...).html is not a function

ich diese Zeile vertauscht:

$(editor.container.$).html(data.contents); 

mit diesem:

// See http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setData 
editor.setData(
    data.contents, 
    function() { 
     this.checkDirty(); 
    } 
); 

Meine Vermutung ist Julio's Lösung erfordert jQuery, und mein Ansatz ist der CKEditor-Ansatz (oder zumindest näher dran!).

Verwandte Themen