changeset 4:b4c1e3d5d5ce

Warn if value omitted due to lack of space
author Franck Deroche <franck@defr.org>
date Mon, 26 Jan 2009 12:29:17 +0100
parents 9372c6448311
children 4fc2f22efcdf
files noderef_view.js
diffstat 1 files changed, 22 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/noderef_view.js	Mon Jan 26 12:28:09 2009 +0100
+++ b/noderef_view.js	Mon Jan 26 12:29:17 2009 +0100
@@ -1,4 +1,4 @@
-// vim: set ts=2 sw=2 expandtab syntax=php:
+// vim: set ts=2 sw=2 expandtab:
 /**
  * Attach the noderef_view behavior.
  */
@@ -11,22 +11,37 @@
         wrapper = wrapper.prev();
       }
 
+      // Hide existing "No space left" message
+      $('div.noderef_nospace', wrapper).fadeOut();
+
       // 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();
+        var selection = noderef_view_get_selection(), left = [];
         for(nid in selection) {
+          count = 0;
           // Autocomplete field
-          $('input.form-autocomplete:not([value])', wrapper)
+          count += $('input.form-autocomplete:not([value])', wrapper)
             .filter(':first')
-            .val(selection[nid]);
-          // Select field
-          $('select', wrapper).val(nid);
+            .val(selection[nid])
+            .length;
+          // Select field (exclude the weight of autocomplete fields)
+          count += $('select:not([id$="--weight"])', wrapper).val(nid).length;
           // Radio field
-          $('input:radio[value='+ nid + '], input:checkbox[value='+ nid +']', wrapper).attr('checked', 'checked');
+          count += $('input:radio[value='+ nid + '], input:checkbox[value='+ nid +']', wrapper)
+            .attr('checked', 'checked')
+            .length;
+          if (count == 0) {
+            left.push(selection[nid]);
+          }
+        }
+        if (left.length) {
+          message = Drupal.t('No space left for value(s): @titles',
+            { '@titles': left.join(', ')});
+          wrapper.append('<div class="warning noderef_nospace">'+ message +'</div>');
         }
       });
     });