Difference between revisions of "Overzicht van de codebase"

From A-Eskwiki
Jump to: navigation, search
m (Tag shenanigans)
(Voeg de helptekst van ./manage)
 
(7 intermediate revisions by the same user not shown)
Line 2: Line 2:
 
'''Dit artikel is WIV (Werk In Voortgang)!'''
 
'''Dit artikel is WIV (Werk In Voortgang)!'''
  
= <code>www/</code> =
+
= www/ =
 
Hier staat alle code die door de site zelf gebruikt wordt. Alles hierbuiten zijn vooral extra dingen, zoals losse scripts (<code>scripts</code>), git hooks (<code>hooks</code>) en lokalisatie (<code>gettext</code>).
 
Hier staat alle code die door de site zelf gebruikt wordt. Alles hierbuiten zijn vooral extra dingen, zoals losse scripts (<code>scripts</code>), git hooks (<code>hooks</code>) en lokalisatie (<code>gettext</code>).
  
== <code>space/</code> ==
+
== space/ ==
 
In deze map staat alle basis-infrastructuur voor de website, zoals alle constanten (<code>constants.php</code>, <code>specialconstants.php</code>) en algemeen bruikbare classes als <code>Page</code>.
 
In deze map staat alle basis-infrastructuur voor de website, zoals alle constanten (<code>constants.php</code>, <code>specialconstants.php</code>) en algemeen bruikbare classes als <code>Page</code>.
<!-- TODO: oorsprong van de naam -->
 
  
Een belangrijk bestand is <code>init.php</code>: dit is de main entry point voor elke request. Hier wordt zo'n beetje alles van toepassing met <code>require_once</code> geinclude.
+
Een belangrijk bestand is <code>init.php</code>: dit is de main entry point voor elke request. Hier wordt zo'n beetje alle code van toepassing met <code>require_once</code> geladen.
 
+
=== <code>benamite/</code> ===
+
  
 +
=== benamite/ ===
 
[[Benamite|Benamite]] is het routing systeem van de website. Het parset de URL van de request, en beslist op basis van de websitestructuur (die in de database staat) welke pagina er moet worden geladen. Lees voor meer details de gelinkte pagina.
 
[[Benamite|Benamite]] is het routing systeem van de website. Het parset de URL van de request, en beslist op basis van de websitestructuur (die in de database staat) welke pagina er moet worden geladen. Lees voor meer details de gelinkte pagina.
<!-- TODO: oorsprong van de naam? -->
 
  
== <code>WhosWho4/</code> ==
+
== WhosWho4/ ==
 +
Hier leeft het leeuwendeel van de website. Over het algemeen wordt hier de zogenaamde MVC-architectuur gevolgd: elke request wordt afgehandeld door een methode in een Controller-klasse die bepaalt wat er precies moet gebeuren en de juiste Model-data ophaalt. Vervolgens worden dan methodes in een View-klasse aangeroepen om de uiteindelijke pagina te bouwen. Dit wordt helaas niet altijd netjes gedaan; soms staat er view-code in een controller. De code is dan ook zo onderverdeeld: controllers staan onder <code>Controller/</code>, views onder <code>View/</code> (of een paar onder <code>Views/</code>, want redenen), en de models onder <code>DBObject/</code> (want ze komen allemaal uit de database). Ook hebben sommige delen van de website hun eigen map, zoals Bugweb. In die mappen wordt dan weer dezelfde MCV-structuur gebruikt.
 +
 
 +
Ook staat er op veel plekken een <code>Generated/</code>-map. Hierin zitten (vanzelfsprekend) gegenereerde klassen. Dat genereren gaat op basis van een bestand gemaakt met [[Dia]], een tool voor UML-diagrammen (als je niet weet wat dat is, geen stress; als je een UML diagram ziet spreekt het redelijk voor zich). Het script hiervoor is <code>docs/dia2php</code>.
 +
 +
<!-- TODO: Verzamelingen omschrijven? -->
 +
 
 +
== bookweb/ ==
 +
Hier woont de code van het oorspronkelijke Bookweb, het antieke gedrocht wat oorspronkelijk door leden gebruikt werd om boeken te bestellen. Op dit moment wordt het alleen gebruikt voor de verkoop van dictaten, kaartjes, enz. Binnenkort wordt het hopelijk vervangen door Boekweb2, wat ook al een tijdje in ontwikkeling is.
 +
 
 +
== manage ==
 +
Het scriptje <code>www/manage</code> is een makkelijke manier om te zorgen dat alle gegenereerde dingen en dependencies e.d. van je debug website in orde zijn. Deze staat in <code>www/</code> en niet <code>scripts/</code>, zodat het wat meer bij de hand is als je aan het ontwikkelen bent. Op het moment heeft het twee subcommando's: <code>build</code> en <code>update</code>. De ingebouwde helptekst legt die redelijk goed uit:
 +
 
 +
<code><pre>
 +
$ ./manage --help
 +
Gebruik: manage COMMAND [command-options]
 +
 
 +
Manage de buildable content van de site
 +
 
 +
Als zowel --enable-debug als --enable-demo niet gebruikt worden
 +
wordt de configuratie gegenereerd voor een live-site
 +
 
 +
Commands:
 +
  build                  Configureert de website. Gebruikt de opties in het bestand install.config indien dit bestaat
 +
  update                  Update alle content in composer en bower en draait minify
 +
 
 +
Options:
 +
  --enable-debug          Genereer de configuratie voor een debug-website
 +
  --enable-demo          Genereer de configuratie voor een demo-website
 +
  --enable-realdb        Zet de optie RealDB aan. RealDB defaults naar !debug
 +
  --hostname              De naam van de site die geconfigureerd wordt. Defaults naar www.a-eskwadraat.nl
 +
  --libdir                De locatie van de map lib. Defaults naar /mnt/wwwdebug/$USER/wwwdebug/www/../lib
 +
  --scriptsdir            De locatie van de map scripts. Defaults naar /mnt/wwwdebug/$USER/wwwdebug/www/../scripts
 +
  --gettextdir            De locatie van de map gettext. Defaults naar /mnt/wwwdebug/$USER/wwwdebug/www/../gettext
 +
  --spacedir              De locatie van de map space. Defaults naar /mnt/wwwdebug/$USER/wwwdebug/www/space
 +
  --whoswho4db            De naam de wsw4db om te bruiken. Defaults naar whoswho4 voor live en test_whoswho4 voor debug en demo
 +
  --boekendb              De naam de boekendb om te bruiken. Defaults naar boeken voor live en test_boeken voor debug en demo
 +
  --benamitedb            De naam de benamitedb om te bruiken. Defaults naar benamite voor live en test_benamite voor debug en demo
  
== <code>bookweb/</code> ==
+
</pre></code>
  
== <code>manage</code> ==
+
= scripts/ =
  
= <code>scripts/</code> =
+
TODO

Latest revision as of 21:18, 2 October 2017

Dit artikel is WIV (Werk In Voortgang)!

www/

Hier staat alle code die door de site zelf gebruikt wordt. Alles hierbuiten zijn vooral extra dingen, zoals losse scripts (scripts), git hooks (hooks) en lokalisatie (gettext).

space/

In deze map staat alle basis-infrastructuur voor de website, zoals alle constanten (constants.php, specialconstants.php) en algemeen bruikbare classes als Page.

Een belangrijk bestand is init.php: dit is de main entry point voor elke request. Hier wordt zo'n beetje alle code van toepassing met require_once geladen.

benamite/

Benamite is het routing systeem van de website. Het parset de URL van de request, en beslist op basis van de websitestructuur (die in de database staat) welke pagina er moet worden geladen. Lees voor meer details de gelinkte pagina.

WhosWho4/

Hier leeft het leeuwendeel van de website. Over het algemeen wordt hier de zogenaamde MVC-architectuur gevolgd: elke request wordt afgehandeld door een methode in een Controller-klasse die bepaalt wat er precies moet gebeuren en de juiste Model-data ophaalt. Vervolgens worden dan methodes in een View-klasse aangeroepen om de uiteindelijke pagina te bouwen. Dit wordt helaas niet altijd netjes gedaan; soms staat er view-code in een controller. De code is dan ook zo onderverdeeld: controllers staan onder Controller/, views onder View/ (of een paar onder Views/, want redenen), en de models onder DBObject/ (want ze komen allemaal uit de database). Ook hebben sommige delen van de website hun eigen map, zoals Bugweb. In die mappen wordt dan weer dezelfde MCV-structuur gebruikt.

Ook staat er op veel plekken een Generated/-map. Hierin zitten (vanzelfsprekend) gegenereerde klassen. Dat genereren gaat op basis van een bestand gemaakt met Dia, een tool voor UML-diagrammen (als je niet weet wat dat is, geen stress; als je een UML diagram ziet spreekt het redelijk voor zich). Het script hiervoor is docs/dia2php.


bookweb/

Hier woont de code van het oorspronkelijke Bookweb, het antieke gedrocht wat oorspronkelijk door leden gebruikt werd om boeken te bestellen. Op dit moment wordt het alleen gebruikt voor de verkoop van dictaten, kaartjes, enz. Binnenkort wordt het hopelijk vervangen door Boekweb2, wat ook al een tijdje in ontwikkeling is.

manage

Het scriptje www/manage is een makkelijke manier om te zorgen dat alle gegenereerde dingen en dependencies e.d. van je debug website in orde zijn. Deze staat in www/ en niet scripts/, zodat het wat meer bij de hand is als je aan het ontwikkelen bent. Op het moment heeft het twee subcommando's: build en update. De ingebouwde helptekst legt die redelijk goed uit:

$ ./manage --help
Gebruik: manage COMMAND [command-options]

Manage de buildable content van de site

Als zowel --enable-debug als --enable-demo niet gebruikt worden
wordt de configuratie gegenereerd voor een live-site

Commands:
  build                   Configureert de website. Gebruikt de opties in het bestand install.config indien dit bestaat
  update                  Update alle content in composer en bower en draait minify

Options:
  --enable-debug          Genereer de configuratie voor een debug-website
  --enable-demo           Genereer de configuratie voor een demo-website
  --enable-realdb         Zet de optie RealDB aan. RealDB defaults naar !debug
  --hostname              De naam van de site die geconfigureerd wordt. Defaults naar www.a-eskwadraat.nl
  --libdir                De locatie van de map lib. Defaults naar /mnt/wwwdebug/$USER/wwwdebug/www/../lib
  --scriptsdir            De locatie van de map scripts. Defaults naar /mnt/wwwdebug/$USER/wwwdebug/www/../scripts
  --gettextdir            De locatie van de map gettext. Defaults naar /mnt/wwwdebug/$USER/wwwdebug/www/../gettext
  --spacedir              De locatie van de map space. Defaults naar /mnt/wwwdebug/$USER/wwwdebug/www/space
  --whoswho4db            De naam de wsw4db om te bruiken. Defaults naar whoswho4 voor live en test_whoswho4 voor debug en demo
  --boekendb              De naam de boekendb om te bruiken. Defaults naar boeken voor live en test_boeken voor debug en demo
  --benamitedb            De naam de benamitedb om te bruiken. Defaults naar benamite voor live en test_benamite voor debug en demo

scripts/

TODO