Как можно интегрировать пользовательский файловый браузер / загрузчик с CKEditor?

Временные таблицы составлены только в контексте запроса или proc, который создает их. Каждый новый запрос получает контекст на базе данных, которая свободна от временных таблиц других запросов. По сути, коллизия имени не является проблемой.

112
задан Don Jones 30 September 2009 в 14:54
поделиться

5 ответов

Начните с регистрации пользовательского браузера / загрузчика при создании экземпляра CKEditor. Вы можете назначить разные URL-адреса для браузера изображений и обычного браузера файлов.

<script type="text/javascript">
CKEDITOR.replace('content', {
    filebrowserBrowseUrl : '/browser/browse/type/all',
    filebrowserUploadUrl : '/browser/upload/type/all',
    filebrowserImageBrowseUrl : '/browser/browse/type/image',
filebrowserImageUploadUrl : '/browser/upload/type/image',
    filebrowserWindowWidth  : 800,
    filebrowserWindowHeight : 500
});
</script>

Ваш пользовательский код получит параметр GET с именем CKEditorFuncNum. Сохраните это - это ваша функция обратного вызова. Допустим, вы поместили его в $ callback .

Когда кто-то выбирает файл, запустите этот JavaScript, чтобы сообщить CKEditor, какой файл был выбран:

window.opener.CKEDITOR.tools.callFunction(<?php echo $callback; ?>,url)

Где «url» - это URL-адрес выбранного файла . Необязательный третий параметр может быть текстом, который вы хотите отображать в стандартном диалоговом окне предупреждения, например, «недопустимый файл» или что-то в этом роде. Установите для url пустую строку, если третий параметр является сообщением об ошибке.

CKEditor's "upload" Вкладка отправит файл в поле «загрузить» - в PHP это идет в $ _FILES ['upload']. CKEditor хочет, чтобы ваш сервер выводил полный блок JavaScript:

$output = '<html><body><script type="text/javascript">window.parent.CKEDITOR.tools.callFunction('.$callback.', "'.$url.'","'.$msg.'");</script></body></html>';
echo $output;

Опять же, вам нужно передать ему этот параметр обратного вызова, URL-адрес файла и, возможно, сообщение. Если сообщение представляет собой пустую строку, ничего не отображается; если сообщение является ошибкой, тогда url должен быть пустой строкой.

Официальная документация CKEditor по этому поводу неполная, но если вы будете следовать вышеизложенному, она будет работать как чемпион.

если сообщение является ошибкой, тогда url должен быть пустой строкой.

Официальная документация CKEditor по этому поводу неполная, но если вы будете следовать вышеизложенному, она будет работать как чемпион.

если сообщение является ошибкой, тогда url должен быть пустой строкой.

Официальная документация CKEditor по этому поводу неполная, но если вы будете следовать вышеизложенному, она будет работать как чемпион.

175
ответ дан 24 November 2019 в 02:50
поделиться

Статья на zerokspot под названием Пользовательские обратные вызовы файлового браузера в CKEditor 3.0 обрабатывают это. Наиболее подходящий раздел цитируется ниже:

Итак, все, что вам нужно сделать, из файла браузер, когда у вас выбран файл это вызвать этот код с правильным номер обратного вызова (обычно 1) и URL выбранного файла:

 window.opener.CKEDITOR.tools.callFunction (CKEditorFuncNum, url);

Для быстрой загрузки это довольно похожи. Сначала я подумал, что редактор может прислушиваться к 200 код возврата HTTP и возможно посмотрите в какое-то поле заголовка или что-то в этом роде вот так, чтобы определить местонахождение the uploaded file, but then - through some Firebug monitoring - I noticed that all that happens after an upload is the following code:

If the upload failed, set the errorMessage to some non-zero-length string and empty the url, and vice и наоборот.

7
ответ дан 24 November 2019 в 02:50
поделиться

Я потратил некоторое время, пытаясь разобраться в этом, и вот что я сделал. Я разобрал его очень просто, так как это то, что мне было нужно.

Прямо под вашей текстовой областью кекитора, введите файл загрузки, как этот >>>>

<form action="welcomeeditupload.asp" method="post" name="deletechecked">
    <div align="center">
        <br />
        <br />
        <label></label>
        <textarea class="ckeditor" cols="80" id="editor1" name="editor1" rows="10"><%=(rslegschedule.Fields.Item("welcomevar").Value)%></textarea>
        <script type="text/javascript">
        //<![CDATA[
            CKEDITOR.replace( 'editor1',
            {
                filebrowserUploadUrl : 'updateimagedone.asp'
            });
        //]]>
        </script>
        <br />
        <br />
        <br />
        <input type="submit" value="Update">
    </div>
</form>

'и затем добавьте ваш файл загрузки, вот мой, который написан на ASP. Если вы используете PHP и т.д., просто замените ASP на ваш скрипт загрузки, но убедитесь, что страница выводит то же самое.

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
    if Request("CKEditorFuncNum")=1 then
        Set Upload = Server.CreateObject("Persits.Upload")
        Upload.OverwriteFiles = False
        Upload.SetMaxSize 5000000, True
        Upload.CodePage = 65001

        On Error Resume Next
        Upload.Save "d:\hosting\belaullach\senate\legislation"

        Dim picture
        For Each File in Upload.Files
            Ext = UCase(Right(File.Path, 3))
            If Ext <> "JPG" Then
                    If Ext <> "BMP" Then
                    Response.Write "File " & File.Path & " is not a .jpg or .bmp file." & "<BR>"
                    Response.write "You can only upload .jpg or .bmp files." & "<BR>" & "<BR>"
                    End if
            Else
                File.SaveAs Server.MapPath(("/senate/legislation") & "/" & File.fileName)
                f1=File.fileName
            End If
        Next
    End if

    fnm="/senate/legislation/"&f1
    imgop = "<html><body><script type=""text/javascript"">window.parent.CKEDITOR.tools.callFunction('1','"&fnm&"');</script></body></html>;"
    'imgop="callFunction('1','"&fnm&"',"");"
    Response.write imgop
%>
9
ответ дан 24 November 2019 в 02:50
поделиться

Я разместил один небольшой учебник по интеграции FileBrowser, доступного в старом FCKEditor, в CKEditor.

http://www.mixedwaves.com/2010/02/integrating-fckeditor-filemanager-in-ckeditor/

Он содержит пошаговые инструкции, как это сделать, и он довольно прост. Я надеюсь, что любой, кто ищет это, найдет этот учебник полезным.

14
ответ дан 24 November 2019 в 02:50
поделиться

Это подход, который я использовал. Это довольно просто и отлично работает.

В корневом каталоге редактора CK есть файл с именем config.js

Я добавил его (вам не нужны строки запроса, это только для нашего файлового менеджера). Я также добавил немного скинов и изменил показанные кнопки по умолчанию:

CKEDITOR.editorConfig = function(config) {

    config.skin = 'v2';
    config.startupFocus = false;
    config.filebrowserBrowseUrl = '/admin/content/filemanager.aspx?path=Userfiles/File&editor=FCK';
    config.filebrowserImageBrowseUrl = '/admin/content/filemanager.aspx?type=Image&path=Userfiles/Image&editor=FCK';
    config.toolbar_Full =
    [
        ['Source', '-', 'Preview', '-'],
        ['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Print', 'SpellChecker'], //, 'Scayt' 
        ['Undo', 'Redo', '-', 'Find', 'Replace', '-', 'SelectAll', 'RemoveFormat'],
        '/',
        ['Bold', 'Italic', 'Underline', 'Strike', '-', 'Subscript', 'Superscript'],
        ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', 'Blockquote'],
        ['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'],
        ['Link', 'Unlink', 'Anchor'],
        ['Image', 'Flash', 'Table', 'HorizontalRule', 'SpecialChar'],
        '/',
        ['Styles', 'Format', 'Templates'],
        ['Maximize', 'ShowBlocks']
    ];

};

Затем наш файловый менеджер вызывает это:

opener.SetUrl('somefilename');
8
ответ дан 24 November 2019 в 02:50
поделиться