【www.gdgbn.com--网页配色】
php教程给fck文件管理器添加查看、修改、删除文件功能
olistmanager.getfolderrowhtml = function( foldername, folderpath )
{
// build the link to view the folder.
var slink = " " ;
var rlink = "" ;
var dlink = "" ;
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 = "" ;
var rlink = "" ;
var dlink = "" ;
// 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版本,可以查看中文目录文件,也可以修改中文目录,但最好是简体中文。创建文件夹时要注意,此版本可以创建特殊文件夹,但不能浏览、修改、删除。由于此版本含有“删除”功能,使用者请打开权限设置。
文章中含有/*的内容为选项,可以自行打开,含有//的为注释。