création de composant

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

  • [Problème] création de composant

    Bonjour

    Ça fait plusieurs semaines que je cherche à créer un composant joomla qui réaliserait les fonctionnalités suivantes:

    Un utilisateur via un petit formulaire entre son adresse Email et son mot de passe. Après la soumission on vérifie que l'Email et le mot de passe sont bien dans la base de donnée.

    Si c'est le cas on vérifie si l'utilisateur doit changer son mot de passe (il y a un champs qui indique ça dans la base)

    Si l'utilisateur n' a pas besoin de changer son mot de passe on le redirige vers la page finale qui contient des liens de téléchargement

    Par contre si l'utilisateur doit changer son mot de passe on le redirige vers une page avec un formulaire où il entre le nouveau mot de passe et une confirmation de ce mot de passe avant validation on vérifie via un script en javascript que les deux mots de passes saisies sont identique et si c'est le cas après validation la base est mise à jour.

    Puis on le redirige vers la page finale qui contient des liens de téléchargement

    Là ou je bloque surtout c'est pour créer des formulaires et passer les informations saisies au code php.

    J'ai regardé ce tutoriels:


    et


    Mais là je dois avouer que je craque car si les explications sont bien claires pour les premières étapes ça devient très confus par la suite sans compter que certains des exemples donnés ne fonctionnent pas

    Donc si quelqu'un veut bien m'aider je lui en serait très reconnaissant

    Merci d'avance

  • #2
    Hello.

    Il n'y a pas grand chose à développer pour ce cahier des charges.

    Il faut juste vérifier le mot de passe, pour voir s'il doit être réinitialisé.
    Un tout petit plugin suffit pour cela.

    Pas besoin de formulaire, c'est le login et la page de profil membre de Joomla qui sont à utiliser.

    Tout le reste peut-être fait en natif par Joomla (redirection après login vers une page donnée, ou page d'accueil spécifique selon membre).

    De plus il doit exister des plugins qui forcent la réinitialisation du MdP (quels sont tes critères sur ce point ?).
    Celui-ci par exemple... ou celui-la...
    (Attention : notes bien que je ne les connais pas, j'ai juste fait une petite recherche sur la JED).

    S'ils ne correspondent pas à ton besoin, tu pourras au moins t'en inspirer pour la gestion de la redirection vers la page de profil par exemple.

    Sinon si tu veux absolument créer un composant, fait une petit recherche sur le forum "dev", il y a des pistes (bouquins).
    Ou inspire toi d'un composant (assez simple) du core (com_contact par exemple).
    Mais pour ta demande en particulier, je ne le ferai pas car il vaut mieux laisser Joomla faire au niveau du login, du contrôle et de la mise en œuvre du mot de passe.
    En informatique on ne refait par 2x le même travail, c'est risque d'erreurs et de problèmes.
    Comme dit, il faut juste faire éventuellement un plugin qui à la première entrée sur le site d'un membre enregistré fera le nécessaire en cas de nécessité de changement du MdP.
    C'est ça la logique.
    Dernière édition par roland_d_alsace à 10/06/2019, 15h19
    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


    • #3
      Envoyé par roland_d_alsace Voir le message
      Hello.

      Il n'y a pas grand chose à développer pour ce cahier des charges.

      Il faut juste vérifier le mot de passe, pour voir s'il doit être réinitialisé.
      Un tout petit plugin suffit pour cela.

      Pas besoin de formulaire, c'est le login et la page de profil membre de Joomla qui sont à utiliser.
      Sauf que je ne veux pas utiliser le profil membre

      Envoyé par roland_d_alsace Voir le message
      Tout le reste peut-être fait en natif par Joomla (redirection après login vers une page donnée, ou page d'accueil spécifique selon membre).

      De plus il doit exister des plugins qui forcent la réinitialisation du MdP (quels sont tes critères sur ce point ?).
      Celui-ci par exemple... ou celui-la...
      (Attention : notes bien que je ne les connais pas, j'ai juste fait une petite recherche sur la JED).
      J'ai utilisé le système de login de joomla sur un autre site ou effectivement je demande le changement de mot de passe. Mais ça fonctionne plus ou moins bien

      Envoyé par roland_d_alsace Voir le message
      S'ils ne correspondent pas à ton besoin, tu pourras au moins t'en inspirer pour la gestion de la redirection vers la page de profil par exemple.

      Sinon si tu veux absolument créer un composant, fait une petit recherche sur le forum "dev", il y a des pistes (bouquins).
      Ou inspire toi d'un composant (assez simple) du core (com_contact par exemple).
      Mais pour ta demande en particulier, je ne le ferai pas car il vaut mieux laisser Joomla faire au niveau du login, du contrôle et de la mise en œuvre du mot de passe.
      En informatique on ne refait par 2x le même travail, c'est risque d'erreurs et de problèmes.
      Comme dit, il faut juste faire éventuellement un plugin qui à la première entrée sur le site d'un membre enregistré fera le nécessaire en cas de nécessité de changement du MdP.
      C'est ça la logique.
      Exact sauf que ce que fait joomla ne me convient pas car je travaille sur 2 bases de données bien séparées. C'est pourquoi je voudrais créer un composant.
      Je vais regarder comment est fait le com_contact

      Commentaire


      • #4
        Envoyé par Remi45 Voir le message

        Sauf que je ne veux pas utiliser le profil membre
        Tu peux l'adapter "à ta sauce" par des plugins, il y a d'ailleurs un exemple livré avec Joomla il me semble.

        Dans tous les cas pour l'encodage du MdP et sa gestion moi je je laisse faire le framework de Joomla.
        Cela évite les problèmes, si par exemple le core team décide à nouveau de changer les règles d'encryptage par exemple (cela m'est arrivé).

        Envoyé par Remi45 Voir le message
        J'ai utilisé le système de login de joomla sur un autre site ou effectivement je demande le changement de mot de passe. Mais ça fonctionne plus ou moins bien
        ?

        Envoyé par Remi45 Voir le message
        Exact sauf que ce que fait joomla ne me convient pas car je travaille sur 2 bases de données bien séparées. C'est pourquoi je voudrais créer un composant.
        Pas de soucis, j'ai souvent fait des plugins de type "bridge", par exemple pour avoir qu'un seul login pour 2 moteurs de sites différents (donc plusieurs database).
        Lors de la création du compte sous Joomla le plugin crée aussi le compte dans l'autre DB, idem à la modification, au login, etc...
        Avec le système de plugin de Joomla, c'est hyper facile et fiable.

        Envoyé par Remi45 Voir le message

        Je vais regarder comment est fait le com_contact
        C'est un exemple où tu pourras voir la gestion des formulaires (voir aussi ce tuto par exemple...)
        Dernière édition par roland_d_alsace à 10/06/2019, 22h23
        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


        • #5
          Je reviens sur ce sujet car j'ai un tout petit peu avancé.
          A partir des différent tutoriels j'ai fait un composant simple avec la structure suivante:

          Cliquez sur l'image pour l'afficher en taille normale

Nom : repformff.JPG 
Affichages : 71 
Taille : 24,5 Ko 
ID : 2005738
          Le xml du composant formff.xml
          Code:
          <?xml version="1.0" encoding="utf-8"?>
          <extension type="component" version="3.0" method="upgrade">
          
              <name>Form FF!</name>
              <!-- The following elements are optional and free of formatting constraints -->
              <creationDate>Septembre 2019</creationDate>
              <author>Rémi</author>
              <authorEmail>contact@monsite.fr</authorEmail>
              <authorUrl>www.monsite.fr</authorUrl>
              <copyright>Copyright Info</copyright>
              <license>License Info</license>
              <!--  The version string is recorded in the components table -->
              <version>0.0.1</version>
              <!-- The description is optional and defaults to the name -->
              <description>Description of the Form FF component ...</description>
          
              <update> <!-- Runs on update; New since J2.5 -->
                  <schemas>
                      <schemapath type="mysql">sql/updates/mysql</schemapath>
                  </schemas>
              </update>
          
              <!-- Site Main File Copy Section -->
              <!-- Note the folder attribute: This attribute describes the folder
                  to copy FROM in the package to install therefore files copied
                  in this section are copied from /site/ in the package -->
              <files folder="site">
                  <filename>index.html</filename>
                  <filename>formff.php</filename>
                  <filename>controller.php</filename>
                  <folder>views</folder>
              </files>
          
              <administration>
                  <!-- Administration Menu Section -->
                  <menu link='index.php?option=com_formff'>Form FF!</menu>
                  <!-- Administration Main File Copy Section -->
                  <!-- Note the folder attribute: This attribute describes the folder
                      to copy FROM in the package to install therefore files copied
                      in this section are copied from /admin/ in the package -->
                  <files folder="admin">
                      <!-- Admin Main File Copy Section -->
                      <filename>index.html</filename>
                      <filename>formff.php</filename>
                      <!-- SQL files section -->
                      <folder>sql</folder>
                  </files>
              </administration>
          
          </extension>
          Pour la partie site:

          formff.php
          Code PHP:
          defined('_JEXEC') or die('Restricted access');

          // Get an instance of the controller prefixed by FormFF
          $controller JControllerLegacy::getInstance('FormFF');

          // Perform the Request task
          $input JFactory::getApplication()->input;
          $controller->execute($input->getCmd('task'));

          // Redirect if set by the controller
          $controller->redirect(); 
          controller.php
          Code PHP:
          defined('_JEXEC') or die('Restricted access');

          class 
          FormFFController extends JControllerLegacy
          {

          view.html.php
          Code PHP:
          defined('_JEXEC') or die('Restricted access');

          /**
           * HTML View class for the HelloWorld Component
           *
           * @since  0.0.1
           */
          class FormFFViewFormFF extends JViewLegacy
          {
              
          /**
               * Display the From FF view
               *
               * @param   string  $tpl  The name of the template file to parse; automatically searches through the template paths.
               *
               * @return  void
               */
              
          function display($tpl null)
              {
                  
          // Assign data to the view
                  
          $this->msg 'Formulaire';

                  
          // Display the view
                  
          parent::display($tpl);
              }

          default.php
          Code PHP:
          defined('_JEXEC') or die('Restricted access');
          ?>
          <h1><?php echo $this->msg?></h1>
          default.xml
          Code:
          <?xml version="1.0" encoding="utf-8"?>
          <metadata>
              <layout title="COM_FORMFF_FORMFF_VIEW_DEFAULT_TITLE">
                  <message>COM_FORMFF_FORMFF_VIEW_DEFAULT_DESC</message>
              </layout>
          </metadata>
          Maintenant j'ai compris qu'on pouvait définir un formulaire à l'aide d'un fichier xml du type

          Code:
          <?xml version="1.0" encoding="UTF-8"?>
          <form>
              <fields name="champs">
                  <fieldset name="ident">
                      <field
                              type="text"
                              name="nomclient"
                              id="nomclientff"
                              label="Nom"
                              description="Entrez votre nom"
                              size="80"
                              maxLength="255" />                     
                  </fieldset>
              </fields>
          </form>
          Par contre ce que j'ai n'ai pas trouvé c'est comment j'affiche mon formulaire et comment je peux traiter les informations enregistrées dans le formulaire.

          Commentaire


          • #6

            Les fichiers de type index.html ne sont utiles que lorsqu'un dossier est ou peut être temporairement vide.
            de plus, la license peut être double mais doit être Open Source
            Code:
            <license>GNU General Public License version 2 or later; see LICENSE.txt</license>
            Dernière édition par infograf768 à 29/08/2019, 18h17
            Jean-Marie Simonet / infograf768
            Joomla co-fondateur.
            Sauf demande explicite de ma part, merci de ne pas utiliser de Message Privé pour poser des questions. Le forum est là pour ça.

            Commentaire

            Annonce

            Réduire
            Aucune annonce pour le moment.

            Partenaire de l'association

            Réduire

            Hébergeur Web PlanetHoster
            Travaille ...
            X