]> git.uio.no Git - usit-rt.git/blame - share/html/REST/1.0/Forms/queue/default
Upgrade to 4.0.10.
[usit-rt.git] / share / html / REST / 1.0 / Forms / queue / default
CommitLineData
84fb5b46
MKG
1%# BEGIN BPS TAGGED BLOCK {{{
2%#
3%# COPYRIGHT:
4%#
403d7b0b 5%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
84fb5b46
MKG
6%# <sales@bestpractical.com>
7%#
8%# (Except where explicitly superseded by other copyright notices)
9%#
10%#
11%# LICENSE:
12%#
13%# This work is made available to you under the terms of Version 2 of
14%# the GNU General Public License. A copy of that license should have
15%# been provided with this software, but in any event can be snarfed
16%# from www.gnu.org.
17%#
18%# This work is distributed in the hope that it will be useful, but
19%# WITHOUT ANY WARRANTY; without even the implied warranty of
20%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21%# General Public License for more details.
22%#
23%# You should have received a copy of the GNU General Public License
24%# along with this program; if not, write to the Free Software
25%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
26%# 02110-1301 or visit their web page on the internet at
27%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
28%#
29%#
30%# CONTRIBUTION SUBMISSION POLICY:
31%#
32%# (The following paragraph is not intended to limit the rights granted
33%# to you to modify and distribute this software under the terms of
34%# the GNU General Public License and is only of importance to you if
35%# you choose to contribute your changes and enhancements to the
36%# community by submitting them to Best Practical Solutions, LLC.)
37%#
38%# By intentionally submitting any modifications, corrections or
39%# derivatives to this work, or any other work intended for use with
40%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
41%# you are the copyright holder for those contributions and you grant
42%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
43%# royalty-free, perpetual, license to use, copy, create derivative
44%# works based on those contributions, and sublicense and distribute
45%# those contributions and any derivatives thereof.
46%#
47%# END BPS TAGGED BLOCK }}}
48%# REST/1.0/Forms/queue/default
49%#
50<%ARGS>
51$id
52$format => 's'
53$fields => undef # these are the fields passed to the rt "-f" flag.
54$changes => {}
55</%ARGS>
56<%perl>
57my @comments;
58my ($c, $o, $k, $e) = ("", [], {}, 0);
59my %data = %$changes;
60my $queue = RT::Queue->new($session{CurrentUser});
61my @fields = qw(Name Description CorrespondAddress CommentAddress
62 InitialPriority FinalPriority DefaultDueIn);
63my %fields = map { lc $_ => $_ } @fields;
64
65if ($id ne 'new') {
66 $queue->Load($id);
67 if (!$queue->Id) {
68 return [ "# Queue $id does not exist.", [], {}, 1 ];
69 }
70}
71else {
72 if (keys %data == 0) {
73 return [
74 "# Required: Name",
75 [ "id", @fields ],
76 {
77 id => 'queue/new',
78 Name => '<queue name>',
79 Description => "",
80 CommentAddress => "",
81 CorrespondAddress => "",
82 InitialPriority => "",
83 FinalPriority => "",
84 DefaultDueIn => "",
85 },
86 0
87 ];
88 }
89 else {
90 my %v;
91 my %create = %fields;
92
93 foreach my $k (keys %data) {
94 if (exists $create{lc $k}) {
95 $v{$create{lc $k}} = delete $data{$k};
96 }
97 }
98
99 if ($v{Name} eq '<queue name>') {
100 my %o = keys %$changes;
101 delete @o{"id", @fields};
102 return [
103 "# Please set the queue name.",
104 [ "id", @fields, keys %o ], $changes, 1
105 ];
106 }
107
108 $queue->Create(%v);
109 unless ($queue->Id) {
110 return [ "# Could not create queue.", [], {}, 1 ];
111 }
112
113 delete $data{id};
114 $id = $queue->Id;
115 push(@comments, "# Queue $id created.");
116 goto DONE if keys %data == 0;
117 }
118}
119
120if ( keys %data == 0) {
121 my @data;
122
123 push @data, [ id => "queue/".$queue->Id ];
124 foreach my $key (@fields) {
125 push @data, [ $key => $queue->$key ];
126 }
127
128 # Custom fields
129 my $CustomFields = $queue->CustomFields;
130 while ( my $CustomField = $CustomFields->Next() ) {
131 next
132 unless ( !%$fields
133 || exists $fields->{ lc "CF-" . $CustomField->Name } );
134 next unless $CustomField->CurrentUserHasRight('SeeCustomField');
135 my $CFvalues = $queue->CustomFieldValues( $CustomField->Id );
136 my @CFvalues;
137 while ( my $CFvalue = $CFvalues->Next() ) {
138 push @CFvalues, $CFvalue->Content;
139 }
140 push @data, [ "CF-" . $CustomField->Name => \@CFvalues ];
141 }
142
143 my %k = map {@$_} @data;
144 $o = [ map {$_->[0]} @data ];
145 $k = \%k;
146}
147else {
148 my ($get, $set, $key, $val, $n, $s);
149
150 foreach $key (keys %data) {
151 $val = $data{$key};
152 $key = lc $key;
153 $n = 1;
154
155 if (exists $fields{$key}) {
156 $key = $fields{$key};
157 $set = "Set$key";
158
159 next if $val eq $queue->$key;
160 ($n, $s) = $queue->$set($val);
161 }
162 elsif ($key ne 'id') {
163 $n = 0;
164 $s = "Unknown field.";
165 }
166
167 SET:
168 if ($n == 0) {
169 $e = 1;
170 push @comments, "# $key: $s";
171 unless (@$o) {
172 my %o = keys %$changes;
173 delete @o{"id", @fields};
174 @$o = ("id", @fields, keys %o);
175 $k = $changes;
176 }
177 }
178 }
179
180 push(@comments, "# Queue $id updated.") unless $n == 0;
181}
182
183DONE:
184$c ||= join("\n", @comments) if @comments;
185return [ $c, $o, $k, $e ];
186</%perl>