CKEditor / CKFinder с CakePHP 2.0 - PullRequest
       12

CKEditor / CKFinder с CakePHP 2.0

3 голосов
/ 30 марта 2012

Я пытаюсь добавить изображение и загрузить файл в мой экземпляр CKEditor (в приложении CakePHP).CKEditor работал нормально, но я не могу заставить работать часть CKFinder.Я могу получить кнопку «Просмотр сервера», но когда я нажимаю ее, я получаю окно с сообщением «Запрошенный URL /ckfinder/ckfinder.html не найден на этом сервере».

IЯ пробовал разные комбинации путей, но я, очевидно, просто не выбрал правильный!

Вот что у меня получилось:

Структура файла:

 In /app/webroot/js I have ckeditor and ckfinder
 In /app/webroot/ I have files, which is what I'd like to upload to (ideally files/Images and files/PDF, but that doesn't matter so much)

Я изменил пути в ckfinder / config.php следующим образом:

$baseUrl = '/files/';
$baseDir = '/www/MCS/app/webroot/files/'; (/www/MCS is the path to the app)

В моем файле просмотра у меня есть следующее:

<script type="text/javascript">
    var instance = CKEDITOR.instances['PageContent'];
    if(instance)
    {
        CKEDITOR.remove(instance);
    }
    var editor =
    CKEDITOR.replace( 'PageContent', {
        toolbar: 'Page',
        width: '737',
        height: '280',
        filebrowserBrowseUrl : 'ckfinder/ckfinder.html',
        filebrowserImageBrowseUrl : '/ckfinder/ckfinder.html?Type=Images',
        filebrowserFlashBrowseUrl : '/ckfinder/ckfinder.html?Type=Flash',
        filebrowserUploadUrl : '/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files',
        filebrowserImageUploadUrl : '/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images',
        filebrowserFlashUploadUrl : '/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash'
    });
</script>

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

Решение, вероятно, действительно простое, но я просто не могу заставить его работать!Любая помощь будет высоко ценится!

Я использую последние версии CKEditor и CKFinder, а также CakePHP 2.0

Ответы [ 4 ]

4 голосов
/ 10 апреля 2012

Для всех, кто сталкивается с этим, вот что я сделал, чтобы это исправить:

Загруженный ckfinder в / app / webroot / js / ckfinder

В /app/webroot/js/ckfinder/config.php, у меня есть

$baseUrl = 'http://localhost/mysite/app/webroot/js/ckfinder/userfiles/';

и я изменил функцию аутентификации (спасибо Natdrip, выше) на

function CheckAuthentication()
{
    session_name("CAKEPHP");
    session_start();
    if( isset($_SESSION['Auth']['User']) ) { return true; }
    return false;
}

Я установил его в виде, используя:

var editor =
CKEDITOR.replace( 'PageContent', {
    toolbar: 'Page',
    width: '700',
    height: '280',
    filebrowserBrowseUrl : '/mysite/app/webroot/js/ckfinder/ckfinder.html',
    filebrowserImageBrowseUrl : '/mysite/app/webroot/js/ckfinder/ckfinder.html?type=Images',
    filebrowserFlashBrowseUrl : '/mysite/app/webroot/js/ckfinder/ckfinder.html?type=Flash',
    filebrowserUploadUrl : '/mysite/app/webroot/js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files',
    filebrowserImageUploadUrl : '/mysite/app/webroot/js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images',
    filebrowserFlashUploadUrl : '/mysite/app/webroot/js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash'
});

После того, как я это сделал, я мог видеть кнопку «Просмотр сервера», когда нажимал «Добавить изображение» в CKeditor, но он давал обычное «Cakephp не может найти ошибку контроллера».

Итак, я отредактировал свои файлы htaccess, чтобы все, что направляется в ckfinder, не искало контроллер. Для этого я добавил:

   RewriteRule   ^ckfinder/ - [L]

после RewriteEngine on во всех 3 файлах

и после этого все заработало!

Я не знаю, является ли это лучшим способом сделать это, но, возможно, это немного поможет кому-то еще!

3 голосов
/ 05 апреля 2012

У меня есть ckeditor, расположенный @ webroot/js/ Я скачал и установил http://labs.corefive.com/Projects/FileManager/, и он расположен @ webroot/js/ckeditor/filemanager

для ckeditor/config.js Я добавил следующий код:

CKEDITOR.editorConfig = function( config )
{
// Define changes to default configuration here. For example:
    config.uiColor = '#AADC6E';
    config.width = '100%';
    config.filebrowserBrowseUrl = '/js/ckeditor/filemanager/index.html';
    config.filebrowserImageBrowseUrl = '/js/ckeditor/filemanager/index.html?type=Images';
    config.filebrowserFlashBrowseUrl = '/js/ckeditor/filemanager/index.html?type=Flash';
    config.filebrowserUploadUrl = '/js/ckeditor/filemanager/connectors/php/filemanager.php';
    config.filebrowserImageUploadUrl = '/js/ckeditor/filemanager/connectors/php/filemanager.php?command=QuickUpload&type;=Images';
    config.filebrowserFlashUploadUrl = '/js/ckeditor/filemanager/connectors/php/filemanager.php?command=QuickUpload&type;=Flash';

};

Я создал папки /app/webroot/assets/img/
в filemanager.config.js Я переключил

var fileRoot = '/app/webroot/assets/img/';

в /app/webroot/js/ckeditor/filemanager/connectors/php/filemanager.config.php Я добавил в auth()

session_name("CAKEPHP");
session_start();
if( isset($_SESSION['Auth']['User']) )
 {
    return true;
    }
return false;   

в представлении добавить / редактировать Я добавил следующее:

echo $this->Form->textarea('Content',array('class'=>'ckeditor'));

и все работает!вот сайт, который я использовал для ref http://www.hashtwo.com/blog/integrating-a-file-browser-into-ckeditor-cakephp

1 голос
/ 30 марта 2012

Вы упомянули, что у вас есть ckfinder в / js, поэтому я бы добавил все пути к /js.

filebrowserBrowseUrl : '/js/ckfinder/ckfinder.html',
filebrowserImageBrowseUrl : '/js/ckfinder/ckfinder.html?Type=Images',
filebrowserFlashBrowseUrl : '/js/ckfinder/ckfinder.html?Type=Flash',
filebrowserUploadUrl : '/js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files',
filebrowserImageUploadUrl : '/js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images',
filebrowserFlashUploadUrl : '/js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash'
0 голосов
/ 16 марта 2013

Я работал вокруг в течение длительного времени. Мое решение с cakephp 2.3 в конце поместите в webroot / js / ckfinder версию 2.3.1 ckfinder Затем в пользовательский помощник я поместил следующий код в качестве функции getFck

    function _getFck( $pToReplaceId, $pHtmlContent=null, $pLabel=null ){
    $result = "";

    if ( $pLabel != null ){
        $result .= "<div class=\"input text\">\n";
        $result .= "<label for=\"$pToReplaceId\">".__($pLabel)."</label>\n";
        $result .= "</div>\n";
    }
    App::uses('FormHelper', 'View/Helper');
    $fh = new FormHelper(new View());   
    $result .= $fh->input('comment', array(
        'id' => $pToReplaceId,
        'name' => $pToReplaceId,
        'type' => 'textarea',
        'value' => $pHtmlContent,
        ));
    $result .= "<script>var ckEditor = CKEDITOR.replace( '$pToReplaceId', {
        removeButtons: '',
        toolbar: 'Page',
        skin: 'moono',
        lang: 'fr',
        filebrowserBrowseUrl: '/js/ckfinder/ckfinder.html',
        filebrowserImageBrowseUrl: '/js/ckfinder/ckfinder.html?Type=Images',
        filebrowserFlashBrowseUrl: '/js/ckfinder/ckfinder.html?Type=Flash',
        filebrowserUploadUrl: '/js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files',
        filebrowserImageUploadUrl: '/js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images',
        filebrowserFlashUploadUrl: '/js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash'
} );</script>";

    echo $result;
}

и для настройки в файле /js/ckfinder/Config.php следующие методы и настройки:

$baseUrl = "http://".$_SERVER['HTTP_HOST']."/files/ckFinderFiles/";//working on prod
$baseDir = $_SERVER['DOCUMENT_ROOT'].'/app/webroot/files/ckFinderFiles/';//working on prod

Не забудьте изменить метод CheckAuthentication, как описано выше ...

...