2012-03-30 19 views
2

私はCKEditorインスタンス(CakePHPアプリケーション内)に画像とファイルのアップロードを追加しようとしています。 CKEditorは正常に動作していますが、CKFinderの部分を動作させることはできません。私は 'Browse Server'ボタンを表示することができますが、それをクリックすると '要求されたURL /ckfinder/ckfinder.htmlがこのサーバ上に見つかりませんでした'というメッセージが表示されます。CakePHP 2.0のCKEditor/CKFinder

私はさまざまなパスの組み合わせを試しましたが、私は明らかに正しいものを打つことはありません!

は、ここで私がこれまで持っているものです。

ファイル構造:

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

を使用したWebサイトで、ここで私はそれを修正するためにやったことだ:

は、/ app/webroot/js /にckfinder

にckfinderをダウンロード

/app/webroot/js/ckfinder/configにあります。PHPは、私が

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

を持っていると私は私が使用して、ビューでそれを設定

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

への認証機能(上記Natdripのおかげで、)変更:

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' 
}); 

IたらCKeditorで 'Add Image'をクリックして 'Browse Server'ボタンを見ることができましたが、通常の '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

3

私は、次のコードを追加私はhttp://labs.corefive.com/Projects/FileManager/をダウンロードしてインストールwebroot/js/ @位置CKEditorバージョンを持っており、それがckeditor/config.js ためwebroot/js/ckeditor/filemanager

@あります:

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/
フォルダを作成した私は、ビューの追加/編集中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

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

を切り替え、私は次のように追加しました:

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と私のソリューションは、カスタムヘルパーでは、私は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; 
} 

と設定のために次のコードを入れてckfinder のバージョン2.3.1 ckfinder/webrootは/ jsのに入れて終わり であります以下の方法および設定ファイル/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方法を変更することを忘れ