Liste mit frei definierbarem Filter

Nutzbar ab: Version

Mit dem frei definierbarem Filter können Sie eine Weblication® Liste in der Ausgabe individuell filtern.

Die Möglichkeiten der Weblication® Listenfunktionen und Filtermöglichkeiten sind bereits im Standard sehr vielseitig. Anhand des Filters "Frei definierbarer Filter" zeigen wir Ihnen ein Beispiele auf, welche Möglichkeiten Ihnen darüber zur Verfügung stehen.

Um dies realisieren zu können, sollte eine CMS-Version ab 10.x vorhanden und das aktuelle Listen-Element (Weblic® "Liste Standard") installiert sein.

Beispiel 1: Liste auf Gruppenzugehörigkeit des aktuellen Benutzers filtern

Dieses Beispiel zeigt, wie Sie eine Dateiliste nach aktueller Gruppe des eingeloggten Benutzer filtern.

Listenoptionen mit "Frei definierbarem Filter"
Listenoptionen mit "Frei definierbarem Filter"

Setzen Sie eine eigene Funktion über die wMyProject.php Datei, welche mit der BASE mitgeliefert wird und über die pre.php des globalen Projektes eingelesen wird. Diese Funktion steuern Sie über den Filter "Frei definierbarer Filter" und Operator "PHP Callback-Funktion" an, welcher in den Listenoptionen über die "Filter für die aufzulistenden Dateien" ausgewählt werden kann. Im Feld tragen Sie die entsprechende Funktion ein, z.B. wMyProject::listFilterIsInGroup('kunden').
Als wPath, welcher geprüft werden soll, geben Sie den Knoten an, in welchem Sie die Information für die Gruppe in den Dateien hinterlegt haben, z.B. im Objekt:
/wd:extension/wd:object/wd:data[@id = 'viewGroup']/text()

Beispiel: Auszug aus /[IHR-LAYOUT-PROJEKT]/wGlobal/scripts/php/wMyProject.php zum Filter listFilterIsInGroup

//*********************************************************************************/
/*
* @method String listFilterIsInGroup(String $value, String $file)
*
* @description Callback Funktion für Operator bei frei definierbarem Listenfilter
*
* @param value value Wert, der über den wPath-Ausdruck des Filters für die aktuelle Datei ermittelt wurde
*
* @param file jeweilige Datei
*
* @return String
*
*/
//*********************************************************************************/

public static function listFilterIsInGroup($value, $file){

//print $value.":".$file."<br/>";

// Prüft beispielsweise, ob der aktuelle Benutzer in der Gruppe ist, die als Bedingung mitgegeben wurde
if(wUserCur::isInGroup($value)){
return
true;
}
else{
return
false;
}
}

Beispiel 2: Liste auf erstellte Dateien des aktuellen Benutzers filtern

Dieses Beispiel zeigt, wie Sie eine Dateiliste nach den Dateien filtern können, welcher der eingeloggten Benutzer erstellt hat.

Listenoptionen mit "Frei definierbarem Filter"
Listenoptionen mit "Frei definierbarem Filter"

Setzen Sie eine eigene Funktion über die wMyProject.php Datei, welche mit der BASE mitgeliefert wird und über die pre.php des globalen Projektes eingelesen wird. Diese Funktion steuern Sie über den Filter "Frei definierbarer Filter" und Operator "PHP Callback-Funktion" an, welcher in den Listenoptionen über die "Filter für die aufzulistenden Dateien" ausgewählt werden kann. Im Feld tragen Sie die entsprechende Funktion ein, z.B. wMyProject::listFilterIsCurrentUser.
Als wPath, welcher geprüft werden soll, geben Sie den Knoten an, in welchem Sie die Information für die Gruppe in den Dateien hinterlegt haben, z.B. im Objekt:
/wd:extension/wd:meta/wd:creation/@name

Beispiel: Auszug aus /[IHR-LAYOUT-PROJEKT]/wGlobal/scripts/php/wMyProject.php zum Filter listFilterIsInGroup

//*********************************************************************************/
/*
* @method String listFilterIsCurrentUser(String $value, String $file)
*
* @description Callback Funktion für Operator bei frei definierbarem Listenfilter
*
* @param value value Wert, der über den wPath-Ausdruck des Filters für die aktuelle Datei ermittelt wurde
*
* @param file jeweilige Datei
*
* @return String
*
*/
//*********************************************************************************/

public static function listFilterIsCurrentUser($value, $file){

//print $value.":".$file."<br/>";
//print wUserCur::getName();

// Prüft ob der übergebene Wert (wPath-Ausdruck) mit dem Usernamen des aktuell angemeldeten Users übereinstimmt.
if(wUserCur::getName() == $value){
return
true;
}
else{
return
false;
}
}

Beispiel 3: Liste auf Zeitraum der Veröffentlichung filtern

Diese Beispiele zeigen, wie Sie eine Dateiliste nach den Dateien filtern können, welche im definierten Zeitraum der Veröffentlichung liegen. Ein Beispiel zeigt dies mit regulären Ausdrücken auf, das andere mit globalen Variablen.

3.1 Über regulären Ausdruck im frei definierbaren Filter

Listenoptionen mit "Frei definierbarem Filter" mit RegEx
Listenoptionen mit "Frei definierbarem Filter" mit RegEx

Als wPath, welcher geprüft werden soll, geben Sie den Knoten an, in welchem der Zeitstempel für das Veröffentlichungsdatum hinterlegt ist:
/wd:extension/wd:meta/wd:publication/@time

Als Operator wählen Sie: pregiMatch - regulärer Ausdruck passt

Die Bedingung befüllen Sie durch Angabe eines regulären Ausdruckes mit dem Zeitraum, auf welchen Sie filtern wollen, z.B.:

  • nur Dateien von Januar bis September 2015:
    2015-0[1-9]
  • nur Dateien von Januar bis Dezember 2015:
    2015-(0[1-9]|1[0-2])
    oder einfach:
    2015-


3.2 Über globale Variable im frei definierbaren Filter

Listenoptionen mit "Frei definierbarem Filter" mit globaler Variable
Listenoptionen mit "Frei definierbarem Filter" mit globaler Variable

Als wPath, welcher geprüft werden soll, geben Sie den Knoten an, in welchem der Zeitstempel für das Veröffentlichungsdatum hinterlegt ist:
/wd:extension/wd:meta/wd:publication/@time

Als Operator wählen Sie: > - größer

Die Bedingung befüllen Sie durch Angabe der globalen Variable, welche Sie entweder direkt in der Seite über ein PHP Quelltext Element definieren oder an zentraler Stelle, wie z.B. in der wMyProject.php.

Beispiel: Auszug aus dem PHP-Code mit Definition der globalen Variablen

// z.B. in PHP Quelltext-Element oder in wMyProject global definieren...

$GLOBALS['oneWeekAgo'] = date('Y-m-d H:i:s', strtotime("-1 week"));
$GLOBALS['twoWeeksAgo'] = date('Y-m-d H:i:s', strtotime("-2 week"));
$GLOBALS['threeWeeksAgo'] = date('Y-m-d H:i:s', strtotime("-3 week"));

$GLOBALS['oneMonthAgo'] = date('Y-m-d H:i:s', strtotime("-1 month"));
$GLOBALS['twoMonthAgo'] = date('Y-m-d H:i:s', strtotime("-2 month"));
$GLOBALS['threeMonthAgo'] = date('Y-m-d H:i:s', strtotime("-3 month"));
$GLOBALS['fourMonthAgo'] = date('Y-m-d H:i:s', strtotime("-4 month"));
$GLOBALS['fiveMonthAgo'] = date('Y-m-d H:i:s', strtotime("-5 month"));
$GLOBALS['sixMonthAgo'] = date('Y-m-d H:i:s', strtotime("-6 month"));
$GLOBALS['nineMonthAgo'] = date('Y-m-d H:i:s', strtotime("-9 month"));

Mit aktueller Version unter CMS 12.x, der BASE und des Listen-Weblic® können Sie im Filter nach Veröffentlichungsdatum nun auch direkt vergangene Tage, Monate und Jahre als Bedingung beim Filtern verwendet werden.

Beispiel 4: Liste mit frei definierbarem Filter nach xpath (title)

Liste mit frei definierbarem Filter (title)
Liste mit frei definierbarem Filter (title)

Dieses Beispiel führt an, wie Sie die Dateien einer Liste nach einem bestimmten String im Titel filtern. Mit dem frei definierbaren Filter setzen Sie das über die Listenoptionen wie folgt um:

Beispiel 5: Liste mit frei definierbarem Filter nach xpath (path)

Liste mit frei definierbarem Filter (path)
Liste mit frei definierbarem Filter (path)

Dieses Beispiel führt an, wie Sie die Dateien einer Liste über URL-Parameter nach einem bestimmten String im Pfad filtern (z.B. eine Jahresangabe wie /de/aktuelles/meldungen/2019). Mit dem frei definierbaren Filter setzen Sie das über die Listenoptionen wie im Screen ersichtlich um.

Wird die Listen-Seite mit entsprechendem URL-Parameter aufgerufen (z.B. domain.dd/de/aktuelles/index.php?year=2019), werden die Listeneinträge darauf gefiltert.

Beispiel 6: Liste mit frei definierbarem Filter nach xpath (extension)

Ähnlich der Umsetzung von Beispiel 5 (Liste mit frei definierbarem Filter nach xpath (path)) können Sie dies z.B. für die Suchergebnisliste der Volltextsuche einsetzen.

Wenn Sie als wPath-Angabe /wd:stat/@extension setzen und über die Bedingung z.B. angeben, lassen sich die Ergebnisse durch Übergabe des URL-Parameters (z.B. ?filterSearch=pdf) nach den entsprechenden Dateiendungen filtern.

Beispiel 7: Liste mit frei definierbarem Filter über Operator PHP Callback-Funktion (listFilterIsInGroup)

Dieses Beispiel führt an, wie Sie die Dateien einer Liste auf Gruppenmitgliedschaft filtern. Mit dem frei definierbaren Filter setzen Sie das über die Listenoptionen unter Einsatz des Operators PHP Callback-Funktion um. In der Bedingung setzen Sie den Funktionsaufruf, welcher als PHP-Funktion z.B. in der wMyProject.php Datei definiert ist.

Liste mit frei definierbarem Filter und Prüfung auf Gruppenmitgliedschaft
Liste mit frei definierbarem Filter und Prüfung auf Gruppenmitgliedschaft

Auszug aus der wMyProject.php:

//*********************************************************************************/
/*
* @method String listFilterIsInGroup(String $value, String $file)
*
* @description Callback Funktion für Operator bei frei definierbarem Listenfilter
*
* @param value value Wert, der über den wPath-Ausdruck des Filters für die aktuelle Datei ermittelt wurde
*
* @param file jeweilige Datei
*
* @return String
*
*/
//*********************************************************************************/

public static function listFilterIsInGroup($value, $file){

//print $value.":".$file."<br/>";

// Prüft beispielsweise, ob der aktuelle Benutzer in der Gruppe ist, die als Bedingung mitgegeben wurde
if(wUserCur::isInGroup($value)){
return
true;
}
else{
return
false;
}
}

Beispiel 8: Liste mit frei definierbarem Filter über Operator PHP Callback-Funktion (listFilterIsCurrentUser)

Dieses Beispiel führt an, wie Sie die Dateien einer Liste auf Gruppenmitgliedschaft filtern. Mit dem frei definierbaren Filter setzen Sie das über die Listenoptionen unter Einsatz des Operators PHP Callback-Funktion um. In der Bedingung setzen Sie den Funktionsaufruf, welcher als PHP-Funktion z.B. in der wMyProject.php Datei definiert ist.

Liste mit frei definierbarem Filter und Prüfung auf aktuellen Benutzer
Liste mit frei definierbarem Filter und Prüfung auf aktuellen Benutzer

Auszug aus der wMyProject.php:

//*********************************************************************************/
/*
* @method String listFilterIsCurrentUser(String $value, String $file)
*
* @description Callback Funktion für Operator bei frei definierbarem Listenfilter
*
* @param value value Wert, der über den wPath-Ausdruck des Filters für die aktuelle Datei ermittelt wurde
*
* @param file jeweilige Datei
*
* @return String
*
*/
//*********************************************************************************/

public static function listFilterIsCurrentUser($value, $file){

//print $value.":".$file."<br/>";
//print wUserCur::getName();

// Prüft ob der übergebene Wert (wPath-Ausdruck) mit dem Usernamen des aktuell angemeldeten Users übereinstimmt.
if(wUserCur::getName() == $value){
return
true;
}
else{
return
false;
}
}