19
Examensarbete David Strömbom 2011-05-20 Ämne: Datavetenskap Nivå: B Kurskod: 1DV40E CMS, optimerade för programmerare Eller hur kan ett sådan skapas.

CMS, optimerade för programmerare Eller hur kan ett sådan ...427462/FULLTEXT01.pdf · The test platform Dast CMS indicates that it is ... Wordpress 3.1 innehåller 846 filer och

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CMS, optimerade för programmerare Eller hur kan ett sådan ...427462/FULLTEXT01.pdf · The test platform Dast CMS indicates that it is ... Wordpress 3.1 innehåller 846 filer och

Examensarbete

David Strömbom

2011-05-20

Ämne: Datavetenskap

Nivå: B

Kurskod: 1DV40E

CMS, optimerade för programmerare

Eller hur kan ett sådan skapas.

Page 2: CMS, optimerade för programmerare Eller hur kan ett sådan ...427462/FULLTEXT01.pdf · The test platform Dast CMS indicates that it is ... Wordpress 3.1 innehåller 846 filer och

Abstrakt

Denna rapport fokuserar på att undersöka några av de CMS som finns på marknaden

idag. Syftet är att se om dessa CMS är optimerade för programmerare och ger den frihet

som man vill ha när man skapar webbsajter. Utifrån dessa undersökningar skapas sedan

en testplattform för att se hur ett CMS skulle kunna skapas för att vara mer optimerat

för programmerare och ge dem den frihet som önskas. Testplattformen Dast CMS visar

att det går att skapa ett CMS som är mer anpassat för programmerare istället för

konfigurerare.

Abstract

This article focuses on examining some CMS available on the market today. The aim is

to see if these CMS is optimized for programmers and provides the freedom that you

want when creating websites. Based on these examinations a test platform is then

created to see how a CMS could be created that’s more optimized for programmers and

give them the freedom that is desired. The test platform Dast CMS indicates that it is

possible to create a CMS that is more customized for programmers instead of

configurators.

Page 3: CMS, optimerade för programmerare Eller hur kan ett sådan ...427462/FULLTEXT01.pdf · The test platform Dast CMS indicates that it is ... Wordpress 3.1 innehåller 846 filer och

Förord

Idéen till detta arbete uppkom då jag ville skapa ett verktyg för att skapa webbsidor med

större frihet än många existerande CMS idag kunde erbjuda. Jag ville ha full kontroll

över koden och över när, var och hur koden exekveras, samtidigt så ville jag att detta

verktyg ska vara snabbare och smidigare än att skapa allt från grunden. Det har varit

intressant att undersöka och skapa den testplattform som i alla fall är en början på det

verktyg som är målet. Tack till min handledare Daniel Toll för hjälp med kod samt med

att bolla idéer om hur målet kunde uppfyllas.

Page 4: CMS, optimerade för programmerare Eller hur kan ett sådan ...427462/FULLTEXT01.pdf · The test platform Dast CMS indicates that it is ... Wordpress 3.1 innehåller 846 filer och

Innehållsförteckning

Abstrakt ................................................................................................................ I

Abstract ................................................................................................................ I

Förord ..................................................................................................................II

1. Bakgrund ...................................................................................................... 1

1.1 Introduktion till problemområdet ................................................................................ 1

1.1.1 CMS på markanaden idag ..................................................................................... 1

1.1.2 Problem ................................................................................................................... 3

1.2 Tidigare forskning ........................................................................................................... 4

1.3 Avgränsningar .................................................................................................................. 4

2. Metod ........................................................................................................... 5

2.1 Metoddiskussion .............................................................................................................. 5

3. Genomförande .............................................................................................. 6

4. Resultat ........................................................................................................ 7

5. Slutsats ........................................................................................................11

6. Källförteckning ........................................................................................... 14

6.1 Elektroniska källor ........................................................................................................ 14

6.2 Artiklar ............................................................................................................................ 14

Page 5: CMS, optimerade för programmerare Eller hur kan ett sådan ...427462/FULLTEXT01.pdf · The test platform Dast CMS indicates that it is ... Wordpress 3.1 innehåller 846 filer och

1

1. Bakgrund

Enligt Vaidyanathan och Mautone (2009) är ett Content Management System (CMS)

ett system som gör det möjligt för användaren att hantera dynamiskt innehåll på en

webbsida genom ett användarvänligt gränssnitt. Detta görs normalt genom

kommunikation med en databas där användaren kan spara och hämta den information

som behövs. Det gör att användaren har möjlighet att lätt anpassa webbsidornas

innehåll efter personlig smak och kan skapa en mer interaktiv upplevelse för

webbsidornas besökare.

Några av de mest använda CMS1 idag är Wordpress, Drupal, Joomla och vBulletin.

1.1 Introduktion till problemområdet

Hur mycket frihet ger existerande CMS för programmerare idag?

Hur kan ett CMS skapas som är mer anpassat för programmerare och ger den frihet

som kan behövas?

Frihet är en abstrakt term, med frihet i detta sammanhang menas möjligheten att skapa

och konfigurera sidorna efter de önskemål som finns via det CMS som används. Ett

CMS som är mer anpassat för en programmerare ger därför denna möjlighet att

utveckla sidorna utan några begränsningar. Syftet med detta är att skapa ett verktyg

som, utifrån de tester och undersökningar som kommer göras, ger en programmerare

möjligheten att snabbt och effektivt skapa en skräddarsydd sida åt en klient.

Författaren har under detta projekt installerat och undersökt ett par av de mesta

använda CMS på marknaden idag. De CMS som valts är Wordpress och Drupal då

dessa är de mest populära idag1.

1.1.1 CMS på marknaden idag

1.1.1.1 Wordpress

Wordpress är ett av de vanligaste och mest populära1 CMS som används idag. Det går

snabbt att installera och få igång. 11 tabeller skapas i databasen vid grundinstallation.

Wordpress 3.1 innehåller 846 filer och 83 mappar som tar upp 11,4 MB

1 http://trends.builtwith.com/cms

Page 6: CMS, optimerade för programmerare Eller hur kan ett sådan ...427462/FULLTEXT01.pdf · The test platform Dast CMS indicates that it is ... Wordpress 3.1 innehåller 846 filer och

2

hårddiskutrymme vid grundinstallation. Grundinstallationen ger användaren utseendet

av en blogg, för att ändra utseendet så får man ladda ner ett annat tema eller skapa ett

egen skräddarsytt tema. Det går ganska snabbt att lära sig Wordpress, man får dock ett

starkt intryck av att det är skapat för bloggar. I gränssnittet så kan man skapa inlägg

och det är ju helt inriktat mot bloggar. Man kan även skapa sidor som man kan editera

med en inbyggd WYSIWYG-editor. Bloggintrycket kan förminskas genom att

konfigurera en del inställningar, men för att få bort det helt samt få en sida för ens

specifika behov måste ett skräddarsytt tema skapas. Om man vill skräddarsy sidan mer

än att ändra text och bilder så måste man installera tillägg. I grundinstallationen är 2

tillägg installerade. Det går att bläddra och söka efter fler plugin direkt från Wordpress

gränssnitt. Det är lätt att hitta något som kan passa behovet då det finns över 14000

plugin nu och antalet växer ständigt. Om man inte hittar något som passar det man vill

ha så får man skriva ett eget plugin eller redigera ett redan existerande plugin (vilket

går att göra direkt från gränssnittet). När man väl har ett plugin som man vill installera

så går detta smidigt och man kan sedan använda det vart man vill på den aktuella

sidan. Wordpress har bra dokumentation och det är lätt att hitta det som man behöver

mer information om. Wordpress är ett mycket kraftfullt och användarvänligt verktyg

och även fast det kan finnas en del begräsningar till att skräddarsy allt så är det ett bra

alternativ för många användare.

1.1.1.2 Drupal

Drupal är också ett mycket populärt2 CMS. Drupals grundinstallation är större än

Wordpress. Vid grundinstallation skapas 73 tabeller i databasen. Drupal 7.0 innehåller

1125 filer, 139 mappar som tar upp 14,2 MB hårddiskutrymme vid grundinstallation.

Drupal går snabbt att installera och komma igång med. Författaren upplever dock att

det var lättare att lära sig Wordpress gränssnitt. Drupal ger inte samma bloggintryck

som Wordpress, det märks att Drupal är större i storlek och mer avancerat. Istället för

att ha en administration/presentation-sida så har man då man loggat in en

administratör-meny överst på sidan. Alla val man gör i menyn läggs som en ”overlay”

så man stannar kvar på sidan. Detta gör att man inte behöver växla mellan

2 http://trends.builtwith.com/cms

Page 7: CMS, optimerade för programmerare Eller hur kan ett sådan ...427462/FULLTEXT01.pdf · The test platform Dast CMS indicates that it is ... Wordpress 3.1 innehåller 846 filer och

3

administrationsgränssnittet och pressentationsgränssnittet för att se eller göra

förändringar på webbsidorna.

Det kommer inte med en editor med grundinstallationen av Drupal utan man kan

istället ändra ”Text format”. Man kan antingen skriva bara text eller ren html-kod.

Detta gör att Drupal är mer fritt för de användare som kan html. Det finns en

WYSIWYG-editor att ladda ner som ett plugin om så skulle önskas. Plugin (eller

moduler som de kallas i Drupal) är lätta att ladda ner och installera. Det finns även här

många att välja från (7857 stycken då detta skrivs). Allt som allt så ger Drupal ett mer

professionellt intryck, det är mer avancerat och man kan tänka sig att det passar mer

för användare med lite högre kunskapsnivå inom html.

1.1.2 Problem

1.1.2.1 Wordpress

Wordpress är byggt mer för konfigurerare eller de användare som inte har någon

kunskap om programmering. Det är byggt för att i stort sett vem som helst ska kunna

skapa en webbsida och börja skriva innehållet i en miljö som de känner till. Det kan

vara svårt för en programmerare att skräddarsy sidan så som de själva vill ha den. Den

frihet som man ofta vill ha som programmerare minskas. Den frihet som saknas är

bland annat möjligheten att kunna skriva PHP-kod vart man vill på sidan, utan att

behöva skapa eller ladda ner plugin. Eftersom det inte finns någon ordentlig debugger

så kan det bli svårt att felsöka koden som skrivs i ett plugin, det blir därför svårt att

skapa ett stort plugin.

1.1.2.2 Drupal

Drupal är byggt för lite mer avancerade användare som kan en del html och liknande.

Det kan dock även här vara problem att få en skräddarsydd sida. Den frihet som man

ofta vill ha som programmerare minskas. Drupals grundinstallation kommer även med

en del moduler som kan vara överflödiga för en del sidor. Den frihet som saknas är

bland annat möjligheten att kunna skriva PHP-kod vart man vill på sidan, utan att

behöva skapa eller ladda ner plugin. Det finns en modul för Drupal som gör det

möjligt att skriva PHP-kod blandat med html men denna måste man som sagt ladda

ner och installera. Eftersom det inte finns någon ordentlig debugger så kan det bli

svårt att felsöka koden som skrivs i ett plugin, det blir därför svårt att skapa stora

moduler.

Page 8: CMS, optimerade för programmerare Eller hur kan ett sådan ...427462/FULLTEXT01.pdf · The test platform Dast CMS indicates that it is ... Wordpress 3.1 innehåller 846 filer och

4

1.2 Tidigare forskning

Efter mycket letande har ingen forskning hittats inom området CMS för

programmerare.

1.3 Avgränsningar

Detta projekt kommer att ha fokus på att undersöka en del av de CMS som finns på

marknaden idag och se om dessa kan begränsa en programmerare att skapa en

webbsida eller applikation som uppfyller de behov och krav som skapats. Vidare så

skapas en testplattform för ett CMS för att undersöka hur en programmerare kan

producera ett eget CMS som ger mer frihet. Avgränsningar görs för säkerhet då detta

är ett stort område som inte hinns med. Vidare fokuserar testplattformen Dast CMS

på funktionalitet och stora avgränsningar kommer göras för utseendet av detta system.

Page 9: CMS, optimerade för programmerare Eller hur kan ett sådan ...427462/FULLTEXT01.pdf · The test platform Dast CMS indicates that it is ... Wordpress 3.1 innehåller 846 filer och

5

2. Metod

Under detta projekt kommer en explorativ metod användas. Wordpress och Drupal

kommer att undersökas och prövas. En testsida där möjligheter för att kunna blanda

PHP-kod med XHTML från gränssnittet kommer att skapas. En testplattform

kommer att skapas där möjligheterna för mer frihet för programmerare i ett CMS

kommer att testas och undersökas. För att minska begränsningen i testplattformen när

koden skrivs så skall PHP-kod direkt kunna blandas med XHTML via gränssnittet vid

redigering eller skapandet av en sida. Lagring av kod i databas kommer att testas. Den

testmiljö som kommer användas är Windows 7 på lokal maskin och med hjälp av

programmet EasyPHP som agerar som lokal server samt mysql-databas. Dessa tester

kommer även testas på webbserver på ett webbhotell.

2.1 Metoddiskussion

Den största bristen med denna metod är att en testgrupp av programmerare inte finns

som kan testa releaserna av projektet. Andra brister i metoden är möjligtvis att de

resultat som framkommer av detta projekt till stor del är författarens åsikter och

bredare studier med fler parter kan ge ett mer rättvisande resultat. Ett annat alternativ

är att använda sig av intervjuer av programmerare som använder CMS idag och se vad

dessa tycker samt om de känner sig begränsade. Enkäter riktade till programmerare

som använder CMS skulle också kunna användas. Grundtanken med detta projekt var

ursprungligen att skapa ett CMS för programmerare och att använda en explorativ

metod bedömdes vara mest lämpligt. Den valda metoden passar denna typ av arbete,

större undersökningar med intervjuer är för tidskrävande.

Page 10: CMS, optimerade för programmerare Eller hur kan ett sådan ...427462/FULLTEXT01.pdf · The test platform Dast CMS indicates that it is ... Wordpress 3.1 innehåller 846 filer och

6

3. Genomförande

Testerna gick till så att webbsidor skapades i de utvalda CMS. En testsida skapades där

möjligheterna för att blanda PHP-kod i XHTML undersöktes. De olika funktionerna

och möjligheterna undersöktes för varje CMS. Utvecklingsmöjligheterna för dessa

testades och begränsningar i deras design undersöktes. Utifrån dessa tester och

undersökningar skapades sedan en testplattform av hur ett CMS kan skapas för att

förbättra en programmerares frihet vid utvecklingen av sidor åt en klient.

Genomförandet skedde utan några avvikelser. Testerna genomfördes som planerat.

Page 11: CMS, optimerade för programmerare Eller hur kan ett sådan ...427462/FULLTEXT01.pdf · The test platform Dast CMS indicates that it is ... Wordpress 3.1 innehåller 846 filer och

7

4. Resultat

I Drupal och Wordpress så fanns ingen möjlighet att blanda PHP-kod och XHTML

på annat sätt än att skriva eller ladda ner en modul som möjliggör detta.

Testplattformen Dast CMS skapades för att se om ett CMS med mer frihet kunde

förbättra en programmerares möjligheter att enkelt och snabbt skapa skräddarsydda

webbsidor. Dast CMS ger användaren möjlighet att, via administrationsgränssnittet,

skapa webbsidor och placera dessa i meny som sedan visas på

pressentationsgränssnittet. Det som gör att denna testplattform skiljer sig från

Wordpress och Drupal är att när en webbsida skapas så kan användaren skriva PHP

kod som sedan körs och placeras på webbsidan (se figur 1 & 2). Med Dast CMS så kan

PHP-kod och XHTML blandas efter programmerarens behov och på så sätt ge mer

frihet i sättet som de programmerar.

Page 12: CMS, optimerade för programmerare Eller hur kan ett sådan ...427462/FULLTEXT01.pdf · The test platform Dast CMS indicates that it is ... Wordpress 3.1 innehåller 846 filer och

8

Figur 1. Här visas hur PHP kod kan skrivas direkt på sidan. Resultatet visas på figur 2.

Figur 2. Här visas resultatet av PHP kod (se figur 1).

Page 13: CMS, optimerade för programmerare Eller hur kan ett sådan ...427462/FULLTEXT01.pdf · The test platform Dast CMS indicates that it is ... Wordpress 3.1 innehåller 846 filer och

9

Detta ger enligt författaren användaren mer frihet. Alla PHP-filer från mappen

”data/modules” inkluderas in i programmet vilket gör det möjligt för användaren att

skapa klasser som den sedan kan kalla på via webbsidorna för att återanvända kod (se

figur 3 - 5).

Figur 3. Här visas koden från PHP-fil som anropas via koden från sidan (se figur 4).

Figur 4. Här visas hur funktionen ViewDate anropas via koden (se figur 3). Resultatet

av koden visas i figur 5.

Page 14: CMS, optimerade för programmerare Eller hur kan ett sådan ...427462/FULLTEXT01.pdf · The test platform Dast CMS indicates that it is ... Wordpress 3.1 innehåller 846 filer och

10

Figur 5. Här visas resultatet av PHP koden som skrevs på sidan (se figur 4).

Page 15: CMS, optimerade för programmerare Eller hur kan ett sådan ...427462/FULLTEXT01.pdf · The test platform Dast CMS indicates that it is ... Wordpress 3.1 innehåller 846 filer och

11

5. Slutdiskussion

Slutsatsen som jag kom fram till är att existerande CMS inte är optimala för

programmerare utan är mer anpassat för konfigurerare. Efter att ha genomfört

undersökningen av Wordpress så kan författaren konstatera att det är skapat mer för

konfigurerare än för programmerare. Det ger dock användaren chans till utveckling

genom att möjliggöra skapandet av moduler som kan installeras och på så sätt ge en

programmerare möjligheten att skräddarsy webbsidan. Wordpress har emellertid

begränsat moduler som skapats genom designbeslut som tagits under utvecklingen av

detta CMS. Drupal har liknande designbeslut. Varken Wordpress eller Drupal ger

användaren möjlighet att skriva egna funktioner för användning på webbsidor, utan

moduler måste skapas, laddas ner och installeras.

5.1 Vidareutveckling av Dast CMS

Genom att ha utvecklat testplattformen Dast CMS har jag kunnat se hur man skulle

kunna utveckla ett CMS som kan ge programmerare mer frihet. Detta kan dock leda

till brist på säkerhet eftersom ägaren av en webbserver kanske inte vill att de som

utvecklar sidan ska kunna komma åt eller förstöra information på servern. När man

därför utvecklar Dast CMS vidare så bör man begränsa det en del. Man skulle kunna

tänka sig att man skapar olika roller som har olika rättigheter av exekvering av PHP.

Vissa funktioner borde begränsas så att vissa roller inte får använda dem. Ett exempel

vore PHP-funktionen3 die som avslutar all PHP och gör att all kod efter anropet till

die inte körs vilket kan ha förödande effekter. Vissa roller bör heller inte ha möjlighet

till att ändra databasstrukturen, som drop table som tar bort en hel tabell i databasen.

All PHP-kod som skrivs på sidorna bör kollas så funktioner och delar som användaren

inte har tillåtelse att använda tas bort. Man kan också tänka sig att man har olika

gränssnitt för olika roller, en konfigurerare behöver inte ha ett gränssnitt där

modulhantering visas utan att redigera innehållet på sidorna är tillräckligt.

Vidareutveckling av Dast CMS kan också göras genom att man inom ”moduler” ska

kunna utveckla PHP-skript direkt i gränssnittet. En ordentlig editor måste utvecklas

som ger användaren hjälpmedel som färgmarkering av koden, radnumrering samt

debugger som underlättar vid större moduler. Detta saknades i Wordpress och Drupal.

3 http://php.net/

Page 16: CMS, optimerade för programmerare Eller hur kan ett sådan ...427462/FULLTEXT01.pdf · The test platform Dast CMS indicates that it is ... Wordpress 3.1 innehåller 846 filer och

12

Man kan tänka sig att man skapar en iframe eller liknande på sidan som när man tar

spara modul visar om det finns några fel i koden. Detta kan man kanske göra genom

att använda funktionen php_check_syntax som tar en specifik fil och testar om det

finns några skript fel. Denna iframe kan även innehålla den utskrift som skriptet

genererar så användaren direkt ser vad modulen skriver ut. Sen så borde man också

tänka på namespace, vad ska hända om man använder en variabel som används någon

annanstans på sidan och hur kan man hindra att man gör det? Om man nu vill

begränsa användandet av dessa namespace. Man kan kanske lägga in dem i den

kontroll av kod som körs för att kolla funktioner som används eller liknande. Denna

utveckling borde köras på en egen server eller genom att använda en virtuell server

som funktionen Runkit_Sandbox4 vilket skapar en ny instans som körs separat från

resten av servern. Med hjälp av Runkit_Sandbox kan man ta bort funktioner som inte

får användas genom att använda disable_functions och disable_classes. Användaren

kan därför ges möjligheten att utveckla med PHP som den önskar men med

begränsade rättigheter. På så sätt kan man inte göra någon skada på existerande sidor

när man utvecklar en modul.

5.2 Fil eller databas

En annan sak som bör diskuteras är om man ska lägga modulerna som skapas som en

fil på servern som görs idag eller om dessa ska läggas i databasen. Genom att lägga

dem i databasen så kan man versionshantera kod lättare genom att använda insert

istället för update när man lägger in kod. Man kan då ha en tabell knuten till dem som

håller koll på vilken version av koden som körs och man kan på så sätt gå tillbaka till

tidigare kod lättare. Angående säkerhet så är det kanske säkrare att ha dem som filer då

det är lättare att göra SQL-injektioner om koden ligger i databas, eftersom databasen

är knuten till användarkonton på Dast CMS. Att ladda upp en fil till webbservern är

dock mer begränsat då den oftast är knuten till ett FTP-konto. En annan fördel med

att använda moduler som filer är ju att man lättare kan dela funktionerna man skriver.

Det är lättare att ladda upp en fil till en mapp på servern som man sedan kan använda

hur mycket man vill än att kopiera och klistra in kod i olika tabellfält i databasen.

4 http://php.net/manual/en/runkit.sandbox.php

Page 17: CMS, optimerade för programmerare Eller hur kan ett sådan ...427462/FULLTEXT01.pdf · The test platform Dast CMS indicates that it is ... Wordpress 3.1 innehåller 846 filer och

13

5.3 Dokumentation

Det får heller inte glömmas att om man skapar ett CMS så måste god dokumentation

finnas så att de som använder det lättare kan sätta sig in i hur allt fungerar. Man bör ha

exempel på hur man gör saker som att skapa ny sida, skriva PHP-kod på sidorna, hur

man skriver moduler, hur man anropar dessa från sidorna och menyhantering. Ju fler

exempel som tas med i dokumentationen ju lättare blir det för användaren att förstå

hur detta CMS är uppbyggt.

5.4 Bör Dast CMS vidareutvecklas?

Genom att vidareutveckla Dast CMS enligt diskussionen ovan som hjälp så kommer

ett CMS som är optimerat för programmerare kunna skapas. Det kommer ge

användaren en större frihet att utveckla sidorna så som de vill ha dem. Det kommer

också vara snabbare än att koda allt från grunden. Man kan sedan lätt lämna över

underhållet av sidorna och dess innehåll till konfigurerare. Detta gör att det finns

mycket värde i att vidareutveckla Dast CMS.

Page 18: CMS, optimerade för programmerare Eller hur kan ett sådan ...427462/FULLTEXT01.pdf · The test platform Dast CMS indicates that it is ... Wordpress 3.1 innehåller 846 filer och

14

6. Källförteckning

6.1 Elektroniska källor

BuiltWith trends (2011). CMS Usage Statistics

http://trends.builtwith.com/cms [2011-05-11]

PHP documentation (2011). PHP.net

http://php.net/ [2011-05-11]

6.2 Artiklar

Vaidyanathan, G. & Mautone, S. (2009). Security in Dynamic Web Content

Management Systems Applications. Communications of the ACM, (12), 121-125.

Page 19: CMS, optimerade för programmerare Eller hur kan ett sådan ...427462/FULLTEXT01.pdf · The test platform Dast CMS indicates that it is ... Wordpress 3.1 innehåller 846 filer och

351 95 Växjö / 391 82 Kalmar

Tel 0772-28 80 00

[email protected]

Lnu.se