diff options
Diffstat (limited to 'rt/html/Elements/EditCustomFieldSelect')
-rw-r--r-- | rt/html/Elements/EditCustomFieldSelect | 84 |
1 files changed, 70 insertions, 14 deletions
diff --git a/rt/html/Elements/EditCustomFieldSelect b/rt/html/Elements/EditCustomFieldSelect index 2a2a64a1d..815e977a0 100644 --- a/rt/html/Elements/EditCustomFieldSelect +++ b/rt/html/Elements/EditCustomFieldSelect @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2005 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC %# <jesse@bestpractical.com> %# %# (Except where explicitly superseded by other copyright notices) @@ -22,7 +22,9 @@ %# %# You should have received a copy of the GNU General Public License %# along with this program; if not, write to the Free Software -%# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +%# 02110-1301 or visit their web page on the internet at +%# http://www.gnu.org/copyleft/gpl.html. %# %# %# CONTRIBUTION SUBMISSION POLICY: @@ -43,30 +45,84 @@ %# those contributions and any derivatives thereof. %# %# END BPS TAGGED BLOCK }}} - <select name="<%$NamePrefix%><%$CustomField->Id%>-Values" +%# Build up the set of cascading select boxes as "guides" +%# each one limits the options of the final one a bit +%# (perhaps by tweaking the .display style?) +% my $selected = 0; +% my @category; +% my $id = $NamePrefix . $CustomField->Id; +% my $out = $m->scomp('SELF:options', %ARGS, SelectedRef => \$selected, CategoryRef => \@category); +% if (@category) { +<script type="text/javascript" src="<%$RT::WebPath%>/NoAuth/js/cascaded.js"></script> +%# XXX - Hide this select from w3m? + <select onchange="filter_cascade('<% $id %>-Values', this.value)" name="<%$id%>-Category"> + <option value="" <% !$selected && 'SELECTED' %>><&|/l&>-</&></option> +% foreach my $cat (@category) { +% my ($depth, $name) = @$cat; + <option value="<% $name %>"><% ' ' x $depth |n %><%$name%></option> +% } + </select><br /> +% } + <select name="<%$id%>-Values" id="<%$id%>-Values" +% if ($Multiple or !@category) { size="<%$Rows%>" +% } <% $Multiple && 'MULTIPLE' %>> + <option value="" <% !$selected && 'SELECTED' %>><&|/l&>(no value)</&></option> +% $m->out($out); + </select> +<%ARGS> +$Object => undef +$CustomField => undef +$NamePrefix => undef +$Default => undef +$Values => undef +$Multiple => 0 +$Rows => undef +</%ARGS> + +<%method options> % my $selected; % my $CFVs = $CustomField->Values; +% my @levels; % while ($CFVs and my $value = $CFVs->Next ) { +% my $category = $value->Category; +% if (1) { # length $category) { +% my $level = (split(/:/, $category || ''))[0]; +% while (@levels) { +% if ($levels[-1] eq $level) { +% undef $level; +% last; +% } elsif (index($level, $levels[-1]) != 0) { + </optgroup> +% pop @levels; +% } else { +% last; +% } +% } +% if ($level) { +% push @$CategoryRef, [0+@levels, $level]; + <optgroup style="padding-left: <% @levels/2 %>em" label="<%$category%>"> +% push @levels, $level; +% } +% } <option value="<%$value->Name%>" % if ($Values) { - <% $Values->HasEntry($value->Name) && ($selected = 1) && 'SELECTED' %> + <% ($Values->HasEntry($value->Name)||'') && ($$SelectedRef = 1) && 'SELECTED' %> % } elsif ($Default) { <% (ref $Default ? (grep {$_ eq $value->Name} @{$Default}) : ($Default eq $value->Name)) - && ($selected = 1) && 'SELECTED' %> + && ($$SelectedRef = 1) && 'SELECTED' %> % } ><% $value->Name%></option> % } - <option value="" <% !$selected && 'SELECTED' %>><&|/l&>(no value)</&></option> - </select> -<%ARGS> -$Object => undef +% for (@levels) { + </optgroup> +% } +<%args> $CustomField => undef -$NamePrefix => undef $Default => undef $Values => undef -$Multiple => 0 -$Cols -$Rows -</%ARGS> +$SelectedRef => undef +$CategoryRef => undef +</%args> +</%method> |