- 1
[Opened] plugins de templates Jquery
Posted by julien j on 05/31/2008 19:15
Bonjour,
suite au ticket 30 je propose une version de la fonction "link_to_remote".
Cependant avant de poster un diff, c'est ma première contribution, j'aimerais avoir votre avis sur le code.
surtout que j'ai rajouté une variable $id : elle permet d'utiliser plusieurs fois le plugin dans une même page, mais ce "bricolage" ne me plait pas trop !
Voila le code (attention adapté à la dernière version de Jelix : svn)
fichier : function.link_to_remote.php
<?php /** * @package Jelix * @subpackage jtpl_plugin * @author Julien Jacottet * @contributor * @copyright 2008 Julien Jacottet * @link http://www.jelix.org * @licence GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html */ function jtpl_function_html_link_to_remote($tpl, $label, $element_id, $action_selector, $action_parameters, $option, $id=1) { global $gJCoord,$gJConfig; // Add js link $gJCoord->response->addJSLink($gJConfig->urlengine['basePath'].'jelix/jquery/jquery.js'); //Initialise $url = jUrl::get($action_selector, $action_parameters); $position = ((array_key_exists("position", $option)) ? $option['position'] : 'html' ); $method = ((array_key_exists("method", $option)) ? $option['method'] : 'GET' ); $beforeSend = ((array_key_exists("beforeSend", $option)) ? $option['beforeSend'] : '' ); $complete = ((array_key_exists("complete", $option)) ? $option['complete'] : '' ); $error = ((array_key_exists("error", $option)) ? $option['error'] : '' ); // Link echo "<a onclick='link_to_remote_".$id."();'>".$label."</a>\n"; // Script echo " <script> function link_to_remote_".$id."() { $.ajax({ type: '".$method."', url: '".$url."', beforeSend: function(){".$beforeSend.";}, complete: function(){".$complete.";}, error: function(){".$error.";}, success: function(msg){ $('#".$element_id."').".$position."(msg); } }); }; </script>"; } ?>
Exemple d'utilisation :
{link_to_remote 'mon test 1', 'result', 'montest~default:ajax', array('id'=>'34'), array( 'position'=>'html', 'method'=>'GET', 'beforeSend'=>'alert("beforeSend")', 'complete'=>'alert("complete")', 'error'=>'alert("error")', )} <div id="result">Ici les resultats</div>
Pour les options :
position : (voir doc jquey )
- html (default)
- append
- prepend
method :
- GET (Default)
- POST
beforeSend : JS a executer avant la requète Ajax
complete : JS a executer aprés la requète Ajax (même si erreur)
error : JS a executer si erreur
Merci
Julien
[Opened] Re: plugins de templates Jquery
Posted by laurentj on 06/01/2008 14:15
Salut,
même si tu n'es pas sûr de ton code, il n'y a pas de mal à proposer ça directement dans un ticket.
Pour l'histoire de l'id, c'est effectivement pas terrible qu'il soit en argument. Tu pourrrais plutôt avoir $id en variable statique à l'interieur de la fonction, et l'incrémenter directement. C'est ainsi totalement transparent
static $id =0; $id++;
- 1