Wunschlisten Add On: Manager
von Hannes am 05.01.2012 in My Modx mit 0 Kommentaren
Tweet
Passend zum Wunschlisten Snippet gibt es nun noch einen kleinen Manager um schneller mehrere veraltete Einträge zu löschen.
Das kleine Add On
Dieses Snippet ist ein Add On zum bereits vorgestellten Wunschliste Snippet. Alle Eigenschaften wie beispielsweise das Differenzieren zwischen eingeloggten und nicht registrierten Nutzern wurden selbstverständlich übernommen. Wie zuvor beim Wunschliste Snippet referenziert das Snippet für den Zugang zur MySql Datenbank auf die memoryList.config.php Datei.
Der Snippet Code (memoryListManage)
<?php
// Wunschlistenmanager - Version v0.1.2 (c) Hannes Letsch
include("core/components/memoryList/memoryList.config.php");
$ip = $_SERVER["REMOTE_ADDR"];
$page = $modx->resource->get('id');
$user = $modx->getLoginUserID();
$session = $_REQUEST['PHPSESSID'];
if ($user != 0) {
$listResources = mysql_fetch_assoc(mysql_query("SELECT `resources` FROM `modx_memoryList_stats` WHERE `user` = '" . $user . "'"));
$list = $listResources['resources'];
$delete = $_POST['resource']; //Inhalt der Checkboxen
} else {
$listResources = mysql_fetch_assoc(mysql_query("SELECT `resources` FROM `modx_memoryList_stats` WHERE `session` = '" . $session . "'"));
$list = $listResources['resources'];
$delete = $_POST['resource']; //Inhalt der Checkboxen
}
if ($_POST['managePages']) {
$deleteString = implode(',',$delete);
$deleteArray = explode(',', $deleteString);
if ($deleteString != 0) {
if ($user != 0) {
// Finde und Lösche
$listResources = mysql_fetch_assoc(mysql_query("SELECT `resources` FROM `modx_memoryList_stats` WHERE `user` = '" . $user . "'"));
$listResourcesNum = $listResources['resources'];
$listResourcesArray = explode(',', $listResourcesNum);
foreach ($deleteArray as $value) {
unset($listResourcesArray[array_search($value, $listResourcesArray)]);
// Index lückenlos wiederherstellen
$listResourcesArray = array_values($listResourcesArray);
}
$comma_separated = implode(",", $listResourcesArray);
mysql_unbuffered_query("UPDATE `modx_memoryList_stats` SET `resources` = '" . $comma_separated . "' WHERE `user` = '" . $user . "'");
$listResources = mysql_fetch_assoc(mysql_query("SELECT `resources` FROM `modx_memoryList_stats` WHERE `user` = '" . $user . "'"));
$list = $listResources['resources'];
}
else {
// Finde und Lösche
$listResources = mysql_fetch_assoc(mysql_query("SELECT `resources` FROM `modx_memoryList_stats` WHERE `session` = '" . $session . "'"));
$listResourcesNum = $listResources['resources'];
$listResourcesArray = explode(',', $listResourcesNum);
foreach ($deleteArray as $value) {
unset($listResourcesArray[array_search($value, $listResourcesArray)]);
// Index lückenlos wiederherstellen
$listResourcesArray = array_values($listResourcesArray);
}
$comma_separated = implode(",", $listResourcesArray);
mysql_unbuffered_query("UPDATE `modx_memoryList_stats` SET `resources` = '" . $comma_separated . "' WHERE `session` = '" . $session . "'");
$listResources = mysql_fetch_assoc(mysql_query("SELECT `resources` FROM `modx_memoryList_stats` WHERE `session` = '" . $session . "'"));
$list = $listResources['resources'];
}
}
}
mysql_close();
// Templating
$tpl = $modx->getOption('tpl',$scriptProperties,'tplManagePage');
// Aufstellung der Placeholders:
$modx->setPlaceholder('pages', $list);
// Ausgabe des Chunks
$output = $modx->getChunk($tpl);
return $output;
?>
Benutzung: Placeholder, Chunks und Funktionen
Viele Placeholder hat das Snippet nicht. Es gibt lediglich einen Placeholder namens [[+pages]], der eine kommaseparierte Liste ausgibt. Damit hängt auch alles zusammen, denn genau diese Liste ist ein gefundenes Fressen für das Snippet getResources. Zunächst aber rufen wir den Manager einmal auf.
[[!memoryListManage? &tpl=`memoryListManage`]]
Zum Schluss folgt die Erstellung des Chunks "memoryListManage":
<form action="[[~[[*id]]]]" method="post"> <ul> [[!getResources? &parents=`` &resources=`[[+pages]]` &tpl=`memoryListManageOutput` &includeTVs=`1` &processTVs=`1` &tvPrefix=`` &depth=`10` &limit=`10` &sortBy=`publishedon` &sortdir=`DESC`]] </ul> <input type="submit" name="managePages" title="Liste bereinigen" value="Löschen" /> </form>
Man beachte, dass man noch den Chunk memoryListManageOutput, der im getResources aufruft verwendet wird, erstellen sollte. In diesem kann man sämtliche Informationen der jeweiligen Seiten verwenden. Damit ist der Darstellung keine Grenzen gesetzt.












