我正在使用CKEditor 3,我需要集成一个免费的文件浏览器/上传器。我尝试整合FCKEditor附带的那个,但我always get this XML error:
服务器没有发回适当的XML响应。请联系您的系统管理员。
XML请求错误:确定(200)
请求的网址:
http://example.com/admin/filemanager/browser/default/?Command=GetFoldersAndFiles&Type=File&CurrentFolder=%2F&uuid=1260817820353
回复文字:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <html> <head> <title>Index of /admin/filemanager/browser/default</title> </head> <body> <h1>Index of /admin/filemanager/browser/default</h1> <table><tr><th><img src="/icons/blank.gif" alt="[ICO]"></th> <th><a href="?C=N;O=D">Name</a></th> <th><a href="?C=M;O=A">Last modified</a></th> <th><a href="?C=S;O=A">Size</a></th> <th><a href="?C=D;O=A">Description</a></th></tr> <!-- edited for brevity -->
我正试图这样做:
<script type="text/javascript">
window.onload = function(){
CKEDITOR.config.language='es';
CKEDITOR.config.forcePasteAsPlainText = true;
CKEDITOR.config.enterMode = CKEDITOR.ENTER_DIV;
CKEDITOR.replace('ncCont',{
filebrowserBrowseUrl: 'filemanager/browser/default/browser.html',
filebrowserUploadUrl : 'filemanager/connectors/php/upload.php'
});
};
</script>
FCKeditor可以与CKEditor集成吗?如果是,怎么办呢?如果没有,是否有免费的文件浏览器/上传器替代?
答案 0 :(得分:9)
想要躲开Penuel,他的代码帮了我很多。
将此添加到/filemanager/connectors/php/upload.php
// Get the CKEditor Callback
$CKEcallback = $_GET['CKEditorFuncNum'];
//modify the next line adding in the new param
FileUpload($sType, $sCurrentFolder, $sCommand, $CKEcallback);
将此添加到/filemanager/connectors/php/io.php
// This is the function that sends the results of the uploading process to CKE.
function SendCKEditorResults ($callback, $sFileUrl, $customMsg = '')
{
echo '<script type="text/javascript">';
$rpl = array( '\\' => '\\\\', '"' => '\\"' ) ;
echo 'window.parent.CKEDITOR.tools.callFunction("'. $callback. '","'.
strtr($sFileUrl, $rpl). '", "'. strtr( $customMsg, $rpl). '");' ;
echo '</script>';
}
修改此/filemanager/connectors/php/commands.php
//line 158
function FileUpload($resourceType, $currentFolder, $sCommand, $CKEcallback = '')
//line 166
if ( (isset($_FILES['NewFile']) && !is_null($_FILES['NewFile']['tmp_name']))
# This is for the QuickUpload tab box
or (isset($_FILES['upload']) and !is_null($_FILES['upload']['tmp_name'])))
{
global $Config ;
$oFile = isset($_FILES['NewFile']) ? $_FILES['NewFile'] : $_FILES['upload'];
...
if($CKEcallback == '')
{
// this line already exists so wrap the if block around it
SendUploadResults( $sErrorNumber, $sFileUrl, $sFileName ) ;
}
else
{
//issue the CKEditor Callback
SendCKEditorResults ($CKEcallback, $sFileUrl,
($sErrorNumber != 0
? 'Error '. $sErrorNumber. ' upload failed. '. $sErrorMsg
: 'Upload Successful'));
}
您需要将上传网址添加到CKEDITOR定义中,如下所示:
var filemanager = '/js/ckeditor/filemanager/';
var browser = filemanager + 'browser/default/browser.html';
var connector = filemanager + 'connectors/php/connector.php';
var upload = filemanager + 'connectors/php/upload.php';
CKEDITOR.replace( id,
{
customConfig : this.config,
filebrowserBrowseUrl : browser +'?Connector=' + connector,
filebrowserImageBrowseUrl : browser + '?Type=Image&Connector='
+ connector,
filebrowserFlashBrowseUrl : browser + '?Type=Flash&Connector='
+ connector,
filebrowserUploadUrl : upload + '?type=Files',
filebrowserImageUploadUrl : upload + '?type=Images',
filebrowserFlashUploadUrl : upload + '?type=Flash'
});
我认为这涵盖了Penuel所留下的一切
答案 1 :(得分:8)
为了回答你的问题,我在我的博客上发布了一个小教程,并按步骤说明将FCKEditor的文件浏览器集成到CKEditor中。请转到:
http://www.mixedwaves.com/2010/02/integrating-fckeditor-filemanager-in-ckeditor/
我已经为PHP连接器做了这个,但对其他语言也应该非常简单。
您也可以下载已完成的示例或查看本文中的演示。
答案 2 :(得分:0)
我正在使用自定义文件浏览器和我的ckeditor实现,所以我不明白为什么你不能使用旧的文件浏览器。它使用相同的javascript来填充编辑器。
只需在任何目录中安装旧的FCK编辑器,并确保在配置中具有该浏览器的正确路径。我猜你上面有一个路径问题。