View
1
Download
0
Category
Preview:
Citation preview
Seite 1
Entwickler- Dokumentation
Seite 2
Aufbau der Abschlussdokumentation
Die Abschlussdokumentation des Diplomprojekts ODIE gliedert sich in vier Teile.
• Projektdokumentation
Der Ablauf des Projekts wird in diesem Dokument beschrieben. Neben einem ausführlichen SOLL/IST Vergleich werden auch alle organisatorischen Instrumente beschrieben. Auch die kritische Würdigung aller Beteiligten ist hier zu finden.
• Benutzerdokumentation
Die Benutzerdokumentation enthält alles, was der Benutzer zur Verwendung von ODIE wissen muss. Von der Installation bis hin zur Gestaltung eigener Interfaces.
• Entwicklerdokumentation
In diesem Manual sind alle Informationen zu finden, die gebraucht werden um ODIE weiterentwickeln und warten zu können. Auch eine Funktionsreferenz aller zur Verfügung stehenden Funktionen des ODIE ist hier zu finden.
• Online-Hilfe
Die Benutzer- sowie die Entwicklerdokumentation ist auch als Online-Hilfe direkt aus dem ODIE abrufbar. Alle Dokumentations-Snips sind in einem eigenen Projekt zusammengefasst, dem ODIE Documentation Project, ODP.
Seite 3
Hinweise zu diesem Dokument
Um die Lesbarkeit des Textes zu erhöhen, wurde auf die explizite Nennung der weiblichen grammatikalischen Form verzichtet. Das Copyright und die Nutzungsrechte liegen bei den Erstellern, den Mitgliedern des Projektteams ODIE.
Wortbeschreibungen
Folgende Konventionen gelten in diesem Dokument.
- werden, sind, und ist implizieren Tatsachen - sollen und müssen zeigen eine Verpflichtung - sollte beschreibt einen Wunsch - könnte stellt eine Option dar
Kürzelbeschreibung
Die Texte in diesem Dokument wurden gemeinschaftlich vom Projektteam ODIE verfasst. Die Verantwortlichkeiten zu den einzelnen Abschnitten sind den entsprechenden Namenskürzeln bei den Überschriften zu entnehmen.
Kol Matthias Kolm (ODIE) Mac Lukas Maczejka (ODIE) Pav Viktor Pavlu (ODIE) Sey Raphael Seywerth (ODIE) Gez Gerhard Zlabinger (ODIE)
Voi Georg Voigt (IMS) Md Martin Domig (IMS)
Seite 4
Inhaltsverzeichnis
1 DANKSAGUNG DER AUTOREN ....................................................................................................................7
1.1 KOLM MATTHIAS............................................................................................................................................7 1.2 MACZEJKA LUKAS ..........................................................................................................................................7 1.3 PAVLU VIKTOR ...............................................................................................................................................7 1.4 SEYWERTH RAPHAEL......................................................................................................................................7 1.5 ZLABINGER GERHARD ....................................................................................................................................7
2 VORSTELLUNG DES PRODUKTS.................................................................................................................8
2.1 EINLEITUNG (PAV) ..........................................................................................................................................8 2.2 KURZFASSUNG (KOL)......................................................................................................................................9 2.3 HINTERGRUND (KOL, PAV)............................................................................................................................10 2.4 PRODUCT BRIEF (MAC)..................................................................................................................................11
3 DAS SYSTEM (PAV) ........................................................................................................................................12
3.1 GRUNDLAGEN (GEZ) .....................................................................................................................................12 3.2 ARCHITEKTUR (GEZ) .....................................................................................................................................12
3.2.1 Schicht 1: Systemfunktionalität ............................................................................................................12 3.2.2 Schicht 2: Applikationen ......................................................................................................................12 3.2.3 Schicht 3: Renderer ..............................................................................................................................12 3.2.4 Schicht 4: Interface/Ausgabe................................................................................................................13
3.3 DATENFLUSSDIAGRAMM (GEZ) .....................................................................................................................13 3.4 ENTITY RELATIONSHIP DIAGRAMM (GEZ) ....................................................................................................14 3.5 ODIE.PHP (PAV, GEZ) .....................................................................................................................................15 3.6 BESCHREIBUNG DER DATENSTRUKTUREN (PAV) ..........................................................................................18
3.6.1 $SESSION.............................................................................................................................................18 3.6.2 $ODIE_ENV.........................................................................................................................................20 3.6.3 Snip.......................................................................................................................................................22 3.6.4 User_Data ............................................................................................................................................23
3.7 INTERFACING (PAV) ......................................................................................................................................24 3.7.1 Was ist ein ODIE Interface? ................................................................................................................24 3.7.2 Elemente eines Interfaces.....................................................................................................................24 3.7.3 Weitere Einflüsse auf das Aussehen .....................................................................................................26 3.7.4 Leitfaden zur Erstellung eines Interfaces .............................................................................................27
4 MODULDOKUMENTATION .........................................................................................................................29
4.1 LINKER (GEZ)................................................................................................................................................29 4.1.1 Symbole ................................................................................................................................................29 4.1.2 Escaping von Symbolen........................................................................................................................32 4.1.3 Verwendung..........................................................................................................................................32
4.2 RENDERER (MAC)..........................................................................................................................................32 4.3 STRUCTURED TEXT (PAV) .............................................................................................................................34 4.4 XML-PARSER (MAC) ....................................................................................................................................35
5 APPLIKATIONSDOKUMENTATION ..........................................................................................................37
5.1 APPLICATION NOT FOUND.............................................................................................................................37 5.2 APPLICATIONS ..............................................................................................................................................38 5.3 BACKLINKS...................................................................................................................................................39 5.4 CAL-ALL........................................................................................................................................................40 5.5 CAL-EVENT....................................................................................................................................................42 5.6 CAL-MONTH ..................................................................................................................................................44 5.7 CALENDAR ....................................................................................................................................................46 5.8 COMMENTS ...................................................................................................................................................48 5.9 COMMENTS INFO...........................................................................................................................................49 5.10 CREATE-SNIP...............................................................................................................................................50 5.11 CREATE-USER .............................................................................................................................................51 5.12 DAY-SUMMARY ..........................................................................................................................................52 5.13 DELETED.....................................................................................................................................................54 5.14 DICTGEN .....................................................................................................................................................55
Seite 5
5.15 EDIT ............................................................................................................................................................56 5.16 EDIT-PROJECT .............................................................................................................................................57 5.17 EMAIL .........................................................................................................................................................58 5.18 ERROR.........................................................................................................................................................59 5.19 EXTERN.......................................................................................................................................................60 5.20 EXTERN-INDEX ...........................................................................................................................................62 5.21 HELP............................................................................................................................................................64 5.22 IMPORTER ...................................................................................................................................................66 5.23 INDEX..........................................................................................................................................................68 5.24 KEEPALIVE..................................................................................................................................................70 5.25 KILL-PROJECT .............................................................................................................................................71 5.26 LINK............................................................................................................................................................72 5.27 LINKALL .....................................................................................................................................................73 5.28 LOGIN .........................................................................................................................................................74 5.29 LOGOUT ......................................................................................................................................................75 5.30 MEETING.....................................................................................................................................................76 5.31 MEMBERS ...................................................................................................................................................78 5.32 MENU-APP..................................................................................................................................................79 5.33 MENU-EDIT.................................................................................................................................................80 5.34 MENU-OVERVIEW.......................................................................................................................................81 5.35 MENU-PROJECT ..........................................................................................................................................82 5.36 MENU-SEP ..................................................................................................................................................83 5.37 MENU-USER................................................................................................................................................84 5.38 MENUBAR ...................................................................................................................................................85 5.39 MINI CALENDAR .........................................................................................................................................86 5.40 MINI INDEX.................................................................................................................................................87 5.41 MINI PROJECTS ...........................................................................................................................................88 5.42 PLAIN ..........................................................................................................................................................89 5.43 PREFERENCES .............................................................................................................................................90 5.44 PROJECT-NOT-FOUND..................................................................................................................................91 5.45 QUICK-SEARCH ...........................................................................................................................................92 5.46 RAW INDEX.................................................................................................................................................93 5.47 RAW READ..................................................................................................................................................94 5.48 RIGHTS ........................................................................................................................................................95 5.49 SEARCH.......................................................................................................................................................96 5.50 SEARCH-RESULTS .......................................................................................................................................97 5.51 SENDPASS....................................................................................................................................................99 5.52 SNIP-INFO ..................................................................................................................................................100 5.53 SNIP-LIST ..................................................................................................................................................101 5.54 SNIP-NOT-FOUND.......................................................................................................................................103 5.55 SNIP-LIST ..................................................................................................................................................104 5.56 START .......................................................................................................................................................105 5.57 STX ..........................................................................................................................................................106 5.58 TODAY ......................................................................................................................................................107 5.59 TODAY-LIST .............................................................................................................................................108 5.60 TODO ........................................................................................................................................................109 5.61 TREE .........................................................................................................................................................111 5.62 UNKNOWN.................................................................................................................................................112 5.63 USERS........................................................................................................................................................113
6 FUNKTIONSÜBERBLICK (KOL) ...............................................................................................................114
6.1 AUFGABENVERWALTUNG ...........................................................................................................................114 6.2 AUSGABE ....................................................................................................................................................114 6.3 BESPRECHUNGSPROTOKOLL .......................................................................................................................114 6.4 DATUMS- & KALENDERFUNKTIONEN.........................................................................................................115 6.5 HIERARCHIEDARSTELLER ...........................................................................................................................115 6.6 INTERFACING ..............................................................................................................................................115 6.7 INTERNATIONALISIERUNG...........................................................................................................................116 6.8 KOMMENTARVERWALTUNG........................................................................................................................116 6.9 LINKER........................................................................................................................................................117 6.10 PROJEKTVERWALTUNG .............................................................................................................................117 6.11 RECHTEVERWALTUNG ..............................................................................................................................118
Seite 6
6.12 RENDERER ................................................................................................................................................118 6.13 SIMPLE DB................................................................................................................................................119 6.14 SESSIONMANAGEMENT .............................................................................................................................120 6.15 SNIPLISTEN ...............................................................................................................................................120 6.16 SNIPVERWALTUNG....................................................................................................................................121 6.17 STRUCTURED TEXT...................................................................................................................................121 6.18 USERMANAGEMENT..................................................................................................................................122 6.19 UTILS ........................................................................................................................................................122 6.20 VERWALTUNG EXTERNER DATEIEN..........................................................................................................123 6.21 XML – PARSER ........................................................................................................................................123 6.22 SONSTIGES ................................................................................................................................................123
7 FUNKTIONSREFERENZ ..............................................................................................................................124
8 ANHANG..........................................................................................................................................................483
8.1 ODIE WIKI-LINKER SYNTAX (GEZ)............................................................................................................483 8.2 STRUCTURED TEXT CRASH-KURS (GEZ).....................................................................................................484
8.2.1 Textgliederung....................................................................................................................................484 8.2.2 Listen ..................................................................................................................................................484 8.2.3 Textformatierung ................................................................................................................................484 8.2.4 Preformatted Text...............................................................................................................................484 8.2.5 URL-Erkennung..................................................................................................................................484 8.2.6 Trennlinie ...........................................................................................................................................484
9 GLOSSAR ........................................................................................................................................................485
Seite 7
1 Danksagung der Autoren
1.1 Kolm Matthias
Mein Dank richtet sich zunächst an alle Projektmitglieder, die die Durchführung dieses umfangreichen Projekts erst möglich gemacht haben, sowie an all jene Mitmenschen die uns unterstützten. Speziell möchte ich mich jedoch für ihre mentale Unterstützung bei Miriam Pirker, Stephan Schratzberger, Michaela Liepold, Stefanie Mittermayer und Arrvid Staub bedanken.
1.2 Maczejka Lukas
Zuerst will ich allen Projektmitgliedern danken, sowie allen die an diesem Projekt in irgendeiner Weise mitgewirkt haben. Darunter fallen unter anderen unser Betreuungslehrer Dr. Michael Fiegl, sowie unsere Partnerfirma IMS, natürlich aber auch alle, die nicht direkt daran beteiligt waren und Kritik und Unterstützung geliefert haben. Und dann noch Danke an alle, die mich kennen, damit ich hier niemanden vergesse.
1.3 Pavlu Viktor
Ich möchte mich bei allen bedanken, die dieses Projekt ermöglicht haben. Bei unseren Partnern bei IMS dafür, dass sie uns in unserer Kreativität nicht eingeschränkt haben. Bei unserem Betreuer Dr. Michael Fiegl, der vor allem am Anfang mit Trost und Rat zur Seite gestanden ist. Bei meinem Projektteam, das die anstrengende Arbeit immer wieder interessant gemacht hat. Ein herzliches Danke schön auch allen Anderen, too many to name, ohne deren Unterstützung ODIE nicht zu dem geworden wäre, was es heute ist.
1.4 Seywerth Raphael
Als erstes bedanke ich mich beim gesamten Projektteam für die Zusammenarbeit, die im Grossen und Ganzen funktioniert hat, und für all die Jahre die wir uns nun schon kennen. Weiters möchte ich den Personen danken, die an der Fertigstellung unseres Projekts noch beteiligt waren, unserer Partnerfirma IMS, meinen Freunden und meinen Eltern. Und zum Abschluss möchte ich noch all denen danken, die sich die Zeit genommen haben, dies durchzulesen.
1.5 Zlabinger Gerhard
Ich möchte mich bei allen bedanken, die an diesem Projekt in irgendeiner Weise beteiligt waren oder uns unterstützten. Neben der Firma IMS und unserem Betreuungslehrer Dr. Michael Fiegl sind dies Arvid Staub und Stephan Schratzberger. Weiters möchte ich mich bei allen bedanken, die in irgendeiner Beziehung zu mir stehen. Wer diese Menschen sind wissen sie eigentlich selbst am besten.
Seite 8
2 Vorstellung des Produkts
2.1 Einleitung (pav)
Das von uns im Rahmen der Diplomarbeit, in Zusammenarbeit mit InfoMedia Systems erstellte Produkt soll dem Benutzer ermöglichen auf einfache und schnelle Weise Inhalte im Internet zu erstellen, zu verwalten, zu aktualisieren und miteinander zu kombinieren. Die Lösung ist mit wenig Aufwand an individuelle Bedürfnisse eines Kunden anpassbar und erweiterbar. Die Daten sind von überall aus verfügbar, unabhängig vom Standort, der verwendeten Internetanbindung und der eingesetzten Hardwareplattform. Weiters ist das System nicht auf ein spezielles Betriebssystem angewiesen, da außer einem Internet-Browser keine client-seitige Software benötigt wird.
Immer mehr Unternehmen erkennen im Internet ein Kommunikationsmedium, das nicht allein hochgradig effizient, sondern auch kostengünstig ist. Vorbei die Zeiten, in welchen es ausreichte, eine Firmenbroschüre ins Netz zu stellen und das Thema „Internet" damit für erledigt zu halten. Professionell betrachtet wird das Internet heute u.a. als Service und Kundenbindungsinstrument verstanden, das homogen in das gesamte Marketingkonzept einzubetten ist. Viele Unternehmen nutzen hierfür modernste Software, wie etwa Content Management Systeme, eCRM-Systeme, Dokumentenmanagement-, Portal- oder Community Software.
Lammenett, Erwin: Das adäquate CMS-System – nur die systematische Bedarfsanalyse schützt vor fatalen Fehlern bei der Auswahl. In: Bundesverband Deutscher Unternehmensberater: Fachaufsätze von Unternehmensberatern, (2001) http://www.bdu.de/beraterauswahl/fach/fach/el110.htm
Seite 9
2.2 Kurzfassung (kol)
Das Online Data and Internet Exchange (ODIE) ist ein in PHP realisiertes Content Management System (CMS) zur Unterstützung bei der Organisation und Kontrolle in Projekten. Die Daten werden in einem Flatfile Datenbanksystem abgelegt und über einem zur Laufzeit generierten Index angesprochen. Das Grundsystem - das eigentliche CMS - beschäftigt sich mit dem Verwalten und Aufbereiten von Inhalten. Die Inhalte können ohne weitere client-seitige Applikationen erstellt, betrachtet und manipuliert werden. Als Frontend kann jeder Browser verwendet werden.
Die Aufbereitung der Daten kann auf vielseitige Art und Weise geschehen. Eines der Highlights ist das Strucutered TeXt Format (STX), welches aus intuitiv eingegebenem Text ansprechende Formatierungen erzeugt. Die Inhalte können nach der Aufbereitung durch den STX-Parsers in eine Vielzahl von Ausgabeformaten transformiert werden. Derzeit sind dies Plain-Text, HTML und das Rich Text Format (RTF). Neben der Speicherung und Aufbereitung von STX-Dokumenten bietet ODIE auch die Möglichkeit Termine, Aufgaben, Besprechungsprotokolle und Markupdateien sowie externe Dateien aller Formate zu verwalten. Man kann jede Art von Dokument im ODIE ablegen, mit anderen Dokumenten verknüpfen oder vereinigen. Dies wird durch den Wiki-Linker möglich, der es mit seiner einfachen Syntax jedem Benutzer ermöglicht beliebige Dateien aus einem Dokument zu referenzieren, beziehungsweise auf sie zu verweisen. Fehlendes Wissen kann so auf einfache Weise ergänzt werden - es entsteht nach und nach ein lückenloses Abbild des oftmals verteilten Wissens. Die projektunterstützenden Tools des ODIE sind unter anderem eine Aufgabenverwaltung, eine Eventverwaltung (Kalender) und die Generierung von Besprechungsprotokollen. Die Planung und Dokumentation während der Durchführung eines Projekts wird dadurch unterstützt und das Wissen aller Mitarbeiter kann dabei direkt in das Projekt einfließen.
Seite 10
2.3 Hintergrund (kol, pav)
Ein WikiWikiWeb - oder kurz "Wiki" - ist eine gemeinschaftlich bearbeitete Website, die oft aus hunderten oder tausenden Einzelseiten besteht. Ein Wiki ist ein offenes Autorensystem für Webseiten, eine Kommunikationstechnologie, ein System für Wissensmanagement. Ein Wiki kann zur Abwicklung von Projekten, zur Dokumentation und Unterstützung von Produkten, zur gemeinschaftlichen Produktion von Konzepten oder Büchern etc. verwendet werden. Ein Wiki ist eine Technologie zum Aufbau von Online-Communities.
Unser Produkt, welches wir in Zusammenarbeit mit InfoMedia Systems realisiert haben, ist ein an die Bedürfnisse des Partners angepasstes Wiki. Es gliedert sich grob in zwei Teile:
Das zugrunde liegende Content Management System, dessen Aufgabe es ist, den Benutzer bei der Erstellung, Bearbeitung und vor allem Verwaltung von Inhalten zu unterstützen. Neben einigen essentiellen Features, wie zum Beispiel User- und Gruppenrechte, sowie Sessionverwaltung und einem Mechanismus zur vollständigen Trennung von Daten und Repräsentation, bietet dieses Web-Application Framework einfache Erweiterbarkeit des Systems unter Verwendung der bestehenden, getesteten Module.
Der zweite Teil ist eine Beispiel-Implementierung in Form eines Groupwaretools zur internen Verwendung bei IMS, basierend auf dem erstellten Web-Application Framework. Zu diesem Zwecke wurden im einzelnen Anwendungen wie Terminverwaltung, Aufgabenverteilung, Protokollierung und dergleichen realisiert.
Eine besondere Eigenschaft von Wikis ist, dass die Seiten von allen Benutzern bearbeitet werden können. Dabei hat der Benutzer die Freiheit, den vorhandenen Inhalt zu korrigieren, zu ändern oder sogar zu löschen. Bei der Entwicklung von ODIE wurden von uns zusätzlich zu einem klassischen Wiki noch Möglichkeiten zur Projektverwaltung und ein Zugriffskontrollsystem implementiert. Besonderes Augenmerk wird aber auf die einfache Installation und Handhabbarkeit gelegt. Die Bedienung soll für alle Benutzer gleichermaßen möglich sein.
Seite 11
2.4 Product brief (mac)
Our final year project, which was developed in cooperation with InfoMedia Systems, gives the user the possibility of creating, managing, updating and linking internet content in an easy and fast manner. Without great effort ODIE can be adapted to the customers individual preferences. Enhancing ODIE is because of its strict modular design extremely easy. Data managed with ODIE can be accessed, no matter which internet connection or which platform is used, from everywhere, at any time. Apart from a common internet browser no client software is required.
Nowadays no company can afford not being present in the internet, but creating professional internet appearences is expensive, and not every small company can afford paying highly trained professionals for creating their webpages. Using odie, only the basic appearance requires detailed knowledge. The content is managed by the company itself, even by its employees. It is no problem for untrained staff to manage web content with odie.
Based on the idea of a Wiki, ODIE provides a joint managed Website, often consisting of up to thousands of entries, giving access to a new dimension of communication. The powerful built-in ODIE linker allows single documents to be linked together, providing greater overview and allowing the user to connect as many documents as liked. For expamle, it is easy to attach hundres of project reports to one document with ODIE. Apart from its basic functionality as a Content Management System (CMS), which is to help the user to create, manage, update or link content, as well as basic features like access rights or session management, ODIE provides a fully developed web application framework. Based on this framework groupwaretools, such as a calendar, to-do lists or an application for creating meeting protocols, were developed for IMS, giving ODIE the power of a complete project management tool. Another developed application allows the management of non-web content, such as Microsoft Word documents, giving the user the possibility to save his or her documents on ODIE.
Special attention was given to usablility and simple handling of ODIE. Installation is possible without specialised knowledge. ODIE provides basic interfaces for visualising the content, all of which are designed for best usability, providing the user with detailed help if needed.
Another feature of ODIE, making it even more simple to use, is the structured text system (STX). The user writes his or her texts just as he or she would have done on paper. ODIE automatically recognises text properties, such as headers or lists, and formats the text for the user, who no longer has to care about visualisation of his or her text.
ODIEs basic output is HTML (Hypertext Markup Language), the standard markup langugage of the internet. But ODIE also provides other output formats, such as printable text, plain text or RTF (Rich Text Format).
Microsoft Word is a registered trademark of the Microsoft Corporation.
Seite 12
3 Das System (pav)
3.1 Grundlagen (gez)
Wie im Anforderungskatalog beschrieben basiert ODIE zum Teil auf der Idee eines Wiki Systems. (siehe Projektdokumentation). Wissen soll gesammelt und intelligent aufbewahrt werden, um es für zukünftige Abfragen zur schnell und effizient Verfügung zu stellen. Das Wissen wird in nicht einfach nur in Form von Textdateien im Dateisystem abgelegt sondern die Speicherung der Inhalte erfolgt in so genannten Snips. Diese sind nicht nur auf ihren Inhalt beschränkt, sondern können auch nahezu beliebig untereinander verknüpft werden. Somit ist es möglich eine umfassende Wissensbasis zu erstellen, Wissen das noch nicht vorhanden ist kann einfach hinzugefügt werden.
3.2 Architektur (gez)
Das eigentliche ODIE-System besteht aus einem Vier-Schichten-Modell. Um möglichst einfache Erweiterbarkeit und Flexibilität zu erreichen, sind darin die Bereitstellung der Daten und die graphische Aufbereitung für den Benutzer streng voneinander getrennt.
3.2.1 Schicht 1: Systemfunktionalität
Auf dieser Schicht wird die Funktionalität von ODIE zur Verfügung gestellt, d.h.: hier passiert der logische Ablauf was Datenzugriffe und Datenbereitstellung betrifft. Diese Funktionen befinden sich im Verzeichnis /core.
3.2.2 Schicht 2: Applikationen
Die Aufgabe von Applikationen ist es die Daten, die durch die Schicht 1 ermittelt wurden für den Benutzer aufzubereiten und in HTML auszugeben. Dabei handelt es sich jedoch noch nicht um die endgültige Ausgabe!
Mit ODIE werden standardmäßig mehrere Applikationen (Kalender, To-Do Listen, ...) mitgeliefert. Diese Applikationen ermöglichen das Bearbeiten von Snips und sind das eigentliche Kernstück des Systems.
3.2.3 Schicht 3: Renderer
Auf den tiefer liegenden Schichten wurden bis jetzt Daten ermittelt und ausgegeben. ODIE verwendet den Output-Buffering Mechanismus von PHP um diese Informationen in der gewünschten Form auszugeben. Dazu werden wird das Ergebnis an den Renderer weitergeleitet, der die Daten von HTML in das Zielformat überführt.
Seite 13
3.2.4 Schicht 4: Interface/Ausgabe
Die eigentliche Ausgabe des Inhalts erfolgt auf dieser Schicht durch ein Interface. Dabei handelt es sich um ein beliebiges Template, das lediglich den auf den unteren drei Schichten errechneten Inhalt inkludiert. Das Interface stellt die Schnittstelle zwischen Benutzer und ODIE da.
3.3 Datenflussdiagramm (gez)
Das in der Vorstudie entworfene Datenflussdiagramm wurde nicht verändert.
Eine ausführliche Erläuterung des Datenflussdiagramms kann der Voruntersuchung entnommen werden.
Seite 14
3.4 Entity Relationship Diagramm (gez)
Da bei der Entwicklung von ODIE aus mehreren Gründen auf die Verwendung einer relationalen Datenbank verzichtet wurde, fällt die Erstellung eines Entity-Relationship-Diagrams nicht leicht. Die Entitäten die sich mit den Mitteln des ERDs beschreiben lassen hängen wie folgt zusammen:
Benutzer
PK username
namefirstnameemailreminder_questionreminder_answerpasswordinterfacelanguage
Session
PK id
FK1 usernamelanguageinterfaceproject
snip
PK title
FK1 creatorFK2 editor
creation_timestampedit_timestampkeywordslinksbacklinkscontent-typewrite_listread_listsizedescriptionread_countusername
Diese Daten werden im Verzeichnis /db im jeweiligen Unterverzeichnis abgelegt.
Seite 15
3.5 odie.php (pav, gez)
Die Datei odie.php ist das Grundgerüst des ganzen ODIE Systems. Es verteilt die Anfragen auf die zuständigen Applikationen und bewerkstelligt das Session Management.
Die wichtigsten Programmpunkte sind nachfolgend kommentiert. Die Zahlen zwischen den Klammern geben die angesprochene Code-Zeilen an.
• Laden der Einstellungen (4) • Betriebssystemprüfung (8)
Betriebssystemabhängige Funktionen myfopen(), myfclose(), makeIndexName() werden geladen
• Inkludieren aller benötigten Bibliotheken (21) • ServerVars Test – ist nicht bei allen Webservern verfügbar (37) • Prüfung Eingabedaten (81)
$format enthält das Ausgabeformat, in welches der erzeugte Inhalt vom Renderer überführt werden soll. Kommt dieser Parameter nicht über die URL-Zeile, wird none angenommen. Das Format für den Renderer wird in ODIE_ENV eingetragen. $editing kann ebenfalls über die URL-Zeile gesetzt werden und gibt an, ob der aktuelle Programmdurchlauf von odie.php Daten in Snips überschreiben kann. Diese Variable wird für das Verwalten gleichzeitiger Bearbeitungsversuche benötigt. $app (die auszuführende Applikation) und $snip (das darzustellende Snip) können ebenfalls über die URL-Zeile oder aus Formulen komen
Die Parameter $odie_username und $odie_password werden für den Anmeldevorgang benötigt und kommen von der Login Maske. Vor dem eigentlichen Sessionmanagement wird noch die eineindeutige $session_id berechnet.
• Sessionmanagement (111)
Wenn $odie_username gesetzt ist, wird davon ausgegangen, dass sich der Benutzer anmelden will. Wenn es den Benutzer gibt (141) wird das Passwort geprüft und bei Erfolg eine neue Session erzeugt. (173)
• Zerlegen der URL Zeile (295) • Fertigstellung ODIE_ENV (306) • Anybody Userdaten anlegen, falls nicht vorhanden (317) • Auf Parameter reagieren (333)
Wenn ein absoluter Snipname (ein Snipname mit expliziter Projektangabe) oder der Parameter $project über die URL-Zeile oder ein Formular gesetzt wurden, wird in odie.php versucht einen Projektwechsel durchzuführen. Bevor das Projekt tatsächlich gewechselt wird, wird der Pfad, den der Benutzer eingegeben hat auf einen einstufigen Pfad reduziert(335). Falsch angegebene Projekte werden hier rausgefiltert.
Seite 16
Dann wird geprüft ob das gewünschte Projekt auch existiert (337) und der Benutzer in das Projekt wechseln darf (339). Ist der Benutzer kein Projektmitglied und auch noch nicht angemeldet, wird er nun an die Anmeldemaske weitergeleitet (344), andernfalls wird es ihm mitgeteilt, dass er das Projekt nicht betreten darf und er befindet sich im Defaultprojekt. (350). Wenn der Projektwechsel erfolgreich war und kein Snip angewählt wurde, zeigen wir das Startsnip an. Dies ist nur der Fall, wenn das Projekt über den Projektindex oder manuell via URL-Zeile gewechselt wurde. In beiden Fällen ist es das Beste, das Startsnip anzuzeigen. (359) Gibt es das gewünschte Projekt nicht, bleibt der Benutzer im aktuellen Projekt und bekommt eine entsprechende Meldung angezeigt (365).
• Snipindex laden (370) • Applikation auswählen (374)
Wenn der Benutzer keine Applikation angegeben hat, wird nun die passendste Applikation ausgewählt. Dies geschieht folgendermassen:
Wenn der Snipname zu diesem Zeitpunkt noch ungesetzt ist, zeigen wir das Startsnip an. Dies ist nur der Fall, wenn weder ein Snip noch eine Applikation angegeben wurden – der Benutzer also ODIE ohne Parameter aufgerufen hat. Er kommt zur Startseite von ODIE. (378) Andernfalls versuchen wir über den Content-type des geforderten Snips auf die richtige Applikation zu kommen (384).
Wenn es das geforderte Snip nicht gibt, wird der Benutzer zur Applikation Create-Snip weitergeleitet, mit der Snips erstellt werden können – vorausgesetzt es handelt sich nicht um ein Kalendersnip. Kalendersnips werden vom Kalender selbständig und ohne Rückfrage an den Benutzer erstellt, da der Snipname zur Identifizierung von Kalendersnips herangezogen wird. (391)
• Validierung der Applikation (401)
Wenn im Applikationsverzeichnis kein Eintrag unter dem Applikationsnamen existiert, beziehungsweise wenn es sich bei dem Eintrag um eine Datei handelt, muss ODIE eingreifen und eine ander Applikation aufrufen. Dieser Fall kann von drei Ereignissen herrühren:
Der Inhaltstyp des angewählten Snips ist deleted-<ursprünglicher Content-type>. Der ursprüngliche Content-type gelöschter Snips wird im Content-type weiterhin festgehalten und lediglich mit deleted- präfixiert, damit sie nach dem Wiederherstellen wieder der richtigen Applikation zugeordnet sind. Für die präfixierten Content-types gibt es aber keine eigene Applikationen, also leiten wir den Benutzer zur deleted Applikation weiter (405)
Wenn der Content-type des Snips unknown ist, wird der Benutzer zu Create-Snip weitergeleitet um dort den richtigen Content-type anzugeben. (411)
Seite 17
Andernfalls wurde entweder über die URL-Zeile oder eine fehlerhafte Applikation versucht auf eine nicht vorhandene Applikation zuzugreifen und wir teilen dies dem Benutzer mit. (416)
• Eintragen der gewonnenen Informationen in ODIE_ENV (421) • Ausführen der Applikation (432)
Zu diesem Zeitpunkt steht der Name einer gültigen Applikation in ODIE_ENV[app]. Mit der Prozedur TO_TARGET wird das Skript in der Variable $source_filename interpretiert und der gesamte erzeugte Output in die Variable $require_string gestellt. Dies ist für den nun folgenden Renderer nötig – würden wir den Output nämlich nicht puffern, sondern gleich ausgeben (wie in PHP üblich), könnte der Renderer die Ausgabe nicht mehr beeinflussen.
• Rendern der Ausgabe (442) • Darstellen der Interface (444)
Wenn das Interface angezeigt werden soll – bei Bildern oder anderen externen Dateien ist dies nicht der Fall – führen wir das Interface mit TO_TARGET aus (um auch PHP Code im Interface zuzulassen). Anschließend führt der Wiki-Linker alle Wiki Ersetzungen im Interface durch (459) und die Header werden zum Client geschickt (470). (näheres zu Wiki Ersetzungen im Kapitel Linker).
Wird das Interface nicht dargestellt, müssen wird trotzdem die HTTP Header schicken.(482)
• Ausgeben aller gepufferten Ausgaben (498) • Speichern der Sessiondaten (500) • Speichern des Snipindex (502)
Seite 18
3.6 Beschreibung der Datenstrukturen (pav)
Das System stellt seinen Applikationen zwei spezielle Hashes zur Verfügung. Das Session-Objekt und das ODIE-Environment. Diese zwei Datenstrukturen werden von den Applikationen hauptsächlich als Datenquelle genutzt, die Eigenschaften können aber auch überschrieben werden. In jedem Fall muss man über den Aufbau bescheid wissen, um einerseits die zur Verfügung gestellten Daten richtig zu interpretieren und andererseits nichts falsches einzutragen. Zusätzlich zu diesen Variablen gibt es noch die spezielle Variable $snip_title, in welcher der Titel des aktuell angeforderten Snips steht. Ruft der Benutzer eine Applikation ohne explizitem Snipnamen auf, beinhaltet diese Variable zunächst einen Leerstring. Es ist dann die Aufgabe jeder Applikation selbst auf diesen Spezialfall zu reagieren und nötigenfalls die Variable $snip_title zu füllen.
3.6.1 $SESSION Array ( [username] [interface] [language] [lastaction] [id] [project] [date] )
Das Session-Objekt enthält alle Daten, die eine Session beschreiben. Es wird über Requests hinweg persistent gespeichert, verliert jedoch seine Gültigkeit, wenn lastaction um mehr als den in SESSION_TIMEOUT vereinbarten Zeitraum zurückliegt. (Diese und andere Konstanten sind in der Datei settings vereinbart und können vom Betreiber der ODIE Installation nach belieben geändert werden.) Username ist der Name des aktuell angemeldeten Benutzers. Der Name, mit dem sich der Benutzer am System angemeldet hat bzw. der spezielle User anybody. Dieser Name wird zur eindeutigen Identifizierung der Benutzer einer ODIE Installation herangezogen. Interface ist der Name des vom Benutzer gewählten Look & Feel in den die gesamte Ausgabe überführt wird. Language ist die gewählte Spracheinstellung – alle internationalisierten Strings werden in diese Sprache übersetzt. Lastaction ist ein UNIX-Timestamp, der angibt wann die letzte Aktion des Benutzers war. Führt ein Benutzer längere Zeit keine Aktionen am System durch, verliert seine Session die Gültigkeit und er muss sich erneut anmelden. Zur eineindeutigen Identifizierung einer Session wird die ID herangezogen. Jeder Rechner, der auf das ODIE zugreift kann gleichzeitig nur eine solche ID inne haben. Project ist das aktuell angewählte Projekt und Date das momentane logische Datum. Das logische Datum einer Session beschreibt auf welchen Tag zuletzt von diesem Benutzer zugegriffen wurde. Normalerweise ist das logische Datum gleich dem realen, wenn der Benutzer jedoch den ODIE-Space nach chronologischen Gesichtspunkten durchsucht (beispielsweise über den mini-calendar), wird das logische Datum auf das damals aktuelle Systemdatum gesetzt. Alle Applikationen, die etwas mit Datumsarithmetik zu tun haben, sollten das aktuelle Datum aus Date des Session-Objekts holen. Die Aufbereitung historisierter Daten wird dadurch erheblich erleichtert.
Seite 19
BNF:
(* SESSION *) <session> ::= <username>, <interface>, <language>, <lastaction>, <id>, <project>, <date>
<username> ::= <token> <interface> ::= <token> <language> ::= <token> <lastaction> ::= <timestamp> <id> ::= <md5string> <project> ::= <token> <date> ::= <datestring>
Seite 20
3.6.2 $ODIE_ENV
Array ( [render_format] [mime_type] [show_interface] [request_url] [remote_addr] [editing] [snip] ( [keywords] [creation_timestamp] [content] [content-type] [edit_timestamp] [editor] [creator] [project] [title] [read_count] [write_list] ( [users] ( [allow] [deny] ) [projects] ) [read_list] ( [users] ( [allow] [deny] ) [projects] ) [backlinks] [links] [size] [description] ) [username] [user_data] ( [username] [name] [firstname] [email] [reminder_question] [reminder_answer] [password] [interface] [language] [projects] ) )
Seite 21
Das ODIE-Environment ist die Schnittstelle des Systems zur den Applikationen und umgekehrt. Alle relevanten Daten eines Programmdurchlaufs werden hier festgehalten. Zu Beginn des Requests werden die Eigenschaften dieses Objekts gesetzt, mit Beendigung des Requests werden diese Daten zerstört.
Render_format definiert das Ausgabeformat. Momentan gibt es im ODIE sechs verschiedene Render Formate. Für jedes dieser Formate wird ein anderer Renderer aufgerufen, der die Datendarstellungssymbole in ausgabeformatabhängige Daten konvertiert. Pdf ist nur ein Platzhalter, es wird kein Pdf-Dokument erstellt. Mime_type gibt den MIME Typ der Ausgabedaten an, damit der Browser weiß, wie die Daten zu interpretieren und darzustellen sind. Ist show_interface auf true gesetzt, wird das aktuelle Interface reingelinkt, andernfalls sieht der Benutzer nur den Seiteninhalt. In Request_Url sind die Url Parameter – also der Teil des Querystrings nach dem ? – gespeichert. Die IP-Adresse des Benutzers steht in Remote_Addr, der Username des Benutzers steht in Username. Der boolsche Wert editing ist true wenn der aktuelle Programmdurchlauf das Snip im ODIE_ENV bearbeitet. Diese Eigenschaft muss immer gesetzt werden, wenn eine Applikation schreibend auf das Snip zugreift, damit Concurrent Edits erkannt und behandelt werden können. Die Felder Snip und User_Data werden weiter unten in diesem Kapitel behandelt.
BNF
(* ODIE_ENV *) <odie_env> ::= <render_format>, <mime_type>, <show_interface>, <request_url>, <remote_addr>, <editing>, <snip>, <username>, <user_data>
<render_format> ::= ascii | binary | html | pdf | printable | rtf | text <mime_type> ::= text/html | text/plain | application/octet-stream <show_interface> ::= <boolean> <request_url> ::= <url> <remote_addr> ::= <tuple> <editing> ::= <boolean> <username> ::= <token>
Seite 22
3.6.3 Snip
Das Feld Snip in ODIE_ENV. Diese Struktur wird auch von allen Snip Verwaltungsfunktionen verwendet. Der Aufbau eines Snip-Objekts sieht folgendermaßen aus.
BNF
(* SNIP *) <snip> ::= <keywords>, (* Schlüsselwörter im Snip*) <creation_timestamp>, (* Erstellungszeitpunkt *) <content>, (* Inhalt des Snips *) <content-type>, (* Inhaltstyp *) <edit_timestamp>, (* Zeitpunkt letzte Bearb.*) <editor>, (* letzter Bearbeiter *) <creator>, (* Ersteller *) <project>, (* in welchem Projekt *) <title>, (* Bezeichnung des Snips *) <read_count>, (* Zugriffszähler *) <write_list>, (* Schreibrechte *) <read_list>, (* Leserechte *) <backlinks>, (* Linken auf das Snip *) <links>, (* Linkt auf diese Snips *) <size>, (* Grösse in Byte *) <description> (* optionale Beschreibung *)
<keywords> ::= <token>+ <creation_timestamp> ::= <timestamp> <content> ::= <string> <content-type> ::= plain | calendar | stx | todo | meeting | <deleted> <edit_timestamp> ::= <timestamp> <editor> ::= <token> <creator> ::= <token> <project> ::= <token> <title> ::= <token> <read_count> ::= <digit>+ <write_list> ::= <access_list> <read_list> ::= <access_list> <backlinks> ::= <token>* <links> ::= <token>* <size> ::= <digit>+ <description> ::= <string>
<deleted> ::= deleted- <content-type> <access_list> ::= <acc_userlist>, <acc_grouplist> <acc_userlist> ::= <allow_list>, <deny_list>
<acc_grouplist> ::= <token>* <allow_list> ::= <token>* <deny_list> ::= <token>*
Seite 23
3.6.4 User_Data
Benutzerdaten in ODIE werden generell in dieser Form gespeichert. Alle Funktionen, die Benutzerdaten manipulieren verwenden dieses Format. Auch des Feld user_data in ODIE_ENV ist so aufgebaut.
BNF
(* USER_DATA *)
<user_data> ::= <username>, <name>, <firstname>, <email>, <reminder_question>, <reminder_answer>, <password>, <interface>, <language>, <projects>
<username> ::= <token> <name> ::= <token>+ <firstname> ::= <token>+ <reminder_question> ::= <string> <reminder_answer> ::= <string> <password> ::= <md5string> <interface> ::= <token> <language> ::= <token> <projects> ::= <token>*
Elementare Typen
<token> ::= <wordchar>+ <timestamp> ::= <digit>+ <md5string> ::= (<lowercase> | <digit>){32} <datestring> ::= (* String laut DATE_FORMAT *) <string> ::= (* Beliebige Zeichenkette *) <email> ::= (* Emailaddresse *)
<wordchar> ::= <lowercase> | <uppercase> | <digit> | _ | - <lowercase> ::= a | .. | z <uppercase> ::= A | .. | Z <digit> ::= 0 | .. | 9
Seite 24
3.7 Interfacing (pav)
Diese Kapitel beschreibt den Interfacing Mechanismus von ODIE. Beginnend bei einer Erklärung was wir unter Inferfaces verstehen bis hin zur Erstellung eigener Interfaces wird hier alles erklärt.
3.7.1 Was ist ein ODIE Interface?
ODIE verfügt über komplette Trennung von Daten und ihrer Darstellung. Dazu haben wir ein mehrschichtiges System aufgebaut, in dem jede Schicht über klare Schnittstellen verfügt. Näheres über das Schichtenmodell finden Sie unter „System“.
Die vorletzte Schicht bildet das Interface. Ein Interface ist das, was der Benutzer zur Navigation durch das System zur Verfügung gestellt bekommt. Alle Schaltflächen, Knöpfe, Eingabefelder und Ausgabeelemente, ihr Aussehen und ihre Position werden vom Interface bestimmt.
Zur Beschreibung eines Interfaces können PHP, (x)HTML, CSS und die Wiki-Link Symbole eingesetzt werden.
3.7.2 Elemente eines Interfaces
Alle Interfaces befinden sich in dem Verzeichnis, das in INTERFACE_DIR in defs.inc definiert ist. Per default ist dieses Verzeichnis im Hauptverzeichnis ihrer ODIE-Installation und heisst templates/. Hier hat jedes Interface seinen eigenen Ordner, der den Namen des Interfaces trägt.
Die Dateien brauchen nur angelegt und richtig benannt werden – ODIE fügt sie dann selbständig in die Seite ein, sofern jemand das Interface wählt. Innerhalb dieses Verzeichnisses gibt es eine Reihe von Dateinamen, die spezielle Bedeutung haben. Diese werden nun erklärt. Darüber hinaus können sie beliebige Namen für weitere Dateien und Unterordner, die sie für ihr Interface brauchen anlegen.
<InterfaceName> Jene Datei, die den Namen des Interfaces im gleichnamigen Verzeichnis trägt, beschreibt den generellen Seitenaufbau. In dieser Datei muss sich ein gültiges (x)HTML Dokument befinden, welches mithilfe der Wiki-Link Symbolen genau festlegt, welche Seitenelement wo eingefügt werden sollen. Diese Datei muss vorhanden sein, alle weiteren Dateien – abgesehen von mini-row – sind optional. Sie können beliebig viele Bilder, Applets, Stylesheets oder sonstige Dateien inkludieren. Der Pfad zum Verzeichnis der Interfaces kann über den Wiki-Linker mit {=INTERFACE_DIR} reingeholt werden. Wie ein solches Dokument aufgebaut sein kann, finden Sie am besten heraus, indem sie sich den „Leitfaden zur Erstellung eines Interfaces“ durchlesen und bestehende Interfaces studieren.
Seite 25
style.css Jedes Interface kann eine beliebige Anzahl eigener Stylesheets definieren. Das Stylesheet style.css ist das spezielle Stylesheet, auf das das ODIE zugreifen kann. Dieses wird auch im Popup-Fenster der Schnellhilfe inkludiert. Nach Möglichkeit sollten alle Style Definitionen in dieser Datei stehen. ODIE verwendet eine Reihe eigener Stylesheet Klassen:
table.list (* Tabellen, die Listen anzeigen *) table.list tr.rowA (* Zeile A für gerade Zeilen *) table.list tr.rowB (* Zeile B für ungerade Zeilen *) .css (* Eingabefelder besitzen diese Klasse *) .cssB (* alternative Farbe für Eingabefelder *) a.denied (* Links, die dem Benutzer verwehrt werden *) .h1 (* alle STX Elemente unter <h1> *) .h2 (* alle STX Elemente unter <h2> *) .h3 (* alle STX Elemente unter <h3> *) .h4 (* alle STX Elemente unter <h4> *) .h5 (* alle STX Elemente unter <h5> *) .h6 (* alle STX Elemente unter <h6> *)
header Die Datei header wird – sofern vorhanden – vor allen ausgegebenen Snips eingefügt. Der Inhalt darf aus PHP und (x)HTML bestehen. Normalerweise befindet sich in dieser Datei eine speziell formatierte Überschrift mit snipbezogenen Links.
footer Analog zu header, wird footer nach der Ausgabe eines Snips eingefügt.
mini-header Die Mini Elemente werden im Gegensatz zu den zwei bereits behandelten Markup-Dateien nicht vor/nach Snips eingefügt, sondern bilden den Rahmen um Control-Panel Elemente. Control-Panel Elemente sind kleine Applikationen, die auf jeder Seite eingefügt werden – normalerweise in einem eigenen Navigationsbalken oder ähnlichem – und dienen der Orientierung und Navigation. (Backlinks, Mini-Calendar und Snip-Info sind Beispiele für Control-Panel Elemente) In der Variable $string kann innerhalb eines PHP Blocks auf den Titel des Control-Panel Elements zugegriffen werden. Die Datei mini-header leitet ein Control-Panel Element ein.
mini-footer Der mini-footer kann genauso wie der mini-header auf $string zugreifen. Der Footer beendet ein Control-Panel Element.
mini-row Wenn ein Control-Panel Element listenartige Ausgabe besitzt – wie beispielsweise die Applikation Backlinks – wird statt dem Listenelement die Datei mini-row ausgegeben. In dieser Datei muss sich neben optionalem Markup ein PHP Block befinden, der die Zeile ausgibt. Im einfachsten Fall sieht die Datei mini-row folgendermaßen aus:
<?php echo $string ?><br />
Seite 26
3.7.3 Weitere Einflüsse auf das Aussehen
Renderer Der Renderer – welcher die letzte Schicht auf dem Weg des Snips zum Benutzer darstellt – kann das Aussehen ihres Interface nicht beeinflussen. Es kann aber dafür sorgen, dass das Interface gar nicht angezeigt wird. Bei den Renderformaten binary, ascii und printable ist dies der Fall.
global.css Im Hauptverzeichnis der Interfaces befindet sich ein Stylesheet Dokument mit dem Namen global.css, welches in alle Interfaces eingebunden werden sollte. Hier werden globale Styledefinitionen vom ODIE vorgenommen, die das Aussehen beeinflussen. Nur erfahrene Benutzer sollten auf die Inkludierung dieses Stylesheets verzichten.
Browser Das Bild, das der Benutzer letztendlich auf seinem Bildschirm sieht, hängt von der eingesetzten Browsersoftware ab.
Seite 27
3.7.4 Leitfaden zur Erstellung eines Interfaces Dieses Kapitel begleitet sie auf dem Weg zum eigenen Interface. Es wird ein minimales Interface mit dem Namen simple erstellt.
Anlegen der Dateien Legen sie im Verzeichnis, in dem sich alle Interfaces befinden einen neuen Ordner namens simple an. Das Verzeichnis heißt normalerweise templates/ und befindet sich im Hauptverzeichnis der ODIE-Installation. (In defs.inc steht der Name des Verzeichnisses) Erstellen sie im neu erstellten Verzeichnis zwei Dateien: simple und style.css. Achten sie beim Bearbeiten der Dateien darauf, dass der Text ohne Formatierungsinformationen abgespeichert wird. Verwenden sie einen einfachen Texteditor.
Bearbeiten von simple Simple ist die Datei, in der sich die Formatierungsbefehle für die Benutzeroberfläche befinden. Hier eine minimalistische Ausführung eines einfachen Interfaces – fügen sie folgende Zeilen in die Datei simple ein:
<html> <head> <title>{=snip/title}</title> <link rel="stylesheet" href="{=INTERFACE_DIR}global.css" /> <link rel="stylesheet" href="{=INTERFACE_DIR}simple/style.css" /> </head> <body> <div>{!menubar}</div> <div>{=snip/content}</div>
</body> </html>
Erläuterungen In Zeile drei wird die Variablensubstitution des Linkers verwendet um im Titel der Seite immer den aktuellen Titel des Snips auszugeben. Die Zeilen vier und fünf fügen das globale und das lokale Stylesheet in die Seite ein. Der Wiki-Linker ersetzt zur Laufzeit die Variable INTERFACE_DIR mit dem Pfad zum Interface, sodass der Browser die zwei Stylesheets finden kann. {!menubar} führt die Applikation menubar (eine Liste von Links auf die gängigsten Applikationen) aus und fügt den erzeugten Output an der angegebenen Stelle ein. Mit {=snip/content} wird schließlich der vom Programmdurchlauf erzeugte Inhalt in das Interface reingeholt. Um ein besseres Verständnis der Wiki-Link Symbole zu erlangen, lesen sie die Linker-Dokumentation, weiter unten in diesem Manual oder online im ODIE Documentation Project. Außerdem sollten sie HTML verstehen. Im Internet gibt es eine hervorragende Quelle, um HTML zu erlernen: SelfHTML unter http://selfhtml.teamone.de/.
Seite 28
style.css In das Stylesheet des Interfaces können sie beliebige CSS Formatierungen eintragen. Eine minimalistische Ausführung könnte beispielsweise so aussehen:
body { font-family: Arial; } table.list { background-color: #C0C0C0; } table.list tr.rowA { background-color: #E0E0E0; } table.list tr.rowB { background-color: #F0F0F0; }
Erläuterungen table.list, tr.rowA und tr.rowB sind von ODIE definierte Styleklassen, die das Aussehen von Tabellen bestimmen. RowA und RowB werden alternieren an die Zeilen vergeben. Unterschiedliche Hintergrundfarben vereinfachen es, die Zeile zu halten. Eine ausführliche Einführung in CSS finden sie unter http://selfhtml.teamone.de/.
Das neu erstellte Interface ist nun fertig und kann – wie alle anderen Interfaces auch – über Benutzereinstellungen direkt im ODIE ausgewählt werden.
Seite 29
4 Moduldokumentation
4.1 Linker (gez)
Der sogenannte Linker bietet eine einfache und effiziente Methode, Inhalte in Texte einzufügen und untereinander zu verlinken. Bewerkstelligt wird dies durch WikiLink-Symbole, die in den Text eingefügt werden. Diese werden vom Linker durch die tatsächlichen Inhalte ersetzt. Durch die Linker-Symbole können den verlinkten Snips sogar Parameter übergeben werden!
4.1.1 Symbole
Parametriesierbare Symbole
4.1.1.1.1 Linken auf andere Snips
{snipname}
Dieser Text wird durch einen link auf das snip ersetzt. Wenn das Zielsnip nicht existiert wird die Möglichkeit geboten, es zu erstellen.
Beispiel Lesen sie mehr zum Thema {Linker} im ODP.
wird zu einem Link auf das Snip „Linker“ Lesen sie mehr zum Thema Linker im ODP.
{[snipname]*app}
Auf diese Weise kann entweder auf eine Applikation gelinkt werden oder ein Snip mit einer bestimmten Applikation als Ziel des Links definiert werden.
Beispiel Aktuelle Informationen sind in der Applikation {*today} zu finden.
Wird zu ienem Link auf die today-Applikation Aktuelle Informationen sind in der Applikation today zu finden.
{snipname|[snipname]*app}"beschriftung"
So kann einem Link eine Beschriftung zugewiesen werden.
Beispiel Lesen sie mehr zum Thema {Linker}“Der Wiki-Linker“ im ODP.
wird zu einem beschrifteten Link Lesen sie mehr zum Thema Der Wiki-Linker im ODP
Seite 30
4.1.1.1.2 Inkludieren von Snips
{:snipname}
Durch dieses Symbol kann der Inhalt von anderen Snips in das aktuelle eingefügt werden. Dafür sind natürlich Zugriffsrechte auf das Zielsnip von Nöten. Um die Gefahr von Endlosschleifen zu bannen, kann ein snip nicht von einem snip inkludiert werden, dass dieses snip bereits inkludiert hat. Einfacher formuliert etwa so: Wenn man sich die Verkettung der Snips baumartig vorstellt, dürfen keine Schleifen entstehen, bzw. vom Weg von der Wurzel bis zu einem beliebigen Ast darf jedes Snip nur einmal vorkommen – auf anderen Ästen kann das Snip auch gleichzeitig vorkommen.
Beispiel ...dies wird im Band 4, Alternative Sprachen genauer behandelt. Hier ein kurzer Ausschnitt: {:band4_kapitel1}
Anstelle des Linker Symbols wird zur Laufzeit der Inhalt des Snips band4_kapitel1 eingefügt.
4.1.1.1.3 Ausführen von Applikationen
{!app:titel}
Auf diese Weisen können Applikationen, die sich im Schichtenmodell auf Schicht 2 befinden, ausgeführt werden. Nach dem Doppelpunkt kann der Name des snips, für den die Applikation ausgeführt wird werden soll, übergeben werden. Wenn auf das '!' ein zweites '!' folgt, wird der Linker angewiesen, das Ergebnis der Ersetzung noch einmal einer WikiLink Übersetzung zu unterziehen.
Beispiel {!stx:band4_kapitel1}
-- {!edit:band4_kapitel1}
würde die Applikationen stx (Aufbereiten von Texten) und edit (Bearbeiten von Texten) jeweils auf das Snip band4_kapitel1 anwenden und anstelle der Linker Symbole einfügen.
4.1.1.1.4 Parameterübergabe
Diesen Symbolen kann man Parameter übergeben. Die Syntax dazu lautet folgendermaßen:
{symbol[name|app][:name=wert:name=wert...]}
Beim Ausführen von Applikationen kann vor dem ersten Parameter zwischen zwei Doppelpunkten der Name des Snips übergeben werden, für das die Applikation aufgerufen werden soll.
Diese Symbole überprüfen natürlich auch die Zugriffsrechte des aktuellen Benutzers, bevor Sie durch Daten ersetzt werden.
Seite 31
Beispiele
{!raw-index} ruft die Applikation raw-index auf. Eine alphabetische Liste aller Snips wird ausgegeben
{!raw-index:type=creator:pattern=koarl} ruft die Applikation raw-index auf, gibt ihr allerdings noch die Parameter type und pattern bekannt. Eine alphabetische Liste von jenen Snips, die von „koarl“ erstellt wurden wird ausgegeben. (Nähere Informationen zu raw-index in der Benutzerdokumentation)
{*raw-index:type=creator:pattern=koarl} Parametrisierung funktioniert auch bei allen anderen Wiki Symbolen. Hier wird – wie vom * erwartet – ein Link auf die Applikation raw-index in der oben beschriebenen Form erstellt.
Standard-Symbole
4.1.1.1.5 Einfügen von System-Werten
{=variable}
So können Informationen wie der Name des aktuellen Benutzers eingefügt werden. Folgende Werte können eingefügt werden:
project das aktuelle projekt username der name des aktiven Benutzers render_format das format, indem die ausgabe erfolgt mime_type der im http-header mitgeschickte mime-code request_url die URL-Zeile des Aufrufs remote_addr die ip-adresse des aktiven Benutzers user_data ein array mit den daten des aktiven users. mit user_data/index können
die verschiedene indizes angewählt werden. snip die daten des gerade angezeigten snips. mit snip/index können die
verschiedenen indizes bearbeitet werden. app der name der ausgeführten applikation content die ausgabe der ausgeführten applikation interface_dir das verzeichnis, in dem sich das aktive interface befindet
4.1.1.1.6 URL-Formulierung
{@snipname}
liefert die URL eines snips zurück
4.1.1.1.7 Internationalisierung
{?text}
liefert 'text' in der eingestellten Sprache zurück (falls vorhanden).
Seite 32
4.1.2 Escaping von Symbolen
Wenn in einem Text geschwungene Klammern vorkommen, die ein gültiges WikiLink Symbol ergeben, aber als Text behandelt werden sollen, kann der öffnenden Klammer ein '\' vorangestellt werden. Dieser weist den Linker an, das Symbol zu ignorieren.
4.1.3 Verwendung
Die Einbindung des Linkers erfolgt durch die Funktion wiki_link(String text). Rückgabewert ist der gelinkte Text. Diese Funktion befindet sich in der Datei linker.inc im LIB_DIR. Darin befindet sich ein Regular Expression, welche Linker Symbole findet und an die Funktion wiki_replace weiterreicht, die die eigentliche Ersetzung vornimmt.
4.2 Renderer (mac)
Die Renderer sind die Module in odie, die für die Ausgabe in verschiedenen Formaten verantwortlich sind. Der Modulablauf gliedert sich wie folgt:
Verteiler (render)
XML-Parser
HTML (render_html)
PLAIN (render_plain)
RTF (render_rtf)
Snipcontent
Snipcontent, neues Format
trimall
getLengths
to_blocktext
Ausgabe
sonstige
Seite 33
Aufgerufen wird die Funktion render(), die zuerst mit Hilfe des XML Parsers das übergebene Dokument in seine Bestandteile zerlegt und anschließend den gewünschten Renderer aufruft. Außerdem fängt render() grunlegende Fehler, wie z.B. eine leeren Snipinhalt, ab. Als zweiten Parameter muss man der Funktion das gewünschte Ausgabeformat übergeben, folgende Formate sind möglich:
• „binary“: Das Dokument wird als binär erklärt und zum Download freigegeben • „html“: Ruft render_html auf • „text“: Ruft render_plain, zeigt das Interface um den Text herum an • „ascii“: Ruft render_plain, jedoch ohne Interface • „rtf“: ruft rtf_odie_close, render_rtf und rtf_odie_header. Das entstehende RTF-
Dokument wird mit hilfe eines Plugins, falls vorhanden, angezeigt. • „printable“: Rendert garnicht, entfernt nur das Interface
Die einzelnen Renderer (render_plain, render_html und render_rtf) durchkämmen das übergemene XML- Dokument nach bekannten Tags und wandeln diese in das geünschte Format um. Eine genaue Funktionalitätsbeschreibunge der einzelnen Untermodule ist in der Funktionsdokumentation unter render_plain(), render_html() und render_rtf() zu finden.
Seite 34
4.3 Structured Text (pav)
STX steht für Structured TeXt und beschreibt ein Textformat, das es ermöglichen soll, aus intuitiv eingegebenen Texten ansehnliche Formatierungen zu erzeugen. Die Texte werden als reiner Text mit einigen Spezialzeichen eingegeben.
Für den STX-Parser besteht ein Dokument aus mindestens einer logischen Zeile, die wiederum aus mindestens einer physischen Zeile besteht. Logische Zeilen – oder auch Blöcke genannt – beginnen und enden mit Leerzeilen und haben eine bestimmte Einrückung. Physische Zeilen enden mit einem Zeilenwechsel (newline). Alle physischen Zeilen eines Blocks haben die gleiche Anzahl von Leerzeichen am Anfang der Zeile, sie sind gleich weit eingerückt. (Für einen Tabulator werden zwei Spaces angenommen)
Es soll nun ein grober Überblick über den Ablauf beim Formatieren der STX-Dokumente angeführt werden.
Zu Beginn der Textformatierung liest der Parser alle physischen Zeilen ein und gruppiert sie nach unterschiedlichen Einrückungsstufen zu logischen Zeilen. (Zeile 78 in stx.inc)
Dann werden die logischen Zeilen nach vorformatiertem Text durchsucht. Vorformatierter Text wird in Nonproportionalschrift ausgegeben und es werden keine weiteren STX Ersetzungen vorgenommen. Wenn die letzte physische Zeile eines Blocks zwei Doppelpunkte an der letzten Stelle haben, sind folgende Blöcke weiter eingerückt. Dies geschieht in Zeile 112 in stx.inc. Genaueres zum Aufbau der Funktion stx_parse finden sie in der Funktionsdokumentation.
Blöcke, die nicht vorformatiert sind, werden an die Funktion styleBlock() weitergegeben, welche sich um die eigentliche Formatierung kümmert. Bei logischen Zeilen, die nur aus einer physischen Zeile bestehen, muss geprüft werden, ob es sich um eine Überschrift handelt (Zeile 210). Wenn der folgende Block nicht weiter eingerückt ist – es sich also nicht um eine Überschrift handelt – werden in der Zeile mit der Funktion stx_rep() alle einzeilige Ersetzungen vorgenommen (Zeile 241). Näheres zur Funktionsweise von stx_rep() siehe Funktionsdokumentation.
Wenn ein Block aus mehreren physischen Zeilen besteht, müssen Listen entdeckt und bei Bedarf ersetzt werden (ab Zeile 260). Dabei wird untersucht ob das erste Zeichen mehrerer physischer Zeilen ein Bindestrich (für ungeordnete Listen) oder ein 1) (für numerierte Listen) ist.
Zusätzlich zu den bereits erklärten STX Funktionalitäten gibt es noch Optionen, die in der allerersten Zeile des STX-Dokuments aktiviert werden müssen. Steht in der ersten Zeile der String #STX: handelt es sich um eine Optionszeile und es wird geprüft ob die Tokens break, numbered und index gesucht, welche die gleichnamigen Optionen aktivieren. (Zeile 70)
Seite 35
4.4 XML-Parser (mac)
XML ist eine textbasierte Metasprache, die die Beschreibung, den Austausch, die Darstellung und die Manipulation von strukturierten Daten erlaubt, so dass diese - vor allem über das Internet - von einer Vielzahl von Anwendungen genutzt werden können.XML steht für eXtensible Markup Language. Unter anderem basiert XHTML auf XML, wodurch es dem Parser möglich wird, auch HTML- Dokumente zu bearbeiten – für die Renderer ein wichtiges Feature. Grundsätzlich besteht jedes Datenelement in XML aus einem öffnenden Tag (<tag>) und einem zugehörigen schließenden Tag (</tag>), gekennzeichnet durch das /. Sauberes XML folgt einer strengen Hierarchieordnung, es dürfen keine Tags vermischt werden. Hier ein Beispiel:
<content> <text>Inhalt</text> <zitat> <sprecher> Name </sprecher> <text> Zitat </text> </zitat> </content>
Der odie- XML Parser bietet die Möglichkeit, ein solches Dokument in seine Bestandteile aufzugliedern und es dem Programmierer damit leicht zu machen, auf die Datenelemente zuzugreifen. Bei der Entwicklung wurde es zu einem großen Problem, dass HTML so gut wie nie sauberes XML ist, wodurch es zu einer Reihe von Sonderfällen kommt. Daher sind die einzelnen Tags durch einen Nicht- Tag- Inhalt (ntc, non tag content) getrennt, um folgende Konstrukte unterstützen zu können:
<content> <text>Text</text> Das gehört hier nicht her <text>Text</text>
</content>
Dieser Text ist nicht innerhalb eines Tags.
Seite 36
Demnach würde das erste Dokument nach dem parsen so aussehen (Dargestellt in einer PHP- Arraystruktur):
[content] => Array ( [ntc_0] => [text] => Inhalt [ntc_1] => [zitat] => Array ( [ntc_0] => [sprecher] => Name [ntc_1] => [text] => Zitat [ntc_2] => ) [ntc_2] => )
Für den Entwickler ist also, um auf das Zitat zugreifen zu können, nur noch
$xml[‘content’][‘zitat’]
notwendig, er muss sich nicht mühsam den Inhalt heraussuchen.
Mehrere gleichnamige Tags in der selben Ebene der Dokumenthierarchie werden durchnumeriert (zitat, zitat_1, zitat_2, ….).
Detaillierte Informationen über die Parser- Untermodule findet man in deren Funktionsbeschreibung. Diese sind:
• parse() • do_parse() • unparse() • getTag() • findTagEnd() • countOpenTags()
Seite 37
5 Applikationsdokumentation
5.1 Application not Found
Dateiame: system/application-not-found
Programmierer: Pavlu Autor: Maczejka
Kurzbeschreibung: Meldung eines Fehlers beim Applikationsaufruf
Verwendet: i18n()
Detailbeschreibung
Ausgabe eine Fehlermeldung, dass die versuchte Applikation nicht gefunden werden konnte. Wenn es die versuchte Applikation gibt, aber trotzdem ein Fehler entstanden ist, wird eine dem entsprechende Meldung abgegeben.
Paramter
keine
Input
$tried_application Applikation, die versucht wurde aufzurufen
Probleme
keine
Verbesserungsvorschläge
keine
Seite 38
5.2 Applications
Dateiame: system/applications
Programmierer: Pavlu Autor: Maczejka
Kurzbeschreibung: Auflistung von Applikationen
Verwendet: miniHeader(), miniFooter(), miniRow(), form_href
Detailbeschreibung
Folgende Liste wird am Schnelldrucker internationalisiert durch Beistriche getrennt ausgegeben: 'calendar','meeting','deleted','today','todo'
Paramter
keine
Input
keiner
Probleme
keine
Verbesserungsvorschläge
keine
Seite 39
5.3 Backlinks
Dateiame: system/backlinks
Programmierer: Kolm Autor: Maczejka
Kurzbeschreibung: Auflistung von Backlinks
Verwendet: miniHeader(), miniFooter(), miniRow(), i18n(), getBacklinks()
Detailbeschreibung
Auflistung aller Backlinks zum aktuellen Snip, sollten keine vorhanden sein entsprechende Ausgabe.
Paramter
keine
Input
keiner
Probleme
keine
Verbesserungsvorschläge
keine
Seite 40
5.4 cal-all
Dateiame: system/cal-all
Programmierer: Seywerth Autor: Seywerth
Kurzbeschreibung: Eine Kalenderansicht vom ODIE
Verwendet: getDayInfo(), parseDateTime(), curDate(), restOfTime(), getSnipsByContentType(), form_href(), writeAccess(), i18n(), wiki_link()
Detailbeschreibung
Cal-all ist eine Applikation die es ermöglicht, alle Events bzw. alle Events in einer bestimmten Zeitspanne chronologisch aufzulisten. Cal-all ist eine der 4 Kalender-Applikationen.
Parameter GET:
list ‘all’ – dadurch werden alle Events aufgelistet
POST: event_jump wenn gesetzt wurde der ’jump to’ Button gedrückt jump_dd der Tag zu dem gesprungen wird (bsp.: 21) jump_mmm der Monat zu dem gesprungen wird (bsp.: jan) jump_yyyy das Jahr zu dem gesprungen wird (bsp.: 2002)
event_search wenn gesetzt wurde auf ’find events’ gedrückt event_start_dd der Tag ab dem aufgelistet werden soll event_start_mmm der Monat ab dem aufgelistet werden soll event_start_yyyy das Jahr ab dem aufgelistet werden soll event_end_dd der Tag bis zu dem aufgelistet werden soll event_end_mmm der Monat bis zu dem aufgelistet werden soll event_end_yyyy das Jahr bis zu dem aufgelistet werden soll
Seite 41
Probleme
<nobr> ist nicht XHTML konform – wird aber benötigt damit die Datumsangaben nicht umgebrochen werden.
Verbesserungsvorschläge
Alternative zu <nobr> finden.
Seite 42
5.5 cal-event
Dateiame: system/cal-event
Programmierer: Seywerth Autor: Seywerth
Kurzbeschreibung: Eine Kalenderansicht vom ODIE
Verwendet: getDayInfo(), parseDateTime(), form_href(), writeAccess(), i18n(), wiki_link(), getActiveProject(), getActiveUser()
Detailbeschreibung
Cal-event ist eine Applikation die es ermöglicht, ein Event inklusive Beschreibung zu erstellen, bearbeiten, löschen oder einfach anzuzeigen. Cal-event ist eine der 4 Kalender-Applikationen.
Parameter GET:
event_edi stellt die pos. des zu bearbeitenden Events dar event_ins ist die pos. des neu einzufuegenden Events
POST: event_jump wenn gesetzt wurde der ’jump to’ Button gedrückt jump_dd der Tag zu dem gesprungen wird (bsp.: 21) jump_mmm der Monat zu dem gesprungen wird (bsp.: jan) jump_yyyy das Jahr zu dem gesprungen wird (bsp.: 2002)
event_new ist gesetzt wenn ein neues Event angelegt wird
Seite 43
Probleme
keine
Verbesserungsvorschläge
keine
Seite 44
5.6 cal-month
Dateiame: system/cal-month
Programmierer: Seywerth Autor: Seywerth
Kurzbeschreibung: Eine Kalenderansicht vom ODIE
Verwendet: getDayInfo(), parseDateTime(), curDate(), getSnipsByContentType(), form_href(), i18n(), wiki_link()
Detailbeschreibung
Cal-month ist eine Applikation die es ermöglicht, alle Events eines bestimmten Monats in einer übersichtlichen Form darzustellen. Cal-month ist eine der 4 Kalender-Applikationen.
Parameter POST:
event_jump wenn gesetzt wurde der ’jump to’ Button gedrückt jump_dd der Tag zu dem gesprungen wird (bsp.: 21) jump_mmm der Monat zu dem gesprungen wird (bsp.: jan) jump_yyyy das Jahr zu dem gesprungen wird (bsp.: 2002)
Seite 45
Probleme
keine
Verbesserungsvorschläge
Tagesübergreifende Events irgendwie verwirklichen und brauchbar darstellen.
Seite 46
5.7 calendar
Dateiame: system/calendar
Programmierer: Seywerth Autor: Seywerth
Kurzbeschreibung: Eine Kalenderansicht vom ODIE
Verwendet: getDayInfo(), parseDateTime(), saveEvent(), curDate(), restOfTime(), getSnipsByContentType(), form_href(), writeAccess(), i18n(), wiki_link()
Detailbeschreibung
Calendar ist eine Applikation die es ermöglicht, alle Events eines bestimmten Tages in einem erweiterbarem Raster von 8 – 18 Uhr aufzulisten. Calendar ist eine der 4 Kalender-Applikationen.
Die XML Struktur der Calendar Applikation hat folgenden Aufbau:
<!DEFINE calendar (event*)> <!DEFINE event (title, description, start, end, editor)> <!DEFINE title (#PCDATA)> <!DEFINE description (#PCDATA)> <!DEFINE start (#PCDATA)> <!DEFINE end (#PCDATA)> <!DEFINE editor (#PCDATA)>
Parameter GET:
event_del entspricht der Nummer des zu löschenden Events crc eine Prüfsumme fürs Löschen
Seite 47
POST: event_jump wenn gesetzt wurde der ’jump to’ Button gedrückt jump_dd der Tag zu dem gesprungen wird (bsp.: 21) jump_mmm der Monat zu dem gesprungen wird (bsp.: jan) jump_yyyy das Jahr zu dem gesprungen wird (bsp.: 2002)
event_save ist gesetzt wenn das event gespeichert werden soll event_start_hh die Start-Stunde des zu speich. Events (bsp.: 14) event_start_ii die Start-Minute des zu speich. Events (bsp.: 55) event_end_hh die End-Stunde des zu speich. Events (bsp.: 15) event_end_ii die End-Minute des zu speich. Events (bsp.: 20) event_title der Titel des zu speichernden Events event_desc die Beschreibung des zu speichernden Events
event_del entspricht der Nummer des zu löschenden Events crc eine Prüfsumme fürs Löschen
Probleme
keine
Verbesserungsvorschläge
Tagesübergreifende Events irgendwie verwirklichen (zb.: mit einem eigenen Snip dafür).
Seite 48
5.8 Comments
Dateiame: system/comments
Programmierer: Pavlu Autor: Maczejka
Kurzbeschreibung: Ausgabe von Kommentaren
Verwendet: i18n(), getCommentSnips(), getHeader(), wiki_link()
Detailbeschreibung
Wenn der aktuelle Snip nich existiert, passiert nichts. Ansonsten werden alle Kommentarsnips mit getCommentSnips() geholt und mit Hilfe von wiki_link() am Schirm ausgegeben. Am Ende wird ein Link ausgegeben, mit dem man ein neues Kommentar erzeugen kann.
Paramter
keine
Input
keiner
Probleme
keine
Verbesserungsvorschläge
keine
Seite 49
5.9 Comments Info
Dateiame: system/comments-info
Programmierer: Pavlu Autor: Maczejka
Kurzbeschreibung: Ausgabe der Anzahl von Kommentaren + Ersteller
Verwendet: i18n(), getCommentSnips(), getHeader(), form_href()
Detailbeschreibung
Die Anzahl der Kommentare zu aktuellen Snip wird ausgegeben, sowie deren Ersteller. Die gesamte Ausgabe ist ein Link auf die comments- Appliaktion.
Paramter
keine
Input
keiner
Probleme
keine
Verbesserungsvorschläge
keine
Seite 50
5.10 Create-snip
Applikationsname create-snip
Dateiname system/create-snip
Kurzbeschreibung Erstellt ein neues snip
Erfordert isProjectMember(), isBadName(), i18n(), writeSnip(), wiki_link(), getHeader(), getEditHandler(), writeAccess(), getActiveUser(), getContentTypes()
Verantwortliche zlabinger, pavlu, maczejka
Autor zlabinger
Beschreibung
Diese Applikation erstellt nach Überprüfung der Berechtigungen ein neues Snip und leitet an die zuständige edit-applikation weiter. Wenn die Applikation ohne Parameter aufgerufen wird, wird eine Maske zur Eingabe des Snipnamens und des content-types angezeigt.
Diese Applikation wird auch aufgerufen, wenn ein Snip mit dem content-type unknown angezeigt werden soll. In diesem Fall wird nur der content-type gesetzt, das snip aber nicht überschrieben.
Wenn das Snip erstellt worden ist, wird die durch getEditHandler() ermittelte Bearbeitungsapplikation aufgerufen.
Parameter
create_title der name des zu erstellenden snips create_content_type der content-type des zu erstellenden snips create_submit ‚true’, wenn das snip erstellt werden soll (auf submit gedrückt wurde)
Seite 51
5.11 Create-user
Applikationsname create-user
Dateiname system/create-user
Kurzbeschreibung Legt einen neuen Benutzer an
Erfordert createUser(), i18n(), form_href()
Verantwortliche zlabinger, pavlu, kolm
Autor zlabinger
Beschreibung
Mit dieser Applikation ist es möglich, neue Benutzer im odie anzulegen. Wenn sie ohne Parameter aufgerufen wird, erscheint eine Eingabemaske, in die der Benutzer seine Daten eingeben kann.
Sollte der gewünschte Benutzername bereits vergeben sein, unterbreitet die Applikation Änderungsvorschläge.
Neben den allgemeinen Daten ist auch die Eingabe einer Erinnerungsfrage und –antwort möglich. Diese wird einem gestellt, wen man sein Passwort vergessen hat. Wenn diese Frage und Antwort nicht gesetzt werden, kann jeder Benutzer das Passwort ändern.
Wenn der neue Benutzer angelegt ist, wird ihm automatisch ein zufälliges Kennwort zugewiesen und an die angegebene e-mail adresse geschickt.
Parameter
create_submit wenn dieser parameter gesetzt ist, wird die erstellung des benutzers vorgenommen
username der benutzername, den der user gerne hätte name Familienname firstname Vorname reminder_question Passwort Erinnerungsfrage reminder_answer Passwort Erinnerungsantwort
Seite 52
5.12 Day-summary
Dateiame: system/day-summary
Programmierer: Pavlu Autor: Pavlu
Kurzbeschreibung: zeigt eine Zusammenfassung zum Tage, sowie den Kalender an
Verwendet: parseDate(), wiki_link()
Detailbeschreibung
Diese Applikation zeigt eine Übersicht über alle Aktivitäten im ODIE an einem bestimmten Datum.
Für die zwei Sniplisten wird jeweils die Applikation snip-list mit den Parametern crit=modified bzw. crit=created inkludiert. Das Kalenderblatt ist ein inkludierter calendar. Näheres zu den einzelnen inkludierten Elementen finden Sie in der entsprechenden Dokumentation.
Input
• param (optional) • day (optional)
Mt day kann ein einzelner Tag direkt angesprungen werden. Das Format des Wertes in day entspricht dem DATE_FORMAT, welches in defs.inc definiert ist. (normalerweise dd-mon-yyyy)
Mögliche Werte für param sind today und eine Monatsangabe der Form yyyymm. Dieser Parameter dient nicht dem direkten Zugriff auf einzelne Tage, sondern der Navigation im mini-calendar. Je nach param wird die aktuelle Monatsansicht auf den angegebenen Monat oder das aktuelle Monat zurückgesetzt und der zuvor aktive Tag im neuen Monat angezeigt.
Seite 53
Probleme
keine
Verbesserungsvorschläge
keine
Seite 54
5.13 Deleted
Applikationsname deleted
Dateiname system/deleted
Kurzbeschreibung Diese Applikation verwaltet die Snips im Papierkorb
Erfordert snipExists(), getHeader(), writeHeader(), i18n(), deleteSnip(), getSnipList(), form_href(), writeAccess()
Verantwortliche zlabinger, pavlu, kolm
Autor zlabinger
Beschreibung
Wenn Snips gelöscht werden, werden Sie nicht physisch gelöscht sondern in den Papierkorb verschoben. Praktisch geschieht dies, indem deleted- vorne an den content-type angefügt wird. Die Applikation deleted ermöglicht die Verwaltung der Snips, die sich in diesem Zustand befinden. Sie können entweder endgültig gelöscht werden oder wiederhergestellt werden.
Wenn die Funktion ohne Parameter aufgerufen wird, wird nur eine Liste der gelöschten Snips angezeigt.
Parameter
resurrect wenn dieser Parameter true ist, wird das aktuelle snip wiederhergestellt kill wenn dieser Parameter true ist, wird das aktuelle snip endgültig gelöscht sort_key der schlüssel nachdem die anzeige sortiert werden soll (name, creator,
edit_timestamp) sort_dir die richtung (entweder az oder za)
Seite 55
5.14 Dictgen
Dateiame: system/dictgen
Programmierer: Maczejka Autor: Maczejka
Kurzbeschreibung: Oberfläche zum Bearbeiten eines Wörterbuchs
Verwendet: i18n(), form_href(), newLanguageForm(), deleteLanguage(), createNewLanguage(), loadDictionary(), loadLangs(), updateDictionary(), writeDictionary(), showWordList()
Detailbeschreibung
Zuerst wird überprüft, ober der Benutzer odie_admin ist, sonst hat er keinen Zugriff auf den Dictgen. Danach wird $action in einer case- Struktur abgearbeitet:
• „new_language“ ruft newLanguageForm() • „del_language“ ruft deleteLanguage und übergibt den Sprachnamen • „create_language“ ruft createNewLanguage und übergibt den Sprachnamen • „update“ aktualisiert das Wörterbuch mithilfe der showWordList- Formulardaten und
ruft updateDictionary sowie writeDictionary • „delete“ wie update, nur wird der Eintrag gelöscht • default: showWordList wird aufgerufen
Paramter
Action Formulardaten
Input
keiner
Probleme
keine
Verbesserungsvorschläge
keine
Seite 56
5.15 Edit
Applikationsname edit
Dateiname system/edit
Kurzbeschreibung Ermöglicht die Bearbeitung von Text-Snips
Erfordert writeAccess(), read, edit, wiki_link(), getActiveUser, writeSnip(), lockSnip(), unlockSnip()
Verantwortliche zlabinger, pavlu
Autor zlabinger
Beschreibung
Diese Applikation ermöglicht die Bearbeitung von Text-Snips, das sind solche mit den content-types stx oder plain. Es wird ein Eingabefeld angezeigt, in dem der Benutzer den Text ändern kann. Zuvor wird natürlich das Snip für diesen Benutzer gelocked. Diese Applikation setzt $odie_env[editing] auf true, um die Mitsendung des keepAliveScripts zu veranlassen. Dies bedeutet, dass regelmässig Requests an den Server geschickt werden, um das Snip weiter für den Benutzer gesperrt zu haben.
Das betätigen des submit-Knopfs führt zum erneuten Aufruf der edit-Applikation, diesmal mit dem Parameter edit_submit auf save gesetzt. Dies veranlasst die Speicherung der post-mässig mitgeschickten Daten.
Parameter
String edit_submit wenn auf save gesetzt, versucht die Applikation die Daten in edit_content zu speichern
String edit_content Der Inhalt des Snips, wenn auf submit gedrückt wurde
Seite 57
5.16 Edit-project
Applikationsname edit-project
Dateiname system/edit-project
Kurzbeschreibung Ermöglicht die Erstellung/Administration von Projekten
Erfordert controlPanel(), getActiveUser(), i18n(), wiki_link(), isProjectAdmin(), isProjectMember(), getActiveProject(), isProjectCreator()
Verantwortliche zlabinger, pavlu, kolm
Autor zlabinger
Beschreibung
Diese Applikation ermöglicht das Erstellen und Administrieren von Projekten. Sie zeigt eine Liste von Benutzern links an. Benutzer können aus dem Projekt entfernt und in das Projekt hinzugefügt werden.
Weiters werden Links zu anderen administrativen Applikationen angezeigt (importer, kill_project wenn Benutzer Projektersteller ist)
Um diese Aktion auszuführen muss man natürlich Administrator im Projekt sein.
Parameter
create_project wenn auf new_project gesetzt, wird ein neues Projekt erstellt project_name der name des neu zu erstellenden projekts project_member_add auf add gesetzt, wenn ein neues mitglied hinzugefügt werden soll project_member_del der name des benutzers, der gelöscht werden soll
Seite 58
5.17 Email
Dateiame: system/email
Programmierer: Pavlu Autor: Pavlu
Kurzbeschreibung: Versendet die aktuelle Seite als Email
Verwendet: check_email(), form_href(), getActiveUser(), getUserData(), i18n()
Detailbeschreibung
Setzt eine absolute URL zur vorher aktuellen Seite zusammen.
Paramter
keine
Input
$email Empfängeradresse $message Zu sendende Nachricht $url Hyperlink zum betrachteten Snip
Probleme
Seiteninhalt kann nur in unzufrieden stellendem Format als Teil der Nachricht mitgeschickt werden. Zum versenden von Emails werden keine speziellen Rechte benötigt – Email Applikation könnte als Spam-Gateway missbraucht werden. Es werden auch keine Wartezeiten verordnet
Verbesserungsvorschläge
Über einen Apache Sub-Request ohne separater Zugriffsprüfung (da dieser Request vom ODIE selbst käme und weder über eine Session noch ein gültiges Passwort verfügt) den gerenderten Inhalt der aktuellen Seite in einen String holen und als Teil der Nachricht verschicken. Nur in sicheren Netzwerken einsetzen, sonst deaktivieren oder löschen.
Seite 59
5.18 Error
Dateiame: system/error
Programmierer: Pavlu Autor: Maczejka
Kurzbeschreibung: Fehlerausgabe
Verwendet: -
Detailbeschreibung
Ausgabe einer Überschrift „error“ und des snipcontents.
Paramter
keine
Input
keiner
Probleme
keine
Verbesserungsvorschläge
keine
Seite 60
5.19 Extern
Dateiame: system/extern
Programmierer: Kolm Autor: Kolm
Kurzbeschreibung: Gibt das gegebene Snip bzw. Icon / Thumbnail aus; bei Bildern kann die Größe als Parameter übergeben werden
Verwendet: getSizeString(), getHeader(), readAccess(), i18n(), form_href(), getProjectPath(), strSplit()
Detailbeschreibung
Die extern Applikation soll es ermöglichen Bilder in beliebiger Größe (soweit sie vom Typ jpg oder png sind) bzw. Icons für beliebige externe Dateien in einen Text einzubinden.
Zunächst wird der benötigte Filename ermittelt – Thumbnail, Snip oder Icon. Falls es sich bei dem Snip um ein Bild handelt und der size Parameter gesetzt ist, werden mittels GD Funktionen die benötigten Änderungen vorgenommen und der Name der somit erzeugten temporären Datei weitergegeben. Falls nun die Datei mit dem weitergegebenen Dateinamen nicht existiert, wird ein passendes Icon weitergegeben.
Nach diesem Schritt wird die benötigte mime_type festgelegt und im odie_env show_interface auf FALSE gesetzt, damit fpassthru zum Zug kommen kann. Falls alles fehlerfrei funktioniert hat, kommt fpassthru zum Zug und gibt die Datei im Browser aus (sprich es wird ein Download gestartet, falls der Browser mit dieser mime_type nicht umgehen kann).
Paramter get text: textueller Link inkl. Filesize
view: Thumbnail / Icon download: fpassthru des Files
size thumb: Icon bzw. Thumbnail für alle möglichen Kombination bitte die Benutzerdokumentation konsultieren
Seite 61
Probleme
fpassthru ist nicht immer erfolgreich – nicht klar ob der Fehler beim PHP liegt oder bei dem Entwickler.
Die extern-Applikation bedient sich für die Bildbearbeitung der GD library. Da diese ab Version 1.6 keine GIFs mehr unterstützt, können keine GIFs manipuliert werden.
Verbesserungsvorschläge
fpassthru verbessern falls möglich.
Mehr Icons für die mime_types finden – derzeit nur einige wenige im ODIE vorhanden.
Falls beim content-type ändern einer externen Datei über die edit-Applikation gegangen wird, ist der Download wegen falscher Filelänge nicht mehr möglich. Dies sollte dadurch verhindert werden, dass binäre Dateien nicht mit der edit-Applikation bearbeitet werden können.
Seite 62
5.20 Extern-index
Dateiame: system/extern-index
Programmierer: Kolm Autor: Kolm
Kurzbeschreibung: Darstellung externer Dateien
Verwendet: saveExtern(), cmpString(), getHeaderExtern(), deleteSnip(), i18n(), wiki_link(), getActiveUser(), getActiveProject(), form_href(), readAccess(), writeAccess(), getProjectPath(), isProjectMember(), getContentTypes()
Detailbeschreibung
Der extern-index ist ähnlich dem Snipindex ein Index der alle Snips anzeigt, die den content-type "extern" besitzen. Der Nutzen dieser speziellen Version ist das Anzeigen von Vorschaubilder bzw. Icons für die externen Snips. Außerdem können NUR über den extern-index Dateien raufgeladen werden.
Der Upload wird über saveExtern verarbeitet und die raufgeladene Datei wird somit ins ODIE aufgenommen. Falls die Datei nicht den content-type extern hat, wird der so entstandene Snip direkt dargestellt.
Die Daten die für die Anzeige benötigt werden, werden von getHeaderExtern geliefert und danach in der gewünschten Ansicht dem User präsentiert.
Paramter extern_display symbol, detail, /[0-9]+/
betrifft die Ansicht – Symbol, kompakte Liste oder Datei – Detail
extern_del Snipname der zu löschenden Datei
sort_key Sortierkriterium sort_dir Sortierreihenfolge (az, za)
Input POST:
extern Submit des Formulars HTTP_POST_FILESbeinhaltet Informationen zum raufgeladenen File
Seite 63
Probleme
fpassthru ist nicht immer erfolgreich – nicht klar ob der Fehler beim PHP liegt oder bei dem Entwickler.
Die extern-index-Applikation bedient sich für die Bildbearbeitung der GD library. Da diese ab Version 1.6 keine GIFs mehr unterstützt, können keine GIFs manipuliert werden.
Verbesserungsvorschläge
fpassthru verbessern falls möglich.
Mehr Icons für die mime_types finden – derzeit nur einige wenige im ODIE vorhanden. Darstellung der Bilder in Originalgröße in eigenem Fenster (Neuaufbau des Index wird dadurch nicht mehr nötig)
Falls beim content-type ändern einer externen Datei über die edit-Applikation gegangen wird, ist der Download wegen falscher Filelänge nicht mehr möglich. Dies sollte dadurch verhindert werden, dass binäre Dateien nicht mit der edit-Applikation bearbeitet werden können.
Seite 64
5.21 help
Dateiame: system/help
Programmierer: Pavlu, Seywerth Autor: Seywerth
Kurzbeschreibung: Die ODIE-Hilfe Application
Verwendet: read(), snipExists(), wiki_link(), setActiveProject(), getActiveProject()
Detailbeschreibung
Help ist eine Applikation die ein Hilfe-Fenster öffnet und eine gekürzte ODIE-Hilfe zu dem jeweiligen Thema darstellt. Steht für die aufgerufene Hilfe kein Hilfe-File zur Verfügung, wird ein Index der Hilfe-Files aufgelistet.
Parameter
keine
Seite 65
Probleme
Da die Hilfe in einem eigenen Projekt angelegt ist, kann es zu Schwierigkeiten beim Wecheln in der Hilfe-Applikation kommen. Das kann einen Wechsel des aktiven Projekts zur Folge haben.
Verbesserungsvorschläge
Den Projekt-Wechsel verbessern.
Seite 66
5.22 Importer
Dateiame: system/importer
Programmierer: Kolm Autor: Kolm
Kurzbeschreibung: Importiert alle Snips, die im Filesystem vorhanden sind – aber im Index nicht erfasst sind;
Verwendet: isProjectAdmin(), parseDate(), getExternSnips(), getSnipsByContentType(), getProjectMembers(), getActiveUser(), getActiveUser(), i18n(), wiki_link(), getHeader(), writeHeader(), getSnip(), setBacklinks(), form_href(), getContentTypes()
Detailbeschreibung
Mit dem Importer können alle Snips die im Filesystem vorhanden sind, aber im Index nicht, in den Index aufgenommen werden. Bei dieser "Aufnahme" in den Index kann auch gleich der content-type gesetzt werden.
Des weiteren kann man mit dem Importer den content-type von bereits importierten Snips setzen, falls dieser noch "unknown" ist.
Paramter importer_mode extern oder unknown
Input
POST: import Submit-Variable (name des submit-buttons) do_import Array mit den aus dem Form gewonnen
Informationen invert_checkboxes für die Umkehrung der Checkboxstati
Die Namen der Snips, die nicht im Index festgehalten sind bekommt man über getExternSnips() – die Snips mit content-type unknown über getSnipsByContentType().
Seite 67
Probleme
keine
Verbesserungsvorschläge
Durch klicken auf die Überschriften (content-types) sollten alle Snips dieser Untergruppe (sprich bis zur nächsten Überschrift) auf diese gesetzt werden.
Seite 68
5.23 Index
Dateiname: system/index
Programmierer: Kolm, Pavlu Autor: Kolm
Kurzbeschreibung: Liefert alle Projecte bzw. alle Snips im aktuellen Projekt
Verwendet: getSnipList(), deleteSnip(), getProjectList(), getProjectMemberCount(), getSnipCount(), getProjectCreator(), cmpString(), cmpDate(), parseDateTime(), getActiveProject(), i18n, deleteSnip(), form_href(), writeAccess(), getActiveUser(), readAccess()
Detailbeschreibung
Die Index-Applikation hat zwei Aufgaben. Einerseits die Anzeige aller Snips im aktuellen Projekt mit wichtigen Informationen, andererseits die Auflistung aller vorhandenen Projekte.
Paramter index_type ob projects oder snips angezeigt werden sollen delete für das Löschen von Snips – es wird der Snipname
über GET mitgeschickt sort_key Sortierkriterium sort_dir Sortierreihenfolge
Input
Projektindex: Es wird ein Array generiert dessen keys die Projektnamen sind. Pro Projekt wird ein weiteres Array mit folgenden keys generiert. • snip_count • member_count • creator
foreach(getProjectList() as $project_name) {
$list[$project_name] = Array( 'snip_count' => getSnipCount($project_name), 'member_count' => getProjectMemberCount($project_name) * 1, 'creator' => getProjectCreator($project_name) );
}
Seite 69
Snipindex: Die Snipobjekte (ohne content) werden mittels getSnipList reingeholt. Bei der Auflistung sollen Calendar- und Commentsnips nicht aufscheinen.
$list = getSnipList('ignore-calendar','ignore-comment');
Probleme
keine
Verbesserungsvorschläge
keine
Seite 70
5.24 keepAlive
Applikationsname keepAlive
Dateiname system/keepAlive
Kurzbeschreibung Erhält einen Snip-Lock am Leben
Erfordert lockSnip()
Verantwortliche zlabinger
Autor zlabinger
Beschreibung
Diese Applikation wird durch Einfügen des keepAliveScripts in einer Applikation periodisch aufgerufen. Technisch wurde dies durch einen javaScript gestützten Bildrequest gelöst.
Die Applikation versucht den lock auf das aktuelle Snip zu verlängern, um Concurrent Edit Probleme zu eliminieren. Sie wird vom edit-button eingebunden, wenn $odie_env[editing] auf true gesetzt ist.
Seite 71
5.25 Kill-project
Applikationsname kill-project
Dateiname system/kill-project
Kurzbeschreibung Ermöglicht das Löschen von Projekten
Erfordert destroy_form(), isProjectCreator(), isProjectAdmin(), getActiveUser(), getActiveProject(), deleteDir(), setActiveProject(), prepareIndex(), i18n(), form_href()
Verantwortliche zlabinger, kolm
Autor zlabinger
Beschreibung
Diese Applikation ermöglicht das endgültige Löschen von ganzen Projekten. Alle Snips im Projekt gehen dabei verloren! Projekte können nur von ihrem Ersteller gelöscht werden.
Wenn diese Applikation ohne Parameter aufgerufen wird, wird der Benutzer zur Eingabe des Sicherheitscodes aufgefordert. Dabei handelt es sich um den MD5-String des Projektnamens. Diese Kontrolle soll das unbeabsichtigte Löschen von Projekten verhindern.
Nach der Eingabe und Betätigung des submit-Buttons wird das Projekt endgültig gelöscht.
Parameter
destroy_project auf ‚destroy_project’ gesetzt, wenn das aktuelle Projekt gelöscht werden soll
destruct_code der vom benutzer eingegeben Zerstörugnscode. Er muss mit dem MD5- String des Projektnamens übereinstimmen
Seite 72
5.26 Link
Dateiame: system/link
Programmierer: Pavlu Autor: Pavlu
Kurzbeschreibung: Zum einfachen Wiki-Linken von zusammengesetzten Links
Verwendet: form_href(), getActiveProject(), getActiveUser(), getIcon(), i18n(), isProjectAdmin(), writeAccess()
Detailbeschreibung
Links auf Applikationen wie „projects“, die es physisch gar nicht gibt sondern nur eine weitere Parametrisierung von bestehenden Applikationen darstellen werden dem Benutzer über diese Applikation zum Wiki-Link Repertoire hinzugefügt. Auch Links, die dynamisches Verhalten zeigen müssen, werden mit dieser Applikation erstellt. Mögliche Werte für to sind help, projects, login, edit und new. Help, weil mehrere Zeilen JavaScript Code eingefügt werden müssen, um das Popup Fenster zu öffnen; Projects, weil es diese Applikation nicht gibt, stattdessen Index mit index_type=projects ausgeführt wird; Login, weil der Login Button nach der Anmeldung zum Logout wird und die beiden letzten, weil diese Links nur erscheinen, wenn der Benutzer über die nötigen Berechtigungen verfügt.
Paramter
$to Ziel des Linkens $pre Präfix, der nur eingefügt wird, wenn der Link
angezeigt wird $post Postfix, wie Präfix
Input
keine
Probleme
keine
Verbesserungsvorschläge
keine
Seite 73
5.27 Linkall
Dateiame: system/linkall
Programmierer: Kolm Autor: Pavlu
Kurzbeschreibung: Erneuert die Link/Backlink Daten eines ganzen Projekts
Verwendet: form_href(),getActiveProject(), getActiveUser(), getBacklinks(), getSnipNames(), getProjectMembers(), getSnip(), i18n(), isProjectAdmin(), is_empty(), wiki_link(),writeHeader()
Detailbeschreibung
Nach erfolgreicher Prüfung ob der ausführende Benutzer ein Administrator des aktuellen Projekts ist, werden alle Snips aus dem Projektindex gelesen und jeweils setBacklinks() und writeHeader() aufgerufen. Die Projektindex ist soweit optimiert, dass die Daten erst nach dem kompletten Durchlauf auf die Platte geschrieben werden.
Paramter
keine
Input
keiner
Probleme
keine
Verbesserungsvorschläge
keine
Seite 74
5.28 Login
Applikationsname login
Dateiname system/login
Kurzbeschreibung Zeigt die Anmeldemaske an
Erfordert wiki_link(), form_href(), i18n(),
Verantwortliche zlabinger, kolm, pavlu
Autor zlabinger
Beschreibung
Diese Applikation zeigt die Anmeldemaske an, in der Benutzer ihren Benutzernamen und ihr Passswort eingeben, um sich am System zu identifizieren. Außerdem werden Links zum Registrieren, zum anonymen arbeiten und zur sendpass-Applikation angezeigt. Die eigentliche Abarbeitungslogik des Anmeldevorgangs befindet sich in odie.php.
Parameter
String target_mode Das Argument, dass der Funktion form_href() weitergereicht wird. Es bestimmt, zu welcher Applikation der Benutzer nach einer erfolgreichen Anmeldung gelangen soll.
Seite 75
5.29 Logout
Applikationsname logout
Dateiname system/logout
Kurzbeschreibung Meldet einen Benutzer vom System ab
Erfordert setSessionData(), i18n(), setActiveProject(), wiki_link()
Verantwortliche zlabinger
Autor zlabinger
Beschreibung
Diese Applikation meldet einen Benutzer vom System ab. Es werden folgende Tätigkeiten ausgeführt:
• $session[username] und $odie_env[username] werden auf anybody gesetzt • das default-projekt wird als aktuelles projekt gesetzt
Nach Durchführung dieser Schritte ist der Benutzer nicht mehr am System angemeldet sondern arbeitet mit dem anybody account weiter.
Seite 76
5.30 Meeting
Dateiame: system/meeting
Programmierer: Maczejka Autor: Maczejka
Kurzbeschreibung: Besprechungsprotokolle
Verwendet: writeMeeting(), showMeeting(), editMeetingForm(), showAllMeetings(), getSnip(), getActiveUser(), loackSnip(), writeAccess(), i18n()
Detailbeschreibung
Anzeigen einer Meetingübersicht, Detailansicht oder Bearbeitungsformular, je nach Inhalt von $what:
• „showall“ (default) Anzeige der Übersicht mit showAllMeetings() • „edit“ Schreibrechte sowie auf locked überprüfen. Wenn alles ok, dann
editMeetingForm(), sonst Fehlermeldung und showMeeting() • „write“ writeMeeting(), speichern des Eintrags • „snipreaderror“ Ausgabe einer Fehlermeldung, Fehler beim lesen des Snips • sonst: showMeeting()
Die Meeting-Daten besitzen folgenden Aufbau:
<!DEFINE meeting (present, master, begin, end, protocol)> <!DEFINE present (#PCDATA)> <!DEFINE master (#PCDATA)> <!DEFINE begin (#PCDATA)> <!DEFINE end (#PCDATA)> <!DEFINE protocol (#PCDATA)>
Paramter
$what Aktion
Input
keiner
Seite 77
Probleme
keine
Verbesserungsvorschläge
keine
Seite 78
5.31 Members
Dateiame: system/members
Programmierer: Kolm, Pavlu, Zlabinger Autor: Maczejka
Kurzbeschreibung: Ausgabe der Projektmitglieder
Verwendet: i18n(), getProjectMembers(),
Detailbeschreibung
Projektmitglieder werden mit getProjectMembers geholt und anschliessend formatiert und geordnet nach Ersteller, Administrator und Benutzer in einer HTML- Tabelle ausgegeben.
Paramter
keine
Input
keiner
Probleme
keine
Verbesserungsvorschläge
keine
Seite 79
5.32 Menu-App
Dateiame: system/menu-app
Programmierer: Pavlu Autor: Maczejka
Kurzbeschreibung: Ausgabe des Applikationsmenüs
Verwendet: form_href(), getIcon
Detailbeschreibung
Ausgegeben werden Links auf die folgenden Applikation samt icon: • Today • Todo • Calendar • Meeting • Deleted
Paramter
keine
Input
keiner
Probleme
keine
Verbesserungsvorschläge
keine
Seite 80
5.33 Menu-Edit
Dateiame: system/menu-edit
Programmierer: Pavlu Autor: Maczejka
Kurzbeschreibung: Ausgabe des Bearbeiten- Menüs
Verwendet: form_href(), getIcon(), editable(), isProjectMember(), getActiveUser()
Detailbeschreibung
Ausgegeben werden Links und Icons für Bearbeiten, read-only, undo und new, je nach dem in welcher Ansicht sich der Benutzer befindet. Zusätzlich wird hier das keepAliveScript aufgerufen.
Paramter
keine
Input
keiner
Probleme
keine
Verbesserungsvorschläge
keine
Seite 81
5.34 Menu-Overview
Dateiame: system/menu-overview
Programmierer: Pavlu Autor: Maczejka
Kurzbeschreibung: Ausgabe des Standardmenüs
Verwendet: form_href(), getIcon()
Detailbeschreibung
Ausgegeben werden Links auf die folgenden Applikation samt icon: • index • extern-index • start • search
Paramter
keine
Input
keiner
Probleme
keine
Verbesserungsvorschläge
keine
Seite 82
5.35 Menu-Project
Dateiame: system/menu-project
Programmierer: Pavlu Autor: Maczejka
Kurzbeschreibung: Ausgabe des Projektmenüs
Verwendet: form_href(), getIcon()
Detailbeschreibung
Ausgegeben werden Links auf die folgenden Applikation samt icon: • Index type=projects
Paramter
keine
Input
keiner
Probleme
keine
Verbesserungsvorschläge
keine
Seite 83
5.36 Menu-Sep
Dateiame: system/menu-sep
Programmierer: Pavlu Autor: Maczejka
Kurzbeschreibung: Ausgabe des Menüseperators
Verwendet: getIcon()
Detailbeschreibung
Der Menüseperator wird ausgegeben
Paramter
keine
Input
keiner
Probleme
keine
Verbesserungsvorschläge
keine
Seite 84
5.37 Menu-User
Dateiame: system/menu-user
Programmierer: Pavlu Autor: Maczejka
Kurzbeschreibung: Ausgabe des Benutzermenüs
Verwendet: form_href(), getIcon()
Detailbeschreibung
Ausgegeben wird ein Link auf „preferences“ sowie auf die Applikation „link“ mit den Parametern „to=login“ und „to=admin“.
Paramter
keine
Input
keiner
Probleme
keine
Verbesserungsvorschläge
keine
Seite 85
5.38 Menubar
Dateiame: system/menu-bar
Programmierer: Pavlu Autor: Maczejka
Kurzbeschreibung: Ausgabe aller Menüs
Verwendet: wiki_link()
Detailbeschreibung
Folgende Menü- Applikationen werden mit wiki_link hineingelinkt: • menu-overview • menu-project • menu-app • menu-user • menu-edit
Paramter
keine
Input
keiner
Probleme
keine
Verbesserungsvorschläge
keine
Seite 86
5.39 Mini Calendar
Dateiame: system/mini-calendar
Programmierer: Pavlu Autor: Maczejka
Kurzbeschreibung: Ausgabe eines kleinen Kalenders
Verwendet: i18n(), form_href(), getSnipDates(), miniHeader(), miniFooter(), getActiveDate(), getMonthList(), getDayList()
Detailbeschreibung
Es werden alle Snipdaten geholt. Ein kleiner Kalender in HTML- Tabellen wird ausgegeben. Jeder Tag ist ein Link auf day-summary dieses Tages. Wenn es Snips zu diesem Tag bereits gibt, wird der Eintrag fett ausgegeben.
Paramter
keine
Input
keiner
Probleme
keine
Verbesserungsvorschläge
keine
Seite 87
5.40 Mini Index
Dateiame: system/mini-index
Programmierer: Pavlu, Kolm Autor: Maczejka
Kurzbeschreibung: Ausgabe einer unformatierten Liste aller Snips
Verwendet: i18n(), form_href(), getSnipNames(), miniHeader(), miniFooter()
Detailbeschreibung
Mit getSnipNames werden alle Snips im aktuellen Projekt geholt. Diese werden anschliessend ungeordnet durch Beistriche getrennt als Links auf den entsprechenden Snip ausgegeben.
Paramter
keine
Input
keiner
Probleme
keine
Verbesserungsvorschläge
keine
Seite 88
5.41 Mini Projects
Dateiame: system/mini-projects
Programmierer: Pavlu Autor: Maczejka
Kurzbeschreibung: Ausgabe einer unformatierten Liste aller Projekte
Verwendet: i18n(), form_href(), getProjectlist(), miniHeader(), miniFooter()
Detailbeschreibung
Mit getProjectList werden alle Projekte geholt. Diese werden anschliessend ungeordnet durch Beistriche getrennt als Links auf das entsprechende Projekt ausgegeben.
Paramter
keine
Input
keiner
Probleme
keine
Verbesserungsvorschläge
keine
Seite 89
5.42 plain
Dateiame: system/plain
Programmierer: Pavlu, Zlabinger Autor: Seywerth
Kurzbeschreibung: Applikation zur Eingabe von normalem Text
Verwendet: read(), wiki_link()
Detailbeschreibung
Plain ist eine Applikation die es ermöglicht, normalen Text der ohne besondere Formatierung dargestellt werden soll, einzugeben.
Parameter
keine
Probleme
keine
Verbesserungsvorschläge
keine
Seite 90
5.43 Preferences
Dateiame: system/preferences
Programmierer: Kolm, Zlabinger Autor: Maczejka
Kurzbeschreibung: Ausgabe eines Eigenschaftsformulars/ Speichern von Eigenschaften
Verwendet: i18n(), getInterfaces(), saveInterfaces(), saveLanguage(), form_input(), loadDictionary(), loadLangs()
Detailbeschreibung
Ausgabe eines Formulars zur Eingabe aller Benutzereigenschaften (Name, Interface, Sprache, ... ). Wenn die Formulardaten gesetzt sind, werden diese im Userfile gespeichert, nachdem ein Sanity- check durchgeführt wurde.
Paramter
keine
Input
keiner
Probleme
keine
Verbesserungsvorschläge
keine
Seite 91
5.44 project-not-found
Dateiame: system/project-not-found
Programmierer: Pavlu Autor: Seywerth
Kurzbeschreibung: Das Ausgewähltes Projekt wurde nicht gefunden
Verwendet: i18n(), wiki_link()
Detailbeschreibung
Liefert eine Ausgabe, da das ausgewählte Projekt nicht gefunden wurde.
Parameter
keine
Probleme
keine
Verbesserungsvorschläge
keine
Seite 92
5.45 Quick-search
Dateiame: system/quick-search
Programmierer: Pavlu Autor: Kolm
Kurzbeschreibung: gibt das Formular für die Schnellsuche aus
Verwendet: -
Detailbeschreibung
Diese Applikation ist mit der Ausgabe des quick-search Formulars beauftragt. Dieses Formular kann mit Hilfe des Linkers in jedes Interface an einer beliebigen Stelle eingefügt werden.
Input
Es wird keinerlei Input benötigt, da sich die Applikation auf die Ausgabe eines Formulars beschränkt.
Zusätzlich muss die Variable app auf search-results gesetzt werden, denn diese Applikation führt die eigentliche Suche erst durch und zeigt die Ergebnisse an.
Probleme
keine
Verbesserungsvorschläge
keine
Seite 93
5.46 Raw Index
Dateiame: system/raw-index
Programmierer: Kolm, Pavlu Autor: Maczejka
Kurzbeschreibung: Ausgabe einer unformatierten Liste aller Snips
Verwendet: i18n(), form_href(), getSnipNames(), miniHeader(), miniFooter()
Detailbeschreibung
Mit getSnipNames werden alle Snips im aktuellen Projekt geholt. Diese werden anschliessend ungeordnet durch Beistriche getrennt als Links auf den entsprechenden Snip ausgegeben.
Paramter
keine
Input
keiner
Probleme
keine
Verbesserungsvorschläge
keine
Seite 94
5.47 Raw Read
Dateiame: system/raw-read
Programmierer: Kolm Autor: Maczejka
Kurzbeschreibung: Unformatierte Ausgabe eines Snips
Verwendet: read()
Detailbeschreibung
Der Snip wird mit read() gelesen und einfach so wie er ist ausgegeben.
Paramter
keine
Input
keiner
Probleme
keine
Verbesserungsvorschläge
keine
Seite 95
5.48 rights
Dateiame: system/rights
Programmierer: Pavlu Autor: Seywerth
Kurzbeschreibung: Die Rechte-Vergabe-Appikation vom ODIE
Verwendet: getProjectList(), getUserList(), joinUsersAndGroups(), printSelect(), addList(), remList(), form_href(), writeAccess(), i18n(), readAccess(), setRights(), checkReadAccess()
Detailbeschreibung
Rights ist die Applikation mit der man im ODIE jedem User Rechte an bestimmten Snips geben kann. Weiters können auch ganzen Gruppen Rechte gegeben oder genommen werden. Es gibt Schreib- und Leserechte.
Parameter POST:
submit_write entspricht ‘-->’ falls rechte entzogen werden und.. submit_read ‘<--‘ falls rechte hinzugefügt werden
Probleme
keine
Verbesserungsvorschläge
keine
Seite 96
5.49 Search
Dateiame: system/search
Programmierer: Pavlu Autor: Pavlu
Kurzbeschreibung: erzeugt ein Formular zum Suchen in verschiedenen Modi
Verwendet: i18n()
Detailbeschreibung
Die Applikation Search dient der Suche nach Snips im aktuellen Projekt. Es wird ein Formular ausgegeben, welches das Suchen in verschiedenen Modi ermöglicht.
Input search_keywords die Schüsselwörter nach denen gesucht wird. search_method wie/wo gesucht werden soll
(title, keywords oder fulltext sind möglich)
Zusätzlich muss die Variable app auf search-results gesetzt werden, denn diese Applikation führt die eigentliche Suche erst durch und zeigt die Ergebnisse an.
Probleme
keine
Verbesserungsvorschläge
keine
Seite 97
5.50 Search-results
Dateiame: system/search-results
Programmierer: Pavlu Autor: Pavlu
Kurzbeschreibung: zeigt Suchergebnisse an
Verwendet: getSnipsByTitle(), getSnipsByFullText(), getSnipsByKeywords(), read(), getEditHandler(), wiki_link(), i18n(), form_href()
Detailbeschreibung
Search-Results führt eine Suche nach Snips im aktuellen Projekt durch und zeigt die Ergebnisse an.
Input
search_method gibt an wo gesucht werden soll. Mögliche Werte sind title , keywords und fulltext. Ein weiterer möglicher Wert ist quicksearch, der logisch keywords entspricht jedoch wird bei quicksearch zusätzlich die genaueste Entsprechung gleich geöffnet und dargestellt. Fehlt dieser Parameter, wird title angenommen.
search_keywords vom Benutzer eingegebener String, der angibt wonach gesucht werden soll.
Funktionsweise
Im ersten Teil der Applikation werden die Eingabedaten geprüft und die Sniplisten erzeugt. Je nach Suchmethode wird dazu die Funktion getsnipsbytitle, getsnipsbykeywords oder getsnipsbyfulltext verwendet.
Anschließend wird - wenn wir mit quicksearch suchen - der genaueste Treffer gesucht, gelesen und dargestellt.
Dann werden alle anderen Snips als Linkliste dargestellt und schließlich die Suchmaske inkludiert, um dem Benutzer eine neue Suche zu ermöglichen.
Seite 98
Weitere Filter
Um ODIE mit weiteren Suchmechanismen auszustatten, muss man in search und search-results den Wertebereich für search-method um die zusätzlich gewünschten Filter erweitern. Und im core Verzeichnis einen zusätzlichen snip-list Generator implementieren.
Probleme
keine
Verbesserungsvorschläge
keine
Seite 99
5.51 sendpass
Applikationsname sendpass
Dateiname system/sendpass
Kurzbeschreibung Schickt ein neues Passwort
Erfordert question(), formname(), getActiveUser(), getUserData(), sendPass(), setUserData(), i18n()
Verantwortliche kolm, pavlu, zlabinger
Autor zlabinger
Beschreibung
Diese Applikation hilft Benutzern weiter, die Ihr Passwort vergessen haben. Wenn sie ohne Parameter aufgerufen wird, erscheint eine Eingabemaske für de Benutzernamen.
Nach dem Aufruf mit sendpass_username gesetzt, wird dem Benutzer die Passwort Erinnerungsfrage gestellt. Wurde keine eingegeben, wird sogleich das Passwort an die e-mail Adresse des Benutzernamens übermittelt. Jeder Benutzer sollte immer eine Frage angeben, da sonst jeder das Passwort ändern kann.
Wenn die sendpass_answer richtig angegeben wurde, wird das Passwort zugesendet.
Parameter
sendpass_username identifiziert den Benutzer sendpass_answer die antwort auf die reminder_question
Seite 100
5.52 snip-info
Dateiame: system/snip-info
Programmierer: Kolm Autor: Seywerth
Kurzbeschreibung: Ausgabe eines Infos zu einem Snip
Verwendet: miniHeader(), miniFooter(), form_href(), i18n()
Detailbeschreibung
Snip-info ist eine Applikation die den Namen des Erstellers und das Erstelldatum zu einem Snip ausgibt. Weiters wird der content-type und der Lesezähler des Snips ausgegeben.
Parameter
keine
Probleme
<nobr> ist schlecht.
Verbesserungsvorschläge
keine
Seite 101
5.53 Snip-list
Dateiame: system/snip-list
Programmierer: Pavlu Autor: Pavlu
Kurzbeschreibung: gibt eine Liste von Snips aus
Verwendet: getSnipsByPopularity(), getSnipsByModificationDate(), getSnipsByCreationDate(), getMissingSnips(), getUnlinkedSnips(), getSnipNames(), getSnipsByTitle(), i18n(), form_href(), snipExists()
Detailbeschreibung
Sämtliche Listen von Snips im ODIE werden mit dieser Applikation dargestellt. Die Inhalte der einzelnen Listen variieren nur durch die Unterschiedlichen snip-list Generatoren im core Verzeichnis (beispielsweise getsnipsbycontenttype, getsnipsbytitle,...)
Input crit Suchkriterium, welcher Snip-list Generator zu
Erstellung der Liste verwendet werden soll. Default ist name.
sort Sortierrichtung. Entweder 'az' oder 'za'. Ergänzt crit. format Ob die Liste compact oder full angezeigt werden soll. In der compact Ausführung werden nur die ersten 10 Snips angezeigt, alle weiteren sind über den more Link erreichbar.
Funktionsweise
Als erstes wird crit untersucht. Welcher Snip-list Generator eingesetzt werden soll und welche Überschrift die Liste bekommt wird herausgefunden. Je nachdem, ob format compact ist oder nicht, bekommt der Sniplist Generator ein Limit, hier 10.
Mögliche Werte für crit sind: • title (Default) • unlinked • missing • most-popular • modified • created
Vom Sniplist Generator kommt entweder ein Array oder ein Hash zurück.
Seite 102
Array Jeder Wert wird ein Link auf den angegebenen Snip
Hash Die Schüssel des Hashes stellen die Snipnamen dar und werden zu links. Zusätzlich wird vom Sniplist Generator noch ein Wert geliefert. Dieser wird anschließend an den Link ausgegeben. (zb. getmissingsnips liefert eine Liste der Snips, in denen die Missing Snips verlinkt werden)
Erweiterungen an der Sniplist Im switch($crit) weitere case Einträge vornehmen - der Rest kann unverändert bleiben. Alle Weiteren Sniplisten werden genauso dargestellt und automatisch verlinkt.
Probleme
keine
Verbesserungsvorschläge
keine
Seite 103
5.54 snip-not-found
Dateiame: system/snip-not-found
Programmierer: Pavlu Autor: Seywerth
Kurzbeschreibung: Das Ausgewähltes Snip wurde nicht gefunden
Verwendet: i18n()
Detailbeschreibung
Liefert eine Ausgabe, da das ausgewählte Snip nicht gefunden wurde.
Parameter
keine
Probleme
keine
Verbesserungsvorschläge
keine
Seite 104
5.55 Snip-list
Dateiame: system/snip-toolbar
Programmierer: Pavlu, Kolm Autor: Kolm
Kurzbeschreibung: erzeugt eine Liste grundlegender Snipoperationen
Verwendet: editable(), getHeader(), writeAccess(), form_href(), i18n()
Detailbeschreibung
Diese Applikation erzeugt je nach Zugriffsrechte Links für diverse Operationen die den angezeigten Snip betreffen. Dies betrifft das Ändern der Zugriffsrechte, das Löschen des Snips und die Auswahl der Ausgabeformate (Renderer).
Input Es wird lediglich die globale Variable snip_title benötigt.
Funktionsweise
Zunächst wird der Header des angezeigten Snips geholt um die Prüfung der Zugriffsrechte vorzunehmen. Bei einigen Applikationen gibt es ebenfalls eine Einschränkung der Funktionalitäten, die das Aussehn der Ausgabe bei der snip-toolbar beeinflussen.
Probleme
keine
Verbesserungsvorschläge
keine
Seite 105
5.56 Start
Dateiname: system/start
Programmierer: Pavlu Autor: Pavlu
Kurzbeschreibung: Zeigt die Startseite des aktuellen oder Default-Projekts
Verwendet: getActiveProject(), getActiveUser(), i18n(), wiki_link()
Detailbeschreibung
Wird start im Projekt default ausgeführt – die Startseite des ODIE – werden nicht Informationen über die unmittelbaren Änderungen in diesem Projekt gezeigt (wie es bei allen anderen Projektstartseiten der Fall ist), sondern eine Übersicht über alle Projekte und die aktuell angemeldeten Benutzer, sowie einige allgemeine Informationen über das ODIE. Die Applikation entscheidet je nach der Rückgabe von getActiveProject() und führt dann unterschiedliche wiki_link() Aufrufe durch.
Paramter
keine
Input
keine
Probleme
keine
Verbesserungsvorschläge
keine
Seite 106
5.57 STX
Dateiame: system/stx
Programmierer: Pavlu Autor: Pavlu
Kurzbeschreibung: Stellt ein STX Dokument ard
Verwendet: stx_parse(), pageElement(), wiki_link(), read()
Detailbeschreibung
Liest das angegebene STX-Snip, schickt es durch den STX-Parser und anschließend durch den Wiki-Linker. Das entstandene Markup-Dokument wird wenn draw_box auf TRUE gesetzt ist mit, andernfalls ohne den Seitenrahmen des aktuellen Interfaces ausgegeben.
Paramter
boolean $draw_box ob die Pageelemente ausgegeben werden sollen boolean $display_comments ob die Kommentare anschlissend an das
Dokument ausgegeben werden sollen string $snip_title der Name des Snips
Input
keine
Probleme
keine
Verbesserungsvorschläge
keine
Seite 107
5.58 Today
Dateiame: system/today
Programmierer: Pavlu Autor: Pavlu
Kurzbeschreibung: Applikation zur Verwaltung von Weblog-Einträgen
Verwendet: form_href(), getSnipsByModificationDate(), i18n(), makeIndexName(),snipExists(), wiki_link(), writeAccess()
Detailbeschreibung
Vom aktuellen Datum wird 28 Tage zurückgegangen und geprüft, ob das Snip das den Namen dieses Tages (in der Form DATE_FORMAT) trägt existiert. Die 10 aktuellsten Einträge werden angezeigt. Wird im angegebenen Zeitrahmen von 28 Tagen kein einziger Weblog-Eintrag gefunden, werden auch keine älteren angezeigt.
Paramter
keine
Input
keine
Probleme
keine
Verbesserungsvorschläge
keine
Seite 108
5.59 Today-List
Dateiame: system/today-list
Programmierer: Pavlu Autor: Pavlu
Kurzbeschreibung: Listet alle Snips eines angegebenen Tags
Verwendet: i18n(), getSnipsByModificationDate(), wiki_link()
Detailbeschreibung
Es werden alle Snips, die an dem in $snip_title angegebenen Datum bearbeitet wurden, von getSnipsByModificationDate() geholt und als kommaseparierte Liste von Links auf die entsprechenden Snips ausgegeben.
Paramter
keine
Input
$snip_title einziger Input für diese Applikation kommt über $snip_title
Probleme
Lösung ist auf die Anforderungen von der Applikation Today zugeschnitten. Das keine Parametrisierung möglich ist, ist ebenfalls ein großer Nachteil.
Verbesserungsvorschläge
Funktion sollte nicht wiki_link() verwenden um die Links zu den Snips herzustellen – eine form_href() Lösung wäre um deutliches performanter. Abgesehen davon, sollte für die Ausgabe einfacher Sniplisten die fertige Applikation raw-index verwendet werden, die in diesem Fall um einen weiteren Selektionstyp ergänzt werden müsste – das Bearbeitungsdatum.
Seite 109
5.60 Todo
Dateiame: system/todo
Programmierer: Kolm Autor: Kolm
Kurzbeschreibung: Die Aufgabenverwaltung des ODIE
Verwendet: getTodo(), saveTodo(), delTodo(), cmpString(), cmpDate(), parseDate(), getSnipsByContentType(), writeAccess(), getActiveUser(), getActiveProject(), lockSnip(), i18n(), form_href(), snipErrorMsg(), editTodo(), wiki_link(), strSplit()
Detailbeschreibung
Die ODIE Aufgabenverwaltung, oder auch kurz to-do list genannt, ermöglicht es Tasks und wichtige Tätigkeiten zu dokumentieren und zu verwalten. Man hat somit eine Übersicht über alle offenen bzw. erledigten Aufgaben und ihre Fälligkeit.
Die XML Struktur der To-Do Listen Applikation hat folgenden Aufbau:
<!DEFINE todo (task*)> <!DEFINE task (status, priority, name, desc, due, end)> <!DEFINE status ('pending', 'done')> <!DEFINE priority (1,2,3,4,5)> <!DEFINE name (#PCDATA)> <!DEFINE desc (#PCDATA)> <!DEFINE due (#PCDATA)> <!DEFINE end (#PCDATA)>
Paramter todo_display all oder pending
alle Tasks oder nur die nicht erledigten anzeigen todo_del eine checksum aus diversen Taskeigenschaften
zum Löschen eines Tasks sort_key Sortierkriterium sort_dir Sortierreihenfolge (az, za)
Input POST:
todo_save Formular wurde abgeschickt todo_form der Inhalt des Formulars
Bei der Gesamtübersicht werden die Tasks mit Hilfe von getSnipsByContentType & getTodo geholt – bei Einzelansicht mit getTodo (getSnip & parsen).
Seite 110
Probleme
<nobr> ist nicht XHTML konform – wird aber benötigt damit die Datumsangaben nicht umgebrochen werden.
Die Rückgabewerte einiger To-Do Funktionen sind nicht sehr übersichtlich.
Verbesserungsvorschläge
Besseres <nobr> finden. Funktionen überdenken und rewriten.
Seite 111
5.61 Tree
Dateiame: system/tree
Programmierer: Maczejka Autor: Maczejka
Kurzbeschreibung: Ausgabe einer Snip- Baumstruktur
Verwendet: i18n(), getTree(), formatTree(), form_href(), getActiveProject()
Detailbeschreibung
Eine Baumstruktur zum aktuellen Snip wird mit getTree gelesen und mit FormatTree ausgegeben. Sollte der Snip nicht vorhanden sein, wird eine Fehlermeldung ausgegeben. Hat der Snip keine Kinder, wird das bemerkt. Mit $open wird eine List übergeben, die alle offenen Äste repräsentiert. Diese Liste wird an formatTree() übergeben.
Paramter
Open snipbäume, die geöffnet sind
Input
keiner
Probleme
keine
Verbesserungsvorschläge
keine
Seite 112
5.62 unknown
Dateiame: system/unknown
Programmierer: Pavlu Autor: Seywerth
Kurzbeschreibung: Content-type Auswahl
Verwendet: wiki_link()
Detailbeschreibung
Liefert eine Auswahl, um den Content-type auszuwählen da das ausgewählte Snip den Content-type ’unknown’ hatte.
Parameter
keine
Probleme
keine
Verbesserungsvorschläge
keine
Seite 113
5.63 users
Dateiame: system/users
Programmierer: Kolm, Pavlu Autor: Seywerth
Kurzbeschreibung: Ausgabe einer Userliste
Verwendet: getUserList(), cmpString(), isOdieAdmin(), setProjectMembers(), getActiveUser(), getProjectMembers(), setUserData(), i18n(), form_href()
Detailbeschreibung
Gibt eine Userliste aus. Diese kann auf verschiedene Arten Sortiert werden. Weiters können User gelöscht werden.
Parameter GET:
kill Username der gelöscht werden soll display entweder 'active_only' oder ungesetzt sort_key ein Sortierkriterium sort_dir die Sortierreihenfolge (az oder za)
Probleme
keine
Verbesserungsvorschläge
keine
Seite 114
6 Funktionsüberblick (kol)
6.1 Aufgabenverwaltung
delTodo löscht einzelne Tasks
editTodo erzeugt eine Zeile zum Bearbeiten
getTodo liefert ein Array von Tasks aus den XML-Daten
saveTodo Auswertung der Checkboxzustände, hinzufügen & ändern neuer Tasks
6.2 Ausgabe
form_input gibt eine HTML-input-form laut Text, Name und Wert aus
printSelect stellt eine <SELECT> Liste dar
6.3 Besprechungsprotokoll
editMeetingForm zeigt ein Formular zum Bearbeiten eines Besprechungsprotokolls
getMeetingList liefert eine Liste aller Besprechungsprotokolle im aktuellen Projekte
meetingSelectList erzeugt ein <SELECT> für das Besprechungsprotokoll
showAllMeetings zeigt ein Liste aller vorhandenen Besprechungsprotokolle an
showMeeting zeigt ein Besprechungsprotokoll an
writeMeeting speichert ein Besprechungsprotokoll
Seite 115
6.4 Datums- & Kalenderfunktionen
curDate überprüft ob das angegeb. Datum in einem Bereich zum akt. liegt
getActiveDate liefert/überprüft das akt./angegebene Datum als timestamp
getActiveMonth liefert ein Array mit den aktuellen Datumsdaten
getDayInfo liefert das angegebene Snip und kann auch zum löschen von diesem verwendet werden
getDayList liefert ein Array mit den Datumsdaten des akt. Monats
getMonthList liefert ein Array mit den Monatsnamenkürzel laut language
parseDate liefert aus einem Datums-String ein parseDateTime-Array
parseDateTime liefert aus einem Datums-Zeit-String ein parseDateTime-Array
restOfTime gibt einen String mit der Dauer der angegebenen Zeitangaben zurück
saveEvent speichert ein Event (Calendar) in das zugehörige cal-Snip
6.5 Hierarchiedarsteller
formatTree formatiert die Ausgabe einer Baumstruktur
getTree erstellt eine Snip-Baumstruktur
6.6 Interfacing
getIcon liefert ein Icon für das aktuelle Interface
getInterfaces liefert eine Liste aller vorhandenen Interfaces
miniElement liefert ein Controlpanel Element des aktuellen Interfaces
miniFooter liefert den Controlpanel-Footer des aktuellen Interfaces
miniHeader liefert den Controlpanel-Header des aktuellen Interfaces
miniRow liefert eine Zeile im Controlpanel des aktuellen Interfaces
pageElement liefert ein Seitenelement des aktuellen Interfaces
saveInterface setzt das gewünschte Interface
Seite 116
6.7 Internationalisierung
changeDictionary regelt das Ändern bzw. das Hinzufügen eines Spracheintrages
createNewLanguage fügt eine neue Sprache in das Dictionary ein
deleteLanguage löscht eine Sprache aus dem Dictionary
dictToString wandelt eine Dictionary-Struktur in eine Arraydefinition beschreibender Strings um
focusitem gibt dem zu bearbeiteten Element den Fokus (js)
i18n übersetzt ein Wort bzw. einen String
killDictionary löscht einen Spracheintrag aus einem Dictionary
loadDictionary lädt eine Dictionary-Struktur aus einer Datei
loadLangs liefert alle Sprachen in einem Dictionary zurück
newLanguageForm zeigt ein Formular zur Erstellung einer neuen Sprache an
saveLanguage setzt die gewünschte Sprache
showWordList zeigt ein Wörterbuch im HTML Format an
translate Übersetzung eines Wortes
updateDictionary Ändern oder Hinzufügen von Wortdaten in einem Dictionary
writeDictionary schreibt die Dictionary-Struktur in eine Datei
6.8 Kommentarverwaltung
getCommentSnips liefert alle vorhandenen Commentsnips zum angegebenen Snip
isCommentSnip liefert TRUE zurück falls das angegebene Snip ein Commentsnip ist
Seite 117
6.9 Linker
getBacklinks liefert alle Backlinks zum angegebenen Snip
getKeywords liefert Keywords und Links des angegebenen Snips
removeLinkerSymbols entfernt Linkersymbole aus einem String
setBacklinks setzt Links, Keywords und Backlinks des referenzierten Snips
unsetBacklinks löscht nicht mehr gültige Backlinks
wiki_link durchsucht einen Text nach Linkersymbolen und ersetzt diese gegebenfalls durch Links bzw. fügt ein benötigtes Dokument ein
wiki_replace wird von wiki_link aufgerufen und führt die eigentliche Ersetzung durch
6.10 Projektverwaltung
controlPanel zeigt die Einstellungen für ein Projekt an
createProject erstellt ein neues Projekt
destroy_form erzeugt ein Formular zur Löschung eines Projekts
getActiveProject liefert das aktuelle Projekt
getProjectCreator liefert den Ersteller des angegebenen Projekts
getProjectList liefert eine Liste aller vorhandenen Projekte
getProjectMemberCount liefert die Anzahl der Projektmitlieder im angegebenen Projekt
getProjectMembers liefert die Namen aller Projektmitglieder
getProjectPath liefert den Pfad zum aktuellen Projekt
setActiveProject setzt das aktuelle Projekt
setProjectMembers speichert die Projektmitglieder
Seite 118
6.11 Rechteverwaltung
checkReadAccess führt die Prüfung auf Leserecht einer in-memory Rights-Struktur durch
checkWriteAccess führt die Prüfung auf Schreibrecht einer in-memory Rights-Struktur durch
getRights liefert die Zugriffsrechte eines Snips
joinUserAndGroups verbindet User- und Gruppenlisten
mayEdit ein Alias auf writeAccess
readAccess liefert TRUE wenn Leserecht vorhanden ist
schleimer schickt keepalive-messages während der Benutzer ein Snip bearbeitet (für Concurrent Edits)
setRights setzt die Zugriffsrechte eines Snips
writeAccess liefer TRUE wenn Schreibrecht vorhanden ist
6.12 Renderer
false Debugfunktion
getLengths berechnet die Breite von Tabellenelementen pro Spalte
render Grundfunktion zum umwandeln von einem Format ins Andere
render_rtf Ausgabe einer XML Struktur in RTF-Format
render_html Rendern ins HTML-Format
render_plain Rendern ins Plaintext-Format
rtf_odie_header Ausgabe eines RTF-Headers für ein Dokument
rtf_odie_close Ausgabe eines RTF-Footers für ein Dokument
to_blocktext Blocksatzmacher
trimall entfernt alle Whitespace-Characters vom Anfang und Ende eines Strings
true Debugfunktion
Seite 119
6.13 Simple DB
addIndexEntry legt einen Indexeintrag für ein Snip an
deleteSnip löscht ein Snip
getHeader liest Snipinformationen aus dem Index
getSnip liest ein Snip und liefert ein Snipobjekt zurück
isBadName überprüft ob ein Name verwendet werden darf
lockSnip sperrt ein Snip
makeIndexName plattformabhängige Funktion zur CaseSensitivity
myfopen ein erweitertes, plattformabhängiges fopen (mit Filelocking)
myfopen_loop Filelocking auf Win32
myfclose schließt eine Datei, die mit myfopen geöffnet wurde
prepareIndex lädt den Projektindex in den Speicher
read_index liest einen Projektindex ein
read liefert das gewünschte Snipobjekt zurück
serializeFile speichert ein Array in eine Datei
unlockSnip gibt ein vorher mit lockSnip() gesperrtes Snip wieder frei
unserializeFile liest ein Array aus einer Datei
write schreibt einen Snipeintrag
write_index schreibt die Indexdatei eines Projekts
writeHeader schreibt Snipinformationen in den Projektindex
writeSnip schreibt ein Snipobjekt auf die Festplatte
Seite 120
6.14 Sessionmanagement
getSessionData liefert die Sessiondaten zu einer angegebenen Session ID
getSessionId liefert die SessionId der aktiven Session
setSessionData setzt die Sessiondaten der aktuellen Session
6.15 Sniplisten
getExternSnips liefert eine Liste aller nicht indizierten Snipnamen
getMissingSnips liefert eine Liste jener Snipnamen, die häufig verlinkt sind, jedoch nicht existieren
getSnipList liefert ein Array von Snipobjekten
getSnipNames liefert eine Liste von Snipnamen
getSnipsByContentType liefert eine Liste von Snipnamen nach angegebenen Inhaltstyp
getSnipsByCreationDate liefert eine Liste von Snipnamen nach dem Erstellungsdatum
getSnipsByCreator liefert eine Liste von Snipnamen nach dem Ersteller
getSnipsByFullText liefert eine Liste von Snipnamen nach Volltextsuche
getSnipsByKeywords liefert eine Liste von Snipnamen nach Schlüsselwortsuche
getSnipsByModificationDate liefert eine Liste von Snipnamen nach dem Bearbeitungsdatum
getSnipsByPopularity liefert eine Liste von Snipnamen nach Popularität
getUnlinkedSnips liefert eine Liste von Snipnamen nicht verlinkter Snips
Seite 121
6.16 Snipverwaltung
createForm erzeugt ein Formular zum Erstellen von Snips
defaultSnip erzeugt ein Snipobjekt mit Initialwerten
getContentTypes liefert eine Liste aller vorhandenen Inhaltstypen
getEditHandler liefert den edit-handler zum angegebenen Snip
getSnipCount liefert die Anzahl der Snips im angegebenen Projekt
getSnipDates liefert das Bearbeitungsdatum aller Snips im aktuellen Projekt
snipErrorMsg füllt ein Snipobjekt mit einer Fehlermeldung
snipExists liefert TRUE falls das angegebene Snip im Index vorhanden ist
6.17 Structured Text
getLineCount liefert die Anzahl physicher Zeilen in einer logischen Zeile
linkUrls ersetzt Text-Urls mit HTML <A> Tags
stx_parse zerlegt übergebenen String in logische Zeilen, führt STX Ersetzung durch und liefert einen String mit HTML Symbolen.
stx_rep führt einzeilige STX Ersetzungen durch (Unterstreichung, ...)
styleBlock führt STX Ersetzungen eines logischen Blocks durch
to_s wandelt ein Array physischer Zeilen (eine logische Zeile) in eine physische Zeile um
Seite 122
6.18 Usermanagement
createUser erzeugt einen Usereintrag in der User-DB
formname zeigt das Formular zur Namensbekanntgabe an
getActiveUser liefert den aktiven Benutzer
getUserData liefert die Benutzerdaten des angegebenen Benutzers
getUserList liefert eine Liste von allen Benutzern
getValidUsername liefert einen validen Benutzername, falls der angegebene nicht valid ist
isOdieAdmin liefert TRUE falls der angegebene Benutzer ODIE-Administrator ist
isProjectAdmin liefert TRUE falls der angegebene Benutzer Administrator des aktuellen Projekts ist
isProjectCreator liefert TRUE falls der angegebene Benutzer Ersteller des aktuellen Projekts ist
isProjectMember liefert TRUE falls der angegebene Benutzer Mitglied im aktuellen Projekt ist
question gibt ein Formular für die Reminderquestion aus
sendpass schickt ein Passwort an einen E-mail Adresse
setUserData schreibt die Benutzerdaten des angegebenen Benutzers
6.19 Utils
check_email liefert TRUE falls die angegeben email-Adresse valid ist
cleanPath entfernt ../ aus einer Pfadangabe und liefert den gesäuberten Pfad
cmpDate ein benutzerdefinierter Sortieralgorithmus für zweistufige Arrays (Dates)
cmpString ein benutzerdefinierter Sortieralgorithmus für zweistufige Arrays (Strings)
deleteDir löscht ein Verzeichnis mit seinem gesamten Inhalt
form_href erzeugt einen ODIE-Link mit den angegebenen Parametern
getTimeSpanString liefert die Differenz zweier Timestamps als String
htmlencode ein modifiziertes urlencode
htmlize ersetzt reservierte HTML-Zeichen in jeder Arrayebene
Seite 123
make_seed erzeugt einen zeitabhängigen Random-Wert
parseOdieUrl zerlegt die Urlzeile und liefert Projekt, Snip und Applikation
strSplit trennt einen String nach angegebenem Trennzeichen. Zurückgeliefert wird immer ein Array (im Gegensatz zum herkömmlichen split())
trace Debugausgabe beliebiger Werte
6.20 Verwaltung externer Dateien
getHeaderExtern liefert Informationen aller externen Dateien des aktiven Projekts
getSizeString liefert die Größe in Byte, KByte oder MByte
saveExtern speichert externe Dateien und sorgt für den Indexeintrag des Weiteren wird bei Bildern des Typs png & jpg ein Thumbnail erzeugt und abgelegt
6.21 XML – Parser
countOpenTags zählt die Anzahl bestimmter öffnender XML-Tags in einem String
couTime Debugfunktion (Zeitnehmung)
do_parse parsen eines XML-Strings
findTagEnd liefert die Stringposition vom Ende einer Tagstruktur
getTag Auflösen eines Strings in eine XML-Struktur
parse schafft die Rahmenbedingungen für do_parse
rausTime Debugfunktion (Zeit ausgeben)
unparse eine XML-Struktur wird wieder in einen String umgewandelt
6.22 Sonstiges
odie_help öffnet ein Popup-Fenster für die Kontexthilfe
Seite 124
7 Funktionsreferenz
changeDictionary 128
check_email 130
checkReadAccess 132
checkWriteAccess 134
cleanPath 136
cmpDate 138
cmpString 140
controlPanel 142
countOpenTags 144
couTime 146
createForm 148
createNewLanguage 150
createProject 152
createUser 154
curDate 156
defaultSnip 158
deleteDir 160
deleteLanguage 162
deleteSnip 164
delTodo 166
destroy_form 168
dictToString 170
do_parse 172
editMeetingForm 174
editTodo 176
false 178
findTagEnd 180
focusitem 182
formatTree 184
formname 186
form_href 188
form_input 190
getActiveDate 192
getActiveMonth 194
getActiveProject 196
getActiveUser 198
getBacklinks 200
getCommentSnips 202
getContentTypes 204
getDayInfo 206
getDayList 208
getEditHandler 210
getExternSnips 212
getHeader 214
getHeaderExtern 216
getIcon 218
getInterfaces 220
getKeywords 222
Seite 125
getLengths 224
getLineCount 226
getMeetingList 228
getMissingSnips 230
getMonthList 232
getProjectCreator 234
getProjectList 236
getProjectMemberCount 238
getProjectMembers 240
getProjectPath 242
getRights 245
getSessionData 247
getSessionId 249
getSizeString 251
getSnip 254
getSnipCount 256
getSnipDates 258
getSnipList 260
getSnipNames 262
getSnipsByContentType 264
getSnipsByCreationDate 266
getSnipsByCreator 268
getSnipsByFullText 270
getSnipsByKeywords 272
getSnipsByModificationDate 274
getSnipsByPopularity 276
getSnipsByTitle 278
getTag 280
getTimespanString 282
getTodo 284
getTree 286
getUnlinkedSnips 288
getUserData 290
getUserList 292
getValidUsername 294
htmlencode 296
htmlize 298
i18n 300
isBadName 302
isCommentSnip 304
isOdieAdmin 306
isProjectAdmin 308
isProjectCreator 310
isProjectMember 312
is_empty 314
joinUsersAndGroups 316
killDictionary 318
linkUrls 320
loadDictionary 322
loadLangs 324
lockSnip 326
Seite 126
makeIndexName 328
make_seed 330
mayEdit 332
meetingSelectList 334
miniElement 336
miniFooter 338
miniHeader 340
miniRow 342
myfclose 344
myfopen 346
myfopen_loop 348
newLanguageForm 350
odie_help 352
pageElement 354
parse 356
parseDate 358
parseDateTime 360
parseOdieUrl 362
prepareIndex 364
printSelect 366
question 368
rausTime 370
read 372
readAccess 374
read_index 376
removeLinkerSymbols 378
render 380
render_html 382
render_plain 384
render_rtf 386
restOfTime 388
rtf_odie_close 390
rtf_odie_header 392
saveEvent 394
saveExtern 396
saveInterface 398
saveLanguage 400
saveTodo 403
schleimer 405
sendpass 407
serializeFile 409
setActiveProject 411
setBacklinks 413
setProjectMembers 415
setRights 418
setSessionData 420
setUserData 422
showAllMeetings 424
showMeeting 426
showWordList 428
snipErrorMsg 430
Seite 127
snipExists 432
strSplit 434
stx_parse 436
stx_rep 438
styleBlock 440
to_blocktext 442
to_s 444
trace 446
translate 448
trimall 450
true 452
unlockSnip 454
unparse 456
unserializeFile 458
unsetBacklinks 460
updateDictionary 462
wiki_link 464
wiki_replace 466
write 468
writeAccess 470
writeDictionary 472
writeHeader 474
writeMeeting 476
writeSnip 478
write_index 481
Seite 128
<ODI-DDOC-changeDictionary-2002-05-14-M>
Modulbezeichnung changeDictionary()
Dateiname core/changeDictionary
Versionsdatum 21.02.2002
Kurzbeschreibung Ändern oder hinzufügen eines Spracheintrages
Erfordert -
Verantwortliche Maczejka
Autor Maczejka
LOC 14
Bytes 360
Cyclomatic Number 5
Seite 129
Detailbeschreibung
Übergeben werden 4 Parameter (array dictionary, array content, array langs, array old). In der Dictionary- Struktur dictionary wird ein neuer Spracheintrag (content, Bestehend aus allen Wörtern zu den einzelnen Sprachen) erstellt, für jede Sprache in langs. Sofern old nicht leer ist, wird dieser Eintrag vorher aus dem Dictionary entfernt.
Input
Array dictionary Zu bearbeitendes Dictionary Array content Neue Inhalte Array langs Spracharray string old Altes Wort
Output
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 130
<ODI-DDOC-checkReadAccess-2002-05-14-G>
Modulbezeichnung
checkReadAccess()
Dateiname lib/snip.inc
Versionsdatum 17-Apr-2002
Kurzbeschreibung Prüft ob ein Benutzer Lesezugriff auf ein Snip hat.
Erfordert getActiveUser(), getActiveProject(), isProjectMember()
Verantwortliche Zlabinger, Pavlu
Autor Zlabinger
LOC 34
Bytes 920
Cyclomatic Number 9
Seite 131
Detailbeschreibung
Überprüft ob ein Benutzer Zugriff auf ein Snip hat. Die Rechte-Arrays müssen mitübergeben werden. Diese Funktion wird von readAccess und von der Rechteapplikation aufgerufen.
Input
Array rights ein Array mit den Elemente ‘read_list’ und ‘write_list’. Für eine genaue Beschreibung des
Arrays siehe readAccess oder writeAccess Dokumentation.
String user Der Benutzername, für den die Überprüfung vorgenommen werden soll. Wird ein Leerstring übergeben, so wird der aktuelle Benutzer angenommen.
Output
Boolean True wenn der Benutzer das Snip lesen darf, andernfalls False.
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 132
<ODI-DDOC-checkWriteAccess-2002-05-14-G>
Modulbezeichnung checkWriteAccess()
Dateiname lib/snip.inc
Versionsdatum 17-Apr-2002
Kurzbeschreibung Prüft ob ein Benutzer Schreibzugriff auf ein Snip hat
Erfordert getActiveUser(), checkReadAccess(), isProjectMember()
Verantwortliche Zlabinger, Pavlu
Autor Zlabinger
LOC 32
Bytes 967
Cyclomatic Number 9
Seite 133
Detailbeschreibung
Liefert True wenn der Benutzer Schreibzugriff auf das Snip hat. Die Arrays mit den Rechten müssen mitübergeben werden.
Input
Array rights ein Array mit den Elemente ‘read_list’ und ‘write_list’. Für eine genaue Beschreibung des
Arrays siehe readAccess oder writeAccess Dokumentation.
String user Der Benutzername, für den die Überprüfung vorgenommen werden soll. Wird ein Leerstring übergeben, so wird der aktuelle Benutzer angenommen.
Output
Boolean True wenn der Benutzer das Snip schreiben darf, andernfalls False.
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 134
<ODI-DDOC-check_email-2002-05-14-S>
Modulbezeichnung check_email()
Dateiname lib/utils.inc
Versionsdatum 17-Apr-2002
Kurzbeschreibung überprüft die Syntax einer e-mail-Adresse
Erfordert keine
Verantwortliche Zlabinger
Autor Seywerth
LOC 7
Bytes 140
Cyclomatic Number 2
Seite 135
Detailbeschreibung
Überprüft die Syntax der angegebenen e-mail-Adresse.
Input String email der zu prüfende String
Output Bool gueltig true, wenn es sich um eine gültige e-mail
adresse handelt, ansonsten false
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 136
<ODI-DDOC-cleanPath-2002-05-14-P>
Modulbezeichnung cleanPath()
Dateiname lib/utils.inc
Versionsdatum 11-Mär-2002
Kurzbeschreibung Befreit einen Pfad von ../, ./ und anderen Angriffsversuchen
Erfordert keine
Verantwortliche Pavlu
Autor Pavlu
LOC 35
Bytes 683
Cyclomatic Number 5
Seite 137
Detailbeschreibung
Säubert einen absoluten Snipnamen. Sämtliche ../ ./ oder andere Versuche auf verbotene Dateien zuzugreifen werden entfernt. Zurückgeliefert wird ein Array der Form ( projekt, snipname)
Input String Dateiname der Pfad zu einem Snip
Output Array (Projekt, Snipname)
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 138
<ODI-DDOC-cmpDate-2002-05-14-K>
Modulbezeichnung cmpDate()
Dateiname core/cmpDate
Versionsdatum 26-Mär-2002
Kurzbeschreibung Benutzerdefinierter Sortieralgorithmus für uasort (Datestrings)
Erfordert parseDate()
Verantwortliche Kolm
Autor Kolm
LOC 26
Bytes 484
Cyclomatic Number 5
Seite 139
Detailbeschreibung
Dies ist der benutzerdefinierten Sortieralgorithmen für uasort (Datestrings). Beim Sortieren wird auf das richtige Sortierkriterium und auf die Sortierreihenfolge (az - za) geachtet. Um die Sortierung möglich zu machen, wird die parseDateTime Funktion mit den jeweiligen Arrayelementen aufgerufen.
Global String sort_key Sortierkriterium (Key des Arrays) String sort_dir Sortierreihenfolge [az | za]
Input String a 1. Element des Arrays String b 2. Element des Arrays
Output Zurückgegeben wird -1|0|+1 für die uasort Funktion.
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 140
<ODI-DDOC-cmpString-2002-05-14-K>
Modulbezeichnung cmpString()
Dateiname core/cmpString
Versionsdatum 26-Mär-2002
Kurzbeschreibung Benutzerdefinierter Sortieralgorithmus für uasort (Strings)
Erfordert -
Verantwortliche Kolm
Autor Kolm
LOC 21
Bytes 473
Cyclomatic Number 5
Seite 141
Detailbeschreibung
Dies ist der benutzerdefinierten Sortieralgorithmen für uasort (Strings). Er erhält zwei Elemente eines Arrays. Beim Sortieren wird auf das richtige Sortierkriterium und auf die Sortierreihenfolge (az - za) geachtet
Global String sort_key Sortierkriterium (Key des Arrays) String sort_dir Sortierreihenfolge [az | za]
Input String a 1. Element des Arrays String b 2. Element des Arrays
Output Zurückgegeben wird -1|0|+1 für die uasort Funktion.
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 142
<ODI-DDOC-controlPanel-2002-05-14-G>
Modulbezeichnung controlPanel()
Dateiname system/edit-project
Versionsdatum 22-Feb-2002
Kurzbeschreibung Zeigt die Einstellungen für ein Projekt an
Erfordert getProjectMembers(), getActiveProject(), i18n(), form_href(),
getUserList(), getActiveUser(), isProjectMember(),
isProjectCreator(), isOdieAdmin()
Verantwortliche Zlabinger, Kolm
Autor Zlabinger
LOC 85
Bytes 2984
Cyclomatic Number 11
Seite 143
Detailbeschreibung
Dient zur Darstellung des Projektadministrationspanels. Mit Hilfe dieses Panels ist es möglich Benutzer ins Projekt einzuladen, sie wieder auszuladen, das Projekt zu löschen, nicht im Index vorhandene Snips zu importieren, den Content-Type jener Snips mit unbekannter Content-Type zu setzen sowie den Aufruf des Wörterbuchgenerators zu tätigen, falls man Odie Administrator ist. Diese Funktion übernimmt keine Parameter und liefert auch nichts zurück.
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 144
<ODI-DDOC-countOpenTags-2002-05-14-M>
Modulbezeichnung countOpenTags()
Dateiname lib/parser.inc
Versionsdatum 17.04.2002
Kurzbeschreibung Zählt die Anzahl bestimmter öffnender Tags in einem String
Erfordert -
Verantwortliche Maczejka
Autor Maczejka
LOC 14
Bytes 264
Cyclomatic Number 3
Seite 145
Detailbeschreibung
Übergeben werden ein Suchstring sowie der Name des gesuchten Tags. Der Suchstring wird nach Vorkommnissen eines öffnenden Tags vom typ des übergebenen Tags durchsucht („<tag>“). Zurückgeliefert wird die Anzahl der Vorkommnisse.
Input
String string Heuhaufen String tag Nadel
Output
Int count Anzahl der Vorkommnisse
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 146
<ODI-DDOC-couTime-2002-05-14-M>
Modulbezeichnung couTime()
Dateiname lib/parser.inc
Versionsdatum 17.04.2002
Kurzbeschreibung Debugfunktion, Zeit nehmen
Erfordert -
Verantwortliche Maczejka
Autor Maczejka
LOC 5
Bytes 79
Cyclomatic Number 1
Seite 147
Detailbeschreibung
Debugfunktion zum Testen des Parser- Zeitverhaltens. Eine Zeit wird genommen und im übergebenen Variablennamen gespeichert.
Input
String varname Variable, in der die Zeit gespeichert wird
Output
keiner
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 148
<ODI-DDOC-createForm-2002-05-14-G>
Modulbezeichnung createForm()
Dateiname system/createSnip
Versionsdatum 2002-03-30
Kurzbeschreibung Zeigt das Formular zur Eingabe des Snipnamens und Typs ein
Erfordert i18n(), form_href(), getContentTypes()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 58
Bytes 1142
Cyclomatic Number 5
Seite 149
Detailbeschreibung
Diese Funktion zeigt ein Formular zur Eingabe eines Snipnamens und Content-types an.
Input
String msg Eine optionale Mitteilung, die vor dem Formular angezeigt wird (z.B.: Fehlerhinweise, ...)
Diese Funktion liefert keinen Wert zurück
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 150
<ODI-DDOC-createNewLanguage-2002-05-14-M>
Modulbezeichnung createNewLanguage()
Dateiname system/dictgen
Versionsdatum 17.04.2002
Kurzbeschreibung Einfügen einer neuen Sprache in ein Dictionary
Erfordert htmlencode(), loadDictionary(), writeDictionary()
Verantwortliche Maczejka
Autor Maczejka
LOC 11
Bytes 266
Cyclomatic Number 3
Seite 151
Detailbeschreibung
Eine Sprache wird übergeben, das Dictionary mit loadDictionary geladen, in jedem Wort ein neuer Eintrag für die Sprache erstellt. Anschließend wird das Dictionary mit writeDictionary gespeichert.
Input
String language Bezeichnung der Sprache
Output
keiner
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 152
<ODI-DDOC-createProject-2002-05-14-G>
Modulbezeichnung createProject()
Dateiname core/createProject
Versionsdatum 25-Mär-2002
Kurzbeschreibung Erstellt ein neues Projekt
Erfordert myfopen(), myfclose(), addIndexEntry(), getUserData(),
setUserData(), i18n()
Verantwortliche Zlabinger, Kolm
Autor Zlabinger
LOC 45
Bytes 1233
Cyclomatic Number 4
Seite 153
Detailbeschreibung
Diese Funktion erstellt ein Projekt (inklusive Pfade, Startsnip, Memberfile, …) und trägt den Ersteller als Projektmitglied ein.
Input
String project_name Der Name des zu erstellenden Projekts String username Der Benutzername der als Ersteller eingetragen
werden soll. Wird Leerstring übergeben so wird der aktuelle Benutzer angenommen.
Output
Boolean False falls das Projekt schon existiert, ansonsten True.
Probleme
keine
Verbesserungsmöglichkeiten
Eine Fehlerüberprüfung für die Pfadangaben, etc… falls aus irgendeinem Grund eine schlimme URL durch die Überprüfung in den vorigen Funktionen kommt.
Seite 154
<ODI-DDOC-createUser-2002-05-14-G>
Modulbezeichnung createUser()
Dateiname core/createUser
Versionsdatum 27-Mär-2002
Kurzbeschreibung Legt einen neuen Benutzer an
Erfordert getValidUsername(), i18n(), check_email(), setUserData()
Verantwortliche Kolm, Zlabinger
Autor Zlabinger
LOC 66
Bytes 2436
Cyclomatic Number 13
Seite 155
Detailbeschreibung
Legt einen neuen Benutzer an. Dabei wird überprüft, ob ein gültiger Benutzername und eine gültige E-Mail Adresse angegeben wurde.
Input
Array userdata Die Daten des anzulegenden Benutzers. Für eine genaue Dokumentation siehe getUserData oder setUserData.
Output
Boolean False, wenn das erstellen fehlgeschlagen ist, ansonsten True.
String create_message eine globale Variable, die den Grund des Scheiterns erhält.
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 156
<ODI-DDOC-curDate-2002-05-14-S>
Modulbezeichnung curDate()
Dateiname core/curDate
Versionsdatum 27-Jan-2002
Kurzbeschreibung überprüft ob das angegeb. Datum in einem Bereich zum akt. liegt
Erfordert parseDateTime()
Verantwortliche Seywerth
Autor Seywerth
LOC 33
Bytes 774
Cyclomatic Number 7
Seite 157
Detailbeschreibung
Überprüft ob das angegebene Datum in dem angegebenen Bereich zum aktuellen Datum liegt. Liefert ’true’ falls das Überprüfungsdatum innerhalb des Bereichs vom aktuellen Datum zu finden ist, oder false zurück. Das Vergleichsdatum befindet sich im format von parseDateTime [’str’].
Input String cmpdate entspricht dem Vergleichsdatum Integer dif ist der Überprüfungsbereich in minuten
Output Bool true|false das Ergebnis der Überprüfung
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 158
<ODI-DDOC-defaultSnip-2002-05-14-S>
Modulbezeichnung defaultSnip()
Dateiname lib/utils.inc
Versionsdatum 17-Apr-2002
Kurzbeschreibung liefert ein Array mit den Default-Snip-Informationen zurück
Erfordert getActiveProject()
Verantwortliche Zlabinger
Autor Seywerth
LOC 21
Bytes 790
Cyclomatic Number 1
Seite 159
Detailbeschreibung
Gibt ein Array mit dem Inhalt des Default-Snips zurück.
Dieses enthält folgende Informationen: snip_data['title'] snip_data['project'] snip_data['creator'] snip_data['editor'] snip_data['edit_timestamp'] snip_data['content-type'] snip_data['content'] snip_data['creation_timestamp'] snip_data['keywords'] snip_data['read_count'] snip_data['write_list'] snip_data['read_list'] snip_data['backlinks'] snip_data['links'] snip_data['size'] snip_data['description']
Input keine
Output Array snip_data ein Array mit der Beschreibung des Snips
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 160
<ODI-DDOC-deleteDir-2002-05-14-G>
Modulbezeichnung deleteDir()
Dateiname core/deleteDir
Versionsdatum 2002-04-29
Kurzbeschreibung Löscht ein Verzeichnis samt Dateien und Unterverzeichnisse
Erfordert deleteDir()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 21
Bytes 350
Cyclomatic Number 4
Seite 161
Detailbeschreibung
Diese Funktion löscht ein Verzeichnis im Dateisystem rekursiv. Dass heisst es werden alle Dateien in allen Unterverzeichnissen unwiderruflich gelöscht.
Input
String directory Der Name des zu löschenden Verzeichnisses
Diese Funktion liefert keinen Wert zurück
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 162
<ODI-DDOC-deleteLanguage-2002-05-14-M>
Modulbezeichnung deleteLanguage()
Dateiname system/dictgen
Versionsdatum 17.04.2002
Kurzbeschreibung Löschen einer Sprache in einem Dictionary
Erfordert loadDictionary(), writeDictionary()
Verantwortliche Maczejka
Autor Maczejka
LOC 11
Bytes 266
Cyclomatic Number 3
Seite 163
Detailbeschreibung
Eine Sprache wird übergeben, das Dictionary mit loadDictionary geladen, jedes Vorkommnis der Sprache aus dem Wörterbuch gelöscht, anschließend das Dictionary wieder mit writeDictionary gespeichert.
Input
String language Zu löschende Sprache
Output
keiner
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 164
<ODI-DDOC-deleteSnip-2002-05-14-G>
Modulbezeichnung deleteSnip()
Dateiname core/deleteSnip
Versionsdatum 25-Mär-2002
Kurzbeschreibung Löscht ein Snip.
Erfordert snipExists(), writeAccess(), lockSnip(), getHeader(),
unsetBacklinks(), writeHeader(), getProjectPath()
Verantwortliche Kolm, Pavlu, Zlabinger
Autor Zlabinger
LOC 58
Bytes 1834
Cyclomatic Number 8
Seite 165
Detailbeschreibung
Entfernt ein Snip aus dem Index und löscht die Backlinks. Wenn der zweite Parameter auf DELETE_PHYSICALLY gesetzt ist, löscht es auch die Datei aus dem Filesystem. Das ganze funktioniert natürlich nur falls der durchführende Benutzer schreibberechtigt ist und das Snip nicht von jemandem gelocked ist.
Input
String title Der Name des zu löschenen Snips. Int mode Entweder MOVE_TO_TRASH (default) oder
DELETE_PHYSICALLY.
Output
Boolean True wenn der Vorgang erfolgreich abgeschlossen wurde.
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 166
<ODI-DDOC-delTodo-2002-05-14-K>
Modulbezeichnung delTodo()
Dateiname core/delTodo
Versionsdatum 21-Feb-2002
Kurzbeschreibung Ermöglicht das löschen einzelner Tasks einer To-Do Liste
Erfordert unparse(), writeSnip()
Verantwortliche Kolm
Autor Kolm
LOC 14
Bytes 354
Cyclomatic Number 4
Seite 167
Detailbeschreibung
Die Funktion delTodo ermöglicht es einzelne Tasks mittels einer checksum (priority, name, description, due date) zu löschen.
Benötigt wird ein Snipobjekt (username,title), ein Task-Array sowie die checksum die beim Aufruf in Layer2 erzeugt wird.
Zurückgegeben wird ein Array bestehend aus einem Fehlercode, dem Snipobjekt und des aktuellen Task-Arrays. Fehlercode 0 bedeutet, dass writeSnip erfolgreich war – aktualisiertes Snipobjekt / Task-Array wird ebenfalls zurückgegeben. Falls writeSnip() nicht erfolgreich war, ist der Fehlercode 2 und es wird lediglich das übergebene Snipobjekt zurückgeliefert – Task erhält den Wert 0.
Input Array snip Snipobjekt Array task das Task-Array String todo_del Die checksum
Output Array (errorcode, snip, task) Errorcode wie oben erwähnt, Snipobjekt & Task-Array
Probleme
Durch viele Änderungen dieser Funktion ist der Aufbau des Rückgabewertes nicht mehr up-to-date. Die Übersichtlichkeit lässt zu wünschen übrig.
Verbesserungsmöglichkeiten
Rückgabewerte klüger zusammensetzen. Rückgabe eines booleans; Snipobjekt und Task referenziert – oder ähnliche Lösungen.
Seite 168
<ODI-DDOC-destroy_form-2002-05-14-G>
Modulbezeichnung destroy_form()
Dateiname system/kill-project
Versionsdatum 2002-04-28
Kurzbeschreibung Zeigt das Formular zur Eingabe des Zerstörungscodes an
Erfordert form_href(), i18n(), getActiveProject()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 27
Bytes 1056
Cyclomatic Number 1
Seite 169
Detailbeschreibung
Zeigt ein Formular zur Eingabe des Zerstörungscodes für ein Projekt an. Diese Funktion akzeptiert keine Parameter und liefert keinen Wert zurück.
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 170
<ODI-DDOC-dictToString-2002-05-14-M>
Modulbezeichnung dictToString()
Dateiname core/dictToString
Versionsdatum 18.03.2002
Kurzbeschreibung Umwandeln einer Dictionary- Struktur in einen eine
Arraydefinition beschreibenden String
Erfordert htmlencode()
Verantwortliche Maczejka
Autor Maczejka
LOC 23
Bytes 448
Cyclomatic Number 4
Seite 171
Detailbeschreibung
Die PHP- Arraystruktur (Parameter) wird in einen String umgewandelt, der einer textuellen Deklaration dieses Arrays entspricht. Speichert man diesen String und inkludiert ihn anschließend (z.b. require), so hat man ein neues Array, das dem alten gleicht.
Input
Array dictionary Die Wörterbuchstruktur
Output
String dictionary Der repräsentierende String
Probleme
Rekursion in der Funktion, deshalb muss vor dem String „$variablenname = Array(„ und danach „);“ angegeben werden.
Verbesserungsmöglichkeiten
-
Seite 172
<ODI-DDOC-do_parse-2002-05-14-M>
Modulbezeichnung do_parse()
Dateiname lib/parser.inc
Versionsdatum 17.04.2002
Kurzbeschreibung Parsen eines XML-Strings
Erfordert getTag()
Verantwortliche Maczejka
Autor Maczejka
LOC 45
Bytes 930
Cyclomatic Number 10
Seite 173
Detailbeschreibung
Geht das übergebene XML- Dokument Sequentiell durch und filtert mithilfe von getTag dessen Bestandteile heraus. Die Ergebnisse werden zu einer übersichtlichen XML- Struktur zusammengebunden.
Input
String content Zu parsender String Boolean first Soll um den ersten Tag ein ntc gespannt sein? Boolean ugly Untidy XML gefunden
Output
Array result XML- Struktur
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 174
<ODI-DDOC-editMeetingForm-2002-05-14-M>
Modulbezeichnung editMeetingForm()
Dateiname system/meeting
Versionsdatum 17.04.2002
Kurzbeschreibung Anzeigen eines Formulars zum Bearbeiten eines Meetings
Erfordert getSnip(), getActiveUser(), parse(), unparse(), i18n(), form_href()
Verantwortliche Maczejka
Autor Maczejka
LOC 132
Bytes 4906
Cyclomatic Number 6
Seite 175
Detailbeschreibung
Darsetellung eines Formulars zum Erstellen oder Bearbeiten eines Besprechungsprotokolls in HTML.
Input
String present Anwesende String master Protokolleur String begin Startzeit String end Endzeit String protocol Besprechungsprotokoll
Output -
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 176
<ODI-DDOC-editTodo-2002-05-14-K>
Modulbezeichnung editTodo()
Dateiname system/todo
Versionsdatum 17-Apr-2002
Kurzbeschreibung Erzeugt die Bearbeitungszeile bei der To-Do Applikation
Erfordert i18n, strSplit
Verantwortliche Kolm
Autor Kolm
LOC 88
Bytes 2816
Cyclomatic Number 13
Seite 177
Detailbeschreibung
Mit Hilfe von editTodo wird es einfacher möglich die Zeile zum Bearbeiten eines Tasks an jeder Position der To-Do Liste auszugeben. Falls ein Benutzer einen Eintrag bearbeiten will, muss er auf den Task klicken und es wird die interne Nummerierung mitgeschickt – falls der mitgeschickte Wert 0 entspricht, wird am Ende der Liste die Eingabezeile ausgegeben.
Input int edit_task Die interne Laufvariable der Tasks;
jede ausgegebene Zeile hat eine laufende Nummer
String edit_key Die Keys des Task Arrays für den zu bearbeitenden Task
Output Ausgegeben wird eine Tablerow die Inputfelder für alle notwendigen Taskeigenschaften bereitstellt.
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 178
<ODI-DDOC-false-2002-05-14-M>
Modulbezeichnung false()
Dateiname lib/render_rtf.inc
Versionsdatum 27.03.2002
Kurzbeschreibung Debugfunktion
Erfordert _
Verantwortliche Maczejka
Autor Maczejka
LOC 4
Bytes 37
Cyclomatic Number 1
Seite 179
Detailbeschreibung
Setzt Parameter 1 auf „false“. Ursprünglich wurde noch eine Debugvariable auf „false“ gesetzt. Entspricht jetzt „$var = false;“.
Input
Boolean &var Auf FALSE zu setztende Variable
Output -
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 180
<ODI-DDOC-findTagEnd-2002-05-14-M>
Modulbezeichnung findTagEnd()
Dateiname lib/parser.inc
Versionsdatum 17.04.2002
Kurzbeschreibung Liefert die Stringposition vom Ende einer Tagstruktur
Erfordert countOpenTags()
Verantwortliche Maczejka
Autor Maczejka
LOC 35
Bytes 650
Cyclomatic Number 4
Seite 181
Detailbeschreibung
Übergeben wird das XML- Dokument als String(1), sowie der öffnende Tag, nach dessen schließendem Gegenstück gesucht wird(2). Das Dokument wird Sequentiell nach dem schließenden Tag durchsucht. Wird einer gefunden, so wird die Anzahl der öffnenden Tags gleichen Typs innerhalb des abgegrenzenten Strings gesucht. Dieser Vorgang wird solange fortgesetzt, bis ein schließender Tag gefunden wird, und die Anzahl der innerhalb des abgegrenzenten Contents gefundenen öffnenden Tags gleichen Typs und schließenden Tags gleichen Typs ident ist. (z.b.: „<a><a><a></a></a></a>“ -> ohne countOpenTags würde das Egebnis so aussehen: „<a><a><a></a>“).
Input
String xml XML- Dokument, oder Teil davon String open_tag Tag, nach dessen Ende gesucht wird
Output
Int position strpos des schließenden Tags
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 182
<ODI-DDOC-focusItem-2002-05-14-M>
Modulbezeichnung focusItem()
Dateiname system/dictgen
Versionsdatum 17.04.2002
Kurzbeschreibung Setzt den Fokus auf ein Formularelement
Erfordert
Verantwortliche Maczejka
Autor Maczejka
LOC 4
Bytes 85
Cyclomatic Number 1
Externer Designstress 0
Interner Designstress 0
Seite 183
Detailbeschreibung
JavaScriptfunktion. Übergeben wird ein Tabellenelement, auf das der Fokus gesetzt werden soll.
Input
String item Fokusitem
Output
keiner
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 184
<ODI-DDOC-formatTree-2002-05-14-M>
Modulbezeichnung formatTree()
Dateiname system/tree
Versionsdatum 17.04.2002
Kurzbeschreibung Formatierte Ausgabe einer Baumstruktur
Erfordert form_href(), wiki_link()
Verantwortliche Maczejka
Autor Maczejka
LOC 55
Bytes 1480
Cyclomatic Number 9
Seite 185
Detailbeschreibung
Übergeben wird eine mit getTree erstellte Baumstruktur, sowie ein String mit Informationen über geöffnete Elemente. Dieser Besteht aus Pfeillisten, beginnend beim Muttersnip->Kind1->Kind2... usw, getrennt durch Strichpunkte. Links neben dem Element werden aus verbreiteten Betriebssystemen bekannte Linienformatierungen ausgegeben. Plus und Minus sind gleichzeitig Links auf das Aufklappen bzw. Zusammenklappen von Elementen.
Input
Array data getTree Baumstruktur String open Geöffnete Elemente, wo (String parents Eltern des Elements, INTERN [rekursion]) (Int ebene Ebene des Elements, INTERN [rekursion])
Output
keiner
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 186
<ODI-DDOC-formname-2002-05-14-G>
Modulbezeichnung formname()
Dateiname system/sendpass
Versionsdatum 2002-03-30
Kurzbeschreibung Zeigt ein Formular zur Eingabe des Benutzernamens an
Erfordert i18n(), form_href()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 17
Bytes 477
Cyclomatic Number 1
Seite 187
Detailbeschreibung
Diese Funktion zeigt ein Formular zur Eingabe eines Benutzernamens an. Die Daten werden an sendpass geschickt
Diese Funktion akzeptiert keine Parameter und liefert keinen Wert zurück
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 188
<ODI-DDOC-form_href-2002-05-14-P>
Modulbezeichnung form_href()
Dateiname lib/utils.inc
Versionsdatum 11-Mär-2002
Kurzbeschreibung HTML-Formatierung für einen odie-Link
Erfordert keine
Verantwortliche Pavlu
Autor Pavlu
LOC 37
Bytes 1324
Cyclomatic Number 8
Seite 189
Detailbeschreibung Erstellt eine URL, die auf ein Snip und/oder eine Applikation zeigt. Parameter für den Aufruf von form_href() sind der Snip (kann auch Leerstring sein) und die optionalen Angaben zu Applikation und Parametern. Für den Parameterstring gilt folgendes Format: „key=value&key=value...“
Input String Sniptitle auf WAS gelinkt werden soll String App=’’ welche Applikation den Snip darstellen soll String Params=’’ Parameter für die Applikation
Output String URL href Attribut des <a> tags
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 190
<ODI-DDOC-form_input-2002-05-14-S>
Modulbezeichnung form_input()
Dateiname system/preferences
Versionsdatum 17-Apr-2002
Kurzbeschreibung gibt ein HTML-input-tag laut Text, Name und Wert aus
Erfordert keine
Verantwortliche Zlabinger
Autor Seywerth
LOC 7
Bytes 240
Cyclomatic Number 1
Seite 191
Detailbeschreibung Gibt ein HTML-input-tag laut den Parametern: Text, Name und Wert aus.
Input String text der auszugebende Text String name der Name des Feldes String value der Wert des Feldes
Output keine
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 192
<ODI-DDOC-getActiveDate-2002-05-14-S>
Modulbezeichnung getActiveDate()
Dateiname core/calendar
Versionsdatum 21-Feb-2002
Kurzbeschreibung liefert/überprüft das akt./angegebene Datum als timestamp
Erfordert parseDate()
Verantwortliche Pavlu
Autor Seywerth
LOC 24
Bytes 498
Cyclomatic Number 3
Seite 193
Detailbeschreibung
Liefert das aktuelle Datum als timestamp zurück. Werden als Parameter Jahr, Monat und/oder Tag übergeben werden diese ebenfalls überprüft und als timestamp zurückgegeben.
Input Integer y Jahresangabe, Default = 0 + akt. Jahr Integer m Monatsangabe, Default = 0 + akt. Monat Integer d Tagesangabe, Default = 0 + akt. Tag
Output Integer timestamp entspricht dem aktuellen bzw. korrigierten
Datum
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 194
<ODI-DDOC-getActiveMonth-2002-05-14-S>
Modulbezeichnung getActiveMonth()
Dateiname core/calendar
Versionsdatum 21-Feb-2002
Kurzbeschreibung liefert ein Array mit den aktuellen Datumsdaten
Erfordert parseDate()
Verantwortliche Pavlu
Autor Seywerth
LOC 13
Bytes 274
Cyclomatic Number 2
Seite 195
Detailbeschreibung
Liefert ein Array mit den aktuellen Datumsdaten laut parseDate() zurück.
Input keiner
Output Array monate[’xx’] Array mit Datumsdaten (’xx’ laut parseDate())
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 196
<ODI-DDOC-getActiveProject-2002-05-14-S>
Modulbezeichnung getActiveProject ()
Dateiname lib/project.inc
Versionsdatum 18-Apr-2002
Kurzbeschreibung liefert das akt. Projekt aus der Session zurück
Erfordert keine
Verantwortliche Zlabinger
Autor Seywerth
LOC 11
Bytes 212
Cyclomatic Number 2
Seite 197
Detailbeschreibung
Liefert den aktuellen Projektnamen aus der Session zurück. Ist kein Projekt gesetzt wird 'default' angenommen.
Input keine
Output String project der aktuelle Projektname
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 198
<ODI-DDOC-getActiveUser-2002-05-14-S>
Modulbezeichnung getActiveUser()
Dateiname lib/user.inc
Versionsdatum 15-Apr-2002
Kurzbeschreibung liefert den aktuellen User als String zurück
Erfordert keine
Verantwortliche Zlabinger
Autor Seywerth
LOC 6
Bytes 83
Cyclomatic Number 1
Seite 199
Detailbeschreibung
Liefert den aktuellen User als String zurück.
Input keine
Output String username der Name des Users
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 200
<ODI-DDOC-getBacklinks-2002-05-14-K>
Modulbezeichnung getBacklinks()
Dateiname core/getBacklinks
Versionsdatum 28-Jän-2002
Kurzbeschreibung Liefert eine Liste von Backlinks zum aktuellen Snip
Erfordert -
Verantwortliche Kolm
Autor Kolm
LOC 11
Bytes 204
Cyclomatic Number 2
Seite 201
Detailbeschreibung
getBacklinks liefert eine Liste aller Snipnamen des aktuellen Projektes, die auf das Snip in der globalen variable snip_title linken. Backlinks sind das Gegenstück zu normalen Links, die ja bekanntlich nur unidirektional arbeiten (wie Pfeile).
getBacklinks beantwortet die Frage "Wo existieren Links auf dieses Snip?".
Input -
Output Array snipnames Die Snipnamen von den Snips, die auf das
aktuelle Snip linken
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 202
<ODI-DDOC-getCommentSnips-2002-05-14-K>
Modulbezeichnung getCommentSnips()
Dateiname core/getCommentSnips
Versionsdatum 24-Feb-2002
Kurzbeschreibung Liefert Commentsnips zu einem bestimmten Snip
Erfordert getSnipsByTitle()
Verantwortliche Pavlu
Autor Kolm
LOC 15
Bytes 475
Cyclomatic Number 4
Seite 203
Detailbeschreibung
Liefert eine Liste von Namen all jener Snips die Commentsnips des angegebenen Snips sind.
Input String snip_name Snipname des gewünschten Snips
Output Array snip_names ein Array der Snipnamen
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 204
<ODI-DDOC-getContentTypes-2002-05-14-P>
Modulbezeichnung getContentTypes()
Dateiname lib/utils.inc
Versionsdatum 11-Mär-2002
Kurzbeschreibung Liefert eine Liste der verfügbaren Content-Types
Erfordert keine
Verantwortliche Pavlu
Autor Pavlu
LOC 4
Bytes 87
Cyclomatic Number 1
Seite 205
Detailbeschreibung
Liefert ein Array, das alle Content-Types dieser Odie-Version enthält.
Input keine
Output Array Types Liste von Strings
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 206
<ODI-DDOC-getDayInfo-2002-05-14-S>
Modulbezeichnung getDayInfo()
Dateiname core/getDayInfo
Versionsdatum 23-Mar-2002
Kurzbeschreibung liefert das angegebene Snip und kann auch zum löschen von
diesem verwendet werden
Erfordert deleteSnip(), snipExists(), getActiveUser(), writeAccess(), parse(), unparse(), writeSnip()
Verantwortliche Seywerth
Autor Seywerth
LOC 80
Bytes 2406
Cyclomatic Number 12
Seite 207
Detailbeschreibung Liefert das angegebene Snip und kann auch zum löschen von diesem verwendet werden.
Input String datestring das zugehörige Datum String delete ob das Snip gelöscht werden soll String crc Sicherheit zum löschen des Snips
Output Array events liefert das Snip zurück Bool false falls ein Fehler auftrat
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 208
<ODI-DDOC-getDayList-2002-05-14-S>
Modulbezeichnung getDayList()
Dateiname core/calendar
Versionsdatum 21-Feb-2002
Kurzbeschreibung liefert ein Array mit den Datumsdaten des akt. Monats
Erfordert keine
Verantwortliche Pavlu
Autor Seywerth
LOC 31
Bytes 914
Cyclomatic Number 6
Seite 209
Detailbeschreibung
Liefert ein Array mit den Datumsdaten des aktuellen Monats nach dem angegebenen Wochentag sortiert. Parameter ist die Wochentagsbezeichnung mit dem das Rückgabe-Array beginnen soll. Array[0 - 6] enthalten die gewünschte Wochentagsreihenfolge und Array[7 - 41] die dazugehörigen Datumsdaten als timestamps.
Input String week_starts_with legt fest mit welchem Tag die Woche starten soll
Default = ’MONDAY’
Output Array [0 - 41] enthält die Wochentagskürzel und
dazugeordnete timestamps
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 210
<ODI-DDOC-getEditHandler-2002-05-14-G>
Modulbezeichnung getEditHandler()
Dateiname lib/snip.inc
Versionsdatum 27-Mär-2002
Kurzbeschreibung Liefert die Bearbeitungsapplikation für einen Content-Type.
Erfordert getHeader()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 15
Bytes 220
Cyclomatic Number 5
Seite 211
Detailbeschreibung
Liefert die Default-Bearbeitungsapplikation oder die Erstellungsapplikation für einen Content-Type.
Input String type content-type
Output String handler Edithandler, welche Applikation zum
Bearbeiten herangezogen wird
Probleme
keine
Verbesserungsmöglichkeiten
Die Registrierung von neuen Applikationen zur Laufzeit zulassen
Seite 212
<ODI-DDOC-getExternSnips-2002-05-14-K>
Modulbezeichnung getExternSnips()
Dateiname core/getExternSnips
Versionsdatum 31-Mär-2002
Kurzbeschreibung Liefert Namen aller Snips die nicht im Index aufscheinen
Erfordert getActiveProject(), getSnipNames(), isReservedName(),
snipExists()
Verantwortliche Kolm, Pavlu
Autor Kolm
LOC 33
Bytes 608
Cyclomatic Number 4
Seite 213
Detailbeschreibung
Es werden alle Files aus dem Filesystem geholt und überprüft ob die gefundenen schon im Index eingetragen sind. Falls dies nicht der Fall ist, wird dieser Name an das Array gehängt, welches am Ende zurückgegeben wird. Bei der Überprüfung wird auf reservierte Worte (toc.toc, members, ...) geachtet.
Input -
Output Zurückgegeben wird ein Array bestehend aus den Snipnamen die nicht im Index eingetragen sind
Array snip_names die Snipnamen
Probleme
Bei vielen Snips die nicht im Index eingetragen sind, kann es zu langen Wartezeiten kommen
Verbesserungsmöglichkeiten
Derzeit wird die max_execution_time solange erhöht wie der Vorgang dauert – es könnte eine bessere Lösung die den Vorgang beschleunigt von großem Nutzen sein.
Seite 214
<ODI-DDOC-getHeader-2002-05-14-G>
Modulbezeichnung getHeader()
Dateiname lib/snip.inc
Versionsdatum 27-Mär-2002
Kurzbeschreibung Liest Snipinformationen aus dem Index
Erfordert getProjectPath(), makeIndexName(), getActiveUser(),
getActiveProject(), snipErrorMsg(), i18n(), writeHeader()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 80
Bytes 3000
Cyclomatic Number 11
Seite 215
Detailbeschreibung
Liest Informationen zu einem Snip aus dem Index in den Speicher. Wenn kein Eintrag vorhanden ist kann einer erzeugt werden. Aus diesem Grund kann auch der Content-type mitübergeben werden. Wenn das Snip-Objekt physisch nicht existiert wird der Eintrag aus dem Index entfernt.
Input
String title String username „ ‚’ Boolean correct = true String type = ‚’
Output
Array snipHeader
Rückgabewert ist entweder ein Snip-Objekt (bis auf content) oder eine snipErrorMsg. Wenn der Parameter correct auf true gesetzt ist und der snip nicht im Index ist, wird er mit content-type type eingetragen, falls er auch auf der Platte existiert.
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 216
<ODI-DDOC-getHeaderExtern-2002-05-14-K>
Modulbezeichnung getHeaderExtern()
Dateiname core/getHeaderExtern
Versionsdatum 25-Mär-2002
Kurzbeschreibung liefert Informationen aller externen Dateien des aktiven Projekts
Erfordert getSnipsByContentType(), getHeader(), getActiveProject(),
getActiveUser()
Verantwortliche Kolm
Autor Kolm
LOC 27
Bytes 771
Cyclomatic Number 4
Seite 217
Detailbeschreibung
Diese Funktion stellt der Extern- Applikation Informationen zu den externen Files des aktuellen Projektes zur Verfügung.
Input -
Output meta[i]['name'] Filename so wie er im Filesystem steht meta[i]['size'] Filesize in Bytes meta[i]['type'] Type des Files (Endung) meta[i]['uploader'] quasi der Ersteller des Files meta[i]['time'] Erstellungsdatum (uploaddatum)
meta[i]['text'] optionaler Text zu dem File
wobei gilt: 0 <= i < n
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 218
<ODI-DDOC-getIcon-2002-05-14-P>
Modulbezeichnung getIcon()
Dateiname lib/interfaces.inc
Versionsdatum 16-Apr-2002
Kurzbeschreibung Holt das dem aktuellen Interface entsprechende Icon.
Erfordert i18n()
Verantwortliche Pavlu
Autor Pavlu
LOC 23
Bytes 570
Cyclomatic Number 5
Seite 219
Detailbeschreibung
Wenn im aktuellen Interface ein Bild für den angegebenen Link (Iconname) vorgesehen ist, wird dieses Bild mit getIcon() inkludiert. Ist kein Bild vorgesehen, liefert die Funktion stattdessen einen internationalisierten Text. Diese Funktion sollte immer dann verwendet werden, wenn ein Link auf eine Applikation erstellt wird.
Input String Iconname welches Icon dargestellt werden soll
Output String HTML- Tag, der ein Bild inkludiert oder Text
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 220
<ODI-DDOC-getInterfaces-2002-05-14-K>
Modulbezeichnung getInterfaces()
Dateiname core/getInterfaces
Versionsdatum 21-Feb-2002
Kurzbeschreibung Liefert alle vorhandenen Interfaces im INTERFACE_DIR
Erfordert -
Verantwortliche Pavlu, Kolm
Autor Kolm
LOC 16
Bytes 260
Cyclomatic Number 3
Seite 221
Detailbeschreibung
Liefert eine Liste von allen vorhandenen Interfaces. Es werden dabei alle Folder, die im INTERFACE_DIR vorhanden sind, aufgelistet.
Input -
Output Array interfaces die Interfaces
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 222
<ODI-DDOC-getKeywords-2002-05-14-M>
Modulbezeichnung getKeywords()
Dateiname lib/keywords.inc
Versionsdatum 18.04.2002
Kurzbeschreibung Liefert Keywords aus einem Snip
Erfordert removeLinkerSymbols()
Verantwortliche Maczejka
Autor Maczejka
LOC 58
Bytes 1282
Cyclomatic Number 6
Seite 223
Detailbeschreibung
Übergeben wird ein Snip, zurückgeliefert ein Zweistufiges Array mit Links und Keywords, die in diesem Snip vorkommen. Keywords sind alle durch stx hervorgehobenen Textelemente sowie der Sniptitel, Links sind alle durch geschwungene Klammern gekennzeichneten Textelemente. Ist der bearbeitete Snip nicht vom content-type stx wird nur eine Linkliste und eine Keywordliste mit dem Sniptitel zurückgeliefert. Herausgefiltert werden die Keywords durch vom stx-Parser genommene Regular- Expression Patterns, zu finden in „defs.inc“.
Input
Array snip Zu bearbeitendes Snipobjekt
Output
Array linksandkeywords [keywords] => Keywordliste [links] => Linkliste
Probleme
Fehleranfälligkeit der Patterns
Verbesserungsmöglichkeiten
-
Seite 224
<ODI-DDOC-getLengths-2002-05-14-P>
Modulbezeichnung getLengths()
Dateiname lib/render_plain.inc
Versionsdatum 27.03.2002
Kurzbeschreibung Berechnet die Breite von Tabellenelementen je Spalte
Erfordert -
Verantwortliche Pavlu
Autor Pavlu
LOC 35
Bytes 752
Cyclomatic Number 7
Seite 225
Detailbeschreibung
Die XML- Struktur (Parameter) eines <table>s wird nach „td“ und „th“ durchsucht. Tags werden entfernt. Die Anzahl der Characters pro Element wird Zeile für Zeile gemerkt. Die höchsten Breitenangaben werden als Array zurückgeliefert.
Input
Array table XML- Tabellenstruktur
Output
Array lengths Maximallänge aller Spalten
Probleme
Verschachtelte Tabellen durchgehen.
Verbesserungsmöglichkeiten
Colspan, Rowspan bei Tabellen berücksichtigen
Seite 226
<ODI-DDOC-getLineCount-2002-05-14-P>
Modulbezeichnung getLineCount()
Dateiname lib/stx.inc
Versionsdatum 27-Apr-2002
Kurzbeschreibung liefert die Anzahl physischer Zeilen eines Blocks
Erfordert -
Verantwortliche Pavlu
Autor Pavlu
LOC 8
Bytes 135
Cyclomatic Number 3
Seite 227
Detailbeschreibung
Liefert die Anzahl der physischen Zeilen im übergebenem Block. Ein Block – oder logische Zeile – besteht aus mindestens einer physischen Zeile mit gleicher Einrückung. Einrückungswechsel und Leerzeilen trennen einzelne Blöcke voneinander. Zeilenwechsel trennen physische Zeilen voneinander.
Input Array lines physische Zeilen
Output Integer count Anzahl nicht-leerer Zeilen
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 228
<ODI-DDOC-getMeetingList-2002-05-14-M>
Modulbezeichnung getMeetingList()
Dateiname core/getMeetingList
Versionsdatum 24.02.2002
Kurzbeschreibung Liefert eine Liste aller Meetings im aktuellen Projekt
Erfordert getIndex(), parse(), getSnip()
Verantwortliche Maczejka
Autor Maczejka
LOC 30
Bytes 720
Cyclomatic Number 3
Seite 229
Detailbeschreibung
Ein Array mit allen Meetings im aktuellen Projekt und dazugehörigen statistischen Informationen (Anwesende, Leiter, Datum) wird zurückgeliefert.
Input
Array session Sessionobjekt
Output
Array meetinglist Liste aller Meetings in diesem Projekt
Probleme
-
Verbesserungsmöglichkeiten
Lesen der Header nur 1mal
Seite 230
<ODI-DDOC-getMissingSnips-2002-05-14-K>
Modulbezeichnung getMissingSnips()
Dateiname core/getMissingSnips
Versionsdatum 02-Apr-2002
Kurzbeschreibung Liefert Namen aller Snips die nicht existieren, aber auf die gelinkt
wird
Erfordert getSnipList(), snipExists(), form_href()
Verantwortliche Kolm, Pavlu
Autor Kolm
LOC 46
Bytes 1060
Cyclomatic Number 9
Seite 231
Detailbeschreibung
Diese Funktion soll jene Snips finden, auf die zwar gelinkt wird, die aber nicht existieren. Es soll dem User eine Übersicht über die fehlenden Snips bereitgestellt werden. Umso mehr Links auf solche Snips existieren, umso nötiger ist es dieses Snip zu erstellen.
Input int count optionaler Parameter für die Anzahl der
zurückgegebenen Snipnamen (beim Weglassen werden alle zurückgegeben)
String sorting defaultmäßig az – bei Angabe von 'za' wird rückwärts sortiert
Output String output ein String der einen Link auf den
zu erstellenden Snip beinhaltet
Probleme
keine
Verbesserungsmöglichkeiten
Der Rückgabewerte könnten an die anderen Funktionen, die mit der Rückgabe von Snipnamen beauftragt sind, angepasst werden. Dort wären es im Gegensatz zu dieser Funktion nur die Snipnamen – ohne jeglicher Formatierung.
Seite 232
<ODI-DDOC-getMonthList-2002-05-14-S>
Modulbezeichnung getMonthList()
Dateiname core/calendar
Versionsdatum 21-Feb-2002
Kurzbeschreibung liefert ein Array mit den Monatsnamenkürzel laut language
Erfordert -
Verantwortliche Pavlu
Autor Seywerth
LOC 4
Bytes 205
Cyclomatic Number 1
Seite 233
Detailbeschreibung Liefert ein Array mit 1 gleich jan beginnend, 2 gleich feb, usw. zurück. Die Monats-Kürzel werden dabei in die ausgewählte Sprache übersetzt.
Input keiner
Output Array monate[12] Array mit den Kürzeln der Monatsnamen
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 234
<ODI-DDOC-getProjectCreator-2002-05-14-G>
Modulbezeichnung getProjectCreator()
Dateiname core/getProjectCreator
Versionsdatum 21-Feb-2002
Kurzbeschreibung Liefert den Ersteller eines Projekts.
Erfordert getProjectMembers()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 15
Bytes 261
Cyclomatic Number 4
Seite 235
Detailbeschreibung
Liefert den Ersteller eines Projekts.
Input
String project
Output
String username Boolean Erfolg
Im Erfolgsfall kommt der Benutzername des Projekterstellers zurück, im Falle eines Fehlers False.
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 236
<ODI-DDOC-getProjectList-2002-05-14-G>
Modulbezeichnung getProjectList()
Dateiname core/getProjectList
Versionsdatum 13-Apr-2002
Kurzbeschreibung Liefert eine Liste aller Projekte.
Erfordert
Verantwortliche Zlabinger
Autor Zlabinger
LOC 17
Bytes 309
Cyclomatic Number 3
Seite 237
Detailbeschreibung
Liefert eine Liste aller Projekte, d.h. aller Verzeichnisse im SNIP_DIR, die nicht mit einem Punkt beginnen.
Diese Funktion übernimmt keine Parameter und liefert ein Array mit den Projektnamen zurück.
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 238
<ODI-DDOC-getProjectMemberCount-2002-05-14-S>
Modulbezeichnung getProjectMemberCount()
Dateiname core/getProjectMemberCount
Versionsdatum 25-Mar-2002
Kurzbeschreibung liefert die Anzahl der Projektmitglieder des angegeb. Projekts
Erfordert keine
Verantwortliche Zlabinger
Autor Seywerth
LOC 17
Bytes 271
Cyclomatic Number 3
Seite 239
Detailbeschreibung Liefert die Anzahl der Projektmitglieder des angegebenen Projekts zurück. Tritt dabei ein Fehler auf wird 'false' zurückgeliefert.
Input String project der gewünschte Projektname
Output Bool False falls beim Zählen Fehler auftraten Integer count die Anzahl der Projektmitglieder
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 240
<ODI-DDOC-getProjectMembers-2002-05-14-S>
Modulbezeichnung getProjectMembers()
Dateiname core/getProjectMembers
Versionsdatum 13-Apr-2002
Kurzbeschreibung liefert ein Array mit Namen und Rechten der Projektmitglieder
Erfordert keine
Verantwortliche Zlabinger
Autor Seywerth
LOC 13
Bytes 259
Cyclomatic Number 3
Seite 241
Detailbeschreibung Liefert ein Array mit Namen und Rechten der Projektmitglieder in der folgenden Form zurück: data[mitglied] = a, wobei a in diesem Fall für Administrator steht.
Tritt dabei ein Fehler auf wird 'false' zurückgeliefert.
Input String project der gewünschte Projektname
Default ist der aktuelle Projektname
Output Bool False falls beim Zählen Fehler auftraten Array data die Anzahl der Projektmitglieder
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 242
<ODI-DDOC-getProjectPath-2002-05-14-P>
Modulbezeichnung getProjectPath()
Dateiname lib/utils.inc
Versionsdatum 11-Mär-2002
Kurzbeschreibung Liefert den Pfad zum aktuellen Projekt
Erfordert getActiveProject()
Verantwortliche Pavlu, Zlabinger
Autor Pavlu
LOC 4
Bytes 71
Cyclomatic Number 6
Seite 243
Detailbeschreibung
Liefert den Pfad zum aktuellen Projekt als String.
Output String path pfad_zum_aktiven_projekt/
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 244
<ODI-DDOC-getRights-2002-05-14-G>
Modulbezeichnung getRights()
Dateiname lib/snip.inc
Versionsdatum 17-Apr-2002
Kurzbeschreibung Liefert die Rechte für ein Snip
Erfordert getHeader()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 10
Bytes 261
Cyclomatic Number 2
Seite 245
Detailbeschreibung
Liefert ein Array mit der write_list und der read_list. Bei diesen handelt es sich selbst wieder um Arrays mit den Elementen users und projects, die sich wiederum in allow und deny gliedern und die Benutzernamen beinhalten.
Input
String snipname
Output
Boolean false im Falle eines Fehlers Array ansonsten ein Array mit folgendem Aufbau
Array ( [write_list] => Array ( [users] => Array ( [allow] => Array ( ) [deny] => Array ( ) ) [projects] => Array ( [0] => odie ) ) [read_list] => Array ( [users] => Array ( [allow] => Array ( ) [deny] => Array ( ) ) [projects] => Array ( [0] => odie ) ) )
Seite 246
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 247
<ODI-DDOC-getSessionData-2002-05-14-G>
Modulbezeichnung getSessionData()
Dateiname lib/user.inc
Versionsdatum 15-Apr-2002
Kurzbeschreibung Liefert die Session-Daten zurück
Erfordert unserializeFile()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 23
Bytes 808
Cyclomatic Number 9
Seite 248
Detailbeschreibung
Trägt die Session-Daten für eine MD5 verschlüsselte IP-Adresse in ein Array ein.
Array ( [id] => f528764d624db129b32c21fbca0cb8d6 [username] => vpavlu [interface] => vanilla [lastaction] => 1019458260 [language] => english [date] => 14-Apr-2002 [project] => odie )
Input
String session_id &String session_data
Output
Boolean erfolgreich oder nicht
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 249
<ODI-DDOC-getSessionId-2002-05-14-S>
Modulbezeichnung getSessionId()
Dateiname lib/user.inc
Versionsdatum 15-Apr-2002
Kurzbeschreibung liefert die Session ID als String zurück
Erfordert keine
Verantwortliche Zlabinger
Autor Seywerth
LOC 5
Bytes 71
Cyclomatic Number 1
Seite 250
Detailbeschreibung Liefert die Session ID als String zurück.
Input keine
Output String sessionId die Id der Session
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 251
<ODI-DDOC-getSizeString-2002-05-14-K>
Modulbezeichnung getSizeString()
Dateiname core/getSizeString
Versionsdatum 25-Mär-2002
Kurzbeschreibung Bringt die gegebene Bytezahl auf die richtige Dimension und
fügt die passende Bezeichnung hinzu
Erfordert -
Verantwortliche Pavlu
Autor Kolm
LOC 19
Bytes 243
Cyclomatic Number 3
Seite 252
Detailbeschreibung
Die gegebene Bytezahl wird auf Kilobyte bzw. Megabyte gebracht, gerundet und mit der jeweiligen Endung 'KByte' oder 'MByte' als String zurückgegeben.
Input int bytes die Dateigrösse in Bytes
Output String sizestring Die Dateigrösse mit der jeweiligen
Dimensionsbezeichnung
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 253
<ODI-DDOC-getSnip-2002-05-14-G>
Modulbezeichnung getSnip()
Dateiname lib/snip.inc
Versionsdatum 27-Mär-2002
Kurzbeschreibung Liest ein Snip und liefert ein Snip-Objekt zurück.
Erfordert makeIndexName(), getActiveProject(), getProjectPath(),
snipErrorMsg(), readAccess(), getHeader(), myfopen(),
myfclose(), writeHeader(), i18n()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 70
Bytes 1802
Cyclomatic Number 9
Seite 254
Detailbeschreibung
Trägt nach Überprüfung der Zugriffsrechte für den Benutzer ein Snip-Objekt oder eine Fehlermeldung in des übergebene Snip-Objekt ein.
Array ( [creator] => kol [editor] => kol [creation_timestamp] => 1019420833 [edit_timestamp] => 1019002532 [keywords] => Array ( [0] => start [1] => toc.toc [2] => locks [3] => members ) [read_count] => 105 [content-type] => stx [read_list] => Array ( [users] => Array ( [allow] => Array ( ) [deny] => Array ( ) ) [projects] => Array ( [0] => odie ) ) [write_list] => Array ( [users] => Array ( [allow] => Array ( ) [deny] => Array ( ) ) [projects] => Array ( [0] => odie ) ) [links] => Array ( [start-1] => 1 [start-2] => 1 [start-3] => 1 [start-4] => 1 [start-5] => 1 [start-6] => 1 ) [backlinks] => Array ( [hans] => 1 )
[size] => 222 [description] => [title] => start [content] => der inhalt )
Seite 255
Input
&Array snip String username Boolean count ( = true)
Output
Boolean false im Falle eines Fehlers, ansonsten true.
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 256
<ODI-DDOC-getSnipCount-2002-05-14-S>
Modulbezeichnung getSnipCount()
Dateiname core/getSnipCount
Versionsdatum 26-Mar-2002
Kurzbeschreibung liefert die Anzahl der Snips des angegeb. Projekts
Erfordert keine
Verantwortliche Zlabinger
Autor Seywerth
LOC 17
Bytes 257
Cyclomatic Number 3
Seite 257
Detailbeschreibung Liefert die Anzahl der Snips des angegebenen Projekts zurück. Tritt dabei ein Fehler auf wird 'false' zurückgeliefert.
Input String project der gewünschte Projektname
Output Bool False falls beim Zählen Fehler auftraten Array data die Anzahl der Projektmitglieder
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 258
<ODI-DDOC-getSnipDates-2002-05-14-P>
Modulbezeichnung getSnipDates()
Dateiname core/getSnipDates
Versionsdatum 21-Jan-2002
Kurzbeschreibung Liefert eine Liste der Form „Snipname“ => Bearbeitungsdatum
Erfordert getSnipList()
Verantwortliche Pavlu
Autor Pavlu
LOC 19
Bytes 398
Cyclomatic Number 3
Seite 259
Detailbeschreibung
Liefert eine Liste aller Bearbeitedaten von Snips des aktuellen Projekts. Schlüssel sind die Snipnamen, Werte sind Zeichenketten der Form DATE_FORMAT (siehe defs.inc), die das letzte Bearbeitungsdatum des jeweiligen Snips enthalten.
Input keine
Output Array list wie oben beschrieben
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 260
<ODI-DDOC-getSnipList-2002-05-14-K>
Modulbezeichnung getSnipList()
Dateiname core/getSnipList
Versionsdatum 26-Mär-2002
Kurzbeschreibung Liefert eine Liste von Snipobjekten aller Snips im aktuellen
Projekt
Erfordert isCommentSnip()
Verantwortliche Pavlu
Autor Kolm
LOC 57
Bytes 1182
Cyclomatic Number 16
Seite 261
Detailbeschreibung
Liefert ein Array von Snipobjekten aller Snips des aktuellen Projekts.
Input keiner
Output Array snip_list ein Array der Snipobjekte
Probleme
keine
Verbesserungsmöglichkeiten
Sniplisten über Projektgrenzen hinweg.
Seite 262
<ODI-DDOC-getSnipNames-2002-05-14-K>
Modulbezeichnung getSnipNames()
Dateiname core/getSnipNames
Versionsdatum 26-Mär-2002
Kurzbeschreibung Liefert eine Liste aller Snipnamen des aktuellen Projektes
Erfordert getSnipList, isCommentSnip
Verantwortliche Pavlu
Autor Kolm
LOC 18
Bytes 331
Cyclomatic Number 4
Seite 263
Detailbeschreibung
Liefert eine Liste von Namen aller im Projekt vorhandenen Snips.
Input int count optionaler Parameter für die Anzahl der
zurückgegebenen Snipnamen (beim Weglassen werden alle zurückgegeben)
String sorting defaultmäßig az – bei Angabe von 'za' wird rückwärts sortiert
Output Array snip_names ein Array der Snipnamen
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 264
<ODI-DDOC-getSnipsByContentType-2002-05-14-K>
Modulbezeichnung getSnipsByContentType()
Dateiname core/getSnipsByContentType
Versionsdatum 21-Jän-2002
Kurzbeschreibung Liefert eine Snipliste nach Content-type
Erfordert getSnipList()
Verantwortliche Kolm
Autor Kolm
LOC 18
Bytes 302
Cyclomatic Number 3
Seite 265
Detailbeschreibung
Liefert ein Array von Sniptiteln zurück, welche die gesuchte content-type im Header enthalten.
Input String content-type Pattern für die benötigte content-type
Output Array Snipliste ein Array von Snipnamen
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 266
<ODI-DDOC-getSnipsByCreationDate-2002-05-14-K>
Modulbezeichnung getSnipsByCreationDate()
Dateiname core/getSnipsByCreationDate
Versionsdatum 27-Mär-2002
Kurzbeschreibung Liefert eine Snipliste nach Erstellungsdatum
Erfordert getSnipList()
Verantwortliche Pavlu, Kolm
Autor Kolm
LOC 37
Bytes 881
Cyclomatic Number 8
Seite 267
Detailbeschreibung
Diese Funktion liefert alle Snips des aktiven Projekts zurück die zum angegebenen Datum erstellt wurden.
Input String date Datum im allgemein gültigen Datusmformat
(dd-mon-yyyy) Falls nicht gesetzt aktuelles Datum
int count optionaler Parameter für die Anzahl der zurückgegebenen Snipnamen (beim beim Weglassen werden alle zurückgegeben)
String sorting defaultmäßig az – bei Angabe von 'za' wird rückwärts sortiert
Output Array snip_names ein Array der Snipnamen mit dem
dazugehörigen Erstellungsdatum Array[snip_name] = data['creation_timestamp']
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 268
<ODI-DDOC-getSnipsByCreator-2002-05-14-K>
Modulbezeichnung getSnipsByCreator()
Dateiname core/getSnipsByCreator
Versionsdatum 02-May-2002
Kurzbeschreibung Liefert eine Snipliste nach dem Ersteller
Erfordert getSnipList()
Verantwortliche Pavlu
Autor Kolm
LOC 13
Bytes 295
Cyclomatic Number 3
Seite 269
Detailbeschreibung
Liefert ein Array von Sniptiteln zurück, welche vom angegebenen Benutzer erstellt wurden.
Input String name Name des gewünschten Erstellers
Output Array Snipliste ein Array von Snipnamen
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 270
<ODI-DDOC-getSnipsByFullText-2002-05-14-K>
Modulbezeichnung getSnipsByFullText()
Dateiname core/getSnipsByFullText
Versionsdatum 25-Mär-2002
Kurzbeschreibung Liefert eine Snipliste nach Volltextsuche
Erfordert getSnipList(), myfopen(), myfclose(), getProjectPath()
Verantwortliche Pavlu
Autor Kolm
LOC 36
Bytes 715
Cyclomatic Number 7
Seite 271
Detailbeschreibung
Durchsucht die Inhalte aller Snips des aktuellen Projektes nach dem in pattern übergebenen Wörtern.
Input String pattern Muster nach dem gesucht wird, durch
Leerzeichen getrennt
Output Array snip_names ein Array der Snipnamen
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 272
<ODI-DDOC-getSnipsByKeywords-2002-05-14-K>
Modulbezeichnung getSnipsByKeywords()
Dateiname core/getSnipsByKeywords
Versionsdatum 31-Mär-2002
Kurzbeschreibung Liefert eine Snipliste nach angegebenen Schlüsselwörtern
Erfordert getSnipList(), is_empty(), strSplit()
Verantwortliche Pavlu, Kolm
Autor Kolm
LOC 44
Bytes 888
Cyclomatic Number 10
Seite 273
Detailbeschreibung
Liefert ein Array von Snipobjekten zurück, welche die gesuchten Keywords im Header enthalten.
Input String pattern Muster nach dem gesucht wird, durch
Leerzeichen getrennt boolean match_parts Ob nach Teilstrings oder nach dem vollen
Schlüsselwort gesucht werden soll Defaultmäßig ist dieser Parameter nicht gesetzt.
Output Array snip_names ein Array der Snipnamen
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 274
<ODI-DDOC-getSnipsByModificationDate-2002-05-14-K>
Modulbezeichnung getSnipsByModificationDate()
Dateiname core/getSnipsByModificationDate
Versionsdatum 27-Mär-2002
Kurzbeschreibung Liefert eine Snipliste nach Bearbeitungsdatum
Erfordert getSnipList()
Verantwortliche Pavlu, Kolm
Autor Kolm
LOC 38
Bytes 881
Cyclomatic Number 8
Seite 275
Detailbeschreibung
Diese Funktion liefert alle Snips des aktiven Projekts zurück die zum angegebenen Datum modifiziert wurden.
Input String date Datum im allgemein gültigen Datusmformat
(dd-mon-yyy) Falls nicht gesetzt aktuelles Datum
int count optionaler Parameter für die Anzahl der zurückgegebenen Snipnamen (beim beim Weglassen werden alle zurückgegeben)
String sorting defaultmäßig az – bei Angabe von 'za' wird rückwärts sortiert
Output Array snip_names ein Array der Snipnamen mit dem
dazugehörigen Erstellungsdatum Array[snip_name] = data['edit_timestamp']
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 276
<ODI-DDOC-getSnipsByPopularity-2002-05-14-K>
Modulbezeichnung getSnipsByPopularity()
Dateiname core/getSnipsByPopularity
Versionsdatum 26-Mär-2002
Kurzbeschreibung Liefert populäre Snips (Sortiert nach readcount)
Erfordert cmpString(), getSnipList()
Verantwortliche Pavlu, Kolm
Autor Kolm
LOC 27
Bytes 489
Cyclomatic Number 3
Seite 277
Detailbeschreibung
Liefert eine Liste von Snips des aktuellen Projektes sortiert nach dem readcount.
Input int count optionaler Parameter für die Anzahl der
zurückgegebenen Snipnamen (beim beim Weglassen werden alle zurückgegeben)
String sorting defaultmäßig az – bei Angabe von 'za' wird rückwärts sortiert
Output Array snip_list ein Array von Snipnamen (keys)
Values = read_count
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 278
<ODI-DDOC-getSnipsByTitle-2002-05-14-K>
Modulbezeichnung getSnipsByTitle()
Dateiname core/getSnipsByTitle
Versionsdatum 21-Feb-2002
Kurzbeschreibung Liefert Snipnamen die einem Muster entsprechen
Erfordert getSnipNames() , strSplit()
Verantwortliche Pavlu
Autor Kolm
LOC 29
Bytes 567
Cyclomatic Number 6
Seite 279
Detailbeschreibung
Diese Funktion liefert eine Liste von relativen Snipnamen. Übergeben wird ein oder mehrere durch Leerzeichen getrennte Strings. Bei der Überprüfung wird darauf geachtet ob diese Strings in den Sniptiteln vorkommen, wobei dieser Sniptitel bei Erfolg an das Rückgabearray angehängt wird.
Beispiel:
foreach(getSnipsByTitle('wichtig') as $snip_name ) echo $snip_name;
Gibt eine Liste von wichtigen Snips aus
Input String pattern Title-Muster nach dem gesucht wird boolean multi_tokens Defaultmäßig true, es dürfen also durche
Leerzeichen getrennte Muster angegeben werden. Falls der Parameter FALSE ist wird nur nach diesem einen String gesucht. Hilfreich, falls Leerzeichen in den Mustern vorhanden sein sollen.
Output Array snip_names ein Array der Snipnamen
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 280
<ODI-DDOC-getTag-2002-05-14-M>
Modulbezeichnung getTag()
Dateiname lib/parser.inc
Versionsdatum 17.04.2002
Kurzbeschreibung Auflösen eines Strings in eine XML- Struktur
Erfordert findTagEnd()
Verantwortliche Maczejka
Autor Maczejka
LOC 80
Bytes 1603
Cyclomatic Number 11
Seite 281
Detailbeschreibung
Übergeben wird ein XML-String sowie eine Debugvariable. Im XML- String wird mithilfe von findTagEnd ein tag herausgefiltert und in seine Bestandteile zerlegt (name, content, NonTagContent -> Text vor dem tag). Diese Bestandteile werden als Arraystruktur zurückgeliefert. Ist das XML- Dokument nicht wohlgeformt und entsteht deshalb ein Fehler im Code, so wird die Debugvariable auf false gesetzt.
Input
String content XML- String Boolean ok Wohlgeformter tag, true/false
Output
Array tag Tagstruktur
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 282
<ODI-DDOC-getTimeSpanString-2002-05-14-K>
Modulbezeichnung getTimeSpanString()
Dateiname core/getTimeSpanString
Versionsdatum 11-Mär-2002
Kurzbeschreibung Liefert für gegebene Start- & Endzeit einen beschreibenden
Zeitspannen-Text
Erfordert strSplit(), i18n()
Verantwortliche Pavlu
Autor Kolm
LOC 53
Bytes 1479
Cyclomatic Number 19
Seite 283
Detailbeschreibung
Berechnet die Differenz zwischen Start- und Endzeit (optional; Default ist jetzt gerade) und liefert einen diese Dauer wiedergebenden, sprechenden String in der passenden Sprache zurück.
Beispiele:
a long time some days no time 12 seconds
Input Timestamp start Startzeit Timestamp end Endzeit (optional; default ist aktuelle Zeit)
Output String TimeSpanString der beschreibende Zeitspannen-Text
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 284
<ODI-DDOC-getTodo-2002-05-14-K>
Modulbezeichnung getTodo()
Dateiname core/getTodo
Versionsdatum 28-Feb-2002
Kurzbeschreibung Füllt ein Todo-Task-Array mit den geparseten Tasks
Erfordert getSnip(), parse()
Verantwortliche Kolm
Autor Kolm
LOC 22
Bytes 486
Cyclomatic Number 5
Seite 285
Detailbeschreibung
Die Funktion liest mittels getSnip die Tasks aus den XML-Dokumenten und gibt ein geparsedes Task- Array in der folgenden Form zurück:
Input
Array Snip das Snip-Objekt
Output Array Task das Task-Array
[task] => Array ( [ntc_0] => [status] => pending [ntc_1] => [end] => [ntc_2] => [priority] => 2 [ntc_3] => [name] => ADAT [ntc_4] => [desc] => das übliche ... tausend aufgaben [ntc_5] => [due] => 20-Dec-2001 [ntc_6] =>
)
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 286
<ODI-DDOC-getTree-2002-05-14-M>
Modulbezeichnung getTree()
Dateiname system/tree
Versionsdatum 17.04.2002
Kurzbeschreibung Erstellen eine Snip- Baumstruktur
Erfordert strsplit(), snipExists(), getHeader(), getActiveUser()
Verantwortliche mac
Autor mac
LOC 32
Bytes 633
Cyclomatic Number 5
Seite 287
Detailbeschreibung
Übergeben wird ein Snipname, dessen Kinder gesucht werden sollen. Als weiterer Parameter ist eine Liste der bereits gefundenen Eltern des zu suchenden Snips möglich, die für die verwendete Rekursion gebraucht wird, um Endlosschleifen zu verhindern. Die Snipinformationen werden mit getHeader gelesen, und alle unter ‚links’ angegebenen Snips werden weiter in die Tiefe verfolgt. Rückgabewert ist eine geordnete Arraystruktur aller Kinder des angegebenen Snips.
Input
String snipname Snip, dessen Kinder gesucht werden String parentlist=““ Liste aller bereits gefundenen Eltern
-> Rekursion, NICHT VERWENDEN!
Output
Array baum Baumstruktur
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 288
<ODI-DDOC-getUnlinkedSnips-2002-05-14-K>
Modulbezeichnung getUnlinkedSnips()
Dateiname core/getUnlinkedSnips
Versionsdatum 26-Mär-2002
Kurzbeschreibung Liefert Namen aller Snips auf die nirgends gelinkt wird
Erfordert getSnipList()
Verantwortliche Kolm, Pavlu
Autor Kolm
LOC 16
Bytes 392
Cyclomatic Number 4
Seite 289
Detailbeschreibung
Liefert Namen jener Snips die im aktuellen Projekt nicht angesprochen, sprich nirgends verlinkt sind. Damit sollen die sogenannten "Snip-Leichen" aufgespürt werden, welche nur über den Index bzw. über die Suche gefunden werden können.
Input int count optionaler Parameter für die Anzahl der
zurückgegebenen Snipnamen (beim beim Weglassen werden alle zurückgegeben)
Output Array snip_names die Snipnamen
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 290
<ODI-DDOC-getUserData-2002-05-14-G>
Modulbezeichnung getUserData()
Dateiname lib/user.inc
Versionsdatum 15-Apr-2002
Kurzbeschreibung Liefert die Daten eines Benutzers zurück
Erfordert unserializeFile()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 18
Bytes 429
Cyclomatic Number 4
Seite 291
Detailbeschreibung
Liest die Daten eines Benutzers aus und trägt sie in ein übergebenes Array ein. Im Falle eines Fehlers kommt false zurück. Die Daten haben folgenden Aufbau:
Array ( [username] => vpavlu [name] => Pavlu [firstname] => Viktor [email] => viktor_pavlu@hotmail.com [reminder_question] => skorpa und ... [reminder_answer] => nativa [password] => f2a0ffe83ec8d44f2be4b624b0f47dde [interface] => vanilla [language] => english [projects] => Array ( [0] => default [2] => odp [3] => odie )
)
Input
String username &Array userdaten
Output
Boolean false im Falle eines Fehlers, ansonsten true
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 292
<ODI-DDOC-getUserList-2002-05-14-K>
Modulbezeichnung getUserList()
Dateiname core/getUserList
Versionsdatum 29-Apr-2002
Kurzbeschreibung Liefert eine Lise von Benutzern
Erfordert getSessionData(), isBadName(), getUserData(),
isProjectMember()
Verantwortliche Kolm
Autor Kolm
LOC 58
Bytes 1541
Cyclomatic Number 12
Seite 293
Detailbeschreibung
Liefert ein Array mit Informationen über alle, zu einem Projekt gehörenden oder nur aktiven Benutzern. Diese zwei Einschränkungen kann man natürlich kombinieren.
project = '' entspricht allen Usern (keine Einschränkung was die Projekte angeht) project = 'odie' würde eine Liste aller User des Projekts odie zurückgeben.
active_only ist defaultmäßig TRUE, sprich nur die aktiven User werden zurückgegeben. FALSE entspricht wiederum allen Usern.
Input String project Name des zu prüfenden Snips
boolean active_only falls man auch die nicht angemeldeten Benutzer erhalten will muss als zweiter Parameter FALSE angegeben werden
Output Array(
String [username]['name'] Nachname String [username]['firstname'] Vorname String [username]['email'] Email-Adresse Array [username]['projects'] Projekte denen der User angehört
boolean [username]['active'] Status (1 = online, 0 = offline) )
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 294
<ODI-DDOC-getValidUsername-2002-05-14-G>
Modulbezeichnung getValidUsername()
Dateiname core/createUser
Versionsdatum 27-Mär-2002
Kurzbeschreibung Liefert einen neuen, nicht existierenden Benutzernamen
Erfordert
Verantwortliche Zlabinger
Autor Zlabinger
LOC 17
Bytes 322
Cyclomatic Number 3
Seite 295
Detailbeschreibung
Überprüft, ob ein Benutzernamen noch frei ist und liefert einen gültigen zurück.
Input
String username Boolean force
Output
String valid_username
Der Parameter erzwingt, dass auf jeden Fall eine Zahl angefügt wird, auch wenn der übergebene Benutzername gültig wäre.
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 296
<ODI-DDOC-htmlencode-2002-05-14-M>
Modulbezeichnung htmlencode()
Dateiname lib/utils.inc
Versionsdatum 11.03.2002
Kurzbeschreibung Komplettes urlencode
Erfordert -
Verantwortliche Zlabinger
Autor Maczejka
LOC 4
Bytes 80
Cyclomatic Number 1
Seite 297
Detailbeschreibung
Der übergebene String wird urlencoded und alle Vorkommnisse von „+“ durch „%20“ ersetzt.
Input
String string Zu bearbeitender String
Output
String string Bearbeiteter String
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 298
<ODI-DDOC-htmlize-2002-05-14-M>
Modulbezeichnung htmlize()
Dateiname lib/debug.inc
Versionsdatum 05.03.2002
Kurzbeschreibung Ersetzt Reservierte HTML- Zeichen in jeder Arrayebene
Erfordert -
Verantwortliche Maczejka
Autor Maczejka
LOC 10
Bytes 201
Cyclomatic Number 3
Seite 299
Detailbeschreibung
Übergeben wird ein Array. Auf alle Elemente dieses Arrays wird die Funktion htmlentities angewandt.
Input
Array array Eingabedaten
Output
Array array Bearbeitete Eingabedaten
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 300
<ODI-DDOC-i18n-2002-05-14-M>
Modulbezeichnung i18n()
Dateiname lib/languages.inc
Versionsdatum 19.02.2002
Kurzbeschreibung Übersetzung eines Wortes bzw. Strings
Erfordert translate()
Verantwortliche Pavlu
Autor Maczejka
LOC 25
Bytes 452
Cyclomatic Number 3
Seite 301
Detailbeschreibung
Ein String, möglich auch mit Platzhaltern, wird übergeben. Dieser in seine Bestandteile (Platzhalter) sofern vorhanden aufgelöst und die Einzelteile mit translate übersetzt und ausgegeben.
Input
String word Zu übersetzendes Wort Int really=1 Debug
Output
keiner
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 302
<ODI-DDOC-isBadName-2002-05-14-S>
Modulbezeichnung isBadName()
Dateiname lib/snip.inc
Versionsdatum 28-Apr-2002
Kurzbeschreibung überprüft ob ein Name verwendet werden darf
Erfordert keine
Verantwortliche Zlabinger
Autor Seywerth
LOC 24
Bytes 522
Cyclomatic Number 5
Seite 303
Detailbeschreibung
Überprüft ob ein Name als Snipname verwendet werden darf. Ist dies nicht der Fall wird true zurückgeliefert. Darf der Name verwendet werden wird false zurückgeliefert.
Input String name der zu überprüfende Name
Output Bool true|false darf nicht-/darf verwendet werden
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 304
<ODI-DDOC-isCommentSnip-2002-05-14-K>
Modulbezeichnung isCommentSnip()
Dateiname core/isCommentSnip
Versionsdatum 24-Mär-2002
Kurzbeschreibung prüft ob das angegebene Snip ein Kommentarsnip ist
Erfordert snipExists()
Verantwortliche Pavlu
Autor Kolm
LOC 15
Bytes 275
Cyclomatic Number 3
Seite 305
Detailbeschreibung
Prüft ob der angegebene Snipname im aktuellen Projekt der Name eines Comment-Snips ist. Bei positiver Prüfung wird TRUE zurückgegeben.
Input String snip_name Name des zu prüfenden Snips
Output boolean isCommentSnip Wahrheitswert der Prüfung
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 306
<ODI-DDOC-isOdieAdmin-2002-05-14-K>
Modulbezeichnung isOdieAdmin()
Dateiname core/isOdieAdmin
Versionsdatum 26-Mär-2002
Kurzbeschreibung Prüft, ob angegebener User ODIE – Administrator ist
Erfordert getProjectMembers()
Verantwortliche Kolm
Autor Kolm
LOC 13
Bytes 272
Cyclomatic Number 2
Seite 307
Detailbeschreibung
Prüft ob der angegebene Benutzer ein ODIE – Administrator ist. ODIE – Administratoren sind all jene Benutzer, die Administrator im Projekt default sind.
Input
String username ein Username (wird in den meisten Fällen der aktive User sein)
Output true | false
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 308
<ODI-DDOC-isProjectAdmin-2002-05-14-K>
Modulbezeichnung isProjectAdmin()
Dateiname core/isProjectAdmin
Versionsdatum 26-Mär-2002
Kurzbeschreibung Prüft, ob angegebener Benutzer Administrator des angegebenen
Projektes ist
Erfordert getProjectMembers(), getActiveProject()
Verantwortliche Kolm, Zlabinger
Autor Kolm
LOC 18
Bytes 420
Cyclomatic Number 5
Seite 309
Detailbeschreibung
Prüft ob der angegebene User Administrator im angegebenen Projekt ist und liefert bei Erfolg true zurück.
Mit creator_only TRUE wird auf Creator geprüft. Input
String username ein Username (wird in den meisten Fällen der aktive User sein)
String project das Projekt boolean creator_only falls TRUE wird auf Creator geprüft
Output true | false
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 310
<ODI-DDOC-isProjectCreator-2002-05-14-K>
Modulbezeichnung isProjectCreator()
Dateiname core/isProjectCreator
Versionsdatum 26-Mär-2002
Kurzbeschreibung Prüft, ob angegebener Benutzer Ersteller des angegebenen
Projektes ist
Erfordert isProjectAdmin()
Verantwortliche Pavlu, Kolm
Autor Kolm
LOC 5
Bytes 144
Cyclomatic Number 1
Seite 311
Detailbeschreibung
Prüft ob der angegebene User Ersteller des angegebenen Projekts ist und liefert bei Erfolg true zurück.
Input
String username der Username String project das Projekt
Output true | false
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 312
<ODI-DDOC-isProjectMember-2002-05-14-S>
Modulbezeichnung isProjectMember()
Dateiname core/isProjectMember
Versionsdatum 03-Apr-2002
Kurzbeschreibung überprüft ob der angegebene User bei einem Projekt dabei ist
Erfordert keine
Verantwortliche Zlabinger
Autor Seywerth
LOC 26
Bytes 503
Cyclomatic Number 5
Seite 313
Detailbeschreibung
Überprüft ob der angegebene User bei dem angegebenen Projekt dabei ist. Wird kein Projektname angegeben wird auf das aktive Projekt überprüft. Tritt dabei ein Fehler auf wird 'false' zurückgeliefert.
Input String username der zu überprüfende User String projekt der gewünschte Projektname
Output Bool True|False ob der User zum gefragten Projekt gehört
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 314
<ODI-DDOC-is_empty-2002-05-14-M>
Modulbezeichnung is_empty()
Dateiname lib/utils.inc
Versionsdatum 12.02.2002
Kurzbeschreibung Überprüfen, ob ein Array leer ist
Erfordert -
Verantwortliche Maczejka
Autor Maczejka
LOC 15
Bytes 260
Cyclomatic Number 6
Seite 315
Detailbeschreibung
Übergeben wird ein Array. Besteht dieses nur aus leeren Elementen (value = ““), wird true zurückgeliefert. Hat ein Element einen Wert, wird false zurückgeliefert.
Input
Array array Zu überprüfendes Array
Output
Boolean true/false Leer oder nicht
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 316
<ODI-DDOC-joinUsersAndGroups-2002-05-14-P>
Modulbezeichnung joinUsersAndGroups()
Dateiname core/joinUsersAndGroups
Versionsdatum 30-Mar-2002
Kurzbeschreibung Fügt ein User- und ein Group-Array, getrennt von einer
Trennzeile in einem Array zusammen
Erfordert keine
Verantwortliche Pavlu
Autor Pavlu
LOC 16
Bytes 304
Cyclomatic Number 3
Seite 317
Detailbeschreibung
Alle Elemente der Benutzerliste werden mit <U> gekennzeichnet, alle Elemente der Gruppenliste werden mit <G> gekennzeichnet. Beide Listen werden von einer Trennzeile getrennt in ein Array zusammengeführt und retourniert.
Input Array Users Liste von Benutzernamen Array Groups Liste von Gruppen
Output Array usersAndGroups Liste der modifizierten Elemente
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 318
<ODI-DDOC-killDictionary-2002-05-14-M>
Modulbezeichnung killDictionary()
Dateiname core/killDictionary
Versionsdatum 21.02.2002
Kurzbeschreibung Löscht einen Spracheintrag in einem Dictionary
Erfordert -
Verantwortliche Maczejka
Autor Maczejka
LOC 5
Bytes 103
Cyclomatic Number 1
Seite 319
Detailbeschreibung
Parameter sind die Dictionarystruktur und der zu löschende Spracheintrag. Zurückgeliefert wird eine Dictionarystruktur ohne den angegebenen Spracheintrag.
Input
Array dictionary Wörterbuch String entry Zu löschender Eintrag
Output
Array dictionary Wörterbuch
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 320
<ODI-DDOC-linkUrls-2002-05-14-P>
Modulbezeichnung linkUrls()
Dateiname lib/stx.inc
Versionsdatum 28-Apr-2002
Kurzbeschreibung wandelt URLs in Links um
Erfordert -
Verantwortliche Pavlu
Autor Pavlu
LOC 16
Bytes 639
Cyclomatic Number 1
Seite 321
Detailbeschreibung
Der übergebene String wird nach URLs durchsucht. Alle als URL erkennbaren Zeichenketten werden zu Links auf die angegebene Adresse. Der modifizierte String wird retourniert.
Input String string String mit URLs
Output String String mit <A> tags
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 322
<ODI-DDOC-loadDictionary-2002-05-14-M>
Modulbezeichnung loadDictionary()
Dateiname core/loadDictionary
Versionsdatum 13.03.2002
Kurzbeschreibung Lädt eine Dictionarystruktur aus einer Datei
Erfordert -
Verantwortliche Maczejka
Autor Maczejka
LOC 11
Bytes 209
Cyclomatic Number 2
Seite 323
Detailbeschreibung
Parameter ist eine leere Dictionarystruktur. In diese werden die Daten aus dem Resource- File (defs.inc -> RES_FILE) gelesen. Bei erfolg true, bei Fehler false als Rückgabewert.
Input
Array dicitonary Wörterbuch
Output
Boolean true/false Laden erfolgreich oder nicht
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 324
<ODI-DDOC-loadLangs-2002-05-14-M>
Modulbezeichnung loadLangs()
Dateiname core/loadLangs
Versionsdatum 21.02.2002
Kurzbeschreibung Liefert alle Sprachen in einem Dictionary zurück
Erfordert -
Verantwortliche Maczejka
Autor Maczejka
LOC 13
Bytes 240
Cyclomatic Number 4
Seite 325
Detailbeschreibung
Übergeben wird ein Dictionary, zurück kommt ein Array mit allen in diesem Dictionary verwendeten Sprachen. Das gesamte Dictionary wird nach Sprachen durchsucht.
Input
Array dictionary Wörterbuch
Output
Array langs Sprachen in diesem Wörterbuch
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 326
<ODI-DDOC-lockSnip-2002-05-14-G>
Modulbezeichnung lockSnip()
Dateiname lib/snip.inc
Versionsdatum 17-Apr-2002
Kurzbeschreibung Sperrt ein Snip.
Erfordert myfopen(), getProjectPath(), unserializeFile(), getSessionId(),
myfclose(), getActiveUser(), serializeFile()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 42
Bytes 1115
Cyclomatic Number 5
Seite 327
Detailbeschreibung
Trägt im Lockfile das Snip als gesperrt ein, wenn es nicht schon von einem anderen Benutzer gesperrt ist. Im Falle eines Fehlers kommt false zurück, im Erfolgsfall tru. Wenn es schon gesperrt ist kommt der Benutzernamen des Lockbesitzers zurück.
Input
String snip_title
Output
Boolean true, wenn der lock gesetzt werden konnte False, wenn beim Zugriff aufs lockfile ein Fehler passiert ist
String Der Name des Benutzers, der das snip gesperrt hat
Probleme
Flock() Implementierung schleierhaft.
Verbesserungsmöglichkeiten
keine
Seite 328
<ODI-DDOC-makeIndexName-2002-05-14-G>
Modulbezeichnung makeIndexName()
Dateiname lib/<platform>-platform.inc
Versionsdatum 31-Mär-2002
Kurzbeschreibung Platformabhängige Funktion zur CaseSensitivity
Erfordert _
Verantwortliche Zlabinger
Autor Zlabinger
LOC 4
Bytes 49
Cyclomatic Number 1
Seite 329
Detailbeschreibung
Liefert den Namen eines Snips unter berücksichtigung des Betriebssystems zurück.
Input
String name
Output
String name
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 330
<ODI-DDOC-make_seed-2002-05-14-S>
Modulbezeichnung make_seed()
Dateiname system/kill-project
Versionsdatum 17-Apr-2002
Kurzbeschreibung erzeugt einen zeitabhängigen Random-Wert
Erfordert keine
Verantwortliche Zlabinger
Autor Seywerth
LOC 5
Bytes 126
Cyclomatic Number 1
Seite 331
Detailbeschreibung Erzeugt einen zeitabhängigen Random-Wert und gibt diesen zurück.
Input keine
Output Float random entspricht einem Random-Wert
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 332
<ODI-DDOC-mayEdit-2002-05-14-S>
Modulbezeichnung mayEdit()
Dateiname core/editable
Versionsdatum 16-Apr-2002
Kurzbeschreibung prüft das akt. Snip auf Schreibrechte
Erfordert keine
Verantwortliche Zlabinger
Autor Seywerth
LOC 13
Bytes 204
Cyclomatic Number 3
Seite 333
Detailbeschreibung Prüft ob der aktive User Schreibrechte auf das aktuelle Snip hat. Kann dieser mit keinen Schreibrechten aufwarten wird 'false' zurückgeliefert.
Input keine
Output Bool true|false ob das setzten erfolgreich war
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 334
<ODI-DDOC-meetingSelectList-2002-05-14-M>
Modulbezeichnung meetingSelectList()
Dateiname core/editMeetingForm
Versionsdatum 17.04.2002
Kurzbeschreibung Baut eine HTML- Selectliste auf
Erfordert
Verantwortliche Maczejka
Autor Maczejka
LOC 27
Bytes 580
Cyclomatic Number 8
Seite 335
Detailbeschreibung
Eine HTML- Selectliste wird aufgrund der übergebenen Parameter aufgebaut:
Input
String name Name der Selectliste Int size Breite der Selectliste Mixed list Elemetarray oder Anzahl der Elemente Mixed selected Ausgewähltes Element Boolean zeroinclude 0 auch in der liste?
Output
keiner
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 336
<ODI-DDOC-miniElement-2002-05-14-P>
Modulbezeichnung miniElement()
Dateiname lib/interfaces.inc
Versionsdatum 16-Apr-2002
Kurzbeschreibung Liefert HTML Formatierungssymbole des aktuellen Interfaces für
Controlpanelelemente
Erfordert keine
Verantwortliche Pavlu
Autor Pavlu
LOC 13
Bytes 346
Cyclomatic Number 3
Seite 337
Detailbeschreibung
Wenn vorhanden werden HTML Vorlagen des angegebenen Typs zurückgeliefert. Verfügbare Typen sind header (leitet ein Element ein), footer (beendet ein Element) und row (für eine Zeile im aktuellen control-panel Element).
Input String output Titel des Elements, bzw eine Ausgabezeile String elementTyp header | footer | row
Output String Interfaceabhängige HTML Formatierungen
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 338
<ODI-DDOC-miniFooter-2002-05-14-P>
Modulbezeichnung miniFooter()
Dateiname lib/interfaces.inc
Versionsdatum 16-Apr-2002
Kurzbeschreibung HTML Formatierungssymbole um ein Control-Panel zu schließen
Erfordert miniElement()
Verantwortliche Pavlu
Autor Pavlu
LOC 5
Bytes 103
Cyclomatic Number 1
Seite 339
Detailbeschreibung
Liefert die HTML Formatierungssymbole um im aktuellen Interface ein Control-Panel Element abzuschließen. Erwartet den Titel des Elements. Manche Interfaces stellen diesen Titel dar.
Input String Titel Titel des Control-Panel Elements
Output String HTML Formatierungssymbole
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 340
<ODI-DDOC-miniHeader-2002-05-14-P>
Modulbezeichnung miniHeader()
Dateiname lib/interfaces.inc
Versionsdatum 16-Apr-2002
Kurzbeschreibung HTML Formatierungssymbole um ein Control-Panel einzuleiten
Erfordert miniElement()
Verantwortliche Pavlu
Autor Pavlu
LOC 6
Bytes 130
Cyclomatic Number 1
Seite 341
Detailbeschreibung
Liefert die HTML Formatierungssymbole um im aktuellen Interface ein Control-Panel Element einzuleiten. Erwartet den Titel des Elements. Manche Interfaces stellen diesen Titel dar.
Input String Titel Titel des Control-Panel Elements
Output String HTML Formatierungssymbole
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 342
<ODI-DDOC-miniRow-2002-05-14-P>
Modulbezeichnung miniRow()
Dateiname lib/interfaces.inc
Versionsdatum 16-Apr-2002
Kurzbeschreibung HTML Formatierungssymbole um eine Controlpanelzeile
auszugeben
Erfordert miniElement()
Verantwortliche Pavlu
Autor Pavlu
LOC 4
Bytes 58
Cyclomatic Number 1
Seite 343
Detailbeschreibung
Liefert die HTML Formatierungssymbole um im aktuellen Interface eine Controlpanelzeile auszugeben. Um Zeilen ausgeben zu können, muss das Controlpanelelement zuerst eingeleitet werden. Dazu ist die Funktion miniHeader() zu verwenden. Nach der letzten Zeile schließt miniFooter() das Element ab.
Input String Row Darzustellender Inhalt der Zeile
Output String HTML Formatierungssymbole
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 344
<ODI-DDOC-myfclose-2002-05-14-G>
Modulbezeichnung myfclose()
Dateiname lib/<platform>-platform.inc
Versionsdatum 17-Apr-2002
Kurzbeschreibung Schließt eine Datei die mit myfopen geöffnet wurde.
Erfordert _
Verantwortliche Zlabinger
Autor Zlabinger
LOC 12
Bytes 202
Cyclomatic Number 2
Seite 345
Detailbeschreibung
Schließt eine Datei, die zuvor mit myfopen() geöffnet wurde. Diese Funktion ist plattform-abhängig.
Wenn truncate auf true gesetzt ist, so wird die Datei auf die Position des filepointers „zurechgestutzt“.
Input
Int filehandle Boolean truncate
Probleme
flock() Implementierung schleierhaft
Verbesserungsmöglichkeiten
keine
Seite 346
<ODI-DDOC-myfopen-2002-05-14-G>
Modulbezeichnung myfopen()
Dateiname lib/<platform>-platform.inc
Versionsdatum 17-Apr-2002
Kurzbeschreibung Ein erweitertes, platformabhängiges fopen.
Erfordert _
Verantwortliche Zlabinger
Autor Zlabinger
LOC 48
Bytes 978
Cyclomatic Number 5
Seite 347
Detailbeschreibung
Ein erweitertes fopen, dass nicht nach einem Versuch abbricht, sondern mehrere Versuche unternimmt und im Erfolgsfall das File locked. Die Implementierung ist Betriebssystem abhängig.
Vorsicht: unabhängig von mode wird der filepointer auf position 0 gesetzt. Dies ist notwendig, da snips zum schreiben nicht im modus w geöffnet werden dürfen, da die datei sonst noch vor der überprüfung der locks gelöscht werden würde. Deswegen werden grundsätzlich alle Dateien zum Schreiben im Modus r+ geöffnet.
Input
String name String mode
Output
Int filehandle
Probleme
flock() Implementierung auf Windows-Platformen unterschiedlich und nicht dokumentiert.
Verbesserungsmöglichkeiten
keine
Seite 348
<ODI-DDOC-myfopen_loop-2002-05-14-P>
Modulbezeichnung myfopen_loop()
Dateiname lib/win32-platform.inc
Versionsdatum 27-Apr-2002
Kurzbeschreibung FileLocking auf Win32
Erfordert -
Verantwortliche Zlabinger
Autor Pavlu
LOC 44
Bytes 1291
Cyclomatic Number 4
Seite 349
Detailbeschreibung
myfopen_loop versucht während einer in defs.inc definierten Zeitspanne (FOPEN_MAX_WAIT_TIME) ein Filehandle zum angegebenen File zu bekommen. Diese Funktion ist der zentrale Teil des selbst implementierten File-locking Mechanismus auf Win32. Ist das File bereits gelockt liefert die Funktion false.
Input String name Filename String mode nur 'a+' möglich
Output Zurückgegeben wird ein Filehandle oder false
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 350
<ODI-DDOC-newLanguageForm-2002-05-14-M>
Modulbezeichnung newLanguageForm()
Dateiname system/dictgen
Versionsdatum 17.04.2002
Kurzbeschreibung Anzeige eines Formulars zur Erstellunge einer neuen Sprache
Erfordert i18n(), form_href()
Verantwortliche Maczejka
Autor Maczejka
LOC 13
Bytes 495
Cyclomatic Number 1
Seite 351
Detailbeschreibung
Ein HTML- Formular zur Erstellung einer neuen Sprache wird ausgegeben.
Input
keiner
Output
keiner
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 352
<ODI-DDOC-odie_help-2002-05-14-S>
Modulbezeichnung odie_help()
Dateiname system/link
Versionsdatum 28-Apr-2002
Kurzbeschreibung öffnet mittels JavaScript ein neues Browser-Fenster; Inhalt ist die
odie-hilfe
Erfordert keine
Verantwortliche Pavlu
Autor Seywerth
LOC 5
Bytes 226
Cyclomatic Number 1
Seite 353
Detailbeschreibung Diese JavaScript-Funktion öffnet ein neues Browser-Fenster mit der Grösse 600*400. Als Inhalt wird auf die odie-hilfe gelinkt.
Input keine
Output Ein Browser-Fenster
Probleme
JavaScript ist eine unschöne Art der Web-Programmierung.
Verbesserungsmöglichkeiten
keine
Seite 354
<ODI-DDOC-pageElement-2002-05-14-P>
Modulbezeichnung pageElement()
Dateiname lib/interfaces.inc
Versionsdatum 16-Apr-2002
Kurzbeschreibung liefert HTML Formatierungssymbole des aktuellen Interfaces für
Hauptseitenelemente
Erfordert keine
Verantwortliche Pavlu
Autor Pavlu
LOC 29
Bytes 803
Cyclomatic Number 4
Seite 355
Detailbeschreibung
Versucht das angegebene Template des aktuellen Interfaces zu inkludieren. Dabei wird der interne Elementzähler erhöht – ausser der zweite Parameter ist auf false gesetzt. Der Rahmen wird nur dann dargestellt, wenn es sich um den ersten Aufruf von pageElement() handelt, oder der zweite Parameter auf true gesetzt ist.
Input String Name Name des Templates Boolean override Bei true wird der Rahmen auf jeden Fall dargestellt
Output String Interfaceabhängige HTML Formatierungen
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 356
<ODI-DDOC-parse-2002-05-14-M>
Modulbezeichnung parse()
Dateiname lib/parser.inc
Versionsdatum 17.04.2002
Kurzbeschreibung Schaffen der Rahmenbedingungen für do_parse
Erfordert do_parse()
Verantwortliche Maczejka
Autor Maczejka
LOC 16
Bytes 361
Cyclomatic Number 3
Seite 357
Detailbeschreibung
Übergeben wird ein XML- String sowie eine Statusvariable. Ist diese true, wird vor und nach das Dokument ein „<content>“ tag gesetzt. Bei false fällt dieser weg. Anschliessend wird do_parse aufgerufen und die XML- Struktur zurückgeliefert.
Input
String dokument Zu parsendes XML- Dokument Boolean content=true <content> - Tag ja oder nein
Output
Array xml XML- Struktur
Probleme
Oft wird HTML geparsed. HTML ist so gut wie nie wohlgeformt, daher sind die Bedingungen für das Parsen nicht eindeutig. Dies kann zu Datenverlust führen.
Verbesserungsmöglichkeiten
-
Seite 358
<ODI-DDOC-parseDate-2002-05-14-S>
Modulbezeichnung parseDate()
Dateiname core/parseDate
Versionsdatum 14-Jan-2002
Kurzbeschreibung liefert aus einem Datums-String ein parseDateTime-Array
Erfordert parseDateTime()
Verantwortliche Seywerth
Autor Seywerth
LOC 17
Bytes 327
Cyclomatic Number 3
Seite 359
Detailbeschreibung Liefert aus dem übergebenen Datums-String (dd-mmm-yyyy) ein parseDateTime-Array.
Input String str ist das Datum (ohne Uhrzeit)
Output Array parseDateTime Datum & Time im parseDateTime-Format
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 360
<ODI-DDOC-parseDateTime-2002-05-14-S>
Modulbezeichnung parseDateTime()
Dateiname core/parseDateTime
Versionsdatum 21-Feb-2002
Kurzbeschreibung liefert aus einem Datums-Zeit-String ein parseDateTime-Array
Erfordert keine
Verantwortliche Seywerth
Autor Seywerth
LOC 88
Bytes 3465
Cyclomatic Number 12
Seite 361
Detailbeschreibung Liefert aus dem übergebenen Datums-Zeit-String (dd-mon-yyyy/hh:ii) ein parseDateTime-Array.
Dieses schaut wie folgt aus: parseDateTime-Array['dd'] der Tag als Integer parseDateTime-Array['mmm'] das Monat als 3-stelliges Monatskürzel parseDateTime-Array['yyyy'] das Jahr als Integer parseDateTime-Array['hh'] die Stunde als Integer parseDateTime-Array['ii'] die Minute als Integer parseDateTime-Array['str'] den (korrigierten) übergebenen String parseDateTime-Array['mm'] das Monat als Integer parseDateTime-Array['val'] der String als vergleichbarer Integer-Wert
Input String str ist das Datum und Zeit (dd-mon-yyyy/hh:ii)
Output Array parseDateTime Datum & Time im parseDateTime-Format
Probleme
Wenn ein Wert einstellig ist (zb.: Jan = 1) wird dieser auch einstellig zurückgeliefert. Dadurch gibt es keine exakt einheitliche Formatierung.
Verbesserungsmöglichkeiten
keine
Seite 362
<ODI-DDOC-parseOdieUrl-2002-05-14-P>
Modulbezeichnung parseOdieUrl()
Dateiname lib/utils.inc
Versionsdatum 11-Mär-2002
Kurzbeschreibung Untersucht die Urlzeile. Liefert Projekt, Snip und Applikation
Erfordert strSplit(), cleanPath()
Verantwortliche Pavlu, Zlabinger
Autor Pavlu
LOC 53
Bytes 1048
Cyclomatic Number 6
Seite 363
Detailbeschreibung
Zerlegt die Urlzeile in ihre Bestandteile, untersucht die Tokens und liefert die Informationen über Snipname, Pfad und Applikationsname aus der Urlzeile als Array zurück.
Input String Snip defaultSnipname (wenn nichts aus Url kommt) String App defaultAppname (wenn nichts aus Url kommt)
Output Array array(Pfad, Snipname, Appname)
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 364
<ODI-DDOC-prepareIndex-2002-05-14-G>
Modulbezeichnung prepareIndex()
Dateiname lib/snip.inc
Versionsdatum 27-Mär-2002
Kurzbeschreibung Lädt den Projektindex in den Speicher
Erfordert read_index(), i18n(), getProjectPath()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 13
Bytes 293
Cyclomatic Number 2
Seite 365
Detailbeschreibung
Lädt den Projektindex in den Speicher. Dies geschieht am Anfang des Programmlaufes in odie.php. Sonst sollte diese Funktion nie aufgerufen werden, ausser durch Applikationen die einen Projektwechsel vornehmen z.B.: system/edit-project.
Diese Funktion übernimmt keine Parameter und liefert nichts zurück. Im Falle eines Fehlers wird eine Meldung ausgegeben.
Probleme
keine
Verbesserungsmöglichkeiten
Die Funktion sollte einen Fehlerwert zurückliefern statt eine Meldung auszugeben
Seite 366
<ODI-DDOC-printSelect-2002-05-14-P>
Modulbezeichnung printSelect()
Dateiname core/printSelect
Versionsdatum 30-Mar-2002
Kurzbeschreibung Stellte eine <SELECT> Liste dar
Erfordert keine
Verantwortliche Pavlu
Autor Pavlu
LOC 7
Bytes 200
Cyclomatic Number 2
Seite 367
Detailbeschreibung
Erzeugt den HTML Code für die Darstellung eines Arrays in der Form einer <SELECT>Liste. Zurückgeliefert wird nichts – ausgegeben das erzeugte Formularelement.
Input String name Name des Formularelements Array Liste die Liste der Werte
Output keiner
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 368
<ODI-DDOC-question-2002-05-14-K>
Modulbezeichnung question()
Dateiname system/sendpass
Versionsdatum 21-Feb-2002
Kurzbeschreibung Gibt ein Formular für die Reminder question aus
Erfordert -
Verantwortliche Zlabinger
Autor Kolm
LOC 9
Bytes 367
Cyclomatic Number 2
Seite 369
Detailbeschreibung
Die Funktion question gibt ein Formular für die Reminder question aus. Benötigt wird der Benutzername sowie die Reminder question.
Input String username Der Benutzername String question Die Reminder question
Output keiner
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 370
<ODI-DDOC-rausTime-2002-05-14-M>
Modulbezeichnung rausTime()
Dateiname lib/parser.inc
Versionsdatum 17.04.2002
Kurzbeschreibung Debugfunktion, Zeit ausgeben
Erfordert -
Verantwortliche Maczejka
Autor Maczejka
LOC 12
Bytes 337
Cyclomatic Number 1
Seite 371
Detailbeschreibung
Debugfunktion zum Testen des Parser- Zeitverhaltens. Die aktuelle Zeit wird mit der mit couTime genommenen Zeit verglichen, die Differenz ausgegeben. Die Dauer der Vorgänge zwischen den beiden Funktionsaufrufen wird ausgegeben.
Input
String text Textausgabe String savevar Variable, in der die Zeit gespeichert
wurde
Output
keiner
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 372
<ODI-DDOC-read-2002-05-14-S>
Modulbezeichnung read()
Dateiname core/read
Versionsdatum 11-Mar-2002
Kurzbeschreibung liefert in einem Array das gewünschte Snip zurück
Erfordert keine
Verantwortliche Zlabinger
Autor Seywerth
LOC 12
Bytes 197
Cyclomatic Number 2
Seite 373
Detailbeschreibung Liefert in einem Array das gewünschte Snip zurück. Als Parameter wird der Snipname angegeben. Wird kein Snipname angegeben wird das aktuelle Snip verwendet.
Input String pattern der Snipname des zu landenden Snips
Output Array snip liefert das Snip als Array zurück
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 374
<ODI-DDOC-readAccess-2002-05-14-G>
Modulbezeichnung readAccess()
Dateiname lib/snip.inc
Versionsdatum 17-Apr-2002
Kurzbeschreibung Prüft ob der Benutzer Lesezugriff hat
Erfordert makeIndexName(), isReservedName(), getActiveUser(),
getHeader(), checkReadAccess()
Verantwortliche Zlabinger, Pavlu
Autor Zlabinger
LOC 18
Bytes 401
Cyclomatic Number 4
Seite 375
Detailbeschreibung
Liefert True zurück, wenn der Benutzer Lesezugriff auf das Snip hat. Ansonsten ist der Rückgabewert false.
Die eigentliche Überprüfung findet in der Funktion checkReadAccess() statt.
Input
String snip_name Name des zu überprüfenden Snips. String user_name Benutzername. Wenn Leerstring wird der
aktive Benutzer angenommen.
Output
Boolean Lesezugriff
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 376
<ODI-DDOC-read_index-2002-05-14-G>
Modulbezeichnung read_index()
Dateiname lib/snip.inc
Versionsdatum 27-Mär-2002
Kurzbeschreibung Liest einen Projektindex ein.
Erfordert unserializeFile()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 10
Bytes 161
Cyclomatic Number 2
Seite 377
Detailbeschreibung
Diese Funktion liest die Indexdatei eines Projekts ein.
Input
String name Dateiname der Indexdatei. &array daten Array, dass die Indexdaten empfängt
Output
Boolean Erfolg
Die Indexdaten sind ein Hash von Snip-Header Informationen mit dem Snip-Titel als Schlüssel.
Probleme
Index verschwindet manchmal
Verbesserungsmöglichkeiten
keine
Seite 378
<ODI-DDOC-removeLinkerSymbols-2002-05-14-M>
Modulbezeichnung removeLinkerSymbols()
Dateiname lib/keywords.inc
Versionsdatum 18.04.2002
Kurzbeschreibung Entfernt Linkersymbole aus einem String
Erfordert -
Verantwortliche Maczejka
Autor Maczejka
LOC 21
Bytes 450
Cyclomatic Number 5
Seite 379
Detailbeschreibung
Alle Linkersymbole (":", "!", "@", "!!", "=", "=!", "?") werden aus dem übergebenen Array entfernt. Sterne (*) werden gefiltert, nur der Text bis zum ersten Stern wird behalden. Das bearbeitete Array wird zurückgeliefert.
Input
Array links Zu bearbeitendes Array
Output
Array links Arrayelemente ohne Linkersymbole
Probleme
Verbesserungsmöglichkeiten
-
Seite 380
<ODI-DDOC-render-2002-05-14-M>
Modulbezeichnung render()
Dateiname lib/render.inc
Versionsdatum 17.04.2002
Kurzbeschreibung Grundfunktion zum umwandeln von einem Format ins Andere
Erfordert render_html(), render_plain(), rtf_odie_header(), render_rtf(),
rtf_odie_close(), parse(), i18n()
Verantwortliche Maczejka, Pavlu, Zlabinger
Autor Maczejka
LOC 62
Bytes 1786
Cyclomatic Number 12
Seite 381
Detailbeschreibung
Der übergebene String wird in eine XML- Struktur umgewandelt, und in das in Parameter 2 genannte Format mithilfe der jeweiligen render- Funktion umgewandelt. RENDERER- Grundfunktionalität: Die XML- Struktur wird sequentiell durchgearbeitet, Tags durch andere Tags oder jeweilige Formatierungsbefehle ersetzt (große case- Struktur).
Input
String &string Zu rendernder String String type Art der Ausgabe
„binary“, „html“, „text“, „ascii“, „rtf“, „printable“
Output
keiner
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 382
<ODI-DDOC-render_html-2002-05-14-M>
Modulbezeichnung render_html()
Dateiname lib/render_html.inc
Versionsdatum 17.04.2002
Kurzbeschreibung Rendern ins HTML- Format
Erfordert -
Verantwortliche Maczejka
Autor Maczejka
LOC 129
Bytes 3002
Cyclomatic Number 20
Seite 383
Detailbeschreibung
Ausgabeformat ist HTML. Odie- Interne Tags werden zusätzlich erkannt und in lesbare Form umgewandelt. Ansonsten entspricht die Funktionalität der Funktion unparse.
Input
Array xml XML- Struktur
Output
String rendered Gerenderte XML- Struktur
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 384
<ODI-DDOC-render_plain-2002-05-14-M>
Modulbezeichnung render_plain()
Dateiname lib/render_plain.inc
Versionsdatum 27.03.2002
Kurzbeschreibung Rendern ins Plaintext- Format
Erfordert -
Verantwortliche Maczejka
Autor Maczejka
LOC 125
Bytes 2725
Cyclomatic Number 35
Seite 385
Detailbeschreibung
Formatierungsbefehle von HTML werden in eine im ASCII- Modus lesbare Form gebracht. Elemente wie Listen, Tabellen oder Überschriften werden formatiert. Details über Umwandlungen der einzelnen Tags sind in der Case- Struktur zu finden.
Input
Array xml XML- Struktur
Output
String rendered Gerenderte XML- Struktur
Probleme
Langsam bei umfangreichen Dokumenten
Verbesserungsmöglichkeiten
-
Seite 386
<ODI-DDOC-reder_rtf-2002-05-14-M>
Modulbezeichnung render_rtf()
Dateiname lib/render_rtf.inc
Versionsdatum 27.03.2002
Kurzbeschreibung Ausgabe einer XML- Struktur im RTF- Format
Erfordert -
Verantwortliche Maczejka
Autor Maczejka
LOC 115
Bytes 2519
Cyclomatic Number 25
Seite 387
Detailbeschreibung
Siehe render_html/render_plain. Ausgabe sind RTF- Formatierungsbefehle.
Input
Array xml XML- Struktur
Output
String rendered Gerenderte XML- Struktur
Probleme
Tabellen laut RTF 1.5 Spezifikation bringen Microsoft Word2000 zum Absturz.
Verbesserungsmöglichkeiten
-
Seite 388
<ODI-DDOC-restOfTime-2002-05-14-S>
Modulbezeichnung restOfTime()
Dateiname core/restOfTime
Versionsdatum 24-Mar-2002
Kurzbeschreibung gibt einen String mit der Dauer der angegebenen Zeitangaben
zurück
Erfordert parseDateTime()
Verantwortliche Seywerth
Autor Seywerth
LOC 68
Bytes 2221
Cyclomatic Number 13
Seite 389
Detailbeschreibung Gibt einen String mit der Dauer der angegebenen drei Zeitangaben zurück. Dabei wird ausgehend vom 1. Parameter zuerst überprüft ob sich der Start und der End-Zeitpunkt (2. und 3. Parameter) am selben Tag befinden. Danach wird die Dauer berechnet und in Worten und Zahlen, internationalisiert ausgedrückt (z.B.: "1 hour and 20 min."). Die Parameter sind Zeitangaben nach dem parseDateTime-Format.
Input Array curDate stellt den Ausgangszeitpunkt dar Array start definiert den Startzeitpunkt der Messung Array end definiert den Endzeitpunkt der Messung
Output String restString die Dauer der Zeitspanne ausformuliert
Probleme
Die Funktion ist derzeit nur für einen Tag ausformuliert. Das bedeutet, dass Zeitspannen über einen Tag nicht vollständig berücksichtigt werden.
Verbesserungsmöglichkeiten
Eine Anpassung auf beliebige Zeitspannen über mehrere Tage, Monate,... hinweg.
Seite 390
<ODI-DDOC-rtf_odie_close-2002-05-14-M>
Modulbezeichnung rtf_odie_close()
Dateiname lib/render_rtf.inc
Versionsdatum 27.03.2002
Kurzbeschreibung Ausgabe eines RTF- Footers für ein Dokument
Erfordert -
Verantwortliche Maczejka
Autor Maczejka
LOC 3
Bytes 38
Cyclomatic Number 1
Seite 391
Detailbeschreibung
Standard Footerbefehle für ein Odie- RTF- Dokument werden ausgegeben, in diesem Fall nur eine geschlossene geschwungene Klammer.
Input
keiner
Output
keiner
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 392
<ODI-DDOC-rtf_odie_header-2002-05-14-M>
Modulbezeichnung rtf_odie_header()
Dateiname lib/render_rtf.inc
Versionsdatum 27.03.2002
Kurzbeschreibung Ausgabe eines RTF- Headers für ein Dokument
Erfordert -
Verantwortliche Maczejka
Autor Maczejka
LOC 30
Bytes 961
Cyclomatic Number 1
Seite 393
Detailbeschreibung
Standard Headerbefehle für ein Odie- RTF- Dokument werden ausgegeben.
Input
keiner
Output
keiner
Probleme
Verbesserungsmöglichkeiten
-
Seite 394
<ODI-DDOC-saveEvent-2002-05-14-S>
Modulbezeichnung saveEvent()
Dateiname core/saveEvent
Versionsdatum 14-Feb-2002
Kurzbeschreibung speichert ein Event (Calendar) in das zugehörige cal-Snip
Erfordert parseDateTime(), getDayInfo()
Verantwortliche Seywerth
Autor Seywerth
LOC 110
Bytes 4186
Cyclomatic Number 14
Seite 395
Detailbeschreibung Speichert ein Event der Applikation 'Calendar' in das zugehörige cal-Snip. Ist das Snip schon vorhanden wird an der richtigen Stelle eingefügt. Start- und End-Zeitpunkt werden vertauscht falls diese verkehrt eingegeben wurden.
Der Parameter datestring hat folgendes Format: cal-dd-mmm-yyyy (z.B.: cal-12-Jan-2002). Die Parameter 'start' und 'end' sind im parseDateTime-Format.
Das aktuelle Event wird als Array zurückgeliefert. Es ist wie folgt aufgeteilt: event[title], event[description], event[start], event[end], event[editor].
Input String datestring stellt den Namen des cal-Snips dar String event_title der Titel des Events String event_desc ist die Beschreibung des Events String start stellt den Startzeitpunkt des Events dar String end stellt den Endzeitpunkt des Events dar
Output Array events das aktuelle Event als Array
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 396
<ODI-DDOC-saveExtern-2002-05-14-K>
Modulbezeichnung saveExtern()
Dateiname core/saveExtern
Versionsdatum 01-Apr-2002
Kurzbeschreibung Speichert externe Dateien, bzw. verarbeitet Bilder
Erfordert getProjectPath(), getHeader(), writeHeader(), setBacklinks(),
getSnip(), getActiveProject()
Verantwortliche Kolm
Autor Kolm
LOC 144
Bytes 4978
Cyclomatic Number 28
Seite 397
Detailbeschreibung
Diese Funktion bildet das Herz der Extern- Applikation. Sie ist für die Erstellung der unter Umständen notwendigen thumbs-Ordner zuständig und entscheidet wie mit Bildern verfahren wird. Bei image-type pjpeg, jpg, jpeg, png werden Thumbs erzeugt und im Unterordner thumbs abgelegt. Falls es sich um gif oder bmp handelt, kann GD nicht damit umgehen und es werden keine Thumbs erzeugt.
Falls es sich um Files mit der Endung DOC, EXE, .. handelt werden sie ohne weitere Behandlung mit dem content-type "extern" versehen und bei der Darstellung wird auf passende Icons zur grafischen Darstellung zurückgegriffen.
Wenn ein content-type übergeben wird, der einem im odie gängigen content-type entspricht, wird geprüft ob der content-type für das übergebene File zulässig ist. Bei positivem Ergebnis wird das File als Snip mit dem gewünschten content-type im Snip-space abgelegt, andernfalls wird der content-type ebenfalls auf "extern" gesetzt. Input
Array userfile Das HTTP_POST_USERFILE Informationen zum raufgeladenen File, die vom Webserver zur Verfügung gestellt werden
String content-type Content-type String description Beschreibung zu der Datei
Output String result success bei Erfolg, sonst eine Fehlermeldung
Probleme
GD unterstützt nicht alle Imageformate.
Verbesserungsmöglichkeiten
keine
Seite 398
<ODI-DDOC-saveInterface-2002-05-14-M>
Modulbezeichnung saveInterface()
Dateiname core/saveInterface
Versionsdatum 25.02.2002
Kurzbeschreibung Setzt das aktuelle Interface in Session und Userdata
Erfordert setSessionData(), setUserData()
Verantwortliche Kolm, Pavlu
Autor Maczejka
LOC 16
Bytes 294
Cyclomatic Number 3
Seite 399
Detailbeschreibung
Ein Interface wird übergeben, und sowohl in der aktuellen Session als auch in den Benutzerdaten, sofern der Benutzer nicht anybody ist, gespeichert.
Input
String interface Zu speicherndes Interface
Output
Boolean true/false Erfolgreich/Fehler
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 400
<ODI-DDOC-saveLanguage-2002-05-14-K>
Modulbezeichnung saveLanguage()
Dateiname core/saveLanguage
Versionsdatum 25-Feb-2002
Kurzbeschreibung Zum setzen der gewünschten Sprache
Erfordert setSessionData(), setUserData()
Verantwortliche Kolm
Autor Kolm
LOC 18
Bytes 297
Cyclomatic Number 3
Seite 401
Detailbeschreibung
Diese Funktion setzt die Sprache auf den gewünschten Wert und speichert diese im Sessionobjekt ab. Falls der aktive Benutzer angemeldet ist wird die Sprache auch bei seinen Userdaten gespeichert. Sprich wenn er sich das nächste Mal anmeldet, hat er noch immer seine vorher gewählte Sprache.
Input String pattern Die gewünschte Sprache
Output boolean success true bei Erfolg, false beim Scheitern
von setUserData/setSessionData
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 402
<ODI-DDOC-saveTodo-2002-05-14-K>
Modulbezeichnung saveTodo()
Dateiname core/saveTodo
Versionsdatum 21-Feb-2002
Kurzbeschreibung Auswertung der Checkboxzustände, hinzufügen & ändern
neuer Tasks
Erfordert parseDate(), unparse(), writeSnip(), getActiveUser()
Verantwortliche Kolm
Autor Kolm
LOC 73
Bytes 2160
Cyclomatic Number 11
Seite 403
Detailbeschreibung
saveTodo ermöglicht es, die Checkboxzustände auszuwerten, neue Tasks abzuspeichern und bei Bedarf Tasks upzudaten.
Beim Aufruf muss das Snipobjekt(username, title) gefüllt sein. Weiters muss ein vorhandenes Task-Array sowie das Array mit den Forminhalten bekannt sein.
Der Aufbau des Task-Arrays ist unter der Funktionsreferenz von getTodo vorzufinden. Das todo_form Array muss immer die auf 'on' gesetzten Statusfelder und falls Änderungen vorgenommen worden sind, bzw. ein neuer Task hinzugefügt wurde, weitere Felder besitzen. Ein Beispiel zur Veranschaulichung:
Array ( [status] => Array ( [task_10] => on [task_1] => on [task_6] => on [task_7] => on [task_9] => on [task_14] => on [task] => on [task_8] => on [task_5] => on [task_3] => on )
[priority] => 5 [name] => neuer [desc] => task [due_day] => 1 [due_month] => Jan [due_year] => 2002 [key] => 0
)
Seite 404
Input Array Snip Das Snipobjekt Array Task Task-Array
Array todo_form Die Formulardaten
Output Zurückgegeben wird ein Array bestehend aus einem Fehlercode, bei validem Datum ein neues Snipobjekt und bei keinerlei Fehlern noch zusätzlich ein neues Task-Array.
return array (1, 0, 0); kein valides Datum return array (2, snip, 0); getSnip/writeSnip Error return array (0, snip, task); alles ok
Probleme
keine
Verbesserungsmöglichkeiten
Rückgabewerte könnten übersichtlichter gestaltet werden
Seite 405
<ODI-DDOC-schleimer-2002-05-14-P>
Modulbezeichnung schleimer()
Dateiname core/keepAliveScript
Versionsdatum 26-Mär-2002
Kurzbeschreibung Schickt vom Client keepalive Requests an den Server solange ein
Snip bearbeitet wird.
Erfordert -
Verantwortliche Pavlu, Zlabinger
Autor Pavlu
LOC 10
Bytes 389
Cyclomatic Number 1
Seite 406
Detailbeschreibung
In regelmässigen Zeitabständen, die in {settings} definiert sind, erfordert der Client vom Server neue Bilder. Diese Requests teilen dem Server mit, dass noch bearbeitet wird und das Snip bleibt gesperrt. Bleibt diese ich-bin-noch-da Nachricht für längere Zeit aus, muss der Server vermuten, dass der Browser geschlossen und die Änderungen verworfen wurden. Das Snip wird wieder freigegeben.
Input keiner
Output keiner
Probleme
keine
Verbesserungsmöglichkeiten
Wenn für das problemlose Bearbeiten von Snips JavaScript benötigt wird, könnte man diese Keepalive Messages auch auf des Sessionmanagement ausdehnen. Eine JavaScript-freie Lösung für Concurrent Edits finden
Seite 407
<ODI-DDOC-sendpass-2002-05-14-G>
Modulbezeichnung sendpass()
Dateiname core/sendpass
Versionsdatum 30-Mär-2002
Kurzbeschreibung Schickt ein Passwort an eine E-Mail Adresse.
Erfordert i18n()
Verantwortliche Zlabinger, Pavlu
Autor Zlabinger
LOC 9
Bytes 367
Cyclomatic Number 2
Seite 408
Detailbeschreibung
Sendet ein Passwort an eine E-Mail Adresse.
Input
String email email-adresse, der die post übermittelt werden soll String username der name des benutzers String passwort sein passwort
Output
Diese Funktion liefert keinen Wert zurück. Im Falle eines Fehlers wird der Text ausgegeben.
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 409
<ODI-DDOC-serializeFile-2002-05-14-G>
Modulbezeichnung
serializeFile()
Dateiname lib/utils.inc
Versionsdatum 11-Mär-2002
Kurzbeschreibung Speichert ein Array in eine Datei
Erfordert myfopen(), myfclose()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 19
Bytes 348
Cyclomatic Number 5
Seite 410
Detailbeschreibung
Schreibt ein Array in eine Datei. Diese Funktion verwendet die PHP-Funktion serialize() um die Daten in maschinen-lesbar Form zu bringen. Liefert im Erfolgsfall true, ansonsten false.
Input
String filename &Array daten mixed file
Output
Boolean Erfolg
Im Argument file kann entweder ein gültiges Filehandle übergeben werden oder false. Im letzteren Fall öffnet die Funktion die Datei selbst.
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 411
<ODI-DDOC-setActiveProject-2002-05-14-S>
Modulbezeichnung setActiveProject()
Dateiname lib/project.inc
Versionsdatum 18-Apr-2002
Kurzbeschreibung setzt das akt. Projekt und gibt zurück ob das Projekt vorhanden ist
Erfordert keine
Verantwortliche Zlabinger
Autor Seywerth
LOC 34
Bytes 631
Cyclomatic Number 5
Seite 412
Detailbeschreibung Setzt das aktuelle Projekt und gibt zurück ob das Projekt vorhanden ist. Ist das Projekt nicht vorhanden wird 'false' zurückgeliefert.
Input String proj der Projektname der versucht wird zu setzten
Output Bool true|false ob das setzten erfolgreich war
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 413
<ODI-DDOC-setBacklinks-2002-05-14-K>
Modulbezeichnung setBacklinks()
Dateiname lib/backlinks.inc
Versionsdatum 25-Mär-2002
Kurzbeschreibung Setzt Links & Backlinks im Indexeintrag des jeweiligen Snips
Erfordert getKeywords(), getCommentSnips(), unsetBacklinks(),
getHeader(), getActiveUser(), writeHeader()
Verantwortliche Kolm
Autor Kolm
LOC 45
Bytes 1299
Cyclomatic Number 8
Seite 414
Detailbeschreibung
Diese Funktion ist für die Aktualisierung bzw. Eintragung der Links, Backlinks und der Keywords in den jeweiligen Snipobjekten zuständig.
Zunächst werden Keywords gesetzt und die "neuen" Links mit den für den Snip existierenden Comment-Snips gemerged. Anschließend wird geprüft, welche Links/Backlinks nicht mehr gültig sind indem die "neuen" mit den "alten" Links vergleicht werden. Nachdem alle nicht mehr gültigen Links inkl. dazugehörenden Backlinks gelöscht wurden, werden die neuen Links, die nicht im aktuellen Snipobjekt stehen, eingetragen. Parallel dazu werden die Backlinks in jenen Snips eingetragen, auf die im aktuellen Snip gelinkt wird.
Am Ende wird das aktuelle Snipobjekt mit writeHeader() geschrieben.
Input Array Snip Ein referenziertes Snipobjekt
Output keiner
Probleme
Bei der Erstellung und Korrektur von Backlinks sind einige Schwierigkeiten aufgetreten, was die Konsistenz der Daten angeht. Da bei einem Schreibvorgang nicht alle Links/Backlinks auf den neuesten Stand gebracht werden können (Zeitproblem), musste eine weniger aufwendigere Lösung gefunden werden. Diese deckt aber nicht alle Fälle ab und es könnte unter Umständen zu Inkonsistenzen führen.
Verbesserungsmöglichkeiten
Überdenken des Backlinkalgorithmus.
Seite 415
<ODI-DDOC-setProjectMembers-2002-05-14-G>
Modulbezeichnung setProjectMembers()
Dateiname core/setProjectMembers
Versionsdatum 26-Feb-2002
Kurzbeschreibung Setzt die Projektmitglieder eines Projekts fest.
Erfordert getProjectMembers(), getUserData(), getActiveProject(),
setUserData(), myfopen(), myfclose(), i18n()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 6
Bytes 134
Cyclomatic Number 1
Seite 416
Detailbeschreibung
Diese Funktion übernimmt ein Array mit den Projektzugehörigkeits-Informationen und schreibt sie in das Memberfile des Projekts. Der dritte Parameter update_user bestimmt, ob dabei auch die Benutzerseitig gespeicherten Daten aktualisiert werden sollen.
Input
String projektname &Array daten Boolean update_user
Output
Boolean Erfolg
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 417
<ODI-DDOC-setRights-2002-05-14-G>
Modulbezeichnung setRights()
Dateiname lib/snip.inc
Versionsdatum 17-Apr-2002
Kurzbeschreibung Legt die Rechte für ein Snip fest.
Erfordert makeIndexName(), getHeader(), writeAccess(), writeHeader(),
Verantwortliche Zlabinger, Pavlu
Autor Zlabinger
LOC 33
Bytes 808
Cyclomatic Number 5
Seite 418
Detailbeschreibung
Übernimmt ein Array mit den Zugriffsrechten und trägt sie in den Index ein, wenn der User Schreibzugriff auf das Snip ist.
Input
String snipname Array rechte String username
Output
Boolean Erfolg
Das Rechte-Array hat folgenden Aufbau
Array ( [write_list] => Array ( [users] => Array ( [allow] => Array ( ) [deny] => Array ( ) ) [projects] => Array ( [0] => odie ) ) [read_list] => Array ( [users] => Array ( [allow] => Array ( ) [deny] => Array ( ) ) [projects] => Array ( [0] => odie ) ) )
Seite 419
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 420
<ODI-DDOC-setSessionData-2002-05-14-G>
Modulbezeichnung setSessionData()
Dateiname lib/user.inc
Versionsdatum 15-Apr-2002
Kurzbeschreibung Schreibt die Daten einer Session auf die Platte.
Erfordert serializeFile()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 11
Bytes 206
Cyclomatic Number 2
Seite 421
Detailbeschreibung
Schreibt die Daten einer Session auf die Platte. Im Falle eines Fehlers kommt false zurück.
Input
Array session-daten
Die Session-Daten haben folgenden Aufbau:
Array ( [id] => f528764d624db129b32c21fbca0cb8d6 [username] => vpavlu [interface] => vanilla [lastaction] => 1019458260 [language] => english [date] => 14-Apr-2002 [project] => odie )
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 422
<ODI-DDOC-setUserData-2002-05-14-G>
Modulbezeichnung setUserData()
Dateiname lib/user.inc
Versionsdatum 15-Apr-2002
Kurzbeschreibung Schreibt die User-Daten in die User DB
Erfordert myfopen(), myfclose()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 6
Bytes 154
Cyclomatic Number 1
Seite 423
Detailbeschreibung
Schreibt die User-Daten auf die Festplatte. Im Falle eines Fehlers wird false zurückgeliefert.
Input
Array user-daten
Die User-Daten haben folgenden Aufbau:
Array ( [username] => vpavlu [name] => Pavlu [firstname] => Viktor [email] => viktor_pavlu@hotmail.com [reminder_question] => skorpa und ... [reminder_answer] => nativa [password] => f2a0ffe83ec8d44f2be4b624b0f47dde [interface] => vanilla [language] => english [projects] => Array ( [0] => default [2] => odp [3] => odie )
)
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 424
<ODI-DDOC-showAllMeetings-2002-05-14-M>
Modulbezeichnung showAllMeetings()
Dateiname core/showAllMeetings
Versionsdatum 17.04.2002
Kurzbeschreibung Zeigt eine Meetingübersicht an
Erfordert -
Verantwortliche Maczejka
Autor Maczejka
LOC 114
Bytes 3711
Cyclomatic Number 10
Seite 425
Detailbeschreibung
Eine Übersicht über alle Besprechungsprotokolle im aktuellen Projekt wird ausgegeben. Statistische Informationen sind: Protokolleur, Anwesende, Beginn und Ende sowie Dauer. Weiters werden alle fehlerhaften Meeting- Snips angezeigt.
Input
Keiner
Output
keiner
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 426
<ODI-DDOC-showMeeting-2002-05-14-M>
Modulbezeichnung showMeeting()
Dateiname system/meeting
Versionsdatum 17.04.2002
Kurzbeschreibung Anzeigen eines Besprechungsprotokolls
Erfordert parse(), unparse(), i18n(), stx_parse(), writeAccess(), form_href()
Verantwortliche Maczejka
Autor Maczejka
LOC 124
Bytes 4007
Cyclomatic Number 7
Seite 427
Detailbeschreibung
Formschöne Darstellung eines Besprechungsprotokollsnips am Bildschirm mit Hilfe von HTML. Wird false übergeben, wird der edit- Button ausgeschaltet.
Input
Boolean editable Bearbeitbar oder nicht
Output
keiner
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 428
<ODI-DDOC-showWordList -2002-05-14-M>
Modulbezeichnung showWordList()
Dateiname system/dictgen
Versionsdatum 17.04.2002
Kurzbeschreibung Anzeige eines Wörterbuchs in HTML
Erfordert loadLangs(), i18n(), form_href()
Verantwortliche Maczejka
Autor Maczejka
LOC 114
Bytes 3282
Cyclomatic Number 13
Seite 429
Detailbeschreibung
Übergeben wird ein Dicionary und eine id des Eintrags, der zum bearbeiten gekennzeichnet sein soll. Die Wörter werden nach Sprachen geordnet in einer formatierten Liste ausgegeben, zusammen mit Auswahlknöpfen zum Bearbeiten und Löschen.
Input
Array dictionary Wörterbuchstruktur Int id Welcher Eintrag zum Bearbeiten
Output
keiner
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 430
<ODI-DDOC-snipErrorMsg-2002-05-14-S>
Modulbezeichnung snipErrorMsg()
Dateiname lib/utils.inc
Versionsdatum 17-Apr-2002
Kurzbeschreibung gibt ein Array mit dem Inhalt eines beschriebenen Errors zurück
Erfordert getActiveProject(), i18n()
Verantwortliche Zlabinger
Autor Seywerth
LOC 21
Bytes 951
Cyclomatic Number 1
Seite 431
Detailbeschreibung Gibt ein Array mit dem Inhalt eines beschriebenen Errors zurück.
Dieses enthält folgende Informationen: snip_data['title'] snip_data['project'] snip_data['creator'] snip_data['editor'] snip_data['edit_timestamp'] snip_data['keywords'] snip_data['read_count'] snip_data['content-type'] snip_data['content'] snip_data['creation_timestamp'] snip_data['write_list'] snip_data['read_list'] snip_data['backlinks'] snip_data['links'] snip_data['size'] snip_data['description']
Input String title der Titel des Fehlers String message die Beschreibung des Fehlers
Output Array snip_data ein Array mit der Beschreibung des Errors
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 432
<ODI-DDOC-snipExists-2002-05-14-P>
Modulbezeichnung snipExists()
Dateiname lib/utils.inc
Versionsdatum 11-Mär-2002
Kurzbeschreibung Prüft, ob ein Snip existiert
Erfordert makeIndexName()
Verantwortliche Pavlu
Autor Pavlu
LOC 17
Bytes 657
Cyclomatic Number 1
Seite 433
Detailbeschreibung
Prüft ob ein Snip im aktuellen Projekt existent ist. Wenn der zweite Parameter weggelassen oder auf FALSE gesetzt wird, gelten gelöschte Snips als nicht vorhanden.
Input String Snipname welches Snip geprüft werden soll boolean include_deleted gelöschte Snips sollen als existent gewertet
werden Output
Boolean exists ob Snipname existiert
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 434
<ODI-DDOC-strSplit-2002-05-14-P>
Modulbezeichnung strSplit()
Dateiname lib/utils.inc
Versionsdatum 11-Mär-2002
Kurzbeschreibung wie split(), erlaubt aber die Angabe einer gewünschten
Elementzahl
Erfordert -
Verantwortliche Pavlu
Autor Pavlu
LOC 30
Bytes 480
Cyclomatic Number 7
Seite 435
Detailbeschreibung
Zerteilt den angegebenen String bei jedem Vorkommen des Trennzeichens. Die so entstehenden Elemente werden in ein Array der angegebenen Länge eingetragen und zurückgeliefert. Elemente, die zuviel sind, werden verworfen. Fehlende Elemente werden mit Leerstrings aufgefüllt.
Input String delim Das Trennzeichen String subject String, der zerteilt werden soll Integer nElements diese Anzahl von Elementen wird erzwungen
Output Array Tokens die einzelnen Elemente
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 436
<ODI-DDOC-stx_parse-2002-05-14-P>
Modulbezeichnung
stx_parse()
Dateiname lib/stx.inc
Versionsdatum 25-Mär-2002
Kurzbeschreibung Nimmt die Strukturierung eines intuitiv eingegeben Texts vor
Erfordert styleBlock()
Verantwortliche Pavlu
Autor Pavlu
LOC 152
Bytes 3760
Cyclomatic Number 18
Seite 437
Detailbeschreibung
Nimmt die Ersetzung von STX-Symbolen vor und liefert den neuen Text zurück. Folgende Strukturierungen werden vorgenommen:
-wort-
durchgestrichen
/wort/
kursiv
*wort*
fett
_wort_
unterstrichen
'wort' nonproportional wort -- definition Defnitionsliste wort --- definition schöne Definitionsliste wort --> wort logische Gliederung in if-then Blöcke URLs werden in Links umgewandelt Listen (ordered und unordered) Textgliederung (<div> und <p> mit Stufennummern) --- Horizontale Trennline
Ausserdem kann über STX-Optionen eine Numerierung und/oder ein Index erzeugt werden. STX-Optionen werden in der ersten Zeile des STX-Dokuments angegeben. 'index', 'break' und 'numbered' sind mögliche Werte.
#STX:index,numbered
'Break' veranlasst den STX-Parser Zeilenwechsel auch nach physischen Zeilen einzufügen. Per default werden nur nach logischen Zeilen Zeilenwechsel eingefügt.
Input
String text
Output
String formatierter_text
Probleme
keine
Verbesserungsmöglichkeiten
Benuterdefinierte Erweiterung der Texterkennung, Anpassbarkeit.
Seite 438
<ODI-DDOC-stx_rep -2002-05-14-P>
Modulbezeichnung
stx_rep()
Dateiname lib/stx.inc
Versionsdatum 25-Mär-2002
Kurzbeschreibung Nimmt die Ersetzung der einzeiligen STX-Operatoren vor.
Erfordert _
Verantwortliche Pavlu
Autor Pavlu
LOC 36
Bytes 1686
Cyclomatic Number 2
Seite 439
Detailbeschreibung
Nimmt die Ersetzung der einzeiligen STX-Operatoren vor. Diese Funktion wird von styleBlock() aufgerufen und liefert die neue Zeile zurück.
Folgende Ersetzungen werden vorgenommen:
-wort-
durchgestrichen
/wort/
kursiv
*wort*
fett
_wort_
unterstrichen
'wort' nonproportional wort -- definition Defnitionsliste
Diese Ersetzungssymbole werden nur an Wortgrenzen beachtet. Ein Hochkomma oder anderes Ersetzungszeichen inmitten eines Wortes bleibt das eingegebene Zeichen. Wenn Ersetzungszeichen mit Pipes umschlossen werden, werden sie auf jeden Fall ersetzt.
Beispiel: |*P*|ersonal |*H*|ypertext |*P*|rocessor
Personal Hypertext Processor das wäre ohne Pipes um die Formatierugssymbole nicht möglich
Input
String zeile
Output
String formatierte_zeile
Probleme
keine
Verbesserungsmöglichkeiten
intuitivere Gestaltung der Formatierungserkennung hinzufügen benutzerdefinierter Formatierungen
Seite 440
<ODI-DDOC-styleBlock-2002-05-14-P>
Modulbezeichnung styleBlock()
Dateiname lib/stx.inc
Versionsdatum 27-Apr-2002
Kurzbeschreibung führt STX-Ersetzungen auf Blockebene durch
Erfordert to_s(), linkUrls(), stx_rep()
Verantwortliche Pavlu
Autor Pavlu
LOC 126
Bytes 2994
Cyclomatic Number 24
Seite 441
Detailbeschreibung nimmt alle STX-Formatierungen einer logischen Zeile vor. Mehrere Zeilen mit gleicher Einrückung sind zu einer logischen Zeile zusammengefasst. Eine logische Zeile oder indention-Block besteht aus mindestens einer physischen und keiner leeren Zeile. styleBlock wird für alle nicht-escapten Blocke aufgerufen und führt die Blocklevel Ersetzungen durch. Für die einzeiligen STX-Ersetzungen wird die Funktion stx_rep aufgerufen.
Input Array lines physische Zeilen eines Blocks Integer indention Einrückung
Output String Formatierter String
Probleme
Was der Entwickler als intuitiv empfindet, ist für Andere Syntax die zu erlernen ist.
Verbesserungsmöglichkeiten
Hinzufügen benutzerdefinierter Eingabesymbole, Anpassbarkeit.
Seite 442
<ODI-DDOC-to_blocktext-2002-05-14-M>
Modulbezeichnung to_blocktext()
Dateiname lib/render_plain.inc
Versionsdatum 27.03.2002
Kurzbeschreibung Blocksatzmacher
Erfordert -
Verantwortliche Maczejka
Autor Maczejka
LOC 5
Bytes 103
Cyclomatic Number 1
Seite 443
Detailbeschreibung
Macht den String zum Blocksatz in der übergebenen Länge. Verwendet wordwrap()-
Input
String str Zu bearbeitender String Int width Blockbreite
Output
String str Blocksatzstring
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 444
<ODI-DDOC-to_s-2002-05-14-P>
Modulbezeichnung to_s()
Dateiname lib/stx.inc
Versionsdatum 27-Apr-2002
Kurzbeschreibung konvertiert eine logische zu einer physischen Zeile
Erfordert -
Verantwortliche Pavlu
Autor Pavlu
LOC 5
Bytes 97
Cyclomatic Number 1
Seite 445
Detailbeschreibung
Alle physischen Zeilen eines Blocks werden in einen String zusammengefügt und zurückgeliefert.
Input Array lines Physischen Zeilen des Blocks Integer indention Einrückung des Blocks
Output String Formatierter String
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 446
<ODI-DDOC-trace-2002-05-14-M>
Modulbezeichnung trace()
Dateiname lib/debug.inc
Versionsdatum 05.03.2002
Kurzbeschreibung Debugausgabe von Arrays und Strings
Erfordert htmlize()
Verantwortliche Pavlu
Autor Maczejka
LOC 22
Bytes 376
Cyclomatic Number 3
Seite 447
Detailbeschreibung
Übergeben wird ein Array bzw. String. Bei einem Array wird ein „<pre>“ tag um die Ausgabe der php-Funktion „print_r“ (Anzeige von Arraystrukturen) ausgegeben, nachdem das übergebene Array mit „htmlize“ bearbeitet wurde. Ist der Parameter ein String, so wird dieser mit „htmlentities“ bearbeitet und zwischen einem „<pre>“ tag ausgegeben.
Input
Mixed s Auszugebender String/Array Int really=1 Ausgabe oder nicht
Output
keiner
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 448
<ODI-DDOC-translate-2002-05-14-M>
Modulbezeichnung translate()
Dateiname lib/languages.inc
Versionsdatum 19.02.2002
Kurzbeschreibung Übersetzung eines Wortes
Erfordert loadDictionary(), loadLangs(), updateDictionary(),
writeDictionary()
Verantwortliche Maczejka, Pavlu
Autor Maczejka
LOC 39
Bytes 804
Cyclomatic Number 5
Seite 449
Detailbeschreibung
Ein Wort wird als Parameter Übergeben. Ist dieses Wort noch nicht im Dictionary, so wird es hinzugefügt. Wenn schon, wird das Wort im Dictionary gesucht, und in der in der Session gespeicherten Sprache wieder zurückgeliefert. Wird das Wort in der gewünschten Sprache nicht gefunden, wird es in der Defaultsprache zurückgeliefert.
Input
String wort Zu übersetzendes Wort
Output
String wort Übersetztes Wort
Probleme
Schreiben eines neuen Wortes während der DictionaryGenerator läuft -> Doppelter Schreibzugriff auf languages.res
Verbesserungsmöglichkeiten
Sperre für languages.res einbauen.
Seite 450
<ODI-DDOC-trimAll-2002-05-14-M>
Modulbezeichnung trimAll()
Dateiname lib/render_plain.inc
Versionsdatum 27.03.2002
Kurzbeschreibung Entfernt alle Whitespace-Characters vom Anfang und Ende eines
Strings
Erfordert -
Verantwortliche Pavlu
Autor Pavlu
LOC 14
Bytes 434
Cyclomatic Number 4
Seite 451
Detailbeschreibung
Vom übergebenen String werden alle Whitspace-Characters von beiden Seiten entfernt. Als Whitespace-Characters gelten: CR (10), LF (13), blank (32), htab (9), vtab(11), NUL (0)
Input
String string Zu bearbeitender String
Output
String trimmed gesäuberter String
Probleme
-
Verbesserungsmöglichkeiten
PHPeigene Funktion verwenden (ist aber erst ab PHP4.07 verfügbar)
Seite 452
<ODI-DDOC-true-2002-05-14-M>
Modulbezeichnung true()
Dateiname lib/render_rtf.inc
Versionsdatum 27.03.2002
Kurzbeschreibung Debugfunktion
Erfordert -
Verantwortliche Maczejka
Autor Maczejka
LOC 4
Bytes 35
Cyclomatic Number 1
Seite 453
Detailbeschreibung
Setzt Parameter 1 auf „true“. Ursprünglich wurde noch eine Debugvariable auf „true“ gesetzt. Entspricht jetzt „$var = true;“.
Input
Boolean &var Auf TRUE zu setztende Variable
Output -
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 454
<ODI-DDOC-unlockSnip-2002-05-14-G>
Modulbezeichnung unlockSnip()
Dateiname lib/snip.inc
Versionsdatum 17-Apr-2002
Kurzbeschreibung Gibt ein vorher mit lockSnip() gesperrtes Snip wieder frei
Erfordert myfopen(), getProjectPath(), myfclose(), unserializeFile(),
serializeFile(), getSessionId()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 30
Bytes 612
Cyclomatic Number 4
Seite 455
Detailbeschreibung
Gibt ein zuvor mit lockSnip() gesperrtes Snip wieder frei. Natürlich kann das nur jener Benutzer machen, der das Snip auch gesperrt hat.
Input
String sniptitle
Output
Boolean erfolg
Probleme
Flock() Implementierung schleierhaft bzw. nicht dokumentiert
Verbesserungsmöglichkeiten
keine
Seite 456
<ODI-DDOC-unparse-2002-05-14-M>
Modulbezeichnung unparse()
Dateiname lib/parser.inc
Versionsdatum 17.04.2002
Kurzbeschreibung Eine XML- Struktur wird wieder in einen String umgewandelt
Erfordert -
Verantwortliche Maczejka
Autor Maczejka
LOC 31
Bytes 634
Cyclomatic Number 6
Seite 457
Detailbeschreibung
Übergeben wird eine durch parse erstellte XML- Struktur, zurückgeliefert ein String, der das XML- Dokument repäsentiert, welches durch parse umgewandelt wurde.
Input
Array xml XML- Struktur
Output
String xml XML- Dokument als String
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 458
<ODI-DDOC-unserializeFile-2002-05-14-G>
Modulbezeichnung unserializeFile()
Dateiname lib/utils.inc
Versionsdatum 11-Mär-2002
Kurzbeschreibung Liest ein Array aus einer Datei.
Erfordert myfopen(), myfclose()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 31
Bytes 517
Cyclomatic Number 7
Seite 459
Detailbeschreibung
Liest ein Array aus einer Datei, das zuvor mit serializeFile() hineingeschrieben wurde. Liefert entweder die Daten oder false.
Input
String dateiname Mixed file
Output
Boolean false, wenn Fehler Array Daten
File ist entweder ein geöffnetes Filehandle oder false. In diesem fall öffnet die Funktion die Datei selbst.
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 460
<ODI-DDOC-unsetBacklinks-2002-05-14-K>
Modulbezeichnung unsetBacklinks()
Dateiname lib/backlinks.inc
Versionsdatum 25-Mär-2002
Kurzbeschreibung Löscht nicht mehr gültige Links & Backlinks aus dem
Indexeintrag des jeweiligen Snips
Erfordert getHeader(), getActiveUser(), writeHeader()
Verantwortliche Kolm
Autor Kolm
LOC 20
Bytes 595
Cyclomatic Number 3
Seite 461
Detailbeschreibung
Die Funktion dient dazu Backlinks zu löschen. Dabei werden die vorhandenen links mit den new_links verglichen und dann bei den Backlink-Snips angepasst. Beim Löschen eines Snips zum Beispiel - wird new_links weggelassen und somit als leeres Array angenommen. So werden alle Backlinks für dieses Snip gelöscht.
Input Array Snip Ein referenziertes Snipobjekt Array new_links Die Links nach dem Schreibvorgang, die
von getKeywords generiert wurden. Sprich die neuen Links
Output keiner
Probleme
Bei der Erstellung und Korrektur von Backlinks sind einige Schwierigkeiten aufgetreten was die Konsistenz der Daten angeht. Da bei einem Schreibvorgang nicht alle Links/Backlinks auf den neuesten Stand gebracht werden können (Zeitproblem), musste eine weniger aufwendigere Lösung gefunden werden. Diese deckt aber nicht alle Fälle ab und es könnte unter Umständen zu Inkonsistenzen führen.
Verbesserungsmöglichkeiten
Überdenken des Backlinkalgorithmus.
Seite 462
<ODI-DDOC-updateDictionary-2002-05-14-M>
Modulbezeichnung updateDictionary()
Dateiname core/updateDictionary
Versionsdatum 14.03.2002
Kurzbeschreibung Ändern oder Hinzufügen von Wortdaten in einem Dictionary
Erfordert loadLangs()
Verantwortliche Maczejka
Autor Maczejka
LOC 15
Bytes 376
Cyclomatic Number 4
Seite 463
Detailbeschreibung
Neue Version von changeDictionary. Übergeben werden die Dictionarystruktur(1), das zu ändernde Wort in der Defaultsprache(2) sowie ein Array mit den neuen Wortdaten(3) (zu jeder Sprache ein Eintrag). Der Worteintrag im Dictionary wird durch das neue Array erstetzt, bzw ein neuer Eintrag wird erstellt.
Input
Array &dictionary Wörterbuchstruktur String word Zu bearbeitendes Wort Array translationlist Das Wort in allen Sprachen
Output
keiner
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 464
<ODI-DDOC-wiki_link-2002-05-14-G>
Modulbezeichnung
wiki_link()
Dateiname lib/linker.inc
Versionsdatum 19-Apr-2002
Kurzbeschreibung Ersetzt wikiLink Symbole in einem String
Erfordert wiki_replace()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 5
Bytes 152
Cyclomatic Number 1
Seite 465
Detailbeschreibung
Nimmt Ersetzung von WikiLink-Symbolen in einem String vor. Es werden immer Klammernpaare gesucht und an wiki_replace() weitergereicht. Verschachtelungen sind nicht möglich.
Input
String text
Output
String gelinkter_text
Probleme
keine
Verbesserungsmöglichkeiten
Geschwindigkeit rauskitzeln
Seite 466
<ODI-DDOC-wiki_replace-2002-05-14-G>
Modulbezeichnung wiki_replace()
Dateiname lib/linker.inc
Versionsdatum 19-Apr-2002
Kurzbeschreibung Nimmt die Ersetzung eines WikiLink–Symbols vor.
Erfordert readAccess(), getActiveUser(), strSplit(), isReservedName(),
getHeader(), i18n(), form_href(), snipExists(), isProjectMember()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 368
Bytes 10909
Cyclomatic Number 51
Seite 467
Detailbeschreibung
Nimmt die Ersetzung eines wikiLink-Symbols vor und liefert das Ergebnis zurück. Diese Funktion sollte nur von wiki_link() aufgerufen werden. Mögliche Symbole sind:
{:snipname:wert1=value1:wert2=value2} rekursives reinholen von snipname, app content-type wird ausgeführt
{!appname:wert1=value1:wert2=value2} die applikation wird ausgeführt und nicht noch mal gelinkt
{!!appname:wert1=value1:wert2=valu2} die applikation wird ausgeführt und noch mal gelinkt
{snipname*app:wert1=value1:wert2=value2} link auf ein snip mit application, eins von beiden kann leer sein
{=var/index} ersetzt durch wert, nicht noch mal gelinkt
{=!var/index} ersetzt durch wert, noch mal gelinkt
Input
String modifier String token &Boolean relink
Output
String gelinkter_token
Modifier bezeichnet das WikiLink Symbol nach der Klammer. Der Parameter relink wird an die Funktion wiki_link() zurückgereicht und bestimmt, ob der ersetzte Token noch mal gelinkt werden soll.
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 468
<ODI-DDOC-write-2002-05-14-P>
Modulbezeichnung write()
Dateiname core/write
Versionsdatum 17-Apr-2002
Kurzbeschreibung Schreibt einen Snipeintrag
Erfordert writeSnip(), getActiveUser(), getHeader(), writeAccess()
Verantwortliche Zlabinger
Autor Pavlu
LOC 16
Bytes 343
Cyclomatic Number 3
Seite 469
Detailbeschreibung
Speichert einen Snipeintrag im aktuellen Projekt ab. Liefert true bei Erfolg, false andernfalls. Ein möglicher Grund für das Fehlschlagen der Funktion ist das Fehlen von Schreibrechten beim aktuell angemeldeten Benutzer.
Input String Sniptitel Titel unter dem der Snip gespeichert wird String Content Inhalt des Snips
Output Boolean Erfolg true bei erfolgreicher Durchführung, sonst false
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 470
<ODI-DDOC-writeAccess-2002-05-14-G>
Modulbezeichnung writeAccess()
Dateiname lib/snip.inc
Versionsdatum 17-Apr-2002
Kurzbeschreibung Prüft ob ein Benutzer Schreibzugriff auf ein Snip hat.
Erfordert checkWriteAccess(), getActiveUser(), makeIndexName(),
getHeader(), isReservedName()
Verantwortliche Zlabinger, Pavlu
Autor Zlabinger
LOC 14
Bytes 307
Cyclomatic Number 3
Seite 471
Detailbeschreibung
Liefert True wenn der Benutzer Schreibzugriff auf das Snip hat. Die eigentliche Überprüfungslogik befindet sich in checkWriteAccess().
Input
String snip_name String user_name Wenn leer wird der aktuelle Benutzer angenommen.
Output
Boolean True, wenn schreiberlaubnis vorliegt, sonst false.
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 472
<ODI-DDOC-writeDictionary-2002-05-14-M>
Modulbezeichnung writeDictionary()
Dateiname core/writeDictionary
Versionsdatum 17.04.2002
Kurzbeschreibung Speichert ein Wörterbuch
Erfordert dictToString()
Verantwortliche Maczejka
Autor Maczejka
LOC 10
Bytes 206
Cyclomatic Number 1
Seite 473
Detailbeschreibung
Die übergebene Wörterbuchstruktur wird in „RES_FILE“ gespeichert.
Input
Array dictionary Wörterbuchstruktur
Output
keiner
Probleme
-
Verbesserungsmöglichkeiten
-
Seite 474
<ODI-DDOC-writeHeader-2002-05-14-G>
Modulbezeichnung writeHeader()
Dateiname lib/writeHeader
Versionsdatum 17-Apr-2002
Kurzbeschreibung Schreibt Snip-Informationen in den Projekt-Index
Erfordert getActiveProject(), makeIndexName(), isReservedName()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 45
Bytes 1553
Cyclomatic Number 5
Seite 475
Detailbeschreibung
Schreibt die Informationen eines Snips in den Index.
Input
&Array snip-Objekt
Output
Boolean Erfolg
Das Snip-Objekt empfängt im Erfolgsfall die Header-Daten des Snips. Für eine genaue Erläuterung des Aufbaus des Snip-Objekts siehe die Dokumentation von writeSnip().
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 476
<ODI-DDOC-writeMeeting-2002-05-14-M>
Modulbezeichnung writeMeeting()
Dateiname core/writeMeeting
Versionsdatum 17.04.2002
Kurzbeschreibung Speichert ein Besprechungsprotokoll
Erfordert writeSnip(), showMeeting(), getActiveUser(), editMeetingForm(),
i18n()
Verantwortliche Maczejka
Autor Maczejka
LOC 30
Bytes 914
Cyclomatic Number 5
Seite 477
Detailbeschreibung
Übergeben werden alle Datails eines Meetings (present, master, beginTime, EndTime, protocol). Diese werden überprüft, sofern alles in Ordnung ist wird der Meetingsnip gespeichert und anschließend angezeigt.. Wenn nicht wird das Bearbeitungsformular wieder aufgerufen.
Input
String present Anwesende String master Protokolleur String begin Startzeit String end Endzeit String protocol Besprechungsprotokoll
Global $snip Global $snip_title
Output
keiner
Probleme
-
Verbesserungsmöglichkeiten
Check, ob das Enddatum nach dem Startdatum ist
Seite 478
<ODI-DDOC-writeSnip-2002-05-14-G>
Modulbezeichnung writeSnip()
Dateiname lib/snip.inc
Versionsdatum 27-Mär-2002
Kurzbeschreibung Schreibt ein Snip-Objekt auf die Festplatte.
Erfordert makeIndexName(), getProjectPath(), getActiveProject(),
snipErrorMsg(), getHeader(), lockSnip(), writeAccess(),
setBackLinks(), myfopen(), myfclose(), writeHeader() ,
getActiveUser(), isReservedName(), i18n()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 102
Bytes 3568
Cyclomatic Number 12
Seite 479
Detailbeschreibung
Schreibt nach Überprüfung der Zugriffsrechte ein Snip-Objekt auf die Festplatte. Es kann nur geschrieben werden, wenn das Snip nicht von einem anderen Benutzer gesperrt ist. Das Snip-Objekt hat folgenden Aufbau:
Array ( [creator] => kol [editor] => kol [creation_timestamp] => 1019420833 [edit_timestamp] => 1019002532 [keywords] => Array ( [0] => start [1] => toc.toc [2] => locks [3] => members ) [read_count] => 105 [content-type] => stx [read_list] => Array ( [users] => Array ( [allow] => Array ( ) [deny] => Array ( ) ) [projects] => Array ( [0] => odie ) ) [write_list] => Array ( [users] => Array ( [allow] => Array ( ) [deny] => Array ( ) ) [projects] => Array ( [0] => odie ) ) [links] => Array ( [start-1] => 1 [start-2] => 1 [start-3] => 1 [start-4] => 1 [start-5] => 1 [start-6] => 1 ) [backlinks] => Array ( [hans] => 1 )
[size] => 222 [description] => [title] => start [content] => der inhalt )
Seite 480
Diese Funktion setzt außerdem noch die Links und Backlinks.
Input
&Array Snip-Objekt String Benutzername
Output
Boolean Erfolg
Im Falle eines Fehlers liefert die Funktion eine Fehlermeldung im Snip-Objekt zurück (Inhalt wird zerstört!)
Probleme
flock() nicht dokumentiert bzw. fehlerhaft implementiert
Verbesserungsmöglichkeiten
keine
Seite 481
<ODI-DDOC-write_index-2002-05-14-G>
Modulbezeichnung write_index()
Dateiname lib/snip.inc
Versionsdatum 27-Mär-2002
Kurzbeschreibung Schreibt die Indexdatei eines Projekts.
Erfordert serializeFile()
Verantwortliche Zlabinger
Autor Zlabinger
LOC 4
Bytes 77
Cyclomatic Number 1
Seite 482
Detailbeschreibung
Schreibt den Index eines Projekts aus dem Speicher in die Indexdatei. Liefert true oder false zurück.
Input
String name &Array daten
Output
Boolean Erfolg
Probleme
keine
Verbesserungsmöglichkeiten
keine
Seite 483
8 Anhang
8.1 ODIE Wiki-Linker Syntax (gez)
WikiLink Symbole werden zwischen zwei geschwungenen Klammern eingeschlossen. Ein '\' vor der öffnenen Klammer verhindert die Übersetzung des Symbols.
[ausdruck] Ausdruck ist optional ausdruck… Ausdruck kann beliebig oft wiederholt werden
{snipname[*applikation][:parameter=wert…]}["beschriftung"] {[snipname]*applikation[:parameter=wert…]}["beschriftung"]
Diese beiden Ausdrücke werden zu Links übersetzt. Die erste Variante linkt auf ein Snip, kann eine Applikation angegeben werden, mit der dieses Snip ausgeführt werden soll. Die Zweite Variante linkt nur auf eine Appklikation. Ist das Snip nicht vorhanden wird ein Link zum Erstellen des Snips angezeigt.
{:snipname[:parameter=wert…]}
Dieser Ausdruck führt das angegebene Snip mit der Standard Applikation des Content-Types aus und fügt das Ergebnis ein. Der Applikation können Parameter übergeben werden. Dieser Operator verlangt natürlich die entsprechenden Zugriffsrechte auf das Snip.
{![!]applikation[:sniptitle][:parameter=wert..l.]}
So können Applikationen ausgeführt werden. Wenn in Zeichenkette nach dem ersten Doppelpunkt kein '=' vorkommt wird diese als Sniptitel angenommen, für den die Applikation ausgeführt wird. Ein zweites Rufzeichen veranlasst den Linker, die Ausgabe der Applikation noch einmal zu linken.
{=[!]variable}
So können Informationen, die sich in dem Hash $odie_env befinden ausgeben werden. Eine Liste der einsetzbaren Werte befindet sich in der Entwicklerdokumentation. Ein Rufzeichen zu Beginn veranlaßt den Linker, das Ergebnis der Ersetzung noch einmal zu linken.
{@snipname}
Dieses Symbol liefert die URL des Snips zurück.
{?text}
Dieses Symbol liefert den lokalisierten Text zurück.
Seite 484
8.2 Structured Text Crash-Kurs (gez)
Der STX-Parser erkennt intuitiv vorgenommen Formatierungen und übersetzt dieses in HTML-Tags. Es werden sowohl Textgliederungen vorgenommen als auch z.B. fetter Text erkannt.
8.2.1 Textgliederung Überschrift Durch die Einrückung wird dieser Text als Unterkapitel erkannt Auch diese Zeile wird als Unterkapitel erkannt Dieser Text ist durch die Position wieder eine Ebene höher gestellt Dadurch das dieser Text auf der selben Ebene ist wird die vorige Zeile keine Überschrift
8.2.2 Listen Listen werden folgender massen erzeugt: Unnumeriert: Numeriert:
- Text1 1) text1 - Text2 1) text2 - Text3 1) text3
Definitionslisten können folgendermassen erzeugt werden
Ausdruck –- Erklärung Ausdruck –- Erklärung
8.2.3 Textformatierung *text* Fettschrift /text/ Kursivschrift _text_ Unterstrichener Text
-text- Durchgestrichener Text
'text' Nonproportionaler Text
8.2.4 Preformatted Text
PREs werden durch eine Überschrift gefolgt von zwei Doppelpunkten gekennzeichnet. In dem folgenden Bereich wird keine STX-Formatierung vorgenommen Ein Beispiel:
Ein pre wird folgendermassen eingeleitet:: Dieser text Wird nicht *formatiert* Hier beginnt wieder normaler Text
8.2.5 URL-Erkennung Der STX Parsers erkennt die Verwendung von URLs in einem Text und wandelt diese automatisch in entsprechende HTML-Tags um. Beispiel: www.odie.org
8.2.6 Trennlinie Mindestens drei aufeinanderfolgende Bindestriche alleine in einer Zeile erzeugen eine horizontal rule.
Seite 485
9 Glossar
Bps Bit pro Sekunde Einheit zur Messung der Bandbreite einer Netzwerkverbindung
CGI Common Gateway Interface Serverseitige Schnittstelle zwischen Webserver und Standardein-/Ausgabe
CMS Content Management System sehr weit gefasster Begriff der sich mit dem Verwalten, Verknüpfen und Verfügbarmachen von Inhalten aller Art beschäftigt
CSS Cascading Stylesheet Bereichert Markupstrukturen mit Formatierungseigenschaften
DOC DOCument Dokumentenformat von Microsoft
GIF Graphics Image File Format Grafikformat zu Verlustfreien Kompression von Bilddaten. Verwendet den von Unisys lizenzrechtlich geschützten Lempel-Zif-Welsh Algorithmus (LZW)
Groove Projektunterstützende Software zur Verwaltung von Aufgaben, Terminen, etc. HTBLVA Höhere Technische Lehr- und Versuchsanstalt
unsere Ausbildungsanstalt HTML HyperText Markup Language
W3C Standard für Internet Markup JPEG Joint Photographic Experts Group siehe
JPG JPG Joint Photographic Experts Group
Abkürzung der Urhebergruppe dieses Grafikformates, das wegen der Natur seines verlustbehafteten Kompressionsalgorithmus besonders für Photographien geeignet ist
Kbps Kilobit pro Sekunde Einheit zur Messung der Bandbreite einer Netzwerkverbindung
ODIE Online Data and Information Exchange unser Projektname
PDF Portable Data Format Beliebtes, plattformunabhängiges Dokumentenformat das mit dem Acrobat Reader von Adobe gelesen und ohne Formatierungsinformationsverlust gedruckt werden kann (im Gegensatz zu Markup)
PIC Peripheral Interface Controller, Microprozessor PNG Portable Network Graphics
Grafikformat für verlustfreie Kompression von Bildinformationen RDF Resource Description Framework
Menge von Regeln zur Beschreibung des Inhaltes eines Dokuments für Suchmaschinen beispielsweise
RSS RDF Site Summary, Rich Site Summary auf RDF basierender W3C Standard zur Einbindung von Inhalten anderer Seiten (Syndication & Aggregation)
Snip kleinste Dateneinheit im ODIE ein Textbaustein zum Beispiel
SQL Structured Query Language Sprache der 4. Generation zur Abfrage von Datenbanken
STX Structured Text Intuitiv eingegebener Text aus dessen Struktur die Textklassen erkannt werden können
TCP/IP Transmission Control Protocol / Internet Protocol Netzwerkprotokolle auf den Schichten 3, Network (IP) und 4, Transport(TCP) des OSI Referenzmodells
Seite 486
WYSIWYG
What You See Is What You Get "was man sieht kriegt man auch"; grafischer Editor im Stil von Word oder Frontpage, etc.
XHTML eXtensible HTML W3C Standard zur Reformulierung von HTML in XML; strengere, klar definierte Syntax, leichter maschinenlesbar
XML eXtensible Markup Language W3C Standard für Selbstbeschreibende Speicherung von Daten; (keine Trennung von Daten und Metadaten), SGML Weiterentwicklung
XML-RPC eXtensible Markup Language - Remote Procedure Calls einfaches, auf den Internetstandards http und xml basierendes System zum Aufruf von Methoden über unterschiedliche Plattformen und Netzwerke hinweg
XSL-FO eXtensible Stylesheet Language Format Objects Ergebnis einer Anwendung eines XSL Stylesheets auf ein XML Dokument; enthält die genaue Information, wie ein Dokument gerendert werden muss
XSLT eXtensible Stylesheet Language Transformation XML Dialekt zur Beschreibung des Aussehens eines XML Dokuments
This document was created with Win2PDF available at http://www.daneprairie.com.The unregistered version of Win2PDF is for evaluation or non-commercial use only.
Recommended