- 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
 

