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

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="#" οnclick="OpenFolder(\'' + ProtectPath( folderPath ) + '\');return false;"><img alt="" src="images/Folder.gif" width="16" height="16" border="0"> ' ;var rLink = '<a href="#" title="Rename Folder" οnclick="RenameFolder(\'' + folderName + '\');return false;"><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" οnclick="DeleteFolder(\'' + folderName + '\');return false;"><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="#" οnclick="OpenFile(\'' + ProtectPath( fileUrl ) + '\');return false;"><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" οnclick="RenameFile(\'' + fileName + '\');return false;"><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" οnclick="DeleteFile(\'' + fileName + '\');return false;"><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/

 

转载于:https://www.cnblogs.com/false007/archive/2011/04/01/2001984.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380613.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php having,having方法

having方法1、对分组统计的结果&#xff0c;进行筛选如果将分分组查询的结果看成一张表的话&#xff0c;having方法类似where语句的功能2、源码&#xff1a;/thinkphp/library/think/db/Query.php/*** 指定having查询* access public* param string $having having* return $th…

合并排序算法排序过程_合并排序| 用于大型输入的最佳排序算法之一

合并排序算法排序过程What is sorting? 什么是分类&#xff1f; Sorting allows us to process our data in a more organized and efficient way. It makes searching easy as it will now take less time to search for a specific value in a given sorted sequence with …

Linux:jumpserver介绍(1)

官方网站 JumpServer - 开源堡垒机 - 官网https://www.jumpserver.org/ JumpServer 是广受欢迎的开源堡垒机&#xff0c;是符合 4A 规范的专业运维安全审计系统。JumpServer 帮助企业以更安全的方式管控和登录所有类型的资产&#xff0c;实现事前授权、事中监察、事后审计&…

对一个简单汇编程序分析

程序&#xff1a; assume cs:codesgcodesg segmentmov ax,0123Hmov bx,0456Hadd ax,bxadd ax,axmov ax,4c00Hint 21Hcodesg endsend伪指令&#xff1a; 伪指令是写给编译器看的&#xff0c;CPU不会执行&#xff0c;在源程序中&#xff0c;包括两种指令&#xff0c;一个是…

datagrid 页眉合并

http://www.codeproject.com/aspnet/MergeDatagridHeader.asp private void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e){//产生序号&#xff0c;合并单元格if(e.Item.ItemIndex!-1){e.Item.Cells[1].TextConvert.ToString(e.Item.ItemIndex1);//}else{e…

劈尖等厚干涉条纹matlab,劈尖等厚干涉实验中,k=0级的干涉条纹是条纹,与k级暗条纹对应的空气薄膜的厚度为...

劈尖等厚干涉实验中&#xff0c;k0级的干涉条纹是条纹&#xff0c;与k级暗条纹对应的空气薄膜的厚度为答&#xff1a;暗&#xff0c;kλ/2spampython 编程\nprint(spam[-6:-4])是否报错&#xff1f;(是&#xff1a;则填写报错原因&#xff0c;否&#xff1a;则填写输出结果)答&…

使用OpenCV python模块读取图像并将其另存为灰度系统

In Python, we can use an OpenCV library named cv2. Python does not come with cv2, so we need to install it separately. 在Python中&#xff0c;我们可以使用名为cv2的OpenCV库 。 Python没有随附cv2 &#xff0c;因此我们需要单独安装它。 For Windows: 对于Windows&a…

loop指令

功能&#xff1a;循环 格式&#xff1a;loop 标号 执行过程&#xff1a; cxcx-1判断cx的值&#xff0c;不为0则转至标号处执行程序&#xff0c;如果为0则向下执行 从上面的执行过程可以看出&#xff0c;cx存放的是循环次数 举个例子&#xff1a;实现2的12次方 assume cs:co…

不知不觉中学会做一个有主见的人

今天还是经历了不少事情&#xff0c;首先中午定好了聚会吃饭的地方&#xff0c;通知了以前班里的同学。事情解决了觉得心里很开心。中午不睡觉去人文馆准备听微软的宣讲会。等到三点多稀稀疏疏的几个人在那里&#xff0c;一个保安跑进来说取消了。埃&#xff0c;居然不通知。虽…

C# datetime 操作

C# datetime 操作 //C#里内置的DateTime基本上都可以实现这些功能&#xff0c;巧用DateTime会使你处理这些事来变轻松多了 //今天 DateTime.Now.Date.ToShortDateString(); //昨天&#xff0c;就是今天的日期减一…

php 子网掩码正则,验证子网掩码正则表达式代码范例

验证子网掩码正则表达式代码实例:在实际应用中可能验证子网掩码合法性的需求并不多&#xff0c;但并不能够保证绝对没有&#xff0c;下面就分享一段能够实现此功能的代码实例&#xff0c;希望能够给需要的朋友带来一定的帮助&#xff0c;代码如下:function checkMask(mask){var…

c# 可变二维数组_C#| 具有固定行大小和可变列大小的二维数组

c# 可变二维数组Here, the task is to declare a two dimensional array – where number rows are given and columns are variable length: 在这里&#xff0c;任务是声明一个二维数组-其中给出了行数&#xff0c;列数是可变长度 &#xff1a; To declare such array, we us…

loop和[bx]的联合应用

计算ffff:0-ffff:b单元中的数据的和&#xff0c;结果存储在dx中&#xff08;8086&#xff09; assume cs:codecode segmentmov ax,0ffffhmov ds,axmov bx,0mov dx,0mov cx,12s: mov al,[bx]mov ah,0add dx,axinc bxloop smov ax,4c00hint 21hcode ends endloop相当于for循环&a…

javascript实现网页对联广告

1、将下面代码放到<head></head>之间<SCRIPT languageJavaScript src"tan.js"></SCRIPT> 2、tan.js文件下载地址/Files/MaxIE/2005618154128678.rar转载于:https://www.cnblogs.com/MaxIE/archive/2005/12/22/302475.html

c语言打印数组元素_C程序打印元素差为0或1的子集数

c语言打印数组元素Given an array of integers, find and print the maximum number of integers you can select from the array such that the absolute difference between any two of the chosen integers is less than or equal to 1. 给定一个整数数组&#xff0c;查找并…

将数据、代码、栈放入不同的栈(8086)

先上程序&#xff1a; assume cs:code,ds:data,ss:stackdata segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h data endsstack segmentdw 0,0,0,0,0,0,0,0,0,0 stack endscode segmentstart: mov ax,stackmov ss,axmov sp,20hmov ax,datamov ds,axmov bx,0mov cx,…

ftp put 550 Access is denied

ii6 要想让用户上传文件&#xff0c;必须给整个ftp站点赋予写入权限转载于:https://www.cnblogs.com/dataflowjia/archive/2011/04/06/2007173.html

从MapX到MapXtreme2004[2]-图层操作

Mapx中基本的图层操作还是比较简单的&#xff0c;集中在对Layers和Layer的处理上&#xff0c;对别的没有太多要求。在MapXtreme中&#xff0c;要完成类似功能&#xff0c;发生了一点变化&#xff0c;如下&#xff1a;1、图层的显示在MapXtreme中&#xff0c;图层的显示控制发生…

nextcloud+nginx+mysql,Ubuntu搭建Nginx-Nextcloud环境

环境部署与安装安装mysql-server“$ sudo apt-get install mysql-server“安装的过程中会设置密码进入mysql“$ mysql -u root -p“创建数据库名“$ reate database nextcloud“查看数据名称“$ show databases“安装PHP7.0“$ sudo apt-get install php7.0-*“关于PHP7.0相关模…

抛硬币正面期望_如果抛硬币,正面的数量多于反面的可能性

抛硬币正面期望Problem statement: 问题陈述&#xff1a; Let N be a positive odd number. There are N coins, numbered 1, 2 , ... , N. For each i (1≤i≤N), when Coin i is tossed, it comes up heads with probability pi and tails with probability 1-pi. 令N为正奇…