Problème lor de l'adaptation d'un composant joomla à mon projet

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

  • [RÉGLÉ] Problème lor de l'adaptation d'un composant joomla à mon projet

    Bonjour
    je suis nouveaux dans joomla, et je viens de suivre ce tutoriel pour créer un composant joomla docs.joomla.org/Developing_a_Model-View-Controller_Component/2.5/Adding_backend_actions, j'ai adapté ce composant à mon projet de fin d'étude qui est la Conception et réalisation d’un portail Web de publication des états financiers.
    Jusqu’à maintenant tout va biens, mais sa commence à se compliquer un peu.
    je vais biens expliquer mon problème:

    Dans la partie administration j'ai crée les vues nécessaires pour ajouter des bilans, état de résultat, état de trésorerie, et dans chaque une de ses vues il y a les mêmes champs à remplir qui sont comme suit:
    -Entreprise
    -Périodes
    -Année
    -État
    Jusqu'ici tout va bien. Mais maintenant se que je voudrais c'est d'ajouter d'autres champs qui sont:
    -Compte
    -Montant
    -Note
    Mais cette fois ci ces champs je voudrais dans l’opération d'ajout(précisément) qu'ils apparaissent en dessous des autres champs mais dans un tableau qui ressemble au bilan pour que je puisse remplir plusieurs lignes par ces champs et ne pas faire un enregistrement après avoir ajouter chaque ligne dans le bilan(donc gagner beaucoup de temps).
    Pour être plus précis l'affichage dans la page de remplissages des champs va être à peut prés comme ça:


    Entreprise ......
    Périodes ......
    Année ......
    État ......

    Compte Montant Note +
    ....... ........ ...... -


    Le + c'est un bouton qui va faire l'ajout après avoir remplis les champs car les champs comptes et montants sont obligatoires et vont être une liste déroulant, et le - et un bouton qui va supprimer les nouvelle lignes ajouters, j'aimerais savoir aussi comment les crées.
    La création de ces champs et des tables n'est pas un problème, le problème c'est comment afficher ces nouveaux champs dans un tableau et effectuer plusieurs ajout en même temps.
    Mon encadreur ma dit que les modifications vont se faire dans ces 3 scripts:
    model/bilan.php
    view/bilan/view.html.php
    view/bilan/tmpl/edit.php
    Il ma conseillé de chercher dans se sujet "Displaying data in 1 to many situation" mais la plupart des résultats que j'ai trouvé sont soit en anglais ou un peu difficile à comprendre car comme je voulais dit je suis encore débutant.
    J’espère que vous m'avez compris car c'est vraiment important sa concerne mon PFE, si non vous pouvez me demandé encore plus de précision, je pourrais prendre des imprimes écrans pour vous faire comprendre encore plus mon problème ou même vous envoyer mon composant pour le tester.
    Merci d'avance.

  • #2
    Re : Problème lor de l'adaptation d'un composant joomla à mon projet

    tu utilise jform comme dans le tuto ? (le fichier xml pour les champs)

    si c'est le cas , je te souhaite bonne chance, j'ai essayer d'ajouter des champs dynamiquement et j'ai pas trouver de solutions

    sinon , si tu utilise l'ancienne méthode , simple mvc , tu peux y arriver , il suffit de stocker tout tes "compte montant" dans une seule colonne , separer par des point virgule par exemple , apres il suffit des faire des impode et explode dans tes méthodes du modele .
    DesignBoh ( designboh.com ) agence de communication en Tunisie. Experts Joomla et Wordpress.

    Mon blog : http://bouziri-tarak.blogspot.com/

    Commentaire


    • #3
      Re : Problème lor de l'adaptation d'un composant joomla à mon projet

      Merci pour l'aide
      Je n'ai pas très bien compris ce que vous avez poster par ce que comme je vous l'ai dit je suis un débutant sur joomla
      Je vois que vous êtes tunisien et spécialiste Joomla, je vous serais très reconnaissant si vous pouvez m'aider car comme j'ai dit dans mon premier msg je bloque dans cette étape et je ne pourrais pas avancez dans le développement du site. je vous jure que je ne vos dérangerez pas beaucoup juste cette étape c tt. j'habite a hammam-lif et c'est vraiment important car sa concerne mon PFE et de plus la date de la soutenance technique se rapproche.
      Si vous avez accepter de m'aider dite le moi sur le forum, sinon essayé d’être plus précis concernant l solution pour se problème.
      Merci d'avance.

      Commentaire


      • #4
        Re : Problème lor de l'adaptation d'un composant joomla à mon projet

        tu peut poser tes questions ici sur le forum , la communauté t'aidera , mais il faut bien expliquer

        ce que je voulais dire plus haut : si tu utilise jform (voir ce tuto par exemple http://www.ostraining.com/blog/how-t...ed-with-jform/ ) , ajouter des champs dynamiquement avec javascript devient compliquer

        mon conseil , utilise php pour ton formulaire et il faut bien maîtriser le model mvc , tu peux en coder un toi même pour voir comment ca fonctionne , les composant joomla 1.5 est un bon exemple simple php si je me souviens bien ...

        sinon, on fait des formation joomla chez designBoh pour les développeurs , tu peux te renseigner sur notre site .
        DesignBoh ( designboh.com ) agence de communication en Tunisie. Experts Joomla et Wordpress.

        Mon blog : http://bouziri-tarak.blogspot.com/

        Commentaire


        • #5
          Re : Problème lor de l'adaptation d'un composant joomla à mon projet

          Merci pour l'aide, mais encore une fois sa m'avance pas beaucoup.
          Je vais poster les scripts que mon encadreur ma dit vont être modifier pour avoir le résultat voulu.
          views/bilan/view.html.php:

          <?php
          // No direct access to this file
          defined('_JEXEC') or die('Restricted access');

          // import Joomla view library
          jimport('joomla.application.component.view');

          /**
          * Bilan View
          */
          class EtatsFinViewBilan extends JView
          {
          /**
          * display method of Hello view
          * @return void
          */
          public function display($tpl = null)
          {
          // get the Data
          $form = $this->get('Form');
          $item = $this->get('Item');
          $script = $this->get('Script');

          // Check for errors.
          if (count($errors = $this->get('Errors')))
          {
          JError::raiseError(500, implode('<br />', $errors));
          return false;
          }
          // Assign the Data
          $this->form = $form;
          $this->item = $item;
          $this->script = $script;

          // Set the toolbar
          $this->addToolBar();

          // Display the template
          parent::display($tpl);

          // Set the document
          $this->setDocument();
          }

          /**
          * Setting the toolbar
          */
          protected function addToolBar()
          {
          JRequest::setVar('hidemainmenu', true);
          $user = JFactory::getUser();
          $userId = $user->id;
          $isNew = $this->item->id == 0;
          $canDo = EtatsFinHelper::getActions($this->item->id);
          JToolBarHelper::title($isNew ? JText::_('COM_ETATSFIN_MANAGER_BILAN_NEW') : JText::_('COM_ETATSFIN_MANAGER_BILAN_EDIT'), 'bilan');
          // Built the actions for new and existing records.
          if ($isNew)
          {
          // For new records, check the create permission.
          if ($canDo->get('core.create'))
          {
          JToolBarHelper::apply('bilan.apply', 'JTOOLBAR_APPLY');
          JToolBarHelper::save('bilan.save', 'JTOOLBAR_SAVE');
          JToolBarHelper::custom('bilan.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
          }
          JToolBarHelper::cancel('bilan.cancel', 'JTOOLBAR_CANCEL');
          }
          else
          {
          if ($canDo->get('core.edit'))
          {
          // We can save the new record
          JToolBarHelper::apply('bilan.apply', 'JTOOLBAR_APPLY');
          JToolBarHelper::save('bilan.save', 'JTOOLBAR_SAVE');

          // We can save this record, but check the create permission to see if we can return to make a new one.
          if ($canDo->get('core.create'))
          {
          JToolBarHelper::custom('bilan.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
          }
          }
          if ($canDo->get('core.create'))
          {
          JToolBarHelper::custom('bilan.save2copy', 'save-copy.png', 'save-copy_f2.png', 'JTOOLBAR_SAVE_AS_COPY', false);
          }
          JToolBarHelper::cancel('bilan.cancel', 'JTOOLBAR_CLOSE');
          }
          }
          /**
          * Method to set up the document properties
          *
          * @return void
          */
          protected function setDocument()
          {
          $isNew = $this->item->id == 0;
          $document = JFactory::getDocument();
          $document->setTitle($isNew ? JText::_('COM_ETATSFIN_BILAN_CREATING') : JText::_('COM_ETATSFIN_BILAN_EDITING'));
          $document->addScript(JURI::root() . $this->script);
          $document->addScript(JURI::root() . "/administrator/components/com_etatsfin/views/bilan/submitbutton.js");
          JText::script('COM_ETATSFIN_ETATSFIN_ERROR_UNACCEP TABLE');
          }
          }

          Commentaire


          • #6
            Re : Problème lor de l'adaptation d'un composant joomla à mon projet

            views/bilan/tmpl/edit.php:

            <?php
            // No direct access
            defined('_JEXEC') or die('Restricted access');
            JHtml::_('behavior.tooltip');
            JHtml::_('behavior.formvalidation');
            $params = $this->form->getFieldsets('params');
            ?>
            <form action="<?php echo JRoute::_('index.php?option=com_etatsfin&layout=ed it&id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="etatsfin-form" class="form-validate">

            <div class="width-60 fltlft">
            <fieldset class="adminform">
            <legend><?php echo JText::_( 'COM_ETATSFIN_ETATSFIN_DETAILS' ); ?></legend>
            <ul class="adminformlist">
            <?php foreach($this->form->getFieldset('details') as $field): ?>
            <li><?php echo $field->label;echo $field->input;?></li>
            <?php endforeach; ?>
            </ul>
            </div>

            <div class="width-40 fltrt">
            <?php echo JHtml::_('sliders.start', 'etatsfin-slider'); ?>
            <?php foreach ($params as $name => $fieldset): ?>
            <?php echo JHtml::_('sliders.panel', JText::_($fieldset->label), $name.'-params');?>
            <?php if (isset($fieldset->description) && trim($fieldset->description)): ?>
            <p class="tip"><?php echo $this->escape(JText::_($fieldset->description));?></p>
            <?php endif;?>
            <fieldset class="panelform" >
            <ul class="adminformlist">
            <?php foreach ($this->form->getFieldset($name) as $field) : ?>
            <li><?php echo $field->label; ?><?php echo $field->input; ?></li>
            <?php endforeach; ?>
            </ul>
            </fieldset>
            <?php endforeach; ?>

            <?php echo JHtml::_('sliders.end'); ?>
            </div>

            <div>
            <input type="hidden" name="task" value="etatsfin.edit" />
            <?php echo JHtml::_('form.token'); ?>
            </div>
            </form>

            Commentaire


            • #7
              Re : Problème lor de l'adaptation d'un composant joomla à mon projet

              models/bilan.php:

              <?php
              // No direct access to this file
              defined('_JEXEC') or die('Restricted access');

              // import Joomla modelform library
              jimport('joomla.application.component.modeladmin') ;

              /**
              * Bilan Model
              */
              class EtatsFinModelBilan extends JModelAdmin
              {
              /**
              * Method override to check if you can edit an existing record.
              *
              * @param array $data An array of input data.
              * @param string $key The name of the key for the primary key.
              *
              * @return boolean
              * @since 1.6
              */
              protected function allowEdit($data = array(), $key = 'id')
              {
              // Check specific edit permission then general edit permission.
              return JFactory::getUser()->authorise('core.edit', 'com_etatsfinworld.message.'.((int) isset($data[$key]) ? $data[$key] : 0)) or parent::allowEdit($data, $key);
              }
              /**
              * Returns a reference to the a Table object, always creating it.
              *
              * @param type The table type to instantiate
              * @param string A prefix for the table class name. Optional.
              * @param array Configuration array for model. Optional.
              * @return JTable A database object
              * @since 1.6
              */
              public function getTable($type = 'Bilan', $prefix = 'EtatsFinTable', $config = array())
              {
              return JTable::getInstance($type, $prefix, $config);
              }
              /**
              * Method to get the record form.
              *
              * @param array $data Data for the form.
              * @param boolean $loadData True if the form is to load its own data (default case), false if not.
              * @return mixed A JForm object on success, false on failure
              * @since 1.6
              */
              public function getForm($data = array(), $loadData = true)
              {
              // Get the form.
              $form = $this->loadForm('com_etatsfin.bilan', 'bilan', array('control' => 'jform', 'load_data' => $loadData));
              if (empty($form))
              {
              return false;
              }
              return $form;
              }
              /**
              * Method to get the script that have to be included on the form
              *
              * @return string Script files
              */
              public function getScript()
              {
              return 'administrator/components/com_etatsfin/models/forms/bilan.js';
              }
              /**
              * Method to get the data that should be injected in the form.
              *
              * @return mixed The data for the form.
              * @since 1.6
              */
              protected function loadFormData()
              {
              // Check the session for previously entered form data.
              $data = JFactory::getApplication()->getUserState('com_etatsfin.edit.bilan.data', array());
              if (empty($data))
              {
              $data = $this->getItem();
              }
              return $data;
              }
              }

              Commentaire

              Annonce

              Réduire
              Aucune annonce pour le moment.

              Partenaire de l'association

              Réduire

              Hébergeur Web PlanetHoster
              Travaille ...
              X