OSA Dokumentation Institut für Wissensmedien Koblenz-Landau (IWM) November 30, 2015 Contents 1 Willkommen beim OSAuria 3 2 Server Administrator 2.1 Installation von OSAuria und Einrichten der Umgebung 2.1.1 Abhängigkeiten: . . . . . . . . . . . . . . . . . . 2.1.2 Erzeugen der Datenbank und Deployment . . . . 2.1.3 Updaten eines OSAuria . . . . . . . . . . . . . . 2.1.4 Finales Deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 4 4 5 6 3 Content Admin 3.1 Gestalten eines OSAs . . . . . . 3.2 Adminbereich . . . . . . . . . . . 3.2.1 Seiten . . . . . . . . . . . 3.2.2 Nutzer . . . . . . . . . . . 3.2.3 Medien . . . . . . . . . . 3.2.4 Themes . . . . . . . . . . 3.3 Seiten-Editor . . . . . . . . . . . 3.3.1 Workflow . . . . . . . . . 3.3.2 Sidebar . . . . . . . . . . 3.4 Content Typen . . . . . . . . . . 3.5 Mediendateien . . . . . . . . . . 3.5.1 Upload . . . . . . . . . . 3.5.2 Konfiguration des OSAs . 3.5.3 Dateien einbetten . . . . . 3.6 Page . . . . . . . . . . . . . . . . 3.6.1 pIP . . . . . . . . . . . . 3.6.2 Titel . . . . . . . . . . . . 3.7 HTML Elemente . . . . . . . . . 3.8 vorgefertigte Elemente . . . . . . 3.8.1 Header . . . . . . . . . . . 3.8.2 Paragraph . . . . . . . . . 3.8.3 List . . . . . . . . . . . . 3.8.4 Table . . . . . . . . . . . 3.9 Question . . . . . . . . . . . . . . 3.9.1 Antwortfelder hinzufügen 3.9.2 Arten von Antwortfeldern 3.10 Score . . . . . . . . . . . . . . . . 3.10.1 Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 7 8 8 8 9 9 9 9 10 10 10 10 10 11 11 11 11 12 12 12 12 12 12 12 12 12 12 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.11 Tunnel . . . . . . . . . . . . . . . . . . . . 3.11.1 Tunnel definieren . . . . . . . . . . 3.12 PIWIK . . . . . . . . . . . . . . . . . . . 3.12.1 Einrichtung . . . . . . . . . . . . . 3.12.2 Opt-Out . . . . . . . . . . . . . . . 3.13 CAPTCHA . . . . . . . . . . . . . . . . . 3.13.1 CAPTCHA hinzufügen . . . . . . 3.13.2 Infos zum verwendeten CAPTCHA 3.14 Bibliotheken . . . . . . . . . . . . . . . . . 3.15 MathJax . . . . . . . . . . . . . . . . . . . 3.15.1 Verwendung (im OSAuria) . . . . 3.16 highlight.js . . . . . . . . . . . . . . . . . 3.16.1 Verwendung . . . . . . . . . . . . . 4 User) 4.1 OSA . . . . . . . . . . . . . 4.2 Info-Seiten . . . . . . . . . . 4.3 Selbsttests . . . . . . . . . . 4.3.1 Login . . . . . . . . 4.3.2 Aufgaben . . . . . . 4.3.3 Benutzungshinweise 4.3.4 Auswertung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 14 14 14 14 14 14 15 15 15 15 16 16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 17 17 18 18 18 18 19 5 Developer 5.1 Datenbanktabellen . . . . . . . . . . . 5.1.1 Globale Attribute . . . . . . . 5.1.2 Seiten und Inhaltsmodell . . . 5.1.3 Programmierung . . . . . . . . 5.1.4 Benutzermodell . . . . . . . . . 5.2 Themes . . . . . . . . . . . . . . . . . 5.2.1 Theme Color . . . . . . . . . . 5.2.2 Theme Editor . . . . . . . . . . 5.2.3 Datei- und Verzeichnisstruktur 5.3 JSON Objekte . . . . . . . . . . . . . 5.4 Fragen . . . . . . . . . . . . . . . . . . 5.4.1 Datenstruktur . . . . . . . . . 5.4.2 Freitextfragen . . . . . . . . . . 5.5 Auswertung . . . . . . . . . . . . . . . 5.5.1 Datenstruktur . . . . . . . . . 5.6 Server-Kommunikation . . . . . . . . . 5.7 Themes . . . . . . . . . . . . . . . . . 5.7.1 Theme Color . . . . . . . . . . 5.7.2 Theme Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 20 20 21 21 22 22 23 23 23 24 24 24 25 25 25 28 28 28 28 . . . . . . . . . . . . . . 2 . . . . . . . . . . . . . . . . . . . . . Chapter 1 Willkommen beim OSAuria OSAuria ist eine Software, mit der die OSAs des Instituts für Wissensmedien Koblenz-Landau (IWM) erstellt, verwaltet und zur Verfügung gestellt werden. Die Informationen dieser Dokumentation sind vordergründig nach Zuständigkeit gegliedert, um allen Beteiligten möglichst effizienten Zugang zu den nötigen Informationen zu verschaffen. 3 Chapter 2 Server Administrator 2.1 2.1.1 Installation von OSAuria und Einrichten der Umgebung Abhängigkeiten: XAMPP / MAMP / LAMP bzw. apache + mysql + php + php5-json Wenn OSAuria in XAMPP unter Windows 7 sehr langsam läuft kann es sein das die Hosts unter C:\WINDOWS\system32\drivers\etc\hosts richtig eingestellt werden müssen. 127.0.0.1 muss mit localhost verbunden sein wärend ::1 auskommentiert ist. #::1 127.0.0.1 localhost localhost Alle Abhängigkeiten müssen auf dem System installiert sein und für den OSAuria zur Verfügung stehen. Es reicht aus wenn der aktuelle Inhalt des OSAur-Medien-Ordners beim ersten Deployment kopiert wird. Daher es muss kein cron-Job erzeugt werden der den db und media Ordner synchronisiert hält. 2.1.2 Erzeugen der Datenbank und Deployment Hinweis: Bei Nutzung von XAMP/MAMP/LAMP unterscheidet sich das Aufsetzen der Datenbank (Punkt 1 - 2, 6) insofern, dass mysql eventuell nicht auf die Datenbank, die von XAMP benutzt wird, zugreift. 1. Die Datenbank erstellen, auf die zugegriffen werden soll. CREATE DATABASE OSA; 2. Für manuelles Erstellen eines Nutzers für die Datenbank. GRANT ALL PRIVILEGES ON *.* TO ’osaUser’@’localhost’ IDENTIFIED BY ’insert_password_here’ WITH GRANT OPTION; 4 3. OSAuria Repositorium klonen. git clone [email protected]:osa-kold/osauria.git 4. Auf Entwicklungsast wechseln, da auf dem Meister nicht gearbeitet wird. git checkout development 5. Untermodule initialisieren und aktualisieren. git submodule init git submodule update 6. Datenbankstruktur aus dem Speicherauszug in die Datenbank speisen. mysql -u username -p -h localhost OSA < OSA [latest date].sql 7. Den media-Ordner aus dem OSAur-Dropbox-Ordner in das Wurzelverzeichnis des Projekts kopieren. Falls möglch Softlink erstellen. 8. conf.php erzeugen nach folgendem Muster <?php $db_user = "osaUser"; $db_password = "insert_password_here"; $db_name = "OSA"; $captcha = "visualCaptcha"; ?> 9. Wenn man ein OSA erstellen möchte, das auch offline funktioniert (ohne Nutzeranmeldung), muss man in der conf.php eine Zeile hinzufügen, um dem System dies mitzuteilen: <?php ... $offline = true; ?> 2.1.3 Updaten eines OSAuria 1. Einloggen auf dem Server über ssh per Konsole mittels ssh [email protected] 2. Wechseln in das Verzeichnis des OSAuria cd /var/www/html/uwi 3. Ausführen des update-Skripts ./update.sh • Updater wird fragen, ob master oder development deployt werden soll. – m für master – d für development 5 2.1.4 Finales Deployment Damit ein OSA auf seinen Production-Server übertragen und eingesetzt werden kann, muss ein entsprechendes Deployment durchgeführt werden. Folgende Schritte müssen durchgeführt werden: • Datenbank bereinigen (folgende Tabellen leeren) – Users – Answers – Positions • deploy.sh ausführen • piwik ID setzenb (config.php) 6 Chapter 3 Content Admin 3.1 Gestalten eines OSAs Wie gelange ich in den Bearbeitungsmodus? • Ein OSAuria im Browser ansteuern, z.B. http://osauria.ko-ld.de/ uwi/ • Der URL den Suffix “admin.php” hinzufügen, z.B. http://osauria.ko-ld. de/uwi/admin.php • Den Knopf “login admin” betätigen • Nun ist man eingeloggt und hat auf jeder Seite erscheint oben ein HamburgerButton, das ein Editier Menü aufruft. Im Menü den Editor auf On schalten. Man kann die Elemente aus dem Menü auf die Seite in den aktiven Bereich schieben. Jede Seite, die man ab jetzt ansteuert ist bearbeitbar. Um ein Inhaltselement zu bearbeiten: doppelklicken oder den edit-Button unten-rechts am Element betätigen. Zum Speichern das save-Button unten-rechts am Element betätigen. Man kann alle Elemente per Drag&Drop verschieben. 3.2 Adminbereich Im Adminbereich können die diversen Inhalte der Datenbank verwaltet werden. Sie sind aufgeteilt in • • • • Seiten Nutzer Medien Themes 7 3.2.1 Seiten Die Seiten des OSAs, die den Nutzern dargestellt werden können, werden tabellarisch dargestellt, sortiert nach ihrer PIP. PIP PIPs bestehen aus vier Zahlen, getrennt mit einem Punkt. Die erste Zahl ordnet die Seite in die Hauptkategorie ein, wobei 0 versteckte Seite bedeutet. Die zweite Zahl ist die Unterkategorie, wobei die 0 die Haupt-Überschrift festlegt. Die dritte Zahl ist wiederum eine untergeordnet oder bei 0 die Überschrift der Unterkategorie. Die vierte Zahl ist eine konkrete Seite innerhalb dieser Struktur. Eine einfache Denkweise wäre, sich das als Verzeichnisstruktur wie im Dateisystem des Computers vorzustellen, nur mit Zahlen als Namen der Verzeichnisse. Titel Hier wird der Titel der jeweiligen Seite angezeigt. Prev und Next in dieser Spalte kann festgelegt werden, welche Seiten mit den Pfeil-Buttons von den Usern erreicht werden kann. < und > stehen für die Seite davor oder danach entsprechend der Sortierung, wie sie im Editor vorliegt. Login Legt fest, ob es vom User gefordert wird, sich einzuloggen, um die jeweilige Seite zu sehen. 0 für nicht nötig, 1 für Einloggen fordern. Editor-Modes Der Editor hat drei Modi, mit denen die Seiten verwaltet werden können: • Auswählen • Bearbeiten • Löschen 3.2.2 Nutzer Hier ist eine Übersicht der Nutzer zu sehen, die sich bisher bei dem OSA angemeldet haben 3.2.3 Medien Dieser Punkt zeigt die Medien-Dateien, die auf den Server (per FTP) hochgeladen wurden. 8 3.2.4 Themes Eine Verwaltung der scss-Dateien und ein Editor ermöglichen, das Aussehen des OSAs anzupassen. 3.3 Seiten-Editor Nach dem einloggen per Admin stehen Funktionen zur Verfügung mit der die Seiten angepasst werden können. 3.3.1 Workflow Seitenelemente werden mithilfe der Sidebar eingefügt und werden danach visuell editiert, sodass man direkt sieht, wie es für den User dargestellt wird (WYSIWYG). 3.3.2 Sidebar • Editor: Mit dem Slider wird der Editor an- und ausgeschaltet. Das Ausschalten des Editors ist nützlich, um die Seite wie ein echter User betrachten und testen zu können. • Global Settings – theme color: Grundfarbe, aus der sich automatisch das Farbschema für die Seite herleitet. – header font color: Schriftfarbe für die Überschriften – OSA Name: Titel des OSAs – OSA Logo: Dateipfad auf dem Server für das Logo oben Links – Media Paths: Bitte nicht anfassen! Wird automatisch an anderer Stelle erzeugt. • Page Settings: Einstellungen für die momentan angezeigt Seite – page title: Ttel der Seite – page requires login: Häckchen rein bedeutet, dass die Seite nur für eingeloggte Nutzer verfügbar ist. Wer nicht eingeloggt ist, wird auf eine Login-Seite umgeleitet. – hide Navigation arrow: jeweiligen Navigationspfeil ausblenden – nav title: Beschriftung des jeweiligen Navigationspfeils • Drag or Click Elemente: Zur Zeit funktioniert nur das einfügen per Drag&Drop. folgende Elemente können direkt eingefügt werden: – – – – – – – – – Header Paragraph Media List Table HTML-Code Login Registrierung Kontakformular 9 – – – – – – Captcha Sitemap Piwik Tunnel Question Score 3.4 Content Typen 3.5 Mediendateien 3.5.1 Upload Mediendateien wie z.B. Bilder müssen zunächst auf den Server hochgeladen werden. Dies ist unter anderem möglich per sFTP. 1. Mit einem passenden Client (z.B. Filezilla) zu Port 22 auf osauria.ko-ld.de verbinden. 2. Uni-Account-Daten für Login eingeben 3. Zu Medien-Ordner des jeweiligen OSAs navigieren (innerhalb von /var/www/html) 4. Falls in dem OSA noch kein Unterordner für media existiert, einen neuen erstellen 5. Dateien dort hochladen 3.5.2 Konfiguration des OSAs Um die hochgeladenen Dateien verfügbar zu machen, muss der (Unter-)Ordner in den sie hochgeladen wurden im Admin-Panel angegeben werden. Falls es mehrere Ordner gibt, können diese in SubSets unterteilt werden (Zur Zeit noch nicht implementiert). Um einen Order hinzuzufügen klickt man auf “add media path” und gibt den relativen Pfad innerhalb des OSA-Verzeichnisses an. In der Spalte “Datentypen” gibt man an, nach welchen Dateitypen in dem Verzeichnis gesucht werden soll. Welche Dateiendungen das genau sind, wird in dem Bereich darüber festgelegt. Unter “Datentyp” vergibt man einen Namen (z.B. “Videos”) und unter “Dateiendung” gibt man die Dateiendungen an, die dem Typ zugeordnet werden sollen (z.B. “mp4”, “webm” und “ogv”). Die Spalte “r” steht für “rekursiv”. Ist das Häkchen gesetzt, werden auch Unterordner miteinbezogen. (Dies ist bisher funktionlos) 3.5.3 Dateien einbetten Die hochgeladenen Medien-Dateien werden über den Sidebar-Editor eingefügt. Zuerst setzt man ein Media-Objekt an die entsprechende Stelle. In der Mitte ist ein weißes Feld, das durch Doppelklick zu den Bildeigenschaften führt. Auf der linken Seite kann man das darzustellende Bild auswählen. Auf der rechten Seite lässt sich die gewünschte Höhe und Breite festlegen. Die Änderungen werden durch einen Klick auf “Übernehmen” gespeichert. 10 Es ist möglich, mehrere Bilder in einer Reihe darzustellen. Durch einen Klick auf das Plus oben links im Media-Feld (siehe Abbildung) und danach einem weiteren Klick auf auf “Image” lassen sich weitere Bilder hinzufügen. Im jeweiligen Platzhalter bzw. im eingefügten Bild ist oben rechts ein X zum Löschen des Bildfeldes. Videos werden gleichermaßen eingefügt, indem statt auf “Image” auf “Video” geklickt wird. 3.6 Page Die einzelnen Seiten eines OSAs lassen sich über das Sidebar-Element Page anlegen und einordnen. Jede Seite hat eine pIP und einen Titel. 3.6.1 pIP Eine pIP ist ein Adresse, die an IP-Adressen bei Rechnernetzen angelehnt ist. Vier Zahlen, durch Punkte getrennt, ordnen die Seiten in eine Hierarchie ein. Die erste Zahl ordnet die Seite in den Index der Hauptkategorie ein. Die Ausnahme sind versteckte Seiten, die den Index 0 haben. Die zweite Zahl steht für die Unterkategorie. Im dritten und vierten Abschnitt der pIP wird Referenz auf das Modell des Tunnels genommen. Die dritte Ziffer bezeichnet im wievielten Tunnel sich die Seite befindet und die vierte welchen Index die Seite innerhalb des Tunnels hat. 3.6.2 Titel Der Titel wird in der Titelleiste oder im Tab-Titel des Browsers dargestellt. Es ist dementsprechend empfehlenswert, einen angemessenen Titel für jede Seite zu setzen. 3.7 HTML Elemente Alternativ zu den vorgefertigen Elementen kann auch HTML-Code eingegeben werden. Aus Gründen der Übersichtlichkeit sollte ein Elemente immer nur einen kleinen Abschnitt beinhalten. Bug: Zur Zeit ist es notwendig, den HTML-Code in einer div Umgebung zu haben, damit der Editor sauber funktionniert. Also: #!html <div> ... </div> 11 3.8 vorgefertigte Elemente Verschiedene (HTML) Elemente können direkt über den Editor eingefügt werden. Nach dem Einfügen können die Inhalte direkt durch Klick auf “edit” unten rechts am Element bearbeitet werden. 3.8.1 Header Eine Überschrift (h1), die idealerweise auf jeder Seite genau einmal gesetzt wird. 3.8.2 Paragraph Ein Textabschnitt (p), bei dem im Editor die üblicherweise benötigten Formatierungsoptionen zur Verfügung stehen. 3.8.3 List Eine unsortierte Liste (ul). Ein neues Listenelement wird bei jedem Newline erzeugt. 3.8.4 Table Eine Tabelle (table). 3.9 Question Ein OSA kann Fragen mit unterschiedlichen Antwortfeldern beinhalten. 3.9.1 Antwortfelder hinzufügen Antwortfelder werden über den Sidebar-Editor hinzufügt (Element “Question”). Nach dem Hinzufügen erscheint ein Dialogfenster, in dem das gewünschte Format ausgewählt wird. 3.9.2 3.10 Arten von Antwortfeldern Score Scores sind Inhaltsobjekte die erlauben die Antworten von Nutzer anzuzeigen. 3.10.1 Aufbau Auswertung verfügen hierbei über 4 Hauptattribute layout, unit, not evaluable, items. layout unterstützt momentan die Werte 0, 1, 2 und 3. Die Eingabe 0 erzeugt hierbei eine Auswertung in Form einer Likert-Skala. Bei 1 handelt es sich um eine Skala mit Wertungen von eins bis fünf. 3 erzeugt eine SpinnennetzDiagramm und 2 ein horizontales Balkendiagramm, welches als einziges das 12 Überspringen von Fragen erlaubt. unit kann die Werte "normalized", "absolute" und "percent" annehmen. Diese haben nur Einfluss auf das average Attribut innerhalb der items. Bei "normalized" wird die erreichte Punktezahl durch die maximal mögliche dividiert. Somit kann ein Nutzer nur einen Wert zwischen 0 und 1 erreichen. Bei "percent" wird das gleiche Verfahren angewandt. Danach wird das Ergebnis jedoch noch mit 100 multipliziert sodass sich eine Skala von 0 bis 100 ergibt. In "absolute" werden nur die eingetragenen Punkte addiert. Es findet keine Normalisierung statt. Sollte in den Aufgaben eines Testbereich 5, 2 und 1 Punkte erreicht werden können, so ist die maximale Punktezahl 8. not evaluable kann ganz normales HTML5 eingetragen werden. Zu beachten ist hierbei das innerhalb eines JSON Anführungszeichen entsprechend mit einem Backslash \" verlassen werden müssen. Bei items handelt es um sich die eigentliche Essenz einer Auswertung. Es enthält Objekte mit den Attributen average, description und questionsPositions. Jeder Eintrag in items erzeugt einen Abschnitt in der Auswertung der mit dem in HTML5 angegebenen Text aus description beschrieben wird. Ein gültiges Score-Objekt könnte wie folgt aussehen: { "layout":1, "unit":"normalized", "not evaluable": "<div>keine Auswertung möglich.</div>", "items":[ { "average":0.4, "description":"<span>HTML 1</span>", "questionPositions":[[1010,1],[1062,2],[1064,0]] },{ "average":0.8, "description":"<span title=\"HTML\">2</span>", "questionPositions":[[1010,0],[1062,1],[1063,3]] } ] } 3.11 Tunnel Tunnel bezeichnen Zusammengehörige Reihen von Seiten. Hauptsächlich sind sie dafür gedacht, zusammengehörige Tests zu gruppieren. Dadurch können auch Tests realisiert werden, die aufeinander aufbauen und dementsprechend nacheinander durchgeführt werden sollen. 13 3.11.1 Tunnel definieren Das Tunnel-Element wird über die Editor-Sidebar eingefügt. Nach dem Einfügen öffnet sich automatisch ein Dialogfenster, in dem die Seiten innerhalb der Unterkategorie festgelegt werden können, die diesem Tunnel zugeordnet werden sollen. 3.12 PIWIK PIWIK ist ein Analytics-Tool, das im Gegensatz zu Google Analytics lokal gehostet wird und dadurch weniger kompliziert ist hinsichtlich Datenschutzbestimmungen. 3.12.1 Einrichtung Damit PIWIK funktioniert, müssen in der conf.php zwei Variablen gesetzt werden: #!php $piwikId = 42; $piwikDomain = "piwik.beispieldomain.de"; piwikId ist die ID, unter der das OSA im PIWIK-Interface wiedergefunden werden kann. piwikDomain ist die URL, unter der der PIWIK-Server erreichbar ist. 3.12.2 Opt-Out Um den Nutzern ein Opt-Out zur Verfügung zu stellen, kann das PIWIKElement an eine passende Stelle gesetzt werden. 3.13 CAPTCHA CAPTCHA dienen dazu, Datenmüll durch Spambots und ähnliche Automaten von den OSAs fernzuhalten. Besonders sinnvoll ist es deswegen, bei der Anmeldeseite für Selbsttests eine CAPTCHA-Abfrage einzubauen, mit dem Ziel, dass Bots sich gar nicht erst einloggen können. Solange das OSA nicht im offline-modus läuft, ist das CAPTCHA-Element erforderlich im Login- sowie im Kontaktelement. 3.13.1 1. 2. 3. 4. CAPTCHA hinzufügen Editor aktivieren Zu der Seite navigieren, die abgesichert werden soll CAPTCHA-Element an einen freien Platz auf der Seite ziehen. Aktualisieren (F5) 14 3.13.2 Infos zum verwendeten CAPTCHA Das CAPTCHA-Element gibt dem Nutzer eine simple Aufgabe, die er lösen muss, bevor er forfahren kann. Wir verwenden VisualCaptcha. 3.14 Bibliotheken 3.15 MathJax MathJax ist eine Javascript Bibliothek, die durch CSS, webfonts und svgs in der Lage ist, Formeln auf Webseiten darzustellen. Hierbei sützt sich MathJax auf die Formate MathML, AsciiMath und Latex. 3.15.1 Verwendung (im OSAuria) Formeln sind im OSAuria überall dort anwendbar, wo normaler Text oder HTML5 erlaubt ist. AsciiMath AsciiMath verwendet eine kompakte Schreibweise für Formeln, die sich hauptsächlich auf Klammerung stützt. Die Syntax wird in der dazugehörigen Dokumentation beschrieben. Damit MathJax die AsciiMath Formeln erkennt muss sie mit ‘back-ticks’ umgeben werden. ‘x = (-b +- sqrt(b^2-4ac))/(2a)‘ LaTeX Die Syntax von LaTeX Mathematics kann im dazugehörogen WikiBook eingesehen werden. Damit MathJax Latex Formeln erkennt, muss es wie bei zentrierten Formeln in einem normalen Latex Dokument mit doppelten Dollarzeichen $$ oder \[ umgeben werden. Die Dollarzeichen können nicht mit den verlassenen geöffneten eckigen Klammern kombiniert werden. Inline Formeln müssen stattdessen mit \( umgeben werden. $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}$$ \[x = {-b \pm \sqrt{b^2-4ac} \over 2a}\[ Hier kommt gleich eine inline-Formeln: \(x = {-b \pm \sqrt{b^2-4ac} \over 2a}\(. MathML Die Syntax von MathML ist bei w3.org dokumentiert. Im Gegensatz zu den anderen Formel Formaten bedarf MathML keiner weiteren Auszeichnung. 15 <math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> <mi>x</mi> <mo>=</mo> <mrow> <mfrac> <mrow> <mo>&#x2212;</mo> <mi>b</mi> <mo>&#x00B1;</mo> <msqrt> <msup><mi>b</mi><mn>2</mn></msup> <mo>&#x2212;</mo> <mn>4</mn><mi>a</mi><mi>c</mi> </msqrt> </mrow> <mrow> <mn>2</mn><mi>a</mi> </mrow> </mfrac> </mrow> </math> 3.16 highlight.js highlight.js ermöglicht Syntax highlighting für viele verschiedene Programmiersprachen. 3.16.1 Verwendung Der zu stylende Code wird folgerndermaßen eingebaut: #!html <pre><code class="html">...</code></pre> class legt fest, für welche Sprach das highlighting angepasst werden soll. Die Klassennamen befinden sich in der Dokumentation. 16 Chapter 4 User) 4.1 OSA Ein OSA (Online-Self-Assessment) ist ein Selbsttest, der vollständig im Web durchgeführt wird. Ziele sind: 1. Umfassende Informationen vermitteln 2. Einschätzung des eigenen Profils Ersteres wird über Seiten erreicht, die einen Überblick über die relevanten Themen vermitteln. Üblicherweise werden unter anderem die Studienbedingungen, das Universitätsumfeld und die zu erwartende Berufsbedingungen nach erfolgreichem Abschluss angeschnitten. Informationen zum (simpel gehaltenen) Bedienkonzept sind im entsprechenden Kapitel dieser Dokumentation enthalten. Die Einschätzung des eigenen Profils wird über Selbsttests realisiert. Es werden zum einen persönliche Eigenschaften evaluiert mithilfe psychologischer Tests, zum anderen vermitteln fachspezifische Aufgaben einen Eindruck der üblichen Anforderungen, die einen im jeweiligen Studiengang erwarten. Auch hierzu gibt es ein weiterführendes Kapitel. 4.2 Info-Seiten Zu einem OSA gehören üblicherweise umfassende Informationen rund um den jeweiligen Studiengang. Die Informationen sind semantisch in verschiedene Kategorien eingeordnet. Zwei Arten von Navigation sind möglich: 1. gezieltes Auswählen der Themen über die Links oben auf der Seite 2. Durchnavigieren über die Pfeile Wenn man am Ende einer Kategorie weiterklickt, landet man am Anfang der nächsten Kategorie. Es ist also möglich, sämtliche Seiten durchzugehen. Ein Teil der Inhalte kann dynamisch sein, sodass man zur Interaktion aufgefordert wird. Was genau zu tun ist, steht üblicherweise auf der jeweiligen Seite beschrieben. 17 4.3 Selbsttests Selbsttests bestehen aus unterschiedlichen Aufgabetypen, die einem bei der Entscheidung helfen sollen, ob einem der jeweilige Studiengang zusagt. 4.3.1 Login Damit ein OSA nicht am Stück durchgeführt werden muss, sondern unterbrochen und später fortgesetzt werden kann, ist eine Anmeldung nötig. Um Datenschutz zu gewährleisten meldet man sich nicht mit seinem Klarnamen an, sondern erzeugt eine Nutzerkennung anhand der Anweisungen, die einem angezeigt werden. Nachdem der achtstellige Code eingegeben wurde, ist es zusätzlich nötig, ein sogenanntes CAPTCHA zu lösen, indem das geforderte Bild angeklickt wird. 4.3.2 Aufgaben Nach dem Login werden die verschiedenen Arten von Tests angezeigt, die in dem jeweiligen OSA zur Verfügung stehen. Es gibt drei Arten von Antwortmöglichkeiten: Single Choice Eine von mehreren Antwortmöglichkeiten ist auszuwählen. Multiple Choice Belibig viele Antwortmöglichkeiten sind auszuwählen. Freitextfragen Die Antwort soll in ein Freitextfeld geschrieben werden. Danach wird die Musterlösung eingeblendet. Man vergleicht selbst, inwiefern man eine angemesse Antwort verfasst hat. 4.3.3 Benutzungshinweise • Um im OSA fortzufahren, sollte zuerst die Antwort eingegeben werden und danach auf “Auswerten” oder “Weiter” (Pfeil rechts) geklickt werden. – Nach einem Klick auf “Auswerten” wird die Musterlösung eingeblendet. • Innerhalb der Aufgabenblöcke ist es – auch mit dem “zurück”-Button des Browsers – nicht möglich, zur vorhergehenden Seite zu navigieren. • Es ist wichtig, dass die Aufgaben nacheinander bearbeitet werden. – Nur wenn du alle Fragen eines Aufgabenblocks bearbeitet wurden, gilt dieser als abgeschlossen. – Die Bearbeitung kann unterbrochen werden, um sie zu einem späteren Zeitpunkt fortzusetzen. – Nur vollständig bearbeitete Aufgabenblöcke werden abgespeichert. – Selbsttest können mehrfach bearbeitet werden. 18 ∗ Es wird empfohlen, die schon beim ersten Durchlauf die Aufgaben ernsthaft anzugehen, da die Testergebnisse ansonsten weder aussagekräftig noch vergleichbar sind. 4.3.4 Auswertung Die Auswertung visualisiert, inwiefern das persönliche Profil von dem Durchschnitt des jeweiligen Studiengangs abweicht. Es gibt verschiedene Arten von Darstellungen, die die unterschiedlichen Testergebnisse intuitiv visualisieren. Beispiele: Welche Visualisierung letztendlich zu sehen ist, hängt vom jeweiligen OSA beziehungsweise den dort überprüften Kompetenzen ab. Die Visualisierungen werden auch angezeigt, wenn ein Test nicht vollständig durchgeführt wurde. Die Aussagekraft ist dementsprechend geringer. 19 Chapter 5 Developer 5.1 5.1.1 Datenbanktabellen Globale Attribute Folgende Variablen sind innerhalb einer Session global: #!php $page $userAdministrationRequired $isLoggedIn $isAdmin $isEditing $pip $clear $attributes $titles • $page kompletter Inhalt der aktuellen Seite • $userAdministrationRequired Legt fest, ob eine Seite Admin-Rechte erfordert • $isLoggedIn Boolean true wenn eingeloggt, false sonst • $isAdmin Boolean true wenn der User Admin-Rechte hat, false sonst • $isEditing Boolean true wenn Editor aktiviert, false sonst • $pip String pip der aktuellen Seite • $clear boolean wird URL-encoded (GET) übergeben. Bei true werden die Daten des Users zurückgesetzt. Wird ebenfall für Content-Admins verwendet, damit diese beliebige Seiten innerhalb eines Tests aufrufen können. • $attributes sammelt Globale Einstellungen aus der Datenbank des OSAs. [mediaPaths],[mediaTypes], sind hierbei eher für Editoren relevant. Jedoch sind [OSAName][OSALogoURL][favicon] für den HTML-head entscheidend und erlauben das jedes OSA einen eigenen Namen, Logo und Favicon erhält. Weitere Attribute sind [headerFontColor][themeColor][selectedTheme]. 20 Sie bestimmen die Farbpalette und Themes für das OSA. Diese sind allerdings nur fürs compilieren der style.css bzw. editor.css relevant. • $titles array mappt existierende PIPs auf ihre prettyURLs. 5.1.2 Seiten und Inhaltsmodell Seiten Jede Seite hat eine pIP und einen Titel. Inhalt kann zwar ohne entsprechende Seite existieren jedoch dann nicht aufgerufen werden. pIP Eine pIP ist ein Adresse, die an IP-Adressen bei Rechnernetzen angelehnt ist. Vier Zahlen, durch Punkte getrennt, ordnen die Seiten in eine Hierarchie ein. Die erste Zahl ordnet die Seite in den Index der Hauptkategorie ein. Die Ausnahme sind versteckte Seiten, die den Index 0 haben. Die zweite Zahl steht für die Unterkategorie. Im dritten und vierten Abschnitt der pIP wird Referenz auf das Modell des Tunnels genommen. Die dritte Ziffer bezeichnet im wievielten Tunnel sich die Seite befindet und die vierte welchen Index die Seite innerhalb des Tunnels hat. Titel Der Titel wird in der Titelleiste oder im Tab-Titel des Browsers dargestellt. Inhalt Inhalte existieren unabhängig von den Pages. Da es aber nicht sinnvoll ist, Inhalte alleine in der Datenbank stehen zu lassen, wird im Admin-Editor direkt nach den gewünschten Page-Zuordnungen gefragt. Den Content-admins wird insofern also nicht verdeutlicht, dass dies zwei unabhängige Sachen sind. Der Vorteil dieser Lösung ist, dass Inhalt nicht verloren geht, wenn temporär die Zuordnung zu einer Seite aufgehoben wird. Weitere Attribute von Inhalt sind die Zuordnung, welche Seite davor und danach liegen sollen. Dies wirkt sich auf die Navigation aus User-Sicht aus. 5.1.3 Programmierung MYSQL Befehle wantedPIP - muss durch den String der gesuchten pIP ersetzt werden. Alle Inhalte einer Seite geordnet nach Position auflisten SELECT * FROM ‘content‘ WHERE pip = "wantedPIP" AND type>1 ORDER BY ‘content‘.‘position‘ A Export von einer Seite SELECT * INTO OUTFILE ’data_path.sql’ FROM ‘content‘ WHERE pip = "wantedPIP"; 21 PHP Dateien ohne Editor Dateien die zur Darstellung der Inhalte und der Navigation nötig sind. functions.php In der functions.php wird die buildContent definiert die für das Auslesen der Datenbank und die Übersetzung in Seiteninhalt zuständig ist. content.php und getContent.php stützen sich auf die oben gennante functions.php und führen die darin definierte buildContent function aus. Bei getContent handelt es sich um eine über Ajax aufgerufen Datei. navigation.php script.js PHP Dateien mit Editor TODO: vervollständigen Folgende Dateien können nach Fertigstellung des Inhalts gelöscht werden, um u.a. die Sicherheit des Systems zu verbessern. serverCommunication/addContent.php editContent.php dropContent.php deleteContent.php 5.1.4 Benutzermodell OSA User haben in der Datenbank 4 Attribute: • code – char – Der beim Anmelden festgelegte 8-stellige Code, der zur anonymen Identifizierung dient • age – int – Das von Nutzer angegebene Alter • language – char – Die vom Nutzer angegebene Sprache • gender – char – Das vom Nutzer angegebene Geschlecht 5.2 Themes Das Design eines OSAs kann über SCSS angepasst werden. Im Editor-Panel lässt sich die Theme Color setzen, um ein Farbschema zu generieren. Die einzelnen Farben und alle weiteren (CSS-)Attribute eines OSAs lassen sich außerdem im Theme-Editor des Admin-Panels bearbeiten. 22 5.2.1 Theme Color Die vom Content-Admin gesetzte Theme color wird in die Variable $theme-color in der layout/style.scss geschrieben. Um die anderen Farben des Themes zu generieren, wird $theme-color aufgehellt oder abgedunkelt in die anderen Variablen übernommen. 5.2.2 Theme Editor Themes werden innerhalb der Tabelle sassThemes der Datenbank gespeichert. Beim Kompilieren wir der Inhalt des entsprechenden Themes in layout/template.scss kopiert welche wiederum in die style.scss inkludiert wird. Die Style-Informationen die im Editor gesetzt wurden, werden beim ändern der Theme Color nicht überschrieben. 5.2.3 • • • • • • Datei- und Verzeichnisstruktur externals layout media scripts serverCommunication variables Root Erlaubte Dateiendungen: .php .md .sh Enthält alle grundlegenden Dateien, die der Website ihre Struktur geben, sowie die Projektbeschreibung. Extern Erlaubte Dateiendungen: .* Enthält externen Projekte, auf denen OSAuria basiert. Derzeitig werden jquery-ui, ckeditor, recaptcha, scssphp, sorter und ssp eingebunden. Sollten diese Dateien nicht auftauchen, müssen sie mit git submodule init && git submodule update heruntergeladen werden. Layout Erlaubte Dateiendungen: .css .scss Dateien, die das Layout verschiedener Teile des Projektes beschreiben. Medien Erlaubte Dateiendungen: .jpg .jpeg .svg .png .gif .mov .avi .mp3 u.ä. Ist weiter unterteil in fonts, icons und images. • Icons ist den Inhalten des Editors vorbehalten. • Fonts sind eingebundene Schriftarten, die für die Gestaltung der Website bereitstehen und 23 • Images enthält alle Bilder, die als Content dargestellt werden können, sowie das Logo der Website. Ist das Verzeichnis leer, müssen die Dateien aus dem Dropbox Verzeichnis kopiert werden. Skripte Erlaubte Dateiendungen: .js Enthält die Javascripte die zum Ausführen des Editors, für die Auswertung von Fragen und dem Behandeln von Tunneln notwendig sind. Serverkommunikation Erlaubte Dateiendungen: .php Enthält alle Dateien, mit denen nur über AJAX kommuniziert wird. Dies betrifft alle Aktionen des Editors, den Login und die Registierung von Usern, sowie die Verwaltung von Medien und das Abspeichern von Antworten durch User. Variablen Erlaubte Dateiendungen: .php Beinhaltet die Variablen die von der Umgebung abhäng sind. In diesem Falle wird der Username und das Passwort von MYSQL für PHP hinterlegt. 5.3 JSON Objekte 5.4 Fragen 5.4.1 Datenstruktur Die Fragen verfügen über die Attribute layout, optional, showAnswers, items. layout bestimmt dabei wie das Objekt im Contentbereich dagestellt wird. optional setzt fest, ob die Frage die Möglichkeit zum Überspringen bietet oder ob die Beantwortung erzwungen wird. showAnswers bestimmt, ob dem Nutzer nach der Eingabe der Antworten eine Verbesserung bzw. direkte Auswertung angezeigt wird. items ist der Teil des JSON Objekts der die eigentliche Fragen definiert. Da es sich um einen Array handelt können hier auch mehr item Elemente eingetragen werden, was jedoch nicht von allen Layouts unterstützt wird. description stellt die aktuelle Frage des Objekt bereit. Beispielsweise “Welche Farbe haben Kirschen?” Die Anzahl an Antwortoptionen auf eine Frage bestimmt wie lang die Arrays bias und labels sein müssen. bias setzt hierbei fest wieviel Punkte die entsprechende Antwort gibt und labels liefert den dazugehörigen Antworttext. Bei den Strings ist zu beachten das die Beschreibungstexte später in HTML eingebettet werden und daher nur Zeichen erlaubt sind die von diesen Unterstützt werden. Hinzu kommt das im String enthaltene ” durch ein Backslash escapt werden müssen. Als JSON-Objekt sieht es so aus: 24 #!json { "layout":5, "optional":true, "showAnswers":true, "items":[ { "bias":[1,0,0], "description":"Welche Farbe haben \"Kirschen\"?", "labels":["kirschrot","weinrot","kirschblütenweiss"] }, { "bias":[0,1,0], "description":"Wieviel Beine haben Tausendfüßler?", "labels":["Tausend","Einige hundert","Mindestens 800"] } ] } 5.4.2 Freitextfragen Freitextfragen liefern kein Ergebnis, das in die Datenbank eingetragen wird. 5.5 Auswertung Die Testergebnisse jedes Users werden in der Datenbank gespeichert und können jederzeit vom User abgerufen und mit den Durchschnitsswerten verglichen werden. 5.5.1 Datenstruktur Auswertungen sind wie folgt aufgebaut: { \layout": 0|1|2|3, \unit": \normalized"|"absolute"|"percent", // only layout 0,1,3 \not evaluable": <message string>, // only layout 0,1,3 \items": { \average": <number value>, \description": <title string>, \questionPositions":[[<question ID>, <question position>], ...] } layout unterstützt momentan die Werte 0, 1, 2 und 3. 25 • 0 erzeugt eine Auswertung in Form einer stufenlosen Likert-Skala. Wird z.B. für den Intelligenztest verwendet. • 1 bedeutet eine Likert-Skala mit Wertungen von eins bis fünf. Wird z.B. für den Interessenstest und den Persönlichkeitstest verwendet. • 2 ist ein horizontales Balkendiagramm, welches als einziges die Darstellung der übersprungenen Fragen erlaubt. Wird für die fachspezifischen Fragen verwendet. 26 • 3 erzeugt eine Spinnennetz-Diagramm. Experimentell. Kann für den Interessenstest verwendet werden. unit kann die Werte "normalized", "absolute" und "percent" annehmen. Diese haben nur Einfluss auf das average Attribut innerhalb der items. Bei "normalized" wird die erreichte Punktezahl durch die maximal mögliche dividiert. Somit kann ein Nutzer nur einen Wert zwischen 0 und 1 erreichen. Bei "percent" wird das gleiche Verfahren angewandt. Danach wird das Ergebnis jedoch noch mit 100 multipliziert sodass sich eine Skala von 0 bis 100 ergibt. In "absolute" werden nur die eingetragenen Punkte addiert. Es findet keine Normalisierung statt. Sollte in den Aufgaben eines Testbereich 5, 2 und 1 Punkte erreicht werden können, so ist die maximale Punktezahl 8. not evaluable ist eine Nachricht, die angezeigt wird, wenn die Auswertung noch nicht möglich ist, da der User die Fragen noch nicht vollständig beantwortet hat (oder anderweitig nicht alles getan hat, was er tun soll). HTML5 ist erlaubt. Zu beachten ist hierbei das innerhalb eines JSON Anführungszeichen entsprechend mit einem Backslash \" verlassen werden müssen. items enthält Objekte mit den Attributen average, description und questionsPositions. Jeder Eintrag in items erzeugt einen Abschnitt in der Auswertung der mit dem in HTML5 angegebenen Text aus description beschrieben wird. 27 Ein gültiges Score-Objekt könnte wie folgt aussehen: { "layout":1, "unit":"normalized", "not evaluable": "<div>keine Auswertung möglich.</div>", "items":[ { "average":0.4, "description":"<span>HTML 1</span>", "questionPositions":[[1010,1],[1062,2],[1064,0]] },{ "average":0.8, "description":"<span title=\"HTML\">2</span>", "questionPositions":[[1010,0],[1062,1],[1063,3]] } ] } 5.6 Server-Kommunikation 5.7 Themes Das Design eines OSAs kann über SCSS angepasst werden. Im Editor-Panel lässt sich die Theme Color setzen, um ein Farbschema zu generieren. Die einzelnen Farben und alle weiteren (CSS-)Attribute eines OSAs lassen sich außerdem im Theme-Editor des Admin-Panels bearbeiten. 5.7.1 Theme Color Die vom Content-Admin gesetzte Theme color wird in die Variable $theme-color in der layout/style.scss geschrieben. Um die anderen Farben des Themes zu generieren, wird $theme-color aufgehellt oder abgedunkelt in die anderen Variablen übernommen. 5.7.2 Theme Editor Themes werden innerhalb der Tabelle sassThemes der Datenbank gespeichert. Beim Kompilieren wir der Inhalt des entsprechenden Themes in layout/template.scss kopiert welche wiederum in die style.scss inkludiert wird. Die Style-Informationen die im Editor gesetzt wurden, werden beim ändern der Theme Color nicht überschrieben. 28