Supprimer un fichier du filemanager de FCKeditor
Posté le mercredi 26 mars 2008
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.
Toutefois, les utilisateurs d'ASP trouveront leur bonheur grâce à l'explication de Glouferu.
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 :
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 :
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';
}
Si vous avez des question? notre équipe est à votre disposition sur Le forum shoops.fr
Aucun commentaire:
Enregistrer un commentaire