Peter Rehm's Blog

apple,development,life & more

Dateien im Filemenager vom FCK Editor löschen

Mit 7 Kommentaren

Als ich heute gefragt wurde ob der FCKedit auch das Löschen von Dateien
ermöglicht war ich ganz erstaunt, dass er das nicht kann, und hab ihn dann
gleich in meinen Sourcen anhand der Erläuterungen von Bramus
ergänzt. Da sich allerdings einige Kleinigkeiten verändert haben, wollte ich
die einzelnen Schritte noch einmal auflisten.

Die Erweiterungen basieren fast komplett auf den Erklärungen von Bramus,
der dies in seinem Blog alles erwähnt. Danke hierfür.

1.) Ablegen eines entsprechenden ICONS in

CODE:
editor/filemanager/browser/default/images/delete.gif


2.) Anpassen der Datei frmresourceslist.html

CODE:
editor/filemanager/browser/default/frmresourceslist.html


Suchen der Zeile:
CODE:
var sLink = '<a href="#" onclick="OpenFile('' + fileUrl + '');return false;">' ;


Danach folgende Zeile einfügen.
CODE:
       // Added by Bramus!
var dLink = '<a href="#" title="Delete file" onclick="DeleteFile('' + escape(fileName) + '');return false;">' ;    


Dann folgenden Block:

CODE:
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>' ;


durch diesen ersetzen. Hier wird das Bild dann eingefügt.

CODE:
return '<tr>' +
'<td width="35">' +
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>' ;


Zuletzt in der Datei bevor

CODE:
window.onload = function()
{
window.top.IsLoadedResourcesList = true ;
}


folgenden Code Block einfügen

CODE:
// Added by Bramus!
function DeleteFile( fileName, fileUrl ) {
if (confirm('Are you sure you wish to delete ' + unescape(fileName) + '?')) {
oConnector.SendCommand( 'DeleteFile', "FileName=" + fileName, DeleteFileCallBack ) ;
}
}

// Added by Bramus!
function DeleteFileCallBack ( fckXml ) {
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.) Nun geht es an die PHP Funktionen in der commands.php

In der folgenden Datei

CODE:
editor/filemanager/browser/default/conmectors/commands.php


muss nur der folgende Code am ENDE vor den ?> eingefügt werden.

CODE:
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 '<Error number="' . $sErrorNumber . '" originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />' ;
}


4.) Anpassen des Connectors

Im Connector muss noch das Switch Statement angepasst werden.

CODE:
editor/filemanager/browser/default/conmectors/commands.php


Sollte nur um folgendes ergänzt werden:

CODE:
case 'DeleteFile' :
DeleteFile( $sResourceType, $sCurrentFolder ) ;
break ;


In der 2.4.3 sieht das ganze dann so aus

CODE:
// Execute the required command.
switch ( $sCommand )
{
case 'GetFolders' :
GetFolders( $sResourceType, $sCurrentFolder ) ;
break ;
case 'GetFoldersAndFiles' :
GetFoldersAndFiles( $sResourceType, $sCurrentFolder ) ;
break ;
case 'CreateFolder' :
CreateFolder( $sResourceType, $sCurrentFolder ) ;
break ;

case 'DeleteFile' :
DeleteFile( $sResourceType, $sCurrentFolder ) ;
break ;

}


Viel Spaß damit!

Geschrieben von Peter Rehm

02.08.2007 um 22:51:33

Abgelegt in Programmierung

Tags für diesen Artikel:

0 Trackbacks zu Dateien im Filemenager vom FCK Editor löschen

Trackback-URL für diesen Eintrag

  1. Keine Trackbacks

7 Kommentare zu Dateien im Filemenager vom FCK Editor löschen

  1. Hallo Peter

    danke für diese Seite und gut das Du zur Original Seite weiter verlinkt hast. Dir sind ein paar Übertragungsfehler unterlaufen, bzw. Deine Blogsoftware hat Sie gefiltert:
    var sLink = '' ;

    Von daher auch hier:

    // Added by Bramus!
    var dLink = '' ;

    Hier fehlt der Backslash.

    conmectors ist im Original immer
    connectors
    z.B.
    editor/filemanager/browser/default/conectors/php/commands.php

    Bei Punkt 4.) verweist Du auf die 'command.php' aber es ist die 'connector.php' gemeint

    Berdn

    16 Aug 07 um 21:13

    Antwort

  2. Moin moin Peter,
    das Einfügen des Codes hat wunderbar funktioniert und der Filemanager tut genau das was er soll.
    Ist es denn auch möglich ein Verzeichnis zu löschen ??? Da man ja selbstständig Verzeichnisse anlegen kann wäre diese Funktion nicht schlecht.

    Grüßle

    Alex

    22 Aug 07 um 11:13

    Antwort

  3. Hi Bernd,

    das kann man auch implementieren, da muss man aber einen etwas größeren aufwand betreiben. Ich kuck mir das mal in den nächsten Wochen an, ich hab das noch auf einer TODO Liste stehen, weiss aber nicht wann ich dazu Zeit finden werden.

    Peter

    Peter Rehm

    22 Aug 07 um 12:12

    Antwort

  4. Hallo,
    ist eine tolle Sache aber ich finde die Datei „Zuletzt in der Datei bevor nicht“, wo ist die denn?

    Ich benutze FCK 2.5.1

    Gruß Ille

    ille

    07 Apr 08 um 08:41

    Antwort

  5. Ich benutze den FCKEditor in der Version 2.6.4.1

    Um das Ganze in dieser Version zum laufen zu bringen muss außerdem die Datei

    "editor/filemanager/connectors/php/config.php" angepasst werden. Hier findet man in Zeile 50:

    $Config['ConfigAllowedCommands'] = array('QuickUpload', 'FileUpload', 'GetFolders', 'GetFoldersAndFiles', 'CreateFolder') ;

    Dieses Array muss um "DeleteFile" erweitert werden:

    $Config['ConfigAllowedCommands'] = array('QuickUpload', 'FileUpload', 'GetFolders', 'GetFoldersAndFiles', 'CreateFolder', 'DeleteFile') ;

    jazzdee

    11 Okt 10 um 19:40

    Antwort

  6. sehr geil, vielen dank!
    auch danke an jazzdee für die erweiterung des tipps.
  7. Klasse Tipp!

    Mit diesem Patch hat sich ein altes aber lästiges Problem erledigt.

    ivl1705

    20 Mär 12 um 14:41

    Antwort

Kommentar schreiben

BBCode-Formatierung erlaubt
Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA

Kommentare werden erst nach redaktioneller Prüfung freigeschaltet!