Entwicklerhandbuch

Werbung
Entwicklerhandbuch
Stand 09.04.06
Entwicklerhandbuch
Inhaltsverzeichnis
1. Die Einführung..................................................................................................................5
1.1. Impressum................................................................................................................5
1.2. Über EGOTEC®.......................................................................................................5
1.3. Über das Handbuch..................................................................................................5
2. Überblick..........................................................................................................................6
2.1. Grundstruktur............................................................................................................6
2.2. Schnittstellen.............................................................................................................6
3. Das Basisskript.................................................................................................................7
4. Erstellen eines neuen Seitentyps.....................................................................................9
4.1. Bekanntgabe des neuen Typs an das System..........................................................9
4.2. Die Ansicht..............................................................................................................10
4.2.1. Ansichts-Template............................................................................................10
4.2.2. Ansichts-Skript.................................................................................................10
4.3. Der Adminbereich....................................................................................................10
4.3.1. Allgemeines Verhalten.....................................................................................10
4.3.2. Reiter................................................................................................................11
4.3.2.1. Den Informationsreiter erweitern...............................................................11
4.3.2.2. Eigene Reiter erstellen.............................................................................12
4.3.2.3. Globale Reiter erstellen............................................................................13
4.3.2.4. Beispiel : Ein zusätzlicher WYSIWYG-Editor...........................................13
4.3.3. Einbindung auf dem Desktop...........................................................................13
4.3.4. Änderungen im Menü......................................................................................14
5. Weiterführende Möglichkeiten........................................................................................16
5.1. Temporäre Änderungen im Menü............................................................................16
6. Konfigurationen..............................................................................................................18
6.1. Systemweite Konfigurationen..................................................................................18
6.1.1. Eigene Konfigurationen ermöglichen...............................................................18
6.1.2. Das Konfigurations-Template...........................................................................18
6.1.3. Das Konfigurations-Skript................................................................................20
7. API..................................................................................................................................21
7.1. Page........................................................................................................................21
7.1.1. Ausführliche Beschreibung..............................................................................21
7.1.2. Öffentliche Methoden.......................................................................................21
7.1.2.1. getChildren...............................................................................................21
7.1.2.2. getDescendants........................................................................................21
7.1.2.3. getParents................................................................................................22
7.1.2.4. getAncestors.............................................................................................22
7.1.2.5. getSiblings................................................................................................23
7.1.2.6. getUrl........................................................................................................23
7.1.2.7. hasRights..................................................................................................23
7.1.3. Methoden zur Bearbeitung...............................................................................24
7.1.3.1. update.......................................................................................................24
7.1.3.2. newChild...................................................................................................24
7.1.3.3. addChild...................................................................................................25
7.1.3.4. linkTo........................................................................................................25
7.1.3.5. unlinkFrom................................................................................................25
7.1.3.6. move.........................................................................................................25
7.1.3.7. delete........................................................................................................25
2
EGOTEC® 4
7.1.4. Öffentliche Attribute.........................................................................................26
7.1.4.1. field...........................................................................................................26
7.1.4.2. extra..........................................................................................................26
7.1.4.3. a_user.......................................................................................................26
7.1.4.4. c_user.......................................................................................................26
7.2. Page_Iterator..........................................................................................................27
7.2.1. Ausführliche Beschreibung..............................................................................27
7.2.2. Öffentliche Methoden.......................................................................................27
7.2.2.1. numRecords.............................................................................................27
7.2.2.2. nextPage..................................................................................................27
7.2.3. Methoden für das Interface Iterator.................................................................27
7.2.3.1. current......................................................................................................27
7.2.3.2. key............................................................................................................27
7.2.3.3. next...........................................................................................................27
7.2.3.4. rewind.......................................................................................................28
7.2.3.5. valid..........................................................................................................28
7.2.4. Öffentliche Attribute.........................................................................................28
7.2.4.1. page..........................................................................................................28
7.3. Site..........................................................................................................................29
7.3.1. Ausführliche Beschreibung..............................................................................29
7.3.2. Öffentliche Methoden.......................................................................................29
7.3.2.1. getRoot.....................................................................................................29
7.3.2.2. getPage....................................................................................................29
7.3.2.3. getPageId.................................................................................................30
7.3.2.4. getPages..................................................................................................30
7.3.2.5. getErrorPage............................................................................................30
7.3.2.6. getPageUrl................................................................................................31
7.3.2.7. getUrl........................................................................................................31
7.3.2.8. getMediaSite.............................................................................................31
7.3.2.9. getMediaUrl..............................................................................................31
7.3.2.10. getLanguages.........................................................................................31
7.3.2.11. setLanguage...........................................................................................32
7.3.2.12. getSkins..................................................................................................32
7.3.3. Öffentliche Attribute.........................................................................................32
7.3.3.1. name.........................................................................................................32
7.3.3.2. site............................................................................................................32
7.3.3.3. skin...........................................................................................................32
7.3.3.4. language...................................................................................................32
7.4. Smarty.....................................................................................................................33
7.4.1. Ausführliche Beschreibung..............................................................................33
7.4.2. Öffentliche Methoden.......................................................................................33
7.4.2.1. assign.......................................................................................................33
7.4.2.2. fetch..........................................................................................................33
7.5. Ego_Sql...................................................................................................................34
7.5.1. Ausführliche Beschreibung..............................................................................34
7.5.2. Öffentliche Methoden.......................................................................................34
7.5.2.1. Konstruktor...............................................................................................34
7.5.2.2. select........................................................................................................34
7.5.2.3. nextRecord...............................................................................................35
3
Entwicklerhandbuch
7.5.2.4. numRecords.............................................................................................35
7.5.2.5. insert.........................................................................................................35
7.5.2.6. replace......................................................................................................36
7.5.2.7. update.......................................................................................................36
7.5.2.8. delete........................................................................................................36
7.5.3. Methoden für das Interface Iterator.................................................................37
7.5.3.1. current......................................................................................................37
7.5.3.2. key............................................................................................................37
7.5.3.3. next...........................................................................................................37
7.5.3.4. rewind.......................................................................................................37
7.5.3.5. valid..........................................................................................................37
7.6. Auth.........................................................................................................................38
7.6.1. Ausführliche Beschreibung..............................................................................38
7.6.2. Öffentliche Methoden.......................................................................................38
7.6.2.1. hasPermission..........................................................................................38
7.6.2.2. checkPermission......................................................................................38
7.6.2.3. reset..........................................................................................................38
7.6.2.4. translate....................................................................................................39
7.6.2.5. validate.....................................................................................................39
4
EGOTEC® 4
1. Die Einführung
1.1. Impressum
EGOTEC GmbH 1999-2006. Alle Rechte vorbehalten. Alle Angaben zum Handbuch
wurden sorgfältig erarbeitet, erfolgen jedoch ohne Gewähr.
Handbuch Auflage April 2006
Kein Teil des Handbuchs oder Programms darf in irgendeiner Form (Druck, Fotokopie, Mikrofilm oder in einem anderen Verfahren) ohne unsere vorherige schriftliche Genehmigung reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt
oder verbreitet werden.
Wir weisen darauf hin, dass die im Buch verwendeten Bezeichnungen und Markennamen
der jeweiligen Firmen im allgemeinen Warenzeichen-, Marken- oder Patentschutz unterliegen.
1.2. Über EGOTEC®
EGOTEC® ist ein Programm mit neuester Softwaretechnik, für dessen Entwicklung wir
keinen Aufwand und keine Zeit gescheut haben. Ganz besondere Aufmerksamkeit wurde
auf die einfache und komfortable Bedienung gelegt. Umfassende Kenntnisse in der Internettechnologie setzt das Programm nicht voraus. Die Bedienoberfläche ist an gängige
Standardsoftware angelehnt, wodurch eine geringe Einarbeitungszeit garantiert ist. Sie
werden während der Arbeit durch die kontextsensitive Hilfe unterstützt.
Wir wünschen Ihnen nun viel Spaß mit dem Programm. Sollten Sie Fragen, Anregungen
oder Wünsche haben, teilen Sie uns diese mit.
1.3. Über das Handbuch
Tastatureingaben werden wie folgt dargestellt:
<Return>
=
Einfaches Betätigen der Eingabe- oder Enter-Taste
<Strg>+<R>
=
Drücken und Halten der Taste „Steuerung“ (evtl. auch „Control“
oder „Ctrl“) und gleichzeitiges Drücken der Taste „R“
In diesem Handbuch werden folgende Symbole verwendet, um Sie auf wichtige Dinge hinzuweisen:
Für den Benutzer wichtige Hinweise sind in einem grauen Kasten geschrieben.
Mit einem Dreieck mit Ausrufzeichen gekennzeichnete Hinweise sollten unbedingt beachtet werden.
5
Entwicklerhandbuch
2. Überblick
2.1. Grundstruktur
EGOTEC
Content, Multimedia, Download, Design, Skripts, Schnittstellen
PHP 5
Schnittstellen zu XML, FTP, PDF, IMAP, POP, LDAP, Flash, ActiveX
Server Sprachen
PHP, Java,
Servlets, ASP,
uvm.
Web-Server
Apache,
MS IIS,
iPlanet
uvm.
Datenbanken
MySQL, Oracle, DB2,
Sybase, PostgreSQL,
MSSQL, dBase,
Informix, SQLite, ODBC
Betriebsystem
Linux, Solaris, AIX, andere Unixe, Win95, WinNT, WinXP, NetWare
Abbildung 1: Informationsmanagement
2.2. Schnittstellen
Durch Verwendung der Skriptsprache PHP5 ist EGOTEC® sehr flexibel. Es existieren so
Schnittstellen zu vielen Skriptsprachen, Datenbanken und allen Internet Standards.
EGOTEC® ist Komponenten basiert aufgebaut und lässt sich beliebig erweitern.
Es können so Schnittstellen zu beliebigen Systemen erstellt werden. Die einfachste Version einer Schnittstelle wird mit Hilfe eines FTP Uploads und einer Textdatei realisiert, die
dann von einer eigens dafür erstellten Komponente verarbeitet wird.
Durch die Verwendung von PHP sind aber auch höhere Schnittstellen z.B. zu Datenbanken (MySQL, MS SQL, Oracle, DB2, Sybase, PostgreSQL, dBase, Informix, InterBase, Ingres II, mSQL, ODBC, SESAM, ...) und anderen Systemen möglich (Cybercash, XML,
XSLT, FTP, PDF, Verisign, Hyperwave, ICAP, IMAP, POP3, NNTP, SMTP, LDAP, Flash,
Shockwave, mnoGoSearch, SSL, Corba, YAZ, YP/NIS, ...).
Auch können SOAP und XML-RPC Schnittstellen angesprochen werden. Weiterhin ist
eine Schnittstelle zu Java/JavaBeans/JavaServlets möglich. Auf Windows Systemen kann
zusätzlich noch COM/DCOM/ActiveX als Schnittstelle fungieren. Über einen eigens entwickelten COM/DLL Wrapper können auch beliebige DLLs eingebunden werden.
Die Einbindung können Sie selbst übernehmen. Die Schnittstellenprogrammierung ist dokumentiert und das komplette EGOTEC® liegt Ihnen bei Lizenzerwerb im Quellcode vor.
Wir übernehmen gerne die Erstellung Ihrer Schnittstellen an Hand eines Pflichtenhefts.Es
wurde unter anderem eine Schnittstelle zu einer Hotelverwaltungssoftware realisiert, so
dass online Buchungen vorgenommen werden. Ein weiteres Beispiel ist ein AuftragsTracking System mit dem der Kunde Passwort geschützt den aktuellen Stand seiner Aufträge verfolgen kann.
6
EGOTEC® 4
3. Das Basisskript
Das Hauptskript einer Site ist die index.php im Verzeichnis site/SiteName.
Die meisten grundlegenden Funktionen einer Seite lassen sich allerdings auch schon über
die entsprechenden Templates steuern, so dass Sie unter Umständen komplett auf eine
index.php verzichten können. Müssen Sie aber bestimmte Aktionen für alle Seiten des
Auftritts realisieren, ist die index.php die beste Stelle, um solche Skripte einzubinden.
Die index.php unserer Demo-Site sorgt z.B. dafür, dass bei Seiten mit leerem Inhalt direkt
der Inhalt der ersten untergeordneten Seite angezeigt wird:
1. <?php
2. if (
3.
(strlen($page->field['content'])<14) &&
4.
($page->field['type']=='page')
5. )
Zunächst wird geprüft. ob der Inhalt der aktuellen Seite weniger als 14 Zeichen enthält,
und die Seite vom Typ page ist.
6. {
7.
$child = $page->getChildren();
Wenn dies zutrifft werden die Kinder der Seite ausgelesen.
8.
9.
10.
11.
12.}
if ($child->nextPage())
{
$page = $child->page;
}
Falls ein Kind existiert, wird die aktuelle Seite mit der Kind-Seite überschrieben.
Außerdem können in der index.php auch weitere allgemein gültige Skripte eingebunden
werden.
13.require('emotion.php'); // Skript für Emotionbilder.
Der Pfad der Datei ist dabei relativ zum aktuellen Site-Verzeichnis zu sehen.
In der Demosite bieten wir außerdem noch die Möglichkeit, einen zweiten Inhaltsbereich
einzubinden.
je nach Seitentyp können hier unterschiedliche Templates zum Einsatz kommen.
Auch dieser Skriptteil wird in die index.php integriert.
14.$template_file =
15.
$GLOBALS['egotec_conf']['skin_dir']
16.
.$site->skin.'/'
17.
.$page->field['type'].'/body_2.html';
In Abhängigkeit des Seitentyps wird zusätzlich eine Template-Datei für einen zweiten Inhaltsbereich gewählt.
18.if (!file_exists($template_file))
19.{
20.
$template_file =
21.
$GLOBALS['egotec_conf']['skin_dir']
22.
.$site->skin.'/body_2.html';
23.}
Falls für den aktuellen Typ keine Template-Datei für einen zweiten Inhaltsbereich existiert,
wird auf ein Standard-Template zurückgegriffen.
24.if (file_exists($template_file))
25.{
26.
$smarty->assign('typeTemplate2', $template_file);
27.}
28.?>
7
Entwicklerhandbuch
Wenn entweder das Typenspezifische- oder das Standardtemplate existiert, wird dieses
dem Haupttemplate zugewiesen und kann dann vom Designer entsprechend eingebunden werden.
8
EGOTEC® 4
4. Erstellen eines neuen Seitentyps
Der Seitentyp legt fest, welches Design eine Seite hat und wie diese auf der Homepage
angezeigt wird.
Die Seitentypen, die innerhalb einer Site zur Verfügung stehen, ergeben sich aus den Typverzeichnissen im jeweiligen Siteverzeichnis.
Je Seitentyp werden dann unter Umständen noch weitere Dateien benötigt:
●
Ansichts-Template (siehe 4.2.1/ Seite 10)
●
Ansichts-Skript (siehe 4.2.2/ Seite 10)
●
Admin-Templates
●
Admin-Skripte
4.1. Bekanntgabe des neuen Typs an das System
Durch das Anlegen eines neuen Verzeichnisses im jeweiligen Siteverzeichnis steht dem
System ein neuer Seitentyp zur Verfügung. In dem Typenverzeichnis müssen Sie eine Datei mit Namen type.ini anlegen. Diese legt fest, mit welchem Namen dieser Seitentyp in
der Drop-Down-Liste im Admin-Bereich angezeigt wird.:
1. title = Startseite
Der title ist dabei die Bezeichnung des Seitentyps in der Drop-Down-Liste.
Einige Module (wie z.B. das News-Modul) bestehen aus mehreren Seitentypen. Diese
werden in einem gemeinsamen Unterverzeichnis verwaltet. Jeder News-Seitentyp entspricht hierbei wieder einem untergeordneten Verzeichnis.
Falls die Kategorie nur der Strukturierung dient, aber keine Seite mit einem solchen Seitentyp erzeugt werden soll, so setzt man in der Seitentypdatei den Wert inactive auf true.
Die Kategorie erscheint dann in der Auswahlliste für den Seitentyp einer Seite, kann aber
nicht ausgewählt werden.
/news/type.ini
1. title = Nachrichten
2. inactive = true
/news/list/type.ini
1. title = Übersicht
/news/entry/type.ini
1. title = Eintrag
Eine solche Verzeichnisstruktur mit entsprechenden type.ini-Dateien führt im Adminbereich zu folgender Drop-Down-Liste
Nachrichten
Nachrichten/Übersicht
Nachrichten/Eintrag
Nachrichten ist dabei nicht auswählbar.
9
Entwicklerhandbuch
4.2. Die Ansicht
Der Ansichtsbereich spiegelt den Teil des Auftritts wieder, den ein normaler Besucher bei
Eingabe der URL zu Gesicht bekommt.
Zunächst wird für jede Seite die aufgerufen wird, das Basisskript eingebunden und abgehandelt (siehe 3/ Seite 7)
4.2.1. Ansichts-Template
Das jeweilige Ansichts-Template ergibt sich aus dem internen Typennamen. Das Template
zu einer Seite vom Typ page heißt z.B. skin/SkinNam e/page/body.htm l. Dementsprechend
heißt das Template für Seiten vom Typ news/entry skin/SkinNam e/news/entry/body.htm l.
Einzelheiten zum Erstellen von Templates entnehmen Sie bitte dem Designerhandbuch.
4.2.2. Ansichts-Skript
Bei den meisten Seitentypen ist es möglich, den Großteil der Funktionalität bzw. die gesamte Funktionalität über Smarty-Plugins zu realisieren. Falls diese Möglichkeiten nicht
ausreichen sollten, können Sie je Seitentyp weitere Skripte einbinden, die z.B. neue Platzhalter zur Verfügung stellen, oder Aktionen realisieren.
Ausgangspunkt hierzu ist die index.php im jeweiligen Typen-Verzeichnis. Bei Seiten vom
Typ news/list ist dies z.B. die site/SiteNam e/news/list/index.php. (siehe / Seite )
4.3. Der Adminbereich
Bei den meisten Seitentypen werden Sie zusätzliche Eingabefelder oder Optionen im Adminbereich benötigen. Um diese zu realisieren, müssen Sie die Admin-Skripte des jeweiligen Seitentyps bearbeiten / erstellen
4.3.1. Allgemeines Verhalten
Das allgemeine Verhalten eines Seitentyps legen Sie in der index.php im Adminverzeichnis des jeweiligen Typs fest.
Hier bestimmen Sie z.B. von welchem Typ Seiten sein sollen, die unterhalb dieser Seite
erstellt werden, ob Seiten von diesem Typ in den Cache mit aufgenommen werden sollen,
usw.
1. <?php
2. $page->field['children_order'] = 'desc';
Über das $page-Objekt haben Sie direkten Zugriff auf die aktuelle Seite (siehe / Seite ).
Werte, die Sie hier setzen, werden beim Speichern der Seite in die DB übernommen.
3. $new_child['type'] = 'events/entry';
4. $new_child['nav_hide'] = 1;
5. ?>
Mit dem $new_child-Array können Sie alle Werte einer potentiellen Unterseite mit Standardwerten vorbelegen.
10
EGOTEC® 4
4.3.2. Reiter
Zur besseren Übersicht sind die einzelnen Eingabemöglichkeiten der Seiten auf verschiedene Reiter verteilt (Information, Inhalt, usw.). Je Seitentyp können Sie bestimmen, welche Reiter angezeigt werden sollen und wie diese beschriftet sind.
Einige Reiter (Meta, Navigation, usw.) werden unabhängig von den Angaben in der
navigation.ini eingebunden. Diese können Site-Spezifisch in der Datei site/SiteNam e/adm in/navigation.ini angepasst werden.
Dazu benötigen Sie im jeweiligen Admin-Verzeichnis des Seitentyps die Datei navigation.ini :
1.
2.
3.
4.
5.
6.
7.
[information]
url = info.php
title = Information
[content]
url = edit.php
title = Inhalt
Die navigation.ini besteht dabei aus mehreren Sektionen, die jeweils einen Reiter darstellen.
Zu jedem Reiter müssen die Werte url und title gesetzt werden.
1. [information]
2. url = info.php
3. title = Information
Jeder Seitentyp sollte zumindest über diesen Eintrag verfügen, damit Name, Titel und
Kurzbeschreibung bearbeitet werden können.
Um nun eigene Eingabefelder zu definieren, können Sie zum einen den Reiter „Information“ erweitern (siehe 4.3.2.1/ Seite 11) oder eigene Reiter erstellen (siehe 4.3.2.2/ Seite
12).
4.3.2.1. Den Informationsreiter erweitern
Wenn nur wenige zusätzliche Eingabefelder benötigt werden ist es ratsam, auf einen
eigenen Reiter zu verzichten, und statt dessen einfach den Informationsreiter entsprechend zu erweitern. Dazu genügt es, im Admin-Verzeichnis des entsprechenden Typs die
navigation.ini zu erweitern:
1. [information]
2. url = “info.php?tpl_name=information.html“
3. title = Information
Dem Standardinformationsreiter wird mit dem Parameter tpl_nam e mitgeteilt welches
Template
zusätzlich
zum
Informationsreiter
angezeigt
werden
soll.
Das entsprechende Template muss dann im Admin-Verzeichnis des Seitentyps bereit gestellt werden:
1. <form name="extra">
2. <div align="center">
3. <table class="table">
4. <tr>
5.
<td colspan="2" class="cell">
6.
<table border="0" cellspacing="1" cellpadding="4" class="table">
7.
<tr>
8.
<td>Mein eigenes Eingabefeld</td>
9.
<td><input type=“text“ name=“extra[myField]“></td>
10.
</tr>
11. </table>
12. </td>
11
Entwicklerhandbuch
13. </tr>
14.</table>
15.</div>
16.<form>
Innerhalb des <form ></form >-Bereichs können nun beliebig viele weitere Eingabefelder
definiert werden. Im abschließenden Javascript-Bereich muss dann die Kommunikation
zwischen den einzelnen Frames im Admin-Bereich definiert werden:
17.{literal}
Der Block zwischen {literal} ... {/litearl} wird von Smarty nicht interpretiert, d.h. es können
keine Smartyfunktionen aufgerufen werden. Er wird bei Javascriptabschnitten eingesetzt,
um geschweifte Klammern verwenden zu können. Ohne den {literal}-Block versucht Smarty bei einer geschweiften Klammer eine Smartyfunktion aufzurufen, was zu einer Fehlermeldung führt. Wenn Sie also Javascript innerhalb eines Smarty-Templates benutzen denken Sie bitte immer daran {literal} einzusetzen.
18.<script language="javascript">
19.<!-20.function do_load_extra()
21.{
22. f = document.forms["extra"];
23. f.elements["extra[myField]"].value = window.parent.get_extra("myField");
24.}
Die Funktion do_load_extra() wird automatisch beim Aufruf des Informationsreiters gestartet. Mit der Zuweisung in Zeile 23 wird der Wert des neuen Eingabefelds in Zeile 9 mit
dem entsprechenden Wert aus der Datenbank ersetzt.
Die Datenbankstruktur wird hierbei nicht geändert. EGOTEC legt bei Bedarf entsprechende „Felder“ an. Über die Methoden get_extra und set_extra greifen Sie
per Javascript auf diese Einträge zu. Die Speicherung dieser Daten erfolgt in
einem objektorientierten Ansatz in der relationalen Datenbank.
25.
26.function do_unload_extra()
27.{
28. f = document.forms["extra"];
29. window.parent.set_extra("myField", f.elements["extra[myField]"].value);
30.}
31.//-->
do_unload_extra() wird automatisch beim Verlassen des Reiter ausgeführt. Die Zuweisung
in Zeile 29 stellt sicher, dass der Wert des Eingabefelds wieder zurück an den übergeordneten Frame übergeben wird, von dem aus er dann beim Speichern in die DB geschrieben wird.
32.</script>
33.{/literal}
4.3.2.2. Eigene Reiter erstellen
Bei größeren Mengen von Eingabefeldern oder Zugriff auf externe Daten, für die weitere
Skripte benötigt werden, können Sie auch eigene Reiter erstellen.
Dazu genügt es, die navigation.ini um einen entsprechenden Eintrag zu erweiten.
1. [meinReiter]
2. url =
extra.php?tpl_name=meinTyp/admin/meinReiter.html&script_name=meinTyp/admin/meinReiter.php
3. title = Mein Reiter
12
EGOTEC® 4
Als url rufen Sie dabei immer extra.php auf und übergeben mit den Parametern tpl_nam e
und script_nam e das zu verwendende Template bzw. Skript ausgehend vom Verzeichnis
site/SiteNam e/. Die Übergabe des Templates ist dabei zwingend erforderlich, ein Skript
muss nicht unbedingt übergeben werden.
Die Templatedateien werden dabei nach dem gleichen Prinzip wie der erweitere Informationsreiter erstellt (siehe 4.3.2.1/ Seite 11), allerdings müssen die Javascript-Funktionen
zur Kommunikation do_load() bzw. do_unload() benannt werden.
4.3.2.3. Globale Reiter erstellen
Sie haben auch die Möglichkeit Reiter für jeden Seitentyp anzubieten.
Dazu steht Ihnen eine separate navigation.ini im Verzeichnis site/SiteNam e/adm in zur
Verfügung.
Diese ist im gleichen Stil wie die typenspezifischen Navigations-Dateien zu behandeln.
4.3.2.4. Beispiel : Ein zusätzlicher WYSIWYG-Editor
Einen Reiter mit einem zusätzlichen WYSIWYG-Editor erstellen Sie z.B. indem Sie in der
entsprechenden navigation.ini folgende Zeilen einfügen :
1. [content_2]
2. url = "edit.php?content=content_2"
3. title = Inhalt 2
Der mit content übergebene Wert entsprocht dabei dem Platzhalter, über den der eingegebene Inhalt später im Template ausgegeben werden kann.
4.3.3. Einbindung auf dem Desktop
Unter Umständen kann es sinnvoll sein, bestimmte Seitentypen mit dem Desktop zu verknüpfen. Dafür stehen auf dem Desktop beliebig viele Zellen zur Verfügung, die typenspezifisch gefüllt werden können. Um einen neuen Typen mit dem Desktop zu verknüpfen benötigen Sie zunächst ein Template, dass den Inhalt der Desktop-Zelle darstellt.
Das Template erstellen Sie in der desktop.htm l im Admin-Verzeichnis des entsprechenden
Typs. Für Seiten vom Typ news/list heißt das entsprechende Template also site/SiteNam e/news/list/adm in/desktop.htm l heißen. Das entsprechende Template für Nachrichten-Übersichten könnte folgendermaßen aussehen:
1. <h2>{$news_page->field.name}</h2>
Entsprechend benötigen Sie dann noch ein passendes Skript, dass die Desktop-Zellen
füllt. Dieses erstellen Sie in der Datei desktop.php im Adminverzeichnis des Typs:
1. <?php
2. $news = $site->getPages(array('where' => "type='news/list'"));
Zunächst werden alle Seiten vom Typ news/list ausgelesen.
3. foreach ($news as $news_page)
4. {
In einer foreach-Schleife werden die gefundenen Seiten einzeln abgehandelt.
5.
$smarty->assign('news_page', $news_page);
Die gefundenen Seiten werden an das Template (desktop.htm l) übergeben, und dort weiter verarbeitet.
6.
$GLOBALS['cells'][] = $smarty->fetch(
13
Entwicklerhandbuch
7.
8.
$GLOBALS['egotec_conf']['site_dir']
.$GLOBALS['site']->name.'/news/list/admin/desktop.html');
Die Ausgabe des Templates wird dann dem globalen Array $GLOBALS['cells'] hinzugefügt.
9. }
10.?>
Die Ausgabe des Arrays $GLOBALS['cells'] auf dem Desktop übernimmt dann wieder das
System. Mit diesem einfachen Beispiel erzeugen Sie für jeden News-Bereich eine Zelle,
die den Namen des Bereich beinhaltet.
4.3.4. Änderungen im Menü
Die hier beschriebene Möglichkeit bezieht sich auf Menü-Änderungen, die über die
komplette Site hinweg gelten. Über die typenspezifische Adminskripte haben Sie
auch die Möglichkeit das Menü zu ändern, wenn Sei einen bestimmten Typ zum
Editieren öffnen, bzw. verlassen (siehe 5.1 / Seite 16).
Für einzelne Seitentypen haben Sie auch die Möglichkeit das oben liegende Menü von
EGOTEC an zu passen. Dafür benötigen Sie die Datei m enu.php im Adminverzeichnis
des jeweiligen Typs. Um Beispielsweise den Menüpunkt Datei->Neu so zu erweitern, dass
für jede Seite vom Typ news/list ein eigener Menüpunkt eingebunden wird erstellen Sie
die Datei site/SiteNam e/news/list/adm in/m enu.php.
11.<?php
12.$news = $site->getPages(array('where' => "type='news/list'"));
Zunächst werden wieder alle Seiten vom Typ news/list ausgelesen.
Durch den Aufruf über $site->getPages() wird bereist eine Rechteprüfung des aktuellen
benutzers durchgeführt.
13.if ($news->numRecords())
14.{ // Falls es mindestens einen Newsbereich gibt, so wird dieser in das Menü Datei->Neu
eingetragen.
15.
$GLOBALS['mainMenu']->enableItem("fileNew");
Der Menüpunkt Datei->Neu wird aktiviert.
16.
17.
18.
19.
20.
21.
22.
23.
24.}
$GLOBALS['mainMenu']->addItem("fileNew", array(
"id"
=> "fileNew-News",
"text" => "News",
"url"
=> "javascript:void(0)",
"target"
=> "_self",
"alt"
=> "News",
"active"
=> 1
));
Unterhalb von Datei->Neu (fileNew) wird einer neuer Menüpunkt mit einer eindeutigen ID
erzeugt.
25.foreach ($news as $news_page)
26.{ // Ein Untermenüpunkt pro Newsbereich in das Dateimenü einfügen.
27.
$GLOBALS['mainMenu']->addItem("fileNew-News", array(
28.
'id'
=> 'fileNew-'.$news_page->field['id'],
29.
'text' => $news_page->field['name'],
30.
'url'
=> get_url($GLOBALS['global_conf']['url_dir'].
31.
'bin/page/action.php', array(
32.
'site'
=> $site->name,
33.
'lang'
=> $site->language,
34.
'field[id]'
=> $news_page->field['id'],
35.
'new_child[type]'
=> 'news/entry',
36.
'new_child[nav_hide]' => 1,
37.
'action'
=> 'new_child'
38.
)),
14
EGOTEC® 4
39.
40.
41.
42.
43.
44.}
45.?>
'target'
'alt'
'Neuen
'active'
=> 'dlg',
=> $GLOBALS['auth']->translate(
Eintrag erstellen'),
=> 1
));
Für jeden Newsbereich wird ein neuer Menüpunkt mit dem Namen des Bereichs erstellt.
15
Entwicklerhandbuch
5. Weiterführende Möglichkeiten
5.1. Temporäre Änderungen im Menü
Wenn Sie in den MM-Bereich wechseln werden Sie feststellen, dass Ihnen hier abweichende Buttons in der Symbolleiste zur Verfügung stehen (z.B. Hochladen). Solche
Änderungen können Sie für jeden Seitentyp selbst vornehmen. indem Sie die index.php
im Adminverzeichnis des entsprechenden Typs anpassen.
1. <?php
2. /* Multimedia-Buttons */
3. $toolbarMenu->addMainRuler('media_ruler');
Zunächst wird ein Trenner angehängt, der die typspezifischen Buttons von den Standardbuttons trennt.
4. $toolbarMenu->addMainItem(array(
5.
"id"
=> "buttonMediaUpload",
6.
"text" => "<center>
7.
<img src='".$GLOBALS['egotec_conf']['url_dir'].
8.
"bin/admin_skin/egotec/img/upload_page.gif' border=0
9.
style='width: 24px; height: 24px'/><br/>".
10.
$GLOBALS['auth']->translate("Hochladen")."</center>",
11.
"url"
=> "javascript:void(0)",
12.
"target"
=> "",
13.
"alt"
=> $GLOBALS['auth']->translate("Hochladen"),
14.
"active"
=> 1
15.));
Dann wird ein neuer Menüpunkt/Button erzeugt.
16.
17.$toolbarMenu->addItem("buttonMediaUpload",array(
18.
"id"
=> "buttonMediaUpload_file",
19.
"text" => $GLOBALS['auth']->translate("Einzelne Media-Datei hochladen"),
20.
"url"
=> "javascript:window.dlg.multimedia_upload()",
21.
"target"
=> "",
22.
"alt"
=> $GLOBALS['auth']->translate("Einzelne Media-Datei hochladen"),
23.
"active"
=> 1
24.));
25.
26.$toolbarMenu->addItem("buttonMediaUpload",array(
27.
"id"
=> "buttonMediaUpload_webget",
28.
"text"
=> $GLOBALS['auth']->translate("Media-Datei via Webget hochladen"),
29.
"url"
=> "javascript:window.dlg.multimedia_webget()",
30.
"target"
=> "",
31.
"alt"
=> $GLOBALS['auth']->translate("Webget"),
32.
"active"
=> 1
33.));
34.
35.$toolbarMenu->addItem("buttonMediaUpload",array(
36.
"id"
=> "buttonMediaUpload_Zip",
37.
"text"
=> $GLOBALS['auth']->translate("ZIP-Archiv hochladen"),
38.
"url"
=> "javascript:window.dlg.multimedia_zip()",
39.
"target"
=> "",
40.
"alt"
=> $GLOBALS['auth']->translate("ZIP Hochladen"),
41.
"active"
=> 1
42.));
Anschließend werden dem neuen Button beliebige Untermenüpunkte zugeordnet
43.$toolbarMenu->removeMainItemFrom("media_ruler");
44.?>
Als letztes sorgt der Aufruf von rem oveMainItem From dafür, dass alle Einträge die dem
Trenner folgen beim Verlassen des Seite wieder aus dem Menü entfernt werden.
16
EGOTEC® 4
Man könnte sich auch vorstellen, dass bei einzelne Seitentypen der Button Neu bearbeitet
werden soll, falls z.B. bei Seiten vom Typ news/list über diesen Button immer Seiten vom
Typ news/entry erzeugt werden sollen. In einem solchen Fall würde man in die site/SiteNam e/news/list/adm in/index.php folgenden Codeabschnitt mit aufnehmen:
1. $toolbarMenu->editMainItem(array(
2.
"id"
=> "buttonNew",
3.
"text"
=> "<center>
4.
<img src='".$GLOBALS['egotec_conf']['url_dir'].
5.
"bin/admin_skin/egotec/img/new_page.gif'
6.
border=0 style='width: 24px; height: 24px'/><br/>".
7.
$GLOBALS["auth"]->translate("Neue Nachricht")."</center>",
8.
"url"
=> get_url($GLOBALS['global_conf']['url_dir'].
9.
'bin/page/action.php', array(
10.
'site'
=> $site->name,
11.
'lang'
=> $site->language,
12.
'field[id]'
=> $page->field['id'],
13.
'new_child[type]'
=> 'news/entry',
14.
'new_child[nav_hide]' => 1,
15.
'action'
=> 'new_child'
16.
)),
17.
"target"
=> "alive",
18.
"alt"
=> $GLOBALS["auth"]->translate("Neue Nachricht"),
19.
"active"
=> 1
20.
));
21.}
Über die Parameter new_child (Zeile 13,14) können Vorgaben für die neue Seite übergeben werden.
17
Entwicklerhandbuch
6. Konfigurationen
Über verschiedene Konfigurations-Dateien und Eingabemasken ist es möglich EGOTEC
für bestimmte Anforderungen anzupassen.
Wir unterscheiden hierbei zwischen systemweiten Konfigurationen, die im kompletten
System zur Verfügung stehen, und sitespezifischen Konfigurationen, die lediglich für den
aktuellen Mandanten gültig sind.
6.1. Systemweite Konfigurationen
Systemweite Konfigurationen werden zentral in der Datei /var/conf/conf.ini hinterlegt.
Änderungen der Konfiguration können direkt in dieser Datei, oder über die verschiedenen
Reiter im Adminbereich unter Verwaltung->Konfiguration vorgenommen werden.
Die eingestellten Konfigurationen stehen systemweit als globale Variablen zur Verfügung :
$GLOBALS['egotec_conf']['...']
6.1.1. Eigene Konfigurationen ermöglichen
Um eigene Eingabefelder für systemweite Konfigurationen bereit zu stellen benötigen Sie
zunächst ein eigenes Verzeichnis im lib-Pfad von EGOTEC. Der Name dieses Verzeichnisses kann dabei frei gewählt werden. Um sicher zugehen, dass es zu keinen Konflikten
mit zukünftigen EGOTEC-Modulen kommt, empfiehlt es sich aber ein eindeutiges Prefix
zu wählen.
In diesem Verzeichnis muss nun eine Datei mit Namen conf.ini erstellt werden :
1.
2.
3.
4.
5.
[admin_image]
name = Bildbearbeitung
title = Bildbearbeitung
template = admin/t/conf_image.html
script = admin/conf_image.php
Die erste Zeile sorgt dafür, dass im Konfigurationsmenü ein neuer Reiter erzeugt wird.
Möchten Sie ihre Konfigurationen auf mehrere Reiter verteilen können Sie mehrere Abschnitte in der conf.ini definieren, indem Sie die Zeilen 1 bis 5 entsprechend oft wiederholen.
nam e bestimmt die Beshriftung des Konfigurationsreiters.
title legt den title-Tag des Reiters fest.
tem plate gibt an welches Template für die Einagbe verwendet werden soll. Der Pfad geht
dabei vom libVerzeichnis aus.
script legt fest welches zusätzliche Skript zur Ausgabe benötigt wird. Der Pfad geht dabei
vom bin-Verzeichnis aus. Wird kein zusätzliches Skript benötigt kann man auf die Zeile mit
der script-Zuweisung verzichten.
6.1.2. Das Konfigurations-Template
Eine einfaches Konfigurationstemplate könnte wie folgt aussehen
1. <form name="extra">
2. <div align="center">
3. <table class="table">
4. <tr>
18
EGOTEC® 4
5.
<td colspan="2" class="cell">
6.
<table border="0" cellspacing="1" cellpadding="4" class="table">
7.
<tr>
8.
<td>
9.
{t}Indizierung aktivieren{/t}
10.
</td>
11.
<td>
12.
<input type="checkbox" name="active">
13.
</td>
14.
</tr>
15.
<tr>
16.
<td>
17.
{t}OpenOffice verwenden{/t}
18.
</td>
19.
<td>
20.
<input type="checkbox" name="use_oo">
21.
</td>
22. </tr>
23.</table>
24.</div>
25.</form>
Innerhalb eines Formulars werden verschiedene Eingabefelder für die Konfigurationen bereit gestellt.
26.{literal}
27.<script language="javascript">
28.<!-29.var f= document.forms['extra'];
30.function do_load_extra()
31.{
32.
active = window.parent.get_conf('openoffice','active');
33.
if (active == 1)
34.
{
35.
f.elements['active'].checked = "checked";
36.
} else {
37.
f.elements['active'].checked = "";
38.
}
39.
40.
use_oo = window.parent.get_conf('openoffice','use_oo');
41.
if (use_oo == 1)
42.
{
43.
f.elements['use_oo'].checked = "checked";
44.
} else {
45.
f.elements['use_oo'].checked = "";
46.
}
47.
48.
f.elements['server'] = window.parent.get_conf('openoffice','server');
49.
f.elements['server_path'] = window.parent.get_conf('openoffice','server_path');
50.}
Die Javascript-Funktion do_load_extra() wird automatisch bei Aufruf des Reiters gestartet
und muss vorhanden sein.
Innerhalb der Funktion werden die einzelnen Formularfelder mit den aktuellen Werten aus
der var/conf/conf.ini gefüllt.
Dazu können Sie auf die Funktion window.parent.get_conf() zurück greifen.
In Zeile 40 wird z.B. der Wert von $GLOBALS['egotec_conf']['openoffice']['use_oo'] ausgelesen.
51.function do_unload_extra()
52.{
53.
if (f.elements['active'].checked)
54.
{
55.
window.parent.set_conf('openoffice','active',1);
56.
} else {
57.
window.parent.set_conf('openoffice','active',0);
19
Entwicklerhandbuch
58.
}
59.
60.
if (f.elements['use_oo'].checked)
61.
{
62.
window.parent.set_conf('openoffice','use_oo',1);
63.
} else {
64.
window.parent.set_conf('openoffice','use_oo',0);
65.
}
66.
67.
window.parent.set_conf('openoffice','server',f.elements['server']);
68.
window.parent.set_conf('openoffice','server_path',f.elements['server_path']);
69.}
70.//-->
71.</script>
72.{/literal}
do_unload_extra() wird automatisch beim Verlassen des Reiters aufgerufen und stellt die
Änderungen zum Speichern bereit. Auch do_unload_extra() muss existieren.
Mit window.parent.set_conf() setzen Sie dabei bestimmte Werte.
6.1.3. Das Konfigurations-Skript
Optional können Sie auch ein Skript mit angeben, dass mit dem Template aufgerufen wird.
Im Skript können Sie z.B. mit Hilfe der Smarty-Engine zusätzliche Werte an das Template
übergeben.
20
EGOTEC® 4
7. API
7.1. Page
7.1.1. Ausführliche Beschreibung
Diese Klasse kapselt die Seiteneinträge der Datenbank und stellt unterstützende Methoden zur Verfügung.
7.1.2. Öffentliche Methoden
7.1.2.1. getChildren
Page::getChildren ( $ query = array(),
$ param = array()
)
Gibt alle Kinder zurück.
Gibt unter Benutzung von getPages alle Kinder der Seite als Page_Iterator-Objekt zurück.
Parameter:
$query array zusätzliche Abfrage Parameter
$param aray zusätzliche Parameter
Siehe auch:
Site::getPages
•
reverse true für eine Umkehr der Ergebnisliste
Rückgabe:
Page_Iterator
7.1.2.2. getDescendants
Page::getDescendants ( $ query = array(),
$ param = array()
)
Gibt alle Nachkommen zurück.
Parameter:
$query array
zusätzliche
Abfrage
Optionen
$param aray zusätzliche Parameter
Siehe auch:
Site::getPages
Rückgabe:
Page_Iterator
21
Entwicklerhandbuch
7.1.2.3. getParents
Page::getParents ( $ query = array(),
$ param = array()
)
Gibt alle Eltern zurück.
Gibt unter Benutzung von getPages alle Eltern der Seite als Page_Iterator-Objekt zurück.
Parameter:
$query array zusätzliche Abfrage Optionen
$param aray zusätzliche Parameter
Siehe auch:
Site::getPages
Rückgabe:
object Page_Iterator Objekt
7.1.2.4. getAncestors
Page::getAncestors ( $ query = array(),
$ param = array()
)
Gibt alle Vorfahren zurück.
Parameter:
$query array
zusätzliche
Abfrage
Optionen
$param aray zusätzliche Parameter
Siehe auch:
Site::getPages
• boolean topdown
umgekehrte Reihenfolge der Rückgabe
Rückgabe:
PageIterator Seiten
22
EGOTEC® 4
7.1.2.5. getSiblings
Page::getSiblings ( $ query = array(),
$ param = array()
)
Gibt alle Geschwister zurück.
Gibt unter Benutzung von getPages alle Geschwister der Seite als Page_Iterator-Objekt
zurück.
Parameter:
$query array zusätzliche Abfrage Parameter
$param aray zusätzliche Parameter
•
•
next Von der aktuellen Seite aus gesehen nur die "rechten" Geschwister anzeigen.
reverse Die Richtung ändern, also z.B. bei next=true die "linken"
Geschwister anzeigen.
Siehe auch:
Site::getPages
Rückgabe:
Page_Iterator
7.1.2.6. getUrl
Page::getUrl ( $ param = array() )
Eine Url auf diese Seite erzeugen.
Parameter:
$param array Die Parameter
$key=>$value.
in
der
Form
7.1.2.7. hasRights
Page::hasRights ( $ rights )
Prüft, ob der aktuelle Benutzer bestimmte Rechte auf dieser Seite hat.
Parameter:
$rights array Die zu prüfende Berechtigungen, z.B.:
●
edit – Bearbeitung
●
child – Neuen Untermenüpunkt erstellen
●
view – Ansicht
●
release - Freigabe
23
Entwicklerhandbuch
7.1.3. Methoden zur Bearbeitung
7.1.3.1. update
Page::update ( $ param )
Schreibt Änderungen in die DB und setzt eine Bestätigungsnachricht in $this->message.
Parameter:
$param array Ein assoziatives Feld mit den Inhalten der Seite. Es müssen nicht
alle Inhalte gesetzt sein.
field array
extra array
• rights array
Weitere Update Methoden:
•
•
Page::updateExtra ( $ extra )
Schreibt Änderungen im Bereich extra in die DB.
Achtung:
Der Parameter muss immer ALLE extra-Werte enthalten, nicht nur die neuen. Andernfalls
werden nicht angegebene extra-Felder gelöscht
Parameter:
$extra array
Page::updateField ( $ field )
Inhalte ändern.
Parameter:
$field array
Page::updateRights ( $ rights )
Rechte ändern.
Parameter:
$rights array Ein assoziatives Feld mit zwei Einträgen
•
rights
•
•
edit
=>
group_id,role_id;group_id,role_id
users
7.1.3.2. newChild
Page::newChild ( $ field = array(),
$ extra = array()
)
24
EGOTEC® 4
Erstellt einen neuen Eintrag als Kind der aktuellen Seite.
Gibt den neuen Eintrag als Page_Iterator-Objekt zurück
Parameter:
$field array Vorbelegungen für die Tabellenfelder
$extra array Vorbelegungen für die extra-Felder
Rückgabe:
$new_page Object
7.1.3.3. addChild
Page::addChild ( $ page_id = "", $ child_id )
7.1.3.4. linkTo
Page::linkTo ( $ id )
Verlinkt eine Seite an eine bestimmte Stelle.
$id ID der neuen übergeordneten Seite
Rückgabe:
null
7.1.3.5. unlinkFrom
Page::unlinkFrom ( $ rem ove_from )
Entfernt eine Seite aus einem Ast.
Parameter:
$rem ove_from string ID des Parent aus dem entfernt
werden soll
7.1.3.6. move
Page::move ( $ from ,
$ to
)
Verschiebt eine Seite an eine bestimmte Stelle.
Parameter:
$from integer ID der Seite bei der diese Seite entfernt werden
soll
$to
integer ID der Seite bei der diese Seite eingehängt
werden soll
Rückgabe:
null
7.1.3.7. delete
Page::delete ( )
Löscht eine Seite und deren Unterseiten.
Die Seite bleibt in der DB erhalten. Es wird lediglich ein Löschen-Flag gesetzt
25
Entwicklerhandbuch
7.1.4. Öffentliche Attribute
7.1.4.1. field
array Page::$field
Die Seitenihalte.
7.1.4.2. extra
array Page::$extra
Seitentypspezifische Zusatzfelder.
7.1.4.3. a_user
string Page::$a_user
Name des Benutzers, der diese Seite erstellt hat.
7.1.4.4. c_user
string Page::$c_user
Name des Benutzers, der die letzten Änderungen vorgenommen hat.
26
EGOTEC® 4
7.2. Page_Iterator
7.2.1. Ausführliche Beschreibung
Diese Klasse stellt für getPages, getChildren, ... einen Iterator zur Verfügung. Die Rückgabewerte dieser Methoden sind vom Typ Page_Iterator. Mit Hilfe eines foreach können
die Ergebnisse dann sowohl in PHP als auch in Smarty durchlaufen werden.
Beispiel:
1.
2.
3.
4.
5.
$kinder = $page->getChildren();
while($kinder->nextPage())
{ // Die Kinder abarbeiten
echo( "ID: " . $kinder->page->Record["id"]);
}
7.2.2. Öffentliche Methoden
7.2.2.1. numRecords
Page_Iterator::numRecords ( )
Liefert die Anzahl der Ergebnisse zurueck.
Diese Funktion liefert die Anzahl der Ergebnisse einer SQL Abfrage durch Site::getPages() zurueck. Rueckgabe von 0 oder (void) bedeutet, dass keine Ergebnisse vorliegen.
1.
2.
3.
4.
$kinder = $page->getChildren();
if($kinder->numRecords())
{ // Es sind Kinder vorhanden
}
Rückgabe:
int Anzahl der Ergebnisse
7.2.2.2. nextPage
Alias zu next.
7.2.3. Methoden für das Interface Iterator
7.2.3.1. current
Page_Iterator::current ( )
Iterator: Aktuelles Element zurückgeben.
7.2.3.2. key
Page_Iterator::key ( )
Iterator: Aktuellen Schlüssel, hier Index der Ergbenisse, zurückgeben.
7.2.3.3. next
Page_Iterator::next ( )
Iterator: Zum nächsten Element springen.
Rückgabe:
Object::Page Die angefragte Page oder false
27
Entwicklerhandbuch
7.2.3.4. rewind
Page_Iterator::rewind ( )
Iterator: Zurücksetzen.
7.2.3.5. valid
Page_Iterator::valid ( )
Iterator: Ist in $page ein Ergebnis enthalten?
7.2.4. Öffentliche Attribute
7.2.4.1. page
Page Page_Iterator::$page
Das Page Objekt.
28
EGOTEC® 4
7.3. Site
7.3.1. Ausführliche Beschreibung
Diese Klasse kapselt die Site-Einträge. Die Site Informationen werden in der Datei site im
site Verzeichnis in der Datei conf.ini gespeichert.
Beispiel bei der Site demo:
site/dem o/conf.ini
7.3.2. Öffentliche Methoden
7.3.2.1. getRoot
Site::getRoot ( $ param = array() )
Gibt die Startseite als Objekt zurück.
Diese Methode erzeugt ein Page Objekt der Startseite.
Parameter:
$param array Zusätzliche Parameter:
•
•
•
Rückgabe:
Page Startseite
string
language
Sprache
boolean
deleted
true, wenn gelöschte Seiten ausgegeben werden sollen, sonst
false
array
rights
Auflistung der bnötigten Rechte.
7.3.2.2. getPage
Site::getPage ( $ id,
$ param = array()
)
Erwartet einen Seitennamen oder eine Seitenurl und gibt das zugehörige Page Objekt
aus.
Parameter:
$id
string Id, Name oder Url der Seite.
$param array Zusätzliche Parameter:
•
•
•
string
language
Sprache
boolean
deleted
true, wenn gelöschte Seiten ausgegeben werden sollen, sonst
false
array
rights
Auflistung der bnötigten Rechte.
Rückgabe:
Page Page
29
Entwicklerhandbuch
7.3.2.3. getPageId
Site::getPageId ( $ nam e )
Erwartet einen Seitennamen oder eine Seitenurl und gibt die zugehörige ID aus.
Parameter:
$nam e string Name bzw. Url der Seite,
Rückgabe:
integer Seiten-ID
7.3.2.4. getPages
Site::getPages ( $ query = array(),
$ param = array()
)
Gibt eine Liste von Seiten zurück.
Diese Methode erzeugt ein Page_Iterator Objekt, das mit jedem Aufruf von next_page
den Eintrag einer Seite der Liste zurückliefert.
Parameter:
$query array zusätzliche Abfrage-Parameter (where), auch fields kann gesetzt
werden
$param array Zusätzliche Parameter:
•
•
•
•
•
•
string
language
Sprache
boolean
deleted
1 - nur gelöschte Seiten, 0 - nur nicht gelöschte Seiten, -1 - alle
Seiten, ob gelöscht oder nicht
array
rights
Auflistung der bnötigten Rechte.
string auth_or Die Bedingungen, die eine Seite erfüllen muss, damit sie trotz fehlender Rechte ausgegeben wird.
string deleted_or Die Bedingungen, die eine Seite erfüllen muss,
damit sie ausgegeben wird, obwohl sie gelöscht bzw. nicht gelöscht ist.
string c_date Die Seiteninhalte zum festgesetzten Datum aus
dem Archiv holen.
7.3.2.5. getErrorPage
Site::getErrorPage ( )
Gibt die Startseite als Objekt zurück.
Diese Methode erzeugt ein Page Objekt der Fehlerseite. Falls keine Id für eine Fehlerseite in der Konfigurationsdatei eingetragen ist, wird die Startseite zurückgegeben.
Rückgabe:
Page Fehlerseite.
30
EGOTEC® 4
7.3.2.6. getPageUrl
Site::getPageUrl ( $ page_id,
$ param s = array()
)
Eine Url auf eine Seite erzeugen.
Parameter:
$page_id integer Die ID der Seite, auf die verlinkt werden
soll.
$param s array Die Parameter in der Form $key=>$value.
7.3.2.7. getUrl
Site::getUrl ( $ param )
Eine Url erzeugen.
Parameter:
$param array Die Parameter
$key=>$value.
in
der
Form
7.3.2.8. getMediaSite
Site::getMediaSite ( )
Gibt die zugehörige Mediasite zurück.
Falls die Site selbst eine Multimedia Site ist, dann gibt sie sich selbst zurück.
Rückgabe:
object Die zugehörige Multimedia Site.
7.3.2.9. getMediaUrl
Site::getMediaUrl ( $ id,
$ param = array()
)
Eine Url auf eine Multimediadatei erzeugen.
Parameter:
$id
integer Die ID der Datei, auf die verlinkt werden
soll.
$param array Die Parameter in der Form $key=>$value.
7.3.2.10. getLanguages
Site::getLanguages ( )
Alle von dieser Site unterstützte Sprachen als Array zurückgeben.
return array Alle Kürzel der unterstützten Sprachen.
31
Entwicklerhandbuch
7.3.2.11. setLanguage
Site::setLanguage ( $ language = '' )
Setzt die Sprache.
Parameter:
$language string Die Sprache wird für die Ausgabe der Seiten benötigt. Sie kann
jederzeit geändert werden. Wird keine Sprache übergeben, dann wird
die Standardsprache benutzt.
7.3.2.12. getSkins
Site::getSkins ( )
Alle von dieser Site unterstützte Designs als Array zurückgeben.
return array Alle Namen der unterstützten Designs.
7.3.3. Öffentliche Attribute
7.3.3.1. name
string Site::$name
Name der Site.
7.3.3.2. site
array Site::$site
Die Daten der Site.
7.3.3.3. skin
string Site::$skin = ''
Das aktuelle Design.
7.3.3.4. language
string Site::$language
Die aktuelle Sprache.
32
EGOTEC® 4
7.4. Smarty
7.4.1. Ausführliche Beschreibung
Die Template-Engine, die in EGOTEC eingesetzt wird, heißt Smarty (http://smarty.php.net). Speziell für EGOTEC haben wir einige Plugins definiert, mit denen man aus Smarty
heraus auf die Funktionalität von EGOTEC zugreifen kann. Näheres hierzu finden Sie im
Designerhandbuch. Hier wird beschrieben, wie Sie von PHP aus auf Smarty zugreifen.
7.4.2. Öffentliche Methoden
7.4.2.1. assign
Smarty::assign ( $ tpl_var,
$ value = null
)
assigns values to template variables
Parameter:
$tpl_var array|string the template
name(s)
$value mixed the value to assign
variable
7.4.2.2. fetch
Smarty::fetch ( $
$
$
$
)
resource_nam e,
cache_id = null,
com pile_id = null,
display = false
executes & returns or displays the template results
Parameter:
$resource_nam e string
$cache_id
string
$com pile_id
string
$display
boolean
33
Entwicklerhandbuch
7.5. Ego_Sql
7.5.1. Ausführliche Beschreibung
Bildet eine Abstraktionsschicht zu verschiedenen SQL Datenbanken.
SQL Anfragen werden über Query-Arrays übergeben. Die Datenbanken werden über
adodb angesprochen.
Diese Klasse fungiert auch als Iterator und kann daher auch mit foreach verwendet
werden.
7.5.2. Öffentliche Methoden
7.5.2.1. Konstruktor
Ego_Sql::__construct ( $ query = array() )
Die Datenbankverbindung herstellen.
Als optionaler Parameter kann gleich eine Datenbankabfrage in Form eines selects mitgegeben werden.
Parameter:
$query array eine Datenbankabfrage (siehe select)
7.5.2.2. select
Ego_Sql::select ( $ query )
Ein SQL select Statement absetzen.
•
•
•
•
•
•
•
•
•
fields [string] => was
from/table [string] => Tabellen
where [string] => Bedingungen
• select fields from from where where
• select * from base_de where id=1
group [string] => Gruppierung
• select fields from from left join join group by group
• select * from egotec_user left join egotec_user_group using(user_id) group
by egotec_user.user_id
order [string] => Sortierung
• select fields from from where where order by order
• select * from base_de where title like '%test%' order by title asc
limit [string] => from/until
• select fields from from where where limit lim it
• select * from base_de where type='news_entry' limit 0,5
join [array] => weitere Tabellen in Abfrage aufnehmen
• select fields from from left join join[0] left join join[1] ...
• select * from base_de left join egotec_user
order_by_set [string] => Kommaseparierte Liste von Werten
order_by_set_field [string]=> Feldname, der über diese Liste sortiert wird <br/>Die
Abfrage sortiert nach der Position des Wertes von order_by_set_field in
order_by_set.
34
EGOTEC® 4
select fields,find_in_set(order_by_set_field, order_by_set) as order_id from
from order by order_id
union => Ein Feld bestehend aus weiteren $query Feldern. Mehrere selects
können so zu einer Abfrage zusammengefasst werden.
•
•
Parameter:
$query Array Ein assoziatives Feld, das die Selektion beschreibt.
Rückgabe:
Integer Zeiger auf die Abfrage
7.5.2.3. nextRecord
Ego_Sql::nextRecord ( )
Die nächste Ergebniszeile holen.
Diese Funktion gibt true zurück, wenn eine weitere Zeile von der Datenbank geholt
werden konnte. Falls schon alle Ergebnisse abgefragt wurden, wird false zurückgegeben.
Die Ergebniszeile steht in dem assoziativen Feld
Siehe auch:
$Record. Die Feldnamen werden als Schlüssel verwendet.
Rückgabe:
Boolean true, wenn noch eine Zeile von der Datenbank geholt werden konnte
7.5.2.4. numRecords
Ego_Sql::numRecords ( )
Anzahl der Ergebniszeilen.
Rückgabe:
integer Anzahl der Zeilen der letzten Datenbankabfrage. Falls noch keine Abfrage
durchgeführt wurde, wird 0 zurückgegeben.
7.5.2.5. insert
Ego_Sql::insert ( $ query )
Einen Eintrag hinzufügen.
•
•
•
•
•
replace [bool] => replace Flag
table [string] => Tabelle
set [array] => assoziatives key/val array
key [array] => keys (Feldnamen)
val [array] => Werte
Parameter:
$query Array assoziatives Feld, das den neuen Eintrag bestimmt
Rückgabe:
Integer Zeiger auf die Abfrage
35
Entwicklerhandbuch
7.5.2.6. replace
Ego_Sql::replace ( $ query )
Einen Eintrag ersetzen.
Wie insert, aber mit gesetztem replace Flag.
Parameter:
$query Array assoziatives Feld, das den Eintrag bestimmt
Rückgabe:
Integer Zeiger auf die Abfrage
7.5.2.7. update
Ego_Sql::update ( $ query )
Einen Eintrag aktualisieren.
•
•
•
•
•
•
table [string] => Tabelle
set [array] => assoziatives key/val array
set_f [array] => assoziatives key/val array mit Funktionsaufrufen
key [array] => keys (Feldnamen)
val [array] => Werte
where [string] => Bedingungen
• update table set key[0]="val[0]", <i>key[1]</i>="val[1]", ... where where
• update base_de set name="Home", title="Homepage" where id=1*
Parameter:
$query Array assoziatives Feld, in dem angegeben wird, was wie aktualisiert
wird
Rückgabe:
Integer Zeiger auf die Abfrage
7.5.2.8. delete
Ego_Sql::delete ( $ query )
Einträge aus einer Tabelle löschen.
•
•
from/table [string] => Tabelle
where [string] => Bedingungen
• delete from from where where
Parameter:
$query Array assoziatives Feld, in dem angegeben wird, was gelöscht
werden soll
Rückgabe:
Integer Zeiger auf die Abfrage
36
EGOTEC® 4
7.5.3. Methoden für das Interface Iterator
7.5.3.1. current
Ego_Sql::current ( )
Iterator: Aktuelles Element zurückgeben.
Rückgabe:
array
7.5.3.2. key
Ego_Sql::key ( )
Iterator: Aktuellen Schlüssel, hier Index der Ergbenisse, zurückgeben.
Rückgabe:
integer
7.5.3.3. next
Ego_Sql::next ( )
Iterator: Zum nächsten Element springen.
Rückgabe:
7.5.3.4. rewind
Ego_Sql::rewind ( )
Iterator: Zurücksetzen.
7.5.3.5. valid
Ego_Sql::valid ( )
Iterator: Ist in $Record ein Ergebnis enthalten?
37
Entwicklerhandbuch
7.6. Auth
7.6.1. Ausführliche Beschreibung
Benutzerauthentifizierung und Rechtevergabe.
7.6.2. Öffentliche Methoden
7.6.2.1. hasPermission
Auth::hasPermission ( $ group,
$ role = '',
$ flag = false
)
Prüft, ob ein Benutzer Mitglied der Gruppe/Rolle ist.
Parameter:
$group string Gruppen ID / array(group=>, role=>,
flag=>)
$role string Rollen ID
$flag boolean Mit Untergruppen prüfen.
Rückgabe:
boolean true, wenn der Benutzer die Berechtigung besitzt.
7.6.2.2. checkPermission
Auth::checkPermission ( $ group,
$ role = '',
$ flag = false
)
Es wird geprüft, ob ein Benutzer Mitglied der Gruppe/Rolle ist.
Ist das nicht der Fall, dann wird die Ausnahme Auth::PERMISSION_DENIED erzeugt.
Ausnahmebehandlung:
Auth::PERMISSION_DENIED
Parameter:
$group string Gruppen ID / array(group=>, role=>, flag=>)
$role string Rollen ID
$flag boolean Mit Untergruppen prüfen.
Rückgabe:
boolean true, wenn der Benutzer die Berechtigung besitzt.
7.6.2.3. reset
Auth::reset ( )
Authentifizierung zurücksetzen.
38
EGOTEC® 4
7.6.2.4. translate
Auth::translate ( $ string )
Übersetzt einen String in die Sprache des Benutzers.
Es wird auf das entsprechende Smarty-Plugin zurückgegriffen.
Parameter:
$string string Der Originaltext.
Rückgabe:
string Die Übersetzung.
7.6.2.5. validate
Auth::validate ( $ usernam e,
$ password
)
Hier werden zusätzliche Bedingungen überprüft.
Die Überprüfung des Benutzernamens und Passworts erfolgt in abgeleiteten Klassen.
Hier wird getestet, ob der Benutzer sich auf einem Liveserver anmelden darf, falls das
aktuelle System ein Liveserver ist.
Ausnahmebehandlung:
Auth_Exception
Parameter:
$usernam e string Benutzername.
$password string Passwort.
Rückgabe:
string Die Benutzer ID.
39
Herunterladen