0

フォーラムを構築し、Ckeditor を使用してメッセージを投稿する - フォーム内でテキストエリアを使用すると問題なく動作します。ユーザーが自分の投稿を編集できるようにしたいので、インラインで ckeditor を使用して、ユーザーが自分の投稿をクリックすると、メッセージが ckeditor に置き換えられます。それは今のところうまくいき、見栄えがします。ただし、保存ボタンは無効になっています。全体をフォームで囲みましたが、もちろん、ckeditor はテキスト領域ではなく div になっているため、フォームが機能しないと思います。では、データを PHP に渡すにはどうすればよいでしょうか。

もう 1 つの問題は、Ckeditor が携帯電話で動作しないように見えることです。モバイル向けの簡単なフォールバック方法を思いつくことができますか?

これは、インライン エディターをレンダリングするために使用しているコードです。

// Uncomment the following code to test the "Timeout Loading Method".
// CKEDITOR.loadFullCoreTimeout = 5;

window.onload = function() {
    // Listen to the double click event.
    if (window.addEventListener)
        document.body.addEventListener('click', onClick, false);
    else if (window.attachEvent)
        document.body.attachEvent('onclick', onClick);

};

function onClick(ev) {
    // Get the element which fired the event. This is not necessarily the
    // element to which the event has been attached.
    var element = ev.target || ev.srcElement;

    // Find out the div that holds this element.
    var name;

    do {
        element = element.parentNode;
    }
    while (element && (name = element.nodeName.toLowerCase()) &&
            (name != 'div' || element.className.indexOf('edit_post') == -1) && name != 'body');

    if (name == 'div' && element.className.indexOf('edit_post') != -1)
        replaceDiv(element);
}

var editor;

function replaceDiv(div) {
    if (editor)
        editor.destroy();

    editor = CKEDITOR.replace(div, {
        uiColor: '#FFFFFF',
        toolbar: [
            ['Save', 'Cut', 'Copy', 'Paste', 'PasteFromWord', '-', 'Undo', 'Redo', '-', 'Scayt'],
            '/',
            ['Bold', 'Italic', 'Underline', 'Blockquote', '-', 'Link', 'Unlink', '-', 'Image', 'Smiley', 'oembed']

        ]
    });

}
4

1 に答える 1

1

デフォルトの保存コマンドを上書きして、そこに保存する必要があるものは何でも使用してみてください。

何かのようなもの

// Override the normal CKEditor save plugin
CKEDITOR.plugins.registered['save'] =
{
    init : function( editor )
    {
        editor.addCommand( 'save', 
            {
                modes : { wysiwyg:1, source:1 },
                exec : function( editor ) {
                    if(Editor.CheckDirty()) {
                        // Do wahtever you need to do during the save button here
                    } else {
                        alert("NothingToSave);
                    }
                }
            }
        );
        editor.ui.addButton( 'Save', {label : '@GeneralTerms.Save', command : 'save'} );
    }
}
于 2013-03-11T10:27:29.003 に答える