-
-
Notifications
You must be signed in to change notification settings - Fork 242
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[SouthKesteven] Added cobrand front-end
- Loading branch information
1 parent
fbbb05a
commit 3a5f614
Showing
18 changed files
with
1,036 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,280 @@ | ||
=head1 NAME | ||
FixMyStreet::Cobrand::SouthKesteven - code specific to the SouthKesteven cobrand | ||
=head1 SYNOPSIS | ||
We integrate with SouthKesteven's Confirm back end. | ||
=head1 DESCRIPTION | ||
=cut | ||
|
||
package FixMyStreet::Cobrand::SouthKesteven; | ||
use parent 'FixMyStreet::Cobrand::Whitelabel'; | ||
|
||
use strict; | ||
use warnings; | ||
|
||
use Moo; | ||
|
||
use LWP::Simple; | ||
use URI; | ||
use Try::Tiny; | ||
use JSON::MaybeXS; | ||
|
||
|
||
=pod | ||
Confirm backends expect some extra values and have some maximum lengths for | ||
certain fields. These roles implement that behaviour. | ||
=cut | ||
|
||
with 'FixMyStreet::Roles::ConfirmOpen311'; | ||
with 'FixMyStreet::Roles::ConfirmValidation'; | ||
|
||
=head2 Defaults | ||
=over 4 | ||
=cut | ||
|
||
sub council_area_id { '2226' } | ||
sub council_area { 'South Kesteven' } | ||
sub council_name { 'South Kesteven District Council' } | ||
sub council_url { 'southkesteven' } | ||
|
||
=item * Users with a Aberdeenshire.gov.uk email can always be found in the admin. | ||
=cut | ||
|
||
sub admin_user_domain { 'southkesteven.gov.uk' } | ||
|
||
=item * Allows anonymous reporting | ||
=cut | ||
|
||
sub allow_anonymous_reports { 'button' } | ||
|
||
=item * Aberdeenshire use their own privacy policy | ||
=cut | ||
|
||
sub privacy_policy_url { | ||
'https://www.southkesteven.gov.uk/your-council-and-democracy/data-protection-and-freedom-information/privacy-notice' | ||
} | ||
|
||
=item * Users can not reopen reports | ||
=cut | ||
|
||
sub reopening_disallowed { | ||
my ($self, $problem) = @_; | ||
|
||
# Only staff can reopen reports. | ||
my $c = $self->{c}; | ||
my $user = $c->user; | ||
return 0 if ($c->user_exists && $user->from_body && $user->from_body->cobrand_name eq $self->council_name); | ||
return 1; | ||
} | ||
|
||
=item * Jobs from Confirm that are completed (marked as fixed or closed) are not displayed after 48 hours | ||
=cut | ||
|
||
sub report_age { | ||
return { | ||
closed => { | ||
job => '48 hours', | ||
}, | ||
fixed => { | ||
job => '48 hours', | ||
}, | ||
}; | ||
} | ||
|
||
=item * We do not send questionnaires. | ||
=cut | ||
|
||
sub send_questionnaires { 0 } | ||
|
||
=item * Don't show reports before the go-live date, 4th October 2023 | ||
=cut | ||
|
||
sub cut_off_date { '2023-10-04' } | ||
|
||
=item * Add display_name as an extra contact field | ||
=cut | ||
|
||
sub contact_extra_fields { [ 'display_name' ] } | ||
|
||
=item * Custom label and hint for new report detail field | ||
=cut | ||
|
||
sub new_report_detail_field_label { | ||
'Where is the location of the problem? Please be specific and identify the nearest property address or landmark to the problem.' | ||
} | ||
|
||
sub new_report_detail_field_hint { | ||
"e.g. 'The drain outside number 42 is blocked'" | ||
} | ||
|
||
=pod | ||
=back | ||
=cut | ||
|
||
=head2 open311_skip_report_fetch | ||
Do not fetch reports from Confirm for categories that are marked private. | ||
=cut | ||
|
||
sub open311_skip_report_fetch { | ||
my ( $self, $problem ) = @_; | ||
|
||
return 1 if $problem->non_public; | ||
} | ||
|
||
=head2 open311_update_missing_data | ||
Unlike the ConfirmOpen311 role, we want to fetch a central asset ID here, not a | ||
site code. | ||
=cut | ||
|
||
sub open311_update_missing_data { | ||
my ($self, $row, $h, $contact) = @_; | ||
|
||
# In case the client hasn't given us a central asset ID, look up the | ||
# closest asset from the WFS service at the point we're sending the report | ||
if (!$row->get_extra_field_value('central_asset_id')) { | ||
if (my $id = $self->lookup_site_code($row)) { | ||
$row->update_extra_field({ name => 'central_asset_id', value => $id }); | ||
} | ||
} | ||
} | ||
|
||
sub lookup_site_code_config { | ||
my $host = FixMyStreet->config('STAGING_SITE') ? "tilma.staging.mysociety.org" : "tilma.mysociety.org"; | ||
return { | ||
buffer => 200, # metres | ||
url => "https://$host/mapserver/southkesteven", | ||
srsname => "urn:ogc:def:crs:EPSG::27700", | ||
typename => "WSF", | ||
property => "CentralAssetId", | ||
accept_feature => sub { 1 } | ||
}; | ||
} | ||
|
||
=head2 open311_extra_data_include | ||
SouthKesteven want report title to be in description field, along with | ||
subcategory text, which is not otherwise captured by Confirm. Report detail | ||
goes into the location field. | ||
Subcategory text may need to be fetched from '_wrapped_service_code' | ||
extra data. | ||
=cut | ||
|
||
around open311_extra_data_include => sub { | ||
my ( $orig, $self, $row, $h ) = @_; | ||
my $open311_only = $self->$orig( $row, $h ); | ||
|
||
my $category = $row->category; | ||
my $wrapped_for_report | ||
= $row->get_extra_field_value('_wrapped_service_code'); | ||
my $wrapped_categories | ||
= $row->contact->get_extra_field( code => '_wrapped_service_code' ); | ||
|
||
if ( $wrapped_for_report && $wrapped_categories ) { | ||
($category) | ||
= grep { $_->{key} eq $wrapped_for_report } | ||
@{ $wrapped_categories->{values} }; | ||
|
||
$category = $category->{name}; | ||
} | ||
|
||
push @$open311_only, { | ||
name => 'description', | ||
value => $category . ' | ' . $row->title, | ||
}; | ||
push @$open311_only, { | ||
name => 'location', | ||
value => $row->detail, | ||
}; | ||
|
||
return $open311_only; | ||
}; | ||
|
||
|
||
sub disambiguate_location { | ||
my $self = shift; | ||
my $string = shift; | ||
|
||
my $town = 'South Kesteven'; | ||
|
||
# As it's the requested example location, try to avoid a disambiguation page | ||
$town .= ', GL20 5XA' | ||
if $string =~ /^\s*gloucester\s+r(oa)?d,\s*tewkesbury\s*$/i; | ||
|
||
return { | ||
%{ $self->SUPER::disambiguate_location() }, | ||
town => $town, | ||
centre => '51.825508771929094,-2.1263689427866654', | ||
span => '0.53502964014244,1.07233523662321', | ||
bounds => [ | ||
51.57753580138198, -2.687537158717889, | ||
52.11256544152442, -1.6152019220946803, | ||
], | ||
}; | ||
} | ||
|
||
=head2 is_defect | ||
Returns true if it's a fetched job from Confirm. | ||
=cut | ||
|
||
sub is_defect { | ||
my ($self, $p) = @_; | ||
return $p->external_id && $p->external_id =~ /^JOB_/; | ||
} | ||
|
||
=head2 pin_colour | ||
Green for anything completed or closed, yellow for the rest, | ||
apart from defects which are blue. | ||
=cut | ||
|
||
sub pin_colour { | ||
my ( $self, $p ) = @_; | ||
|
||
return 'blue-work' if $self->is_defect($p); | ||
return 'green-tick' if $p->is_fixed || $p->is_closed; | ||
return 'yellow-cone'; | ||
} | ||
|
||
sub path_to_pin_icons { '/i/pins/whole-shadow-cone-spot/' } | ||
|
||
=head2 open311_config | ||
Send multiple photos as files to Open311 | ||
=cut | ||
|
||
sub open311_config { | ||
my ($self, $row, $h, $params) = @_; | ||
|
||
$params->{multi_photos} = 1; | ||
$params->{upload_files} = 1; | ||
} | ||
|
||
1; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
[% | ||
|
||
color_primary = '#004289' | ||
color_pale_grey = '#f0f0f0' | ||
|
||
body_font_family = "Verdana, sans-serif" | ||
|
||
header_background_color = color_primary | ||
header_text_color = color_white | ||
|
||
secondary_column_background_color = color_pale_grey | ||
|
||
link_text_color = color_primary | ||
link_hover_text_color = '#0081c9' | ||
|
||
button_background_color = '#8c4e8d' | ||
button_text_color = color_white | ||
|
||
logo_file = 'south-kesteven-logo.png' | ||
logo_width = "293" # pixel measurement, but without 'px' suffix | ||
logo_height = "60" # pixel measurement, but without 'px' suffix | ||
|
||
%] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
<footer class="southkesteven-footer"> | ||
<div class="container footer-grid"> | ||
<div class="newsletter-container"> | ||
<h3>SKtoday - digital newsletter</h3> | ||
<p>SKtoday is the magazine for all residents and business across the 365 square miles of South Kesteven, with news and features on Council business and the local area. Sign up with us to receive notifications of when the next digital edition is published online.</p> | ||
<a class="btn-white" href="https://www.southkesteven.gov.uk/sktoday-digital-newsletter">Subscribe</a> | ||
|
||
<div class="social-container"> | ||
<h2>Follow us</h2> | ||
<p>Find out more about local services and follow our social media accounts</p> | ||
<ul> | ||
<li> | ||
<a class="social-media-link-icon--facebook" href="https://www.facebook.com/southkdc" aria-label="Facebook"> | ||
<span class="fab fa-facebook fa-2x"></span> | ||
</a> | ||
</li> | ||
<li> | ||
<a class="social-media-link-icon--twitter" href="https://www.x.com/southkesteven" aria-label="X"> | ||
<span class="fab fa-x-twitter fa-2x"></span> | ||
</a> | ||
</li> | ||
<li> | ||
<a class="social-media-link-icon--instagram" href="https://www.instagram.com/discoversouthk" aria-label="Instagram"> | ||
<span class="fab fa-instagram fa-2x"></span> | ||
</a> | ||
</li> | ||
<li> | ||
<a class="social-media-link-icon--linkedin" href="https://www.linkedin.com/company/south-kesteven-council" aria-label="LinkedIn"> | ||
<span class="fab fa-linkedin fa-2x"></span> | ||
</a> | ||
</li> | ||
<li> | ||
<a class="social-media-link-icon--youtube" href="https://www.youtube.com/@SouthKestevenGovUK" aria-label="Youtube"> | ||
<span class="fab fa-youtube fa-2x"></span> | ||
</a> | ||
</li> | ||
</ul> | ||
</div> | ||
</div> | ||
|
||
|
||
<div class="contact-container"> | ||
<h3>Contact the council</h3> | ||
<p>Complete the enquiry form on our 'contact us' page below, or find details of your local office.</p> | ||
<p><a class="btn-white" href="https://www.southkesteven.gov.uk/contact-us">Contact us</a></p> | ||
<p><a class="btn-white" href="https://www.southkesteven.gov.uk/who-call-emergency">Who to call in an emergency</a></p> | ||
<p><a class="btn-white" href="https://www.southkesteven.gov.uk/contact-us-office-details">Office addresses and phone numbers</a></p> | ||
<div> | ||
<a href="https://www.southkesteven.gov.uk/armed-forces-community-covenant"> | ||
<img style="margin-left: -7px" loading="lazy" src="/cobrands/southkesteven/images/armed-forces.png" width="165" height="300" alt="Armed forces logo"> | ||
</a> | ||
</div> | ||
</div> | ||
|
||
<nav class="footer-nav" aria-labelledby="block-footersecondary-menu"> | ||
<h2 id="block-footersecondary-menu" class="screen-reader-only">Footer secondary</h2> | ||
<ul> | ||
<li><a href="https://www.southkesteven.gov.uk/accessibility">Accessibility</a></li> | ||
<li><a href="https://www.southkesteven.gov.uk/your-council-and-democracy/data-protection-and-freedom-information/cookie-policy">Cookies</a></li> | ||
<li><a href="https://www.southkesteven.gov.uk/your-council-and-democracy/data-protection-and-freedom-information/privacy-notice">Privacy</a></li> | ||
</ul> | ||
</nav> | ||
</div> | ||
|
||
<div class="sk-logo-container"> | ||
<a href="https://www.southkesteven.gov.uk/" aria-label="Go to South Keveston council home page"> | ||
<img src="/cobrands/southkesteven/images/southkesteven-logo.svg" alt=""> | ||
</a> | ||
</div> | ||
</footer> | ||
|
||
[% PROCESS '_footer_main_nav.html' %] | ||
[% PROCESS '_footer_extra_powered_by.html' %] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
[% PROCESS 'footer_extra_js_base.html' highways=1 roadworks=1 validation=1 cobrand_js=1 %] |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<link rel="preconnect" href="https://fonts.googleapis.com"> | ||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> | ||
<link href="https://fonts.googleapis.com/css2?family=Roboto:[email protected]&display=swap" rel="stylesheet"> | ||
<link rel="icon" type="image/png" sizes="32x32" href="/cobrands/southkesteven/images/favicon.ico"> | ||
<link rel="stylesheet" media="all" href="https://use.fontawesome.com/releases/v6.4.2/css/all.css"> | ||
[% INCLUDE 'tracking_code.html' %] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
<a href="https://www.southkesteven.gov.uk/" id="site-logo">South Kesteven District Council</a> | ||
<a href="/" id="report-cta" title="[%- loc('Report a problem') -%]">[%- loc('Report') -%]</a> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
South Kesteven District Council |
Oops, something went wrong.