diff options
author | Matthew Somerville <matthew@mysociety.org> | 2015-05-08 12:24:35 +0100 |
---|---|---|
committer | Matthew Somerville <matthew-github@dracos.co.uk> | 2015-07-28 16:18:15 +0100 |
commit | 9d00e9bc88bde0c604a30d7f72890768b13ee7f0 (patch) | |
tree | dfbbb4496c2b4fe3d00ccd1e76e40d9b93108ad1 | |
parent | a6390b55a0f05ef348b831ad76ce07834ac26e7e (diff) |
[fixmystreet.com] Unresponsive bodies page/warning
Add a special category email address used to show an unresponsive
message and page when trying to report in that category. Add a "Refused"
send method for setting a whole body to be unresponsive and show the
message immediately, not on category selection.
Factor out category template, and put at top where needed.
22 files changed, 382 insertions, 111 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin.pm b/perllib/FixMyStreet/App/Controller/Admin.pm index 76ee3447f..abb858c32 100644 --- a/perllib/FixMyStreet/App/Controller/Admin.pm +++ b/perllib/FixMyStreet/App/Controller/Admin.pm @@ -345,7 +345,7 @@ sub update_contacts : Private { my $category = $self->trim( $c->get_param('category') ); $errors{category} = _("Please choose a category") unless $category; my $email = $self->trim( $c->get_param('email') ); - $errors{email} = _('Please enter a valid email') unless is_valid_email($email); + $errors{email} = _('Please enter a valid email') unless is_valid_email($email) || $email eq 'REFUSED'; $errors{note} = _('Please enter a message') unless $c->get_param('note'); $category = 'Empty property' if $c->cobrand->moniker eq 'emptyhomes'; diff --git a/perllib/FixMyStreet/App/Controller/Report/New.pm b/perllib/FixMyStreet/App/Controller/Report/New.pm index 69c94b911..b540a1961 100644 --- a/perllib/FixMyStreet/App/Controller/Report/New.pm +++ b/perllib/FixMyStreet/App/Controller/Report/New.pm @@ -219,14 +219,21 @@ sub category_extras_ajax : Path('category_extras') : Args(0) { return 1; } $c->forward('setup_categories_and_bodies'); + $c->forward('check_for_category'); + my $category = $c->stash->{category}; my $category_extra = ''; - my $category = $c->get_param('category'); + my $generate; if ( $c->stash->{category_extras}->{$category} && @{ $c->stash->{category_extras}->{$category} } >= 1 ) { $c->stash->{report_meta} = {}; - $c->stash->{report} = { category => $category }; $c->stash->{category_extras} = { $category => $c->stash->{category_extras}->{$category} }; - + $generate = 1; + } + if ($c->stash->{unresponsive}->{$category}) { + $generate = 1; + } + if ($generate) { + $c->stash->{report} = { category => $category }; $category_extra = $c->render_fragment( 'report/new/category_extras.html'); } @@ -604,6 +611,11 @@ sub setup_categories_and_bodies : Private { my %category_extras = (); # extra fields to fill in for open311 my %non_public_categories = (); # categories for which the reports are not public + $c->stash->{unresponsive} = {}; + + if (keys %bodies == 1 && $first_body->send_method && $first_body->send_method eq 'Refused') { + $c->stash->{unresponsive}{ALL} = $first_body->id; + } # FIXME - implement in cobrand if ( $c->cobrand->moniker eq 'emptyhomes' ) { @@ -641,6 +653,9 @@ sub setup_categories_and_bodies : Private { $category_extras{ $contact->category } = $metas if scalar @$metas; + $c->stash->{unresponsive}{$contact->category} = $contact->body_id + if $contact->email =~ /^REFUSED$/i; + $non_public_categories{ $contact->category } = 1 if $contact->non_public; } $seen{$contact->category} = 1; @@ -863,14 +878,19 @@ sub process_report : Private { return 1; } - # construct the bodies string: - # 'x,x' - x are body IDs that have this category - # 'x,x|y' - x are body IDs that have this category, y body IDs with *no* contact - my $body_string = join( ',', map { $_->body_id } @contacts ); - $body_string .= - '|' . join( ',', map { $_->id } @{ $c->stash->{missing_details_bodies} } ) - if $body_string && @{ $c->stash->{missing_details_bodies} }; - $report->bodies_str($body_string); + if ($c->stash->{unresponsive}{$report->category} || $c->stash->{unresponsive}{ALL}) { + # Unresponsive, don't try and send a report. + $report->bodies_str(-1); + } else { + # construct the bodies string: + # 'x,x' - x are body IDs that have this category + # 'x,x|y' - x are body IDs that have this category, y body IDs with *no* contact + my $body_string = join( ',', map { $_->body_id } @contacts ); + $body_string .= + '|' . join( ',', map { $_->id } @{ $c->stash->{missing_details_bodies} } ) + if $body_string && @{ $c->stash->{missing_details_bodies} }; + $report->bodies_str($body_string); + } my @extra; # NB: we are only checking extras for the *first* retrieved contact. diff --git a/perllib/FixMyStreet/App/Controller/Static.pm b/perllib/FixMyStreet/App/Controller/Static.pm index 8cd82b68e..d91a07fea 100755 --- a/perllib/FixMyStreet/App/Controller/Static.pm +++ b/perllib/FixMyStreet/App/Controller/Static.pm @@ -61,6 +61,25 @@ sub council : Global : Args(0) { my ( $self, $c ) = @_; } +sub unresponsive : Global : Args(0) { + my ( $self, $c ) = @_; + my $body = $c->stash->{body} = $c->model('DB::Body')->find({ id => $c->get_param('body') }) + or $c->detach( '/page_error_404_not_found' ); + + $c->stash->{category} = $c->get_param('category'); + + # If the whole body isn't set to refused, we need to check the contacts + if (!$body->send_method || $body->send_method ne 'Refused') { + my @contacts = $c->model('DB::Contact')->not_deleted->search( { body_id => $body->id } )->all; + my $any_unresponsive = 0; + foreach my $contact (@contacts) { + $any_unresponsive = 1 if $contact->email =~ /^REFUSED$/i; + } + + $c->detach( '/page_error_404_not_found' ) unless $any_unresponsive; + } +} + __PACKAGE__->meta->make_immutable; 1; diff --git a/perllib/FixMyStreet/SendReport/Refused.pm b/perllib/FixMyStreet/SendReport/Refused.pm new file mode 100644 index 000000000..d71fc5c2c --- /dev/null +++ b/perllib/FixMyStreet/SendReport/Refused.pm @@ -0,0 +1,7 @@ +package FixMyStreet::SendReport::Refused; + +use Moose; + +BEGIN { extends 'FixMyStreet::SendReport::Noop'; } + +1; diff --git a/t/app/controller/report_new.t b/t/app/controller/report_new.t index 3e1446068..bd0001be8 100644 --- a/t/app/controller/report_new.t +++ b/t/app/controller/report_new.t @@ -462,7 +462,7 @@ foreach my $test ( }; # check that we got the errors expected - is_deeply $mech->page_errors, $test->{errors}, "check errors"; + is_deeply [ sort @{$mech->page_errors} ], [ sort @{$test->{errors}} ], "check errors"; # check that fields have changed as expected my $new_values = { @@ -1462,6 +1462,104 @@ subtest "categories from deleted bodies shouldn't be visible for new reports" => }; }; +subtest "unresponsive body handling works" => sub { + FixMyStreet::override_config { + ALLOWED_COBRANDS => [ { fixmystreet => '.' } ], + MAPIT_URL => 'http://mapit.mysociety.org/', + }, sub { + # Test body-level send method + my $old_send = $contact1->body->send_method; + $contact1->body->update( { send_method => 'Refused' } ); + $mech->get_ok('/report/new/ajax?latitude=55.9&longitude=-3.2'); # Edinburgh + my $body_id = $contact1->body->id; + ok $mech->content_like( qr{Edinburgh.*accept reports.*/unresponsive\?body=$body_id} ); + + my $test_email = 'test-2@example.com'; + my $user = $mech->log_in_ok($test_email); + $mech->get_ok('/around'); + $mech->submit_form_ok( { with_fields => { pc => 'EH1 1BB', } }, "submit location" ); + $mech->follow_link_ok( { text_regex => qr/skip this step/i, }, "follow 'skip this step' link" ); + $mech->submit_form_ok( + { + with_fields => { + title => "Test Report at café", + detail => 'Test report details.', + photo => '', + name => 'Joe Bloggs', + may_show_name => '1', + phone => '07903 123 456', + category => 'Trees', + } + }, + "submit good details" + ); + + my $report = $user->problems->first; + ok $report, "Found the report"; + is $report->bodies_str, undef, "Report not going anywhere"; + + $user->problems->delete; + $contact1->body->update( { send_method => $old_send } ); + + # And test per-category refusing + my $old_email = $contact3->email; + $contact3->update( { email => 'REFUSED' } ); + $mech->get_ok('/report/new/category_extras?category=Trees&latitude=51.89&longitude=-2.09'); + ok $mech->content_like( qr/Cheltenham.*Trees.*unresponsive.*category=Trees/ ); + + $mech->get_ok('/around'); + $mech->submit_form_ok( { with_fields => { pc => 'GL50 2PR', } }, "submit location" ); + $mech->follow_link_ok( { text_regex => qr/skip this step/i, }, "follow 'skip this step' link" ); + $mech->submit_form_ok( + { + with_fields => { + title => "Test Report at café", + detail => 'Test report details.', + photo => '', + name => 'Joe Bloggs', + may_show_name => '1', + phone => '07903 123 456', + category => 'Trees', + } + }, + "submit good details" + ); + + $report = $user->problems->first; + ok $report, "Found the report"; + is $report->bodies_str, undef, "Report not going anywhere"; + + $contact3->update( { email => $old_email } ); + $mech->delete_user($user); + }; +}; + +subtest "unresponsive body page works" => sub { + FixMyStreet::override_config { + ALLOWED_COBRANDS => [ { fixmystreet => '.' } ], + MAPIT_URL => 'http://mapit.mysociety.org/', + }, sub { + my $old_send = $contact1->body->send_method; + my $body_id = $contact1->body->id; + my $url = "/unresponsive?body=$body_id"; + is $mech->get($url)->code, 404, "page not found"; + $contact1->body->update( { send_method => 'Refused' } ); + $mech->get_ok($url); + $mech->content_contains('Edinburgh'); + $contact1->body->update( { send_method => $old_send } ); + + my $old_email = $contact3->email; + $body_id = $contact3->body->id; + $url = "/unresponsive?body=$body_id;category=Trees"; + is $mech->get($url)->code, 404, "page not found"; + $contact3->update( { email => 'REFUSED' } ); + $mech->get_ok($url); + $mech->content_contains('Cheltenham'); + $mech->content_contains('Trees'); + $contact3->update( { email => $old_email } ); + }; +}; + subtest "extra google analytics code displayed on logged in problem creation" => sub { FixMyStreet::override_config { ALLOWED_COBRANDS => [ { fixmystreet => '.' } ], diff --git a/t/app/controller/report_new_open311.t b/t/app/controller/report_new_open311.t index 53b84b92d..d3ca93f0e 100644 --- a/t/app/controller/report_new_open311.t +++ b/t/app/controller/report_new_open311.t @@ -60,9 +60,9 @@ foreach my $test ( type => 'old', }, errors => [ + 'This information is required', 'Please enter a subject', 'Please enter some details', - 'This information is required', 'Please enter your email', 'Please enter your name', ], diff --git a/templates/web/base/report/new/category_extras.html b/templates/web/base/report/new/category_extras.html index 41984dd9a..c0f6a7bae 100644 --- a/templates/web/base/report/new/category_extras.html +++ b/templates/web/base/report/new/category_extras.html @@ -1,6 +1,11 @@ <div id="category_meta"> + [%- category = report.category -%] + + [%- IF unresponsive.$category %] + [% INCLUDE "report/new/unresponsive_body.html" body_id = unresponsive.$category %] + [%- END %] + [%- IF report_meta %] - [%- category = report.category %] <h4>Additional Information</h4> [%- FOR meta IN category_extras.$category %] [%- meta_name = meta.code -%] diff --git a/templates/web/base/report/new/category_wrapper.html b/templates/web/base/report/new/category_wrapper.html new file mode 100644 index 000000000..f6bb618f0 --- /dev/null +++ b/templates/web/base/report/new/category_wrapper.html @@ -0,0 +1,17 @@ +[% IF js %] + <div id="form_category_row"> + <label for="form_category">[% loc('Category') %]</label> + <select name="category" id="form_category" required><option>[% loc('Loading...') %]</option></select> + </div> +[% ELSE %] + [% IF category_options.size %] + [% IF field_errors.category %] + <p class='form-error'>[% field_errors.category %]</p> + [% END %] + [% PROCESS "report/new/category.html" %] + [% END %] +[% END %] + +[%- IF category_extras %] + [% PROCESS "report/new/category_extras.html" %] +[%- END %] diff --git a/templates/web/base/report/new/councils_text.html b/templates/web/base/report/new/councils_text.html index f526beb28..65e41f0d1 100644 --- a/templates/web/base/report/new/councils_text.html +++ b/templates/web/base/report/new/councils_text.html @@ -1,5 +1,7 @@ [% FILTER collapse %] -[% IF bodies_to_list.size == 0 %] +[% IF unresponsive.ALL %] + [% PROCESS 'report/new/unresponsive_body.html' body_id = unresponsive.ALL %] +[% ELSIF bodies_to_list.size == 0 %] [% PROCESS 'report/new/councils_text_none.html' %] [% ELSIF bodies_to_list.size == bodies.size %] [% PROCESS 'report/new/councils_text_all.html' %] diff --git a/templates/web/base/report/new/fill_in_details_form.html b/templates/web/base/report/new/fill_in_details_form.html index cee0244c7..d1431ffd3 100644 --- a/templates/web/base/report/new/fill_in_details_form.html +++ b/templates/web/base/report/new/fill_in_details_form.html @@ -63,26 +63,7 @@ <textarea name="detail" id="form_detail" rows="7" cols="26" required>[% report.detail | html %]</textarea> </div> -[% IF js %] - <div class="form-field" id="form_category_row"> - <label for="form_category">[% loc('Category:') %]</label> - <select name="category" id="form_category" required><option>[% loc('Loading...') %]</option></select> - </div> -[% ELSE %] - [% IF category_options.size %] - [% IF field_errors.category %] - <div class='form-error'>[% field_errors.category %]</div> - [% END %] - - <div class="form-field"> - [% PROCESS "report/new/category.html" %] - </div> - [% END %] -[% END %] - -[%- IF category_extras %] -[% PROCESS "report/new/category_extras.html" %] -[%- END %] +[% PROCESS "report/new/category_wrapper.html" %] [% IF c.cobrand.allow_photo_upload %] [% IF field_errors.photo %] diff --git a/templates/web/bromley/report/new/fill_in_details_form.html b/templates/web/bromley/report/new/fill_in_details_form.html index e5c920eae..6bf077322 100644 --- a/templates/web/bromley/report/new/fill_in_details_form.html +++ b/templates/web/bromley/report/new/fill_in_details_form.html @@ -60,24 +60,7 @@ [% END %] <textarea rows="7" cols="26" name="detail" id="form_detail" placeholder="[% loc('Please describe the exact location of the report. Example: “2 dumped mattresses outside Number 19 Stockwell Close”') %]" required>[% report.detail | html %]</textarea> - [% IF js %] - <div id="form_category_row"> - <label for="form_category">[% loc('Category') %]</label> - <select name="category" id="form_category" required><option>[% loc('Loading...') %]</option></select> - </div> - [% ELSE %] - [% IF category_options.size %] - [% IF field_errors.category %] - <p class='form-error'>[% field_errors.category %]</p> - [% END %] - - [% PROCESS "report/new/category.html" %] - [% END %] - [% END %] - - [%- IF category_extras %] - [% PROCESS "report/new/category_extras.html" %] - [%- END %] + [% PROCESS "report/new/category_wrapper.html" %] [% IF c.cobrand.allow_photo_upload %] [% IF field_errors.photo %] diff --git a/templates/web/emptyhomes/report/new/fill_in_details_form.html b/templates/web/emptyhomes/report/new/fill_in_details_form.html index e6ddd56a0..20b0b6842 100644 --- a/templates/web/emptyhomes/report/new/fill_in_details_form.html +++ b/templates/web/emptyhomes/report/new/fill_in_details_form.html @@ -45,22 +45,7 @@ <p>[% loc('Please do not give address or personal information in this section.') %]</p> -[% IF js %] - <div class="form-field" id="form_category_row"> - <label for="form_category">[% loc('Category:') %]</label> - <select name="category" id="form_category" required><option>[% loc('Loading...') %]</option></select> - </div> -[% ELSE %] - [% IF category_options.size %] - [% IF field_errors.category %] - <div class='form-error'>[% field_errors.category %]</div> - [% END %] - - <div class="form-field"> - [% PROCESS "report/new/category.html" %] - </div> - [% END %] -[% END %] +[% PROCESS "report/new/category_wrapper.html" %] [% IF field_errors.title %] <div class='form-error'>[% field_errors.title %]</div> diff --git a/templates/web/fixmystreet.com/report/new/category_at_top.html b/templates/web/fixmystreet.com/report/new/category_at_top.html new file mode 100644 index 000000000..f131f37a1 --- /dev/null +++ b/templates/web/fixmystreet.com/report/new/category_at_top.html @@ -0,0 +1 @@ +[% PROCESS "report/new/category_wrapper.html" %] diff --git a/templates/web/fixmystreet.com/report/new/unresponsive_body.html b/templates/web/fixmystreet.com/report/new/unresponsive_body.html new file mode 100644 index 000000000..a1b41aaf5 --- /dev/null +++ b/templates/web/fixmystreet.com/report/new/unresponsive_body.html @@ -0,0 +1,12 @@ +<div class="unresponsive-council-warning"> + <h1>Important message</h1> + <p> + <span class="unresponsive-council">[% bodies.$body_id.name %]</span> doesn’t accept + [% IF category %] + <span class="refused-category">[% category | html %]</span> + [% END %] + reports. + </p> + <p>We can make your report public, but we can’t send it to the council.</p> + <a href="/unresponsive?body=[% body_id %][% IF category %];category=[% category | uri %][% END %]">What can I do instead?</a> +</div> diff --git a/templates/web/fixmystreet.com/static/unresponsive.html b/templates/web/fixmystreet.com/static/unresponsive.html new file mode 100644 index 000000000..3f09533bf --- /dev/null +++ b/templates/web/fixmystreet.com/static/unresponsive.html @@ -0,0 +1,38 @@ +[% INCLUDE header.html + title = 'Unresponsive councils: What you can do', bodyclass = 'unresponsive-council fullwidthpage' +%] + +<div class="unresponsive-council__header"> + <h1>Bad news :(</h1> + <p><strong class="unresponsive-council-name">[% body.name %]</strong> no + longer accepts [% IF category %][% category | html %][% END %] + reports from FixMyStreet.</p> +</div> + +<div class="unresponsive-council__body"> + <p><strong class="unresponsive-council-name">[% body.name %]</strong> is one + of only <strong>2%</strong> of councils that don’t accept reports from + FixMyStreet. We’re sad about it too, but here’s some things you can do now:</p> + + [% IF NOT body.external_url %] + <a href="[% body.external_url %]" class="unresponsive-council-cta unresponsive-council-cta--primary"> + <strong>Report your issue directly</strong> to <span class="unresponsive-council-name">[% body.name %]</span> on their website + </a> + [% ELSE %] + <a href="https://www.google.co.uk/search?q=report+[% body.name | uri %]" class="unresponsive-council-cta unresponsive-council-cta--primary"> + Find the website of <span class="unresponsive-council-name">[% body.name %]</span> and <strong>report your issue directly</strong> + </a> + [% END %] + + <h2>If you’d prefer to use FixMyStreet next time:</h2> + + <a href="https://www.writetothem.com/" class="unresponsive-council-cta"> + <strong>Write to your MP or local councillors</strong> to let them know this isn’t okay + </a> + + <a href="https://twitter.com/intent/tweet?via=fixmystreet" class="unresponsive-council-cta"> + <strong>Tweet</strong> to let <span class="unresponsive-council-name">[% body.name %]</span></strong> know you’d rather use FixMyStreet + </a> +</div> + +[% INCLUDE footer.html %] diff --git a/templates/web/fixmystreet/report/new/fill_in_details_form.html b/templates/web/fixmystreet/report/new/fill_in_details_form.html index 75e11c74f..82b1097b7 100644 --- a/templates/web/fixmystreet/report/new/fill_in_details_form.html +++ b/templates/web/fixmystreet/report/new/fill_in_details_form.html @@ -34,6 +34,14 @@ <p class='form-error'>[% field_errors.bodies %]</p> [% END %] + [% TRY %] + [%# Useful for amending form contents based on category selection %] + [% PROCESS 'report/new/category_at_top.html' %] + [% need_to_show_category_selector = 0 %] + [% CATCH file %] + [% need_to_show_category_selector = 1 %] + [% END %] + <label for="form_title">[% loc('One-line summary') %] [% INCLUDE 'report/public_label.html' %]</label> [% IF field_errors.title %] <p class='form-error'>[% field_errors.title %]</p> @@ -48,24 +56,10 @@ [% TRY %][% PROCESS 'report/new/inline-tips.html' %][% CATCH file %][% END %] - [% IF js %] - <div id="form_category_row"> - <label for="form_category">[% loc('Category') %]</label> - <select name="category" id="form_category" required><option>[% loc('Loading...') %]</option></select> - </div> - [% ELSE %] - [% IF category_options.size %] - [% IF field_errors.category %] - <p class='form-error'>[% field_errors.category %]</p> - [% END %] - [% PROCESS "report/new/category.html" %] - [% END %] + [% IF need_to_show_category_selector %] + [% PROCESS "report/new/category_wrapper.html" %] [% END %] - [%- IF category_extras %] - [% PROCESS "report/new/category_extras.html" %] - [%- END %] - [% TRY %][% PROCESS 'report/new/after_category.html' %][% CATCH file %][% END %] [% IF c.cobrand.allow_photo_upload %] diff --git a/templates/web/zurich/report/new/fill_in_details_form.html b/templates/web/zurich/report/new/fill_in_details_form.html index 67471867a..28d9ebe68 100644 --- a/templates/web/zurich/report/new/fill_in_details_form.html +++ b/templates/web/zurich/report/new/fill_in_details_form.html @@ -45,24 +45,7 @@ [% END %] <textarea rows="7" cols="26" name="detail" id="form_detail" placeholder="[% loc('Please fill in details of the problem.') %]" required>[% report.detail | html %]</textarea> - [% IF js %] - <div id="form_category_row"> - <label for="form_category">[% loc('Category') %]</label> - <select name="category" id="form_category" required><option>[% loc('Loading...') %]</option></select> - </div> - [% ELSE %] - [% IF category_options.size %] - [% IF field_errors.category %] - <p class='form-error'>[% field_errors.category %]</p> - [% END %] - - [% PROCESS "report/new/category.html" %] - [% END %] - [% END %] - - [%- IF category_extras %] - [% PROCESS "report/new/category_extras.html" %] - [%- END %] + [% PROCESS "report/new/category_wrapper.html" %] [% IF c.cobrand.allow_photo_upload %] <label for="form_photo">[% loc('Photo') %]</label> diff --git a/web/cobrands/fixmystreet/base.scss b/web/cobrands/fixmystreet/base.scss index 3baac2eb0..6e6cbd7b9 100644 --- a/web/cobrands/fixmystreet/base.scss +++ b/web/cobrands/fixmystreet/base.scss @@ -123,3 +123,79 @@ margin: 0.5em 0 1em 0; } } + +.unresponsive-council-warning { + margin: 1em -1em; + padding: 2em 2em; + background-color: mix(#fff, $primary, 70%); + + h1 { + font-size: 1.4em; + } + + p { + margin-bottom: 0.5em; + } + + a { + display: inline-block; + margin-top: 0.5em; + padding: 0.5em 1em; + background-color: #000; + color: #fff; + border-radius: 0.3em; + + &:hover, + &:focus { + text-decoration: none; + background-color: mix(#000, $primary, 70%); + } + } +} + +.unresponsive-council__header { + padding-bottom: 1em; + border-bottom: 1px solid #ccc; + margin-bottom: 1em; + + p { + font-size: 1.2em; + margin-bottom: 0; + } +} + +.unresponsive-council-cta { + display: block; + padding: 1em; + margin: 1em 0; + background-color: #555; + border-radius: 0.2em; + color: #fff; + + &:visited { + color: #fff; + } + + &:hover, + &:focus { + text-decoration: none; + background-color: #777; + color: #fff; + } +} + +.unresponsive-council-cta--primary { + background-color: $primary; + color: #000; + + &:visited { + color: #000; + } + + &:hover, + &:focus { + background-color: mix(#fff, $primary, 30%); + color: #000; + } +} + diff --git a/web/cobrands/fixmystreet/fixmystreet.js b/web/cobrands/fixmystreet/fixmystreet.js index fdecee9db..85366537e 100644 --- a/web/cobrands/fixmystreet/fixmystreet.js +++ b/web/cobrands/fixmystreet/fixmystreet.js @@ -42,7 +42,7 @@ function tabs(elem, indirect) { //toggle class on nav $('.tab-nav .active').removeClass('active'); elem.addClass('active'); - + //hide / show the right tab $('.tab.open').hide().removeClass('open'); $(target).show().addClass('open'); @@ -134,8 +134,8 @@ $(function(){ last_type = type; }).resize(); - /* - * Report a problem page + /* + * Report a problem page */ //desktop if ($('#report-a-problem-sidebar').is(':visible')) { @@ -178,10 +178,10 @@ $(function(){ //make initial tab active $('.tab-nav a').first().addClass('active'); $('.tab').first().addClass('open'); - + //hide other tabs $('.tab').not('.open').hide(); - + //set up click event $(".tab-nav").on('click', 'a', function(e){ e.preventDefault(); @@ -306,7 +306,7 @@ $.fn.drawer = function(id, ajax) { $('.spinner').remove(); }); } - + // Tall drawer - put after .content for scrolling to work okay. // position over the top of the main .content in precisely the right location d.insertAfter($content).addClass('content').css({ @@ -485,4 +485,3 @@ $(window).load(function(){ }, 0); }); */ - diff --git a/web/cobrands/fixmystreet/images/unresponsive-council-cta-arrow.png b/web/cobrands/fixmystreet/images/unresponsive-council-cta-arrow.png Binary files differnew file mode 100644 index 000000000..664721830 --- /dev/null +++ b/web/cobrands/fixmystreet/images/unresponsive-council-cta-arrow.png diff --git a/web/cobrands/fixmystreet/images/unresponsive-council-cta-arrow@2.png b/web/cobrands/fixmystreet/images/unresponsive-council-cta-arrow@2.png Binary files differnew file mode 100644 index 000000000..181d8402b --- /dev/null +++ b/web/cobrands/fixmystreet/images/unresponsive-council-cta-arrow@2.png diff --git a/web/cobrands/fixmystreet/layout.scss b/web/cobrands/fixmystreet/layout.scss index 009ab5bcb..1d56e675c 100644 --- a/web/cobrands/fixmystreet/layout.scss +++ b/web/cobrands/fixmystreet/layout.scss @@ -301,3 +301,54 @@ body.alertindex { } } } + +body.unresponsive-council { + .container .content { + padding: 0; + margin-bottom: 4em; + } + + h1, h2 { + font-family: inherit; + font-weight: bold; + } +} + +.unresponsive-council__header, +.unresponsive-council__body { + padding: 1.5em; + font-size: 1.3em; +} + +.unresponsive-council__header { + background-color: $primary; + + border-bottom: none; + margin-bottom: 0; + + h1 { + font-size: 2.5em; + line-height: 1em; + margin-bottom: 0.2em; + } +} + +.unresponsive-council__body { + p { + max-width: 26em; + } +} + +.unresponsive-council-cta { + margin: 1.5em 0; + max-width: 20em; + padding-right: 6em; + background-image: url(images/unresponsive-council-cta-arrow.png); + background-position: right center; + background-repeat: no-repeat; + + @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { + background-image: url(images/unresponsive-council-cta-arrow@2.png); + background-size: 60px; + } +}
\ No newline at end of file |