设为首页 收藏本站
查看: 753|回复: 0

[经验分享] fckeditor文件管理器添加查看、修改、删除文件功能[php]修正下载地址

[复制链接]

尚未签到

发表于 2015-8-26 07:39:28 | 显示全部楼层 |阅读模式
  2009年8月25日 由于PHP存在中文目录读取问题,将延期发布。
2009年9月3日 正式发布:查看、修改、删除文件功能的fckeditor 2.6.4.1
相关图片请查看:http://home.blueidea.com/attachment/200909/1/336696_1251813604S01b.gif
相关其它:http://home.blueidea.com/apps.php?do=case&ac=lists&uid=336696&picid=39979&oid=0
1。 第一步 找到这个文件 /fckeditor\editor\filemanager\browser\default\frmresourceslist.html
将已经存在的代码修改为:



oListManager.GetFolderRowHtml = function( folderName, folderPath )
{
// Build the link to view the folder.
var sLink = '<a href="#"><img alt="" src="images/Folder.gif" width="16" height="16" border="0"> ' ;
var rLink = '<a href="#" title="Rename Folder"><img src="images/rename.gif" width="16" height="16" border="0" alt="Rename Folder" title="Rename Folder"></a>' ;
var dLink = '<a href="#" title="Delete Folder"><img src="images/delete.gif" width="16" height="16" border="0" alt="Delete Folder" title="Delete Folder">' ;
var ssLink =  rLink + dLink;
return '<tr>' +
'<td width="16"><\/td><td nowrap> ' +
sLink +
folderName +
'<\/a></td><td align="right" nowrap>' + ssLink +
'<\/td><\/tr>' ;
}
oListManager.GetFileRowHtml = function( fileName, fileUrl, fileSize )
{
var sIcon = oIcons.GetIcon( fileName ) ;
// Build the link to view the file.
var sLink = '<a href="#"><img alt="" src="images/icons/' + sIcon + '.gif" width="16" height="16" border="0"> ' ;
var vLink = '<a href="' + ProtectPath( fileUrl ) + '" target="_blank"" title="View file"><img src="images/view.gif" width="16" height="16" border="0" alt="View File" title="View File"></a>' ;
var rLink = '<a href="#" title="Rename file"><img src="images/rename.gif" width="16" height="16" border="0" alt="Rename File" title="Rename File"></a>' ;
var dLink = '<a href="#" title="Delete file"><img src="images/delete.gif" width="16" height="16" border="0" alt="Delete File" title="Delete File"></a>' ;

// Get the file icon.
var ssLink =  vLink + rLink + dLink;
return '<tr>' +
'<td width="16"><\/td><td> ' +
sLink +
fileName +
'<\/a>' +
'<\/td><td align="right" nowrap> ' +
fileSize +
' KB' + ssLink +
'<\/td><\/tr>' ;
}
function OpenFolder( folderPath )
{
// Load the resources list for this folder.
window.parent.frames['frmFolders'].LoadFolders( (folderPath) ) ;
}
function OpenFile( fileUrl )
{
window.top.opener.SetUrl( fileUrl.replace( '#', '%23' ) ) ;
window.top.close() ;
window.top.opener.focus() ;
}
function DeleteFolder( folderUrl )
{
if ( !confirm( 'Do you really delete the folder "' + folderUrl + '" ?' ) ) return false;
oConnector.SendCommand( 'DeleteFolder', 'FolderName=' + ( encodeURI(folderUrl) ) , DeleteFolderCallBack ) ;
}
function DeleteFolderCallBack( fckXml )
{
var oNode = fckXml.SelectSingleNode( 'Connector/Error' ) ;
var iErrorNumber = parseInt( oNode.attributes.getNamedItem('number').value ) ;
var sErrorDescription = String( oNode.attributes.getNamedItem('originalDescription').value ) ;
switch ( iErrorNumber )
{
case 0 :
Refresh() ;
break ;
case 201 :
alert( 'You have no permissions to delete the folder' ) ;
break ;
case 202 :
alert( 'Invalid folder name' + sErrorDescription ) ;
break ;
case 203 :
alert( 'Folder not exists' + sErrorDescription ) ;
break ;
default :
alert( 'Error deleting folder. \nError number: ' + iErrorNumber  + ' \nError description: ' + sErrorDescription ) ;
break ;
}
}
function DeleteFile(fileUrl)
{
if ( !confirm( 'Do you really delete the file "' + fileUrl + '" ?' ) ) return false;
oConnector.SendCommand( 'DeleteFile', 'FileName=' + encodeURI( fileUrl ) , DeleteFileCallBack ) ;
}
function DeleteFileCallBack( fckXml )
{
var oNode = fckXml.SelectSingleNode( 'Connector/Error' ) ;
var iErrorNumber = parseInt( oNode.attributes.getNamedItem('number').value ) ;
var sErrorDescription = String( oNode.attributes.getNamedItem('originalDescription').value ) ;
switch ( iErrorNumber )
{
case 0 :
Refresh() ;
break ;
case 301 :
alert( 'You have no permissions to delete the file' ) ;
break ;
case 302 :
alert( 'Invalid file name' + sErrorDescription ) ;
break ;
case 303 :
alert( 'File not exists' + sErrorDescription  ) ;
break ;
default :
alert( 'Error deleting file. \nError number: ' + iErrorNumber  + ' \nError description: ' + sErrorDescription ) ;
break ;
}
}
function RenameFolder( folderName )
{
var newName = prompt('Please enter the new folder name for "' + folderName + '":', folderName);
if ((newName != null) && (newName != '') && (newName != folderName)) {
oConnector.SendCommand( 'RenameFolder', "FolderName=" + encodeURI(folderName) + "&NewName=" + encodeURI ( newName ), RenameFolderCallBack ) ;
}
}
function RenameFolderCallBack( fckXml )
{
var oNode = fckXml.SelectSingleNode( 'Connector/Error' ) ;
var iErrorNumber = parseInt( oNode.attributes.getNamedItem('number').value ) ;
var sErrorDescription = String( oNode.attributes.getNamedItem('originalDescription').value ) ;
switch ( iErrorNumber )
{
case 0 :
Refresh() ;
break ;
case 401 :
alert( 'You have no permissions to rename the folder' ) ;
break ;
case 402 :
alert( 'Invalid folder name' + sErrorDescription ) ;
break ;
case 403 :
alert( 'is not Folder' + sErrorDescription ) ;
break ;
case 404 :
alert( 'Folder not exists' + sErrorDescription ) ;
break ;
default :
alert( 'Error renaming folder. \nError number: ' + iErrorNumber  + ' \nError description: ' + sErrorDescription ) ;
break ;
}
}
function RenameFile( fileName )
{
var newName = prompt('Please enter the new file name for "' + fileName + '":', fileName);
if ((newName != null) && (newName != '') && (newName != fileName)) {
oConnector.SendCommand( 'RenameFile', "FileName=" + encodeURI( fileName ) + "&NewName=" + encodeURI( newName ), RenameFileCallBack ) ;
}
}
function RenameFileCallBack( fckXml )
{
var oNode = fckXml.SelectSingleNode( 'Connector/Error' ) ;
var iErrorNumber = parseInt( oNode.attributes.getNamedItem('number').value ) ;
var sErrorDescription = String( oNode.attributes.getNamedItem('originalDescription').value ) ;
switch ( iErrorNumber )
{
case 0 :
Refresh() ;
break ;
case 501 :
alert( 'You have no permissions to rename the file' ) ;
break ;
case 502 :
alert( 'Invalid file name' + sErrorDescription ) ;
break ;
case 503 :
alert( sErrorDescription +  'is not a file' ) ;
break ;
case 504 :
alert( 'File not exists' + sErrorDescription  ) ;
break ;
default :
alert( 'Error renaming file. \nError number: ' +  ' \nError description: ' + sErrorDescription ) ;
break ;
}
}


  2。 第二步 找到这个文件 /fckeditor\editor\filemanager\browser\default\frmfolders.html
  将函数OpenFolder(folderPath)最后一句修改为:



var agent = navigator.userAgent;
if(agent.indexOf('MSIE') != -1 || agent.indexOf('Trident') != -1) {
window.parent.frames['frmResourcesList'].LoadResources( oConnector.ResourceType, (folderPath) ) ;
}else{
window.parent.frames['frmResourcesList'].LoadResources( oConnector.ResourceType, encodeURI(folderPath) ) ;
}

  

  3。第三步,找到fckeditor\editor\filemanager\browser\default\browser.html
添加函数:



function selectBrowser(str) {
var agent = navigator.userAgent;
if(agent.indexOf('Gecko') != -1) {
return encodeURIComponent(str);
}else if(agent.indexOf('MSIE') != -1 || agent.indexOf('Trident') != -1) {
return str;
}else{
return encodeURIComponent(str);
}
}

  第79行修改为: oConnector.ConnectorUrl += 'ServerPath=' + selectBrowser( sServerPath ) + '&' ;
第91行修改为: sUrl += '&CurrentFolder=' + selectBrowser( this.CurrentFolder ) ;
  4。第四步 再找这个文件 \fckeditor\editor\filemanager\connectors\php\commands.php
添加:



header('Content-Type:text/html;charset=UTF-8');
function DeleteFolder( $resourceType, $currentFolder ) {
$sFolderName = $_GET['FolderName'];
$sErrorMsg      = '';
$sServerDir = ServerMapFolder( $resourceType, $currentFolder . "/" . $sFolderName ,'DeleteFolder');
/*if(empty($_cookie[xxxxxx])) {
$sErrorNumber    = "201"; //permissions
}else */ if(empty($_GET['FolderName']) or (!is_dir($sServerDir))) {
$sErrorNumber    = "202";  //Invalid Folder Name.
$sErrorMsg         =  $sFolderName;
}else    if(!file_exists($sServerDir)) {
$sErrorNumber    = "203"; // Folder not exists
$sErrorMsg         =  $sFolderName;
echo $sFolderName;exit();
}else{
if(@rmdir($sServerDir)) {
$sErrorNumber = "0";//success
}else{
$sErrorNumber = "222";
$sErrorMsg    = "目录删除失败,原因:1。目录不为空\n2。没有权限";
}
}
echo '<Error number="' . $sErrorNumber . '" originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />' ;
}
function DeleteFile( $resourceType, $currentFolder ) {
$sFileName     = iconv("utf-8","gbk",$_GET['FileName']);
$sErrorMsg            = "";
$sServerDir = ServerMapFolder( $resourceType, $currentFolder . "/" . $sFileName ,'DeleteFile');
/*if(empty($_COOKIE['hazysuser'])) {
$sErrorNumber   = "301";  //Security Error.
}else*/ if( empty($_GET['FileName']) or (!is_file($sServerDir))) {
$sErrorNumber   = "302"; //Invalid File Name.
$sErrorMsg        = $sFileName;
}else if(!file_exists($sServerDir)) {
$sErrorNumber   = "303"; //File not exists.
$sErrorMsg        = $sFileName;
}else{
if(@unlink($sServerDir)) {
$sErrorNumber  = "0";
}else{
$sErrorNumber  = "333";
$sErrorMsg     = "无法删除此文件,原因:\n1。没有权限。\n2。必须在DOS下才能删除的特殊文件";
}
}
echo '<Error number="' . $sErrorNumber . '"  originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />';
}
function RenameFolder( $resourceType, $currentFolder ) {
$sErrorMsg   = '';
$sFolderName = urldecode(mb_convert_encoding($_GET['FolderName'],"gbk","utf-8"));
$sNewName  = urldecode(mb_convert_encoding($_GET['NewName'],"gbk","utf-8"));
$sServerDir  = ServerMapFolder( $resourceType, $currentFolder . "/" . $sFolderName ,'RenameFolder');
$sNewDir  = ServerMapFolder( $resourceType, $currentFolder . "/" . $sNewName ,'RenameFolder' );

/*if( empty($_COOKIE[xxxxxx])) {
$sErrorNumber   = "401";
}else */if ( empty($_GET['FolderName']) or  empty($_GET['NewName']) ) {
$sErrorNumber = "402";//Invalid Folder Name.
$sErrorMsg      = $sFolderName .' != '.$sNewName;
/*}else if (!is_dir($sServerDir)) {
$sErrorNumber = "403";  //is not Folder
$sErrorMsg    = $sFolderName.' is not Folder';
}else if (!file_exists($sServerDir)) {
$sErrorNumber = "404";  //Folder not exists.
$sErrorMsg    = $sFolderName;*/
}else {
if(rename($sServerDir,$sNewDir,stream_context_create() )) {
$sErrorNumber = "0";
}else{
$sErrorNumber = "444";
$sErrorMsg = "无法修改目录名称:".$sFolderName.'为'.$sNewName.'。';
}
}
echo '<Error number="' . $sErrorNumber . '"  originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />';
}
function RenameFile( $resourceType, $currentFolder ) {
$sFileName = iconv("utf-8","gbk",$_GET['FileName']);
$sNewName = iconv("utf-8","gbk",$_GET['NewName']);
$sErrorMsg  = '';
$sServerDir = ServerMapFolder( $resourceType, $currentFolder . "/" . $sFileName ,'RenameFile');
$sNewDir = ServerMapFolder( $resourceType, $currentFolder . "/" . $sNewName ,'RenameFile');
/*if(empty($_COOKIE[xxxxxx])) {
$sErrorNumber   = "501";
}else */if( empty($_GET['FileName']) or empty($_GET['NewName']) ) {
$sErrorNumber  = "502";
}else  if(!is_file($sServerDir)) {
$sErrorNumber = '503';
$sErrorMsg    = $sFileName .' is not a file';
}else if(!file_exists($sServerDir)) {
$sErrorNumber = '504';
$sErrorMsg    = $sFileName .' is not exists';
}else{
if(rename($sServerDir,$sNewDir)) {
$sErrorNumber    = "0";
}else{
$sErrorNumber    = "555";
$sErrorMsg = "无法重命名此文件:".$sServerDir;
}
}
echo '<Error number="' . $sErrorNumber . '"  originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />';
}

  修改function GetFoldersAndFiles( $resourceType, $currentFolder )函数,并添加以下内容:



$agent = $_SERVER['HTTP_USER_AGENT'];
if(stripos($agent,"gecko")>0) {
$currentFolder   = urldecode($currentFolder);
}
if(stripos($agent,"gecko")>0) {
$sServerDir = iconv("utf-8","gbk",$sServerDir);
}

  5。第五步 \fckeditor\editor\filemanager\connectors\php\config.php
第28行修改为:$Config['ConfigAllowedCommands'] = array('QuickUpload', 'FileUpload', 'GetFolders', 'GetFoldersAndFiles', 'CreateFolder','DeleteFolder','DeleteFile','RenameFolder','RenameFile') ;
6。第六步 \fckeditor\editor\filemanager\connectors\php\connector.php
在相应地方添加以下代码:



case "DeleteFolder":
DeleteFolder( $sResourceType, $sCurrentFolder );
break ;
case "DeleteFile":
DeleteFile( $sResourceType, $sCurrentFolder );
break ;
case "RenameFolder":
RenameFolder( $sResourceType, $sCurrentFolder );
break ;
case "RenameFile":
RenameFile( $sResourceType, $sCurrentFolder );
break ;

  7。第七步 \fckeditor\editor\filemanager\connectors\php\io.php
第70行函数function CreateServerFolder( $folderPath, $lastFolder = null )里添加:
$folderPath = iconv("utf-8","gbk",$folderPath);

8。第八步 \fckeditor\editor\filemanager\connectors\php\util.php
第50行修改为:
return (mb_convert_encoding(htmlspecialchars($value),"UTF-8","GBK")) ;

此版本为PHP版本,可以查看中文目录文件,也可以修改中文目录,但最好是简体中文。创建文件夹时要注意,此版本可以创建特殊文件夹,但不能浏览、修改、删除。由于此版本含有“删除”功能,使用者请打开权限设置。

至此,所有文件修改完毕。马上体验查看/重命名/删除上传多余文件的功能吧!!!!!!

本文以本站fckeditor_2.4.1(asp)为蓝板,精心制作而成。不存在抄袭。如有雷同,实属巧合。


  [如果需要定制fckeditor的话,可联系:502251257(注明:fckeditor)]
  2012-06-20删除下载:公测地址:http://gufa.xp3.biz/
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-104213-1-1.html 上篇帖子: PHP 进程锁定问题 下篇帖子: php执行多个存储过程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表