Peter Rehm's Blog

apple,development,life & more

Dateien im Filemenager vom FCK Editor löschen

with 7 Comments

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!

Posted by Peter Rehm

08/02/2007 at 10:51:33 PM

Posted in Programmierung

Defined tags for this entry:

FCK Editor 2.4 und das Phänomen der kleingeschriebenen Pfade

without Comments

Seit der Einführung von FCK Edit 2.4 wurde ein kleines Detail verändert.
Bisher hat der Editor die Dateien die man hochgeladen hat, immer in
/userfiles/Image/ oder z.b. /userfiles/File/ hochgeladen
Image oder File sind die Ressource Typen.

Seit 2.4 lädt der Editor aber die Dateien immer in /userfiles/image/.
Das ist ziemlich blöd, wenn der Kunde alle seine Bilder in /Image/ liegen hat.
Dazu gibt es 2 Lösungsansätze.

1.) Umbenennen von /Image/ in /image/

Das alte Verzeichnis kann einfach in kleingeschrieben umbenannt werden.
Dies sollte man mit allen Ressource Typen machen, die man verwendet.
Allerdings sollte man beachten, dass man evtl. noch eine Datenbank updaten
muss, wenn sich die Pfade geänder haben.

Dies kann man mit der Anleitung des vorherigen Blog Posts machen.

2.) Man passt die PHP Datein vom FCKEditor an

Seit der neuen Version hat sich hier was verändert

CODE:
editor/filemanager/browser/default/connectors/php/io.php:34:               
   return $GLOBALS["UserFilesPath"] . strtolower( $resourceType ) . $folderPath ;
editor/filemanager/browser/default/connectors/php/io.php:45:       
   $sResourceTypePath = $GLOBALS["UserFilesDirectory"] . strtolower( $resourceType ) . '/' ;


Und zwar ist das strtolower hinzugekommen. Entfernt man dieses verhält sich alles wieder wie gehabt.

CODE:
editor/filemanager/browser/default/connectors/php/io.php:34:               
   return $GLOBALS["UserFilesPath"] . $resourceType  . $folderPath ;
editor/filemanager/browser/default/connectors/php/io.php:45:       
   $sResourceTypePath = $GLOBALS["UserFilesDirectory"] . $resourceType . '/' ;


Zusammenfassung
Allerdings ist die Methode 1 sicher die zukunftssichere. Da man sonst bei jedem Update wieder an das ändern der
Dateien denken muss.


Posted by Peter Rehm

03/18/2007 at 10:37:16 AM

Posted in Programmierung

Defined tags for this entry: ,

FCKedit Pt. II

without Comments

Selbst das Update auf die 2.2 Version brachte keine Verbesserung.
Aber dafür eine entscheidende Erkenntnis:

Das wird alles verhunzt weil der HTML Code nicht komplett XHTML valid war.
Ist ja ein sinniger Grund.
Der Haken ist nur, dass quasi alles versaut wird was nicht 100% XHTML ist.
Und bei Bedienung durch Kunden kann alles mögliche passieren.

Und ich weiss wovon ich rede :-)

Ich bitte daher die OS-Gemeinde, behebt die Probleme.
Komisch ist auch, im IE gibt es das Problem, im FF quasi nicht.
Und wenn ich schon mecker, ICH WILL SAFARI SUPPORT!!

Posted by Peter Rehm

01/19/2006 at 02:19:46 AM

Posted in PHP, Programmierung

Defined tags for this entry: , , ,

FCKeditor

with 1 Comment

Ich bin ja ein echter Fan des FCKeditors. Aber was muss ich da auf einer Kundenseite sehen?

Er macht lauter unsinnige tags, Übermäßig p & a Tags,... Ich kann es mir nicht erklären.
Dadurch wird das ganze Layout zerhagelt,... Und wenn ich das von Hand korrigiere bringt mir
das rein gar nichts. Beim nächsten öffnen und speichern ist wieder alles im Eimer.
So eine Scheiße!!!

Nachdem ich nicht herausfinden konnte welche Version ich in meinem CMS einsetze update ich einfach mal auf 2.2 vom Dezember :-)
Mal kucken ob das was bringt. Immerhin hab ich nun Frust abgelassen.

Posted by Peter Rehm

01/18/2006 at 11:27:07 PM

Posted in PHP, Programmierung

Defined tags for this entry: ,