Pour ceux qui ne le connaissent pas encore, FCKeditor est un excellent éditeur HTML wysiwyg (acronyme pour What You See Is What You Get, c'est-à-dire que ce que vous voyez est ce que vous obtiendrez).
Tout comme TinyMCE, ces outils gratuits permettent de rédiger en ligne et facilement des pages html.
FCKeditor propose un filemanager qui permet d'uploader en toute facilité des fichiers sur le serveur afin de pouvoir les utiliser dans les pages que nous créons.
Seul hic, une fois uploadés, vous ne pouvez supprimer ces fichiers que par ftp. En effet, le filemanager ne permet pas la suppression des fichiers, ce qui peut parfois être assez ennuyant.
Pas de soucis, nous allons rémédier à ce problème.
Attention, la méthode que nous allons voir ici ne fonctionne que si vous utilisez FCKeditor avec PHP.
Coté client (javascript)
Nous allons commencer par ajouter un peu de javascript dans le filemanger, de façon à avoir un bouton 'delete' à coté des fichiers uploadés.
Pour cela, il faut éditer le fichier frmresourceslist.html qui se situe dans le dossier editor > filemanager > browser > default.
Nous devons ajouter la fonction qui enverra la requête vers le serveur, je l'ai appellé DelFile().
Pour fonctionner correctement, elle nécesite des variable supplémentaire et une fonction CallBack :
/* ************************************
Suppression d'un fichier
par seebz - http://seebz.net
************************************ */
var ResourceType;
var CurrentFolder;
function DelFile( fileName )
{
if(confirm("Supprimer le fichier " + fileName + " ?")){
ResourceType = oConnector.ResourceType;
CurrentFolder = oConnector.CurrentFolder;
oListManager.Clear() ;
oConnector.CurrentFolder = CurrentFolder + fileName;
oConnector.SendCommand( 'DelFile', null, DelFileCallBack ) ;
}
}
function DelFileCallBack() {
LoadResources( ResourceType, CurrentFolder ) ;
}
Placez ce bout de code APRES la balise <script type="text/javascript">, à la ligne 29.
Toujours dans le même fichier, recherchez le code suivant, nous allons y ajouter quelques lignes (indiquées en rouge) :
oListManager.GetFileRowHtml = function( fileName, fileUrl, fileSize )
{
// Lien delete
var dLink = '<a style="color:red;" href="#" onclick="DelFile(\'' + fileName + '\');return false;">' ;
// Build the link to view the folder.
var sLink = '<a href="#" onclick="OpenFile(\'' + fileUrl.replace( /'/g, '\\\'') + '\');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>' +
' ' + dLink + 'del</a>' +
'</td><td align="right" nowrap> ' +
fileSize +
' KB' +
'</td></tr>' ;
}
Après avoir vidé le cache du navigateur, vous devriez déjà avoir quelques chose ressemblant à ceci :

Seul problème, ça ne fonctionnera pas tant qu'on aura pas fait la modification coté serveur.
Coté serveur (PHP)
Nous devons ajouter le code qui supprimera le fichier du serveur. Pour cela, il faut éditer le fichier connector.php qui se situe dans le dossier editor > filemanager > browser > default > connectors > php > connectors.
Placez le code suivant AVANT la ligne 93 ( CreateXmlHeader ... ) si vous avez la version 2.4.3
ou AVANT la ligne 52 ( // Check if it is an allowed command ) pour la version 2.6 :/p>
/* ************************************
Suppression d'un fichier
par seebz - http://seebz.net
************************************ */
if ( $sCommand == 'DelFile' )
{
$file = trim($sCurrentFolder, '/');
$sCurrentFolder = rtrim($sCurrentFolder, '/');
$sCurrentFolder = substr($sCurrentFolder, 0, strrpos($sCurrentFolder, '/') + 1);
$filepath = ServerMapFolder( $sResourceType, $currentFolder ) . $file;
@unlink($filepath);
$sCommand == 'GetFoldersAndFiles';
}
Remarques
- Prenez soin de vérifier que le fichier que vous voulez supprimer ne soit pas utilisé sur une page, ce serait dommage de gâcher une page que vous avez mis 3 heures à écrire.
- Je n'ai pas jugé utile de permettre la suppression des dossiers mais si quelqu'un se sent la motivation d'adapter le script, qu'il n'hésite pas à m'en faire part.
- Ce code fonctionne avec les version 2.4.3 et 2.6 de FCKeditor mais devrait fonctionner sur d'autres versions.
- Have fun


Remarque concernant la version 2.6 de FCKeditor.
Avec cette version, le code coté serveur est à placer à la ligne 51 du fichier 'connector.php', juste AVANT :
// Check if it is an allowed command
if ( ! IsAllowedCommand( $sCommand ) )
I have been pulling out my hair trying to get code to do this. Thanks
Un grand merci ca marche nikel....
Merci beaucoup à toi.
.
J'ai un peu galéré à transcrire en ASP, mais c'est fait
merci pour ce hack super efficace !
En effet, adaptation très efficace, Merci !!
Précision :
Dans le fichier connnectors/php/config.php, remplacez la ligne :
$Config['ConfigAllowedCommands'] = array('QuickUpload', 'FileUpload', 'GetFolders', 'GetFoldersAndFiles', 'CreateFolder') ;
par :
$Config['ConfigAllowedCommands'] = array('QuickUpload', 'FileUpload', 'GetFolders', 'GetFoldersAndFiles', 'CreateFolder', 'DelFile') ;
Bonjour,
J'utilise FCKEditor dans magento et le code ne fonctionne pas. J'ai essayé de trouver l'erreur, mais ça ne donne rien.
J'ai une fenêtre d'alerte qui s'ouvre disant :
"The server didn't send back a proper XML response. Please contact your system administrator.
XML request error: Internal Server Error (500)
Requested URL:
http://www.flamme-design.fr/js/fontis/fckeditor/editor/filemanager/connectors/php/connector.php?Command=DelFile&Type=Image&CurrentFolder=%2Fhome1(1).jpg&uuid=1237886204789
Response text:"
j'utilise aussi FCK, c'est vrai qu'il manquait une option pour effacer des fichiers.
En site web: Voici un petit tutoriel Fontis pour débutant.
Juste avant le unlink dans connector.php, j'ai dû rajouter :
$filepath = utf8_decode($filepath);
pour pouvoir supprimer les fichiers qui contenaient des accents.
Yes!!
Ca marche aussi sur la version 2.6.4.
Sauf que, dans cette version, le fichier "connector.php" ne se trouve plus dans le dossier "editor > filemanager > browser > default > connectors > php > connectors" comme indiqué dans le tuto, mais bien dans "editor > filemanager > browser > connectors > php".
Merci pour cet article vraiment intéressant.
bonjour,
le tutoriel est très important, il a l'aire facile mais portant j'avais des problemes !!
c'est qu'elle version de filemanager vous itulisez car j'arrive pas a trouver la function oListManager.GetFileRowHtml dans "frmresourceslist.html" pour y ajouter le bout du code!!
nb: j'ai bien instaler le filemanager et ca marche nikél mais jaimrai bien y ajouter la possibilité de la supression, Merci a tous ceux qui vont m'aider a régler mon probléme.
Dans le code il y a une erreur dans la page PHP
Remplacer
$sCommand == 'GetFoldersAndFiles';
par
$sCommand = 'GetFoldersAndFiles';
Merci merci merci pour ce tuto!!!!! Tout fonctionne a merveille! Explication simple et efficace!! Des soucis en moins et un gain de temps sur la msie en place de mon projet !!
Simple, efficace et très bien expliqué.
Merci