Ajouter des paramètres à un formulaire de soumission d'article

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

  • [RÉGLÉ] Ajouter des paramètres à un formulaire de soumission d'article

    Bonjour,
    Nous avons actuellement une documentation gérée par Joomla assez conséquente, avec de nombreuses catégories et niveaux d'accès.
    J'essaye de faciliter la création d'article en créant un formulaire personnalisé.

    J'ai déjà créé une vue alternative du formulaire ici :
    /<monsite>/templates/<montemplate>/html/com_content/form/edit.php
    ... ce qui m'a permis de le simplifier en n'affichant que les champs nécessaires.

    Je voudrais ajouter 2 améliorations à ce formulaire :

    1) Assigner une catégorie racine, c'est à dire avoir dans le formulaire un champ select avec une catégorie et ses catégories enfants. La catégorie racine serait paramétrée en "dur" dans la vue ou en option dans les paramètres du menu. Je ne sais pas s'il faut passer par le champ existant 'category' et ajouter un paramètre, ou s'il faut créer un champ personnalisé.

    2) Assigner un niveau d'accès par défaut : afficher une valeur de niveau d'accès, paramétré de la même façon, mais en laissant la liste complète et la possibilité de changer sa valeur.

    Voilà, je ne sais pas si tout ça est réalisable et quelle est la meilleure piste.
    Merci pour votre aide !

  • #2
    Re : Ajouter des paramètres à un formulaire de soumission d'article

    Bonjour,
    Tu gères tes articles avec juste un Joomla ou en ayant ajouté un CCK par dessus ?
    Cordialement,
    Chabi01 - http://www.xlformation.com

    Commentaire


    • #3
      Re : Ajouter des paramètres à un formulaire de soumission d'article

      En effet je me suis intéressée aux CCKs, ce qui était assez logique, pour arriver à la conclusion que c'était une transformation complète du contenu pour un besoin qui est assez précis au départ... J'avoues que j'ai du mal, dans ce cas, à ne pas considérer la mise en place d'un CCK comme un risque pour pas grand chose.
      J'ai passé quasiment 1 semaine à développer sur FlexiContent, qui avait les retours les plus positifs, pour m'apercevoir qu'on perdait une partie de la gestion des versions, qui est une fonction importante pour nous : bascule à l'installation donc perte de tout l'historique existant et non réversibilité (perte des versions FC en cas de désinstallation), limitation du nombre de versions, impossibilité d'y accéder en frontend.

      Donc on a ce besoin précis de formulaires simplifiés, qui doit reposer sur quelque chose d'absolument fiable et robuste, et pour une utilisation qui va peu évoluer sur le long terme.

      Commentaire


      • #4
        Re : Ajouter des paramètres à un formulaire de soumission d'article

        Salut
        As-tu regardé Seblod ?
        Auto-entrepreneur spécialiste Joomla https://www.stylitek.com

        Joomladay 2023 https://www.joomladay.fr/ 2 jours à ne pas manquer

        Commentaire


        • #5
          Re : Ajouter des paramètres à un formulaire de soumission d'article

          Je me répète, pour moi ce sont des outils puissants et assez fiables, mais dans mon cas ça revient à installer une usine dans ma cuisine juste pour avoir des glaçons...
          J'ai déjà passé plusieurs jours sur une solution qui n'était pas viable, il me semble que ce sont des gros outils dont il est impossible de mesurer l'impact avant de les avoir vraiment intégrés.

          Je cherche surtout une solution dans le code pour limiter le périmètre au maximum.
          Ou alors une extension mais qui soit minimale...

          Commentaire


          • #6
            Re : Ajouter des paramètres à un formulaire de soumission d'article

            Bonjour,

            Perso, j'ai du faire face à une sélection sur 760 catégories réparties sur trois niveaux...

            Pour résoudre le casse-tête, j'ai utilisé : http://www.appelsiini.net/projects/chained

            Yann
            Joomla User Group (JUG) Lille : https://www.facebook.com/groups/JUGLille/

            Commentaire


            • #7
              Re : Ajouter des paramètres à un formulaire de soumission d'article

              Ah oui, c'est intéressant.
              Dans mon cas le plus important c'est de choisir dans les sections principales de la doc, qui correspondent au premier niveau.

              Par contre le html du select généré par Joomla renvoie une liste d'option toutes à plat, le seul moyen de lire leur niveau c'est le nombre de '-' en préfixe. Pas d'id, pas de class.. Ou alors je commence par modifier le html ?

              Sinon j'ai regardé les paramètres du champ 'category' et je me demandais si je pouvais utiliser l'option 'extension' d'une façon ou d'une autre pour avoir une catégorie racine.. mais c'est surement une idée un peu tordue
              Mais avoir une catégorie racine pour le select (pas plus de 2 ou 3 formulaires différents, un par section) serait l'idéal.
              Dernière édition par 8Fanny8 à 20/09/2016, 14h08

              Commentaire


              • #8
                Re : Ajouter des paramètres à un formulaire de soumission d'article

                Je relance une fois parce que je n'ai pas encore de piste solide.
                S'il fallait définir une priorité ce serait : assigner une catégorie racine à une vue de formulaire.
                Dans le formulaire la catégorie se trouve ici :
                /<monsite>/templates/<montemplate>/html/com_content/form/edit.php
                Code PHP:
                <?php echo $this->form->renderField('catid'); ?>
                Je ne sais pas si c'est réaliste d'appeler un autre champ alternatif à libraries/legacy/form/field/category.php ou s'il vaut mieux intégrer une requête dans le formulaire (déjà overridé) et de quelle manière...

                Commentaire


                • #9
                  Re : Ajouter des paramètres à un formulaire de soumission d'article

                  Envoyé par 8Fanny8 Voir le message
                  Dans le formulaire la catégorie se trouve ici :
                  /<monsite>/templates/<montemplate>/html/com_content/form/edit.php
                  Code PHP:
                  <?php echo $this->form->renderField('catid'); ?>
                  Bonjour, oui effectivement

                  Juste pour exemple :

                  Code PHP:
                  <?php 
                   jimport
                  'joomla.html.html.category' );
                   
                  $category_options JHtml::_('category.options''com_content');
                   
                  $html '<select name="catid" id="catid">';
                   
                  $html .= JHTML::_('select.options'$category_options);
                   
                  $html .= '</select>';
                   echo  
                  $html;
                   
                  // verif affichage liste    
                   
                  print("<pre>".print_r($category_options,true)."</pre>");
                  ?>
                  ou

                  Code PHP:
                          <?php 
                          
                  //droit acces categorie
                          
                  $levels JAccess::getAuthorisedViewLevels($userid);
                          foreach (
                  $levels as $level){ 
                                      
                  $vacl[] = "access = ".$level;
                                  }
                          
                  //recherche categorie        
                          
                  $db JFactory::getDbo();
                          
                  $query $db->getQuery(true);
                          
                  $query->select(array('extension''id','title''access','params','parent_id'));
                          
                  $query->from('#__categories');
                          
                  $query->where('extension ='.$db->quote('com_content'));
                          
                  $query->AND($vacl,'OR');
                          
                  $db->setQuery($query);
                          
                  $categories $db->loadObjectList();  
                          
                  //id de categorie racine a verifier depuis table categorie
                          
                  $idcatselect="9";
                          
                  //exemple affichage select liste categorie
                      
                  echo  JHtml::_('select.genericlist'$categories'jform[catid]''class="categorie"' 'id','title'$idcatselect'jform_catid');

                  // verif affichage liste    
                      
                  print("<pre>".print_r($categories,true)."</pre>");
                              
                  ?>
                  Joomla User Group (JUG) Lille : https://www.facebook.com/groups/JUGLille/

                  Commentaire


                  • #10
                    Re : Ajouter des paramètres à un formulaire de soumission d'article

                    Super, ça fonctionne !

                    J'ai adapté la requête (where et order by) pour avoir une liste plus pertinente :

                    Code PHP:
                                                <?php  
                                                
                    //droit acces categorie 
                                                
                    $levels JAccess::getAuthorisedViewLevels($userid); 
                                                foreach (
                    $levels as $level){  
                                                            
                    $vacl[] = "access = ".$level
                                                        } 
                                                
                    //recherche categorie         
                                                
                    $db JFactory::getDbo(); 
                                                
                    $query $db->getQuery(true); 
                                                
                    $query->select(array('extension''id','title''access','params','parent_id')); 
                                                
                    $query->from('#__categories'); 
                                                
                    $query->where('extension ='.$db->quote('com_content').'AND published = 1 AND path LIKE "racine%"'); 
                                                
                    $query->order('lft');
                                                
                    $db->setQuery($query); 
                                                
                    $categories $db->loadObjectList();   
                                                
                    //id de categorie racine
                                                
                    $idcatselect="38"
                                                
                    //exemple affichage select liste categorie 
                                                
                    echo  JHtml::_('select.genericlist'$categories'jform[catid]''class="categorie"' 'id','title'$idcatselect'jform_catid'); 
                                                
                    ?>
                    Il y a encore 3 petits points à régler avant de pouvoir utiliser cette solution :

                    1) Le $idcatselect="38"; ne fonctionne pas, je ne sais pas pourquoi, à la place j'ai utilisé le chemin de la catégorie, qui commence par la chaine de la catégorie racine (path LIKE "racine%"), mais je me doute que ce n'est pas très propre...

                    2) On n'a plus le préfixe '-' qui permettait de connaitre le niveau de la catégorie et donc d'avoir une vision de l'arborescence, je ne suis pas arrivée à le rajouter ;

                    3) Plus génant : la liste charge la requête ce qui fait qu'on se retrouve avec la catégorie de base quand on ouvre le formulaire pour modifier un article déjà existant, qui a pourtant une autre catégorie assignée.

                    Voilà, je suis désolée de demander tout ça alors que l'objectif dépasse mes compétences Joomla, je pose humblement la question parce que je suis enthousiaste à l'idée de mettre ça en prod

                    Merci beaucoup !
                    Fanny

                    Commentaire


                    • #11
                      Re : Ajouter des paramètres à un formulaire de soumission d'article

                      Je reviens vers vous, j'ai plus ou moins réglé les 2 premiers points mais le 3e reste mystérieux pour moi...

                      Donc :
                      1) Pas propre mais contourné avec le 'path LIKE "racine%"'
                      2) J'ai rajouté un CASE sur le titre affiché qui ajoute une indentation et un préfixe devant le titre, je ferai une boucle quand j'aurai le temps.

                      Ce qui nous donne :
                      Code PHP:
                      <?php   
                          
                      //droit acces categorie  
                          
                      $levels JAccess::getAuthorisedViewLevels($userid);  
                          foreach (
                      $levels as $level){   
                                      
                      $vacl[] = "access = ".$level;  
                                  }  
                          
                      //recherche categorie          
                          
                      $db JFactory::getDbo();  
                          
                      $query $db->getQuery(true);  
                          
                      $query->select(array('extension'
                                               
                      'id',
                                               
                      'title'
                                               
                      'access',
                                               
                      'params',
                                               
                      'parent_id'
                                               
                      'CONCAT((CASE level WHEN 1 THEN "" 
                                                                   WHEN 2 THEN "&nbsp;|&nbsp;" 
                                                                   WHEN 3 THEN "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;" 
                                                                   WHEN 4 THEN "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;" 
                                                                   WHEN 5 THEN "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;" 
                                                                   WHEN 6 THEN "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;" 
                                                                   WHEN 7 THEN "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;" 
                                                                   ELSE "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;" END),
                                                        title) AS titre'
                      ));  
                          
                      $query->from('#__categories');  
                          
                      $query->where('extension ='.$db->quote('com_content').'AND published = 1 AND path LIKE "banco%"');  
                          
                      $query->order('lft'); 
                          
                      $db->setQuery($query);  
                          
                      $categories $db->loadObjectList();    
                          
                      //id de categorie racine 
                          
                      $idcatselect="38";  
                          
                      //exemple affichage select liste categorie  
                          
                      echo  JHtml::_('select.genericlist'$categories'jform[catid]''class="categorie"' 'id','titre'$idcatselect'jform_catid');  
                      ?>
                      Par contre :
                      3) Je ne sais toujours pas comment afficher, dans un formulaire de modification d'un article, la même liste avec l'option de la catégorie de l'article affichée par défaut...

                      Merci encore pour votre aide précieuse,
                      Fanny

                      Commentaire

                      Annonce

                      Réduire
                      Aucune annonce pour le moment.

                      Partenaire de l'association

                      Réduire

                      Hébergeur Web PlanetHoster
                      Travaille ...
                      X