เพิ่ม 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;”>’ ;
- ไปที่ Line 65 จะเห็นดังตัวอย่าง
- ต่อมาให้สร้าง 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> ’ +
sLink +
fileName +
‘<\/a>’ +
‘<\/td><td align=”right” nowrap> ’ +
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> ’ +
sLink +
fileName +
‘<\/a>’ +
‘<\/td><td align=”right” nowrap> ’ +
fileSize +
‘ KB’ +
‘<\/td><\/tr>’ ;
- ไปที่ Line 70 จะเห็นดังตัวอย่างข้างล่าง
- ต่อมาให้สร้าง 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();
}
- Function DeleteFile
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 ข้อ แต่กว่าผมจะทำได้ครบเหนื่อยเหมือนกันครับสำหรับมือใหม่อย่างผม แฮ่ๆ
June 29th, 2009 at 5:16 pm
กำลังหาอยู่พอดี ขอบคุณครับ
June 25th, 2012 at 10:56 am
เจ่งมากครับ ผมนำไปพัฒนาต่อใน ver. 2.6.6 ได้แล้วคัฟ ^.^
June 25th, 2012 at 12:40 pm
ยินดีครับ ^_^
October 23rd, 2013 at 12:11 pm
สวัสดีครับ ผมได้ลองทำตามแล้ว มันไม่มีอะไรเกิดขึ้นเลยน่ะครับ รบกวนชี้แนะด้วยนะครับ อยากได้ตัวนี้มากเลย
November 7th, 2013 at 10:26 am
ทำไวนานมากแล้วครับ อีกอย่างไม่ค่อยมีเวลาด้วย ต้องขอโทษด้วยครับ
ผมว่าตัวใหม่ๆ น่าจะทำได้เลย ลองเล่นดูครับ ไว้ผมมีเวลา ว่าจะเอาตัวล่าสุดมาเล่นด้วย
http://ckeditor.com/demo#standard