Inhalt des Dateiexplorers beeinflussen

Nutzbar ab: Version 006.008.108.000

Bestimmen Sie, welche Inhalte der Dateiexplorer dem Benutzer zur Verfügung stellen soll.

Sie können den Inhalt des Dateiexplorers, der z.B. über den Button "Inhalte verwalten" in der Präsenz aufgerufen wird, über entsprechende Abfragen beeinflussen.

Anpassungen zur Verzeichnisstruktur

Verfügbar ab CMS-Version 006.008.108.000.

Beispiel 1: URL zum Produktshop einblenden

Dieses Beispiel führt an, wie Sie den Dateiexplorer nur für ein bestimmtes Projekt erweitern.

Im Beispiel wird innerhalb des Projektes /base ein zusätzlicher Bereich mit der URL zu einem Produktshop eingeblendet.

Beispiel: Auszug aus /IhrGlobalesProjekt/wGlobal/layout/fileselector/default.wFileselector.php

<?php $version="1.0"; $encoding="UTF-8"; ?>
<?php exit; ?>
<wFileselector xmlns:de="http://weblication.de/5.0/lang/de" xmlns:en="http://weblication.de/5.0/lang/en" xmlns:fr="http://weblication.de/5.0/lang/fr" xmlns:wsl="http://weblication.de/5.0/wsl">
                                                             
  <wFavorites display="" open="1" caption="Favoriten" en:caption="Favorites" fr:caption="Favoris"/>
  
  ...
  <wsl:ifValue value="$WSLPRE[wProjectPath]" operator="==" term="/base">
  <wURLs open="1" caption="Shop" en:caption="Shop" fr:caption="Shop">
    <url icon="/IhrGlobalesProjekt/wGlobal/layout/images/element-icons/element_gallery.gif" caption="Produktauswahl" en:caption="Articles" fr:caption="Articles" path="/IhrGlobalesProjekt/wGlobal/layout/fileselector/special-selector-example.php"/>    
  </wURLs>
  </wsl:ifValue>
  
  ...
      
</wFileselector>

Beispiel 2: Weitere Verzeichnisstruktur für Mitglieder einblenden

Den Redakteuren eines Mitgliederbereiches können Sie z.B. eine weitere Verzeichnisstruktur anzeigen, welche nur das Verzeichnis für den geschützten Bereich abbildet (z.B. /base/kundenbereich). Die Verzeichnisstruktur (wDirs) wird nur für Mitglieder der angegebenen Gruppe im Dateiexplorer ausgegeben.

Beispiel: Auszug aus /IhrGlobalesProjekt/wGlobal/layout/fileselector/default.wFileselector.php

<?php $version="1.0"; $encoding="UTF-8"; ?>
<?php exit; ?>
<wFileselector xmlns:de="http://weblication.de/5.0/lang/de" xmlns:en="http://weblication.de/5.0/lang/en" xmlns:fr="http://weblication.de/5.0/lang/fr" xmlns:wsl="http://weblication.de/5.0/wsl">
                                                             
  <wFavorites display="" open="1" caption="Favoriten" en:caption="Favorites" fr:caption="Favoris"/>

  <wDirs _display="select" de:captionSelect="Bitte wählen" en:captionSelect="Please select" open="1" caption="Häufig benötigt" en:caption="Frequently required" fr:caption="Souvent nécessaire">
    ...         
  </wDirs>

  ...
  <wsl:ifIsInGroup group="premiumkunden|chiefeditorship">
    <wDirs open="1" caption="Mitgliederbereich" en:caption="Members Area" fr:caption="Zone Membres">
      <wsl:ifHasPermissionDirectory path="/base/kundenbereich" permission="view">  
        <dir icon="/baseGlobal/wGlobal/layout/images/dir-icons/dir-locked.gif" caption="Dokumente" en:caption="" fr:caption="" path="/base/kundenbereich/dokumente"/>
      </wsl:ifHasPermissionDirectory> 
    </wDirs>
  </wsl:ifIsInGroup>
  ...
      
</wFileselector>

Beispiel 3: Individuelles Verzeichnis für Benutzer ermöglichen

Für Redakteure können Sie abhängig von deren Benutzername eine Verzeichnisstruktur anlegen und anzeigen lassen. Das Beispiel zeigt die Umsetzung über einen wsl:php Block, über den das entsprechende Verzeichnis generiert und bei Bedarf angelegt wird. Sofern in Ihrem Portal die Benutzer einen Benutzernamen gleich der E-Mail Adresse verwenden, können Sie bei Bedarf die Sonderzeichen beim Anlegen des Verzeichnisses umwandeln.

$version="1.0"$encoding="UTF-8"?>
<?php 
exit; ?>
<wFileselector xmlns:de="http://weblication.de/5.0/lang/de" xmlns:en="http://weblication.de/5.0/lang/en" xmlns:fr="http://weblication.de/5.0/lang/fr" xmlns:wsl="http://weblication.de/5.0/wsl">          
           
  ...          
                                                                       
  <wFavorites display="" open="1" caption="Favoriten" en:caption="Favorites" fr:caption="Favoris"/>
  
  <wDirs _display="select" de:captionSelect="Bitte wählen" en:captionSelect="Please select" open="1" caption="Häufig benötigt" en:caption="Frequently required" fr:caption="Souvent nécessaire">
    ...        
    <!-- Individuelle Ordner für Benutzer ermöglichen (Verzeichnisname über Benutzername des aktuellen Benutzers gesetzt) -->
    <wsl:php>
      $pathPersonalDocs = '/personalDocs/'.wUserCur::getName();
      // Falls Benutzername gleich E-Mail Adresse ist, können die Sonderzeichen bei Bedarf umgewandelt werden: (Eindeutigkeit selber prüfen!)
      //$pathPersonalDocs = '/personalDocs/'.wStringconverter::convertToDirName(wUserCur::getName());
      if(!wRepository::directoryExists($pathPersonalDocs)){
        wRepository::createDir($pathPersonalDocs);
        // ggf. einchecken und Rechte setzen: https://dev.weblication.de/dev/dokumentationen/framework/funktionen/wRepository-setPermissionsDirectory.php
      }
      <![CDATA[
        print '<dir icon="/baseGlobal/wGlobal/layout/images/dir-icons/dir-content.gif" caption="Meine Dateien" en:caption="My Documents" path="'.$pathPersonalDocs.'"/>';
      ]]>
    </wsl:php>         
  </wDirs>
  
  ...
  
  <wTree open="1" caption="Verzeichnisstruktur" en:caption="Directories" fr:caption="Structure de répertoire" path=""/>
      
</wFileselector>


?>

Mögliche Platzhalter

Folgende Platzhalter können Sie für die Abfrage verwenden:

  • $WSLPRE[wProjectPath]
    Pfad des aktuell aufgerufenen Projektes (z.B. /base)
  • $WSLPRE[wProjectGlobalPath]
    Pfad des globalen Projektes zum aktuell aufgerufenen Projekt (z.B. /baseGlobal)
  • $WSLPRE[wProjectAssetsPath]
    Pfad des Assets-Projektes zum aktuell aufgerufenen Projekt (z.B. /baseAssets)
  • $WSLPRE[wPath]
    Pfad, über den der Dateiexplorer aufgerufen wurde
  • $WSLPRE[wContextPath]
    Pfad, aus dessen Kontext der Dateiexplorer aufgerufen wurde
  • $WSLPRE[wProjectName]
    Projekttitel des aktuellen Projektes (siehe Projekteinstellungen)
  • $WSLPRE[wDirType]
    Typ des Verzeichnisses (aus dirType-Parameter des Exploreraufrufes)


Anpassungen zu Spalten

Verfügbar ab CMS-Version 10.x.

Durch Ablage einer /explorer/pre.include.php im weblication-Unterverzeichnis eines Verzeichnisses können Sie die Spalten in der Verzeichnisansicht beeinflussen.

Beispiel 1: Preis, Lieferzeiten und Varianten zu Shop-Produkten als Spalten anzeigen

Individualisierte Verzeichnisansicht der Shop-Produktezoom
Individualisierte Verzeichnisansicht der Shop-Produkte

Das Beispiel zeigt an, wie im Weblic© Mini-Shop innerhalb des produkte-Verzeichnisses die Spalten individuell angepasst wurden, um Preis, Lieferzeiten und Anzahl der Varianten direkt in der Verzeichnisansicht ersichtlich zu machen.

 
 

Beispiel: Auszug aus /base/shop/produkte/weblication/explorer/pre.include.php

  /*
  In dieser Konfigurationsdatei können Sie die Spalten des Dateiexplorers individuell anpassen.
  */

  
if(preg_match('/\/produkte$/'$scriptData['path'])){

    
$titleEditable false;
    
$columnsToHide = array('size''mtime');

    
$additionalData   = array();
    
$additionalData[] = array('caption' => 'Preis''width' => '80''align' => 'left''orderBy' => "/wd:extension/wd:object/wd:data[@id = 'price']/text()"'callback' => function($documentPath){
      return 
wDocumentData::getData($documentPath"/wd:extension/wd:object/wd:data[@id = 'price']/text()").' EUR';
    });
    
$additionalData[] = array('caption' => 'Lieferzeit''width' => '100''align' => 'left''orderBy' => "/wd:extension/wd:object/wd:data[@id = 'deliveryTime']/text()",  'callback' => function($documentPath){
      return (
$value wDocumentData::getData($documentPath"/wd:extension/wd:object/wd:data[@id = 'deliveryTime']/text()")) != '' $value.' Tage' '<span style="color:red">Nicht lieferbar</span>';
    });
    
$additionalData[] = array('caption' => 'Varianten''width' => '60''align' => 'center''callback' => function($documentPath){
      return (
$value wDocumentData::getData($documentPath"count(/wd:extension/wd:object/wd:data[@id = 'variants']/wd:item)")) != '' $value.'' '';
    });
  }

Beispiel 2: Veröffentlichungsdatum von Blog-Einträgen anzeigen.

Individualisierte Verzeichnisansicht der Blogbeiträgezoom
Individualisierte Verzeichnisansicht der Blogbeiträge

Das Beispiel zeigt an, wie im Weblic© Blog innerhalb des posts-Verzeichnisses die Spalten individuell angepasst wurden, um das Veröffentlichungsdatum direkt in der Verzeichnisansicht ersichtlich zu machen.

 
 

Beispiel: Auszug aus /base/blog/posts/weblication/explorer/pre.include.php

  /*
  In dieser Konfigurationsdatei können Sie die Spalten des Dateiexplorers individuell anpassen.
  */

  
$dirPath $scriptData['path'];
  
  
//In diesem Verzeichnis auszublendende Spalten
  
$columnsToHide = array('size'); 
  
  
// Zusätzliche Spalten
  
$additionalData   = array();
  
  
$additionalData[] = array('caption' => 'Veröffentlichungsdatum''width' => '120''align' => 'left''orderBy' => "/wd:extension/wd:meta/wd:publication/@time"'callback' => function($documentPath){
    return 
wDate::formatDate('d.m.Y H:i'wDocumentData::getData($documentPath'/wd:extension/wd:meta/wd:publication/@time')).' Uhr';
  });

Beispiel 3: Termin-Daten von Veranstaltungen anzeigen

Individualisierte Verzeichnisansicht der Blogbeiträgezoom
Individualisierte Verzeichnisansicht der Blogbeiträge

Das Beispiel zeigt an, wie im Weblic© Veranstaltungskalender innerhalb des termine-Verzeichnisses die Spalten individuell angepasst wurden, um die Termin-Daten (von und bis Datum) direkt in der Verzeichnisansicht ersichtlich zu machen.
Im Beispiel wird nur das erste Datum angezeigt. Sofern Sie zu einer Veranstaltung mehrere Termine hinterlegt haben und diese auch im Explorer anzeigen wollen, berücksichtigen Sie dies in Ihrer Umsetzung individuell.

 
 

Beispiel: Auszug aus /base/blog/posts/weblication/explorer/pre.include.php

  /*
  In dieser Konfigurationsdatei können Sie die Spalten des Dateiexplorers individuell anpassen.
  */

  
$dirPath $scriptData['path'];
  
  
//In diesem Verzeichnis auszublendende Spalten
  
$columnsToHide = array('size'); 
  
  
// Zusätzliche Spalten
  
$additionalData   = array();
  
  
$additionalData[] = array('caption' => 'Termin Start''width' => '120''align' => 'left''orderBy' => "/wd:extension/wd:object/wd:data[@id = 'dates']/wd:entry/@from"'callback' => function($documentPath){
    return 
wDate::formatDate('d.m.Y H:i'wDocumentData::getData($documentPath'/wd:extension/wd:object/wd:data[@id = "dates"]/wd:entry/@from')).' Uhr';
  });
  
  
$additionalData[] = array('caption' => 'Termin Ende''width' => '120''align' => 'left''orderBy' => "/wd:extension/wd:object/wd:data[@id = 'dates']/wd:entry/@to"'callback' => function($documentPath){
    return (
$value wDate::formatDate('d.m.Y H:i'wDocumentData::getData($documentPath'/wd:extension/wd:object/wd:data[@id = "dates"]/wd:entry/@to'))) != '' $value.' Uhr' '<span style="color:orange">Nicht angegeben</span>';
  });

Beispiel 4: Auswahl der Gruppen zur Elemente / Komponenten Verwaltung anpassen

Individualisierte Verzeichnisansicht der Weblics-Verwaltungzoom
Individualisierte Verzeichnisansicht der Weblics-Verwaltung

Das Beispiel zeigt an, wie in der Weblics© Verwaltung zu den einfügbaren Elementen bzw. Komponenten die Spalte "Nutzbar durch" individuell angepasst wurde, um die Auswahl der Gruppen individuell zu gestalten.
Im Standard bietet die Auswahlbox fest definierte Auswahlmöglichkeiten.

Kopieren Sie sich am besten das Standard-Template unter
     /weblication/grid5/default/project/wGlobal/layout/explorer/pre.include.php
und legen Sie dies wie nachfolgend ersichtlich als pre.include.php im entsprechenden Unterverzeichnis der mastertemplates ab. In der Datei können Sie dann die erforderlichen Anpassungen zu den Spalten (z.B. "Nutzbar durch") vornehmen

 
 

Beispiel: Auszug aus /IhrGlobalesProjekt/wGlobal/mastertemplates/weblication/explorer/pre.include.php

  /*
  In dieser Konfigurationsdatei können Sie die Spalten des Dateiexplorers individuell anpassen.
  */
  
if(preg_match('/\/wGlobal\/mastertemplates\/(item|component)s$/'$scriptData['path'], $matches)){
  
//...
  //...
  // Hier definieren Sie, welche Gruppen zur Auswahl angeboten werden sollen:

      
$viewableStr .= '<select onclick="event.preventDefault();event.stopPropagation()" ondblclick="event.preventDefault();event.stopPropagation()" onchange="wFilemanager.setPersonalizationDocument(\''.$documentPath.'\', this.options[this.selectedIndex].value);">';
      if(
count($viewUsers) == && count($viewGroups) == 0){
        
$viewableStr .= '<option selected="selected">Alle</option>';
        
$viewableStr .= '<option value="g:chiefeditorship">Chefredakteure</option>';
        
$viewableStr .= '<option value="g:administrators">Administratoren</option>';
      }
      else if(
$viewDataStr == ' u:admin' || $viewDataStr == ' g:administrators'){
        
$viewableStr .= '<option>Alle</option>';
        
$viewableStr .= '<option value="g:chiefeditorship">Chefredakteure</option>';
        
$viewableStr .= '<option value="g:administrators"selected="selected">Administratoren</option>';
      }
      else if(
$viewDataStr == ' g:chiefeditorship'){
        
$viewableStr .= '<option>Alle</option>';
        
$viewableStr .= '<option value="g:chiefeditorship" selected="selected">Chefredakteure</option>';
        
$viewableStr .= '<option value="g:administrators">Administratoren</option>';
      }
      else{
        
$viewableStr .= '<option>'.$viewDataStr.'</option>';
        
$viewableStr .= '<option>Alle</option>';
        
$viewableStr .= '<option value="g:chiefeditorship">Chefredakteure</option>';
        
$viewableStr .= '<option value="g:administrators">Administratoren</option>';
      }
      
$viewableStr .= '</select>';

  
//...
  //...

Entwicklerbereich Weblication® CMS - © Scholl Communications AG