aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perllib/FixMyStreet/Cobrand/Buckinghamshire.pm95
-rw-r--r--perllib/FixMyStreet/Cobrand/Lincolnshire.pm123
-rw-r--r--perllib/FixMyStreet/Cobrand/UKCouncils.pm98
-rw-r--r--perllib/FixMyStreet/DB/Result/Problem.pm2
-rw-r--r--perllib/FixMyStreet/Map/Lincolnshire.pm21
-rw-r--r--perllib/Open311/GetServiceRequests.pm2
-rw-r--r--t/map/tests.t1
-rw-r--r--t/open311/getservicerequests.t21
-rw-r--r--templates/email/lincolnshire/_council_reference.html4
-rw-r--r--templates/email/lincolnshire/_council_reference.txt2
-rw-r--r--templates/email/lincolnshire/confirm_report_sent.html1
-rw-r--r--templates/email/lincolnshire/confirm_report_sent.txt1
-rw-r--r--templates/web/base/alert/choose.html1
-rw-r--r--templates/web/base/questionnaire/creator_fixed.html2
-rwxr-xr-xtemplates/web/base/reports/body.html2
-rw-r--r--templates/web/base/tokens/confirm_problem.html4
-rw-r--r--templates/web/buckinghamshire/tokens/_confirm_problem_council_id.html2
-rw-r--r--templates/web/buckinghamshire/tokens/confirm_problem.html44
-rw-r--r--templates/web/fixmystreet.com/footer_extra_js.html1
-rw-r--r--templates/web/lincolnshire/around/intro.html2
-rw-r--r--templates/web/lincolnshire/contact/_footer.html1
-rw-r--r--templates/web/lincolnshire/footer.html23
-rw-r--r--templates/web/lincolnshire/front/footer-marketing.html0
-rw-r--r--templates/web/lincolnshire/header_extra.html5
-rw-r--r--templates/web/lincolnshire/header_site.html8
-rw-r--r--templates/web/lincolnshire/report/new/inline-tips.html12
-rw-r--r--templates/web/lincolnshire/report/new/top_message.html0
-rw-r--r--templates/web/lincolnshire/tokens/_confirm_problem_council_id.html2
-rw-r--r--templates/web/lincolnshire/tracking_code.html17
-rw-r--r--web/cobrands/buckinghamshire/js.js12
-rw-r--r--web/cobrands/fixmystreet-uk-councils/roadworks.js20
-rw-r--r--web/cobrands/fixmystreet/assets.js10
-rw-r--r--web/cobrands/lincolnshire/_colours.scss48
-rw-r--r--web/cobrands/lincolnshire/assets.js231
-rw-r--r--web/cobrands/lincolnshire/base.scss170
-rw-r--r--web/cobrands/lincolnshire/favicon.icobin0 -> 3638 bytes
-rw-r--r--web/cobrands/lincolnshire/images/site-logo.pngbin0 -> 4969 bytes
-rw-r--r--web/cobrands/lincolnshire/images/site-logo.svg1
-rw-r--r--web/cobrands/lincolnshire/layout.scss125
-rw-r--r--web/cobrands/lincolnshire/roadworks.js42
40 files changed, 1015 insertions, 141 deletions
diff --git a/perllib/FixMyStreet/Cobrand/Buckinghamshire.pm b/perllib/FixMyStreet/Cobrand/Buckinghamshire.pm
index f02ee9e51..783a565f1 100644
--- a/perllib/FixMyStreet/Cobrand/Buckinghamshire.pm
+++ b/perllib/FixMyStreet/Cobrand/Buckinghamshire.pm
@@ -4,11 +4,6 @@ use parent 'FixMyStreet::Cobrand::UKCouncils';
use strict;
use warnings;
-use LWP::Simple;
-use URI;
-use Try::Tiny;
-use JSON::MaybeXS;
-
sub council_area_id { return 2217; }
sub council_area { return 'Buckinghamshire'; }
sub council_name { return 'Buckinghamshire County Council'; }
@@ -336,85 +331,23 @@ sub categories_restriction {
return $rs->search( [ { 'body_areas.area_id' => 2217 }, { category => 'Flytipping' } ], { join => { body => 'body_areas' } });
}
-sub lookup_site_code {
- my $self = shift;
- my $row = shift;
- my $buffer = shift || 200; # metres
-
- my ($x, $y) = $row->local_coords;
- my ($w, $s, $e, $n) = ($x-$buffer, $y-$buffer, $x+$buffer, $y+$buffer);
-
- my $uri = URI->new("https://tilma.mysociety.org/mapserver/bucks");
- $uri->query_form(
- REQUEST => "GetFeature",
- SERVICE => "WFS",
- SRSNAME => "urn:ogc:def:crs:EPSG::27700",
- TYPENAME => "Whole_Street",
- VERSION => "1.1.0",
- outputformat => "geojson",
- BBOX => "$w,$s,$e,$n"
- );
-
- my $response = get($uri);
-
- my $j = JSON->new->utf8->allow_nonref;
- try {
- $j = $j->decode($response);
- } catch {
- # There was either no asset found, or an error with the WFS
- # call - in either case let's just proceed without the USRN.
- return '';
- };
-
- # We have a list of features, and we want to find the one closest to the
- # report location.
- my $site_code = '';
- my $nearest;
-
- # There are only certain features we care about, the rest can be ignored.
- my @valid_types = ( "2", "3A", "3B", "4A", "4B", "HE", "HWOA", "HWSA", "P" );
- my %valid_types = map { $_ => 1 } @valid_types;
-
- for my $feature ( @{ $j->{features} } ) {
+sub lookup_site_code_config { {
+ buffer => 200, # metres
+ url => "https://tilma.mysociety.org/mapserver/bucks",
+ srsname => "urn:ogc:def:crs:EPSG::27700",
+ typename => "Whole_Street",
+ property => "site_code",
+ accept_feature => sub {
+ my $feature = shift;
+
+ # There are only certain features we care about, the rest can be ignored.
+ my @valid_types = ( "2", "3A", "3B", "4A", "4B", "HE", "HWOA", "HWSA", "P" );
+ my %valid_types = map { $_ => 1 } @valid_types;
my $type = $feature->{properties}->{feature_ty};
- next unless $valid_types{$type};
-
- # We shouldn't receive anything aside from these two geometry types, but belt and braces.
- next unless $feature->{geometry}->{type} eq 'MultiLineString' || $feature->{geometry}->{type} eq 'LineString';
- my @coordinates = @{ $feature->{geometry}->{coordinates} };
- if ( $feature->{geometry}->{type} eq 'MultiLineString') {
- # The coordinates are stored as a list of lists, so flatten 'em out
- @coordinates = map { @{ $_ } } @coordinates;
- }
-
- # If any of this feature's points are closer than those we've seen so
- # far then use the site_code from this feature.
- for my $coords ( @coordinates ) {
- my ($fx, $fy) = @$coords;
- my $distance = $self->_distance($x, $y, $fx, $fy);
- if ( !defined $nearest || $distance < $nearest ) {
- $site_code = $feature->{properties}->{site_code};
- $nearest = $distance;
- }
- }
+ return $valid_types{$type};
}
+} }
- return $site_code;
-}
-
-
-=head2 _distance
-
-Returns the cartesian distance between two coordinates.
-This is not a general-purpose distance function, it's intended for use with
-fairly nearby coordinates in EPSG:27700 where a spheroid doesn't need to be
-taken into account.
-
-=cut
-sub _distance {
- my ($self, $ax, $ay, $bx, $by) = @_;
- return sqrt( (($ax - $bx) ** 2) + (($ay - $by) ** 2) );
-}
1;
diff --git a/perllib/FixMyStreet/Cobrand/Lincolnshire.pm b/perllib/FixMyStreet/Cobrand/Lincolnshire.pm
new file mode 100644
index 000000000..431314333
--- /dev/null
+++ b/perllib/FixMyStreet/Cobrand/Lincolnshire.pm
@@ -0,0 +1,123 @@
+package FixMyStreet::Cobrand::Lincolnshire;
+use parent 'FixMyStreet::Cobrand::UKCouncils';
+
+use strict;
+use warnings;
+
+use LWP::Simple;
+use URI;
+use Try::Tiny;
+use JSON::MaybeXS;
+
+sub council_area_id { return 2232; }
+sub council_area { return 'Lincolnshire'; }
+sub council_name { return 'Lincolnshire County Council'; }
+sub council_url { return 'lincolnshire'; }
+sub is_two_tier { 1 }
+
+sub enable_category_groups { 1 }
+sub send_questionnaires { 0 }
+sub report_sent_confirmation_email { 1 }
+
+sub admin_user_domain { 'lincolnshire.gov.uk' }
+
+sub enter_postcode_text {
+ my ($self) = @_;
+ return 'Enter a Lincolnshire postcode, street name and area, or check an existing report number';
+}
+
+
+sub base_url {
+ my $self = shift;
+ return $self->next::method() if FixMyStreet->config('STAGING_SITE');
+ return 'https://fixmystreet.lincolnshire.gov.uk';
+}
+
+sub contact_email {
+ my $self = shift;
+ return join( '@', 'confirm_support', 'lincolnshire.gov.uk' );
+}
+
+
+sub example_places {
+ return ( 'LN1 1YL', 'Orchard Street, Lincoln' );
+}
+
+sub disambiguate_location {
+ my $self = shift;
+ my $string = shift;
+ return {
+ %{ $self->SUPER::disambiguate_location() },
+ town => 'Lincolnshire',
+ centre => '53.1128371079972,-0.237920757894981',
+ span => '0.976148231905086,1.17860658530345',
+ bounds => [ 52.6402179235688, -0.820651304784901, 53.6163661554738, 0.357955280518546 ],
+ };
+}
+
+
+sub open311_config {
+ my ($self, $row, $h, $params) = @_;
+
+ 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);
+}
+
+sub lookup_site_code_config { {
+ buffer => 200, # metres
+ url => "https://tilma.mysociety.org/mapserver/lincs",
+ srsname => "urn:ogc:def:crs:EPSG::27700",
+ typename => "NSG",
+ property => "Site_Code",
+ accept_feature => sub { 1 }
+} }
+
+
+sub categories_restriction {
+ my ($self, $rs) = @_;
+ # Lincolnshire is a two-tier council, but don't want to display
+ # all district-level categories on their cobrand - just a couple.
+ return $rs->search( { -or => [
+ 'body.name' => "Lincolnshire County Council",
+
+ # District categories:
+ 'me.category' => { -in => [
+ 'Street nameplates',
+ 'Bench/cycle rack/litter bin/planter',
+ ] },
+ ] } );
+}
+
+sub map_type { 'Lincolnshire' }
+
+sub pin_colour {
+ my ( $self, $p, $context ) = @_;
+ my $ext_status = $p->get_extra_metadata('external_status_code');
+ return 'yellow' if $p->state eq 'confirmed' && $ext_status && $ext_status eq '0135';
+ return 'red' if $p->state eq 'confirmed';
+ return 'green' if $p->is_fixed || $p->is_closed;
+ return 'grey' if $p->state eq 'not responsible' || !$self->owns_problem( $p );
+ return 'yellow';
+}
+
+1;
diff --git a/perllib/FixMyStreet/Cobrand/UKCouncils.pm b/perllib/FixMyStreet/Cobrand/UKCouncils.pm
index 25f809d8c..72f6ff89e 100644
--- a/perllib/FixMyStreet/Cobrand/UKCouncils.pm
+++ b/perllib/FixMyStreet/Cobrand/UKCouncils.pm
@@ -6,6 +6,10 @@ use warnings;
use Carp;
use URI::Escape;
+use LWP::Simple;
+use URI;
+use Try::Tiny;
+use JSON::MaybeXS;
sub is_council {
1;
@@ -222,4 +226,98 @@ sub prefill_report_fields_for_inspector { 1 }
sub social_auth_disabled { 1 }
+=head2 lookup_site_code
+
+Reports made via FMS.com or the app probably won't have a site code
+value (required for Confirm integrations) 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.
+
+NB this requires the cobrand to implement `lookup_site_code_config` -
+see Buckinghamshire or Lincolnshire for an example.
+
+
+=cut
+
+sub lookup_site_code {
+ my $self = shift;
+ my $row = shift;
+ my $buffer = shift;
+
+ my $cfg = $self->lookup_site_code_config;
+
+ $buffer ||= $cfg->{buffer}; # metres
+ my ($x, $y) = $row->local_coords;
+ my ($w, $s, $e, $n) = ($x-$buffer, $y-$buffer, $x+$buffer, $y+$buffer);
+
+ my $uri = URI->new($cfg->{url});
+ $uri->query_form(
+ REQUEST => "GetFeature",
+ SERVICE => "WFS",
+ SRSNAME => $cfg->{srsname},
+ TYPENAME => $cfg->{typename},
+ VERSION => "1.1.0",
+ outputformat => "geojson",
+ BBOX => "$w,$s,$e,$n"
+ );
+
+ my $response = get($uri);
+
+ my $j = JSON->new->utf8->allow_nonref;
+ try {
+ $j = $j->decode($response);
+ } catch {
+ # There was either no asset found, or an error with the WFS
+ # call - in either case let's just proceed without the USRN.
+ return '';
+ };
+
+ # We have a list of features, and we want to find the one closest to the
+ # report location.
+ my $site_code = '';
+ my $nearest;
+
+ for my $feature ( @{ $j->{features} } ) {
+ next unless $cfg->{accept_feature}($feature);
+
+ # We shouldn't receive anything aside from these two geometry types, but belt and braces.
+ next unless $feature->{geometry}->{type} eq 'MultiLineString' || $feature->{geometry}->{type} eq 'LineString';
+
+ my @coordinates = @{ $feature->{geometry}->{coordinates} };
+ if ( $feature->{geometry}->{type} eq 'MultiLineString') {
+ # The coordinates are stored as a list of lists, so flatten 'em out
+ @coordinates = map { @{ $_ } } @coordinates;
+ }
+
+ # If any of this feature's points are closer than those we've seen so
+ # far then use the site_code from this feature.
+ for my $coords ( @coordinates ) {
+ my ($fx, $fy) = @$coords;
+ my $distance = $self->_distance($x, $y, $fx, $fy);
+ if ( !defined $nearest || $distance < $nearest ) {
+ $site_code = $feature->{properties}->{$cfg->{property}};
+ $nearest = $distance;
+ }
+ }
+ }
+
+ return $site_code;
+}
+
+
+=head2 _distance
+
+Returns the cartesian distance between two coordinates.
+This is not a general-purpose distance function, it's intended for use with
+fairly nearby coordinates in EPSG:27700 where a spheroid doesn't need to be
+taken into account.
+
+=cut
+sub _distance {
+ my ($self, $ax, $ay, $bx, $by) = @_;
+ return sqrt( (($ax - $bx) ** 2) + (($ay - $by) ** 2) );
+}
+
+
1;
diff --git a/perllib/FixMyStreet/DB/Result/Problem.pm b/perllib/FixMyStreet/DB/Result/Problem.pm
index f2d221fa4..76a6f72fb 100644
--- a/perllib/FixMyStreet/DB/Result/Problem.pm
+++ b/perllib/FixMyStreet/DB/Result/Problem.pm
@@ -759,7 +759,7 @@ sub defect_types {
# Note: this only makes sense when called on a problem that has been sent!
sub can_display_external_id {
my $self = shift;
- if ($self->external_id && $self->send_method_used && $self->to_body_named('Oxfordshire|Angus')) {
+ if ($self->external_id && $self->send_method_used && $self->to_body_named('Oxfordshire|Lincolnshire')) {
return 1;
}
return 0;
diff --git a/perllib/FixMyStreet/Map/Lincolnshire.pm b/perllib/FixMyStreet/Map/Lincolnshire.pm
new file mode 100644
index 000000000..7dbfe5d8e
--- /dev/null
+++ b/perllib/FixMyStreet/Map/Lincolnshire.pm
@@ -0,0 +1,21 @@
+# FixMyStreet:Map::Lincolnshire
+# More JavaScript, for street assets
+
+package FixMyStreet::Map::Lincolnshire;
+use base 'FixMyStreet::Map::FMS';
+
+use strict;
+
+sub map_javascript { [
+ '/vendor/OpenLayers/OpenLayers.wfs.js',
+ '/vendor/OpenLayers.Projection.OrdnanceSurvey.js',
+ '/js/map-OpenLayers.js',
+ '/js/map-bing-ol.js',
+ '/js/map-fms.js',
+ '/cobrands/fixmystreet-uk-councils/roadworks.js',
+ '/cobrands/fixmystreet/assets.js',
+ '/cobrands/lincolnshire/roadworks.js',
+ '/cobrands/lincolnshire/assets.js',
+] }
+
+1;
diff --git a/perllib/Open311/GetServiceRequests.pm b/perllib/Open311/GetServiceRequests.pm
index 2d15347fd..2d20c6246 100644
--- a/perllib/Open311/GetServiceRequests.pm
+++ b/perllib/Open311/GetServiceRequests.pm
@@ -158,7 +158,7 @@ sub create_problems {
{
user => $self->system_user,
external_id => $request_id,
- detail => $request->{description},
+ detail => $request->{description} || $request->{service_name} . ' problem',
title => $request->{title} || $request->{service_name} . ' problem',
anonymous => 0,
name => $self->system_user->name,
diff --git a/t/map/tests.t b/t/map/tests.t
index 5575eafbb..396601379 100644
--- a/t/map/tests.t
+++ b/t/map/tests.t
@@ -8,6 +8,7 @@ my $requires = {
'Bristol' => 'bristol/assets.js',
'Bromley' => 'bromley/assets.js',
'Buckinghamshire' => 'buckinghamshire/assets.js',
+ 'Lincolnshire' => 'lincolnshire/assets.js',
'FMS' => 'map-fms.js',
'Google' => 'map-google.js',
'GoogleOL' => 'map-google-ol.js',
diff --git a/t/open311/getservicerequests.t b/t/open311/getservicerequests.t
index 57f112e2f..0f87b4d5d 100644
--- a/t/open311/getservicerequests.t
+++ b/t/open311/getservicerequests.t
@@ -48,6 +48,20 @@ my $requests_xml = qq{<?xml version="1.0" encoding="utf-8"?>
<lat>51.4021</lat>
<long>0.01578</long>
</request>
+<request>
+<service_request_id>638346</service_request_id>
+<status>open</status>
+<status_notes>This is a note.</status_notes>
+<service_name>Sidewalk and Curb Issues</service_name>
+<service_code>sidewalks</service_code>
+<agency_responsible></agency_responsible>
+<service_notice></service_notice>
+<requested_datetime>2010-04-14T06:37:38-08:00</requested_datetime>
+<updated_datetime>2010-04-14T06:37:38-08:00</updated_datetime>
+<expected_datetime>2010-04-15T06:37:38-08:00</expected_datetime>
+<lat>51.4021</lat>
+<long>0.01578</long>
+</request>
</service_requests>
};
@@ -104,6 +118,13 @@ subtest 'basic parsing checks' => sub {
ok $p2->whensent, 'second problem marked sent';
is $p2->state, 'investigating', 'second problem correct state';
is $p2->category, 'Other', 'category falls back to Other';
+
+ my $p3 = FixMyStreet::DB->resultset('Problem')->search( { external_id => 638346 } )->first;
+ ok $p3, 'third problem found';
+ ok $p3->whensent, 'third problem marked sent';
+ is $p3->state, 'confirmed', 'second problem correct state';
+ is $p3->category, 'Sidewalk and Curb Issues', 'correct problem category';
+ is $p3->detail, 'Sidewalk and Curb Issues problem', 'problem detail based on category name';
};
subtest 'check problems not re-created' => sub {
diff --git a/templates/email/lincolnshire/_council_reference.html b/templates/email/lincolnshire/_council_reference.html
new file mode 100644
index 000000000..56944f954
--- /dev/null
+++ b/templates/email/lincolnshire/_council_reference.html
@@ -0,0 +1,4 @@
+[% IF problem.external_id ~%]
+<p style="[% p_style %]">The report's reference number is <strong>[% problem.external_id %]</strong>.
+ Please quote this if you need to contact the council about this report.</p>
+[%~ END %]
diff --git a/templates/email/lincolnshire/_council_reference.txt b/templates/email/lincolnshire/_council_reference.txt
new file mode 100644
index 000000000..3dd3f1e9f
--- /dev/null
+++ b/templates/email/lincolnshire/_council_reference.txt
@@ -0,0 +1,2 @@
+[% IF problem.external_id %]The report's reference number is [% problem.external_id %]. Please quote this if
+you need to contact the council about this report.[% END %]
diff --git a/templates/email/lincolnshire/confirm_report_sent.html b/templates/email/lincolnshire/confirm_report_sent.html
new file mode 100644
index 000000000..5a0c19f0d
--- /dev/null
+++ b/templates/email/lincolnshire/confirm_report_sent.html
@@ -0,0 +1 @@
+[% INCLUDE 'other-reported.html' %] \ No newline at end of file
diff --git a/templates/email/lincolnshire/confirm_report_sent.txt b/templates/email/lincolnshire/confirm_report_sent.txt
new file mode 100644
index 000000000..72fe01f6d
--- /dev/null
+++ b/templates/email/lincolnshire/confirm_report_sent.txt
@@ -0,0 +1 @@
+[% INCLUDE 'other-reported.txt' %] \ No newline at end of file
diff --git a/templates/web/base/alert/choose.html b/templates/web/base/alert/choose.html
index 50835e90c..6f1eb412f 100644
--- a/templates/web/base/alert/choose.html
+++ b/templates/web/base/alert/choose.html
@@ -1,3 +1,4 @@
+[% SET bodyclass = 'alertpage fullwidthpage' %]
[% INCLUDE 'header.html', title => loc('Local RSS feeds and email alerts') %]
<h1>[% loc('Local RSS feeds and email alerts') %]</h1>
diff --git a/templates/web/base/questionnaire/creator_fixed.html b/templates/web/base/questionnaire/creator_fixed.html
index bcd9a9514..83037ee3d 100644
--- a/templates/web/base/questionnaire/creator_fixed.html
+++ b/templates/web/base/questionnaire/creator_fixed.html
@@ -1,4 +1,4 @@
-[% INCLUDE 'header.html', title = loc('Confirmation') %]
+[% INCLUDE 'header.html', bodyclass = 'fullwidthpage', title = loc('Confirmation') %]
<form method="post" action="/questionnaire/submit" id="questionnaire">
<input type="hidden" name="problem" value="[% problem_id | html %]">
diff --git a/templates/web/base/reports/body.html b/templates/web/base/reports/body.html
index a630c2175..8be72d632 100755
--- a/templates/web/base/reports/body.html
+++ b/templates/web/base/reports/body.html
@@ -8,7 +8,7 @@
%]
[% END %]
-[% IF c.cobrand.moniker == 'oxfordshire' %]
+[% IF c.cobrand.moniker.match('oxfordshire|lincolnshire') %]
[% ward_text = 'View reports by division' %]
[% ELSIF c.cobrand.is_council %]
[% ward_text = loc( 'View reports by ward' ) %]
diff --git a/templates/web/base/tokens/confirm_problem.html b/templates/web/base/tokens/confirm_problem.html
index 57ba42a54..f74517c8a 100644
--- a/templates/web/base/tokens/confirm_problem.html
+++ b/templates/web/base/tokens/confirm_problem.html
@@ -6,8 +6,12 @@
[% IF c.cobrand.is_council %]
[% IF c.cobrand.owns_problem( report ) %]
+ [% TRY %]
+ [% INCLUDE 'tokens/_confirm_problem_council_id.html' %]
+ [% CATCH file %]
<h2>Your issue is on its way to the council.</h2>
<p>Your reference for this report is [% report.id %], please quote it in any enquiries.</p>
+ [% END %]
[% ELSE %]
<h2>Thank you for your report.</h2>
<p>
diff --git a/templates/web/buckinghamshire/tokens/_confirm_problem_council_id.html b/templates/web/buckinghamshire/tokens/_confirm_problem_council_id.html
new file mode 100644
index 000000000..458e37299
--- /dev/null
+++ b/templates/web/buckinghamshire/tokens/_confirm_problem_council_id.html
@@ -0,0 +1,2 @@
+<h2>Your issue is on its way to the council.</h2>
+<p>You will receive an email with a reference number for this report soon, please quote it in any enquiries.</p>
diff --git a/templates/web/buckinghamshire/tokens/confirm_problem.html b/templates/web/buckinghamshire/tokens/confirm_problem.html
deleted file mode 100644
index 9b3063b5e..000000000
--- a/templates/web/buckinghamshire/tokens/confirm_problem.html
+++ /dev/null
@@ -1,44 +0,0 @@
-[% INCLUDE 'header.html', bodyclass = 'fullwidthpage', title = loc('Confirmation') %]
-
-<div class="confirmation-header">
-
- <h1><a href="[% c.cobrand.base_url_for_report( report ) %][% report.url %]">[% report.title %]</a></h1>
-
- [% IF c.cobrand.is_council %]
- [% IF c.cobrand.owns_problem( report ) %]
- <h2>Your issue is on its way to the council.</h2>
- <p>You will receive an email with a reference number for this report soon, please quote it in any enquiries.</p>
- [% ELSE %]
- <h2>Thank you for your report.</h2>
- <p>
- We don&rsquo;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.base_url_for_report( report ) %][% report.url %]">FixMyStreet.com</a>.
- </p>
- [% END %]
-
- [% ELSE %]
- <h2>[% loc('Thank you for reporting this issue!') %]</h2>
- [% IF report.bodies_str %]
- <p>[% loc('It’s on its way to the council right now.') %]</p>
- [% END %]
-
- [% END %]
-
-[% TRY %][% INCLUDE 'tokens/_extras_confirm.html' %][% CATCH file %][% END %]
-
-</div>
-
-[% INCLUDE
- next_steps.html,
- just_interacted = 1,
- utm_content = 'problem confirmed',
- share_url = c.cobrand.base_url_for_report(report) _ report.url,
- twitter_comment = loc('I just reported a problem on @fixmystreet')
-%]
-
-[% INCLUDE 'footer.html' %]
diff --git a/templates/web/fixmystreet.com/footer_extra_js.html b/templates/web/fixmystreet.com/footer_extra_js.html
index c1ba95c25..c1d1b09b0 100644
--- a/templates/web/fixmystreet.com/footer_extra_js.html
+++ b/templates/web/fixmystreet.com/footer_extra_js.html
@@ -8,6 +8,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/lincolnshire/assets.js') );
scripts.push(
version('/vendor/OpenLayers.Projection.OrdnanceSurvey.js'),
);
diff --git a/templates/web/lincolnshire/around/intro.html b/templates/web/lincolnshire/around/intro.html
new file mode 100644
index 000000000..ed199f676
--- /dev/null
+++ b/templates/web/lincolnshire/around/intro.html
@@ -0,0 +1,2 @@
+<h1>Report, view, or discuss local problems</h1>
+<h2>(like potholes, broken paving slabs, or street lighting)</h2>
diff --git a/templates/web/lincolnshire/contact/_footer.html b/templates/web/lincolnshire/contact/_footer.html
new file mode 100644
index 000000000..7647f5df5
--- /dev/null
+++ b/templates/web/lincolnshire/contact/_footer.html
@@ -0,0 +1 @@
+[%# Disables display of email address on contact form. %] \ No newline at end of file
diff --git a/templates/web/lincolnshire/footer.html b/templates/web/lincolnshire/footer.html
new file mode 100644
index 000000000..69ab0b51e
--- /dev/null
+++ b/templates/web/lincolnshire/footer.html
@@ -0,0 +1,23 @@
+ </div><!-- .content role=main -->
+ </div><!-- .container -->
+ </div><!-- .table-cell -->
+
+ <div class="nav-wrapper">
+ <div class="container">
+ [% INCLUDE "main_nav.html" body_name=c.cobrand.council_area %]
+ </div>
+ </div>
+ </div> <!-- .wrapper -->
+
+ [% IF pagefooter %]
+ <div>
+ <footer role="contentinfo">
+ [% INCLUDE 'front/footer-marketing.html' %]
+ </footer>
+ </div>
+ [% END %]
+
+ [% INCLUDE 'common_footer_tags.html' %]
+
+</body>
+</html>
diff --git a/templates/web/lincolnshire/front/footer-marketing.html b/templates/web/lincolnshire/front/footer-marketing.html
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/templates/web/lincolnshire/front/footer-marketing.html
diff --git a/templates/web/lincolnshire/header_extra.html b/templates/web/lincolnshire/header_extra.html
new file mode 100644
index 000000000..8addc12e1
--- /dev/null
+++ b/templates/web/lincolnshire/header_extra.html
@@ -0,0 +1,5 @@
+<link href="https://fonts.googleapis.com/css?family=Roboto:400,700" rel="stylesheet">
+
+<link rel="shortcut icon" href="/cobrands/lincolnshire/favicon.ico" />
+
+[% INCLUDE 'tracking_code.html' %]
diff --git a/templates/web/lincolnshire/header_site.html b/templates/web/lincolnshire/header_site.html
new file mode 100644
index 000000000..ad49161f4
--- /dev/null
+++ b/templates/web/lincolnshire/header_site.html
@@ -0,0 +1,8 @@
+<header id="site-header" role="banner">
+ <div class="container">
+ <a href="/" id="site-logo">Lincolnshire County Council</a>
+ <a href="/" id="report-cta" title="Report a problem">Report</a>
+
+ <a href="#main-nav" id="nav-link">Main Navigation</a>
+ </div>
+</header> \ No newline at end of file
diff --git a/templates/web/lincolnshire/report/new/inline-tips.html b/templates/web/lincolnshire/report/new/inline-tips.html
new file mode 100644
index 000000000..316f183bb
--- /dev/null
+++ b/templates/web/lincolnshire/report/new/inline-tips.html
@@ -0,0 +1,12 @@
+<div class="description_tips" aria-label="Tips for successful reports">
+ <ul class="do">
+ <li>Be polite</li>
+ <li>Use exact locations</li>
+ <li>Say how long the issue’s been&nbsp;present</li>
+ </ul>
+ <ul class="dont">
+ <li>Don’t identify or accuse other&nbsp;people</li>
+ <li>Don’t include private contact details in the&nbsp;description</li>
+ </ul>
+</div>
+<small class="form-section-description">The information you provide here will be shared with external contractors.</small>
diff --git a/templates/web/lincolnshire/report/new/top_message.html b/templates/web/lincolnshire/report/new/top_message.html
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/templates/web/lincolnshire/report/new/top_message.html
diff --git a/templates/web/lincolnshire/tokens/_confirm_problem_council_id.html b/templates/web/lincolnshire/tokens/_confirm_problem_council_id.html
new file mode 100644
index 000000000..458e37299
--- /dev/null
+++ b/templates/web/lincolnshire/tokens/_confirm_problem_council_id.html
@@ -0,0 +1,2 @@
+<h2>Your issue is on its way to the council.</h2>
+<p>You will receive an email with a reference number for this report soon, please quote it in any enquiries.</p>
diff --git a/templates/web/lincolnshire/tracking_code.html b/templates/web/lincolnshire/tracking_code.html
new file mode 100644
index 000000000..42d88a817
--- /dev/null
+++ b/templates/web/lincolnshire/tracking_code.html
@@ -0,0 +1,17 @@
+[% IF c.config.BASE_URL == "https://www.fixmystreet.com" %]
+
+<!-- Google Tag Manager -->
+<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
+new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
+j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
+'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
+})(window,document,'script','dataLayer','GTM-MP7MF9');</script>
+<!-- End Google Tag Manager -->
+
+<!-- Google Tag Manager (noscript) -->
+<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MP7MF9"
+height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
+<!-- End Google Tag Manager (noscript) -->
+[% ELSE %]
+<!-- Tracking code not inserted as "[% c.config.BASE_URL %]" not "https://www.fixmystreet.com" -->
+[% END %]
diff --git a/web/cobrands/buckinghamshire/js.js b/web/cobrands/buckinghamshire/js.js
index ebbfe36e0..a5d4969d9 100644
--- a/web/cobrands/buckinghamshire/js.js
+++ b/web/cobrands/buckinghamshire/js.js
@@ -4,7 +4,15 @@ if (!fixmystreet.maps) {
return;
}
-fixmystreet.assets.add(fixmystreet.roadworks.layer_future);
-fixmystreet.assets.add(fixmystreet.roadworks.layer_planned);
+var org_id = '1016';
+var body = "Buckinghamshire County Council";
+fixmystreet.assets.add($.extend(true, {}, fixmystreet.roadworks.layer_future, {
+ http_options: { params: { organisation_id: org_id } },
+ body: body
+}));
+fixmystreet.assets.add($.extend(true, {}, fixmystreet.roadworks.layer_planned, {
+ http_options: { params: { organisation_id: org_id } },
+ body: body
+}));
})();
diff --git a/web/cobrands/fixmystreet-uk-councils/roadworks.js b/web/cobrands/fixmystreet-uk-councils/roadworks.js
index ccd8531b6..987055f6d 100644
--- a/web/cobrands/fixmystreet-uk-councils/roadworks.js
+++ b/web/cobrands/fixmystreet-uk-councils/roadworks.js
@@ -59,6 +59,7 @@ OpenLayers.Format.RoadworksForwardPlanning = OpenLayers.Class(OpenLayers.Format.
'tooltip': data.tooltip[i],
'org': data.org_name_disp[i],
'promoter': data.promoter[i],
+ 'works_desc': data.works_desc[i],
'start': data.start_date[i],
'end': data.end_date[i],
}
@@ -118,7 +119,7 @@ var roadworks_defaults = {
params: {
get: 'Points',
userid: '1',
- organisation_id: '1016',
+ organisation_id: '', // Cobrand JS should extend and override this.
filterimpact: '1,2,3,4',
extended_func_id: '14',
},
@@ -136,7 +137,7 @@ var roadworks_defaults = {
format_class: OpenLayers.Format.RoadworksForwardPlanning,
strategy_class: OpenLayers.Strategy.FixMyStreet,
stylemap: stylemap,
- body: "Buckinghamshire County Council",
+ body: "", // Cobrand JS should extend and override this.
non_interactive: true,
always_visible: true
};
@@ -169,17 +170,20 @@ fixmystreet.roadworks.show_nearby = function(evt, lonlat) {
feature = layer.getNearestFeature(point, 100);
}
if (feature !== null) {
- // XXX TODO
- var attr = feature.attributes,
- start = attr.start.replace(/{ts '([^ ]*).*/, '$1'),
- end = attr.end.replace(/{ts '([^ ]*).*/, '$1'),
- tooltip = attr.tooltip.replace(/\\n/g, '\n');
- $('.change_location').after('<div class="js-roadworks-message box-warning">Roadworks are scheduled near this location from ' + start + ' to ' + end + ', so you may not need to report your issue: “' + tooltip + '”</div>');
+ fixmystreet.roadworks.display_message(feature);
return true;
}
}
};
+fixmystreet.roadworks.display_message = function(feature) {
+ var attr = feature.attributes,
+ start = attr.start.replace(/{ts '([^ ]*).*/, '$1'),
+ end = attr.end.replace(/{ts '([^ ]*).*/, '$1'),
+ tooltip = attr.tooltip.replace(/\\n/g, '\n');
+ $('.change_location').after('<div class="js-roadworks-message box-warning">Roadworks are scheduled near this location from ' + start + ' to ' + end + ', so you may not need to report your issue: “' + tooltip + '”</div>');
+};
+
$(fixmystreet).on('maps:update_pin', fixmystreet.roadworks.show_nearby);
/* Stop sending a needless header so that no preflight CORS request */
diff --git a/web/cobrands/fixmystreet/assets.js b/web/cobrands/fixmystreet/assets.js
index 31dcaec07..f39c8fa96 100644
--- a/web/cobrands/fixmystreet/assets.js
+++ b/web/cobrands/fixmystreet/assets.js
@@ -308,7 +308,7 @@ function check_zoom_message_visibility() {
}
if (this.getVisibility() && this.inRange) {
- if (this.fixmystreet.asset_item_message) {
+ if (typeof this.fixmystreet.asset_item_message !== 'undefined') {
$p.html(this.fixmystreet.asset_item_message);
} else {
$p.html('You can pick a <b class="asset-' + this.fixmystreet.asset_type + '">' + this.fixmystreet.asset_item + '</b> from the map &raquo;');
@@ -522,14 +522,20 @@ fixmystreet.assets = {
return OpenLayers.Util.indexOf(options.filter_value, f.attributes[options.filter_key]) != -1;
}
});
- layer_options.strategies.push(new OpenLayers.Strategy.Filter({filter: layer_options.filter}));
+ } else if (typeof options.filter_value === 'function') {
+ layer_options.filter = new OpenLayers.Filter.FeatureId({
+ type: OpenLayers.Filter.Function,
+ evaluate: options.filter_value
+ });
} else {
layer_options.filter = new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.Comparison.EQUAL_TO,
property: options.filter_key,
value: options.filter_value
});
+ layer_options.strategies.push(new OpenLayers.Strategy.Filter({filter: layer_options.filter}));
}
+ layer_options.strategies.push(new OpenLayers.Strategy.Filter({filter: layer_options.filter}));
}
var layer_class = OpenLayers.Layer.VectorAsset;
diff --git a/web/cobrands/lincolnshire/_colours.scss b/web/cobrands/lincolnshire/_colours.scss
new file mode 100644
index 000000000..21b67628c
--- /dev/null
+++ b/web/cobrands/lincolnshire/_colours.scss
@@ -0,0 +1,48 @@
+/* LAYOUT */
+
+// If you are wanting a right-to-left layout, uncomment the following line.
+// $direction: right;
+
+/* COLOURS */
+
+$lincs-highlight: #b0bc22;
+$lincs-pop: #f05441;
+$lincs-border: #bec1c4;
+$lincs-panel: #dee0e2;
+$lincs-page: #ffffff;
+$lincs-text: #212121;
+$lincs-text-2nd: #6f787e;
+$lincs-link: #005fa6;
+$lincs-link-visited: #4d2f91;
+$lincs-link-hover: #2b8cc4;
+$lincs-link-focus: #fdb81e;
+$lincs-success: #e7f4e3;
+$lincs-warning: #fff2da;
+$lincs-error: #f9dede;
+$lincs-info: #e1f3f8;
+$lincs-plum: #bd3a4b;
+$lincs-pine: #198749;
+
+$primary: $lincs-highlight;
+$primary_b: $lincs-pop;
+$primary_text: $lincs-text;
+
+$base_bg: $lincs-page;
+$base_fg: #000;
+
+$map_nav_bg: #eee;
+$nav_fg: #000;
+$nav_fg_hover: $primary;
+
+// Colour used for front page 'how to report a problem' steps
+$col_big_numbers: $lincs-text-2nd;
+
+$col_click_map: $lincs-panel;
+
+$col_fixed_label: $lincs-highlight;
+$col_fixed_label_dark: darken($lincs-highlight, 10%);
+
+$menu-image: 'menu-black';
+
+$front_main_background: white;
+// $header-top-border: false;
diff --git a/web/cobrands/lincolnshire/assets.js b/web/cobrands/lincolnshire/assets.js
new file mode 100644
index 000000000..40187e188
--- /dev/null
+++ b/web/cobrands/lincolnshire/assets.js
@@ -0,0 +1,231 @@
+(function(){
+
+if (!fixmystreet.maps) {
+ return;
+}
+
+var defaults = {
+ http_options: {
+ url: "https://tilma.mysociety.org/mapserver/lincs",
+ params: {
+ SERVICE: "WFS",
+ VERSION: "1.1.0",
+ REQUEST: "GetFeature",
+ SRSNAME: "urn:ogc:def:crs:EPSG::3857"
+ }
+ },
+ format_class: OpenLayers.Format.GML.v3.MultiCurveFix,
+ asset_type: 'spot',
+ max_resolution: 2.388657133579254,
+ min_resolution: 0.5971642833948135,
+ asset_id_field: 'Confirm_CA',
+ attributes: {
+ central_asset_id: 'Confirm_CA',
+ asset_details: 'Asset_Id'
+ },
+ geometryName: 'msGeometry',
+ srsName: "EPSG:3857",
+ strategy_class: OpenLayers.Strategy.FixMyStreet,
+ body: "Lincolnshire County Council"
+};
+
+fixmystreet.assets.add($.extend(true, {}, defaults, {
+ http_options: {
+ params: {
+ TYPENAME: "SL_Bollards"
+ }
+ },
+ asset_category: "Bollards (lit)",
+ asset_item: 'bollard'
+}));
+
+fixmystreet.assets.add($.extend(true, {}, defaults, {
+ http_options: {
+ params: {
+ TYPENAME: "SL_Street_Light_Units"
+ }
+ },
+ asset_category: "Street light",
+ asset_item: 'street light',
+ filter_key: 'Type',
+ filter_value: [
+ "SL: Bulkhead Lighting", "SL: Refuge Beacon", "SL: Street Lighting Unit"
+ ]
+}));
+
+fixmystreet.assets.add($.extend(true, {}, defaults, {
+ http_options: {
+ params: {
+ TYPENAME: "SL_Street_Light_Units"
+ }
+ },
+ asset_category: "Subway light",
+ asset_item: 'light',
+ filter_key: 'Type',
+ filter_value: "SL: Subway Lighting Unit"
+}));
+
+function get_barrier_stylemap() {
+ return new OpenLayers.StyleMap({
+ 'default': new OpenLayers.Style({
+ strokeColor: "#000000",
+ strokeOpacity: 0.9,
+ strokeWidth: 4
+ }),
+ 'select': new OpenLayers.Style({
+ strokeColor: "#55BB00",
+ strokeOpacity: 1,
+ strokeWidth: 8
+ }),
+ 'hover': new OpenLayers.Style({
+ strokeWidth: 6,
+ strokeOpacity: 1,
+ strokeColor: "#FFFF00",
+ cursor: 'pointer'
+ })
+ });
+}
+
+fixmystreet.assets.add($.extend(true, {}, defaults, {
+ http_options: {
+ params: {
+ TYPENAME: "Safety_Barriers"
+ }
+ },
+ asset_category: ["Roadside safety barrier", "Missing safety fence"],
+ asset_item: 'barrier or fence',
+ filter_key: 'Type',
+ filter_value: "ST: Safety Barrier",
+ stylemap: get_barrier_stylemap(),
+ max_resolution: 1.194328566789627
+}));
+
+fixmystreet.assets.add($.extend(true, {}, defaults, {
+ http_options: {
+ params: {
+ TYPENAME: "LCC_Drainage-GulliesOffletsManholes"
+ }
+ },
+ asset_category: "Blocked drain",
+ asset_item: 'drain'
+}));
+
+fixmystreet.assets.add($.extend(true, {}, defaults, {
+ http_options: {
+ params: {
+ TYPENAME: "ST_All_Structures"
+ }
+ },
+ asset_category: "Damaged dyke, ditch or culvert",
+ asset_item: 'culvert',
+ filter_key: 'Type',
+ filter_value: [
+ "ST: Culvert 1 Cell", "ST: Culvert 2+ Cells", "ST: Culvert/Pipe"
+ ]
+}));
+
+fixmystreet.assets.add($.extend(true, {}, defaults, {
+ http_options: {
+ params: {
+ TYPENAME: "SL_Lit_Signs"
+ }
+ },
+ asset_category: "Sign (lit)",
+ asset_item: 'street sign'
+}));
+
+fixmystreet.assets.add($.extend(true, {}, defaults, {
+ http_options: {
+ params: {
+ TYPENAME: "ST_All_Structures"
+ }
+ },
+ asset_category: "Bridge",
+ asset_item: 'bridge',
+ filter_key: 'Type',
+ filter_value: [
+ "ST: Bridge", "ST: Bridge Ped/Cycle 1 Span",
+ "ST: Bridge Ped/Cycle 2+ Spans", "ST: Bridge Vehicular 1 Span",
+ "ST: Bridge Vehicular 2-3 Spans", "ST: Bridge Vehicular 4+ Spans"
+ ]
+}));
+
+fixmystreet.assets.add($.extend(true, {}, defaults, {
+ http_options: {
+ params: {
+ TYPENAME: "Carriageway"
+ }
+ },
+ asset_category: [
+ "Damaged/missing cats eye",
+ "Damaged road edge, encroaches less than 100mm",
+ "Damaged road edge, encroaches more than 100mm",
+ "Loose chippings",
+ "Manhole/drain cover on road/cycleway",
+ "Obstruction on road/cycleway",
+ "Pothole on road/cycleway",
+ "Road markings faded/missing",
+ "Road surface issue"
+ ],
+ asset_item: 'road',
+ asset_item_message: null,
+ disable_pin_snapping: true,
+ stylemap: new OpenLayers.StyleMap({
+ 'default': new OpenLayers.Style({
+ fill: false,
+ stroke: false
+ })
+ })
+}));
+
+fixmystreet.assets.add($.extend(true, {}, defaults, {
+ http_options: {
+ params: {
+ TYPENAME: "NSG"
+ }
+ },
+ always_visible: true,
+ non_interactive: true,
+ usrn: {
+ attribute: 'Site_Code',
+ field: 'site_code'
+ },
+ stylemap: new OpenLayers.StyleMap({
+ 'default': new OpenLayers.Style({
+ fill: false,
+ stroke: false
+ })
+ })
+
+}));
+
+var llpg_stylemap = new OpenLayers.StyleMap({
+ 'default': new OpenLayers.Style({
+ fillOpacity: 0,
+ strokeColor: "#000000",
+ strokeOpacity: 0.25,
+ strokeWidth: 2,
+ pointRadius: 10,
+
+ label: "${label}",
+ labelOutlineColor: "white",
+ labelOutlineWidth: 2,
+ fontSize: '11px',
+ fontWeight: 'bold'
+ })
+});
+
+fixmystreet.assets.add($.extend(true, {}, defaults, {
+ http_options: {
+ params: {
+ TYPENAME: "LLPG"
+ }
+ },
+ // LLPG is only to be shown when fully zoomed in
+ max_resolution: 0.5971642833948135,
+ stylemap: llpg_stylemap,
+ non_interactive: true,
+ always_visible: true
+}));
+
+})();
diff --git a/web/cobrands/lincolnshire/base.scss b/web/cobrands/lincolnshire/base.scss
new file mode 100644
index 000000000..1d045f4ea
--- /dev/null
+++ b/web/cobrands/lincolnshire/base.scss
@@ -0,0 +1,170 @@
+@import "../sass/h5bp";
+@import "./_colours";
+@import "../sass/mixins";
+@import "../sass/base";
+
+
+body,
+h1, h2, h3, h4, h5, h6 {
+ font-family: 'Roboto', 'Arial', sans-serif;
+
+}
+
+h1, h2, h3 {
+ font-weight: bold;
+}
+
+a {
+ color: $lincs-link;
+
+ &:visited {
+ color: $lincs-link-visited;
+ }
+
+ &:hover,
+ &:active,
+ &:focus {
+ color: $lincs-link-hover;
+ }
+}
+
+#site-header {
+ background-color: $primary;
+ border-top: 0;
+}
+
+#site-logo {
+ height: 64px;
+ width: 163px;
+ background-size: 162.5px 55.5px;
+ background-image: url(/cobrands/lincolnshire/images/site-logo.png);
+ background-image: url(/cobrands/lincolnshire/images/site-logo.svg),none;
+
+
+}
+
+.body.frontpage, body.twothirdswidthpage, body.fullwidthpage, body.authpage {
+ #site-logo {
+ @media (min-width: 48em) {
+ height: 100px;
+ width: 249px;
+ background-size: 249px 81px;
+ margin-left: 1em;
+ }
+ }
+}
+
+#report-cta {
+ border: 0;
+ background-color: #fff;
+ font-weight: bold;
+ &:hover,
+ &:active,
+ &:focus {
+ background-color: mix($primary, #fff, 30%);
+ }
+}
+
+#front-main #postcodeForm div input#sub {
+ background-color: $lincs-pop;
+ font-family: 'Roboto', 'Arial', sans-serif;
+ font-weight: bold;
+}
+
+#front-howto #front_stats {
+ font-family: 'Roboto', 'Arial', sans-serif;
+}
+
+.nav-menu--main {
+ @media (min-width: 48em) {
+ margin-left: -1em;
+ }
+}
+
+.btn-primary,
+.green-btn {
+ background: none; // remove gradient bg
+ background-color: $primary;
+ border-color: $primary;
+ &:hover,
+ &:active,
+ &:focus {
+ background: none; // remove gradient bg
+ border-color: darken($primary, 10%);
+ background-color: darken($primary, 10%);
+ }
+}
+
+.form-box,
+.alerts__cta-box {
+ background-color: $lincs-panel;
+}
+
+.description_tips .do {
+ color: $lincs-pine;
+}
+
+.description_tips .dont {
+ color: $lincs-plum;
+}
+
+input.form-error,
+textarea.form-error {
+ border-color: $lincs-plum;
+}
+
+div.form-error,
+p.form-error {
+ background-color: $lincs-plum;
+}
+
+body.mappage .big-green-banner {
+ background-color: $lincs-pop;
+}
+
+#front-main {
+ h2 {
+ font-family: 'Roboto', 'Arial', sans-serif;
+ font-weight: normal;
+ }
+
+ #postcodeForm div {
+ border-color: $lincs-border;
+ input#sub {
+ background-color: $lincs-link;
+ }
+ }
+}
+
+
+#front-main-container {
+ border-bottom: solid 5px $lincs-pop;
+ padding: 2em 0 3em;
+}
+
+.js-roadworks-message dd:last-child {
+ margin-bottom: 0;
+}
+
+// Certain categories have linear assets so hide the spot marker in the guidance
+#category_meta_message_Missingsafetyfence, #category_meta_message_Roadsidesafetybarrier {
+ .asset-spot:before {
+ display: none;
+ }
+}
+
+// admin
+
+.fms-admin-info {
+ background-color: $lincs-success;
+ border-color: darken($lincs-success, 10%);
+}
+
+.fms-admin-warning {
+ background-color: $lincs-error;
+ border-color: darken($lincs-error, 10%);
+}
+
+.admin-hint {
+ background-color: $lincs-link-focus;
+} \ No newline at end of file
diff --git a/web/cobrands/lincolnshire/favicon.ico b/web/cobrands/lincolnshire/favicon.ico
new file mode 100644
index 000000000..199535758
--- /dev/null
+++ b/web/cobrands/lincolnshire/favicon.ico
Binary files differ
diff --git a/web/cobrands/lincolnshire/images/site-logo.png b/web/cobrands/lincolnshire/images/site-logo.png
new file mode 100644
index 000000000..04ca4665b
--- /dev/null
+++ b/web/cobrands/lincolnshire/images/site-logo.png
Binary files differ
diff --git a/web/cobrands/lincolnshire/images/site-logo.svg b/web/cobrands/lincolnshire/images/site-logo.svg
new file mode 100644
index 000000000..daa20cfd9
--- /dev/null
+++ b/web/cobrands/lincolnshire/images/site-logo.svg
@@ -0,0 +1 @@
+<svg id="Logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 498 162"><defs><style>.cls-1{fill:#1d1d1b;}.cls-2{fill:#fff;}</style></defs><title>Artboard 1 copy</title><path class="cls-1" d="M0,16.93H6.85V61.14H29.79v6.21H0Z"/><path class="cls-1" d="M39.17,22.53a3.6,3.6,0,1,1-3.6,3.6A3.57,3.57,0,0,1,39.17,22.53ZM36,35.51h6.35V67.35H36Z"/><path class="cls-1" d="M50.67,35.51H57V39.4c3.11-3,6.14-4.38,9.82-4.38C73.75,35,78,39.25,78,46.24V67.35H71.63V47.87c0-5.16-2.11-7.56-6.7-7.56-3.32,0-5.58,1.2-7.91,4.1V67.35H50.67Z"/><path class="cls-1" d="M110.81,66.29A27.23,27.23,0,0,1,101.63,68C91.12,68,83.85,60.92,83.85,51.4c0-9.25,7.27-16.59,17.5-16.59a21.4,21.4,0,0,1,9,2v6.78A16.74,16.74,0,0,0,101.56,41c-6.7,0-11.08,4.45-11.08,10.45S94.86,62,101.84,62a19.26,19.26,0,0,0,9-2.19Z"/><path class="cls-1" d="M131.84,34.81a16.82,16.82,0,0,1,11.86,4.87,16.3,16.3,0,0,1,5,11.72,16.91,16.91,0,1,1-16.87-16.59ZM131.77,62A10.56,10.56,0,1,0,121.54,51.4,10.41,10.41,0,0,0,131.77,62Z"/><path class="cls-1" d="M154.22,19.14h6.35V67.35h-6.35Z"/><path class="cls-1" d="M168.19,35.51h6.35V39.4c3.11-3,6.15-4.38,9.82-4.38,6.91,0,11.15,4.23,11.15,11.22V67.35h-6.35V47.87c0-5.16-2.12-7.56-6.71-7.56-3.32,0-5.58,1.2-7.91,4.1V67.35h-6.35Z"/><path class="cls-1" d="M201.4,58.38c4,2.69,7.62,3.89,10.37,3.89,3.32,0,5.23-1.35,5.23-3.39,0-2.47-3-3.39-7.56-5.79-5.08-2.61-7.76-4.94-7.76-9.6,0-5.22,3.95-8.68,10.73-8.68a20.07,20.07,0,0,1,10,2.61v6.21c-3.67-2.05-6.92-3.18-10-3.18-2.68,0-4.16,1-4.16,2.69,0,2.54,2.54,3.67,7.27,6,5.36,2.68,8.32,4.58,8.32,9.59,0,5.51-4.44,9.25-11.5,9.25a22.1,22.1,0,0,1-11-2.82Z"/><path class="cls-1" d="M230.12,19.14h6.36V39.4c3.1-3,6.14-4.38,9.81-4.38,6.91,0,11.23,4.23,11.23,11.22V67.35h-6.43V47.87c0-5.16-2.05-7.56-6.64-7.56-3.31,0-5.71,1.2-8,4.1V67.35h-6.36Z"/><path class="cls-1" d="M268.73,22.53a3.6,3.6,0,1,1-3.59,3.6A3.57,3.57,0,0,1,268.73,22.53Zm-3.17,13h6.35V67.35h-6.35Z"/><path class="cls-1" d="M280.31,35.51h6.35v6.92c3.18-5,5.72-7.48,9.39-7.48,2.33,0,4.66,1.06,7.27,3.11l-3.46,5.64a8.74,8.74,0,0,0-5.93-2.54c-3.31,0-6.14,2.9-7.27,8.19v18h-6.35Z"/><path class="cls-1" d="M321.18,68.05c-10.17,0-16.52-6.91-16.52-17.15,0-9.46,6.29-16,15.6-16,9,0,15,6.28,15,16.73v.91H311.37c.35,6.07,4.16,9.6,10.16,9.6,4,0,8.4-1.48,13.13-4.51V64A24.17,24.17,0,0,1,321.18,68.05Zm7.06-20c-.42-4.66-3.67-7.7-8.05-7.7-4.87,0-7.91,2.69-8.82,7.7Z"/><path class="cls-1" d="M164.14,77.11a7.52,7.52,0,0,0-3.74-1,5.31,5.31,0,0,0-4.09,1.55,6.72,6.72,0,0,0-1.8,4.62A6.33,6.33,0,0,0,156,86.45a5.26,5.26,0,0,0,4.13,1.85,8.76,8.76,0,0,0,4-1.17l.62,1.36a11,11,0,0,1-4.83,1.36A6.93,6.93,0,0,1,155,88a7.71,7.71,0,0,1,5.42-13.4,10.28,10.28,0,0,1,4.38,1.13Z"/><path class="cls-1" d="M179.35,76.49a7.89,7.89,0,0,1,2.38,5.79,8,8,0,0,1-2.29,5.64,7.31,7.31,0,0,1-5.3,1.93,7,7,0,0,1-5.4-2,7.54,7.54,0,0,1-2.19-5.47,7.82,7.82,0,0,1,2.16-5.57,8.21,8.21,0,0,1,10.64-.28Zm-10.87,5.79c0,3.62,2.32,6.06,5.64,6.06s5.66-2.44,5.66-6.25c0-3.45-2.28-5.89-5.66-5.89S168.48,78.64,168.48,82.28Z"/><path class="cls-1" d="M186.8,74.92l-.17,9.55v.09c0,2.27,1.57,3.78,4,3.78,2.74,0,3.93-1.66,4-5.1l.14-8.32h1.81l-.17,8.74c-.06,4.07-2,6.15-5.76,6.15-4,0-5.94-2-5.94-6V83.6l.17-8.68Z"/><path class="cls-1" d="M208.26,84.39A12.51,12.51,0,0,1,209.73,87c-.09-1-.11-2-.11-3V74.92h1.72l-.1,14.34-1.45.55-7.06-10.25a20.7,20.7,0,0,1-1.3-2.3c.11,1.77.15,3,.15,3.64l0,8.7h-1.71l.11-14.3,1.49-.68Z"/><path class="cls-1" d="M224.64,74.92l0,1.57h-4.55l-.24,13.11H218l.22-13.11h-4.56l0-1.57Z"/><path class="cls-1" d="M231,80c.23.39.6,1,1.09,1.9.32-.51.7-1.11,1.17-1.81l3.57-5.43,1.47.87L233,83.22l-.1,6.38h-1.83l.1-6.32-5.25-7.79,1.64-.85Z"/><path class="cls-1" d="M256.57,77.11a7.56,7.56,0,0,0-3.75-1,5.3,5.3,0,0,0-4.08,1.55,6.73,6.73,0,0,0-1.81,4.62,6.28,6.28,0,0,0,1.49,4.17,5.26,5.26,0,0,0,4.13,1.85,8.76,8.76,0,0,0,4-1.17l.61,1.36a10.88,10.88,0,0,1-4.83,1.36A7,7,0,0,1,247.42,88a7.58,7.58,0,0,1-2.36-5.76,7.5,7.5,0,0,1,2.21-5.49,7.63,7.63,0,0,1,5.57-2.15,10.32,10.32,0,0,1,4.39,1.13Z"/><path class="cls-1" d="M271.78,76.49a8.15,8.15,0,0,1,.08,11.43,7.3,7.3,0,0,1-5.3,1.93,7,7,0,0,1-5.4-2A7.58,7.58,0,0,1,259,82.34a7.83,7.83,0,0,1,2.17-5.57,8.21,8.21,0,0,1,10.64-.28Zm-10.87,5.79c0,3.62,2.32,6.06,5.63,6.06s5.66-2.44,5.66-6.25c0-3.45-2.27-5.89-5.66-5.89S260.91,78.64,260.91,82.28Z"/><path class="cls-1" d="M279.22,74.92l-.17,9.55v.09c0,2.27,1.58,3.78,4,3.78,2.75,0,3.94-1.66,4-5.1l.15-8.32h1.81l-.17,8.74c-.06,4.07-2,6.15-5.77,6.15-3.95,0-5.93-2-5.93-6V83.6l.17-8.68Z"/><path class="cls-1" d="M300.68,84.39A12.51,12.51,0,0,1,302.15,87c-.08-1-.1-2-.1-3V74.92h1.72l-.11,14.34-1.44.55-7.07-10.25a20.89,20.89,0,0,1-1.29-2.3c.1,1.77.15,3,.15,3.64L294,89.6h-1.7l.11-14.3,1.49-.68Z"/><path class="cls-1" d="M318,77.11a7.52,7.52,0,0,0-3.74-1,5.31,5.31,0,0,0-4.09,1.55,6.73,6.73,0,0,0-1.81,4.62,6.34,6.34,0,0,0,1.49,4.17,5.26,5.26,0,0,0,4.13,1.85,8.72,8.72,0,0,0,4-1.17l.62,1.36a11,11,0,0,1-4.83,1.36A7,7,0,0,1,308.81,88a7.71,7.71,0,0,1,5.43-13.4,10.28,10.28,0,0,1,4.38,1.13Z"/><path class="cls-1" d="M323.21,74.92,323,89.6h-1.79l.26-14.68Z"/><path class="cls-1" d="M329.17,74.92,328.94,88h6.29l0,1.62h-8.1l.25-14.68Z"/><path class="cls-2" d="M358.71,59.39c14.58-14.58,41.35,3.26,37.15-.93C381.41,44,361.17,40.81,350.65,51.32s-7.33,30.77,7.12,45.22C362,100.74,344.13,74,358.71,59.39Z"/><path class="cls-2" d="M309.78,31.55c.12.11,7.2-10.57,46.08,5.87,30.92,13.08,39.44-5.89,39.32-6s-11.68,8.79-42-1.81C316.83,16.86,309.66,31.43,309.78,31.55Z"/><path class="cls-2" d="M355.14,39.76a62.57,62.57,0,0,0-8-3,21.82,21.82,0,0,0-3.9,12.49,20.16,20.16,0,0,0,1.08,6.48A24.55,24.55,0,0,1,348.25,50c3.35-3.66,8.62-7.13,17.85-7.2A35.33,35.33,0,0,1,355.14,39.76Z"/><path class="cls-2" d="M375.77,22.89c-1.95,6.68-7.7,9.4-15.24,7.2s-10.93-7.58-9-14.26,4.9-11.71,15.64-8.58S377.72,16.2,375.77,22.89Z"/><path class="cls-2" d="M354.28,11.91c-2.88-1.33-8.43.81-8.8,1.28a.68.68,0,0,0-.15.37,3.15,3.15,0,0,0,.24,1.34c.42,1.08,1.91,3.77,6.7,5.56h0C352.37,22.73,357.17,13.25,354.28,11.91Z"/><path class="cls-2" d="M356.55,14.73c.75.36-12.41,1.12-8.5-12.29,0,0,.63-1.69,1.62-1.41s1.06,6.49,8.35,7.28"/><path class="cls-2" d="M372.67,26.41h0c5,1.07,7.7-.4,8.64-1.09a3,3,0,0,0,.92-1,.78.78,0,0,0,.08-.39c-.06-.59-3.6-5.38-6.74-5.81S371.37,28.27,372.67,26.41Z"/><path class="cls-2" d="M372.15,19.27c-.83-.09,9.86,7.62,13.76-5.78,0,0,.39-1.77-.6-2.06s-4.39,4.9-10.95,1.64"/><path class="cls-2" d="M176.91,115.55q.24,6-3.77,18.12-3.3,10.11-5.14,13L165,151.71c-1.44,2-2.85,3-4.22,3a4.64,4.64,0,0,1-3.55-1.88,7.52,7.52,0,0,1-1.73-3.42A45,45,0,0,1,155,141a36.67,36.67,0,0,1,.68-7q-.53.81-5,9.83-3.7,7.53-4.7,7.65a3.15,3.15,0,0,1-1.47-.25c-.58-.22-.9-.52-.94-.89a20.77,20.77,0,0,1,.41-2.68c.3-1.6.55-2.76.76-3.45l4.85-16.41a54,54,0,0,1,1.28-5.93,2.75,2.75,0,0,1,.62-.88,1.58,1.58,0,0,1,.78-.56,1.69,1.69,0,0,1,1.3.48,1.79,1.79,0,0,1,.72,1,7.15,7.15,0,0,1-.6,3.35c-1.09,2.76-1.7,4.36-1.85,4.82q-.89,3.16-2.83,9.35a1.69,1.69,0,0,0,.36.48q1.63-3.48,4.22-8,4.05-7.18,5.56-7.37a1.27,1.27,0,0,1,1.18.73,2.5,2.5,0,0,1,.48,1,17.63,17.63,0,0,1-.67,2.31,21.34,21.34,0,0,0-1,3.49,69,69,0,0,0-1,7,39.33,39.33,0,0,0-.17,7.8c.32,2.55,1.36,3.84,3.13,3.85.62,0,1.46-.79,2.54-2.4l1.74-2.93a46.7,46.7,0,0,0,4.29-9.83q1.5-4.91,2.94-9.8a25.32,25.32,0,0,0,1.26-6.49c-.05-.89-.12-1.77-.19-2.64,0-1.16.19-1.87.65-2.13a2.18,2.18,0,0,1,.76-.23,1.65,1.65,0,0,1,1.05.38A1.37,1.37,0,0,1,176.91,115.55Z"/><path class="cls-2" d="M183,142.22A12.93,12.93,0,0,1,180.8,147q-2.06,2.85-4,3.08a3,3,0,0,1-3.09-1.71,8.59,8.59,0,0,1-1.14-3.56,10.73,10.73,0,0,1,1.16-5,22.26,22.26,0,0,1,2.36-4.26,8.39,8.39,0,0,1,2.15-2,5.41,5.41,0,0,1,1.64-.83q2.9-.44,3.4,3.68A19,19,0,0,1,183,142.22Zm-2.53.16a13.67,13.67,0,0,0,.67-5.44c-.1-.78-.28-1.17-.54-1.2-.82,1.1-1.3,1.66-1.46,1.68s-.19,0-.21-.13-.09-.15-.25-.13q-1.44.18-2.67,3.56a11.47,11.47,0,0,0-1,4.13,4.47,4.47,0,0,0,.57,1.74,1.45,1.45,0,0,0,1.36.9c.68,0,1.43-.79,2.27-2.29A12.75,12.75,0,0,0,180.48,142.38Z"/><path class="cls-2" d="M195.61,135.44a4.28,4.28,0,0,1-.18,1.76,2.42,2.42,0,0,1-.92,1.45,1.71,1.71,0,0,1-.62-.87l-.18-.84a2.45,2.45,0,0,1-.05-1,5.12,5.12,0,0,0,.05-.93c-.07-.57-.35-.83-.84-.77-.81.1-1.77,1.22-2.9,3.37a23.27,23.27,0,0,0-2.33,6.69l-.12,2.22a3.41,3.41,0,0,1-.74,2,5.39,5.39,0,0,1-1.14-.61c-.63-.45-1-.85-1-1.22a18.78,18.78,0,0,1,.24-2.19c.34-1.72.74-3.85,1.19-6.37a21.59,21.59,0,0,1,.38-2.69,4.26,4.26,0,0,1,1-2,.78.78,0,0,1,.77.5,3.41,3.41,0,0,0,.5.88c.67-.76,1.35-1.53,2-2.29a4.76,4.76,0,0,1,2.65-1.51,1.3,1.3,0,0,1,1.35.7A11.24,11.24,0,0,1,195.61,135.44Z"/><path class="cls-2" d="M223.27,136.82c.09.73-.72,2.08-2.43,4.08s-2.84,3-3.39,3.09l-.86.17-.91.17a2.83,2.83,0,0,1-2.37-1.05,4.28,4.28,0,0,1-1.32-2.44q-.18-1.44,1.07-5.68,1.27-4.41,2.13-4.52a2,2,0,0,1,2,1.25q-.14.45-1.77,4.51a9,9,0,0,0-.86,4.24,5.8,5.8,0,0,0,.12.65,1.44,1.44,0,0,0,1.43.38q1.42-.18,3.71-2.46A28.53,28.53,0,0,1,223,136.3s0,.09.12.18A.61.61,0,0,1,223.27,136.82Zm-.69-15.59a14.06,14.06,0,0,1-2.21,2.52,7,7,0,0,1-2.16,1.68,1.46,1.46,0,0,1-1.22-.54,2.07,2.07,0,0,1-.68-1.2.68.68,0,0,1,0-.36c.48-.34.95-.69,1.41-1a9.68,9.68,0,0,1,2.73-1.37l1.31-.38C222,120.51,222.26,120.74,222.58,121.23Z"/><path class="cls-2" d="M228.63,139.12a10.87,10.87,0,0,1,.13-3.15c.2-1.53.31-2.28.32-2.22q-1.59,2.12-2.52,3.53a24.39,24.39,0,0,0-2.32,4.23,1.84,1.84,0,0,0-.65.31,2,2,0,0,1-.65.32,1.34,1.34,0,0,1-1-.47c-.37-.35-.56-.58-.57-.68s.13-1.57.45-4.17.62-4.65.88-6.15a1.17,1.17,0,0,1,.58-.74,2.11,2.11,0,0,1,.9-.39,1.32,1.32,0,0,1,.61.16,4.66,4.66,0,0,0,.63.28,6.78,6.78,0,0,1-.26,2.75,12,12,0,0,0-.47,2.58.45.45,0,0,0,.15.29,28.25,28.25,0,0,0,2.1-3.11,31.87,31.87,0,0,1,2.07-3.07,4,4,0,0,1,2.37-1.51c.55-.07.88.37,1,1.3a15.34,15.34,0,0,1-.69,4.81,15.65,15.65,0,0,0-.72,4.58q.25,2.06,1.8,1.86c.42-.05,1.6-.82,3.54-2.32l.29.14a.22.22,0,0,1,.12.28,7.9,7.9,0,0,1-1.82,2.69,4.55,4.55,0,0,1-2.34,1.6Q229.49,143.23,228.63,139.12Z"/><path class="cls-2" d="M249.68,126.69a4.31,4.31,0,0,0,.17.59,2.33,2.33,0,0,1,.1.32,7.24,7.24,0,0,1-.62,2,13.51,13.51,0,0,0-.88,3.61c-.13,1.22-.24,2.41-.33,3.58q-.9,10.29-3.44,15.37A15.81,15.81,0,0,1,232.33,161c-1.54.24-3.23-.42-5.05-2a7.71,7.71,0,0,1-2.89-4.38,10.65,10.65,0,0,1,.22-4.28,5.84,5.84,0,0,1,2-3.67l.14.81a9.4,9.4,0,0,0-.37,1.78,11.5,11.5,0,0,0-.21,3.14,4.12,4.12,0,0,0,.12.61q1,3.15,2.42,4.08c1.09.73,3,1,5.61.73q2.17-.27,5.08-2.91a14.43,14.43,0,0,0,4.3-6.35,41.51,41.51,0,0,0,1.67-7c.23-2.13.46-4.26.67-6.39q-4.69,5.39-7.24,5.82c-2.19.34-3.41-.28-3.66-1.89a8.6,8.6,0,0,1,1.05-4.94,21.28,21.28,0,0,1,4.42-5.4q3.24-3.12,4.76-3.55a3.73,3.73,0,0,1,.46-.09,1.73,1.73,0,0,1,.88.11,1.6,1.6,0,0,0,.49.15,1.26,1.26,0,0,0,.52-.28,1.35,1.35,0,0,1,.56-.28C249,124.7,249.48,125.33,249.68,126.69Zm-3.24,2.53-1.07-.34q-1.63.24-4.77,3.61c-2.17,2.34-3.17,4.11-3,5.29a.66.66,0,0,0,.35.47.79.79,0,0,0,.59.13q1.86-.27,4.89-3.68T246.44,129.22Z"/><path class="cls-2" d="M276.61,124.1c.05.37-.22.77-.8,1.2q-4.37,1.61-5.25,1.79a23.33,23.33,0,0,0-3.89,1.34q-.87,3.54-2.12,10.7-1.29,7.44-2.06,10.81a1,1,0,0,1-.81.8,1.66,1.66,0,0,1-1.44-.53,1.52,1.52,0,0,1-.5-.84c0,.07.69-2.66,2.05-8.21s2-8.85,1.83-9.91c0-.13-.41-.5-1.19-1.12a2.5,2.5,0,0,1-.88-1.35c-.07-.56.34-1.1,1.22-1.6.58-.26,1.16-.52,1.76-.81q1.13-4,3.22-11.93a19.21,19.21,0,0,1,1.56-4.33,7.34,7.34,0,0,1,1.4-1.71,3.89,3.89,0,0,1,1.9-1.21c.62-.08,1.22.33,1.81,1.23a4.26,4.26,0,0,1,.83,2,7.12,7.12,0,0,1-.32,2.83c-.35,1.2-.8,1.83-1.34,1.9a2.74,2.74,0,0,1-.94-.24c0-1.82.07-2.67.08-2.57-.08-.67-.29-1-.62-.87s-.87,1.05-1.68,3a30,30,0,0,0-1.49,4q-.65,2.13-1.67,6.9,1.65-.33,4.29-1l2.48-.66c.08,0,.4,0,1,0a13.1,13.1,0,0,0,1.33-.07.91.91,0,0,0,.12.17A.59.59,0,0,1,276.61,124.1Z"/><path class="cls-2" d="M284.83,129.75a12.7,12.7,0,0,1-2.22,4.76c-1.36,1.9-2.7,2.93-4,3.09a3,3,0,0,1-3.08-1.71,8.79,8.79,0,0,1-1.15-3.56,10.62,10.62,0,0,1,1.17-5,21.45,21.45,0,0,1,2.35-4.26,8.29,8.29,0,0,1,2.16-2,5.29,5.29,0,0,1,1.63-.83c1.93-.29,3.07.94,3.4,3.68A18.94,18.94,0,0,1,284.83,129.75Zm-2.54.16a13.51,13.51,0,0,0,.67-5.44c-.1-.78-.27-1.18-.53-1.2A6.74,6.74,0,0,1,281,125c-.13,0-.2,0-.21-.13s-.1-.15-.25-.13c-1,.12-1.85,1.3-2.68,3.56a11.39,11.39,0,0,0-.95,4.13,4.63,4.63,0,0,0,.56,1.74,1.46,1.46,0,0,0,1.37.9c.67,0,1.43-.79,2.26-2.29A12.29,12.29,0,0,0,282.29,129.91Z"/><path class="cls-2" d="M297.43,123a4.67,4.67,0,0,1-.18,1.76,2.47,2.47,0,0,1-.93,1.45,1.62,1.62,0,0,1-.61-.87c-.07-.28-.13-.56-.19-.84a2.51,2.51,0,0,1,0-1,4.81,4.81,0,0,0,0-.93c-.07-.57-.35-.83-.84-.77-.8.1-1.77,1.22-2.89,3.37a23.6,23.6,0,0,0-2.34,6.69l-.12,2.22a3.41,3.41,0,0,1-.74,2,5.35,5.35,0,0,1-1.13-.61c-.64-.45-1-.85-1-1.22a18.78,18.78,0,0,1,.24-2.19q.51-2.6,1.19-6.37a23.81,23.81,0,0,1,.38-2.69,4.36,4.36,0,0,1,1-2,.77.77,0,0,1,.77.5,4,4,0,0,0,.5.88c.67-.76,1.35-1.53,2.05-2.3a4.68,4.68,0,0,1,2.65-1.5,1.28,1.28,0,0,1,1.34.7A11.18,11.18,0,0,1,297.43,123Z"/><path class="cls-2" d="M328.66,125.88q0,1.62-2.53,3.93c-1.66,1.55-3,2.38-4,2.5a1.61,1.61,0,0,1-.38,0,1.14,1.14,0,0,0-.37,0,2.93,2.93,0,0,1-1.81-.64,4.13,4.13,0,0,1-1.24-1.11,7.18,7.18,0,0,1-1.16-3,5.76,5.76,0,0,1,0-1.1c-1,1.18-2.07,2.37-3.1,3.57a6.75,6.75,0,0,1-3.83,2.2c-.44.06-.91-.28-1.42-1a3.54,3.54,0,0,1-.79-1.63q-.3-2.42,3.08-7.11c2.26-3.14,4.12-4.79,5.6-4.94a1,1,0,0,1,1,.35c.22.29.43.58.62.87.13-.41.28-.84.43-1.28.28-.74.59-1.13.92-1.17a2.13,2.13,0,0,1,1.37.58c.22.29.23.9,0,1.85a11.78,11.78,0,0,0-.94,2.24,20.48,20.48,0,0,0-.52,3.13,13.51,13.51,0,0,0-.17,2.19,5.28,5.28,0,0,0,.88,2.37,2.29,2.29,0,0,0,2.23,1.19,6.08,6.08,0,0,0,2.77-1.52l2.82-2.36Zm-11.29-4.68a1.64,1.64,0,0,1-.58-.13,1.89,1.89,0,0,0-.62-.12,3.74,3.74,0,0,0-1.8,1.36c-.45.53-.91,1.07-1.36,1.63a10.65,10.65,0,0,0-1.6,2.52,7.07,7.07,0,0,0-.8,2.58c.05,0,.14,0,.26.14a.42.42,0,0,0,.37.13c.41-.05,1.42-1,3-2.81a23.41,23.41,0,0,0,2.44-3.09A6.85,6.85,0,0,0,317.37,121.2Z"/><path class="cls-2" d="M349.71,117.67c.37,2.37-.44,4.94-2.41,7.7s-4.06,4.37-6.26,4.82l-1.49.34a2.32,2.32,0,0,1-1.78-.68,2.89,2.89,0,0,1-1.14-1.56,6.88,6.88,0,0,1,.86-4.24,8.77,8.77,0,0,1,3.05-3.72c.33-.09.53,0,.59.32a1.44,1.44,0,0,1-.28,1.22,8.66,8.66,0,0,0-1.89,5.78.93.93,0,0,0,.79.3,1.13,1.13,0,0,0,.34-.1c.1,0,.18-.1.26-.13a7.29,7.29,0,0,0,2.33-1,11.78,11.78,0,0,0,3.56-3.9c1.16-1.93,1.59-3.55,1.3-4.88a3.88,3.88,0,0,0-1.32-2.38,2.45,2.45,0,0,0-2.31-.45c-.82.21-1.81,1.19-3,3s-1.85,2.67-2.06,2.7a1.05,1.05,0,0,1-1.07-.38,2.07,2.07,0,0,1-.6-1q-.09-.37,3.17-10.08.48-1.95,1.66-6.07a16.76,16.76,0,0,1,.45-2.46l1.33-.71a1.91,1.91,0,0,1,1.42,1.32,2.65,2.65,0,0,1-.18,1.72,103.37,103.37,0,0,0-3.8,10.15,22,22,0,0,1,3.2-.9c1.25-.26,2.42.27,3.5,1.58A7.62,7.62,0,0,1,349.71,117.67Z"/><path class="cls-2" d="M362.94,113.49q.27,2.2-3,5.81c-2.2,2.39-4.28,3.78-6.23,4.15a3.07,3.07,0,0,0,1.55,2,3.17,3.17,0,0,0,2,.47,10.39,10.39,0,0,0,3.26-1.35c1.64-.93,2.46-1.42,2.46-1.44a1,1,0,0,1,1,.19,11.34,11.34,0,0,1-3.08,2.84,9.86,9.86,0,0,1-3.85,2,4.71,4.71,0,0,1-3.94-1.25,5.65,5.65,0,0,1-1.71-3.38q-.47-3.09,2.55-7.52t6.14-4.81a3,3,0,0,1,2.88,2.29Zm-2.53.9a.84.84,0,0,0-.58-.24q-1.66.19-3.62,2.61a10.72,10.72,0,0,0-2.06,3.71,4.42,4.42,0,0,0,2.14-.85,23.72,23.72,0,0,0,1.93-1.71A8.44,8.44,0,0,0,360.41,114.39Z"/><path class="cls-2" d="M377.36,110.34c0,.09,0,.19.08.31a.83.83,0,0,1,.15.26c0,.18-.11.42-.39.71a31.77,31.77,0,0,0-5.44,2.21,17.74,17.74,0,0,0-2.64,1.86,4.81,4.81,0,0,1-.18,1.77,5.6,5.6,0,0,0-.21,1.78,4.56,4.56,0,0,0,.15.75c.08.34.14.58.18.71a16.24,16.24,0,0,1-.3,3c-.29,1.92-.65,2.91-1.09,3s-1-.34-1.56-1.19a4.47,4.47,0,0,1-.76-1.64c0-.13.15-1.09.5-2.88a28.75,28.75,0,0,0,.49-2.91,1.43,1.43,0,0,0-.35-.59,2.44,2.44,0,0,1-.38-.55,7.08,7.08,0,0,1-.6-2,2.32,2.32,0,0,1,.52-1.09c.36-.54.62-.82.76-.84a3,3,0,0,0,.37-.08,1.39,1.39,0,0,1,.34-.09c.26,0,.65-1.15,1.16-3.37.25-1.16.51-2.3.76-3.44.52-1.74,1.14-4.29,1.86-7.63a1.69,1.69,0,0,1,.64-.79.76.76,0,0,0,.4-.36l.7-.09a4.17,4.17,0,0,0,.43.93,4,4,0,0,1,.48,1.32q.12,1.05-1.44,5.62a54.9,54.9,0,0,0-2,6.74l.27.24a16.47,16.47,0,0,1,2.93-.83C374.6,110.93,376,110.65,377.36,110.34Z"/><path class="cls-2" d="M387.65,109.08c0,.09,0,.19.07.31a.55.55,0,0,1,.15.26c0,.18-.1.42-.38.71a31.42,31.42,0,0,0-5.44,2.21,17.3,17.3,0,0,0-2.65,1.86,4.81,4.81,0,0,1-.18,1.77A5.63,5.63,0,0,0,379,118q0,.24.15.75c.08.34.14.58.18.71a16.24,16.24,0,0,1-.3,3c-.28,1.92-.65,2.91-1.09,3s-1-.34-1.56-1.19a4.24,4.24,0,0,1-.75-1.64,26.71,26.71,0,0,1,.49-2.88,25.68,25.68,0,0,0,.49-2.91,1.43,1.43,0,0,0-.35-.59,2.86,2.86,0,0,1-.38-.55,7.08,7.08,0,0,1-.6-2,2.32,2.32,0,0,1,.52-1.09c.37-.54.62-.82.76-.84a2.33,2.33,0,0,0,.37-.08,1.53,1.53,0,0,1,.34-.09c.26,0,.65-1.15,1.16-3.37.26-1.16.51-2.3.76-3.44.53-1.74,1.15-4.29,1.87-7.63a1.74,1.74,0,0,1,.63-.79.78.78,0,0,0,.41-.36l.7-.09a3.53,3.53,0,0,0,.42.93,3.93,3.93,0,0,1,.48,1.33q.14,1-1.44,5.61a54.9,54.9,0,0,0-2,6.74l.27.24a17.63,17.63,0,0,1,2.93-.83C384.88,109.67,386.26,109.39,387.65,109.08Z"/><path class="cls-2" d="M396.78,109.35q.27,2.2-3,5.8c-2.21,2.4-4.28,3.78-6.23,4.15a3,3,0,0,0,1.55,2,3.13,3.13,0,0,0,2,.46,10.22,10.22,0,0,0,3.26-1.34c1.65-.94,2.47-1.42,2.47-1.45a1,1,0,0,1,1,.2,11,11,0,0,1-3.07,2.83,9.88,9.88,0,0,1-3.86,2,4.67,4.67,0,0,1-3.93-1.25,5.62,5.62,0,0,1-1.71-3.37c-.31-2.07.54-4.57,2.54-7.52s4.05-4.55,6.15-4.81a2.46,2.46,0,0,1,1.81.64A2.54,2.54,0,0,1,396.78,109.35Zm-2.53.9a.83.83,0,0,0-.58-.25c-1.12.14-2.32,1-3.62,2.61a10.88,10.88,0,0,0-2.07,3.72,4.58,4.58,0,0,0,2.14-.85,24.09,24.09,0,0,0,1.94-1.72A8.4,8.4,0,0,0,394.25,110.25Z"/><path class="cls-2" d="M409.37,109.26a4.6,4.6,0,0,1-.18,1.75,2.42,2.42,0,0,1-.93,1.46,1.68,1.68,0,0,1-.61-.87c-.07-.28-.13-.56-.19-.85a2.48,2.48,0,0,1,0-1,4.77,4.77,0,0,0,0-.93c-.07-.57-.35-.82-.84-.76-.8.1-1.77,1.22-2.89,3.37a23.43,23.43,0,0,0-2.34,6.68l-.12,2.22a3.38,3.38,0,0,1-.73,2,5.3,5.3,0,0,1-1.14-.6c-.64-.45-1-.86-1-1.22a17.52,17.52,0,0,1,.25-2.2q.51-2.58,1.18-6.36a26.07,26.07,0,0,1,.38-2.69,4.31,4.31,0,0,1,1-2,.77.77,0,0,1,.77.5,3.5,3.5,0,0,0,.51.88c.66-.76,1.34-1.53,2-2.3a4.71,4.71,0,0,1,2.65-1.5,1.3,1.3,0,0,1,1.35.7A11.43,11.43,0,0,1,409.37,109.26Z"/><path class="cls-2" d="M435.19,104.68c.05.36-.22.76-.79,1.2q-4.38,1.61-5.26,1.78a24.34,24.34,0,0,0-3.89,1.35q-.87,3.52-2.12,10.69-1.29,7.45-2.06,10.81a.94.94,0,0,1-.81.81,1.66,1.66,0,0,1-1.44-.53,1.57,1.57,0,0,1-.5-.85c0,.08.69-2.66,2.05-8.2s2-8.86,1.84-9.92q0-.19-1.2-1.11a2.5,2.5,0,0,1-.88-1.35c-.07-.57.34-1.11,1.22-1.61.58-.25,1.16-.52,1.76-.8q1.13-4,3.22-11.94a19.13,19.13,0,0,1,1.56-4.32,7.34,7.34,0,0,1,1.4-1.71,3.93,3.93,0,0,1,1.9-1.22c.62-.07,1.22.34,1.81,1.24a4.23,4.23,0,0,1,.83,2,7.17,7.17,0,0,1-.32,2.84c-.35,1.2-.8,1.83-1.34,1.9a3.36,3.36,0,0,1-.94-.24c0-1.82.07-2.68.08-2.57-.08-.68-.29-1-.62-.87s-.87,1-1.68,3a29.47,29.47,0,0,0-1.49,4q-.64,2.13-1.67,6.9,1.65-.31,4.29-1l2.48-.65,1,0a11.09,11.09,0,0,0,1.33-.06.68.68,0,0,0,.12.16A.6.6,0,0,1,435.19,104.68Z"/><path class="cls-2" d="M451.48,112.53a9.48,9.48,0,0,1-1.83,2.43,5.92,5.92,0,0,1-3.28,1.9,3.71,3.71,0,0,1-3.15-1.17,5.45,5.45,0,0,1-1.65-3.29,4.35,4.35,0,0,1,0-1c-.88,1.19-1.76,2.38-2.64,3.59-1.09,1.37-2,2.1-2.72,2.19-1.76.21-2.78-.79-3-3-.11-.88.35-3,1.36-6.31s1.8-5.18,2.35-5.25c.28,0,.61.24,1,.81a3.67,3.67,0,0,1,.62,1.32s-.5,1.2-1.47,3.76a18.2,18.2,0,0,0-1.45,5.89c0,.09,0,.16.11.23,1.11-.59,2.67-2.51,4.69-5.78.38-.54.94-1.48,1.7-2.81.25-.58.5-1.15.78-1.7A2.6,2.6,0,0,1,444.2,103l.94.9a1.36,1.36,0,0,1,.49.81,12.41,12.41,0,0,0-.9,2.77,15.58,15.58,0,0,0-.78,4.76,3.52,3.52,0,0,0,.58,1.51c.46.75,1,1.1,1.58,1a6.34,6.34,0,0,0,2.64-1.27,14.3,14.3,0,0,1,2.53-1.53Z"/><path class="cls-2" d="M460.63,100.14c0,.09,0,.19.08.31a.83.83,0,0,1,.15.26c0,.18-.11.42-.39.71a31.42,31.42,0,0,0-5.44,2.21,18.34,18.34,0,0,0-2.65,1.86,4.75,4.75,0,0,1-.17,1.77A6.05,6.05,0,0,0,452,109q0,.24.15.75c.09.34.15.58.19.71a18.39,18.39,0,0,1-.3,3c-.29,1.92-.65,2.91-1.09,3s-1-.34-1.57-1.19a4.58,4.58,0,0,1-.75-1.64c0-.13.15-1.09.5-2.88s.5-2.76.49-2.91a1.55,1.55,0,0,0-.35-.59,2.13,2.13,0,0,1-.38-.55,7.08,7.08,0,0,1-.6-2,2.32,2.32,0,0,1,.52-1.09c.36-.54.62-.82.76-.84a1.6,1.6,0,0,0,.36-.08,1.62,1.62,0,0,1,.35-.09c.26,0,.64-1.15,1.16-3.37.25-1.16.51-2.3.76-3.44.52-1.74,1.14-4.29,1.86-7.63a1.74,1.74,0,0,1,.63-.79.78.78,0,0,0,.41-.36l.7-.09a4.17,4.17,0,0,0,.43.93,4,4,0,0,1,.48,1.32q.12,1-1.44,5.62a54.9,54.9,0,0,0-2,6.74l.26.24a17,17,0,0,1,2.93-.83C457.87,100.73,459.25,100.45,460.63,100.14Z"/><path class="cls-2" d="M476.15,109.51a9.18,9.18,0,0,1-1.82,2.43,5.9,5.9,0,0,1-3.28,1.89,3.68,3.68,0,0,1-3.15-1.16,5.47,5.47,0,0,1-1.65-3.29,4.35,4.35,0,0,1,0-1q-1.32,1.77-2.64,3.59c-1.09,1.37-2,2.1-2.72,2.18q-2.64.33-3.05-3-.16-1.32,1.36-6.31,1.53-5.15,2.35-5.25c.28,0,.61.23,1,.81a3.44,3.44,0,0,1,.61,1.32s-.49,1.2-1.46,3.76a18.14,18.14,0,0,0-1.45,5.89c0,.08,0,.16.11.22q1.67-.87,4.69-5.77c.38-.54.94-1.48,1.7-2.81.24-.58.5-1.15.77-1.71a2.69,2.69,0,0,1,1.38-1.35c.11.12.43.42.93.91a1.28,1.28,0,0,1,.5.81c0-.18-.33.74-.9,2.77a15.54,15.54,0,0,0-.78,4.76,3.32,3.32,0,0,0,.58,1.5c.46.76,1,1.1,1.58,1a6.4,6.4,0,0,0,2.64-1.27A14.3,14.3,0,0,1,476,108.9Z"/><path class="cls-2" d="M484.24,100.13a4.6,4.6,0,0,1-.18,1.75,2.47,2.47,0,0,1-.93,1.46,1.77,1.77,0,0,1-.62-.87l-.18-.85a2.48,2.48,0,0,1,0-1,4.77,4.77,0,0,0,0-.93c-.07-.57-.35-.82-.84-.76-.8.1-1.77,1.22-2.89,3.37a23.43,23.43,0,0,0-2.34,6.68l-.12,2.22a3.32,3.32,0,0,1-.74,2,4.93,4.93,0,0,1-1.13-.61c-.64-.44-1-.85-1-1.21a18.62,18.62,0,0,1,.24-2.2c.35-1.72.74-3.84,1.19-6.36a26.07,26.07,0,0,1,.38-2.69,4.31,4.31,0,0,1,1-2,.77.77,0,0,1,.77.5,3.5,3.5,0,0,0,.51.88c.66-.76,1.34-1.53,2-2.3a4.68,4.68,0,0,1,2.65-1.5,1.28,1.28,0,0,1,1.34.7A11.11,11.11,0,0,1,484.24,100.13Z"/><path class="cls-2" d="M496,97.19c.18,1.48-.83,3.41-3,5.81s-4.28,3.78-6.23,4.15a3.07,3.07,0,0,0,1.55,2,3.17,3.17,0,0,0,2,.47,10.39,10.39,0,0,0,3.26-1.35q2.46-1.4,2.46-1.44a1,1,0,0,1,1,.19,11,11,0,0,1-3.08,2.84,9.86,9.86,0,0,1-3.85,2,4.65,4.65,0,0,1-3.93-1.25,5.58,5.58,0,0,1-1.72-3.38q-.45-3.09,2.55-7.51c2-3,4-4.56,6.14-4.81a2.46,2.46,0,0,1,1.81.64A2.51,2.51,0,0,1,496,97.19Zm-2.53.9a.84.84,0,0,0-.58-.24q-1.67.2-3.62,2.61a10.67,10.67,0,0,0-2.06,3.72,4.54,4.54,0,0,0,2.14-.86,23.72,23.72,0,0,0,1.93-1.71A8.38,8.38,0,0,0,493.46,98.09Z"/><path class="cls-2" d="M199.11,143.08l-.12,2.24a3.41,3.41,0,0,1-.74,2,5.39,5.39,0,0,1-1.14-.61c-.63-.45-1-.85-1-1.22a17.82,17.82,0,0,1,.25-2.22c.15-1.16,1.12-6.52,2.43-11.86q1.64-6.59,2.33-8.67c.18-.86.35-1.73.51-2.58.48-1.66,1.08-2.5,1.82-2.51s1.19.53,1.23,1.66q-1.41,4.31-2.38,7.62c-1.56,5.23-2.33,8.31-2.29,9.26a1.07,1.07,0,0,0,.05.42l3.54-5.16q3.56-4.8,4.77-4.83a1.57,1.57,0,0,1,.68.46c.33.3.5.51.51.61-.09.33-.22.79-.38,1.39a7.62,7.62,0,0,1-1.12,1.16c-.71.64-1.13,1-1.28,1.14a19,19,0,0,0-3.08,4.43,12.3,12.3,0,0,0-1.59,5.67,3.86,3.86,0,0,0,1.28,3,3.35,3.35,0,0,0,2.35.86q1.89,0,6.31-3.81h.59c.05,0,.1.17.15.53q-3.61,5.56-7.23,5.62a5.8,5.8,0,0,1-5.08-2.85,5.46,5.46,0,0,1-.43-1.56c-.14-.72-.25-1.09-.33-1.1S199.2,142.3,199.11,143.08Z"/></svg> \ No newline at end of file
diff --git a/web/cobrands/lincolnshire/layout.scss b/web/cobrands/lincolnshire/layout.scss
new file mode 100644
index 000000000..1c436f019
--- /dev/null
+++ b/web/cobrands/lincolnshire/layout.scss
@@ -0,0 +1,125 @@
+@import "_colours";
+@import "../sass/layout";
+
+.big-green-banner {
+ text-transform: none;
+}
+
+.nav-menu--main a.report-a-problem-btn {
+ color: $primary_text;
+}
+
+#front-main {
+ background-color: $front_main_background;
+ text-align: left;
+ #postcodeForm div {
+ margin: 0;
+ }
+}
+
+#main-nav {
+ float: none;
+ // Put the main FMS navigation below the site header
+ margin-top: 6.1em;
+
+ .ie9 & > * {
+ #{$right}: auto;
+ #{$left}: 0;
+ }
+}
+
+
+body.frontpage, body.twothirdswidthpage, body.fullwidthpage, body.authpage {
+
+ // White "nav bar" with red border-top, below the logo
+ #site-header {
+ &:after {
+ content: " ";
+ height: 3.5em;
+ display: block;
+ border-bottom: solid 5px $lincs-border;
+ border-top: solid 5px darken($primary, 5%);
+ background-color: white;
+ }
+ }
+
+ .nav-menu {
+ a, span {
+ display: inline-block; // So the chevrons appear correctly
+ font-size: 1.2em;
+ }
+ a {
+ &:hover {
+ background: transparent;
+ color: $primary;
+ }
+ }
+ span {
+ color: $primary_text;
+ }
+ }
+
+ // Stop the 'report a problem' button being red on non-map pages
+ .nav-menu--main a.report-a-problem-btn {
+ background-color: transparent;
+ }
+
+ // Put FAQ side nav at correct vertical position
+ .content .sticky-sidebar aside {
+ top: 12.5em;
+ }
+}
+
+body.mappage {
+ // Add a red border-bottom *inside* the header
+ #site-header {
+ @include box-sizing(border-box);
+ border-bottom: solid 5px $primary;
+ }
+
+ // Reinstate the floated nav bar on map pages
+ #main-nav {
+ float: #{$right};
+ margin-top: -0.375em;
+
+ // IE9 uses absolute positioning rather than floats.
+ .ie9 & {
+ float: none;
+ & > * {
+ #{$right}: 0;
+ #{$left}: auto;
+ }
+ }
+ }
+
+ // A few changes to the nav items now they're on a different background
+ .nav-menu {
+ a, span {
+ color: white;
+ font-size: 1.1em;
+ }
+
+ a:hover {
+ background: transparent;
+ text-decoration: underline;
+ }
+
+ a.report-a-problem-btn {
+ color: white;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ background-color: $lincs-pop;
+ &:hover,
+ &:active,
+ &:focus {
+ background-color: darken($lincs-pop, 10%);
+ text-decoration: none;
+ }
+ }
+ }
+
+ .big-green-banner {
+ display: block;
+ text-transform: none;
+ }
+}
diff --git a/web/cobrands/lincolnshire/roadworks.js b/web/cobrands/lincolnshire/roadworks.js
new file mode 100644
index 000000000..a9fa64bb6
--- /dev/null
+++ b/web/cobrands/lincolnshire/roadworks.js
@@ -0,0 +1,42 @@
+(function(){
+
+if (!fixmystreet.maps) {
+ return;
+}
+
+fixmystreet.roadworks.display_message = function(feature) {
+ var attr = feature.attributes,
+ start = new Date(attr.start.replace(/{ts '([^ ]*).*/, '$1')).toDateString(),
+ end = new Date(attr.end.replace(/{ts '([^ ]*).*/, '$1')).toDateString(),
+ tooltip = attr.tooltip.replace(/\\n/g, '\n'),
+ desc = attr.works_desc.replace(/\\n/g, '\n');
+
+ var $msg = $('<div class="js-roadworks-message box-warning"><p>Roadworks are scheduled near this location, so you may not need to report your issue.</p></div>');
+ var $dl = $("<dl></dl>").appendTo($msg);
+ $dl.append("<dt>Dates</dt>");
+ $dl.append($("<dd></dd>").text(start + " until " + end));
+ $dl.append("<dt>Summary</dt>");
+ var $summary = $("<dd></dd>").appendTo($dl);
+ tooltip.split("\n").forEach(function(para) {
+ if (para.match(/^(\d{2}\s+\w{3}\s+(\d{2}:\d{2}\s+)?\d{4}( - )?){2}/)) {
+ // skip showing the date again
+ return;
+ }
+ $summary.append(para).append("<br />");
+ });
+ if (desc) {
+ $dl.append("<dt>Description</dt>");
+ $dl.append($("<dd></dd>").text(desc));
+ }
+
+ $('.change_location').after($msg);
+};
+
+fixmystreet.assets.add($.extend(true, {}, fixmystreet.roadworks.layer_future, {
+ http_options: { params: { organisation_id: '1070' } },
+ body: "Lincolnshire County Council"
+}));
+// NB Lincs don't want forward planning works displayed, so
+// fixmystreet.roadworks.layer_planned is deliberately missing here.
+
+})();