Thread Templatesystem: ... für ein umfangreiches modul-system
(10 answers)
Opened by eisbeer at 2004-01-12 18:45
Hallo zusammen !
Meine Aufgabe Ich habe den Auftrag, ein (hauptsächlich) Intranetsystem für Firmen zu schreiben. Dieses soll um beliebige, ebenfalls in Perl geschriebene Module erweitert werden. Zum beispiel eine Adressverwaltung. In diesem Modul sind dann verschiedene Funktionen vorhanden, stellt euch zum bespiel vor "Gib Adressen aus", "Speichere neue Adresse", "Lösche diese Adresse" etc. Aus dieser von der Funktion erstellten DB sollen dann auch nachinstallierte Module, wie zum Beispiel "Auftragsverwaltung" zurückgreifen und aufbauen. Meine Lösung Bis jetzt habe ich erstmal ein sinnvollen Grundbau geschaffen. Der basiert auf momentan auf einem soliden Loginsystem und jetzt habe ich mal diese besagte Modulgeschichte angeschnitten. Das Hauptscript checkt die Absicht des Benutzers (klassisch per action-Variable) und schaut in einer mysql-tabelle nach dieser action, und ruft anhand der in der Tabelle stehenden Angaben zu diesem Modul eine Funktion auf. Funktioniert ansich ganz gut. Mein Problem Mein Problem: Wie gebe ich es an den Benutzer aus, der in seinem Büro hockt und eigentlich nur n Adresseintrag hinzu- fügen will ? Meine Idee war so: In der DB, wo auch die Informationen zu der action stehn, gibt es eine Spalte mastertemplate und eine Spalte slavetemplate. mastertemplate ist ein Template, indem alles drin steht, was nicht mit der Ausgabe der action-Funktion zu tun hat. Also zB einen Header mit Firmenname, eine Uhr, ein Menü, um zurück zur Modulübersicht zu kommen, und halt alle möglichen anderen Dinge. Ausserdem beinhaltet es ein Feld, in welches die Ausgabe der Action-Funktion soll. Es wird von vielen Actions benutzt. slavetemplate ist dann natürlich das Template, in das die action-Funktion ihre Werte einsetzt. Also etwas ganz spezifisches, sagen wir zum Beispiel ein Eingabeformular für eine neue Adresse. Bloß wie verwirkliche ich das ? HTML::Template lässt mich zwar schön Dateien includen, aber es gibt keinen Tag Code: (dl
)
<TMPL_INCLUDE VAR="$spalte_slavetemplate"> Und wenn ich das Mastertemplate selbst öffne und Code: (dl
)
<TMPL_INCLUDE FILE="~~replace_here~~"> ~~replace_here~~ selbst ersetze habe ich 1. den Sinn eines Templates "missbraucht" 2. einen komplizierten Umweg gemacht 3. ein Stück code geschrieben, das micht nicht glücklich macht 4. eine ziemlich unflexibele Art, templates zu benutzen Ausserdem: Angenommen im Mastertemplate gibt es ein Menü, in dem z.B alle Funktionen eines Modules ("Gib Adressen aus", "Speichere neue Adresse" etc. pp. ) gelistet sind. Wenn ich "Gib Adressen aus" gewählt habe, wie markiere ich dann diese Eintrag im Menü das er ausgewählt erscheint? Steht das auch irgendwie im slave oder mastertemplate? Wie irgendwie? Ich hoffe ihr habt mich verstanden. Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
|