Forum CMS Made Simple FR

Version complète : FEU et ajax
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: #1.9.4.3
#~ Url du site : nextrides
#~ Hébergeur / Soft : hébergeur pas cher
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.9.4.3
#~ Installed Modules:
#~ CMSMailer: 2.0.1
#~ FileManager: 1.1.0
#~ MenuManager: 1.7.6
#~ ModuleManager: 1.4.2
#~ News: 2.11.4
#~ nuSOAP: 1.0.2
#~ Printing: 1.1.2
#~ Search: 1.6.10
#~ ThemeManager: 1.1.4
#~ TinyMCE: 2.8.4
#~ CGExtensions: 1.27.1
#~ FrontEndUsers: 1.16.2
#~ FEmessages: 1.1
#~ CGSimpleSmarty: 1.4.9
#~ CGFeedback: 1.5
#~ CTLModuleMaker: 2.0.3
#~ SelfRegistration: 1.6.12
#~ AjaxMadeSimple: 0.3.1
#~ Products: 2.15
#~ FormBuilder: 0.7
#~ FormBrowser: 0.4
#~ annonces: 1.0
#~ CustomContent: 1.7.3
#~ JQueryTools: 1.0.10
#~ CGUserDirectory: 1.2.6
#~ CGSmartImage: 1.6
#~ Config Information:
#~ php_memory_limit:
#~ process_whole_template: false
#~ output_compression: true
#~ max_upload_size: 6000000
#~ default_upload_permission: 664
#~ url_rewriting: mod_rewrite
#~ page_extension: .html
#~ query_var: page
#~ image_manipulation_prog: GD
#~ auto_alias_content: true
#~ locale:
#~ default_encoding: utf-8
#~ admin_encoding: utf-8
#~ set_names: true
#~ Php Information:
#~ phpversion: 5.3.8
#~ md5_function: On (Vrai)
#~ gd_version: 2
#~ tempnam_function: On (Vrai)
#~ magic_quotes_runtime: Off (Faux)
#~ E_STRICT: 0
#~ E_DEPRECATED: 0
#~ memory_limit: 64M
#~ max_execution_time: 90
#~ output_buffering: On
#~ safe_mode: Off (Faux)
#~ file_uploads: On (Vrai)
#~ post_max_size: 10M
#~ upload_max_filesize: 6M
#~ session_save_path: /tmp (1777)
#~ session_use_cookies: On (Vrai)
#~ xml_function: On (Vrai)
#~ Server Information:
#~ Server Api: cgi-fcgi
#~ Server Db Type: MySQL (mysql)
#~ Server Db Version: 5.1.56
#~ ----------------------------------------------
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Bonjour à tous,

Sur mon site, j'ai mis en place un panneau déroulant dans lequel j'ai inclu le système de connection FEU.
Lors de la connection ou de la déconnection FEU recharge la page ce qui a pour effet de fermer le panneau déroulant.
La connection et déconnection se fait bien mais le fait de recharger la page et de fermer ce panneau me gêne terriblement.

Ma question:

Est-il possible de gérer la connection et déconnection en ajax?
Si oui, quelle est la piste à suivre?

Merci pour vos lumières
Un second soucis apparait notemment avec le module products.
lorsque je suis sur une page détail d'un produit et que je me loggue, je reviens bien sur la même page de détails par contre avec le logout j'arrive sur une page détail vide... les paramètres de l'article sont à priori réinitialisés puisque la page ne peut plus l'afficher.
pourquoi???
u nouveau au niveau de la gestion du login par ajax!

En utilisant le plugin jQueryForm, la connection se fait bien en ajax mais il reste un soucis, le refresh de la balise contenant le formulaire de lofin de FEU.
J'ai essayé par jquery de recharger le tag de FEU dans la div en question mais ça ne fonctionne pas...

code utilisé:

Code :
$(document).ready(function() {
          
            $('.loginform .cms_form').ajaxForm(
               function() {
               $("#panel .content .loginform").html('{/literal}{cms_module module=FrontEndUsers}{literal}');  
            });
        });

Donc si quelqu'un avait la solution pour ce rafraichissement de div ce serait top car mon problème serait résolu!
je commence à voir le jour...

j'ai crée une page login avec un template dédié dont le seul code est:

Code :
{process_pagedata}
{cms_module module=FrontEndUsers returnto="home"}

j'appelle donc cette page par jquery lors de ma connection ou deconnection

script jQuery:

Code :
<script type="text/javascript">
        
        $(document).ready(function() {
          
            var options = {
               url: "login.html",
               success: function() {
               $("#panel .content .loginform").load("login.html");
               }
           };

            $('.loginform form').submit(function(e) {
               e.preventDefault();
               $(this).ajaxSubmit(options);
               return false;
               });

             $('.loginform a').click(function(e) {
                e.preventDefault();
               $.ajax({
                  url: $('.loginform a').attr("href"),
                  success: function(html){
                  $("#panel .content .loginform").load("login.html");
                  }
               });
             });  
            
        });
</script>

ça marche presque....

lorsque que la page login est loadé jquery n'est plus pris en compte, comme si l fonction load de jquery fesait une iframe dans lequel était inséré la page login.html sur laquel mon script ne peut être interprété.
Il faudrait donc que j'arrive à remplacer l'intérieur de ma div ".loginform" par le contenu de la page login.html... donc utiliser la fonction jquery ".html()"


toujours personne pour filer un coup de pouce???
Bon ça marche mais c'est du bricolage!!!!

donc, j'ai toujours ma page login comme dans le post précédant et mon script qui est devenu:

Code :
<script type="text/javascript">
        
        $(document).ready(function() {
            var page = {/literal}{page_id}{literal};
            var options = {
               url: "login.html",
               success: function() {
               $("#panel .content .loginform").load("login.html");
               }
            };

            $('.loginform form').live("click", function(){
            $('.loginform form').submit(function(e) {
               e.preventDefault();
               $(this).ajaxSubmit(options);
               return false;
               });
            });

             $('.loginform a').live("click", function(e){
                e.preventDefault();
               $.ajax({
                  url:"feu/logout/"+page+".html",
                  success: function(html){
                  $("#panel .content .loginform").load("login.html");
                  }
               });
             });  
            
        });
</script>

l'ajout des fonctions live permet les évènement "click" et donc de faire fonctionner la bête.
Pour le logout, j'ai du récupérer l'idée de la page courante pour recrée le lien de logout car avec la connection ajax, c'est l'id de la page login.html qui m'étais retourné dans le lien logout et ça ne marchait pas.

comme dit plus haut c'est du bricolage, car du coup je n'ai pas de gestion des messages d'erreur si mauvais login ou password... le formulaire se ré-affiche vide tout simplement.

Si maintenant quelqu'un a une solution plus cartésienne, je suis toujours preneur!
Bon je suis revenu sur mon sytème de login/logout par ajax

le systeme est désormais différent et fonctionne mieux que l'ancien.

je passe donc par une udt pour traiter les infos et connecter ou deconnecter l'utilisateur.
le seul soucis qu'il me reste à régler, c'est d'afficher les templates de login et logout après traitement
pour le moment, j'appelle le tag {cms_module module=FrontEndUsers} dans mon udt, mais je suis sûr qu'il y'a un moyen plus efficace du style:

$feuseurs->ProcessTemplateFromData(//quelquechose);

si quelqu'un pouvait m'aider à finaliser ce truc, je pourrais passer à autre chose, l'esprit tranquille!

code udt:

Code :
global $gCms;
$error = "";
$result = "";
$user_id = $params['userid'];

$feusers = cms_utils::get_module('FrontEndUsers');

$username = cms_html_entity_decode($_POST["username"]);
$password = cms_html_entity_decode($_POST["password"]);

$userid = $feusers->GetUserID($username);
$uid = $feusers->LoggedInId();

if($feusers){

      if($uid){
           $feusers->Logout($uid);
      }
      else{
           $feusers->Login($username, $password);

      }


           $smarty = &cmsms()->GetSmarty();
                 $smarty_data = "{cms_module module=FrontEndUsers} ";
                 $smarty->_compile_source('temporary template', $smarty_data, $_compiled );
                 @ob_start();
                 $smarty->_eval('?>' . $_compiled);
                 $_contents = @ob_get_contents();
                 @ob_end_clean();
           echo $_contents;
}