Plugin-hantering i ett webbsideramverk
|
|
- Monica Andersson
- för 6 år sedan
- Visningar:
Transkript
1 Examensarbete Plugin-hantering i ett webbsideramverk Dzemal Becirevic, Magnus Lindgren, Martin Cedeskog Ämne: Datavetenskap Nivå: B Kurskod: 1DV40E
2 Abstrakt I detta examensarbete har en plugin-hantering för ett webbsideramverk, skrivet i PHP, tagits fram. Denna plugin-hantering är gjord för att kunna anropa plugin i webbsidors innehåll. Genom att studera kända webbpubliceringsverktyg med deras lösningar och implementation för plugin-hantering har en sådan plugin-hantering kunnat skapats. Denna lösning tillåter användare av webbsideramverket att enkelt skapa plugin och anropa dessa genom att ange shortcodes i redigeringsläge för en webbsida. Resultatet från pluginet kommer då inkluderas i webbsidans innehåll i dess ställe. Då webbpubliceringsverktygen, som studerats under arbetets gång, nyttjar plugin på det sätt att systemet anropar dessa vid det tillfälle pluginet önskar. I fallet med den pluginhantering som tagits fram i detta arbete anropas endast plugin för att inkluderas i en webbsidas innehåll. Det upptäcktes ändå en del intressanta element i deras pluginhantering som varit användbara i resultatet för detta arbete. Abstract This degree project has resulted in a development of a plug-in management that integrates with a website framework, written in PHP. This plug-in management has the purpose of including plugins in a webpage's content. Through studies of known web content managing systems, with their solutions and implementations for plug-in management, an easy to use plug-in management has been designed. This solution allows the user of the website framework to easily create plugins and invoke them through the use of shortcodes in webpages content editor. This will replace the shortcode with the returned result from the plug-in. The web content managing systems that has been studied throughout the project are using plug-ins in such way that the system invoke those whenever a plug-in wishes to be invoked. In the case of the plug-in management in this project the plug-ins are only invoked to be included in a web page's content. There were however some interesting elements in their plug-in management that's been useful in the result for this project.
3 Förord Detta är ett examensarbete, på B-nivå, inom utbildningen Webbprogrammerare på Linnéuniversitetet i Växjö/Kalmar. Det är grundat på en frågeställning om hur man på ett bra sätt kan lägga till funktionalitet i ett webbsideramverk genom plugin-hantering. Under arbetets gång har vi utvecklat ett eget webbsideramverk för att kunna implementera och testa vår lösning kring plugin-hantering. Det bygger även på en grundlig redogörelse från andra kända ramverk för att hämta inspiration om hur man utvecklar en bra och enkel plugin-hantering. Vi vill tacka vår handledare Johan Leitet som hjälpt oss under examensarbetet med reflektioner och goda råd. Slutligen vill vi även tacka de personer som ställt upp på våra användartester: Morgan Nadler, David Strömbom, Marcus Westlund och Adam Solander.
4 Innehållsförteckning 1. Bakgrund Introduktion till problemområdet Tidigare forskning Avgränsningar Metod Metoddiskussion Resultat Wordpress (version 3.0.4) Installation av plugin Skapa eget plugin Shortcodes Joomla Skapa en Joomla-modul Installera en joomla-modul Drupal (version 7.0) Hooks "Hello World"-modul i Drupal Lösning av plugin-hantering Första omgången användartestning Andra omgången användartestning Slutsats Källförteckning Elektroniska källor Bilagor Bilaga 1: Uppgifter för användartest Bilaga 2: Dokumentation (version 1) Bilaga 3: Dokumentation (version 2) Bilaga 4: Användartest med Morgan Nadler Bilaga 5: Användartest med David Strömbom Bilaga 6: Användartest med Marcus Westlund... 27
5 6.7 Bilaga 7: Användartest med Adam Solander... 28
6 1. Bakgrund 1.1 Introduktion till problemområdet För att effektivisera redigering av artiklar på webbsidor kan man låta ansvarig direkt på en webbsida öppna dessa i redigeringsläge. Användaren kan då navigera sig fram bland webbplatsens sidor och enkelt hitta den sida denne vill redigera. I och med att redigeringsläget öppnas direkt på webbsidan slipper användaren gå via en kontrollpanel, eller dylikt, för webbplatsen. I en innehållsredigerare där man endast tillåts skriva uppmärkningskod samt text kan det behövas något sätt att infoga serversidefunktionalitet. Detta då serversidekod inte tolkas som just sådan, av redigeraren, för att exempelvis hindra exekvering av eventuell skadlig kod. Det kan då vara lämpligt att bryta ut sådan funktionalitet till "plugins" (insticksmoduler) för att sedan på något smidigt sätt inkludera dessa, på önskad plats, i innehållet. Detta skulle då ge fördelarna att ha funktionerna separerade från övrigt innehåll, inkapslat, där endast resultatet av funktionerna presenteras. Man tillåts då modifiera och arbeta vidare på funktionaliteten som om det vore en egen applikation. Då det existerar en del populära ramverk för att skapa dynamiska webbplatser finns redan många olika lösningar för plugin-hantering att studera. Det finns källkod att granska, dokumentation att ta del av och gränssnitt att utforska. Hur ska man designa plugin-hanteringen i ett webbsideramverk för att enkelt kunna inkludera resultatet av dessa plugin i en webbsidas innehåll? 1.2 Tidigare forskning En intressant populärvetenskaplig artikel som behandlar plugin-hantering är "A Simple Plugin Framework" 1 skriven av Marty Alchin, 2008, som kommer fram till en lösning på ett pluginramverk där plugin och systemet som använder dessa inte behöver ha kännedom om varandra (loose coupling 2 ), utan endast en gemensam kopplingspunkt. 1 1 A Simple Plugin Framework, Loose coupling,
7 1.3 Avgränsningar I och med att fokus ligger på att plugga in funktionalitet i en webbsidas innehåll kommer plugin här att vara funktioner som utför arbeten och returnerar resultatet av dessa för att inkluderas på önskad angiven plats i en webbsidas innehåll. 2
8 2. Metod Problemställningen angreps induktivt där plugin-hantering hos andra kända webbpubliceringsverktyg (CMS, Content Management System 3 ) granskades och utvärderades. När detta skett fanns underlag för att designa och ta fram en lösning på en enkel plugin-hantering för ett webbsideramverk. Först av allt så valdes tre CMS där deras lösningar på plugin-hantering skulle granskas. Wordpress, Joomla och Drupal kändes intressanta då de är kända och bygger på öppen källkod. Lösningarna på plugin-hantering granskades både genom att källkod och dokumentation studerades. Skapandet av minimala plugin gjordes för att få ytterligare förståelse om deras respektive lösningar. För att sedan, deduktivt, utvärdera den framtagna lösningen för plugin-hantering genomfördes användartester på distans (remote testing 4 ). Ett urval gjordes med ett antal testpersoner som har tillräcklig kompetens för att kunna genomföra uppgifterna (grundläggande php-kunskaper). Testpersonerna utförde givna uppgifter för att framkalla användbar information som kan användas i utvärderingen av användarvänligheten. För att erhålla information ur utvärderingarna genomfördes dessa med "tänka-högt-metoden" (think aloud protocol 5 ). Den information som är intressant är testpersonernas synpunkter, kommentarer, frågor och huruvida de får problem eller fastnar under genomgången. Testmiljön såg ut som så att handledare upprättade kontakt med testpersoner, på distans, via röstkommunikation och skärmdelning från testpersonens sida. Testhandledaren antecknade testpersonens uppförande och tillvägagångssätt för att lösa givna uppgifter under testets gång. Användartesten inleddes med initiering av röstkommunikation och skärmdelning. Testpersonen erhöll instruktioner från handledaren, där denne ombads tänka högt och motivera sina val, beslut och ge synpunkter, för att sedan ges uppgifter (se Bilaga 1) denna skulle lösa, för att testa pluginhanteringen, med hjälp av en tillförsedd dokumentation (se Bilaga 2). Efter första omgången utförda användartester analyserades erhållen data för att sedan beaktas för att förbättra nödvändiga delar i dokumentationen. Efter att dokumentationen modifierats genomfördes en andra omgång användartester, med andra testpersoner, med den uppdaterade dokumentationen. 3 3 Content Management System, Remote Testing, Think aloud protocol,
9 2.1 Metoddiskussion I och med att endast tre av alla befintliga webbpubliceringsverktyg granskas finns det antagligen en hel del lösningar på plugin-hantering som gås miste om. De CMS som granskas använder även sina plugins på ett annat sätt än det som är målet för detta arbete; att inkludera funktionalitet i webbsidors innehåll. De kopplar i stället sina plugin-funktioner på redan befintliga funktioner i kärnan. I och med att användarvänlighetstester utförda av personer genomförs så kan det bli stor variation av resultat. Detta främst på grund av målgrupp och skiftande kunskapsnivåer. En annan variabel som påverkar resultatet av testerna blir det låga antalet testpersoner som är begränsat på grund av resurser främst i form av tid. Då testerna i detta fall utförs på distans, utan videokommunikation, går man miste om testpersonernas kroppsspråk som skulle kunna ge intressant information att utvärdera. 4
10 3. Resultat 3.1 Wordpress (version 3.0.4) WordPress använder sig utav plugins för att på ett smidigt sätt lägga till funktionalitet, ersätta funktionalitet, ändra struktur, uppförande eller utseende. Egna plugin kan skapas och installeras, existerande kan laddas ned från exempelvis WordPress "Plugin Directory". Sedan kan installerade plugin aktiveras genom WordPress administrationsgränssnitt Installation av plugin För att installera ett plugin så inkluderas filerna (egenskapade eller hämtade), som utgör pluginet, i WordPress-installationens "plugins"-katalog. Ett alternativt tillvägagångssätt är att gå via WordPress-installationens administrationsgränssnitt och sedan, förutsatt att engelska språkfiler är aktiverade, sedan menyvalet "Plugins". Där finns undermenyvalet "Add New" som tar en till ett formulär för att söka efter plugins genom att ange nyckelord. Genom att klicka på Install Now vid ett plugin i sökresultaten hämtas pluginet och installeras i WordPress-installationens plugins -katalog. För att ett installerat plugin skall sättas i bruk behöver detta aktiveras. Detta kan åstadkommas genom att helt enkelt aktivera önskat plugin i listan över installerade plugin som finnes under administrationsmenyvalet Plugins. Där finns även möjlighet att avaktivera, ta bort eller redigera ett plugin, beroende på pluginets status Skapa eget plugin Egna WordPress-plugins kan skapas genom att skriva en plugin-fil. En sådan plugin-fil är själva "ingången" till pluginet och denna fil kan så klart ha andra "hjälpfiler". Det som är speciellt med plugin-filen är att den innehåller ett huvud i form av en blockkommentar som innehåller pluginspecifik information som WordPress använder sig utav för att identifiera pluginet. Denna kommentar innehåller information som bland annat "Plugin Name", "Description", "Version" och "Author" med mera. Den enda informationen som krävs för att pluginet skall kunna 5
11 identifieras av WordPress är "Plugin Name". Här följer ett exempel på ett huvud med plugininformation hämtat ur Wordpress dokumentation 6 : <?php /* Plugin Name: Name Of The Plugin Plugin URI: Description: A brief description of the Plugin. Version: The Plugin's Version Number, e.g.: 1.0 Author: Name Of The Plugin Author Author URI: License: A "Slug" license name e.g. GPL2 */?> Pluginet kan sedan utformas på önskat sätt, exempelvis som en klass eller möjligtvis procedurellt. För att funktioner i pluginet sedan ska kunna användas i WordPress så behöver man koppla dessa som "callback"-funktioner till "Hooks" 7, som är gjorda för att koppla funktionalitet till. Denna påkopplade funktionalitet körs innan själva "hook"-funktionen exekveras. I det fall funktioner skall köras vid aktivering eller avaktivering av ett plugin så kopplas dessa funktioner med register_activation_hook() samt register_deactivation_hook(). Det finns även add_filter() och add_action() som är ytterligare typer av "hooks" dit plugin-funktioner kopplas. "Filters" är när exempelvis text bearbetas inför användning och "Actions" är när WordPress-funktioner exekveras eller särskilda händelser inträffar. En annan sätt att lägga till funktionalitet är att skriva över "Pluggable Functions", vilka är funktioner i WordPress som exekveras, i stället för originalfunktionerna, då dessa är definierade i ett Plugin Shortcodes I WordPress finns även något som kallas "Shortcode". Detta är som taggar bestående av ett shortcode-namn, tillsammans med eventuella attribut och dess värden, omslutet av hakparenteser. [shortcodenamn attrnamn="värde"] 6 6 Writing a plugin, Plugin API/Hooks,
12 WordPress har ett API som underlättar skapandet av shortcodes. En funktion kan skapas som behandlar shortcoden, eventuellt innehåll (mellan shortcode-taggarna) och dess eventuella attribut och sedan läggs till med hjälp av funktionen add_shortcode. Exempel på en enkel shortcode från WordPress dokumentation 8 : function caption_shortcode( $atts, $content = null ) { return '<span class="caption">'. $content. '</span>'; } add_shortcode( 'caption', 'caption_shortcode' ); Användning: Output: [caption]my Caption[/caption] <span class="caption">my Caption</span> 3.2 Joomla Joomla använder sig av som många andra cms också av moduler eller plugin för att strukturera upp eller utöka en webbplats med funktionalitet eller information. Dessa moduler går att skapa själv. Det går även att installera befintliga sådana. En Hello World -modul skapades för att få en bättre förståelse om hur plugin-hanteringen var strukturerad. En joomla modul består av två huvudfiler, där den ena utgörs av en XML-fil (extensible Markup Language) och den andra PHP-filen. Xml-konfigurationsfilen innehåller allmän information om modulen (som senare kommer att visas i Module Manager i Joomlas administrationsgränssnitt), samt modul parametrar som kan levereras till att justera utseendet och funktionaliteten i modulen. Php-filen innehåller styrande logik för modulen, det vill säga funktionaliteten som modulen ska genomföra exempelvis en login-modul eller menyhantering. Det är mycket viktigt, att Xml-filens namn matchar modulens namn. Annars kommer installationen av modulen att misslyckas. 7 8 Shortcode API,
13 3.2.1 Skapa en Joomla-modul Det finns olika tillvägagångssätt när man ska skapa en modul till Joomla. Ett enkelt sätt är att använda den redigerare som finns i Joomlas administrationsgränssnitt. Ett annat sätt är att skapa de filer som behövs för att modulen ska fungera och sedan placera dessa i Joomlas modul-mapp (modules). Sedan finns dem tillängliga för aktivering i Joomlas administrationsgränssnitt. Ett exempel på en XML-fil kan se ut så här /modules/mod_hello_world/mod_hello_world.xml: <?xml version="1.0" encoding="utf-8"?> <install type="module" version="1.5.0"> <name>hello World - MC</name> <author>martin Cedeskog</author> <creationdate> </creationdate> <copyright>all rightsreserved by Cedstone 2011</copyright> <license>gpl 2.0</licens> <author >info@cedstone.com</author > <authorurl> <version>1.0.0</version> <description>provides a basic "Hello World" notice</description> <files> <filename module="mod_hello_world">mod_hello_world.php</filename> <filename>index.html</filename> </files> <params/> </install> I grund och botten är denna xml-fil bara rader av grundläggande information om modulens skapare, version med mera för att Joomlas installationsprogram ska kunna identifiera modulen. Dessutom berättar den här filen för installeraren vilka filer som ska kopieras och installeras. Ett exempel på en PHP-fil kan se ut så här /modules/mod_hello_world/mod_hello_world.php. <?php //don't allow other scripts to grab and execute our file defined('_jexec') or die('direct Access to thislocation is not allowed.');?> <p>hello World</p> 8
14 Detta är ett enkelt sättet att skapa en modul 9 till Joomla, det finns även andra mer komplexa sätt att skapa moduler, och då med andra tilläggsfiler Installera en joomla-modul Det finns olika tillvägagångssätt att installera en modul i Joomla. Ett lätt sätt är att spara modulen i en egen mapp i modul mappen (modules) i Joomlas rotkatalog. Sedan kan aktiveringen av modulen enkelt ske genom administrationsgränssnittet, under fliken Module Manager. Ett annat tillvägagångssätt är att gå genom administrationsgränssnittet under fliken Module Manager, där exempelvis en zip-fil, mapp från datorn eller en fil från en angiven URL kan laddas upp och installeras. 3.3 Drupal (version 7.0) I Drupal så benämns plugins som moduler. När man besöker administrationsgränssnittet för modulhantering listas samtliga installerade moduler med deras namn, versionsnummer, beskrivning, operationer och även aktiverings-checkbox. Aktivering och avaktivering av moduler fungerar smidigt och består av endast två klick; valet samt bekräftelse av detta Hooks Drupal har i sitt system, liksom WordPress, något de kallar för krokar (hooks) 10 vilka gör det enklare för modul-utvecklare att låta sina moduler interagera med Drupal kärnan. Själva grundprincipen bakom en krok, i Drupal, är att låta moduler implementera funktioner, vid namn modulensnamn_krokensnamn(), som sedan anropas när kroken körs i systemet. Krokar fungerar genom att Drupal erbjuder ett system som kör redan definierade standardkrokar direkt från kärnan. Krokarna är placerade vid viktiga punkter i kärnans kod och körs exempelvis när man skapar en ny användare, ett nytt inlägg med mera. När kärnan kommer till en krok så anropar den alla funktioner som är kopplade till kroken. Genom att implementera krokar i sina moduler så kan man bygga ut funktionaliteten genom att implementera ytterligare funktioner inuti sina egna moduler och krokar. 9 9 Creating a simple module, Hooks,
15 3.3.2 "Hello World"-modul i Drupal För att ytterligare undersöka hur moduler fungerar i Drupal så skapades en enkel modul. Först skapades en mapp, vid namn custom, för modulen och placerades under sites/all/modules i Drupal installationen. Dokumentationen rekommenderar att den döps till custom för att skilja egenskapade moduler från de som kommer med Drupal info-filen Nästa steg i processen är att skapar en.info fil för sin modul. Vad den gör är att den håller information om modulen så som namn, beskrivning, beroenden, vilken version av Drupal den fungerar för och även vilket paket den tillhör. Information från.info filen visas sedan i modulhanteringen. Nedan följer en utförligare beskrivning, hämtat från Drupals dokumentation 11, av de element som.info filen kan tillhandahålla. Name (obligatorisk) Visar namnet på modulen. Enligt dokumentationen ska första bokstaven inledas med en versal exempelvis Hello world och inte Hello World. Namnet går bra att separera med mellanslag eftersom namnets huvudsyfte är att visa just namnet på modulen. name = Hello world Description (obligatorisk) En beskrivning av vad modulen gör som visas på modulhanteringssidan. Enligt dokumentationen ska beskrivningen endast vara enradig och inte över 255 tecken, då det kan störa läsbarheten i hanteringsläget. description = Skriver ut hello world någonstans på sidan Core (obligatorisk) Säger vilken Drupal version som din modul är skriven för. Notera även att här skrivs endast 7.x för alla version av drupal 7, vilket betyder att anges 7.2 blir det fel. core = 7.x Dependencies (frivillig) En array som innehåller namnet på de moduler som den skrivna modulen är beroende utav. Finns inte dessa beroende-moduler tillängliga så kommer modulen inte att aktiveras Writing.info files,
16 dependencies[] = comment Package (frivillig) Här anges eventuella moduler som den skrivna modulen är tänkt att användas med. Enligt dokumentationen så ska man lämna det här blankt om man inte vill använda andra moduler som exempelvis view eller groups. Package = Views PHP (frivillig) Sedan Drupal 6.x så finns möjligheten att begränsa sin modul till specifika versioner utav PHP. php = 5.1 Hidden (frivillig) Sedan version 6.20 av Drupal finns möjligheten att dölja moduler i modulhanteringen. Detta används främst vid testing där slutanvändaren inte ska kunna aktivera test modulerna. hidden = true Sedan finns några fler alternativa fält, men som enligt dokumentationen är deprecated och inte används längre. Ett exempel på detta är Project men har tillfördel bytts ut mot Package install-filen Nästa steg för att fortsätta skapandet av modulen är att skapa en.install-fil 12, vilken används när modulen ska aktiveras på Drupal installationen. Install-filen används främst till att skapa tabeller och databasfält då modulen använder sig utav dessa. Ifall den skrivna modulen inte ska använda sig utav någon databas för hämtning eller sparande av data så utesluts det här steget modul-filen I nästa steg skapas en.modul-fil. Denna fil ska döpas till samma namn som.info-filen, i detta fall helloworld.module. Det är den här filen som styr hela modulen och vad den ska göra. Enligt dokumentationen så ska man börja sin modul med följande kommentar: <?php // $Id: dinmodulsnamn.module /** * Custom functions for this site. */ install and Fields API,
17 Under kommentar fältet så börjar din moduls funktioner. Notera PHP-taggen inte skall vara stängd. <?php // $Id: helloworld.module /** * Custom functions for this site. */ echo Hello World! ; 3.4 Lösning av plugin-hantering Målet med plugin-hanteringen var att kunna anropa plugin för att inkludera resultat av dessa i en webbsidas innehåll. I innehållet på en webbsida placeras en "shortcode", en tagg omsluten av hakparenteser, som webbsideramverket sedan, när en webbsida sätts ihop inför visning, ersätter med lämplig funktionalitet. Hela webbsidans innehåll scannas efter shortcodes då en callback-funktion körs vid varje matchning. En shortcode har två delar, separerade med ett kolon, vilka är den grupp shortcoden tillhör samt dess namn. [Grupp:Namn] En funktion finns för varje shortcode-grupp som sedan utför den specificerade shortcoden, angiven med dess namn. Det finns en shortcode grupp "Plugin" som laddar angivet plugin. Exempel på en shortcode som vill köra en plugin vid namn "HelloWorld": [Plugin:HelloWorld] I ramverkets plugin-mapp placeras en mapp för varje installerat plugin i vilken samtliga filer bör återfinnas som pluginet består av. Den plugin-fil som utgör ingången till pluginet, vilken är den enda fil ramverket letar efter, namnges även den med plugin-namnet samt filändelsen ".php". Ingångsfilen måste innehålla en klass med samma namn som plugin-namnet. På grund av detta begränsas valet av plugin-namn till de klassnamn som är tillåtna enligt PHP syntax. I pluginklassen är det sedan en metod "RunPlugin()" som måste implementeras, då detta är den metod ramverket kommer att anropa på önskad plats i webbsidans innehåll. Denna metod returnerar resultatet av pluginet i form av en sträng. 12
18 Denna plugin-klass måste även läggas i ett namespace (endast en nivå från roten) med samma namn som klassen. I callback-funktionen för matchningen kontrolleras att det angivna pluginet, identifierat på namnet, är installerat. Det som kontrolleras är att plugin-filen, plugin-klassen samt metoden RunPlugin existerar. Om kraven uppfylls kommer pluginets RunPlugin-metod köras och resultatet returneras och ersätter shortcoden, på dess plats, i webbsidans innehåll. Anropandet av plugins genom shortcodes påvisas med ett flödesdiagram i Figur 1. 13
19 Figur 1 - Flödesdiagram av pluginhantering 3.5 Första omgången användartestning Den första testomgången, som genomfördes av Morgan Nadler (se bilaga 4) och David Strömbom (se bilaga 5), gav indikationer på att dokumentationen (se bilaga 2) hade brister. 14
20 Morgan hade problem med namnsättningen. Han döpte plugin-mappen och plugin-filen till olika namn. Sedan tyckte han att det inte framgick tydligt i dokumentationen. Förutom namngivningen tyckte Morgan att det var enkelt att skapa och anropa plugin. David tyckte det var väldigt logiskt att döpa allt till samma namn och i plugin-klassen använda en RunPlugin-funktion. Han tyckte också det var ett väldigt enkelt sätt att exekvera plugins på. Namngivningen var dock lite klurig, enligt honom där han glömde skapa mappen i början. Han missuppfattade även i början av testet vart plugin-klassen skulle placeras, där han trodde den skulle skrivas direkt i redigeringsläget på webbsidan. 3.6 Andra omgången användartestning I och med den andra testomgången, som genomfördes av Marcus Westlund (se bilaga 6) och Adam Solander (se bilaga 7), upptäcktes en felaktighet i dokumentationen. Namnsättningen och placeringen av plugin-filerna upplevdes dock inte som någon svårighet under detta test med korrigerad dokumentation (se bilaga 3). Marcus hade inga problem i någon av de två uppgifterna. Han hade inte stött på shortcodes tidigare, vilka blev en ny erfarenhet för honom, trots detta hade han inga problem med att utföra den delen av testet. Marcus tyckte det var enkelt att skapa och anropa plugin i systemet, men påpekade att dokumentationen var en viktig faktor för att han skulle klara av att utföra uppgifterna. Adam hade problem när han skulle anropa sitt skapade plugin, då han skrivit fel taggar (asp-taggar i stället för php-taggar). Han lyckades till slut upptäcka sitt egna misstag, där han ändrade till phptaggar, för att få pluginet att fungera. På vägen upptcäkte han ett skrivfel i dokumentationen där rotmappen för plugin blivit namngiven fel. Adam funderade även kring namespace, där han hade problem med att förstå om sådant skulle anges i shortcoden eller inte. Adam tyckte att det var en smidig lösning för att installera och anropa plugin. 15
21 4. Slutsats Det resultat vi kom fram till känner vi oss nöjda med; en väl fungerande plugin-hantering som känns enkel att använda. I Alchins artikel "A Simple Plugin Framework" kan man läsa om tre grundstenar han anser viktiga att följa när man designar en plugin-hantering: En neutral kopplingspunkt som är det enda pluginet och systemet, som använder pluginet, behöver känna till (för att uppnå "loose coupling"); Ett sätt för plugins att själva registrera sin närvaro; Ett sätt för systemet att komma åt plugins som är registrerade. Vi känner att vår lösning till stor del uppfyller dessa riktlinjer eller tips på saker att tänka på i ett plugin-ramverk. Eftersom vi studerat befintliga webbpubliceringsverktyg (Wordpress, Joomla och Drupal) har vi även där fått en del inspiration till vår lösning. Främst användandet av "shortcodes" i WordPress, där dessa används till att placera ut eller anropa något på en önskad plats i innehållet. I vårt fall använder vi oss av shortcodes för att göra just detta, där vi skapat en särskild plugin-shortcode som anropar ett plugin genom dess namn. Det skiljer dock en del på hur det är tänkt att använda plugins då vi i vårat webbsideramverk är ute efter att plugga in funktioner som genererar ytterligare innehåll, i en webbsidas innehåll, där användaren valt att anropa pluginet. Därför behöver inte plugin i vårt fall registrera sig själva, utan helt enkelt finnas tillgängliga på rätt plats i filstrukturen (det vill säga finnas i den mapp som utgör kopplingspunkten). När ett plugin anropas, (i vårt fall genom en shortcode), så söker systemet efter ett plugin med det namn man angett i shortcoden. Ur användartesterna fick vi positiva resultat gällande plugin-hanteringen. Vi fick även reda på att dokumentationen var en mycket viktig faktor för att plugin-hanteringen skulle vara enkel att förstå och användbar. De resultat i användartesterna som visade brister gällde just dokumentationen. Där var det viktigt hur tydlig man var med riktlinjer och att förklara tillvägagångssätt. Vi förstod nyttan med att ha en dokumentation, för att förklara skapandet och anropandet av plugins, då sådana dokumentationer var ovärderliga under vårt arbete med att utforska andra befintliga webbpubliceringsverktyg. 16
22 5. Källförteckning 5.1 Elektroniska källor Alchin, M. (2008). A Simple Plugin Framework. [ ]. Wikipedia. (2011). Loose Coupling. [ ] Wikipedia. (2011). Web content management system. [ ]. Wikipedia. (2011). Usabillity Testing. [ ]. Wikipedia. (2011). Think alout protocol. [ ] WordPress dokumentation. Standard Plugin Information. [ ] WordPress dokumentation. Plugin API/Hooks [ ] WordPress dokumentation. Shortcode API. [ ] Joomla doumentation. (2011). Create A Simple Module. [ ] Drupal dokumentation. (2011). Writing.info files. [ ] Drupal dokumentation. (2011)..install and the Fields API. [ ] 17
23 6. Bilagor 6.1 Bilaga 1: Uppgifter för användartest Uppgift 1: Skapa ett plugin. Beskrivning: Testpersonen skapar ett plugin, för att inkludera i DMQCMS, där denne har dokumentation för plugin-hantering i ramverket till hjälp. Steg 1. Skapa ett nytt plugin med namnet "Uppgift1" 2. Implementera pluginet så att denne returnerar textsträngen "Jag är uppgift 1". 3. Spara pluginet på rätt sätt. Uppgift 2: Inkludera ett plugin i en webbsidas innehåll. Beskrivning: Testpersonen anropar pluginet i en webbsidas innehåll, enligt dokumentationen. 1. Öppna en webbsida i redigeringsläge. 2. Anropa det plugin som skapades i Uppgift Spara redigeringen och granska resultatet. 18
24 6.2 Bilaga 2: Dokumentation (version 1) Plugin När du vill utöka funktionaliteten på en webbsida bör du lämpligen bryta ut sådan funktionalitet som plugin. Dessa plugin kan sedan anropas i innehållet på din webbsida genom användandet av shortcodes. Skapa ett plugin Namnsättning Du behöver namnge din plugin-mapp, -fil och -klass med ett giltigt klassnamn enligt PHP. Pluginfilen För att göra ett plugin måste du först skapa en mapp, döpt till pluginets namn, som placeras i webbsideramverkets "Plugin"-mapp. I denna skapade mapp lägger du sedan dina plugin-filer. Den enda fil som krävs är en PHP-fil, som blir pluginets ingångsfil, döpt även denna till pluginets namn med filändelsen.php. Namespace För att undvika krockar behöver du kapsla in dina pluginklasser i ett namespace döpt, även detta, till pluginets namn. Pluginklassen En klass döpt till pluginets namn måste finnas i ingångsfilen. Denna klass måste i sin tur implementera en metod vid namn "RunPlugin". Denna metod anropas av systemet direkt efter att plugin-klassen instansierats. Metoden RunPlugin skall sedan returnera en sträng, bestående av det som skall skrivas ut på webbsidan, på den plats i innehållet där pluginet anropats. Anropa ett plugin Anropa genom shortcodes I webbsideramverket kan du anropa funktioner genom användandet av shortcodes. Dessa shortcodes anropas genom att ange en grupp och sedan ett specifikt namn, separerade med ett 19
25 kolon. För att anropa ett plugin anger man då gruppen "Plugin" och sedan pluginets namn. Har man ett plugin vid namn "HelloWorld" så anger man alltså följande shortcode: [Plugin:HelloWorld] Exempel på Pluginfil "HelloWorld.php": <?php namespace HelloWorld; class HelloWorld { public function RunPlugin() { return "Hello World!"; } } 20
26 6.3 Bilaga 3: Dokumentation (version 2) Plugin När du vill utöka funktionaliteten på en webbsida bör du lämpligen bryta ut sådan funktionalitet som plugin. Dessa plugin kan sedan anropas i innehållet på din webbsida genom användandet av shortcodes. Skapa ett plugin Namnsättning Du behöver namnge din plugin-mapp, -fil och -klass med ett giltigt klassnamn enligt PHP. Pluginfilen För att göra ett plugin måste du först skapa en mapp, döpt till pluginets namn, som placeras i webbsideramverkets "Plugin"-mapp. I denna skapade mapp lägger du sedan dina plugin-filer. Den enda fil som krävs är en PHP-fil, som blir pluginets ingångsfil, döpt även denna till pluginets namn med filändelsen.php. Exempel på sökvägen till din pluginfil: Plugin/MittPlugin/MittPlugin.php Namespace All din plugin-kod bör finnas i ett namespace med namnet på ditt plugin, det vill säga samma namn som din plugin-klass. Detta namespace placerar du i början av dina plugin-filer. Exempel: namespace MittPlugin; Pluginklassen En klass, som även denna döps till pluginets namn, måste finnas i ingångsfilen. Denna klass måste i sin tur implementera en metod vid namn "RunPlugin". Denna metod anropas av systemet direkt efter att plugin-klassen instansierats. Metoden RunPlugin skall sedan returnera en sträng, bestående av det som skall skrivas ut på webbsidan, på den plats i innehållet där pluginet anropats. 21
27 Exempel på Pluginfil "Plugins/HelloWorld/HelloWorld.php": <?php namespace HelloWorld; class HelloWorld { public function RunPlugin() { return "Hello World!"; } } Anropa ett plugin Anropa genom shortcodes I webbsideramverket kan du anropa funktioner genom användandet av shortcodes. Dessa shortcodes anropas genom att ange en grupp och sedan ett specifikt namn, separerade med ett kolon. För att anropa ett plugin anger man då gruppen "Plugin" och sedan pluginets namn. Har man ett plugin vid namn "HelloWorld" så anger man alltså följande shortcode: [Plugin:HelloWorld] 22
28 6.4 Bilaga 4: Användartest med Morgan Nadler Testperson (TP): Morgan Nadler, Webbprogrammerare-student Datum: Uppgift 1: Skapa ett plugin Uppgifterna presenteras för TP. TP läser igenom dokumentationen högt. TP skapar en ny mapp vid namn dzemal, i denna nyskapade mapp skapar han i sin tur en php-fil vid namn morgan.php, vilken kommer utgöra hans plugin. TP noterar att han har skapat en fil men att han ska skapa ett namespace (Kollar dokumentationen och läser högt), och han skapar klassen som han kallar för morgan. TP skapar sedan en funktion vid namn printname. Funktionen ska returnera en sträng med 'Morgan skapar ett plugin'. Han läser dokumentationen högt återigen, utan uppmaning, han skapar ytterligare en funktion vid namn RunPlugin. Tuffa grejjer ni har byggt. TP tänker högt och undrar om det ett objekt han ska returnera, handledaren refererar honom till dokumentationen. TP tänker och läser dokumentationen högt. Läser vidare om shortcodes och verkar lite fundersam, men säger sen; okej, som om han har kommit fram till vad han ska göra. TP ändrar till public function på funktionen. TP säger att han är klar men handledaren noterar att han har gjort fel, och uppmanar honom till att läsa dokumentationen igen. TP läser högt från dokumentationen och säger; Juste, jag måste skapa en mapp också. TP läser dokumentationen igen för att kolla så han har gjort rätt. TP undrar kring namnet på pluginet, var står de vad de ska heta? TP har lite funderingar kring hur man ska namnge pluginet, då det inte framgår i dokumentationen. jaha, allt ska ha samma namn, säger han och döper om mappen till Morgan. TP läser sedan vidare i dokumentationen, Hur ska jag sparar pluginet. TP lägger sedan in mappen i plugin, kommenterar att de utförs ungefär som vid installation av vilket plugin som helst (photoshop osv.). Uppgift 2: Anropa ett plugin TP Läser uppgiften högt och kommer fram till att han ska öppna sidan i redigeringsläge. jag ska redigera, så då måste det vara här (Klickar på Edit Content ). TP går tillbaka till uppgiften o läser igen. TP börjar läsa dokumentationen för att reda ut hur han ska anropa sitt plugin. TP anropar sitt plugin genom att skriva shortcoden och sen kontrollera med dokumentationen. Sparar och direkt så säger han grymt smidigt. Så här ska man kanske börja koda istället, säger han och småskrattar. Utvärdering 23
29 Handledaren frågar TP: Vad tyckte du? TP Svarar: Det var enkelt, men det var lite krångligt med namngivningen enligt dokumentationen. Handledaren frågar: Var de problem med skapandet av pluginet? TP Svarar: Nej endast dokumentationen som är lite klurigt att förstå vid namngivning. Att skapa ett plugin var som att skapa en vanligt php-klass. TP säger att det var grymt. TP frågar kring frågeställningen, handledaren läser upp den. TP säger att det är perfekt och att den har uppnåtts. 24
30 6.5 Bilaga 5: Användartest med David Strömbom Testperson (TP): David Strömbom, Webbprogrammerare-student Datum: Uppgift 1: Skapa ett plugin Handledaren presenterar uppgiften för TP. TP läser dessa högt, och besöker webbsidan samt öppnar dokumentationen som blivit presenterade av handledaren. TP undrar ska jag testa skapa plugin och läser sedan högt från uppgiften: spara pluginet på rätt sätt. jaha skapa ett plugin då.. Du behöver namnge ditt plugin. TP börjar med att noga läsa igenom dokumentationen innan han börjar. TP verkar lite fundersam kring hur han ska göra så han läser, högt, vidare i dokumentationen. TP informerar handledaren om att han håller på att läser, jag läser hela dokumentationen innan jag sätter igång och gör något. Okej efter en liten stund, då ska vi se. TP besöker sidan och tror att han ska göra något där. TP skapar en php-fil vid namn Uppgift1.php, TP öppnar filen i sin redigerare och läser dokumentationen. Då skapar man en klass med samma namn, ja vi kör det... då ska man ha rätt namespace, samma som Uppgift1... Uppgfit1 kalla jag den tror jag... sedan skapar vi en klass i den då... eller joo, de ska vara samma också där... "och sen har vi en då ska vi se, skapa en metod, funktion, som skulle heta runplugin".. "Och sen, ska vi se, vad skulle den returnera, det var"... (kollar i dokumentationen)... jag är uppgift 1... "Return jag är uppgift 1." Funderar lite, och så sparar man pluginet då... eh sen så ska man då. TP fortsätter läsa dokumentationen, var det allt jag skulle göra i uppgift 1? Handledaren uppmanar honom att läsa dokumentationen. då ska vi se, säger TP. TP läser återigen högt från dokumentationen: jaha man bör skapa en mapp med samma namn då, då gör vi det. TP skapar en mapp vid namn Uppgift1. Uppgift 2: Anropa ett plugin TP läser uppgift: öppna webbsidan i redigeringsläge. TP klickar på edit content och läser vidare i uppgiften. Då var det en, skulle man göra en sån här (TP skriver en hakparentes) och skriva plugin, och kolon namnet uppgift 1, medans han skriver detsamma... slutklammer där. TP läser dokumentationen och säger "precis, så", och sparar. Utvärdering Handledaren frågar: Vad tyckte du? Kommentarer? TP svarar: Det var inte alls svårt, det var väldigt logiskt att döpa allt till samma namn, och att ha en sådan start, RunPlugin, logiskt om man kan MVC. Handledaren frågar: Det här med att plugin, då? TP svarar: Det var ett väldigt enkelt sätt att exekvera plugins, så är det bara. Namngivningen var lite klurig, 25
31 glömde skapa mappen där i början, tänkte att jag skulle skapa det (plugin-klassen) på sidan, istället för filen när jag.. ehm, innan jag förstod vad uppgiften var. Handledaren frågar: Tycker du att vi uppfyllt frågeställningen? Varpå handledaren läser upp den högt. TP svarar: Ja det tycker jag, ni har undersökt hur man lätt får in ett plugin o hanterar det, så ja det tycker jag. 26
32 6.6 Bilaga 6: Användartest med Marcus Westlund Testperson (TP): Marcus Westlund, Arbetar med IT-drift Datum: TP inleder testsessionen med att studera dokumentationen. TP läser igenom hela avsnittet om plugin-hantering från början till slut. Uppgift 1: Skapa ett plugin TP inleder första uppgiften genom att skapa en ny katalog vid namn Uppgift1. I denna mappen skapar och placerar han en fil vid namn Uppgift1.php. TP öppnar filen i notepad och kopierar in texten "namespace Uppgift1;" från dokumentationen och klistrar in den mellan två php-taggar han skrivit i php-filen. Sedan kopierar TP klassdefinitionen från dokumentationen och klistrar in denna i php-filen. TP ändrar klassnamnet till Uppgift1 och vad den ska returnera enligt uppgiften. TP funderar kring shortcodes hur han ska använda detta i plugin-klassen. Handledaren avbryter efter en stund och meddelar att TP inte behöver bekymra sig om shortcodes förrän uppgift2. Uppgift 2: Anropa ett plugin TP påbörjar uppgift 2 genom att befinna sig på en webbsida på en installation av DMQCMS. TP klickar på knappen "Edit Content" för att öppna sidan i redigeringsläge. Där i kopierar han shortcoden från dokumentationen och klistrar in denna i webbsidans innehåll. Sedan ändrar han den delen i shortcoden som anger plugin-namnet till "Uppgift1". TP klickar på knappen "Save Content" för att spara innehållet. Utvärdering TP hade aldrig tidigare stött på shortcodes och det var en ny erfarenhet för honom att använda dessa. TP tyckte att det var ett enkelt sätt att skapa och anropa plugin. Men han tycker att dokumentationen var en viktig faktor för att man ska kunna förstå hur man går till väga. 27
33 6.7 Bilaga 7: Användartest med Adam Solander Testperson (TP): Adam Solander, konsult hos Sogeti, Borlänge Datum: Uppgift 1 TP läser steginstruktionerna för uppgift1. TP söker igenom dokumentationen lite snabbt efter bilder med TODO:s, hittar inga. TP utforskar webbsidan. TP går tillbaka till dokumentationen och läser mer i denna. TP meddelar att han känner sig ha koll nu efter att läst lite djupare. TP skapar en katalog i Plugin-mappen och döper denna till Uppgift1. TP skapar en php-fil och döper denna till Uppgift1.php. TP öppnar sedan php-filen i Notepad++. Där i skriver han öppningstaggar med ASP-stil (<% %>). TP kopierar koden från dokumentationen med exemplet på klassen och klistrar in denna mellan start- och slut-taggen. TP tycker exemplet hjälpte honom mycket och värderar det som det viktigaste i dokumentationen. TP modifierar den inklistrade koden så den stämmer för uppgiften. TP kollar igenom koden riktigt och jämför med uppgiften samt dokumentationen. Uppgift 2 TP öppnar redigeringsläget genom att klicka på knappen "Edit Content". TP Antog genast att den är till för att gå i redigeringsläge. TP kollar dokumentationen efter hur man anropar plugin. TP testar det som står där (shortcoden) men byter ut plugin-namnet till Uppgift1. TP meddelar att han funderar på var namespaces kommer in i det hela, vart i shortcoden man ska ange namespace. TP testar att spara och får resultatet "INVALID SHORTCODE". TP går igenom dokumentationen för att felsöka vart han kan ha gjort fel. TP kopierar koden på nytt, testar, och misslyckas igen. 28
34 TP byter namn på Plugin-mappen till Plugins. TP meddelar att han blir fundersam för att det står olika i dokumentationen för vad plugin-rotmappen ska heta, Plugins på vissa ställen och Plugin på andra. TP ändrar till slut asp-taggarna till php-taggar (<?php..?>) och det funkar. Utvärdering TP tycker att det blev rörigt när det stod olika i dokumentationen angående plugin-rotmappen. TP tycker att det är ett smidigt sätt att installera och anropa plugin. TP funderade också på namespace, men menade på att han kanske hade dålig php-förståelse. I OOP-system brukar man anropa namespace och sen klassen, förklarade han. 29
CMS, optimerade för programmerare Eller hur kan ett sådan skapas.
Examensarbete CMS, optimerade för programmerare Eller hur kan ett sådan skapas. David Strömbom 2011-05-20 Ämne: Datavetenskap Nivå: B Kurskod: 1DV40E Abstrakt Denna rapport fokuserar på att undersöka några
Översikt. Installation av EasyPHP 1. Ladda ner från http://www.easyphp.org/ Jag använder Release 5.3.4.0 2. Installera EasyPHP.
Laboration 1 Översikt 1. Att komma igång med laborationsmiljön a. installera Aptana Studio 3 b. Installera EasyPHP 2. Testa lite programmering a. Testa enkla uppgifter b. Testa automatiskt 3. Skapa inloggningsformulär
Lathund för studenter
Uppdaterad 2005-09-07 Lathund för studenter vid inläggning av uppsatser i Xerxes Xerxes: http://theses.lub.lu.se/undergrad/ INLÄGGNING AV UPPSATS I XERXES 1. Inloggning Gå in i Publicera i Xerxes i menyn
Installationsanvisningar VisiWeb. Ansvarig: Visi Closetalk AB Version: 2.3 Datum: 2009-12-14 Mottagare: Visi Web kund
Sida: 1(7) Installationsanvisningar VisiWeb Ansvarig: Visi Closetalk AB Version: 2.3 Datum: 2009-12-14 Mottagare: Visi Web kund Detta dokument Detta dokument beskriver hur man installerar VisiWeb på en
Ladda upp filer fra n PLC till PC
Supportdokument Ladda upp filer fra n PLC till PC Synpunkter, felaktigheter, önskemål etc. för dokumentet meddelas Fil: Malthe_Suppo_Ladda upp filer från.docx Innehållsförteckning 1. Allmänt... 2 2. Installation
NetBeans 5.5. Avsikt. Projektfönster
NetBeans 5.5 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till
Joomla CMS Del 2 av 2
JOOMLA 3 CMS GRUNDKURS DEL 2 AV 2 Innehåll Extern Struktur Menyer och Sidor Användare och Åtkomstnivåer Skapa en sida som kräver inloggning Moduler och Positioner Sökmotor och undermenyer Copyright Mahmud
Användarhantering Windows 7 I denna laboration kommer vi att skapa nya användare och grupper och titta på hur man hantera dessa.
Användarhantering Windows 7 I denna laboration kommer vi att skapa nya användare och grupper och titta på hur man hantera dessa. Antal: Enskilt Material: En dator med Windows 7 (Vista, Windows 8 eller
CMS. - Content management system
CMS - Content management system Agenda CMS Server, webbhotell och FTP Wordpress, ställ mycket frågor Om vi hinner - Snabb genomgång av CMS - uppgiften Nu & Då Sidor med bara HTML och CSS kräver manuell
725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack
725G61 - Laboration 7 Implementation av ett API Johan Falkenjack December 13, 2013 1 Inledning Hittills i kursen har vi tittat på grundläggande programmering och grundläggande objektorientering. I den
Lathund Hemsida för Astma- och Allergiförbundets föreningar
1/17 Lathund Hemsida för Astma- och Allergiförbundets föreningar Webbplatsen är byggd i WordPress 3.8.1. Den är byggd för att på ett enkelt sätt ska kunna skapa nya föreningshemsidor och innehåller: Inloggning
Content Management System. Publiceringssystem
Content Management System Publiceringssystem Vad är ett Content Management System (CMS)? Ett verktyg för att separera innehåll från presentation Skapa webbsidor utan att kunna html Låt många skapa sidor
Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.
Informationsinfrastruktur 7.5 hp Mattias Nordlindh Inledning Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer. Dokumentet består av
Version: 1.0.1 Datum: 2012-05-23. DynaMaster 5 Golf Övergripande manual
Version: 1.0.1 Datum: 2012-05-23 DynaMaster 5 Golf Övergripande manual Innehållsförteckning 1 Inledning 3 1.1 Systemkrav 3 2 Logga in 4 3 Översikt 5 4 Verktygsfält och funktioner 6 4.1 Översikt gränssnitt
Services + REST och OAuth
Services + REST och OAuth Syftet med Services Skapa ett Drupal API för att exponera webb- API:er. Officiella versionen - Create a unified Drupal API for web services to be exposed in a variety of different
LVDB i GEOSECMA. Innehåll. Inledning. Produkt: GEOSECMA Modul: LVDB Skapad för Version: Uppdaterad:
Produkt: GEOSECMA Modul: LVDB Skapad för Version: 10.4.1 Uppdaterad: 2019-05-21 LVDB i GEOSECMA Innehåll Inledning... 1 Hämta XML från NVDB... 2 Full LVDB-import... 3 Inkentell LVDB-import... 4 NVDB inställningar...
Tomas Axelsson
Tomas Axelsson tomas.axelsson@highendmedia.se https://highendmedia.se Vad är WooCommerce? WooCommerce är ett e-handelsplugin till WordPress. Det är idag världens populäraste e-handelsplattform! WooCommerce
Användarhandledning Version 1.2
Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...
Laboration 1 Introduktion till Visual Basic 6.0
Laboration 1 Introduktion till Visual Basic 6.0 Förberedelse Förbered dig genom att läsa föreläsningsanteckningar och de kapitel som gåtts igenom på föreläsningarna. Läs även igenom laborationen i förväg.
Avancerade Webbteknologier
Projektledning, Business Knowledge Användbarhet & Layout Avancerade Webbteknologier Lkti Lektion 1 Kommunikation Tobias Landén tobias.landen@chas.se Avancerade webbteknologier del 1 (4 KY poäng) Syfte
LEX INSTRUKTION REPLIKERING UPPGRADERING
LEX INSTRUKTION REPLIKERING UPPGRADERING Innehållsförteckning LEX INSTRUKTION REPLIKERING UPPGRADERING... 1 1 REPLIKERING AV LEXPROD.AES TILL LEXEXT.AES... 1 2 GENERERA SQL-SCRIPT FRÅN DEN EXISTERANDE
Laboration 10 - Eclipse
Laboration 10 - Eclipse Avsikten med laborationen är att du ska träna på att använda paket, att du ska packa några klassfiler i en jar-fil och slutligen använda innehållet i en jar-fil från en annan klass
Flytt av. Vitec Mäklarsystem
Flytt av Vitec Mäklarsystem Augusti 2014 Innehållsförteckning 1. Inledning... 2 Förutsättningar... 2 Läs noga igenom manualen... 2 Systemkrav... 2 Kundservice/Teknisk support... 2 2. Skapa säkerhetskopia...
SCRATCH är ett nytt programmeringsspråk som gör att du kan skapa dina egna interaktiv historier, animationer, spel, musik och konst.
version 1.4 SCRATCH är ett nytt programmeringsspråk som gör att du kan skapa dina egna interaktiv historier, animationer, spel, musik och konst. Dra gå blocket i Scripts-området. Klicka på blocket för
Manual
Manual www.jur.lu.se Innehållsförteckning Logga in 1 Skapa en ny sida 2 Sidinställningar 3 Spara sidan 5 Skapa undersidor 6 Redigera en befintlig sida 7 Länk i löpande text 7 En mejladress som länk 8 Skapa
Lathund för publicering i KI Commons wikitjänst
1 Lathund för publicering i KI Commons wikitjänst (juni 2013) Skapa ett konto 1. Gå till webbplatsen: http://www.kicommons.wikispaces.net/ och klicka på Join längst upp till höger i webbläsarfönstret.
Axiell Arena Visa BOOK-IT:s resurser
Axiell Arena Visa BOOK-IT:s resurser Innehåll 1 Introduktion... 2 2 Lägg xsl-fil i Dokumentbiblioteket... 3 3 Web service-koppling mot BOOK-IT:s resurser... 7 1 Axiell Bibliotek AB 1 Introduktion I Axiell
NetBeans 7. Avsikt. Projektfönster
NetBeans 7 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till
Skapa spellista i play.lnu.se Gör en samling med filmer som hör ihop
Skapa spellista i play.lnu.se Gör en samling med filmer som hör ihop Vad är en spellista? En spellista är ett sätt att visa en lista över filmer (eller ljudklipp) som hör ihop med varandra. En spelare
Quick Guide till Mahara och din Portfolio
Quick Guide till Mahara och din Portfolio 2012-05-20 A. Arstam Sida 1 Quick Guide till Mahara och din Portfolio Syftet med portfolion är att Du genom reflektion och självutvärdering ska få insikt i ditt
Installation av F13 Bråvalla
Website: http://www.rbdesign.se Installation av F13 Bråvalla RBDESIGN FREEWARE - ESCK Norrköping-Bråvalla 1. Ladda ner och packa upp filerna i en mapp som du har skapat på ett lättöverskådligt ställe utanför
Alternativet är iwindows registret som ni hittar under regedit och Windows XP 32 bit.
TNT ExpressShipper installation. Om ni redan har en ExpressShipper installation på företaget behöver ni först ta reda på vilken version som är installerad och sökvägen till databasen. Versionen ser ni
Objektorienterad programmering i Java I
Laboration 0 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: ca 2 3 timmar Att läsa: sidan 45 52 Syfte: Att ladda hem och installera utvecklingsmiljön Att skriva ditt första Javaprogram
Konfigurera Wordpress som Hemsida istället för blogg
Konfigurera Wordpress som Hemsida istället för blogg - exempel från hemsidorna: www.vestus.se och www.thingsbym.se Copyrightinformation: Detta dokument är fritt att använda, även kommersiellt, så länge
Content Management System. Publiceringssystem
Content Management System Publiceringssystem Vad är ett Content Management System (CMS)? Ett verktyg för att separera innehåll från presentation Skapa webbsidor utan att kunna html Låt många skapa sidor
ANVÄNDARTESTNING VID LULEÅ UB Ola Andersson Luleå universitetsbibliotek
ANVÄNDARTESTNING VID LULEÅ UB Ola Andersson Luleå universitetsbibliotek 2017-11-08 ANVÄNDARTESTNING UPPSTART Olika metoder för att testa användbarheten Expertutvärdering -En utvärdering som utförs av ett
Karusell med länkade omslagsbilder
[Skriv text] Axiell Arena Karusell med länkade omslagsbilder Axiell har tagit fram en funktion som presenterar titlar/katalogposter i Arena i form av en interaktiv karusell som visar omslagsbilder. Funktionen
Introduk+on +ll programmering i JavaScript
Föreläsning i webbdesign Introduk+on +ll programmering i JavaScript Rune Körnefors Medieteknik 1 2012 Rune Körnefors rune.kornefors@lnu.se Språk Naturliga språk Mänsklig kommunika+on T.ex. Svenska, engelska,
Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.
Eclipse Avsikt Att bekanta dig med Eclipse programmeringsmiljö, dvs att med hjälp av Eclipse 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till byte-kod
Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio
Ditt första C#-program med Visual Studio Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så
Manual för Typo3 Site-Admins version 4.04
2008-05-09 Manual för Typo3 Site-Admins version 4.04 1 2 Innehåll: 1. Ändra formelement på sidan 4 1.1 Adress 6 1.2 Pil-länkar 6 1.3 Länk-meny 6 1.4 Sidansvarig 6 1.5 Toppbild 7 1.6 Institutionslänk 7
Användarhandledning för koppling av dokument
nvändarhandledning Modul: lla vser: Koppla dokument i 3L 2006 1[11] nvändarhandledning för koppling av dokument Olika typer av dokument kan kopplas till poster i en 3L-databas. Exempelvis kan en eller
Dokumentnamn/Document Name: Installation Blankett.doc
Titel: Installationsanvisning för Blankett Utfärdare: Mia Landin Dokumentnamn/Document Name: Installation Blankett.doc Säkerhetsklass: Extern Enbart dokument i säkerhetsklass Publik får distribueras till
Kom igång. Readyonet Lathund för enkelt admin. Logga in Skriv in adressen till din webbsida följt av /login. Exempel: www.minsajt.
Kom igång Logga in Skriv in adressen till din webbsida följt av /login. Exempel: www.minsajt.se/login Nu dyker en ruta upp på skärmen. Fyll i ditt användarnamn och lösenord och klicka på "logga in". Nu
Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.
Använd olika lager. Döp lagren! Organisera era bibliotek! Design av interaktiv multimedia Ge era symboler instansnamn för att hitta dem med AS. Nytt för denna kurs: Ingen ActionScript-kod i.fla-filen!
Blogga med Wordpress
Blogga med Wordpress Introduktion En blogg kan användas på en lång rad olika sätt, även om det vanligaste kanske är att se den som en mer eller mindre publik yta på nätet att dela med sig av tankar och
Elektronisk publicering TNMK30
Elektronisk publicering TNMK30 Förra gången Usability & interaktionsdesign Projektintroduktion Bildbehandling. Byte av handledare Istället för Martin Johansson Annsofi Pettersson, annpe655@student.liu.se
FrontPage Express. Ämne: Datorkunskap (Internet) Handledare: Thomas Granhäll
FrontPage Express I programpaketet Internet Explorer 4.0 och 5.0 ingår också FrontPage Express som installeras vid en fullständig installation. Det är ett program som man kan använda för att skapa egna
Du behöver: PowerPoint, Camtasia (inte nödvändigt, men visas i detta kompendium), ett YouTube-konto, itslearning
Aktiverande föreläsning i itslearning Du vill: Att studenterna ska se en kort föreläsning och aktivt svara på frågor i samband med att de tittar. Efter att de svarat på en fråga kan de gå vidare till nästa
Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6
Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner
Lathund Hemsida för Astma- och Allergiförbundets föreningar
1/17 Lathund Hemsida för Astma- och Allergiförbundets föreningar Webbplatsen är byggd i WordPress 3.8.1. Den är byggd för att på ett enkelt sätt ska kunna skapa nya föreningshemsidor och innehåller: Inloggning
Installera din WordPress med 9 enkla steg
Installera din WordPress med 9 enkla steg Den här artikeln förutsätter att du har satt upp en webbserver eller har köpt ett webbhotell där du kan placera din nya WordPress hemsida. Om du inte har det,
1. Logga in som Wordpress-administratör till den sajen som ni vill säkerhetskopiera.
Säkerhetskopiera Wordpress. Wordpress lagrar hemsidor på sitt egna sätt och det är därför ytterst svårt att bara göra en kopia av hemsidan. Vi på QBRITS rekommenderar att man använder Duplicator från Life
1. Logga in som Wordpress-administratör till den siten som ni will kopiera och flytta någon annan stans.
Flytt av Hemsidor gjorda i Wordpress mellan domäner och siter. Wordpress lagrar hemsidor på sitt egna sätt och det är därför ytterst svårt att bara kopiera en hemsida till ett annat ställe. Vi på QBRITS
Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php
Introlektion PHP är ett av de enklare språken att lära sig just pga. dess dynamiska struktur. Det används för att bygga upp båda stora och mindre system. Några vanliga system som använder sig av PHP är
Formulär i Sitecore. Innehåll. Inlogg sitecore:
Formulär i Sitecore Inlogg sitecore: http://cms2.in.stofair.se/sitecore/login Innehåll Formulär i Sitecore... 1 Skapa formulär... 2 Lägga till fält... 3 List Type:... 5 Bekräftelsemail... 8 Peka ut formuläret...
Kom igång med Etikettskrivaren 1. Ladda ner följande installationsprogram Ladda ner Drivrutiner för etikettskrivare Zebra
Kom igång med Etikettskrivaren Följande är en lathund över de installationer/inställningar som behöver göras i ditt operativsystem för att skrivaren ska fungera fullt ut. Vi utgår ifrån att du har en skrivare
Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.
Bankkonto - övning Övningar att göra efter lärardemostration. Filen bankkonto.zip innehåller ett projekt med klassen Bankkonto. Zippa upp denna fil och öppna projektet i BlueJ och skriv vidare på klassen
Installationsguide fo r CRM-certifikat
Installationsguide fo r CRM-certifikat För att säkerställa en säker inloggning till CRM Finance webb så behöver alla kunder installera ett kund-unikt klientcertifikat innan man kan försöka logga in i systemet.
MANUAL TILL SKYLTSYSTEMET
Sida 0 av 17 Version: 124 (EL) MANUAL TILL SKYLTSYSTEMET Beskrivning och instruktioner för Skyltsystemet. 2010-10-01 Jerntorget Sverige AB JERNTORGET SVERIGE AB BOX 256, 792 24 MORA TFN: 0250-141 00 FAX:
Instruktion för installation av etikettskrivare 2.27
Instruktion för installation av etikettskrivare 2.27 1/17 Dokumenthistorik: Revision Datum Utförd av Kommentar 1.0 2017-10-20 Jonte Rydberg Första utgåva 1.7 2018-11-08 Jonte Rydberg Uppdaterat info för
Redaktörens Lathund för Glokala. Så här redigerar du en redan befintlig hemsida. Så här skapar du en länk till en extern hemsida
Redaktörens Lathund för Glokala Glokala Folkhögskolan www.glokala.se Hej och välkommen till redaktörens lathund! Detta är en snabbguide för dig som har behörigheter att skapa och uppdatera sidor på Glokalas
Kom igång med FrontPage 2003
Kom igång med FrontPage 2003 Skolorna i Kristianstads kommun har inte gemensam licens som med vissa övriga Microsoft-program utan licens måste köpas för varje dator som det ska installeras på. Din tekniker
DT069G - Multimedia för webben - VT16_P4
DT069G - Multimedia för webben - VT16_P4 Lärmodul 5 CMS MaSv1219 Malin Svensson Kravspecifikation - Uppgiften för den här lärmodulen är att: 1. Skapa en webbplats med valfritt CMS. Webbplatsen ska uppfylla
Gränssnitt för FakeGranska. Lars Mattsson
Gränssnitt för FakeGranska av Lars Mattsson (larsmatt@kth.se) Innehållsförteckning 1 Introduktion...3 2 Genomförande:...3 3 Användning...5 4 Kända buggar:...6 5 Källförteckning...6 2 1 Introduktion Taken
Administrationsmanual ImageBank 2
Administrationsmanual ImageBank 2 INNEHÅLL 1. Konventioner i manualen 3 2. Uppmärksamhetssymboler 3 3. Vad är imagebank SysAdmin 4 4. Guide för att snabbt komma igång 5 5. Uppgradera din imagebank 1.2
Vilken version av Dreamweaver använder du?
Sida 1 av 7 Lektion 1: sida 1 av 4 Till kursens framsida Sida 2 av 4» Lektion 1 Då ska vi sätta igång med den här kursens första lektion! Här kommer du att få lära dig hur man skapar och förbereder webbplatser
Innehåll. 1 Välkommen 2 Logga in 3 Gränssnittet 4 Skapa nyhetsbrev 5 Moduler och utseende 6 Texter 7 Bilder 8 Skicka nyhetsbrev 9 Sammanfattning
Bli proffs på apsis Innehåll 1 Välkommen 2 Logga in 3 Gränssnittet 4 Skapa nyhetsbrev 5 Moduler och utseende 6 Texter 7 Bilder 8 Skicka nyhetsbrev 9 Sammanfattning 1 Välkommen Info: I den här guiden lär
Guide Ett FitNesse-test
Guide Ett FitNesse-test Ladda ned RubySlim Från: fitnesse.org -> plugins -> Ruby Slim for Ruby 1.9.3 Klicka på länken till github Leta reda på Zip-knappen -> ladda ned Lägg rubysiim valfri katalog jag
Arg-administratörens guide till Umbraco v 1.2.1
Arg-administratörens guide till Umbraco v 1.2.1 Logga in 1. Öppna en webbläsare och gå till inloggningssidan: https://www.sfog.se/umbraco/ 2. Skriv in följande användarnam & lösenord : 3. Klicka på Logga
Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse
Verktyg och Utvecklingsmiljö Föreläsning 2 Eclipse Verktyg Modern programutveckling innebär att man måste behärska ett antal verktyg. Editorer Kompilatorer Avlusare(debugger) Versionshantering(kommer i
Webbprogrammering, grundkurs 725G54
Webbprogrammering, grundkurs 725G54 Lab 4, 5 ERD PHP + MySQL Återblick Idag Sessions PHP och MySQL för samband Lab 6 725G54: Genomgång projektuppgift Avstämning av kursmål Om sessions På IDA måste ni göra
<script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
AngularJS Skriven av: Isak Glans. Datum: 2015-04-29. Kurs: Webbutveckling. Lärare: Per Sahlin. Utbildning: Systemutvecklare i.net, Newtons Yrkeshögskola. 1 Sammanfattning Syftet med denna uppsats är att
E13 "Behind the Wild"
E13 "Behind the Wild" Föreläsning 13, HT2014 Det vi missat och lite till Kurs: 1dv403 Webbteknik I Johan Leitet E13 Behind the Wild Dagens agenda Cookies Web storage Context/ändra context Augmentation
KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09
Laboration 4, ISG A04 och DVG A08 HT-09 Laborationen går ut på att skapa en enkel bankbok. Ni skall i bankboken kunna registrera upp till 30 transaktioner som kan bestå av insättning, uttag eller checkuttag.
Hur man lägger upp och redigerar dokument i Typo3.
Hur man lägger upp och redigerar dokument i Typo3. Typo3 är ett så kallat CMS, Content Management System där du enkelt och smidigt kan lägga ut kursinformation och bilder. Detta verktyg är webbaserat vilket
Presentera dig själv Laboration 1
Laborationsanvisning Presentera dig själv Laboration 1 Författare: Johan Leitet Version: 2 Datum: 2011-08-01 Inledning Denna inledande laboration syftar i mångt och mycket till att du ska känna dig bekväm
Innehåll Introduktion... 3 InteractiveScene.config... 3 Scener <scenes>... 3 Typsnitt <fonts>... 3 Övergångar <transitions>...
Innehåll Introduktion... 3 InteractiveScene.config... 3 Scener ... 3 Typsnitt ... 3 Övergångar ... 4 Mall för slide ... 5 , ...
Allmänt om programvaror och filer i Windows.
Allmänt om programvaror och filer i Windows. Vart sparade du dokumentet? I Word. Jag har fått detta svar mer än en gång när jag försökt hjälpa någon att hitta ett dokument som de tappat bort i sin dator.
Att använda Java SE JDK 6
Att använda Java SE JDK 6 Programmeringsspråket Java är utvecklat av det amerikanska företaget Sun Microsystems. Sun erbjuder gratis en utvecklingsmiljö för java-programmering, Java 2 SE (Standard Edition).
Så här skriver du ditt första program i C++
Så här skriver du ditt första program i C++ Introduktion till att skapa Solution, Project och källkodsfil i Visual Studio 2013 Författare Anne Norling Kurs: Strukturerad programmering med C++ Kurskod:1DV433
Brasklapp: REV:s rådgivande verksamhet omfattar egentligen inte något detaljerat IT-stöd, men eftersom många väghållare har behov av att effektivt
Brasklapp: REV:s rådgivande verksamhet omfattar egentligen inte något detaljerat IT-stöd, men eftersom många väghållare har behov av att effektivt kunna förmedla information vill vi med denna presentation
TDP013 Node.js, JSCoverage, Mocha. Marcus Bendtsen Institutionen för Datavetenskap
TDP013 Node.js, JSCoverage, Mocha Marcus Bendtsen Institutionen för Datavetenskap Återblick - Progressive Enhancement HTML, CSS, JavaScript - Klienten Den statiska webben... Vi känner till HTML, CSS och
LUPstudentpapers. Manual Reviewer
LUPstudentpapers Manual Reviewer 1:1 10/3 2009 Manual Reviewer Om du vill granska uppsatser vid din institution men ännu inte är registrerad som Reviewer, vänligen kontakta Publicera@lub.lu.se. Om du redan
MANUAL FÖR JÄGAREFÖRBUNDETS KRETSAR
MANUAL FÖR JÄGAREFÖRBUNDETS KRETSAR I följande dokument hittar ni information om hur ni administrerar er nya hemsida. Manualen går endast igenom grundläggande administration. För mer avancerad redigering
Innehåll. Dokumentet gäller från och med version 2014.3 1
Innehåll Introduktion... 2 Före installation... 2 Beroenden... 2 Syftet med programmet... 2 Installation av IIS... 2 Windows Server 2008... 2 Windows Server 2012... 6 Installation av webbapplikationen
2009-08-20. Manual för Typo3 version 4.2
2009-08-20 Manual för Typo3 version 4.2 1 2 Innehåll: 1. Allmänt 4 2. Grunderna i Typo3 5 2.1 Knappar 5 2.2 Inloggning 5 2.3 Den inledande vyn 6 2.4 Sidträdet 7 3. Sidor 8 3.1 Skapa en ny sida 8 3.1.1
Instruktioner för uppdatering från Ethiris 4.10 till 5.x
Instruktioner för uppdatering från Ethiris 4.10 till 5.x Nedan följer instruktioner för hur man går till väga vid uppdatering av ett Ethirissystem version 4 till version 5. När man uppdaterar Ethiris från
Övning: Arbeta med Azure Explorer
1 Övning: Arbeta med Azure Explorer Azure Explorer är ett tredjpartsverktyg för att hantera lagring i Azure. Arbetsuppgift 1: Ladda ner och installera Azure Explorer på din utvecklingsmaskin i Azure. Steg
Skapa egna PartyLite webbsidor 04/02/14
Skapa egna PartyLite webbsidor 04/02/14 Skapa egna PartyLite webbsidor Edit on 1 st master slide to add content Logga in på CBC och välj under Uppdatera Gästinformation -> Elektroniska tjänster Läs igenom
Gran Canaria - Arbetsbeskrivning knapplänkar (Mediator 8)
Gran Canaria - Arbetsbeskrivning knapplänkar (Mediator 8) I detta exempel kommer du att lära dig Att skapa en ny presentation från början Att skapa en enkel knapp Att använda händelseinställningar, events
Användarguide Lathund Tema Modersmåls webbplats
Användarguide Lathund Tema Modersmåls webbplats Kevin Mavane 1 Innan vi börjar Tema Modersmåls webbplats har två huvudsakliga delar: En ut som dina besökare ser och en in som du som administratör använder
Redigera forskarprofil i EpiServer
Redigera forskarprofil i EpiServer Innehåll Logga in... 2 Navigera... 3 Favoriter... 3 Redigera innehåll på sidan... 4 Namn... 4 Signatur... 4 Är forskarstuderande... 4 Mina doktorander... 4 Visa mina
ANVÄNDAR HANDLEDNING FÖR ADVITUMS KUNDPORTAL
ANVÄNDAR HANDLEDNING FÖR ADVITUMS KUNDPORTAL Utfärdad av: Markus Persson Version: 1.1 Datum: 2013-05-31 Innehållsförteckning Område Dokumenttyp Ver.1.1 Advitum Innehållsförteckning... 2 Allmänt... 3 Varför
Instruktion för installation av etikettskrivare 2.31
Instruktion för installation av etikettskrivare 2.31 1/20 Dokumenthistorik: Revision Datum Utförd av Kommentar 1.0 2017-10-20 Jonte Rydberg Första utgåva 1.7 2018-11-08 Jonte Rydberg Uppdaterat info för
Widgetguiden Vad är Publits widgetshop?
Widgetguiden Den här guiden är till för dig som vill använda Publits widgetshop för att enkelt sälja böcker direkt på din egen hemsida, blog eller Facebook. Här går vi steg för steg igenom processen för
Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).
LULEÅ TEKNISKA UNIVERSITET Tentamen i Objektorienterad programmering och design Totala antalet uppgifter: 5 Lärare: Håkan Jonsson, Tomas Johansson, 491000 Resultatet anslås senast 08-05-16 i A-huset. Tillåtna
Guide för Innehållsleverantörer
Library of Labs Content Provider s Guide Guide för Innehållsleverantörer Inom LiLa ramverket är innehållsleverantörer ansvariga för att skapa experiment som "LiLa Learning Objects", att ladda upp dessa