Här är en guide som beskriver hur jag byggde en webbenkät för tidningen jag jobbar på. Jag hoppas att stegen är beskrivna tillräckligt tydligt - annars går det förstås bra att skriva frågor bland kommentarerna.

Utgångspunkt
Ingår: Drupal 6 + svensk översättning, billigt webbhotell, modulen Webform (och lite juste inspiration från en screencast om Webform). Senare även modulen User Import. Dessutom en lista på 1000 prenumeranter som ska ingå i en läsarundersökning, och en lista med frågor som de ska svara på.
Ingår inte: Enkätprogram för 40 000 kr eller mer. Ej heller färdiga webbtjänster för enkäter, eftersom de är på engelska (och inte så flexibla som vi vill).
Start
- Installation av Drupal i vanlig ordning.
- Ändring av grundinställningar på webbplatsen - sajtnamn, logga och så.
- Installation och aktivering av Webform.
- Aktivering av extra språk samt import av det svenska gränssnittet.
- Skapande av en användarroll "admin".
Skapa enkätnod
En ny webform-nod skapades, och fylldes med frågor från den enkät jag fått på papper. Webform har alternativ för flera olika typer av svar, vilket är praktiskt. De flesta frågorna var av typen "välj ett alternativ", och dessa sattes som rullgardinsmenyer. De frågor som var av typen "kryssa för alla alternativ som stämmer" blev checkboxar. Det fanns också smidiga alternativ för att lägga till "år" efter fältet där man anger hur länge man prenumererat, och så vidare.
Det enda jag saknade när det gäller svarstyper var flera textfält till samma fråga, där man skulle kunna fylla i hur många som läser tidningen förutom en själv - X kvinnor under 18 år, Y män under 18 år, och så vidare. Istället fick det bli svar av den något kryptiska typen "grid", som visade sig betyda A rader med B svarsalternativ (där raderna blev "antal kvinnor under 18 år" osv, medan svarsalternativen blev 0, 1, ..., 6+). Inte helt optimalt, men klart fungerande.
Frågorna grupperades ihop med hjälp av samma typ av ramar som används i formulär lite överallt på Drupalsajter.
Rätt snart upptäckte jag att rubrikerna för frågorna - det ställe där det är tänkt att man ska skriva frågan - var begränsad till 100 tecken. Efter ett par olika försök blev min lösning att sätta rubrikerna till "fråga 1", "fråga 2" och så vidare, och skriva själva frågorna i beskrivningsfältet som normalt visas som en sorts förtydligande under svarsalternativen. För att få ett acceptabelt utseende fick jag joxa lite med temat - se nedan.
En positiv bieffekt av att använda beskrivningsfältet istället för frågerubriken var att det gick att fetstila utvalda ord. (Jag gissar att både längden på fältet och fetstilande går att fixa för den som är bättre hacker än jag, men detta var alltså den väg jag valde.)
Eftersom jag bara ville att registrerade användare - de som loggat in med sitt prenumerantnummer - skulle kunna svara på enkäten såg jag till att bara inloggade användare får svara. Jag begränsade också antalet svar till 1, och ändrade lite i välkomst- och tack för ditt svar-meddelandena.
Annat innehåll på sajten
Ytterst lite innehåll behövdes på sajten, men en välkomstsida skrevs ihop och sattes som förstasida. Där skrev jag också in en länk till själva enkätnoden, och anvisningar om att man måste logga in för att kunna delta i undersökningen.
Huvudmenyn (navigation) spärrades så att endast de som tillhör admin-rollen når det blocket, och login-blocket spärrades så att det bara visas för anonyma besökare. (Jag hade inget intresse av att visa "mitt konto" när man väl loggat in, men ansträngde mig inte heller för att spärra de sidorna om någon skulle skriva in sökvägen manuellt.)
Ett block för administratörer lades också in, men direktlänkar till svaren på enkäten och ett par andra saker.
Modifiering av temat
Den stora lärdomen från byggandet av webbenkäten kom när jag behövde ändra i temat.
Med hjälp av Firefox + Firebug var det enkelt att ändra fontstorlek, färger och annat för att få frågerubriker och själva frågorna balanserade. Däremot tog det lite ansträngningar att ta reda på hur man flyttar beskrivningar i formulär ovanför formulärfälten, istället för under dem.
Svaret blev min första temafunktion i Drupal någonsin, med namnet garlandmod_form_element. För de som inte vet hur temafunktioner fungerar kommer här en kort beskrivning:
Funktionen som sätter i ordning innehållet i formulären hittade jag i includes/form.inc, med namnet theme_form_element. I samma katalog hittas filer med många andra temafunktioner, och fler temafunktioner hittas i olika moduler (och ibland i temafiler). Jag visste att det var rätt funktion jag hittat, eftersom den innehöll saker som
$output .= ' <div class="description">'. $element['#description'] ."</div>\n";, och det var just det i description-divven som jag ville flytta på.Alla temafunktioner börjar med theme_, och för att göra sin egna variant av funktionen kopierar man den till en lämplig fil (så som template.php) i sitt aktuella tema och byter ut "theme" mot namnet på temat. Då kommer Drupal att hitta temats egna variant av funktionen, och struntar i den generella funktionsversionen som följer med Drupal. (Man ska alltså inte, inte, ändra i orginalfilen.)
Jag kopierade alltså in funktionen i min template.php, bytte namn på filen och ändrade runt i funktionen så att description-divven skrevs ut före
$value, som fanns precis före i funktionen. Efter ett antal försök att villkora funktionen så att den bara bytte ordning på elementen när webform-noder visades gav jag upp - inga andra beskrivningar skulle ändå visas för slutanvändarna. (Det går säkert att ordna om man kan mer om Drupalkodning än jag, men jag lyckades inte få tag på rätt variabler för att kolla nodtypen.)
Finputs och fulhack
Nästa steg var att snygga till en del saker. Till att börja med var översättningen av Webform bristfällig och inkoplett. Efter att ha konstaterat att många av termerna jag ville översätta saknades i .po-filen gick jag in och översatte direkt i Drupals gränssnitt, vilket fungerade alldeles utmärkt. Flera saker översattes på ett sätt som inte skulle fungera om webbplatsen skulle användas till flera saker, men eftersom användningsområdet var så begränsat bekymrade det mig inte.
Jag fulhackade ockås bort några saker från gränssnittet, som jag inte ville att besökarna skulle se. Exempelvis ville jag inte att besökare skulle få se texten "Beställ nytt lösenord", så jag ändrade den översättningen till ett mellanslag. (Att bara lämna översättningen tom visade sig förstås kasta fram den engelska termen istället, men mellanslag funkade alltså bra. Det borde nästan klassas som en bugg, men för mig var det användbart.) Samma lösning implementerades för att ta bort en länk som låter besökarna granska och ändra i sina svar.
Testkörning
Efter att enkäten kunde anses som klar testkörde jag den på redaktionsmedlemmar. Jag kollade också så att det gick fint att exportera data från enkäten, så att de kunde behandlas och analyseras i ett kalkylprogram. (Några enkla funktioner för analys följer med i Webform, men de räcker inte speciellt långt.)
Import av användare
För att kunna ge de 1000 utvalda läsarna möjlighet att logga in på sajten utnyttjades deras prenumerantnummer som användarnamn. Lösenord slumpades fram och parades ihop med användarnamnen, varefter en betaversion av User Import användes för att tanka upp användarkontona till sajten. Fejkade e-postadresser användes för att göra användarkontona kompletta.
Läsarna fick sitt prenumerantnummer och lösenord utskickade med hjälp av anpassade etiketter på standardmässiga brev.
Insamling och analys
Denna del kvarstår fortfarande, men jag har ingen anledning att tro att Webform skulle ge mig problem på den punkten.
Problem och lärdomar
Till en början försökte jag använda temat Andreas02, men av någon anledning fick jag problem med att bygga om det temat som jag ville. Istället blev det en egen varian av Garland - kanske inte det snyggaste, men det fungerar och är stabilt.
Att använda en betaversion av User Import kändes lite farligt, så jag såg till att göra backup innan jag använde den modulen. Det verkar dock inte vara några problem, och modulen lär bli klar för Drupal 6 när som helst.
När jag la till frågor i enkäten i efterhand hittade jag en bugg - det unika ID som varje formulärkomponent får är baserat på dess rubrik, och när jag flyttade runt i frågorna ledde det till att två fick ID "fraga_9". Webform varnade inte, och det tog en liten stund innan jag förstod varför den ena frågan försvunnit. Buggen är rapporterad, och den lär vara rätt lätt att fixa till.
Över lag gick det mycket smidigt att bygga en webbenkät med Drupal och Webform. Hade det inte varit för att jag blev tvungen att ändra temafunktionen hade webbplatsen blivit klar på ett par timmar. (Nu levlade jag istället i mina temakunskaper, vilket får ses som en fet bonus.)
Förutom arbetet med tema hade jag strategin att undvika problem istället för att lösa dem, och strategin lyckades bra. Därför finns inte så många problem att rapportera om. Än.
| Attachment | Size |
|---|---|
| lasarundersokning.png | 140.33 KB |

Comments
Intressant!
Jag gillar webform och har gjort en del grejjer med det. Perfekt om man snabbt vill få upp formulär som kan vidarebefodras automatiskt till flera mottagare via epost. Gillade den lilla temalektionen. Det enda jag saknar i webform är att kunna göra standarssets som kan återanvändas men där man kan göra små ändringar som tex olika mottagare öfr olika noder. Nu måste man bygga ett nytt formulär för varje nod som jag förstått det. Annars rekommenderar jag Webform varmt.
www.albamar.org
Stormfors - Sweden
Node clone
Det finns en modul som heter Node clone som du kan använda för att klona ett befintligt formulär. Jag har gjort en lösning åt en kund där jag har gjort en Webform-nod som jag använder som mall. Sen har jag lagt in en länk i menyn som tar användaren till en klon av den noden.
/ Hannes Lilljequist – SthlmConnection
Tack för tipset
Har några frågor...
Kan man editera formuläret i klonen som om det vore ett separat formulär?
Läggs det klonade formuläret till automatiskt i webforms lita på existerande formulär?
Tack på förhand
Stormfors - Sweden
Klonen blir som en helt ny
Klonen blir som en helt ny nod, som om man hade skapat den via Add content >> Web form. Den är alltså en vanlig webform-nod som du kan ändra hur du vill. Det finns ingen koppling kvar till originalet/mallen. Jag antar att den hamnar i Webforms-listan.
/ Hannes Lilljequist – SthlmConnection
Spännande!
Jag har funderat en del kring att använda webforms, men det räcker inte helt..jag vill att användarna ska kunna fylla på sin egen enkät med nya svar en gång per vecka under 8 veckor, d.v.s. när de loggat in ska de kunna få fram sina tidigare avgivna svar (låsta) och fylla på. då kan jag få det att fungera som ett uppföljningsprogram för personlig utveckling, och behöver "bara" hänga på lite påminnelser via mail och så för att det ska bli ruskigt bra...Alla tips och ideér mottages tacksamt....
Kloner?
Kanske går det att använda Webform till det du vill. I så fall skulle jag skapa en Webform-nod som innehåller precis det du vill ha, och sedan ge inloggade användare en "ny enkät"-länk som egentligen går till länken för att skapa kloner av din originalnod.
Det går att ställa in så att användare bara kan lämna (exempelvis) 8 svar, och man kan också få se sina tidigare svar. Jag är inte säker på att det finns inbyggda funktioner för att spärra gamla svar för redigering.
Lycka till!
//Johan Falk, Solna
Tack...
Och då läste jag självklart ner mig på views, cck och lite så...views är väldigt elegant, och innehåller så MÅNGA möjligheter, frågan är om man kan publicera från webforms via views?
Noder
I ditt fall hade jag nog valt att låta varje ifyllt formulär bli en nod och använda views för att visa de tidigare svaren. Webform erbjuder en del av det du behöver, men frågan är om du inte målar in dig i ett hörn.
Oavsett kommer det nog krävas lite "klister-kod" för att få det som du vill.
/ Hannes Lilljequist – SthlmConnection
Så CCK + lite user rights +
Så CCK + lite user rights + views, och lite hack här och där. Det låter som en bra riktning. Vad är tipset kring en snygg presentation - panels eller composite layout?
Aktivering av extra språk samt import av det svenska gränssnitte
Har skapat ett kontakt formulär i webform allt fungerar som det ska men när mailet kommer till en så ser man inte åäö som det ska vara.
Vad är fel ?
Webbtjänst för enkäter
Vill tipsa om en webbtjänst för att skapa enkäter vid namn FluidSurveys. Enkätverktyget finns på svenska och har även stöd för webbplatsundersökningar med popup och webbomröstningar med polls. Dessutom kostar det betydligt mindre än de 40 000 kr som nämns i artikeln :) Det finns en gratis version!
Hoppas att någon har nytta av länken:
http://www.fluidsurveys.se
Grymt men en fråga
Tja Drupal vänner!
Kan man välja så att användaren enbart kan välja 1 värde? ex på fråga 4 i denna webform kan man välja mellan 0-6 i värde, vilket jag vill ha i mitt enkät. Men sen vill jag att man INTE skall kunna välja samma värde. Ex.
Fråga 4:
Antal män (18 år eller äldre) 4 (väljs). efter detta vill jag att alternativ fyra skall ej kunna väljas mer på nästa fråga.
Hmm svårt att förklara.
Min avsikt är att ha någon sort rangordning från 1-6 där man skall kunna välja 1 som bäst och 6 som sämst.
Frågan på mitt enkät/webform lyder:
3.Vad vill du att portalen skall innehålla?
Rangordna med siffrorna 1-6. Där 1 motsvarar mest intressant och 6 minst intressant
hoppas att ni förstår, och har någon bra idé.