diff options
author | Matthew Somerville <matthew-github@dracos.co.uk> | 2017-06-20 18:10:28 +0100 |
---|---|---|
committer | Matthew Somerville <matthew-github@dracos.co.uk> | 2017-06-30 17:21:20 +0100 |
commit | 7b06aae99229d9a5a8544f4aa106682a8c02b497 (patch) | |
tree | 0f9d3177bd57e366244120e39dc532779b305311 /perllib | |
parent | 225dd2398de39ba38006a3ec4e2f854aede55537 (diff) |
Update templates when category/state changed.
When the category or state changes, the list of available templates
updates (previously it was frozen at what the category was on page
load, and didn't care about the state).
Diffstat (limited to 'perllib')
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Report.pm | 2 | ||||
-rw-r--r-- | perllib/FixMyStreet/DB/ResultSet/ResponseTemplate.pm | 27 | ||||
-rw-r--r-- | perllib/FixMyStreet/Roles/ContactExtra.pm | 3 |
3 files changed, 31 insertions, 1 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Report.pm b/perllib/FixMyStreet/App/Controller/Report.pm index 223cea9b4..ef10dc32e 100644 --- a/perllib/FixMyStreet/App/Controller/Report.pm +++ b/perllib/FixMyStreet/App/Controller/Report.pm @@ -315,6 +315,8 @@ sub inspect : Private { if ($c->cobrand->can('council_area_id')) { my $priorities_by_category = FixMyStreet::App->model('DB::ResponsePriority')->by_categories($c->cobrand->council_area_id, @{$c->stash->{contacts}}); $c->stash->{priorities_by_category} = $priorities_by_category; + my $templates_by_category = FixMyStreet::App->model('DB::ResponseTemplate')->by_categories($c->cobrand->council_area_id, @{$c->stash->{contacts}}); + $c->stash->{templates_by_category} = $templates_by_category; } if ( $c->get_param('save') ) { diff --git a/perllib/FixMyStreet/DB/ResultSet/ResponseTemplate.pm b/perllib/FixMyStreet/DB/ResultSet/ResponseTemplate.pm new file mode 100644 index 000000000..aa070daa3 --- /dev/null +++ b/perllib/FixMyStreet/DB/ResultSet/ResponseTemplate.pm @@ -0,0 +1,27 @@ +package FixMyStreet::DB::ResultSet::ResponseTemplate; +use base 'DBIx::Class::ResultSet'; + +use Moo; +use HTML::Entities; + +with('FixMyStreet::Roles::ContactExtra'); + +sub join_table { + return 'contact_response_templates'; +} + +sub name_column { + 'title'; +} + +sub map_extras { + my ($rs, @ts) = @_; + return map { + my $out = { id => encode_entities($_->text), name => encode_entities($_->title) }; + $out->{state} = encode_entities($_->state) if $_->state; + $out; + } @ts; +} + +1; + diff --git a/perllib/FixMyStreet/Roles/ContactExtra.pm b/perllib/FixMyStreet/Roles/ContactExtra.pm index d23a094f3..fc6531e54 100644 --- a/perllib/FixMyStreet/Roles/ContactExtra.pm +++ b/perllib/FixMyStreet/Roles/ContactExtra.pm @@ -11,8 +11,9 @@ sub for_bodies { my $attrs = { 'me.body_id' => $bodies, }; + my $order = $rs->can('name_column') ? $rs->name_column() : 'name'; my $filters = { - order_by => 'name', + order_by => $order, join => { $join_table => 'contact' }, distinct => 1, }; |