爲 FCKeditor 增加刪除文件和文件夾的功能(C#)

FCKeditor 很強大也很討人喜歡,唯一的缺點就是不支持文件和文件夾的刪除,很是遺憾。這篇文章就介紹怎樣爲 FCKeditor 增加刪除功能(基於 C# 的版本)。

FCKeditor 官方網站:http://www.fckeditor.net
本文所針對版本:FCKeditor: 2.6.4,FCKeditor.Net: 2.6.3。

1. 用 Visual Studio 2005/2008 打開項目 FCKeditor.Net 2.6.3,打開文件“FileBrowser/Connector.cs”,爲 class Connector 增加如下兩個成員函數:

private void DelFile( XmlNode connectorNode, string resourceType, string currentFolder )
{
  HttpContext hc = HttpContext.Current;
  string file = hc.Server.MapPath(hc.Request["FileUrl"]);
  if (System.IO.File.Exists(file))
    System.IO.File.Delete(file);
  else
    hc.Response.Write(@"<error number=""1"" originaldescription=""unable to locate file"">");
}

private void DelFolder( XmlNode connectorNode, string resourceType, string currentFolder )
{
  HttpContext hc = HttpContext.Current;
  string folder = hc.Server.MapPath(hc.Request["FolderName"]);
  if (System.IO.Directory.Exists(folder))
    System.IO.Directory.Delete(folder, true);
  else
    hc.Response.Write(@"<error number=""2"" originaldescription=""unable to locate folder"">");
}

2. 在文件“Connector.cs”中找到 OnLoad 函數,在 switch 部分增加以下紅色代碼:

// Execute the required command.
switch( sCommand )
{
  case "GetFolders" :
    this.GetFolders( oConnectorNode, sResourceType, sCurrentFolder );
    break;
  case "GetFoldersAndFiles" :
    this.GetFolders( oConnectorNode, sResourceType, sCurrentFolder );
    this.GetFiles( oConnectorNode, sResourceType, sCurrentFolder );
    break;
  case "CreateFolder":
    this.CreateFolder(oConnectorNode, sResourceType, sCurrentFolder);
    break;
  case "DelFile":
    this.DelFile(oConnectorNode, sResourceType, sCurrentFolder);
    break;
  case "DelFolder":
    this.DelFolder(oConnectorNode, sResourceType, sCurrentFolder);
    break;
}

3. 編譯 FCKeditor.net 並關閉該項目。將生成的 FredCK.FCKeditorV2.dll 拷貝出來以備後用。

4. 建立 C# 測試項目,並在其中部署 FCKeditor 2.6.4(使用第 3 步生成的 FredCK.FCKeditorV2.dll)。精簡及部署的詳細步驟非本文重點,不再重複。

5. 打開“fckeditor/editor/filemanager/browser/default/frmresourceslist.htm”,修改以下兩個函數

oListManager.GetFolderRowHtml = function( folderName, folderPath, folderUrl )
{
  // Build the link to view the folder.
  var sLink = '<a href="#" οnclick="OpenFolder(/'' + ProtectPath(folderPath) + '/');return false;">';

  return '<tr>' +
    '<td width="16">' +
      sLink +
      '<img alt="" src="images/Folder.gif" width="16" height="16" border="0"><//a>' +
    '<//td><td nowrap colspan="2"> ' +
      sLink +
      folderName +
      '<//a>' +
    '<//td><td align="right"><a href="#" οnclick="DelFolder(/''+folderName+'/',/''+ ProtectPath(folderUrl) + '/');return false;">刪除</a></td><//tr>';
}

oListManager.GetFileRowHtml = function( fileName, fileUrl, fileSize )
{
  // Build the link to view the folder.
  var sLink = '<a href="#" οnclick="OpenFile(/'' + ProtectPath(fileUrl) + '/');return false;">' ;

  // Get the file icon.
  var sIcon = oIcons.GetIcon( fileName ) ;

  return '<tr>' +
    '<td width="16">' +
      sLink +
      '<img alt="" src="images/icons/' + sIcon + '.gif" width="16" height="16" border="0"><//a>' +
    '<//td><td> ' +
      sLink +
      fileName +
      '<//a>' +
    '<//td><td align="right" nowrap> ' +
      fileSize +
      ' KB' +
    '<//td><td align="right"><a href="#" οnclick="DelFile(/''+fileName+'/',/'' + ProtectPath(fileUrl) + '/');return false;">刪除</a></td><//tr>';
}

6. 繼續修改文件“frmresourceslist.htm”,在 OpenFile 函數後面增加以下兩個函數:

function DelFile( fileName, fileUrl )
{
  if (confirm('您確定要刪除文件“' + fileName + '”嗎?'))
    oConnector.SendCommand("DelFile", "FileUrl=" + escape(fileUrl), Refresh);
}

function DelFolder( folderName, folderPath )
{
  if (confirm('您確定要刪除文件夾“' + folderName + '”和裏面的所有文件嗎?'))
    oConnector.SendCommand("DelFolder", "FolderName=" + escape(folderPath + folderName), Refresh);
}

7. 繼續修改文件“frmresourceslist.htm”,找到 GetFoldersAndFilesCallBack 函數中的下面這行,增加紅色部分的代碼:

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

至此,刪除功能增加完畢,見下圖:

 

轉自:http://hi.baidu.com/yangw80/blog/item/0292e0f00d345ea6a40f52a5.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章