Mit dem Verpackungskonfigurator bzw. der PackgingQ lassen sich Layouts (z.B. von Verpackungen) mit verschiedenen Bildelementen beliebig vom Befragten zusammenstellen, betrachten und auswählen. Abbildung 19.1, „Verpackungskonfigurator“ zeigt einen beispielhaften Anwendungsfall. In der folgenden Beschreibung werden die Funktionalitäten und Möglichkeiten der Darstellung erläutert. Hierbei ist häufig die Rede von Gruppen. Eine Gruppe ist immer eine bestimmte Anzahl gleichartiger Bildelemente von denen genau eines ausgewählt werden kann. Die beispielhafte Abbildung zeigt 4 Gruppen: Das grundsätzliche Aussehen der Verpackung, farbige Schriftzüge »NEU«, weiße Schriftzüge »Edelbitter« und das Bio-Siegel.
Um die PackagingQ zu verwenden, sollte die GESS
Javascript Bibliothek gesstmpl.js
im Template eingebunden werden, siehe „
Die GESS Javascript Bibliothek
gesstmpl.js
“. Diese ist für Fading-Effekte
notwendig. Außerdem müssen die zu verwendenden Bilder
im Mediapfad der zugehörigen Umfrage
(./media/<Name der
Umfrage>/) hinterlegt werden. Alle
Bilder müssen die gleiche Größe und, abgesehen von der
untersten Bildebene, transparente Hintergründe
besitzen. Transparenz gibt es z.B. bei den
Bildformaten .png und .gif.
Die PackagingQ ist eine Alternative zur MultiQ und kann an deren Stelle mit folgender Skriptanweisung verwendet werden:
HTML{ multiQClass = PackagingQ; };
Die nun beschriebenen Funktionalitäten werden zum besseren Verständnis im abschließenden Beispielcode demonstriert.
Sämtliche Einstellungen der PackagingQ werden mit Hilfe des setProperty() Mechanismus vorgenommen, siehe auch „Q. Skript“. Die Parameter beginnen mit dem Kürzel pg_ und lassen sich in drei Kategorien unterteilen:
Bildfläche / Korpus
Gruppierungseinstellungen
Sichtbarkeitsmenü (optional)
Bildfläche / Korpus
Mit den folgenden Parametern lassen sich Breite, Höhe, Hintergrund und Abstände zur zentralen Anzeigefläche einstellen.
- pg_width
Breite der Bildfläche. Anzugeben als ganzzahliger Wert in Pixel.
Default: 300
- pg_height
Höhe der Bildfläche. Anzugeben als ganzzahliger Wert in Pixel.
Default: 300
- pg_corpus
Hintergrundbild / Grundkorpus. Optional anzugeben als Dateiname mit Endung.
Default:
- pg_corpus_padding
Abstand zwischen Bildfläche und den umgebenden Gruppen. Anzugeben als ganzzahliger Wert in Pixel.
Default: 10
Gruppierungsoptionen
Mit den folgenden Parametern lässt sich einstellen, in welchen Gruppen, wo und ob die Labels um die zentrale Anzeigefläche dargestellt werden sollen.
- pg_grouping
Fasst die Label der Frage in Gruppen zusammen. Angenommen es gibt neun Label und die Angabe »6 3«. Nun sind unabhängig von den Labelcodes die ersten sechs angegebenen Label als Gruppe 1 definiert und die letzten drei angegebenen Label als Gruppe 2. Gibt es überschüssige Label werden diese automatisch in einer neuen, letzten Gruppe mit Defaulteinstellungen (links und sichtbar) angelegt.
Optionen: Leerzeichen-getrennte, ganzzahlige Werte
Default: Eine Gruppe mit allen Labels und Defaulteinstellungen
- pq_orientations
Ausrichtung der Gruppen. Anzugeben sind durch Leerzeichen getrennte Kombinationen aus den Optionen. Die erste Angabe bezieht sich auf die 1. Gruppe, die zweite Angabe auf die zweite Gruppe und so weiter. Gibt es mehr Gruppen als Angaben, wird left als Default verwendet.
Optionen: top ∣ bottom ∣ left ∣ right
Default: left für alle Gruppen
- pg_fading
Stellt Fadingeffekte an/aus.
Optionen: Ganzzahliger Wert für die Fading-Zeit in ms
Default: 0
- pg_visibility
Stellt die Sichtbarkeit der Gruppen an/aus. Anzugeben sind durch Leerzeichen getrennte Kombinationen aus den Optionen. Die erste Angabe bezieht sich auf die 1. Gruppe, die zweite Angabe auf die zweite Gruppe und so weiter. Für überschüssige Gruppen wird die Angabe visible verwendet.
Optionen: visible ∣ hidden
Default: visible für alle Gruppen
Einstellungen des Sichtbarkeitsmenüs
Optional kann ein Sichtbarkeitsmenü angezeigt werden. Ist es aktiviert, wird für jede Gruppe ein anklickbares Feld angezeigt, mit dem die korrespondierende Gruppe ein- und alle anderen Gruppen ausgeblendet werden.
- pg_visibility_menu
Stellt das Sichtbarkeitsmenü an/aus.
Optionen: yes ∣ no
Default: no
- pg_visibility_orientation
Positionierung des Sichtbarkeitsmenüs.
Optionen: top ∣ bottom ∣ left ∣ right
Default: top
- pg_group_names
Texte in den anklickbaren Feldern des Sichtbarkeitsmenüs. Anzugeben sind durch Leerzeichen getrennte Begriffe je Gruppe. Gibt es mehr Gruppen als Begriffe wird als Default »Gruppe <x>« verwendet, wobei x die Gruppennummer darstellt.
Default: Gruppe1 Gruppe2 ...
Korrespondenz Label - Grafik
Damit die Anbindung der Label an die entsprechenden
Bilder definiert werden kann, steht im Labeltext das
Schlüsselwort
@target( <NAME> )
zur Verfügung, wobei NAME der Dateiname des im
Mediapfad der Umfrage hinterlegten Bilds mit
Dateiendung ist. Nun zeigt das Label (unabhängig vom
Inhalt) beim Anklicken das Zielbild an. Ansonsten kann
im Labeltext beliebig mit oder ohne HTML gearbeitet
werden. So lässt sich zum Beispiel auch problemlos
eine kleine Grafikvorschau einbinden.
Randomisierung und Filter
An die Label lassen sich beliebig Filter und Randomisierungen anfügen. Einzige Besonderheit ist, dass sich die Randomisierungen nur auf die Label innerhalb der Gruppen beziehen. Es wird also nicht gruppenübergreifend gemischt.
Optische Gestaltung mit CSS
Es gibt 3 unterschiedliche Stellen mit CSS-Klassen[6] innerhalb der PackagingQ, über die beliebige optische Gestaltungen vorgenommen werden können:
(1) für die einzelnen Gruppen
(2) für die einzelnen Orientierungen
(3) für das Sichtbarkeitsmenü
Die Namen der Klassen werden wie folgt gebildet:
(1) <FRAGE> _labels_group_ <X> mit FRAGE als Fragenamen und X als Gruppennummerierung (gezählt ab 1).
(2) <FRAGE> _ <OR> _groups mit FRAGE als Fragenamen und OR als Orientierung left, right, top oder bottom.
(3) <FRAGE> _menu und <FRAGE> _menu_item mit FRAGE als Fragenamen.
CSS Gestaltungen können entweder ins Template oder bei
ausgeschaltetem Textersatz
enableTextReplace=no;
direkt in den Text-
oder Titelbereich der entsprechenden Frage geschrieben werden.
Letzteres ist beispielhaft im folgenden Beispielcode aufgeführt.
Code für das Beispiel aus Abbildung 19.1, „Verpackungskonfigurator“. Der Mediapfad wurde aus Platzgründen abgekürzt:
HTML{ setProperty("pg_grouping" "3 4 3 3"); setProperty("pg_orientations" "left top right bottom"); // setProperty("pg_visibility" "visible hidden hidden hidden"); setProperty("pg_corpus" "corpus0.png"); setProperty("pg_corpus_padding" "25"); setProperty("pg_width" "500"); setProperty("pg_height" "399"); setProperty("pg_fading" "500"); // setProperty("pg_group_names" "Verpackung Edelbitter NEU Siegel"); // setProperty("pg_visibility_menu" "yes"); // setProperty("pg_visibility_menu_orientation" "top"); }; enableTextReplace=no; multiq m1; text=" Bitte benutzen Sie die PackagingQ. <style type='text/css'> .m1_labels_group_1, .m1_labels_group_2, .m1_labels_group_3, .m1_labels_group_4, .m1_menu_item{ margin:1px; border:1px solid #000000; background:#888888; } .m1_menu_item{ float:left; width:100px; padding:5px; background:#eeeeee; } .m1_menu{ display:inline-block; } // .m1_left_groups{vertical-align:top;} // .m1_right_groups{vertical-align:bottom;} </style> "; labels= 51 "@target(corp.png) <img width='125px' src='./(...)/corp.png'>" random 52 "@target(corp1.png) <img width='125px' src='./(...)/corp1.png'>" random 53 "@target(corp2.png) <img width='125px' src='./(...)/corp2.png'>" random 1 "@target(text1.png) <img width='125px' src='./(...)/text1.png'>" random 2 "@target(text2.png) <img width='125px' src='./(...)/text2.png'>" random 3 "@target(text3.png) <img width='125px' src='./(...)/text3.png'>" random 4 "@target(text4.png) <img width='125px' src='./(...)/text4.png'>" random 21 "@target(neu1.png) <img width='125px' src='./(...)/neu1.png'>" random 22 "@target(neu2.png) <img width='125px' src='./(...)/neu2.png'>" random 23 "@target(neu3.png) <img width='125px' src='./(...)/neu3.png'>" random 32 "@target(bio2.png) <img width='125px' src='./(...)/bio2.png'>" random 33 "@target(bio3.png) <img width='125px' src='./(...)/bio3.png'>" random 34 "@target(bio4.png) <img width='125px' src='./(...)/bio4.png'>" random ;