thomasxu.fr Posted July 19, 2010 Share Posted July 19, 2010 apres la MAJ de 1.3.1mon module catégorie modifié marche plus ...voici le codage de blockcategories.tpl: [removed][removed] <!-- Block categories module --> {l s='Categories' mod='blockcategories'} {l s='recherche rapide' mod='blockCategTree'} {foreach from=$blockCategTree.children item=child name=blockCategTree}$link->getCategoryLink($category->id, $category->link_rewrite {$child.name} {/foreach} {foreach from=$blockCategTree.children item=child name=blockCategTree} {if $smarty.foreach.blockCategTree.last} {include file=$branche_tpl_path node=$child last='true'} {else} {include file=$branche_tpl_path node=$child} {/if} {/foreach} [removed] // <![CDATA[ // we hide the tree only if JavaScript is activated $('div#categories_block_left ul.dhtml').hide(); // ]]> [removed] <!-- /Block categories module --> nouvelle ajout dans le tool.js: function linkTo(optVal){ if(optVal=="") return false; [removed]='http://127.0.0.1/category.php?id_category='+optVal; } function getXMLHttpRequest() { var xhr = null; if (window.XMLHttpRequest || window.ActiveXObject) { if (window.ActiveXObject) { try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else { xhr = new XMLHttpRequest(); } } else { alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest..."); return null; } return xhr; } function request(oSelect, select_name) { //Une seule requête à la fois ! //En considérant l'exemple précédent, que ce passe-t-il si l'utilisateur clique plusieurs fois sur le bouton d'envoi ? Et bien la réponse est simple, la requête est envoyée plusieurs fois. Ce qu'il faudrait c'est trouver une astuce pour annuler la requête en cours si une nouvelle est envoyée. //Pour ce fait, il va falloir stocker l'objet XMLHttPrequest dans un objet global, xhr, et il n'y aura qu'à tester l'état de cet objet avant d'envoyer une nouvelle requête. Si l'état est différent de 0 (la requête est en cours), il suffit de l'annuler pour envoyer la nouvelle. On peut aussi décider de ne pas envoyer la nouvelle, au choix ?a. var value = oSelect.options[oSelect.selectedIndex].value; var xhr = getXMLHttpRequest(); // Voyez la fonction getXMLHttpRequest() définie dans la partie précédente if (xhr && xhr.readyState != 0) { xhr.abort(); // On annule la requête en cours ! } xhr.onreadystatechange = function() { if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) { readData(xhr.responseXML, select_name); document.getElementById("loader").style.display = "none"; } else if (xhr.readyState < 4) { document.getElementById("loader").style.display = "inline"; } }; xhr.open("POST", "XMLHttpRequest_getListData.php", true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.send("IdEditor=" + value); } function readData(oData, select_name) { var nodes = oData.getElementsByTagName("item"); var oSelect; var oOption, oInner; if(select_name=="softwaresSelect"){oSelect = document.getElementById("softwaresSelect"); oSelect[removed] = ""; for (var i=0, c=nodes.length; i oOption = document.createElement("option"); oInner = document.createTextNode(nodes[i].getAttribute("name")); oOption.value = nodes[i].getAttribute("id"); oOption.appendChild(oInner); oSelect.appendChild(oOption); } } else if(select_name=="prodSelect"){oSelect = document.getElementById("prodSelect"); oSelect[removed] = ""; for (var i=0, c=nodes.length; i oOption = document.createElement("option"); oInner = document.createTextNode(nodes[i].getAttribute("name")); oOption.value = nodes[i].getAttribute("id"); oOption.appendChild(oInner); oSelect.appendChild(oOption); } } } et nouveau doc php dans la racine XMLHttpRequest_getListData.php<?phpinclude(dirname(__FILE__).'/config/config.inc.php');header("Content-Type: text/xml");echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";echo "";$idEditor = (isset($_POST["IdEditor"])) ? htmlentities($_POST["IdEditor"]) : NULL;if ($idEditor) {$categories = array();$categories = Category::getChildren($idEditor,'1',true); foreach ($categories AS $row){ echo ""; }}echo "";?> Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now