Mercurial > defr > drupal > noderef_view
diff noderef_view.js @ 0:a3c1e224e807
Import initial du module noderef_view
author | Franck Deroche <franck@defr.org> |
---|---|
date | Fri, 23 Jan 2009 14:52:03 +0100 |
parents | |
children | 25a0c2fcbcfb |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/noderef_view.js Fri Jan 23 14:52:03 2009 +0100 @@ -0,0 +1,48 @@ +// vim: set ts=2 sw=2 expandtab syntax=php: +/** + * Attach the noderef_view behavior. + */ +Drupal.behaviors.noderef_view = function(context) { + $('.noderef_view_link', context).each(function(i, obj) { + $(obj).addClass('noderef_view_link_processed').click(function() { + // Get the wrapper + var id = $(this).attr('rel'); + var wrapper = $('#' + id); + + // Suppress behavior if it was previsously attached + $(document).unbind('popups_form_success.noderef_view'); + + // And now bind it. This code will be executed after successful + // completion of the popup select form + $(document).bind('popups_form_success.noderef_view', function() { + selection = noderef_view_get_selection(); + for(nid in selection) { + // Autocomplete field + $('input.form-autocomplete:not([value])', wrapper) + .filter(':first') + .val(selection[nid]); + // Select field + $('select', wrapper).val(nid); + // Radio field + $('input:radio[value='+ nid + '], input:checkbox[value='+ nid +']', wrapper).attr('checked', 'checked'); + } + }); + }); + }); +} + +/** + * Helper function to extract the references values + */ +function noderef_view_get_selection() { + var cookies = document.cookie.split(';'), selection = {}; + for(var i = 0; i < cookies.length; i++) { + var cookie = $.trim(cookies[i]).split('='); + if (cookie[0].indexOf('noderef[') == 0) { + var nid = cookie[0].replace(/noderef\[(\d+)\]/, "$1"); + var title = decodeURIComponent(cookie[1]); + selection[nid] = title; + } + } + return selection; +}