diff options
Diffstat (limited to 'rt/html/Elements/EditCustomFieldSelect')
-rw-r--r-- | rt/html/Elements/EditCustomFieldSelect | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/rt/html/Elements/EditCustomFieldSelect b/rt/html/Elements/EditCustomFieldSelect new file mode 100644 index 000000000..815e977a0 --- /dev/null +++ b/rt/html/Elements/EditCustomFieldSelect @@ -0,0 +1,128 @@ +%# BEGIN BPS TAGGED BLOCK {{{ +%# +%# COPYRIGHT: +%# +%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC +%# <jesse@bestpractical.com> +%# +%# (Except where explicitly superseded by other copyright notices) +%# +%# +%# LICENSE: +%# +%# This work is made available to you under the terms of Version 2 of +%# the GNU General Public License. A copy of that license should have +%# been provided with this software, but in any event can be snarfed +%# from www.gnu.org. +%# +%# This work is distributed in the hope that it will be useful, but +%# WITHOUT ANY WARRANTY; without even the implied warranty of +%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +%# General Public License for more details. +%# +%# 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., 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: +%# +%# (The following paragraph is not intended to limit the rights granted +%# to you to modify and distribute this software under the terms of +%# the GNU General Public License and is only of importance to you if +%# you choose to contribute your changes and enhancements to the +%# community by submitting them to Best Practical Solutions, LLC.) +%# +%# By intentionally submitting any modifications, corrections or +%# derivatives to this work, or any other work intended for use with +%# Request Tracker, to Best Practical Solutions, LLC, you confirm that +%# you are the copyright holder for those contributions and you grant +%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, +%# royalty-free, perpetual, license to use, copy, create derivative +%# works based on those contributions, and sublicense and distribute +%# those contributions and any derivatives thereof. +%# +%# END BPS TAGGED BLOCK }}} +%# 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)||'') && ($$SelectedRef = 1) && 'SELECTED' %> +% } elsif ($Default) { + <% (ref $Default ? (grep {$_ eq $value->Name} @{$Default}) : ($Default eq $value->Name)) + && ($$SelectedRef = 1) && 'SELECTED' %> +% } + ><% $value->Name%></option> +% } +% for (@levels) { + </optgroup> +% } +<%args> +$CustomField => undef +$Default => undef +$Values => undef +$SelectedRef => undef +$CategoryRef => undef +</%args> +</%method> |