diff options
Diffstat (limited to 'fs_selfservice/FS-SelfService')
-rw-r--r-- | fs_selfservice/FS-SelfService/SelfService.pm | 1 | ||||
-rw-r--r-- | fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 23 | ||||
-rw-r--r-- | fs_selfservice/FS-SelfService/cgi/ticket_summary.html | 65 | ||||
-rw-r--r-- | fs_selfservice/FS-SelfService/cgi/tktview.html | 9 |
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> |