~bestpractical/rt/master

« back to all changes in this revision

Viewing changes to share/html/REST/1.0/Forms/queue/default

  • Committer: sunnavy
  • Date: 2008-05-14 13:22:46 UTC
  • Revision ID: git-v1:0f0c8baef62a06a13d6fb54683d6c7d75d5f1283
source layout change! html now lives in share/html

git-svn-id: svn+ssh://svn.bestpractical.com/svn/bps-public/rt/branches/3.8-TESTING@12308 e417ac7c-1bcc-0310-8ffa-8f5827389a85

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
%# BEGIN BPS TAGGED BLOCK {{{
 
2
%# 
 
3
%# COPYRIGHT:
 
4
%#  
 
5
%# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC 
 
6
%#                                          <jesse@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
$changes => {}
 
54
</%ARGS>
 
55
<%perl>
 
56
my @comments;
 
57
my ($c, $o, $k, $e) = ("", [], {}, 0);
 
58
my %data = %$changes;
 
59
my $queue = new RT::Queue $session{CurrentUser};
 
60
my @fields = qw(Name Description CorrespondAddress CommentAddress
 
61
                InitialPriority FinalPriority DefaultDueIn);
 
62
my %fields = map { lc $_ => $_ } @fields;
 
63
 
 
64
if ($id ne 'new') {
 
65
    $queue->Load($id);
 
66
    if (!$queue->Id) {
 
67
        return [ "# Queue $id does not exist.", [], {}, 1 ];
 
68
    }
 
69
}
 
70
else {
 
71
    if (keys %data == 0) {
 
72
        return [
 
73
            "# Required: Name",
 
74
            [ "id", @fields ],
 
75
            {
 
76
                id => 'queue/new',
 
77
                Name => '<queue name>',
 
78
                Description => "",
 
79
                CommentAddress => "",
 
80
                CorrespondAddress => "",
 
81
                InitialPriority => "",
 
82
                FinalPriority => "",
 
83
                DefaultDueIn => "",
 
84
            },
 
85
            0
 
86
        ];
 
87
    }
 
88
    else {
 
89
        my %v;
 
90
        my %create = %fields;
 
91
 
 
92
        foreach my $k (keys %data) {
 
93
            if (exists $create{lc $k}) {
 
94
                $v{$create{lc $k}} = delete $data{$k};
 
95
            }
 
96
        }
 
97
 
 
98
        if ($v{Name} eq '<queue name>') {
 
99
            my %o = keys %$changes;
 
100
            delete @o{"id", @fields};
 
101
            return [
 
102
                "# Please set the queue name.",
 
103
                [ "id", @fields, keys %o ], $changes, 1
 
104
            ];
 
105
        }
 
106
 
 
107
        $queue->Create(%v);
 
108
        unless ($queue->Id) {
 
109
            return [ "# Could not create queue.", [], {}, 1 ];
 
110
        }
 
111
 
 
112
        delete $data{id};
 
113
        $id = $queue->Id;
 
114
        push(@comments, "# Queue $id created.");
 
115
        goto DONE if keys %data == 0;
 
116
    }
 
117
}
 
118
 
 
119
if ( keys %data == 0) {
 
120
    my @data;
 
121
 
 
122
    push @data, [ id => "queue/".$queue->Id ];
 
123
    foreach my $key (@fields) {
 
124
        push @data, [ $key => $queue->$key ];
 
125
    }
 
126
 
 
127
    my %k = map {@$_} @data;
 
128
    $o = [ map {$_->[0]} @data ];
 
129
    $k = \%k;
 
130
}
 
131
else {
 
132
    my ($get, $set, $key, $val, $n, $s);
 
133
 
 
134
    foreach $key (keys %data) {
 
135
        $val = $data{$key};
 
136
        $key = lc $key;
 
137
        $n = 1;
 
138
 
 
139
        if (exists $fields{$key}) {
 
140
            $key = $fields{$key};
 
141
            $set = "Set$key";
 
142
 
 
143
            next if $val eq $queue->$key;
 
144
            ($n, $s) = $queue->$set($val);
 
145
        }
 
146
        elsif ($key ne 'id') {
 
147
            $n = 0;
 
148
            $s = "Unknown field.";
 
149
        }
 
150
 
 
151
    SET:
 
152
        if ($n == 0) {
 
153
            $e = 1;
 
154
            push @comments, "# $key: $s";
 
155
            unless (@$o) {
 
156
                my %o = keys %$changes;
 
157
                delete @o{"id", @fields};
 
158
                @$o = ("id", @fields, keys %o);
 
159
                $k = $changes;
 
160
            }
 
161
        }
 
162
    }
 
163
 
 
164
    push(@comments, "# Queue $id updated.") unless $n == 0;
 
165
}
 
166
 
 
167
DONE:
 
168
$c ||= join("\n", @comments) if @comments;
 
169
return [ $c, $o, $k, $e ];
 
170
</%perl>