[Cette page regroupe les idées/dicussions relatives à la notion de groupe de pages. Ces idées sont encore en discussion. La maturité du sujet est faible.]
Avez vous testé ? avez vous des idées sur la gestion de groupe de pages ?
Idée de départ
Une page fait partie d'un groupe, cela permet de :
- regrouper des pages par thème, par exemple pour WikiNi : Aide, Développement ....etc
- gérer les droits d'accès au niveau d'un groupe et non plus pour chaque page, on garde bien sûr la possibilité de gérer les droits à un niveau "page".
- ErgonomieGroupeDePages
Idée de développement
Il doit être possible de gérer les groupes de pages dans
WikiNi sans tout modifier et en particulier sans ajouter de table à la base de données. Voici mes réflexions sur le sujet :
- Le nom complet d'une page sera NomDuGroupe.NomDeLaPage et c'est ce nom qui sera stocké dans la base de données.
- La page NomDuGroupe.NomDuGroupe servira de page d'accueil pour le groupe.
- Les droits de la page NomDuGroupe.NomDuGroupe seront les droits par défaut des pages du groupe. Chaque page pouvant avoir des droits propres.
- Les références à des pages du WikiNi dans une page devront indiquer le nom du groupe de la page, sinon, la page référencée sera considérée comme appartenant au même groupe que la page courante :
- Une page Groupe1.Page1 contenant simplement une référence à Page2 fait en fait référence à la page Groupe1.Page2
- Une page Groupe1.Page1 voulant référencer une page d'un autre groupe doit l'indiquer explicitement : Groupe2.Page1 par exemple
- L'affichage de la page pourra ou non contenir le nom du groupe :
- Groupe1.Page1 affichera Groupe1.Page1
- Groupe1/Page1 affichera Page1
- Toutes les pages devront appartenir à un groupe. Il existe un groupe par défaut dont le nom est indiqué dans le fichier de configuration.
- Pour des raisons de compatibilité avec les anciennes versions de WikiNi, la gestion par groupe devra être une option de configuration.
Détail sur la gestion des droits d'accès
Une page d'un groupe aura les droits d'accès de la page d'accueil de son groupe, mais ces droits ne seront pas stockés pour cette page. Seuls seront stockés les droit spécifiques d'une page. L'intérêt réside dans la possibilité de changer d'un seul coup les droits de toutes les pages d'un groupe. Pour récupérer les droits d'une page il faudra donc :
- Lire les droits de la page.
- Si ces droits sont inexistants, alors lire les droits de la page d'accueil du groupe et utiliser ces droits comme droit pour la page.
- Les droits d'une page peuvent être partiels. Par exemple, on pourra modifier les droits en écriture d'une page, les droits en lecture et commentaire restant ceux du groupe.
--
GarfieldFr
Vous trouverez
ICI une version de
WikiNi supportant la gestion des groupes de pages. A noter les différences suivantes avec ce qui est écrit plus haut :
- le nom d'un groupe n'a pas besoin d'être un mot wiki, il doit simplement commencer par une majuscule
- une page appartient obligatoirement à un groupe, je n'ai rien fait pour la compatibilité avec la version sans groupe (mais c'est faisable)
- je n'ai pas testé l'impact sur les actions.
Cette version n'est pas destinée à être utilisée en production, c'est un essai pour voir comment faire et ça marche. Il reste à débattre de l'exactitude de cette conception.
--
GarfieldFr
Bonjour, pour essayer (18/3/2005) cette contribution sur FREE, j'ai dû mettre en commentaire, dans wakka.php, la ligne "session_start();" pour accéder aux pages wiki (plusieurs avertissements commençant tous par "Warning: session_start(): "). Par la suite j'ai constaté qu'il suffisait de créer un répertoire appelé "sessions" à la racine du site, ce qui évite de modifier wakka.php et peut-être aussi des dysfonctionnements (que j'aurais eus en supprimant la ligne "session_start(); ? [oui --
CharlesNepote])
Et les fichiers sont peut-être à placer à la racine du site, non dans un sous-répertoire, que j'avais créé comme pour "spikini" (wikiNi adapté pour Spip).
ça marche bien, mais les "derniers changements" donnent accès à toutes les pages Wiki.
Faut-il faire en plus les modifs signalées à :
http://www.wikini.net/wakka.php?wiki=ACLGroup ?
NB. J'ai parcouru la page
http://www.wikini.net/wakka.php?wiki=DiscussionsGroupesDUtilisateurs , dont il semble que la dernière version date du 7 mars 2005, mais je ne sais pas finalement ce qu'il faut faire pour restreindre l'affichage des pages Wiki au seul groupe de la page affichée (aquand on clique sur Derniers Changements).
Merci de me donner quelques indications, qui devraient être utiles aux autres lecteurs de cette page.
--
MdeBeaumont
PS. Au passage j'ai constaté que le nom du groupe ne doit pas contenir de tiret (sinon pas de création de groupe) ; mais que si le nom choisi permet la création d'un groupe, le même nom avec des casses différentes à l'intérieur (minuscule au lieu de majuscule) donne le même groupe.
- Attention : ce sujet n'est pas à maturité et il est possible que tu n'obtiennes aucune réponse étant donné son caractère purement prospectif -- CharlesNepote
- Est-ce que la notion de "catégorie" de pages serait plus "mûre" ? je crains que non puisque j'ai vu encore moins de contributions là dessus, mais peut-être est-ce plus facile et plus limité comme conséquences (négatives, comme des bugs), puisqu'il ne s'agit que d'un ajout et non d'un changement dans ce qui existe déjà ? -- MdeBeaumont
- Si l'affichage de la page ne contient pas le nom du groupe, comment connaître son nom complet, nécessaire pour construire un lien vers elle provenant d'un autre groupe ?
- Wacko adopte la vieille notation dos nom1/nom2/nom3 et ../
Nom5? etc notation plus familière puisque subie depuis longtemps ;-)
- Pourquoi ne pas imposer que le nom du groupe soit lui aussi un nomWiki ? pour garder l'homogénéité et éventuellement pouvoir y aller directement...
- A part ça j'y vais voir....--
FidelioEspoir
- La syntaxe avec . ou / ne concerne que la texte de la page, le groupe de la page courante s'affiche dans le nom de la page dans l'entete.
- Je supporte la même notation que Wacko mais avec un seul niveau de groupe. La notation . ou / ne concerne que l'affichage. dans un cas, le texte du lien comporte le nom du groupe, dans l'autre cas non.
- Le nom du groupe est un nom wiki puisque il doit y avoir une page "de groupe" racine du groupe.
--
GarfieldFr
...Je reviens de Wikini-groupedepage ;-) Mon erreur provient du lien entre les pages : Le groupe y est un lien d'appartenance. Un nouveaunom sans mention d'un groupe le fait appartenir au groupe de la carte où sa création est décidée. La mention expresse d'un groupe : nomdugroupe.nomdelanouvellecarte créé une page portant le nom et appartenant à ce groupe. Si le groupe n'existe pas auparavant, il est ainsi créé. Le groupe choisi n'est pas nécessairement un nomWiki, il peut donc être "nommé" sans être créé en tant que page. Si j'écris une carte PremierEssai.ChapitreUn.Introduction il n'y a pas construction d'un groupe
ChapitreUn? appartenant au groupe
PremierEssai?. Si j'écris sur PremierEssai.PageUne, le nom PremierEssai.PageUne.AlinéaUn , il ne m'est pas proposé de créer une page AlinéaUn appartenant à un groupe PremierEssai.pageUne.
Il s'agit donc,
si j'ai bien compris, d'un regroupement d'appartenance sur un seul "échelon", sans transitivité, et non pas d'emboîtements, d'inclusion successive. Mon erreur repose sur la confusion entre la notion non transitive de groupe proposée, avec le modèle épistémologique que j'utilise qui repose sur une combinatoire de dé/composition successive, plus apte,
amha, à représenter le réel et les divers niveaux de connaissance qu'il est possible d'en acquérir...
C'est donc un problème de choix.... --
FidelioEspoir
Heu...si tu le dis ;-) ( surchauffe de la tête à
GarfieldFr ... qui n'a plus l'habitude de trop réfléchir depuis la fin de la fac)
Oui, en effet, il n'y a qu'un seul niveau de groupe. Donc PremierEssai.ChapitreUn.Introduction ne fonctionne pas. Comprend bien que c'était juste un essai pour voir comment inserer une gestion de groupe de pages dans wikini. Il est tout à fait possible de créer un système de groupe à plusieurs niveaux et il serait peut être souhaitable de le faire, mais je ne m'engagerais dans cette solution que s'il est décidé par la communauté d'inclure la gestion de groupe de pages dans
WikiNi et une fois les besoins définis. Par contre, tu peux regarder le code que j'ai modifié et le modifier pour intégrer une gestion de groupe de pages complet. L'idée principale étant qu'un groupe est défini par une page NomGroupe.NomGroupe et que les droits accordé sur cette page sont ceux accordé sur l'ensemble des pages du groupe sauf modification sur une page particulière. --
GarfieldFr
Merci...mais je suis un débutant de php ! j'essayerai ! ;-) j'ai pensé à une autre solution que j'ai déjà vu quelque part dans un wiki ?? un cms ??? pas moyen de mettre la main dessus. C'est une action qui donne tous les nomswiki ayant le même début ou la même fin. J'ai fait des recherches sur lien-voisin et...rien trouvé. Bon ça permet de regrouper les pages en leur donnant le même début ou la même fin.Genre : PierreAmi, PierreCopine, PierreVoiture, PierreEnfant.....ou GarfieldHier, GarfieldAujourd'hui, GarfieldDemain, ou.... ;-) Je finis en te disant que ton "juste un essai" fonctionne très bien --
FidelioEspoir
J'ai regardé l'action textsearch. Elle fait appel à Fulltextsearch($phrase). Ca m'a sérieusement inspiré la façon de trouver tous les noms commençant par $phrase. Pour cela il faut :
ATTENTION NON VERIFIE par pro-php-iste
- modifier le fichier waka.php et lui rajouter :
function nomdebutsearch($phrase)
{
$mot = $phrase.'%';
return $this->LoadAll("select * from ".$this->config["table_prefix"]."pages where latest = 'Y' and tag like ('".mysql_escape_string($mot)."')");
}
- créer le fichier action/nomdebutsearch.php en dupliquant action/textsearch et en y modifiant "Ce que vous souhaitez chercher" par "Nom commençant par..." et "
FullTextSearch?" par "nomdebutsearch".
Comme toute action, il suffit ensuite d'écrire dans une page
{{nomdebutsearch}} pour obtenir toutes les pages dont le nom commence par les lettres indiquées.
Ceci permet donc de retrouver toutes les pages groupées comme Recent... Action....
Est-ce que cette solution ne serait-elle pas plus simple. C'est une convention intuive. Elle permet d'utiliser l'idée de groupe sur plusieurs niveaux.
Je ne sais pas quoi ajouter. Peux-t-on modifier wakka.php ? Faut-il mieux rapatrier la fonction dans le script même de l'action ?
Ma proposition est-elle utile ?
Ne devrait-on pas intégrer toutes les recherches dans une même fonction , dans une même page recherche ?
- Je suis trop près de ce premier php-exploit ;-) pour en peser toutes les conséquences sur Wikini. A vous la balle !
- -- FidelioEspoir
- Ouhlà, doucement pour les ajouts de fonctions dans le moteur du Wiki ! :-) Tout d'abord tu pourrais tres bien créer une action {{NomDebutSearch}} qui ferait directement appel à la méthode LoadAll. Ensuite il faut savoir qu'on réfléchit déjà à la possibilité de faire des sélections de pages selon des masques, voir la FonctionDeSelectionDePage. Une fois cette sélection mise en place, tu pourrais alors faire des recherches de pages commençant par un masque dans la plupart des actions existant déjà. -- ProgFou
En bon débutant-php, j'ai voulu mettre la fonction dans sa classe. Rien de plus facile que de supprimer l'appel par le contenu de la fonction. Ce qui facilite la maintenance puisque nous nous retrouvons dans un cas simple d'action, modularité oblige. C'est fait et ça marche ;-)) Quant à la
FonctionDeSelectionDePage , j'avoue l'avoir survolée, l'ayant jugée encore trop abstraite (trop pro) pour moi.
J'ai poursuivi la logique jusqu'au bout, actions : debut, fin, nomdebutantpar, nomayant, nomfinissantpar
J'essaierai de détacher la liste obtenue de la page qui la présente pour pouvoir commencer à créer les scripts d'algèbre conceptuelle (A inter/union/div B). cela risque de poser la necessité de mémoriser les résultats...à voir... --
FidelioEspoir
La notion de groupe de page peut aussi s'entendre sur son contenu lui-même. Un groupe de page serait des pages ayant même aspect. Mais les deux notions ne sont pas superposables. Par contre, la notion d'aspect, de format de page peut être intéressante (elle le devient vite sur mon
site. Serait-il possible lors de la création d'une page, de demander à l'utilisateur s'il désire tel ou tel format. Cela sous-entend la construction de fichiers de format ( :-( lourd ou, mieux de pages "format". A y penser rapidement : une action "formater" ? suffirait (?!?). -- --
FidelioEspoir
- Cela rejoindrait plutôt la notion de feuille de style par page vu que le format d'une page est en principe défini par une feuille de style, donc ce serait à relier à l'idée de FeuillesDeStyleMultiples. -- ProgFou
Oui, si l'on lie la feuille de style à un contenu. Mais Je pense qu'il faut toujours être homogène et séparer contenu et contenant. Ma feuille d'impôt change de couleur chaque année, c'est dû à une feuille de style. Ici je change de formulaire, de forme de page selon le groupe de sens qu'elle illustre : une spécialisation de pages en quelque sorte. Nous le faisons déjà en définissant une page "utilisateurs", une page "derniers changements"...Ces pages sont construites en créant la page, puis en y mettant une ou plusieurs actions. Je songeais simplement à pouvoir paramétrer cette construction, en généralisant cette procédure, pour permettre de créer par exemple, des pages "questionnaires", des pages "galeries de photos", des pages..... La spécialisation actuelle des pages est "au main du webmestre". Les paramétrer ( laisser l'utilisateur définir la structure du "body" ) serait poursuivre la..."wikinisation" !!! ;-)) Ce n'est pas un choix simple --
FidelioEspoir
A me relire , j'ai l'impression qu'en terme technique, ce serait de pouvoir paramétrer le choix du handler pris en compte pour créer une page...--
FidelioEspoir
- Pourquoi pas... J'y pensais aussi pour d'autres problèmes : pouvoir manipuler différents types d'objets et pas seulement des pages. Les questionnaires pourraient effectivement être considérés comme un autre type d'objet et donc manipulé par un autre handler. En revanche le choix du handler n'est pas sensé être laissé à l'utilisateur : celui-ci ne devrait choisir que le type d'objet à créer et non le handler qui est un paramètre technique. -- Progfou
Tout à fait d'accord ! Laissons l'Handler créé la page : c'est son boulot. A l'utilisateur de demander que la page contienne du texte (ok c'est fait), des actions (ok, c'est fait), et des objets ( questionnaire, appeler un logiciel x de dessin et intégrer le résultat à la page, mon rève : faire un croquis dans un wiki !....).--
FidelioEspoir
PageSuivieParGarfieldFr