Veröffentlichungsdatum: 20. Oktober 2017
Änderungsdatum: 27. Mai 2020
dateiexplorer explorer dateimanager kontextmenü funktion anpassen filemanagercustomized
Über ein Javascript-Ereignis kann das Kontextmenü vor der Anzeige im Dateiexplorer individuell erweitert bzw. angepasst werden.
Um die Darstellung anzupassen, ist eine JS-Datei unter folgendem Pfad abzulegen /[IHR-LAYOUT-PROJEKT]/wGlobal/layout/explorer/post.include.js . Beim Einsatz in der Cloud wird [IHR-LAYOUT-PROJEKT] durch /cloud ersetzt. Diese Datei enthält eine JS-Funktion wOnBeforeShowContextMenu , welche vor der Anzeige des Kontextmenüs aufgerufen wird.
function wOnBeforeShowContextMenu(selectionData){
//console.log(selectionData['header']);
//console.log(selectionData['content']);
// Schaltfläche für Verzeichnis erstellen im Kontextmenü ausblenden
//if(wFilemanager.path == '/wDeutsch/xxx'){
// wFilemanager.wRemoveContextMenuFunction('createDir');
//}
if(selectionData['header']['numberFiles'] >= 1 && selectionData['header']['numberDirs'] == 0){
for(var path in selectionData['content']){
//console.log(selectionData['content'][path]['type']);
//wFilemanager.wRemoveContextMenuFunction('preview');
//wFilemanager.wRemoveContextMenuFunction('download');
//wFilemanager.wRemoveContextMenuFunction('upload');
//wFilemanager.wRemoveContextMenuFunction('share.sendLink');
//wFilemanager.wRemoveContextMenuFunction('share.showLink');
//wFilemanager.wRemoveContextMenuFunction('share.facebook');
//wFilemanager.wRemoveContextMenuFunction('share.twitter');
//wFilemanager.wRemoveContextMenuFunction('share.google');
//wFilemanager.wRemoveContextMenuFunction('open');
//wFilemanager.wRemoveContextMenuFunction('edit');
//wFilemanager.wRemoveContextMenuFunction('options');
//wFilemanager.wRemoveContextMenuFunction('upload');
//wFilemanager.wRemoveContextMenuFunction('checkin');
//wFilemanager.wRemoveContextMenuFunction('checkout');
//wFilemanager.wRemoveContextMenuFunction('rename');
//wFilemanager.wRemoveContextMenuFunction('delete');
//wFilemanager.wRemoveContextMenuFunction('refresh');
//wFilemanager.wRemoveContextMenuFunction('cut');
//wFilemanager.wRemoveContextMenuFunction('copy');
//wFilemanager.wRemoveContextMenuFunction('restoreArchiving');
//wFilemanager.wAppendContextMenuFunction('requestDelete', {'icon' : '/prepareToDelete.gif', 'caption' : 'Zum Löschen vormerken', 'action' : "window.open('/prepareToDelete.php?path=" + path + "')"});
//break;
}
}
else if(selectionData['header']['numberDirs'] >= 1 && selectionData['header']['numberFiles'] == 0){
for(var path in selectionData['content']){
//console.log(selectionData['content'][path]['type']);
//wFilemanager.wRemoveContextMenuFunction('open');
//wFilemanager.wRemoveContextMenuFunction('edit');
//wFilemanager.wRemoveContextMenuFunction('options');
//wFilemanager.wRemoveContextMenuFunction('upload');
//wFilemanager.wRemoveContextMenuFunction('checkin');
//wFilemanager.wRemoveContextMenuFunction('checkout');
//wFilemanager.wRemoveContextMenuFunction('rename');
//wFilemanager.wRemoveContextMenuFunction('delete');
//wFilemanager.wRemoveContextMenuFunction('refresh');
//wFilemanager.wRemoveContextMenuFunction('cut');
//wFilemanager.wRemoveContextMenuFunction('copy');
//wFilemanager.wAppendContextMenuFunction('requestSync', {'icon' : '/syncDir.gif', 'caption' : 'Verzeichnis synchronisieren', 'action' : "window.open('/syncDir.php?path=" + path + "')"});
//break;
/*
// Beispiel für eine serverseitige Abfrage über AJAX
wGetUrl('/_hasPermissionToShowReport.php?path=" + path + "', function(responseStr){
// wenn das zuvor genannte Skript eine "1" zurückgibt (z.B. print "1";):
if(responseStr == 1){
wFilemanager.wAppendContextMenuFunction('requestReport', {'icon' : '', 'className' : 'wui-context-menu-selection-entry-delete', 'caption' : 'Report anzeigen', 'action' : "window.open('/showReport.php?path=" + path + "')"});
}
wFilemanager.wShowMenuContext();
});
*/
}
}
else{
//wFilemanager.wRemoveContextMenuFunction('refresh');
//wFilemanager.wRemoveContextMenuFunction('paste');
//wFilemanager.wRemoveContextMenuFunction('createDir');
//wFilemanager.wRemoveContextMenuFunction('createFile');
//wFilemanager.wAppendContextMenuFunction('requestReport', {'icon' : '/showReport.gif', 'caption' : 'Report anzeigen', 'action' : "window.open('/showReport.php?path=" + path + "')"});
}
// Funktionsaufruf nur dann nochmals am Ende, wenn dieser in den Abfragen zuvor nicht schon gesetzt ist:
wFilemanager.wShowMenuContext();
}
function wOnAfterShowDir(){
// Schaltfläche für Hochladen von Dateien im Dateiexplorer ausblenden
//if(wFilemanager.path == '/wDeutsch/aktuelles'){
// wFilemanager.hideButton('upload');
//}
//else{
// wFilemanager.showButton('upload');
//}
// Schaltfläche für Verzeichnis erstellen im Dateiexplorer ausblenden
//if(wFilemanager.path == '/wDeutsch/xxx'){
// wFilemanager.hideButton('createDir');
//}
}
wGetUrl('/hasPermissionToShowReport.php?path' + path, function(responseStr){
if(responseStr == 1){
wFilemanager.wAppendContextMenuFunction('requestReport', {'icon' : '/showReport.gif', 'caption' : 'Report anzeigen', 'action' : "window.open('/showReport.php?path=" + path + "')"});
}
wFilemanager.wShowMenuContext();
});
Über die Methode wFilemanager.wRemoveContextMenuFunction lassen sich bestehende Funktionen entfernen. Über die Methode wFilemanager.wAppendContextMenuFunction hingegen können zusätzliche Funktionen hinzugefügt werden.
Da das Kontextmenü selbst im Ereignis über wFilemanager.wShowMenuContext() aufgerufen werden muss, lassen sich auch asynchrone Logiken über AJAX in Kombination mit dem PHP-Framework umsetzen.
Beim Einsatz von AJAX muss die Methode wShowMenuContext innerhalb des Ergebnisses aufgerufen werden, da sie sonst vor der Antwort ausgeführt werden würde.