Author: simoneg
Date: Tue Dec 15 15:25:56 2009
New Revision: 890826

URL: http://svn.apache.org/viewvc?rev=890826&view=rev
Log:
LABS-502 : remember on client side the order of fields in a dynamic form

Modified:
    
labs/magma/trunk/website-beansview/src/main/resources/org/apache/magma/website/beansview/dynaForm.js

Modified: 
labs/magma/trunk/website-beansview/src/main/resources/org/apache/magma/website/beansview/dynaForm.js
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/resources/org/apache/magma/website/beansview/dynaForm.js?rev=890826&r1=890825&r2=890826&view=diff
==============================================================================
--- 
labs/magma/trunk/website-beansview/src/main/resources/org/apache/magma/website/beansview/dynaForm.js
 (original)
+++ 
labs/magma/trunk/website-beansview/src/main/resources/org/apache/magma/website/beansview/dynaForm.js
 Tue Dec 15 15:25:56 2009
@@ -65,9 +65,30 @@
                        }
                        if (!nn) this.style.display='block';
                });
-               $(this).append($('<div 
class="MagmaDynaSelection"><select/></div>'));
+               var cookie = DynaForm_getCookie(form);
+               if (cookie != null && cookie != '') {
+                       order = cookie.split(',');
+                       for (var j = 0; j < order.length; j++) {
+                               var bi = order[j];
+                               if (!this.df_set[bi]) {
+                                       DynaForm_setCookie(form, '');
+                                       break;
+                               }
+                               var block = this.df_blocks[bi];
+                               if (block)
+                                       $(this).append(block);
+                       }
+               } else {
+                       cookie = "";
+                       for (var j = 0; j < this.df_set.length; j++) {
+                               if (this.df_set[j]) cookie += "," + j;
+                       }
+                       DynaForm_setCookie(form, cookie);
+               }
+               this.df_select = $('<div 
class="MagmaDynaSelection"><select/></div>');
+               $(this).parent().append(this.df_select);
                DynaForm_resetSelection(this);
-               $('.MagmaDynaSelection select',this).change(DynaForm_selected);
+               $('select',this.df_select).change(DynaForm_selected);
        });
        
 });
@@ -79,11 +100,12 @@
                        opts += '<option value="' + i + '">' + 
form.df_labels[i] + '</option>';
                }
        }
-       $('.MagmaDynaSelection select',form).html(opts);
+       $('select',form.df_select).html(opts);
 }
 
 DynaForm_set = function(form, i) {
        var block = $('.block_' + i,form);
+       $(form).append(block);
        block.slideDown('normal');
        form.df_set[i] = true;
        block.append($('<div 
class="MagmaDynaBlockRemove">remove</div>').click(function() { 
DynaForm_unset(form, i) }));
@@ -94,13 +116,47 @@
        block.slideUp('normal');
        $('input,select,textarea', block).val('');
        $('.MagmaDynaBlockRemove', block).remove();
-       form.df_set[i] = false; 
+       form.df_set[i] = false;
+       var cookie = DynaForm_getCookie(form);
+       cookie = cookie.replace(i, '');
+       DynaForm_setCookie(form, cookie);
        DynaForm_resetSelection(form);
 }
 
 DynaForm_selected = function(evt) {
-       var i = $(this).val();
-       var form =$(this).closest('.MagmaDynaForm')[0];
+       var st = $(this);
+       var i = st.val();
+       if (i == '') return;
+       var form =st.closest('form');
+       form = $('.MagmaDynaForm', form)[0];
        DynaForm_set(form, i);
        DynaForm_resetSelection(form);
+       DynaForm_setCookie(form, DynaForm_getCookie(form) + ',' + i);
+       
 }
+
+DynaForm_getCookie = function(form) {
+       form =$(form).closest('form')[0];       
+       var name = form.name + '=';
+       var cc = document.cookie.split(';');
+       var cookie = '';
+       for(var i=0;i < cc.length;i++) {
+               var c = cc[i];
+               while (c.charAt(0)==' ') c = c.substring(1,c.length);
+               if (c.indexOf(name) == 0) {
+                       cookie = c.substring(name.length,c.length);
+                       break;
+               }
+       }
+       while (cookie.charAt(0)==',') cookie = 
cookie.substring(1,cookie.length);       
+       return cookie;
+}
+
+DynaForm_setCookie = function(form, cookie) {
+       cookie = cookie.replace(',,',',');
+       while (cookie.charAt(0)==',') cookie = 
cookie.substring(1,cookie.length);
+       form =$(form).closest('form')[0];       
+       var name = form.name;
+       document.cookie = name + '=' + cookie;
+}
+



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to