Creation bouttons (JToolBar) en frontend dans un composent Joomla3

Réduire
Ce sujet est fermé.
X
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Creation bouttons (JToolBar) en frontend dans un composent Joomla3

    Bonjour,
    je n'arrive pas a cree un bouttons avec JToolBar

    Message " Impossible de charger le bouton JToolbarButtonSite (); "
    j'ai suivis le tutoriel => https://docs.joomla.org/J3.x:Using_t...n_the_frontend

    j'ai 2 questions
    1) Pouvez vous me dire si ces la bonne démarche
    2) si j'utilise les bonne class => JViewLegacy ou JView apparament JViewLegacy est la base et JView est quoi ?

    merci d'avance?

    -----------------------------------------------------------------------
    controller.php

    Code PHP:
    JLoader::register('JToolbarButtonFrontend'dirname(__FILE__) . 'components/com_taxation/buttons/frontend.php');

    le dossier site/boutons/frontend.php
    // -----------------------------------------------------------------------------
    // Pas d'accès direct a ce fichier
    // -----------------------------------------------------------------------------
        
    defined('_JEXEC') or die('Restricted access');
    // -----------------------------------------------------------------------------
    // Importation bibliothèque Joomla toolbar 
    // ----------------------------------------------------------------------------- 
        
    jimport('cms.html.toolbar');
    // ----------------------------------------------------------------------------- 
    // Debut de la class JToolbarButton 
    // ----------------------------------------------------------------------------- 
        
    class JToolbarButtonFrontend extends JToolbarButton {
            
            public function 
    fetchButton($type 'site'$name ''$text ''$task ''$list true){
                
    $i18n_text JText::_($text);
                
    $class $this->fetchIconClass($name);
                
    $doTask $this->_getCommand($text$task$list);
                
                
    $html "<button onclick=\"$doTask\" class=\"btn btn-small\">\n";
                
    $html .= "<span class=\"$class\">\n";
                
    $html .= "</span>\n";
                
    $html .= "$i18n_text\n";
                
    $html .= "</button>\n";
            return 
    $html;
            }
        
    // ------------------------------------------------------------------------- 
        // Obtenez l' Id bouton CSS
        // -------------------------------------------------------------------------
            
            
    public function fetchId($type 'site'$html ''$id 'site'){
            return 
    $this->_parent->getName() . '-' $id;
            }
        
    // ------------------------------------------------------------------------- 
        // Obtenez la commande JavaScript pour le bouton 
        // -------------------------------------------------------------------------
            
    protected function _getCommand($name$task$list){
            
    JHtml::_('behavior.framework');
            
    $message JText::_('message');
            
    $message addslashes($message);
     
            if (
    $list){
                
    $cmd "if (document.adminForm.boxchecked.value==0){alert('$message');}else{ Joomla.submitbutton('$task')}";
            }else{
                
    $cmd "Joomla.submitbutton('$task')";
            }
            return 
    $cmd;
     
            }
        
        
        } 
    puis dans ma vue site/views/montant/view.html.php

    Code PHP:
    jimport('joomla.application.component.view');
    jimport('joomla.html.toolbar');
    jimport('cms.html.toolbar');
     class 
    TaxationViewVueMontant extends JViewLegacy{
            
    // --------------------------------------------------------------------- 
            // Overwriting JViewLegacy display method
            // --------------------------------------------------------------------- 
                
    function display($tpl null){
                        
    // ---------------------------------------------------------
                        // Ajouter un tire
                        // ---------------------------------------------------------
                            
    jimport('cms.html.toolbar');
                            
    $this->bar = new JToolBar'toolbar' );
                            
    $this->bar->appendButton'site''save''Save''taxattion.save'false );
                            
    $this->bar->appendButton'Separator' );
                            
    // Generate the html and return
                            
    return $this->bar->render();
                            
                        
    // ---------------------------------------------------------
                        // Assign data to the view
                        // ---------------------------------------------------------
                            
    $this->msg $this->get('Msg');
                         
    // ---------------------------------------------------------
                        // gestion des erreurs
                        // ---------------------------------------------------------
                            
    if (count($errors $this->get('Errors'))){
                                    
    JError::raiseError(500implode('<br />'$errors));
                                    return 
    false;
                            }
                        
    // ---------------------------------------------------------
                        // Appel de la fonction pour affichage de la page par default
                        // ---------------------------------------------------------
                            
    parent::display($tpl);
                } 
    Dernière édition par ghazal à 22/06/2015, 18h58 Raison: lisibilité du code

  • #2
    Re : Creation bouttons (JToolBar) en frontend dans un composent Joomla3

    Salut,
    tu as qq chose contre l'affichage du code en mode PHP ? LOL
    J'ai corrigé pour une meilleure lisibilité.

    Dans le code que tu as repris des joomla docs, il y a une erreur,
    JHtml::_('behavior.framework');
    ne devrait pas être là et devrait être supprimé.
    Je l'ai signalé.
    C'est un appel à la librairie JS Mootools, qui disparait petit à petit de Joomla et en tous les cas n'est plus du tout présente en front-end.
    Sutout que le JS qui suit est du pur JS (vanilla JavaScript).

    Ce devrait être bon :
    Code PHP:
    protected function _getCommand($name$task$list)
        {
            
    $message JText::_('JLIB_HTML_PLEASE_MAKE_A_SELECTION_FROM_THE_LIST');
            
    $message addslashes($message);

            if (
    $list)
            {
                
    $cmd "if (document.adminForm.boxchecked.value==0){alert('$message');}else{ Joomla.submitbutton('$task')}";
            }
            else
            {
                
    $cmd "Joomla.submitbutton('$task')";
            }

            return 
    $cmd;
        }

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

    Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

    Commentaire


    • #3
      Re : Creation bouttons (JToolBar) en frontend dans un composent Joomla3

      Bonjour ghazal,
      Non je n'est rien contre l'affichage du code en mode PHP ' MDR '
      il y a des personnes qui on été nourri au biberon avec du code source de dans et il y a les autres
      moi j’apprends joomla avec le livre de Marc STUDER "très bon livre au passage " et j'ai une formation d’électricien.je suis très loin du développer!
      Mais bon avec de la bonne lecture et de la patience puis vous tous sur le forum ça fonctionne !!!!
      au passage bravo a vous.

      Tu pourrais me dire le pourquoi et le comment

      je voudrai utiliser la méthode $this->getState('list.ordering' de la query 2 sur la query 1

      car il y a une différence! la query 1 est une connexion a ma base externe $dbExterne = ComTaxationHelper::getDBO();
      et la query 2 est une connexion a une base interne (joomla)

      nom problème est dans la compréhension de " _db-> " de la query 2. Je présume que c'est une connexion a la base interne (joomla) ?

      Comment remplacer cette connexion avec ma connexion $dbExterne = ComTaxationHelper::getDBO();

      merci d'avance pour votre aide


      -----------------------------------------------------
      (query 1)
      public static function Tableau($periode) {
      // conexion db externe
      $dbExterne = ComTaxationHelper::getDBO();
      // sql
      $Sql = "SELECT * FROM `ENTREPOT`" ;
      $dbExterne->setQuery($Sql);
      $query = $dbExterne->loadObjectList();
      return $query;
      }
      -------------------------------------------------------
      (query 2)

      protected function _getListQuery(){
      $db = ComTaxationHelper::getDBO();

      $requete = $this->_db->getQuery(true);
      $requete->select('*');
      $requete->from($this->_db->quoteName('#__ENTREPOT'));

      $ordeCol = $this->getState('list.ordering', 'astrid_id');
      $orderDirn = $this->getState('list.direction', 'ASC');
      $requete->order($this->_db->escape($ordeCol.' '.$orderDirn));
      return $requete;

      Commentaire

      Annonce

      Réduire
      Aucune annonce pour le moment.

      Partenaire de l'association

      Réduire

      Hébergeur Web PlanetHoster
      Travaille ...
      X