Module:Layout
De Module:Layout is bedoeld om snel, consistent en uitgebreid een pagina op te maken.
Er is een op de module afgestemde handleiding over deze onderwijswiki beschikbaar.
De module wordt geïnitialiseerd met de configuratie in Module:Layout/Production/Configuration.
De module Layout werkt nauw samen met het sjabloon Opmaak. Directe benadering door gebruikers van deze module wordt dan ook ontraden en ook tegengehouden waar mogelijk. Voor het gebruik van de module verwijzen we daarom naar de sjabloonbeschrijving van het sjabloon Opmaak.
Subpagina's
[bewerken]- Layout/Book series
- Layout/Deprecated
- Layout/Dev
- Layout/Development
- Layout/Development/Configuration
- Layout/Development/Language/Nl
- Layout/Development/Language/Nl/doc
- Layout/Development/doc
- Layout/Production/Configuration
- Layout/Production/Configuration/Hook
- Layout/Production/Configuration/Hook/doc
- Layout/Production/Configuration/Location
- Layout/Production/Configuration/Location/doc
- Layout/Production/Configuration/Style
- Layout/Production/Configuration/Style/doc
- Layout/Production/Configuration/Testframe
- Layout/Production/Configuration/doc
- Layout/Production/Content
- Layout/Production/Content/Age
- Layout/Production/Content/Age/doc
- Layout/Production/Content/Book
- Layout/Production/Content/Book/doc
- Layout/Production/Content/Bookshelf
- Layout/Production/Content/Bookshelf/doc
- Layout/Production/Content/Chess
- Layout/Production/Content/Chess/doc
- Layout/Production/Content/Infobox
- Layout/Production/Content/Infobox/doc
- Layout/Production/Content/Module
- Layout/Production/Content/Module/doc
- Layout/Production/Content/Series
- Layout/Production/Content/Series/doc
- Layout/Production/Content/Template
- Layout/Production/Content/Template/doc
- Layout/Production/Content/doc
- Layout/Production/Interface
- Layout/Production/Interface/Flight
- Layout/Production/Interface/Flight/doc
- Layout/Production/Interface/Frisk
- Layout/Production/Interface/Frisk/doc
- Layout/Production/Interface/Security
- Layout/Production/Interface/Security/doc
- Layout/Production/Interface/doc
- Layout/Production/Language
- Layout/Production/Language/En
- Layout/Production/Language/Nl
- Layout/Production/Language/Nl/Age
- Layout/Production/Language/Nl/Age/doc
- Layout/Production/Language/Nl/Book
- Layout/Production/Language/Nl/Book/doc
- Layout/Production/Language/Nl/Bookshelf
- Layout/Production/Language/Nl/Bookshelf/doc
- Layout/Production/Language/Nl/Category
- Layout/Production/Language/Nl/Category/doc
- Layout/Production/Language/Nl/Chapter
- Layout/Production/Language/Nl/Chapter/doc
- Layout/Production/Language/Nl/Chess
- Layout/Production/Language/Nl/Chess/doc
- Layout/Production/Language/Nl/Concept
- Layout/Production/Language/Nl/Concept/doc
- Layout/Production/Language/Nl/Infobox
- Layout/Production/Language/Nl/Infobox/doc
- Layout/Production/Language/Nl/Logo
- Layout/Production/Language/Nl/Logo/doc
- Layout/Production/Language/Nl/Module
- Layout/Production/Language/Nl/Module/doc
- Layout/Production/Language/Nl/Painting
- Layout/Production/Language/Nl/Painting/doc
- Layout/Production/Language/Nl/Person
- Layout/Production/Language/Nl/Person/doc
- Layout/Production/Language/Nl/Progress
- Layout/Production/Language/Nl/Progress/doc
- Layout/Production/Language/Nl/Section
- Layout/Production/Language/Nl/Section/doc
- Layout/Production/Language/Nl/Series
- Layout/Production/Language/Nl/Series/doc
- Layout/Production/Language/Nl/Talk
- Layout/Production/Language/Nl/Talk/doc
- Layout/Production/Language/Nl/Template
- Layout/Production/Language/Nl/Template/doc
- Layout/Production/Language/Nl/Toc
- Layout/Production/Language/Nl/Toc/doc
- Layout/Production/Language/Nl/User
- Layout/Production/Language/Nl/User/doc
- Layout/Production/Language/Nl/Wikijunior
- Layout/Production/Language/Nl/Wikijunior/doc
- Layout/Production/Language/Nl/Wikipedia
- Layout/Production/Language/Nl/Wikipedia/doc
- Layout/Production/Language/Nl/doc
- Layout/Production/Language/doc
- Layout/Production/Library
- Layout/Production/Library/Array
- Layout/Production/Library/Array/doc
- Layout/Production/Library/Box
- Layout/Production/Library/Box/doc
- Layout/Production/Library/Calculator
- Layout/Production/Library/Calculator/doc
- Layout/Production/Library/Color
- Layout/Production/Library/Color/doc
- Layout/Production/Library/Markup
- Layout/Production/Library/Markup/doc
- Layout/Production/Library/Mediawiki
- Layout/Production/Library/Mediawiki/doc
- Layout/Production/Library/Pattern
- Layout/Production/Library/Pattern/doc
- Layout/Production/Library/Text
- Layout/Production/Library/Text/doc
- Layout/Production/Library/Timestamp
- Layout/Production/Library/Timestamp/doc
- Layout/Production/Library/Unittest
- Layout/Production/Library/Unittest/doc
- Layout/Production/Library/Validation
- Layout/Production/Library/Validation/doc
- Layout/Production/Library/doc
- Layout/Production/Model
- Layout/Production/Model/Call
- Layout/Production/Model/Call/doc
- Layout/Production/Model/Convert
- Layout/Production/Model/Convert/doc
- Layout/Production/Model/Extract
- Layout/Production/Model/Extract/doc
- Layout/Production/Model/Inventory
- Layout/Production/Model/Inventory/doc
- Layout/Production/Model/Luggage
- Layout/Production/Model/Luggage/doc
- Layout/Production/Model/Response
- Layout/Production/Model/Response/doc
- Layout/Production/Model/doc
- Layout/Production/Test
- Layout/Production/Test/Array
- Layout/Production/Test/Array/doc
- Layout/Production/Test/Box
- Layout/Production/Test/Box/doc
- Layout/Production/Test/Call
- Layout/Production/Test/Call/doc
- Layout/Production/Test/Chess
- Layout/Production/Test/Chess/doc
- Layout/Production/Test/Color
- Layout/Production/Test/Color/doc
- Layout/Production/Test/Convert
- Layout/Production/Test/Convert/doc
- Layout/Production/Test/Extract
- Layout/Production/Test/Extract/doc
- Layout/Production/Test/Include
- Layout/Production/Test/Include/doc
- Layout/Production/Test/Interface
- Layout/Production/Test/Interface/doc
- Layout/Production/Test/Logo
- Layout/Production/Test/Logo/doc
- Layout/Production/Test/Luggage
- Layout/Production/Test/Luggage/doc
- Layout/Production/Test/Mediawiki
- Layout/Production/Test/Mediawiki/doc
- Layout/Production/Test/Pattern
- Layout/Production/Test/Pattern/doc
- Layout/Production/Test/Security
- Layout/Production/Test/Security/doc
- Layout/Production/Test/System
- Layout/Production/Test/System/doc
- Layout/Production/Test/Testcases
- Layout/Production/Test/Testcases/Corrupted Headings
- Layout/Production/Test/Testcases/Corrupted Headings/doc
- Layout/Production/Test/Testcases/Empty
- Layout/Production/Test/Testcases/Empty/doc
- Layout/Production/Test/Testcases/Empty Page
- Layout/Production/Test/Testcases/Empty Page/doc
- Layout/Production/Test/Testcases/Extract Parameter Multiple Parameters
- Layout/Production/Test/Testcases/Extract Parameter Multiple Parameters/doc
- Layout/Production/Test/Testcases/Extract Parameter Present
- Layout/Production/Test/Testcases/Extract Parameter Present/doc
- Layout/Production/Test/Testcases/Extract Parameter Two Hits
- Layout/Production/Test/Testcases/Extract Parameter Two Hits/doc
- Layout/Production/Test/Testcases/Four
- Layout/Production/Test/Testcases/Four/doc
- Layout/Production/Test/Testcases/One
- Layout/Production/Test/Testcases/One/doc
- Layout/Production/Test/Testcases/Only Text
- Layout/Production/Test/Testcases/Only Text/doc
- Layout/Production/Test/Testcases/Other
- Layout/Production/Test/Testcases/Other/doc
- Layout/Production/Test/Testcases/Ten
- Layout/Production/Test/Testcases/Ten/doc
- Layout/Production/Test/Testcases/doc
- Layout/Production/Test/Text
- Layout/Production/Test/Text/doc
- Layout/Production/Test/Timestamp
- Layout/Production/Test/Timestamp/doc
- Layout/Production/Test/Validation
- Layout/Production/Test/Validation/doc
- Layout/Production/Test/doc
- Layout/Production/View
- Layout/Production/View/Age
- Layout/Production/View/Age/doc
- Layout/Production/View/Book
- Layout/Production/View/Book/doc
- Layout/Production/View/Bookshelf
- Layout/Production/View/Bookshelf/doc
- Layout/Production/View/Category
- Layout/Production/View/Category/doc
- Layout/Production/View/Chapter
- Layout/Production/View/Chapter/doc
- Layout/Production/View/Chess
- Layout/Production/View/Chess/doc
- Layout/Production/View/Definition
- Layout/Production/View/Definition/doc
- Layout/Production/View/Description
- Layout/Production/View/Description/doc
- Layout/Production/View/Gradient
- Layout/Production/View/Gradient/doc
- Layout/Production/View/Infobox
- Layout/Production/View/Infobox/doc
- Layout/Production/View/Logo
- Layout/Production/View/Logo/doc
- Layout/Production/View/Module
- Layout/Production/View/Module/doc
- Layout/Production/View/Prefixindex
- Layout/Production/View/Prefixindex/doc
- Layout/Production/View/Progress
- Layout/Production/View/Progress/doc
- Layout/Production/View/Series
- Layout/Production/View/Series/doc
- Layout/Production/View/Talk
- Layout/Production/View/Talk/doc
- Layout/Production/View/Template
- Layout/Production/View/Template/doc
- Layout/Production/View/Toc
- Layout/Production/View/Toc/doc
- Layout/Production/View/User
- Layout/Production/View/User/doc
- Layout/Production/View/Wikijunior
- Layout/Production/View/Wikijunior/doc
- Layout/Production/View/Wikipedia
- Layout/Production/View/Wikipedia/doc
- Layout/Production/View/doc
- Layout/Sandbox
- Layout/Sandbox/Configuration
- Layout/Sandbox/doc
- Layout/Stage
- Layout/Stage/Configuration
- Layout/Stage/doc
- Layout/Style/Test
- Layout/doc
Omgevingen
[bewerken]Module Migratie | ||||||
---|---|---|---|---|---|---|
Sandbox | Development | Stage | Production | |||
|
→ test |
|
→ test |
|
→ test |
|
Opbouw
[bewerken]MVC Pattern | ||
---|---|---|
Model | View | Controller |
Deze module is gebouwd om via een interface de aanroeper door te sturen naar specifieke functionaliteit behorende bij het type Opmaak gegroepeerd onder Module:Layout/Production/View. Onder Module:Layout/Production/Test zijn alle testfuncties gebundeld. De library Module:Layout/Production/Library heeft verzameld alle functies die door meerdere modules worden gebruikt en geen andere modules aanroepen. Alle instellingen zoals de berichten en de structuur van deze module zijn ondergebracht bij Module:Layout/Production/Configuration. Ook is er een ontwikkelomgeving ingericht onder Module:Layout/Sandbox. Samengevat:
Hoofdmodules onder Layout | ||
---|---|---|
Hoofdmodule | Activiteit | Omschrijving |
Module:Layout | inrichten | module die juiste omgeving voor het systeem inricht. |
Module:Layout/Production/View | weergeven | modules die nieuwe wikibooks-objecten weergeven. |
Module:Layout/Production/Interface | communiceren | modules die de communicatie tussen de aanroepende wikipagina en de module Layout afhandelen. |
Module:Layout/Production/Library | opbouwen | modules die bouwstenen vormen voor andere modules. |
Module:Layout/Production/Content | creëren | modules die de speciale inhoud van bepaalde wikibooks-objecten creëren. |
Module:Layout/Production/Model | verrijken | modules die de bestaande gegevens verrijken zodat ze geschikt zijn voor wikibooks-objecten. |
Module:Layout/Production/Configuration | configureren | modules die de werking van andere modules configureren. |
Module:Layout/Production/Language | vertalen | modules die in de taal van de gebruiker communiceren. |
Module:Layout/Production/Style | stijlen | modules die in de stijl van de weergave instellen. |
Module:Layout/Production/Test | testen | modules die testen. |
Hooks
[bewerken]Objecten
[bewerken]Om functionaliteit toe te voegen of aan te passen haken we de nieuwe of aan te passen module in met exact de naam (in Engels) van het wikiobject dat we toevoegen. Dat dient in ieder geval te gebeuren onder de view (we moeten toch iets laten zien). We moeten ook berichten in de geldende taal wat de naam van het wikiobject is door deze toe te voegen door de een module te zetten met dezelfde naam onder de language modules. Afgestemde inhoud zullen we meestal creëren door wederom met exact dezelfde naam (in het Engels) te plaatsen onder de topmodule content. Daarna kunnen we bij een nieuwe module in het configuratiebestand Configuratie/Hook een haakje zetten (een extra element toevoegen aan de tabel HOOK.OBJECT) zodat het systeem onze nieuwe module opneemt. Ook passen we de bijbehorende test aan of maken een nieuwe. Hetzelfde doen we voor de documentatie. Het aangepast of nieuwe object is zoveel mogelijk afgezonderd van andere objecten om onderlinge impact bij fouten te voorkomen.
Wiki-objecten toevoegen of Wijzigen | |||||
---|---|---|---|---|---|
Configuratie/Hook (Vereist) | View (Vereist) | Language (Vereist) | Content (Optioneel) | Test (Vereist) | Sjabloon (Vereist) |
|
|
|
|
|
|
Parameters
[bewerken]Op dezelfde manier als bij de objecten kan men ook nieuwe parameters aanmaken of aanpassen. Indien mogelijk is het advies dat niet toe doen omdat dit wel meer impact heeft dan objecten en een te lange lijst van mogelijke parameters het overzichtelijk gebruik zal afremmen. Probeer zoveel mogelijk de bestaande parameters te gebruiken of de unnamed parameters. Als men toch een parameter nodig heeft dan haakt men die in eveneens in de configuratie module Module:Layout/Production/Configuration/Hook onder HOOK.PARAMETER. Zorg dat hij ook op de juiste plek in de language module komt (Module:Layout/Production/Language/Nl) in de naam van de geïnstalleerde taal. Daarna kan men door een functie aan te maken of aan te passen in Module:Layout/Production/Interface/Frisk de inhoud van deze parameter checken en de foutmelding met eventuele parameters teruggeven als return waarde. Bij een fout zal het programma vanzelf verder uitvoering voorkomen en op grond van ingestelde support een foutmelding weergeven. Daarna kan men de inhoud converteren en/of aanvullen zodat het voor verder gebruik veilig en volledig is als inventaris (Module:Layout/Production/Model/Inventory). Het streven is dat de gegevens uit het model zonder verdere modificatie zijn te gebruiken bij de weergave (view). Test de parameter zeer grondig als bouwsteen ook voor andere objecten en voeg de juiste documentatie toe aan het sjabloon.
Wiki-objecten toevoegen of Wijzigen | |||||
---|---|---|---|---|---|
Configuratie/Hook (Vereist) | Frisk (Vereist) | Language (Vereist) | Inventory (Optioneel) | Test (Vereist) | Sjabloon (Vereist) |
|
|
|
|
|
|
Aanroep
[bewerken]De interface van de module vindt men onderin de code en gebeurt via de aanroep {{#Invoke:Layout|main|...}} en dan kiest of de gebruiker of het systeem zelf op grond van pagina-eigenschappen welke type pagina het is.
Tests
[bewerken] In Module:Layout/Production/Test worden de tests gespecificeerd die zijn uitgevoerd.
Zie ook
[bewerken]- Voor meer informatie over LUA modules zie de de extensie Scribunto.
Code
[bewerken]-- All Scribunto libraries are located in the global table mw.
-- All variables of this module should be explicitly scoped as a local variable.
-- However this is not as STRICT as we think.
-- When you have a table in Lua and you create a reference to that table, you're essentially creating a "shared" access to the same table.
-- It may not be a global variable in the strictest sense, but it can have similar behavior.
require( "strict" );
-- A call to a module uses the parserfunction {{#invoke:...}} where ... is the modulename. In this case Layout.
-- The return value stores the functions which are given as a first argument ... when using {{#invoke:Layout|...}}
-- The variable layout collects these functions.
local layout = {};
-- Functions called by {{#invoke:}} will be passed a frame object as single parameter.
-- This Frame-object contains the parameters passed to {{#invoke:}}, and can be used to access context-specific features of the wikitext parser.
-- In this module the main function directs to the interface through four functions specifying the environment
-- (production, stage, development, sandbox) called by {{{{#invoke:Layout|<environment>|...}}.
-- The {{#invoke:Layout|main|...}} call is checked on errors and if so the errors are returned to inform the user if the user has not turned off showing errors.
-- When no errors are found or the user has set to ignore errors, the corresponding environment en submodules are invoked.
function layout.main( frame, environment )
-- In the Scribunto extension for MediaWiki,
-- when you invoke a function from a module in a template,
-- the function is called with a single argument, the frame object.
-- If your function definition has additional parameters,
-- these additional arguments will not receive values when the function is called
-- through the template.
-- The configuration data depends on the environment
-- So if the user has call this main function directly
-- the environment variable will always be nil
-- We then default the environment to the production environment
-- to prevent accidental calling untested functionality.
if environment == nil then environment = "production"; end
-- The default configuration data is stored in the CFG variable of the production environment.
-- The path is the only hardcoded data outside the configuration data.
-- Now load the CFG from the correct environment
local CFG = require( 'Module:Layout/' .. environment:gsub( "^%l", string.upper ) .. '/Configuration' );
-- The interface of the Module:Layout validates the call and redirects it to the correct system for further actions.
local interface = CFG.INCLUDE( environment, "interface" );
-- The interface recieves the frame, the configuration data and the environment as input and returns always a valid response
return interface.main( frame, CFG, environment );
end
-- Loads the production environment. This environment is the actual used and tested functionality of the Module:Layout.
function layout.production( frame )
return layout.main( frame, "production" );
end
-- Loads the stage environment. This environment is reserved for putting new of changed functionality waiting to be updated to the production environment.
function layout.stage( frame )
return layout.main( frame, "stage" );
end
-- Loads the development environment. This environment is reserved for developing new of changed functionality. If finished it is moved to the stage environment.
function layout.development( frame )
return layout.main( frame, "development" );
end
-- Loads the sandbox environment. This environment is for playing or trying out without concrete developing new of changed functionality.
function layout.sandbox( frame )
return layout.main( frame, "sandbox" );
end
-- The module returns a Lua table containing the functions that may be called by {{#invoke:}} stored in the variable layout.
return layout;