Comment avoir plusieurs formulaires d'édition front-end (edit.php)

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Comment avoir plusieurs formulaires d'édition front-end (edit.php)

    Bonjour,

    Pour éditer le formulaire d'édition des articles en front-end, on peut personnaliser le fichier edit.php

    La plupart des templates en font d'ailleurs un override dans /templates/TEMPLATE/html/com_content/form/edit.php

    Ma question est double :
    • déjà, comment "overrider" edit.php sans le perdre lors de la prochaine màj, sachant qu'il est déjà overridé par le template
    • ensuite, comment en avoir plusieurs versions selon les besoins, p ex :
      • une version "light" (p ex pour un simple utilisateur, avec juste l'onglet de base ainsi que ceux des custom fields p ex)
      • une version "complète" (p ex pour les utilisateurs avancés)
    Merci pour vos lumières
    Présentations : slides.woluweb.be | Coordonnées complètes : www.woluweb.be

    Un message d’erreur sur votre site Joomla... ayez le reflexe de consulter la base de connaissance : https://kb.joomla.fr

    Ce forum, vous l'aimez ? Il vous a sauvé la vie ? Vous y apprenez régulièrement ? Alors adhérer à l'AFUJ, l'Association Francophone des Utilisateurs de Joomla : https://www.joomla.fr/association/adherer

  • #2
    Hallo Marc.

    Je pense, sans en être 100% certain que, depuis le backend, si tu crées une surcharge d'un élément déjà surchargé, ta copie écope, dans son nom, d'une date de la surcharge qui est prise en compte et, lors de mises à jour, qui n'est pas touchée et reste donc effective.

    À tester
    woluweb aime ceci.
    Cordialement.
    __
    Eddy !!!
    Tutoriels BreezingForms en Français : https://www.breezingforms.eddy-vh.com/

    Commentaire


    • #3
      Merci Eddy.vh

      Yep, pour un module ça marche comme ça et du coup tu peux choisir un "alternate layout" dans les paramètres du Module.

      Mais pour l'édition front-end, je ne vois justement pas déjà où tu pourrais choisir un autre edit.php p ex...
      Présentations : slides.woluweb.be | Coordonnées complètes : www.woluweb.be

      Un message d’erreur sur votre site Joomla... ayez le reflexe de consulter la base de connaissance : https://kb.joomla.fr

      Ce forum, vous l'aimez ? Il vous a sauvé la vie ? Vous y apprenez régulièrement ? Alors adhérer à l'AFUJ, l'Association Francophone des Utilisateurs de Joomla : https://www.joomla.fr/association/adherer

      Commentaire


      • #4
        Ca le fait pas pour les composants ?

        Et du côté des profiles d'éditeur, tu peux pas arriver à tes fins ?
        Cordialement.
        __
        Eddy !!!
        Tutoriels BreezingForms en Français : https://www.breezingforms.eddy-vh.com/

        Commentaire


        • #5
          Hello MArc.

          Tu as toujours des questions pertinentes qui donnent envie de chercher une réponse.

          Une piste :
          • d'abord un plugin sur cette base : https://github.com/AmyStephen/Layout...out/layout.php
            Objet du plugin : changer juste le layout "edit" en "edit-light" ou en "edit-complet" selon tes critères (groupe d'utilisateur ?)
          • ensuite vu que le nom du layout n'est plus standard ("edit-quelquechose" au lieu de "edit")pour le template, pas trop de risque qu'il soit écrasé lors d'une maj du template.

          Exemple du plugin modifié :
          Code PHP:
          function onAfterInitialise()
          {
          if (
          JFactory::getApplication()->isClient('administrator')
          || 
          JFactory::getApplication()->input->get('option''''cmd') != 'com_content'
          || JFactory::getApplication()->input->get('view''''cmd') != 'article'
          || JFactory::getApplication()->input->get('layout''''cmd') != 'edit'
          ) {
           return 
          true;
          }
          $ugroups JFactory::getUser()->getAuthorisedGroups();
          $authgroups $this->params->def('usergroups_publish_light', array());
          if(
          count(array_intersect($ugroups$authgroups)) > 0){
           
          JRequest::setVar('layout''edit-light');
          }else{
           
          JRequest::setVar('layout''edit-complet');
          }
          return 
          true;

          Avec le xml qui va bien pour sélectionner les users groups qui auront accès à la version "light" dans les parametres du plugin:

          Code:
          ....
          <config>
          <fields name="params">
          <fieldset name="basic">
          <field name="usergroups_publish_light"
          type="usergrouplist"
          label="PLG_XXX_CONFIG_CONTENT_USER_GROUPS_LIGHT_LABEL"
          description="PLG_XXX_CONFIG_CONTENT_USER_GROUPS_LIGHT_DESC"
          multiple="true"
          size="120"
          />
          ....
          Code pas testé, juste pour avoir un idée du truc...
          Dernière édition par roland_d_alsace à 03/04/2020, 20h22
          woluweb aime ceci.
          A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
          Rejoignez le Joomla Users Groupe Alsace...
          roland_d_alsace va-t-il devenir roland_du_grand_est ?

          Commentaire


          • #6
            aah, je savais que roland_d_alsace ne pourrait pas résister à une question qui touche de près ou de loin aux droits d'accès ou dans cette veine

            J'ai pas tes compétences en code, mais je vais me pencher sur la question dès lundi
            (déjà que je suis en train de finir de coder mon tout premier plugin - cfr autre fil)
            Présentations : slides.woluweb.be | Coordonnées complètes : www.woluweb.be

            Un message d’erreur sur votre site Joomla... ayez le reflexe de consulter la base de connaissance : https://kb.joomla.fr

            Ce forum, vous l'aimez ? Il vous a sauvé la vie ? Vous y apprenez régulièrement ? Alors adhérer à l'AFUJ, l'Association Francophone des Utilisateurs de Joomla : https://www.joomla.fr/association/adherer

            Commentaire


            • #7
              Euh... en fait ceci peut aussi m'intéresser.

              Dans certains cas les ACL ne sont pas assez "précis" pour faire ce que je veux dans le formulaire de saisie d'un article en front.
              Un exemple très simple est celui-ci : https://github.com/joomla/joomla-cms/issues/22232
              ou quand on veut désactiver un champ particulier comme "article en vedette" à certains auteurs par exemple.

              Je fais donc une surcharge du layout dans mon template, mais effectivement j'aimerai bien que quand c'est moi qui publie en front, que j'ai toutes les options.

              On peut tester les users-groups dans le layout au moment de l'affichage, mais ton idée d'avoir +ieurs layouts me plait bien, quitte à appeler des sub-layouts communs pour éviter de trop dupliquer le code.

              Du coup ta question et le petit plugin ci-dessus, comme dit précédemment, peut aussi m’intéresser aussi à titre perso.
              woluweb aime ceci.
              A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
              Rejoignez le Joomla Users Groupe Alsace...
              roland_d_alsace va-t-il devenir roland_du_grand_est ?

              Commentaire


              • #8
                Salut tout le monde, salut roland_d_alsace

                J'ai un peu cogité : sur base de mon premier plugin (cfr mon post récent à ce sujet), je continue sur ma lancée
                En fait j'ai testé : même si on ne l'utilise pas souvent, on peut mettre un Access Level à un plugin.

                Donc pourquoi pas créer un content ou un system plugin (uniquement pour un groupe) qui, à la volée,
                - ou bien remplacerait edit.php par edit-light.php via un simple remplacement
                - ou bien rajouterait un style="display: none;" à certains éléments un petit regex p ex

                Bref, un petit plugin avec quelques lignes de codes ne feraient-elles déjà pas l'affaire pour une solution "light" ?

                A bientôt,

                Marc
                Présentations : slides.woluweb.be | Coordonnées complètes : www.woluweb.be

                Un message d’erreur sur votre site Joomla... ayez le reflexe de consulter la base de connaissance : https://kb.joomla.fr

                Ce forum, vous l'aimez ? Il vous a sauvé la vie ? Vous y apprenez régulièrement ? Alors adhérer à l'AFUJ, l'Association Francophone des Utilisateurs de Joomla : https://www.joomla.fr/association/adherer

                Commentaire


                • #9
                  Envoyé par woluweb Voir le message
                  Salut tout le monde, salut roland_d_alsace

                  J'ai un peu cogité : sur base de mon premier plugin (cfr mon post récent à ce sujet), je continue sur ma lancée
                  En fait j'ai testé : même si on ne l'utilise pas souvent, on peut mettre un Access Level à un plugin.

                  Donc pourquoi pas créer un content ou un system plugin (uniquement pour un groupe) qui, à la volée,
                  - ou bien remplacerait edit.php par edit-light.php via un simple remplacement
                  - ou bien rajouterait un style="display: none;" à certains éléments un petit regex p ex

                  Bref, un petit plugin avec quelques lignes de codes ne feraient-elles déjà pas l'affaire pour une solution "light" ?

                  A bientôt,

                  Marc
                  Ben pour cela alors tu prend mon code ci dessus et tu supprime le paramètre de sélection du ou des groupes
                  et les lignes :
                  Code PHP:
                  $ugroups JFactory::getUser()->getAuthorisedGroups();
                  $authgroups $this->params->def('usergroups_publish_light', array());
                  if(
                  count(array_intersect($ugroups$authgroups)) > 0){ 
                  tu garde juste le

                  Code PHP:
                  JRequest::setVar('layout''edit-light'); 
                  Donc pour avoir juste :
                  Code PHP:
                  function onAfterInitialise()
                  {
                  if (
                  JFactory::getApplication()->isClient('administrator')
                  || 
                  JFactory::getApplication()->input->get('option''''cmd') != 'com_content'
                  || JFactory::getApplication()->input->get('view''''cmd') != 'article'
                  || JFactory::getApplication()->input->get('layout''''cmd') != 'edit'
                  ) {
                   return 
                  true;
                  }
                   
                  JRequest::setVar('layout''edit-light');
                  return 
                  true;

                  J'aime moins, car tu joue sur un acces-level particulier et pas sur un ou plisuers users-groups.

                  De + tu voulais un template "edit-complet" au lien du "edit" de base non ?.
                  Dernière édition par roland_d_alsace à 11/04/2020, 21h55
                  woluweb aime ceci.
                  A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
                  Rejoignez le Joomla Users Groupe Alsace...
                  roland_d_alsace va-t-il devenir roland_du_grand_est ?

                  Commentaire


                  • #10
                    Salut roland_d_alsace

                    Voilà, j'ai essayé de mettre en place : l'installation fonctionne, le paramètre dans l'interface du plugin permet bien de choisir un Groupe.

                    Je n'avais pas encore créé de edit-light.php ou de edit-complet.php, mais déjà comme ça, lorsque j'édite un article depuis le front-end la page charge "normalement" avec le edit.php du template.
                    (je m'attendais à une erreur tant que mon fichier edit alternatif n'avait pas été créé).

                    Qu'est-ce que j'ai loupé ?
                    Merci !

                    Marc

                    Code PHP:
                    <?php

                    defined
                    ('_JEXEC') or die;


                    class 
                    plgSystemAlternateedit extends JPlugin
                    {

                    function 
                    onAfterInitialise()
                    {
                    if (
                    JFactory::getApplication()->isClient('administrator')
                    || 
                    JFactory::getApplication()->input->get('option''''cmd') != 'com_content'
                    || JFactory::getApplication()->input->get('view''''cmd') != 'article'
                    || JFactory::getApplication()->input->get('layout''''cmd') != 'edit'
                    ) {
                    return 
                    true;
                    }
                    $ugroups JFactory::getUser()->getAuthorisedGroups();
                    $authgroups $this->params->def('usergroups_publish_light', array());

                    if(
                    count(array_intersect($ugroups$authgroups)) > 0){
                    JRequest::setVar('layout''edit-light');
                    }else{
                    JRequest::setVar('layout''edit-complet');
                    }

                    return 
                    true;
                    }
                    }
                    Présentations : slides.woluweb.be | Coordonnées complètes : www.woluweb.be

                    Un message d’erreur sur votre site Joomla... ayez le reflexe de consulter la base de connaissance : https://kb.joomla.fr

                    Ce forum, vous l'aimez ? Il vous a sauvé la vie ? Vous y apprenez régulièrement ? Alors adhérer à l'AFUJ, l'Association Francophone des Utilisateurs de Joomla : https://www.joomla.fr/association/adherer

                    Commentaire


                    • #11
                      Envoyé par woluweb Voir le message
                      Salut roland_d_alsace

                      Voilà, j'ai essayé de mettre en place : l'installation fonctionne, le paramètre dans l'interface du plugin permet bien de choisir un Groupe.

                      Je n'avais pas encore créé de edit-light.php ou de edit-complet.php, mais déjà comme ça, lorsque j'édite un article depuis le front-end la page charge "normalement" avec le edit.php du template.
                      (je m'attendais à une erreur tant que mon fichier edit alternatif n'avait pas été créé).
                      Oui effectivement, ce n'est pas normal.

                      Je me demande si le plugin n'intervient pas trop tôt (Avant le router. Essaie donc en désactivant le SEO).

                      Sinon j'essaie de regarder à l'occase.
                      A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
                      Rejoignez le Joomla Users Groupe Alsace...
                      roland_d_alsace va-t-il devenir roland_du_grand_est ?

                      Commentaire


                      • #12
                        Salut roland_d_alsace,

                        Encore merci pour les suggestions

                        J'ai testé en désactivant SEF et ça n'a rien changé.
                        Puis sur ma lancée j'ai testé en changeant onAfterInitialise par tous les autres events possibles, mais ça n'a rien changé non plus :
                        • onAfterInitialise
                        • onAfterRoute
                        • onAfterDispatch
                        • onBeforeRender
                        • onBeforeCompileHead
                        • onAfterRender
                        • onAfterCompress
                        • onAfterRespond
                        Enfin, j'ai commencé à jouer sur les conditions... et quand j'ai désactivé les deux suivantes alors enfin edit-light.php a déclenché !

                        Code PHP:
                        //|| JFactory::getApplication()->input->get('option', '', 'cmd') != 'com_content'
                        //|| JFactory::getApplication()->input->get('view', '', 'cmd') != 'article' 
                        Bon, maintenant je crains un éventuel effet de bord du fait d'avoir désactivé ces deux conditions
                        Mais ça veut dire qu'on approche du but !
                        Présentations : slides.woluweb.be | Coordonnées complètes : www.woluweb.be

                        Un message d’erreur sur votre site Joomla... ayez le reflexe de consulter la base de connaissance : https://kb.joomla.fr

                        Ce forum, vous l'aimez ? Il vous a sauvé la vie ? Vous y apprenez régulièrement ? Alors adhérer à l'AFUJ, l'Association Francophone des Utilisateurs de Joomla : https://www.joomla.fr/association/adherer

                        Commentaire


                        • #13
                          Non faut pas surtout pas supprimer, sinon le plugin va changer le nom des layouts de 'edit' en front des toutes les pages de tous les composants !

                          En fait pour view c'est 'form' et pas 'article', tu peux le voir dans l'url non seo.

                          Donc il faut mettre :
                          Code PHP:
                          || JFactory::getApplication()->input->get('option''''cmd') != 'com_content'
                          || JFactory::getApplication()->input->get('view''''cmd') != 'form' 
                          Dernière édition par roland_d_alsace à 15/04/2020, 14h11
                          A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
                          Rejoignez le Joomla Users Groupe Alsace...
                          roland_d_alsace va-t-il devenir roland_du_grand_est ?

                          Commentaire


                          • #14
                            Yeah !

                            Bien vu pour le 'form'
                            De fait, l'url est


                            Par contre, je dois toujours commenter com_content sinon le plugin ne déclenche pas :
                            Code PHP:
                            JFactory::getApplication()->input->get('option''''cmd') != 'com_content' 
                            Du coup, comment faire pour que edit-light ne déclenche pas si on édite autre chose qu'un article ?
                            Présentations : slides.woluweb.be | Coordonnées complètes : www.woluweb.be

                            Un message d’erreur sur votre site Joomla... ayez le reflexe de consulter la base de connaissance : https://kb.joomla.fr

                            Ce forum, vous l'aimez ? Il vous a sauvé la vie ? Vous y apprenez régulièrement ? Alors adhérer à l'AFUJ, l'Association Francophone des Utilisateurs de Joomla : https://www.joomla.fr/association/adherer

                            Commentaire


                            • #15
                              Envoyé par woluweb Voir le message
                              Yeah !

                              Bien vu pour le 'form'
                              De fait, l'url est
                              https://www.toto.com/fr/phonotheque?...=11&return=XXX

                              Par contre, je dois toujours commenter com_content sinon le plugin ne déclenche pas :
                              Code PHP:
                              JFactory::getApplication()->inputget('option''''cmd'), '''cmd') != 'com_content' 
                              Du coup, comment faire pour que edit-light ne déclenche pas si on édite autre chose qu'un article ?
                              A priori tu es en SEO avec un lien de menu et l'url n'a pas été décodé (donc le composant n'a pas encore été défini).
                              Je reste donc sur mon impression du #7 ci-dessus.
                              Je pense qu'avec le bouton "pignon" dans le composant, le lien doit marcher.
                              Idem en désactivant le SEO.

                              Essaie sur l’événement onAfterRoute plutot que onAfterInitialise.

                              Sinon je regarde + en détail dans le framework à l'occasion.
                              A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
                              Rejoignez le Joomla Users Groupe Alsace...
                              roland_d_alsace va-t-il devenir roland_du_grand_est ?

                              Commentaire

                              Annonce

                              Réduire
                              Aucune annonce pour le moment.

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X