aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xperllib/FixMyStreet/App/Controller/Questionnaire.pm1
-rw-r--r--perllib/FixMyStreet/App/Controller/Report.pm12
-rw-r--r--t/app/controller/report_updates.t25
-rw-r--r--templates/web/base/report/update.html3
-rw-r--r--templates/web/base/report/updates.html2
5 files changed, 36 insertions, 7 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Questionnaire.pm b/perllib/FixMyStreet/App/Controller/Questionnaire.pm
index 1ff57e920..dd180dff8 100755
--- a/perllib/FixMyStreet/App/Controller/Questionnaire.pm
+++ b/perllib/FixMyStreet/App/Controller/Questionnaire.pm
@@ -206,6 +206,7 @@ sub submit_standard : Private {
anonymous => $problem->anonymous,
}
);
+ $update->set_extra_metadata( questionnaire_id => $q->id );
if ( my $fileid = $c->stash->{upload_fileid} ) {
$update->photo( $fileid );
}
diff --git a/perllib/FixMyStreet/App/Controller/Report.pm b/perllib/FixMyStreet/App/Controller/Report.pm
index b1cc5885a..2861f368a 100644
--- a/perllib/FixMyStreet/App/Controller/Report.pm
+++ b/perllib/FixMyStreet/App/Controller/Report.pm
@@ -169,11 +169,19 @@ sub load_updates : Private {
);
my @combined;
+ my %questionnaires_with_updates;
while (my $update = $updates->next) {
push @combined, [ $update->confirmed, $update ];
+ if (my $qid = $update->get_extra_metadata('questionnaire_id')) {
+ $questionnaires_with_updates{$qid} = $update;
+ }
}
- while (my $update = $questionnaires->next) {
- push @combined, [ $update->whenanswered, $update ];
+ while (my $q = $questionnaires->next) {
+ if (my $update = $questionnaires_with_updates{$q->id}) {
+ $update->set_extra_metadata('open_from_questionnaire', 1);
+ next;
+ }
+ push @combined, [ $q->whenanswered, $q ];
}
@combined = map { $_->[1] } sort { $a->[0] <=> $b->[0] } @combined;
$c->stash->{updates} = \@combined;
diff --git a/t/app/controller/report_updates.t b/t/app/controller/report_updates.t
index 0b6d4ae3e..84f52eaa5 100644
--- a/t/app/controller/report_updates.t
+++ b/t/app/controller/report_updates.t
@@ -146,14 +146,22 @@ subtest "unconfirmed updates not displayed" => sub {
};
subtest "several updates shown in correct order" => sub {
- for my $fields ( {
+ my @qs;
+ for my $fields ( { # One with an associated update below
problem_id => $report_id,
whensent => '2011-03-10 12:23:16',
whenanswered => '2011-03-10 12:23:16',
old_state => 'confirmed',
new_state => 'confirmed',
},
- {
+ { # One with no associated update
+ problem_id => $report_id,
+ whensent => '2011-03-11 12:23:16',
+ whenanswered => '2011-03-11 12:23:16',
+ old_state => 'confirmed',
+ new_state => 'confirmed',
+ },
+ { # One for the fixed update
problem_id => $report_id,
whensent => '2011-03-15 08:12:36',
whenanswered => '2011-03-15 08:12:36',
@@ -164,6 +172,7 @@ subtest "several updates shown in correct order" => sub {
my $q = FixMyStreet::App->model('DB::Questionnaire')->find_or_create(
$fields
);
+ push @qs, $q;
}
for my $fields ( {
@@ -200,6 +209,14 @@ subtest "several updates shown in correct order" => sub {
my $comment = FixMyStreet::App->model('DB::Comment')->find_or_create(
$fields
);
+ if ($fields->{text} eq 'Second update') {
+ $comment->set_extra_metadata(questionnaire_id => $qs[0]->id);
+ $comment->update;
+ }
+ if ($fields->{text} eq 'Third update') {
+ $comment->set_extra_metadata(questionnaire_id => $qs[2]->id);
+ $comment->update;
+ }
}
$mech->get_ok("/report/$report_id");
@@ -207,8 +224,8 @@ subtest "several updates shown in correct order" => sub {
my $meta = $mech->extract_update_metas;
is scalar @$meta, 5, 'number of updates';
is $meta->[0], 'Posted by Other User at 12:23, Thu 10 March 2011', 'first update';
- is $meta->[1], 'Posted by Main User at 12:23, Thu 10 March 2011', 'second update';
- is $meta->[2], 'Still open, via questionnaire, 12:23, Thu 10 March 2011', 'questionnaire';
+ is $meta->[1], 'Posted by Main User at 12:23, Thu 10 March 2011 Still open, via questionnaire', 'second update';
+ is $meta->[2], 'Still open, via questionnaire, 12:23, Fri 11 March 2011', 'questionnaire';
is $meta->[3], 'State changed to: Fixed', 'third update, part 1';
is $meta->[4], 'Posted anonymously at 08:12, Tue 15 March 2011', 'third update, part 2';
$report->questionnaires->delete;
diff --git a/templates/web/base/report/update.html b/templates/web/base/report/update.html
index 100deb1ea..bd66c7b13 100644
--- a/templates/web/base/report/update.html
+++ b/templates/web/base/report/update.html
@@ -60,6 +60,9 @@
[% mlog = update.latest_moderation_log_entry(); IF mlog %]
<br />[% tprintf(loc('Moderated by %s at %s'), mlog.admin_user, prettify_dt(mlog.whenedited)) %]
[% END %]
+ [% IF update.get_extra_metadata('open_from_questionnaire') %]
+ <br />[% loc('Still open, via questionnaire') %]
+ [% END %]
</p>
</div>
[% END %]
diff --git a/templates/web/base/report/updates.html b/templates/web/base/report/updates.html
index e8a2d4bd3..1d37c1d99 100644
--- a/templates/web/base/report/updates.html
+++ b/templates/web/base/report/updates.html
@@ -13,7 +13,7 @@
[% IF update.whenanswered %]
[%# A questionnaire update, currently saying report is still open %]
- [% tprintf( loc( 'Still open, via questionnaire, %s' ), prettify_dt( update.whenanswered ) ) %]
+ [% loc('Still open, via questionnaire') %], [% prettify_dt( update.whenanswered ) %]
[% RETURN %]
[% END %]