DokuWiki

It's better when it's simple

Outils pour utilisateurs

Outils du site


Panneau latéral

Traductions de cette page?:

Découvrir DokuWiki

Options avancées

Pour les entreprises

Notre Communautée


Suivez-nous sur Facebook, Twitter et les autres résaux sociaux.

Notre politique de confidentialité

fr:plugin:pagemod

Extension pagemod

Compatible avec DokuWiki

  • 2018-04-22 "Greebo" inconnu
  • 2017-02-19 "Frusterick Manners" inconnu
  • 2016-06-26 "Elenor Of Tsort" oui
  • 2015-08-10 "Detritus" oui

plugin Une extension qui vous permet d'ajouter des informations aux pages existantes via des formulaires. Elle fonctionne avec l'extension Bureaucracy

Dernière mise à jour
2014-11-10
Fournit
Syntax
Dépôt
Source
Nécessite
bureaucracy

étiquettes : create, editing, form, update

Téléchargement et installation

Télécharger et installer l'extension en utilisant le gestionnaire d'extensions ou en la téléchargeant à partir de l'URL au-dessus qui pointe vers la dernière version de l'extension. Veuillez vous référer à la page Extensions sur la manière d'installer des extensions manuellement.

Vue d'ensemble

J'ai créé cette extension parce que j'ai longtemps souhaité un moyen d'ajouter des données structurées d'une manière spécifique à une page et ce, de façon répétitive. Un exemple clair est l'ajout de données dans un tableau. Que diriez-vous d'un formulaire sur cette page qui pourrait poser les bonnes questions et une fois envoyé, ajouter les informations fournies comme une rangée supplémentaire à la fin d'un tableau présent dans cette page.

Brièvement, il fonctionne de la manière suivante :

  1. Un formulaire existe sur une page (créé par l'extension Bureaucracy)
    • Cela peut être la page contenant le formulaire à modifier ou une autre page.
    • Ce formulaire contient le champ d'action action pagemod <targetpage> <pagemod_id>
  2. Un espace réservé aux résultats se trouve sur une page cible
    • Cet espace réservé est inclus entre les balises <pagemod> </pagemod>
  3. Le formulaire est rempli et envoyé par la suite, l'action pagemod étend la page cible en incluant une copie de l'espace réservé dans lequel les variables sont remplacées par les valeurs du formulaire.

Voici donc les fonctionnalités :

  • Une page avec un formulaire peut mettre à jour cette même page ou une autre page.
  • Chaque inclusion <pagemod> a un id, de sorte que plusieurs formulaires peuvent être utilisés pour mettre à jour les différentes parties d'une page.
  • Le formulaire peut mettre à jour plusieurs sections d'une page.
    • Toutes les sections doivent avoir le même pagemod_id que le formulaire de soumission.
  • Une personne peut mettre à jour la page sans avoir accès en écriture à la page.
    • Seul l'accès en lecture est nécessaire pour modifier une page via le formulaire. (Ce n'est pas un bug, c'est une fonctionnalité.)
    • Cela signifie que vous pouvez empêcher les gens de modifier une page à moins qu'ils ne le fassent via un formulaire.
    • Si vous voulez que les gens aient seulement accès en lecture à la page résultante mais sans pouvoir la modifiez, protégez dans ce cas la page formulaire.
    • N'avoir aucun accès en lecture à la page de résultat pour un utilisateur, l'empêche de la modifier via le formulaire.
  • Il est possible de mettre à jour plus de pages à la fois en ajoutant un champ d'action pour chaque page

Voilà pour l'essentiel.

Usage

Syntaxe du formulaire

La définition d'un formulaire s'effectue au moyen de l'extension Bureaucracy, à laquelle veuillez vous référer pour une syntaxe complète. Mais voici les ajouts possibles par l'extension Pagemod :

<form>
action pagemod <target namespace:page> <pagemod_id>

<...various fields for submit...>
submit
</form>

Pour que Bureaucracy utilise l'action pagemod, vous devez ajouter action pagemod avec les paramètres suivants:

  • target : la page cible, avec les notations autorisées :
    • pageids en chemin absolu (e.g. page, namespace:autrepage)
    • pageids en chemin relatif, dont les liens sont résolus par rapport à la page courante (e.g. .:pagevoisine)
    • _self : pour désigner la même page que le formulaire
  • pagemod_id : si vous utilisez plusieurs inclusions pagemod dans une page, vous devez identifier lequel est à compléter et à inclure dans la page.

Syntaxe du modèle

Définir un modèle pagemod se fait en incluant dans une page le code suivant :

<pagemod <pagemod_id> <params>>
Le texte wiki sera analysé pour transformer les étiquettes comme @@Field depuis form@@ 
ou ##Field2 depuis form##

Le contenu de cette section est invisible et ne s'affichera pas sur cette page.
</pagemod>

Un autre texte wiki à la suite, qui est visible à nouveau.

Ou un exemple réel pour ajouter des lignes à une tableau :

Un peu plus de texte, et un tableau avec la dernière rangée grâce à l'espace réservé pagemod.

^ Table header 1 ^ Table header 2 ^
<pagemod table_adder output_before>| @@table value 1@@ | @@table value 2@@ |
</pagemod>

Note: Si le tableau résultant est édité ultérieurement avec l'extension Editable, le code pagemod ci-dessus disparaîtra (seuls les contenus existants restent).

Le contenu pagemod commence avec :

<pagemod <pagemod_id> <params>>

où ce qui suit est vrai :

  • pagemod_id : c'est l'id de pagemod. Le formulaire a un pagemod_id, il va modifier toutes les inclusions pagemod avec le même identifiant.
  • params : les paramètres sont séparés par , et peuvent être l'un de ceux-ci :
    • output_after : indique que la sortie du transfert/traduction doit venir après la réécriture de l'inclusion pagemod, la valeur par défaut est de sortir avant la réécriture
    • output_before : c'est le comportement par défaut, la sortie du transfert avant la réécriture de l'inclusion pagemod.

La fin de l'inclusion pagemod se termine de la façon suivante :

</pagemod>

Et le contenu n'est pas affiché lorsque la page wiki est affichée. La conversion du contenu de l'inclusion pagemod se fait avec la fonction de remplacement de l'extension Bureaucracy. Des motifs similaires sont donc disponibles.

Méta variables

Les méta variables sont des variables supplémentaires pour l'extension pagemod. Les valeurs des méta variables sont générées par l'extension lors de l'exécution. Elles sont les suivantes:

  • @@meta.date@@ : la date courante au format dd/mm/yyyy
  • @@meta.datetime@@ : la date heure courante selon l'ISO 8601
  • @@meta.date.format.format@@ : la date courante dans le format que vous spécifiez. C'est le format utilisé par la fonction PHP date() que vous pouvez trouver ici (e.g. @@meta.date.format.d/m/Y@@ parviendra au même que @@meta.date@@)
  • @@meta.user.id@@ : l'utilisateur qui a envoyé le nom d'utilisateur du formulaire
  • @@meta.user.mail@@ : l'adresse courriel des utilisateurs (si connu)
  • @@meta.user.name@@ : Le nom complet d'utilisateur (si connu)
  • @@meta.page.id@@ : l'id complète de la page
  • @@meta.page.name@@ : le nom de la page
  • @@meta.page.namespace@@ : l'espace de noms de la page

Merci de m'envoyer vos demandes pour implémentation de nouvelles étiquettes de méta variables.

Téléchargement

Pour le moment, au 2019-04-02 14:53 le téléchargement de pagemod ne fonctionne pas de manière satisfaisante. Il a besoin de l'ajout d'un correctif disponible ici :

https://github.com/BaselineIT/dokuwiki-pagemod/blob/891b6465a4b2a1db1d548611cc2584b49ec815c1/helper/pagemod.php

Dans la même page d'exemple:

<form>
action pagemod _self add_sale

fieldset "Add your bits to the table" !
number "Nr. de ordine internă automat" ++
date "Data începerii melodiei"
select   "Supplier" "B&C|Computer Corporation|IT Vision|Compu Cable|Matrix"
textbox  "Our Cost (Single)" !
textbox  "Quantity Ordered" !


fieldset  "Your Order"
textbox   "Your Name" !
select    "What do you want"  "Car|Blimp" !

fieldset  "Car Parameters" "What do you want" "Car"
number    "Number of Wheels" !
textbox   "Extras" !

fieldset  "Blimp Parameters" "What do you want" "Blimp"
select    "Filling" "Helium|Hot Air"
number    "Size" !

fieldset  "Payment" 
yesno     "Can you pay right now?" !

fieldset  "Details" "Can you pay right now?"
textbox   "Name" !
number    "Amount" !


fieldset  ""
yesno     "Incarci un fisier?"

fieldset  "" "Incarci un fisier?"
file "Incarca un fisier"

hidden "acoldesch" "={{"
hidden "acolinch" "=}}"

hidden "foldedin" "=++Upload|"
hidden "foldedout" "=++"

fieldset  ""
submit "Salveaza"
</form>


<sortable r2>
^ Nr.  ^ Data Automata  ^ Date Manuala  ^ Supplier  ^ Our Cost (Single)  ^ Rotile?  ^ Quantity Ordered  ^ Upload  ^
| a12 | 06 Nov 2018 | 2018-11-06  | B&C |   |   |   | ++Upload|{{..:10_fl.mid}}++ |
<pagemod add_sale>| a@@Nr. de ordine internă automat@@ | @@meta.date.format.d M Y@@ | @@Data începerii melodiei@@  | @@Supplier| @@ | @@Quantity Ordered| @@ | @@Filling| @@ | @@Quantity Ordered| @@ | @@foldedin| @@@@acoldesch| @@@@Incarca un fisier| @@@@acolinch| @@@@foldedout| @@ |
</pagemod>
</sortable>

Florin C.florious

2019-04-02 15:10

FAQ

Incrémenter un nombre possible?

L'extension Bureaucracy a un champ nombre et un hiddenautoinc qui possède un compteur d'incrémentation automatique sur chaque envoi réussi. Voir l'exemple dans la page de l'extension.

Développement

En novembre 2014, l'extension pagemod est mise à jour pour utiliser un assistant pour l'action pagemod. L'extension Bureaucracy est également mise à jour en Novembre 2014, et charge cet assistant automatiquement si l'action pagemod est utilisée dans un formulaire. La nouvelle version de Bureaucracy ne supporte que la nouvelle version de Pagemod.

Remarque: le fichier bureaucracy/actions/pagemod.php est désormais déprécié. Vous pouvez le supprimer manuellement.

Versions précédentes

REMARQUE IMPORTANTE: Si vous avez installé une de ces versions précédentes, vous avez besoin de faire une mise à jour, au moins une fois. C'est parce qu'il installe certaines choses dans le répertoire de Bureaucracy, mais cette action ne se produit pas à l'installation, mais lors de la mise à jour. Pour mettre à jour l'extension, cliquez sur “Mettre à jour” dans la section Administrer/Gestionnaire d'extensions de votre DokuWiki.

Installation manuelle d'une version précédente
Dans [wiki-root]/lib/plugins/ cette extension ajoute:

pagemod/      
pagemod/syntax.php     
bureaucracy/            
bureaucracy/actions/   
bureaucracy/actions/pagemod.php  

(note: depuis novembre 2014, plus aucun fichier n'est copié dans le répertoire de l'extension Bureaucracy)

Bugs et demandes de fonctionnalités

L'extension Pagemod est étroitement liée à l'extension Bureaucracy. Pour des questions générales et problèmes rencontrés, voir la page wiki de l'extension Bureaucracy ainsi que le suivi de bugs Bureaucracy. Veuillez signaler les problèmes et les demandes pour l'extension Pagemod à l'adresse https://github.com/rendezz/dokuwiki-pagemod/issues

QUESTION: Pagemod peut-il être déclenché sous conditions ? Supposons qu'il existe un formulaire avec un champ yesno. Pagemod peut-il être appelé uniquement lorsque le champ yesno est coché ?

Problèmes et solutions

Le code d'aide standard de Pagemod n'effectue pas de substitution de noms de page en fonction de variables de Bureaucracy. J'ai conçu un formulaire qui comprend:

textbox Hnode
action  smg:config:@@Hnode@@ add_hwchange

Le problème étant que @@Hnode@@ est interprété comme “Hnode” et non pas la valeur saisie. Le problème semble se situer dans le script d'assistance dans public function run. J'ai ajouté un appel à $ this→ replace (comme on le fait dans public function parsePagemod) juste avant l'appel resolve_pageid. Cela semble maintenant fonctionner.

diff:

39,40d38
<             //Allow for the substitution os elements of the page name
<             $page_to_modify = $this->replace($page_to_modify);

Exemples de cas d'utilisation

Un ensemble d'exemples de pages est disponible:

Contenu:

  • Quelques formulaires qui modifient la page du formulaire, ou juste une autre page.
  • Extension d'un tableau existant
  • Ajout d'éléments supplémentaires à une liste

Livre d'or minimaliste

J'ai utilisé cette extension pour un livre d'or minimaliste. Bien que mon wiki puisse être édité par tout le monde, je pense que les visiteurs seraient plus disposés à laisser un message via un petit formulaire. Aller sur http://windhoff.net/wiki/playground/playground pour voir comment cela fonctionne. Une alternative basée sur javascript est le l'extension disqus.

======Guestbook=====
===== New Comment =====
<form>
action pagemod _self add_comment
fieldset "Write new comment"
textbox  "Name" /^((?!<\/nowiki>).)*$/
email "Email (optional)" /^((?!<\/nowiki>).)*$/ !
textarea "Comment" /^((?!<\/nowiki>).|\n)*$/
submit
</form>

===== Comments =====
<pagemod add_comment output_after>
//@@meta.date.format.r@@://
^<nowiki>@@Name@@</nowiki> |<nowiki>@@Email (optional)| @@</nowiki>|
|<nowiki>@@Comment@@</nowiki> ||
</pagemod>

M. 2010/04/02

Crédits

traduction: Digitalin - décembre 2016

fr/plugin/pagemod.txt · Dernière modification: 2019-04-13 18:49 par Digitalin