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]