diff options
33 files changed, 511 insertions, 339 deletions
diff --git a/.cypress/cypress/integration/buckinghamshire.js b/.cypress/cypress/integration/buckinghamshire.js index 6e87da624..90aa6809d 100644 --- a/.cypress/cypress/integration/buckinghamshire.js +++ b/.cypress/cypress/integration/buckinghamshire.js @@ -1,4 +1,4 @@ -describe('flytipping', function() { +describe('buckinghamshire cobrand', function() { beforeEach(function() { cy.server(); @@ -12,37 +12,6 @@ describe('flytipping', function() { cy.get('[name=pc]').parents('form').submit(); }); - it('handles flytipping on a road correctly', function() { - cy.get('.olMapViewport #fms_pan_zoom_zoomin').click(); - cy.wait('@roads-layer'); - cy.get('#map_box').click(290, 307); - cy.wait('@report-ajax'); - cy.get('select:eq(4)').select('Flytipping'); - cy.get('#form_road-placement').select('off-road'); - cy.contains('sent to Chiltern District Council and also'); - cy.get('#form_road-placement').select('road'); - cy.contains('sent to Buckinghamshire County Council and also'); - }); - - it('handles flytipping off a road correctly', function() { - cy.get('#map_box').click(200, 307); - cy.wait('@report-ajax'); - cy.get('select:eq(4)').select('Flytipping'); - cy.contains('sent to Chiltern District Council and also'); - - cy.get('[name=title]').type('Title'); - cy.get('[name=detail]').type('Detail'); - cy.get('.js-new-report-user-show').click(); - cy.get('.js-new-report-show-sign-in').should('be.visible').click(); - cy.get('#form_username_sign_in').type('user@example.org'); - cy.get('[name=password_sign_in]').type('password'); - cy.get('[name=password_sign_in]').parents('form').submit(); - cy.get('#map_sidebar').should('contain', 'check and confirm your details'); - cy.wait('@report-ajax'); - cy.get('#map_sidebar').parents('form').submit(); - cy.get('body').should('contain', 'Thank you for your report'); - }); - it('sets the site_code correctly', function() { cy.get('.olMapViewport #fms_pan_zoom_zoomin').click(); cy.wait('@roads-layer'); @@ -57,7 +26,6 @@ describe('flytipping', function() { cy.wait('@report-ajax'); cy.get('select:eq(4)').select('Flytipping'); cy.wait('@around-ajax'); - cy.get('.js-hide-duplicate-suggestions:first').should('be.visible').click(); cy.get('[name=title]').type('Title'); cy.get('[name=detail]').type('Detail'); diff --git a/.cypress/cypress/integration/highways.js b/.cypress/cypress/integration/highways.js index 7f7214ae8..4c66e074e 100644 --- a/.cypress/cypress/integration/highways.js +++ b/.cypress/cypress/integration/highways.js @@ -24,5 +24,7 @@ describe('Highways England tests', function() { cy.get('#js-councils_text').should('contain', 'Highways England'); cy.get('#single_body_only').should('have.value', 'Highways England'); cy.get('#form_category').should('contain', 'Sign issue'); + cy.get('#category_group').select('Sign issue'); + cy.get('#form_category').should('have.value', 'Sign issue'); }); }); diff --git a/bin/fixmystreet.com/buckinghamshire-flytipping b/bin/fixmystreet.com/buckinghamshire-flytipping index 70a37ea34..a312f9fbe 100755 --- a/bin/fixmystreet.com/buckinghamshire-flytipping +++ b/bin/fixmystreet.com/buckinghamshire-flytipping @@ -14,8 +14,8 @@ BEGIN { require "$d/../../setenv.pl"; } -use constant BUCKS_AREA_ID => 2217; -use constant DISTRICT_IDS => (2255, 2256, 2257, 2258); +use constant BUCKS_NAME => 'Buckinghamshire Council'; +use constant EX_DISTRICTS => ['Aylesbury Vale District Council', 'Chiltern District Council', 'South Bucks District Council', 'Wycombe District Council']; use constant TIME_OPEN => '3 weeks'; use constant TIME_OPEN_ALERT => '6 weeks'; @@ -30,11 +30,11 @@ my ($opts, $usage) = describe_options( ); print($usage->text), exit if $opts->help; -my $body = FixMyStreet::DB->resultset("Body")->for_areas(BUCKS_AREA_ID)->first; +my $body = FixMyStreet::DB->resultset("Body")->search({ name => BUCKS_NAME })->first; die "Could not find Bucks body" unless $body; -my @districts = FixMyStreet::DB->resultset("Body")->for_areas(DISTRICT_IDS)->all; -my @district_ids = map { $_->id } grep { $_->name ne 'TfL' } @districts; +my @districts = FixMyStreet::DB->resultset("Body")->search({ name => EX_DISTRICTS })->all; +my @district_ids = map { $_->id } @districts; die "Did not find all districts" unless @district_ids == 4; find_problems(TIME_OPEN_ALERT, TIME_OPEN, 'Auto-closure', 1); @@ -57,12 +57,22 @@ sub find_problems { $time_param = { '<', \$to }; } - # Fetch all Flytipping problems sent only to districts, between $from and $to - my $q = FixMyStreet::DB->resultset("Problem")->search( - \[ "? @> regexp_split_to_array(bodies_str, ',')", [ {} => \@district_ids ] ] - )->search({ + # Fetch all Flytipping problems made off-road (i.e. those that previously + # would been sent only to districts) any any older ones which actually were + # sent to districts, between $from and $to + my $q = FixMyStreet::DB->resultset("Problem")->search([ + # Reports sent to district, made before the unitary switchover + -and => [ + \[ "? @> regexp_split_to_array(bodies_str, ',')", [ {} => \@district_ids ] ], + category => 'Flytipping' + ], + # Reports sent to Bucks Council after unitary switchover + { + bodies_str => $body->id, + category => 'Flytipping (off-road)' + } + ])->search({ state => [ FixMyStreet::DB::Result::Problem->open_states() ], - category => 'Flytipping', confirmed => $time_param, }); diff --git a/bin/fixmystreet.com/fixture b/bin/fixmystreet.com/fixture index 9c471a941..f4a9fbef1 100755 --- a/bin/fixmystreet.com/fixture +++ b/bin/fixmystreet.com/fixture @@ -95,7 +95,7 @@ if ($opt->test_fixtures) { my $bodies; foreach ( { area_id => 2234, categories => ['Shelter Damaged', 'Very Urgent'], name => 'Northamptonshire County Council' }, - { area_id => 2217, categories => ['Flytipping', 'Roads', 'Parks'], name => 'Buckinghamshire County Council' }, + { area_id => 2217, categories => ['Flytipping', 'Roads', 'Parks'], name => 'Buckinghamshire Council' }, { area_id => 2257, categories => ['Flytipping', 'Graffiti'], name => 'Chiltern District Council' }, { area_id => 2397, categories => [ 'Graffiti' ], name => 'Northampton Borough Council' }, { area_id => 2483, categories => [ 'Potholes', 'Other' ], name => 'Hounslow Borough Council' }, diff --git a/bin/fixmystreet.com/one-off-move-js-messages-to-db b/bin/fixmystreet.com/one-off-move-js-messages-to-db index 1f03a56e2..bdbcd0a8c 100644 --- a/bin/fixmystreet.com/one-off-move-js-messages-to-db +++ b/bin/fixmystreet.com/one-off-move-js-messages-to-db @@ -33,7 +33,7 @@ my @messages = ( message => 'Please report problems with rights of way using <a href="https://publicrightsofway.oxfordshire.gov.uk/web/standardmap.aspx">this page</a>.' }, { - body => 'Buckinghamshire County Council', + body => 'Buckinghamshire Council', category => 'Rights of Way', message => 'If you wish to report an issue on a Public Right of Way, please use <a href="https://www.buckscc.gov.uk/services/environment/public-rights-of-way/report-a-rights-of-way-issue/">this service</a>.' }, diff --git a/perllib/FixMyStreet/Cobrand/Buckinghamshire.pm b/perllib/FixMyStreet/Cobrand/Buckinghamshire.pm index b13f4eed1..188a503c1 100644 --- a/perllib/FixMyStreet/Cobrand/Buckinghamshire.pm +++ b/perllib/FixMyStreet/Cobrand/Buckinghamshire.pm @@ -7,10 +7,11 @@ use warnings; use Moo; with 'FixMyStreet::Roles::ConfirmOpen311'; with 'FixMyStreet::Roles::ConfirmValidation'; +with 'FixMyStreet::Roles::BoroughEmails'; sub council_area_id { return 2217; } sub council_area { return 'Buckinghamshire'; } -sub council_name { return 'Buckinghamshire County Council'; } +sub council_name { return 'Buckinghamshire Council'; } sub council_url { return 'buckinghamshire'; } sub disambiguate_location { @@ -98,41 +99,15 @@ sub open311_contact_meta_override { } if $service->{service_name} eq 'Flytipping'; } -sub process_open311_extras { - my ($self, $c, $body, $extra) = @_; - - return unless $c->stash->{report}; # Don't care about updates - - $self->flytipping_body_fix( - $c->stash->{report}, - $c->get_param('road-placement'), - $c->stash->{field_errors}, - ); -} - -sub flytipping_body_fix { - my ($self, $report, $road_placement, $errors) = @_; +sub report_new_munge_before_insert { + my ($self, $report) = @_; return unless $report->category eq 'Flytipping'; - if ($report->bodies_str =~ /,/) { - # Sent to both councils in the area - my @bodies = values %{$report->bodies}; - my $county = (grep { $_->name =~ /^Buckinghamshire/ } @bodies)[0]; - my $district = (grep { $_->name !~ /^Buckinghamshire/ } @bodies)[0]; - # Decide which to send to based upon the answer to the extra question: - if ($road_placement eq 'road') { - $report->bodies_str($county->id); - } elsif ($road_placement eq 'off-road') { - $report->bodies_str($district->id); - } - } else { - # If the report is only being sent to the district, we do - # not care about the road question, if it is missing - if (!$report->to_body_named('Buckinghamshire')) { - delete $errors->{'xroad-placement'}; - } - } + my $placement = $self->{c}->get_param('road-placement'); + return unless $placement && $placement eq 'off-road'; + + $report->category('Flytipping (off-road)'); } sub filter_report_description { @@ -409,15 +384,8 @@ sub get_geocoder { 'OSM' } sub categories_restriction { my ($self, $rs) = @_; - # Buckinghamshire is a two-tier council, but mostly want to display - # county-level categories on their cobrand. - return $rs->search( - [ - { 'body_areas.area_id' => 2217 }, - { category => [ 'Flytipping', 'Car Parks' ] }, - ], - { join => { body => 'body_areas' } } - ); + + return $rs->search( { category => { '!=', 'Flytipping (off-road)'} } ); } sub lookup_site_code_config { { @@ -438,4 +406,23 @@ sub lookup_site_code_config { { } } } +around 'munge_sendreport_params' => sub { + my ($orig, $self, $row, $h, $params) = @_; + + # The district areas don't exist in MapIt past generation 36, so look up + # what district this report would have been in and temporarily override + # the areas column so BoroughEmails::munge_sendreport_params can do its + # thing. + my ($lat, $lon) = ($row->latitude, $row->longitude); + my $district = FixMyStreet::MapIt::call( 'point', "4326/$lon,$lat", type => 'DIS', generation => 36 ); + ($district) = keys %$district; + + my $original_areas = $row->areas; + $row->areas(",$district,"); + + $self->$orig($row, $h, $params); + + $row->areas($original_areas); +}; + 1; diff --git a/perllib/FixMyStreet/Cobrand/TfL.pm b/perllib/FixMyStreet/Cobrand/TfL.pm index 40c2a5257..72d1dbc86 100644 --- a/perllib/FixMyStreet/Cobrand/TfL.pm +++ b/perllib/FixMyStreet/Cobrand/TfL.pm @@ -4,6 +4,9 @@ use parent 'FixMyStreet::Cobrand::Whitelabel'; use strict; use warnings; +use Moo; +with 'FixMyStreet::Roles::BoroughEmails'; + use POSIX qw(strcoll); use FixMyStreet::MapIt; @@ -391,63 +394,6 @@ sub report_new_munge_before_insert { $report->set_extra_fields(@$extra); } -=head2 munge_sendreport_params - -TfL want reports made in certain categories sent to different email addresses -depending on what London Borough they were made in. To achieve this we have -some config in COBRAND_FEATURES that specifies what address to direct reports -to based on the MapIt area IDs it's in. - -Contacts that use this technique have a short code in their email field, -which is looked up in the `borough_email_addresses` hash. - -For example, if you wanted Pothole reports in Bromley and Barnet to be sent to -one email address, and Pothole reports in Hounslow to be sent to another, -create a contact with category = "Potholes" and email = "BOROUGHPOTHOLES" and -use the following config in general.yml: - -COBRAND_FEATURES: - borough_email_addresses: - tfl: - BOROUGHPOTHOLES: - - email: bromleybarnetpotholes@example.org - areas: - - 2482 # Bromley - - 2489 # Barnet - - email: hounslowpotholes@example.org - areas: - - 2483 # Hounslow - -=cut - -sub munge_sendreport_params { - my ($self, $row, $h, $params) = @_; - - my $addresses = $self->feature('borough_email_addresses'); - return unless $addresses; - - my @report_areas = grep { $_ } split ',', $row->areas; - - my $to = $params->{To}; - my @munged_to = (); - for my $recip ( @$to ) { - my ($email, $name) = @$recip; - if (my $teams = $addresses->{$email}) { - for my $team (@$teams) { - my %team_area_ids = map { $_ => 1 } @{ $team->{areas} }; - if ( grep { $team_area_ids{$_} } @report_areas ) { - $recip = [ - $team->{email}, - $name - ]; - } - } - } - push @munged_to, $recip; - } - $params->{To} = \@munged_to; -} - sub report_new_is_on_tlrn { my ( $self ) = @_; diff --git a/perllib/FixMyStreet/Roles/BoroughEmails.pm b/perllib/FixMyStreet/Roles/BoroughEmails.pm new file mode 100644 index 000000000..ba941f64f --- /dev/null +++ b/perllib/FixMyStreet/Roles/BoroughEmails.pm @@ -0,0 +1,68 @@ +package FixMyStreet::Roles::BoroughEmails; +use Moo::Role; + +=head1 NAME + +FixMyStreet::Roles::BoroughEmails - role for directing reports according to the +borough_email_addresses COBRAND_FEATURE + +=cut + +=head2 munge_sendreport_params + +TfL want reports made in certain categories sent to different email addresses +depending on what London Borough they were made in. To achieve this we have +some config in COBRAND_FEATURES that specifies what address to direct reports +to based on the MapIt area IDs it's in. + +Contacts that use this technique have a short code in their email field, +which is looked up in the `borough_email_addresses` hash. + +For example, if you wanted Pothole reports in Bromley and Barnet to be sent to +one email address, and Pothole reports in Hounslow to be sent to another, +create a contact with category = "Potholes" and email = "BOROUGHPOTHOLES" and +use the following config in general.yml: + +COBRAND_FEATURES: + borough_email_addresses: + tfl: + BOROUGHPOTHOLES: + - email: bromleybarnetpotholes@example.org + areas: + - 2482 # Bromley + - 2489 # Barnet + - email: hounslowpotholes@example.org + areas: + - 2483 # Hounslow + +=cut + +sub munge_sendreport_params { + my ($self, $row, $h, $params) = @_; + + my $addresses = $self->feature('borough_email_addresses'); + return unless $addresses; + + my @report_areas = grep { $_ } split ',', $row->areas; + + my $to = $params->{To}; + my @munged_to = (); + for my $recip ( @$to ) { + my ($email, $name) = @$recip; + if (my $teams = $addresses->{$email}) { + for my $team (@$teams) { + my %team_area_ids = map { $_ => 1 } @{ $team->{areas} }; + if ( grep { $team_area_ids{$_} } @report_areas ) { + $recip = [ + $team->{email}, + $name + ]; + } + } + } + push @munged_to, $recip; + } + $params->{To} = \@munged_to; +} + +1; diff --git a/t/Mock/MapIt.pm b/t/Mock/MapIt.pm index d50ebdc1d..3cbaec3b9 100644 --- a/t/Mock/MapIt.pm +++ b/t/Mock/MapIt.pm @@ -27,14 +27,14 @@ my @PLACES = ( [ 'EH1 1BB', 55.952055, -3.189579, 2651, 'Edinburgh City Council', 'UTA', 20728, 'City Centre', 'UTE' ], [ 'BS10 5EE', 51.494885, -2.602237, 2561, 'Bristol City Council', 'UTA', 148646, 'Bedminster', 'UTW' ], [ 'BS20 5EE', 51.496194, -2.603439, 2608, 'Borsetshire County Council', 'CTY', 148646, 'Bedminster', 'UTW' ], - [ 'SL9 0NX', 51.615559, -0.556903, 2217, 'Buckinghamshire County Council', 'CTY', 2257, 'Chiltern District Council', 'DIS' ], - [ '?', 51.615499, -0.556667, 2217, 'Buckinghamshire County Council', 'CTY', 2257, 'Chiltern District Council', 'DIS' ], - [ '?', 51.615439, -0.558362, 2217, 'Buckinghamshire County Council', 'CTY', 2257, 'Chiltern District Council', 'DIS' ], + [ 'SL9 0NX', 51.615559, -0.556903, 2217, 'Buckinghamshire Council', 'CTY', 2257, 'Chiltern District Council', 'DIS' ], + [ '?', 51.615499, -0.556667, 2217, 'Buckinghamshire Council', 'CTY', 2257, 'Chiltern District Council', 'DIS' ], + [ '?', 51.615439, -0.558362, 2217, 'Buckinghamshire Council', 'CTY', 2257, 'Chiltern District Council', 'DIS' ], [ 'SW1A 1AA', 51.501009, -0.141588, 2504, 'Westminster City Council', 'LBO' ], [ 'GL50 2PR', 51.896268, -2.093063, 2226, 'Gloucestershire County Council', 'CTY', 2326, 'Cheltenham Borough Council', 'DIS', 4544, 'Lansdown', 'DIW', 143641, 'Lansdown and Park', 'CED' ], [ 'OX20 1SZ', 51.754926, -1.256179, 2237, 'Oxfordshire County Council', 'CTY', 2421, 'Oxford City Council', 'DIS' ], [ 'OX16 9UP', 52.038712, -1.346397, 2237, 'Oxfordshire County Council', 'CTY', 2419, 'Cherwell District Council', 'DIS', 151767, "Banbury, Calthorpe & Easington", "DIW" ], - [ 'RG9 6TL', 51.561705, -0.868388, 2217, 'Buckinghamshire County Council', 'CTY'], + [ 'RG9 6TL', 51.561705, -0.868388, 2217, 'Buckinghamshire Council', 'CTY'], [ 'PE9 2GX', 52.656144, -0.502566, 2232, 'Lincolnshire County Council', 'CTY'], [ 'LE15 0GJ', 52.670447, -0.727877, 2600, 'Rutland County Council', 'CTY'], [ 'BR1 3UH', 51.4021, 0.01578, 2482, 'Bromley Council', 'LBO' ], diff --git a/t/app/controller/report_new.t b/t/app/controller/report_new.t index b85bae43a..236edda62 100644 --- a/t/app/controller/report_new.t +++ b/t/app/controller/report_new.t @@ -53,7 +53,7 @@ for my $body ( { area_id => 2333, name => 'Hart Council' }, { area_id => 2535, name => 'Sandwell Borough Council' }, { area_id => 1000, name => 'Highways England' }, - { area_id => 2217, name => 'Buckinghamshire County Council' }, + { area_id => 2217, name => 'Buckinghamshire Council' }, { area_id => 2232, name => 'Lincolnshire County Council' }, { area_id => 2237, name => 'Oxfordshire County Council' }, { area_id => 2600, name => 'Rutland County Council' }, diff --git a/t/cobrand/bucks.t b/t/cobrand/bucks.t index c231a5388..230a52f99 100644 --- a/t/cobrand/bucks.t +++ b/t/cobrand/bucks.t @@ -4,18 +4,34 @@ use FixMyStreet::Script::Reports; my $mech = FixMyStreet::TestMech->new; +# disable info logs for this test run +FixMyStreet::App->log->disable('info'); +END { FixMyStreet::App->log->enable('info'); } + my $body = $mech->create_body_ok(2217, 'Buckinghamshire', { - send_method => 'Open311', api_key => 'key', endpoint => 'endpoint', jurisdiction => 'fms' }); + send_method => 'Open311', api_key => 'key', endpoint => 'endpoint', jurisdiction => 'fms', can_be_devolved => 1 }); my $counciluser = $mech->create_user_ok('counciluser@example.com', name => 'Council User', from_body => $body); - -$mech->create_contact_ok(body_id => $body->id, category => 'Flytipping', email => "FLY"); +my $publicuser = $mech->create_user_ok('fmsuser@example.org', name => 'Simon Neil'); + +my $contact = $mech->create_contact_ok(body_id => $body->id, category => 'Flytipping', email => "FLY"); +$contact->set_extra_fields({ + code => 'road-placement', + datatype => 'singlevaluelist', + description => 'Is the fly-tip located on', + order => 100, + required => 'true', + variable => 'true', + values => [ + { key => 'road', name => 'The road' }, + { key => 'off-road', name => 'Off the road/on a verge' }, + ], +}); +$contact->update; $mech->create_contact_ok(body_id => $body->id, category => 'Potholes', email => "POT"); $mech->create_contact_ok(body_id => $body->id, category => 'Blocked drain', email => "DRA"); - -my $district = $mech->create_body_ok(2257, 'Chiltern'); -$mech->create_contact_ok(body_id => $district->id, category => 'Car Parks', email => "car\@chiltern"); -$mech->create_contact_ok(body_id => $district->id, category => 'Flytipping', email => "flytipping\@chiltern"); -$mech->create_contact_ok(body_id => $district->id, category => 'Graffiti', email => "graffiti\@chiltern"); +$mech->create_contact_ok(body_id => $body->id, category => 'Car Parks', email => "car\@chiltern", send_method => 'Email'); +$mech->create_contact_ok(body_id => $body->id, category => 'Graffiti', email => "graffiti\@chiltern", send_method => 'Email'); +$mech->create_contact_ok(body_id => $body->id, category => 'Flytipping (off-road)', email => "districts_flytipping", send_method => 'Email'); my $cobrand = Test::MockModule->new('FixMyStreet::Cobrand::Buckinghamshire'); $cobrand->mock('lookup_site_code', sub { @@ -33,6 +49,13 @@ FixMyStreet::override_config { flytipping => 'flytipping@example.org', flood => 'floods@example.org', } + }, + borough_email_addresses => { + buckinghamshire => { + districts_flytipping => [ + { email => "flytipping\@chiltern", areas => [ 2257 ] }, + ] + } } } }, sub { @@ -45,18 +68,20 @@ subtest 'cobrand displays council name' => sub { subtest 'cobrand displays correct categories' => sub { my $json = $mech->get_ok_json('/report/new/ajax?latitude=51.615559&longitude=-0.556903'); - is @{$json->{bodies}}, 2, 'Both Chiltern and Bucks returned'; + is @{$json->{bodies}}, 1, 'Bucks returned'; like $json->{category}, qr/Car Parks/, 'Car Parks displayed'; like $json->{category}, qr/Flytipping/, 'Flytipping displayed'; like $json->{category}, qr/Blocked drain/, 'Blocked drain displayed'; - unlike $json->{category}, qr/Graffiti/, 'Graffiti not displayed'; + like $json->{category}, qr/Graffiti/, 'Graffiti displayed'; + unlike $json->{category}, qr/Flytipping \(off-road\)/, 'Flytipping (off-road) not displayed'; $json = $mech->get_ok_json('/report/new/category_extras?latitude=51.615559&longitude=-0.556903'); - is @{$json->{bodies}}, 2, 'Still both Chiltern and Bucks returned'; + is @{$json->{bodies}}, 1, 'Still Bucks returned'; }; my ($report) = $mech->create_problems_for_body(1, $body->id, 'On Road', { category => 'Flytipping', cobrand => 'fixmystreet', latitude => 51.812244, longitude => -0.827363, + dt => DateTime->now()->subtract(minutes => 10), }); subtest 'flytipping on road sent to extra email' => sub { @@ -75,6 +100,7 @@ subtest 'flytipping on road sent to extra email' => sub { contributed_as => 'another_user', contributed_by => $counciluser->id, }, + dt => DateTime->now()->subtract(minutes => 9), }); subtest 'pothole on road not sent to extra email, only confirm sent' => sub { @@ -86,22 +112,38 @@ subtest 'pothole on road not sent to extra email, only confirm sent' => sub { is $report->external_id, 248, 'Report has right external ID'; }; -($report) = $mech->create_problems_for_body(1, $district->id, 'Off Road', { - category => 'Flytipping', cobrand => 'buckinghamshire', - latitude => 51.813173, longitude => -0.826741, -}); -subtest 'flytipping off road sent to extra email' => sub { + +# report made in Flytipping category off road should get moved to other category +subtest 'Flytipping not on a road gets recategorised' => sub { + $mech->log_in_ok($publicuser->email); + $mech->get_ok('/report/new?latitude=51.615559&longitude=-0.556903&category=Flytipping'); + $mech->submit_form_ok({ + with_fields => { + title => "Test Report", + detail => 'Test report details.', + category => 'Flytipping', + 'road-placement' => 'off-road', + } + }, "submit details"); + $mech->content_contains('Your issue is on its way to the council.'); + my $report = FixMyStreet::DB->resultset("Problem")->search(undef, { order_by => { -desc => 'id' } })->first; + ok $report, "Found the report"; + is $report->category, "Flytipping (off-road)", 'Report was recategorised correctly'; + + $mech->log_out_ok; +}; + +subtest 'Ex-district reports are sent to correct emails' => sub { FixMyStreet::Script::Reports::send(); + $mech->email_count_is(2); # one for council, one confirmation for user my @email = $mech->get_email; - is $email[0]->header('To'), 'Chiltern <flytipping@chiltern>'; - unlike $mech->get_text_body_from_email($email[1]), qr/Please note that Buckinghamshire County Council is not responsible/; - $report->discard_changes; - is $report->external_id, undef, 'Report has right external ID'; + is $email[0]->header('To'), 'Buckinghamshire <flytipping@chiltern>'; }; my ($report2) = $mech->create_problems_for_body(1, $body->id, 'Drainage problem', { category => 'Blocked drain', cobrand => 'fixmystreet', latitude => 51.812244, longitude => -0.827363, + dt => DateTime->now()->subtract(minutes => 8), }); subtest 'blocked drain sent to extra email' => sub { @@ -114,29 +156,6 @@ subtest 'blocked drain sent to extra email' => sub { $cobrand = FixMyStreet::Cobrand::Buckinghamshire->new(); -subtest 'Flytipping extra question used if necessary' => sub { - my $errors = { 'xroad-placement' => 'This field is required' }; - - $report->update({ bodies_str => $body->id }); - $cobrand->flytipping_body_fix($report, 'road', $errors); - is $errors->{'xroad-placement'}, 'This field is required', 'Error stays if sent to county'; - - $report->update({ bodies_str => $district->id }); - $report->discard_changes; # As e.g. ->bodies has been remembered. - $cobrand->flytipping_body_fix($report, 'road', $errors); - is $errors->{'xroad-placement'}, undef, 'Error removed if sent to district'; - - $report->update({ bodies_str => $body->id . ',' . $district->id }); - $report->discard_changes; # As e.g. ->bodies has been remembered. - $cobrand->flytipping_body_fix($report, 'road', $errors); - is $report->bodies_str, $body->id, 'Sent to both becomes sent to county on-road'; - - $report->update({ bodies_str => $district->id . ',' . $body->id }); - $report->discard_changes; # As e.g. ->bodies has been remembered. - $cobrand->flytipping_body_fix($report, 'off-road', $errors); - is $report->bodies_str, $district->id, 'Sent to both becomes sent to district off-road'; -}; - for my $test ( { desc => 'filters basic emails', diff --git a/t/open311/populate-service-list.t b/t/open311/populate-service-list.t index 40e124d03..59f8b7b65 100644 --- a/t/open311/populate-service-list.t +++ b/t/open311/populate-service-list.t @@ -35,7 +35,7 @@ $bromley->body_areas->create({ } ); my $bucks = FixMyStreet::DB->resultset('Body')->create({ - name => 'Buckinghamshire County Council', + name => 'Buckinghamshire Council', }); $bucks->body_areas->create({ area_id => 2217 diff --git a/templates/email/buckinghamshire/_email_color_overrides.html b/templates/email/buckinghamshire/_email_color_overrides.html index 672a1ae3b..0795fdc0c 100644 --- a/templates/email/buckinghamshire/_email_color_overrides.html +++ b/templates/email/buckinghamshire/_email_color_overrides.html @@ -1,9 +1,9 @@ [% -color_bucks_green = '#97c34b' -color_bucks_dark_green = '#547f35' -color_bucks_text = '#2e3137' -color_bucks_grey = '#eaeaea' +color_bucks_green = '#9FC63B' +color_bucks_dark_green = '#00642F' +color_bucks_text = '#3C3C3B' +color_bucks_grey = '#eeeeee' body_background_color = color_white @@ -19,8 +19,8 @@ secondary_column_background_color = color_white secondary_column_text_color = color_bucks_text column_divider_color = color_bucks_grey -logo_width = '88' -logo_height = '94' +logo_width = '100' +logo_height = '100' logo_file = "email-logo.png" header_background_color = color_white diff --git a/templates/web/buckinghamshire/about/faq-en-gb.html b/templates/web/buckinghamshire/about/faq-en-gb.html index c703b556a..20449abe2 100755 --- a/templates/web/buckinghamshire/about/faq-en-gb.html +++ b/templates/web/buckinghamshire/about/faq-en-gb.html @@ -8,34 +8,29 @@ <dt>What is this site?</dt> <dd>FixMyStreet Bucks is a site to allow people to make reports to - Buckinghamshire County Council, and view, or discuss local issues they’ve + Buckinghamshire Council, and view, or discuss local issues they’ve found, by simply locating them on a map.</dd> <dt>What sort of problems should I report with FixMyStreet?</dt> <dd>FixMyStreet Bucks is primarily for reporting things which are <strong>broken or damaged or dumped, and need fixing, or clearing</strong>, such as: <ul> + <li>Abandoned vehicles <li>Flooding + <li>Flytipping or litter <li>Grit bins <li>Rubbish or flytipping <li>Potholes + <li>Street cleaning, such as broken glass in a cycle lane <li>Street signs and traffic lights <li>Unlit lampposts </ul> - We may send some reports to the relevant District Council especially for: - <ul> - <li>Abandoned vehicles - <li>Flytipping or litter - <li>Streetcleaning, such as broken glass in a cycle lane - </ul> </dd> <dt>What isn’t FixMyStreet for?</dt> <dd>FixMyStreet is not a way of getting in touch with Buckinghamshire - County Council for all issues – please use this site only for problems - such as the above. We often route problem reports to the Parish and District - council, so using this site for other matters may result in a delay in - your report getting to the right department. + Council for all issues – please use this site only for problems + such as the above. <p><strong>You will need to contact the relevant authority directly for problems such as</strong>: <ul><li>Anti-social behaviour @@ -46,7 +41,7 @@ <li>Complaining about your neighbours <li>Joy riding, drug taking, animal cruelty, or other criminal activity should be reported to the Police Service. </ul> - <p>Complaints about Buckinghamshire County Council can be sent <a href="https://www.buckscc.gov.uk/services/contact-and-complaints/compliments-complaints-and-suggestions/">via this form</a>. + <p>Complaints about Buckinghamshire Council can be sent <a href="https://www.buckscc.gov.uk/services/contact-and-complaints/compliments-complaints-and-suggestions/">via this form</a>. </dd> <dt>How do I use the site?</dt> @@ -55,7 +50,7 @@ own by clicking on the map at the location of the problem.</dd> <dt>How are the problems solved?</dt> - <dd>They are reported to us at Buckinghamshire County Council who will + <dd>They are reported to us at Buckinghamshire Council who will resolve the problem the way we normally would.</dd> <dt>Is it free?</dt> diff --git a/templates/web/buckinghamshire/header_logo.html b/templates/web/buckinghamshire/header_logo.html index 2808d8782..39a298488 100644 --- a/templates/web/buckinghamshire/header_logo.html +++ b/templates/web/buckinghamshire/header_logo.html @@ -1,2 +1,2 @@ - <a href="http://www.buckscc.gov.uk/" id="site-logo"><strong>Buckinghamshire</strong> County Council</a> + <a href="http://www.buckscc.gov.uk/" id="site-logo"><strong>Buckinghamshire</strong> Council</a> <a href="/" id="report-cta" title="[%- loc('Report a problem') -%]">[%- loc('Report') -%]</a> diff --git a/templates/web/buckinghamshire/report/new/roads_message.html b/templates/web/buckinghamshire/report/new/roads_message.html index c195f6b52..3d9d95b31 100644 --- a/templates/web/buckinghamshire/report/new/roads_message.html +++ b/templates/web/buckinghamshire/report/new/roads_message.html @@ -1,19 +1,19 @@ <div id="js-roads-responsibility" class="box-warning hidden"> - <strong>Not maintained by Buckinghamshire County Council</strong> + <strong>Not maintained by Buckinghamshire Council</strong> <div id="js-not-council-road" class="hidden js-responsibility-message"> - <p>The selected road is not maintained by Buckinghamshire County Council; + <p>The selected road is not maintained by Buckinghamshire 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 id="js-not-council-road-other" class="hidden js-responsibility-message"> - <p>The selected road is not maintained by Buckinghamshire County Council, + <p>The selected road is not maintained by Buckinghamshire Council, but by a neighbouring council. Please move your pin slightly, to the other side of the border. </p> </div> <div id="js-not-council-road-he" class="hidden js-responsibility-message"> - <p>The selected road is not maintained by Buckinghamshire County Council, + <p>The selected road is not maintained by Buckinghamshire Council, but by Highways England. Please follow this link to <a class="js-update-coordinates" href="https://www.fixmystreet.com/report/new?latitude=[% latitude |html %]&longitude=[% longitude | html %]">FixMyStreet</a> to continue reporting your issue here. </p> diff --git a/templates/web/highwaysengland/header_extra.html b/templates/web/highwaysengland/header_extra.html index 0011e6285..d9e042da6 100644 --- a/templates/web/highwaysengland/header_extra.html +++ b/templates/web/highwaysengland/header_extra.html @@ -1,3 +1,4 @@ <link rel="stylesheet" href="https://use.typekit.net/lgn8iyw.css"> +<link rel="shortcut icon" href="/cobrands/highwaysengland/HE_Fav-144x144.jpg"> [% INCLUDE 'tracking_code.html' %] diff --git a/templates/web/highwaysengland/header_opengraph.html b/templates/web/highwaysengland/header_opengraph.html new file mode 100644 index 000000000..d5030ede8 --- /dev/null +++ b/templates/web/highwaysengland/header_opengraph.html @@ -0,0 +1,6 @@ + <meta property="og:url" content="[% c.cobrand.base_url %][% c.req.uri.path %]"> + <meta property="og:title" content="[% title || site_name %]"> + <meta property="og:site_name" content="[% site_name %]"> + [% IF c.req.uri.path == '/' %]<meta property="og:description" content="We carry out regular inspections and maintenance activities, but we also want to hear from you if you spot something wrong with our roads or any of the assets alongside them.">[% END %] + <meta property="og:type" content="website"> + [% INCLUDE 'header_opengraph_image.html' %] diff --git a/templates/web/highwaysengland/header_opengraph_image.html b/templates/web/highwaysengland/header_opengraph_image.html new file mode 100644 index 000000000..8284cd83f --- /dev/null +++ b/templates/web/highwaysengland/header_opengraph_image.html @@ -0,0 +1,13 @@ + [% IF problem.photo %] + [% photo = problem.photos.first %] + [% data = problem.get_first_image_og %] + <meta property="og:image" content="[% c.cobrand.base_url %][% photo.url_og %]"> + <meta property="og:image:type" content="[% data.content_type %]"> + <meta property="og:image:width" content="[% data.width %]"> + <meta property="og:image:height" content="[% data.height %]"> + [% ELSE %] + <meta property="og:image" content="[% c.cobrand.base_url %]/cobrands/highwaysengland/facebook-og-image.jpg"> + <meta property="og:image:type" content="image/jpeg"> + <meta property="og:image:width" content="1200"> + <meta property="og:image:height" content="630"> + [% END %] diff --git a/templates/web/highwaysengland/site-name.html b/templates/web/highwaysengland/site-name.html new file mode 100644 index 000000000..03c0091cd --- /dev/null +++ b/templates/web/highwaysengland/site-name.html @@ -0,0 +1 @@ +Highways England Report a problem diff --git a/web/cobrands/buckinghamshire/_colours.scss b/web/cobrands/buckinghamshire/_colours.scss index 9a5f36960..cf328b673 100644 --- a/web/cobrands/buckinghamshire/_colours.scss +++ b/web/cobrands/buckinghamshire/_colours.scss @@ -5,35 +5,69 @@ /* COLOURS */ -$menu-image: 'menu-black'; +$menu-image: 'menu-white'; -$bucks_green: #97c34b; -$bucks_dark_green: #547f35; +$bucks_indigo: #2C2D84; +$bucks_charcoal: #3C3C3B; +$bucks_grass_green: #9FC63B; +$bucks_orange: #ED7004; +$bucks_sky_blue: #006AB4; +$bucks_teal: #005961; +$bucks_green_five: #00642F; + +$bucks_links: #3640B4; +$bucks_active_link_bg: #FCBC00; + +$bucks_button_bg: #9FC63B; +$bucks_button_bg_hover: #93B837; + +$bucks_button_secondary_bg: #EEEEEE; +$bucks_button_secondary_bg_hover:#D9D9D9; + +$bucks_warning: #D92B38; +$bucks_warning_hover: #C72833; $g1: #2e3137; -$g2: #676973; +$g2: #6D6D6C; $g6: #eaeaea; $g7: #f1f1f1; $b3: #0d45a0; $b4: #74a9ff; -$primary: $bucks_dark_green; -$primary_b: $g1; -$primary_text: $g1; +$primary: $bucks_indigo; +$primary_b: $bucks_charcoal; +$primary_text: $bucks_charcoal; -$link-color: $b3; -$link-hover-color: $b3; +$link-color: $bucks_links; +$link-hover-color: #1065a3; $base_bg: white; -$base_fg: $g1; +$base_fg: $bucks_charcoal; $nav_background_colour: #fff; -$nav_colour: #000; +$nav_colour: $bucks_charcoal; $nav_hover_background_colour: #eee; -$col_click_map: $g1; -$col_click_map_dark: darken($g1, 10%); +$col_click_map: $bucks_charcoal; +$col_click_map_dark: darken($bucks_charcoal, 10%); + +$header-top-border-width: 0; +$header-top-border: 0; -$header-top-border-width: 5px; -$header-top-border: 5px solid $bucks_green; +@mixin bucks-button { + background-color: $bucks_button_bg; + border: 0; + border-radius: 0; + box-shadow: 0 2px 0 darken($bucks_button_bg, 10%); + color: $bucks_charcoal; + @extend %bold-font; + padding: 0.75em 1em; + font-size: 1em; + &:hover, + &:active, + &:focus { + color: $bucks_charcoal; + background-color: $bucks_button_bg_hover; + } +}
\ No newline at end of file diff --git a/web/cobrands/buckinghamshire/assets.js b/web/cobrands/buckinghamshire/assets.js index 8c3a47d9a..e11bf1a28 100644 --- a/web/cobrands/buckinghamshire/assets.js +++ b/web/cobrands/buckinghamshire/assets.js @@ -26,7 +26,7 @@ var defaults = { }, geometryName: 'msGeometry', srsName: "EPSG:27700", - body: "Buckinghamshire County Council", + body: "Buckinghamshire Council", strategy_class: OpenLayers.Strategy.FixMyStreet }; @@ -203,6 +203,30 @@ var non_bucks_types = [ "P", // HW: PRIVATE ]; +// Since Buckinghamshire went unitary, if the user selects an ex-district +// category we shouldn't enforce the road asset selection. +var ex_district_categories = [ + "Abandoned vehicles", + "Car Parks", + "Dog fouling", + "Flyposting", + "Flytipping", + "Graffiti", + "Parks/landscapes", + "Public toilets", + "Rubbish (refuse and recycling)", + "Street cleaning", + "Street nameplates" +]; + +function category_unselected_or_ex_district() { + var cat = $('select#form_category').val(); + if (cat === "-- Pick a category --" || cat === "Loading..." || OpenLayers.Util.indexOf(ex_district_categories, cat) != -1) { + return true; + } + return false; +} + // We show roads that Bucks are and aren't responsible for, and display a // message to the user if they click something Bucks don't maintain. var types_to_show = bucks_types.concat(non_bucks_types); @@ -287,34 +311,26 @@ fixmystreet.assets.add(defaults, { fixmystreet.body_overrides.allow_send(layer.fixmystreet.body); fixmystreet.body_overrides.remove_only_send(); fixmystreet.message_controller.road_found(layer, feature, function(feature) { + // If an ex-district category is selected, always allow report + // regardless of road ownership. + if (category_unselected_or_ex_district()) { + return true; + } if (OpenLayers.Util.indexOf(bucks_types, feature.attributes.feature_ty) != -1) { - var cat = $('select#form_category').val(); - if (cat === 'Flytipping') { - fixmystreet.body_overrides.only_send(layer.fixmystreet.body); - } return true; - } else { - return false; } + return false; }, msg_id); - - // Make sure Flytipping related things reset - $('#category_meta').show(); - $('#form_road-placement').attr('required', ''); }, not_found: function(layer) { - fixmystreet.body_overrides.do_not_send(layer.fixmystreet.body); + // If an ex-district category is selected, always allow report. fixmystreet.body_overrides.remove_only_send(); - fixmystreet.message_controller.road_not_found(layer); - - // If flytipping is picked, we don't want to ask the extra question - var cat = $('select#form_category').val(); - if (cat === 'Flytipping') { - $('#category_meta').hide(); - $('#form_road-placement').removeAttr('required'); + if (category_unselected_or_ex_district()) { + fixmystreet.body_overrides.allow_send(layer.fixmystreet.body); } else { - $('#category_meta').show(); + fixmystreet.body_overrides.do_not_send(layer.fixmystreet.body); + fixmystreet.message_controller.road_not_found(layer); } } }, @@ -327,18 +343,6 @@ fixmystreet.assets.add(defaults, { filter_value: types_to_show, }); -// As with the road found/not_found above, we want to change the destination -// depending upon the answer to the extra question shown when on a road -$("#problem_form").on("change", "#form_road-placement", function() { - if (this.value == 'road') { - fixmystreet.body_overrides.allow_send(defaults.body); - fixmystreet.body_overrides.only_send(defaults.body); - } else if (this.value == 'off-road') { - fixmystreet.body_overrides.do_not_send(defaults.body); - fixmystreet.body_overrides.remove_only_send(); - } -}); - fixmystreet.assets.add(defaults, { http_options: { params: { diff --git a/web/cobrands/buckinghamshire/base.scss b/web/cobrands/buckinghamshire/base.scss index ec3dd006c..0c7bb4bc2 100644 --- a/web/cobrands/buckinghamshire/base.scss +++ b/web/cobrands/buckinghamshire/base.scss @@ -5,45 +5,83 @@ @import "../sass/base"; -// Put the logo in place, and reveal the text alongside it -#site-logo { - @extend %normal-font; +.dev-site-notice { + display: none; +} - background: url(/cobrands/buckinghamshire/img/bucks-logo.png) 0 50% no-repeat; - background-size: 37px; - text-indent: 0; - padding-left: 47px; - padding-right: 7em; - line-height: 1.3em; - font-size: 0.875em; - margin: 9px 0; - color: black; - width: auto; - height: 37px; - - strong { - display: block; - @extend %bold-font; - } +.container { + padding: 0 20px; } -#report-cta { - border-color: #ddd; +h1 { + @extend %bold-font; + font-size: 2.625em; + line-height: 120%; +} + +h2 { + @extend %bold-font; + font-size: 1.75em; + line-height: 125%; +} + +h3 { + @extend %bold-font; + font-size: 1.5em; + line-height: 130%; +} + +h4 { + @extend %bold-font; + font-size: 1.3125em; + line-height: 135%; } #site-header { - border-bottom: solid 5px $g6; + background-color: $bucks_indigo; +} + +// Put the logo in place, and reveal the text alongside it +#site-logo { + @extend %normal-font; + @include svg-background-image("img/bucks-logo"); + background-position: 0 50%; + background-repeat: no-repeat; + background-size: 178px 45px; + padding: 12px 1em; + width: 178px; + height: 45px +} + +#report-cta { + @include bucks-button(); } .nav-menu { - a:hover, span.report-a-problem-btn:hover { - color: $bucks_green; + padding: 0 1.5em; + background-color: #6D6D6C; + a, span { + background-color: transparent; + border-bottom: 1px solid lighten($bucks_charcoal, 5%); + color: #fff; + font-size: 16px; + padding: 1em 0; + @extend %bold-font; + &:hover, + &:active, + &:focus { + color: #999; + background-color: transparent; } + &:visited { + color: #fff; + } + } } // Set the default font colour everywhere body, .content { - color: $g1; + color: $primary_text; } // Make sure the numbers on the front page have the correct font weight @@ -60,7 +98,6 @@ dl dt { @extend %bold-font; } - #front-main { text-align: left; @@ -69,11 +106,40 @@ dl dt { } #postcodeForm { - color: white; margin-top: 1em; + background: #fff; + div input#sub { + @include bucks-button(); + box-shadow: 0; + } + } + a#geolocate_link { + background: transparent; + color: $bucks_links; + padding: 0; + font-size: 1em; + &:hover, + &:active, + &:focus { + background: transparent; + color: $link-hover-color; + text-decoration: underline; + } } } +.btn-primary, .green-btn, .btn--primary { + background: none; + color: $bucks_charcoal !important; + @include bucks-button(); + &:hover, + &:active, + &:focus { + background-image: none; + color: $bucks_charcoal !important; + } +} + a#geolocate_link { color: $b3; } @@ -86,3 +152,13 @@ label { #highways .segmented-control--radio input:checked + label.btn { color: $g7 !important; } + +.description_tips { + .do { + color: $bucks_green_five; + } + + .dont { + color: $bucks_warning; + } +} diff --git a/web/cobrands/buckinghamshire/images/email-logo.png b/web/cobrands/buckinghamshire/images/email-logo.png Binary files differindex fab2eb153..61bbe707b 100644 --- a/web/cobrands/buckinghamshire/images/email-logo.png +++ b/web/cobrands/buckinghamshire/images/email-logo.png diff --git a/web/cobrands/buckinghamshire/img/bucks-logo.png b/web/cobrands/buckinghamshire/img/bucks-logo.png Binary files differindex fab2eb153..6b9a0e86e 100644 --- a/web/cobrands/buckinghamshire/img/bucks-logo.png +++ b/web/cobrands/buckinghamshire/img/bucks-logo.png diff --git a/web/cobrands/buckinghamshire/img/bucks-logo.svg b/web/cobrands/buckinghamshire/img/bucks-logo.svg new file mode 100644 index 000000000..f4114bfeb --- /dev/null +++ b/web/cobrands/buckinghamshire/img/bucks-logo.svg @@ -0,0 +1,29 @@ +<svg width="178" height="45" viewBox="0 0 178 45" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M53.8973 7.85547H58.7869C61.4861 7.85547 62.5813 9.2705 62.5813 10.8261C62.5813 12.1587 61.8544 13.0165 61.0306 13.3557C61.8253 13.6416 62.9351 14.4703 62.9351 16.0549C62.9351 18.129 61.3165 19.5295 58.9371 19.5295H53.8924V7.85547H53.8973ZM58.5058 12.5415C59.8724 12.5415 60.4103 11.9697 60.4103 11.0393C60.4103 10.1137 59.7367 9.57096 58.6221 9.57096H56.0586V12.5415H58.5058ZM56.0586 17.8043H58.5397C59.9402 17.8043 60.7011 17.1986 60.7011 16.0016C60.7011 14.9549 60.0081 14.2667 58.4234 14.2667H56.0634V17.8043H56.0586Z" fill="white"/> +<path d="M71.4398 16.9949C71.4398 17.8381 71.4398 18.8315 71.4592 19.5245H69.419C69.3851 19.2871 69.3705 18.7976 69.3512 18.4293C68.8617 19.321 68.067 19.7281 66.8894 19.7281C65.2175 19.7281 64.006 18.7685 64.006 16.5248V10.8599H66.0995V16.1032C66.0995 17.1161 66.4048 17.9932 67.5824 17.9932C68.8472 17.9932 69.356 17.3002 69.356 15.449V10.8599H71.4495V16.9949H71.4398Z" fill="white"/> +<path d="M80.3952 16.777C80.0754 18.2259 79.0625 19.7282 76.6008 19.7282C74.0033 19.7282 72.5883 17.9061 72.5883 15.2408C72.5883 12.7257 74.0905 10.6516 76.7219 10.6516C79.489 10.6516 80.3322 12.6433 80.4 13.6707H78.3405C78.1709 12.8953 77.7154 12.3235 76.6686 12.3235C75.4184 12.3235 74.7302 13.4042 74.7302 15.1729C74.7302 17.0629 75.4377 18.0757 76.6541 18.0757C77.5651 18.0757 78.0691 17.5523 78.326 16.777H80.3952Z" fill="white"/> +<path d="M83.4337 14.6688C84.1072 13.8062 85.5077 12.241 86.7047 10.855H89.1326L86.0311 14.16L89.4378 19.5245H87.0439L84.6161 15.512L83.4337 16.6412V19.5245H81.3402V7.19629H83.4337V14.6688Z" fill="white"/> +<path d="M89.7722 7.19629H91.8657V9.23647H89.7722V7.19629ZM89.7722 10.855H91.8657V19.5245H89.7722V10.855Z" fill="white"/> +<path d="M93.5182 13.0308C93.5182 12.2894 93.5182 11.514 93.4988 10.8549H95.5244C95.5729 11.0924 95.6068 11.7999 95.6068 12.0713C95.9121 11.4655 96.6196 10.6562 98.1897 10.6562C99.8955 10.6562 101.073 11.7708 101.073 13.9951V19.5293H98.9796V14.2326C98.9796 13.1519 98.592 12.3766 97.4435 12.3766C96.2126 12.3766 95.6068 13.1713 95.6068 14.7705V19.5293H93.5133V13.0308H93.5182Z" fill="white"/> +<path d="M110.334 18.5649C110.334 21.3465 109.253 23.0523 106.132 23.0523C103.147 23.0523 102.454 21.3805 102.352 20.3386H104.48C104.683 21.0461 105.241 21.4871 106.215 21.4871C107.921 21.4871 108.274 20.4403 108.274 18.6376V18.1336C107.819 18.9575 107.077 19.4469 105.745 19.4469C103.52 19.4469 102.154 17.6248 102.154 15.2115C102.154 12.4638 103.792 10.6562 105.934 10.6562C107.484 10.6562 108.129 11.3832 108.279 11.8387C108.299 11.5528 108.347 11.0148 108.362 10.8598H110.353C110.339 11.5334 110.339 12.5123 110.339 13.3555V18.5649H110.334ZM106.321 17.7363C107.906 17.7363 108.347 16.6411 108.347 15.037C108.347 13.3991 108.008 12.3572 106.375 12.3572C105.144 12.3572 104.315 13.3361 104.315 15.1243C104.315 16.7283 105.139 17.7363 106.321 17.7363Z" fill="white"/> +<path d="M114.026 7.19629V11.9696C114.429 11.3299 115.156 10.6563 116.59 10.6563C118.126 10.6563 119.493 11.548 119.493 13.9807V19.5294H117.419V14.3005C117.419 13.0503 116.949 12.3767 115.849 12.3767C114.434 12.3767 114.026 13.3895 114.026 14.8724V19.5294H111.933V7.20114H114.026V7.19629Z" fill="white"/> +<path d="M127.978 17.402C127.978 18.2113 128.046 19.3065 128.094 19.5245H126.088C126.02 19.3404 125.972 18.8994 125.952 18.5796C125.647 19.1029 125.022 19.7281 123.437 19.7281C121.363 19.7281 120.486 18.3615 120.486 17.0288C120.486 15.071 122.056 14.16 124.6 14.16H125.914V13.5688C125.914 12.8952 125.696 12.1877 124.397 12.1877C123.248 12.1877 123.016 12.711 122.895 13.3507H120.888C121.005 11.9357 121.901 10.637 124.479 10.6515C126.738 10.666 127.973 11.5625 127.973 13.5882V17.402H127.978ZM125.938 15.4781H124.804C123.268 15.4781 122.594 15.9336 122.594 16.9125C122.594 17.62 123.064 18.1967 123.995 18.1967C125.715 18.1967 125.933 17.0143 125.933 15.7349V15.4781H125.938Z" fill="white"/> +<path d="M129.611 13.0841C129.611 12.3427 129.611 11.5818 129.592 10.8598H131.598C131.632 11.0778 131.666 11.6206 131.685 11.9889C132.107 11.2959 132.834 10.6562 134.133 10.6562C135.363 10.6562 136.105 11.2959 136.425 12.0567C136.914 11.3153 137.69 10.6562 139.124 10.6562C140.607 10.6562 141.872 11.5479 141.872 13.8449V19.5293H139.812V14.0969C139.812 13.2343 139.507 12.362 138.397 12.362C137.249 12.362 136.778 13.1713 136.778 14.5718V19.5293H134.719V14.1648C134.719 13.2052 134.467 12.3766 133.338 12.3766C132.209 12.3766 131.685 13.1519 131.685 14.7027V19.5293H129.611V13.0841Z" fill="white"/> +<path d="M144.794 16.9609C144.997 17.7363 145.603 18.1772 146.596 18.1772C147.609 18.1772 147.997 17.7896 147.997 17.1838C147.997 16.5248 147.609 16.2534 146.243 15.919C143.529 15.2599 143.054 14.4168 143.054 13.2198C143.054 11.955 143.946 10.6562 146.427 10.6562C148.923 10.6562 149.834 12.0374 149.921 13.2392H147.915C147.832 12.8321 147.541 12.1585 146.345 12.1585C145.4 12.1585 145.114 12.5995 145.114 13.0502C145.114 13.5396 145.419 13.7916 146.882 14.1454C149.683 14.785 150.139 15.7494 150.139 17.0287C150.139 18.4777 149.01 19.728 146.529 19.728C144.014 19.728 142.938 18.4971 142.734 16.9609H144.794Z" fill="white"/> +<path d="M153.158 7.19629V11.9696C153.56 11.3299 154.287 10.6563 155.722 10.6563C157.258 10.6563 158.624 11.548 158.624 13.9807V19.5294H156.55V14.3005C156.55 13.0503 156.08 12.3767 154.98 12.3767C153.56 12.3767 153.158 13.3895 153.158 14.8724V19.5294H151.065V7.20114H153.158V7.19629Z" fill="white"/> +<path d="M160.243 7.19629H162.336V9.23647H160.243V7.19629ZM160.243 10.855H162.336V19.5245H160.243V10.855Z" fill="white"/> +<path d="M163.969 13.2004C163.969 12.2215 163.969 11.4946 163.95 10.8549H166.01C166.044 11.0585 166.058 11.8678 166.058 12.459C166.465 11.4122 167.425 10.6708 168.893 10.6562V12.6819C167.139 12.6625 166.058 13.2876 166.058 15.5992V19.5293H163.965V13.2004H163.969Z" fill="white"/> +<path d="M171.122 15.6285C171.122 16.9272 171.781 18.0563 173.08 18.0563C174.194 18.0563 174.548 17.5475 174.786 16.995H176.894C176.574 18.0757 175.629 19.7282 173.012 19.7282C170.211 19.7282 169.014 17.5669 169.014 15.3086C169.014 12.6288 170.381 10.6516 173.114 10.6516C176.031 10.6516 177.01 12.8275 177.01 14.887C177.01 15.1729 177.01 15.3765 176.976 15.6285H171.122ZM174.897 14.2958C174.878 13.1328 174.374 12.1878 173.094 12.1878C171.81 12.1878 171.292 13.0649 171.171 14.2958H174.897Z" fill="white"/> +<path d="M63.5796 34.1014C63.0902 36.2094 61.5055 37.7456 58.69 37.7456C55.0652 37.7456 53.3109 35.1287 53.3109 31.8092C53.3109 28.6205 55.0991 25.7517 58.7917 25.7517C61.7623 25.7517 63.2598 27.4866 63.5796 29.4444H61.3892C61.0839 28.417 60.3764 27.506 58.7045 27.506C56.4608 27.506 55.5692 29.5316 55.5692 31.7414C55.5692 33.8155 56.3784 36.0107 58.7724 36.0107C60.4781 36.0107 61.0839 34.93 61.3892 34.1062H63.5796V34.1014Z" fill="white"/> +<path d="M72.6222 33.2386C72.6222 35.8215 71.1054 37.7939 68.3868 37.7939C65.7554 37.7939 64.2193 35.87 64.2193 33.2725C64.2193 30.6411 65.7894 28.7173 68.4886 28.7173C71.0037 28.7173 72.6222 30.5249 72.6222 33.2386ZM66.3467 33.2532C66.3467 35.0074 67.1414 36.122 68.4401 36.122C69.7534 36.122 70.4803 35.0268 70.4803 33.2725C70.4803 31.402 69.7534 30.3892 68.4062 30.3892C67.122 30.3892 66.3467 31.3681 66.3467 33.2532Z" fill="white"/> +<path d="M81.1221 35.0608C81.1221 35.904 81.1221 36.8974 81.1415 37.5904H79.1013C79.0674 37.3529 79.0529 36.8635 79.0335 36.4952C78.544 37.3869 77.7493 37.7939 76.5717 37.7939C74.8999 37.7939 73.6884 36.8344 73.6884 34.5907V28.9209H75.7818V34.1691C75.7818 35.1819 76.0871 36.0591 77.2647 36.0591C78.5295 36.0591 79.0383 35.3661 79.0383 33.5101V28.9209H81.1318V35.0608H81.1221Z" fill="white"/> +<path d="M82.7746 31.0967C82.7746 30.3552 82.7746 29.5799 82.7552 28.9208H84.7808C84.8293 29.1583 84.8632 29.8658 84.8632 30.1372C85.1685 29.5314 85.876 28.7173 87.4462 28.7173C89.1519 28.7173 90.3295 29.8319 90.3295 32.0562V37.5903H88.2361V32.2936C88.2361 31.213 87.8484 30.4376 86.6999 30.4376C85.469 30.4376 84.8632 31.2324 84.8632 32.8316V37.5903H82.7698V31.0967H82.7746Z" fill="white"/> +<path d="M99.2171 34.8426C98.8973 36.2916 97.8845 37.7939 95.4227 37.7939C92.8252 37.7939 91.4102 35.9718 91.4102 33.3065C91.4102 30.7914 92.9124 28.7173 95.5438 28.7173C98.3109 28.7173 99.1541 30.709 99.2219 31.7364H97.1624C96.9928 30.961 96.5373 30.3843 95.4905 30.3843C94.2403 30.3843 93.5521 31.465 93.5521 33.2338C93.5521 35.1237 94.2596 36.1365 95.476 36.1365C96.387 36.1365 96.891 35.6132 97.1479 34.8378H99.2171V34.8426Z" fill="white"/> +<path d="M100.215 25.2622H102.309V27.3024H100.215V25.2622ZM100.215 28.921H102.309V37.5904H100.215V28.921Z" fill="white"/> +<path d="M106.035 25.2622H103.942V37.5904H106.035V25.2622Z" fill="white"/> +<path d="M22.5 0C10.1815 0 0.038768 10.1136 0 22.4273L1.18242 22.4322C1.23088 11.3493 9.83739 2.29216 20.7361 1.52649C21.3176 1.47803 21.9088 1.4538 22.5 1.4538C34.1256 1.4538 43.551 10.8793 43.551 22.5048C43.551 29.3426 40.2897 35.4146 35.245 39.2575C32.6815 41.2104 29.6527 42.5867 26.3574 43.1973C25.5869 43.3427 24.8018 43.4444 24.0023 43.4977C23.508 43.5317 23.0088 43.5511 22.5048 43.5511C22.5 43.5511 22.4951 43.5511 22.4855 43.5511V43.5704V43.5801C21.8652 43.5656 20.9057 43.4784 20.896 43.0083C20.8863 42.6206 21.1819 42.3056 21.4678 42.0827C21.8506 41.7823 22.3013 41.569 22.7471 41.38C23.1736 41.1959 23.6097 41.0311 24.0507 40.876C24.1913 40.8276 24.3318 40.7694 24.4384 40.6725C24.6032 40.5223 24.6613 40.2703 24.5499 40.0716C24.4239 39.839 24.1573 39.7033 23.9247 39.6015C22.9797 39.1993 18.376 39.2817 17.7994 39.2914H17.7412C17.7606 39.2963 23.0185 39.8826 23.0234 40.2025C23.0331 40.5271 19.2629 41.2637 19.195 43.6044C19.1756 44.2392 19.8686 44.4379 20.1352 44.5299C21.0607 44.8449 21.4726 44.9758 22.4322 45H22.4855H22.5048H22.9798C23.3141 45 23.6437 44.9855 23.9683 44.9661C24.3803 44.9418 24.7825 44.8934 25.1847 44.8401C36.282 43.4977 45.0048 33.9414 45.0048 22.5048C45 10.1572 34.8428 0 22.5 0Z" fill="white"/> +<path d="M21.4533 30.9368L22.185 30.5976C22.185 30.5976 14.3539 22.3012 1.15334 24.3366L0.0678406 24.4577C0.576671 29.0323 2.47146 33.3404 5.50506 36.8005C8.53866 40.2605 12.556 42.7126 17.024 43.8175L17.3729 42.4122C9.566 40.4883 3.59573 34.2612 1.88509 26.556C4.15787 26.0569 11.7855 25.0538 21.4533 30.9368Z" fill="white"/> +<path d="M42.2523 20.4306C42.2135 20.3676 42.2087 20.2271 42.2475 20.1786C42.3832 20.0139 42.3492 19.8685 42.2378 19.728C42.1311 19.5971 42.0536 19.4614 42.0633 19.2773C42.0682 19.2094 42.0197 19.098 41.9664 19.0738C41.7774 18.9768 41.7822 18.8121 41.7871 18.6328C41.7919 18.5116 41.7435 18.3808 41.7677 18.2645C41.8404 17.9059 41.4333 17.9252 41.3606 17.6781C41.3509 17.6442 41.2831 17.6296 41.2395 17.6103C41.2298 17.6054 41.2104 17.6103 41.2007 17.6054C41.0311 17.5279 40.8566 17.4649 40.6919 17.368C40.5756 17.3001 40.4835 17.1984 40.3769 17.1111C40.2315 16.7622 40.217 16.7525 39.9359 16.7671C39.7518 16.4133 39.6015 16.738 39.4319 16.8058C39.398 16.7574 39.3786 16.6895 39.335 16.6653C39.2042 16.5878 39.1896 16.3261 38.9909 16.3794C38.8213 16.423 38.7002 16.4181 38.6275 16.234C38.613 16.2001 38.5645 16.1758 38.5306 16.1565C38.3852 16.0741 38.2398 15.9965 38.0557 15.8948C37.794 15.9772 37.479 16.0692 37.227 16.1516C37.0768 16.1468 36.9314 16.0983 36.8926 16.1419C36.723 16.3503 36.5776 16.5781 36.4419 16.8107C36.345 16.9706 36.0446 17.0287 35.9283 16.9027C35.8217 16.9512 35.7247 17.0239 35.623 17.0384C35.4921 17.0578 35.4534 17.1257 35.4001 17.242C35.3322 17.397 35.2401 17.6006 35.1093 17.649C34.8379 17.7556 34.8767 18.0755 34.6683 18.2306C34.6005 18.279 34.5762 18.3856 34.5472 18.4971C34.5859 18.5165 34.6392 18.531 34.6441 18.5552C34.7119 18.8024 35.119 18.783 35.0511 19.1416C35.0269 19.2579 35.0705 19.3887 35.0705 19.5099C35.0657 19.6892 35.0608 19.854 35.2547 19.9509C35.308 19.98 35.3564 20.0866 35.3516 20.1544C35.3419 20.3386 35.4243 20.4694 35.526 20.6002C35.6375 20.7408 35.6714 20.8862 35.5357 21.0509C35.497 21.0994 35.5018 21.2399 35.5406 21.3029C35.6617 21.5065 35.8168 21.6906 35.6084 21.9426C35.5697 21.9911 35.589 22.0977 35.5794 22.1897C35.4146 22.1558 35.3564 22.243 35.3564 22.403C35.3564 22.4466 35.3225 22.5144 35.2886 22.529C35.0705 22.621 35.0996 22.8246 35.0802 23.0087C35.0705 23.0814 35.0414 23.1832 34.9978 23.2122C35.1044 23.3479 35.2595 23.4933 35.4873 23.3479C35.5212 23.3237 35.652 23.377 35.6666 23.4158C35.7344 23.6726 36.4419 24.2444 36.6649 24.2347C37.0089 24.2202 37.3433 24.0118 37.6971 24.1621C37.6777 24.826 37.6437 25.8 37.6001 26.2361C37.5662 26.5899 37.4935 26.8758 37.4111 27.1084C35.652 27.0406 33.5392 27.1424 31.3585 27.6609C31.3003 27.5203 31.2616 27.3604 31.2422 27.1763C31.1986 26.6965 31.1743 25.5868 31.1598 24.952C31.1986 24.952 31.247 24.9374 31.2906 24.9326C31.3876 24.9277 31.9012 24.9617 32.0757 24.8599C32.1145 24.9374 32.1387 24.9907 32.1484 25.0053C32.2792 25.0246 32.4004 25.0004 32.4634 25.0586C32.57 25.1506 32.633 25.141 32.7299 25.0586C32.7881 25.0101 32.8801 24.9956 32.9528 24.9616C33.0158 24.9374 33.1176 24.9229 33.1321 24.8744C33.2 24.6515 33.418 24.6467 33.5537 24.5352C33.6361 24.4674 33.704 24.3801 33.7766 24.3026C33.8106 24.2687 33.8348 24.2202 33.8784 24.2008C34.1692 24.0797 34.3194 23.8713 34.2855 23.5321C34.2709 23.3916 34.3048 23.2801 34.4502 23.2171C34.4551 23.2171 34.4551 23.2122 34.4599 23.2122C34.5035 23.1783 34.5326 23.0766 34.5423 23.0087C34.5665 22.8246 34.5375 22.621 34.7507 22.529C34.7846 22.5144 34.8185 22.4466 34.8185 22.403C34.8185 22.243 34.8767 22.1607 35.0414 22.1897C35.0511 22.0928 35.0317 21.9911 35.0705 21.9426C35.274 21.6954 35.119 21.5113 34.9978 21.3029C34.9591 21.2399 34.9542 21.0994 34.993 21.0509C35.1287 20.8862 35.0948 20.7408 34.9833 20.6002C34.8815 20.4694 34.7992 20.3386 34.8088 20.1544C34.8137 20.0866 34.7652 19.9751 34.7071 19.9509C34.5181 19.854 34.5229 19.6892 34.5278 19.5099C34.5278 19.3887 34.4842 19.2579 34.5084 19.1416C34.5762 18.783 34.174 18.8024 34.1013 18.5552C34.0916 18.5262 34.0432 18.5116 34.0044 18.4971C33.9996 18.4922 33.9899 18.4922 33.985 18.4874C33.9753 18.4825 33.9559 18.4874 33.9463 18.4825C33.7766 18.405 33.6022 18.342 33.4374 18.2451C33.3211 18.1772 33.229 18.0755 33.1224 17.9883C32.977 17.6393 32.9625 17.6296 32.6814 17.6442C32.4973 17.2904 32.3471 17.6151 32.1775 17.683C32.1435 17.6345 32.1242 17.5666 32.0805 17.5424C31.9497 17.4649 31.94 17.2032 31.7413 17.2565C31.5717 17.3001 31.4506 17.2953 31.3779 17.1111C31.3633 17.0772 31.3149 17.053 31.281 17.0336C31.1356 16.9512 30.9853 16.8737 30.806 16.7719C30.5444 16.8543 30.2294 16.9464 29.9774 17.0287C29.8272 17.0239 29.6818 16.9754 29.643 17.0191C29.4734 17.2274 29.328 17.4552 29.1923 17.6878C29.0954 17.8477 28.7901 17.9059 28.6787 17.7799C28.572 17.8283 28.4751 17.901 28.3734 17.9156C28.2425 17.9349 28.2037 18.0028 28.1504 18.1191C28.0826 18.2742 27.9905 18.4777 27.8597 18.5262C27.5883 18.6328 27.6222 18.9526 27.4187 19.1077C27.3024 19.1949 27.3072 19.442 27.2249 19.5971C27.1715 19.6989 27.0746 19.7861 26.9777 19.8346C26.7984 19.9218 26.7499 19.9945 26.8178 20.198C26.8372 20.2659 26.8759 20.3337 26.8711 20.3967C26.842 20.6196 26.7887 20.8425 26.7596 21.0655C26.7548 21.08 26.7548 21.0994 26.7548 21.1139C26.7015 21.4774 26.6482 21.8408 26.6191 22.2043C26.6094 22.3448 26.653 22.495 26.6918 22.6356C26.7548 22.8633 26.9002 23.4206 27.0165 23.4206C27.1861 23.4206 27.3266 23.4448 27.2345 23.7017C27.4526 23.7211 27.5641 23.8422 27.6949 24.0021C27.8064 24.1427 27.9711 24.4141 28.257 24.2299C28.2764 24.2202 28.3152 24.2251 28.354 24.2396C28.3927 24.2541 28.4315 24.2784 28.4364 24.2977C28.5042 24.5546 29.2117 25.1264 29.4346 25.1167C29.6818 25.107 30.3117 24.9956 30.743 24.952C30.7237 25.6062 30.6897 26.7304 30.6413 27.2102C30.617 27.4719 30.5686 27.6948 30.5153 27.8886C29.8514 28.0825 29.1923 28.3151 28.5333 28.601C27.3024 29.1341 25.994 29.7447 24.6855 30.3795C24.5983 30.1953 24.5062 29.89 24.4578 29.3715C24.419 28.9596 24.3948 27.9807 24.3851 27.4622C24.4772 27.4573 24.9133 27.4864 25.0587 27.3992C25.0926 27.4622 25.1168 27.5058 25.1217 27.5252C25.2331 27.5397 25.3397 27.5203 25.393 27.5688C25.4851 27.6463 25.5384 27.6366 25.6257 27.5688C25.679 27.5252 25.7565 27.5155 25.8195 27.4864C25.8728 27.467 25.9649 27.4525 25.9746 27.4137C26.0376 27.2296 26.2217 27.2247 26.338 27.1278C26.4059 27.0697 26.464 26.997 26.5319 26.934C26.5609 26.9049 26.5852 26.8613 26.6191 26.8516C26.8711 26.7498 27.0019 26.5754 26.9728 26.2943C26.9583 26.178 26.9874 26.0859 27.1134 26.0326C27.157 26.0132 27.1812 25.9163 27.1909 25.8533C27.2103 25.6982 27.1861 25.5286 27.3702 25.4511C27.3993 25.4366 27.4284 25.3784 27.4284 25.3445C27.4284 25.2088 27.4768 25.1409 27.6222 25.17C27.6319 25.0876 27.6125 25.0053 27.6465 24.9616C27.8015 24.7775 27.7191 24.637 27.6222 24.4916C27.5883 24.4819 27.5544 24.4722 27.5398 24.4819C27.2927 24.6321 27.1473 24.4044 27.0552 24.2929C26.9438 24.1572 26.8469 24.0554 26.6579 24.0409C26.7354 23.8277 26.6191 23.8083 26.4689 23.8083C26.3671 23.8083 26.2411 23.3382 26.1878 23.1492C26.1539 23.0329 26.1151 22.9069 26.1248 22.7858C26.1539 22.4805 26.1975 22.18 26.2459 21.8747C26.2411 21.8699 26.2363 21.8699 26.2314 21.8699C26.1296 21.8166 26.0473 21.7245 25.96 21.6518C25.834 21.3611 25.8243 21.3514 25.5772 21.3659C25.4173 21.0703 25.2913 21.3417 25.1411 21.3998C25.112 21.3562 25.0926 21.3029 25.0587 21.2835C24.9424 21.2205 24.9375 21.0025 24.7631 21.0412C24.6177 21.0752 24.5111 21.0752 24.4481 20.9201C24.4384 20.891 24.3948 20.8716 24.3657 20.8571C24.2397 20.7892 24.1137 20.7214 23.9538 20.639C23.726 20.7069 23.4547 20.7892 23.2366 20.8522C23.1057 20.8474 22.9797 20.8038 22.9458 20.8474C22.8004 21.0219 22.6744 21.2108 22.5533 21.4047C22.4709 21.5404 22.2092 21.5888 22.1075 21.4822C22.0154 21.521 21.933 21.584 21.8409 21.5937C21.7246 21.6082 21.6956 21.6664 21.6471 21.7633C21.5889 21.8941 21.5114 22.0637 21.3999 22.1074C21.1625 22.1946 21.1964 22.466 21.0171 22.592C20.9153 22.6646 20.9202 22.8682 20.8475 23.0039C20.8039 23.0862 20.7167 23.1638 20.6294 23.2025C20.4744 23.2752 20.4307 23.3382 20.4889 23.503C20.5083 23.5563 20.5422 23.6193 20.5325 23.6678C20.5083 23.8568 20.4647 24.0409 20.4356 24.2299C20.3871 24.5449 20.3387 24.8647 20.3096 25.1797C20.2999 25.296 20.3387 25.422 20.3726 25.5432C20.4259 25.7322 20.5519 26.2022 20.6537 26.2022C20.8039 26.2022 20.9202 26.2216 20.8427 26.4348C21.0317 26.4542 21.1286 26.5511 21.24 26.6868C21.337 26.8031 21.4823 27.0309 21.7246 26.8758C21.7537 26.8564 21.87 26.9001 21.8797 26.934C21.9378 27.1472 22.5533 27.627 22.7471 27.6173C22.9894 27.6076 23.6485 27.4913 24.0119 27.4719C23.9926 28.0098 23.9683 28.9935 23.9247 29.4054C23.8472 30.1711 23.6824 30.6606 23.5516 30.9368C18.5069 33.4519 13.7772 36.1705 13.7772 36.1705H14.9354C16.1372 35.4969 23.5128 31.9787 28.7174 30.772C33.922 29.5654 41.0989 30.2438 41.0989 30.2438L41.8695 27.69C41.8695 27.69 40.5223 27.3362 38.4724 27.1714C38.3658 26.9146 38.2737 26.5996 38.2398 26.2071C38.1962 25.737 38.172 24.6515 38.1574 24.0118C38.235 24.0167 38.3125 24.0409 38.39 24.07C38.4385 24.0894 38.4966 24.0603 38.5548 24.0554C38.6517 24.0506 38.7729 24.007 38.8407 24.0506C39.0249 24.1717 39.1702 24.0845 39.3399 23.9828C39.3786 24.0603 39.4029 24.1136 39.4125 24.133C39.5385 24.1524 39.6597 24.1281 39.7275 24.1814C39.8341 24.2735 39.8971 24.2638 39.9941 24.1814C40.0571 24.133 40.1443 24.1184 40.217 24.0845C40.28 24.0603 40.3817 24.0458 40.3963 23.9973C40.4641 23.7744 40.6822 23.7695 40.8179 23.6581C40.9003 23.5902 40.9681 23.503 41.0408 23.4255C41.0747 23.3916 41.0989 23.3431 41.1426 23.3237C41.4333 23.2025 41.5836 22.9942 41.5496 22.655C41.5351 22.5144 41.569 22.4078 41.7144 22.34C41.7629 22.3157 41.7968 22.2043 41.8065 22.1267C41.8307 21.9426 41.8016 21.7391 42.0148 21.647C42.0488 21.6324 42.0827 21.5646 42.0827 21.521C42.0827 21.3611 42.1408 21.2787 42.3056 21.3078C42.3153 21.2108 42.2959 21.1091 42.3347 21.0606C42.5285 20.8183 42.3734 20.6342 42.2523 20.4306Z" fill="white"/> +<path d="M22.5194 13.7287C22.5 13.6899 22.2916 13.6851 22.1802 13.6463C22.1269 13.6269 21.9476 13.4816 21.9088 13.4476C21.9088 13.4476 21.8506 13.3992 21.8313 13.3992C21.807 13.3992 21.6326 13.6851 21.6762 13.7238C21.7198 13.7578 21.8506 13.7772 22.0202 13.7772C22.1705 13.782 22.4079 13.7965 22.5 13.7772C22.5194 13.7626 22.5291 13.7481 22.5194 13.7287Z" fill="white"/> +<path d="M21.6132 13.8159C21.5986 13.7868 21.5889 13.7529 21.5792 13.7238C21.5744 13.7044 21.5695 13.6851 21.5647 13.6705C21.5162 13.5687 21.4242 13.4815 21.3757 13.4379C21.366 13.4427 21.3515 13.4476 21.3418 13.4476C21.2982 13.4524 21.2642 13.4331 21.2594 13.4088C21.2546 13.3798 21.2885 13.3555 21.3321 13.3507C21.3612 13.3458 21.3854 13.3555 21.3999 13.3701L21.7246 13.2731C21.6762 13.2538 21.5211 13.1956 21.3176 13.2101C21.0607 13.2247 20.8039 13.3507 20.6294 13.4524C20.6149 13.4573 20.5955 13.4621 20.581 13.4621C20.4307 13.4864 17.7654 13.748 17.5861 13.7141C17.402 13.6802 16.4909 13.4864 16.4279 13.341C16.3649 13.2005 17.0967 11.4026 17.15 11.296C17.4068 10.7435 17.6831 9.95847 17.6831 9.95847C17.6831 9.95847 18.061 8.17514 17.7606 8.10245C17.7024 8.08791 17.5619 8.66943 17.4117 8.7712C17.276 8.86327 17.2372 8.24783 17.0579 8.39806C16.961 8.48044 16.9804 9.04257 16.8641 8.84873C16.52 8.27206 16.5782 9.06196 16.5006 9.12011C15.9143 9.54656 15.4103 10.0506 15.3085 10.2492C15.0614 10.6515 14.5089 12.1925 14.3975 12.1876C14.16 12.1828 12.0617 9.91486 11.9163 9.82279C11.7758 9.72587 10.7727 8.52405 10.5885 7.51608C10.54 7.2544 10.3123 7.25925 10.3947 8.58221C10.4044 8.74697 9.91975 7.9183 9.85675 8.19452C9.78406 8.51436 10.0942 8.81481 9.98761 9.06196C9.96822 9.11042 9.60477 8.8972 9.60477 9.06681C9.60477 10.4237 11.1022 13.3846 12.2265 13.8111C13.3507 14.2375 10.4092 14.6688 10.259 14.7318C10.1088 14.7948 9.99729 14.9596 10.196 15.0032C10.6224 15.071 10.1621 15.3278 10.322 15.4393C10.4044 15.4587 10.4964 15.4635 10.5497 15.5217C10.603 15.5992 10.3898 15.8754 10.477 15.9142C10.5643 15.953 11.8388 15.5071 12.3525 15.449C12.6044 15.4199 13.404 15.6283 14.0825 15.449C14.7609 15.2697 16.205 14.4313 16.5103 14.378C16.8156 14.3247 20.833 14.0194 20.833 14.0194C21.1867 14.0533 21.6277 13.9467 21.7246 13.9177C21.6907 13.9225 21.6471 13.8837 21.6132 13.8159Z" fill="white"/> +</svg> diff --git a/web/cobrands/buckinghamshire/layout.scss b/web/cobrands/buckinghamshire/layout.scss index 4f511bcd9..5df31f9e2 100644 --- a/web/cobrands/buckinghamshire/layout.scss +++ b/web/cobrands/buckinghamshire/layout.scss @@ -14,25 +14,11 @@ $header-top-border: false; // There is, but we want to do it ourselves // Don't want larger logo on mappage. body.frontpage, body.twothirdswidthpage, body.fullwidthpage, body.authpage { // Display the BCC logo and header correctly - #site-logo { - background-size: 60px; - text-indent: 80px; - padding-left: 0; - line-height: 92px; - font-size: 24px; - margin: 0; - height: 92px; - strong { - display: inline; - } - } .nav-wrapper { - margin-top: 102px; // 92px image header + 10px top border - border-bottom: solid 5px $g6; - border-top: solid 5px $g6; + margin-top: 69px; + background-color: #6D6D6C; } - #main-nav { float: left; min-height: 3em; @@ -44,35 +30,53 @@ body.frontpage, body.twothirdswidthpage, body.fullwidthpage, body.authpage { } .nav-menu { + margin-left: 160px; a, span { display: inline-block; // So the chevrons appear correctly - font-size: 1.2em; padding: 0.5em 0.75em; margin: 0; } } } +#nav-link { + color: #fff; +} + // Stop the 'report a problem' button being red on non-map pages .nav-menu--main a.report-a-problem-btn { - color: $b3; + color: #fff; background-color: transparent; } .nav-menu--main a.report-a-problem-btn:hover { + color: #fff !important; background-color: transparent; } .nav-menu { + background-color: transparent; span { - color: $g1; + font-size: 1em; + color: #fff; + &:hover, + &:active, + &:focus { + color: #fff; + } } a { - text-decoration: underline; - color: $b3; - &:hover { + font-size: 1em; + text-decoration: none; + color: #fff; + &:hover, + &:active, + &:focus { text-decoration: underline; background-color: transparent; - color: $g1; + color: #fff; + } + &:visited { + color: #fff; } } } @@ -108,16 +112,16 @@ body.twothirdswidthpage .content .sticky-sidebar aside { line-height: 1.25em; max-width: 640px; } + + .form-hint { + color: $g1; + } } body.mappage { // Mappage header is 10px top border, 50px logo (7px 37px 6px), 4px bottom border - #site-header { - height: 50px; - border-bottom: solid 4px $g6; - } #site-logo { - margin: 7px 0 6px; + padding-top: 6px; } #main-nav { @@ -129,23 +133,27 @@ body.mappage { z-index: 10; // Clickable a, span { - font-size: 1.1em; padding: 0.5em; } a.report-a-problem-btn { color: white; - background-color: $bucks_dark_green; - padding: 0.25em; - margin: 0.25em; - &:hover { - background-color: lighten($bucks_green, 5%); - }; + @include bucks-button(); + margin: 0.15em 0.25em 0; + padding: 0.5em 1em; + position: relative; + top: -5px; + &:hover, + &:active, + &:focus { + color: $bucks_charcoal !important; + text-decoration: none; + } } } .big-green-banner { display: block; - background-color: $bucks_green; + background-color: $bucks_grass_green; text-transform: none; } } diff --git a/web/cobrands/fixmystreet-uk-councils/council_validation_rules.js b/web/cobrands/fixmystreet-uk-councils/council_validation_rules.js index b7956dad7..171f200ff 100644 --- a/web/cobrands/fixmystreet-uk-councils/council_validation_rules.js +++ b/web/cobrands/fixmystreet-uk-councils/council_validation_rules.js @@ -20,7 +20,7 @@ body_validation_rules = { maxlength: 1750 } }, - 'Buckinghamshire County Council': confirm_validation_rules, + 'Buckinghamshire Council': confirm_validation_rules, 'Cheshire East Council': confirm_validation_rules, 'Hounslow Borough Council': confirm_validation_rules, 'Lincolnshire County Council': confirm_validation_rules, diff --git a/web/cobrands/highways/assets.js b/web/cobrands/highways/assets.js index 2f00834d2..1607bc193 100644 --- a/web/cobrands/highways/assets.js +++ b/web/cobrands/highways/assets.js @@ -66,7 +66,6 @@ fixmystreet.assets.add(defaults, { $('#highways').remove(); if ( !fixmystreet.assets.selectedFeature() ) { add_highways_warning(feature.attributes.ROA_NUMBER); - $('#category_meta').empty(); } }, not_found: function(layer) { @@ -83,6 +82,11 @@ fixmystreet.assets.add(defaults, { function regenerate_category(he_flag) { if (!fixmystreet.reporting_data) return; + fixmystreet.body_overrides.location = { + latitude: $('#fixmystreet\\.latitude').val(), + longitude: $('#fixmystreet\\.longitude').val() + }; + // Restart the category dropdown from the original data (not all of it as // we keep subcategories the same) var select = $(fixmystreet.reporting_data.category).filter('select'); @@ -103,7 +107,6 @@ function regenerate_category(he_flag) { } function he_selected() { - fixmystreet.body_overrides.location = null; fixmystreet.body_overrides.only_send('Highways England'); fixmystreet.body_overrides.allow_send('Highways England'); regenerate_category(true); @@ -111,14 +114,10 @@ function he_selected() { } function non_he_selected() { - fixmystreet.body_overrides.location = { - latitude: $('#fixmystreet\\.latitude').val(), - longitude: $('#fixmystreet\\.longitude').val() - }; fixmystreet.body_overrides.remove_only_send(); fixmystreet.body_overrides.do_not_send('Highways England'); - $(fixmystreet).trigger('report_new:highways_change'); regenerate_category(false); + $(fixmystreet).trigger('report_new:highways_change'); } function add_highways_warning(road_name) { diff --git a/web/cobrands/highwaysengland/HE_Fav-144x144.jpg b/web/cobrands/highwaysengland/HE_Fav-144x144.jpg Binary files differnew file mode 100644 index 000000000..733c1e470 --- /dev/null +++ b/web/cobrands/highwaysengland/HE_Fav-144x144.jpg diff --git a/web/cobrands/highwaysengland/assets.js b/web/cobrands/highwaysengland/assets.js index d8ba8b6ac..8e50ed396 100644 --- a/web/cobrands/highwaysengland/assets.js +++ b/web/cobrands/highwaysengland/assets.js @@ -63,9 +63,15 @@ fixmystreet.assets.add(defaults, { found: function(layer, feature) { // If the road isn't in area 7 then we want to show the not found message. fixmystreet.message_controller.road_found(layer, feature, function(feature) { - $('#js-top-message').show(); - $('#form_category_row').show(); - return feature.attributes.area_name === 'Area 7'; + if (feature.attributes.area_name === 'Area 7') { + $('#js-top-message').show(); + $('#form_category_row').show(); + return true; + } else { + $('#js-top-message').hide(); + $('#form_category_row').hide(); + return false; + } }, '#js-not-area7-road'); }, not_found: function(layer) { diff --git a/web/cobrands/highwaysengland/facebook-og-image.jpg b/web/cobrands/highwaysengland/facebook-og-image.jpg Binary files differnew file mode 100644 index 000000000..cb8583d52 --- /dev/null +++ b/web/cobrands/highwaysengland/facebook-og-image.jpg diff --git a/web/js/map-wmts-buckinghamshire.js b/web/js/map-wmts-buckinghamshire.js index ae44cdf13..bcdadcdd5 100644 --- a/web/js/map-wmts-buckinghamshire.js +++ b/web/js/map-wmts-buckinghamshire.js @@ -1,5 +1,5 @@ /* - * Maps for FMS using Buckinghamshire County Council's WMTS tile server + * Maps for FMS using Buckinghamshire Council's WMTS tile server */ fixmystreet.maps.layer_bounds = new OpenLayers.Bounds( |