urgent multi-draft fixes from amalfi
[stet:stet.git] / rtNoAuth / submitcomment-cachetoo.html
1 %# Copyright (C) 2005, 2006   Software Freedom Law Center, Inc.
2 %# Author: Orion Montoya <orion@mdcclv.com>
3 %#
4 %# This software gives you freedom; it is licensed to you under version
5 %# 3 of the GNU Affero General Public License, along with the
6 %# additional permission in the following paragraph.
7 %#
8 %# This notice constitutes a grant of such permission as is necessary
9 %# to combine or link this software, or a modified version of it, with
10 %# Request Tracker (RT), published by Jesse Vincent and Best Practical
11 %# Solutions, LLC, or a derivative work of RT, and to copy, modify, and
12 %# distribute the resulting work.  RT is licensed under version 2 of
13 %# the GNU General Public License.
14 %# 
15 %# This software is distributed WITHOUT ANY WARRANTY, without even the
16 %# implied warranties of MERCHANTABILITY and FITNESS FOR A PARTICULAR
17 %# PURPOSE.  See the GNU Affero General Public License for further
18 %# details.
19 %#  
20 %# You should have received a copy of the GNU Affero General Public
21 %# License, version 3, and the GNU General Public License, version 2,
22 %# along with this software.  If not, see <http://www.gnu.org/licenses/>.
23 %
24 % if ($resp == 0) {
25 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
26 <response>
27  <cs>Your comment was not submitted because you could not be authenticated.  <a href="changeshown.html">change query</a></cs>
28  <nant>
29   <u>Authentication error</u>
30   <i><% $startid %></i>
31   <e><% $endid %></e>
32   <n>Your comment was not saved.  You need to <a href="http://gplv3.fsf.org/login_form?came_from=<% $urlpath %>">login</a> in order to make comments.  The text of your comment was:<br/> <strong>Subject:</strong><% $notesubj %><br/><% $notetext %></n>
33   <s><% $selectedtext %></s>
34   <id>x</id>
35   <ua>x</ua>
36   <at>x</at>
37  </nant>
38 </response>
39 % } elsif ($resp == 1) {
40 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
41 <response>
42 <d><% $drafter %></d>
43 <cs>Your comment <em><% $scrubber->scrub($notesubj) %></em> was submitted.  <a href="/comments/rt/changeshown.html">change query</a></cs>
44 <nant>
45 <n><% $scrubber->scrub($notetext) %></n>
46 <e><% $scrubber->scrub($endid) %></e>
47 <s><% $scrubber->scrub($selectedtext) %></s> 
48 <i><% $scrubber->scrub($startid) %></i>
49 <id><% $id %></id>
50 <u><% $scrubber->scrub($name) %></u>
51 <ua>unagree</ua>
52 <at>1</at>
53 <qn><% $queue %></qn>
54 </nant>
55 </response>
56 % }
57 <%INIT>
58
59 use MIME::Entity;
60 use CGI qw/:standard/;
61 use Data::Dumper;
62
63 use MIME::Base64;
64 use URI::Escape;
65 use Frontier::Client;
66
67 require "/var/www/stet/stetsubs.pl";
68
69 use HTML::Scrubber;
70 my $scrubber = HTML::Scrubber->new( allow => [ qw[ a b i u br ] ] );
71
72 my ($CurrentUser, $resp, $name) = getUser("x");
73 my ($dompath, $url, $urlpath, $selectedtext, $notesubj, $start, $startid, $end, $endid, $notetext, $realqueue, $id, $drafter);
74
75 if(%ARGS) {
76
77 $url = $ARGS{'NoteUrl'};
78 $url =~ s/.*\/([^\/]+)\.(html|xml).*/$1/;
79 $urlpath = $url;
80 $urlpath =~ s/http:\/\/([^\/]+)\/?(.*)\?.*/$2/;
81
82  print STDERR "url $url\nurlpath $urlpath\n\n";
83  $dompath = $ARGS{'DomPath'};
84  $selectedtext = URI::Escape::uri_unescape($ARGS{'Selection'});
85  $notesubj = URI::Escape::uri_unescape($ARGS{'NoteSubj'});
86 # my $start = $ARGS{'StartNode'};
87  $startid = $ARGS{'StartNodeId'};
88 # my $end = $ARGS{'EndNode'};
89  $endid = $ARGS{'EndNodeId'};
90  $notetext = URI::Escape::uri_unescape($ARGS{'NoteText'});
91
92 #print STDERR "q arg is ".$queue."\n";
93 # $queue ? $queue = $queue : $queue = "Inbox";
94 # print STDERR "wq is $queue\n";
95 my $ThisQueue = RT::Queue->new($CurrentUser);
96   $ThisQueue->Load($queue);
97
98   if ($ThisQueue->CurrentUserHasRight('CreateTicket')) {
99       $realqueue = $queue;
100       $drafter = $queue;
101   }
102   else {
103       $realqueue = "Inbox";
104   }
105 #print STDERR "rq is $realqueue\n";
106
107 if ($resp == 1) {
108 my $ticket = new RT::Ticket($CurrentUser);
109 my $ticket_body = MIME::Entity->build(Data => $notetext,
110                                       Type => 'text/plain');
111 my %ticket_vals = ( Queue => $realqueue,
112                     Subject => $notesubj,
113 #                      Owner => 'Nobody',
114                       Requestor => $name, # will work with new users
115                       #InitialPriority => '11',
116                       #FinalPriority => '20',
117                       MIMEObj => $ticket_body,
118                       'CustomField-1' => $selectedtext,
119                       'CustomField-2' => $dompath,
120                       'CustomField-3' => $urlpath,
121                       'CustomField-4' => $startid,
122                       'CustomField-5' => $endid,
123                       'CustomField-6' => $notetext,
124 #                     'CustomField-7' => $name,
125                       );
126   ($id, my $transaction_object, my $err) = $ticket->Create(%ticket_vals);
127   print STDERR $err . "\n" if $err;
128   system("/home/orion/cacheresults.sh ".$urlpath." &");
129 }
130 }
131 $r->content_type('text/xml');
132 </%INIT>
133 <%ARGS>
134 $queue => "Inbox"
135 </%ARGS>