On May 20, 2010, at 7:15 PM, dgervalle (SVN) wrote:

> Author: dgervalle
> Date: 2010-05-20 19:15:53 +0200 (Thu, 20 May 2010)
> New Revision: 28950
> 
> Modified:
>   
> platform/web/branches/xwiki-web-2.3/standard/src/main/webapp/resources/js/xwiki/table/livetable.js
> Log:
> XWIKI-5212 - Livetable filter serialization does not properly support 
> multi-valued form elements
> Merge from trunk r28947

Do we have a test for this? How do we unit-test UI components?

Thanks
-Vincent

> Modified: 
> platform/web/branches/xwiki-web-2.3/standard/src/main/webapp/resources/js/xwiki/table/livetable.js
> ===================================================================
> --- 
> platform/web/branches/xwiki-web-2.3/standard/src/main/webapp/resources/js/xwiki/table/livetable.js
>         2010-05-20 17:11:02 UTC (rev 28949)
> +++ 
> platform/web/branches/xwiki-web-2.3/standard/src/main/webapp/resources/js/xwiki/table/livetable.js
>         2010-05-20 17:15:53 UTC (rev 28950)
> @@ -609,11 +609,12 @@
>     for (var i = 0; i < this.inputs.length; ++i) {
>       var key = this.inputs[i].name;
>       if ((this.inputs[i].type == "radio") || (this.inputs[i].type == 
> "checkbox")) {
> -        if (this.filters[key]) {
> -          if (this.filters[key] == this.inputs[i].value.strip()) {
> -            this.inputs[i].checked = true;
> +        var filter = this.filters[key];
> +        if (filter) {
> +          if (Object.isArray(filter)) {
> +            this.inputs[i].checked = 
> (filter.indexOf(this.inputs[i].value.strip()) != -1);
>           } else {
> -            this.inputs[i].checked = false;
> +            this.inputs[i].checked = (filter == 
> this.inputs[i].value.strip());
>           }
>         }
>       } else {
> @@ -624,14 +625,14 @@
>     }
> 
>     for (var i = 0; i < this.selects.length; ++i) {
> -      if (!this.filters[this.selects[i].name]) {
> -        continue;
> -      }
> -      for (var j = 0; j < this.selects[i].options.length; ++j) {
> -        if (this.selects[i].options[j].value == 
> this.filters[this.selects[i].name]) {
> -          this.selects[i].options[j].selected = true;
> -        } else {
> -          this.selects[i].options[j].selected = false;
> +      var filter = this.filters[this.selects[i].name];
> +      if (filter) {
> +        for (var j = 0; j < this.selects[i].options.length; ++j) {
> +          if (Object.isArray(filter)) {
> +            this.selects[i].options[j].selected = 
> (filter.indexOf(this.selects[i].options[j].value) != -1);
> +          } else {
> +            this.selects[i].options[j].selected = 
> (this.selects[i].options[j].value == filter);
> +          }
>         }
>       }
>     }
> @@ -649,7 +650,7 @@
>       // Ignore filters with blank value
>       if (!filters[i].value.blank()) {
>         if ((filters[i].type != "radio" && filters[i].type != "checkbox") || 
> filters[i].checked) {
> -          result += ("&" + filters[i].name + "=" + 
> encodeURIComponent(filters[i].value));
> +          result += ("&" + filters[i].serialize());
>         }
>       }
>     }

_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to