| | | | |
| |||||||
| Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene |
|
| | LinkBack | Themen-Optionen | Bewertung: |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Erfahrener Benutzer | Ich persönlich würde das Organigramm per XSLT modular erzeugen, ausgehend von einem 3-Level-System. Wobei das erste und zweite Level zum generellen Manipulieren der XML-Daten zuständig wären und das 3te Level aus dem modular eskalierten XML-Baum den letztendlichen HTML-Content erzeugt. Ich liefer hier Erzeugungs-Code zur Veranschaulichung, aber generell keinen Klassen-Source, da ich denke das du dir darüber lieber selbst deine Gedanken machen möchtest. Level 1: Bones to the Root-Ebene Das erste Level ist quasi der Ausgangspunkt der Klasse, die Rohdaten der Datenbank. Die reinkommenden Daten werden auf dieser Stufe ohne Verknüpfungen der Zugehörigkeit von bspw. Teams, ect. in den XML Baum gelegt, als Kindelemente des Root-Elements: PHP-Code: Code: <staff> <employee team="x" position="y">Mitarbeit1</employee> ... </staff> Das zweite Level dient als Registrierungs-Ebene der Module, die beim finalen Rendern entscheiden was das Organigramm darstellt. Inwieweit man diese Modularität eskalieren lassen möchte, bleibt dir überlassen. Du kannst hier beispielsweise als View-Template eine weitere XML benutzen, die als View-Pattern fungiert und festlegt das bspw. Team A + B dargestellt werden, bei Team A Feld X+Y als Tooltip-Entity im HTML-Source landen, sodas du per jQuery Tooltip Plugin den Title-Source zur Darstellung des Mouseover-Headups nutzen kannst. Team B zwar eine Pattern-Instanz des gleichen Templates wie Team A ist, allerdings dort der Leader nicht dargestellt wird. ( Stichwort: Template Inheritance ). Die einzelnen Module erzeugen aus der Ursprungs XML einen neuen XML Baum der die einzelnen Gruppen-Nodes erzeugt und die jeweiligen Member als Employee-Extensions angliedert: PHP-Code: Code: <staff>
<group id="commonTeam" team="Team A">
<developer lead="yes">Mitarbeiter1</developer>
<developer>Mitarbeiter2</developer>
<developer>Mitarbeiter3</developer>
<designer>Mitarbeiter4</developer>
</group>
<group id="headQuarter">
<cto>Mitarbeiter20</cto>
<ceo>Mitarbeiter1</ceo>
<cfo>Mitarbeiter293</cfo>
<hocs>Mitarbeiter5</hocs>
</group>
</staff>
Das dritte und letzte Level würde dann aus der Aufbereiteten XML ( ebenfalls wie von Level 1 zu 2 per XSLT ) HTML Source erzeugen. Hierbei könnte wiederum eine View-Pattern dazu genutzt werden zu entscheiden wie und wann sowie wo welche "group" im HTML-Baum erzeugt wird. An dieser Stelle würde die Klasse dann mit einer Template-Engine die mitunter vielleicht in der Anwendung wo dieses Organigramm erzeugt werden soll existiert, bspw. Smarty. PHP-Code:
__________________ |
| | |
| | |
| Erfahrener Benutzer | Okay, ist ja prinzipiell "das selbe in Grün", wobei ihr das Rendering nicht in Klasse vornimmt und die Klasse selbst auch nicht die XML zusammenbaut um sie zu modifizieren. Schlussendlich kann man bei meinem "Design" allerdings darauf verzichten etwaigen PHP-Code zusammenzuschrauben um entsprechende Costumizer zu erzeugen, das sind dann die einzelnen XSL-Templates. anyway, danke für die Info, wir laufen beide in die selbe Richtung ^^
__________________ |
| | |
| | |
| Erfahrener Benutzer | Nunja, ich nutze XSLT wo es sinnvoll ist. Wenn ich größere oder unbestimmt große XML-Bäume neu arangieren muss greif ich eher auf XSLT zurück als es per SimpleXML oder anderen nativen PHP-Modulen zu lösen. Angewendet werden die XSL-Templates serverseitig per DOMDocument + XSLTProcessor ( http://de.php.net/manual/de/class.xsltprocessor.php ). XSLT ist bei der Manipulation am flexibelsten ( meiner Meinung nach ) und ich benötige bspw. in deinem Fall zum entwickeln der Costumizer keine Entwicklungsumgebung auf der die Software läuft ( für Tests ), sondern lediglich einen aktuellen Browser und die Ursprungs-XML. Allerdings stimme ich dir in Sachen Source-Volumina der einzelnen Templates zu, einige "Geschichten" eskalieren in deutlich mehr Quellcode als es sein Equivalent in PHP benötigen würde, was mir wiederum die Entscheidung vorhält wann für ein Projekt XSLT sinnvoll wäre und wann nicht.
__________________ |
| | |
| | |
| Moderator Registriert seit: 11.05.2008
Beiträge: 6.269
![]() ![]() ![]() ![]() ![]() ![]() ![]() | Wenn ich fertig bin werde ich mal meine komplette Umsetzung posten. Ich stuetz mich jetzt ganz auf Rollen. Im Prinzip ist das gesamte Organigramm ein Rollenbaum, dessen Blaetter User oder Teams sind. Das Aussehen jeder Kombination User/Rolle und Team/Rolle kann angepasst werden. z.B. Rolle Organigramm besteht aus: Rolle Vorstand Rolle TeamUebersicht Rolle Vorstand besteht aus: Rolle CEO Rolle CFO Rolle CEO besteht aus: User 1 Rolle CFO besteht aus: User 2 .. Ich kann jetzt festlegen, wie ein Vorstand-User gerendert wird, aber auch noch einmal speziell, wie ein CEO-User gerendert wird. Dabei leg ich nur Texttemplates fest. Als HTML kommt dann ein div/ul/li Konstrukt raus Code: <ul class="role-Vorstand">
<li class="role-type-Role">
<ul class="role-CEO">
<li class="role-type-User">
<div class="user user-1">
CEO <div class="template template-name">User 1</div>
</div>
</li>
</ul>
</li>
<li class="role-type-Role">
<ul class="role-CFO">..</ul>
</li>
..
</ul>
Der Rollenbaum ergibt sich dann durch eine einfache Eltern-Kind-Beziehung in der Datenbank User 1 hat Rolle CEO User 1 hat Rolle TeamLeader-123 User 2 hat Rolle CFO .. Ich hoffe dass ich damit dann wirklich die Probleme groesstenteils loese.
__________________ "Nuschel ich?" - "Was?" |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Erledigt] Organigramm generieren | PHP-Fortgeschrittene | 1 | 28.07.2004 10:51 | |
| Organigramm generieren | PHP Tipps 2004 | 1 | 28.07.2004 10:50 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| jquery organigramm, organigramm php, php organigramm erstellen, organigramm jquery, organigramm datenbank, php organigramm, organigramm html erstellen, organigramm html css, html organigramm, organigramm aus datenbank generieren, html organigramm erstellen, php organigramm software, was ist ein rollenbaum, organigramm html-css, organigramm erstellen mit html css, xml organigramm, organigramm php beispiel, javascript organigramm, jquery organigram, organigramm xml |