pagemaster

Pagemaster Dokumentation

Allgemeines

Pagemaster ist die Neuentwicklung von Pagesetter auf Grundlage aller vom Zikula 1.0 Core zur Verfügung gestellten Funktionalitäten.

Eine Pagemaster Publikation ist eine frei zu definierende Datenstruktur die man mittels diverser Templates sowohl auf der Eingabe als auch auf der Ausgabeseite seinen Anforderungen vollständig anpassen kann. Es ist sowohl für kleine Änderungshistorien (Changelog) als auch für komplexe über mehrere Publikationen verteilte Anwendungen geeignet. Der Phantasie des Anwenders sind hier kaum Grenzen gesetzt, Fehlen spezielle Funktionen kann das System durch Plugins erweitert werden.

Im folgenden möchten wir hier eine vollständige Dokumentation der Funktionen so wie auch einige Beispiel-Publikationen von der Idee bis zur vollständigen Umsetzung beschreiben.

Funktionen

  • vollständige Unterstützung von Kategorien
  • Formulare mittels pnForm
  • Arbeitsabläufe mittels Workflows
  • eigene Templates für Eingabe und Ausgabe

Terminologie

Um diese Dokumentation, wie auch Beiträge in Foren zu verstehen, ist es zu empfehlen sich folgende Begriffe einzuprägen.

pagesetter
Vorgänger von pagemaster. Ähnlich von der Funktionalität, verwendet jedoch keine Zikula Features (pnForms, Categories usw.)

Publicationtype
Kurz pubtype. Ein Publication Type umfasst definiert eine Art von Content (z.b. Bücher, Blog, News usw). Ein Publication type ist eindeutig und wird durch die "pid" definiert. Ein pubtype enthält versch. Konfigurationselement wie auch die enthaltenen Felder (z.B. Buchtitel, Author usw.).

Publication
Eine Publication ist Content Element eines Publication Types und steht im Verhältnis n:1 / Publication:Publication Type.

Voraussetzungen & aktuelle Version

Installation

Die Installation von Pagemaster läuft wie bei allen ZIKULA Modulen ab. Eine detailierte InstallationsAnleitung gibt es hier.

Administration

Konfiguration

Das Anlegen eines neuen Publication Types beinhaltet folgende Schritte: 1. Erstellen eines Publication Types.
2. Hinzufügen der Publication Fields.
3. Generieren der DB Tabellen
4. Erstellen der Output Templates (optional)
5. Erstellen der Input Teemplates (optional)

Filter

Ein Filter kann jeweils nur einen Publication Type angewendet werden und generiert immer eine Publication Liste. Es kann nach jedem Feld eines Publication Types gefiltert werden. Der Filter Mechanismus basiert auf FilterUtil?, welches ab Zikula 2.0 Teil des Cores sein wird. Bis dahin wird dieses Utitlity mit pagemaster mitausgeliefert. Die genau Syntax eines Filter Strings ist dem FilterUtil? Manual zu entnehmen.

Ein Filter String kann an verschiedene Einstiegspunkte übergeben werden.

1. Url index.php?module=pagemaster&tid=1&filter=Buch_Titel:eq:Bibel

2. User Function Diese Function gibt Html zurück $

pubHTML = pnModFunc( 'pagemaster','user','main',array('tid'            => 1,
                                                       'filter'         => 'Buch_Titel:eq:Bibel'));

3. UserApi? Function Diese Function gibt die Publication als Array zurück

$pub = pnModApiFunc( 'pagemaster','user','main',array('tid'            => 1,
                                                   'filter'         => 'Buch_Titel:eq:Bibel'));

4. Smarty Plugin

<!--[pnmodapifunc modname="pagemaster"  type="user" func="main" tid="1" filter="Buch_Titel:eq:Bibel"]-->

Rechteverwaltung

Templates

Das ganze Modul basiert auf pnRender. Dem User wird die Möglichkeit zur Verfügung gestellt die Eingabemasken, sowie auch die Ausgabemasken selbst zu erstellen. Dazu bestehen zwei Unterverzeichnisse, es empfielt sich für eigene Templates folgende Pfade anzulegen: config/templates/pagemaster/output und config/templates/pagemaster/input. Pagemaster kann auch ohne das Anlegen eigener Templates benutzt werden, es werden dann automatisch rudimentäre Templates für input und output generiert.

Pagemaster unterscheided grundsätzlich zwischen zwei Anzeigearten, der Listenansicht und der Einzelansicht. In der Publication Type Konfiguration kann man definieren, welche Publication Types welche Templates verwenden. Dies ermöglicht es für versch. Types das gleiche Template zu benützen. Diese Einstellung gelten als Default und können durch URL oder API Parameter übersteuert werden. Template Files müssen zwingend immer mit "viewpub_" und "publist_" beginnen.

Das Admin Tool unterstützt den Template Designer bei der Erstellung, man kann sich eine Vorlage für das HTML generieren lassen, welches alle erstellten Felder bereits enthält: "pnForm Code anzeigen" = Input Templates "PubList? Code anzeigen" = publist_ Templates "Kompletten Code anzeigen" = viewpub_ Templates Ausserdem werden einem im Admin Tool nützliche Hinweise eingeblendet wo man diese Files speichern muss.

Plugins

Pagemaster unterscheidet zwischen zwei verschiedenen Arten von Plugins. Normale pnRender Plugins und Plugins welche jeweils einem Publication Field entsprechen.

Publication Field Plugins

Diese Plugins sind immer Child Klassen einer pnForm Klasse und beginnen immer mit function.pmform* Jedes Plugin entspricht genau einem Publication Field Type (z.b. String, Liste, Date, Image usw.). Diese Architektur erlaubt es pagemaster flexibel zu erweitern ohne in den Code einzugreifen. Alle Paramter der Parent Klasse des pnForms objektes stehen natürlich zur Verfügung und könnne beim Aufruf verwendet werden. Es lohnt sich das jeweilige pnForm Plugin (system/pnForm/plugins) anzuschauen, da diese jeweils sehr mächtig sind. Es kann z.B. einem Date Field mitgegeben werden, welches Eingabeformat verwendet werden soll. Falls man mit pagemaster anspruchsvolle Input Masken generieren möchte, ist in jedem Fall zuerst die pnForm Dokumentation zu konsultieren! Diese Plugins können nur in Input Templates verwendet werden.

pnRender Plugins

Bei diesen Plugins handelt es sich um normale pnRender Plugins, welche in jedem Template verwendet werden können. Momentan existieren folgende Plugins in Pagemaster category_browser Das Plugin hat folgende Parameter:

 * @param $args['tid'] tid
 * @param $args['field'] fieldname of the pubfield which contains category
 * @param $args['template'] optional filename of template
 * @param $args['count'] optional count available pubs in this category
 * @param $args['multiselect'] are more selection in one browser allowed (makes only sense for multilist fields)
 * @param $args['globalmultiselect'] are more then one selections in all available browsers allowed
 * @param $args['togglediv'] this div will be toggled, if at least one entry is selected (if you wanna hidde cats as pulldownmenus)
 * @param $args['cache'] enable cache
 * @param $args['assign'] optional
<!--[category_browser cache=true multiselect=false globalmultiselect=true field="_SYS_COUNTRY_1" tid=6 count=1]-->

get_workflow_state

<!--[get_workflow_state id=234 tid=1 assign=ws]-->

hitcount Falls man die anzahl Zugriffe auf eine Publication zählen möchte, ist folgendes Plugin aufzurufen.

<!--[hitcount pid=$core_pid tid=1]-->

Verwendung von Kategorien(Rohfassung aus Forum)

wäre doch schade wennd as verloren ginge:  http://support.zikula.de/module-CMS_Support_Forum-viewtopic-topic-29151-start-0.htm#pid134254

Das ganze funktioniert so: Ein neues PublicationField? auswählen und multilist oder list als Typ selektieren. Dann müsste ein grünes Config Icon erscheinen, nach einem Klick darauf solltest Du die gewünschte Kategorie auswählen können. Es werden nur Kategorien angezeigt, welche im Richten Ast liegen, der ist irgendwie modules/pagemaster/list oder so. Sprich Du must dort zuerst über das Modul Cateogories Deine gewünschte Liste anlegen. Damit das grüne Config Icon richtig funktioniert, musst Du jedoch die JS library LivePipe? (oder so) installieren, sprich ins Javascript Verz. kopieren. Falls die noch fehlt, dann zeigt dir Pagemaster dies mit einer gelben Waring Box oben im admin tool an (mit einer Beschreibung was Du zu tun hast.)

Das "Category Browser Plugin" kommt erst später bei der Anzeige zum tragen, es generiert einen Linkbaum mit allen Kategorien, wo man direkt draufklicken kann und die entsprechenden Pubs erhält.

"Damit ein Modul überhaupt etwas von den erstellten Kategorien weis, muss man dem Modul einen Zweig der Kategorien zuweisen. Dieses wird mit dieser Rubrik gemacht." Dies ist grundsätzlich richtig und wie das Category Modul gedacht ist. Leider war mir das bei der Entwicklung nicht bewusst und ich habe die Verlinkung fix über den sogenanten Path implementiert. Eine zuweisung im Categories Modul ist also nicht nötig, hat auch überhaupt keinen Einfluss auf das Verhalten.

Style

Blöcke

Tipps & Tricks

Credits

Anhang

 
 
Powered by Trac
Design by Arcsin