Week 4 – Alles is een widget
Deze week heb ik de bestemmingenmodule nog afgewerkt en de artikelmodule bijgewerkt. Op enkele kleine problemen na ging dit wel vrij goed. Donderdag werd dan ook de laatste hand gelegd aan de artikelmodule, om daarna in een meeting met Chris en Dennis de aanpak van de widgets te bespreken.
In navolging van donderdag, zal ik vandaag (vrijdag) me ook weer bezighouden met het goed uitdenken van deze aanpak. Hieronder een overzicht van het resultaat van mijn brainstorm tot nu toe:
Widgets

Het klasse diagram tot nog toe

Hierboven 2 afbeeldingen die aangeven hoe het er in de grote lijnen volgens mij en Chris ongeveer gaat uitzien.
Ik ga eerst in op de afbeelding onderaan: Het framework is opgebouwd uit meerdere modules, en iedere categorie van een website is vaak zo’n module. Een module is opgebouwd uit eventueel een Frontcontroller, die ervoor zorgt dat de pagina’s geserveerd worden, een of meerdere models die de toegang tot de verschillende tabellen regelen, een of meerdere views, eventueel een admincontroller, javascriptbestanden en verschillende soorten assets, zoals images en css-bestanden. Een module hoeft echter niet alle componenten hiervan te bevatten om als module beschouwd te worden.
Het framework heeft ook een map libraries waar iedere phpfile uit geladen wordt bij het uitvoeren van het framework. Nu is het de bedoeling dat er een klasse WidgetFactory komt, die in deze map komt te staan, en die een opbouw heeft die gelijkaardig is aan de afbeelding bovenaan. Deze zal dan instaan voor het verwerken van <?widget naamwidget param1 param2?> syntax naar een htmlweergave van de widget.
Ook zal er een interface voor de widgets komen, die waarschijnlijk in de map Libraries van de module Widgets komt te staan. In deze map zullen naar alle waarschijnlijkheid ook de verschillende backend php bestanden van de widgets komen te staan. Last but not least zal de map Views Smarty-Templates bevatten voor de verschillende widgets die door de backend in combinatie met de smartyparser verwerkt zullen worden.
Op zich ziet het er allemaal vrij simpel uit, maar het gaat waarschijnlijk een probleem zijn om de WidgetFactory op zo een manier te schrijven, dat niet alleen binnen een artikel de widgetsyntax zou worden geparsed, maar ook in de rest van de template. Dit zou eventueel wel mogelijk zijn door de output van de smarty-parser op te vragen met het commando fetch(), hierna te parsen met de WidgetFactory, om deze output dan uiteindelijk met het commando echo door te sturen naar de browser. Liefst zou ik er voor willen zorgen dat een echo niet meer handmatig gedaan moet worden, maar dat de output van de smartyparser kan aangepast worden juist voor deze dit zelf weergeeft. Op deze manier komen de widgets ook in de gecachete versie van de pagina te staan, wat ook een feature is van het framework.
Als ik het project sneller afgewerkt zou hebben dan verwacht, zou ik ook nog de klasse WidgetZone willen toevoegen. Hiervoor zou de artikelmodule ook zo aangepast moeten worden dat de positie van een widget gekozen kan worden door deze te plaatsen en verplaatsen in een of meerdere “Widgetzones”, dus div-tags die voorzien zijn om widgets te bevatten op de pagina. Natuurlijk hoop ik dat dit het geval is, maar we zullen wel zien.
SCRUM en dergelijke
Zoals iedere week namen wij ook deel aan dagelijkse SCRUM-meetings, maar vanaf deze week is er voor de stagiairs ook iets nieuws: Het gebruik van basecamp en tick, tools voor projectmanagers om het project op te volgen zoals Microsoft Project. Zo moeten Gert en ik dagelijks invullen hoeveel tijd we aan bepaalde taken hebben gespendeerd en taken uitvinken als deze gebeurd zijn. Het is allemaal nog wat wennen waardoor ik vaak vergeet mijn timer op tijd uit te zetten.
1 april!
Als stagiair had ik wel wat schrik voor 1 april, maar uiteindelijk was deze schrik – voor mij- een beetje ongegrond het was namelijk iemand anders die het doelwit was van een 1 april grap. Jan en Jente hadden in samenwerking met de buurman de auto van Stijn verplaatst en gedaan alsof die gestolen was. Om alles geloofwaardig over te laten komen hadden ze op de plaats waar de auto stond gebroken glas neergelegd. Eerst geloofde niemand het, want het logo van Inventis stond namelijk op de auto, terwijl er een veel duurdere en minder opvallende auto een paar huizen verder stond, maar toen een bevriende politieagent een proces verbaal kwam opmaken begon Stijn toch te twijfelen. Op het einde van de dag kreeg Stijn te horen dat de auto gewoon geparkeerd was op een parking in Houthalen.
Coming up next week
Volgende week ga ik waarschijnlijk beginnen aan het in praktijk omzetten van de aanpak van de widgets hierboven besproken. Ook hoop ik al te kunnen beginnen aan het uitwerken van de basis van de front-end van de website, wat zeker zal lukken indien er niet teveel bugs verschijnen.
Leuke blogpost Philippe, benieuwd naar je progressie van volgende week!