rt 4.2.14 (#13852)
[freeside.git] / rt / share / html / Widgets / SelectionBox
index 4ac178b..b10d0df 100644 (file)
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2015 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales@bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
 %# 
 %# SYNOPSIS
 %#
-%# include javascript:
-%# <& /Widgets/SelectionBox:header &>
-%#
 %# <%init>:
 %# my $sel = $m->comp ('/Widgets/SelectionBox:new',
-%#               Action => me.html',
-%#               Name => 'my-selection',
-%#               Available => \@items,
+%#                Action => me.html',
+%#                Name => 'my-selection',
+%#                Available => \@items,
 %#                # you can do things with @{$sel->{Current}} in the 
 %#                # OnSubmit callback
-%#               OnSubmit => sub { my $sel = shift; },
-%#               Selected => \@selected);
+%#                OnSubmit => sub { my $sel = shift; },
+%#                Selected => \@selected);
 %#
 %# $m->comp ('/Widgets/SelectionBox:process', %ARGS, self => $sel)
 %#
 %# <& /Widgets/SelectionBox:show, self => $sel &>
 %#
 %# if the SelectionBox is created with AutoSave option, OnSubmit will be called
-%# on every button clicked in non-js mode.
-<%method header>
-% unless ($nojs) {
-<script type="text/javascript" src="<%RT->Config->Get('WebPath')%>/NoAuth/js/class.js"></script>
-<script type="text/javascript" src="<%RT->Config->Get('WebPath')%>/NoAuth/js/list.js"></script>
-% }
-<%ARGS>
-$nojs => 0
-</%ARGS>
-</%method>
-
+%# on every button clicked
 <%method new>
 <%init>
 $ARGS{_item_map} = {map {$_->[0] => $_->[1]} @{$ARGS{Available}}};
@@ -103,56 +90,51 @@ if ($self->{Selected} && !ref($self->{Selected})) {
     $self->{Selected} = [$self->{Selected}];
 }
 
-if ($ARGS{fromjs}) {
-    $self->{Current} = $self->{Selected};
+my $current = $self->{Current} = $ARGS{$self->{Name}.'-Current'};
+if ($current && !ref ($current)) {
+    $current = [$current];
 }
-else {
-    my $current = $self->{Current} = $ARGS{$self->{Name}.'-Current'};
-    if ($current && !ref ($current)) {
-        $current = [$current];
-    }
 
-    unless ($self->{ReadOnly}) {
-        ++$self->{Modified};
-        if ($ARGS{add}) {
-            my $choosed = $ARGS{$self->{Name}.'-Available'};
-            for my $add (ref($choosed) ? @$choosed : $choosed) {
-                next if grep { $_ eq $add } @$current;
-                push @$current, $add;
-            }
+unless ($self->{ReadOnly}) {
+    ++$self->{Modified};
+    if ($ARGS{add}) {
+        my $choosed = $ARGS{$self->{Name}.'-Available'};
+        for my $add (ref($choosed) ? @$choosed : $choosed) {
+            next if grep { $_ eq $add } @$current;
+            push @$current, $add;
         }
+    }
 
-        if ($ARGS{remove}) {
-            my $choosed = $ARGS{$self->{Name}.'-Selected'};
-            for my $del (ref($choosed) ? @$choosed : $choosed) {
-                @$current = map { $_ eq $del ? () : $_ } @$current;
-            }
+    if ($ARGS{remove}) {
+        my $choosed = $ARGS{$self->{Name}.'-Selected'};
+        for my $del (ref($choosed) ? @$choosed : $choosed) {
+            @$current = map { $_ eq $del ? () : $_ } @$current;
         }
+    }
 
-        if ($ARGS{moveup} or $ARGS{movedown}) {
-            my $offset = $ARGS{moveup} ? 1 : 0;
-            my $choosed = $ARGS{$self->{Name}.'-Selected'};
-            $choosed = [$choosed] unless ref ($choosed);
-            my $canmove = 0; # not in the cornor
-            for my $i ($ARGS{moveup} ? 0..$#{$current} : reverse 0..$#{$current}) {
-                if (grep {$_ eq $current->[$i]} @$choosed) {
-                if ($canmove) {
-                    splice (@$current, $i-$offset, 2,
-                        @{$current}[$i+1-$offset,$i-$offset]);
-                }
-                }
-                else {
-                ++$canmove;
-                }
+    if ($ARGS{moveup} or $ARGS{movedown}) {
+        my $offset = $ARGS{moveup} ? 1 : 0;
+        my $choosed = $ARGS{$self->{Name}.'-Selected'};
+        $choosed = [$choosed] unless ref ($choosed);
+        my $canmove = 0; # not in the cornor
+        for my $i ($ARGS{moveup} ? 0..$#{$current} : reverse 0..$#{$current}) {
+            if (grep {$_ eq $current->[$i]} @$choosed) {
+            if ($canmove) {
+                splice (@$current, $i-$offset, 2,
+                    @{$current}[$i+1-$offset,$i-$offset]);
+            }
+            }
+            else {
+            ++$canmove;
             }
         }
+    }
 
-        if ($ARGS{clear}) {
-            $current = [];
-        }
-
-        $self->{Current} = $current;
+    if ($ARGS{clear}) {
+        $current = [];
     }
+
+    $self->{Current} = $current;
 }
 
 @{$self->{Current}} = grep { exists $self->{_item_map}{$_} } @{$self->{Current}};
@@ -182,27 +164,22 @@ $self => undef
 </%method>
 
 <%method show>
-<form method="post" action="<%$self->{Action}%>" name="SelectionBox-<% $name %>" id="SelectionBox-<% $name %>"
-% unless ($nojs) {
-onsubmit="list_<% $name %>.selectAll();"
-% }
->
+<form method="post" action="<%$self->{Action}%>" name="SelectionBox-<% $name %>" id="SelectionBox-<% $name %>">
 <input type="hidden" class="hidden" name="<% $self->{Name} %>-Submit" value="1" />
 <& SelectionBox:current, self => $self &>
-<input type="hidden" class="hidden" name="fromjs" value="0" />
 <&|/l&>Available</&>:
 <br />
-<select name="<%$name%>-Available" id="<%$name%>-Available" size="<%$size%>" multiple="multiple">
+<select name="<%$name%>-Available" id="<%$name%>-Available" size="<%$size%>" multiple="multiple" class="selection-box">
 % for (@{$self->{Available}}) {
 <option value="<% $_->[0] %>"><% $_->[1] %></option>
 % }
 </select>
 
 % unless ($self->{ReadOnly}) {
-<input name="add" type="submit" class="button" value=" &rarr; " />
+<input aria-label="Add" name="add" type="submit" class="button" value=" &rarr; " />
 % }
 
-<select name="<%$name%>-Selected" id="<%$name%>-Selected" size="<%$size%>" multiple="multiple">
+<select name="<%$name%>-Selected" id="<%$name%>-Selected" size="<%$size%>" multiple="multiple" class="selection-box">
 % for (@{$self->{Current}}) {
 <option value="<% $_ %>"
 % if (exists $selected{$_}) {
@@ -213,8 +190,8 @@ selected="selected"
 </select>
 % unless ($self->{'ReadOnly'}) {
 % unless ($ARGS{'NoArrows'}) {
- <input name="moveup" type="submit" class="button" value=" &uarr; " />
- <input name="movedown" type="submit" class="button" value=" &darr; " />
+ <input aria-label="Move up" name="moveup" type="submit" class="button" value=" &uarr; " />
+ <input aria-label="Move down" name="movedown" type="submit" class="button" value=" &darr; " />
 % }
  <input name="remove" type="submit" class="button" value="<&|/l&>Delete</&>" />
 % if ($ARGS{'Clear'}) {
@@ -234,17 +211,9 @@ selected="selected"
 % }
 </form>
 
-% unless ($nojs) {
-<script type="text/javascript">
-//<![CDATA[
-var list_<%$name%> = new list(document.getElementById("SelectionBox-<% $name %>"), 0, "list_<%$name%>");
-//]]>
-</script>
-% }
 <%ARGS>
 $self => undef
 $size => 10
-$nojs => 0
 </%ARGS>
 <%INIT>
 my $name = $self->{Name};