2012-03-30 103 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的各個部分,但沒有任何幫助。

該解決方案可能很容易,但我不能讓它工作!任何幫助將非常感激!

我用你提到你在/ JS ckfinder的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中的「添加圖像」時,我可以看到'瀏覽服務器'按鈕,但它給出了通常的'CakePHP無法找到控制器錯誤'。

所以,我編輯了我的htaccess文件,以便任何指向ckfinder的東西都不會尋找控制器。要做到這一點,我說:

RewriteRule ^ckfinder/ - [L] 

RewriteEngine on後的所有3個文件

,並在此之後,它的工作!

我不知道這是否是最好的辦法,但它可能會幫助別人一點點!

1

的最新版本,所以我會在前面加上/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 2012-03-30 19:47:03

3

我有位於@webroot/js/ 的CKEditor的我下載並安裝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'; 

};

我在filemanager.config.js創建的文件夾/app/webroot/assets/img/
我切換

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

在我加入到auth()

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

在視圖中/app/webroot/js/ckeditor/filemanager/connectors/php/filemanager.config.php添加/編輯我添加了以下內容:

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

它的工作原理! 這裏是網站,我用裁判http://www.hashtwo.com/blog/integrating-a-file-browser-into-ckeditor-cakephp

+0

謝謝你。認證位讓我難住了,但是在我問我之前你就回答了! – Sharon 2012-04-10 11:43:32

0

我工作了很長時間。我使用CakePHP 2.3溶液是在放入根目錄/ JS/ckfinder ckfinder 的2.3.1版本,那麼在自定義輔助結束 我把下面的代碼作爲函數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如上述的方法...