เพิ่ม delete option ใน FCKeditor 2.6.4

พอดีกำลังทดสอบเล่นเจ้า FCKeditor (พี่ที่ทำงานด้วยกันชื่อพี่ศักดิ์แนะนำตัวนี้มา ^^) ผมก็เลยจัดไปครับ Download FCKeditor 2.6.4 ลงมา ผลปรากฏว่าถูกโฉลก เอ้ย! ถูกใจมากเลยครับกับการใช้งานที่ง่ายและ support หลากหลายภาษา แต่ในส่วนของการ upload ไฟล์ หรือ รูป จะไม่มี Function Delete หรือลบไฟล์มาให้ เอ๊ะทำไงดี ก็เลยไปเจอวิธีเพิ่ม Option นี้ลงไปครับก็เลยเอามาแชร์ครับ ผมเอาไว้กันลืมด้วย อิอิ
มาเริ่มกันเลยครับ
1. หารูป delete มาใส่ไว้ที่ Folder filemanager/images/
2. ไปที่ไฟล์ filemanager/frmresourceslist.html และ
Edit Plus หรือ Tools อะไรก็ได้ครับที่พวกเราถนัดเปิดไฟล์นี้ออกมาเพื่อจะแก้ไข

  • สร้าง Link เพื่อลบไฟล์ ในที่นี้ใช้ function ชื่อ DeleteFile
    • ไปที่ Line 65 จะเห็นดังตัวอย่าง

      var sLink = ‘<a href=”#” onclick=”OpenFile(\” + ProtectPath( fileUrl ) + ‘\’);return false;”>’ ;

    • ให้เราใส่ Link ข้างล่างใต้่ Line 65

      var dLink = ‘<a href=”#” title=”Delete file” onclick=”DeleteFile(\” + ProtectPath(fileName) + ‘\’);return false;”>’ ;

  • ต่อมาให้สร้าง Link Delete ไปที่ Line 70
    • ไปที่ Line 70 จะเห็นดังตัวอย่างข้างล่าง

      return ‘<tr>’ +

      ‘<td width=”16″>’ +

      sLink +

      ‘<img alt=”” src=”images/icons/’ + sIcon + ‘.gif” width=”16″ height=”16″ border=”0″><\/a>’ +

      ‘<\/td><td>&nbsp;’ +

      sLink +

      fileName +

      ‘<\/a>’ +

      ‘<\/td><td align=”right” nowrap>&nbsp;’ +

      fileSize +

      ‘ KB’ +

      ‘<\/td><\/tr>’ ;

    • แก้เป็น

      return ‘<tr>’ +

      ‘<td width=”34″>’ +

      sLink +

      ‘<img alt=”” src=”images/icons/’ + sIcon + ‘.gif” width=”16″ height=”16″ border=”0″><\/a>’ +

      dLink +

      ‘<img alt=”” src=”images/delete.gif” width=”16″ height=”16″ border=”0″><\/a>’+

      ‘<\/td><td>&nbsp;’ +

      sLink +

      fileName +

      ‘<\/a>’ +

      ‘<\/td><td align=”right” nowrap>&nbsp;’ +

      fileSize +

      ‘ KB’ +

      ‘<\/td><\/tr>’ ;

  • ต่อมาให้สร้าง Function DeleteFile และ Function DeleteFileCallBack อาจจะสร้างไว้ก่อน before window.onload = { … } ก็ได้
    • Function DeleteFile

      function DeleteFile( fileName, fileUrl ) {
      if (confirm(‘Are you sure you wish to delete ‘ +
      ProtectPath(fileName) + ‘?’)) {
      oConnector.SendCommand( ‘DeleteFile’, “FileName=” +
      fileName, DeleteFileCallBack ) ;
      }
      }

    • Function DeleteFileCallBack

      function DeleteFileCallBack ( fckXml ) {
      if ( oConnector.CheckError( fckXml ) != 0 )
      return ;
      var oNodes = fckXml.SelectNodes( ‘Connector/Error’ );
      if (oNodes!=null && oNodes.length>0) {
      var errNo = parseInt(oNodes[0].attributes.
      getNamedItem(‘number’).value) ;
      switch (errNo) {
      case 0 :
      break;
      case 102 :
      case 103 :
      alert(oNodes[0].attributes.
      getNamedItem(‘
      originalDescription’).value);
      break;
      default:
      alert(‘DFi: Invalid XML response from
      connector..’);
      }
      } else {
      alert(‘DFi: Invalid XML response from connector.’);
      }
      Refresh();
      }

3. ไปที่ filemanager/connectors/php/commands.php

  • เพิ่ม Function DeleteFile เพื่อไว้ delete file ครับ

    function DeleteFile($resourceType, $currentFolder) {
    $sErrorNumber = ‘0’ ;
    $sErrorMsg = ” ;

    if ( isset( $_GET[‘FileName’] ) ) {

    // Map the virtual path to the local server path.
    $sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;

    $sFileName = $_GET[‘FileName’] ;

    if ( strpos( $sFileName, ‘..’ ) !== FALSE ) {
    $sErrorNumber = ‘102’ ; // Invalid file name.
    $sErrorMsg = ‘Invalid file name’;
    } else {
    if ( @unlink($sServerDir.$sFileName) ) {
    $sErrorNumber = ‘0’ ; // deleted
    } else {
    $sErrorNumber = ‘103’ ; // not deleted
    $sErrorMsg = ‘Could not delete file ‘.$sServerDir.$sFileName;
    }
    }
    } else {
    $sErrorNumber = ‘102’ ; // no file set
    $sErrorMsg = ‘No file specified’;
    }

    // Create the “Error” node.
    echo ” ;
    }

4. ไปที่ filemanager/connectors/php/connector.php

  • ไปที่ Function DoResponse เพิ่มตามข้างล่างต่อจาก break หลังสุด

    case ‘DeleteFile’ :
    DeleteFile( $sResourceType, $sCurrentFolder ) ;
    break ;

5. ไปที่ filemanager/connectors/php/config.php Line ที่ 54 เพิ่ม “DeleteFile” เพื่อให้มันยอมรับ

จบแล้วครับ ดูเหมือนแค่ 5 ข้อ แต่กว่าผมจะทำได้ครบเหนื่อยเหมือนกันครับสำหรับมือใหม่อย่างผม แฮ่ๆ

5 Responses to “เพิ่ม delete option ใน FCKeditor 2.6.4”

  1. Thai Says:

    กำลังหาอยู่พอดี ขอบคุณครับ

  2. Nattkhanesh.A Says:

    เจ่งมากครับ ผมนำไปพัฒนาต่อใน ver. 2.6.6 ได้แล้วคัฟ ^.^

  3. admin Says:

    ยินดีครับ ^_^

  4. MAT Says:

    สวัสดีครับ ผมได้ลองทำตามแล้ว มันไม่มีอะไรเกิดขึ้นเลยน่ะครับ รบกวนชี้แนะด้วยนะครับ อยากได้ตัวนี้มากเลย

  5. admin Says:

    ทำไวนานมากแล้วครับ อีกอย่างไม่ค่อยมีเวลาด้วย ต้องขอโทษด้วยครับ

    ผมว่าตัวใหม่ๆ น่าจะทำได้เลย ลองเล่นดูครับ ไว้ผมมีเวลา ว่าจะเอาตัวล่าสุดมาเล่นด้วย
    http://ckeditor.com/demo#standard