Mijn cms bestaat uit een aantal modules. Elke module definieert een aantal rechten, bijvoorbeeld "artikelen bekijken", "eigen artikelen veranderen", "alle artikelen veranderen" en "artikelen verwijderen" bij de artikelen module.
Gebruikers worden ingedeeld in groepen. Elke groep heeft een mandje met rechten, toegekend door de beheerder. Zo kan een groep genaamd "docenten" wel artikelen aanmaken, maar ze niet verwijderen.
Laten we bij het voorbeeld van een artikel blijven. Ik wil nu aan het cms een mogelijkheid toevoegen om aan te vinken voor welke groepen een bepaald artikel te lezen is. Stel: je hebt de gebruikersgroepen "leerlingen" en "docenten" en de docent schrijft een artikel bedoeld voor collega's, dan zou hij kunnen aanvinken "artikel alleen te lezen voor docenten". Dat is allemaal geen probleem. Maar nu...
De navigatie is is mijn cms volledig losgekoppeld van de content: elk artikel, nieuwbericht, forum topic, comment, agendapunt etc. dat wordt aangemaakt krijgt een id toegewezen en is te bereiken via dit "node nummer": site.nl/node/23. Als je dus naar url site.nl/node/23 (het docenten-artikel) surft en je hebt niet de goede rechten om artikel te lezen (jouw groep mag ueberhaupt geen artikelen lezen of je bent een leerling), krijg je een "access denied" bericht.
In de navigatie module kun je een schijnbare hierarchie in alle content aanbrengen: onder "Home" zit een link "Opstellen". Onder "Opstellen" maak je een navigatie link "Discriminatie en Racisme" aan. Je heeft als url alias "discriminatie" en als pad "node/23". Vanaf nu is het artikel dat je schreef naast site.nl/node/23 ook te bereiken via site.nl/opstellen/discriminatie. En nu komt het probleem / mijn vragen:
Gebruikers worden ingedeeld in groepen. Elke groep heeft een mandje met rechten, toegekend door de beheerder. Zo kan een groep genaamd "docenten" wel artikelen aanmaken, maar ze niet verwijderen.
Laten we bij het voorbeeld van een artikel blijven. Ik wil nu aan het cms een mogelijkheid toevoegen om aan te vinken voor welke groepen een bepaald artikel te lezen is. Stel: je hebt de gebruikersgroepen "leerlingen" en "docenten" en de docent schrijft een artikel bedoeld voor collega's, dan zou hij kunnen aanvinken "artikel alleen te lezen voor docenten". Dat is allemaal geen probleem. Maar nu...
De navigatie is is mijn cms volledig losgekoppeld van de content: elk artikel, nieuwbericht, forum topic, comment, agendapunt etc. dat wordt aangemaakt krijgt een id toegewezen en is te bereiken via dit "node nummer": site.nl/node/23. Als je dus naar url site.nl/node/23 (het docenten-artikel) surft en je hebt niet de goede rechten om artikel te lezen (jouw groep mag ueberhaupt geen artikelen lezen of je bent een leerling), krijg je een "access denied" bericht.
In de navigatie module kun je een schijnbare hierarchie in alle content aanbrengen: onder "Home" zit een link "Opstellen". Onder "Opstellen" maak je een navigatie link "Discriminatie en Racisme" aan. Je heeft als url alias "discriminatie" en als pad "node/23". Vanaf nu is het artikel dat je schreef naast site.nl/node/23 ook te bereiken via site.nl/opstellen/discriminatie. En nu komt het probleem / mijn vragen:
- Hoe werkt jullie cms op dit gebied? Is het voor een gebruiker niet intuitiever, dat als hij een navigatie-item uitzet, daarmee ook het artikel gelijk onbereikbaar is? (Dat is bij mij dus niet zo. Als je de navigatie link "Discriminatie" verwijdert / uit zet, is node/23 nog steeds te bereiken. Wil je dat artikel unpublishen, moet je dat aangeven op de edit pagina van het artikel zelf
- Ik heb voor een losse navigatie gekozen omdat dat heel plexibel is: ik kan ook een navigatielink aanmaken naar het pad site.nl/forum/topic/43 of naar http://www.nu.nl of wat dan ook.
- Ook dacht ik: "als het systeem als eenvoudig intranet wordt ingezet, kan het best zijn dat sommige artikelen niet hierarchisch te plaatsen zijn. Als je dan bij het aanmaken van een nieuw artikel per se een plaats in de hierarchie moet aanwijzen, beperk je de gebruiker. Overigens is er wel een optie om een nieuw artikel meteen aan in de navigatie te zetten, maar het hoeft niet.
- Stel: de navigatielink "Discriminatie" is voor een leerling onbereikbaar. Toch wordt die link gewoon meegenomen in het renderen van de navigatie zelf. Ik moet dus een manier verzinnen om bij het renderen van het navigatie menu, het intern pad waar elke link naar verwijst (node/23, forum/item/8, node/564) moet controleren op bereikbaarheid voor deze gebruiker en zo niet, dan niet mee te renderen. Is dat niet erg omslachtig?
- Hoe verstandig is het om de navigatie volledig los te koppelen van de content(-pagina's) binnen je cms? Ik hoop op een flink aantal inzichten, want de laatste drie dagen ben ik hier constant over aan het malen geweest en ga ermee in kringetjes
offtopic:
Het is misschien handig om te weten dat ik bezig ben met een cms gericht op midden -en kleine bedrijven of afdelingen van grote bedrijven. Ik maak een systeem waarmee snel een eenvoudige website kan worden opgezet, maar een een eenvoudig intranet. Uitbreidbaar met modules (bijvoorbeeld documentenbeheer). Ik wil liever geen discussie over of dat nu wel een goed product is of niet, want ik ben overtuigd van wel
Dat komt omdat ik voor een aantal klanten Userland Manila heb gekocht en geinstalleerd, en dat was telkens best wel een hit. Mijn systeem ligt dicht tegen dat van hun aan. Ook Manila heeft een losse navigatie van de content, en dat ik 1 van de weinige dingen waar ik bij dat product van het begin over viel. Echter, het bedrijf is al enkele jaren succesvol (en Manila is geschreven door een bekende programmeur uit Sillicon Valley's, Dave Winer, dus die zal het wel weten). Toch ben ik er voor mijn product nog niet uit...
Het is misschien handig om te weten dat ik bezig ben met een cms gericht op midden -en kleine bedrijven of afdelingen van grote bedrijven. Ik maak een systeem waarmee snel een eenvoudige website kan worden opgezet, maar een een eenvoudig intranet. Uitbreidbaar met modules (bijvoorbeeld documentenbeheer). Ik wil liever geen discussie over of dat nu wel een goed product is of niet, want ik ben overtuigd van wel
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."