SPIP - Contrib

SPIP - Contrib

[ar] [en] [es] [fr] [it]

251 visiteurs en ce moment

Accueil du site > Contribs > Rédaction > Édition publique > Crayons > Crayons : Contrôleurs et Vues
[8 commentaires]

Crayons : Contrôleurs et Vues

mardi 1er mai 2007, par Fil, toggg

  • Digg
  • Del.icio.us
  • Facebook
  • Google
  • Technorati

Cet article est en cours de rédaction (donc incomplet), merci si vous avez :
- des corrections,
- des compléments,
- des exemples (simples si possible),
- des captures d’écran ou videos de démo,
- une traduction

à proposer, n’hésitez pas.

Les contrôleurs sont les fragments de formulaires chargés par Crayons pour éditer les contenus.
Les vues sont les fragments de HTML renvoyés par le serveur après modification.

Fragments HTML utilisés par Crayons

Dans son fonctionnement, crayons demande au serveur des fragments d’HTML pour changer dynamiquement l’affichage de morceaux de la page :
- au clic sur le crayon, ou au double-clic sur le contenu, il requiert du serveur le formulaire qui permettra d’éditer l’élément. Ce formulaire comporte des contrôles techniques et inclut un fragment pour les données elles-même le contrôleur.
- lorsque l’on soumet la modification, le serveur renvoie le fragment correspondant à l’affichage de l’élément. C’est la vue.

Par défaut, pour les champs "simples" (une colonne d’une table), le noyau de crayons les fabrique en interne. Il est aussi possible de fournir des contrôleurs et vues propres, notamment pour des champs multiples. C’est possible par html similaire aux modèles, par code php, ou combinaison des deux.

Il est important de noter que la vue n’est pas un extrait du squelette de départ [1], mais un morceau re-fabriqué en dehors de l’environnement complet de celui-ci et que donc, il peut exister des différences minimes dans certains cas relativement rares.

Fonctionnement par défaut

La classe #EDIT{machin} produit l’expression "crayon objet-machin-id". Typiquement, comme dans la distribution de SPIP, objet est une table, machin une colonne et id le numéro d’enregistrement dans la table. Cette expression est à installer dans la class d’un élément qui entoure ce qu’on veut éditer.

Par défaut, crayons établit un champ simple pour ce machin, un <input> ou <textarea> selon sa nature. Bien sûr, toujours accompagné des boutons de validation.

Contrôleurs

Lorsque l’on clique sur le crayons ou que l’on double-clique l’élément, le javascript transmet dans son appel ajax à SPIP l’intégralité de la classe de l’élément.

Le contrôleur en déduit l’objet concerné, ses "objet", "machin" et "id". Grâce à ces données, il peut calculer et envoyer le formulaire de modification de l’élément.

Crayons renvoie un formulaire soit défaut, soit customisé si il trouve, par exemple dans les squelettes ou chez un autre plugin, un fichier nommé controleurs/objet_machin.html ou plus généralement controleurs/machin.html (pour tous les objets si pas de objet-machin.html).

Vues

Lorsque l’on valide le formulaire, le serveur vérifie la véracité, l’intégralité, la non-concurrence (édition simultanée par plusieurs rédacteurs) et les droits sur les données transmises, et modifie en conséquence la base de données. Ensuite, il renvoie la vue du nouvel objet.

De même que pour le contrôleur, c’est une vue défaut avec un minimum de filtres selon le "machin", sauf si l’on trouve un vues/objet_machin.html ou plus généralement vues/machin.html.

Notes

[1] quoiqu’il soit possible de fabriquer le squelette de départ par include de la vue

Retour en haut de la page

8 Messages de forum

Voir toute la discussion

  • Répondre à ce message

    11 mai 08:27 , par Yoh

    Je me réponds :

    Pour la boucle SITES, il faut mettre comme critère de sélection {id_syndic=#ENV{id_site}} Du coup, les contrôleurs fonctionnent

    Voir le contrôleur "hyperlien", présent dans ce plugin, pour plus d’information.

    PS : Promis, j’arrête de me servir de ce forum comme bloc note :)

  • Répondre à ce message

    11 mai 06:33 , par Yoh

    En définitive, je me retrouve avec :

    L’obligation d’utiliser les contrôleurs et vues pour la boucle SYNDIC_ARTICLES

    L’obligation de ne pas utiliser les contrôleurs et vues pour la boucle SYNDIC

    Est-ce normal docteur ?

    Quelqu’un aurait-il déjà utiliser les crayons pour ces 2 boucles ?

  • Répondre à ce message

    9 mai 17:31 , par Yoh

    J’ai oublié de préciser que je suis en 1.9.2d

  • Répondre à ce message

    9 mai 17:17 , par Yoh

    J’ai l’impression qu’il y a un problème avec la boucle SITES et les contrôleurs.

    Dés que j’utilise un contrôleur avec la boucle SITES, je me retrouve avec juste les 2 boutons (rien ne s’affiche).

    Exemple sur le #STATUT d’une boucle SITES : Nom de mon fichier : statutsite.html

    <BOUCLE_g(SITES){id_syndic}{statut==.}>

    #SET{id,#STATUT}
    <select class="crayon-active" name="#ENV{name_statut}" style="width:#ENV{largeur}px;" >
            <option value="publie"[(#GET{id}|=={publie}?{selected})]>publié</option>
            <option value="prop"[(#GET{id}|=={prop}?{selected})]>proposé</option>
            <option value="refuse"[(#GET{id}|=={refuse}?{selected})]>refusé</option>
    </select>

    </BOUCLE_g>

    Appel par :

     <div class="#EDIT{statutsite} mis_a_jour">#STATUT</div>

    Le même contrôleur adapté à la boucle SYNDIC_ARTICLES fonctionne parfaitement. Le problème se répète sur plusieurs contrôleurs (comme sur celui adapté de "syndic_article_hyperlien" par exemple).

    Si je n’utilise pas de contrôleur, aucun problème. J’ai une version à jour.

    Merci

  • Répondre à ce message

    9 mai 15:05 , par Yoh

    Merci

    J’utilise beespip et leur crayon n’est pas à jour

    ++

  • Répondre à ce message

    8 mai 19:12

    Dans la version actuelle il n’y a plus de /

    http://zone.spip.org/trac/spip-zone...

  • Répondre à ce message

    8 mai 18:49 , par Yoh

    Une petite erreur dans le contrôleur statut :

    Un slash / en trop à la fin de la balise select.

    Maintenant la liste déroulante fonctionne mieux :)

  • Répondre à ce message

    12 avril 05:14 , par mj

    Bonjour, je réalise mon premier controleur qui sert à modifier les mots-clefs d’un objet.

    Le formulaire dans controleurs/objet_machin.html est parfaitement chargé, le squelette s’éxécute, le formulaire est affiché avec les données de la base, magnifique.

    Mon problème est : comment renvoyer les données dans la base ? il semble que les zones du formulaire doivent s’appeler quelque chose comme #ENVname_machin ? Comment faire pour des données multiples (plusieurs mots-clefs pour 1 article ?)

    Merci des lumières (et je m’engage à compléter l’article dès que ca fonctionne, avec même lien url).

    Michel

Répondre à cet article

Retour en haut de la page

Ça discute par ici

SPIP | Squelette | | Plan du site | Suivre la vie du site RSS 2.0