一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

php给fck文件管理器添加查看、修改、删除文件功能

时间:2011-04-02 编辑:简简单单 来源:一聚教程网

php教程给fck文件管理器添加查看、修改、删除文件功能

olistmanager.getfolderrowhtml = function( foldername, folderpath )
{
 // build the link to view the folder.
 var slink = ' ' ;
 
 var rlink = '
rename folder' ;
 
 var dlink = 'delete folder' ;
 
    var sslink =  rlink + dlink;
 return '' +
   ' ' +
    slink +
    foldername +
    '
' + sslink +
  '' ;
}
 
olistmanager.getfilerowhtml = function( filename, fileurl, filesize )
{
 var sicon = oicons.geticon( filename ) ;
 
 // build the link to view the file.
 var slink = ' ' ;
 
 var vlink = '
view file' ;
 
 var rlink = 'rename file' ;
 
 var dlink = 'delete file' ;
 
 
 // get the file icon.
    var sslink =  vlink + rlink + dlink;
 return '' +
   ' ' +
    slink +
    filename +
    '' +
   ' ' +
    filesize +
    ' kb' + sslink +
  '' ;
}
 
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 ;
 }
}


第二步 找到这个文件 /fckeditoreditorfilemanagerbrowserdefaultfrmfolders.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。第三步,找到fckeditoreditorfilemanagerbrowserdefaultbrowser.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 += '¤tfolder=' + selectbrowser( this.currentfolder ) ;

 

4。第四步 再找这个文件 fckeditoreditorfilemanagerconnectorsphpcommands.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 '' ;
}
 
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 '';
}
 
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 '';
}
 
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 '';
}


5。第五步 fckeditoreditorfilemanagerconnectorsphpconfig.php
第28行修改为:

$config['configallowedcommands'] = array('quickupload', 'fileupload', 'getfolders', 'getfoldersandfiles', 'createfolder','deletefolder','deletefile','renamefolder','renamefile') ;

6。第六步 fckeditoreditorfilemanagerconnectorsphpconnector.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。第七步 fckeditoreditorfilemanagerconnectorsphpio.php
第70行函数function createserverfolder( $folderpath, $lastfolder = null )里添加:

$folderpath = iconv("utf-8","gbk",$folderpath);


8。第八步 fckeditoreditorfilemanagerconnectorsphputil.php
第50行修改为:

return (mb_convert_encoding(htmlspecialchars($value),"utf-8","gbk")) ;


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

热门栏目