franck@4: // vim: set ts=2 sw=2 expandtab:
franck@0: /**
franck@0: * Attach the noderef_view behavior.
franck@0: */
franck@0: Drupal.behaviors.noderef_view = function(context) {
franck@6: $('.noderef-view-wrapper div[id$="-wrapper"]:first-child').addClass('noderef-view-items');
franck@0: $('.noderef_view_link', context).each(function(i, obj) {
franck@0: $(obj).addClass('noderef_view_link_processed').click(function() {
franck@0: // Get the wrapper
franck@7: var wrapper = $(this)
franck@7: .parent()
franck@7: .find('.noderef-view-items')
franck@7: .filter(':first');
franck@7: var element = $(this);
franck@0:
franck@4: // Hide existing "No space left" message
franck@7: $('div.noderef_outofspace', element.parent()).fadeOut();
franck@4:
franck@0: // Suppress behavior if it was previsously attached
franck@0: $(document).unbind('popups_form_success.noderef_view');
franck@0:
franck@0: // And now bind it. This code will be executed after successful
franck@0: // completion of the popup select form
franck@0: $(document).bind('popups_form_success.noderef_view', function() {
franck@4: var selection = noderef_view_get_selection(), left = [];
franck@0: for(nid in selection) {
franck@4: count = 0;
franck@0: // Autocomplete field
franck@4: count += $('input.form-autocomplete:not([value])', wrapper)
franck@0: .filter(':first')
franck@4: .val(selection[nid])
franck@4: .length;
franck@4: // Select field (exclude the weight of autocomplete fields)
franck@4: count += $('select:not([id$="--weight"])', wrapper).val(nid).length;
franck@0: // Radio field
franck@4: count += $('input:radio[value='+ nid + '], input:checkbox[value='+ nid +']', wrapper)
franck@4: .attr('checked', 'checked')
franck@4: .length;
franck@4: if (count == 0) {
franck@4: left.push(selection[nid]);
franck@4: }
franck@4: }
franck@4: if (left.length) {
franck@4: message = Drupal.t('No space left for value(s): @titles',
franck@4: { '@titles': left.join(', ')});
franck@7: text = $('