FCKeditor添加附件删除,文件夹删除功能,PHP 代码

原来文章有点问题,现在已经修复bug

1. 打开”/fckeditor/editor/filemanager/connectors/php/commands.php” 这个文件

在最下面添加几个函数

[php]
//delete uploadfiles 删除附件

function DeleteFile(){

$filePath = $_GET['FileName'];

if (empty($filePath)) {

$sErrorNumber = '102';

$sErrorMsg = "no select";

}else {

$d_root = $_SERVER['DOCUMENT_ROOT'];

$t = @unlink($d_root.$filePath);

$sErrorNumber = '0';

}

}


//delete folder 删除文件夹(单个删除)

function DeleteFolder(){

$folderPath = $_GET['FolderPath'];

$d_root = $_SERVER['DOCUMENT_ROOT'];

$path = $d_root.$folderPath;

$openDir = opendir($path);

$file = readdir($openDir);

while($file = readdir($openDir)){

if($file!='.' && $file != '..'){

$isc[] = $file;

}

}



if(!is_array($isc)){

@rmdir($path);

}else{

echo '<folderError path="'.$path.'" info = "1" />';

}

}


//delete allfolder 删除所有文件夹包括附件

function DeleteAllFolder(){

$folderPath = $_GET['FolderPath'];

delAll($folderPath);

}


//del all 这个是检测文件和删除所有文件夹的函数 用于检测文件下面是否还有附件,如果有则提示是否确定删除?
//如果选择确定,则删除该文件下的所有文件.如果否,则不删除,.

function delAll($path){

$openDir = opendir($path);

while($file = readdir($openDir)){

if($file!='.' && $file != '..'){

$fullPath = $path.'/'.$file;

}

if(!is_dir($fullPath)){

@unlink($fullPath);

}else{

delAll($fullPath);

}

}

closedir($openDir);

if(rmdir($path)){

return true;

}else{

return false;

}

}

[/php]

2. 打开”/fckeditor/editor/filemanager/connectors/php/connector.php” 这个文件

搜索  case ‘CreateFolder’ :
如果搜索不到直接找到第78行.
在下面添加

[php]
case ‘DeleteFile’ :

    DeleteFile();

break;

case ‘DeleteFolder’ :

    DeleteFolder();

break;

case ‘DeleteAllFolder’ :

    DeleteAllFolder();

break;

[/php]

3.打开”fckeditor/editor/filemanager/connectors/php/config.php”这个文件

搜索

$Config['ConfigAllowedCommands'] = array('QuickUpload', 'FileUpload', 'GetFolders', 'GetFoldersAndFiles', 'CreateFolder') ;


将这段代码修改成

$Config['ConfigAllowedCommands'] = array('QuickUpload', 'FileUpload', 'GetFolders', 'GetFoldersAndFiles', 'CreateFolder', 'DeleteFile', 'DeleteFolder', 'DeleteAllFolder') ;


4.打开”fckeditor/editor/filemanager/browser/default/frmresourceslist.html”这个文件

然后搜索

oListManager.GetFolderRowHtml = function( folderName, folderPath, folderUrl )

将这个函数里面的内容修改成

oListManager.GetFolderRowHtml = function( folderName, folderPath, urltest )
{
// Build the link to view the folder.
var sLink = ‘<a href=”#” onclick=”OpenFolder(\” + ProtectPath( folderPath ) + ‘\’);return false;”>’ ;
return ‘<tr><td width=”25px”><a href=”javascript:void(0)” onclick=”DeleteFolder(\”+folderName+ ‘\’,\”+ProtectPath(urltest) +’\’)”><img src=”images/delete.gif” alt=”Delete ‘ + folderName + ‘” /></a></td>’ + ‘<td width=”16″>’ + sLink + ‘<img alt=”” src=”images/Folder.gif” width=”16″ height=”16″ border=”0″ /><\/a>’ + ‘<\/td><td nowrap colspan=”2″>&nbsp;’ + sLink + folderName + ‘<\/a>’ + ‘<\/td><\/tr>’ ;

}


这是在每个文件夹前面添加一个删除按钮

4.继续查找

oListManager.GetFileRowHtml = function( fileName, fileUrl, fileSize )

将函数里面的内容替换成

oListManager.GetFileRowHtml = function( fileName, fileUrl, fileSize )
{
// Build the link to view the folder.

var sLink = '<a href="#" onclick="OpenFile(\'' + ProtectPath( fileUrl ) + '\');return false;">' ;


// Get the file icon.

var sIcon = oIcons.GetIcon( fileName ) ;


return ‘<tr><td width=”25px”><a href=”javascript:void(0)” onclick=”DeleteFile(\”+ProtectPath( fileUrl )+ ‘\’)”><img src=”images/delete.gif” alt=”Delete ‘ + fileName + ‘” /></a></td>’ + ‘<td width=”16″>’ + sLink + ‘<img alt=”” src=”‘+ ProtectPath( fileUrl ) +'” width=”40″ height=”40″ border=”0″ /><\/a>’ + ‘<\/td><td>&nbsp;’ + sLink + fileName + ‘<\/a>’ + ‘<\/td><td align=”right” nowrap>&nbsp;’ + fileSize + ‘ KB’ + ‘<\/td><\/tr>’ ;

}


同个文件,114行左右for循环替换修改成
for ( var i = 0 ; i < oNodes.length ; i++ )

{

var sFolderName = oNodes[i].attributes.getNamedItem('name').value ;

oHtml.Append( oListManager.GetFolderRowHtml( sFolderName, sCurrentFolderPath + sFolderName + "/" ,sCurrentFolderUrl) ) ;

}


5.紧接着在这个函数下面添加4个方法

[php]
//delete file
//cary add
function DeleteFile( fileUrl ){
if ( fileUrl == null )

        return ;

if (confirm('Do you really want to delete this picture ?')) {

oConnector.SendCommand( 'DeleteFile', 'FileName=' + encodeURIComponent( fileUrl) , DeleteFileCallBack ) ;

} else {

return ;

}

}

//cary add
function DeleteFileCallBack( fckXml ){
if ( oConnector.CheckError( fckXml ) == 0 )

    window.parent.frames['frmResourcesList'].Refresh() ;

}



function DeleteFolder( folderName, folderUrl){

if ( folderName == null )

        return ;

if (confirm('Do you really want to delete this folder ?')) {

oConnector.SendCommand( 'DeleteFolder', 'FolderPath=' + encodeURIComponent(folderUrl+folderName) , DeleteFolderCallBack ) ;

} else {

return ;

}

}


//delete folder

function DeleteFolderCallBack( fckXml ){

var msg = 'The folder which you want to delete has subfolders or subfiles. Are you sure to delete all of them ?';

if ( oConnector.CheckError( fckXml ) != 0 )

        return ;


// Get the current folder path.
var oFolderErr = fckXml.SelectSingleNode( ‘Connector/folderError’ ) ;
if ( oFolderErr == null )

    {

window.parent.frames['frmResourcesList'].Refresh() ;

return;

}

var err = oFolderErr.attributes.getNamedItem('info').value ;

var path = oFolderErr.attributes.getNamedItem('path').value ;

if(err == 1){

if (confirm(msg)) {

oConnector.SendCommand( 'DeleteAllFolder', 'FolderPath=' + encodeURIComponent(path) , DeleteFolderCallBack ) ;

} else {

return ;

}

}

}

[/php]

6.修改下css样式

打开”fckeditor/editor/filemanager/browser/default/browser.css”这个文件

添加如下css样式

a:link, a:visited {text-decoration:none; color:#00F;}

a:hover, a:active {text-decoration:underline; color:#F00;}

img {border:0;}


这是为了去掉下划线

如果发现什么问题,可以给我发邮件 yangzeyanlove@foxmail.com