developer.jelix.org is not used any more and exists only for history. Post new tickets on the Github account.
developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.

Opened 12 years ago

Closed 6 years ago

#30 closed task (fixed)

intégration d'une lib ajax et de plugins de templates associés

Reported by: laurentj Owned by:
Priority: highest Milestone:
Component: jelix:plugins:tpl Version: 1.0alpha5
Severity: major Keywords:
Cc: Blocked By:
Blocking: Documentation needed: no
Hosting Provider: Php version:

Description

Jelix devrait fournir de quoi faire de l'ajax facilement dans les templates. Voir la page fr/drafts/ajax?.

Attachments (1)

link_to_remote.diff (3.5 KB) - added by julienj 10 years ago.
Function link_to_remote

Download all attachments as: .zip

Change History (16)

comment:1 Changed 11 years ago by Aubanel MONNIER

J'ai utilisé jQuery pour faire ce genre de choses dans mon appli. La seule difficulté que j'aie rencontré, c'est l'utilisation intensive des accolades en js qui force l'utilisation de {literal}, et donc d'assigner les variables en dehors de ces tags, comme c'est le cas dans cet example pour la variable srs.

<script type="text/javascript">
srs='{$srs_id}';
{literal}
function s(link){ $(link).text('Ø');$(link).siblings('ul.review').show('slow');}
function h(link){ $(link).text('…');$(link).siblings('ul.review').hide('slow');}
show = function (){s(this);};hide = function hide(){h(this);};
toggle= function(){ if ($(this).text() == '…') s(this); else h(this);};

 $(document).ready(function(){
	$('#srs-coverage ul.review').hide().before(' <a href="#" class="more">&hellip;<\/a>'); //hide by default, add controls to unfold
	title = $('#srs-coverage h2');
	title.html(title.html()+' <a href="#" id="showAll">&hellip;<\/a> <a href="#" id="hideAll">Ø<\/a>'); //add global controls to fold/unfold all
	if (srs!='') $('#'+srs).siblings('a.more').each(show); //if $srs_id is set, show it by default
	$('#srs-coverage a.more').click(toggle);
	$('#showAll').click(function(){$('#srs-coverage a.more').each(show);});
	$('#hideAll').click(function(){$('#srs-coverage a.more').each(hide);});
	$('a.warning').click(function(){return confirm('Are you sure you want to '+this.title);});
 });
{/literal}
</script>

Sinon je ne vois rien qui ne puisse se faire facilement avec des plugins. Pourquoi s'attachere à une librairie précise ?

comment:2 Changed 11 years ago by laurentj

je ne vois rien qui ne puisse se faire facilement avec des plugins

C'est une chose qu'il faut en effet étudier. Si on trouve à l'usage des choses lourdes à écrire, qui pourrait être fait via un plugin, il faudra le faire. Si on ne trouve rien à simplifier, ce n'est pas grave (et tant mieux finalement)

Pourquoi s'attacher à une librairie précise ?

Essayer de proposer un library qui collerait mieux au framework par exemple. Mais une des reflexions que l'on s'est faite, et justement parce qu'on ne trouve pas grand chose à faire coté plugins, peut être cela n'est finalement pas nécessaire de livrer une lib.

Je pense que c'est à l'usage que l'on verra ce qui est le mieux.

comment:3 Changed 11 years ago by laurentj

  • Component changed from jelix to Site web
  • Milestone changed from Jelix 1.0 to Jelix 1.2
  • Owner set to laurentj

comment:4 Changed 11 years ago by laurentj

  • Priority changed from normal to highest

comment:5 Changed 10 years ago by laurentj

JQuery va être intégré dans Jelix 1.1. reste à faire des plugins de templates. Quelques plugins qui pourrait être utilisés ( inspiré de http://www.symfony-project.org/book/1_0/11-Ajax-Integration et http://api.rubyonrails.org/classes/ActionView/Helpers/ )

  • {remote_function 'element_id', 'action_selector', array(action parameters), $options}
  • {link_to_remote 'label', 'element_id','action_selector', array(action parameters), $options}
  • {periodically_call_remote 'element_id', 'action_selector', array(action parameters), $frequency, $options}

$options est un tableau d'options :

  • 'position', pour indiquer où insérer le contenu reçu par rapport à element_id
  • 'failure', indique l'id de l'element qui reçevra le contenu en cas d'erreur
  • 'condition', un script js qui teste une condition pour que l'action se fasse
  • 'method', la methode pour envoyer les infos
  • 'script_allowed', boolean pour dire si le js reçu peut être executé
  • 'onbefore', 'onafter', 'onloading', 'onloaded', 'onsuccess', 'onfailure', 'oncomplete' : scripts js à executer lors de ces évènements générées pendant la requête ajax

Autre plugins qui pourrait être interressant

  • {visual_effect 'nom_fonction_js_a_creer', 'type_effet', 'element_id', array(autre options)}
  • {draggable_element 'element_id', array(datas to send), $revert}
  • {drop_receiving_element 'element_id', 'element_id','action_selector', array(action parameters), $options} (dans les options, il y a une option supplémentaire, ondrop)
  • {sortable_element 'element_id','action_selector', array(action parameters), $options}

Les autres plugins symfony conçernant les formulaires font doublons avec jForms ;-)

comment:6 Changed 10 years ago by laurentj

  • Component changed from web site to jelix:plugins
  • Documentation needed unset
  • Owner laurentj deleted

comment:7 Changed 10 years ago by julienj

  • review set to review?

Proposition du plugin link_to_remote

exemple :

{link_to_remote
 'Link',    
 'result',    
 'test~default:ajax', array('id'=>'34'),   
 array(
   'position'=>'html',   
   'method'=>'GET',   
   'beforeSend'=>'alert("beforeSend")',   
   'complete'=>'alert("complete")',  
   'error'=>'alert("error")',   
)}
<div id="result"></div>

Changed 10 years ago by julienj

Function link_to_remote

comment:8 Changed 10 years ago by laurentj

  • Milestone changed from Jelix 1.2 to Jelix 1.1 beta 1
  • review changed from review? to review+

OK, this plugin seems ok to me. I'm going to commit it into the trunk.

For other plugins, please create a specific ticket for each plugins.

comment:9 Changed 10 years ago by laurentj

  • review review+ deleted

comment:10 Changed 10 years ago by laurentj

  • Milestone changed from Jelix 1.1 beta 1 to jelix 1.1

comment:11 Changed 10 years ago by laurentj

  • Milestone changed from jelix 1.1 to Jelix 1.2

comment:12 Changed 9 years ago by axel

Bonjour quand a moi j'ai créer en utilisant JQuery un double plugin de template permettant un affichage par onglet sous qui s'utilise sous cette forme. Il s'agit hélas que d'une fonction eye candy.

{onglets, array(nom_onglets), $option_easing}
    {onglet}
        contenu
    {/onglet}
    {onglet}
        contenu
    {/onglet}

{/onglets}

SI ça vous intéresse je peut éventuellement proposer ce que j'ai fait c'est sans doute pas très beau, ou pas très élégants a l'utilisation mais on sais jamais.

comment:13 Changed 9 years ago by laurentj

  • Milestone Jelix 1.2 deleted

comment:14 Changed 8 years ago by laurentj

  • Component changed from jelix:plugins to jelix:plugins:tpl

comment:15 Changed 6 years ago by laurentj

  • Resolution set to fixed
  • Status changed from new to closed

les plugins futurs seront à proposer sur booster.jelix.org ou dans des tickets séparés pour les plus utiles.

Note: See TracTickets for help on using tickets.