- 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

