Kontextmenüs im Dateiexplorer anpassen

Nutzbar ab: Version 009.006.000.000

24. Jun 2015

Über ein Javascript-Ereignis kann das Kontextmenü vor der Anzeige im Dateiexplorer beliebig erweitert bzw. angepasst werden.

Um die Darstellung anzupassen, ist eine JS-Datei unter folgendem Pfad abzulegen /[WGLOBALPROJECT]/wGlobal/layout/explorer/post.include.js . Beim Einsatz in der Cloud wird [WGLOBALPROJECT] durch /cloud ersetzt. Diese Datei enthält eine JS-Funktion wOnBeforeShowContextMenu , welche vor der Anzeige des Kontextmenüs aufgerufen wird.

Inhalt der post.include.js Datei

function wOnBeforeShowContextMenu(selectionData){ 

  
//console.log(selectionData['header']);
  //console.log(selectionData['content']);
  
  
if(selectionData['header']['numberFiles'] >= && 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'] >= && 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 + "')"});
  

  
  
wFilemanager.wShowMenuContext();  
}

// Einfügen von Inhalten beeinflussen:
function wOnBeforePaste(files){
  return 
true;
}

Beispiel für eine serverseitige Abfrage über AJAX

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.

Entwicklerbereich Weblication® CMS - © Scholl Communications AG