diff options
25 files changed, 466 insertions, 0 deletions
diff --git a/perllib/Cobrands/Southampton/Util.pm b/perllib/Cobrands/Southampton/Util.pm new file mode 100644 index 000000000..ee7d8e728 --- /dev/null +++ b/perllib/Cobrands/Southampton/Util.pm @@ -0,0 +1,113 @@ +#!/usr/bin/perl -w +# +# Util.pm: +# Southampton cobranding for FixMyStreet. +# +# Copyright (c) 2011 UK Citizens Online Democracy. All rights reserved. +# Email: matthew@mysociety.org. WWW: http://www.mysociety.org + +package Cobrands::Southampton::Util; +use strict; +use Carp; +use URI::Escape; +use mySociety::VotingArea; + +sub new { + my $class = shift; + return bless {}, $class; +} + +=item site_restriction Q + +Return a site restriction clause and a site key. + +=cut +sub site_restriction { + return ("and council='2567'", 'southampton'); +} + +=item + +Return the base url for this cobranded site + +=cut + +sub base_url { + my $base_url = mySociety::Config::get('BASE_URL'); + if ($base_url !~ /southampton/) { + $base_url =~ s/http:\/\/(?!www\.)/http:\/\/southampton\./g; + $base_url =~ s/http:\/\/www\./http:\/\/southampton\./g; + } + return $base_url; +} + +=item site_title + +Return the title to be used in page heads + +=cut + +sub site_title { + my ($self) = @_; + return 'Southampton City Council FixMyStreet'; +} + +sub enter_postcode_text { + my ($self,$q) = @_; + return 'Enter a Southampton postcode, or street name and area'; +} + +=item council_check COUNCILS QUERY CONTEXT + +Return a boolean indicating whether COUNCILS are okay for the location +in the QUERY, and an error message appropriate to the CONTEXT. + +=cut + +sub council_check { + my ($self, $params, $q, $context) = @_; + my $councils; + if ($params->{all_councils}) { + $councils = $params->{all_councils}; + } elsif (defined $params->{lat}) { + my $parent_types = $mySociety::VotingArea::council_parent_types; + $councils = mySociety::MaPit::call('point', "4326/$params->{lon},$params->{lat}", type => $parent_types); + } + my $council_match = defined $councils->{2567}; + if ($council_match) { + return 1; + } + my $url = 'http://www.fixmystreet.com/'; + $url .= 'alert' if $context eq 'alert'; + $url .= '?pc=' . URI::Escape::uri_escape_utf8($q->param('pc')) if $q->param('pc'); + my $error_msg = "That location is not covered by Southampton. +Please visit <a href=\"$url\">the main FixMyStreet site</a>."; + return (0, $error_msg); +} + +# All reports page only has the one council. +sub all_councils_report { + return 0; +} + +=item disambiguate_location S Q + +Given a string representing a location (street and area expected), +bias the viewport to around Southampton. + +=cut + +sub disambiguate_location { + my ($self, $s, $q) = @_; + $s = "ll=50.913822,-1.400493&spn=0.084628,0.15701&$s"; + return $s; +} + +sub recent_photos { + my ($self, $num, $lat, $lon, $dist) = @_; + $num = 2 if $num == 3; + return Problems::recent_photos($num, $lat, $lon, $dist); +} + +1; + diff --git a/templates/website/cobrands/southampton/footer b/templates/website/cobrands/southampton/footer new file mode 100644 index 000000000..dac5d9c1a --- /dev/null +++ b/templates/website/cobrands/southampton/footer @@ -0,0 +1,25 @@ + </div> + </div> + + <!-- End of main content area --> + + + + <!-- Start of footer --> + + <div id="footer"> + <a href="http://www.southampton.gov.uk/council-partners/accesstoinfo/" class="accessInfo"><img alt="Access to Information" src="/cobrands/southampton/accessInfo.gif" /></a> + <ul id="bottomMenu"> + <li><a href="http://www.southampton.gov.uk/tools/copyright.aspx">Copyright © Southampton City Council 2009</a>|</li> + <li><a href="http://www.southampton.gov.uk/tools/privacypolicy.aspx">Privacy</a>|</li> + <li><a href="http://www.southampton.gov.uk/tools/disclaimer.aspx">Disclaimer</a>|</li> + <li><a href="http://www.southampton.gov.uk/tools/sitestats.aspx">Site Statistics</a>|</li> + <li><a href="http://www.southampton.gov.uk/living/emergency-planning/">Emergencies</a></li> + </ul> + </div> + + <!-- End of footer --> + + </div> +</body> +</html> diff --git a/templates/website/cobrands/southampton/header b/templates/website/cobrands/southampton/header new file mode 100644 index 000000000..4f47c92e5 --- /dev/null +++ b/templates/website/cobrands/southampton/header @@ -0,0 +1,127 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <script type="text/javascript" src="/yui/utilities.js"></script> + <script type="text/javascript" src="/js.js"></script> + {{ $map_js }} + {{ $robots }} + + <title>{{ $title }}{{ $site_title }}</title> + <link rel="stylesheet" type="text/css" href="/css/core.css" /> + <link rel="stylesheet" type="text/css" href="/cobrands/southampton/style.css" /> + <link rel="stylesheet" type="text/css" href="/cobrands/southampton/css.css" /> + {{ $rss }} +</head> +<body> + <ul id="topMenu"> + <li><a href="/#content">Skip to content</a>|</li> + <li><a href="http://www.southampton.gov.uk/tools/accesskeys.aspx">Access keys</a>|</li> + <li><a href="http://www.southampton.gov.uk/tools/accessibility.aspx">Accessibility Information</a>|</li> + <li><a href="http://app.readspeaker.com/proreader/proreader.php?cid=5386&lang=en_uk&url=http://www.southampton.gov.uk" class="listen" onclick='window.open(this.href+"&selhtml="+escape(selectedString), "prwin", "width=190, height=120, resizable=1, scrollbars=1, screenX=0, screenY=0, left=0, top=0"); return false;'>Listen</a>|</li> + <li><a href="http://www.southampton.gov.uk/tools/help.aspx">Site help</a>|</li> + <li><a href="http://www.southampton.gov.uk/tools/sitemap.aspx">Site map</a></li> + </ul> + <div id="wrapper"> + + <!-- Start of header --> + + <div id="header"> + <img class="logo" alt="Southampton City Council Logo" src="/cobrands/southampton/SCClogo.png" /> + <a class="siteTitle" href="http://www.southampton.gov.uk">Southampton City Council</a> + <div id="searchWrap"> + <form id="frmSearch" method="get" action="http://websearch.southampton.gov.uk/search"> + <fieldset> + <label for="searchbox">Search the site<br /></label> + <input class="text" type="text" value="Enter keywords" id="searchbox" name="q"/> + <input type="hidden" id="site" name="site" value="SouthamptonOnline"/> + <input type="hidden" id="client" name="client" value="SouthamptonOnline"/> + <input type="hidden" id="proxystylesheet" name="proxystylesheet" value="SouthamptonOnline"/> + <input type="hidden" id="output" name="output" value="xml_no_dtd"/> + <input class="button" type="submit" value="search" /> + </fieldset> + </form> + <form id="whereILive" method="post" action="http://www.southampton.gov.uk/MySoton/default.aspx"> + <fieldset> + <label for="PostCode">Where I live + <img class="moreInfo" src="/cobrands/southampton/information.gif" alt="Find information about where you live" title="Find information about where you live" /><br /> + </label> + <input id="PostCode" name="Postcode" class="text2" type="text" value="Enter street/postcode" /> + <input class="button" type="submit" value="go" /> + </fieldset> + </form> + + </div> + <a class="mctv" href="http://www.southampton.mycounciltv.org"><img src="/cobrands/southampton/mctv.png" alt="Link to MyCouncilTV videos" /></a> + <ul id="topNav"> + <li><a href="http://www.southampton.gov.uk/online/">Do it online</a></li> + <li><a href="http://www.southampton.gov.uk/customer-service/">Customer Services</a></li> + <li><a href="http://www.southampton.gov.uk/business/">Business</a></li> + <li><a href="http://www.southampton.gov.uk/s-environment/">Environment</a></li> + <li><a href="http://www.southampton.gov.uk/learning/">Learning</a></li> + <li><a href="http://www.southampton.gov.uk/s-leisure/">Leisure</a></li> + <li><a href="http://www.southampton.gov.uk/living/">Living</a></li> + <li><a href="http://www.southampton.gov.uk/council-partners/">Council/Partners</a></li> + <li><a href="http://www.southampton.gov.uk/news-events/">News and events</a></li> + <li><a href="http://www.southampton.gov.uk/visitors/">Visitors</a></li> + </ul> + <p class="atoz">A-Z of Council Services:</p> + <ul id="atoz"> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=A">A</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=B">B</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=C">C</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=D">D</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=E">E</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=F">F</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=G">G</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=H">H</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=I">I</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=J">J</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=K">K</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=L">L</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=M">M</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=N">N</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=O">O</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=P">P</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=Q">Q</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=R">R</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=S">S</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=T">T</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=U">U</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=V">V</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=W">W</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=X">X</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=Y">Y</a></li> + <li><a href="http://www.southampton.gov.uk/atoz/default.aspx?L=Z">Z</a></li> + </ul> + <ul id="contacts"> + <li><a href="http://www.southampton.gov.uk/customer-service/contact/">Contact us</a></li> + <li><a href="http://map.southampton.gov.uk/gis/">location and maps</a></li> + </ul> + + </div> + + <!-- End of header --> + + + <!-- Start of menu bar --> + + <div id="menuBar"> + <ul id="leftMenu"> + <li class="parent"><a href="/">Fix My Street</a></li> + <li class="selected"><a href="/">Report a problem</a></li> + <li><a href="/reports/Southampton">All reports</a></li> + <li><a href="/alerts">Local alerts</a></li> + <li><a href="/faq">Help</a></li> + <li><a href="/contact">Contact</a></li> + </ul> + </div> + + + <!-- End of menu bar --> + + + <!-- Start of main content area --> + + <div id="contentArea"> + <div id="mysociety"> diff --git a/web/cobrands/southampton/SCClogo.png b/web/cobrands/southampton/SCClogo.png Binary files differnew file mode 100644 index 000000000..74a037a8c --- /dev/null +++ b/web/cobrands/southampton/SCClogo.png diff --git a/web/cobrands/southampton/accessInfo.gif b/web/cobrands/southampton/accessInfo.gif Binary files differnew file mode 100644 index 000000000..418698ed5 --- /dev/null +++ b/web/cobrands/southampton/accessInfo.gif diff --git a/web/cobrands/southampton/bg-box.gif b/web/cobrands/southampton/bg-box.gif Binary files differnew file mode 100644 index 000000000..559a5ae00 --- /dev/null +++ b/web/cobrands/southampton/bg-box.gif diff --git a/web/cobrands/southampton/bg-button.gif b/web/cobrands/southampton/bg-button.gif Binary files differnew file mode 100644 index 000000000..f5f8122dc --- /dev/null +++ b/web/cobrands/southampton/bg-button.gif diff --git a/web/cobrands/southampton/bg-footer.gif b/web/cobrands/southampton/bg-footer.gif Binary files differnew file mode 100644 index 000000000..89919c1cd --- /dev/null +++ b/web/cobrands/southampton/bg-footer.gif diff --git a/web/cobrands/southampton/bg-header.jpg b/web/cobrands/southampton/bg-header.jpg Binary files differnew file mode 100644 index 000000000..70e0ec46a --- /dev/null +++ b/web/cobrands/southampton/bg-header.jpg diff --git a/web/cobrands/southampton/bg-input.gif b/web/cobrands/southampton/bg-input.gif Binary files differnew file mode 100644 index 000000000..267fe9b6b --- /dev/null +++ b/web/cobrands/southampton/bg-input.gif diff --git a/web/cobrands/southampton/bg-repeat.gif b/web/cobrands/southampton/bg-repeat.gif Binary files differnew file mode 100644 index 000000000..b68346517 --- /dev/null +++ b/web/cobrands/southampton/bg-repeat.gif diff --git a/web/cobrands/southampton/blue-line.gif b/web/cobrands/southampton/blue-line.gif Binary files differnew file mode 100644 index 000000000..c7a587ee5 --- /dev/null +++ b/web/cobrands/southampton/blue-line.gif diff --git a/web/cobrands/southampton/bullet.gif b/web/cobrands/southampton/bullet.gif Binary files differnew file mode 100644 index 000000000..a86ef002b --- /dev/null +++ b/web/cobrands/southampton/bullet.gif diff --git a/web/cobrands/southampton/bulletActiveSG.gif b/web/cobrands/southampton/bulletActiveSG.gif Binary files differnew file mode 100644 index 000000000..6f4e3e438 --- /dev/null +++ b/web/cobrands/southampton/bulletActiveSG.gif diff --git a/web/cobrands/southampton/css.css b/web/cobrands/southampton/css.css new file mode 100644 index 000000000..85f66dcc3 --- /dev/null +++ b/web/cobrands/southampton/css.css @@ -0,0 +1,47 @@ +#mysociety #map_box { + width: 380px; +} +#mysociety #map, #mysociety #drag { + width: 378px; + height: 378px; +} +#mysociety #watermark { + background: url("/i/mojwatermark-378.png"); + height: 84px; + width: 171px; + position: absolute; + bottom: 0; + right: 0; +} +#mysociety p#fixed, #mysociety p#unknown { + margin-right: 400px; + width: auto; +} +#mysociety h1 { + margin: 0; + font-size: 175%; +} +#mysociety h2 { + font-size: 140%; +} +#mysociety select, #mysociety input, #mysociety textarea { + font-size: 99%; +} +#mysociety a.unsuitable-report { + font-size: small; +} +#mysociety blockquote { + border-left: solid 4px #768eb5; +} +#mysociety .a { + color: #000000; + background-color: #e9eef7; +} +#mysociety #postcodeForm { + background-color: #e9eef7; +} +#mysociety #front_stats div { + background-color: #e9eef7; + width: 6em; + padding: 0.5em; +} diff --git a/web/cobrands/southampton/css.scss b/web/cobrands/southampton/css.scss new file mode 100644 index 000000000..57cb95a8f --- /dev/null +++ b/web/cobrands/southampton/css.scss @@ -0,0 +1,67 @@ +$map_width: 378px; +$background: #E9EEF7; +$darker: #768EB5; + +#mysociety { + + // Smaller map + + #map_box { + width: $map_width + 2px; + } + #map, #drag { + width: $map_width; + height: $map_width; + } + #watermark { + background: url("/i/mojwatermark-378.png"); + height: 84px; + width: 171px; + position: absolute; + bottom: 0; + right: 0; + } + + p#fixed, p#unknown { + margin-right: $map_width + 22px; + width: auto; + } + + // Generics + + h1 { + margin: 0; + font-size: 175%; + } + h2 { + font-size: 140%; + } + + select, input, textarea { + font-size: 99%; + } + + a.unsuitable-report { + font-size: small; + } + + blockquote { + border-left: solid 4px $darker; + } + + .a { + color: #000000; + background-color: $background; + } + + #postcodeForm { + background-color: $background; + } + + #front_stats div { + background-color: $background; + width: 6em; + padding: 0.5em; + } + +} diff --git a/web/cobrands/southampton/ff.png b/web/cobrands/southampton/ff.png Binary files differnew file mode 100644 index 000000000..ef7d91148 --- /dev/null +++ b/web/cobrands/southampton/ff.png diff --git a/web/cobrands/southampton/forms.png b/web/cobrands/southampton/forms.png Binary files differnew file mode 100644 index 000000000..4f278e9ae --- /dev/null +++ b/web/cobrands/southampton/forms.png diff --git a/web/cobrands/southampton/ie6.png b/web/cobrands/southampton/ie6.png Binary files differnew file mode 100644 index 000000000..d6179fa02 --- /dev/null +++ b/web/cobrands/southampton/ie6.png diff --git a/web/cobrands/southampton/information.gif b/web/cobrands/southampton/information.gif Binary files differnew file mode 100644 index 000000000..ea2f14bd2 --- /dev/null +++ b/web/cobrands/southampton/information.gif diff --git a/web/cobrands/southampton/line.gif b/web/cobrands/southampton/line.gif Binary files differnew file mode 100644 index 000000000..fa6ddca0c --- /dev/null +++ b/web/cobrands/southampton/line.gif diff --git a/web/cobrands/southampton/logo.png b/web/cobrands/southampton/logo.png Binary files differnew file mode 100644 index 000000000..71bdc9d97 --- /dev/null +++ b/web/cobrands/southampton/logo.png diff --git a/web/cobrands/southampton/mctv.png b/web/cobrands/southampton/mctv.png Binary files differnew file mode 100644 index 000000000..17f3ecec6 --- /dev/null +++ b/web/cobrands/southampton/mctv.png diff --git a/web/cobrands/southampton/safari.png b/web/cobrands/southampton/safari.png Binary files differnew file mode 100644 index 000000000..e99547a7f --- /dev/null +++ b/web/cobrands/southampton/safari.png diff --git a/web/cobrands/southampton/style.css b/web/cobrands/southampton/style.css new file mode 100644 index 000000000..400859102 --- /dev/null +++ b/web/cobrands/southampton/style.css @@ -0,0 +1,87 @@ +body {font-family:Verdana, Geneva, sans-serif; font-size:62.5%;}
+
+a {text-decoration:none; color:#1c4384; font-weight:bold;}
+
+a:hover {text-decoration:underline;}
+
+p {margin:0 0 10px 0;}
+
+/* ******* Start of Header ******* */
+
+ul#topMenu {width:860px; height:15px; margin:13px auto 3px auto;}
+ul#topMenu li {float:left; list-style-type:none;}
+ul#topMenu a {padding:0 5px 2px 5px; font-size:0.9em; color:#000; font-weight:400;}
+
+#wrapper {width:960px; height:auto; margin:0 auto; background:url(bg-repeat.gif) repeat-y;}
+#header {width:100%; height:176px; background:url(bg-header.jpg) no-repeat; background-position:1px 0px;}
+#header .logo {float:left; width:87px; height:81px; margin:25px 0 17px 46px;}
+#header a.siteTitle {height:27px; width:287px; background:url(logo.png) no-repeat; display:block; font-family:verdana; float:left; margin:60px 0 0 15px; text-indent:-9999px;}
+
+a.mctv {float:right; height:37px; width:104px; margin:15px 7px 0 0;}
+a.mctv img {border:none;}
+
+#searchWrap {width:210px; height:auto; float:right; margin:10px 30px 0 0;}
+#searchWrap form {border:none; padding:0; margin:0 0 10px 0;}
+#searchWrap fieldset {border:none; padding:0; margin:0;}
+#searchWrap label {color:#1b4384; font-weight:700; font-size:1.1em; margin:0; padding:0;}
+#searchWrap input {float:left; background:url(bg-input.gif) repeat-x; margin:3px 0 0 0; line-height:16px; padding:3px 5px 3px 4px;}
+#searchWrap .button {background:url(bg-button.gif) repeat-x; margin:3px 0 0 5px; float:left; height:26px; padding:0 3px 4px 3px; color:#fff; border:none;}
+
+.moreInfo {margin:0 0 -2px 2px;}
+.text {width:109px; color:#999;}
+.text2 {width:137px; color:#999;}
+
+ul#topNav {width:870px; height:17px; background:#1b4384; clear:both; margin:0 auto; padding:3px 0 1px 0;}
+ul#topNav li {float:left; list-style-type:none; background:url(line.gif) no-repeat 0 2px;}
+ul#topNav li:first-child {background:none;}
+ul#topNav li a {color:#ffffff; font-size:1.2em; padding:0 7px 0 8px; font-size:1.2em; font-weight:400;}
+
+p.atoz {float:left; margin:8px 0 0 43px; padding:5px 5px 3px 0; font-size:1.2em; border-bottom:1px solid #E0DBEF;}
+ul#atoz {width:485px; float:left; margin:13px 0 0 0; border-bottom:1px solid #E0DBEF; padding:0 0 1px 0;}
+ul#atoz li {list-style-type:none; display:inline;}
+ul#atoz li a {font-size:13px; font-weight:400;}
+
+ul#contacts {float:right; margin:13px 36px 0 0; padding:0;}
+ul#contacts li {float:left; list-style-type:none; background:url(blue-line.gif) no-repeat 0 2px;}
+ul#contacts li:first-child {background:none;}
+ul#contacts li a {font-size:1.2em; padding:0 8px 0 10px; font-weight:400;}
+
+/* ******* End of Header ******* */
+
+
+
+/* ******* Start of Left Menu Bar ******* */
+
+#menuBar {width:200px; height:auto; float:left; margin:25px 0 0 43px; padding-bottom:25px;}
+
+ul#leftMenu {height:auto; width:199px; float:left; background:#e9eef7 url(bg-box.gif) no-repeat -1px 100%; padding:0 0 10px 0; margin:5px 0 0 0; overflow:hidden;}
+ul#leftMenu li {list-style-type:none; width:199px; padding:0;}
+ul#leftMenu li a {display:block; width:100%; line-height:1.5em; padding:3px 10px 3px 32px; font-size:1.2em; font-weight:700;}
+ul#leftMenu li.parent {background:url(bulletActiveSG.gif) no-repeat #768eb5; background-position:10px 11px; color:#fff; padding:3px 0 3px 0;}
+ul#leftMenu li.parent a {color:#fff}
+ul#leftMenu li.selected {background:url(bullet.gif) no-repeat; background-position:10px 8px; color:#fff; padding:0;}
+
+/* ******* End of Left Menu Bar ******* */
+
+
+
+/* ******* Start of Main Content Area ******* */
+
+#contentArea {width:640px; height:auto; float:left; padding-bottom:25px; font-size:1.1em; margin:15px 0 0 0; padding:15px 0 20px 25px;}
+
+/* ******* End of Main Content Area ******* */
+
+
+
+/* ******* Start of Footer ******* */
+
+#footer {width:100%; height:54px; clear:both; background:url(bg-footer.gif) no-repeat;}
+
+a.accessInfo {float:left; height:32px; width:117px; margin:0 10px 0 43px;}
+a.accessInfo img {border:none;}
+
+ul#bottomMenu {float:left; margin:10px 0 0 10px;}
+ul#bottomMenu li {float:left; list-style-type:none;}
+ul#bottomMenu a {padding:0 4px 2px 4px; font-size:0.9em; color:#000; font-weight:400;}
+
+/* ******* End of Footer ******* */
|