summaryrefslogtreecommitdiff
path: root/fs_selfservice/FS-SelfService
diff options
context:
space:
mode:
Diffstat (limited to 'fs_selfservice/FS-SelfService')
-rw-r--r--fs_selfservice/FS-SelfService/SelfService.pm1
-rw-r--r--fs_selfservice/FS-SelfService/cgi/selfservice.cgi23
-rw-r--r--fs_selfservice/FS-SelfService/cgi/ticket_summary.html65
-rw-r--r--fs_selfservice/FS-SelfService/cgi/tktview.html9
4 files changed, 95 insertions, 3 deletions
diff --git a/fs_selfservice/FS-SelfService/SelfService.pm b/fs_selfservice/FS-SelfService/SelfService.pm
index ec0329bd2..0a153be45 100644
--- a/fs_selfservice/FS-SelfService/SelfService.pm
+++ b/fs_selfservice/FS-SelfService/SelfService.pm
@@ -64,6 +64,7 @@ $socket .= '.'.$tag if defined $tag && length($tag);
'myaccount_passwd' => 'MyAccount/myaccount_passwd',
'create_ticket' => 'MyAccount/create_ticket',
'get_ticket' => 'MyAccount/get_ticket',
+ 'adjust_ticket_priority' => 'MyAccount/adjust_ticket_priority',
'did_report' => 'MyAccount/did_report',
'signup_info' => 'Signup/signup_info',
'skin_info' => 'MyAccount/skin_info',
diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi
index 0e8b990da..58f2d0f1b 100644
--- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi
+++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi
@@ -18,6 +18,7 @@ use FS::SelfService qw(
unprovision_svc change_pkg suspend_pkg domainselector
list_svcs list_svc_usage list_cdr_usage list_support_usage
myaccount_passwd list_invoices create_ticket get_ticket did_report
+ adjust_ticket_priority
mason_comp port_graph
);
@@ -77,6 +78,7 @@ my @actions = ( qw(
myaccount
tktcreate
tktview
+ ticket_priority
didreport
invoices
view_invoice
@@ -276,11 +278,28 @@ sub tktcreate {
sub tktview {
get_ticket( 'session_id' => $session_id,
- 'ticket_id' => $cgi->param('ticket_id'),
- 'reply' => $cgi->param('reply'),
+ 'ticket_id' => ($cgi->param('ticket_id') || ''),
+ 'subject' => ($cgi->param('subject') || ''),
+ 'reply' => ($cgi->param('reply') || ''),
);
}
+sub ticket_priority {
+ my %values;
+ foreach ( $cgi->param ) {
+ if ( /^ticket(\d+)$/ ) {
+ # a 'ticket1001' param implies the existence of a 'priority1001' param
+ # but if that's empty, we need to send it as empty rather than forget
+ # it.
+ $values{$1} = $cgi->param("priority$1") || '';
+ }
+ }
+ $action = 'myaccount';
+ # this returns an updated customer_info for myaccount
+ adjust_ticket_priority( 'session_id' => $session_id,
+ 'values' => \%values );
+}
+
sub customer_order_pkg {
my $init_data = signup_info( 'customer_session_id' => $session_id );
return $init_data if ( $init_data->{'error'} );
diff --git a/fs_selfservice/FS-SelfService/cgi/ticket_summary.html b/fs_selfservice/FS-SelfService/cgi/ticket_summary.html
new file mode 100644
index 000000000..0d1c5e99a
--- /dev/null
+++ b/fs_selfservice/FS-SelfService/cgi/ticket_summary.html
@@ -0,0 +1,65 @@
+<SCRIPT TYPE="text/javascript" SRC="overlibmws.js"></SCRIPT>
+<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=2 BGCOLOR="#eeeeee">
+<TR><TH BGCOLOR="#ff6666" COLSPAN=8>Open Tickets</TH></TR>
+<TR>
+<%=
+my $col1 = "ffffff";
+my $col2 = "dddddd";
+my $col = $col1;
+
+my $can_set_priority =
+ grep { exists($_->{'_selfservice_priority'}) } @tickets;
+if ( $can_set_priority ) {
+ $OUT .= qq!<FORM ACTION="$selfurl" METHOD="POST">! .
+ qq!<INPUT TYPE="hidden" NAME="session" VALUE="$session_id">! .
+ qq!<INPUT TYPE="hidden" NAME="action" VALUE="ticket_priority">!;
+}
+$date_format ||= '%Y-%m-%d';
+my $date_formatter = sub {
+ my $time = Date::Parse::str2time($_[0], 'GMT'); # RT internal dates are GMT
+ # exclude times within 24 hours of zero
+ ($time > 86400) ? Date::Format::time2str($date_format, $time) : ''
+};
+
+my @titles = ('#', qw(Subject Queue Status Created Due));
+push @titles, 'Estimated<BR>Minutes';
+push @titles, 'Priority';
+
+$OUT .= join("\n", map { "<TH VALIGN=\"top\">$_</TH>" } @titles) . '</TR>';
+
+foreach my $ticket ( @tickets ) {
+ my $id = $ticket->{'id'};
+ my $td = qq!<TD BGCOLOR="#$col">!;
+ my $link = qq!<A HREF="${url}tktview;ticket_id=$id">!;
+ $OUT .= '<TR>' . $td . $link . $id . '</A></TD>'.
+$td. $link . $ticket->{'subject'} . '</A></TD>'.
+$td. $ticket->{'queue'} . '</TD>'.
+$td. $ticket->{'status'} . '</TD>'.
+$td. $date_formatter->($ticket->{'created'}) . '</TD>'.
+$td. $date_formatter->($ticket->{'due'}) . '</TD>'.
+qq!<TD BGCOLOR="#$col" ALIGN="right">!. ($ticket->{'timeestimated'} || '')
+. '</TD>'.
+qq!<TD BGCOLOR="#$col" ALIGN="right">!;
+ if ( $can_set_priority ) {
+ $OUT .= '<INPUT TYPE="hidden" NAME="ticket'.$id.'" VALUE="1">' .
+ '<INPUT TYPE="text" SIZE=4 NAME="priority'.$id.'"' .
+ 'VALUE="'.$ticket->{'_selfservice_priority'}.'"></TD>';
+ if ( exists($ticket_error{$id}) ) {
+ # display error message compactly
+ $OUT .= '<TD><FONT COLOR="#ff0000" onmouseover="'.
+ "return overlib('".$ticket_error{$id}."', AUTOSTATUS, WRAP);" .
+ '" onmouseout="nd();">*</FONT></TD>';
+ }
+ }
+ else {
+ $OUT .= ($ticket->{'content'} || $ticket->{'priority'}) . '</TD>';
+ }
+ $OUT .= '</TR>';
+ $col = $col eq $col1 ? $col2 : $col1;
+} #foreach my $ticket
+if ( $can_set_priority ) {
+ $OUT .= '<TR><TD COLSPAN=8 ALIGN="right">
+<INPUT TYPE="submit" VALUE="Save changes"></TD></TR></FORM>';
+}
+%>
+</TABLE>
diff --git a/fs_selfservice/FS-SelfService/cgi/tktview.html b/fs_selfservice/FS-SelfService/cgi/tktview.html
index 6f540bcf4..72634fee2 100644
--- a/fs_selfservice/FS-SelfService/cgi/tktview.html
+++ b/fs_selfservice/FS-SelfService/cgi/tktview.html
@@ -22,9 +22,16 @@ else {
<FORM ACTION="<%=$selfurl%>" METHOD=POST>
<input type="hidden" name="session" value="<%=$session_id%>">
<input type="hidden" name="ticket_id" value="<%=$ticket_id%>">
+<%= if ( $edit_ticket_subject ) { $OUT .= '
+ Subject:<BR><input type="text" name="subject" value="' .
+ $ticket_fields{'subject'} . '" style="width:440px">
+ <BR><BR>';
+}
+%>
<input type="hidden" name="action" value="tktview">
Add reply to ticket:
- <BR><textarea name="reply" cols="60" rows="10"></textarea>
+ <BR>
+ <textarea name="reply" cols="60" rows="10" style="width:440px"></textarea>
<BR><input type="submit" value="Reply">
</form>