2012-03-30 104 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如上述的方法...