Kontextmenüs in der Dateiverwaltung erweitern

03. Dez 2015

Die Kontextmenüs in der Dateiverwaltung lassen sich über JavaScript individuell erweitern. Bestehende Funktionen können ausgeblendet und neue Funktionen hinzugefügt werden.

Die Kontextmenüs in der Dateiverwaltung lassen sich über JavaScript individuell erweitern. Bestehende Funktionen können ausgeblendet und neue Funktionen hinzugefügt werden.

Die Datei post.include.js, welche inzwischen in der BASE ausgeliefert wird und unter /wGlobalProject/wGlobal/layout/explorer/post.include.js abliegt, enthält unter anderem das Ereignis wOnBeforeShowContextMenu, welches vor dem Öffnen des Kontextmenüs gefeuert wird. Über selectionData erhalten Sie Informationen zur aktuellen Auswahl.

Eigene Funktionen können über ein Icon, eine Bezeichnung und eine JS-Aktion eingebunden werden. Das JavaScript kann dann wiederum ein eigenes PHP-Skript aufrufen, welches die aktuelle Auswahl als Parameter erhält. 

Mit dieser Technik können zum Beispiel folgende Erweiterungen zur Verfügung gestellt werden:

  • Bilder auf eine spezielle Größe zuschneiden, ohne den Editor öffnen zu müssen
  • Dateien zum Löschen vormerken
  • Dokumente zum Übersetzen einreichen
  • Ein Verzeichnis synchronisieren
  • u.v.m

Beispielhafte post.include.js mit auskommentierten Anpassungen

function wOnBeforeShowContextMenu(selectionData){

//console.log(selectionData['header']);
//console.log(selectionData['content']);

if(selectionData['header']['numberFiles'] >= 1 && selectionData['header']['numberDirs'] == 0){
for(var
path in selectionData['content']){

//wFilemanager.wRemoveContextMenuFunction('preview');
//wFilemanager.wRemoveContextMenuFunction('download');
//wFilemanager.wRemoveContextMenuFunction('share.sendLink');
//wFilemanager.wRemoveContextMenuFunction('share.showLink');
//wFilemanager.wRemoveContextMenuFunction('share.facebook');
//wFilemanager.wRemoveContextMenuFunction('share.twitter');
//wFilemanager.wRemoveContextMenuFunction('share.google');
//wFilemanager.wRemoveContextMenuFunction('edit');
//wFilemanager.wRemoveContextMenuFunction('options');
//wFilemanager.wRemoveContextMenuFunction('restoreArchiving');
//wFilemanager.wRemoveContextMenuFunction('upload');
//wFilemanager.wRemoveContextMenuFunction('copy');
//wFilemanager.wRemoveContextMenuFunction('cut');
//wFilemanager.wRemoveContextMenuFunction('checkin');
//wFilemanager.wRemoveContextMenuFunction('checkout');
//wFilemanager.wRemoveContextMenuFunction('rename');
//wFilemanager.wRemoveContextMenuFunction('delete');

//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']){

//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.wAppendContextMenuFunction('requestSync', {'icon' : '/syncDir.gif', 'caption' : 'Verzeichnis synchronisieren', 'action' : "window.open('/syncDir.php?path=" + path + "')"});
//break;
}
}
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 + "')"});
}
}