diff options
37 files changed, 1301 insertions, 2 deletions
diff --git a/perllib/FixMyStreet/Cobrand/CheshireEast.pm b/perllib/FixMyStreet/Cobrand/CheshireEast.pm new file mode 100644 index 000000000..a2c6c1c19 --- /dev/null +++ b/perllib/FixMyStreet/Cobrand/CheshireEast.pm @@ -0,0 +1,139 @@ +package FixMyStreet::Cobrand::CheshireEast; +use parent 'FixMyStreet::Cobrand::Whitelabel'; + +use strict; +use warnings; + +use Moo; +with 'FixMyStreet::Roles::ConfirmValidation'; + +sub council_area_id { 21069 } +sub council_area { 'Cheshire East' } +sub council_name { 'Cheshire East Council' } +sub council_url { 'cheshireeast' } + +sub pin_colour { + my ( $self, $p, $context ) = @_; + return 'grey' if $p->state eq 'not responsible' || !$self->owns_problem( $p ); + return 'green' if $p->is_fixed || $p->is_closed; + return 'yellow' if $p->is_in_progress; + return 'red'; +} + +sub disambiguate_location { + my $self = shift; + my $string = shift; + + return { + %{ $self->SUPER::disambiguate_location() }, + centre => '53.180415,-2.349354', + bounds => [ 52.947150, -2.752929, 53.387445, -1.974789 ], + }; +} + +sub enter_postcode_text { + 'Enter a postcode or street name and area in Cheshire East'; +} + +sub admin_user_domain { 'cheshireeast.gov.uk' } + +sub get_geocoder { 'OSM' } + +sub geocoder_munge_results { + my ($self, $result) = @_; + $result->{display_name} = '' unless $result->{display_name} =~ /Cheshire East/; + $result->{display_name} =~ s/, UK$//; + $result->{display_name} =~ s/, Cheshire East, North West England, England//; +} + +sub default_map_zoom { 3 } + +sub on_map_default_status { 'open' } + +sub abuse_reports_only { 1 } + +sub send_questionnaires { 0 } + +sub open311_config { + my ($self, $row, $h, $params) = @_; + + $params->{multi_photos} = 1; + + my $extra = $row->get_extra_fields; + push @$extra, + { name => 'report_url', + value => $h->{url} }, + { name => 'title', + value => $row->title }, + { name => 'description', + value => $row->detail }; + + # Reports made via FMS.com or the app probably won't have a site code + # value because we don't display the adopted highways layer on those + # frontends. Instead we'll look up the closest asset from the WFS + # service at the point we're sending the report over Open311. + if (!$row->get_extra_field_value('site_code')) { + if (my $site_code = $self->lookup_site_code($row)) { + push @$extra, + { name => 'site_code', + value => $site_code }; + } + } + + $row->set_extra_fields(@$extra); +} + +# TODO These values may not be accurate +sub lookup_site_code_config { { + buffer => 200, # metres + url => "https://tilma.mysociety.org/mapserver/cheshireeast", + srsname => "urn:ogc:def:crs:EPSG::27700", + typename => "AdoptedRoads", + property => "site_code", + accept_feature => sub { 1 } +} } + +sub council_rss_alert_options { + my $self = shift; + my $all_areas = shift; + my $c = shift; + + my %councils = map { $_ => 1 } @{$self->area_types}; + + my @options; + + my $body = $self->body; + + my ($council, $ward); + foreach (values %$all_areas) { + if ($_->{type} eq 'UTA') { + $council = $_; + $council->{id} = $body->id; # Want to use body ID, not MapIt area ID + $council->{short_name} = $self->short_name( $council ); + ( $council->{id_name} = $council->{short_name} ) =~ tr/+/_/; + } else { + $ward = $_; + $ward->{short_name} = $self->short_name( $ward ); + ( $ward->{id_name} = $ward->{short_name} ) =~ tr/+/_/; + } + } + + push @options, { + type => 'council', + id => sprintf( 'council:%s:%s', $council->{id}, $council->{id_name} ), + text => 'All reported problems within the council', + rss_text => sprintf( _('RSS feed of problems within %s'), $council->{name}), + uri => $c->uri_for( '/rss/reports/' . $council->{short_name} ), + }; + push @options, { + type => 'ward', + id => sprintf( 'ward:%s:%s:%s:%s', $council->{id}, $ward->{id}, $council->{id_name}, $ward->{id_name} ), + rss_text => sprintf( _('RSS feed of reported problems within %s ward'), $ward->{name}), + text => sprintf( _('Reported problems within %s ward'), $ward->{name}), + uri => $c->uri_for( '/rss/reports/' . $council->{short_name} . '/' . $ward->{short_name} ), + } if $ward; + + return ( \@options, undef ); +} + +1; diff --git a/t/Mock/MapIt.pm b/t/Mock/MapIt.pm index 8b8bb5978..67e0a5364 100644 --- a/t/Mock/MapIt.pm +++ b/t/Mock/MapIt.pm @@ -45,6 +45,7 @@ my @PLACES = ( [ 'TW7 5JN', 51.482286, -0.328163, 2483, 'Hounslow Borough Council', 'LBO' ], [ '?', 51.48111, -0.327219, 2483, 'Hounslow Borough Council', 'LBO' ], [ '?', 51.482045, -0.327219, 2483, 'Hounslow Borough Council', 'LBO' ], + [ 'CW11 1HZ', 53.145324, -2.370437, 21069, 'Cheshire East Council', 'UTA', 135301, 'Sandbach Town', 'UTW' ], [ '?', 50.78301, -0.646929 ], [ 'TA1 1QP', 51.023569, -3.099055, 2239, 'Somerset County Council', 'CTY', 2429, 'Taunton Deane Borough Council', 'DIS' ], [ 'GU51 4AE', 51.279456, -0.846216, 2333, 'Hart District Council', 'DIS', 2227, 'Hampshire County Council', 'CTY' ], diff --git a/t/cobrand/cheshireeast.t b/t/cobrand/cheshireeast.t new file mode 100644 index 000000000..3f912e715 --- /dev/null +++ b/t/cobrand/cheshireeast.t @@ -0,0 +1,124 @@ +use CGI::Simple; +use Test::MockModule; +use FixMyStreet::TestMech; +use FixMyStreet::Script::Alerts; +use FixMyStreet::Script::Reports; + +my $mech = FixMyStreet::TestMech->new; + +my $body = $mech->create_body_ok( 21069, 'Cheshire East Council', { + send_method => 'Open311', + endpoint => 'endpoint', + api_key => 'key', + jurisdiction => 'cheshireeast_confirm', +}); + +my $contact = $mech->create_contact_ok( + body_id => $body->id, + category => 'Zebra Crossing', + email => 'ZEBRA', +); + +my $cobrand = Test::MockModule->new('FixMyStreet::Cobrand::CheshireEast'); +$cobrand->mock('_fetch_features', sub { + return []; +}); + +use_ok 'FixMyStreet::Cobrand::CheshireEast'; + +FixMyStreet::override_config { + COBRAND_FEATURES => { + contact_email => { + cheshireeast => 'foo@cheshireeast', + } + }, +}, sub { + my $cobrand = FixMyStreet::Cobrand::CheshireEast->new; + like $cobrand->contact_email, qr/cheshireeast/; + is_deeply $cobrand->disambiguate_location->{bounds}, [ 52.947150, -2.752929, 53.387445, -1.974789 ]; +}; + +my @reports = $mech->create_problems_for_body( 1, $body->id, 'Test', { + category => 'Zebra Crossing', + photo => '74e3362283b6ef0c48686fb0e161da4043bbcc97.jpeg,74e3362283b6ef0c48686fb0e161da4043bbcc97.jpeg', +}); +my $report = $reports[0]; + +my $alert = FixMyStreet::DB->resultset("Alert")->create({ + alert_type => 'new_updates', + cobrand => 'cheshireeast', + parameter => $report->id, + user => { + email => 'alert@example.com', + email_verified => 1, + }, +}); +$alert->confirm; + +$mech->create_comment_for_problem($report, $report->user, $report->name, 'blah', 0, 'confirmed', 'confirmed', { + confirmed => \'current_timestamp' +}); + +FixMyStreet::override_config { + ALLOWED_COBRANDS => 'cheshireeast', + MAPIT_URL => 'http://mapit.uk/', + STAGING_FLAGS => { skip_checks => 1, send_reports => 1 }, +}, sub { + + subtest 'cobrand displays council name' => sub { + ok $mech->host("cheshireeast.fixmystreet.com"), "change host to cheshireeast"; + $mech->get_ok('/'); + $mech->content_contains('Cheshire East'); + }; + + subtest 'testing special Open311 behaviour', sub { + my $test_data = FixMyStreet::Script::Reports::send(); + $report->discard_changes; + ok $report->whensent, 'Report marked as sent'; + is $report->send_method_used, 'Open311', 'Report sent via Open311'; + is $report->external_id, 248, 'Report has right external ID'; + + my $req = $test_data->{test_req_used}; + my $c = CGI::Simple->new($req->content); + is $c->param('attribute[title]'), 'Test Test 1 for ' . $body->id, 'Request had correct title'; + is_deeply [ $c->param('media_url') ], [ + 'http://www.example.org/photo/' . $report->id . '.0.full.jpeg?74e33622', + 'http://www.example.org/photo/' . $report->id . '.1.full.jpeg?74e33622', + ], 'Request had multiple photos'; + + }; + + subtest 'testing reference numbers shown' => sub { + $mech->get_ok('/report/' . $report->id); + $mech->content_contains('Council ref: ' . $report->id); + FixMyStreet::Script::Alerts::send(); + like $mech->get_text_body_from_email, qr/reference number is @{[$report->id]}/; + }; + + subtest 'contact page blocked', sub { + $mech->get('/contact'); + is $mech->res->code, 404; + }; + + subtest 'check post-submission message', sub { + $mech->log_in_ok($report->user->email); + $mech->get_ok('/report/new?latitude=53.145324&longitude=-2.370437'); + $mech->submit_form_ok({ with_fields => { + title => 'title', + detail => 'detail', + }}); + my $report = FixMyStreet::DB->resultset('Problem')->search(undef, { order_by => { -desc => 'id' } })->first; + $mech->content_contains('please call us on 0300 123 5020, quoting your reference number ' . $report->id); + }; + + subtest 'checking alert pages', sub { + $mech->get_ok('/alert'); + $mech->content_contains('all reported problems'); + $mech->submit_form_ok({ with_fields => { pc => 'CW11 1HZ' } }); + $mech->content_contains('Reported problems within 10.0km'); + $mech->content_contains('All reported problems'); + $mech->content_contains('Reported problems within Sandbach Town'); + }; +}; + +done_testing(); diff --git a/templates/email/cheshireeast/_council_reference.html b/templates/email/cheshireeast/_council_reference.html new file mode 100644 index 000000000..8a1a9e1ee --- /dev/null +++ b/templates/email/cheshireeast/_council_reference.html @@ -0,0 +1,3 @@ +<p style="[% p_style %]">The report's reference number is <strong>[% problem.id %]</strong>. + Please quote this if you need to contact the council about this report.</p> + diff --git a/templates/email/cheshireeast/_council_reference.txt b/templates/email/cheshireeast/_council_reference.txt new file mode 100644 index 000000000..75d7e93d2 --- /dev/null +++ b/templates/email/cheshireeast/_council_reference.txt @@ -0,0 +1,2 @@ +The report's reference number is [% problem.id %]. Please quote this if +you need to contact the council about this report. diff --git a/templates/email/cheshireeast/_council_reference_alert_update.html b/templates/email/cheshireeast/_council_reference_alert_update.html new file mode 100644 index 000000000..bc7e0282c --- /dev/null +++ b/templates/email/cheshireeast/_council_reference_alert_update.html @@ -0,0 +1,2 @@ +<p style="[% p_style %]">The report's reference number is <strong>[% problem.id %]</strong>. + Please quote this if you need to contact the council about this report.</p> diff --git a/templates/email/cheshireeast/_council_reference_alert_update.txt b/templates/email/cheshireeast/_council_reference_alert_update.txt new file mode 100644 index 000000000..75d7e93d2 --- /dev/null +++ b/templates/email/cheshireeast/_council_reference_alert_update.txt @@ -0,0 +1,2 @@ +The report's reference number is [% problem.id %]. Please quote this if +you need to contact the council about this report. diff --git a/templates/email/cheshireeast/_email_color_overrides.html b/templates/email/cheshireeast/_email_color_overrides.html new file mode 100644 index 000000000..794c7bbc6 --- /dev/null +++ b/templates/email/cheshireeast/_email_color_overrides.html @@ -0,0 +1,19 @@ +[% + +color_green = '#206c49' +color_gold = '#ffa100' +color_white = '#fff' + +header_background_color = color_green +header_text_color = color_white + +secondary_column_background_color = color_white + +button_background_color = color_green +button_text_color = color_white + +logo_width = "148" # pixel measurement, but without 'px' suffix +logo_height = "67" # pixel measurement, but without 'px' suffix +logo_file = "cec-navbar-logo-white.png" + +%] diff --git a/templates/email/cheshireeast/_email_setting_overrides.html b/templates/email/cheshireeast/_email_setting_overrides.html new file mode 100644 index 000000000..339a763f7 --- /dev/null +++ b/templates/email/cheshireeast/_email_setting_overrides.html @@ -0,0 +1,5 @@ +[% + +header_style = "padding: $header_padding; background: $header_background_color; color: $header_text_color; border-bottom: 8px solid $color_gold;" + +%] diff --git a/templates/email/cheshireeast/site-name.txt b/templates/email/cheshireeast/site-name.txt new file mode 100644 index 000000000..54bdfee40 --- /dev/null +++ b/templates/email/cheshireeast/site-name.txt @@ -0,0 +1 @@ +Cheshire East FixMyStreet diff --git a/templates/web/base/alert/index.html b/templates/web/base/alert/index.html index 3c7ff9e8b..80186ded7 100644 --- a/templates/web/base/alert/index.html +++ b/templates/web/base/alert/index.html @@ -12,7 +12,7 @@ <p class="form-hint" id="pc-hint">[% tprintf(loc('e.g. ‘%s’ or ‘%s’'), c.cobrand.example_places) %]</p> <div class="form-txt-submit-box"> <input class="form-control" type="text" id="pc" name="pc" value="[% pc | html %]" aria-describedby="pc-hint"> - <input class="green-btn" type="submit" value="[% loc('Go') %]"> + [% INCLUDE 'around/_postcode_submit_button.html' attr='class="green-btn"' %] </div> </fieldset> <a href="/alert/list" id="geolocate_link">… [% loc('or use my location') %]</a> diff --git a/templates/web/base/around/_postcode_submit_button.html b/templates/web/base/around/_postcode_submit_button.html new file mode 100644 index 000000000..faf4ea628 --- /dev/null +++ b/templates/web/base/around/_postcode_submit_button.html @@ -0,0 +1,6 @@ +<input type="submit" [% attr %] value="[% + IF c.cobrand.moniker == 'cheshireeast'; + 'Search for location'; + ELSE; + loc('Go'); + END %]"> diff --git a/templates/web/base/around/postcode_form.html b/templates/web/base/around/postcode_form.html index e3f03b203..ac83d4bf4 100644 --- a/templates/web/base/around/postcode_form.html +++ b/templates/web/base/around/postcode_form.html @@ -13,7 +13,7 @@ <p class="form-hint" id="pc-hint">[% tprintf(loc('e.g. ‘%s’ or ‘%s’'), c.cobrand.example_places) %]</p> <div> <input type="text" name="pc" value="[% pc | html %]" id="pc" size="10" maxlength="200" required aria-describedby="pc-hint"> - <input type="submit" value="[% loc('Go') %]" id="sub"> + [% INCLUDE 'around/_postcode_submit_button.html' attr='id="sub"' %] </div> [% IF partial_token %] diff --git a/templates/web/cheshireeast/about/faq-en-gb.html b/templates/web/cheshireeast/about/faq-en-gb.html new file mode 100644 index 000000000..8f791819e --- /dev/null +++ b/templates/web/cheshireeast/about/faq-en-gb.html @@ -0,0 +1,56 @@ +[% INCLUDE 'header.html', title = loc('Help'), bodyclass = 'twothirdswidthpage' %] + +[% INCLUDE 'about/_sidebar.html' %] + +<h1>Cheshire East FixMyStreet</h1> + +<p>We are working with FixMyStreet to help people report or see reports of local issues, by simply locating them on a map.</p> + +<p>You can use Cheshire East’s FixMyStreet to report Highways issues like potholes or broken street lights.</p> + +<p>Use our <a href="https://www.cheshireeast.gov.uk/environment/street_cleansing_and_litter/street_cleansing_and_litter.aspx">Street Cleansing</a> pages to report other issues which require fixing, cleaning or clearing, such as:</p> + +<ul> + <li>Abandoned vehicles + <li>Dog Fouling + <li>Flyposting or graffiti + <li>Fly tipping or litter +</ul> + + <p>See our webpages to report problems <strong>such as</strong>:</p> + + <ul> + <li><a href="https://www.cheshireeast.gov.uk/environment/community_safety/anti-social_behaviour/anti-social_behaviour.aspx">Anti-social behaviour</a> + <li><a href="http://www.cheshireeast.gov.uk/contact">Any urgent or emergency problems</a> + <li><a href="https://www.cheshireeast.gov.uk/environment/environmental_health/noise_nuisance/noise_nuisance.aspx">Noise pollution or barking dogs</a> + <li><a href="https://www.cheshireeast.gov.uk/environment/environmental_health/local_air_quality/air_pollution_complaints/air_pollution_complaints.aspx">Fires and smoke/smell pollution</a> + <li><a href="http://www.cheshireeast.gov.uk/bins">Missing wheelie bins or recycling boxes or missed rubbish collections</a> + <li><a href="http://www.cheshireeast.gov.uk/contact">Complaining about the authority</a> + </ul> + + <h2>How to use our FixMyStreet pages</h2> + +<p>After entering a location, you are presented with a map of that area. You can view problems already reported in that area, or report others yourself by clicking on the map at the location of the problem. + +<h3>Problems zoom out on the reporting map</h3> + +<p>We want to keep FixMyStreet locally focused, so we restrict the ability to move radically between areas. + +<h3>Inappropriate content</h3> + +<p>Cheshire East Council and FixMyStreet are not responsible for the content and accuracy of material submitted by its users. We reserve the right to edit or remove any reports or updates which we consider to be inappropriate upon being informed by a user of the site. + +<h2>Development of FixMyStreet</h2> + +<p>The FixMyStreet service was built by <a href="https://www.mysociety.org/">mySociety</a>. + +<p>The software behind this site is open source, and available to you mainly under the GNU Affero GPL software license. +You can <a href="https://github.com/mysociety/fixmystreet">download the source + code</a> and help us develop it. You’re welcome to use it in your own + projects, although you must also make available the source code to any such + projects. <a href="https://www.fixmystreet.com/">FixMyStreet.com</a> is the + original code installation, in the UK.</dd> + +</dl> + +[% INCLUDE 'footer.html' pagefooter = 'yes' %] diff --git a/templates/web/cheshireeast/about/privacy.html b/templates/web/cheshireeast/about/privacy.html new file mode 100644 index 000000000..396b34b7e --- /dev/null +++ b/templates/web/cheshireeast/about/privacy.html @@ -0,0 +1,362 @@ +[% INCLUDE 'header.html', + title = loc('Privacy and cookies'), + bodyclass = 'twothirdswidthpage' %] + +[% INCLUDE 'about/_sidebar.html' %] + +<h1>Privacy, cookies, and third party services</h1> + +<h2>Privacy Policy</h2> + +<p> + FixMyStreet is run by the charity <a href="https://www.mysociety.org/">mySociety</a>. +</p> + +<p> + Working in the fields of transparency and accountability, mySociety thinks hard and + cares very much about the privacy and security of our users: the length of this + privacy policy is one result of that. We know no-one goes through Privacy Policies for + fun though, so we’ve tried to keep it a clear and reasonably quick read. +</p> + +<p> + We hope it covers everything you need to know, but if you still have any questions + feel free to <a href="/contact">contact us</a>. +</p> + +<h2>What information we collect and how we use it</h2> + +<p> + When you submit a report, <b>we pass on your details, and details of the issue, to the + council contact</b> or contacts responsible for the area where you located the issue, or + other relevant body. +</p> + +<h3> +When you make a report +</h3> + +<p> + When you use FixMyStreet to send a report, you provide us with personal information + including: +</p> + +<ul> + <li>Your name</li> + <li>Contact details</li> +</ul> + +<p> + We <b>send this information to the body responsible for fixing your issue</b>, as per your + choice of category and location. +</p> + +<p> + At the same time, <b>your report appears on the FixMyStreet website</b>. Your email address + and phone number are not published, and we only published your name if you opted to publish it. +</p> + +<p> + Some councils, including Cheshire East Council, use FixMyStreet on their + own websites. If you make a report within the boundaries of one of these + councils (either through FixMyStreet.com or via the council website), it + will be published on both web sites. +</p> + +<p> + FixMyStreet provides RSS/JSON feeds which allow anyone to publish reports on their own + website or page. Typically these feeds consist of reports made within a specific local + area, and are published on community or local interest sites. +</p> + +<p> + Anything you include in the body of your report will be published in one or + all of the places listed above, so keep personal information such + as your contact details to the correct fields. +</p> + +<p> + We <b>store your personal details</b>, along with your password where used (passwords are + stored in a format that is unreadable to anyone — including us — known as a hash) and + any reports or updates you make, in our own database. +</p> + +<p> + These are accessible only to FixMyStreet administrators who adhere to strict internal + data-handling policies, and, where a council is a <a href="https://www.fixmystreet.com/pro/">FixMyStreet Pro</a> client, to council + staff, whose own data-handling and security policies will apply. +</p> + +<h3> + When you subscribe to an alert by email +</h3> + +<p> + We collect your email address, which we store with the details of whichever alert/s + you have subscribed to. +</p> + +<h3> + When you contact the support team +</h3> + +<p> + Your message will be accessible to our small team of support staff, who adhere to + strict internal data-handling policies. +</p> + +<p> + <b>Your personal information is never shared, or used for purposes other than those + listed above, unless we are obliged to by law.</b> +</p> + +<h2> + Research +</h2> + +<p> + We sometimes use data from FixMyStreet, or share it with trusted third parties, for + research. This data is completely anonymised and contains no identifying details such + as names, email addresses or the content of reports. Our Research Data Release policy + may be seen on request. +</p> + +<h2> + What happens when you use FixMyStreet +</h2> + +<h2> + Making a report +</h2> + +<ul> + <li> + When your council responds to your report, if you have provided us with an email + address, in most cases <b>their reply will go directly to your email inbox</b>. This + response, and any subsequent correspondence, happens outside the FixMyStreet + system, except in the case of some councils which have integrated with FixMyStreet + so that their responses and auto-updates are published on the report page. If you + have submitted via phone verification, you may not receive any response from the + council, depending on how their systems are set up. + </li> + <li> + If your report is particularly interesting, our Communications Manager may get in + touch, as we like to feature notable requests on the + <a href="https://www.mysociety.org/blog/">mySociety blog</a> (or just + <a href="mailto:press@mysociety.org">let us know</a> directly!). + </li> + <li> + We only ever send you emails in relation to your reports or use of the site. + </li> +</ul> + +<h3> + Subscribing to alerts +</h3> + +<p> + We’ll send you an automated email every time someone makes a report within the area + you specify, or when updates are made to a report you’ve opted to follow. The + frequency of these emails will depend on how large your chosen area is and how many + reports are made within it, but you won’t get more than one an hour. +</p> + +<h2> + Unsubscribing +</h2> + +<h3> + How to stop receiving emails from us +</h3> + +<p> + Every alert email we send contains an unsubscribe link at the bottom for you to stop + receiving that alert. +</p> + +<h2> + Legal basis for processing +</h2> + +<p> + In using FixMyStreet for any of the functions listed above (sending a + report, leaving an update, email alerts or site registration), we are + processing your data under the legal basis 6(1)(f) – legitimate interests. + We assert that we have a legitimate charitable and commercial interest in + giving people an easy and public way to report street problems, even if they + don't know who the problems should go to, and in sending them updates or + alerts. The benefits of reporting problems publicly are that others can + quickly see what has already been reported, so it prevents the council from + having to deal with duplicates. It also creates a snapshot for local + communities, so it's easy to see what the common problems are in a given + area, and how quickly they get fixed. Other local residents can browse, read + and comment on problems – and perhaps even offer a solution. +</p> + +<h2> + Retention periods and your right to removal +</h2> + +<h3> + Reports and updates +</h3> + +<p> + Except in exceptional circumstances, we do not delete reports or updates made through + FixMyStreet. Historic FixMyStreet reports provide an invaluable resource for + researchers into the quantity and type of street problems made across the UK during + the years the site has been running. This research can help inform civic planners, + developers, coders, historians and social scientists, among others. +</p> + +<p> + Therefore, <b>if you ask for a report to be removed, in most cases we will instead invite + you to anonymise it</b>, so that there is no public connection between the content and + your name. You can anonymise reports singly, or in bulk, by logging in to your account + and clicking on the ‘“Hide your name” link beside the time and date of your report. + From here you may anonymise this report or all reports you have made. +</p> + +<h3> + Your personal information +</h3> + +<p> + As well as your report or update appearing on the FixMyStreet website, your details, + including name and email address, are stored in our admin system. +</p> + +<p> + If you submit a report but do not click on the confirmation email, your report will + not be sent to the council; however, the report and your details remain in our system + and are accessible to site administrators. +</p> + +<p> + <a href="/contact">Contact us</a> if you would like your details to be removed from our admin + database. +</p> + +<h3> + Support mail +</h3> + +<p> + If you contact FixMyStreet via our support email address we keep your message for two + years at which point they will be automatically deleted. This is to aid continuity + and so that we can view any historic context which may have bearing on subsequent + support mail, even if members of the support staff change. Support staff adhere to + internal privacy policies which may be viewed on request. +</p> + +<h2> + Your right to object +</h2> +<p> + The General Data Protection Regulation gives you the right to object to our + processing of your personal information and to ask us to stop processing it. + However, it also gives us the right to continue to process it if we can demonstrate + compelling legitimate grounds for the processing that override your interests, rights + and freedoms. To exercise your right to object, you can <a href="/contact"> + contact us</a>, giving specific reasons why you are objecting to the processing of + your personal data. These reasons should be based upon your particular situation. +</p> +<h2> + Your right to access +</h2> + +<p> + You may <a href="/contact">contact us</a> at any time to ask to see what personal data we hold about you. +</p> + +<h2> + Your right to complain +</h2> + +<p> + If you believe that we have mishandled your data, you have the right to lodge a + complaint with the Information Commissioner’s Office. + <a href="https://ico.org.uk/concerns/handling/">You can report a concern here</a> + (but do contact us first, so that we can try and help). +</p> + +<h3> + Who we are +</h3> + +<p> + FixMyStreet is run by mySociety, a UK not-for-profit social enterprise. Our registered + address is: +</p> + +<p> +mySociety<br> +483 Green Lanes<br> +London<br> +N13 4BS<br> +United Kingdom<br> +</p> + +<p> + …and we can also be <a href="/contact">contacted here</a>. +</p> + + +<h2>Cookies</h2> + +<p>To make our service easier or more useful, we sometimes place small data +files on your computer or mobile phone, known as cookies; many websites do +this. We use this information to, for example, remember you have logged in so +you don’t need to do that on every page, or to measure how people use the +website so we can improve it and make sure it works properly. Below, we list +the cookies and services that this site can use. + +<table class="nicetable"> + <tr> + <th scope="col">Name</th> + <th scope="col">Typical Content</th> + <th scope="col">Expires</th> + </tr> + <tr> + <td>fixmystreet_app_session</td> + <td nowrap>A random unique identifier</td> + <td>When browser is closed, or four weeks if “Keep me signed in” is ticked</td> + </tr> +</table> + +<h3>Measuring website usage (Google Analytics)</h3> + +<p>We use Google Analytics software to collect information about how you use +this site. We do this to help make sure the site is meeting the needs of its +users and to help us make improvements. + +<p>Google Analytics stores information such as what +pages you visit, how long you are on the site, how you got here, what you click +on, and information about your web browser. IP addresses are masked (only a +portion is stored) and personal information is only reported in aggregate. We +do not allow Google to use or share our analytics data for any purpose besides +providing us with analytics information, and we recommend that any user of +Google Analytics does the same. + +<h3>Opting out</h3> +<p>You can <a href="https://tools.google.com/dlpage/gaoptout">opt out of Google +Analytics cookies</a>. + +<p>If you want to disable advertising-based tracking, you can +<a href="https://www.google.com/settings/ads">adjust your Google Ads +Settings</a>, or opt out of advertising-based tracking across a +number of providers in one go using the +<a href="http://www.networkadvertising.org/choices/">Network +Advertising Initiative’s opt-out form</a>. + +<p>Rest assured, we only track usage data for one reason: to help us +understand how we can make the site work better for you, our +users. + +<h2>Credits</h2> + +<p>Bits of wording taken from the <a +href="https://www.gov.uk/help/cookies">gov.uk cookies page</a> (under the Open +Government Licence). + +[% INCLUDE 'footer.html' pagefooter = 'yes' %] diff --git a/templates/web/cheshireeast/alert/_index_text.html b/templates/web/cheshireeast/alert/_index_text.html new file mode 100644 index 000000000..c2eedf7bb --- /dev/null +++ b/templates/web/cheshireeast/alert/_index_text.html @@ -0,0 +1,16 @@ +<p> +We offer a variety of RSS feeds and email alerts for local problems, including +alerts for all reported problems within a particular ward, or all reported +problems within a certain distance of a particular location. +</p> + +[% IF location_error %] + <div class="error">[% location_error %]</div> +[% ELSE %] + [% INCLUDE 'errors.html' %] +[% END %] + +<p> +To find out what local alerts we have for you, enter your Cheshire East +postcode or street name and area: +</p> diff --git a/templates/web/cheshireeast/alert/_list_rss_local.html b/templates/web/cheshireeast/alert/_list_rss_local.html new file mode 100644 index 000000000..ed1fd78ff --- /dev/null +++ b/templates/web/cheshireeast/alert/_list_rss_local.html @@ -0,0 +1,10 @@ + <p id="rss_local"> + <a href="[% rss_feed_uri %]" class="alerts-rss-link"> + <img src="/i/feed.png" width="16" height="16" title="[% loc('RSS feed of nearby problems') %]" alt="[% loc('RSS feed') %]"> + </a> + <label class="label-containing-checkbox" for="[% rss_feed_id %]"> + <input type="radio" name="feed" id="[% rss_feed_id %]" value="[% rss_feed_id %]"[% IF rss_feed_id == selected_feed || selected_feed == '' %] checked[% END %]> + [% tprintf( loc('Reported problems within %.1fkm of %s'), population_radius, name_of_location ) %] + [% loc('(covers roughly 200,000 people)') %] + </label> + </p> diff --git a/templates/web/cheshireeast/around/intro.html b/templates/web/cheshireeast/around/intro.html new file mode 100644 index 000000000..857593ebd --- /dev/null +++ b/templates/web/cheshireeast/around/intro.html @@ -0,0 +1,2 @@ +<h1>Report or view local issues</h1> +<p>(for example potholes, broken street lights, faulty traffic lights)</p> diff --git a/templates/web/cheshireeast/email_sent.html b/templates/web/cheshireeast/email_sent.html new file mode 100644 index 000000000..7fcfb2d14 --- /dev/null +++ b/templates/web/cheshireeast/email_sent.html @@ -0,0 +1,25 @@ +[% INCLUDE 'header.html', bodyclass = 'fullwidthpage', title = loc('Create a report') %] + +<div class="confirmation-header confirmation-header--inbox"> + + <h1>[% loc("Nearly done! Now check your email…") %]</h1> + + <p> + [% IF email_type == 'problem' %] + Click the link in our confirmation email to publish this problem. + [% ELSIF email_type == 'update' %] + [% loc("Click the link in our confirmation email to publish your update.") %] + [% ELSIF email_type == 'alert' %] + [% loc("Click the link in our confirmation email to activate your alert.") %] + [% END %] + </p> + + [% TRY %][% INCLUDE '_email_sent_extra.html' %][% CATCH file %][% END %] + + <p> + [% loc("Can’t find our email? Check your spam folder – that’s the solution 99% of the time.") %] + </p> + +</div> + +[% INCLUDE 'footer.html' %] diff --git a/templates/web/cheshireeast/footer_extra.html b/templates/web/cheshireeast/footer_extra.html new file mode 100644 index 000000000..9ccbde871 --- /dev/null +++ b/templates/web/cheshireeast/footer_extra.html @@ -0,0 +1,8 @@ +<footer class="ce-footer"> + <div class="container"> + <ul> + <li><a href="https://www.cheshireeast.gov.uk/council_and_democracy/council_information/website_information/help_and_accessibility.aspx">Help and accessibility</a> + <li><a href="https://www.cheshireeast.gov.uk/council_and_democracy/council_information/website_information/website_information.aspx">Website information, privacy and cookies</a> + </ul> + </div> +</footer> diff --git a/templates/web/cheshireeast/footer_extra_js.html b/templates/web/cheshireeast/footer_extra_js.html new file mode 100644 index 000000000..10ac9a152 --- /dev/null +++ b/templates/web/cheshireeast/footer_extra_js.html @@ -0,0 +1,14 @@ +[% scripts.push( + version('/cobrands/fixmystreet-uk-councils/council_validation_rules.js'), +) %] +[%~ +IF bodyclass.match('mappage'); + scripts.push( + version('/vendor/OpenLayers.Projection.OrdnanceSurvey.js'), + version('/cobrands/fixmystreet/assets.js'), + version('/cobrands/fixmystreet-uk-councils/roadworks.js'), + version('/cobrands/cheshireeast/assets.js'), + version('/cobrands/cheshireeast/js.js'), + ); +END +%] diff --git a/templates/web/cheshireeast/header_extra.html b/templates/web/cheshireeast/header_extra.html new file mode 100644 index 000000000..c55188dad --- /dev/null +++ b/templates/web/cheshireeast/header_extra.html @@ -0,0 +1,13 @@ +<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:400,700&display=swap"> + +[% IF c.config.BASE_URL == "https://www.fixmystreet.com" %] +<script async src="https://www.googletagmanager.com/gtag/js?id=UA-10804167-1"></script> +<script> + window.dataLayer = window.dataLayer || []; + function gtag(){dataLayer.push(arguments);} + gtag('js', new Date()); + gtag('config', 'UA-10804167-1'); +</script> +[% ELSE %] +<!-- Tracking code not inserted as "[% c.config.BASE_URL %]" not "https://www.fixmystreet.com" --> +[% END %] diff --git a/templates/web/cheshireeast/header_logo.html b/templates/web/cheshireeast/header_logo.html new file mode 100644 index 000000000..701f47588 --- /dev/null +++ b/templates/web/cheshireeast/header_logo.html @@ -0,0 +1,2 @@ + <a href="https://www.cheshireeast.gov.uk" id="site-logo">Cheshire East Council home page</a> + <a href="/" id="report-cta" title="[%- loc('Report a problem') -%]">[%- loc('Report') -%]</a> diff --git a/templates/web/cheshireeast/report/_council_sent_info.html b/templates/web/cheshireeast/report/_council_sent_info.html new file mode 100644 index 000000000..1963020bc --- /dev/null +++ b/templates/web/cheshireeast/report/_council_sent_info.html @@ -0,0 +1,17 @@ +[% SET duration_clause = problem.duration_string(c) %] +[% IF duration_clause || problem.whensent %] + <p class="council_sent_info"> + [%- IF problem.whensent %] + [%- IF duration_clause %] + [%- external_ref_clause = tprintf(loc('Council ref: %s'), problem.id) %] + [%- ELSE %] + [%- external_ref_clause = tprintf(loc('%s ref: %s'), problem.external_body, problem.id) %] + [%- END %] + [%- END -%] + [% duration_clause %] + [%- IF external_ref_clause %] + [%- IF duration_clause %]. [% END %] + <strong>[% external_ref_clause %].</strong> + [%- END %] + </p> +[% END %] diff --git a/templates/web/cheshireeast/report/new/councils_text_all.html b/templates/web/cheshireeast/report/new/councils_text_all.html new file mode 100644 index 000000000..d4bafdb3f --- /dev/null +++ b/templates/web/cheshireeast/report/new/councils_text_all.html @@ -0,0 +1,4 @@ +<p> + We publish these details online for others to see, in accordance with our + <a href="/privacy">privacy policy</a>. +</p> diff --git a/templates/web/cheshireeast/report/new/form_heading.html b/templates/web/cheshireeast/report/new/form_heading.html new file mode 100644 index 000000000..cbd0dcce4 --- /dev/null +++ b/templates/web/cheshireeast/report/new/form_heading.html @@ -0,0 +1 @@ +<h1>Report the problem</h1> diff --git a/templates/web/cheshireeast/report/new/roads_message.html b/templates/web/cheshireeast/report/new/roads_message.html new file mode 100644 index 000000000..3a62e052c --- /dev/null +++ b/templates/web/cheshireeast/report/new/roads_message.html @@ -0,0 +1,10 @@ +<div id="js-roads-responsibility" class="box-warning hidden"> + <strong>Not maintained by Cheshire East Council</strong> + <div id="js-not-council-road" class="hidden js-responsibility-message"> + <p>The selected road is not maintained by Cheshire East Council; + to find out who owns this land/road please contact the Land Registry at + <a href="https://www.gov.uk/search-property-information-land-registry">https://www.gov.uk/search-property-information-land-registry</a>. + </p> + </div> +</div> + diff --git a/templates/web/cheshireeast/tokens/confirm_problem.html b/templates/web/cheshireeast/tokens/confirm_problem.html new file mode 100644 index 000000000..d905ae039 --- /dev/null +++ b/templates/web/cheshireeast/tokens/confirm_problem.html @@ -0,0 +1,37 @@ +[% INCLUDE 'header.html', bodyclass = 'fullwidthpage', title = loc('Confirmation') %] + +<div class="confirmation-header"> + + <h1>Thank you for your report</h1> + + <p><a href="[% c.cobrand.relative_url_for_report( report ) %][% report.url %]">[% report.title %]</a> + + [% IF c.cobrand.owns_problem( report ) %] + <p>Your reference for this report is [% report.id %], please quote it in any enquiries.</p> + [% ELSE %] + <p> + We don’t handle this type of problem, so have passed it on to: + </p> + <p> + <b>[% report.body %]</b> + </p> + <p> + You can follow this problem on <a href="[% c.cobrand.relative_url_for_report( report ) %][% report.url %]">FixMyStreet.com</a>. + </p> + [% END %] + + <p class="box-warning">If you consider this to be dangerous or an emergency, + please call us on 0300 123 5020, quoting your reference number [% report.id %]. + The out of hours emergency number is 0300 123 5025.</p> + + <p class="confirmation-again"> + <a href="/report/new?latitude=[% report.latitude %]&longitude=[% report.longitude %]" class="btn btn-primary"> + [% loc('Report another problem here') %] + </a> + </p> + + <p><a href="https://www.cheshireeast.gov.uk/">Council homepage</a></p> + +</div> + +[% INCLUDE 'footer.html' %] diff --git a/templates/web/cheshireeast/tokens/confirm_update.html b/templates/web/cheshireeast/tokens/confirm_update.html new file mode 100644 index 000000000..6e63298a0 --- /dev/null +++ b/templates/web/cheshireeast/tokens/confirm_update.html @@ -0,0 +1,22 @@ +[% INCLUDE 'header.html', bodyclass = 'fullwidthpage', title = loc('Confirmation'); + +DEFAULT problem = update.problem; +IF update; + SET problem_url = update.url; +ELSE; + SET problem_url = problem.url; +END; + +%] + +<div class="confirmation-header"> + + <h1>Thank you for updating this issue</h1> + + <h2><a href="[% problem_url %]">[% problem.title %]</a></h2> + + <p><a href="https://www.cheshireeast.gov.uk/">Council homepage</a></p> + +</div> + +[% INCLUDE 'footer.html' %] diff --git a/templates/web/fixmystreet.com/footer_extra_js.html b/templates/web/fixmystreet.com/footer_extra_js.html index c8ad921f6..d5209b804 100644 --- a/templates/web/fixmystreet.com/footer_extra_js.html +++ b/templates/web/fixmystreet.com/footer_extra_js.html @@ -10,6 +10,7 @@ IF bodyclass.match('mappage'); scripts.push( version('/cobrands/bristol/assets.js') ); scripts.push( version('/cobrands/bromley/assets.js') ); scripts.push( version('/cobrands/buckinghamshire/assets.js') ); + scripts.push( version('/cobrands/cheshireeast/assets.js') ); scripts.push( version('/cobrands/isleofwight/assets.js') ); scripts.push( version('/cobrands/lincolnshire/assets.js') ); scripts.push( version('/cobrands/northamptonshire/assets.js') ); diff --git a/web/cobrands/cheshireeast/_colours.scss b/web/cobrands/cheshireeast/_colours.scss new file mode 100644 index 000000000..363214bd0 --- /dev/null +++ b/web/cobrands/cheshireeast/_colours.scss @@ -0,0 +1,44 @@ +/* COLOURS */ + +$menu-image: 'menu-white'; + +$mappage-header-height: 107px; +$container-max-width: 1170px; + +$white: #fff; +$green: #206c49; +$gold: #ffa100; + +$heading-color: #333333; + +$text_black: #0B0C0C; +$text_grey: #6F777B; + +$link-color: #2e3191; +$link-text-decoration: none; +$link-hover-color: #2e3191; +$link-hover-text-decoration: none; +$link-visited-color: #2e3191; +$link-focus-color: #2e3191; + +$col_button: #00823B; +$col_button_hover: $green; + +$primary: $white; +$primary_b: $green; +$primary_text: $text_black; + +$base_bg: $white; +$base_fg: $text_black; + +$nav_background_colour: $green; +$nav_colour: $white; +$nav_hover_background_colour: darken($green, 10%); + +$col_click_map: $green; + +$header-top-border: false; + +$heading-font: 'Open Sans', sans-serif; +$body-font: 'Open Sans', sans-serif; +$meta-font: $body-font; diff --git a/web/cobrands/cheshireeast/assets.js b/web/cobrands/cheshireeast/assets.js new file mode 100644 index 000000000..1b1c254e3 --- /dev/null +++ b/web/cobrands/cheshireeast/assets.js @@ -0,0 +1,91 @@ +(function(){ + +if (!fixmystreet.maps) { + return; +} + +var defaults = { + wfs_url: "https://tilma.mysociety.org/mapserver/cheshireeast", + max_resolution: 4.777314267158508, + min_resolution: 0.5971642833948135, + attributes: { + central_asset_id: 'central_as', + site_code: 'site_code' + }, + geometryName: 'msGeometry', + srsName: "EPSG:27700", + body: "Cheshire East Council", + strategy_class: OpenLayers.Strategy.FixMyStreet +}; + +var streetlight_select = $.extend({ + label: "${feature_id}", + labelOutlineColor: "white", + labelOutlineWidth: 3, + labelYOffset: 65, + fontSize: '15px', + fontWeight: 'bold' +}, fixmystreet.assets.style_default_select.defaultStyle); + +var streetlight_stylemap = new OpenLayers.StyleMap({ + 'default': fixmystreet.assets.style_default, + 'select': new OpenLayers.Style(streetlight_select) +}); + +var labeled_defaults = $.extend(true, {}, defaults, { + select_action: true, + stylemap: streetlight_stylemap, + asset_type: 'spot', + asset_id_field: 'central_as', + actions: { + asset_found: function(asset) { + var id = asset.attributes.feature_id || ''; + if (id !== '') { + var asset_name = this.fixmystreet.asset_item; + $('.category_meta_message').html('You have selected ' + asset_name + ' <b>' + id + '</b>'); + } else { + $('.category_meta_message').html(this.fixmystreet.asset_item_message); + } + }, + asset_not_found: function() { + $('.category_meta_message').html(this.fixmystreet.asset_item_message); + } + } +}); + +fixmystreet.assets.add(labeled_defaults, { + wfs_feature: 'StreetLights', + filter_key: 'feature_gr', + filter_value: 'LCOL', + asset_group: 'Street lights', + asset_item: 'street light', + asset_item_message: 'You can pick a <b class="asset-spot">street light</b> from the map »' +}); + +var road_defaults = $.extend(true, {}, defaults, { + stylemap: fixmystreet.assets.stylemap_invisible, + always_visible: true, + non_interactive: true +}); + +fixmystreet.assets.add(road_defaults, { + wfs_feature: 'AdoptedRoads', + usrn: { + attribute: 'site_code', + field: 'site_code' + } +}); + +fixmystreet.assets.add(road_defaults, { + wfs_feature: 'UnAdoptedRoads', + road: true, + all_categories: true, + no_asset_msg_id: '#js-not-council-road', + // The functions assume allow when found, disallow when not found, so we want the reverse + actions: { + found: fixmystreet.message_controller.road_not_found, + not_found: fixmystreet.message_controller.road_found + } +}); + +})(); diff --git a/web/cobrands/cheshireeast/base.scss b/web/cobrands/cheshireeast/base.scss new file mode 100644 index 000000000..8e771f0ad --- /dev/null +++ b/web/cobrands/cheshireeast/base.scss @@ -0,0 +1,161 @@ +@import "../sass/h5bp"; +@import "./_colours"; +@import "../sass/mixins"; +@import "../sass/base"; + +body { + line-height: 1.429em; +} + +p { + margin: 0 0 10px 0; +} + +h1, h2, h3, h4, h5, h6 { + margin: 20px 0 10px 0; + padding: 0; + font-weight: normal !important; + font-style: normal !important; + color: #333; +} +h1 { font-size: 2.218em; line-height: 40px; margin: 16px 0 20px 0; } +h2 { font-size: 1.869em; line-height: 35px; } +h3 { font-size: 1.521em; line-height: 30px; } +h4 { font-size: 1.281em; line-height: 27px; } +h5 { font-size: 1.15em; line-height: 25px; } + +ul, ol { + margin: 0 0 20px 25px; + padding: 0; +} +ul li { + list-style: disc; +} +li { + margin-bottom: 10px; + line-height: 20px; +} + +div.form-error, p.form-error { + color: $white; + background-color: #aa272f; + font-weight: bold; + letter-spacing: 0.06em; +} + +.report_meta_info, +.council_sent_info { + font-size: inherit; +} + +/* Font overrides */ + +#front-main { + text-align: left; +} + +/* Colour overrides */ + +a, +.fake-link { + &:active, &:focus { + background-color: #e8ffd3; + outline: 3px solid #ffa100; + } +} + +.content a[href], +.fake-link { + border-bottom: 1px solid #a6a7da; + &:hover { + border-bottom: 1px solid #2e3191; + transition: border-color 0.5s; + } +} + +.btn-primary, +.green-btn, +.btn--primary { + border: none; + background: $col_button; + + &:focus, + &:hover, + &:active { + background: $col_button_hover; + } +} + +.box-warning { + background-color: #ecf3ec; +} + +#front-main a#geolocate_link { + color: #2e3191; + background: transparent; + border-bottom: 1px solid #a6a7da; + padding: 0; + margin-top: 0.5em; + font-size: inherit; + &:hover { + background: transparent; + border-bottom: 1px solid #2e3191; + transition: border-color 0.5s; + } +} + +/* Front page */ +#front-main { + #postcodeForm { + div { + input#sub { + background: $green; + } + } + } +} + +/* Header/footer */ + +#site-logo { + width: 148px; + height: 67px; + padding: 1em 0; + background: url(/cobrands/cheshireeast/images/cec-navbar-logo-white.png) 0 50% no-repeat; + background-size: 148px 67px; +} + +#site-header { + border-bottom: solid 8px $gold; +} + +.ce-footer { + padding: 20px; + background-color: $green; + border-top: solid 10px $gold; + ul { + margin: 0; + } + li { + list-style: none; + margin: 0 0 15px; + } + li:last-child { + margin: 0; + } + a, a:link, a:visited, a:hover, a:active, a:focus { + border-bottom: 1px solid #cacaca; + color: #fff; + background-color: transparent; + font-weight: 700; + } + a:hover, a:active, a:focus { + border-bottom: 1px solid #fff; + } +} + +.nav-menu a { + border-bottom: 1px solid #999; + background-color: $white; + color: $link-color; +} diff --git a/web/cobrands/cheshireeast/images/cec-navbar-logo-white.png b/web/cobrands/cheshireeast/images/cec-navbar-logo-white.png Binary files differnew file mode 100644 index 000000000..3ebff87d6 --- /dev/null +++ b/web/cobrands/cheshireeast/images/cec-navbar-logo-white.png diff --git a/web/cobrands/cheshireeast/js.js b/web/cobrands/cheshireeast/js.js new file mode 100644 index 000000000..499a3903b --- /dev/null +++ b/web/cobrands/cheshireeast/js.js @@ -0,0 +1,18 @@ +(function(){ + +if (!fixmystreet.maps) { + return; +} + +var org_id = '1451'; +var body = "Cheshire East Council"; +fixmystreet.assets.add(fixmystreet.roadworks.layer_future, { + http_options: { params: { organisation_id: org_id } }, + body: body +}); +fixmystreet.assets.add(fixmystreet.roadworks.layer_planned, { + http_options: { params: { organisation_id: org_id } }, + body: body +}); + +})(); diff --git a/web/cobrands/cheshireeast/layout.scss b/web/cobrands/cheshireeast/layout.scss new file mode 100644 index 000000000..71861e13f --- /dev/null +++ b/web/cobrands/cheshireeast/layout.scss @@ -0,0 +1,80 @@ +@import "_colours"; + +@import "../sass/layout"; + +body { + background-image: linear-gradient(to bottom, $white, #f3f3f3); +} +footer { + margin-top: 0; // So no sign of above gradient at bottom above footer +} + +#site-header + .container { + background-color: $white; +} + +body.frontpage .content { + margin: 0 -1em; +} + +#front-main { + background-color: transparent; + padding: 0; +} +#front-main-container { + background-color: $white; + padding: 1em; +} +#front-main #postcodeForm div { + margin: 0; + width: 30em; +} +#front-main a#geolocate_link { + color: #2e3191; + &:hover { + text-decoration: none; + } +} + +.ce-footer { + ul { + display: flex; + justify-content: space-between; + } + li { + margin: 0; + } +} + +body.mappage { + #site-header { + box-sizing: border-box; // count padding as part of height, so border-bottom is visible + } + + .ce-footer { + display: none; + } +} + +.general-notes { + font-size: inherit; +} + +/*body.twothirdswidthpage .content .sticky-sidebar aside { + top: 10em; +} +*/ + +/* +#site-logo { + width: 208px; + height: 80px; + padding: 24px 0; + background-position: 8px 50%; + background-size: 200px 80px; +} +*/ + +#front_stats big { + color: $green; +} diff --git a/web/cobrands/fixmystreet-uk-councils/council_validation_rules.js b/web/cobrands/fixmystreet-uk-councils/council_validation_rules.js index 3f350a82f..3498c9a68 100644 --- a/web/cobrands/fixmystreet-uk-councils/council_validation_rules.js +++ b/web/cobrands/fixmystreet-uk-councils/council_validation_rules.js @@ -21,6 +21,7 @@ body_validation_rules = { } }, 'Buckinghamshire County Council': confirm_validation_rules, + 'Cheshire East Council': confirm_validation_rules, 'Hounslow Borough Council': confirm_validation_rules, 'Lincolnshire County Council': confirm_validation_rules, 'Northamptonshire County Council': { |