5

我在将 Source 按钮添加到 CKEditor 4 的工具栏时遇到问题。我今天刚刚下载了新的 CKEditor。

我正在使用一个名为 oConfig 的配置对象:

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

工具栏仅显示粗体和斜体按钮。CKEditor 文档中的这个例子告诉我它应该可以工作。

4

6 回答 6

13

发生这种情况的原因有两个:

  1. 您已经下载了基本包,其中不包含sourcearea插件。

  2. 您正在内联模式下使用 CKEditor。源代码模式在内联模式中尚不可用。

于 2012-11-30T16:43:03.960 回答
12

未来的 googlers,对于 CKEditor v4.2 现在有一个插件可以在内联编辑模式下查看源代码。

http://ckeditor.com/addon/sourcedialog

于 2013-07-30T17:53:27.827 回答
8

这是我制作的一个插件:

首先,在里面ckeditor/plugins/创建一个名为“htmlSource”的新文件夹,在其中创建一个名为“plugin.js”的文件,并在该文件中粘贴以下代码:

//-----------------------------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--------------------

请注意,有一个名为 icon 的参数,您必须在其中设置插件按钮图像的 url,我只是放了一个示例 url (' http://www.example.com/images/btn_html.png ') 你必须使用有效的一个看到插件按钮。

要在 ckeditor 工具栏中设置此插件,您必须在 config.js 文件中对其进行配置,例如:

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']
   ]; 
};

我知道这是有效的,所以如果您有任何问题,请告诉我。

于 2013-01-04T22:24:28.300 回答
3

对我来说,它有助于使用:

config.extraPlugins = 'htmlSource';
于 2013-01-24T14:57:47.037 回答
0

对于 CKEditor 4.1.1,上述两个答案的组合对我有用,尽管我必须进行一些小的调整。上面写着“--- Start Plugin here ---”的部分我可以照原样复制。对于配置选项,我不得不使用

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

代替

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

最后,这一切都是在简单的香草安装的内联模式下完成的,即我不需要下载任何额外的插件来完成这项工作。

于 2013-05-01T19:55:50.883 回答
-1

我正在使用带有版本 4 的 Julio 插件,并且需要进行调整以避免此 JS 错误:

TypeError: $(...).html 不是函数

我交换了这一行:

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

有了这个:

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

我的猜测是 Julio 的解决方案需要 jQuery,而我的方法是 CKEditor 方法(或者至少更接近它!)。

于 2013-11-19T16:56:30.717 回答