summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2016-06-11 12:24:29 -0700
committerMark Wells <mark@freeside.biz>2016-06-13 13:19:54 -0700
commita6f303fd9f14570f6d1654a175dbeadf00f4bd18 (patch)
treea8ea545aa32b5510071507866050a6f1ced74d68
parentab9d36b614da17d0f3b8ec4f63dfa849d193ff70 (diff)
show unreplied marker in RT searches, #41670
-rw-r--r--rt/lib/RT/Ticket_Vendor.pm23
-rw-r--r--rt/share/html/Elements/CollectionAsTable/Row5
-rw-r--r--rt/share/html/NoAuth/css/freeside3/ticket-lists.css14
3 files changed, 40 insertions, 2 deletions
diff --git a/rt/lib/RT/Ticket_Vendor.pm b/rt/lib/RT/Ticket_Vendor.pm
index a55bb7b0d..4a7883888 100644
--- a/rt/lib/RT/Ticket_Vendor.pm
+++ b/rt/lib/RT/Ticket_Vendor.pm
@@ -92,5 +92,28 @@ sub WillResolveAsString {
return $self->WillResolveObj->AsString();
}
+=head2 IsUnreplied
+
+Returns true if there's a Correspond or Create transaction more recent than
+the Told date of this ticket (or the ticket has no Told date) and the ticket
+is not rejected or resolved.
+
+=cut
+
+sub IsUnreplied {
+ my $self = shift;
+ return 0 if $self->Status eq 'resolved'
+ or $self->Status eq 'rejected';
+
+ my $Told = $self->Told || '1970-01-01';
+ my $Txns = $self->Transactions;
+ $Txns->Limit(FIELD => 'Type',
+ OPERATOR => 'IN',
+ VALUE => [ 'Correspond', 'Create' ]);
+ $Txns->Limit(FIELD => 'Created',
+ OPERATOR => '>',
+ VALUE => $Told);
+ $Txns->Count ? 1 : 0;
+}
1;
diff --git a/rt/share/html/Elements/CollectionAsTable/Row b/rt/share/html/Elements/CollectionAsTable/Row
index b83943aa5..13f43dd55 100644
--- a/rt/share/html/Elements/CollectionAsTable/Row
+++ b/rt/share/html/Elements/CollectionAsTable/Row
@@ -57,6 +57,11 @@ $Class => 'RT__Ticket'
$Classes => ''
</%ARGS>
<%init>
+# it's a hack, but it has to be applied in every ticket search regardless
+# of format, so...
+if ( $record and $record->isa('RT::Ticket') and $record->IsUnreplied ) {
+ $Classes .= ' unreplied-ticket';
+}
$m->out( '<tr class="' . $Classes . ' '
. ( $Warning ? 'warnline' : $i % 2 ? 'oddline' : 'evenline' ) . '" >'
. "\n" );
diff --git a/rt/share/html/NoAuth/css/freeside3/ticket-lists.css b/rt/share/html/NoAuth/css/freeside3/ticket-lists.css
index 84c9a92de..257cf3b07 100644
--- a/rt/share/html/NoAuth/css/freeside3/ticket-lists.css
+++ b/rt/share/html/NoAuth/css/freeside3/ticket-lists.css
@@ -99,8 +99,18 @@ tr.collection-as-table+tr.collection-as-table th {
}
-
-
+tr.unreplied-ticket > :first-child::before {
+ /* green dot */
+ border: 1px solid black;
+ border-radius: 50%;
+ display: inline-block;
+ height: 1ex;
+ width: 1ex;
+ float: left;
+ content: '';
+ margin-top: 1ex;
+ background-color: green;
+}
table.queue-summary td {
background: #efefef;