Veröffentlichungsdatum: 26. Februar 2020
Änderungsdatum: 30. Mai 2023
dateiexplorer dateimanager fileselector explorer dateiauswahl spaltendarstellung filemanagercustomized
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.
Ab CMS-Version 14 ist es übrigens möglich, die Masken für die projektspezifischen und verzeichnisspezifischen Einstellungen direkt über das Backend anzusteuern (Projekteinstellungen (Darstellung) und Verzeichniseinstellungen (Darstellung)).
Verfügbar ab CMS-Version 006.008.108.000.
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.
<?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="/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/images/element-icons/element_gallery.gif" caption="Produktauswahl" en:caption="Articles" fr:caption="Articles" path="/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/fileselector/special-selector-example.php"/> </wURLs> </wsl:ifValue> ... </wFileselector>
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.
<?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="/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/images/dir-icons/dir-locked.gif" caption="Dokumente" en:caption="" fr:caption="" path="/base/kundenbereich/dokumente"/> </wsl:ifHasPermissionDirectory> </wDirs> </wsl:ifIsInGroup> ... </wFileselector>
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="/[IHR-LAYOUT-PROJEKT]/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>
?>
Folgende Platzhalter können Sie für die Abfrage verwenden:
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. Ab CMS-Version 12.x erfordert es keiner manuellen Ablage der zuvor genannten Datei. Die Einstellung kann direkt über die Verzeichniseinstellung (Darstellung) vorgenommen werden.
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.
<?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.'' : '';
});
}
?>
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.
<?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';
});
?>
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.
<?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>';
});
?>
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
<?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) == 0 && 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>';
//...
//...
?>
Das Beispiel zeigt an, wie im Weblic© Standorte (für Maps) innerhalb des standorte-Verzeichnisses die Spalten individuell angepasst wurden, um die Adresse und Koordinaten (Breitegrad und Längengrad) direkt in der Verzeichnisansicht ersichtlich zu machen.
<?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' => 'Adresse', 'width' => '120', 'align' => 'left', 'orderBy' => "/wd:extension/wd:object/wd:data[@id = 'location']/text()", 'callback' => function($documentPath){
return wDocumentData::getData($documentPath, "/wd:extension/wd:object/wd:data[@id = 'location']/text()");
});
$additionalData[] = array('caption' => 'Breitengrad', 'width' => '100', 'align' => 'left', 'orderBy' => "/wd:extension/wd:object/wd:data[@id = 'latitude']/text()", 'callback' => function($documentPath){
return wDocumentData::getData($documentPath, "/wd:extension/wd:object/wd:data[@id = 'latitude']/text()");
});
$additionalData[] = array('caption' => 'Längengrad', 'width' => '100', 'align' => 'left', 'orderBy' => "/wd:extension/wd:object/wd:data[@id = 'longtitude']/text()", 'callback' => function($documentPath){
return wDocumentData::getData($documentPath, "/wd:extension/wd:object/wd:data[@id = 'longtitude']/text()");
});
?>
Das Beispiel zeigt an, wie im Weblic© Veranstaltungen innerhalb des termine-Verzeichnisses die Spalten individuell angepasst wurden, um die Veranstaltungsart direkt in der Verzeichnisansicht ersichtlich zu machen.
<?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' => 'Veranstaltungsart', 'width' => '240', 'align' => 'left', 'orderBy' => "", 'callback' => function($documentPath){
$categories = wDocumentData::getNodes($documentPath, '/wd:extension/wd:object/wd:data[@id = "category"]/wd:category');
$result = '';
foreach($categories as $category){
$categoryText = wDocumentData::getData('/[PROJEKTPFAD]/veranstaltungen/categories/events.wCategories.php', '/categories//category[@id="'.$category->textContent.'"]/@text');
$result .= ($result != '' ? ', ' : '').$categoryText;
}
return $result;
});
?>
Das Beispiel zeigt an, wie Sie das Änderungsdatum der Seite (wd:modification) als Spalte in der Verzeichnisansicht anzeigen und danach per Callback die Sortierung ermöglichen.
(verfügbar ab CMS-Version 16)
<?php
/* In dieser Konfigurationsdatei können Sie die Spalten des Dateiexplorers individuell anpassen und zusätzliche Schaltfächen hinzufügen.
Spaltenbenennungen der Standard-Spalten:
Name - filename
Titel - title
Größe - size
Geändert am - mtime
*/
$dirPath = $scriptData['path'];
//In diesem Verzeichnis auszublendende Spalten
$columnsToHide = array();
// Zusätzliche Spalten
$additionalData = array();
// Sortierung nach modification-Datum (wd:modification)
// orderBy muss als Parameter die id übergeben bekommen, wodurch das Callback callbackOrderBy wirkt.
$additionalData[] = array('id' => 'modified',
'caption' => 'Zuletzt geändert am',
'width' => '120',
'align' => 'left',
'orderBy' => "callback(modified)",
'callback' => function($documentPath){
return wDate::formatDate('d.m.Y H:i', wDocumentData::getData($documentPath, '/wd:extension/wd:meta/wd:modification/@time'));
},
'callbackOrderBy' => function($documentPath){
return wDocumentData::getData($documentPath, '/wd:extension/wd:meta/wd:modification/@time');
}
);
?>