Redovisningar phpmvc

Här kommer redovisningarna för hela kursen att hamna. Bra med allt på ett och samma ställe :)

Kmom08: Projekt och examination

Min första tanke var att detta kursmoment inte skulle vara så svårt. Vi har ju gått igenom ganska mycket, men oj vilken tid allt tar och ramverket är bra komplext! Jag har haft en del riktigt bra idéer om vad jag ska göra, bland annat lägga till flerspråksstöd à la WordPress, med pot-, po- och mo-filer. Tyvärr är det ju lite för avancerat för mig, märker jag, samt att jag inte riktigt haft den tiden att hålla på hur mycket som helst. Jag har nöjt mig med att implementera de krav som är obligatoriska och lite blandat av de övriga kraven.

Krav k1: Installera från GitHub

  1. Ladda ner Zelda från GitHub: git clone git://github.com/vanjaanderson/Zelda.git.
  2. Se till att data-mappen är totalt skrivbar. I denna mapp läser och skriver Zelda alla sina filer: cd Zelda; chmod 777 site/data.
  3. Peka webbläsaren till mappen som du clonade och installationsinstruktioner startar därefter av sig själv.

Detta krav var inte särskilt svårt, det var ju egentligen redan klart. Jag har laddat ner och installerat ramverket flera gånger, både lokalt och på studentservern. Närmare instruktioner i ramverket och GitHub. Referensinstallationen ligger här.

Krav k2: Den berömda 5-minuters installationen (optionellt)

Det första jag gjorde var att kontrollera om .ht.sqlite finns, och finns den inte, eller är tom, så dirigeras man till kontrollern setup. Där kontrolleras php-version, om databas kan köras, samt att site/data är skrivbar. Det blev en 5-minuters-installation, men kanske inte så avancerad som det var tänkt à la WordPress. På denna setup-sida finns utförliga instruktioner hur man ska installera. När man är inloggad kommer man enkelt åt sidan även efter installation.

Krav k3: Ett anpassningsbart ramverk

För detta krav har jag valt att lägga separat config-fil, förutom css-fil, i site/themes/mytheme-mappen. Webbplatsen utgår från core-temat som lätt anpassas enligt instruktioner både i själva filerna, readme.md, och på ”setup”-sidan. I den bästa av världar skulle jag ha gjort fler tabeller och matat in uppgifterna med formulär i databas direkt, men jag är ändå ganska nöjd med min lösning som innebär att användaren inte behöver gå in och peta i själva kärnan av ramverket.

Detta anpassningssätt är relativt enkelt för användaren att använda

Krav k4: Ett administrativt gränssnitt (optionellt)

Jag gjorde en meny som endast visas när man loggat in. I den menyn kommer man åt att skapa innehåll samt installationsinstruktioner. I övrigt har jag lämnat detta krav.

Krav k5: Valfri (optionellt)

Har ej gjort detta krav.

Krav k6: Projektdokumentation och Referensinstallation

Projektdokumentationen finns på Git hub. Samma instruktioner hittar man i installationsfasen eller på länk installera i menyn när man är inloggad root/root.

Slutord

Kontentan av hela kursen är att den har varit otroligt lärorik. Vi har gått igenom en hel massa på egentligen alldeles för kort tid (tycker jag) och jag kommer att behöva gå tillbaka och repetera efter kursen är slut. Även om inte allt har fastnat än, så har jag i alla fall ett ganska stort hum om hur MVC och CMF fungerar. Lite krokben har det satt för mig, att jag gjort en del webbplatser i WordPress, och att jag haft lite väl avancerade idéer om vad WordPress kan göra och vad jag således vill ha i mitt ramverk :S. Hursomhelst, så kommer jag att rekommendera kursen, och ger den en nia av tio på skalan.

Ett mycket stort plus är Git och GitHub-hanteringen som varit, genomgående i hela kursen. Bara det är värt all möda, svett och tårar jag lagt ner :).

Kmom07: Färdigställ och produktifiera ramverket

Jag följde Lydia helt och fullt även denna gång, när jag färdigställde webbplatsen. Men istället för att göra en ”Om-sida”, så lade jag dit min testsida med CTextFilter där. Jag gjorde inte extrauppgifterna denna gång.

Det var inte särskilt svårt att följa tutorialen men ramverket börjar bli ganska stort och det tar tid att utveckla det. Jag har taggat det på GitHub och testat att clona det till min dator, och det gick fint. PHPDoc fungerade bra att använda och jag gjorde det à la Mos. Skall utveckla det lite mer i projektet.

Min Todo-lista skulle kunna se ut så här:

  1. Lägga till bilder i innehållet.
  2. Olika nivåer på användare à la WordPress.
  3. Användare kan bara administrera sina inlägg/sida, inklusive radera dem. Superanvändare (administratör) har fullständiga rättigheter.
  4. Smidigt sätt att välja utseende: teman och layout vänster- eller högerställd.

I det stora hela är jag ändå ganska nöjd med mitt ramverk. Kursen har varit väldigt intressant och lärorik men också väldigt svår, bitvis. Nu ska jag sätta tänderna i slutprojektet.

Kmom06: CSS-ramverk och grid layout

Jag vet inte om jag gillar LESS. Det verkar lite för krångligt men jag gillar fördelarna med att använda variabler i css, en strålande tanke! Samtidigt tror jag att det blir lättare att utnyttja LESS när man planerar in det från allra första början, och inte som nu, när vi skulle omvandla befintlig css till LESS... Koden blev inte särskilt smart, men det är ju ett ypperligt tillfälle att checka hur man skriver koden för att få det så rent som möjligt. Hmm, jag kommer nog att gilla LESS vad det lider.

Gridbaserad layout har jag inte provat på förut men indelning av regioner känns bekant, efter att ha gjort en del webbplatser i Joomla. Mycket smart att dela upp sidan i tolv kolumner med spaltmellanrum emellan. På det sättet kan man flexa mellan 1, 2, 3 eller fyra kolumner på ett riktigt enkelt sätt. Jag har (skum)läst igenom alla länkar med typografi, fluid vs elastic layout, LESS och grids osv och det var mycket intressant kunskap att hämta därifrån.

Jag gjorde givetvis uppgiften ”Autokompilera LESS med lessphp” och låter funktionen vara kvar för att visa att det fungerar. I fortsättningen ska jag kolla på LESS-appen och förkompilera för att inte belasta webbservern. I övrigt körde jag tutorialen helt enligt anvisningarna och utan några som helst utsvävningar. Det var lite trixigt att få allt rätt, speciellt som mos kod på github var lite inaktuell. Jag gjorde inte heller extrauppgiften.

Kmom05: Innehåll

Vissa moment i denna uppgift var lite struligt till att börja med. Bland annat missade jag att skapa kolumn för filter i tabellen Content. Det tog ett bra tag innan jag kom på vad som var fel. Annars var det inga problem för mig att följa tutorialen. Dock tog allt lite tid att göra.

Skriften ”Skriva för webben” skumläste jag bara, då jag läst den förut i en annan kurs. Men det är alltid nyttigt med repetition och den är intressant. Jag läste också om Cross Site scripting, lite översiktigt, och blev lite skraj över alla typer av injektioner som kan ske... Det känns viktigt att aldrig glömma att man inte kan lite på någon! Läste även om Markdown/Markdown Extra samt SmartyPants/SmartyPants Typographer med stor behållning.

Extrauppgiften

Jag tvekade lite om jag skulle göra extrauppgiften med klassen CTextFilter, om jag skulle klara av den, men eftersom jag tror att jag kan ha nytta av klassen på sista uppgiften, så satte jag tänderna i uppgiften.

Jag implementerade Markdown, SmartyPants och Make Clickable i klassen, samt flyttade dit BBCode och HTML Purifier. Dessutom riggade jag en testsida som initieras med databasen, för att visa att det fungerar, och där man kan testa de olika filtren. För enkelhetens skull lade jag in alla filter i en Select/option-lista. Se testsidan och ändra filter på testsidan här.

Kul kursmoment!

Kmom04: Skapa modell och hantering av användare, grupper, profil och login

Detta kursmoment var inte lika tungjobbat som föregående, men ändå rätt stort. Jag clonade CForm från GitHub och kikade igenom tutorialen, CForm-klassen verkar logisk och bra. Jag valde dock att använda de delar av CForm som tas upp i Lydia-tutorialen, och inte implementera hela klassen.

Att jobba med Git och GitHub börjar kännas naturligt och det är en stor behållning av denna kurs. Den viktigaste faktorn till att kursmomentet kändes lättare, är att commitandet och taggandet till GitHub nu börjar bli rutin.

Ramverket blir mer och mer begripligt, men jag skulle nog strukturera upp det lite annorlunda om jag skulle göra från början nu. Istället för att ha en massa mappar i src, så skulle jag vilja dela upp filerna i model-, controller- och viewmappar. Det skulle kännas mer översiktligt.

Delmomentet med lösenord var intressant. Jag har trott att det är tillräckligt säkert att använda md5(), men nu har jag tänkt om angående att dessutom ”salta” lösenordet. Att man kan välja på flera olika metoder att hasha lösenordet är verkligen superbt, bara redigera i config-filen!

I övrigt har jag inte haft några större svårigheter. De frågor jag har haft har funnits svar på i forumet, och ofta när jag fick felmeddelande var det .htaccess som var felkonfigurerad. Det var mycket testande och en del felsökande men det gör bara att man går in under huden på ramverket :) Jag fortsatte att använda SQLite, vilket jag tycker är en smidig lösning, i alla fall till denna databas som inte är så stor.

Kmom03: En gästbok i ditt MVC-ramverk

Oj oj oj, vad jag har bråkat med git och github innan jag fick ordning på allt! Jag trodde jag gjort allt rätt, tills jag skulle backa tillbaka och ladda ner en version. Då upptäckte jag att det saknades filer :( Alltså slängde jag hela repot och började om från början. Nåja, inte helt från början, men jag taggade om alltihop.

Jag tyckte det inte var alltför svårt att hänga med i tutorialen, men vissa delar kändes det som att det saknades en del steg. Så det blev en del jämförelser i alla fall med mos kod, eller ganska mycket om jag ska vara ärlig...

Jag tror jag har ganska bra koll på MVC-strukturen bland annat eftersom man roddar runt upp och ner i mappar nu! Personligen skulle jag nog gärna lägga upp strukturen med mappar för controllers, models och views. Men jag tänker inte rodda runt nu bland mapparna. Jag har inte kollat några andra tutorials, men tänkte försöka kolla Laravel efter kursen.

Extraövningar

CodeIgniter var intressant att pröva på. Jag tycker strukturen är väldigt tydlig och relativt lätt att förstå. Jag gjorde övningen, att bygga gästbok utan problem. Gästbok i CodeIgniter.

Jag kikade lite på vyhantering i nya Lydia, men gick inte närmare in i hur det fungerar i praktiken.

Spamuppgiften gjorde jag och det fungerar så långt jag kan förstå. Jag testade först med ett vanligt textinput-fält med namn ”email” och satte ett villkor på att fältet ska vara tomt, i if-satsen för att lägga till ett meddelande. Så länge man inte skriver in något i email-fältet så sparas meddelandet, vilket gör att det borde fungera som det ska. Satte slutligen input till hidden.

Kmom02: Grunden till ett MVC-ramverk

Detta var ett riktigt tidskrävande kursmoment, men riktigt kul också! Mitt ramverk döpte jag till Zelda, efter äventyrs- och kultspelet med samma namn!

Jag följde tutorialen och tjuvkikade en hel del på mos källkod. Förutom att ramverket döptes till Zelda, så döpte jag den globala variabeln till $ze. Jag tycker strukturen i Lydia/Zelda är logisk och jag hade inga problem att hänga med i resonemanget om strukturen. Intressant att läsa om anledningen till att begreppet mvc skapades, för att dela upp projekt och dess kod för utvecklare (model), designers (view) och logistiker (controller).

I början blev det lite problem för mig när jag skapade .htaccess-filen. Jag lade den nämligen i roten på min localhost, vilket gjorde att alla mina projekt där omdirigerades till phpmvc-mappen! Inget kul alls... Ganska snart kom jag på att man kan ha en .htaccess-fil i vilken mapp som helst och då gick det bättre :)

Jag känner igen en del av strukturen med att ha skilda css:er och functions-filer för teman, då jag kikat lite under huven på både WordPress och Joomla. Jag gjorde inte någonting alls åt utseendet på temat. Var lite sugen på att göra ytterligare ett tema men avstod i brist på tid. Det blir ett senare projekt (om jag nu kommer att vidareutveckla just detta ramverk?).

Tutorialen om base_url() var intressant. Jag har ju stött på problemet med relativa länkar som inte fungerar när man gör omdirigeringar! Kommer inte ihåg på rak arm hur jag löste problemen men antar att jag stött på base_url() vid något tillfälle, annars har jag nog skrivit ”fulkod”, dvs hårdkodat länkarna.

Jag repeterade git/github och gjorde ett nytt repo som jag committade och taggade: Zelda v.0.1.0.

Jag har inte sökt efter ytterligare tutorials om mvc. Kollade Nettuts+: MVC for Noobs och den var bra. Jag gjorde inte heller extrauppgiften, jag tyckte det var tillräckligt svårt att få ihop allt ändå.

Kmom01: En boilerplate

Jag började att läsa de två första kapitlen i boken, men måste säga att allt inte kändes solklart... Det krävs nog att läsas om flera gånger innan allt fastnar.

Nästa steg var att skapa ett GitHub-konto och repository, så nu är jag förberedd för det.

Jag översiktsläste alla länkar i uppgiften, kollade HTML5-boilerplate. Laddade ner både från GitHub (länken) samt kollade mos lösning. Jag hade lite ambitioner att börja koda allt från scratch på denna kurs, men jisses vad många filer det var, redan så här i början... Valde till slut att gå vidare med mos kod, och har kollat igenom alla dokument, men måste erkänna att jag förstod långt ifrån allt.

Jag utvecklar på MacOSX 10.8.4 i Sublime Text och MAMP och fick ihop allt på min localhost, strålande!. Men när jag skulle lägga över allt på studentservern fungerade det dock inte. Jag kommenterade bort rewrite i .htaccess-filen men höll på att bli gråhårig när det inte fungerade i alla fall... Kom till sist på att rensa webbläsarens cache-minne och då fungerade det!!!

Konceptet med Boilerplate är intressant, speciellt på det vis som mos utvecklat det vidare, med en tema-mapp. Det känns lite som ett CMS à la WordPress på det viset. HTML5 är positivt att använda, bla för att doctypen blir kortare... Men, och det tycker jag är lite trist, det var väldigt mycket valideringsfel med Boilerplaten! CSS-koden validerade inte ens för 2.1. Det är kanske som Paul Irish sade, att X-UA-Compatible inte validerar, men det kan man strunta i, för webbläsarna klarar av koden i alla fall...

Jag tyckte detta moment var rätt så svårt, då jag inte förstår all kod riktigt än. Och jag gillar inte att jag inte lyckades få sidan att validera, men jag fick i alla fall ihop en sida till slut. Bra start på kursen!