Volgens de traditie van de talloze Programmeer Handboeken, zal de basis voor het ontwikkelen van een eigen module getoond worden via een simpele Hello World Module. De module zelf bevat geen spraakmakende mogelijkheden. Het voorziet in een tekst-veld voor een klein bericht in de backend, welke getoond kan worden in de frontend. Standaard wordt het bericht Hello world getoond.
De laatste versie van de Hello World Module is beschikbaar via de Add-Ons Repository.
Alle bestanden in het module-archief bevatten uitleg over het doel en de variabelen of functies in het betreffende bestand. De module omslaat de hoofdzakelijke concepten, zoals het uitwisselen van data met de database, het gebruik van optionele CSS of Javascript module bestanden en meertalige output in de back- en frontend. Waar nodig, worden ook aanbevelingen gegeven voor het nemen van voorzorgsmaatregelen om SQL-opdrachten of XSS aanvallen te voorkomen.
Dit bestand wordt uitgevoerd tijdens het toevoegen van een nieuwe pagina/sectie van dit module-type via de WB backend. Het bestand voegt een regel toe in de database aan de module-tabel: mod_helloworld met de PAGE-ID en SECTION_ID van de nieuwe pagina. Hierdoor is het mogelijk een specifieke output tekst op de slaan voor alle individuele Hello World pagina's/secties.
Dit bestand wordt uitgevoerd als een pagina/sectie van dit module-type via de WB backend wordt verwijderd. Dit bestand verwijderd de corresponderende regel uit de database module-tabel:mod_helloworld.
Het bestand index.php voorkomt dat men een lijst van bestanden en folders kan verkrijgen die in de module directory staan. Als iemand probeert de module-directory direct te benaderen via: http://domein.com/module/helloworld, zal hij worden doorverwezen naar de Website Baker start pagina. Dit is een simpele methode on de veiligheid te verbeteren, omdat er op deze manier geen informatie verkregen kan worden over de module-architectuur.
Dit bestand voorziet Website Baker van de vereiste informatie, zoals bijv. de module directory. Dit bestand zou ook gebruikt moeten worden om een historie van de module-ontwikkeling bij te houden.
Dit bestand wordt uitgevoerd als de module geïnstalleerd wordt via de WB backend. Het bestand voegt de nieuwe database tabel mod_helloworld toe, welke wordt gebruikt om de tekst op te slaan die in de frontend getoond dient te worden. Daarnaast worden een aantal regels toegevoegd aan de WB zoek-tabel (search). Hierdoor wordt het mogelijk te zoeken en resultaten weer te geven over de weer te geven tekst, opgeslagen in de tabel mod_helloworld.
Dit bestand wordt uitgevoerd als een pagina/sectie van het module type Hello World wordt bekeken in de backend. Het bestand bevat de module beackend functies en maakt het mogelijk om instellingen voor deze module te wijzigen.
Het bestand modify.php van het Hello World voorbeeld voorziet in een HTML formulier, welke een text field bevat en de knoppen Save en Cancel. De backend stijlen voor het formulier en de tabel staan in het externe module bestand backend.css.
De taal van alle teksten en bijschriften van de HTML elementen in de backend is afhankelijk van de taal-instellingen van de ingelogde gebruiker. De module bevat een Duits, Nederlands en Engels (standaard) taal-bestand. Door te klikken op de knop Cancel wordt de gebruiker terug gebracht naar de sectie Pagina's. Door te klikken op de knop Save, wordt het bestand save.php uitgevoerd, welke de gebruikers-input in het tekst-veld filtert en opslaat in de database tabel mod-helloworld.
Naast de hoofd-functie van de module wordt een tekst-link getoond, welke via de onClick methode een externe Javascript functie oproept uit het bestand backend.js van de module. De Javacsript functie toont de naamweergave van de gebruiker via een Javascript alert methode.
Het bestand save.php wordt opgeroepen door de gebruiker als deze op de knop Save heeft geklikt in modify.php. Het bestand ontvangt de POST variabele $simple_output en verwijderd eventuele HTML, Javascript en PHP tags en maakt speciale karakters met een \ onschadelijk om eventuele SQL-injecties te voorkomen. De gefilterde gebruikers-input wordt daarna opgeslagen in het DB-veld simple_output van de tabel mod_helloworld. Een status-bericht geeft de gebruiker vervolgens informatie over het al dan niet succesvol verlopen van de database actie.
Dit bestand wordt uitegvoerd als de Hello World module verwijderd wordt via de WB backend. Het bestand verwijderd de module database tabel mod_helloworld en verwijderd de regels die bij deze module horen uit de WB zoektabel.
Dit bestand wordt uitgevoerd als een pagina/sectie van het type Hello World getoond wordt in de frontend. Het bestand bevat de frontend functies voor deze module die vereist zijn om de tekst te tonen die opgeslagen is in de database.
Het bestand view.php van de Hello World voorbeeld module toont de tekst die opgeslagen is in het database-veld simple_output van de huidige pagina/sectie. De frontend stijlen voor de te tonen tekst worden bepaald door het externe module bestand frontend.css. De taal van alle tekstweergaven in de frontend is afhankelijk van de taal van de huige pagina. De module bevat een Duits, Nederlands en Engels (standaard) taalbestand. Daarnaast wordt op de frontend een tekst-link getoond, welke een javascript-functie oproept via de onClick-methode. Deze functie is opgeslagen in het bestand frontend.js.
De optionele bestanden frontend.css en frontend.js bevatten CSS stijlen en Javascript functies die gebruikt kunnen worden in view.php.
Deze bestanden zullen automatisch gelinked worden aan de <head> sectie van de HTML pagina vanaf Website Baker v2.6.6 en verder. Hierdoor kunnen module-ontwikkelaars modules ontwerpen die weliswaar gebruik maken van Javascript functies en CSS stylen, maar tevens valide (X)HTML ouput genereren. Website Baker versies vóór v2.6.6 bewaarden CSS defenities in de database, welke in de <body> van de HMTL pagina gelinked werden, met als gevolg dat een invalide (X)HTML pagina gegenereerd werd.
Om het linken van de optionele bestanden frontend.css en frontend.js in de <head> sectie mogelijk te maken, dient men de volgende PHP code toe te voegen aan de index.php van het template.
<head>
...
<?php
if(function_exists('register_frontend_modfiles')) {
register_frontend_modfiles('css');
register_frontend_modfiles('js');
} ?>
</head>
De optionele bestanden backend.css en backend.js bevatten CSS stijlen en Javascript functies die gebruikt kunnen worden in het bestand modify.php (pagina type modules) en tool.php (beheer tools).
Deze bestanden zullen automatisch gelinked worden aan de <head> sectie van de HTML pagina vanaf WB v2.6.6 en verder, zonder enige wijzigen aan te hoeven brengen.
De beginselen voor het ontwerpen van eigen modules worden uitgelegd aan de hand van de Hello World module. Op dit moment is er echter nog geen Hello World module beschikbaar voor het module type: beheer tools.
Echter, een goede start voor het ontwikkelen van uw eigen beheer tools is de module User Stats uit de Add-Ons Repository. Deze module maakt een lijst van alle geregistreerde gebruikers en toont daarbij de gebruikersnamen, datum laatste login, aantal dagen inaktief en een mailto link met het mail-adres uit de gebruikersdatabase. Tekstweergaven zijn afhankelijk van de gebruikers-instellingen. De module wordt geleverd met een Duits en Engels (standaard) taalbestand.
De externe module bestanden backend.css en backend.js worden niet gebruikt door deze module.
De beginselen voor het ontwerpen van eigen modules worden uitgelegd aan de hand van de Hello World module. Op dit moment is er echter nog geen Hello World module beschikbaar voor het module type: code snippet.
Echter, een goede start voor het ontwikkelen van uw eigen code snippets is de module Any News uit de Add-Ons Repository. Deze module maakt de extra functie display_news_ietms() beschibaar. Deze functie geeft de mogelijkheid om nieuwsberichten te tonen op andere pagina's/secties buiten de nieuws-pagina zelf. De functie kan gebruikt worden in het bestand index.php van uw template of in een pagina/sectie van het type code. Een README bestand is in het module-archief bestand toegevoegd en deze bevat de noodzakelijke informatie over de parameters die aan deze functie kunnen worden doorgegeven.
Opmerking:
Het is niet mogelijk om de optionele bestanden frontend.css, frontend.js, backend.css of backend.js te gebruiken in een module van het type code snippet!!
Veel plezier bij het ontwikkelen van uw eigen modules.
Copyright (c) 2007 Website Baker Hilfe Team
Tekst en afbeeldingen uit deze pagina zijn onderworpen aan een Creative Commons Attribution-NonCommercial-No Derivative 3.0 Licentie. Het is toegestaan om dit werk te kopieëren en distribueren voor niet-commerciële doeleinden, mits er geen wijzigingen worden aangebracht en deze copyright mededeling en een link naar http://help.websitebaker.org worden bijgevoegd.