Formulare mit Drupal

A presentation at DrupalCamp Köln in January 2009 in Cologne, Germany by Jutta Horstmann

Slide 1

Slide 1

Formulare mit Drupal Drupalcamp, Köln 2009 Jutta Horstmann

Slide 2

Slide 2

whoami Jutta Horstmann (Dipl. Inform., Dipl. Pol.) IT­Beraterin (“data in transit”) ● Schwerpunkt: Freie Software ● Content Management Systeme ● Datenbankmanagement­Systeme ● Analyse, Beratung, Konzeption ● Implementation, Web­Programmierung : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 2

Slide 3

Slide 3

data in transit ● IT­Beratung ● gegründet 2005 in Berlin ● 2006 Umzug nach Bonn ● ● www.dataintransit.com Letzte Drupal­Projekte: – select.postbank.de (Postbank AG) – www.lisa­freundeskreis.de (Burda) : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 3

Slide 4

Slide 4

Die Themen Wozu Formulare? Ein Beispielprojekt Formulare in Drupal CCK vs. Webforms vs. Programmierung Hot New Stuff : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 4

Slide 5

Slide 5

Wozu Formulare? ©TOM (Jochen Enterprises) : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 5

Slide 6

Slide 6

Ein Beispielprojekt ● ● ● ● Der Kunde ist ein bundesweit operierendes Unternehmen. Auf Stellenangebote des Unternehmens soll man sich online bewerben können. Es gibt 3 Arten von Bewerbungsbögen: Trainee, Berufseinsteiger, Führungsposition. Diese werden pro Ausschreibung vom HR­Team inhaltlich erweitert und angepasst. Es gibt veränderbare und nicht veränderbare Felder. Abgesendete Daten werden per E­Mail verschickt, in Reports zusammengefasst und exportiert. : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 6

Slide 7

Slide 7

Anforderungen: PUTPUT Anforderungen: INPUT Anforderungen: OUTPUT : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 7

Slide 8

Slide 8

Anforderungen PUTPUT: Das Formular und seine Erstellung : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 8

Slide 9

Slide 9

PUTPUT: Das Formular und seine Erstellung ● ● ● Redakteure erstellen und bearbeiten das Formular Benutzerfreundlicher Formulareditor Anfang und Ende der Veröffentlichung des Formulars terminieren : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 9

Slide 10

Slide 10

Anforderungen INPUT: Strukturierte Dateneingabe : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 10

Slide 11

Slide 11

INPUT: Strukturierte Dateneingabe: Gruppierung von Feldern ● 2 Felder im Formular, 1 Feld in der DB z.B. Vorwahl + Anschluß ● Feldgruppe als “multiple” Feld : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 11

Slide 12

Slide 12

INPUT: Strukturierte Dateneingabe: Abhängigkeiten zwischen Feldern ● ● Wenn Option A gewählt, dann aktiviere Feld X Wenn Feld A ausgefüllt, dann sind Feld B und Feld C Pflichtfelder : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 12

Slide 13

Slide 13

INPUT: Strukturierte Dateneingabe: Mehrseitige Formulare ● Ein Formular wird auf mehrere Seiten verteilt ● Navigation mit “Weiter”, “Zurück” ● Fehlermeldungen auf zugehöriger Seite ● Unabhängig von Javascript : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 13

Slide 14

Slide 14

INPUT: Strukturierte Dateneingabe: Anzeige nach Absenden Wenn Formular vollständig ausgefüllt wurde: ● Bestätigungsnachricht oder ● Weiterleitung auf Bestätigungsseite : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 14

Slide 15

Slide 15

INPUT: Strukturierte Dateneingabe: Weitere Anforderungen ● ● Zwischenspeichern von Eingaben Übernahme von Daten aus anderen bereits gesendeten Formularen als Default­Wert : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 15

Slide 16

Slide 16

Anforderungen OUTPUT: Die Weiterverarbeitung der Daten : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 16

Slide 17

Slide 17

OUTPUT: Die Weiterverarbeitung der Daten Anforderungen: ● Versand per E­Mail ● Speicherung in der Datenbank ● Datenexport ● ● Übersicht über alle abgesendeten Formulareingaben (zu einem Formular / zu allen vorhandenen Formularen) Reports, Statistiken : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 17

Slide 18

Slide 18

Drupal! : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 18

Slide 19

Slide 19

Formulare in Drupal ● Modul: Webform ● Modul: CCK ● Eigenbau mit Forms API => Einsatz je nach Anforderungen im Projekt (Für die Beispiele: Drupal 6.9, CCK 6.x­2.1, Webform 6.x­2.4) : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 19

Slide 20

Slide 20

CCK/Webform vs. Programmierung CCK und Webform bieten Formulareditor ● ● ● Keine Programmierkenntnisse notwendig Webform Formulare können von Redakteuren gebaut werden Formulare können sehr schnell gebaut werden : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : CCK 20

Slide 21

Slide 21

CCK/Webform vs. Programmierung ● Eigenbau mit Forms API → Volle Flexibilität function my_module_menu() { $items = array(); $items[‘my_module/form’] = array( ‘title’ => t(‘My form’), ‘page callback’ => ‘my_module_form’, ‘access arguments’ => array(‘access content’), ‘description’ => t(‘My form’), ‘type’ => MENU_CALLBACK, ); return $items; } function my_module_form() { return drupal_get_form(‘my_module_my_form’); } function my_module_my_form($form_state) { $form[‘name’] = array( ‘#type’ => ‘textfield’, ‘#title’ => t(‘Name’), ); $form[‘submit’] = array( ‘#type’ => ‘submit’, ‘#value’ => ‘Submit’, ); return $form; } http://drupal.org/node/262422 : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 21

Slide 22

Slide 22

CCK/Webform vs. Programmierung Best of both worlds: Mit CCK/Webform erstellte Formulare können per FAPI und / oder Themeing noch weiter angepasst werden function helpers_form_alter(&$form, $form_state, $form_id){ if ($form_id == ‘webform_client_form_3’) { $form[‘#validate’][]= ‘helpers_customforms_validate’; } } function helpers_customforms_validate($form, &$form_state) { if ($form_state[‘values’][‘details’][‘page_num’] == 1) { $email = $form_state[‘values’][‘submitted’] [‘kontaktdaten’][‘email’]; if ($email) { if (!eregi(“^[_a­z0­9­]+(.[_a­z0­9­]+)@ [a­z0­9­]+(.[a­z0­9­]+)(.[a­z]*)$”, $email)){ form_set_error(‘submitted][kontaktdaten][email’, t(‘%value ist keine valide E­Mail­Adresse.’, array(‘%value’ => $email))); } } } } : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 22

Slide 23

Slide 23

CCK vs. Webform : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 23

Slide 24

Slide 24

Webform vs. CCK Webform ● ● Das Formular ist ein Node Die Eingaben in das Formular sind keine Nodes : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 24

Slide 25

Slide 25

Webform vs. CCK CCK ● ● Das Formular ist ein Inhaltstyp Die Eingaben in das Formular sind Nodes : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 25

Slide 26

Slide 26

Webform vs. CCK ­ Konsequenzen Webform: ● Eingaben in Formulare stehen nicht für Views zur Verfügung CCK: ● Viele Formulare = viele Inhaltstypen : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 26

Slide 27

Slide 27

Webform vs. CCK: Formular erstellen & verwalten (PUTPUT) : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 27

Slide 28

Slide 28

Formular erstellen/verwalten mit Webform ● Inhalt erstellen → Webform → Titel “Trainee Form” oder ● Vorhandenes Formular “Trainee Form” auswählen → Klonen (node_clone) ● Felder anlegen / editieren: Formulareditor ● Veröffentlichung terminieren (scheduler) ● Nicht möglich: Berechtigung pro Feld : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 28

Slide 29

Slide 29

Formular erstellen/verwalten mit CCK ● Verwalten → Inhaltsverwaltung → Inhaltstypen – Inhaltstyp hinzufügen: “form_trainee” oder – “Exportieren” → Inhaltstyp “form_trainee” → Code kopieren → “Importieren” → Code einfügen & editieren → Absenden Umständlich und fehleranfällig. ● Felder anlegen / editieren: Formulareditor ● Nicht möglich: – Veröffentlichung terminieren – Berechtigung pro Feld : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 29

Slide 30

Slide 30

Webform vs. CCK: Strukturierte Dateneingabe (INPUT) : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 30

Slide 31

Slide 31

Strukturierte Dateneingabe mit Webform ● Mehrseitige Formulare (per “pagebreak”) ● Bestätigungsseite nach Absenden konfigurierbar ● Nicht (bzw. nur per Code): – Gruppierung von Feldern – Abhängigkeiten zwischen Feldern – Zwischenspeichern von Eingaben – Übernahme von gespeicherten Daten aus anderen Formularen als Vorgabe für Felder : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 31

Slide 32

Slide 32

Strukturierte Dateneingabe mit CCK ● Zwischenspeichern : “Speichern” ohne “Veröffentlichen” ● Gruppierung von Feldern: flexifield ● Bestätigungsseite nach Absenden: trigger + action ● Mehrseitige Formulare: Eingeschränkt: – pageroute: Inhaltstyp pro Seite. – cck_fieldgroup_tabs: Nur mit aktiviertem Javascript. – multistep: Nur mit aktiviertem Javascript. Nicht Drupal 6. ● Abh. Felder: conditional_fields (nicht: abh. Pflichtfelder) ● Übernahme von Daten als Default: Nur mit Code : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 32

Slide 33

Slide 33

Webform vs. CCK: Weiterverarbeitung der Daten (OUTPUT) : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 33

Slide 34

Slide 34

Weiterverarbeitung der Daten mit Webform ● Versand per E­Mail – ist eingebaut ● Datenexport: CSV, XLS – ist eingebaut ● Reports, Statistiken – eingebaut (eingeschränkt) ● Speicherung in der DB: webform, webform_component, webform_roles, webform_submissions, webform_submitted_data ● Übersicht über alle abgesendeten Formulareingaben (nur: zu einem Formular, nicht: zu allen vorhandenen Formularen) : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 34

Slide 35

Slide 35

Weiterverarbeitung der Daten mit CCK ● Versand per E­Mail: trigger + action ● Speicherung in der DB: content_type_form_trainee ● ● ● Export: views_bonus_pack: CSV, DOC, TXT Übersicht über alle abgesendeten Formulareingaben: views Reports, Statistiken: views : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 35

Slide 36

Slide 36

Fazit: Webform vs. CCK ● Flexibilität in INPUT und OUTPUT: → CCK (Ausnahme: mehrseitiges Formular) ● Benutzerfreundlichkeit im Anlegen und Bearbeiten von Formularen (PUTPUT), schnelle Export­Lösung: → Webform : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 36

Slide 37

Slide 37

Hot New Stuff & Ausblick : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 37

Slide 38

Slide 38

Front End: Form Builder ● Lullabot ● Formulare bauen per Drag&Drop (AJAX) ● ● Ersatz für alle Drupal Formulareditoren Module fügen Formularlogik hinzu http://drupal.org/project/form_builder http://quicksketch.org/demos/form­builder­example : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 38

Slide 39

Slide 39

Back End: Drupal 7 Fields API ● ● Felder als 1st level citizens im Core CCK und Webforms können auf die selben Felder zugreifen => zum Beispiel: ● Webform­Logik (benutzerfreundliches Anlegen von Formularen, einfacher Export) verheiraten mit ● flexiblen CCK­Feldern : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 39

Slide 40

Slide 40

Fragen??? data in transit http://www.dataintransit.com Kontakt jh@dataintransit.com : : : data in transit : : : DrupalCamp 2009 : : : Jutta Horstmann : : : 17.01.2009 : : : 40