2012-03-30 2 views
2

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

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

Вот что я до сих пор: структура

файла:

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

ответ

3

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

Скачано ckfinder в/приложение/Webroot/JS/ckfinder

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

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

и я изменил функцию AUTHENTICATE (благодаря 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, но это давало обычный «CakeFp не может найти ошибку контроллера».

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

RewriteRule ^ckfinder/ - [L] 

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

и после этого, он работал!

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

1

Вы упомянули вы имеете 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

Спасибо, но я попробовал это, и я все еще получаю та же ошибка. – Sharon

3

У меня есть 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')); 

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

+0

Спасибо. У бита проверки подлинности я тоже был в тупике, но вы ответили на него, прежде чем я даже попросил! – Sharon

0

Я долгое время работал. Мое решение с 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, как описано выше ...