aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bin/export-norwegian-contacts97
-rwxr-xr-xbin/send-reports33
-rwxr-xr-xbin/showcouncilrates73
m---------commonlib0
-rw-r--r--conf/general-example2
-rw-r--r--conf/httpd.conf-example5
-rw-r--r--data/norway/contact-addresses.csv48
-rw-r--r--locale/FixMyStreet.po640
-rw-r--r--locale/cy_GB.UTF-8/LC_MESSAGES/EmptyHomes.po907
-rw-r--r--locale/nb_NO.UTF-8/LC_MESSAGES/FixMyStreet.po1041
-rw-r--r--perllib/CrossSell.pm46
-rw-r--r--perllib/DBIx/Class/EncodedColumn.pm262
-rw-r--r--perllib/FixMyStreet/App.pm6
-rw-r--r--perllib/FixMyStreet/App/Controller/Admin.pm20
-rw-r--r--perllib/FixMyStreet/App/Controller/Around.pm5
-rw-r--r--perllib/FixMyStreet/App/Controller/Auth.pm13
-rw-r--r--perllib/FixMyStreet/App/Controller/JSON.pm11
-rw-r--r--perllib/FixMyStreet/App/Controller/My.pm4
-rwxr-xr-xperllib/FixMyStreet/App/Controller/Questionnaire.pm1
-rw-r--r--perllib/FixMyStreet/App/Controller/Report.pm3
-rw-r--r--perllib/FixMyStreet/App/Controller/Report/New.pm36
-rw-r--r--perllib/FixMyStreet/App/Controller/Report/Update.pm14
-rw-r--r--perllib/FixMyStreet/App/Controller/Reports.pm48
-rwxr-xr-xperllib/FixMyStreet/App/Controller/Rss.pm2
-rw-r--r--perllib/FixMyStreet/App/Controller/Tilma.pm46
-rw-r--r--perllib/FixMyStreet/App/Controller/Tokens.pm18
-rw-r--r--perllib/FixMyStreet/App/View/Web.pm22
-rw-r--r--perllib/FixMyStreet/Cobrand/Barnet.pm4
-rw-r--r--perllib/FixMyStreet/Cobrand/Default.pm114
-rw-r--r--perllib/FixMyStreet/Cobrand/EmptyHomes.pm5
-rw-r--r--perllib/FixMyStreet/Cobrand/FiksGataMi.pm46
-rw-r--r--perllib/FixMyStreet/Cobrand/Lichfield.pm81
-rw-r--r--perllib/FixMyStreet/Cobrand/Southampton.pm4
-rw-r--r--perllib/FixMyStreet/DB/ResultSet/AlertType.pm5
-rw-r--r--perllib/FixMyStreet/DB/ResultSet/Problem.pm31
-rw-r--r--perllib/FixMyStreet/Geocode.pm193
-rw-r--r--perllib/FixMyStreet/Geocode/Bing.pm67
-rw-r--r--perllib/FixMyStreet/Geocode/Google.pm85
-rw-r--r--perllib/FixMyStreet/Geocode/OSM.pm116
-rw-r--r--perllib/FixMyStreet/Map.pm15
-rw-r--r--perllib/FixMyStreet/Map/FMS.pm16
-rw-r--r--perllib/FixMyStreet/Map/Tilma/OL/1_10k.pm28
-rw-r--r--perllib/FixMyStreet/Map/Tilma/OL/StreetView.pm28
-rw-r--r--perllib/FixMyStreet/Map/Tilma/OpenLayers.pm35
-rw-r--r--perllib/FixMyStreet/Map/Tilma/Original.pm250
-rw-r--r--perllib/FixMyStreet/Map/Tilma/Original/1_10k.pm28
-rw-r--r--perllib/FixMyStreet/Map/Tilma/Original/StreetView.pm28
-rw-r--r--t/app/controller/admin.t12
-rw-r--r--t/app/controller/alert_new.t17
-rw-r--r--t/app/controller/around.t2
-rw-r--r--t/app/controller/index.t6
-rw-r--r--t/app/controller/json.t10
-rw-r--r--t/app/controller/report_import.t98
-rw-r--r--t/app/controller/report_new.t18
-rw-r--r--t/app/controller/report_updates.t66
-rw-r--r--t/app/controller/tilma.t12
-rw-r--r--templates/email/default/problem-confirm.txt2
-rw-r--r--templates/email/default/update-confirm.txt2
-rw-r--r--templates/email/fiksgatami/problem-confirm.txt2
-rw-r--r--templates/email/fiksgatami/update-confirm.txt2
-rw-r--r--templates/web/default/admin/index.html13
-rw-r--r--templates/web/default/admin/questionnaire.html13
-rw-r--r--templates/web/default/admin/timeline.html2
-rw-r--r--templates/web/default/around/around_map_list_items.html2
-rwxr-xr-xtemplates/web/default/around/display_location.html6
-rw-r--r--templates/web/default/around/on_map_list_items.html2
-rw-r--r--templates/web/default/auth/general.html2
-rw-r--r--templates/web/default/common_header_tags.html4
-rwxr-xr-xtemplates/web/default/faq/faq-en-gb.html12
-rw-r--r--templates/web/default/header.html4
-rw-r--r--templates/web/default/index.html7
-rw-r--r--templates/web/default/maps/fms.html3
-rw-r--r--templates/web/default/maps/openlayers.html2
-rw-r--r--templates/web/default/maps/osm-streetview.html3
-rw-r--r--templates/web/default/maps/osm.html3
-rw-r--r--templates/web/default/maps/pins_js.html2
-rw-r--r--templates/web/default/maps/tilma/openlayers.html26
-rw-r--r--templates/web/default/maps/tilma/original.html89
-rw-r--r--templates/web/default/my/my.html29
-rw-r--r--templates/web/default/pagination.html17
-rw-r--r--templates/web/default/report/new/fill_in_details.html4
-rwxr-xr-xtemplates/web/default/reports/council.html63
-rwxr-xr-xtemplates/web/emptyhomes/faq/faq-en-gb.html2
-rw-r--r--templates/web/emptyhomes/header.html9
-rw-r--r--templates/web/fiksgatami/footer.html2
-rw-r--r--templates/web/lichfield/footer.html128
-rw-r--r--templates/web/lichfield/header.html190
-rw-r--r--templates/web/southampton/header.html5
-rw-r--r--web/cobrands/emptyhomes/css.css18
-rw-r--r--web/cobrands/lichfield/css/layout.css61
-rw-r--r--web/cobrands/southampton/css.css19
-rw-r--r--web/cobrands/southampton/css.scss14
-rw-r--r--web/css/_main.scss8
-rw-r--r--web/css/core.css10
-rw-r--r--web/css/core.scss6
-rw-r--r--web/css/main.css7
-rw-r--r--web/js/fixmystreet.js88
-rw-r--r--web/js/map-OpenLayers.js43
-rw-r--r--web/js/map-bing-ol.js17
-rw-r--r--web/js/map-bing.js2
-rw-r--r--web/js/map-google.js2
-rw-r--r--web/js/map-tilma-ol.js41
-rw-r--r--web/js/map-tilma.js312
-rw-r--r--web/js/southampton.js50
-rw-r--r--web/yui/.gitignore1
-rw-r--r--web/yui/utilities.js305
106 files changed, 3668 insertions, 2811 deletions
diff --git a/bin/export-norwegian-contacts b/bin/export-norwegian-contacts
new file mode 100644
index 000000000..8a7d438e5
--- /dev/null
+++ b/bin/export-norwegian-contacts
@@ -0,0 +1,97 @@
+#!/usr/bin/perl
+
+# export-norwegian-contacts:
+# Export initial contact list from fiksgatami in a format usable by
+# load-norwegian-contact.
+#
+# The format is
+# ID;Name;email-address;Category1,Category2,...
+#
+# Based on script load-contacts copyright (c) 2006 UK Citizens Online
+# Democracy and script load-norwegian-contacts copyright (c) 2011
+# Petter Reinholdtsen.
+# Copyright 2011 Petter Reinholdtsen.
+#
+# $Id: load-norwegian-contacts,v 1.0 2007-08-02 11:44:59 matthew Exp $
+
+use strict;
+use warnings;
+require 5.8.0;
+use open OUT => ':utf8';
+
+# Horrible boilerplate to set up appropriate library paths.
+use FindBin;
+use lib "$FindBin::Bin/../perllib";
+use lib "$FindBin::Bin/../commonlib/perllib";
+
+use mySociety::Config;
+use mySociety::DBHandle qw(dbh select_all);
+use mySociety::MaPit;
+
+BEGIN {
+ mySociety::Config::set_file("$FindBin::Bin/../conf/general");
+ mySociety::DBHandle::configure(
+ Name => mySociety::Config::get('BCI_DB_NAME'),
+ User => mySociety::Config::get('BCI_DB_USER'),
+ Password => mySociety::Config::get('BCI_DB_PASS'),
+ Host => mySociety::Config::get('BCI_DB_HOST', undef),
+ Port => mySociety::Config::get('BCI_DB_PORT', undef)
+ );
+}
+
+my $datafile = shift;
+
+open(my $fh, '>', $datafile) or die "Unable to write to $datafile";
+
+# Categories used by more than half the areas is used as the default
+# list.
+my $sql =
+ "SELECT category FROM (SELECT category, COUNT(*) from contacts ".
+ " WHERE confirmed = 'true' AND deleted = 'false' ".
+ " GROUP BY category) as c ".
+ " WHERE count > (SELECT COUNT(*)/2 FROM contacts ".
+ " WHERE category = 'Annet') ".
+ " ORDER BY category";
+my $defcategoriesref = dbh()->selectcol_arrayref($sql);
+print $fh "0000;default;;", join(',', @{$defcategoriesref}), "\n";
+
+my %categorygroup;
+$sql = "SELECT area_id, email, category FROM contacts ORDER BY category";
+my $contactref = dbh()->selectall_arrayref($sql, { Slice => {} });
+my @area_ids;
+for my $row (@{$contactref}) {
+ my $key = $row->{area_id} .':'. $row->{email};
+ push(@area_ids, $row->{area_id});
+ if (exists $categorygroup{$key}) {
+ push(@{$categorygroup{$key}}, $row->{category});
+ } else {
+ $categorygroup{$key} = [ $row->{category} ];
+ }
+}
+
+my $areas_info = mySociety::MaPit::call('areas', \@area_ids);
+
+my @list;
+for my $key (keys %categorygroup) {
+ my ($area_id, $email) = split(/:/, $key);
+ my $categoriesref = $categorygroup{$key};
+ my $areaname = $areas_info->{$area_id}->{name};
+ my $areadigits = ($area_id < 100) ? 2 : 4;
+ if (identical_lists($defcategoriesref, $categoriesref)) {
+ push(@list,sprintf("%0${areadigits}d;%s;%s\n",
+ $area_id, $areaname, $email));
+ } else {
+ push(@list, sprintf("%0${areadigits}d;%s;%s;%s\n",
+ $area_id, $areaname, $email,
+ join(',', @{$categoriesref})));
+ }
+}
+
+print $fh sort @list;
+
+sub identical_lists {
+ my ($a, $b) = @_;
+ return !(join(',', @{$a}) cmp join(',', @{$b}));
+}
+
+exit 0;
diff --git a/bin/send-reports b/bin/send-reports
index b55447e8a..1af3ba1ea 100755
--- a/bin/send-reports
+++ b/bin/send-reports
@@ -88,7 +88,10 @@ while (my $row = $unsent->next) {
= "Easting: $h{easting}\n\n" #
. "Northing: $h{northing}\n\n";
- $h{closest_address} = find_closest($row, $h{latitude}, $h{longitude});
+ }
+
+ if ( $row->used_map ) {
+ $h{closest_address} = $cobrand->find_closest( $h{latitude}, $h{longitude} );
}
my (@to, @recips, $template, $areas_info);
@@ -422,34 +425,6 @@ sub post_london_report {
# Nearest things
-sub find_closest {
- my ($row, $latitude, $longitude) = @_;
- my $str = '';
-
- return '' unless $row->used_map;
-
- # Get nearest road-type thing from Bing
- my $url = "http://dev.virtualearth.net/REST/v1/Locations/$latitude,$longitude?c=en-GB&key=" . mySociety::Config::get('BING_MAPS_API_KEY');
- my $j = LWP::Simple::get($url);
- if ($j) {
- $j = JSON->new->utf8->allow_nonref->decode($j);
- if ($j->{resourceSets}[0]{resources}[0]{name}) {
- $str .= "Nearest road to the pin placed on the map (automatically generated by Bing Maps): $j->{resourceSets}[0]{resources}[0]{name}\n\n";
- }
- }
-
- # Get nearest postcode from Matthew's random gazetteer (put in MaPit? Or elsewhere?)
- $url = "http://gazetteer.dracos.vm.bytemark.co.uk/point/$latitude,$longitude.json";
- $j = LWP::Simple::get($url);
- if ($j) {
- $j = JSON->new->utf8->allow_nonref->decode($j);
- if ($j->{postcode}) {
- $str .= "Nearest postcode to the pin placed on the map (automatically generated): $j->{postcode}[0] ($j->{postcode}[1]m away)\n\n";
- }
- }
- return $str;
-}
-
sub london_lookup {
my $org = shift;
my $str = "Unknown ($org)";
diff --git a/bin/showcouncilrates b/bin/showcouncilrates
new file mode 100755
index 000000000..9ae5c3e7b
--- /dev/null
+++ b/bin/showcouncilrates
@@ -0,0 +1,73 @@
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+
+use FindBin;
+use lib "$FindBin::Bin/../perllib";
+use lib "$FindBin::Bin/../commonlib/perllib";
+
+use POSIX qw(strcoll);
+use mySociety::DBHandle qw(dbh);
+
+use mySociety::MaPit;
+use FixMyStreet::Geocode::OSM;
+
+BEGIN {
+ mySociety::Config::set_file("$FindBin::Bin/../conf/general");
+ mySociety::DBHandle::configure(
+ Name => mySociety::Config::get('BCI_DB_NAME'),
+ User => mySociety::Config::get('BCI_DB_USER'),
+ Password => mySociety::Config::get('BCI_DB_PASS'),
+ Host => mySociety::Config::get('BCI_DB_HOST', undef),
+ Port => mySociety::Config::get('BCI_DB_PORT', undef)
+ );
+}
+
+my $query = "SELECT council, COUNT(*) AS total, SUM(fixed) AS fixed
+ FROM (SELECT council,
+ CASE WHEN state = 'fixed' THEN 1 ELSE 0 END AS fixed
+ FROM problem WHERE confirmed IS NOT NULL AND
+ state IN ('fixed', 'confirmed') AND
+ whensent < NOW() - INTERVAL '4 weeks') AS a
+ GROUP BY council";
+
+my $stats = dbh()->selectall_arrayref($query, { Slice => {} });
+
+my @councils;
+foreach my $row (@$stats) {
+ if ($row->{council}) {
+ $row->{council} =~ s/\|.*//g;
+ my @council_ids = split(/,/, $row->{council});
+ push(@councils, @council_ids);
+ $row->{council} = \@council_ids;
+ }
+}
+my $areas_info = mySociety::MaPit::call('areas', \@councils);
+my %adminsum;
+my %adminfixed;
+foreach my $row (@$stats){
+ if ($row->{council}) {
+ for my $councilid (@{$row->{council}}) {
+ $adminsum{$councilid} += $row->{total};
+ $adminfixed{$councilid} += $row->{fixed};
+ }
+ }
+}
+
+foreach my $councilid (sort sort_councils keys %adminsum) {
+ my $council = $areas_info->{$councilid}->{name};
+ my $total = $adminsum{$councilid};
+ my $fixed = $adminfixed{$councilid};
+ printf("%5.1f %4d %s (%d)\n", 100 * $fixed / $total, $total,
+ $council, $councilid);
+}
+
+sub sort_councils {
+ my $retval = ($adminfixed{$b} / $adminsum{$b}) <=>
+ ($adminfixed{$a} / $adminsum{$a});
+ $retval = $adminsum{$b} <=> $adminsum{$a} unless $retval;
+ $retval = strcoll($areas_info->{$a}->{name},
+ $areas_info->{$b}->{name}) unless $retval;
+ return $retval;
+}
diff --git a/commonlib b/commonlib
-Subproject 23a4417f75aa07042c5172dbd08bdbb2594afa5
+Subproject f2532c104a1268b536f79b13c52bdc0d7fb4d7a
diff --git a/conf/general-example b/conf/general-example
index bc58f56d3..65e192b4d 100644
--- a/conf/general-example
+++ b/conf/general-example
@@ -44,7 +44,7 @@ define('OPTION_LONDON_REPORTIT_KEY', '');
define('OPTION_LONDON_REPORTIT_SECRET', '');
define('OPTION_MAPIT_URL', 'http://mapit.mysociety.org/');
-define('OPTION_MAP_TYPE', 'Tilma::Original::1_10k');
+define('OPTION_MAP_TYPE', 'OSM');
define('OPTION_EVEL_URL', 'http://services.mysociety.org/evel');
define('OPTION_GAZE_URL', 'http://gaze.mysociety.org/gaze');
diff --git a/conf/httpd.conf-example b/conf/httpd.conf-example
index 8abb13831..378aa88a5 100644
--- a/conf/httpd.conf-example
+++ b/conf/httpd.conf-example
@@ -50,12 +50,9 @@ RewriteRule ^/reports/{/rss/(.*)}$ /rss/$1 [R=permanent,L]
# In case of misspelling
RewriteRule ^/alerts/?$ /alert [R=permanent,L]
-# Proxy tilma so that our js code can make calls on the originating server. Use
+# Proxy mapit so that our js code can make calls on the originating server. Use
# a RewriteRule rather than ProxyPass so that Apache's processing order is more
# predictable. ProxyPassReverse is not affected by this.
-RewriteRule /tilma/(.*) http://tilma.mysociety.org/$1 [P,L]
-ProxyPassReverse /tilma/ http://tilma.mysociety.org/
-
RewriteRule /mapit/(.*) http://mapit.mysociety.org/$1 [P,L]
ProxyPassReverse /mapit/ http://mapit.mysociety.org/
diff --git a/data/norway/contact-addresses.csv b/data/norway/contact-addresses.csv
index 42fccc33c..05cd2df78 100644
--- a/data/norway/contact-addresses.csv
+++ b/data/norway/contact-addresses.csv
@@ -1,4 +1,4 @@
-# # i
+#
# 2010 engelsk kategori Forslag til oversettelse
# ---------------------------------------------------------------------
# 18k potholes Hull i vei
@@ -65,7 +65,7 @@
# -------------------------------------
# Annet
#
-0000;default;;Hull i vei,Gater/Veier,Gatelys,Fortau/gangstier,Dumpet skrot,Forsøpling,Parkering,Graffiti/tagging,Trafikkskilter,Forlatte kjøretøy,Trær,Veinavn-skilter,Trafikklys,Park/landskap,Ulovlige oppslag,Buss- og togstopp,Offentlige toaletter,Vannforsyning,Snøbrøyting,Sykkelveier,Tette avløpsrister,Oljesøl,Annet
+0000;default;;Annet,Buss- og togstopp,Dumpet skrot,Forlatte kjøretøy,Forsøpling,Fortau/gangstier,Gatefeiing,Gatelys,Gater/Veier,Graffiti/tagging,Hull i vei,Offentlige toaletter,Oljesøl,Parkering,Park/landskap,Snøbrøyting,Sykkelveier,Tette avløpsrister,Trafikklys,Trafikkskilter,Trær,Ulovlige oppslag,Universell utforming,Vannforsyning,Veinavn-skilter
0101;Halden;postmottak@halden.kommune.no
0104;Moss;post@moss.kommune.no
0105;Sarpsborg;postmottak@sarpsborg.com
@@ -75,13 +75,13 @@
0119;Marker;post@marker.kommune.no
0121;Rømskog;postmottak@romskog.kommune.no
0122;Trøgstad;postmottak@trogstad.kommune.no
-0123;Spydeberg;post@spydeberg.kommune.no
+0123;Spydeberg;servicetorget@spydeberg.kommune.no
0124;Askim;postmottak@askim.kommune.no
0125;Eidsberg;postmottak@eidsberg.kommune.no
0127;Skiptvet;postmottak@skiptvet.kommune.no
0128;Rakkestad;postmottak@rakkestad.kommune.no
0135;RÃ¥de;post@rade.kommune.no
-0136;Rygge;postmottak@rygge.kommune.no
+0136;Rygge;servicetorget@rygge.kommune.no
0137;VÃ¥ler;postmottak@valer-of.kommune.no
0138;Hobøl;post@hobol.kommune.no
01;Østfold;sentralpost@ostfoldfk.no;Annet
@@ -91,7 +91,7 @@
0215;Frogn;postmottak@frogn.kommune.no
0216;Nesodden;postmottak@nesodden.kommune.no
0217;Oppegård;postmottak@oppegard.kommune.no
-0219;Bærum;post@baerum.kommune.no
+0219;Bærum;veiledningstorget@baerum.kommune.no;Annet,Buss- og togstopp,Dumpet skrot,Forlatte kjøretøy,Forsøpling,Fortau/gangstier,Gatefeiing,Gatelys,Gater/Veier,Graffiti/tagging,Hull i vei,Offentlige toaletter,Oljesøl,Parkering,Park/landskap,Snøbrøyting,Sykkelveier,Tette avløpsrister,Trafikklys,Trafikkskilter,Trær,Turveier,Ulovlige oppslag,Universell utforming,Vannforsyning,Veinavn-skilter
0220;Asker;post@asker.kommune.no
0221;Aurskog-Høland;postmottak@ahk.no
0226;Sørum;postmottak@sorum.kommune.no
@@ -99,7 +99,7 @@
0228;Rælingen;postmottak@ralingen.kommune.no
0229;Enebakk;postmottak@enebakk.kommune.no
0230;Lørenskog;postmottak@lorenskog.kommune.no
-0231;Skedsmo;postmottak@skedsmo.kommune.no
+0231;Skedsmo;ekspedts@skedsmo.kommune.no
0233;Nittedal;postmottak@nittedal.kommune.no
0234;Gjerdrum;postmottak@gjerdrum.kommune.no
0235;Ullensaker;postmottak@ullensaker.kommune.no
@@ -109,7 +109,7 @@
0239;Hurdal;postmottak@hurdal.kommune.no
02;Akershus;postmottak@akershus-fk.no;Annet
03;Oslo;postmottak@oslo.kommune.no
-0402;Kongsvinger;postmottak@kongsvinger.kommune.no
+0402;Kongsvinger;fiksgata@kongsvinger.kommune.no
0403;Hamar;postmottak@hamar.kommune.no
0412;Ringsaker;postmottak@ringsaker.kommune.no
0415;Løten;post@loten.kommune.no
@@ -132,7 +132,7 @@
0439;Folldal;postmottak@folldal.kommune.no
0441;Os;postmottak@os.kommune.no
04;Hedmark;postmottak@hedmark.org;Annet
-0501;Lillehammer;postmottak@lillehammer.kommune.no
+0501;Lillehammer;servicetorget@lillehammer.kommune.no
0502;Gjøvik;postmottak@gjovik.kommune.no
0511;Dovre;postmottak@dovre.kommune.no
0512;Lesja;postmottak@lesja.kommune.no
@@ -162,7 +162,7 @@
0602;Drammen;kommunepost@drammen.kommune.no
0604;Kongsberg;postmottak@kongsberg.kommune.no
0605;Ringerike;postmottak@ringerike.kommune.no
-0612;Hole;postmottak@hole.kommune.no
+0612;Hole;publikumskontoret@hole.kommune.no
0615;Flå;postmottak@flaa.kommune.no
0616;Nes;postmottak@nes-bu.kommune.no
0617;Gol;postmottak@gol.kommune.no
@@ -237,7 +237,7 @@
1004;Flekkefjord;post@flekkefjord.kommune.no
1014;Vennesla;post@vennesla.kommune.no
1017;Songdalen;postmottak@songdalen.kommune.no
-1018;Søgne;postmottak@sogne.kommune.no
+1018;Søgne;fiksgatami@sogne.kommune.no
1021;Marnardal;service@Marnardal.kommune.no
1026;Ã…seral;info@aseral.kommune.no
1027;Audnedal;info@audnedal.kommune.no
@@ -247,6 +247,11 @@
1037;Kvinesdal;post@kvinesdal.kommune.no
1046;Sirdal;post@sirdal.kommune.no
10;Vest-Agder;postmottak@vaf.no;Annet
+11001;Statens vegvesen region øst;firmapost-ost@vegvesen.no;Fortau/gangstier,Gatefeiing,Gatelys,Gater/Veier,Hull i vei,Snøbrøyting,Sykkelveier,Trafikklys,Trafikkskilter,Veinavn-skilter
+11002;Statens vegvesen region sør;firmapost-sor@vegvesen.no;Fortau/gangstier,Gatefeiing,Gatelys,Gater/Veier,Hull i vei,Snøbrøyting,Sykkelveier,Trafikklys,Trafikkskilter,Veinavn-skilter
+11003;Statens vegvesen region vest;firmapost-vest@vegvesen.no;Fortau/gangstier,Gatefeiing,Gatelys,Gater/Veier,Hull i vei,Snøbrøyting,Sykkelveier,Trafikklys,Trafikkskilter,Veinavn-skilter
+11004;Statens vegvesen region midt;firmapost-midt@vegvesen.no;Fortau/gangstier,Gatefeiing,Gatelys,Gater/Veier,Hull i vei,Snøbrøyting,Sykkelveier,Trafikklys,Trafikkskilter,Veinavn-skilter
+11005;Statens vegvesen region nord;firmapost-nord@vegvesen.no;Fortau/gangstier,Gatefeiing,Gatelys,Gater/Veier,Hull i vei,Snøbrøyting,Sykkelveier,Trafikklys,Trafikkskilter,Veinavn-skilter
1101;Eigersund;post@eigersund.kommune.no
1102;Sandnes;postmottak@sandnes.kommune.no
1103;Stavanger;postmottak@stavanger.kommune.no
@@ -274,20 +279,21 @@
1151;Utsira;post@utsira.kommune.no
1160;Vindafjord;postmottak@vindafjord.kommune.no
11;Rogaland;firmapost@rogfk.no;Annet
-1201;Bergen;postmottak@bergen.kommune.no
+1201;Bergen;vaktsentral@bergen.kommune.no
1211;Etne;firmapost@etne.kommune.no
1216;Sveio;postmottak@sveio.kommune.no
1219;Bømlo;postmottak@bomlo.kommune.no
-1221;Stord;post@stord.kommune.no
+1221;Stord;kundetorget@stord.kommune.no;Annet,Buss- og togstopp,Dumpet skrot,Forlatte kjøretøy,Forsøpling,Fortau/gangstier,Gatefeiing,Gater/Veier,Graffiti/tagging,Hull i vei,Offentlige toaletter,Oljesøl,Parkering,Park/landskap,Snøbrøyting,Sykkelveier,Tette avløpsrister,Trafikklys,Trafikkskilter,Trær,Ulovlige oppslag,Universell utforming,Vannforsyning,Veinavn-skilter
+1221;Stord;post@skl.as;Gatelys
1222;Fitjar;fitjar@fitjar.kommune.no
1223;Tysnes;post@tysnes.kommune.no
1224;Kvinnherad;post@kvinnherad.kommune.no
1227;Jondal;post@jondal.kommune.no
-1228;Odda;epost@odda.kommune.no
-1231;Ullensvang;postmottak@ullensvang.herad.no
+1228;Odda;Tenestetorg@odda.kommune.no
+1231;Ullensvang herad;postmottak@ullensvang.herad.no
1232;Eidfjord;postmottak@eidfjord.kommune.no
-1233;Ulvik;postmottak@ulvik.kommune.no
-1234;Granvin;postmottak@granvin.kommune.no
+1233;Ulvik herad;postmottak@ulvik.kommune.no
+1234;Granvin herad;postmottak@granvin.kommune.no
1235;Voss;postmottak@voss.kommune.no
1238;Kvam herad;postmottak@kvam.kommune.no
1241;Fusa;postkasse@fusa.kommune.no
@@ -296,7 +302,7 @@
1244;Austevoll;postmottak@austevoll.kommune.no
1245;Sund;postmottak@sund.kommune.no
1246;Fjell;postmottak@fjell.kommune.no
-1247;Askøy;postmottak@askoy.kommune.no
+1247;Askøy;kundetorg@askoy.kommune.no
1251;Vaksdal;post@vaksdal.kommune.no
1252;Modalen;postmottak@modalen.kommune.no
1253;Osterøy;post@osteroy.kommune.no
@@ -308,7 +314,7 @@
1265;Fedje;postmottak@fedje.kommune.no
1266;Masfjorden;post@masfjorden.kommune.no
12;Hordaland;hfk@post.hfk.no;Annet
-1401;Flora;postmottak@flora.kommune.no
+1401;Flora;tenestetorgetekspedisjon@flora.kommune.no
1411;Gulen;postmottak@gulen.kommune.no
1412;Solund;post@solund.kommune.no
1413;Hyllestad;postmottak@hyllestad.kommune.no
@@ -325,7 +331,7 @@
1429;Fjaler;post@fjaler.kommune.no
1430;Gaular;postmottak@gaular.kommune.no
1431;Jølster;postmottak@jolster.kommune.no
-1432;Førde;postmottak@forde.kommune.no
+1432;Førde;servicetorget@forde.kommune.no
1433;Naustdal;postmottak@naustdal.kommune.no
1438;Bremanger;post@bremanger.kommune.no
1439;Vågsøy;post@vagsoy.kommune.no
@@ -336,7 +342,7 @@
1449;Stryn;postmottak@stryn.kommune.no
14;Sogn og Fjordane;postmottak.sentraladm@sfj.no;Annet
1502;Molde;postmottak@molde.kommune.no
-1504;Ã…lesund;postmottak@alesund.kommune.no
+1504;Ã…lesund;servicetorget@alesund.kommune.no
1505;Kristiansund;postmottak@kristiansund.kommune.no
1511;Vanylven;postmottak@vanylven.kommune.no
1514;Sande;sande.kommune@sande-mr.kommune.no
@@ -372,7 +378,7 @@
1573;Smøla;postmottak@smola.kommune.no
1576;Aure;postmottak@aure.kommune.no
15;Møre og Romsdal;post@mrfylke.no;Annet
-1601;Trondheim;postmottak@trondheim.kommune.no
+1601;Trondheim;bydrift.vegdrift@trondheim.kommune.no
1612;Hemne;postmottak@hemne.kommune.no
1613;Snillfjord;postmottak@snillfjord.kommune.no
1617;Hitra;postmottak@hitra.kommune.no
diff --git a/locale/FixMyStreet.po b/locale/FixMyStreet.po
index 92c377365..e235c25cf 100644
--- a/locale/FixMyStreet.po
+++ b/locale/FixMyStreet.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1.0\n"
"Report-Msgid-Bugs-To: matthew@mysociety.org\n"
-"POT-Creation-Date: 2011-06-14 17:28+0100\n"
+"POT-Creation-Date: 2011-07-14 12:35+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <team@fixmystreet.com>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-#: bin/send-reports:176 perllib/FixMyStreet/DB/Result/Problem.pm:377
+#: bin/send-reports:179 perllib/FixMyStreet/DB/Result/Problem.pm:376
msgid " and "
msgstr ""
@@ -33,19 +33,19 @@ msgstr ""
msgid "%d addresses"
msgstr ""
-#: templates/web/default/admin/index.html:16
+#: templates/web/default/admin/index.html:17
msgid "%d confirmed alerts, %d unconfirmed"
msgstr ""
-#: templates/web/default/admin/index.html:18
+#: templates/web/default/admin/index.html:19
msgid "%d council contacts &ndash; %d confirmed, %d unconfirmed"
msgstr ""
-#: perllib/Utils.pm:245
+#: perllib/Utils.pm:251
msgid "%d day"
msgstr ""
-#: perllib/Utils.pm:245
+#: perllib/Utils.pm:251
msgid "%d days"
msgstr ""
@@ -53,43 +53,43 @@ msgstr ""
msgid "%d edits by %s"
msgstr ""
-#: perllib/Utils.pm:246
+#: perllib/Utils.pm:252
msgid "%d hour"
msgstr ""
-#: perllib/Utils.pm:246
+#: perllib/Utils.pm:252
msgid "%d hours"
msgstr ""
-#: templates/web/default/admin/index.html:15
+#: templates/web/default/admin/index.html:16
msgid "%d live updates"
msgstr ""
-#: perllib/Utils.pm:247
+#: perllib/Utils.pm:253
msgid "%d minute"
msgstr ""
-#: perllib/Utils.pm:247
+#: perllib/Utils.pm:253
msgid "%d minutes"
msgstr ""
-#: templates/web/default/admin/index.html:17
+#: templates/web/default/admin/index.html:18
msgid "%d questionnaires sent &ndash; %d answered (%s%%)"
msgstr ""
-#: perllib/Utils.pm:244
+#: perllib/Utils.pm:250
msgid "%d week"
msgstr ""
-#: perllib/Utils.pm:244
+#: perllib/Utils.pm:250
msgid "%d weeks"
msgstr ""
-#: templates/web/default/reports/council.html:11 templates/web/default/reports/council.html:12
+#: templates/web/default/reports/council.html:0 templates/web/default/reports/council.html:14
msgid "%s - Summary reports"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Default.pm:763 perllib/FixMyStreet/Cobrand/Default.pm:777
+#: perllib/FixMyStreet/Cobrand/Default.pm:836 perllib/FixMyStreet/Cobrand/Default.pm:850
msgid "%s ward, %s"
msgstr ""
@@ -101,15 +101,15 @@ msgstr ""
msgid "%s, reported by %s at %s"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Default.pm:794 perllib/FixMyStreet/Cobrand/Default.pm:808
+#: perllib/FixMyStreet/Cobrand/Default.pm:867 perllib/FixMyStreet/Cobrand/Default.pm:881
msgid "%s, within %s ward"
msgstr ""
-#: perllib/FixMyStreet/Map/Tilma/OL/1_10k.pm:21 perllib/FixMyStreet/Map/Tilma/Original/1_10k.pm:21
+#: perllib/FixMyStreet/Map/Tilma/Original.pm:82
msgid "&copy; Crown copyright. All rights reserved. Ministry of Justice 100037819&nbsp;2008."
msgstr ""
-#: templates/web/default/email_sent.html:32
+#: templates/web/default/email_sent.html:28
msgid "(Don't worry &mdash; %s)"
msgstr ""
@@ -129,31 +129,35 @@ msgstr ""
msgid "(like graffiti, fly tipping, broken paving slabs, or street lighting)"
msgstr ""
-#: templates/web/default/reports/council.html:90
+#: templates/web/default/reports/council.html:133
msgid "(not sent to council)"
msgstr ""
-#: templates/web/default/report/display.html:82 templates/web/default/report/new/fill_in_details.html:160
+#: templates/web/default/report/new/fill_in_details.html:233
msgid "(optional)"
msgstr ""
-#: templates/web/default/reports/council.html:88
+#: templates/web/default/reports/council.html:131
msgid "(sent to both)"
msgstr ""
-#: templates/web/default/report/display.html:88 templates/web/default/report/new/fill_in_details.html:145
+#: templates/web/default/report/new/fill_in_details.html:227
msgid "(we never show your email address or phone number)"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:259
+#: templates/web/default/report/display.html:206
+msgid "(we never show your email)"
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:269
msgid "*unknown*"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:476 perllib/FixMyStreet/App/Controller/Report/New.pm:504 perllib/FixMyStreet/DB/Result/Problem.pm:204
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:477 perllib/FixMyStreet/App/Controller/Report/New.pm:505 perllib/FixMyStreet/DB/Result/Problem.pm:204
msgid "-- Pick a category --"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:462 perllib/FixMyStreet/DB/Result/Problem.pm:210
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:463 perllib/FixMyStreet/DB/Result/Problem.pm:210
msgid "-- Pick a property type --"
msgstr ""
@@ -165,11 +169,11 @@ msgstr ""
msgid "<a href=\"http://www.mysociety.org/\"><img id=\"logo\" width=\"133\" height=\"26\" src=\"/i/mysociety-dark.png\" alt=\"View mySociety.org\"><span id=\"logoie\"></span></a>"
msgstr ""
-#: templates/web/default/questionnaire/completed.html:21
+#: templates/web/default/questionnaire/completed.html:25
msgid "<p style=\"font-size:150%\">Thank you very much for filling in our questionnaire; glad to hear it&rsquo;s been fixed.</p>"
msgstr ""
-#: templates/web/default/questionnaire/completed.html:11
+#: templates/web/default/questionnaire/completed.html:15
msgid ""
"<p style=\"font-size:150%%\">We&rsquo;re sorry to hear that. We have two suggestions: why not try\n"
"<a href=\"%s\">writing direct to your councillor(s)</a>\n"
@@ -202,14 +206,14 @@ msgid ""
"go to <a href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n"
msgstr ""
-#: templates/web/default/questionnaire/completed.html:5
+#: templates/web/default/questionnaire/completed.html:9
msgid ""
"<p>Thank you very much for filling in our questionnaire; if you\n"
"get some more information about the status of your problem, please come back to the\n"
"site and leave an update.</p>"
msgstr ""
-#: templates/web/default/around/display_location.html:93 templates/web/default/around/display_location.html:95
+#: templates/web/default/around/display_location.html:87 templates/web/default/around/display_location.html:89
msgid "<small>If you cannot see the map, <a href='%s' rel='nofollow'>skip this step</a>.</small>"
msgstr ""
@@ -217,6 +221,22 @@ msgstr ""
msgid "<strong>%d</strong> live problems"
msgstr ""
+#: templates/web/default/auth/general.html:55
+msgid "<strong>No</strong>, I do not, let me sign in by email:"
+msgstr ""
+
+#: templates/web/default/report/new/fill_in_details.html:175
+msgid "<strong>No</strong>, let me confirm my report by email:"
+msgstr ""
+
+#: templates/web/default/report/display.html:160
+msgid "<strong>No</strong>, let me confirm my update by email:"
+msgstr ""
+
+#: templates/web/default/auth/general.html:37 templates/web/default/report/display.html:142 templates/web/default/report/new/fill_in_details.html:157
+msgid "<strong>Yes</strong>, I have a password:"
+msgstr ""
+
#: templates/web/default/static/about.html:1 templates/web/default/static/about.html:3 templates/web/emptyhomes/header.html:34 templates/web/emptyhomes/static/about.html:1 templates/web/emptyhomes/static/about.html:3
msgid "About us"
msgstr ""
@@ -225,7 +245,11 @@ msgstr ""
msgid "Add new category"
msgstr ""
-#: templates/web/default/auth/change_password.html:30
+#: templates/web/default/my/my.html:51
+msgid "Added %s"
+msgstr ""
+
+#: templates/web/default/auth/change_password.html:31
msgid "Again:"
msgstr ""
@@ -237,7 +261,7 @@ msgstr ""
msgid "Alert %d disabled (created %s)"
msgstr ""
-#: templates/web/default/report/display.html:133
+#: templates/web/default/report/display.html:211
msgid "Alert me to future updates"
msgstr ""
@@ -245,7 +269,7 @@ msgstr ""
msgid "All confirmed"
msgstr ""
-#: templates/web/default/footer.html:7 templates/web/emptyhomes/header.html:31 templates/web/fiksgatami/footer.html:6
+#: templates/web/default/footer.html:8 templates/web/emptyhomes/header.html:31 templates/web/fiksgatami/footer.html:6
msgid "All reports"
msgstr ""
@@ -277,31 +301,27 @@ msgstr ""
msgid "Anonymous:"
msgstr ""
-#: templates/web/fiksgatami/footer.html:15
-msgid "Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and maintained by <a href=\"http://www.nuug.no/\">NUUG</a>, using some <a href=\"http://github.com/mysociety/fixmystreet\">clever</a>&nbsp;<a href=\"https://secure.mysociety.org/cvstrac/dir?d=mysociety/services/TilMa\">code</a>."
-msgstr ""
-
#: templates/web/default/footer.html:16
-msgid "Built by <a href=\"http://www.mysociety.org/\">mySociety</a>, using some <a href=\"http://github.com/mysociety/fixmystreet\">clever</a>&nbsp;<a href=\"https://secure.mysociety.org/cvstrac/dir?d=mysociety/services/TilMa\">code</a>."
+msgid "Built by <a href=\"http://www.mysociety.org/\">mySociety</a>"
msgstr ""
-#: templates/web/default/report/new/fill_in_details.html:141
-msgid "Can we show your name on the site?"
+#: templates/web/fiksgatami/footer.html:15
+msgid "Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and maintained by <a href=\"http://www.nuug.no/\">NUUG</a>"
msgstr ""
-#: templates/web/default/report/display.html:87 templates/web/default/report/new/fill_in_details.html:143
-msgid "Can we show your name publicly?"
+#: templates/web/default/admin/council_contacts.html:19 templates/web/default/admin/index.html:36 templates/web/default/admin/search_reports.html:17
+msgid "Category"
msgstr ""
-#: templates/web/default/admin/council_contacts.html:19 templates/web/default/admin/search_reports.html:17
-msgid "Category"
+#: templates/web/default/admin/index.html:34
+msgid "Category fix rate for problems > 4 weeks old"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:479 perllib/FixMyStreet/App/Controller/Report/New.pm:505 templates/web/default/admin/council_contacts.html:56 templates/web/default/admin/council_edit.html:23 templates/web/default/admin/report_edit.html:26
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:480 perllib/FixMyStreet/App/Controller/Report/New.pm:506 templates/web/default/admin/council_contacts.html:56 templates/web/default/admin/council_edit.html:23 templates/web/default/admin/report_edit.html:26
msgid "Category:"
msgstr ""
-#: bin/send-reports:173
+#: bin/send-reports:176
msgid "Category: %s"
msgstr ""
@@ -309,7 +329,7 @@ msgstr ""
msgid "Change Password"
msgstr ""
-#: templates/web/default/around/display_location.html:111 templates/web/default/around/display_location.html:113
+#: templates/web/default/around/display_location.html:105 templates/web/default/around/display_location.html:107
msgid "Closest nearby problems <small>(within&nbsp;%skm)</small>"
msgstr ""
@@ -349,10 +369,14 @@ msgstr ""
msgid "Confirmed:"
msgstr ""
-#: templates/web/default/footer.html:10 templates/web/fiksgatami/footer.html:9
+#: templates/web/fiksgatami/footer.html:9
msgid "Contact"
msgstr ""
+#: templates/web/default/footer.html:18
+msgid "Contact FixMyStreet"
+msgstr ""
+
#: templates/web/default/contact/index.html:1 templates/web/default/contact/index.html:2 templates/web/default/contact/submit.html:1
msgid "Contact Us"
msgstr ""
@@ -365,7 +389,7 @@ msgstr ""
msgid "Council"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:596 templates/web/default/admin/council_list.html:1
+#: perllib/FixMyStreet/App/Controller/Admin.pm:612 templates/web/default/admin/council_list.html:1
msgid "Council contacts"
msgstr ""
@@ -401,7 +425,7 @@ msgstr ""
msgid "Deleted"
msgstr ""
-#: templates/web/default/admin/report_edit.html:14 templates/web/default/report/new/fill_in_details.html:100
+#: templates/web/default/admin/report_edit.html:14 templates/web/default/report/new/fill_in_details.html:99
msgid "Details:"
msgstr ""
@@ -409,6 +433,10 @@ msgstr ""
msgid "Diligency prize league table"
msgstr ""
+#: templates/web/default/auth/general.html:32
+msgid "Do you have a FixMyStreet password?"
+msgstr ""
+
#: templates/web/default/questionnaire/index.html:72
msgid "Don&rsquo;t know"
msgstr ""
@@ -429,11 +457,11 @@ msgstr ""
msgid "Editor"
msgstr ""
-#: templates/web/default/admin/council_contacts.html:20 templates/web/default/admin/council_edit.html:42 templates/web/default/admin/list_updates.html:8 templates/web/default/admin/search_reports.html:15 templates/web/default/report/display.html:95
+#: templates/web/default/admin/council_contacts.html:20 templates/web/default/admin/council_edit.html:42 templates/web/default/admin/list_updates.html:8 templates/web/default/admin/search_reports.html:15
msgid "Email"
msgstr ""
-#: templates/web/default/around/display_location.html:77
+#: templates/web/default/around/display_location.html:71
msgid "Email me new local problems"
msgstr ""
@@ -441,23 +469,19 @@ msgstr ""
msgid "Email me updates"
msgstr ""
-#: templates/web/default/auth/general.html:47
-msgid "Email the details I need to the address I entered above"
-msgstr ""
-
-#: templates/web/default/admin/council_contacts.html:61 templates/web/default/admin/council_edit.html:26 templates/web/default/admin/report_edit.html:28 templates/web/default/admin/update_edit.html:24 templates/web/default/alert/updates.html:13 templates/web/default/auth/general.html:29 templates/web/default/report/display.html:46 templates/web/default/report/new/fill_in_details.html:153
+#: templates/web/default/admin/council_contacts.html:61 templates/web/default/admin/council_edit.html:26 templates/web/default/admin/report_edit.html:28 templates/web/default/admin/update_edit.html:24 templates/web/default/alert/updates.html:13 templates/web/default/report/display.html:46
msgid "Email:"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:464
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:465
msgid "Empty flat or maisonette"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:463
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:464
msgid "Empty house or bungalow"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:466
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:467
msgid "Empty office or other commercial"
msgstr ""
@@ -465,27 +489,31 @@ msgstr ""
msgid "Empty property details form"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:467
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:468
msgid "Empty pub or bar"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:468
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:469
msgid "Empty public building - school, hospital, etc."
msgstr ""
-#: templates/web/default/around/around_index.html:10 templates/web/default/around/around_index.html:13 templates/web/default/index.html:38 templates/web/default/index.html:41
+#: templates/web/default/around/around_index.html:10 templates/web/default/around/around_index.html:13 templates/web/default/index.html:24 templates/web/default/index.html:27
msgid "Enter a nearby GB postcode, or street name and area"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:24
+#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:27
msgid "Enter a nearby postcode, or street name and area"
msgstr ""
-#: templates/web/default/index.html:59
+#: templates/web/default/auth/general.html:64 templates/web/default/report/display.html:167 templates/web/default/report/new/fill_in_details.html:182
+msgid "Enter a new password:"
+msgstr ""
+
+#: templates/web/default/index.html:45
msgid "Enter details of the problem"
msgstr ""
-#: templates/web/default/auth/token.html:5 templates/web/default/questionnaire/error.html:1 templates/web/default/questionnaire/error.html:3 templates/web/default/tokens/abuse.html:1 templates/web/default/tokens/abuse.html:3 templates/web/default/tokens/error.html:1 templates/web/default/tokens/error.html:3
+#: templates/web/default/auth/token.html:5 templates/web/default/errors/generic.html:1 templates/web/default/errors/generic.html:3 templates/web/default/tokens/abuse.html:1 templates/web/default/tokens/abuse.html:3 templates/web/default/tokens/error.html:1 templates/web/default/tokens/error.html:3
msgid "Error"
msgstr ""
@@ -501,7 +529,7 @@ msgstr ""
msgid "First time"
msgstr ""
-#: templates/web/default/header.html:16 templates/web/fiksgatami/header.html:14
+#: templates/web/default/header.html:20 templates/web/fiksgatami/header.html:14
msgid "Fix<span id=\"my\">My</span>Street"
msgstr ""
@@ -530,18 +558,26 @@ msgid ""
"for the county council."
msgstr ""
-#: templates/web/default/front_stats.html:7
+#: templates/web/default/front/stats.html:7
msgid "FixMyStreet updates"
msgstr ""
-#: templates/web/default/admin/report_edit.html:22
+#: templates/web/default/admin/index.html:36 templates/web/default/admin/report_edit.html:22
msgid "Fixed"
msgstr ""
+#: templates/web/default/my/my.html:27
+msgid "Fixed reports"
+msgstr ""
+
#: templates/web/default/admin/search_reports.html:48
msgid "Fixed:"
msgstr ""
+#: templates/web/default/reports/council.html:23
+msgid "Follow a ward link to view only reports within that ward."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:16
msgid "For council(s):"
msgstr ""
@@ -554,15 +590,11 @@ msgstr ""
msgid "Further information about our work on empty homes."
msgstr ""
-#: templates/web/default/index.html:26
-msgid "Get FixMyStreet on your iPhone"
-msgstr ""
-
#: templates/web/default/alert/list.html:112
msgid "Give me an RSS feed"
msgstr ""
-#: templates/web/default/alert/index.html:24 templates/web/default/around/around_index.html:17 templates/web/default/index.html:47
+#: templates/web/default/alert/index.html:24 templates/web/default/around/around_index.html:17 templates/web/default/index.html:33
msgid "Go"
msgstr ""
@@ -570,7 +602,7 @@ msgstr ""
msgid "Going to send questionnaire?"
msgstr ""
-#: templates/web/default/admin/index.html:23
+#: templates/web/default/admin/index.html:24
msgid "Graph of problem creation by status over time"
msgstr ""
@@ -586,7 +618,7 @@ msgstr ""
msgid "Have you ever reported a problem to a council before, or is this your first time?"
msgstr ""
-#: templates/web/default/footer.html:9 templates/web/emptyhomes/header.html:33 templates/web/fiksgatami/footer.html:8
+#: templates/web/default/footer.html:10 templates/web/emptyhomes/header.html:33 templates/web/fiksgatami/footer.html:8
msgid "Help"
msgstr ""
@@ -598,11 +630,11 @@ msgstr ""
msgid "Hidden"
msgstr ""
-#: templates/web/default/around/display_location.html:54
+#: templates/web/default/around/display_location.html:52
msgid "Hide pins"
msgstr ""
-#: templates/web/default/around/display_location.html:59
+#: templates/web/default/around/display_location.html:57
msgid "Hide stale reports"
msgstr ""
@@ -610,19 +642,19 @@ msgstr ""
msgid "History"
msgstr ""
-#: templates/web/default/index.html:54
+#: templates/web/default/index.html:40
msgid "How to report a problem"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:514
+#: perllib/FixMyStreet/App/Controller/Admin.pm:530
msgid "I am afraid you cannot confirm unconfirmed reports."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:96
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:89
msgid "I'm afraid we couldn't locate your problem in the database.\n"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Tokens.pm:161
+#: perllib/FixMyStreet/App/Controller/Tokens.pm:173
msgid "I'm afraid we couldn't validate that token. If you've copied the URL from an email, please check that you copied it exactly.\n"
msgstr ""
@@ -638,7 +670,7 @@ msgstr ""
msgid "If you submit a report here it will be left on the site, but not reported to the council &ndash; please still leave your report, so that we can show to the council the activity in their area."
msgstr ""
-#: templates/web/default/email_sent.html:28
+#: templates/web/default/auth/token.html:23 templates/web/default/email_sent.html:24
msgid "If you use web-based email or have 'junk mail' filters, you may wish to check your bulk/spam mail folders: sometimes, our messages are marked that way."
msgstr ""
@@ -653,11 +685,11 @@ msgstr ""
msgid "Illegal ID"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Alert.pm:105
+#: perllib/FixMyStreet/App/Controller/Alert.pm:102
msgid "Illegal feed selection"
msgstr ""
-#: templates/web/default/around/display_location.html:61
+#: templates/web/default/around/display_location.html:59
msgid "Include stale reports"
msgstr ""
@@ -665,6 +697,10 @@ msgstr ""
msgid "It is worth noting however that the process can sometimes be slow, especially if the property is in very poor repair or the owner is unwilling to act. In most cases it can take six months or more before you can expect to see anything change and sometimes there may be considerable barries to a property being brought back into use. This doesn&rsquo;t mean the council isn&rsquo;t doing anything. We encourage councils to update the website so you can see what is happening. It may be a long process, but you reporting your concerns about this property to the council is a valuable first step."
msgstr ""
+#: templates/web/default/auth/general.html:44 templates/web/default/report/display.html:149 templates/web/default/report/new/fill_in_details.html:164
+msgid "Keep me signed in on this computer"
+msgstr ""
+
#: templates/web/default/admin/council_contacts.html:23
msgid "Last editor"
msgstr ""
@@ -689,36 +725,24 @@ msgstr ""
msgid "Local RSS feeds and email alerts for ‘%s’"
msgstr ""
-#: templates/web/default/footer.html:8 templates/web/emptyhomes/header.html:32 templates/web/fiksgatami/footer.html:7
+#: templates/web/default/footer.html:9 templates/web/emptyhomes/header.html:32 templates/web/fiksgatami/footer.html:7
msgid "Local alerts"
msgstr ""
-#: templates/web/default/index.html:58
+#: templates/web/default/index.html:44
msgid "Locate the problem on a map of the area"
msgstr ""
-#: templates/web/default/auth/general.html:43
-msgid "Log me in"
-msgstr ""
-
-#: templates/web/default/auth/general.html:1 templates/web/default/auth/general.html:3
-msgid "Login or create an account"
-msgstr ""
-
-#: templates/web/default/auth/logout.html:1
-msgid "Logout"
-msgstr ""
-
#: perllib/FixMyStreet/Map/OSM.pm:43
msgid "Map &copy; <a id=\"osm_link\" href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> and contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>"
msgstr ""
-#: perllib/FixMyStreet/Map/OSM/StreetView.pm:27 perllib/FixMyStreet/Map/Tilma/OL/StreetView.pm:21 perllib/FixMyStreet/Map/Tilma/Original/StreetView.pm:21
+#: perllib/FixMyStreet/Map/OSM/StreetView.pm:27
msgid "Map contains Ordnance Survey data &copy; Crown copyright and database right 2010."
msgstr ""
-#: perllib/FixMyStreet/Map/FMS.pm:27
-msgid "Map contains Ordnance Survey data &copy; Crown copyright and database right 2010. Microsoft"
+#: perllib/FixMyStreet/Map/FMS.pm:24
+msgid "Map contains Ordnance Survey data &copy; Crown copyright and database right 2010.<br>&copy; 2011 <a href=\"http://www.bing.com/maps/\">Microsoft</a>. &copy; AND, Navteq, Ordnance Survey."
msgstr ""
#: templates/web/default/contact/index.html:90
@@ -729,15 +753,11 @@ msgstr ""
msgid "More problems nearby"
msgstr ""
-#: templates/web/default/my/my.html:1
-msgid "My Reports"
-msgstr ""
-
#: templates/web/default/admin/list_updates.html:7 templates/web/default/admin/search_reports.html:14 templates/web/default/reports/index.html:10 templates/web/emptyhomes/reports/index.html:10 templates/web/fiksgatami/reports/index.html:9
msgid "Name"
msgstr ""
-#: templates/web/default/admin/report_edit.html:27 templates/web/default/admin/update_edit.html:23 templates/web/default/report/display.html:81 templates/web/default/report/new/fill_in_details.html:130
+#: templates/web/default/admin/report_edit.html:27 templates/web/default/admin/update_edit.html:23
msgid "Name:"
msgstr ""
@@ -745,11 +765,23 @@ msgstr ""
msgid "Navigation"
msgstr ""
-#: templates/web/default/email_sent.html:24
+#: perllib/FixMyStreet/Geocode/OSM.pm:100
+msgid "Nearest named road to the pin placed on the map (automatically generated using OpenStreetMap): %s%s"
+msgstr ""
+
+#: perllib/FixMyStreet/Cobrand/Default.pm:570
+msgid "Nearest postcode to the pin placed on the map (automatically generated): %s (%sm away)"
+msgstr ""
+
+#: perllib/FixMyStreet/Cobrand/Default.pm:558
+msgid "Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s"
+msgstr ""
+
+#: templates/web/default/email_sent.html:20
msgid "Nearly Done! Now check your email..."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:289
+#: perllib/FixMyStreet/App/Controller/Admin.pm:299
msgid "New category contact added"
msgstr ""
@@ -761,7 +793,7 @@ msgstr ""
msgid "New local reports on reportemptyhomes.com"
msgstr ""
-#: templates/web/default/reports/council.html:43 templates/web/default/reports/council.html:44 templates/web/default/reports/index.html:11 templates/web/emptyhomes/reports/index.html:11 templates/web/fiksgatami/reports/index.html:10
+#: templates/web/default/reports/council.html:92 templates/web/default/reports/council.html:93 templates/web/default/reports/index.html:11 templates/web/emptyhomes/reports/index.html:11 templates/web/fiksgatami/reports/index.html:10
msgid "New problems"
msgstr ""
@@ -805,7 +837,11 @@ msgstr ""
msgid "New reports within {{NAME}}'s boundary on reportemptyhomes.com"
msgstr ""
-#: templates/web/default/index.html:27
+#: templates/web/default/admin/questionnaire.html:24
+msgid "New state"
+msgstr ""
+
+#: templates/web/default/front/news.html:8 templates/web/fiksgatami/front/news.html:9
msgid "New!"
msgstr ""
@@ -853,15 +889,23 @@ msgstr ""
msgid "Note:"
msgstr ""
+#: templates/web/default/report/new/fill_in_details.html:148
+msgid "Now to submit your report&hellip; do you have a FixMyStreet password?"
+msgstr ""
+
+#: templates/web/default/report/display.html:133
+msgid "Now to submit your update&hellip; do you have a FixMyStreet password?"
+msgstr ""
+
#: templates/web/default/report/display.html:33 templates/web/default/report/updates.html:19
msgid "Offensive? Unsuitable? Tell us"
msgstr ""
-#: templates/web/default/reports/council.html:72 templates/web/default/reports/council.html:73
+#: templates/web/default/reports/council.html:115 templates/web/default/reports/council.html:116
msgid "Old fixed"
msgstr ""
-#: templates/web/default/reports/council.html:60 templates/web/default/reports/council.html:61
+#: templates/web/default/reports/council.html:109 templates/web/default/reports/council.html:110
msgid "Old problems, state unknown"
msgstr ""
@@ -869,11 +913,15 @@ msgstr ""
msgid "Old problems,<br>state unknown"
msgstr ""
+#: templates/web/default/admin/questionnaire.html:24
+msgid "Old state"
+msgstr ""
+
#: templates/web/default/reports/index.html:15 templates/web/emptyhomes/reports/index.html:14 templates/web/fiksgatami/reports/index.html:14
msgid "Older fixed"
msgstr ""
-#: templates/web/default/reports/council.html:50 templates/web/default/reports/council.html:52 templates/web/default/reports/council.html:56 templates/web/default/reports/council.html:57 templates/web/default/reports/index.html:12 templates/web/emptyhomes/reports/index.html:12 templates/web/fiksgatami/reports/index.html:11
+#: templates/web/default/reports/council.html:101 templates/web/default/reports/council.html:105 templates/web/default/reports/council.html:106 templates/web/default/reports/council.html:99 templates/web/default/reports/index.html:12 templates/web/emptyhomes/reports/index.html:12 templates/web/fiksgatami/reports/index.html:11
msgid "Older problems"
msgstr ""
@@ -881,6 +929,10 @@ msgstr ""
msgid "Open"
msgstr ""
+#: templates/web/default/my/my.html:22
+msgid "Open reports"
+msgstr ""
+
#: templates/web/default/alert/list.html:87
msgid "Or problems reported to:"
msgstr ""
@@ -889,7 +941,7 @@ msgstr ""
msgid "Or you can subscribe to an alert based upon what ward or council you&rsquo;re in:"
msgstr ""
-#: bin/send-reports:168 bin/send-reports:177 perllib/FixMyStreet/App/Controller/Report/New.pm:495 perllib/FixMyStreet/App/Controller/Report/New.pm:504 perllib/FixMyStreet/App/Controller/Report/New.pm:855 perllib/FixMyStreet/DB/Result/Problem.pm:316 perllib/FixMyStreet/DB/Result/Problem.pm:326 perllib/FixMyStreet/DB/Result/Problem.pm:336 perllib/FixMyStreet/DB/Result/Problem.pm:348
+#: bin/send-reports:171 bin/send-reports:180 perllib/FixMyStreet/App/Controller/Report/New.pm:496 perllib/FixMyStreet/App/Controller/Report/New.pm:505 perllib/FixMyStreet/App/Controller/Report/New.pm:869 perllib/FixMyStreet/DB/Result/Problem.pm:316 perllib/FixMyStreet/DB/Result/Problem.pm:326 perllib/FixMyStreet/DB/Result/Problem.pm:336 perllib/FixMyStreet/DB/Result/Problem.pm:348
msgid "Other"
msgstr ""
@@ -901,15 +953,15 @@ msgstr ""
msgid "Partial"
msgstr ""
-#: templates/web/default/auth/change_password.html:26 templates/web/default/auth/general.html:33
+#: templates/web/default/auth/change_password.html:27
msgid "Password:"
msgstr ""
-#: bin/send-reports:68 templates/web/default/admin/report_edit.html:29 templates/web/default/report/new/fill_in_details.html:158
+#: bin/send-reports:68 templates/web/default/admin/report_edit.html:29 templates/web/default/report/new/fill_in_details.html:231
msgid "Phone:"
msgstr ""
-#: templates/web/default/questionnaire/index.html:97 templates/web/default/report/display.html:125 templates/web/default/report/new/fill_in_details.html:120
+#: templates/web/default/questionnaire/index.html:97 templates/web/default/report/display.html:109 templates/web/default/report/new/fill_in_details.html:119
msgid "Photo:"
msgstr ""
@@ -917,7 +969,7 @@ msgstr ""
msgid "Photos of recent nearby reports"
msgstr ""
-#: templates/web/default/index.html:76
+#: templates/web/default/index.html:63
msgid "Photos of recent reports"
msgstr ""
@@ -925,7 +977,7 @@ msgstr ""
msgid "Please be polite, concise and to the point."
msgstr ""
-#: templates/web/default/auth/change_password.html:12 templates/web/default/auth/change_password.html:17
+#: templates/web/default/auth/change_password.html:14 templates/web/default/auth/change_password.html:19
msgid "Please check the passwords and try again"
msgstr ""
@@ -937,7 +989,7 @@ msgstr ""
msgid "Please check your email address is correct"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:639 perllib/FixMyStreet/App/Controller/Report/New.pm:659 perllib/FixMyStreet/App/Controller/Report/New.pm:675 perllib/FixMyStreet/DB/Result/Problem.pm:206
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:652 perllib/FixMyStreet/App/Controller/Report/New.pm:671 perllib/FixMyStreet/App/Controller/Report/New.pm:688 perllib/FixMyStreet/DB/Result/Problem.pm:206
msgid "Please choose a category"
msgstr ""
@@ -956,11 +1008,11 @@ msgstr ""
msgid "Please do not be abusive &mdash; abusing your council devalues the service for all users."
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Comment.pm:108
+#: perllib/FixMyStreet/DB/Result/Comment.pm:111
msgid "Please enter a message"
msgstr ""
-#: templates/web/default/auth/change_password.html:12 templates/web/default/auth/change_password.html:15
+#: templates/web/default/auth/change_password.html:14 templates/web/default/auth/change_password.html:17
msgid "Please enter a password"
msgstr ""
@@ -968,11 +1020,11 @@ msgstr ""
msgid "Please enter a subject"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/User.pm:91
+#: perllib/FixMyStreet/DB/Result/User.pm:92
msgid "Please enter a valid email"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Alert.pm:123 perllib/FixMyStreet/App/Controller/Contact.pm:105
+#: perllib/FixMyStreet/App/Controller/Alert.pm:345 perllib/FixMyStreet/App/Controller/Contact.pm:105
msgid "Please enter a valid email address"
msgstr ""
@@ -980,15 +1032,15 @@ msgstr ""
msgid "Please enter some details"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Contact.pm:94 perllib/FixMyStreet/DB/Result/User.pm:88 templates/web/default/auth/general.html:13 templates/web/default/auth/general.html:8
+#: perllib/FixMyStreet/App/Controller/Contact.pm:94 perllib/FixMyStreet/DB/Result/User.pm:89 templates/web/default/auth/general.html:13 templates/web/default/auth/general.html:8
msgid "Please enter your email"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:199 perllib/FixMyStreet/DB/Result/User.pm:83
+#: perllib/FixMyStreet/DB/Result/Problem.pm:199
msgid "Please enter your full name, councils need this information - if you do not wish your name to be shown on the site, untick the box"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Contact.pm:93 perllib/FixMyStreet/DB/Result/Problem.pm:192 perllib/FixMyStreet/DB/Result/User.pm:76
+#: perllib/FixMyStreet/App/Controller/Contact.pm:93 perllib/FixMyStreet/DB/Result/Comment.pm:108 perllib/FixMyStreet/DB/Result/Problem.pm:192 perllib/FixMyStreet/DB/Result/User.pm:85
msgid "Please enter your name"
msgstr ""
@@ -1014,11 +1066,11 @@ msgid ""
"photo of the problem if you have one), etc."
msgstr ""
-#: templates/web/default/report/new/fill_in_details.html:49
+#: templates/web/default/report/new/fill_in_details.html:48
msgid "Please fill in the form below with details of the problem, and describe the location as precisely as possible in the details box."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:242
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:235
msgid "Please indicate whether you'd like to receive another questionnaire"
msgstr ""
@@ -1026,7 +1078,7 @@ msgstr ""
msgid "Please note that updates are not sent to the council. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>"
msgstr ""
-#: templates/web/default/report/new/fill_in_details.html:34
+#: templates/web/default/report/new/fill_in_details.html:33
msgid "Please note your report has <strong>not yet been sent</strong>. Choose a category and add further information below, then submit."
msgstr ""
@@ -1034,27 +1086,27 @@ msgstr ""
msgid "Please note:"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:245
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:238
msgid "Please provide some explanation as to why you're reopening this report"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:252
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:245
msgid "Please provide some text as well as a photo"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:122 perllib/FixMyStreet/App/Controller/Questionnaire.pm:238
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:115 perllib/FixMyStreet/App/Controller/Questionnaire.pm:231
msgid "Please say whether you've ever reported a problem to your council before"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Alert.pm:85
+#: perllib/FixMyStreet/App/Controller/Alert.pm:82
msgid "Please select the feed you want"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Alert.pm:125
+#: perllib/FixMyStreet/App/Controller/Alert.pm:120
msgid "Please select the type of alert you want"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:234
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:227
msgid "Please state whether or not the problem has been fixed"
msgstr ""
@@ -1062,7 +1114,7 @@ msgstr ""
msgid "Please take a look at the updates that have been left."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:728
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:740
msgid "Please upload a JPEG image only"
msgstr ""
@@ -1070,7 +1122,7 @@ msgstr ""
msgid "Please write a message"
msgstr ""
-#: templates/web/default/contact/index.html:93 templates/web/default/report/display.html:138
+#: templates/web/default/contact/index.html:93 templates/web/default/report/display.html:119 templates/web/default/report/display.html:154 templates/web/default/report/display.html:175
msgid "Post"
msgstr ""
@@ -1082,7 +1134,7 @@ msgstr ""
msgid "Posted by %s at %s"
msgstr ""
-#: perllib/FixMyStreet/Map/Tilma/Original.pm:90 templates/web/default/maps/openlayers.html:81 templates/web/default/maps/tilma/original.html:62
+#: perllib/FixMyStreet/Map/Tilma/Original.pm:92 templates/web/default/maps/openlayers.html:89 templates/web/default/maps/tilma/original.html:63
msgid "Problem"
msgstr ""
@@ -1098,15 +1150,19 @@ msgstr ""
msgid "Problem %s sent to council %s"
msgstr ""
-#: templates/web/default/admin/index.html:27
+#: templates/web/default/admin/index.html:28
msgid "Problem breakdown by state"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:743
+#: perllib/FixMyStreet/App/Controller/Admin.pm:759
msgid "Problem marked as open."
msgstr ""
-#: templates/web/default/around/display_location.html:73
+#: templates/web/default/admin/questionnaire.html:21
+msgid "Problem state change based on survey results"
+msgstr ""
+
+#: templates/web/default/around/display_location.html:67
msgid "Problems in this area"
msgstr ""
@@ -1118,15 +1174,15 @@ msgstr ""
msgid "Problems within %.1fkm of this location"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Default.pm:719 perllib/FixMyStreet/Cobrand/EmptyHomes.pm:161 perllib/FixMyStreet/Cobrand/FiksGataMi.pm:127
+#: perllib/FixMyStreet/Cobrand/Default.pm:792 perllib/FixMyStreet/Cobrand/EmptyHomes.pm:162 perllib/FixMyStreet/Cobrand/FiksGataMi.pm:172
msgid "Problems within %s"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Default.pm:728 perllib/FixMyStreet/Cobrand/EmptyHomes.pm:169
+#: perllib/FixMyStreet/Cobrand/Default.pm:801 perllib/FixMyStreet/Cobrand/EmptyHomes.pm:170
msgid "Problems within %s ward"
msgstr ""
-#: templates/web/default/reports/council.html:11 templates/web/default/reports/council.html:14
+#: templates/web/default/reports/council.html:0 templates/web/default/reports/council.html:16
msgid "Problems within %s, FixMyStreet"
msgstr ""
@@ -1138,7 +1194,7 @@ msgstr ""
msgid "Properties recently reported as put back to use on reportemptyhomes.com"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:470
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:471
msgid "Property type:"
msgstr ""
@@ -1146,7 +1202,11 @@ msgstr ""
msgid "Provide an update"
msgstr ""
-#: templates/web/default/questionnaire/index.html:0 templates/web/default/questionnaire/index.html:14 templates/web/default/questionnaire/index.html:4
+#: templates/web/default/report/display.html:172 templates/web/default/report/new/fill_in_details.html:187
+msgid "Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports."
+msgstr ""
+
+#: templates/web/default/questionnaire/completed.html:1 templates/web/default/questionnaire/completed.html:2 templates/web/default/questionnaire/index.html:0 templates/web/default/questionnaire/index.html:14 templates/web/default/questionnaire/index.html:4
msgid "Questionnaire"
msgstr ""
@@ -1158,27 +1218,27 @@ msgstr ""
msgid "Questionnaire %d sent for problem %d"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:188
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:181
msgid "Questionnaire filled in by problem reporter"
msgstr ""
-#: templates/web/default/alert/list.html:54 templates/web/default/around/display_location.html:1 templates/web/default/around/display_location.html:3 templates/web/default/report/display.html:55 templates/web/default/reports/council.html:17
+#: templates/web/default/alert/list.html:54 templates/web/default/around/display_location.html:1 templates/web/default/around/display_location.html:3 templates/web/default/report/display.html:55 templates/web/default/reports/council.html:61
msgid "RSS feed"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Default.pm:757 perllib/FixMyStreet/Cobrand/Default.pm:771
+#: perllib/FixMyStreet/Cobrand/Default.pm:830 perllib/FixMyStreet/Cobrand/Default.pm:844
msgid "RSS feed for %s"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Default.pm:764 perllib/FixMyStreet/Cobrand/Default.pm:778
+#: perllib/FixMyStreet/Cobrand/Default.pm:837 perllib/FixMyStreet/Cobrand/Default.pm:851
msgid "RSS feed for %s ward, %s"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Default.pm:787 perllib/FixMyStreet/Cobrand/Default.pm:801 perllib/FixMyStreet/Cobrand/FiksGataMi.pm:143 perllib/FixMyStreet/Cobrand/FiksGataMi.pm:151 perllib/FixMyStreet/Cobrand/FiksGataMi.pm:161 perllib/FixMyStreet/Cobrand/FiksGataMi.pm:169
+#: perllib/FixMyStreet/Cobrand/Default.pm:860 perllib/FixMyStreet/Cobrand/Default.pm:874 perllib/FixMyStreet/Cobrand/FiksGataMi.pm:188 perllib/FixMyStreet/Cobrand/FiksGataMi.pm:196 perllib/FixMyStreet/Cobrand/FiksGataMi.pm:206 perllib/FixMyStreet/Cobrand/FiksGataMi.pm:214
msgid "RSS feed of %s"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Default.pm:793 perllib/FixMyStreet/Cobrand/Default.pm:807
+#: perllib/FixMyStreet/Cobrand/Default.pm:866 perllib/FixMyStreet/Cobrand/Default.pm:880
msgid "RSS feed of %s, within %s ward"
msgstr ""
@@ -1186,15 +1246,15 @@ msgstr ""
msgid "RSS feed of nearby problems"
msgstr ""
-#: templates/web/default/reports/council.html:17
+#: templates/web/default/reports/council.html:61
msgid "RSS feed of problems in this %s"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Default.pm:720 perllib/FixMyStreet/Cobrand/EmptyHomes.pm:162 perllib/FixMyStreet/Cobrand/FiksGataMi.pm:126
+#: perllib/FixMyStreet/Cobrand/Default.pm:793 perllib/FixMyStreet/Cobrand/EmptyHomes.pm:163 perllib/FixMyStreet/Cobrand/FiksGataMi.pm:171
msgid "RSS feed of problems within %s"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Default.pm:727 perllib/FixMyStreet/Cobrand/EmptyHomes.pm:168
+#: perllib/FixMyStreet/Cobrand/Default.pm:800 perllib/FixMyStreet/Cobrand/EmptyHomes.pm:169
msgid "RSS feed of problems within %s ward"
msgstr ""
@@ -1210,15 +1270,15 @@ msgstr ""
msgid "Receive email when updates are left on this problem."
msgstr ""
-#: templates/web/default/around/display_location.html:0 templates/web/default/around/display_location.html:35
+#: templates/web/default/around/display_location.html:0 templates/web/default/around/display_location.html:34
msgid "Recent local problems, FixMyStreet"
msgstr ""
-#: templates/web/default/reports/council.html:68 templates/web/default/reports/council.html:69 templates/web/default/reports/index.html:14 templates/web/emptyhomes/reports/index.html:13 templates/web/fiksgatami/reports/index.html:13
+#: templates/web/default/reports/council.html:87 templates/web/default/reports/council.html:88 templates/web/default/reports/index.html:14 templates/web/emptyhomes/reports/index.html:13 templates/web/fiksgatami/reports/index.html:13
msgid "Recently fixed"
msgstr ""
-#: templates/web/default/index.html:85
+#: templates/web/default/index.html:72
msgid "Recently reported problems"
msgstr ""
@@ -1246,6 +1306,14 @@ msgstr ""
msgid "Report, view, or discuss local problems"
msgstr ""
+#: templates/web/default/my/my.html:69
+msgid "Reported %s"
+msgstr ""
+
+#: templates/web/default/my/my.html:67
+msgid "Reported %s, to %s"
+msgstr ""
+
#: perllib/FixMyStreet/DB/Result/Problem.pm:331 templates/web/default/contact/index.html:45
msgid "Reported anonymously at %s"
msgstr ""
@@ -1282,11 +1350,11 @@ msgstr ""
msgid "Reported in the %s category by %s at %s"
msgstr ""
-#: templates/web/default/around/around_index.html:1 templates/web/default/report/new/fill_in_details.html:0 templates/web/default/report/new/fill_in_details.html:3 templates/web/default/report/new/fill_in_details.html:30
+#: templates/web/default/around/around_index.html:1 templates/web/default/report/new/fill_in_details.html:0 templates/web/default/report/new/fill_in_details.html:29 templates/web/default/report/new/fill_in_details.html:3
msgid "Reporting a problem"
msgstr ""
-#: templates/web/default/around/display_location.html:103
+#: templates/web/default/around/display_location.html:97
msgid "Reports on and around the map"
msgstr ""
@@ -1294,11 +1362,19 @@ msgstr ""
msgid "Resend report"
msgstr ""
+#: perllib/FixMyStreet/Geocode/OSM.pm:107
+msgid "Road operator for this named road (derived from road reference number and type): %s"
+msgstr ""
+
+#: perllib/FixMyStreet/Geocode/OSM.pm:104
+msgid "Road operator for this named road (from OpenStreetMap): %s"
+msgstr ""
+
#: templates/web/default/admin/council_edit.html:35
msgid "Save changes"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:597 templates/web/default/admin/search_reports.html:1
+#: perllib/FixMyStreet/App/Controller/Admin.pm:613 templates/web/default/admin/search_reports.html:1
msgid "Search Reports"
msgstr ""
@@ -1310,7 +1386,7 @@ msgstr ""
msgid "Select which type of alert you'd like and click the button for an RSS feed, or enter your email address to subscribe to an email alert."
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:390
+#: perllib/FixMyStreet/DB/Result/Problem.pm:396
msgid "Sent to %s %s later"
msgstr ""
@@ -1339,15 +1415,39 @@ msgid ""
" significant contribution to the supply of affordable homes in Wales."
msgstr ""
-#: templates/web/default/around/display_location.html:52
+#: templates/web/default/report/display.html:205 templates/web/default/report/new/fill_in_details.html:226
+msgid "Show my name publicly"
+msgstr ""
+
+#: templates/web/default/around/display_location.html:50
msgid "Show pins"
msgstr ""
+#: templates/web/default/auth/general.html:3 templates/web/default/auth/general.html:49
+msgid "Sign in"
+msgstr ""
+
+#: templates/web/default/auth/general.html:74
+msgid "Sign in by email"
+msgstr ""
+
+#: templates/web/default/auth/general.html:1
+msgid "Sign in or create an account"
+msgstr ""
+
+#: templates/web/default/auth/sign_out.html:1 templates/web/default/header.html:26 templates/web/emptyhomes/header.html:46
+msgid "Sign out"
+msgstr ""
+
+#: templates/web/default/header.html:25 templates/web/emptyhomes/header.html:45
+msgid "Signed in as %s"
+msgstr ""
+
#: templates/web/default/alert/index.html:31
msgid "Some photos of recent reports"
msgstr ""
-#: perllib/FixMyStreet/App/View/Email.pm:32 perllib/FixMyStreet/App/View/Web.pm:38
+#: perllib/FixMyStreet/App/View/Email.pm:32 perllib/FixMyStreet/App/View/Web.pm:41
msgid "Some text to localize"
msgstr ""
@@ -1355,26 +1455,26 @@ msgstr ""
msgid "Some unconfirmeds"
msgstr ""
-#: perllib/FixMyStreet/Geocode.pm:171
+#: perllib/FixMyStreet/Cobrand/Default.pm:516
msgid "Sorry, that appears to be a Crown dependency postcode, which we don't cover."
msgstr ""
-#: perllib/FixMyStreet/Geocode.pm:71
-msgid "Sorry, that location appears to be too general; please be more specific."
-msgstr ""
-
#: templates/web/default/tokens/abuse.html:5
msgid "Sorry, there has been an error confirming your problem."
msgstr ""
-#: perllib/FixMyStreet/Geocode.pm:103 perllib/FixMyStreet/Geocode.pm:150
+#: perllib/FixMyStreet/Geocode.pm:27 perllib/FixMyStreet/Geocode/Bing.pm:51 perllib/FixMyStreet/Geocode/Google.pm:68
msgid "Sorry, we could not find that location."
msgstr ""
-#: perllib/FixMyStreet/Geocode.pm:148
+#: perllib/FixMyStreet/Geocode/Bing.pm:44 perllib/FixMyStreet/Geocode/Google.pm:60
msgid "Sorry, we could not parse that location. Please try again."
msgstr ""
+#: templates/web/default/footer.html:17 templates/web/fiksgatami/footer.html:15
+msgid "Source code"
+msgstr ""
+
#: templates/web/default/admin/list_updates.html:6 templates/web/default/admin/search_reports.html:21
msgid "State"
msgstr ""
@@ -1383,11 +1483,11 @@ msgstr ""
msgid "State:"
msgstr ""
-#: templates/web/default/admin/report_edit.html:13 templates/web/default/contact/index.html:83 templates/web/default/report/new/fill_in_details.html:91
+#: templates/web/default/admin/report_edit.html:13 templates/web/default/contact/index.html:83 templates/web/default/report/new/fill_in_details.html:90
msgid "Subject:"
msgstr ""
-#: templates/web/default/questionnaire/creator_fixed.html:19 templates/web/default/report/new/fill_in_details.html:171
+#: templates/web/default/questionnaire/creator_fixed.html:19 templates/web/default/report/new/fill_in_details.html:131 templates/web/default/report/new/fill_in_details.html:169 templates/web/default/report/new/fill_in_details.html:190
msgid "Submit"
msgstr ""
@@ -1403,11 +1503,11 @@ msgstr ""
msgid "Subscribe"
msgstr ""
-#: templates/web/default/alert/list.html:124
+#: templates/web/default/alert/list.html:128
msgid "Subscribe me to an email alert"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:595 templates/web/default/admin/index.html:1
+#: perllib/FixMyStreet/App/Controller/Admin.pm:611 templates/web/default/admin/index.html:1
msgid "Summary"
msgstr ""
@@ -1415,7 +1515,7 @@ msgstr ""
msgid "Summary reports"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:599 templates/web/default/admin/questionnaire.html:1
+#: perllib/FixMyStreet/App/Controller/Admin.pm:615 templates/web/default/admin/questionnaire.html:1
msgid "Survey Results"
msgstr ""
@@ -1467,7 +1567,7 @@ msgstr ""
msgid "Thanks, glad to hear it's been fixed! Could we just ask if you have ever reported a problem to a council before?"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:737
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:749
msgid "That image doesn't appear to have uploaded correctly (%s), please try again."
msgstr ""
@@ -1475,15 +1575,15 @@ msgstr ""
msgid "That location does not appear to be covered by a council, perhaps it is offshore - please try somewhere more specific."
msgstr ""
-#: perllib/FixMyStreet/Geocode.pm:81
+#: perllib/FixMyStreet/App/Controller/Location.pm:107
msgid "That location does not appear to be in Britain; please try again."
msgstr ""
-#: perllib/FixMyStreet/Geocode.pm:165
+#: perllib/FixMyStreet/Cobrand/Default.pm:509 perllib/FixMyStreet/Cobrand/FiksGataMi.pm:73
msgid "That postcode was not recognised, sorry."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:496
+#: perllib/FixMyStreet/App/Controller/Admin.pm:512
msgid "That problem will now be resent."
msgstr ""
@@ -1510,7 +1610,7 @@ msgid ""
" the UK."
msgstr ""
-#: templates/web/default/email_sent.html:26
+#: templates/web/default/auth/token.html:21 templates/web/default/email_sent.html:22
msgid "The confirmation email <strong>may</strong> take a few minutes to arrive &mdash; <em>please</em> be patient."
msgstr ""
@@ -1518,6 +1618,14 @@ msgstr ""
msgid "The details of your problem are available on the right hand side of this page."
msgstr ""
+#: perllib/FixMyStreet/App/Controller/Reports.pm:46 perllib/FixMyStreet/App/Controller/Reports.pm:73
+msgid "The error was: %s"
+msgstr ""
+
+#: perllib/FixMyStreet/Geocode/OSM.pm:99
+msgid "The following information about the nearest road might be inaccurate or irrelevant, if the problem is close to several roads or close to a road without a name registered in OpenStreetMap."
+msgstr ""
+
#: db/alert_types.pl:19 db/alert_types.pl:23 db/alert_types.pl:27 db/alert_types.pl:31
msgid "The latest local problems reported by users"
msgstr ""
@@ -1562,7 +1670,7 @@ msgstr ""
msgid "The latest reports within {{NAME}}'s boundary reported by users"
msgstr ""
-#: templates/web/default/auth/change_password.html:12 templates/web/default/auth/change_password.html:16
+#: templates/web/default/auth/change_password.html:14 templates/web/default/auth/change_password.html:18
msgid "The passwords do not match"
msgstr ""
@@ -1570,7 +1678,7 @@ msgstr ""
msgid "The requested URL '%s' was not found on this server"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:477 perllib/FixMyStreet/App/Controller/Admin.pm:647 perllib/FixMyStreet/App/Controller/Admin.pm:686 perllib/FixMyStreet/App/Controller/Admin.pm:771
+#: perllib/FixMyStreet/App/Controller/Admin.pm:493 perllib/FixMyStreet/App/Controller/Admin.pm:663 perllib/FixMyStreet/App/Controller/Admin.pm:702 perllib/FixMyStreet/App/Controller/Admin.pm:787
msgid "The requested URL was not found on this server."
msgstr ""
@@ -1586,19 +1694,31 @@ msgstr ""
msgid "The user could not locate the problem on a map, but to see the area around the location they entered"
msgstr ""
+#: perllib/FixMyStreet/App/Controller/Reports.pm:72
+msgid "There was a problem showing the All Reports page. Please try again later."
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:578 perllib/FixMyStreet/App/Controller/Report/Update.pm:117 templates/web/default/auth/general.html:23
+msgid "There was a problem with your email/password combination. Passwords and user accounts are a brand <strong>new</strong> service, so you probably do not have one yet &ndash; please fill in the right hand side of this form to get one."
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Alert.pm:354
+msgid "There was a problem with your email/password combination. Please try again."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Contact.pm:115
msgid "There were problems with your report. Please see below."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report/Update.pm:202
+#: perllib/FixMyStreet/App/Controller/Report/Update.pm:211
msgid "There were problems with your update. Please see below."
msgstr ""
-#: bin/send-reports:178
+#: bin/send-reports:181
msgid "This email has been sent to both councils covering the location of the problem, as the user did not categorise it; please ignore it if you're not the correct council to deal with the issue, or let us know what category of problem this is so we can add it to our system."
msgstr ""
-#: bin/send-reports:181
+#: bin/send-reports:184
msgid "This email has been sent to several councils covering the location of the problem, as the category selected is provided for all of them; please ignore it if you're not the correct council to deal with the issue."
msgstr ""
@@ -1606,11 +1726,11 @@ msgstr ""
msgid "This is a developer site; things might break at any time, and the database will be periodically deleted."
msgstr ""
-#: templates/web/default/reports/council.html:20
+#: templates/web/default/reports/council.html:65
msgid "This is a summary of all reports for one %s."
msgstr ""
-#: templates/web/default/reports/council.html:22
+#: templates/web/default/reports/council.html:67
msgid "This is a summary of all reports for this %s."
msgstr ""
@@ -1618,11 +1738,15 @@ msgstr ""
msgid "This is a summary of all reports on this site; select a particular council to see the reports sent there."
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Default.pm:840 perllib/FixMyStreet/Cobrand/EmptyHomes.pm:117 templates/web/default/report/display.html:111
+#: perllib/FixMyStreet/Cobrand/Default.pm:913 perllib/FixMyStreet/Cobrand/EmptyHomes.pm:117 templates/web/default/report/display.html:96
msgid "This problem has been fixed"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Default.pm:836
+#: templates/web/default/report/display.html:91
+msgid "This problem has not been fixed"
+msgstr ""
+
+#: perllib/FixMyStreet/Cobrand/Default.pm:909
msgid "This problem is old and of unknown status."
msgstr ""
@@ -1638,7 +1762,7 @@ msgstr ""
msgid "This web page also contains a photo of the problem, provided by the user."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:598 templates/web/default/admin/timeline.html:1
+#: perllib/FixMyStreet/App/Controller/Admin.pm:614 templates/web/default/admin/timeline.html:1
msgid "Timeline"
msgstr ""
@@ -1652,7 +1776,7 @@ msgid ""
"postcode or street name and area:"
msgstr ""
-#: templates/web/default/around/display_location.html:92
+#: templates/web/default/around/display_location.html:86
msgid "To report a problem, simply <strong>click on the map</strong> at the correct location."
msgstr ""
@@ -1660,10 +1784,18 @@ msgstr ""
msgid "To view a map of the precise location of this issue"
msgstr ""
+#: templates/web/default/admin/index.html:36 templates/web/default/admin/questionnaire.html:24
+msgid "Total"
+msgstr ""
+
#: templates/web/default/maps/tilma/original.html:10
msgid "Unable to fetch the map tiles from the tile server."
msgstr ""
+#: perllib/FixMyStreet/App/Controller/Reports.pm:45
+msgid "Unable to look up areas in MaPit. Please try again later."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:22 templates/web/default/admin/update_edit.html:19
msgid "Unconfirmed"
msgstr ""
@@ -1672,7 +1804,7 @@ msgstr ""
msgid "Unknown alert type"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report.pm:70 perllib/FixMyStreet/App/Controller/Report/Update.pm:24
+#: perllib/FixMyStreet/App/Controller/Report.pm:70
msgid "Unknown problem ID"
msgstr ""
@@ -1688,7 +1820,7 @@ msgstr ""
msgid "Update below added by %s at %s"
msgstr ""
-#: templates/web/default/admin/index.html:29
+#: templates/web/default/admin/index.html:30
msgid "Update breakdown by state"
msgstr ""
@@ -1700,11 +1832,11 @@ msgstr ""
msgid "Update statuses"
msgstr ""
-#: templates/web/default/report/display.html:103
+#: templates/web/default/report/display.html:84
msgid "Update:"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:570 perllib/FixMyStreet/App/Controller/Admin.pm:733
+#: perllib/FixMyStreet/App/Controller/Admin.pm:586 perllib/FixMyStreet/App/Controller/Admin.pm:749
msgid "Updated!"
msgstr ""
@@ -1720,7 +1852,7 @@ msgstr ""
msgid "Updates to this problem, FixMyStreet"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:284 perllib/FixMyStreet/App/Controller/Admin.pm:314
+#: perllib/FixMyStreet/App/Controller/Admin.pm:294 perllib/FixMyStreet/App/Controller/Admin.pm:324
msgid "Values updated"
msgstr ""
@@ -1732,7 +1864,7 @@ msgstr ""
msgid "View your report"
msgstr ""
-#: templates/web/default/around/display_location.html:0 templates/web/default/around/display_location.html:34
+#: templates/web/default/around/display_location.html:0 templates/web/default/around/display_location.html:33
msgid "Viewing a location"
msgstr ""
@@ -1740,27 +1872,35 @@ msgstr ""
msgid "Viewing a problem"
msgstr ""
-#: perllib/FixMyStreet/Geocode.pm:155 perllib/FixMyStreet/Geocode.pm:174
+#: templates/web/default/reports/council.html:22
+msgid "Wards of this council"
+msgstr ""
+
+#: perllib/FixMyStreet/Geocode/Bing.pm:46
msgid "We do not cover Northern Ireland, I'm afraid, as our licence doesn't include any maps for the region."
msgstr ""
+#: perllib/FixMyStreet/Cobrand/Default.pm:520 perllib/FixMyStreet/Geocode/Google.pm:63
+msgid "We do not currently cover Northern Ireland, I'm afraid."
+msgstr ""
+
#: templates/web/default/alert/choose.html:6 templates/web/default/around/around_index.html:33
msgid "We found more than one match for that location. We show up to ten matches, please try a different search if yours is not here."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Around.pm:229
-msgid "We had a problem with the supplied co-ordinates - outside the UK?"
+#: templates/web/default/auth/token.html:19
+msgid "We have sent you an email containing a link to confirm your account."
msgstr ""
#: templates/web/emptyhomes/tokens/confirm_problem.html:18 templates/web/emptyhomes/tokens/confirm_problem.html:20
msgid "We may contact you periodically to ask if anything has changed with the property you reported."
msgstr ""
-#: bin/send-reports:188
+#: bin/send-reports:191
msgid "We realise this problem might be the responsibility of %s; however, we don't currently have any contact details for them. If you know of an appropriate contact address, please do get in touch."
msgstr ""
-#: templates/web/default/index.html:60
+#: templates/web/default/index.html:46
msgid "We send it to the council on your behalf"
msgstr ""
@@ -1784,7 +1924,7 @@ msgstr ""
msgid "When sent"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:465
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:466
msgid "Whole block of empty flats"
msgstr ""
@@ -1808,39 +1948,35 @@ msgstr ""
msgid "You are reporting the following update for being abusive, containing personal information, or similar:"
msgstr ""
-#: templates/web/default/reports/council.html:35
-msgid "You can <a href=\"%s\">see less detail</a> or go back and <a href=\"/reports\">show all councils</a>."
-msgstr ""
-
-#: templates/web/default/reports/council.html:31
-msgid "You can <a href=\"%s\">see less detail</a>."
+#: templates/web/default/reports/council.html:71
+msgid "You can <a href=\"%s\">view all reports for the council</a> or <a href=\"/reports\">show all councils</a>."
msgstr ""
-#: templates/web/default/reports/council.html:37
-msgid "You can <a href=\"%s\">see more details</a> or go back and <a href=\"/reports\">show all councils</a>."
-msgstr ""
-
-#: templates/web/default/reports/council.html:33
-msgid "You can <a href=\"%s\">see more details</a>."
+#: templates/web/default/reports/council.html:73
+msgid "You can <a href=\"/reports\">show all councils</a>."
msgstr ""
#: templates/web/default/report/new/no_councils_text.html:14 templates/web/default/report/new/no_councils_text.html:3 templates/web/default/report/new/some_councils_text.html:20 templates/web/default/report/new/some_councils_text.html:22
msgid "You can help us by finding a contact email address for local problems for %s and emailing it to us at <a href='mailto:%s'>%s</a>."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:45
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:38
msgid "You have already answered this questionnaire. If you have a question, please <a href='%s'>get in touch</a>, or <a href='%s'>view your problem</a>.\n"
msgstr ""
-#: templates/web/default/questionnaire/index.html:94 templates/web/default/report/display.html:122 templates/web/default/report/new/fill_in_details.html:111
+#: templates/web/default/questionnaire/index.html:94 templates/web/default/report/new/fill_in_details.html:110
msgid "You have already attached a photo to this report, attaching another one will replace it."
msgstr ""
-#: templates/web/default/auth/logout.html:3
-msgid "You have been logged out"
+#: templates/web/default/report/display.html:106
+msgid "You have already attached a photo to this update, attaching another one will replace it."
msgstr ""
-#: templates/web/default/report/new/fill_in_details.html:36
+#: templates/web/default/auth/sign_out.html:3
+msgid "You have been signed out"
+msgstr ""
+
+#: templates/web/default/report/new/fill_in_details.html:35
msgid "You have located the problem at the point marked with a purple pin on the map. If this is not the correct location, simply click on the map again. "
msgstr ""
@@ -1864,7 +2000,11 @@ msgstr ""
msgid "You have successfully deleted your alert."
msgstr ""
-#: templates/web/default/email_sent.html:30
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:584 perllib/FixMyStreet/App/Controller/Report/Update.pm:123
+msgid "You have successfully signed in; please check and confirm your details are accurate:"
+msgstr ""
+
+#: templates/web/default/email_sent.html:26
msgid "You must now click the link in the email we've just sent you &mdash; if you do not, %s."
msgstr ""
@@ -1872,18 +2012,34 @@ msgstr ""
msgid "You really want to resend?"
msgstr ""
-#: templates/web/default/my/my.html:3
+#: templates/web/default/my/my.html:0 templates/web/default/my/my.html:14 templates/web/default/my/my.html:3
msgid "Your Reports"
msgstr ""
-#: templates/web/default/alert/list.html:120
+#: templates/web/default/auth/general.html:27
+msgid "Your email address:"
+msgstr ""
+
+#: templates/web/default/alert/list.html:122 templates/web/default/report/display.html:128 templates/web/default/report/new/fill_in_details.html:141
msgid "Your email:"
msgstr ""
-#: templates/web/default/contact/index.html:68
+#: templates/web/default/auth/general.html:59 templates/web/default/contact/index.html:68 templates/web/default/report/display.html:199 templates/web/default/report/new/fill_in_details.html:219
msgid "Your name:"
msgstr ""
+#: templates/web/default/auth/change_password.html:6
+msgid "Your password has been changed"
+msgstr ""
+
+#: templates/web/default/footer.html:7
+msgid "Your reports"
+msgstr ""
+
+#: templates/web/default/my/my.html:40
+msgid "Your updates"
+msgstr ""
+
#: templates/web/default/contact/index.html:76
msgid "Your&nbsp;email:"
msgstr ""
@@ -1900,7 +2056,11 @@ msgstr ""
msgid "didn't use map"
msgstr ""
-#: perllib/Utils.pm:241
+#: templates/web/default/admin/index.html:15
+msgid "from %d different users"
+msgstr ""
+
+#: perllib/Utils.pm:247
msgid "less than a minute"
msgstr ""
@@ -1908,7 +2068,7 @@ msgstr ""
msgid "marked as fixed"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:106 templates/web/default/admin/questionnaire.html:15 templates/web/default/admin/questionnaire.html:16
+#: perllib/FixMyStreet/App/Controller/Admin.pm:107 templates/web/default/admin/questionnaire.html:15 templates/web/default/admin/questionnaire.html:16
msgid "n/a"
msgstr ""
@@ -1932,11 +2092,11 @@ msgstr ""
msgid "the map was not used so pin location may be inaccurate"
msgstr ""
-#: bin/send-reports:169
+#: bin/send-reports:172
msgid "this type of local problem"
msgstr ""
-#: perllib/Utils.pm:217
+#: perllib/Utils.pm:221
msgid "today"
msgstr ""
@@ -1972,7 +2132,7 @@ msgstr ""
msgid "your update will not be posted"
msgstr ""
-#: templates/web/default/front_stats.html:19
+#: templates/web/default/front/stats.html:19
#, perl-format
msgid "<big>%s</big> report recently"
msgid_plural "<big>%s</big> reports recently"
@@ -1986,30 +2146,30 @@ msgid_plural "We do not yet have details for the councils that cover this locati
msgstr[0] ""
msgstr[1] ""
-#: templates/web/default/front_stats.html:14
+#: templates/web/default/front/stats.html:14
#, perl-format
msgid "<big>%s</big> report in past week"
msgid_plural "<big>%s</big> reports in past week"
msgstr[0] ""
msgstr[1] ""
-#: templates/web/default/front_stats.html:25
+#: templates/web/default/front/stats.html:25
#, perl-format
msgid "<big>%s</big> fixed in past month"
msgid_plural "<big>%s</big> fixed in past month"
msgstr[0] ""
msgstr[1] ""
-#: templates/web/default/report/new/some_councils_text.html:14
+#: templates/web/default/front/stats.html:31
#, perl-format
-msgid "We do <strong>not</strong> yet have details for the other council that covers this location."
-msgid_plural "We do <strong>not</strong> yet have details for the other councils that cover this location."
+msgid "<big>%s</big> update on reports"
+msgid_plural "<big>%s</big> updates on reports"
msgstr[0] ""
msgstr[1] ""
-#: templates/web/default/front_stats.html:31
+#: templates/web/default/report/new/some_councils_text.html:14
#, perl-format
-msgid "<big>%s</big> update on reports"
-msgid_plural "<big>%s</big> updates on reports"
+msgid "We do <strong>not</strong> yet have details for the other council that covers this location."
+msgid_plural "We do <strong>not</strong> yet have details for the other councils that cover this location."
msgstr[0] ""
msgstr[1] ""
diff --git a/locale/cy_GB.UTF-8/LC_MESSAGES/EmptyHomes.po b/locale/cy_GB.UTF-8/LC_MESSAGES/EmptyHomes.po
index 7395ef230..0ff079889 100644
--- a/locale/cy_GB.UTF-8/LC_MESSAGES/EmptyHomes.po
+++ b/locale/cy_GB.UTF-8/LC_MESSAGES/EmptyHomes.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1.0\n"
"Report-Msgid-Bugs-To: matthew@mysociety.org\n"
-"POT-Creation-Date: 2011-06-14 17:28+0100\n"
+"POT-Creation-Date: 2011-07-14 12:35+0100\n"
"PO-Revision-Date: 2009-07-10 14:20-0000\n"
"Last-Translator: Mark Smith <Mark.Smith@trosol.co.uk>\n"
"Language-Team: mySociety\n"
@@ -19,7 +19,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-#: bin/send-reports:176 perllib/FixMyStreet/DB/Result/Problem.pm:377
+#: bin/send-reports:179 perllib/FixMyStreet/DB/Result/Problem.pm:376
msgid " and "
msgstr ""
@@ -45,20 +45,20 @@ msgstr "neu"
msgid "%d addresses"
msgstr "wythnos"
-#: templates/web/default/admin/index.html:16
+#: templates/web/default/admin/index.html:17
msgid "%d confirmed alerts, %d unconfirmed"
msgstr ""
-#: templates/web/default/admin/index.html:18
+#: templates/web/default/admin/index.html:19
msgid "%d council contacts &ndash; %d confirmed, %d unconfirmed"
msgstr ""
-#: perllib/Utils.pm:245
+#: perllib/Utils.pm:251
#, fuzzy
msgid "%d day"
msgstr "diwrnod"
-#: perllib/Utils.pm:245
+#: perllib/Utils.pm:251
#, fuzzy
msgid "%d days"
msgstr "diwrnod"
@@ -67,52 +67,52 @@ msgstr "diwrnod"
msgid "%d edits by %s"
msgstr ""
-#: perllib/Utils.pm:246
+#: perllib/Utils.pm:252
#, fuzzy
msgid "%d hour"
msgstr "awr"
-#: perllib/Utils.pm:246
+#: perllib/Utils.pm:252
#, fuzzy
msgid "%d hours"
msgstr "awr"
-#: templates/web/default/admin/index.html:15
+#: templates/web/default/admin/index.html:16
#, fuzzy
msgid "%d live updates"
msgstr "Anfonwch ddiweddariadau ataf i drwy'r e-bost"
-#: perllib/Utils.pm:247
+#: perllib/Utils.pm:253
#, fuzzy
msgid "%d minute"
msgstr "munud"
-#: perllib/Utils.pm:247
+#: perllib/Utils.pm:253
#, fuzzy
msgid "%d minutes"
msgstr "munud"
-#: templates/web/default/admin/index.html:17
+#: templates/web/default/admin/index.html:18
msgid "%d questionnaires sent &ndash; %d answered (%s%%)"
msgstr ""
-#: perllib/Utils.pm:244
+#: perllib/Utils.pm:250
#, fuzzy
msgid "%d week"
msgstr "wythnos"
-#: perllib/Utils.pm:244
+#: perllib/Utils.pm:250
#, fuzzy
msgid "%d weeks"
msgstr "wythnos"
-#: templates/web/default/reports/council.html:11
-#: templates/web/default/reports/council.html:12
+#: templates/web/default/reports/council.html:0
+#: templates/web/default/reports/council.html:14
msgid "%s - Summary reports"
msgstr "%s - Adroddiadau cryno"
-#: perllib/FixMyStreet/Cobrand/Default.pm:763
-#: perllib/FixMyStreet/Cobrand/Default.pm:777
+#: perllib/FixMyStreet/Cobrand/Default.pm:836
+#: perllib/FixMyStreet/Cobrand/Default.pm:850
msgid "%s ward, %s"
msgstr ""
@@ -124,21 +124,20 @@ msgstr "Rhoddodd %s wybod yn ddi-enw am %s"
msgid "%s, reported by %s at %s"
msgstr "Adroddwyd am %s gan %s am %s"
-#: perllib/FixMyStreet/Cobrand/Default.pm:794
-#: perllib/FixMyStreet/Cobrand/Default.pm:808
+#: perllib/FixMyStreet/Cobrand/Default.pm:867
+#: perllib/FixMyStreet/Cobrand/Default.pm:881
#, fuzzy
msgid "%s, within %s ward"
msgstr "Eiddo gwag yn ward %s"
-#: perllib/FixMyStreet/Map/Tilma/OL/1_10k.pm:21
-#: perllib/FixMyStreet/Map/Tilma/Original/1_10k.pm:21
+#: perllib/FixMyStreet/Map/Tilma/Original.pm:82
#, fuzzy
msgid ""
"&copy; Crown copyright. All rights reserved. Ministry of Justice "
"100037819&nbsp;2008."
msgstr "Hawlfraint y Goron. Cedwir pob hawl. Y Weinyddiaeth Amddiffyn"
-#: templates/web/default/email_sent.html:32
+#: templates/web/default/email_sent.html:28
msgid "(Don't worry &mdash; %s)"
msgstr ""
@@ -159,38 +158,41 @@ msgstr "(wedi'i adfer i'w ddefnyddio)"
msgid " "
msgstr " "
-#: templates/web/default/reports/council.html:90
+#: templates/web/default/reports/council.html:133
#, fuzzy
msgid "(not sent to council)"
msgstr "Ni roddwyd gwybod i'r cyngor am hyn"
-#: templates/web/default/report/display.html:82
-#: templates/web/default/report/new/fill_in_details.html:160
+#: templates/web/default/report/new/fill_in_details.html:233
msgid "(optional)"
msgstr "(dewisol)"
-#: templates/web/default/reports/council.html:88
+#: templates/web/default/reports/council.html:131
#, fuzzy
msgid "(sent to both)"
msgstr "Ni roddwyd gwybod i'r cyngor am hyn"
-#: templates/web/default/report/display.html:88
-#: templates/web/default/report/new/fill_in_details.html:145
+#: templates/web/default/report/new/fill_in_details.html:227
msgid "(we never show your email address or phone number)"
msgstr "(nid ydym byth yn dangos eich cyfeiriad e-bost na'ch rhif ffôn)"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:259
+#: templates/web/default/report/display.html:206
+#, fuzzy
+msgid "(we never show your email)"
+msgstr "(nid ydym byth yn dangos eich cyfeiriad e-bost na'ch rhif ffôn)"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:269
msgid "*unknown*"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:476
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:504
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:477
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:505
#: perllib/FixMyStreet/DB/Result/Problem.pm:204
#, fuzzy
msgid "-- Pick a category --"
msgstr "-- Dewiswch fath o eiddo --"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:462
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:463
#: perllib/FixMyStreet/DB/Result/Problem.pm:210
msgid "-- Pick a property type --"
msgstr "-- Dewiswch fath o eiddo --"
@@ -210,7 +212,7 @@ msgstr ""
"\"26\" src=\"/i/mysociety-dark.png\" alt=\"View mySociety.org\"><span id="
"\"logoie\"></span></a>"
-#: templates/web/default/questionnaire/completed.html:21
+#: templates/web/default/questionnaire/completed.html:25
#, fuzzy
msgid ""
"<p style=\"font-size:150%\">Thank you very much for filling in our "
@@ -219,7 +221,7 @@ msgstr ""
"<p style=\"font-size:150%\">Diolch yn fawr am lenwi'n holiadur; rydym yn "
"falch o glywed ei fod wedi'i adfer i'w ddefnyddio.</p>\n"
-#: templates/web/default/questionnaire/completed.html:11
+#: templates/web/default/questionnaire/completed.html:15
#, fuzzy
msgid ""
"<p style=\"font-size:150%%\">We&rsquo;re sorry to hear that. We have two "
@@ -307,7 +309,7 @@ msgstr ""
"<a href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www."
"emptyhomes.com/getinvolved/campaign.html</a>.</p>\n"
-#: templates/web/default/questionnaire/completed.html:5
+#: templates/web/default/questionnaire/completed.html:9
#, fuzzy
msgid ""
"<p>Thank you very much for filling in our questionnaire; if you\n"
@@ -319,8 +321,8 @@ msgstr ""
"mwy o wybodaeth am statws eich eiddo gwag, dewch yn ôl i'r safle\n"
"a rhowch ddiweddariad yno.</p>\n"
-#: templates/web/default/around/display_location.html:93
-#: templates/web/default/around/display_location.html:95
+#: templates/web/default/around/display_location.html:87
+#: templates/web/default/around/display_location.html:89
#, fuzzy
msgid ""
"<small>If you cannot see the map, <a href='%s' rel='nofollow'>skip this "
@@ -334,6 +336,27 @@ msgstr ""
msgid "<strong>%d</strong> live empty properties"
msgstr "Adrodd am eiddo gwag a gweld y rhain"
+#: templates/web/default/auth/general.html:55
+msgid "<strong>No</strong>, I do not, let me sign in by email:"
+msgstr ""
+
+#: templates/web/default/report/new/fill_in_details.html:175
+#, fuzzy
+msgid "<strong>No</strong>, let me confirm my report by email:"
+msgstr "Adrodd am eiddo gwag a gweld y rhain"
+
+#: templates/web/default/report/display.html:160
+#, fuzzy
+msgid "<strong>No</strong>, let me confirm my update by email:"
+msgstr "Adrodd am eiddo gwag a gweld y rhain"
+
+#: templates/web/default/auth/general.html:37
+#: templates/web/default/report/display.html:142
+#: templates/web/default/report/new/fill_in_details.html:157
+#, fuzzy
+msgid "<strong>Yes</strong>, I have a password:"
+msgstr "Adrodd am eiddo gwag a gweld y rhain"
+
#: templates/web/default/static/about.html:1
#: templates/web/default/static/about.html:3
#: templates/web/emptyhomes/header.html:34
@@ -346,7 +369,11 @@ msgstr "Amdanom ni"
msgid "Add new category"
msgstr ""
-#: templates/web/default/auth/change_password.html:30
+#: templates/web/default/my/my.html:51
+msgid "Added %s"
+msgstr ""
+
+#: templates/web/default/auth/change_password.html:31
msgid "Again:"
msgstr ""
@@ -358,7 +385,7 @@ msgstr ""
msgid "Alert %d disabled (created %s)"
msgstr ""
-#: templates/web/default/report/display.html:133
+#: templates/web/default/report/display.html:211
msgid "Alert me to future updates"
msgstr "Rhowch wybod i mi am ddiweddariadau yn y dyfodol"
@@ -366,7 +393,7 @@ msgstr "Rhowch wybod i mi am ddiweddariadau yn y dyfodol"
msgid "All confirmed"
msgstr ""
-#: templates/web/default/footer.html:7 templates/web/emptyhomes/header.html:31
+#: templates/web/default/footer.html:8 templates/web/emptyhomes/header.html:31
#: templates/web/fiksgatami/footer.html:6
msgid "Reports"
msgstr "Adroddiadau"
@@ -424,55 +451,36 @@ msgstr "Di-enw"
msgid "Anonymous:"
msgstr "Di-enw"
-#: templates/web/fiksgatami/footer.html:15
-#, fuzzy
-msgid ""
-"Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and maintained "
-"by <a href=\"http://www.nuug.no/\">NUUG</a>, using some <a href=\"http://"
-"github.com/mysociety/fixmystreet\">clever</a>&nbsp;<a href=\"https://secure."
-"mysociety.org/cvstrac/dir?d=mysociety/services/TilMa\">code</a>."
-msgstr ""
-"Adeiladwyd gan <a href=\"http://www.mysociety.org/\">mySociety</a>, gan "
-"ddefnyddio tipyn o <a href=\"https://secure.mysociety.org/cvstrac/dir?"
-"d=mysociety/services/TilMa\">god</a><a href=\"http://github.com/mysociety/"
-"fixmystreet\">clyfar</a>&nbsp;."
-
#: templates/web/default/footer.html:16
-msgid ""
-"Built by <a href=\"http://www.mysociety.org/\">mySociety</a>, using some <a "
-"href=\"http://github.com/mysociety/fixmystreet\">clever</a>&nbsp;<a href="
-"\"https://secure.mysociety.org/cvstrac/dir?d=mysociety/services/TilMa"
-"\">code</a>."
+msgid "Built by <a href=\"http://www.mysociety.org/\">mySociety</a>"
msgstr ""
-"Adeiladwyd gan <a href=\"http://www.mysociety.org/\">mySociety</a>, gan "
-"ddefnyddio tipyn o <a href=\"https://secure.mysociety.org/cvstrac/dir?"
-"d=mysociety/services/TilMa\">god</a><a href=\"http://github.com/mysociety/"
-"fixmystreet\">clyfar</a>&nbsp;."
-#: templates/web/default/report/new/fill_in_details.html:141
-msgid "Can we show your name on the site?"
-msgstr "Allwn ni ddangos eich enw chi ar y safle?"
-
-#: templates/web/default/report/display.html:87
-#: templates/web/default/report/new/fill_in_details.html:143
-msgid "Can we show your name publicly?"
+#: templates/web/fiksgatami/footer.html:15
+msgid ""
+"Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and maintained "
+"by <a href=\"http://www.nuug.no/\">NUUG</a>"
msgstr ""
#: templates/web/default/admin/council_contacts.html:19
+#: templates/web/default/admin/index.html:36
#: templates/web/default/admin/search_reports.html:17
#, fuzzy
msgid "Category"
msgstr "Categori:"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:479
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:505
+#: templates/web/default/admin/index.html:34
+msgid "Category fix rate for empty properties > 4 weeks old"
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:480
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:506
#: templates/web/default/admin/council_contacts.html:56
#: templates/web/default/admin/council_edit.html:23
#: templates/web/default/admin/report_edit.html:26
msgid "Category:"
msgstr "Categori:"
-#: bin/send-reports:173
+#: bin/send-reports:176
#, fuzzy
msgid "Category: %s"
msgstr "Categori:"
@@ -483,8 +491,8 @@ msgstr "Categori:"
msgid "Change Password"
msgstr ""
-#: templates/web/default/around/display_location.html:111
-#: templates/web/default/around/display_location.html:113
+#: templates/web/default/around/display_location.html:105
+#: templates/web/default/around/display_location.html:107
msgid "Closest nearby empty properties <small>(within&nbsp;%skm)</small>"
msgstr "Yr eiddo gwag cyfagos agosaf <small>(within&nbsp;%skm)</small>"
@@ -541,10 +549,15 @@ msgstr "Cadarnhau"
msgid "Confirmed:"
msgstr "Cadarnhau"
-#: templates/web/default/footer.html:10 templates/web/fiksgatami/footer.html:9
+#: templates/web/fiksgatami/footer.html:9
msgid "Contact"
msgstr "Cysylltu"
+#: templates/web/default/footer.html:18
+#, fuzzy
+msgid "Contact reportemptyhomes.com"
+msgstr "Adroddiadau newydd ar reportemptyhomes.com"
+
#: templates/web/default/contact/index.html:1
#: templates/web/default/contact/index.html:2
#: templates/web/default/contact/submit.html:1
@@ -561,7 +574,7 @@ msgstr "Cysylltu â'r tîm"
msgid "Council"
msgstr "cyngor"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:596
+#: perllib/FixMyStreet/App/Controller/Admin.pm:612
#: templates/web/default/admin/council_list.html:1
#, fuzzy
msgid "Council contacts"
@@ -609,7 +622,7 @@ msgid "Deleted"
msgstr ""
#: templates/web/default/admin/report_edit.html:14
-#: templates/web/default/report/new/fill_in_details.html:100
+#: templates/web/default/report/new/fill_in_details.html:99
msgid "Details:"
msgstr "Manylion:"
@@ -617,6 +630,11 @@ msgstr "Manylion:"
msgid "Diligency prize league table"
msgstr ""
+#: templates/web/default/auth/general.html:32
+#, fuzzy
+msgid "Do you have a reportemptyhomes.com password?"
+msgstr "Diweddariadau i reportemptyhomes.com"
+
#: templates/web/default/questionnaire/index.html:72
msgid "Don&rsquo;t know"
msgstr "Ddim yn gwybod"
@@ -644,12 +662,11 @@ msgstr ""
#: templates/web/default/admin/council_edit.html:42
#: templates/web/default/admin/list_updates.html:8
#: templates/web/default/admin/search_reports.html:15
-#: templates/web/default/report/display.html:95
#, fuzzy
msgid "Email"
msgstr "E-bost:"
-#: templates/web/default/around/display_location.html:77
+#: templates/web/default/around/display_location.html:71
msgid "Email me new local empty properties"
msgstr "Anfonwch fanylion eiddo gwag lleol newydd ataf i drwy'r e-bost"
@@ -657,30 +674,24 @@ msgstr "Anfonwch fanylion eiddo gwag lleol newydd ataf i drwy'r e-bost"
msgid "Email me updates"
msgstr "Anfonwch ddiweddariadau ataf i drwy'r e-bost"
-#: templates/web/default/auth/general.html:47
-msgid "Email the details I need to the address I entered above"
-msgstr ""
-
#: templates/web/default/admin/council_contacts.html:61
#: templates/web/default/admin/council_edit.html:26
#: templates/web/default/admin/report_edit.html:28
#: templates/web/default/admin/update_edit.html:24
#: templates/web/default/alert/updates.html:13
-#: templates/web/default/auth/general.html:29
#: templates/web/default/report/display.html:46
-#: templates/web/default/report/new/fill_in_details.html:153
msgid "Email:"
msgstr "E-bost:"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:464
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:465
msgid "Empty flat or maisonette"
msgstr "Fflat neu fflat deulawr gwag"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:463
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:464
msgid "Empty house or bungalow"
msgstr "TÅ· neu fyngalo gwag"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:466
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:467
msgid "Empty office or other commercial"
msgstr "Swyddfa wag neu fan masnachol gwag arall"
@@ -688,32 +699,39 @@ msgstr "Swyddfa wag neu fan masnachol gwag arall"
msgid "Empty property details form"
msgstr "Ffurflen manylion eiddo gwag"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:467
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:468
msgid "Empty pub or bar"
msgstr "Tafarn neu far gwag"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:468
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:469
msgid "Empty public building - school, hospital, etc."
msgstr "Adeilad cyhoeddus gwag - ysgol, ysbyty, ac ati."
#: templates/web/default/around/around_index.html:10
#: templates/web/default/around/around_index.html:13
-#: templates/web/default/index.html:38 templates/web/default/index.html:41
+#: templates/web/default/index.html:24 templates/web/default/index.html:27
msgid "Enter a nearby GB postcode, or street name and area"
msgstr "Cofnodwch god post Prydeinig, neu enw stryd ac ardal gerllaw"
-#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:24
+#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:27
#, fuzzy
msgid "Enter a nearby postcode, or street name and area"
msgstr "Cofnodwch god post Prydeinig, neu enw stryd ac ardal gerllaw:"
-#: templates/web/default/index.html:59
+#: templates/web/default/auth/general.html:64
+#: templates/web/default/report/display.html:167
+#: templates/web/default/report/new/fill_in_details.html:182
+#, fuzzy
+msgid "Enter a new password:"
+msgstr "Ychwanegwch neges"
+
+#: templates/web/default/index.html:45
msgid "Enter details of the empty property"
msgstr "Rhowch fanylion yr eiddo gwag"
#: templates/web/default/auth/token.html:5
-#: templates/web/default/questionnaire/error.html:1
-#: templates/web/default/questionnaire/error.html:3
+#: templates/web/default/errors/generic.html:1
+#: templates/web/default/errors/generic.html:3
#: templates/web/default/tokens/abuse.html:1
#: templates/web/default/tokens/abuse.html:3
#: templates/web/default/tokens/error.html:1
@@ -739,7 +757,7 @@ msgstr ""
msgid "First time"
msgstr "Y tro cyntaf"
-#: templates/web/default/header.html:16
+#: templates/web/default/header.html:20
#: templates/web/fiksgatami/header.html:14
msgid "Fix<span id=\"my\">My</span>Street"
msgstr "Trwsio<span id=\"my\">Fy</span>Stryd"
@@ -791,18 +809,28 @@ msgstr ""
"rhanbarth a'r cyngor, ond dim ond yn yr hysbysiad \"O fewn y ffin\" \n"
"y bydd yn ymddangos yn achos y cyngor sir."
-#: templates/web/default/front_stats.html:7
+#: templates/web/default/front/stats.html:7
msgid "reportemptyhomes.com updates"
msgstr "Diweddariadau i reportemptyhomes.com"
+#: templates/web/default/admin/index.html:36
#: templates/web/default/admin/report_edit.html:22
msgid "Fixed"
msgstr ""
+#: templates/web/default/my/my.html:27
+#, fuzzy
+msgid "Fixed reports"
+msgstr "Cuddio hen adroddiadau "
+
#: templates/web/default/admin/search_reports.html:48
msgid "Fixed:"
msgstr ""
+#: templates/web/default/reports/council.html:23
+msgid "Follow a ward link to view only reports within that ward."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:16
#, fuzzy
msgid "For council(s):"
@@ -819,18 +847,13 @@ msgstr "Cwestiynau Cyffredin"
msgid "Further information about our work on empty homes."
msgstr ""
-#: templates/web/default/index.html:26
-#, fuzzy
-msgid "Get reportemptyhomes.com on your iPhone"
-msgstr "Cael yr Asiantaeth Tai Gwag ar eich iPhone"
-
#: templates/web/default/alert/list.html:112
msgid "Give me an RSS feed"
msgstr "Rhowch borthiant RSS i mi"
#: templates/web/default/alert/index.html:24
#: templates/web/default/around/around_index.html:17
-#: templates/web/default/index.html:47
+#: templates/web/default/index.html:33
msgid "Go"
msgstr "Ewch"
@@ -839,7 +862,7 @@ msgstr "Ewch"
msgid "Going to send questionnaire?"
msgstr "Anfon yr holiadur"
-#: templates/web/default/admin/index.html:23
+#: templates/web/default/admin/index.html:24
msgid "Graph of empty property creation by status over time"
msgstr ""
@@ -860,7 +883,8 @@ msgstr ""
"Ydych chi wedi rhoi gwybod i gyngor am eiddo gwag erioed o'r blaen, neu ai "
"dyma'ch tro cyntaf?"
-#: templates/web/default/footer.html:9 templates/web/emptyhomes/header.html:33
+#: templates/web/default/footer.html:10
+#: templates/web/emptyhomes/header.html:33
#: templates/web/fiksgatami/footer.html:8
msgid "FAQs"
msgstr "Cwestiynau Cyffredin"
@@ -876,11 +900,11 @@ msgstr ""
msgid "Hidden"
msgstr "Cuddio pinnau"
-#: templates/web/default/around/display_location.html:54
+#: templates/web/default/around/display_location.html:52
msgid "Hide pins"
msgstr "Cuddio pinnau"
-#: templates/web/default/around/display_location.html:59
+#: templates/web/default/around/display_location.html:57
msgid "Hide stale reports"
msgstr "Cuddio hen adroddiadau "
@@ -888,20 +912,20 @@ msgstr "Cuddio hen adroddiadau "
msgid "History"
msgstr ""
-#: templates/web/default/index.html:54
+#: templates/web/default/index.html:40
msgid "How to report an empty property"
msgstr "Sut i roi gwybod am eiddo gwag"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:514
+#: perllib/FixMyStreet/App/Controller/Admin.pm:530
msgid "I am afraid you cannot confirm unconfirmed reports."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:96
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:89
msgid "I'm afraid we couldn't locate your empty property in the database.\n"
msgstr ""
"Yn anffodus ni fu modd i ni ddod o hyd i'ch eiddo gwag yn y gronfa ddata.\n"
-#: perllib/FixMyStreet/App/Controller/Tokens.pm:161
+#: perllib/FixMyStreet/App/Controller/Tokens.pm:173
msgid ""
"I'm afraid we couldn't validate that token. If you've copied the URL from an "
"email, please check that you copied it exactly.\n"
@@ -936,7 +960,8 @@ msgstr ""
"fel y gallwn\n"
"ddangos i'r cyngor y gweithgarwch yn ei ardal."
-#: templates/web/default/email_sent.html:28
+#: templates/web/default/auth/token.html:23
+#: templates/web/default/email_sent.html:24
msgid ""
"If you use web-based email or have 'junk mail' filters, you may wish to "
"check your bulk/spam mail folders: sometimes, our messages are marked that "
@@ -960,11 +985,11 @@ msgstr ""
msgid "Illegal ID"
msgstr "ID Anghyfreithlon"
-#: perllib/FixMyStreet/App/Controller/Alert.pm:105
+#: perllib/FixMyStreet/App/Controller/Alert.pm:102
msgid "Illegal feed selection"
msgstr "Dewis porthiant annilys"
-#: templates/web/default/around/display_location.html:61
+#: templates/web/default/around/display_location.html:59
msgid "Include stale reports"
msgstr "Cynnwys hen adroddiadau"
@@ -992,6 +1017,12 @@ msgstr ""
"yn gwneud unrhyw beth. Rydym yn annog cynghorau i ddiweddaru'r wefan \n"
"fel y gallwch weld beth sy'n digwydd."
+#: templates/web/default/auth/general.html:44
+#: templates/web/default/report/display.html:149
+#: templates/web/default/report/new/fill_in_details.html:164
+msgid "Keep me signed in on this computer"
+msgstr ""
+
#: templates/web/default/admin/council_contacts.html:23
msgid "Last editor"
msgstr ""
@@ -1030,28 +1061,15 @@ msgstr "Porthiannau RSS a hysbysiadau e-bost lleol"
msgid "Local RSS feeds and email alerts for ‘%s’"
msgstr "Porthiannau RSS a hysbysiadau e-bost lleol"
-#: templates/web/default/footer.html:8 templates/web/emptyhomes/header.html:32
+#: templates/web/default/footer.html:9 templates/web/emptyhomes/header.html:32
#: templates/web/fiksgatami/footer.html:7
msgid "Get local reports"
msgstr "Gweld adroddiadau lleol"
-#: templates/web/default/index.html:58
+#: templates/web/default/index.html:44
msgid "Locate the empty property on a map of the area"
msgstr "Chwiliwch am leoliad yr eiddo gwag ar fap o'r ardal"
-#: templates/web/default/auth/general.html:43
-msgid "Log me in"
-msgstr ""
-
-#: templates/web/default/auth/general.html:1
-#: templates/web/default/auth/general.html:3
-msgid "Login or create an account"
-msgstr ""
-
-#: templates/web/default/auth/logout.html:1
-msgid "Logout"
-msgstr ""
-
#: perllib/FixMyStreet/Map/OSM.pm:43
msgid ""
"Map &copy; <a id=\"osm_link\" href=\"http://www.openstreetmap.org/"
@@ -1060,17 +1078,16 @@ msgid ""
msgstr ""
#: perllib/FixMyStreet/Map/OSM/StreetView.pm:27
-#: perllib/FixMyStreet/Map/Tilma/OL/StreetView.pm:21
-#: perllib/FixMyStreet/Map/Tilma/Original/StreetView.pm:21
msgid ""
"Map contains Ordnance Survey data &copy; Crown copyright and database right "
"2010."
msgstr ""
-#: perllib/FixMyStreet/Map/FMS.pm:27
+#: perllib/FixMyStreet/Map/FMS.pm:24
msgid ""
"Map contains Ordnance Survey data &copy; Crown copyright and database right "
-"2010. Microsoft"
+"2010.<br>&copy; 2011 <a href=\"http://www.bing.com/maps/\">Microsoft</a>. "
+"&copy; AND, Navteq, Ordnance Survey."
msgstr ""
#: templates/web/default/contact/index.html:90
@@ -1081,11 +1098,6 @@ msgstr "Neges:"
msgid "More empty properties nearby"
msgstr "Mwy o eiddo gwag cyfagos"
-#: templates/web/default/my/my.html:1
-#, fuzzy
-msgid "My Reports"
-msgstr "Adroddiadau"
-
#: templates/web/default/admin/list_updates.html:7
#: templates/web/default/admin/search_reports.html:14
#: templates/web/default/reports/index.html:10
@@ -1096,8 +1108,6 @@ msgstr "Enw"
#: templates/web/default/admin/report_edit.html:27
#: templates/web/default/admin/update_edit.html:23
-#: templates/web/default/report/display.html:81
-#: templates/web/default/report/new/fill_in_details.html:130
msgid "Name:"
msgstr "Enw:"
@@ -1105,11 +1115,29 @@ msgstr "Enw:"
msgid "Navigation"
msgstr "Mordwyo "
-#: templates/web/default/email_sent.html:24
+#: perllib/FixMyStreet/Geocode/OSM.pm:100
+msgid ""
+"Nearest named road to the pin placed on the map (automatically generated "
+"using OpenStreetMap): %s%s"
+msgstr ""
+
+#: perllib/FixMyStreet/Cobrand/Default.pm:570
+msgid ""
+"Nearest postcode to the pin placed on the map (automatically generated): %s "
+"(%sm away)"
+msgstr ""
+
+#: perllib/FixMyStreet/Cobrand/Default.pm:558
+msgid ""
+"Nearest road to the pin placed on the map (automatically generated by Bing "
+"Maps): %s"
+msgstr ""
+
+#: templates/web/default/email_sent.html:20
msgid "Nearly Done! Now check your email..."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:289
+#: perllib/FixMyStreet/App/Controller/Admin.pm:299
msgid "New category contact added"
msgstr ""
@@ -1122,8 +1150,8 @@ msgstr "Eiddo gwag lleol diweddar, reportemptyhomes.com"
msgid "New local reports on reportemptyhomes.com"
msgstr "Adroddiadau lleol newydd ar reportemptyhomes.com"
-#: templates/web/default/reports/council.html:43
-#: templates/web/default/reports/council.html:44
+#: templates/web/default/reports/council.html:92
+#: templates/web/default/reports/council.html:93
#: templates/web/default/reports/index.html:11
#: templates/web/emptyhomes/reports/index.html:11
#: templates/web/fiksgatami/reports/index.html:10
@@ -1184,7 +1212,12 @@ msgstr "Adroddiadau newydd i gyngor {{COUNCIL}} ar reportemptyhomes.com"
msgid "New reports within {{NAME}}'s boundary on reportemptyhomes.com"
msgstr "Adroddiadau newydd o fewn ffin {{NAME}} ar reportemptyhomes.com"
-#: templates/web/default/index.html:27
+#: templates/web/default/admin/questionnaire.html:24
+msgid "New state"
+msgstr ""
+
+#: templates/web/default/front/news.html:8
+#: templates/web/fiksgatami/front/news.html:9
msgid "New!"
msgstr "Newydd!"
@@ -1249,18 +1282,30 @@ msgstr "Nac ydw"
msgid "Note:"
msgstr "Nac ydw"
+#: templates/web/default/report/new/fill_in_details.html:148
+msgid ""
+"Now to submit your report&hellip; do you have a reportemptyhomes.com "
+"password?"
+msgstr ""
+
+#: templates/web/default/report/display.html:133
+msgid ""
+"Now to submit your update&hellip; do you have a reportemptyhomes.com "
+"password?"
+msgstr ""
+
#: templates/web/default/report/display.html:33
#: templates/web/default/report/updates.html:19
msgid "Offensive? Unsuitable? Tell us"
msgstr "Sarhaus? Anaddas? Rhowch wybod i ni"
-#: templates/web/default/reports/council.html:72
-#: templates/web/default/reports/council.html:73
+#: templates/web/default/reports/council.html:115
+#: templates/web/default/reports/council.html:116
msgid "Old returned to use"
msgstr "Hen wedi'i adfer i'w ddefnyddio"
-#: templates/web/default/reports/council.html:60
-#: templates/web/default/reports/council.html:61
+#: templates/web/default/reports/council.html:109
+#: templates/web/default/reports/council.html:110
msgid "Old empty properties, state unknown"
msgstr "Eiddo gwag hen, nid yw eu cyflwr yn hysbys"
@@ -1269,16 +1314,20 @@ msgstr "Eiddo gwag hen, nid yw eu cyflwr yn hysbys"
msgid "Old empty properties,<br>state unknown"
msgstr "Hen eiddo gwag,<br>cyflwr anhysbys"
+#: templates/web/default/admin/questionnaire.html:24
+msgid "Old state"
+msgstr ""
+
#: templates/web/default/reports/index.html:15
#: templates/web/emptyhomes/reports/index.html:14
#: templates/web/fiksgatami/reports/index.html:14
msgid "Older returned to use"
msgstr "Wedi'u hadfer i'w defnyddio ers amser"
-#: templates/web/default/reports/council.html:50
-#: templates/web/default/reports/council.html:52
-#: templates/web/default/reports/council.html:56
-#: templates/web/default/reports/council.html:57
+#: templates/web/default/reports/council.html:101
+#: templates/web/default/reports/council.html:105
+#: templates/web/default/reports/council.html:106
+#: templates/web/default/reports/council.html:99
#: templates/web/default/reports/index.html:12
#: templates/web/emptyhomes/reports/index.html:12
#: templates/web/fiksgatami/reports/index.html:11
@@ -1290,6 +1339,11 @@ msgstr "Adroddiadau hÅ·n o eiddo gwag"
msgid "Open"
msgstr ""
+#: templates/web/default/my/my.html:22
+#, fuzzy
+msgid "Open reports"
+msgstr "Cuddio hen adroddiadau "
+
#: templates/web/default/alert/list.html:87
msgid "Or empty properties reported to:"
msgstr "Neu eiddo gwag y rhoddwyd gwybod amdanynt i:"
@@ -1302,10 +1356,10 @@ msgstr ""
"Neu, gallwch danysgrifio am hysbysiad yn ôl pa ward neu gyngor yr ydych yn "
"byw ynddo:"
-#: bin/send-reports:168 bin/send-reports:177
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:495
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:504
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:855
+#: bin/send-reports:171 bin/send-reports:180
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:496
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:505
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:869
#: perllib/FixMyStreet/DB/Result/Problem.pm:316
#: perllib/FixMyStreet/DB/Result/Problem.pm:326
#: perllib/FixMyStreet/DB/Result/Problem.pm:336
@@ -1322,19 +1376,18 @@ msgstr ""
msgid "Partial"
msgstr ""
-#: templates/web/default/auth/change_password.html:26
-#: templates/web/default/auth/general.html:33
+#: templates/web/default/auth/change_password.html:27
msgid "Password:"
msgstr ""
#: bin/send-reports:68 templates/web/default/admin/report_edit.html:29
-#: templates/web/default/report/new/fill_in_details.html:158
+#: templates/web/default/report/new/fill_in_details.html:231
msgid "Phone:"
msgstr "Rhif ffôn:"
#: templates/web/default/questionnaire/index.html:97
-#: templates/web/default/report/display.html:125
-#: templates/web/default/report/new/fill_in_details.html:120
+#: templates/web/default/report/display.html:109
+#: templates/web/default/report/new/fill_in_details.html:119
msgid "Photo:"
msgstr "Ffotograff:"
@@ -1342,7 +1395,7 @@ msgstr "Ffotograff:"
msgid "Photos of recent nearby reports"
msgstr "Ffotograffau o adroddiadau cyfagos diweddar"
-#: templates/web/default/index.html:76
+#: templates/web/default/index.html:63
msgid "Photos of recent reports"
msgstr "Ffotograffau o adroddiadau diweddar"
@@ -1350,8 +1403,8 @@ msgstr "Ffotograffau o adroddiadau diweddar"
msgid "Please be polite, concise and to the point."
msgstr ""
-#: templates/web/default/auth/change_password.html:12
-#: templates/web/default/auth/change_password.html:17
+#: templates/web/default/auth/change_password.html:14
+#: templates/web/default/auth/change_password.html:19
msgid "Please check the passwords and try again"
msgstr ""
@@ -1366,9 +1419,9 @@ msgstr "Rhowch eich cyfeiriad e-bost"
msgid "Please check your email address is correct"
msgstr "Rhowch gyfeiriad e-bost dilys"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:639
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:659
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:675
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:652
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:671
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:688
#: perllib/FixMyStreet/DB/Result/Problem.pm:206
msgid "Please choose a category"
msgstr "Dewiswch gategori"
@@ -1398,12 +1451,12 @@ msgid ""
"for all users."
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Comment.pm:108
+#: perllib/FixMyStreet/DB/Result/Comment.pm:111
msgid "Please enter a message"
msgstr "Ychwanegwch neges"
-#: templates/web/default/auth/change_password.html:12
-#: templates/web/default/auth/change_password.html:15
+#: templates/web/default/auth/change_password.html:14
+#: templates/web/default/auth/change_password.html:17
#, fuzzy
msgid "Please enter a password"
msgstr "Ychwanegwch neges"
@@ -1413,11 +1466,11 @@ msgstr "Ychwanegwch neges"
msgid "Please enter a subject"
msgstr "Rhowch enw'r pwnc"
-#: perllib/FixMyStreet/DB/Result/User.pm:91
+#: perllib/FixMyStreet/DB/Result/User.pm:92
msgid "Please enter a valid email"
msgstr "Cofnodwch gyfeiriad e-bost dilys"
-#: perllib/FixMyStreet/App/Controller/Alert.pm:123
+#: perllib/FixMyStreet/App/Controller/Alert.pm:345
#: perllib/FixMyStreet/App/Controller/Contact.pm:105
msgid "Please enter a valid email address"
msgstr "Cofnodwch gyfeiriad e-bost dilys"
@@ -1427,14 +1480,13 @@ msgid "Please enter some details"
msgstr "Cofnodwch fanylion"
#: perllib/FixMyStreet/App/Controller/Contact.pm:94
-#: perllib/FixMyStreet/DB/Result/User.pm:88
+#: perllib/FixMyStreet/DB/Result/User.pm:89
#: templates/web/default/auth/general.html:13
#: templates/web/default/auth/general.html:8
msgid "Please enter your email"
msgstr "Cofnodwch eich cyfeiriad e-bost"
#: perllib/FixMyStreet/DB/Result/Problem.pm:199
-#: perllib/FixMyStreet/DB/Result/User.pm:83
msgid ""
"Please enter your full name - if you do not wish your name to be shown on "
"the site, untick the box"
@@ -1443,8 +1495,9 @@ msgstr ""
"ddangos ar y safle, cliciwch i ddileu'r tic o'r bocs"
#: perllib/FixMyStreet/App/Controller/Contact.pm:93
+#: perllib/FixMyStreet/DB/Result/Comment.pm:108
#: perllib/FixMyStreet/DB/Result/Problem.pm:192
-#: perllib/FixMyStreet/DB/Result/User.pm:76
+#: perllib/FixMyStreet/DB/Result/User.pm:85
msgid "Please enter your name"
msgstr "Cofnodwch eich enw"
@@ -1485,7 +1538,7 @@ msgid ""
"photo of the empty property if you have one), etc."
msgstr ""
-#: templates/web/default/report/new/fill_in_details.html:49
+#: templates/web/default/report/new/fill_in_details.html:48
#, fuzzy
msgid ""
"Please fill in the form below with details of the empty property, and "
@@ -1494,7 +1547,7 @@ msgstr ""
"Llenwch y ffurflen isod gyda manylion yr eiddo gwag,\n"
"a disgrifiwch y lleoliad mor fanwl ag y bo modd yn y blwch manylion."
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:242
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:235
msgid "Please indicate whether you'd like to receive another questionnaire"
msgstr "Nodwch a fyddech chi'n hoffi derbyn holiadur arall"
@@ -1505,7 +1558,7 @@ msgid ""
"<a href=\"/faq#privacy\">privacy policy</a>"
msgstr ""
-#: templates/web/default/report/new/fill_in_details.html:34
+#: templates/web/default/report/new/fill_in_details.html:33
msgid ""
"Please note your report has <strong>not yet been sent</strong>. Choose a "
"category and add further information below, then submit."
@@ -1515,16 +1568,16 @@ msgstr ""
msgid "Please note:"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:245
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:238
msgid "Please provide some explanation as to why you're reopening this report"
msgstr "Rhowch ychydig o esboniad pam rydych yn ailagor yr adroddiad hwn"
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:252
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:245
msgid "Please provide some text as well as a photo"
msgstr "Rhowch rywfaint o destun yn ogystal â ffotograff"
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:122
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:238
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:115
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:231
msgid ""
"Please say whether you've ever reported an empty property to your council "
"before"
@@ -1532,15 +1585,15 @@ msgstr ""
"Rhowch wybod a ydych chi wedi rhoi gwybod i'ch cyngor am eiddo gwag erioed "
"o'r blaen"
-#: perllib/FixMyStreet/App/Controller/Alert.pm:85
+#: perllib/FixMyStreet/App/Controller/Alert.pm:82
msgid "Please select the feed you want"
msgstr "Dewiswch y porthiant rydych chi eisiau ei gael"
-#: perllib/FixMyStreet/App/Controller/Alert.pm:125
+#: perllib/FixMyStreet/App/Controller/Alert.pm:120
msgid "Please select the type of alert you want"
msgstr "Dewiswch y math o hysbysiad rydych chi eisiau ei gael"
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:234
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:227
msgid "Please state whether or not the empty property has been returned to use"
msgstr ""
"Cofnodwch a yw'r eiddo gwag wedi cael ei adfer i'w ddefnyddio, ai peidio"
@@ -1549,7 +1602,7 @@ msgstr ""
msgid "Please take a look at the updates that have been left."
msgstr "Ewch i fwrw golwg ar y diweddariadau sydd wedi cael eu gadael."
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:728
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:740
msgid "Please upload a JPEG image only"
msgstr "Dim ond llun JPEG y dylech lwytho i fyny."
@@ -1558,7 +1611,9 @@ msgid "Please write a message"
msgstr "Ysgrifennwch neges"
#: templates/web/default/contact/index.html:93
-#: templates/web/default/report/display.html:138
+#: templates/web/default/report/display.html:119
+#: templates/web/default/report/display.html:154
+#: templates/web/default/report/display.html:175
msgid "Post"
msgstr "Postio"
@@ -1570,9 +1625,9 @@ msgstr "Cofnodwyd yn ddi-enw am %s"
msgid "Posted by %s at %s"
msgstr "Cofnodwyd gan %s am %s"
-#: perllib/FixMyStreet/Map/Tilma/Original.pm:90
-#: templates/web/default/maps/openlayers.html:81
-#: templates/web/default/maps/tilma/original.html:62
+#: perllib/FixMyStreet/Map/Tilma/Original.pm:92
+#: templates/web/default/maps/openlayers.html:89
+#: templates/web/default/maps/tilma/original.html:63
msgid "Empty property"
msgstr "Eiddo gwag"
@@ -1591,17 +1646,21 @@ msgstr "Ffurflen manylion eiddo gwag"
msgid "Empty property %s sent to council %s"
msgstr "Eiddo gwag yn %s"
-#: templates/web/default/admin/index.html:27
+#: templates/web/default/admin/index.html:28
#, fuzzy
msgid "Empty property breakdown by state"
msgstr "ni fydd eich eiddo gwag yn cael ei bostio"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:743
+#: perllib/FixMyStreet/App/Controller/Admin.pm:759
#, fuzzy
msgid "Empty property marked as open."
msgstr "Ffurflen manylion eiddo gwag"
-#: templates/web/default/around/display_location.html:73
+#: templates/web/default/admin/questionnaire.html:21
+msgid "Empty property state change based on survey results"
+msgstr ""
+
+#: templates/web/default/around/display_location.html:67
msgid "Empty properties in this area"
msgstr "Eiddo gwag yn yr ardal hon"
@@ -1618,19 +1677,19 @@ msgstr ""
msgid "Empty properties within %.1fkm of this location"
msgstr "Eiddo gwag o fewn %skm o'r lleoliad hwn"
-#: perllib/FixMyStreet/Cobrand/Default.pm:719
-#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:161
-#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:127
+#: perllib/FixMyStreet/Cobrand/Default.pm:792
+#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:162
+#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:172
msgid "Empty properties within %s"
msgstr "Eiddo gwag yn %s"
-#: perllib/FixMyStreet/Cobrand/Default.pm:728
-#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:169
+#: perllib/FixMyStreet/Cobrand/Default.pm:801
+#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:170
msgid "Empty properties within %s ward"
msgstr "Eiddo gwag yn ward %s"
-#: templates/web/default/reports/council.html:11
-#: templates/web/default/reports/council.html:14
+#: templates/web/default/reports/council.html:0
+#: templates/web/default/reports/council.html:16
msgid "Empty properties within %s, reportemptyhomes.com"
msgstr "Eiddo gwag o fewn %s, reportemptyhomes.com"
@@ -1644,7 +1703,7 @@ msgstr ""
"Eiddo y cafwyd adroddiadau diweddar ar reportemptyhomes.com eu bod wedi cael "
"eu hadfer i'w defnyddio"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:470
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:471
msgid "Property type:"
msgstr "Math o eiddo:"
@@ -1652,6 +1711,15 @@ msgstr "Math o eiddo:"
msgid "Provide an update"
msgstr "Rhowch ddiweddariad"
+#: templates/web/default/report/display.html:172
+#: templates/web/default/report/new/fill_in_details.html:187
+msgid ""
+"Providing a password is optional, but doing so will allow you to more easily "
+"report empty properties, leave updates and manage your reports."
+msgstr ""
+
+#: templates/web/default/questionnaire/completed.html:1
+#: templates/web/default/questionnaire/completed.html:2
#: templates/web/default/questionnaire/index.html:0
#: templates/web/default/questionnaire/index.html:14
#: templates/web/default/questionnaire/index.html:4
@@ -1668,7 +1736,7 @@ msgstr "Llenwyd yr holiadur gan yr unigolyn a roddodd wybod am yr eiddo gwag"
msgid "Questionnaire %d sent for empty property %d"
msgstr "Llenwyd yr holiadur gan yr unigolyn a roddodd wybod am yr eiddo gwag"
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:188
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:181
msgid "Questionnaire filled in by empty property reporter"
msgstr "Llenwyd yr holiadur gan yr unigolyn a roddodd wybod am yr eiddo gwag"
@@ -1676,33 +1744,33 @@ msgstr "Llenwyd yr holiadur gan yr unigolyn a roddodd wybod am yr eiddo gwag"
#: templates/web/default/around/display_location.html:1
#: templates/web/default/around/display_location.html:3
#: templates/web/default/report/display.html:55
-#: templates/web/default/reports/council.html:17
+#: templates/web/default/reports/council.html:61
msgid "RSS feed"
msgstr "Porthiant RSS"
-#: perllib/FixMyStreet/Cobrand/Default.pm:757
-#: perllib/FixMyStreet/Cobrand/Default.pm:771
+#: perllib/FixMyStreet/Cobrand/Default.pm:830
+#: perllib/FixMyStreet/Cobrand/Default.pm:844
#, fuzzy
msgid "RSS feed for %s"
msgstr "Porthiant RSS %s"
-#: perllib/FixMyStreet/Cobrand/Default.pm:764
-#: perllib/FixMyStreet/Cobrand/Default.pm:778
+#: perllib/FixMyStreet/Cobrand/Default.pm:837
+#: perllib/FixMyStreet/Cobrand/Default.pm:851
#, fuzzy
msgid "RSS feed for %s ward, %s"
msgstr "Porthiant RSS %s"
-#: perllib/FixMyStreet/Cobrand/Default.pm:787
-#: perllib/FixMyStreet/Cobrand/Default.pm:801
-#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:143
-#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:151
-#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:161
-#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:169
+#: perllib/FixMyStreet/Cobrand/Default.pm:860
+#: perllib/FixMyStreet/Cobrand/Default.pm:874
+#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:188
+#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:196
+#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:206
+#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:214
msgid "RSS feed of %s"
msgstr "Porthiant RSS %s"
-#: perllib/FixMyStreet/Cobrand/Default.pm:793
-#: perllib/FixMyStreet/Cobrand/Default.pm:807
+#: perllib/FixMyStreet/Cobrand/Default.pm:866
+#: perllib/FixMyStreet/Cobrand/Default.pm:880
#, fuzzy
msgid "RSS feed of %s, within %s ward"
msgstr "Porthiant RSS %s"
@@ -1711,19 +1779,19 @@ msgstr "Porthiant RSS %s"
msgid "RSS feed of nearby empty properties"
msgstr "Porthiant RSS o eiddo gwag sydd gerllaw"
-#: templates/web/default/reports/council.html:17
+#: templates/web/default/reports/council.html:61
msgid "RSS feed of empty properties in this %s"
msgstr "Porthiant RSS o eiddo gwag yn yr %s hwn"
-#: perllib/FixMyStreet/Cobrand/Default.pm:720
-#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:162
-#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:126
+#: perllib/FixMyStreet/Cobrand/Default.pm:793
+#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:163
+#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:171
#, fuzzy
msgid "RSS feed of empty properties within %s"
msgstr "Porthiant RSS o eiddo gwag yn yr %s hwn"
-#: perllib/FixMyStreet/Cobrand/Default.pm:727
-#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:168
+#: perllib/FixMyStreet/Cobrand/Default.pm:800
+#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:169
#, fuzzy
msgid "RSS feed of empty properties within %s ward"
msgstr "Porthiant RSS o eiddo gwag yn yr %s hwn"
@@ -1745,19 +1813,19 @@ msgstr ""
"hwn."
#: templates/web/default/around/display_location.html:0
-#: templates/web/default/around/display_location.html:35
+#: templates/web/default/around/display_location.html:34
msgid "Recent local empty properties, reportemptyhomes.com"
msgstr "Eiddo gwag lleol diweddar, reportemptyhomes.com"
-#: templates/web/default/reports/council.html:68
-#: templates/web/default/reports/council.html:69
+#: templates/web/default/reports/council.html:87
+#: templates/web/default/reports/council.html:88
#: templates/web/default/reports/index.html:14
#: templates/web/emptyhomes/reports/index.html:13
#: templates/web/fiksgatami/reports/index.html:13
msgid "Recently returned to use"
msgstr "Wedi'u hadfer i'w defnyddio'n ddiweddar"
-#: templates/web/default/index.html:85
+#: templates/web/default/index.html:72
msgid "Recently reported empty properties"
msgstr "Eiddo gwag yr adroddwyd amdanynt yn ddiweddar"
@@ -1792,6 +1860,16 @@ msgstr "Adroddiadau"
msgid "Report and view empty properties"
msgstr "Adrodd am eiddo gwag a gweld y rhain"
+#: templates/web/default/my/my.html:69
+#, fuzzy
+msgid "Reported %s"
+msgstr "Adroddiadau"
+
+#: templates/web/default/my/my.html:67
+#, fuzzy
+msgid "Reported %s, to %s"
+msgstr "Adroddwyd gan %s am %s"
+
#: perllib/FixMyStreet/DB/Result/Problem.pm:331
#: templates/web/default/contact/index.html:45
msgid "Reported anonymously at %s"
@@ -1833,12 +1911,12 @@ msgstr "Adroddwyd yn y categori %s gan %s am %s"
#: templates/web/default/around/around_index.html:1
#: templates/web/default/report/new/fill_in_details.html:0
+#: templates/web/default/report/new/fill_in_details.html:29
#: templates/web/default/report/new/fill_in_details.html:3
-#: templates/web/default/report/new/fill_in_details.html:30
msgid "Reporting an empty property"
msgstr "Adrodd am eiddo gwag"
-#: templates/web/default/around/display_location.html:103
+#: templates/web/default/around/display_location.html:97
msgid "Reports on and around the map"
msgstr "Adroddiadau ar ac yng nghyffiniau'r map"
@@ -1847,11 +1925,21 @@ msgstr "Adroddiadau ar ac yng nghyffiniau'r map"
msgid "Resend report"
msgstr "Cuddio hen adroddiadau "
+#: perllib/FixMyStreet/Geocode/OSM.pm:107
+msgid ""
+"Road operator for this named road (derived from road reference number and "
+"type): %s"
+msgstr ""
+
+#: perllib/FixMyStreet/Geocode/OSM.pm:104
+msgid "Road operator for this named road (from OpenStreetMap): %s"
+msgstr ""
+
#: templates/web/default/admin/council_edit.html:35
msgid "Save changes"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:597
+#: perllib/FixMyStreet/App/Controller/Admin.pm:613
#: templates/web/default/admin/search_reports.html:1
#, fuzzy
msgid "Search Reports"
@@ -1871,7 +1959,7 @@ msgstr ""
"porthiant RSS,\n"
"neu rhowch eich cyfeiriad e-bost i danysgrifio am hysbysiad e-bost."
-#: perllib/FixMyStreet/DB/Result/Problem.pm:390
+#: perllib/FixMyStreet/DB/Result/Problem.pm:396
msgid "Sent to %s %s later"
msgstr "Anfonwyd at %s %s yn ddiweddarach"
@@ -1924,16 +2012,45 @@ msgstr ""
"cat=20'>Gwybodaeth\n"
"bellach am ein gwaith ar gartrefi gwag</a>.\n"
-#: templates/web/default/around/display_location.html:52
+#: templates/web/default/report/display.html:205
+#: templates/web/default/report/new/fill_in_details.html:226
+msgid "Show my name publicly"
+msgstr ""
+
+#: templates/web/default/around/display_location.html:50
msgid "Show pins"
msgstr "Dangos pinnau"
+#: templates/web/default/auth/general.html:3
+#: templates/web/default/auth/general.html:49
+msgid "Sign in"
+msgstr ""
+
+#: templates/web/default/auth/general.html:74
+msgid "Sign in by email"
+msgstr ""
+
+#: templates/web/default/auth/general.html:1
+msgid "Sign in or create an account"
+msgstr ""
+
+#: templates/web/default/auth/sign_out.html:1
+#: templates/web/default/header.html:26
+#: templates/web/emptyhomes/header.html:46
+msgid "Sign out"
+msgstr ""
+
+#: templates/web/default/header.html:25
+#: templates/web/emptyhomes/header.html:45
+msgid "Signed in as %s"
+msgstr ""
+
#: templates/web/default/alert/index.html:31
msgid "Some photos of recent reports"
msgstr "Rhai ffotograffau o adroddiadau diweddar"
#: perllib/FixMyStreet/App/View/Email.pm:32
-#: perllib/FixMyStreet/App/View/Web.pm:38
+#: perllib/FixMyStreet/App/View/Web.pm:41
msgid "Some text to localize"
msgstr ""
@@ -1941,31 +2058,31 @@ msgstr ""
msgid "Some unconfirmeds"
msgstr ""
-#: perllib/FixMyStreet/Geocode.pm:171
+#: perllib/FixMyStreet/Cobrand/Default.pm:516
msgid ""
"Sorry, that appears to be a Crown dependency postcode, which we don't cover."
msgstr ""
-#: perllib/FixMyStreet/Geocode.pm:71
-msgid ""
-"Sorry, that location appears to be too general; please be more specific."
-msgstr ""
-"Sori, mae'n ymddangos bod y lleoliad hwnnw'n rhy gyffredinol; rhowch gynnig "
-"arall arni."
-
#: templates/web/default/tokens/abuse.html:5
msgid "Sorry, there has been an error confirming your empty property."
msgstr "Sori, bu gwall wrth gadarnhau eich eiddo gwag."
-#: perllib/FixMyStreet/Geocode.pm:103 perllib/FixMyStreet/Geocode.pm:150
+#: perllib/FixMyStreet/Geocode.pm:27 perllib/FixMyStreet/Geocode/Bing.pm:51
+#: perllib/FixMyStreet/Geocode/Google.pm:68
msgid "Sorry, we could not find that location."
msgstr "Sori, ni fu modd i ni ddod o hyd i'r lleoliad hwnnw."
-#: perllib/FixMyStreet/Geocode.pm:148
+#: perllib/FixMyStreet/Geocode/Bing.pm:44
+#: perllib/FixMyStreet/Geocode/Google.pm:60
msgid "Sorry, we could not parse that location. Please try again."
msgstr ""
"Sori, ni fu modd i ni ddosrannu'r lleoliad hwnnw. Rhowch gynnig arall arni."
+#: templates/web/default/footer.html:17
+#: templates/web/fiksgatami/footer.html:15
+msgid "Source code"
+msgstr ""
+
#: templates/web/default/admin/list_updates.html:6
#: templates/web/default/admin/search_reports.html:21
#, fuzzy
@@ -1980,12 +2097,14 @@ msgstr "Diweddariad:"
#: templates/web/default/admin/report_edit.html:13
#: templates/web/default/contact/index.html:83
-#: templates/web/default/report/new/fill_in_details.html:91
+#: templates/web/default/report/new/fill_in_details.html:90
msgid "Subject:"
msgstr "Pwnc:"
#: templates/web/default/questionnaire/creator_fixed.html:19
-#: templates/web/default/report/new/fill_in_details.html:171
+#: templates/web/default/report/new/fill_in_details.html:131
+#: templates/web/default/report/new/fill_in_details.html:169
+#: templates/web/default/report/new/fill_in_details.html:190
msgid "Submit"
msgstr "Anfon"
@@ -2004,11 +2123,11 @@ msgstr "Anfon yr holiadur"
msgid "Subscribe"
msgstr "Tanysgrifio"
-#: templates/web/default/alert/list.html:124
+#: templates/web/default/alert/list.html:128
msgid "Subscribe me to an email alert"
msgstr "Dymunaf danysgrifio i rybuddion drwy e-bost"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:595
+#: perllib/FixMyStreet/App/Controller/Admin.pm:611
#: templates/web/default/admin/index.html:1
#, fuzzy
msgid "Summary"
@@ -2020,7 +2139,7 @@ msgstr "Adroddiadau cryno"
msgid "Summary reports"
msgstr "Adroddiadau cryno"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:599
+#: perllib/FixMyStreet/App/Controller/Admin.pm:615
#: templates/web/default/admin/questionnaire.html:1
msgid "Survey Results"
msgstr ""
@@ -2119,7 +2238,7 @@ msgstr ""
"i ni'ch holi chi, a ydych erioed wedi rhoi gwybod i'r cyngor am eiddo gwag "
"cyn hyn?"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:737
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:749
msgid ""
"That image doesn't appear to have uploaded correctly (%s), please try again."
msgstr ""
@@ -2134,17 +2253,18 @@ msgstr ""
"Nid yw'n ymddangos bod cyngor yn gyfrifol am y lleoliad hwnnw, efallai ei "
"fod ar y môr - chwiliwch am fan mwy penodol."
-#: perllib/FixMyStreet/Geocode.pm:81
+#: perllib/FixMyStreet/App/Controller/Location.pm:107
msgid "That location does not appear to be in Britain; please try again."
msgstr ""
"Nid yw'n ymddangos bod y lleoliad hwnnw ym Mhrydain; rhowch gynnig arall "
"arni."
-#: perllib/FixMyStreet/Geocode.pm:165
+#: perllib/FixMyStreet/Cobrand/Default.pm:509
+#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:73
msgid "That postcode was not recognised, sorry."
msgstr "Ni chafodd y cod post hwnnw ei gydnabod, sori."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:496
+#: perllib/FixMyStreet/App/Controller/Admin.pm:512
#, fuzzy
msgid "That empty property will now be resent."
msgstr "ni fydd eich eiddo gwag yn cael ei bostio"
@@ -2199,7 +2319,8 @@ msgstr ""
"rydym yn gweithio ledled Lloegr. Rydym hefyd yn gweithio mewn partneriaeth "
"ag elusennau eraill ledled y DU.</p>\n"
-#: templates/web/default/email_sent.html:26
+#: templates/web/default/auth/token.html:21
+#: templates/web/default/email_sent.html:22
msgid ""
"The confirmation email <strong>may</strong> take a few minutes to arrive "
"&mdash; <em>please</em> be patient."
@@ -2211,6 +2332,19 @@ msgid ""
"this page."
msgstr "Mae manylion eich eiddo gwag ar gael ar ochr dde'r dudalen hon."
+#: perllib/FixMyStreet/App/Controller/Reports.pm:46
+#: perllib/FixMyStreet/App/Controller/Reports.pm:73
+#, fuzzy
+msgid "The error was: %s"
+msgstr "Testun y gwall oedd:"
+
+#: perllib/FixMyStreet/Geocode/OSM.pm:99
+msgid ""
+"The following information about the nearest road might be inaccurate or "
+"irrelevant, if the empty property is close to several roads or close to a "
+"road without a name registered in OpenStreetMap."
+msgstr ""
+
#: db/alert_types.pl:19 db/alert_types.pl:23 db/alert_types.pl:27
#: db/alert_types.pl:31
#, fuzzy
@@ -2280,8 +2414,8 @@ msgstr ""
"Yr adroddiadau diweddaraf o fewn ffin {{NAME}} y mae defnyddwyr wedi rhoi "
"gwybod amdanynt"
-#: templates/web/default/auth/change_password.html:12
-#: templates/web/default/auth/change_password.html:16
+#: templates/web/default/auth/change_password.html:14
+#: templates/web/default/auth/change_password.html:18
msgid "The passwords do not match"
msgstr ""
@@ -2290,10 +2424,10 @@ msgstr ""
msgid "The requested URL '%s' was not found on this server"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:477
-#: perllib/FixMyStreet/App/Controller/Admin.pm:647
-#: perllib/FixMyStreet/App/Controller/Admin.pm:686
-#: perllib/FixMyStreet/App/Controller/Admin.pm:771
+#: perllib/FixMyStreet/App/Controller/Admin.pm:493
+#: perllib/FixMyStreet/App/Controller/Admin.pm:663
+#: perllib/FixMyStreet/App/Controller/Admin.pm:702
+#: perllib/FixMyStreet/App/Controller/Admin.pm:787
msgid "The requested URL was not found on this server."
msgstr ""
@@ -2317,15 +2451,37 @@ msgstr ""
"Ni allai'r defnyddiwr leoli'r eiddo gwag ar fap, ond i weld yr ardal o "
"gwmpas y lleoliad a gofnodwyd ganddynt "
+#: perllib/FixMyStreet/App/Controller/Reports.pm:72
+msgid ""
+"There was an empty property showing the All Reports page. Please try again "
+"later."
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:578
+#: perllib/FixMyStreet/App/Controller/Report/Update.pm:117
+#: templates/web/default/auth/general.html:23
+msgid ""
+"There was an empty property with your email/password combination. Passwords "
+"and user accounts are a brand <strong>new</strong> service, so you probably "
+"do not have one yet &ndash; please fill in the right hand side of this form "
+"to get one."
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Alert.pm:354
+msgid ""
+"There was an empty property with your email/password combination. Please try "
+"again."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Contact.pm:115
msgid "There were problems with your report. Please see below."
msgstr "Cafwyd anhawsterau gyda'ch adroddiad. Gweler isod."
-#: perllib/FixMyStreet/App/Controller/Report/Update.pm:202
+#: perllib/FixMyStreet/App/Controller/Report/Update.pm:211
msgid "There were problems with your update. Please see below."
msgstr "Cafwyd anhawsterau gyda'ch diweddariad. Gweler isod"
-#: bin/send-reports:178
+#: bin/send-reports:181
msgid ""
"This email has been sent to both councils covering the location of the empty "
"property, as the user did not categorise it; please ignore it if you're not "
@@ -2333,7 +2489,7 @@ msgid ""
"empty property this is so we can add it to our system."
msgstr ""
-#: bin/send-reports:181
+#: bin/send-reports:184
msgid ""
"This email has been sent to several councils covering the location of the "
"empty property, as the category selected is provided for all of them; please "
@@ -2347,11 +2503,11 @@ msgid ""
"will be periodically deleted."
msgstr "Safle datblygwr yw hwn; gallai pethau dorri unrhyw bryd."
-#: templates/web/default/reports/council.html:20
+#: templates/web/default/reports/council.html:65
msgid "This is a summary of all reports for one %s."
msgstr "Dyma grynodeb o'r holl adroddiadau ar gyfer y %s."
-#: templates/web/default/reports/council.html:22
+#: templates/web/default/reports/council.html:67
msgid "This is a summary of all reports for this %s."
msgstr ""
@@ -2365,13 +2521,18 @@ msgstr ""
"Dyma grynodeb o'r holl adroddiadau ar y safle hwn; dewiswch gyngor penodol i "
"weld yr adroddiadau a anfonwyd ato."
-#: perllib/FixMyStreet/Cobrand/Default.pm:840
+#: perllib/FixMyStreet/Cobrand/Default.pm:913
#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:117
-#: templates/web/default/report/display.html:111
+#: templates/web/default/report/display.html:96
msgid "This empty property has been returned to use"
msgstr "Mae'r eiddo gwag hwn wedi cael ei adfer i'w ddefnyddio"
-#: perllib/FixMyStreet/Cobrand/Default.pm:836
+#: templates/web/default/report/display.html:91
+#, fuzzy
+msgid "This empty property has not been returned to use"
+msgstr "Mae'r eiddo gwag hwn wedi cael ei adfer i'w ddefnyddio"
+
+#: perllib/FixMyStreet/Cobrand/Default.pm:909
msgid "This empty property is old and of unknown status."
msgstr "Mae'r eiddo gwag hwn yn hen ac nid yw ei statws yn hysbys."
@@ -2392,7 +2553,7 @@ msgstr ""
"Mae'r dudalen we hon hefyd yn cynnwys ffotograff o'r eiddo gwag, wedi'i "
"ddarparu gan y defnyddiwr."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:598
+#: perllib/FixMyStreet/App/Controller/Admin.pm:614
#: templates/web/default/admin/timeline.html:1
msgid "Timeline"
msgstr ""
@@ -2411,7 +2572,7 @@ msgstr ""
"ward chi,\n"
"cofnodwch eich cod post Prydeinig neu enw stryd ac ardal:"
-#: templates/web/default/around/display_location.html:92
+#: templates/web/default/around/display_location.html:86
#, fuzzy
msgid ""
"To report an empty property, simply <strong>click on the map</strong> at the "
@@ -2424,10 +2585,19 @@ msgstr ""
msgid "To view a map of the precise location of this issue"
msgstr "Gweld map o union leoliad y broblem hon"
+#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/questionnaire.html:24
+msgid "Total"
+msgstr ""
+
#: templates/web/default/maps/tilma/original.html:10
msgid "Unable to fetch the map tiles from the tile server."
msgstr ""
+#: perllib/FixMyStreet/App/Controller/Reports.pm:45
+msgid "Unable to look up areas in MaPit. Please try again later."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:22
#: templates/web/default/admin/update_edit.html:19
msgid "Unconfirmed"
@@ -2439,7 +2609,6 @@ msgid "Unknown alert type"
msgstr "ID eiddo gwag anhysbys"
#: perllib/FixMyStreet/App/Controller/Report.pm:70
-#: perllib/FixMyStreet/App/Controller/Report/Update.pm:24
msgid "Unknown empty property ID"
msgstr "ID eiddo gwag anhysbys"
@@ -2457,7 +2626,7 @@ msgstr "Adroddwyd yn ddi-enw am %s"
msgid "Update below added by %s at %s"
msgstr "Adroddwyd gan %s trwy %s am %s"
-#: templates/web/default/admin/index.html:29
+#: templates/web/default/admin/index.html:30
msgid "Update breakdown by state"
msgstr ""
@@ -2470,12 +2639,12 @@ msgstr "Diweddariadau yn ôl {{name}}"
msgid "Update statuses"
msgstr "Diweddariadau"
-#: templates/web/default/report/display.html:103
+#: templates/web/default/report/display.html:84
msgid "Update:"
msgstr "Diweddariad:"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:570
-#: perllib/FixMyStreet/App/Controller/Admin.pm:733
+#: perllib/FixMyStreet/App/Controller/Admin.pm:586
+#: perllib/FixMyStreet/App/Controller/Admin.pm:749
#, fuzzy
msgid "Updated!"
msgstr "Diweddariadau"
@@ -2494,8 +2663,8 @@ msgstr "Diweddariadau am {{title}}"
msgid "Updates to this empty property, reportemptyhomes.com"
msgstr "Diweddariadau i'r eiddo gwag hwn, reportemptyhomes.com"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:284
-#: perllib/FixMyStreet/App/Controller/Admin.pm:314
+#: perllib/FixMyStreet/App/Controller/Admin.pm:294
+#: perllib/FixMyStreet/App/Controller/Admin.pm:324
#, fuzzy
msgid "Values updated"
msgstr "Anfonwch ddiweddariadau ataf i drwy'r e-bost"
@@ -2511,7 +2680,7 @@ msgid "View your report"
msgstr "Gweld eich adroddiad"
#: templates/web/default/around/display_location.html:0
-#: templates/web/default/around/display_location.html:34
+#: templates/web/default/around/display_location.html:33
msgid "Viewing a location"
msgstr "Gweld lleoliad"
@@ -2519,7 +2688,11 @@ msgstr "Gweld lleoliad"
msgid "Viewing an empty property"
msgstr "Gweld eiddo gwag"
-#: perllib/FixMyStreet/Geocode.pm:155 perllib/FixMyStreet/Geocode.pm:174
+#: templates/web/default/reports/council.html:22
+msgid "Wards of this council"
+msgstr ""
+
+#: perllib/FixMyStreet/Geocode/Bing.pm:46
msgid ""
"We do not cover Northern Ireland, I'm afraid, as our licence doesn't include "
"any maps for the region."
@@ -2527,6 +2700,11 @@ msgstr ""
"Nid ydym yn ymdrin â Gogledd Iwerddon, yn anffodus, gan nad yw ein trwydded "
"yn cynnwys unrhyw fapiau ar gyfer y rhanbarth."
+#: perllib/FixMyStreet/Cobrand/Default.pm:520
+#: perllib/FixMyStreet/Geocode/Google.pm:63
+msgid "We do not currently cover Northern Ireland, I'm afraid."
+msgstr ""
+
#: templates/web/default/alert/choose.html:6
#: templates/web/default/around/around_index.html:33
msgid ""
@@ -2537,9 +2715,8 @@ msgstr ""
"hyd at ddeg cyfatebiaeth, rhowch gynnig ar chwiliad gwahanol os nad yw'ch "
"lleoliad chi yno."
-#: perllib/FixMyStreet/App/Controller/Around.pm:229
-msgid ""
-"We had an empty property with the supplied co-ordinates - outside the UK?"
+#: templates/web/default/auth/token.html:19
+msgid "We have sent you an email containing a link to confirm your account."
msgstr ""
#: templates/web/emptyhomes/tokens/confirm_problem.html:18
@@ -2549,14 +2726,14 @@ msgid ""
"property you reported."
msgstr ""
-#: bin/send-reports:188
+#: bin/send-reports:191
msgid ""
"We realise this empty property might be the responsibility of %s; however, "
"we don't currently have any contact details for them. If you know of an "
"appropriate contact address, please do get in touch."
msgstr ""
-#: templates/web/default/index.html:60
+#: templates/web/default/index.html:46
msgid ""
"The details will be sent directly to the right person in the local council "
"for them to take action"
@@ -2599,7 +2776,7 @@ msgstr ""
msgid "When sent"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:465
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:466
msgid "Whole block of empty flats"
msgstr "Bloc cyfan o fflatiau gwag"
@@ -2643,28 +2820,18 @@ msgid ""
"personal information, or similar:"
msgstr ""
-#: templates/web/default/reports/council.html:35
+#: templates/web/default/reports/council.html:71
+#, fuzzy
msgid ""
-"You can <a href=\"%s\">see less detail</a> or go back and <a href=\"/reports"
-"\">show all councils</a>."
+"You can <a href=\"%s\">view all reports for the council</a> or <a href=\"/"
+"reports\">show all councils</a>."
msgstr ""
"Gallwch <a href=\"%s\">weld llai o fanylion</a> neu fynd yn ôl a <a href=\"/"
"reports\">dangos pob cyngor</a>."
-#: templates/web/default/reports/council.html:31
-msgid "You can <a href=\"%s\">see less detail</a>."
-msgstr "Gallwch <a href=\"%s\">weld llai o fanylion</a>."
-
-#: templates/web/default/reports/council.html:37
-msgid ""
-"You can <a href=\"%s\">see more details</a> or go back and <a href=\"/reports"
-"\">show all councils</a>."
-msgstr ""
-"Gallwch <a href=\"%s\">weld mwy o fanylion</a> neu fynd yn ôl a <a href=\"/"
-"reports\">dangos pob cyngor</a>."
-
-#: templates/web/default/reports/council.html:33
-msgid "You can <a href=\"%s\">see more details</a>."
+#: templates/web/default/reports/council.html:73
+#, fuzzy
+msgid "You can <a href=\"/reports\">show all councils</a>."
msgstr "Gallwch <a href=\"%s\">weld mwy o fanylion</a>."
#: templates/web/default/report/new/no_councils_text.html:14
@@ -2676,7 +2843,7 @@ msgid ""
"properties for %s and emailing it to us at <a href='mailto:%s'>%s</a>."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:45
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:38
msgid ""
"You have already answered this questionnaire. If you have a question, please "
"<a href='%s'>get in touch</a>, or <a href='%s'>view your empty property</"
@@ -2686,18 +2853,23 @@ msgstr ""
"s'>cysylltwch â ni</a>, neu ewch i <a href='%s'>weld eich eiddo gwag</a>.\n"
#: templates/web/default/questionnaire/index.html:94
-#: templates/web/default/report/display.html:122
-#: templates/web/default/report/new/fill_in_details.html:111
+#: templates/web/default/report/new/fill_in_details.html:110
msgid ""
"You have already attached a photo to this report, attaching another one will "
"replace it."
msgstr ""
-#: templates/web/default/auth/logout.html:3
-msgid "You have been logged out"
+#: templates/web/default/report/display.html:106
+msgid ""
+"You have already attached a photo to this update, attaching another one will "
+"replace it."
+msgstr ""
+
+#: templates/web/default/auth/sign_out.html:3
+msgid "You have been signed out"
msgstr ""
-#: templates/web/default/report/new/fill_in_details.html:36
+#: templates/web/default/report/new/fill_in_details.html:35
#, fuzzy
msgid ""
"You have located the empty property at the point marked with a purple pin on "
@@ -2734,7 +2906,15 @@ msgstr "Rydych wedi dileu'ch hysbysiad yn llwyddiannus."
msgid "You have successfully deleted your alert."
msgstr "Rydych wedi dileu'ch hysbysiad yn llwyddiannus."
-#: templates/web/default/email_sent.html:30
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:584
+#: perllib/FixMyStreet/App/Controller/Report/Update.pm:123
+#, fuzzy
+msgid ""
+"You have successfully signed in; please check and confirm your details are "
+"accurate:"
+msgstr "Rydych wedi cadarnhau'ch hysbysiad yn llwyddiannus."
+
+#: templates/web/default/email_sent.html:26
msgid ""
"You must now click the link in the email we've just sent you &mdash; if you "
"do not, %s."
@@ -2744,19 +2924,44 @@ msgstr ""
msgid "You really want to resend?"
msgstr ""
+#: templates/web/default/my/my.html:0 templates/web/default/my/my.html:14
#: templates/web/default/my/my.html:3
#, fuzzy
msgid "Your Reports"
msgstr "Adroddiadau"
-#: templates/web/default/alert/list.html:120
+#: templates/web/default/auth/general.html:27
+#, fuzzy
+msgid "Your email address:"
+msgstr "Eich cyfeiriad e-bost:"
+
+#: templates/web/default/alert/list.html:122
+#: templates/web/default/report/display.html:128
+#: templates/web/default/report/new/fill_in_details.html:141
msgid "Your email:"
msgstr "Eich cyfeiriad e-bost:"
+#: templates/web/default/auth/general.html:59
#: templates/web/default/contact/index.html:68
+#: templates/web/default/report/display.html:199
+#: templates/web/default/report/new/fill_in_details.html:219
msgid "Your name:"
msgstr "Eich enw:"
+#: templates/web/default/auth/change_password.html:6
+msgid "Your password has been changed"
+msgstr ""
+
+#: templates/web/default/footer.html:7
+#, fuzzy
+msgid "Your reports"
+msgstr "Adroddiadau"
+
+#: templates/web/default/my/my.html:40
+#, fuzzy
+msgid "Your updates"
+msgstr "Adroddiadau"
+
#: templates/web/default/contact/index.html:76
msgid "Your&nbsp;email:"
msgstr "Eich&nbsp;cyfeiriad e-bost:"
@@ -2774,7 +2979,11 @@ msgstr "cyngor"
msgid "didn't use map"
msgstr ""
-#: perllib/Utils.pm:241
+#: templates/web/default/admin/index.html:15
+msgid "from %d different users"
+msgstr ""
+
+#: perllib/Utils.pm:247
msgid "less than a minute"
msgstr "llai na munud"
@@ -2782,7 +2991,7 @@ msgstr "llai na munud"
msgid "marked as returned to use"
msgstr "cofnodwyd bod hyn wedi'i adfer i'w ddefnyddio"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:106
+#: perllib/FixMyStreet/App/Controller/Admin.pm:107
#: templates/web/default/admin/questionnaire.html:15
#: templates/web/default/admin/questionnaire.html:16
msgid "n/a"
@@ -2809,12 +3018,12 @@ msgid "the map was not used so pin location may be inaccurate"
msgstr ""
"ni ddefnyddiwyd y map felly mae'n bosibl na fydd lleoliad y pin yn gywir"
-#: bin/send-reports:169
+#: bin/send-reports:172
#, fuzzy
msgid "this type of local empty property"
msgstr "Anfonwch fanylion eiddo gwag lleol newydd ataf i drwy'r e-bost"
-#: perllib/Utils.pm:217
+#: perllib/Utils.pm:221
msgid "today"
msgstr "heddiw"
@@ -2860,7 +3069,7 @@ msgstr "ni fydd eich eiddo gwag yn cael ei bostio"
msgid "your update will not be posted"
msgstr "ni fydd eich diweddariad yn cael ei bostio"
-#: templates/web/default/front_stats.html:19
+#: templates/web/default/front/stats.html:19
#, perl-format
msgid "<big>%s</big> report recently"
msgid_plural "<big>%s</big> reports recently"
@@ -2875,20 +3084,27 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: templates/web/default/front_stats.html:14
+#: templates/web/default/front/stats.html:14
#, perl-format
msgid "<big>%s</big> report in past week"
msgid_plural "<big>%s</big> reports in past week"
msgstr[0] "<big>%s</big> adroddiad o fewn yr wythnos ddiwethaf"
msgstr[1] "<big>%s</big> o adroddiadau o fewn yr wythnos ddiwethaf"
-#: templates/web/default/front_stats.html:25
+#: templates/web/default/front/stats.html:25
#, perl-format
msgid "<big>%s</big> returned to use in past month"
msgid_plural "<big>%s</big> returned to use in past month"
msgstr[0] "Dychwelwyd <big>%s</big> i'w ddefnyddio yn y mis diwethaf"
msgstr[1] "Dychwelwyd <big>%s</big> i'w defnyddio yn y mis diwethaf"
+#: templates/web/default/front/stats.html:31
+#, perl-format
+msgid "<big>%s</big> update on reports"
+msgid_plural "<big>%s</big> updates on reports"
+msgstr[0] "<big>%s</big> diweddariad ar adroddiadau"
+msgstr[1] "<big>%s</big> diweddariad ar adroddiadau"
+
#: templates/web/default/report/new/some_councils_text.html:14
#, perl-format
msgid ""
@@ -2900,19 +3116,60 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: templates/web/default/front_stats.html:31
-#, perl-format
-msgid "<big>%s</big> update on reports"
-msgid_plural "<big>%s</big> updates on reports"
-msgstr[0] "<big>%s</big> diweddariad ar adroddiadau"
-msgstr[1] "<big>%s</big> diweddariad ar adroddiadau"
+#, fuzzy
+#~ msgid ""
+#~ "Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and "
+#~ "maintained by <a href=\"http://www.nuug.no/\">NUUG</a>, using some <a "
+#~ "href=\"http://github.com/mysociety/fixmystreet\">clever</a>&nbsp;<a href="
+#~ "\"https://secure.mysociety.org/cvstrac/dir?d=mysociety/services/TilMa"
+#~ "\">code</a>."
+#~ msgstr ""
+#~ "Adeiladwyd gan <a href=\"http://www.mysociety.org/\">mySociety</a>, gan "
+#~ "ddefnyddio tipyn o <a href=\"https://secure.mysociety.org/cvstrac/dir?"
+#~ "d=mysociety/services/TilMa\">god</a><a href=\"http://github.com/mysociety/"
+#~ "fixmystreet\">clyfar</a>&nbsp;."
+
+#~ msgid ""
+#~ "Built by <a href=\"http://www.mysociety.org/\">mySociety</a>, using some "
+#~ "<a href=\"http://github.com/mysociety/fixmystreet\">clever</a>&nbsp;<a "
+#~ "href=\"https://secure.mysociety.org/cvstrac/dir?d=mysociety/services/TilMa"
+#~ "\">code</a>."
+#~ msgstr ""
+#~ "Adeiladwyd gan <a href=\"http://www.mysociety.org/\">mySociety</a>, gan "
+#~ "ddefnyddio tipyn o <a href=\"https://secure.mysociety.org/cvstrac/dir?"
+#~ "d=mysociety/services/TilMa\">god</a><a href=\"http://github.com/mysociety/"
+#~ "fixmystreet\">clyfar</a>&nbsp;."
+
+#~ msgid "Can we show your name on the site?"
+#~ msgstr "Allwn ni ddangos eich enw chi ar y safle?"
+
+#, fuzzy
+#~ msgid "Get reportemptyhomes.com on your iPhone"
+#~ msgstr "Cael yr Asiantaeth Tai Gwag ar eich iPhone"
+
+#, fuzzy
+#~ msgid "My Reports"
+#~ msgstr "Adroddiadau"
+
+#~ msgid ""
+#~ "Sorry, that location appears to be too general; please be more specific."
+#~ msgstr ""
+#~ "Sori, mae'n ymddangos bod y lleoliad hwnnw'n rhy gyffredinol; rhowch "
+#~ "gynnig arall arni."
+
+#~ msgid "You can <a href=\"%s\">see less detail</a>."
+#~ msgstr "Gallwch <a href=\"%s\">weld llai o fanylion</a>."
+
+#~ msgid ""
+#~ "You can <a href=\"%s\">see more details</a> or go back and <a href=\"/"
+#~ "reports\">show all councils</a>."
+#~ msgstr ""
+#~ "Gallwch <a href=\"%s\">weld mwy o fanylion</a> neu fynd yn ôl a <a href="
+#~ "\"/reports\">dangos pob cyngor</a>."
#~ msgid "Sorry! Something's gone wrong."
#~ msgstr "Ymddiheuriadau! Mae rhywbeth wedi mynd o'i le."
-#~ msgid "The text of the error was:"
-#~ msgstr "Testun y gwall oedd:"
-
#~ msgid ""
#~ "<h1>Nearly Done! Now check your email...</h1>\n"
#~ "<p>The confirmation email <strong>may</strong> take a few minutes to "
diff --git a/locale/nb_NO.UTF-8/LC_MESSAGES/FixMyStreet.po b/locale/nb_NO.UTF-8/LC_MESSAGES/FixMyStreet.po
index 622cbbf2b..bc136c74d 100644
--- a/locale/nb_NO.UTF-8/LC_MESSAGES/FixMyStreet.po
+++ b/locale/nb_NO.UTF-8/LC_MESSAGES/FixMyStreet.po
@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: FixMyStreet\n"
"Report-Msgid-Bugs-To: matthew@mysociety.org\n"
-"POT-Creation-Date: 2011-06-14 17:28+0100\n"
-"PO-Revision-Date: 2011-04-07 09:00MET\n"
+"POT-Creation-Date: 2011-07-14 12:35+0100\n"
+"PO-Revision-Date: 2011-07-13 20:42MET\n"
"Last-Translator: Petter Reinholdtsen <pere@hungry.com>\n"
"Language-Team: Norwegian Bokmål <i18n-nb@lister.ping.uio.no>\n"
"MIME-Version: 1.0\n"
@@ -19,7 +19,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: KBabel 1.11.4\n"
-#: bin/send-reports:176 perllib/FixMyStreet/DB/Result/Problem.pm:377
+#: bin/send-reports:179 perllib/FixMyStreet/DB/Result/Problem.pm:376
msgid " and "
msgstr " og "
@@ -43,19 +43,19 @@ msgstr " eller "
msgid "%d addresses"
msgstr "%d adresser"
-#: templates/web/default/admin/index.html:16
+#: templates/web/default/admin/index.html:17
msgid "%d confirmed alerts, %d unconfirmed"
msgstr "%d bekreftede varsler, %d ubekreftede"
-#: templates/web/default/admin/index.html:18
+#: templates/web/default/admin/index.html:19
msgid "%d council contacts &ndash; %d confirmed, %d unconfirmed"
msgstr "%d administrasjonskontakter &ndash; %d bekreftet, %d ubekreftet"
-#: perllib/Utils.pm:245
+#: perllib/Utils.pm:251
msgid "%d day"
msgstr "%d dag"
-#: perllib/Utils.pm:245
+#: perllib/Utils.pm:251
msgid "%d days"
msgstr "%d dager"
@@ -63,48 +63,47 @@ msgstr "%d dager"
msgid "%d edits by %s"
msgstr "%d redigeringer av %s"
-#: perllib/Utils.pm:246
+#: perllib/Utils.pm:252
msgid "%d hour"
msgstr "%d time"
-#: perllib/Utils.pm:246
+#: perllib/Utils.pm:252
msgid "%d hours"
msgstr "%d timer"
-#: templates/web/default/admin/index.html:15
+#: templates/web/default/admin/index.html:16
msgid "%d live updates"
msgstr "%d aktive oppdateringer"
-#: perllib/Utils.pm:247
+#: perllib/Utils.pm:253
msgid "%d minute"
msgstr "%d minutt"
-#: perllib/Utils.pm:247
+#: perllib/Utils.pm:253
msgid "%d minutes"
msgstr "%d minutter"
-#: templates/web/default/admin/index.html:17
-#, fuzzy
+#: templates/web/default/admin/index.html:18
msgid "%d questionnaires sent &ndash; %d answered (%s%%)"
-msgstr "%d spørreskjema sendt &ndash; %d besvart (%d%%)"
+msgstr "%d spørreskjema sendt &ndash; %d besvart (%s%%)"
-#: perllib/Utils.pm:244
+#: perllib/Utils.pm:250
msgid "%d week"
msgstr "%d uke"
-#: perllib/Utils.pm:244
+#: perllib/Utils.pm:250
msgid "%d weeks"
msgstr "%d uker"
-#: templates/web/default/reports/council.html:11
-#: templates/web/default/reports/council.html:12
+#: templates/web/default/reports/council.html:0
+#: templates/web/default/reports/council.html:14
msgid "%s - Summary reports"
msgstr "%s - oppsummeringsrapporter"
-#: perllib/FixMyStreet/Cobrand/Default.pm:763
-#: perllib/FixMyStreet/Cobrand/Default.pm:777
+#: perllib/FixMyStreet/Cobrand/Default.pm:836
+#: perllib/FixMyStreet/Cobrand/Default.pm:850
msgid "%s ward, %s"
-msgstr ""
+msgstr "%s bydel, %s"
#: perllib/FixMyStreet/DB/Result/Problem.pm:307
msgid "%s, reported anonymously at %s"
@@ -114,14 +113,13 @@ msgstr "%s, rapportert anonymt %s"
msgid "%s, reported by %s at %s"
msgstr "%s, rapportert av %s %s"
-#: perllib/FixMyStreet/Cobrand/Default.pm:794
-#: perllib/FixMyStreet/Cobrand/Default.pm:808
+#: perllib/FixMyStreet/Cobrand/Default.pm:867
+#: perllib/FixMyStreet/Cobrand/Default.pm:881
#, fuzzy
msgid "%s, within %s ward"
msgstr "Problemer innenfor %s avdeling/etat"
-#: perllib/FixMyStreet/Map/Tilma/OL/1_10k.pm:21
-#: perllib/FixMyStreet/Map/Tilma/Original/1_10k.pm:21
+#: perllib/FixMyStreet/Map/Tilma/Original.pm:82
msgid ""
"&copy; Crown copyright. All rights reserved. Ministry of Justice "
"100037819&nbsp;2008."
@@ -129,9 +127,9 @@ msgstr ""
"&copy; Crown copyright. Alle rettigheter reservert. Justisdepartementet "
"100037819&nbsp;2008."
-#: templates/web/default/email_sent.html:32
+#: templates/web/default/email_sent.html:28
msgid "(Don't worry &mdash; %s)"
-msgstr ""
+msgstr "(Slapp av &mdash; %s)"
#: templates/web/default/alert/list.html:53
msgid "(a default distance which covers roughly 200,000 people)"
@@ -150,35 +148,37 @@ msgstr "(løst)"
msgid "(like graffiti, fly tipping, broken paving slabs, or street lighting)"
msgstr "(som tagging, søppel, hull i veien, eller manglende gatelys)"
-#: templates/web/default/reports/council.html:90
+#: templates/web/default/reports/council.html:133
msgid "(not sent to council)"
msgstr "(ikke rapportert til administrasjonen)"
-#: templates/web/default/report/display.html:82
-#: templates/web/default/report/new/fill_in_details.html:160
+#: templates/web/default/report/new/fill_in_details.html:233
msgid "(optional)"
msgstr "(valgfritt)"
-#: templates/web/default/reports/council.html:88
+#: templates/web/default/reports/council.html:131
msgid "(sent to both)"
-msgstr "(sent til begge)"
+msgstr "(sendt til begge)"
-#: templates/web/default/report/display.html:88
-#: templates/web/default/report/new/fill_in_details.html:145
+#: templates/web/default/report/new/fill_in_details.html:227
msgid "(we never show your email address or phone number)"
msgstr "(vi viser aldri din epostadresse eller telefonnummer)"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:259
+#: templates/web/default/report/display.html:206
+msgid "(we never show your email)"
+msgstr "(vi viser aldri din epostadresse)"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:269
msgid "*unknown*"
msgstr "*ukjent*"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:476
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:504
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:477
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:505
#: perllib/FixMyStreet/DB/Result/Problem.pm:204
msgid "-- Pick a category --"
msgstr "-- velg en kategori --"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:462
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:463
#: perllib/FixMyStreet/DB/Result/Problem.pm:210
msgid "-- Pick a property type --"
msgstr "-- velg en eiendomsstype --"
@@ -197,17 +197,15 @@ msgstr ""
"<div id=\"logo\" align=\"center\"><a href=\"http://www.nuug.no/\">Foreningen "
"NUUG</a></div>"
-#: templates/web/default/questionnaire/completed.html:21
-#, fuzzy
+#: templates/web/default/questionnaire/completed.html:25
msgid ""
"<p style=\"font-size:150%\">Thank you very much for filling in our "
"questionnaire; glad to hear it&rsquo;s been fixed.</p>"
msgstr ""
-"<p style=\"font-size:150%\">Tusen takk for at du fylte ut vårt "
-"spørreskjema.\n"
-"Veldig glad for å høre at det er blitt fikset.</p>\n"
+"<p style=\"font-size:150%\">Tusen takk for at du fylte ut vårt spørreskjema. "
+"Veldig glad for å høre at det er blitt fikset.</p>"
-#: templates/web/default/questionnaire/completed.html:11
+#: templates/web/default/questionnaire/completed.html:15
#, fuzzy
msgid ""
"<p style=\"font-size:150%%\">We&rsquo;re sorry to hear that. We have two "
@@ -261,7 +259,7 @@ msgid ""
"www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n"
msgstr ""
-#: templates/web/default/questionnaire/completed.html:5
+#: templates/web/default/questionnaire/completed.html:9
#, fuzzy
msgid ""
"<p>Thank you very much for filling in our questionnaire; if you\n"
@@ -274,21 +272,37 @@ msgstr ""
"hit til\n"
"nettstedet og legg igjen en oppdatering.</p>\n"
-#: templates/web/default/around/display_location.html:93
-#: templates/web/default/around/display_location.html:95
-#, fuzzy
+#: templates/web/default/around/display_location.html:87
+#: templates/web/default/around/display_location.html:89
msgid ""
"<small>If you cannot see the map, <a href='%s' rel='nofollow'>skip this "
"step</a>.</small>"
msgstr ""
"<small>Hvis du ikke kan se kartet, <a href='%s' rel='nofollow'>hopp over "
-"dette\n"
-" steget</a>.</small>"
+"dette steget</a>.</small>"
#: templates/web/default/admin/index.html:14
msgid "<strong>%d</strong> live problems"
msgstr "<strong>%d</strong> aktive problemer"
+#: templates/web/default/auth/general.html:55
+msgid "<strong>No</strong>, I do not, let me sign in by email:"
+msgstr "<strong>Nei</strong>, det gjør jeg ikke. La meg logge inn med epost:"
+
+#: templates/web/default/report/new/fill_in_details.html:175
+msgid "<strong>No</strong>, let me confirm my report by email:"
+msgstr "<strong>No</strong>, la meg bekrefte min rapport med epost:"
+
+#: templates/web/default/report/display.html:160
+msgid "<strong>No</strong>, let me confirm my update by email:"
+msgstr "<strong>No</strong>, la meg bekrefte min oppdatering med epost:"
+
+#: templates/web/default/auth/general.html:37
+#: templates/web/default/report/display.html:142
+#: templates/web/default/report/new/fill_in_details.html:157
+msgid "<strong>Yes</strong>, I have a password:"
+msgstr "<strong>Ja</strong>, jeg har et passord:"
+
#: templates/web/default/static/about.html:1
#: templates/web/default/static/about.html:3
#: templates/web/emptyhomes/header.html:34
@@ -301,9 +315,13 @@ msgstr "Om oss"
msgid "Add new category"
msgstr "Legg til ny kategori"
-#: templates/web/default/auth/change_password.html:30
+#: templates/web/default/my/my.html:51
+msgid "Added %s"
+msgstr "La til %s"
+
+#: templates/web/default/auth/change_password.html:31
msgid "Again:"
-msgstr ""
+msgstr "Igjen:"
#: templates/web/default/admin/timeline.html:37
msgid "Alert %d created for %s, type %s, parameters %s / %s"
@@ -313,7 +331,7 @@ msgstr "Varsel %d opprettet for %s, type %s, parameter %s / %s"
msgid "Alert %d disabled (created %s)"
msgstr "Varsel %d koblet ut (opprettet %s)"
-#: templates/web/default/report/display.html:133
+#: templates/web/default/report/display.html:211
msgid "Alert me to future updates"
msgstr "Send meg varsel ved fremtidige oppdateringer"
@@ -321,7 +339,7 @@ msgstr "Send meg varsel ved fremtidige oppdateringer"
msgid "All confirmed"
msgstr "Alle bekreftet"
-#: templates/web/default/footer.html:7 templates/web/emptyhomes/header.html:31
+#: templates/web/default/footer.html:8 templates/web/emptyhomes/header.html:31
#: templates/web/fiksgatami/footer.html:6
msgid "All reports"
msgstr "Alle rapporter"
@@ -338,16 +356,17 @@ msgid ""
"a relevant local body such as <strong>TfL</strong>, via the London Report-It "
"system."
msgstr ""
-"All informasjonen du gir oss her vil bli sendt til <strong>%s</strong>.\n"
-"Tittelen og detaljene for problemet vil bli offentlig, pluss ditt navn\n"
-"hvis du gir oss tillatelse."
+"All informasjonen du gir oss her vil bli sendt til <strong>%s</strong> eller "
+"en relevant lokal etat som TfL, via systemet London Report-It.\n"
+"Tittelen og detaljene for problemet vil bli offentlig, pluss ditt navn hvis "
+"du gir oss tillatelse."
#: templates/web/default/report/new/all_councils_text.html:10
#: templates/web/default/report/new/all_councils_text.html:12
-#, fuzzy
msgid ""
"All the information you provide here will be sent to <strong>%s</strong>."
-msgstr "All informasjonen du har lagt inn her vil bli sendt til"
+msgstr ""
+"All informasjonen du har lagt inn her vil bli sendt til <strong>%s</strong>."
#: templates/web/emptyhomes/report/new/all_councils_text.html:2
#: templates/web/emptyhomes/report/new/all_councils_text.html:4
@@ -376,54 +395,38 @@ msgstr "Anonym"
msgid "Anonymous:"
msgstr "Anonym:"
+#: templates/web/default/footer.html:16
+msgid "Built by <a href=\"http://www.mysociety.org/\">mySociety</a>"
+msgstr "Bygget av <a href=\"http://www.mysociety.org/\">mySociety</a>"
+
#: templates/web/fiksgatami/footer.html:15
msgid ""
"Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and maintained "
-"by <a href=\"http://www.nuug.no/\">NUUG</a>, using some <a href=\"http://"
-"github.com/mysociety/fixmystreet\">clever</a>&nbsp;<a href=\"https://secure."
-"mysociety.org/cvstrac/dir?d=mysociety/services/TilMa\">code</a>."
+"by <a href=\"http://www.nuug.no/\">NUUG</a>"
msgstr ""
"Bygget av <a href=\"http://www.mysociety.org/\">mySociety</a> og "
-"vedlikeholdt av <a href=\"http://www.nuug.no/\">NUUG</a>, ved hjelp av <a "
-"href=\"http://github.com/mysociety/fixmystreet\">snedig</a>&nbsp;<a href="
-"\"https://secure.mysociety.org/cvstrac/dir?d=mysociety/services/TilMa"
-"\">kode</a>."
-
-#: templates/web/default/footer.html:16
-msgid ""
-"Built by <a href=\"http://www.mysociety.org/\">mySociety</a>, using some <a "
-"href=\"http://github.com/mysociety/fixmystreet\">clever</a>&nbsp;<a href="
-"\"https://secure.mysociety.org/cvstrac/dir?d=mysociety/services/TilMa"
-"\">code</a>."
-msgstr ""
-"Bygget av <a href=\"http://www.mysociety.org/\">mySociety</a>, ved hjelp av "
-"<a href=\"http://github.com/mysociety/fixmystreet\">smart</a>&nbsp;<a href="
-"\"https://secure.mysociety.org/cvstrac/dir?d=mysociety/services/TilMa"
-"\">kode</a>."
-
-#: templates/web/default/report/new/fill_in_details.html:141
-msgid "Can we show your name on the site?"
-msgstr "Kan vi vise ditt navn her på nettstedet?"
-
-#: templates/web/default/report/display.html:87
-#: templates/web/default/report/new/fill_in_details.html:143
-msgid "Can we show your name publicly?"
-msgstr "Kan vi vise ditt navn offentlig?"
+"vedlikeholdt av <a href=\"http://www.nuug.no/\">NUUG</a>"
#: templates/web/default/admin/council_contacts.html:19
+#: templates/web/default/admin/index.html:36
#: templates/web/default/admin/search_reports.html:17
msgid "Category"
msgstr "Kategori"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:479
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:505
+#: templates/web/default/admin/index.html:34
+#, fuzzy
+msgid "Category fix rate for problems > 4 weeks old"
+msgstr "Oppdatering %s opprettet for problem %d, av %s"
+
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:480
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:506
#: templates/web/default/admin/council_contacts.html:56
#: templates/web/default/admin/council_edit.html:23
#: templates/web/default/admin/report_edit.html:26
msgid "Category:"
msgstr "Kategori:"
-#: bin/send-reports:173
+#: bin/send-reports:176
msgid "Category: %s"
msgstr "Kategori: %s"
@@ -431,10 +434,10 @@ msgstr "Kategori: %s"
#: templates/web/default/auth/change_password.html:3
#: templates/web/default/auth/change_password.html:35
msgid "Change Password"
-msgstr ""
+msgstr "Bytt passord"
-#: templates/web/default/around/display_location.html:111
-#: templates/web/default/around/display_location.html:113
+#: templates/web/default/around/display_location.html:105
+#: templates/web/default/around/display_location.html:107
msgid "Closest nearby problems <small>(within&nbsp;%skm)</small>"
msgstr "De nærmeste sakene <small>(innenfor&nbsp;%skm)</small>"
@@ -462,9 +465,8 @@ msgid "Confirm"
msgstr "Bekreftet"
#: templates/web/default/auth/token.html:1
-#, fuzzy
msgid "Confirm account"
-msgstr "Bekreftelse"
+msgstr "Bekreft konto"
#: templates/web/default/questionnaire/creator_fixed.html:1
#: templates/web/default/tokens/confirm_problem.html:1
@@ -488,10 +490,14 @@ msgstr "Bekreftet"
msgid "Confirmed:"
msgstr "Bekreftet:"
-#: templates/web/default/footer.html:10 templates/web/fiksgatami/footer.html:9
+#: templates/web/fiksgatami/footer.html:9
msgid "Contact"
msgstr "Kontakt"
+#: templates/web/default/footer.html:18
+msgid "Contact FixMyStreet"
+msgstr "Kontakt FiksGataMi"
+
#: templates/web/default/contact/index.html:1
#: templates/web/default/contact/index.html:2
#: templates/web/default/contact/submit.html:1
@@ -507,7 +513,7 @@ msgstr "Kontakt prosjektgruppen"
msgid "Council"
msgstr "Administrasjon"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:596
+#: perllib/FixMyStreet/App/Controller/Admin.pm:612
#: templates/web/default/admin/council_list.html:1
msgid "Council contacts"
msgstr "Administrasjonskontakter"
@@ -522,9 +528,8 @@ msgid "Councils"
msgstr "Administrasjoner"
#: templates/web/default/email_sent.html:1
-#, fuzzy
msgid "Create a report"
-msgstr "Lag kategori"
+msgstr "Lag en rapport"
#: templates/web/default/admin/council_contacts.html:80
msgid "Create category"
@@ -552,7 +557,7 @@ msgid "Deleted"
msgstr "Slettet"
#: templates/web/default/admin/report_edit.html:14
-#: templates/web/default/report/new/fill_in_details.html:100
+#: templates/web/default/report/new/fill_in_details.html:99
msgid "Details:"
msgstr "Detaljer:"
@@ -560,6 +565,10 @@ msgstr "Detaljer:"
msgid "Diligency prize league table"
msgstr "Hvem har endret kontaktlista"
+#: templates/web/default/auth/general.html:32
+msgid "Do you have a FixMyStreet password?"
+msgstr "Har du et FiksGataMi-passord?"
+
#: templates/web/default/questionnaire/index.html:72
msgid "Don&rsquo;t know"
msgstr "Vet ikke"
@@ -585,11 +594,10 @@ msgstr "Oppdatert av"
#: templates/web/default/admin/council_edit.html:42
#: templates/web/default/admin/list_updates.html:8
#: templates/web/default/admin/search_reports.html:15
-#: templates/web/default/report/display.html:95
msgid "Email"
msgstr "Epost"
-#: templates/web/default/around/display_location.html:77
+#: templates/web/default/around/display_location.html:71
msgid "Email me new local problems"
msgstr "Send meg epost om lokale problemer"
@@ -597,30 +605,24 @@ msgstr "Send meg epost om lokale problemer"
msgid "Email me updates"
msgstr "Send meg oppdateringer"
-#: templates/web/default/auth/general.html:47
-msgid "Email the details I need to the address I entered above"
-msgstr ""
-
#: templates/web/default/admin/council_contacts.html:61
#: templates/web/default/admin/council_edit.html:26
#: templates/web/default/admin/report_edit.html:28
#: templates/web/default/admin/update_edit.html:24
#: templates/web/default/alert/updates.html:13
-#: templates/web/default/auth/general.html:29
#: templates/web/default/report/display.html:46
-#: templates/web/default/report/new/fill_in_details.html:153
msgid "Email:"
msgstr "Epost:"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:464
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:465
msgid "Empty flat or maisonette"
-msgstr ""
+msgstr "Tom leilighet"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:463
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:464
msgid "Empty house or bungalow"
msgstr "Tomt hus eller bungalow"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:466
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:467
msgid "Empty office or other commercial"
msgstr "Tomt kontor eller forretningsbygg"
@@ -628,31 +630,37 @@ msgstr "Tomt kontor eller forretningsbygg"
msgid "Empty property details form"
msgstr "Tom eiendom detaljskjema"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:467
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:468
msgid "Empty pub or bar"
msgstr "Tom pub eller bar"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:468
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:469
msgid "Empty public building - school, hospital, etc."
msgstr "Tom offentlig bygning - skole, sykehos, etc."
#: templates/web/default/around/around_index.html:10
#: templates/web/default/around/around_index.html:13
-#: templates/web/default/index.html:38 templates/web/default/index.html:41
+#: templates/web/default/index.html:24 templates/web/default/index.html:27
msgid "Enter a nearby GB postcode, or street name and area"
msgstr "Skriv inn GB-postnummer i nærheten, eller veinavn og sted"
-#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:24
+#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:27
msgid "Enter a nearby postcode, or street name and area"
msgstr "Skriv inn postnummer i nærheten, eller veinavn og sted"
-#: templates/web/default/index.html:59
+#: templates/web/default/auth/general.html:64
+#: templates/web/default/report/display.html:167
+#: templates/web/default/report/new/fill_in_details.html:182
+msgid "Enter a new password:"
+msgstr "Skriv inn et nytt passord:"
+
+#: templates/web/default/index.html:45
msgid "Enter details of the problem"
msgstr "Legg inn detaljer om problemet"
#: templates/web/default/auth/token.html:5
-#: templates/web/default/questionnaire/error.html:1
-#: templates/web/default/questionnaire/error.html:3
+#: templates/web/default/errors/generic.html:1
+#: templates/web/default/errors/generic.html:3
#: templates/web/default/tokens/abuse.html:1
#: templates/web/default/tokens/abuse.html:3
#: templates/web/default/tokens/error.html:1
@@ -663,7 +671,7 @@ msgstr "Feil"
#: templates/web/default/admin/council_contacts.html:9
#: templates/web/default/admin/council_edit.html:18
msgid "Example postcode %s"
-msgstr ""
+msgstr "Eksempel-postnummer %s"
#: templates/web/default/contact/submit.html:15
#, fuzzy
@@ -678,7 +686,7 @@ msgstr ""
msgid "First time"
msgstr "Første gang"
-#: templates/web/default/header.html:16
+#: templates/web/default/header.html:20
#: templates/web/fiksgatami/header.html:14
msgid "Fix<span id=\"my\">My</span>Street"
msgstr "Fiks<span id=\"my\">Gata</span>Mi"
@@ -721,18 +729,27 @@ msgstr ""
"administrasjoner, problemer som gjelder flere administrasjoner blir sendt "
"til alle de det gjelder."
-#: templates/web/default/front_stats.html:7
+#: templates/web/default/front/stats.html:7
msgid "FixMyStreet updates"
msgstr "Fiksgatami-oppdateringer"
+#: templates/web/default/admin/index.html:36
#: templates/web/default/admin/report_edit.html:22
msgid "Fixed"
msgstr "Løst"
+#: templates/web/default/my/my.html:27
+msgid "Fixed reports"
+msgstr "Fiksede rapporter"
+
#: templates/web/default/admin/search_reports.html:48
msgid "Fixed:"
msgstr "Løst:"
+#: templates/web/default/reports/council.html:23
+msgid "Follow a ward link to view only reports within that ward."
+msgstr "Følg en bydelslenke for å kun se rapporter innenfor den bydelen."
+
#: templates/web/default/admin/report_edit.html:16
msgid "For council(s):"
msgstr "For administrasjon(er):"
@@ -748,18 +765,13 @@ msgstr "Ofte spurte spørsmål"
msgid "Further information about our work on empty homes."
msgstr ""
-#: templates/web/default/index.html:26
-#, fuzzy
-msgid "Get FixMyStreet on your iPhone"
-msgstr "Fiksgatami-administrasjon"
-
#: templates/web/default/alert/list.html:112
msgid "Give me an RSS feed"
msgstr "Gi meg en RSS-strøm"
#: templates/web/default/alert/index.html:24
#: templates/web/default/around/around_index.html:17
-#: templates/web/default/index.html:47
+#: templates/web/default/index.html:33
msgid "Go"
msgstr "Fortsett"
@@ -767,7 +779,7 @@ msgstr "Fortsett"
msgid "Going to send questionnaire?"
msgstr "Skal det sendes spørreskjema?"
-#: templates/web/default/admin/index.html:23
+#: templates/web/default/admin/index.html:24
msgid "Graph of problem creation by status over time"
msgstr "Graf over problemoppretting fordelt på status over tid"
@@ -788,7 +800,8 @@ msgid ""
msgstr ""
"Har du sendt en sak til en administrasjon før, eller er dette første gangen?"
-#: templates/web/default/footer.html:9 templates/web/emptyhomes/header.html:33
+#: templates/web/default/footer.html:10
+#: templates/web/emptyhomes/header.html:33
#: templates/web/fiksgatami/footer.html:8
msgid "Help"
msgstr "Hjelp"
@@ -802,11 +815,11 @@ msgstr "Her er typene lokale problemvarsler for &lsquo;%s&rsquo;."
msgid "Hidden"
msgstr "Gjemt"
-#: templates/web/default/around/display_location.html:54
+#: templates/web/default/around/display_location.html:52
msgid "Hide pins"
msgstr "Gjem nåler"
-#: templates/web/default/around/display_location.html:59
+#: templates/web/default/around/display_location.html:57
msgid "Hide stale reports"
msgstr "Gjem utdaterte rapporter"
@@ -814,19 +827,19 @@ msgstr "Gjem utdaterte rapporter"
msgid "History"
msgstr "Historie"
-#: templates/web/default/index.html:54
+#: templates/web/default/index.html:40
msgid "How to report a problem"
msgstr "Hvordan rapportere et problem"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:514
+#: perllib/FixMyStreet/App/Controller/Admin.pm:530
msgid "I am afraid you cannot confirm unconfirmed reports."
msgstr "Jeg er redd du ikke kan bekrefte ubekreftede rapporter."
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:96
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:89
msgid "I'm afraid we couldn't locate your problem in the database.\n"
msgstr "Jeg er redd vi ikke klarte å finne ditt problem i databasen.\n"
-#: perllib/FixMyStreet/App/Controller/Tokens.pm:161
+#: perllib/FixMyStreet/App/Controller/Tokens.pm:173
msgid ""
"I'm afraid we couldn't validate that token. If you've copied the URL from an "
"email, please check that you copied it exactly.\n"
@@ -860,7 +873,8 @@ msgstr ""
"inn din rapport, slik at vi kan vise administrasjonen aktiviteten i deres "
"område."
-#: templates/web/default/email_sent.html:28
+#: templates/web/default/auth/token.html:23
+#: templates/web/default/email_sent.html:24
msgid ""
"If you use web-based email or have 'junk mail' filters, you may wish to "
"check your bulk/spam mail folders: sometimes, our messages are marked that "
@@ -882,11 +896,11 @@ msgstr ""
msgid "Illegal ID"
msgstr "Ugyldig ID"
-#: perllib/FixMyStreet/App/Controller/Alert.pm:105
+#: perllib/FixMyStreet/App/Controller/Alert.pm:102
msgid "Illegal feed selection"
msgstr "Ugyldig valg av feed"
-#: templates/web/default/around/display_location.html:61
+#: templates/web/default/around/display_location.html:59
msgid "Include stale reports"
msgstr "Inkludert utdaterte rapporter"
@@ -903,6 +917,12 @@ msgid ""
"your concerns about this property to the council is a valuable first step."
msgstr ""
+#: templates/web/default/auth/general.html:44
+#: templates/web/default/report/display.html:149
+#: templates/web/default/report/new/fill_in_details.html:164
+msgid "Keep me signed in on this computer"
+msgstr ""
+
#: templates/web/default/admin/council_contacts.html:23
msgid "Last editor"
msgstr "Sist redigert av"
@@ -916,9 +936,8 @@ msgid "Last&nbsp;update:"
msgstr "Last&nbsp;oppdatering:"
#: templates/web/default/admin/council_contacts.html:11
-#, fuzzy
msgid "List all reported problems"
-msgstr " List alle rapporterte problemer"
+msgstr "List alle rapporterte problemer"
#: templates/web/default/alert/choose.html:1
#: templates/web/default/alert/choose.html:3
@@ -940,28 +959,15 @@ msgstr "Lokal RSS-strøm og epostvarsel"
msgid "Local RSS feeds and email alerts for ‘%s’"
msgstr "Lokal RSS-strøm og epostvarsel"
-#: templates/web/default/footer.html:8 templates/web/emptyhomes/header.html:32
+#: templates/web/default/footer.html:9 templates/web/emptyhomes/header.html:32
#: templates/web/fiksgatami/footer.html:7
msgid "Local alerts"
msgstr "Lokale varsler"
-#: templates/web/default/index.html:58
+#: templates/web/default/index.html:44
msgid "Locate the problem on a map of the area"
msgstr "Lokaliser problemet på kartet over området"
-#: templates/web/default/auth/general.html:43
-msgid "Log me in"
-msgstr ""
-
-#: templates/web/default/auth/general.html:1
-#: templates/web/default/auth/general.html:3
-msgid "Login or create an account"
-msgstr ""
-
-#: templates/web/default/auth/logout.html:1
-msgid "Logout"
-msgstr ""
-
#: perllib/FixMyStreet/Map/OSM.pm:43
msgid ""
"Map &copy; <a id=\"osm_link\" href=\"http://www.openstreetmap.org/"
@@ -973,8 +979,6 @@ msgstr ""
"licenses/by-sa/2.0/\">CC-BY-SA</a>"
#: perllib/FixMyStreet/Map/OSM/StreetView.pm:27
-#: perllib/FixMyStreet/Map/Tilma/OL/StreetView.pm:21
-#: perllib/FixMyStreet/Map/Tilma/Original/StreetView.pm:21
msgid ""
"Map contains Ordnance Survey data &copy; Crown copyright and database right "
"2010."
@@ -982,10 +986,12 @@ msgstr ""
"Kartet inneholder data fra Ordnance Survey &copy; Crown copyright og "
"databaserettigheter 2010."
-#: perllib/FixMyStreet/Map/FMS.pm:27
+#: perllib/FixMyStreet/Map/FMS.pm:24
+#, fuzzy
msgid ""
"Map contains Ordnance Survey data &copy; Crown copyright and database right "
-"2010. Microsoft"
+"2010.<br>&copy; 2011 <a href=\"http://www.bing.com/maps/\">Microsoft</a>. "
+"&copy; AND, Navteq, Ordnance Survey."
msgstr ""
"Kartet inneholder data fra Ordnance Survey &copy; Crown copyright og "
"databaserettigheter 2010. Microsoft"
@@ -998,11 +1004,6 @@ msgstr "Melding:"
msgid "More problems nearby"
msgstr "Flere saker i nærheten"
-#: templates/web/default/my/my.html:1
-#, fuzzy
-msgid "My Reports"
-msgstr "Alle rapporter"
-
#: templates/web/default/admin/list_updates.html:7
#: templates/web/default/admin/search_reports.html:14
#: templates/web/default/reports/index.html:10
@@ -1013,8 +1014,6 @@ msgstr "Navn"
#: templates/web/default/admin/report_edit.html:27
#: templates/web/default/admin/update_edit.html:23
-#: templates/web/default/report/display.html:81
-#: templates/web/default/report/new/fill_in_details.html:130
msgid "Name:"
msgstr "Navn:"
@@ -1022,11 +1021,29 @@ msgstr "Navn:"
msgid "Navigation"
msgstr "Navigasjon"
-#: templates/web/default/email_sent.html:24
-msgid "Nearly Done! Now check your email..."
+#: perllib/FixMyStreet/Geocode/OSM.pm:100
+msgid ""
+"Nearest named road to the pin placed on the map (automatically generated "
+"using OpenStreetMap): %s%s"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:289
+#: perllib/FixMyStreet/Cobrand/Default.pm:570
+msgid ""
+"Nearest postcode to the pin placed on the map (automatically generated): %s "
+"(%sm away)"
+msgstr ""
+
+#: perllib/FixMyStreet/Cobrand/Default.pm:558
+msgid ""
+"Nearest road to the pin placed on the map (automatically generated by Bing "
+"Maps): %s"
+msgstr ""
+
+#: templates/web/default/email_sent.html:20
+msgid "Nearly Done! Now check your email..."
+msgstr "Nesten ferdig! Nå må du sjekke eposten din..."
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:299
msgid "New category contact added"
msgstr "Ny kategorikontakt lagt til"
@@ -1038,8 +1055,8 @@ msgstr "Nye lokale problemer på FiksGataMi"
msgid "New local reports on reportemptyhomes.com"
msgstr "Nye lokale rapporter på reportemptyhomes.com"
-#: templates/web/default/reports/council.html:43
-#: templates/web/default/reports/council.html:44
+#: templates/web/default/reports/council.html:92
+#: templates/web/default/reports/council.html:93
#: templates/web/default/reports/index.html:11
#: templates/web/emptyhomes/reports/index.html:11
#: templates/web/fiksgatami/reports/index.html:10
@@ -1090,10 +1107,15 @@ msgstr "Nye rapporter til {{COUNCIL}} på reportemptyhomes.com"
msgid "New reports within {{NAME}}'s boundary on reportemptyhomes.com"
msgstr "Nye rapporter innenfor grensen til {{NAME}} på reportemptyhomes.com"
-#: templates/web/default/index.html:27
-msgid "New!"
+#: templates/web/default/admin/questionnaire.html:24
+msgid "New state"
msgstr ""
+#: templates/web/default/front/news.html:8
+#: templates/web/fiksgatami/front/news.html:9
+msgid "New!"
+msgstr "Ny!"
+
#: templates/web/default/admin/council_contacts.html:32
#: templates/web/default/admin/council_contacts.html:33
#: templates/web/default/admin/council_edit.html:4
@@ -1134,9 +1156,8 @@ msgid "None"
msgstr "Ingen"
#: templates/web/default/admin/questionnaire.html:6
-#, fuzzy
msgid "Not reported before"
-msgstr "Rapportert tidligere"
+msgstr "Ikke rapportert tidligere"
#: templates/web/default/report/_main.html:9
msgid "Not reported to council"
@@ -1149,22 +1170,29 @@ msgstr "Merk"
#: templates/web/default/admin/council_contacts.html:73
#: templates/web/default/admin/council_edit.html:31
-#, fuzzy
msgid "Note:"
-msgstr "Merk: "
+msgstr "Merk:"
+
+#: templates/web/default/report/new/fill_in_details.html:148
+msgid "Now to submit your report&hellip; do you have a FixMyStreet password?"
+msgstr ""
+
+#: templates/web/default/report/display.html:133
+msgid "Now to submit your update&hellip; do you have a FixMyStreet password?"
+msgstr ""
#: templates/web/default/report/display.html:33
#: templates/web/default/report/updates.html:19
msgid "Offensive? Unsuitable? Tell us"
msgstr "Støtende? Upassende? Gi oss beskjed"
-#: templates/web/default/reports/council.html:72
-#: templates/web/default/reports/council.html:73
+#: templates/web/default/reports/council.html:115
+#: templates/web/default/reports/council.html:116
msgid "Old fixed"
msgstr "Eldre saker som er løst"
-#: templates/web/default/reports/council.html:60
-#: templates/web/default/reports/council.html:61
+#: templates/web/default/reports/council.html:109
+#: templates/web/default/reports/council.html:110
msgid "Old problems, state unknown"
msgstr "Eldre saker med ukjent status"
@@ -1173,16 +1201,20 @@ msgstr "Eldre saker med ukjent status"
msgid "Old problems,<br>state unknown"
msgstr "Eldre saker, <br>ukjent status"
+#: templates/web/default/admin/questionnaire.html:24
+msgid "Old state"
+msgstr ""
+
#: templates/web/default/reports/index.html:15
#: templates/web/emptyhomes/reports/index.html:14
#: templates/web/fiksgatami/reports/index.html:14
msgid "Older fixed"
msgstr "Eldre løste"
-#: templates/web/default/reports/council.html:50
-#: templates/web/default/reports/council.html:52
-#: templates/web/default/reports/council.html:56
-#: templates/web/default/reports/council.html:57
+#: templates/web/default/reports/council.html:101
+#: templates/web/default/reports/council.html:105
+#: templates/web/default/reports/council.html:106
+#: templates/web/default/reports/council.html:99
#: templates/web/default/reports/index.html:12
#: templates/web/emptyhomes/reports/index.html:12
#: templates/web/fiksgatami/reports/index.html:11
@@ -1194,6 +1226,10 @@ msgstr "Eldre saker"
msgid "Open"
msgstr "Ã…pen"
+#: templates/web/default/my/my.html:22
+msgid "Open reports"
+msgstr "Ã…pne rapporter"
+
#: templates/web/default/alert/list.html:87
msgid "Or problems reported to:"
msgstr "Eller problemer meldt til:"
@@ -1206,10 +1242,10 @@ msgstr ""
"Eller du kan abonnere på varsel basert på bydel eller administrasjon du "
"hører inn under:"
-#: bin/send-reports:168 bin/send-reports:177
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:495
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:504
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:855
+#: bin/send-reports:171 bin/send-reports:180
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:496
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:505
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:869
#: perllib/FixMyStreet/DB/Result/Problem.pm:316
#: perllib/FixMyStreet/DB/Result/Problem.pm:326
#: perllib/FixMyStreet/DB/Result/Problem.pm:336
@@ -1220,25 +1256,24 @@ msgstr "Annet"
#: templates/web/default/errors/page_error_404_not_found.html:1
#: templates/web/default/errors/page_error_404_not_found.html:3
msgid "Page Not Found"
-msgstr ""
+msgstr "Fant ikke siden"
#: templates/web/default/admin/report_edit.html:22
msgid "Partial"
msgstr "Delvis"
-#: templates/web/default/auth/change_password.html:26
-#: templates/web/default/auth/general.html:33
+#: templates/web/default/auth/change_password.html:27
msgid "Password:"
-msgstr ""
+msgstr "Passord:"
#: bin/send-reports:68 templates/web/default/admin/report_edit.html:29
-#: templates/web/default/report/new/fill_in_details.html:158
+#: templates/web/default/report/new/fill_in_details.html:231
msgid "Phone:"
msgstr "Telefon:"
#: templates/web/default/questionnaire/index.html:97
-#: templates/web/default/report/display.html:125
-#: templates/web/default/report/new/fill_in_details.html:120
+#: templates/web/default/report/display.html:109
+#: templates/web/default/report/new/fill_in_details.html:119
msgid "Photo:"
msgstr "Bilde:"
@@ -1246,7 +1281,7 @@ msgstr "Bilde:"
msgid "Photos of recent nearby reports"
msgstr "Bilder av nye saker i nærheten"
-#: templates/web/default/index.html:76
+#: templates/web/default/index.html:63
msgid "Photos of recent reports"
msgstr "Bilder av nylig meldte saker"
@@ -1254,8 +1289,8 @@ msgstr "Bilder av nylig meldte saker"
msgid "Please be polite, concise and to the point."
msgstr "Vær høflig, poengtert og kortfattet."
-#: templates/web/default/auth/change_password.html:12
-#: templates/web/default/auth/change_password.html:17
+#: templates/web/default/auth/change_password.html:14
+#: templates/web/default/auth/change_password.html:19
msgid "Please check the passwords and try again"
msgstr ""
@@ -1270,9 +1305,9 @@ msgstr "Skriv din epost"
msgid "Please check your email address is correct"
msgstr "Skriv en gyldig epostadresse"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:639
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:659
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:675
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:652
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:671
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:688
#: perllib/FixMyStreet/DB/Result/Problem.pm:206
msgid "Please choose a category"
msgstr "Velg en kategori"
@@ -1302,12 +1337,12 @@ msgstr ""
"Ikke vær ufin &mdash; å kjefte på din administrasjon skader verdien av "
"tjenesten for alle brukerne."
-#: perllib/FixMyStreet/DB/Result/Comment.pm:108
+#: perllib/FixMyStreet/DB/Result/Comment.pm:111
msgid "Please enter a message"
msgstr "Legg til en melding"
-#: templates/web/default/auth/change_password.html:12
-#: templates/web/default/auth/change_password.html:15
+#: templates/web/default/auth/change_password.html:14
+#: templates/web/default/auth/change_password.html:17
#, fuzzy
msgid "Please enter a password"
msgstr "Legg til en melding"
@@ -1317,11 +1352,11 @@ msgstr "Legg til en melding"
msgid "Please enter a subject"
msgstr "Legg inn et tema"
-#: perllib/FixMyStreet/DB/Result/User.pm:91
+#: perllib/FixMyStreet/DB/Result/User.pm:92
msgid "Please enter a valid email"
msgstr "Legg til en gyldig epost"
-#: perllib/FixMyStreet/App/Controller/Alert.pm:123
+#: perllib/FixMyStreet/App/Controller/Alert.pm:345
#: perllib/FixMyStreet/App/Controller/Contact.pm:105
msgid "Please enter a valid email address"
msgstr "Legg inn din epost"
@@ -1331,24 +1366,24 @@ msgid "Please enter some details"
msgstr "Legg inn opplysninger om saken"
#: perllib/FixMyStreet/App/Controller/Contact.pm:94
-#: perllib/FixMyStreet/DB/Result/User.pm:88
+#: perllib/FixMyStreet/DB/Result/User.pm:89
#: templates/web/default/auth/general.html:13
#: templates/web/default/auth/general.html:8
msgid "Please enter your email"
msgstr "Legg inn din epost"
#: perllib/FixMyStreet/DB/Result/Problem.pm:199
-#: perllib/FixMyStreet/DB/Result/User.pm:83
msgid ""
"Please enter your full name, councils need this information - if you do not "
"wish your name to be shown on the site, untick the box"
msgstr ""
"Legg inn ditt fulle navn, administrasjoner som mottar saken trenger dette - "
-"hvis du ikke ønsker at ditt navn skal vises, kryss av her"
+"hvis du ikke ønsker at ditt navn skal vises, fjern haken under"
#: perllib/FixMyStreet/App/Controller/Contact.pm:93
+#: perllib/FixMyStreet/DB/Result/Comment.pm:108
#: perllib/FixMyStreet/DB/Result/Problem.pm:192
-#: perllib/FixMyStreet/DB/Result/User.pm:76
+#: perllib/FixMyStreet/DB/Result/User.pm:85
msgid "Please enter your name"
msgstr "Legg inn ditt navn"
@@ -1387,7 +1422,7 @@ msgstr ""
"det har\n"
"vært der, en beskrivelse (og et bilde av problemet hvis du har et), etc."
-#: templates/web/default/report/new/fill_in_details.html:49
+#: templates/web/default/report/new/fill_in_details.html:48
#, fuzzy
msgid ""
"Please fill in the form below with details of the problem, and describe the "
@@ -1396,7 +1431,7 @@ msgstr ""
"Vennligst fyll inn skjemaet under med detaljene om problemet,\n"
"og beskriv stedet så nøyaktig som mulig i boksen for detaljer."
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:242
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:235
msgid "Please indicate whether you'd like to receive another questionnaire"
msgstr "Vennligst indiker om du ønsker å motta et annet spørreskjema"
@@ -1411,43 +1446,45 @@ msgstr ""
"informasjon vil kun bli brukt i henhold til våre <a href=\"/faq#privacy"
"\">personvernpolicy</a>"
-#: templates/web/default/report/new/fill_in_details.html:34
+#: templates/web/default/report/new/fill_in_details.html:33
msgid ""
"Please note your report has <strong>not yet been sent</strong>. Choose a "
"category and add further information below, then submit."
msgstr ""
+"Merk at din rapport <strong>ennå ikke er sendt</strong. Velg en kategori og "
+"legg til mer informasjon under før du sender inn."
#: templates/web/default/report/new/notes.html:1
msgid "Please note:"
msgstr "Vennligst merk deg:"
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:245
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:238
msgid "Please provide some explanation as to why you're reopening this report"
msgstr ""
"Vennligst bidra med en forklaring for hvorfor du åpner denne rapporten på "
"nytt"
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:252
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:245
msgid "Please provide some text as well as a photo"
msgstr "Vennligst bidra med litt tekst i tilegg til et bilde"
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:122
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:238
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:115
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:231
msgid ""
"Please say whether you've ever reported a problem to your council before"
msgstr ""
"Gi oss informasjon om du har rapportert en sak til din administrasjon "
"tidligere"
-#: perllib/FixMyStreet/App/Controller/Alert.pm:85
+#: perllib/FixMyStreet/App/Controller/Alert.pm:82
msgid "Please select the feed you want"
msgstr "Velg den feed du ønsker"
-#: perllib/FixMyStreet/App/Controller/Alert.pm:125
+#: perllib/FixMyStreet/App/Controller/Alert.pm:120
msgid "Please select the type of alert you want"
msgstr "Velg vilken type varsel du ønsker"
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:234
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:227
msgid "Please state whether or not the problem has been fixed"
msgstr "Vennligs oppgi om dette problemet er blitt fikset eller ikke"
@@ -1455,7 +1492,7 @@ msgstr "Vennligs oppgi om dette problemet er blitt fikset eller ikke"
msgid "Please take a look at the updates that have been left."
msgstr "Vær sa snill å ta en titt på oppdateringene som har blitt igjen."
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:728
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:740
msgid "Please upload a JPEG image only"
msgstr "Vennligst last kun opp et JPEG-bilde"
@@ -1464,7 +1501,9 @@ msgid "Please write a message"
msgstr "Skriv inn en melding"
#: templates/web/default/contact/index.html:93
-#: templates/web/default/report/display.html:138
+#: templates/web/default/report/display.html:119
+#: templates/web/default/report/display.html:154
+#: templates/web/default/report/display.html:175
msgid "Post"
msgstr "Send inn"
@@ -1476,9 +1515,9 @@ msgstr "Publisert anonymt %s"
msgid "Posted by %s at %s"
msgstr "Sendt inn av %s %s"
-#: perllib/FixMyStreet/Map/Tilma/Original.pm:90
-#: templates/web/default/maps/openlayers.html:81
-#: templates/web/default/maps/tilma/original.html:62
+#: perllib/FixMyStreet/Map/Tilma/Original.pm:92
+#: templates/web/default/maps/openlayers.html:89
+#: templates/web/default/maps/tilma/original.html:63
msgid "Problem"
msgstr "Problem"
@@ -1494,15 +1533,19 @@ msgstr "Problem %s bekreftet"
msgid "Problem %s sent to council %s"
msgstr "Problem %s sendt til administrasjon %s"
-#: templates/web/default/admin/index.html:27
+#: templates/web/default/admin/index.html:28
msgid "Problem breakdown by state"
msgstr "Tilstandsfordeling for problemer"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:743
+#: perllib/FixMyStreet/App/Controller/Admin.pm:759
msgid "Problem marked as open."
msgstr "Problem markert som åpent."
-#: templates/web/default/around/display_location.html:73
+#: templates/web/default/admin/questionnaire.html:21
+msgid "Problem state change based on survey results"
+msgstr ""
+
+#: templates/web/default/around/display_location.html:67
msgid "Problems in this area"
msgstr "Saker i dette område"
@@ -1515,19 +1558,19 @@ msgstr "Problemer nylig rapportert fikset på FiksGataMi"
msgid "Problems within %.1fkm of this location"
msgstr "Saker innen %skm av dette punktet"
-#: perllib/FixMyStreet/Cobrand/Default.pm:719
-#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:161
-#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:127
+#: perllib/FixMyStreet/Cobrand/Default.pm:792
+#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:162
+#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:172
msgid "Problems within %s"
msgstr "Problemer innenfor %s"
-#: perllib/FixMyStreet/Cobrand/Default.pm:728
-#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:169
+#: perllib/FixMyStreet/Cobrand/Default.pm:801
+#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:170
msgid "Problems within %s ward"
msgstr "Problemer innenfor %s avdeling/etat"
-#: templates/web/default/reports/council.html:11
-#: templates/web/default/reports/council.html:14
+#: templates/web/default/reports/council.html:0
+#: templates/web/default/reports/council.html:16
msgid "Problems within %s, FixMyStreet"
msgstr "Problemer innenfor %s, Fiksgatami"
@@ -1539,7 +1582,7 @@ msgstr "Problemer innenfor grensene av:"
msgid "Properties recently reported as put back to use on reportemptyhomes.com"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:470
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:471
msgid "Property type:"
msgstr "Type egenskap:"
@@ -1547,6 +1590,15 @@ msgstr "Type egenskap:"
msgid "Provide an update"
msgstr "Bidra med oppdatering"
+#: templates/web/default/report/display.html:172
+#: templates/web/default/report/new/fill_in_details.html:187
+msgid ""
+"Providing a password is optional, but doing so will allow you to more easily "
+"report problems, leave updates and manage your reports."
+msgstr ""
+
+#: templates/web/default/questionnaire/completed.html:1
+#: templates/web/default/questionnaire/completed.html:2
#: templates/web/default/questionnaire/index.html:0
#: templates/web/default/questionnaire/index.html:14
#: templates/web/default/questionnaire/index.html:4
@@ -1561,7 +1613,7 @@ msgstr "Spørreskjema %d fylt inn for problem %d, %s til %s"
msgid "Questionnaire %d sent for problem %d"
msgstr "Spørreskjema %d sendt for problem %d"
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:188
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:181
msgid "Questionnaire filled in by problem reporter"
msgstr "Spørreskjema fylt inn av feilrapportøren"
@@ -1569,33 +1621,33 @@ msgstr "Spørreskjema fylt inn av feilrapportøren"
#: templates/web/default/around/display_location.html:1
#: templates/web/default/around/display_location.html:3
#: templates/web/default/report/display.html:55
-#: templates/web/default/reports/council.html:17
+#: templates/web/default/reports/council.html:61
msgid "RSS feed"
msgstr "RSS-strøm"
-#: perllib/FixMyStreet/Cobrand/Default.pm:757
-#: perllib/FixMyStreet/Cobrand/Default.pm:771
+#: perllib/FixMyStreet/Cobrand/Default.pm:830
+#: perllib/FixMyStreet/Cobrand/Default.pm:844
#, fuzzy
msgid "RSS feed for %s"
msgstr "RSS-strøm fra %s"
-#: perllib/FixMyStreet/Cobrand/Default.pm:764
-#: perllib/FixMyStreet/Cobrand/Default.pm:778
+#: perllib/FixMyStreet/Cobrand/Default.pm:837
+#: perllib/FixMyStreet/Cobrand/Default.pm:851
#, fuzzy
msgid "RSS feed for %s ward, %s"
msgstr "RSS-strøm fra %s"
-#: perllib/FixMyStreet/Cobrand/Default.pm:787
-#: perllib/FixMyStreet/Cobrand/Default.pm:801
-#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:143
-#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:151
-#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:161
-#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:169
+#: perllib/FixMyStreet/Cobrand/Default.pm:860
+#: perllib/FixMyStreet/Cobrand/Default.pm:874
+#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:188
+#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:196
+#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:206
+#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:214
msgid "RSS feed of %s"
msgstr "RSS-strøm fra %s"
-#: perllib/FixMyStreet/Cobrand/Default.pm:793
-#: perllib/FixMyStreet/Cobrand/Default.pm:807
+#: perllib/FixMyStreet/Cobrand/Default.pm:866
+#: perllib/FixMyStreet/Cobrand/Default.pm:880
#, fuzzy
msgid "RSS feed of %s, within %s ward"
msgstr "RSS-strøm for problemer i denne %s"
@@ -1604,19 +1656,19 @@ msgstr "RSS-strøm for problemer i denne %s"
msgid "RSS feed of nearby problems"
msgstr "RSS-strøm med problemer i nærheten"
-#: templates/web/default/reports/council.html:17
+#: templates/web/default/reports/council.html:61
msgid "RSS feed of problems in this %s"
msgstr "RSS-strøm for problemer i denne %s"
-#: perllib/FixMyStreet/Cobrand/Default.pm:720
-#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:162
-#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:126
+#: perllib/FixMyStreet/Cobrand/Default.pm:793
+#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:163
+#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:171
#, fuzzy
msgid "RSS feed of problems within %s"
msgstr "RSS-strøm for problemer i denne %s"
-#: perllib/FixMyStreet/Cobrand/Default.pm:727
-#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:168
+#: perllib/FixMyStreet/Cobrand/Default.pm:800
+#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:169
#, fuzzy
msgid "RSS feed of problems within %s ward"
msgstr "RSS-strøm for problemer i denne %s"
@@ -1636,19 +1688,19 @@ msgid "Receive email when updates are left on this problem."
msgstr "Motta epost når det er uppdateringer på denne saken"
#: templates/web/default/around/display_location.html:0
-#: templates/web/default/around/display_location.html:35
+#: templates/web/default/around/display_location.html:34
msgid "Recent local problems, FixMyStreet"
msgstr "Nylig lokalt problem, FiksGataMi."
-#: templates/web/default/reports/council.html:68
-#: templates/web/default/reports/council.html:69
+#: templates/web/default/reports/council.html:87
+#: templates/web/default/reports/council.html:88
#: templates/web/default/reports/index.html:14
#: templates/web/emptyhomes/reports/index.html:13
#: templates/web/fiksgatami/reports/index.html:13
msgid "Recently fixed"
msgstr "Nylig løste saker"
-#: templates/web/default/index.html:85
+#: templates/web/default/index.html:72
msgid "Recently reported problems"
msgstr "Nylig meldte problemer"
@@ -1686,6 +1738,14 @@ msgstr "Rapport på %s"
msgid "Report, view, or discuss local problems"
msgstr "Rapporter, finn eller diskuter lokale problemer"
+#: templates/web/default/my/my.html:69
+msgid "Reported %s"
+msgstr "Rapportert %s"
+
+#: templates/web/default/my/my.html:67
+msgid "Reported %s, to %s"
+msgstr "Rapportert %s, til %s"
+
#: perllib/FixMyStreet/DB/Result/Problem.pm:331
#: templates/web/default/contact/index.html:45
msgid "Reported anonymously at %s"
@@ -1711,7 +1771,7 @@ msgstr "Rapporter av %s av %s %s"
#: perllib/FixMyStreet/DB/Result/Problem.pm:319
msgid "Reported by %s in the %s category anonymously at %s"
-msgstr "Rapportert av %s i kategorien %s anonnymt %s"
+msgstr "Rapportert av %s i kategorien %s anonymt %s"
#: perllib/FixMyStreet/DB/Result/Problem.pm:339
msgid "Reported by %s in the %s category by %s at %s"
@@ -1727,12 +1787,12 @@ msgstr "Rapportert i kategorien %s av %s %s"
#: templates/web/default/around/around_index.html:1
#: templates/web/default/report/new/fill_in_details.html:0
+#: templates/web/default/report/new/fill_in_details.html:29
#: templates/web/default/report/new/fill_in_details.html:3
-#: templates/web/default/report/new/fill_in_details.html:30
msgid "Reporting a problem"
msgstr "Legger til en sak"
-#: templates/web/default/around/display_location.html:103
+#: templates/web/default/around/display_location.html:97
msgid "Reports on and around the map"
msgstr "Saker i og rundt kartet"
@@ -1740,11 +1800,21 @@ msgstr "Saker i og rundt kartet"
msgid "Resend report"
msgstr "Send rapport på nytt"
+#: perllib/FixMyStreet/Geocode/OSM.pm:107
+msgid ""
+"Road operator for this named road (derived from road reference number and "
+"type): %s"
+msgstr ""
+
+#: perllib/FixMyStreet/Geocode/OSM.pm:104
+msgid "Road operator for this named road (from OpenStreetMap): %s"
+msgstr ""
+
#: templates/web/default/admin/council_edit.html:35
msgid "Save changes"
msgstr "Lagre endringer"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:597
+#: perllib/FixMyStreet/App/Controller/Admin.pm:613
#: templates/web/default/admin/search_reports.html:1
msgid "Search Reports"
msgstr "Søk i rapporter"
@@ -1762,7 +1832,7 @@ msgstr ""
"Velg hvilken type varsel du ønsker og klikk på knappen for en RSS-strøm, "
"eller skriv inn din epostadresse for å abonnere på et epostvarsel."
-#: perllib/FixMyStreet/DB/Result/Problem.pm:390
+#: perllib/FixMyStreet/DB/Result/Problem.pm:396
msgid "Sent to %s %s later"
msgstr "Sendt til %s %s senere"
@@ -1795,16 +1865,45 @@ msgid ""
" significant contribution to the supply of affordable homes in Wales."
msgstr ""
-#: templates/web/default/around/display_location.html:52
+#: templates/web/default/report/display.html:205
+#: templates/web/default/report/new/fill_in_details.html:226
+msgid "Show my name publicly"
+msgstr "Vis mitt navn offentlig"
+
+#: templates/web/default/around/display_location.html:50
msgid "Show pins"
msgstr "Vis nåler"
+#: templates/web/default/auth/general.html:3
+#: templates/web/default/auth/general.html:49
+msgid "Sign in"
+msgstr "Logg inn"
+
+#: templates/web/default/auth/general.html:74
+msgid "Sign in by email"
+msgstr ""
+
+#: templates/web/default/auth/general.html:1
+msgid "Sign in or create an account"
+msgstr ""
+
+#: templates/web/default/auth/sign_out.html:1
+#: templates/web/default/header.html:26
+#: templates/web/emptyhomes/header.html:46
+msgid "Sign out"
+msgstr "Logg ut"
+
+#: templates/web/default/header.html:25
+#: templates/web/emptyhomes/header.html:45
+msgid "Signed in as %s"
+msgstr "Logget inn som %s"
+
#: templates/web/default/alert/index.html:31
msgid "Some photos of recent reports"
msgstr "Noen bilder av nylig meldte saker"
#: perllib/FixMyStreet/App/View/Email.pm:32
-#: perllib/FixMyStreet/App/View/Web.pm:38
+#: perllib/FixMyStreet/App/View/Web.pm:41
msgid "Some text to localize"
msgstr ""
@@ -1812,32 +1911,32 @@ msgstr ""
msgid "Some unconfirmeds"
msgstr "Noen ubekreftede"
-#: perllib/FixMyStreet/Geocode.pm:171
+#: perllib/FixMyStreet/Cobrand/Default.pm:516
msgid ""
"Sorry, that appears to be a Crown dependency postcode, which we don't cover."
msgstr ""
"Beklager det ser ut til å være et \"Crown dependency\"-postnummer, som vi "
"ikke dekker."
-#: perllib/FixMyStreet/Geocode.pm:71
-msgid ""
-"Sorry, that location appears to be too general; please be more specific."
-msgstr ""
-"Beklager, den plasserigen ser ut til å være for generell. Forsøk å være mer "
-"spesifikk."
-
#: templates/web/default/tokens/abuse.html:5
msgid "Sorry, there has been an error confirming your problem."
msgstr "Beklager, det har oppstått problemer når vi under lagringen av saken"
-#: perllib/FixMyStreet/Geocode.pm:103 perllib/FixMyStreet/Geocode.pm:150
+#: perllib/FixMyStreet/Geocode.pm:27 perllib/FixMyStreet/Geocode/Bing.pm:51
+#: perllib/FixMyStreet/Geocode/Google.pm:68
msgid "Sorry, we could not find that location."
msgstr "Beklager, vi kunne ikke finne det stedet."
-#: perllib/FixMyStreet/Geocode.pm:148
+#: perllib/FixMyStreet/Geocode/Bing.pm:44
+#: perllib/FixMyStreet/Geocode/Google.pm:60
msgid "Sorry, we could not parse that location. Please try again."
msgstr "Beklager, vi kunne ikke tolke den posisjonen. Vennligst prøv på nytt."
+#: templates/web/default/footer.html:17
+#: templates/web/fiksgatami/footer.html:15
+msgid "Source code"
+msgstr "Kildekode"
+
#: templates/web/default/admin/list_updates.html:6
#: templates/web/default/admin/search_reports.html:21
msgid "State"
@@ -1850,12 +1949,14 @@ msgstr "Tilstand:"
#: templates/web/default/admin/report_edit.html:13
#: templates/web/default/contact/index.html:83
-#: templates/web/default/report/new/fill_in_details.html:91
+#: templates/web/default/report/new/fill_in_details.html:90
msgid "Subject:"
msgstr "Tema:"
#: templates/web/default/questionnaire/creator_fixed.html:19
-#: templates/web/default/report/new/fill_in_details.html:171
+#: templates/web/default/report/new/fill_in_details.html:131
+#: templates/web/default/report/new/fill_in_details.html:169
+#: templates/web/default/report/new/fill_in_details.html:190
msgid "Submit"
msgstr "Send inn"
@@ -1873,11 +1974,11 @@ msgstr "Lever spørreskjema"
msgid "Subscribe"
msgstr "Abonner"
-#: templates/web/default/alert/list.html:124
+#: templates/web/default/alert/list.html:128
msgid "Subscribe me to an email alert"
msgstr "Jeg ønsker å abonnere på epostvarsel"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:595
+#: perllib/FixMyStreet/App/Controller/Admin.pm:611
#: templates/web/default/admin/index.html:1
msgid "Summary"
msgstr "Oppsummering"
@@ -1888,10 +1989,10 @@ msgstr "Oppsummering"
msgid "Summary reports"
msgstr "Oppsummeringsrapporter"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:599
+#: perllib/FixMyStreet/App/Controller/Admin.pm:615
#: templates/web/default/admin/questionnaire.html:1
msgid "Survey Results"
-msgstr ""
+msgstr "Resultater fra spørreundersøkelsen"
#: templates/web/default/admin/list_updates.html:12
msgid "Text"
@@ -1976,7 +2077,7 @@ msgstr ""
"Takk, glad for å høre at problemet er fikset! Vi vil gjerne spørre deg om "
"du har rapportert et problem til en administrasjon tidligere?"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:737
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:749
msgid ""
"That image doesn't appear to have uploaded correctly (%s), please try again."
msgstr "Bildet ser ikke ut til å blitt lastet opp riktig (%s), prøv på nytt."
@@ -1989,15 +2090,16 @@ msgstr ""
"Det stedet dekkes ikke av noen administrasjon, kanskje det er til havs - "
"vennligst forsøk et mer spesifikt sted."
-#: perllib/FixMyStreet/Geocode.pm:81
+#: perllib/FixMyStreet/App/Controller/Location.pm:107
msgid "That location does not appear to be in Britain; please try again."
msgstr "Det stedet virker ikke å være i storbritannia. Vennligst prøv igjen."
-#: perllib/FixMyStreet/Geocode.pm:165
+#: perllib/FixMyStreet/Cobrand/Default.pm:509
+#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:73
msgid "That postcode was not recognised, sorry."
msgstr "Det postnummeret ble ikke gjenkjent, beklager."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:496
+#: perllib/FixMyStreet/App/Controller/Admin.pm:512
msgid "That problem will now be resent."
msgstr "Det problemet vil nå bli sendt på nytt."
@@ -2037,7 +2139,8 @@ msgid ""
" the UK."
msgstr ""
-#: templates/web/default/email_sent.html:26
+#: templates/web/default/auth/token.html:21
+#: templates/web/default/email_sent.html:22
msgid ""
"The confirmation email <strong>may</strong> take a few minutes to arrive "
"&mdash; <em>please</em> be patient."
@@ -2050,6 +2153,18 @@ msgid ""
msgstr ""
"Detaljene om ditt problem er tilgjengelig på høyre side av denne siden."
+#: perllib/FixMyStreet/App/Controller/Reports.pm:46
+#: perllib/FixMyStreet/App/Controller/Reports.pm:73
+msgid "The error was: %s"
+msgstr ""
+
+#: perllib/FixMyStreet/Geocode/OSM.pm:99
+msgid ""
+"The following information about the nearest road might be inaccurate or "
+"irrelevant, if the problem is close to several roads or close to a road "
+"without a name registered in OpenStreetMap."
+msgstr ""
+
#: db/alert_types.pl:19 db/alert_types.pl:23 db/alert_types.pl:27
#: db/alert_types.pl:31
msgid "The latest local problems reported by users"
@@ -2102,22 +2217,22 @@ msgstr ""
msgid "The latest reports within {{NAME}}'s boundary reported by users"
msgstr "De siste rapporter innenfor grensen til {{NAME}} rapportert av brukere"
-#: templates/web/default/auth/change_password.html:12
-#: templates/web/default/auth/change_password.html:16
+#: templates/web/default/auth/change_password.html:14
+#: templates/web/default/auth/change_password.html:18
msgid "The passwords do not match"
-msgstr ""
+msgstr "Passordene er ikke like"
#: templates/web/default/errors/page_error_404_not_found.html:10
#: templates/web/default/errors/page_error_404_not_found.html:12
msgid "The requested URL '%s' was not found on this server"
-msgstr ""
+msgstr "Den forespurte URL '%s' ble ikke funnet på denne tjeneren"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:477
-#: perllib/FixMyStreet/App/Controller/Admin.pm:647
-#: perllib/FixMyStreet/App/Controller/Admin.pm:686
-#: perllib/FixMyStreet/App/Controller/Admin.pm:771
+#: perllib/FixMyStreet/App/Controller/Admin.pm:493
+#: perllib/FixMyStreet/App/Controller/Admin.pm:663
+#: perllib/FixMyStreet/App/Controller/Admin.pm:702
+#: perllib/FixMyStreet/App/Controller/Admin.pm:787
msgid "The requested URL was not found on this server."
-msgstr ""
+msgstr "Den forespurte URL-en ble ikke funnet på denne tjeneren"
#: templates/web/default/alert/list.html:47
msgid "The simplest alert is our geographic one:"
@@ -2141,15 +2256,37 @@ msgstr ""
"Brukeren kunne ikke plassere problemet på et kart, men sjekk området rundt "
"stedet de skrev inn"
+#: perllib/FixMyStreet/App/Controller/Reports.pm:72
+#, fuzzy
+msgid ""
+"There was a problem showing the All Reports page. Please try again later."
+msgstr "Det var problemer med din rapport. Vennligst se under."
+
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:578
+#: perllib/FixMyStreet/App/Controller/Report/Update.pm:117
+#: templates/web/default/auth/general.html:23
+msgid ""
+"There was a problem with your email/password combination. Passwords and user "
+"accounts are a brand <strong>new</strong> service, so you probably do not "
+"have one yet &ndash; please fill in the right hand side of this form to get "
+"one."
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Alert.pm:354
+#, fuzzy
+msgid ""
+"There was a problem with your email/password combination. Please try again."
+msgstr "Det var problemer med din rapport. Vennligst se under."
+
#: perllib/FixMyStreet/App/Controller/Contact.pm:115
msgid "There were problems with your report. Please see below."
msgstr "Det var problemer med din rapport. Vennligst se under."
-#: perllib/FixMyStreet/App/Controller/Report/Update.pm:202
+#: perllib/FixMyStreet/App/Controller/Report/Update.pm:211
msgid "There were problems with your update. Please see below."
msgstr "Det var problemer med din oppdatering. Vennligst se under."
-#: bin/send-reports:178
+#: bin/send-reports:181
msgid ""
"This email has been sent to both councils covering the location of the "
"problem, as the user did not categorise it; please ignore it if you're not "
@@ -2158,22 +2295,20 @@ msgid ""
msgstr ""
"Denne eposten har blitt sendt til begge administrasjonene som dekker stedet "
"for problemet, da brukeren ikke kategoriserte det. Vær så snill å ignorere "
-"den hvis dere ikke er korrekt administrasjon for å håndtere denne skaen, "
+"den hvis dere ikke er korrekt administrasjon for å håndtere denne saken, "
"eller gi oss beskjed om hvilken kategori av problemer dette er så vi kan "
"legge det til i vårt system."
-#: bin/send-reports:181
-#, fuzzy
+#: bin/send-reports:184
msgid ""
"This email has been sent to several councils covering the location of the "
"problem, as the category selected is provided for all of them; please ignore "
"it if you're not the correct council to deal with the issue."
msgstr ""
-"Denne eposten har blitt sendt til begge administrasjonene som dekker stedet "
-"for problemet, da brukeren ikke kategoriserte det. Vær så snill å ignorere "
-"den hvis dere ikke er korrekt administrasjon for å håndtere denne skaen, "
-"eller gi oss beskjed om hvilken kategori av problemer dette er så vi kan "
-"legge det til i vårt system."
+"Denne eposten har blitt sendt til flere administrasjoner som dekker stedet "
+"for problemet, da den valgte kategorien er tilgjengelig for disse. Vær så "
+"snill å ignorere eposten hvis dere ikke er korrekt administrasjon for å "
+"håndtere denne saken."
#: templates/web/default/debug_header.html:3
msgid ""
@@ -2183,11 +2318,11 @@ msgstr ""
"Dette er et utviklernettsted. Ting kan knekke når som helst og databasen vil "
"bli periodisk slettet."
-#: templates/web/default/reports/council.html:20
+#: templates/web/default/reports/council.html:65
msgid "This is a summary of all reports for one %s."
msgstr "Dette er en oppsummering av alle rapporter for en %s."
-#: templates/web/default/reports/council.html:22
+#: templates/web/default/reports/council.html:67
msgid "This is a summary of all reports for this %s."
msgstr "Dette er en oppsummering for alle rapporter for denne %s."
@@ -2201,13 +2336,17 @@ msgstr ""
"Dette er en opplisting av alle sakene i denne tjenesten; velg en bestemt "
"administrasjon for å se saker som er sendt dit."
-#: perllib/FixMyStreet/Cobrand/Default.pm:840
+#: perllib/FixMyStreet/Cobrand/Default.pm:913
#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:117
-#: templates/web/default/report/display.html:111
+#: templates/web/default/report/display.html:96
msgid "This problem has been fixed"
msgstr "Denne saken er løst"
-#: perllib/FixMyStreet/Cobrand/Default.pm:836
+#: templates/web/default/report/display.html:91
+msgid "This problem has not been fixed"
+msgstr "Denne saken har ikke blitt løst"
+
+#: perllib/FixMyStreet/Cobrand/Default.pm:909
msgid "This problem is old and of unknown status."
msgstr "Denne saken er gammel og med ukjent status."
@@ -2225,7 +2364,7 @@ msgid ""
msgstr ""
"Denne nettsiden inneholder også et bilde av problemet, sendt inn av brukeren."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:598
+#: perllib/FixMyStreet/App/Controller/Admin.pm:614
#: templates/web/default/admin/timeline.html:1
msgid "Timeline"
msgstr "Tidslinje"
@@ -2241,7 +2380,7 @@ msgid ""
msgstr ""
"Du finner lokale saker ved å søke på ditt postnummer, veinavn eller sted:"
-#: templates/web/default/around/display_location.html:92
+#: templates/web/default/around/display_location.html:86
#, fuzzy
msgid ""
"To report a problem, simply <strong>click on the map</strong> at the correct "
@@ -2254,10 +2393,21 @@ msgstr ""
msgid "To view a map of the precise location of this issue"
msgstr "For å se en kart med den presise plasseringen for denne saken."
+#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/questionnaire.html:24
+#, fuzzy
+msgid "Total"
+msgstr "Tittel"
+
#: templates/web/default/maps/tilma/original.html:10
msgid "Unable to fetch the map tiles from the tile server."
msgstr "Klarte ikke hente kartfliser fra filtjeneren."
+#: perllib/FixMyStreet/App/Controller/Reports.pm:45
+#, fuzzy
+msgid "Unable to look up areas in MaPit. Please try again later."
+msgstr "Det var problemer med din rapport. Vennligst se under."
+
#: templates/web/default/admin/report_edit.html:22
#: templates/web/default/admin/update_edit.html:19
msgid "Unconfirmed"
@@ -2269,7 +2419,6 @@ msgid "Unknown alert type"
msgstr "Ukjent problem-Id"
#: perllib/FixMyStreet/App/Controller/Report.pm:70
-#: perllib/FixMyStreet/App/Controller/Report/Update.pm:24
msgid "Unknown problem ID"
msgstr "Ukjent problem-Id"
@@ -2283,11 +2432,10 @@ msgid "Update below added anonymously at %s"
msgstr "Rapportert anonymt %s"
#: templates/web/default/contact/index.html:23
-#, fuzzy
msgid "Update below added by %s at %s"
-msgstr "Tilstandsfordeling for oppdateringer"
+msgstr ""
-#: templates/web/default/admin/index.html:29
+#: templates/web/default/admin/index.html:30
msgid "Update breakdown by state"
msgstr "Tilstandsfordeling for oppdateringer"
@@ -2299,12 +2447,12 @@ msgstr "Oppdatert av {{name}}"
msgid "Update statuses"
msgstr "Oppdater tilstanden"
-#: templates/web/default/report/display.html:103
+#: templates/web/default/report/display.html:84
msgid "Update:"
msgstr "Oppdatering:"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:570
-#: perllib/FixMyStreet/App/Controller/Admin.pm:733
+#: perllib/FixMyStreet/App/Controller/Admin.pm:586
+#: perllib/FixMyStreet/App/Controller/Admin.pm:749
msgid "Updated!"
msgstr "Oppdatert!"
@@ -2322,8 +2470,8 @@ msgstr "Oppdateringer av {{title}}"
msgid "Updates to this problem, FixMyStreet"
msgstr "Oppdateringer til dette problemet, FiksGataMi"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:284
-#: perllib/FixMyStreet/App/Controller/Admin.pm:314
+#: perllib/FixMyStreet/App/Controller/Admin.pm:294
+#: perllib/FixMyStreet/App/Controller/Admin.pm:324
msgid "Values updated"
msgstr "Verdier oppdatert"
@@ -2337,7 +2485,7 @@ msgid "View your report"
msgstr "Vis din rapport"
#: templates/web/default/around/display_location.html:0
-#: templates/web/default/around/display_location.html:34
+#: templates/web/default/around/display_location.html:33
msgid "Viewing a location"
msgstr "Ser på et sted"
@@ -2345,7 +2493,11 @@ msgstr "Ser på et sted"
msgid "Viewing a problem"
msgstr "Ser på en sak"
-#: perllib/FixMyStreet/Geocode.pm:155 perllib/FixMyStreet/Geocode.pm:174
+#: templates/web/default/reports/council.html:22
+msgid "Wards of this council"
+msgstr ""
+
+#: perllib/FixMyStreet/Geocode/Bing.pm:46
msgid ""
"We do not cover Northern Ireland, I'm afraid, as our licence doesn't include "
"any maps for the region."
@@ -2353,6 +2505,11 @@ msgstr ""
"Vi dekker ikke nordlige Irland, er jeg redd, da vår lisens ikke inkluderer "
"noen kart for den regionen."
+#: perllib/FixMyStreet/Cobrand/Default.pm:520
+#: perllib/FixMyStreet/Geocode/Google.pm:63
+msgid "We do not currently cover Northern Ireland, I'm afraid."
+msgstr ""
+
#: templates/web/default/alert/choose.html:6
#: templates/web/default/around/around_index.html:33
msgid ""
@@ -2362,8 +2519,8 @@ msgstr ""
"Vi fant mer en ett treff for den plassen. Vi viser opp til ti treff, så "
"forsøk et annet søk hvis din plass ikke er her."
-#: perllib/FixMyStreet/App/Controller/Around.pm:229
-msgid "We had a problem with the supplied co-ordinates - outside the UK?"
+#: templates/web/default/auth/token.html:19
+msgid "We have sent you an email containing a link to confirm your account."
msgstr ""
#: templates/web/emptyhomes/tokens/confirm_problem.html:18
@@ -2376,7 +2533,7 @@ msgstr ""
"Det kan hende vi periodisk tar kontakt med deg for å spørre om noe har "
"endret seg med eiedommen du rapporterte."
-#: bin/send-reports:188
+#: bin/send-reports:191
msgid ""
"We realise this problem might be the responsibility of %s; however, we don't "
"currently have any contact details for them. If you know of an appropriate "
@@ -2386,7 +2543,7 @@ msgstr ""
"tiden kontaktinformasjon for dem. Hvis du vet om en egnet kontaktadresse, ta "
"kontakt med oss."
-#: templates/web/default/index.html:60
+#: templates/web/default/index.html:46
msgid "We send it to the council on your behalf"
msgstr "Vi sender til administrasjon på dine vegne"
@@ -2427,7 +2584,7 @@ msgstr "NÃ¥r redigert"
msgid "When sent"
msgstr "NÃ¥r sendt"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:465
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:466
msgid "Whole block of empty flats"
msgstr "Hel blokk med tomme leiligheter"
@@ -2477,29 +2634,18 @@ msgstr ""
"Du rapporterer at følgende oppdatering er støtende, inneholder personlig "
"informasjon, eller lignende:"
-#: templates/web/default/reports/council.html:35
+#: templates/web/default/reports/council.html:71
+#, fuzzy
msgid ""
-"You can <a href=\"%s\">see less detail</a> or go back and <a href=\"/reports"
-"\">show all councils</a>."
+"You can <a href=\"%s\">view all reports for the council</a> or <a href=\"/"
+"reports\">show all councils</a>."
msgstr ""
"Du kan <a href=\"%s\">se mindre detaljer</a> eller gå tilbake og <a href=\"/"
"reports\">se alle administrasjonene</a>."
-#: templates/web/default/reports/council.html:31
-msgid "You can <a href=\"%s\">see less detail</a>."
-msgstr "Du kan <a href=\"%s\">se mindre detaljer</a>."
-
-#: templates/web/default/reports/council.html:37
-msgid ""
-"You can <a href=\"%s\">see more details</a> or go back and <a href=\"/reports"
-"\">show all councils</a>."
-msgstr ""
-"Du kan <a href=\"%s\">se flere detaljer</a> eller gå tilbake og <a href=\"/"
-"reports\">se alle administrasjonene</a>."
-
-#: templates/web/default/reports/council.html:33
-msgid "You can <a href=\"%s\">see more details</a>."
-msgstr "Du kan <a href=\"%s\">se flere detaljer</a>."
+#: templates/web/default/reports/council.html:73
+msgid "You can <a href=\"/reports\">show all councils</a>."
+msgstr "Du kan <a href=\"/reports/\">se alle administrasjoner</a>."
#: templates/web/default/report/new/no_councils_text.html:14
#: templates/web/default/report/new/no_councils_text.html:3
@@ -2512,7 +2658,7 @@ msgstr ""
"Du kan hjelpe oss ved å finne en kontakt-epostadresse for lokale problemer i "
"%s, og sende den via epost til oss på <a href='mailto:%s'>%s</a>."
-#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:45
+#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:38
msgid ""
"You have already answered this questionnaire. If you have a question, please "
"<a href='%s'>get in touch</a>, or <a href='%s'>view your problem</a>.\n"
@@ -2522,18 +2668,27 @@ msgstr ""
"problem</a>.\n"
#: templates/web/default/questionnaire/index.html:94
-#: templates/web/default/report/display.html:122
-#: templates/web/default/report/new/fill_in_details.html:111
+#: templates/web/default/report/new/fill_in_details.html:110
msgid ""
"You have already attached a photo to this report, attaching another one will "
"replace it."
msgstr ""
+"Du har allerede lagt ved et bilde til denne rapporten. Ã… legge ved et annet "
+"vil bytte ut dette."
-#: templates/web/default/auth/logout.html:3
-msgid "You have been logged out"
+#: templates/web/default/report/display.html:106
+msgid ""
+"You have already attached a photo to this update, attaching another one will "
+"replace it."
msgstr ""
+"Du har allerede lagt ved et bilde til denne oppdateringen. Ã… legge ved et "
+"annet vil bytte ut dette."
-#: templates/web/default/report/new/fill_in_details.html:36
+#: templates/web/default/auth/sign_out.html:3
+msgid "You have been signed out"
+msgstr "Du er allerede logget ut"
+
+#: templates/web/default/report/new/fill_in_details.html:35
#, fuzzy
msgid ""
"You have located the problem at the point marked with a purple pin on the "
@@ -2570,7 +2725,15 @@ msgstr "Sletting av ditt varsel var vellykket."
msgid "You have successfully deleted your alert."
msgstr "Sletting av ditt varsel var vellykket."
-#: templates/web/default/email_sent.html:30
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:584
+#: perllib/FixMyStreet/App/Controller/Report/Update.pm:123
+#, fuzzy
+msgid ""
+"You have successfully signed in; please check and confirm your details are "
+"accurate:"
+msgstr "Du har nå lykkes med å bekrefte ditt varsel."
+
+#: templates/web/default/email_sent.html:26
msgid ""
"You must now click the link in the email we've just sent you &mdash; if you "
"do not, %s."
@@ -2580,19 +2743,40 @@ msgstr ""
msgid "You really want to resend?"
msgstr "Ønsker du virkelig å sende på nytt?"
+#: templates/web/default/my/my.html:0 templates/web/default/my/my.html:14
#: templates/web/default/my/my.html:3
-#, fuzzy
msgid "Your Reports"
-msgstr "Søk i rapporter"
+msgstr "Dine rapporter"
-#: templates/web/default/alert/list.html:120
+#: templates/web/default/auth/general.html:27
+msgid "Your email address:"
+msgstr "Din epostadresse:"
+
+#: templates/web/default/alert/list.html:122
+#: templates/web/default/report/display.html:128
+#: templates/web/default/report/new/fill_in_details.html:141
msgid "Your email:"
msgstr "Din epost"
+#: templates/web/default/auth/general.html:59
#: templates/web/default/contact/index.html:68
+#: templates/web/default/report/display.html:199
+#: templates/web/default/report/new/fill_in_details.html:219
msgid "Your name:"
msgstr "Ditt navn:"
+#: templates/web/default/auth/change_password.html:6
+msgid "Your password has been changed"
+msgstr "Ditt passord har blitt byttet"
+
+#: templates/web/default/footer.html:7
+msgid "Your reports"
+msgstr "Dine oppdateringer"
+
+#: templates/web/default/my/my.html:40
+msgid "Your updates"
+msgstr "Dine oppdateringer"
+
#: templates/web/default/contact/index.html:76
msgid "Your&nbsp;email:"
msgstr "Din&nbsp;epost:"
@@ -2610,7 +2794,11 @@ msgstr "administrasjon"
msgid "didn't use map"
msgstr "brukte ikke kart"
-#: perllib/Utils.pm:241
+#: templates/web/default/admin/index.html:15
+msgid "from %d different users"
+msgstr ""
+
+#: perllib/Utils.pm:247
msgid "less than a minute"
msgstr "mindre enn et minutt"
@@ -2618,11 +2806,11 @@ msgstr "mindre enn et minutt"
msgid "marked as fixed"
msgstr "markert som fikset"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:106
+#: perllib/FixMyStreet/App/Controller/Admin.pm:107
#: templates/web/default/admin/questionnaire.html:15
#: templates/web/default/admin/questionnaire.html:16
msgid "n/a"
-msgstr ""
+msgstr "n/a"
#: templates/web/default/alert/list.html:116
msgid "or"
@@ -2644,11 +2832,11 @@ msgstr "åpnet på nytt"
msgid "the map was not used so pin location may be inaccurate"
msgstr "kartet ble ikke brukt, så nåleposisjon kan være unøyaktig"
-#: bin/send-reports:169
+#: bin/send-reports:172
msgid "this type of local problem"
msgstr "denne type lokalt problem"
-#: perllib/Utils.pm:217
+#: perllib/Utils.pm:221
msgid "today"
msgstr "idag"
@@ -2659,7 +2847,7 @@ msgstr "brukte kart"
#: templates/web/default/reports/council.html:0
#: templates/web/default/reports/council.html:3
msgid "ward"
-msgstr ""
+msgstr "bydel"
#: templates/web/default/email_sent.html:15
#: templates/web/default/email_sent.html:3
@@ -2691,7 +2879,7 @@ msgstr "vil ditt problem ikke bli publisert"
msgid "your update will not be posted"
msgstr "din oppdatering vil ikke bli publisert"
-#: templates/web/default/front_stats.html:19
+#: templates/web/default/front/stats.html:19
#, perl-format
msgid "<big>%s</big> report recently"
msgid_plural "<big>%s</big> reports recently"
@@ -2708,20 +2896,27 @@ msgstr[0] ""
msgstr[1] ""
"Vi har ennå ikke detaljer for administrasjonene som dekker dette stedet."
-#: templates/web/default/front_stats.html:14
+#: templates/web/default/front/stats.html:14
#, perl-format
msgid "<big>%s</big> report in past week"
msgid_plural "<big>%s</big> reports in past week"
msgstr[0] "<big>%s</big> rapport siste uke"
msgstr[1] "<big>%s</big> rapporter siste uke"
-#: templates/web/default/front_stats.html:25
+#: templates/web/default/front/stats.html:25
#, perl-format
msgid "<big>%s</big> fixed in past month"
msgid_plural "<big>%s</big> fixed in past month"
msgstr[0] "<big>%s</big> fikset siste måned"
msgstr[1] "<big>%s</big> fikset siste måned"
+#: templates/web/default/front/stats.html:31
+#, perl-format
+msgid "<big>%s</big> update on reports"
+msgid_plural "<big>%s</big> updates on reports"
+msgstr[0] "<big>%s</big> rapport-<br>oppdatering"
+msgstr[1] "<big>%s</big> rapport-<br>oppdateringer"
+
#: templates/web/default/report/new/some_councils_text.html:14
#, perl-format
msgid ""
@@ -2736,109 +2931,3 @@ msgstr[0] ""
msgstr[1] ""
"Vi har ennå <strong>ikke</strong> detaljene for de andre administrasjonene "
"som dekker dette stedet."
-
-#: templates/web/default/front_stats.html:31
-#, perl-format
-msgid "<big>%s</big> update on reports"
-msgid_plural "<big>%s</big> updates on reports"
-msgstr[0] "<big>%s</big> rapport-<br>oppdatering"
-msgstr[1] "<big>%s</big> rapport-<br>oppdateringer"
-
-#~ msgid "Sorry! Something's gone wrong."
-#~ msgstr "Beklager! Noe har gått galt."
-
-#~ msgid "The text of the error was:"
-#~ msgstr "Teksten i feilmeldingen var:"
-
-#~ msgid "FixMyStreet"
-#~ msgstr "FiksGataMi"
-
-#~ msgid ""
-#~ "<h1>Nearly Done! Now check your email...</h1>\n"
-#~ "<p>The confirmation email <strong>may</strong> take a few minutes to "
-#~ "arrive &mdash; <em>please</em> be patient.</p>\n"
-#~ "<p>If you use web-based email or have 'junk mail' filters, you may wish "
-#~ "to check your bulk/spam mail folders: sometimes, our messages are marked "
-#~ "that way.</p>\n"
-#~ "<p>You must now click the link in the email we've just sent you &mdash;\n"
-#~ "if you do not, %s.</p>\n"
-#~ "<p>(Don't worry &mdash; %s)</p>\n"
-#~ msgstr ""
-#~ "<h1>Nesten ferdig! Nå må du sjekke eposten din...</h1>\n"
-#~ "<p>Bekreftelseseposten <strong>kan</strong> bruke noen minutter på å nå "
-#~ "frem &mdash; så vær tålmodig.</p>\n"
-#~ "<p>Hvis du bruker webbasert epost eller har søppelepost-filter, så bør du "
-#~ "kanskje a sjekke din bulk/spam-mappe. Noen ganger blir epost fra oss "
-#~ "markert som søppelpost.</p>\n"
-#~ "<p>Du må klikke på lenken i eposten vi nettopp har sendt deg &mdash;\n"
-#~ "hvis du ikke gjør det, %s.</p>\n"
-#~ "<p>(Ingen grunn til bekymring &mdash; %s)</p>\n"
-
-#~ msgid "More than one match"
-#~ msgstr "Mer enn ett treff"
-
-#~ msgid ""
-#~ "Thank you for trying to confirm your alert. We seem to have an error "
-#~ "ourselves\n"
-#~ "though, so <a href=\"%s\">please let us know what went on</a> and we'll "
-#~ "look into it.\n"
-#~ msgstr ""
-#~ "Takk for at du forsøker å bekrefte ditt varsel. Vi ser ut til a ha en "
-#~ "feil hos oss,\n"
-#~ "så <a href=\"%s\">vær så snill å fortell oss hva som skjedde</a> så skal "
-#~ "vi se på saken.\n"
-
-#~ msgid "Local RSS feeds and email alerts for &lsquo;%s&rsquo;"
-#~ msgstr "Lokal RSS-strøm og epostvarsel for &lsquo;%s&rsquo;"
-
-#~ msgid "Receive alerts on new local problems"
-#~ msgstr "Motta varsel om nye lokale problemer"
-
-#~ msgid "You have successfully subscribed to that alert."
-#~ msgstr "Du abonnerer nå på denne saken"
-
-#~ msgid "We could not validate that alert."
-#~ msgstr "Vi kunne ikke validere det varselet."
-
-#~ msgid "Please give your name"
-#~ msgstr "Skriv inn ditt navn"
-
-#~ msgid "Please give a subject"
-#~ msgstr "Skriv inn emne"
-
-#~ msgid "Weird and Wonderful reports"
-#~ msgstr "Merkelige saker"
-
-#~ msgid "That location is not part of that council"
-#~ msgstr "Det stedet er ikke en del av den administrasjonen"
-
-#~ msgid ""
-#~ "You have successfully confirmed your report and you can now <a href=\"%s"
-#~ "\">view it on the site</a>."
-#~ msgstr ""
-#~ "Du har nå lagt til en sak og kan <a href=\"%s\">se saken på nettsiden</a>."
-
-#~ msgid ""
-#~ "All the information you provide here will be sent to <strong>%s</"
-#~ "strong>.\n"
-#~ "The subject and details of the problem will be public, plus your\n"
-#~ "name if you give us permission."
-#~ msgstr ""
-#~ "All informasjonen du gir oss her vil bli sendt til <strong>%s</strong>.\n"
-#~ "Tittelen og detaljene for problemet vil bli offentlig, pluss ditt navn\n"
-#~ "hvis du gir oss tillatelse."
-
-#~ msgid "Receive email when updates are left on this problem"
-#~ msgstr "Motta epost når oppdateringer legges inn om dette problemet"
-
-#~ msgid "New problems within {{NAME}}"
-#~ msgstr "Nye problemer innenfor {{NAME}}"
-
-#~ msgid "The latest problems within {{NAME}}"
-#~ msgstr "De siste problemer innenfor {{NAME}}"
-
-#~ msgid "View update on site"
-#~ msgstr "Vis oppdateringer på nettstedet"
-
-#~ msgid "(blank to go anonymous)"
-#~ msgstr "(blank for å være anonym)"
diff --git a/perllib/CrossSell.pm b/perllib/CrossSell.pm
index 46c34a43b..9235d0a03 100644
--- a/perllib/CrossSell.pm
+++ b/perllib/CrossSell.pm
@@ -62,7 +62,7 @@ sub display_random_twfy_alerts_advert {
<input type="hidden" name="site" value="fms">
<input style="font-size:150%" type="submit" value="#;
$text =~ s#\[/button\]#"></p>#;
- return '<div id="advert_thin" style="text-align:center">' . $text . '</div>';
+ return '<div id="advert_thin">' . $text . '</div>';
}
sub display_hfyc_cheltenham_advert {
@@ -113,7 +113,7 @@ EOF
sub display_democracyclub {
my (%input) = @_;
return <<EOF;
-<div id="advert_thin" style="text-align:center">
+<div id="advert_thin">
<h2 style="margin-bottom:0">Help make the next election the most accountable ever</h2> <p style="font-size:120%;margin-top:0.5em;"><a href="http://www.democracyclub.org.uk/">Join Democracy Club</a> and have fun keeping an eye on your election candidates. <a href="http://www.democracyclub.org.uk/">Sign me up</a>!
</div>
EOF
@@ -169,13 +169,13 @@ sub display_advert ($$;$%) {
return '' unless $c->cobrand->is_default;
- if (defined $data{council} && $data{council} eq '2326') {
- my ($out, $ad) = display_hfyc_cheltenham_advert($email, $name);
- if ($out) {
- $c->stash->{scratch} = "advert=$ad";
- return $out;
- }
- }
+ #if (defined $data{council} && $data{council} eq '2326') {
+ # my ($out, $ad) = display_hfyc_cheltenham_advert($email, $name);
+ # if ($out) {
+ # $c->stash->{scratch} = "advert=$ad";
+ # return $out;
+ # }
+ #}
#if ($data{lat}) {
# my $out = display_gny_groups($data{lon}, $data{lat});
@@ -189,15 +189,25 @@ sub display_advert ($$;$%) {
#$c->stash->{scratch} = 'advert=demclub0';
#return display_democracyclub();
+ return <<EOF;
+<div id="advert_thin">
+<p>Do you have an issue that&rsquo;s too big for FixMyStreet?
+It could be time to petition your council. Try our new site:
+<h2 style="margin-top:0; font-size: 150%">
+<a href="http://www.petitionyourcouncil.com/">PetitionYourCouncil</a></p>
+</h2>
+</div>
+EOF
+
#unless (defined $data{done_tms} && $data{done_tms}==1) {
- $c->stash->{scratch} = 'advert=news';
- my $auth_signature = '';
- unless (defined $data{emailunvalidated} && $data{emailunvalidated}==1) {
- $auth_signature = mySociety::AuthToken::sign_with_shared_secret($email, mySociety::Config::get('AUTH_SHARED_SECRET'));
- }
- return '<div style="margin: 0 5em; border-top: dotted 1px #666666;">'
- . display_news_form(email => $email, name => $name, signed_email => $auth_signature)
- . '</div>';
+ #$c->stash->{scratch} = 'advert=news';
+ #my $auth_signature = '';
+ #unless (defined $data{emailunvalidated} && $data{emailunvalidated}==1) {
+ # $auth_signature = mySociety::AuthToken::sign_with_shared_secret($email, mySociety::Config::get('AUTH_SHARED_SECRET'));
+ #}
+ #return '<div style="margin: 0 5em; border-top: dotted 1px #666666;">'
+ # . display_news_form(email => $email, name => $name, signed_email => $auth_signature)
+ # . '</div>';
#}
my @adverts = (
@@ -230,7 +240,7 @@ sub display_advert ($$;$%) {
$c->stash->{scratch} = 'advert=pb';
return <<EOF;
-<div id="advert_thin" style="text-align:center">
+<div id="advert_thin">
<h2 style="font-size: 150%">
If you're interested in improving your local area,
<a href="http://www.pledgebank.com/">use PledgeBank</a> to
diff --git a/perllib/DBIx/Class/EncodedColumn.pm b/perllib/DBIx/Class/EncodedColumn.pm
new file mode 100644
index 000000000..b4a08b35c
--- /dev/null
+++ b/perllib/DBIx/Class/EncodedColumn.pm
@@ -0,0 +1,262 @@
+package DBIx::Class::EncodedColumn;
+
+use strict;
+use warnings;
+
+use base qw/DBIx::Class/;
+use Sub::Name;
+
+__PACKAGE__->mk_classdata( '_column_encoders' );
+
+our $VERSION = '0.00011';
+$VERSION = eval $VERSION;
+
+sub register_column {
+ my $self = shift;
+ my ($column, $info) = @_;
+ $self->next::method(@_);
+
+ return unless exists $info->{encode_column} && $info->{encode_column} == 1;
+ $self->throw_exception("'encode_class' is a required argument.")
+ unless exists $info->{encode_class} && defined $info->{encode_class};
+ my $class = $info->{encode_class};
+
+ my $args = exists $info->{encode_args} ? $info->{encode_args} : {};
+ $self->throw_exception("'encode_args' must be a hashref")
+ unless ref $args eq 'HASH';
+
+ $class = join("::", 'DBIx::Class::EncodedColumn', $class);
+ eval "require ${class};";
+ $self->throw_exception("Failed to use encode_class '${class}': $@") if $@;
+
+ defined( my $encode_sub = eval{ $class->make_encode_sub($column, $args) }) ||
+ $self->throw_exception("Failed to create encoder with class '$class': $@");
+ $self->_column_encoders({$column => $encode_sub, %{$self->_column_encoders || {}}});
+
+ if ( exists $info->{encode_check_method} && $info->{encode_check_method} ){
+ no strict 'refs';
+ defined( my $check_sub = eval{ $class->make_check_sub($column, $args) }) ||
+ $self->throw_exception("Failed to create checker with class '$class': $@");
+ my $name = join '::', $self->result_class, $info->{encode_check_method};
+ *$name = subname $name, $check_sub;
+ }
+}
+
+# mySociety override to allow direct setting without double encryption
+sub set_column {
+ my $self = shift;
+ return $self->next::method(@_) unless defined $_[1] and not defined $_[2];
+ my $encs = $self->_column_encoders;
+ if(exists $encs->{$_[0]} && defined(my $encoder = $encs->{$_[0]})){
+ return $self->next::method($_[0], $encoder->($_[1]));
+ }
+ $self->next::method(@_);
+}
+
+sub new {
+ my($self, $attr, @rest) = @_;
+ my $encoders = $self->_column_encoders;
+ for my $col (grep { defined $encoders->{$_} } keys %$encoders ) {
+ next unless exists $attr->{$col} && defined $attr->{$col};
+ $attr->{$col} = $encoders->{$col}->( $attr->{$col} );
+ }
+ return $self->next::method($attr, @rest);
+}
+
+1;
+
+__END__;
+
+=head1 NAME
+
+DBIx::Class::EncodedColumn - Automatically encode columns
+
+=head1 SYNOPSIS
+
+In your L<DBIx::Class> Result class
+(sometimes erroneously referred to as the 'table' class):
+
+ __PACKAGE__->load_components(qw/EncodedColumn ... Core/);
+
+ #Digest encoder with hex format and SHA-1 algorithm
+ __PACKAGE__->add_columns(
+ 'password' => {
+ data_type => 'CHAR',
+ size => 40,
+ encode_column => 1,
+ encode_class => 'Digest',
+ encode_args => {algorithm => 'SHA-1', format => 'hex'},
+ }
+
+ #SHA-1 / hex encoding / generate check method
+ __PACKAGE__->add_columns(
+ 'password' => {
+ data_type => 'CHAR',
+ size => 40 + 10,
+ encode_column => 1,
+ encode_class => 'Digest',
+ encode_args => {algorithm => 'SHA-1', format => 'hex', salt_length => 10},
+ encode_check_method => 'check_password',
+ }
+
+ #MD5 / base64 encoding / generate check method
+ __PACKAGE__->add_columns(
+ 'password' => {
+ data_type => 'CHAR',
+ size => 22,
+ encode_column => 1,
+ encode_class => 'Digest',
+ encode_args => {algorithm => 'MD5', format => 'base64'},
+ encode_check_method => 'check_password',
+ }
+
+ #Eksblowfish bcrypt / cost of 8/ no key_nul / generate check method
+ __PACKAGE__->add_columns(
+ 'password' => {
+ data_type => 'CHAR',
+ size => 59,
+ encode_column => 1,
+ encode_class => 'Crypt::Eksblowfish::Bcrypt',
+ encode_args => { key_nul => 0, cost => 8 },
+ encode_check_method => 'check_password',
+ }
+
+In your application code:
+
+ #updating the value.
+ $row->password('plaintext');
+ my $digest = $row->password;
+
+ #checking against an existing value with a check_method
+ $row->check_password('old_password'); #true
+ $row->password('new_password');
+ $row->check_password('new_password'); #returns true
+ $row->check_password('old_password'); #returns false
+
+
+B<Note:> The component needs to be loaded I<before> Core.
+
+=head1 DESCRIPTION
+
+This L<DBIx::Class> component can be used to automatically encode a column's
+contents whenever the value of that column is set.
+
+This module is similar to the existing L<DBIx::Class::DigestColumns>, but there
+is some key differences:
+
+=over 4
+
+=item C<DigestColumns> performs the encode operation on C<insert> and C<update>,
+and C<EncodedColumn> performs the operation when the value is set, or on C<new>.
+
+=item C<DigestColumns> supports only algorithms of the L<Digest> family.
+C<EncodedColumn> employs a set of thin wrappers around different cipher modules
+to provide support for any cipher you wish to use and wrappers are very simple
+to write (typically less than 30 lines).
+
+=item C<EncodedColumn> supports having more than one encoded column per table
+and each column can use a different cipher.
+
+=item C<Encode> adds only one item to the namespace of the object utilizing
+it (C<_column_encoders>).
+
+=back
+
+There is, unfortunately, some features that C<EncodedColumn> doesn't support.
+C<DigestColumns> supports changing certain options at runtime, as well as
+the option to not automatically encode values on set. The author of this module
+found these options to be non-essential and omitted them by design.
+
+=head1 Options added to add_column
+
+If any one of these options is present the column will be treated as a digest
+column and all of the defaults will be applied to the rest of the options.
+
+=head2 encode_enable => 1
+
+Enable automatic encoding of column values. If this option is not set to true
+any other options will become no-ops.
+
+=head2 encode_check_method => $method_name
+
+By using the encode_check_method attribute when you declare a column you
+can create a check method for that column. The check method accepts a plain
+text string, and returns a boolean that indicates whether the digest of the
+provided value matches the current value.
+
+=head2 encode_class
+
+The class to use for encoding. Available classes are:
+
+=over 4
+
+=item C<Crypt::Eksblowfish::Bcrypt> - uses
+L<DBIx::Class::EncodedColumn::Crypt::Eksblowfish::Bcrypt> and
+requires L<Crypt::Eksblowfish::Bcrypt> to be installed
+
+=item C<Digest> - uses L<DBIx::Class::EncodedColumn::Digest>
+requires L<Digest> to be installed as well as the algorithm required
+(L<Digest::SHA>, L<Digest::Whirlpool>, etc)
+
+=item C<Crypt::OpenPGP> - L<DBIx::Class::EncodedColumn::Crypt::OpenPGP>
+and requires L<Crypt::OpenPGP> to be installed
+
+=back
+
+Please see the relevant class's documentation for information about the
+specific arguments accepted by each and make sure you include the encoding
+algorithm (e.g. L<Crypt::OpenPGP>) in your application's requirements.
+
+=head1 EXTENDED METHODS
+
+The following L<DBIx::Class::ResultSource> method is extended:
+
+=over 4
+
+=item B<register_column> - Handle the options described above.
+
+=back
+
+The following L<DBIx::Class::Row> methods are extended by this module:
+
+=over 4
+
+=item B<new> - Encode the columns on new() so that copy and create DWIM.
+
+=item B<set_column> - Encode values whenever column is set.
+
+=back
+
+=head1 SEE ALSO
+
+L<DBIx::Class::DigestColumns>, L<DBIx::Class>, L<Digest>
+
+=head1 AUTHOR
+
+Guillermo Roditi (groditi) <groditi@cpan.org>
+
+Inspired by the original module written by Tom Kirkpatrick (tkp) <tkp@cpan.org>
+featuring contributions from Guillermo Roditi (groditi) <groditi@cpan.org>
+and Marc Mims <marc@questright.com>
+
+=head1 CONTRIBUTORS
+
+jshirley - J. Shirley <cpan@coldhardcode.com>
+
+kentnl - Kent Fredric <kentnl@cpan.org>
+
+mst - Matt S Trout <mst@shadowcat.co.uk>
+
+wreis - Wallace reis <wreis@cpan.org>
+
+=head1 COPYRIGHT
+
+Copyright (c) 2008 - 2009 the DBIx::Class::EncodedColumn L</AUTHOR> and
+L</CONTRIBUTORS> as listed above.
+
+=head1 LICENSE
+
+This library is free software and may be distributed under the same terms
+as perl itself.
+
+=cut
diff --git a/perllib/FixMyStreet/App.pm b/perllib/FixMyStreet/App.pm
index 90f1f24bc..68bfc728b 100644
--- a/perllib/FixMyStreet/App.pm
+++ b/perllib/FixMyStreet/App.pm
@@ -180,7 +180,11 @@ sub setup_request {
Memcached::set_namespace( FixMyStreet->config('BCI_DB_NAME') . ":" );
- my $map = $host =~ /^osm\./ ? 'OSM' : $c->req->param('map');
+ my $map = $host =~ /^osm\./ ? 'OSM' : $c->req->param('map_override');
+ #if ($c->sessionid) {
+ # $map = $c->session->{map};
+ # $map = undef unless $map eq 'OSM';
+ #}
FixMyStreet::Map::set_map_class( $map );
return $c;
diff --git a/perllib/FixMyStreet/App/Controller/Admin.pm b/perllib/FixMyStreet/App/Controller/Admin.pm
index f38181be6..63d892fc4 100644
--- a/perllib/FixMyStreet/App/Controller/Admin.pm
+++ b/perllib/FixMyStreet/App/Controller/Admin.pm
@@ -62,6 +62,7 @@ sub index : Path : Args(0) {
$c->stash->{problems} = \%prob_counts;
$c->stash->{total_problems_live} += $prob_counts{$_}
for ( FixMyStreet::DB::Result::Problem->visible_states() );
+ $c->stash->{total_problems_users} = $c->cobrand->problems->unique_users;
my $comments = $c->model('DB::Comment')->summary_count( $site_restriction );
@@ -108,6 +109,8 @@ sub index : Path : Args(0) {
: _('n/a');
$c->stash->{questionnaires} = \%questionnaire_counts;
+ $c->stash->{categories} = $c->cobrand->problems->categories_summary();
+
return 1;
}
@@ -120,6 +123,7 @@ sub timeline : Path( 'timeline' ) : Args(0) {
my %time;
$c->model('DB')->schema->storage->sql_maker->quote_char( '"' );
+ $c->model('DB')->schema->storage->sql_maker->name_sep( '.' );
my $probs = $c->cobrand->problems->timeline;
@@ -172,15 +176,22 @@ sub questionnaire : Path('questionnaire') : Args(0) {
my %questionnaire_counts = map { $_->get_column( 'reported' ) => $_->get_column( 'questionnaire_count' ) } $questionnaires->all;
-
$questionnaire_counts{1} ||= 0;
$questionnaire_counts{0} ||= 0;
-
$questionnaire_counts{total} = $questionnaire_counts{0} + $questionnaire_counts{1};
- $c->stash->{reported_pc} = ( 100 * $questionnaire_counts{1} ) / $questionnaire_counts{total};
- $c->stash->{not_reported_pc} = ( 100 * $questionnaire_counts{0} ) / $questionnaire_counts{total};
$c->stash->{questionnaires} = \%questionnaire_counts;
+ $c->stash->{state_changes_count} = $c->model('DB::Questionnaire')->search(
+ { whenanswered => \'is not null' }
+ )->count;
+ $c->stash->{state_changes} = $c->model('DB::Questionnaire')->search(
+ { whenanswered => \'is not null' },
+ {
+ group_by => [ 'old_state', 'new_state' ],
+ columns => [ 'old_state', 'new_state', { c => { count => 'id' } } ],
+ },
+ );
+
return 1;
}
@@ -419,6 +430,7 @@ sub search_reports : Path('search_reports') {
# makes PostgreSQL unhappy elsewhere so we only want to do
# it for this query and then switch it off afterwards.
$c->model('DB')->schema->storage->sql_maker->quote_char( '"' );
+ $c->model('DB')->schema->storage->sql_maker->name_sep( '.' );
my $problems = $c->cobrand->problems->search(
{
diff --git a/perllib/FixMyStreet/App/Controller/Around.pm b/perllib/FixMyStreet/App/Controller/Around.pm
index 4ca559fad..660585454 100644
--- a/perllib/FixMyStreet/App/Controller/Around.pm
+++ b/perllib/FixMyStreet/App/Controller/Around.pm
@@ -239,6 +239,11 @@ sub ajax : Path('/ajax') {
my $all_pins = $c->req->param('all_pins') ? 1 : undef;
my $interval = $all_pins ? undef : $c->cobrand->on_map_default_max_pin_age;
+ # Need to be the class that can handle it
+ if ($c->req->param('bbox')) {
+ FixMyStreet::Map::set_map_class( 'OSM' );
+ }
+
# extract the data from the map
my ( $pins, $on_map, $around_map, $dist ) =
FixMyStreet::Map::map_pins( $c, $interval );
diff --git a/perllib/FixMyStreet/App/Controller/Auth.pm b/perllib/FixMyStreet/App/Controller/Auth.pm
index ebb3510d0..c67de692a 100644
--- a/perllib/FixMyStreet/App/Controller/Auth.pm
+++ b/perllib/FixMyStreet/App/Controller/Auth.pm
@@ -36,7 +36,8 @@ sub general : Path : Args(0) {
return unless $req->method eq 'POST';
# decide which action to take
- $c->detach('email_sign_in') if $req->param('email_sign_in');
+ $c->detach('email_sign_in') if $req->param('email_sign_in')
+ || $c->req->param('name') || $c->req->param('password_register');
$c->forward( 'sign_in' )
&& $c->detach( 'redirect_on_signin', [ $req->param('r') ] );
@@ -107,6 +108,11 @@ sub email_sign_in : Private {
return;
}
+ my $user_params = {};
+ $user_params->{password} = $c->req->param('password_register')
+ if $c->req->param('password_register');
+ my $user = $c->model('DB::User')->new( $user_params );
+
my $token_obj = $c->model('DB::Token') #
->create(
{
@@ -115,7 +121,7 @@ sub email_sign_in : Private {
email => $good_email,
r => $c->req->param('r'),
name => $c->req->param('name'),
- password => $c->req->param('password_register'),
+ password => $user->password,
}
}
);
@@ -157,9 +163,8 @@ sub token : Path('/M') : Args(1) {
# find or create the user related to the token.
my $user = $c->model('DB::User')->find_or_create( { email => $data->{email} } );
$user->name( $data->{name} ) if $data->{name};
- $user->password( $data->{password} ) if $data->{password};
+ $user->password( $data->{password}, 1 ) if $data->{password};
$user->update;
-
$c->authenticate( { email => $user->email }, 'no_password' );
# send the user to their page
diff --git a/perllib/FixMyStreet/App/Controller/JSON.pm b/perllib/FixMyStreet/App/Controller/JSON.pm
index d9baeaaf8..f3607341a 100644
--- a/perllib/FixMyStreet/App/Controller/JSON.pm
+++ b/perllib/FixMyStreet/App/Controller/JSON.pm
@@ -39,6 +39,7 @@ sub problems : Local {
# gather the parameters
my $start_date = $c->req->param('start_date') || '';
my $end_date = $c->req->param('end_date') || '';
+ my $category = $c->req->param('category') || '';
my $yyyy_mm_dd = qr{^\d{4}-\d\d-\d\d$};
if ( $start_date !~ $yyyy_mm_dd
@@ -73,25 +74,29 @@ sub problems : Local {
my ( @state, $date_col );
if ( $type eq 'new_problems' ) {
@state = FixMyStreet::DB::Result::Problem->open_states();
- $date_col = 'created';
+ $date_col = 'confirmed';
} elsif ( $type eq 'fixed_problems' ) {
@state = FixMyStreet::DB::Result::Problem->fixed_states();
$date_col = 'lastupdate';
}
my $one_day = DateTime::Duration->new( days => 1 );
- my @problems = $c->cobrand->problems->search( {
+ my $query = {
$date_col => {
'>=' => $start_dt,
'<=' => $end_dt + $one_day,
},
state => [ @state ],
- }, {
+ };
+ $query->{category} = $category if $category;
+ my @problems = $c->cobrand->problems->search( $query, {
order_by => { -asc => 'confirmed' },
columns => [
'id', 'title', 'council', 'category',
'detail', 'name', 'anonymous', 'confirmed',
'whensent', 'service',
+ 'latitude', 'longitude', 'used_map',
+ 'state', 'lastupdate',
]
} );
diff --git a/perllib/FixMyStreet/App/Controller/My.pm b/perllib/FixMyStreet/App/Controller/My.pm
index b1359ae03..19b3ffee0 100644
--- a/perllib/FixMyStreet/App/Controller/My.pm
+++ b/perllib/FixMyStreet/App/Controller/My.pm
@@ -25,9 +25,6 @@ sub my : Path : Args(0) {
$c->detach( '/auth/redirect' ) unless $c->user;
- # Even though front end doesn't yet have it, have it on this page, it's better!
- FixMyStreet::Map::set_map_class( 'FMS' );
-
my $p_page = $c->req->params->{p} || 1;
my $u_page = $c->req->params->{u} || 1;
@@ -56,6 +53,7 @@ sub my : Path : Args(0) {
$c->stash->{updates} = \@updates;
$c->stash->{updates_pager} = $rs->pager;
+ $c->stash->{page} = 'my';
FixMyStreet::Map::display_map(
$c,
latitude => $pins->[0]{latitude},
diff --git a/perllib/FixMyStreet/App/Controller/Questionnaire.pm b/perllib/FixMyStreet/App/Controller/Questionnaire.pm
index 90674b294..c498ec61e 100755
--- a/perllib/FixMyStreet/App/Controller/Questionnaire.pm
+++ b/perllib/FixMyStreet/App/Controller/Questionnaire.pm
@@ -289,6 +289,7 @@ sub display : Private {
{ order_by => 'confirmed' }
);
+ $c->stash->{page} = 'questionnaire';
FixMyStreet::Map::display_map(
$c,
latitude => $problem->latitude,
diff --git a/perllib/FixMyStreet/App/Controller/Report.pm b/perllib/FixMyStreet/App/Controller/Report.pm
index a15ee993f..6596615c6 100644
--- a/perllib/FixMyStreet/App/Controller/Report.pm
+++ b/perllib/FixMyStreet/App/Controller/Report.pm
@@ -108,8 +108,6 @@ sub format_problem_for_display : Private {
map { Utils::truncate_coordinate($_) }
( $problem->latitude, $problem->longitude );
- $c->stash->{report_name} = $c->req->param('name');
-
unless ( $c->req->param('submit_update') ) {
$c->stash->{add_alert} = 1;
}
@@ -124,6 +122,7 @@ sub generate_map_tags : Private {
my $problem = $c->stash->{problem};
+ $c->stash->{page} = 'report';
FixMyStreet::Map::display_map(
$c,
latitude => $problem->latitude,
diff --git a/perllib/FixMyStreet/App/Controller/Report/New.pm b/perllib/FixMyStreet/App/Controller/Report/New.pm
index 3a7d18a1c..346dfb377 100644
--- a/perllib/FixMyStreet/App/Controller/Report/New.pm
+++ b/perllib/FixMyStreet/App/Controller/Report/New.pm
@@ -220,13 +220,15 @@ sub report_import : Path('/import') {
anonymous => 0,
category => '',
areas => '',
+ cobrand => $c->cobrand->moniker,
+ lang => $c->stash->{lang_code},
}
);
# If there was a photo add that too
- if ( my $fileid = $c->stash->{upload_fileid} ) {
- my $file = file( $c->config->{UPLOAD_CACHE}, "$fileid.jpg" );
+ if ( $photo ) {
+ my $file = file( $c->config->{UPLOAD_CACHE}, "$photo.jpg" );
my $blob = $file->slurp;
$file->remove;
$report->photo($blob);
@@ -489,7 +491,7 @@ sub setup_categories_and_councils : Private {
next # TODO - move this to the cobrand
if $c->cobrand->moniker eq 'southampton'
- && $contact->category eq 'Street lighting';
+ && $contact->category =~ /Street lighting|Traffic lights/;
next if $contact->category eq _('Other');
@@ -571,9 +573,9 @@ sub process_user : Private {
unless $report->user;
# The user is trying to sign in. We only care about email from the params.
- if ( $c->req->param('submit_sign_in') ) {
+ if ( $c->req->param('submit_sign_in') || $c->req->param('password_sign_in') ) {
unless ( $c->forward( '/auth/sign_in' ) ) {
- $c->stash->{field_errors}->{password} = _('There was a problem with your email/password combination. Please try again.');
+ $c->stash->{field_errors}->{password} = _('There was a problem with your email/password combination. Passwords and user accounts are a brand <strong>new</strong> service, so you probably do not have one yet &ndash; please fill in the right hand side of this form to get one.');
return 1;
}
my $user = $c->user->obj;
@@ -608,6 +610,7 @@ sub process_report : Private {
map { $_ => scalar $c->req->param($_) } #
(
'title', 'detail', 'pc', #
+ 'detail_size', 'detail_depth',
'may_show_name', #
'category', #
'partial', #
@@ -626,8 +629,14 @@ sub process_report : Private {
# clean up text before setting
$report->title( Utils::cleanup_text( $params{title} ) );
- $report->detail(
- Utils::cleanup_text( $params{detail}, { allow_multiline => 1 } ) );
+
+ my $detail = Utils::cleanup_text( $params{detail}, { allow_multiline => 1 } );
+ for my $w ('depth', 'size') {
+ next unless $params{"detail_$w"};
+ next if $params{"detail_$w"} eq '-- Please select --';
+ $detail .= "\n\n\u$w: " . $params{"detail_$w"};
+ }
+ $report->detail( $detail );
# set these straight from the params
$report->category( _ $params{category} );
@@ -845,9 +854,13 @@ sub save_user_and_report : Private {
$report->confirm;
}
else {
-
- # user exists and we are not logged in as them. Throw away changes to
- # the name and phone. TODO - propagate changes using tokens.
+ # User exists and we are not logged in as them.
+ # Store changes in token for when token is validated.
+ $c->stash->{token_data} = {
+ name => $report->user->name,
+ phone => $report->user->phone,
+ password => $report->user->password,
+ };
$report->user->discard_changes();
}
@@ -895,6 +908,7 @@ sub generate_map : Private {
# Don't do anything if the user skipped the map
unless ( $c->req->param('skipped') ) {
+ $c->stash->{page} = 'new';
FixMyStreet::Map::display_map(
$c,
latitude => $latitude,
@@ -932,9 +946,11 @@ sub redirect_or_confirm_creation : Private {
}
# otherwise create a confirm token and email it to them.
+ my $data = $c->stash->{token_data} || {};
my $token = $c->model("DB::Token")->create( {
scope => 'problem',
data => {
+ %$data,
id => $report->id
}
} );
diff --git a/perllib/FixMyStreet/App/Controller/Report/Update.pm b/perllib/FixMyStreet/App/Controller/Report/Update.pm
index 2916e1ee1..03130f60b 100644
--- a/perllib/FixMyStreet/App/Controller/Report/Update.pm
+++ b/perllib/FixMyStreet/App/Controller/Report/Update.pm
@@ -120,9 +120,9 @@ sub process_user : Private {
unless $update->user;
# The user is trying to sign in. We only care about email from the params.
- if ( $c->req->param('submit_sign_in') ) {
+ if ( $c->req->param('submit_sign_in') || $c->req->param('password_sign_in') ) {
unless ( $c->forward( '/auth/sign_in', [ $email ] ) ) {
- $c->stash->{field_errors}->{password} = _('There was a problem with your email/password combination. Please try again.');
+ $c->stash->{field_errors}->{password} = _('There was a problem with your email/password combination. Passwords and user accounts are a brand <strong>new</strong> service, so you probably do not have one yet &ndash; please fill in the right hand side of this form to get one.');
return 1;
}
my $user = $c->user->obj;
@@ -262,6 +262,14 @@ sub save_update : Private {
# Logged in and same user, so can confirm update straight away
$update->user->update;
$update->confirm;
+ } else {
+ # User exists and we are not logged in as them.
+ # Store changes in token for when token is validated.
+ $c->stash->{token_data} = {
+ name => $update->user->name,
+ password => $update->user->password,
+ };
+ $update->user->discard_changes();
}
# If there was a photo add that too
@@ -303,10 +311,12 @@ sub redirect_or_confirm_creation : Private {
}
# otherwise create a confirm token and email it to them.
+ my $data = $c->stash->{token_data} || {};
my $token = $c->model("DB::Token")->create(
{
scope => 'comment',
data => {
+ %$data,
id => $update->id,
add_alert => ( $c->req->param('add_alert') ? 1 : 0 ),
}
diff --git a/perllib/FixMyStreet/App/Controller/Reports.pm b/perllib/FixMyStreet/App/Controller/Reports.pm
index 9cec0fdfe..821b650ed 100644
--- a/perllib/FixMyStreet/App/Controller/Reports.pm
+++ b/perllib/FixMyStreet/App/Controller/Reports.pm
@@ -34,10 +34,18 @@ sub index : Path : Args(0) {
$c->response->header('Cache-Control' => 'max-age=3600');
# Fetch all areas of the types we're interested in
- my @area_types = $c->cobrand->area_types;
- my $areas_info = mySociety::MaPit::call('areas', \@area_types,
- min_generation => $c->cobrand->area_min_generation
- );
+ my $areas_info;
+ eval {
+ my @area_types = $c->cobrand->area_types;
+ $areas_info = mySociety::MaPit::call('areas', \@area_types,
+ min_generation => $c->cobrand->area_min_generation
+ );
+ };
+ if ($@) {
+ $c->stash->{message} = _("Unable to look up areas in MaPit. Please try again later.") . ' ' .
+ sprintf(_('The error was: %s'), $@);
+ $c->stash->{template} = 'errors/generic.html';
+ }
# For each area, add its link and perhaps alter its name if we need to for
# places with the same name.
@@ -61,7 +69,8 @@ sub index : Path : Args(0) {
$c->stash->{open} = $j->{open};
};
if ($@) {
- $c->stash->{message} = _("There was a problem showing the All Reports page. Please try again later.");
+ $c->stash->{message} = _("There was a problem showing the All Reports page. Please try again later.") . ' ' .
+ sprintf(_('The error was: %s'), $@);
$c->stash->{template} = 'errors/generic.html';
}
}
@@ -90,6 +99,7 @@ sub ward : Path : Args(2) {
$c->forward( 'ward_check', [ $ward ] )
if $ward;
$c->forward( 'load_parent' );
+ $c->forward( 'check_canonical_url', [ $council ] );
$c->forward( 'load_and_group_problems' );
$c->forward( 'sort_problems' );
@@ -102,8 +112,7 @@ sub ward : Path : Args(2) {
my $pins = $c->stash->{pins};
- # Even though front end doesn't yet have it, have it on this page, it's better!
- FixMyStreet::Map::set_map_class( 'FMS' );
+ $c->stash->{page} = 'reports'; # So the map knows to make clickable pins
FixMyStreet::Map::display_map(
$c,
latitude => @$pins ? $pins->[0]{latitude} : 0,
@@ -227,7 +236,7 @@ sub council_check : Private {
return;
} else {
foreach (keys %$areas) {
- if ($areas->{$_}->{name} eq $q_council || $areas->{$_}->{name} =~ /^\Q$q_council\E (Borough|City|District|County) Council$/) {
+ if (lc($areas->{$_}->{name}) eq lc($q_council) || $areas->{$_}->{name} =~ /^\Q$q_council\E (Borough|City|District|County) Council$/i) {
$c->stash->{council} = $areas->{$_};
return;
}
@@ -252,6 +261,7 @@ sub ward_check : Private {
$ward =~ s/\+/ /g;
$ward =~ s/\.html//;
+ $ward =~ s{_}{/}g;
my $council = $c->stash->{council};
@@ -281,6 +291,22 @@ sub load_parent : Private {
}
}
+=head2 check_canonical_url
+
+Given an already found (case-insensitively) council, check what URL
+we are at and redirect accordingly if different.
+
+=cut
+
+sub check_canonical_url : Private {
+ my ( $self, $c, $q_council ) = @_;
+
+ my $council_short = $c->cobrand->short_name( $c->stash->{council}, $c->stash->{areas_info} );
+ my $url_short = URI::Escape::uri_escape_utf8($q_council);
+ $url_short =~ s/%2B/+/g;
+ $c->detach( 'redirect_area' ) unless $council_short eq $url_short;
+}
+
sub load_and_group_problems : Private {
my ( $self, $c ) = @_;
@@ -290,9 +316,9 @@ sub load_and_group_problems : Private {
state => [ FixMyStreet::DB::Result::Problem->visible_states() ]
};
if ($c->stash->{ward}) {
- $where->{areas} = { 'like', '%' . $c->stash->{ward}->{id} . '%' }; # FIXME Check this is secure
+ $where->{areas} = { 'like', '%,' . $c->stash->{ward}->{id} . ',%' };
} elsif ($c->stash->{council}) {
- $where->{areas} = { 'like', '%' . $c->stash->{council}->{id} . '%' };
+ $where->{areas} = { 'like', '%,' . $c->stash->{council}->{id} . ',%' };
}
my $problems = $c->cobrand->problems->search(
$where,
@@ -369,7 +395,7 @@ sub redirect_area : Private {
my $url = '';
$url .= "/rss" if $c->stash->{rss};
$url .= '/reports';
- $url .= '/' . $c->cobrand->short_name( $c->stash->{council} );
+ $url .= '/' . $c->cobrand->short_name( $c->stash->{council}, $c->stash->{areas_info} );
$url .= '/' . $c->cobrand->short_name( $c->stash->{ward} )
if $c->stash->{ward};
$c->res->redirect( $c->uri_for($url) );
diff --git a/perllib/FixMyStreet/App/Controller/Rss.pm b/perllib/FixMyStreet/App/Controller/Rss.pm
index db4955f06..78793d9c1 100755
--- a/perllib/FixMyStreet/App/Controller/Rss.pm
+++ b/perllib/FixMyStreet/App/Controller/Rss.pm
@@ -217,7 +217,7 @@ sub add_row : Private {
my ( $self, $c, $row ) = @_;
my $alert_type = $c->stash->{alert_type};
- $row->{name} ||= 'anonymous';
+ $row->{name} = 'anonymous' if $row->{anonymous} || !$row->{name};
my $pubDate;
if ($row->{confirmed}) {
diff --git a/perllib/FixMyStreet/App/Controller/Tilma.pm b/perllib/FixMyStreet/App/Controller/Tilma.pm
deleted file mode 100644
index 1be481949..000000000
--- a/perllib/FixMyStreet/App/Controller/Tilma.pm
+++ /dev/null
@@ -1,46 +0,0 @@
-package FixMyStreet::App::Controller::Tilma;
-use Moose;
-use namespace::autoclean;
-
-BEGIN { extends 'Catalyst::Controller'; }
-
-use LWP::UserAgent;
-
-=head1 NAME
-
-FixMyStreet::App::Controller::Tilma - Tilma proxy
-
-=head1 DESCRIPTION
-
-A tilma proxy - only intended to be used during dev. In production the webserver should do this proxying.
-
-=head1 METHODS
-
-=head2 default
-
-Proxy everything through to the tilma servers.
-
-=cut
-
-sub default : Path {
- my ( $self, $c ) = @_;
-
- my $path = $c->req->uri->path_query;
- $path =~ s{/tilma/}{};
-
- my $tilma_uri = URI->new("http://tilma.mysociety.org/$path");
-
- my $tilma_res = LWP::UserAgent->new->get($tilma_uri);
-
- if ( $tilma_res->is_success ) {
- $c->res->content_type( $tilma_res->content_type );
- $c->res->body( $tilma_res->content );
- }
- else {
- die sprintf "Error getting %s: %s", $tilma_uri, $tilma_res->message;
- }
-}
-
-__PACKAGE__->meta->make_immutable;
-
-1;
diff --git a/perllib/FixMyStreet/App/Controller/Tokens.pm b/perllib/FixMyStreet/App/Controller/Tokens.pm
index 1fef0f07e..9abef591d 100644
--- a/perllib/FixMyStreet/App/Controller/Tokens.pm
+++ b/perllib/FixMyStreet/App/Controller/Tokens.pm
@@ -32,7 +32,8 @@ sub confirm_problem : Path('/P') {
$c->forward( 'load_auth_token', [ $token_code, 'problem' ] );
# Load the problem
- my $problem_id = $auth_token->data->{id};
+ my $data = $auth_token->data;
+ my $problem_id = $data->{id};
my $problem = $c->cobrand->problems->find( { id => $problem_id } )
|| $c->detach('token_error');
$c->stash->{problem} = $problem;
@@ -59,6 +60,11 @@ sub confirm_problem : Path('/P') {
$c->forward( '/report/new/create_reporter_alert' );
# log the problem creation user in to the site
+ if ( $data->{name} || $data->{password} ) {
+ $problem->user->name( $data->{name} ) if $data->{name};
+ $problem->user->password( $data->{password}, 1 ) if $data->{password};
+ $problem->user->update;
+ }
$c->authenticate( { email => $problem->user->email }, 'no_password' );
$c->set_session_cookie_expire(0);
@@ -133,8 +139,9 @@ sub confirm_update : Path('/C') {
$c->forward( 'load_auth_token', [ $token_code, 'comment' ] );
# Load the problem
- my $comment_id = $auth_token->data->{id};
- $c->stash->{add_alert} = $auth_token->data->{add_alert};
+ my $data = $auth_token->data;
+ my $comment_id = $data->{id};
+ $c->stash->{add_alert} = $data->{add_alert};
my $comment = $c->model('DB::Comment')->find( { id => $comment_id } )
|| $c->detach('token_error');
@@ -146,6 +153,11 @@ sub confirm_update : Path('/C') {
return;
}
+ if ( $data->{name} || $data->{password} ) {
+ $comment->user->name( $data->{name} ) if $data->{name};
+ $comment->user->password( $data->{password}, 1 ) if $data->{password};
+ $comment->user->update;
+ }
$c->authenticate( { email => $comment->user->email }, 'no_password' );
$c->set_session_cookie_expire(0);
diff --git a/perllib/FixMyStreet/App/View/Web.pm b/perllib/FixMyStreet/App/View/Web.pm
index 358e280c3..df2d0ac20 100644
--- a/perllib/FixMyStreet/App/View/Web.pm
+++ b/perllib/FixMyStreet/App/View/Web.pm
@@ -21,6 +21,9 @@ __PACKAGE__->config(
'loc', 'nget', 'tprintf', 'display_crosssell_advert', 'prettify_epoch',
'add_links',
],
+ FILTERS => {
+ escape_js => \&escape_js,
+ },
);
=head1 NAME
@@ -120,5 +123,24 @@ sub add_links {
return $text;
}
+=head2 escape_js
+
+Used to escape strings that are going to be put inside JavaScript.
+
+=cut
+
+sub escape_js {
+ my $text = shift;
+ my %lookup = (
+ '\\' => 'u005c',
+ '"' => 'u0022',
+ "'" => 'u0027',
+ '<' => 'u003c',
+ '>' => 'u003e',
+ );
+ $text =~ s/([\\"'<>])/\\$lookup{$1}/g;
+ return $text;
+}
+
1;
diff --git a/perllib/FixMyStreet/Cobrand/Barnet.pm b/perllib/FixMyStreet/Cobrand/Barnet.pm
index 9496570ea..a12fa6d06 100644
--- a/perllib/FixMyStreet/Cobrand/Barnet.pm
+++ b/perllib/FixMyStreet/Cobrand/Barnet.pm
@@ -76,9 +76,5 @@ sub recent_photos {
return $self->problems->recent_photos( $num, $lat, $lon, $dist );
}
-sub tilma_mid_point {
- return 189;
-}
-
1;
diff --git a/perllib/FixMyStreet/Cobrand/Default.pm b/perllib/FixMyStreet/Cobrand/Default.pm
index 29061ebd8..69718f613 100644
--- a/perllib/FixMyStreet/Cobrand/Default.pm
+++ b/perllib/FixMyStreet/Cobrand/Default.pm
@@ -7,6 +7,7 @@ use URI;
use Carp;
use mySociety::MaPit;
+use mySociety::PostcodeUtil;
=head2 new
@@ -405,12 +406,9 @@ sub uri {
(my $map_class = $FixMyStreet::Map::map_class) =~ s/^FixMyStreet::Map:://;
return $uri unless $map_class =~ /OSM|FMS/;
- $uri = URI->new( $uri );
$uri->query_param( zoom => 3 )
if $uri->query_param('lat') && !$uri->query_param('zoom');
- # $uri->query_param( map => $map_class ); # FIXME Only on /around, /report?
-
return $uri;
}
@@ -490,6 +488,46 @@ allowing them to report them as offensive.
sub allow_update_reporting { return 0; }
+=head2 geocode_postcode
+
+Given a QUERY, return LAT/LON and/or ERROR.
+
+=cut
+
+sub geocode_postcode {
+ my ( $self, $s ) = @_;
+
+ if ($s =~ /^\d+$/) {
+ return {
+ error => 'FixMyStreet is a UK-based website that currently works in England, Scotland, and Wales. Please enter either a postcode, or a Great British street name and area.'
+ };
+ } elsif (mySociety::PostcodeUtil::is_valid_postcode($s)) {
+ my $location = mySociety::MaPit::call('postcode', $s);
+ if ($location->{error}) {
+ return {
+ error => $location->{code} =~ /^4/
+ ? _('That postcode was not recognised, sorry.')
+ : $location->{error}
+ };
+ }
+ my $island = $location->{coordsyst};
+ if (!$island) {
+ return {
+ error => _("Sorry, that appears to be a Crown dependency postcode, which we don't cover.")
+ };
+ } elsif ($island eq 'I') {
+ return {
+ error => _("We do not currently cover Northern Ireland, I'm afraid.")
+ };
+ }
+ return {
+ latitude => $location->{wgs84_lat},
+ longitude => $location->{wgs84_lon},
+ };
+ }
+ return {};
+}
+
=head2 geocoded_string_check
Parameters are LOCATION, QUERY. Return a boolean indicating whether the
@@ -499,6 +537,44 @@ string LOCATION passes the cobrands checks.
sub geocoded_string_check { return 1; }
+=head2 find_closest
+
+Used by send-reports to attach nearest things to the bottom of the report
+
+=cut
+
+sub find_closest {
+ my ( $self, $latitude, $longitude ) = @_;
+ my $str = '';
+
+ # Get nearest road-type thing from Bing
+ my $key = mySociety::Config::get('BING_MAPS_API_KEY', '');
+ if ($key) {
+ my $url = "http://dev.virtualearth.net/REST/v1/Locations/$latitude,$longitude?c=en-GB&key=$key";
+ my $j = LWP::Simple::get($url);
+ if ($j) {
+ $j = JSON->new->utf8->allow_nonref->decode($j);
+ if ($j->{resourceSets}[0]{resources}[0]{name}) {
+ $str .= sprintf(_("Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s"),
+ $j->{resourceSets}[0]{resources}[0]{name}) . "\n\n";
+ }
+ }
+ }
+
+ # Get nearest postcode from Matthew's random gazetteer (put in MaPit? Or elsewhere?)
+ my $url = "http://gazetteer.dracos.vm.bytemark.co.uk/point/$latitude,$longitude.json";
+ my $j = LWP::Simple::get($url);
+ if ($j) {
+ $j = JSON->new->utf8->allow_nonref->decode($j);
+ if ($j->{postcode}) {
+ $str .= sprintf(_("Nearest postcode to the pin placed on the map (automatically generated): %s (%sm away)"),
+ $j->{postcode}[0], $j->{postcode}[1]) . "\n\n";
+ }
+ }
+
+ return $str;
+}
+
=head2 council_check
Paramters are COUNCILS, QUERY, CONTEXT. Return a boolean indicating whether
@@ -558,16 +634,6 @@ The MaPit types this site handles
sub area_types { return qw(DIS LBO MTD UTA CTY COI); }
sub area_min_generation { 10 }
-=head2 tilma_mid_point
-
-If the map is smaller than the usual, return half its size.
-
-=cut
-
-sub tilma_mid_point {
- return 0;
-}
-
=head2 contact_name, contact_email
Return the contact name or email for the cobranded version of the site (to be
@@ -672,6 +738,7 @@ sub short_name {
$name =~ s/ (Borough|City|District|County) Council$//;
$name =~ s/ Council$//;
$name =~ s/ & / and /;
+ $name =~ s{/}{_}g;
$name = URI::Escape::uri_escape_utf8($name);
$name =~ s/%20/+/g;
return $name;
@@ -687,6 +754,7 @@ Generate a set of options for council rss alerts.
sub council_rss_alert_options {
my $self = shift;
my $all_councils = shift;
+ my $c = shift;
my %councils = map { $_ => 1 } $self->area_types();
@@ -713,7 +781,7 @@ sub council_rss_alert_options {
id => sprintf( 'council:%s:%s', $council->{id}, $council->{id_name} ),
text => sprintf( _('Problems within %s'), $council->{name}),
rss_text => sprintf( _('RSS feed of problems within %s'), $council->{name}),
- uri => $self->uri( '/rss/reports/' . $council->{short_name} ),
+ uri => $c->uri_for( '/rss/reports/' . $council->{short_name} ),
};
push @options,
{
@@ -721,7 +789,7 @@ sub council_rss_alert_options {
id => sprintf( 'ward:%s:%s:%s:%s', $council->{id}, $ward->{id}, $council->{id_name}, $ward->{id_name} ),
rss_text => sprintf( _('RSS feed of problems within %s ward'), $ward->{name}),
text => sprintf( _('Problems within %s ward'), $ward->{name}),
- uri => $self->uri( '/rss/reports/' . $council->{short_name} . '/' . $ward->{short_name} ),
+ uri => $c->uri_for( '/rss/reports/' . $council->{short_name} . '/' . $ward->{short_name} ),
} if $ward;
} elsif ( $num_councils == 4 ) {
# # Two-tier council
@@ -750,28 +818,28 @@ sub council_rss_alert_options {
id => sprintf( 'area:%s:%s', $district->{id}, $district->{id_name} ),
text => $district_name,
rss_text => sprintf( _('RSS feed for %s'), $district_name ),
- uri => $self->uri( '/rss/areas/' . $district->{short_name} )
+ uri => $c->uri_for( '/rss/areas/' . $district->{short_name} )
},
{
type => 'area',
id => sprintf( 'area:%s:%s:%s:%s', $district->{id}, $d_ward->{id}, $district->{id_name}, $d_ward->{id_name} ),
text => sprintf( _('%s ward, %s'), $d_ward_name, $district_name ),
rss_text => sprintf( _('RSS feed for %s ward, %s'), $d_ward_name, $district_name ),
- uri => $self->uri( '/rss/areas/' . $district->{short_name} . '/' . $d_ward->{short_name} )
+ uri => $c->uri_for( '/rss/areas/' . $district->{short_name} . '/' . $d_ward->{short_name} )
},
{
type => 'area',
id => sprintf( 'area:%s:%s', $county->{id}, $county->{id_name} ),
text => $county_name,
rss_text => sprintf( _('RSS feed for %s'), $county_name ),
- uri => $self->uri( '/rss/areas/' . $county->{short_name} )
+ uri => $c->uri_for( '/rss/areas/' . $county->{short_name} )
},
{
type => 'area',
id => sprintf( 'area:%s:%s:%s:%s', $county->{id}, $c_ward->{id}, $county->{id_name}, $c_ward->{id_name} ),
text => sprintf( _('%s ward, %s'), $c_ward_name, $county_name ),
rss_text => sprintf( _('RSS feed for %s ward, %s'), $c_ward_name, $county_name ),
- uri => $self->uri( '/rss/areas/' . $county->{short_name} . '/' . $c_ward->{short_name} )
+ uri => $c->uri_for( '/rss/areas/' . $county->{short_name} . '/' . $c_ward->{short_name} )
};
push @reported_to_options,
@@ -780,28 +848,28 @@ sub council_rss_alert_options {
id => sprintf( 'council:%s:%s', $district->{id}, $district->{id_name} ),
text => $district->{name},
rss_text => sprintf( _('RSS feed of %s'), $district->{name}),
- uri => $self->uri( '/rss/reports/' . $district->{short_name} ),
+ uri => $c->uri_for( '/rss/reports/' . $district->{short_name} ),
},
{
type => 'ward',
id => sprintf( 'ward:%s:%s:%s:%s', $district->{id}, $d_ward->{id}, $district->{id_name}, $d_ward->{id_name} ),
rss_text => sprintf( _('RSS feed of %s, within %s ward'), $district->{name}, $d_ward->{name}),
text => sprintf( _('%s, within %s ward'), $district->{name}, $d_ward->{name}),
- uri => $self->uri( '/rss/reports/' . $district->{short_name} . '/' . $d_ward->{short_name} ),
+ uri => $c->uri_for( '/rss/reports/' . $district->{short_name} . '/' . $d_ward->{short_name} ),
},
{
type => 'council',
id => sprintf( 'council:%s:%s', $county->{id}, $county->{id_name} ),
text => $county->{name},
rss_text => sprintf( _('RSS feed of %s'), $county->{name}),
- uri => $self->uri( '/rss/reports/' . $county->{short_name} ),
+ uri => $c->uri_for( '/rss/reports/' . $county->{short_name} ),
},
{
type => 'ward',
id => sprintf( 'ward:%s:%s:%s:%s', $county->{id}, $c_ward->{id}, $county->{id_name}, $c_ward->{id_name} ),
rss_text => sprintf( _('RSS feed of %s, within %s ward'), $county->{name}, $c_ward->{name}),
text => sprintf( _('%s, within %s ward'), $county->{name}, $c_ward->{name}),
- uri => $self->uri( '/rss/reports/' . $county->{short_name} . '/' . $c_ward->{short_name} ),
+ uri => $c->uri_for( '/rss/reports/' . $county->{short_name} . '/' . $c_ward->{short_name} ),
};
diff --git a/perllib/FixMyStreet/Cobrand/EmptyHomes.pm b/perllib/FixMyStreet/Cobrand/EmptyHomes.pm
index 3694d984b..189daee0c 100644
--- a/perllib/FixMyStreet/Cobrand/EmptyHomes.pm
+++ b/perllib/FixMyStreet/Cobrand/EmptyHomes.pm
@@ -138,6 +138,7 @@ Generate a set of options for council rss alerts.
sub council_rss_alert_options {
my $self = shift;
my $all_councils = shift;
+ my $c = shift;
my %councils = map { $_ => 1 } $self->area_types();
@@ -160,14 +161,14 @@ sub council_rss_alert_options {
id => sprintf( 'council:%s:%s', $council->{id}, $council->{id_name} ),
text => sprintf( _('Problems within %s'), $council->{name}),
rss_text => sprintf( _('RSS feed of problems within %s'), $council->{name}),
- uri => $self->uri( '/rss/reports/' . $council->{short_name} ),
+ uri => $c->uri_for( '/rss/reports/' . $council->{short_name} ),
};
push @options, {
type => 'ward',
id => sprintf( 'ward:%s:%s:%s:%s', $council->{id}, $ward->{id}, $council->{id_name}, $ward->{id_name} ),
rss_text => sprintf( _('RSS feed of problems within %s ward'), $ward->{name}),
text => sprintf( _('Problems within %s ward'), $ward->{name}),
- uri => $self->uri( '/rss/reports/' . $council->{short_name} . '/' . $ward->{short_name} ),
+ uri => $c->uri_for( '/rss/reports/' . $council->{short_name} . '/' . $ward->{short_name} ),
};
return ( \@options, @reported_to_options ? \@reported_to_options : undef );
diff --git a/perllib/FixMyStreet/Cobrand/FiksGataMi.pm b/perllib/FixMyStreet/Cobrand/FiksGataMi.pm
index 3d855cf8e..4f3b975b3 100644
--- a/perllib/FixMyStreet/Cobrand/FiksGataMi.pm
+++ b/perllib/FixMyStreet/Cobrand/FiksGataMi.pm
@@ -6,6 +6,7 @@ use warnings;
use Carp;
use mySociety::MaPit;
+use FixMyStreet::Geocode::OSM;
sub country {
return 'NO';
@@ -35,7 +36,7 @@ sub disambiguate_location {
}
sub area_types {
- return ( 'NKO', 'NFY' );
+ return ( 'NKO', 'NFY', 'NRA' );
}
sub area_min_generation {
@@ -55,19 +56,60 @@ sub writetothem_url {
sub uri {
my ( $self, $uri ) = @_;
- $uri = URI->new( $uri );
$uri->query_param( zoom => 3 )
if $uri->query_param('lat') && !$uri->query_param('zoom');
return $uri;
}
+sub geocode_postcode {
+ my ( $self, $s ) = @_;
+
+ if ($s =~ /^\d{4}$/) {
+ my $location = mySociety::MaPit::call('postcode', $s);
+ if ($location->{error}) {
+ return {
+ error => $location->{code} =~ /^4/
+ ? _('That postcode was not recognised, sorry.')
+ : $location->{error}
+ };
+ }
+ return {
+ latitude => $location->{wgs84_lat},
+ longitude => $location->{wgs84_lon},
+ };
+ }
+ return {};
+}
+
sub geocoded_string_check {
my ( $self, $s ) = @_;
return 1 if $s =~ /, Norge/;
return 0;
}
+sub find_closest {
+ my ( $self, $latitude, $longitude ) = @_;
+ return FixMyStreet::Geocode::OSM::closest_road_text( $self, $latitude, $longitude );
+}
+
+# Used by send-reports, calling find_closest, calling OSM geocoding
+sub guess_road_operator {
+ my ( $self, $inforef ) = @_;
+
+ my $highway = $inforef->{highway} || "unknown";
+ my $refs = $inforef->{ref} || "unknown";
+
+ return "Statens vegvesen"
+ if $highway eq "trunk" || $highway eq "primary";
+
+ for my $ref (split(/;/, $refs)) {
+ return "Statens vegvesen"
+ if $ref =~ m/E ?\d+/ || $ref =~ m/Fv\d+/i;
+ }
+ return '';
+}
+
sub remove_redundant_councils {
my $self = shift;
my $all_councils = shift;
diff --git a/perllib/FixMyStreet/Cobrand/Lichfield.pm b/perllib/FixMyStreet/Cobrand/Lichfield.pm
new file mode 100644
index 000000000..9865bfa7b
--- /dev/null
+++ b/perllib/FixMyStreet/Cobrand/Lichfield.pm
@@ -0,0 +1,81 @@
+package FixMyStreet::Cobrand::Lichfield;
+use base 'FixMyStreet::Cobrand::Default';
+
+use strict;
+use warnings;
+
+use Carp;
+use URI::Escape;
+use mySociety::VotingArea;
+
+sub site_restriction {
+ return ( "and council like '%2434%'", 'lichfield', { council => '2434' } );
+}
+
+sub problems_clause {
+ return { council => { like => '%2434%' } };
+}
+
+sub problems {
+ my $self = shift;
+ return $self->{c}->model('DB::Problem')->search( $self->problems_clause );
+}
+
+sub base_url {
+ my $base_url = mySociety::Config::get('BASE_URL');
+ if ( $base_url !~ /lichfield/ ) {
+ $base_url =~ s{http://(?!www\.)}{http://lichfield.}g;
+ $base_url =~ s{http://www\.}{http://lichfield.}g;
+ }
+ return $base_url;
+}
+
+sub site_title {
+ my ($self) = @_;
+ return 'Lichfield Council FixMyStreet';
+}
+
+sub enter_postcode_text {
+ my ($self) = @_;
+ return 'Enter a Lichfield postcode, or street name and area';
+}
+
+sub council_check {
+ my ( $self, $params, $context ) = @_;
+
+ my $councils = $params->{all_councils};
+ my $council_match = defined $councils->{2434};
+ if ($council_match) {
+ return 1;
+ }
+ my $url = 'http://www.fixmystreet.com/';
+ $url .= 'alert' if $context eq 'alert';
+ $url .= '?pc=' . URI::Escape::uri_escape( $self->{c}->req->param('pc') )
+ if $self->{c}->req->param('pc');
+ my $error_msg = "That location is not covered by Lichfield.
+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;
+}
+
+# FIXME - need to double check this is all correct
+sub disambiguate_location {
+ return {
+ centre => '52.688198,-1.804966',
+ span => '0.1196,0.218675',
+ bounds => [ '52.807793,-1.586291', '52.584891,-1.963232' ],
+ };
+}
+
+sub recent_photos {
+ my ( $self, $num, $lat, $lon, $dist ) = @_;
+ $num = 2 if $num == 3;
+ return $self->problems->recent_photos( $num, $lat, $lon, $dist );
+}
+
+1;
+
diff --git a/perllib/FixMyStreet/Cobrand/Southampton.pm b/perllib/FixMyStreet/Cobrand/Southampton.pm
index abf6e3082..bd461f5e2 100644
--- a/perllib/FixMyStreet/Cobrand/Southampton.pm
+++ b/perllib/FixMyStreet/Cobrand/Southampton.pm
@@ -76,9 +76,5 @@ sub recent_photos {
return $self->problems->recent_photos( $num, $lat, $lon, $dist );
}
-sub tilma_mid_point {
- return 189;
-}
-
1;
diff --git a/perllib/FixMyStreet/DB/ResultSet/AlertType.pm b/perllib/FixMyStreet/DB/ResultSet/AlertType.pm
index a7e6d9736..bf085e32a 100644
--- a/perllib/FixMyStreet/DB/ResultSet/AlertType.pm
+++ b/perllib/FixMyStreet/DB/ResultSet/AlertType.pm
@@ -27,7 +27,8 @@ sub email_alerts ($) {
alert.cobrand_data as alert_cobrand_data, alert.parameter as alert_parameter, alert.parameter2 as alert_parameter2, ';
if ($head_table) {
$query .= "
- $item_table.id as item_id, $item_table.name as item_name, $item_table.text as item_text,
+ $item_table.id as item_id, $item_table.text as item_text,
+ $item_table.name as item_name, $item_table.anonymous as item_anonymous,
$head_table.*
from alert
inner join $item_table on alert.parameter::integer = $item_table.${head_table}_id
@@ -85,7 +86,7 @@ sub email_alerts ($) {
my $url = $cobrand->base_url_for_emails( $row->{alert_cobrand_data} );
if ($row->{item_text}) {
$data{problem_url} = $url . "/report/" . $row->{id};
- $data{data} .= $row->{item_name} . ' : ' if $row->{item_name};
+ $data{data} .= $row->{item_name} . ' : ' if $row->{item_name} && !$row->{item_anonymous};
$data{data} .= $row->{item_text} . "\n\n------\n\n";
} else {
$data{data} .= $url . "/report/" . $row->{id} . " - $row->{title}\n\n";
diff --git a/perllib/FixMyStreet/DB/ResultSet/Problem.pm b/perllib/FixMyStreet/DB/ResultSet/Problem.pm
index 4de8f2e5f..89f17fa60 100644
--- a/perllib/FixMyStreet/DB/ResultSet/Problem.pm
+++ b/perllib/FixMyStreet/DB/ResultSet/Problem.pm
@@ -161,10 +161,10 @@ sub timeline {
}
sub summary_count {
- my ( $rs, $restriction ) = @_;
+ my ( $rs ) = @_;
return $rs->search(
- $restriction,
+ undef,
{
group_by => ['state'],
select => [ 'state', { count => 'id' } ],
@@ -173,4 +173,31 @@ sub summary_count {
);
}
+sub unique_users {
+ my ( $rs ) = @_;
+
+ return $rs->search( {
+ state => [ 'confirmed', 'fixed' ],
+ }, {
+ select => [ { count => { distinct => 'user_id' } } ],
+ as => [ 'count' ]
+ } )->first->get_column('count');
+}
+
+sub categories_summary {
+ my ( $rs ) = @_;
+
+ my $categories = $rs->search( {
+ state => [ 'confirmed', 'fixed' ],
+ whensent => { '<' => \"NOW() - INTERVAL '4 weeks'" },
+ }, {
+ select => [ 'category', { count => 'id' }, { count => \"case when state='fixed' then 1 else null end" } ],
+ as => [ 'category', 'c', 'fixed' ],
+ group_by => [ 'category' ],
+ result_class => 'DBIx::Class::ResultClass::HashRefInflator'
+ } );
+ my %categories = map { $_->{category} => { total => $_->{c}, fixed => $_->{fixed} } } $categories->all;
+ return \%categories;
+}
+
1;
diff --git a/perllib/FixMyStreet/Geocode.pm b/perllib/FixMyStreet/Geocode.pm
index 286a10105..4ae3df368 100644
--- a/perllib/FixMyStreet/Geocode.pm
+++ b/perllib/FixMyStreet/Geocode.pm
@@ -9,53 +9,24 @@
package FixMyStreet::Geocode;
use strict;
-use Encode;
-use File::Slurp;
-use File::Path ();
-use LWP::Simple;
-use Digest::MD5 qw(md5_hex);
use URI::Escape;
-
-use mySociety::Locale;
-use mySociety::MaPit;
-use mySociety::PostcodeUtil;
-use mySociety::Web qw(NewURL);
+use FixMyStreet::Geocode::Bing;
+use FixMyStreet::Geocode::Google;
# lookup STRING CONTEXT
# Given a user-inputted string, try and convert it into co-ordinates using either
-# MaPit if it's a postcode, or Google Maps API otherwise. Returns an array of
+# MaPit if it's a postcode, or some web API otherwise. Returns an array of
# data, including an error if there is one (which includes a location being in
# Northern Ireland). The information in the query may be used by cobranded versions
# of the site to diambiguate locations.
sub lookup {
my ($s, $c) = @_;
- my ($latitude, $longitude, $error);
- if ( $c->cobrand->country eq 'GB') {
- if ($s =~ /^\d+$/) {
- $error = 'FixMyStreet is a UK-based website that currently works in England, Scotland, and Wales. Please enter either a postcode, or a Great British street name and area.';
- } elsif (mySociety::PostcodeUtil::is_valid_postcode($s)) {
- my $location = mySociety::MaPit::call('postcode', $s);
- unless ( $error = mapit_check_error( $c, $location ) ) {
- $latitude = $location->{wgs84_lat};
- $longitude = $location->{wgs84_lon};
- }
- }
- } elsif ( $c->cobrand->country eq 'NO') {
- if ($s =~ /^\d{4}$/) {
- my $location = mySociety::MaPit::call('postcode', $s);
- unless ( $error = mapit_check_error( $c, $location ) ) {
- $latitude = $location->{wgs84_lat};
- $longitude = $location->{wgs84_lon};
- }
- }
- }
- unless ($error || defined $latitude) {
- ($latitude, $longitude, $error) = FixMyStreet::Geocode::string($s, $c);
- }
- unless ($error || defined $latitude) {
- $error = _('Sorry, we could not find that location.');
- }
- return ($latitude, $longitude, $error);
+ my $data = $c->cobrand->geocode_postcode($s);
+ $data = string($s, $c)
+ unless $data->{error} || defined $data->{latitude};
+ $data->{error} = _('Sorry, we could not find that location.')
+ unless $data->{error} || defined $data->{latitude};
+ return ( $data->{latitude}, $data->{longitude}, $data->{error} );
}
# string STRING CONTEXT
@@ -68,148 +39,10 @@ sub string {
$s = URI::Escape::uri_escape_utf8($s);
$s =~ s/%20/+/g;
my $params = $c->cobrand->disambiguate_location();
- if ( FixMyStreet->config('BING_MAPS_API_KEY') ) {
- my $lookup = FixMyStreet::Geocode::string_bing($s, $c, $params);
- return ( $lookup->{latitude}, $lookup->{longitude}, $lookup->{error} );
- }
- if ( FixMyStreet->config('GOOGLE_MAPS_API_KEY') ) {
- my $lookup = FixMyStreet::Geocode::string_google($s, $c, $params);
- return ( $lookup->{latitude}, $lookup->{longitude}, $lookup->{error} );
- }
-}
-
-# string_google STRING CONTEXT
-# Looks up on Google Maps API, and caches, a user-inputted location.
-# Returns array of (LAT, LON, ERROR), where ERROR is either undef, a string, or
-# an array of matches if there are more than one. The information in the query
-# may be used to disambiguate the location in cobranded versions of the site.
-sub string_google {
- my ( $s, $c, $params ) = @_;
-
- my $url = 'http://maps.google.com/maps/geo?q=' . $s;
- $url .= '&ll=' . $params->{centre} if $params->{centre};
- $url .= '&spn=' . $params->{span} if $params->{span};
- $url .= '&gl=' . $params->{country} if $params->{country};
- $url .= '&hl=' . $params->{lang} if $params->{lang};
-
- my $cache_dir = FixMyStreet->config('GEO_CACHE') . 'google/';
- my $cache_file = $cache_dir . md5_hex($url);
- my $js;
- if (-s $cache_file) {
- $js = File::Slurp::read_file($cache_file);
- } else {
- # For some reason adding gl=uk is no longer sufficient to make google
- # think we are in the UK for some locations so we explictly add UK to
- # the address. We do it here so as not to invalidate existing cache
- # entries
- if ( $c->cobrand->country eq 'GB'
- && $url !~ /,\+UK/
- && $url !~ /united\++kingdom$/ )
- {
- if ( $url =~ /&/ ) {
- $url =~ s/&/,+UK&/;
- } else {
- $url .= ',+UK';
- }
- }
- $url .= '&sensor=false&key=' . FixMyStreet->config('GOOGLE_MAPS_API_KEY');
- $js = LWP::Simple::get($url);
- $js = encode_utf8($js) if utf8::is_utf8($js);
- File::Path::mkpath($cache_dir);
- File::Slurp::write_file($cache_file, $js) if $js && $js !~ /"code":6[12]0/;
- }
-
- if (!$js) {
- return { error => _('Sorry, we could not parse that location. Please try again.') };
- } elsif ($js =~ /BT\d/) {
- # Northern Ireland, hopefully
- return { error => _("We do not cover Northern Ireland, I'm afraid, as our licence doesn't include any maps for the region.") };
- }
-
- $js = JSON->new->utf8->allow_nonref->decode($js);
- if ($js->{Status}->{code} ne '200') {
- return { error => _('Sorry, we could not find that location.') };
- }
-
- my $results = $js->{Placemark};
- my ( $error, @valid_locations, $latitude, $longitude );
- foreach (@$results) {
- next unless $_->{AddressDetails}->{Accuracy} >= 4;
- my $address = $_->{address};
- next unless $c->cobrand->geocoded_string_check( $address );
- ( $longitude, $latitude ) = @{ $_->{Point}->{coordinates} };
- push (@$error, $address);
- push (@valid_locations, $_);
- }
- return { latitude => $latitude, longitude => $longitude } if scalar @valid_locations == 1;
- return { error => $error };
-}
-
-# string_bing STRING CONTEXT
-# Looks up on Bing Maps API, and caches, a user-inputted location.
-# Returns array of (LAT, LON, ERROR), where ERROR is either undef, a string, or
-# an array of matches if there are more than one. The information in the query
-# may be used to disambiguate the location in cobranded versions of the site.
-sub string_bing {
- my ( $s, $c, $params ) = @_;
- my $url = "http://dev.virtualearth.net/REST/v1/Locations?q=$s&c=en-GB"; # FIXME nb-NO for Norway
- $url .= '&mapView=' . $params->{bounds}[0] . ',' . $params->{bounds}[1]
- if $params->{bounds};
- $url .= '&userLocation=' . $params->{centre} if $params->{centre};
-
- my $cache_dir = FixMyStreet->config('GEO_CACHE') . 'bing/';
- my $cache_file = $cache_dir . md5_hex($url);
- my $js;
- if (-s $cache_file) {
- $js = File::Slurp::read_file($cache_file);
- } else {
- $url .= '&key=' . FixMyStreet->config('BING_MAPS_API_KEY');
- $js = LWP::Simple::get($url);
- $js = encode_utf8($js) if utf8::is_utf8($js);
- File::Path::mkpath($cache_dir);
- File::Slurp::write_file($cache_file, $js) if $js;
- }
-
- if (!$js) {
- return { error => _('Sorry, we could not parse that location. Please try again.') };
- } elsif ($js =~ /BT\d/) {
- return { error => _("We do not cover Northern Ireland, I'm afraid, as our licence doesn't include any maps for the region.") };
- }
-
- $js = JSON->new->utf8->allow_nonref->decode($js);
- if ($js->{statusCode} ne '200') {
- return { error => _('Sorry, we could not find that location.') };
- }
-
- my $results = $js->{resourceSets}->[0]->{resources};
- my ( $error, @valid_locations, $latitude, $longitude );
- foreach (@$results) {
- my $address = $_->{name};
- next unless $_->{address}->{countryRegion} eq 'United Kingdom'; # FIXME This is UK only
- ( $latitude, $longitude ) = @{ $_->{point}->{coordinates} };
- push (@$error, $address);
- push (@valid_locations, $_);
- }
- return { latitude => $latitude, longitude => $longitude } if scalar @valid_locations == 1;
- return { error => $error };
-}
-
-sub mapit_check_error {
- my ( $c, $location ) = @_;
- if ($location->{error}) {
- return _('That postcode was not recognised, sorry.') if $location->{code} =~ /^4/;
- return $location->{error};
- }
- if ( $c->cobrand->country eq 'GB') {
- my $island = $location->{coordsyst};
- if (!$island) {
- return _("Sorry, that appears to be a Crown dependency postcode, which we don't cover.");
- }
- if ($island eq 'I') {
- return _("We do not cover Northern Ireland, I'm afraid, as our licence doesn't include any maps for the region.");
- }
- }
- return 0;
+ return FixMyStreet::Geocode::Bing::string($s, $c, $params)
+ if FixMyStreet->config('BING_MAPS_API_KEY');
+ return FixMyStreet::Geocode::Google::string($s, $c, $params)
+ if FixMyStreet->config('GOOGLE_MAPS_API_KEY');
}
1;
diff --git a/perllib/FixMyStreet/Geocode/Bing.pm b/perllib/FixMyStreet/Geocode/Bing.pm
new file mode 100644
index 000000000..cfeffc856
--- /dev/null
+++ b/perllib/FixMyStreet/Geocode/Bing.pm
@@ -0,0 +1,67 @@
+#!/usr/bin/perl
+#
+# FixMyStreet::Geocode::Bing
+# Geocoding with Bing for FixMyStreet.
+#
+# Copyright (c) 2011 UK Citizens Online Democracy. All rights reserved.
+# Email: matthew@mysociety.org; WWW: http://www.mysociety.org/
+
+package FixMyStreet::Geocode::Bing;
+
+use strict;
+use Encode;
+use File::Slurp;
+use File::Path ();
+use LWP::Simple;
+use Digest::MD5 qw(md5_hex);
+
+# string STRING CONTEXT
+# Looks up on Bing Maps API, and caches, a user-inputted location.
+# Returns array of (LAT, LON, ERROR), where ERROR is either undef, a string, or
+# an array of matches if there are more than one. The information in the query
+# may be used to disambiguate the location in cobranded versions of the site.
+sub string {
+ my ( $s, $c, $params ) = @_;
+ my $url = "http://dev.virtualearth.net/REST/v1/Locations?q=$s&c=en-GB"; # FIXME nb-NO for Norway
+ $url .= '&mapView=' . $params->{bounds}[0] . ',' . $params->{bounds}[1]
+ if $params->{bounds};
+ $url .= '&userLocation=' . $params->{centre} if $params->{centre};
+
+ my $cache_dir = FixMyStreet->config('GEO_CACHE') . 'bing/';
+ my $cache_file = $cache_dir . md5_hex($url);
+ my $js;
+ if (-s $cache_file) {
+ $js = File::Slurp::read_file($cache_file);
+ } else {
+ $url .= '&key=' . FixMyStreet->config('BING_MAPS_API_KEY');
+ $js = LWP::Simple::get($url);
+ $js = encode_utf8($js) if utf8::is_utf8($js);
+ File::Path::mkpath($cache_dir);
+ File::Slurp::write_file($cache_file, $js) if $js;
+ }
+
+ if (!$js) {
+ return { error => _('Sorry, we could not parse that location. Please try again.') };
+ } elsif ($js =~ /BT\d/) {
+ return { error => _("We do not cover Northern Ireland, I'm afraid, as our licence doesn't include any maps for the region.") };
+ }
+
+ $js = JSON->new->utf8->allow_nonref->decode($js);
+ if ($js->{statusCode} ne '200') {
+ return { error => _('Sorry, we could not find that location.') };
+ }
+
+ my $results = $js->{resourceSets}->[0]->{resources};
+ my ( $error, @valid_locations, $latitude, $longitude );
+ foreach (@$results) {
+ my $address = $_->{name};
+ next unless $_->{address}->{countryRegion} eq 'United Kingdom'; # FIXME This is UK only
+ ( $latitude, $longitude ) = @{ $_->{point}->{coordinates} };
+ push (@$error, $address);
+ push (@valid_locations, $_);
+ }
+ return { latitude => $latitude, longitude => $longitude } if scalar @valid_locations == 1;
+ return { error => $error };
+}
+
+1;
diff --git a/perllib/FixMyStreet/Geocode/Google.pm b/perllib/FixMyStreet/Geocode/Google.pm
new file mode 100644
index 000000000..c37a750a2
--- /dev/null
+++ b/perllib/FixMyStreet/Geocode/Google.pm
@@ -0,0 +1,85 @@
+#!/usr/bin/perl
+#
+# FixMyStreet::Geocode
+# The geocoding functions for FixMyStreet.
+#
+# Copyright (c) 2010 UK Citizens Online Democracy. All rights reserved.
+# Email: matthew@mysociety.org; WWW: http://www.mysociety.org/
+
+package FixMyStreet::Geocode::Google;
+
+use strict;
+use Encode;
+use File::Slurp;
+use File::Path ();
+use LWP::Simple;
+use Digest::MD5 qw(md5_hex);
+
+# string STRING CONTEXT
+# Looks up on Google Maps API, and caches, a user-inputted location.
+# Returns array of (LAT, LON, ERROR), where ERROR is either undef, a string, or
+# an array of matches if there are more than one. The information in the query
+# may be used to disambiguate the location in cobranded versions of the site.
+sub string {
+ my ( $s, $c, $params ) = @_;
+
+ my $url = 'http://maps.google.com/maps/geo?q=' . $s;
+ $url .= '&ll=' . $params->{centre} if $params->{centre};
+ $url .= '&spn=' . $params->{span} if $params->{span};
+ $url .= '&gl=' . $params->{country} if $params->{country};
+ $url .= '&hl=' . $params->{lang} if $params->{lang};
+
+ my $cache_dir = FixMyStreet->config('GEO_CACHE') . 'google/';
+ my $cache_file = $cache_dir . md5_hex($url);
+ my $js;
+ if (-s $cache_file) {
+ $js = File::Slurp::read_file($cache_file);
+ } else {
+ # For some reason adding gl=uk is no longer sufficient to make google
+ # think we are in the UK for some locations so we explictly add UK to
+ # the address. We do it here so as not to invalidate existing cache
+ # entries
+ if ( $c->cobrand->country eq 'GB'
+ && $url !~ /,\+UK/
+ && $url !~ /united\++kingdom$/ )
+ {
+ if ( $url =~ /&/ ) {
+ $url =~ s/&/,+UK&/;
+ } else {
+ $url .= ',+UK';
+ }
+ }
+ $url .= '&sensor=false&key=' . FixMyStreet->config('GOOGLE_MAPS_API_KEY');
+ $js = LWP::Simple::get($url);
+ $js = encode_utf8($js) if utf8::is_utf8($js);
+ File::Path::mkpath($cache_dir);
+ File::Slurp::write_file($cache_file, $js) if $js && $js !~ /"code":6[12]0/;
+ }
+
+ if (!$js) {
+ return { error => _('Sorry, we could not parse that location. Please try again.') };
+ } elsif ($js =~ /BT\d/) {
+ # Northern Ireland, hopefully
+ return { error => _("We do not currently cover Northern Ireland, I'm afraid.") };
+ }
+
+ $js = JSON->new->utf8->allow_nonref->decode($js);
+ if ($js->{Status}->{code} ne '200') {
+ return { error => _('Sorry, we could not find that location.') };
+ }
+
+ my $results = $js->{Placemark};
+ my ( $error, @valid_locations, $latitude, $longitude );
+ foreach (@$results) {
+ next unless $_->{AddressDetails}->{Accuracy} >= 4;
+ my $address = $_->{address};
+ next unless $c->cobrand->geocoded_string_check( $address );
+ ( $longitude, $latitude ) = @{ $_->{Point}->{coordinates} };
+ push (@$error, $address);
+ push (@valid_locations, $_);
+ }
+ return { latitude => $latitude, longitude => $longitude } if scalar @valid_locations == 1;
+ return { error => $error };
+}
+
+1;
diff --git a/perllib/FixMyStreet/Geocode/OSM.pm b/perllib/FixMyStreet/Geocode/OSM.pm
new file mode 100644
index 000000000..b1becaa7a
--- /dev/null
+++ b/perllib/FixMyStreet/Geocode/OSM.pm
@@ -0,0 +1,116 @@
+#!/usr/bin/perl
+#
+# FixMyStreet:Geocode::OSM
+# OpenStreetmap forward and reverse geocoding for FixMyStreet.
+#
+# Copyright (c) 2011 Petter Reinholdtsen. Some rights reserved.
+# Email: pere@hungry.com
+
+package FixMyStreet::Geocode::OSM;
+
+use warnings;
+use strict;
+
+use Memcached;
+use mySociety::Config;
+use LWP::Simple;
+use XML::Simple;
+
+my $osmapibase = "http://www.openstreetmap.org/api/";
+my $nominatimbase = "http://nominatim.openstreetmap.org/";
+
+
+sub lookup_location {
+ my ($latitude, $longitude, $zoom) = @_;
+ my $url =
+ "${nominatimbase}reverse?format=xml&zoom=$zoom&lat=$latitude&lon=$longitude";
+ my $key = "OSM:lookup_location:$url";
+ my $result = Memcached::get($key);
+ unless ($result) {
+ my $j = LWP::Simple::get($url);
+ if ($j) {
+ Memcached::set($key, $j, 3600);
+ my $ref = XMLin($j);
+ return $ref;
+ } else {
+ print STDERR "No reply from $url\n";
+ }
+ return undef;
+ }
+ return XMLin($result);
+}
+
+sub _osmxml_to_hash {
+ my ($xml, $type) = @_;
+ my $ref = XMLin($xml);
+ my %tags;
+ if ('ARRAY' eq ref $ref->{$type}->{tag}) {
+ map { $tags{$_->{'k'}} = $_->{'v'} } @{$ref->{$type}->{tag}};
+ return \%tags;
+ } else {
+ return undef;
+ }
+}
+
+sub get_object_tags {
+ my ($type, $id) = @_;
+ my $url = "${osmapibase}0.6/$type/$id";
+ my $key = "OSM:get_object_tags:$url";
+ my $result = Memcached::get($key);
+ unless ($result) {
+ my $j = LWP::Simple::get($url);
+ if ($j) {
+ Memcached::set($key, $j, 3600);
+ return _osmxml_to_hash($j, $type);
+ } else {
+ print STDERR "No reply from $url\n";
+ }
+ return undef;
+ }
+ return _osmxml_to_hash($result, $type);
+}
+
+# A better alternative might be
+# http://www.geonames.org/maps/osm-reverse-geocoder.html#findNearbyStreetsOSM
+sub get_nearest_road_tags {
+ my ( $cobrand, $latitude, $longitude ) = @_;
+ my $inforef = lookup_location($latitude, $longitude, 16);
+ if (exists $inforef->{result}->{osm_type}
+ && 'way' eq $inforef->{result}->{osm_type}) {
+ my $osmtags = get_object_tags('way',
+ $inforef->{result}->{osm_id});
+ unless ( exists $osmtags->{operator} ) {
+ $osmtags->{operatorguess} = $cobrand->guess_road_operator( $osmtags );
+ }
+ return $osmtags;
+ }
+ return undef;
+}
+
+sub closest_road_text {
+ my ( $cobrand, $latitude, $longitude ) = @_;
+ my $str = '';
+ my $osmtags = get_nearest_road_tags( $cobrand, $latitude, $longitude );
+ if ($osmtags) {
+ my ($name, $ref) = ('','');
+ $name = $osmtags->{name} if exists $osmtags->{name};
+ $ref = " ($osmtags->{ref})" if exists $osmtags->{ref};
+ if ($name || $ref) {
+ $str .= _('The following information about the nearest road might be inaccurate or irrelevant, if the problem is close to several roads or close to a road without a name registered in OpenStreetMap.') . "\n\n";
+ $str .= sprintf(_("Nearest named road to the pin placed on the map (automatically generated using OpenStreetMap): %s%s"),
+ $name, $ref) . "\n\n";
+
+ if (my $operator = $osmtags->{operator}) {
+ $str .= sprintf(_("Road operator for this named road (from OpenStreetMap): %s"),
+ $operator) . "\n\n";
+ } elsif ($operator = $osmtags->{operatorguess}) {
+ $str .= sprintf(_("Road operator for this named road (derived from road reference number and type): %s"),
+ $operator) . "\n\n";
+ }
+ }
+ }
+ return $str;
+}
+
+1;
+
diff --git a/perllib/FixMyStreet/Map.pm b/perllib/FixMyStreet/Map.pm
index 6b5a811a6..825e1cd19 100644
--- a/perllib/FixMyStreet/Map.pm
+++ b/perllib/FixMyStreet/Map.pm
@@ -13,7 +13,6 @@ use strict;
use Module::Pluggable
sub_name => 'maps',
search_path => __PACKAGE__,
- except => 'FixMyStreet::Map::Tilma::Original',
require => 1;
# Get the list of maps we want and load map classes at compile time
@@ -23,6 +22,7 @@ use mySociety::Config;
use mySociety::Gaze;
use mySociety::Locale;
use mySociety::Web qw(ent);
+use Utils;
=head2 allowed_maps
@@ -124,8 +124,19 @@ sub click_to_wgs84 {
return $map_class->click_to_wgs84(@_);
}
+=head2 tile_xy_to_wgs84
+
+Takes the tile x,y and converts to lat, lon. Legacy to deal with old URLs,
+hence hard-coded things.
+
+=cut
+
sub tile_xy_to_wgs84 {
- return $map_class->tile_xy_to_wgs84(@_);
+ my ( $x, $y ) = @_;
+ my $easting = int( $x * (5000/31) + 0.5 );
+ my $northing = int( $y * (5000/31) + 0.5 );
+ my ( $lat, $lon ) = Utils::convert_en_to_latlon( $easting, $northing );
+ return ( $lat, $lon );
}
1;
diff --git a/perllib/FixMyStreet/Map/FMS.pm b/perllib/FixMyStreet/Map/FMS.pm
index c54ee8f3b..2e40bfde3 100644
--- a/perllib/FixMyStreet/Map/FMS.pm
+++ b/perllib/FixMyStreet/Map/FMS.pm
@@ -41,17 +41,17 @@ sub map_tiles {
my ($self, $x, $y, $z) = @_;
if ($z >= 16) {
return [
- "http://a.os.openstreetmap.org/sv/$z/" . ($x-1) . "/" . ($y-1) . ".png",
- "http://b.os.openstreetmap.org/sv/$z/$x/" . ($y-1) . ".png",
- "http://c.os.openstreetmap.org/sv/$z/" . ($x-1) . "/$y.png",
- "http://os.openstreetmap.org/sv/$z/$x/$y.png",
+ "http://a.tilma.mysociety.org/sv/$z/" . ($x-1) . "/" . ($y-1) . ".png",
+ "http://b.tilma.mysociety.org/sv/$z/$x/" . ($y-1) . ".png",
+ "http://c.tilma.mysociety.org/sv/$z/" . ($x-1) . "/$y.png",
+ "http://tilma.mysociety.org/sv/$z/$x/$y.png",
];
} else {
return [
- "http://ecn.t0.tiles.virtualearth.net/tiles/r" . get_quadkey($x-1, $y-1, $z) . ".png?g=587&productSet=mmOS",
- "http://ecn.t1.tiles.virtualearth.net/tiles/r" . get_quadkey($x, $y-1, $z) . ".png?g=587&productSet=mmOS",
- "http://ecn.t2.tiles.virtualearth.net/tiles/r" . get_quadkey($x-1, $y, $z) . ".png?g=587&productSet=mmOS",
- "http://ecn.t3.tiles.virtualearth.net/tiles/r" . get_quadkey($x, $y, $z) . ".png?g=587&productSet=mmOS",
+ "http://ecn.t0.tiles.virtualearth.net/tiles/r" . get_quadkey($x-1, $y-1, $z) . ".png?g=701&productSet=mmOS",
+ "http://ecn.t1.tiles.virtualearth.net/tiles/r" . get_quadkey($x, $y-1, $z) . ".png?g=701&productSet=mmOS",
+ "http://ecn.t2.tiles.virtualearth.net/tiles/r" . get_quadkey($x-1, $y, $z) . ".png?g=701&productSet=mmOS",
+ "http://ecn.t3.tiles.virtualearth.net/tiles/r" . get_quadkey($x, $y, $z) . ".png?g=701&productSet=mmOS",
];
}
}
diff --git a/perllib/FixMyStreet/Map/Tilma/OL/1_10k.pm b/perllib/FixMyStreet/Map/Tilma/OL/1_10k.pm
deleted file mode 100644
index 34df8dc8b..000000000
--- a/perllib/FixMyStreet/Map/Tilma/OL/1_10k.pm
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/perl
-#
-# FixMyStreet:Map::Tilma::1_10k_OL
-# Using tilma.mysociety.org with OpenLayers
-#
-# Copyright (c) 2010 UK Citizens Online Democracy. All rights reserved.
-# Email: matthew@mysociety.org; WWW: http://www.mysociety.org/
-
-package FixMyStreet::Map::Tilma::OL::1_10k;
-use base 'FixMyStreet::Map::Tilma::OpenLayers';
-
-use strict;
-
-sub tile_width { return 254; }
-sub tif_size_m { return 5000; }
-sub tif_size_px { return 7874; }
-sub scale_factor { return tif_size_m() / (tif_size_px() / tile_width()); }
-sub tile_type { return '10k-full'; }
-
-sub copyright {
- return _('&copy; Crown copyright. All rights reserved. Ministry of Justice 100037819&nbsp;2008.');
-}
-
-sub watermark {
- return 1;
-}
-
-1;
diff --git a/perllib/FixMyStreet/Map/Tilma/OL/StreetView.pm b/perllib/FixMyStreet/Map/Tilma/OL/StreetView.pm
deleted file mode 100644
index 2a531766c..000000000
--- a/perllib/FixMyStreet/Map/Tilma/OL/StreetView.pm
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/perl
-#
-# FixMyStreet:Map::TilmaXY
-# Using tilma.mysociety.org but accessing images directly.
-#
-# Copyright (c) 2010 UK Citizens Online Democracy. All rights reserved.
-# Email: matthew@mysociety.org; WWW: http://www.mysociety.org/
-
-package FixMyStreet::Map::Tilma::OL::StreetView;
-use base 'FixMyStreet::Map::Tilma::OpenLayers';
-
-use strict;
-
-sub tile_width { return 250; }
-sub tif_size_m { return 5000; }
-sub tif_size_px { return 5000; }
-sub scale_factor { return tif_size_m() / (tif_size_px() / tile_width()); }
-sub tile_type { return 'streetview'; }
-
-sub copyright {
- return _('Map contains Ordnance Survey data &copy; Crown copyright and database right 2010.');
-}
-
-sub watermark {
- return 0;
-}
-
-1;
diff --git a/perllib/FixMyStreet/Map/Tilma/OpenLayers.pm b/perllib/FixMyStreet/Map/Tilma/OpenLayers.pm
deleted file mode 100644
index 31e9eb096..000000000
--- a/perllib/FixMyStreet/Map/Tilma/OpenLayers.pm
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/perl
-#
-# FixMyStreet:Map::Tilma::1_10k_OL
-# Using tilma.mysociety.org with OpenLayers
-#
-# Copyright (c) 2010 UK Citizens Online Democracy. All rights reserved.
-# Email: matthew@mysociety.org; WWW: http://www.mysociety.org/
-
-package FixMyStreet::Map::Tilma::OpenLayers;
-
-use strict;
-
-sub TILE_WIDTH() { return $FixMyStreet::Map::map_class->tile_width; }
-sub SCALE_FACTOR() { return $FixMyStreet::Map::map_class->scale_factor; }
-sub TILE_TYPE() { return $FixMyStreet::Map::map_class->tile_type; }
-
-# display_map C PARAMS
-# PARAMS include:
-# latitude, longitude for the centre point of the map
-# TYPE is 1 if the map is clickable, 0 otherwise.
-# PINS is array of pins to show, location and colour
-sub display_map {
- my ($self, $c, %params) = @_;
- $c->stash->{map} = {
- %params,
- type => 'tilma/openlayers',
- tile_type => TILE_TYPE,
- tilewidth => TILE_WIDTH,
- watermark => $self->watermark(),
- copyright => $self->copyright(),
- maxResolution => SCALE_FACTOR / TILE_WIDTH,
- };
-}
-
-1;
diff --git a/perllib/FixMyStreet/Map/Tilma/Original.pm b/perllib/FixMyStreet/Map/Tilma/Original.pm
deleted file mode 100644
index 46cf3ad40..000000000
--- a/perllib/FixMyStreet/Map/Tilma/Original.pm
+++ /dev/null
@@ -1,250 +0,0 @@
-#!/usr/bin/perl
-#
-# FixMyStreet:Map
-# Adding the ability to have different maps on FixMyStreet.
-#
-# Copyright (c) 2010 UK Citizens Online Democracy. All rights reserved.
-# Email: matthew@mysociety.org; WWW: http://www.mysociety.org/
-
-package FixMyStreet::Map::Tilma::Original;
-
-use strict;
-use LWP::Simple;
-
-use mySociety::GeoUtil;
-use mySociety::Locale;
-use mySociety::Web qw(ent NewURL);
-use Utils;
-use RABX;
-
-sub TILE_WIDTH() { return $FixMyStreet::Map::map_class->tile_width; }
-sub SCALE_FACTOR() { return $FixMyStreet::Map::map_class->scale_factor; }
-sub TILE_TYPE() { return $FixMyStreet::Map::map_class->tile_type; }
-
-sub _ll_to_en {
- my ($lat, $lon) = @_;
- return Utils::convert_latlon_to_en( $lat, $lon );
-}
-
-# display_map C PARAMS
-# PARAMS include:
-# latitude, longitude for the centre point of the map
-# CLICKABLE is set if the map is clickable
-# PINS is array of pins to show, location and colour
-sub display_map {
- my ($self, $c, %params) = @_;
- my $mid_point = TILE_WIDTH; # Map is 2 TILE_WIDTHs in size, square.
- if (my $mp = $c->cobrand->tilma_mid_point) {
- $mid_point = $mp;
- }
-
- # convert map center point to easting, northing
- ( $params{easting}, $params{northing} ) =
- _ll_to_en( $params{latitude}, $params{longitude} );
-
- # X/Y tile co-ords may be overridden in the query string
- my @vars = qw(x y);
- my %input = map { $_ => $c->req->params->{$_} || '' } @vars;
- ($input{x}) = $input{x} =~ /^(\d+)/; $input{x} ||= 0;
- ($input{y}) = $input{y} =~ /^(\d+)/; $input{y} ||= 0;
-
- my ($x, $y, $px, $py) = os_to_px_with_adjust($c, $params{easting}, $params{northing}, $input{x}, $input{y});
-
- foreach my $pin (@{$params{pins}}) {
- my ( $e, $n ) = _ll_to_en( $pin->{latitude}, $pin->{longitude} );
- $pin->{px} = os_to_px($e, $x);
- $pin->{py} = os_to_px($n, $y, 1);
- }
-
- $px = defined($px) ? $mid_point - $px : 0;
- $py = defined($py) ? $mid_point - $py : 0;
- $x = int($x)<=0 ? 0 : $x;
- $y = int($y)<=0 ? 0 : $y;
- my $url = 'http://tilma.mysociety.org/tileserver/' . TILE_TYPE . '/';
- my $tiles_url = $url . ($x-1) . '-' . $x . ',' . ($y-1) . '-' . $y . '/RABX';
- my $tiles = LWP::Simple::get($tiles_url);
- my $tileids = RABX::unserialise($tiles);
- $c->stash->{map} = {
- %params,
- type => 'tilma/original',
- tiles => $tiles,
- url => $url,
- tileids => $tileids,
- x => $x,
- y => $y,
- px => $px,
- py => $py,
- tile_type => TILE_TYPE,
- tilewidth => TILE_WIDTH,
- watermark => $self->watermark(),
- copyright => $self->copyright(),
- };
-}
-
-sub display_pin {
- my ($c, $px, $py, $col, $id, $title, $num) = @_;
- $num = '' if !$num || $num > 9;
- my $host = $c->cobrand->base_url_with_lang;
- my %cols = (red=>'R', green=>'G', blue=>'B', purple=>'P');
- my $out = '<img class="pin" src="' . $host . '/i/pin' . $cols{$col}
- . $num . '.gif" alt="' . _('Problem') . '" style="top:' . ($py-59)
- . 'px; left:' . ($px) . 'px; position: absolute;">';
- return $out unless $id;
- my $url = $c->uri_for( '/report/' . $id );
- $out = '<a title="' . ent($title) . '" href="' . $url . '">' . $out . '</a>';
- return $out;
-}
-
-sub map_pins {
- my ($self, $c, $interval) = @_;
-
- # Our current X/Y middle of visible map
- my $x = ( $c->req->param('x') || 0 ) + 0;
- my $y = ( $c->req->param('y') || 0 ) + 0;
-
- # Where we started as that's the (0,0) we have to work to
- my $sx = ( $c->req->param('sx') || 0 ) + 0;
- my $sy = ( $c->req->param('sy') || 0 ) + 0;
-
- my $e = tile_to_os($x);
- my $n = tile_to_os($y);
-
- my ( $lat, $lon ) = Utils::convert_en_to_latlon( $e, $n );
-
- my ( $around_map, $around_map_list, $nearby, $dist ) =
- FixMyStreet::Map::map_features( $c, $lat, $lon, $interval );
-
- my $pins = '';
- foreach (@$around_map) {
- my ( $easting, $northing ) =
- _ll_to_en( $_->latitude, $_->longitude );
- my $px = os_to_px($easting, $sx);
- my $py = os_to_px($northing, $sy, 1);
- my $col = exists FixMyStreet::DB::Result::Problem->fixed_states()->{$_->state} ? 'green' : 'red';
- $pins .= display_pin($c, $px, $py, $col, $_->id, $_->title);
- }
-
- foreach (@$nearby) {
- my $p = $_->problem;
- my ( $easting, $northing ) =
- _ll_to_en( $p->latitude, $p->longitude );
- my $px = os_to_px($easting, $sx);
- my $py = os_to_px($northing, $sy, 1);
- my $col = exists FixMyStreet::DB::Result::Problem->fixed_states()->{$p->state} ? 'green' : 'red';
- $pins .= display_pin($c, $px, $py, $col, $p->id, $p->title);
- }
-
- return ($pins, $around_map_list, $nearby, $dist);
-}
-
-# P is easting or northing
-# C is centre tile reference of displayed map
-sub os_to_px {
- my ($p, $c, $invert) = @_;
- return tile_to_px(os_to_tile($p), $c, $invert);
-}
-
-# Convert tile co-ordinates to pixel co-ordinates from top left of map
-# C is centre tile reference of displayed map
-sub tile_to_px {
- my ($p, $c, $invert) = @_;
- $p = TILE_WIDTH * ($p - $c + 1);
- $p = 2 * TILE_WIDTH - $p if $invert;
- $p = int($p + .5 * ($p <=> 0));
- return $p;
-}
-
-# Tile co-ordinates are linear scale of OS E/N
-# Will need more generalising when more zooms appear
-sub os_to_tile {
- return $_[0] / SCALE_FACTOR;
-}
-
-sub tile_to_os {
- return int($_[0] * SCALE_FACTOR + 0.5);
-}
-
-=head2 tile_xy_to_wgs84
-
- ($lat, $lon) = tile_xy_to_wgs84( $x, $y );
-
-Takes the tile x,y and converts to lat, lon.
-
-=cut
-
-sub tile_xy_to_wgs84 {
- my ( $self, $x, $y ) = @_;
-
- my $easting = tile_to_os($x);
- my $northing = tile_to_os($y);
-
- my ( $lat, $lon ) = Utils::convert_en_to_latlon( $easting, $northing );
- return ( $lat, $lon );
-}
-
-
-sub click_to_tile {
- my ($pin_tile, $pin, $invert) = @_;
- $pin -= TILE_WIDTH while $pin > TILE_WIDTH;
- $pin += TILE_WIDTH while $pin < 0;
- $pin = TILE_WIDTH - $pin if $invert; # image submits measured from top down
- return $pin_tile + $pin / TILE_WIDTH;
-}
-
-# Given some click co-ords (the tile they were on, and where in the
-# tile they were), convert to OSGB36 and return.
-sub click_to_os {
- my ($pin_tile_x, $pin_x, $pin_tile_y, $pin_y) = @_;
- my $tile_x = click_to_tile($pin_tile_x, $pin_x);
- my $tile_y = click_to_tile($pin_tile_y, $pin_y, 1);
- my $easting = tile_to_os($tile_x);
- my $northing = tile_to_os($tile_y);
- return ($easting, $northing);
-}
-
-# Given some click co-ords (the tile they were on, and where in the
-# tile they were), convert to WGS84 and return.
-sub click_to_wgs84 {
- my $self = shift;
- my $c = shift;
- my ( $easting, $northing ) = click_to_os(@_);
- my ( $lat, $lon ) = mySociety::GeoUtil::national_grid_to_wgs84( $easting, $northing, 'G' );
- return ( $lat, $lon );
-}
-
-# Given (E,N) and potential override (X,Y), return the X/Y tile for the centre
-# of the map (either to get the point near the middle, or the override X,Y),
-# and the pixel co-ords of the point, relative to that map.
-sub os_to_px_with_adjust {
- my ($c, $easting, $northing, $in_x, $in_y) = @_;
-
- my $x = os_to_tile($easting);
- my $y = os_to_tile($northing);
- my $x_tile = $in_x || int($x);
- my $y_tile = $in_y || int($y);
-
- # Try and have point near centre of map
- if (!$in_x && $x - $x_tile > 0.5) {
- $x_tile += 1;
- }
- if (!$in_y && $y - $y_tile > 0.5) {
- $y_tile += 1;
- }
-
- my $px = os_to_px($easting, $x_tile);
- my $py = os_to_px($northing, $y_tile, 1);
- if ($c->cobrand->tilma_mid_point == 189) { # Map is 380px, so might need to adjust
- if (!$in_x && $px > 380) {
- $x_tile++;
- $px = os_to_px($easting, $x_tile);
- }
- if (!$in_y && $py > 380) {
- $y_tile--;
- $py = os_to_px($northing, $y_tile, 1);
- }
- }
-
- return ($x_tile, $y_tile, $px, $py);
-}
-
-1;
diff --git a/perllib/FixMyStreet/Map/Tilma/Original/1_10k.pm b/perllib/FixMyStreet/Map/Tilma/Original/1_10k.pm
deleted file mode 100644
index 722df2a46..000000000
--- a/perllib/FixMyStreet/Map/Tilma/Original/1_10k.pm
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/perl
-#
-# FixMyStreet:Map
-# Adding the ability to have different maps on FixMyStreet.
-#
-# Copyright (c) 2010 UK Citizens Online Democracy. All rights reserved.
-# Email: matthew@mysociety.org; WWW: http://www.mysociety.org/
-
-package FixMyStreet::Map::Tilma::Original::1_10k;
-use base 'FixMyStreet::Map::Tilma::Original';
-
-use strict;
-
-sub tile_width { return 254; }
-sub tif_size_m { return 5000; }
-sub tif_size_px { return 7874; }
-sub scale_factor { return tif_size_m() / (tif_size_px() / tile_width()); }
-sub tile_type { return '10k-full'; }
-
-sub copyright {
- return _('&copy; Crown copyright. All rights reserved. Ministry of Justice 100037819&nbsp;2008.');
-}
-
-sub watermark {
- return 1;
-}
-
-1;
diff --git a/perllib/FixMyStreet/Map/Tilma/Original/StreetView.pm b/perllib/FixMyStreet/Map/Tilma/Original/StreetView.pm
deleted file mode 100644
index fe03fdb00..000000000
--- a/perllib/FixMyStreet/Map/Tilma/Original/StreetView.pm
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/perl
-#
-# FixMyStreet:Map
-# Adding the ability to have different maps on FixMyStreet.
-#
-# Copyright (c) 2010 UK Citizens Online Democracy. All rights reserved.
-# Email: matthew@mysociety.org; WWW: http://www.mysociety.org/
-
-package FixMyStreet::Map::Tilma::Original::StreetView;
-use base 'FixMyStreet::Map::Tilma::Original';
-
-use strict;
-
-sub tile_width { return 250; }
-sub tif_size_m { return 5000; }
-sub tif_size_px { return 5000; }
-sub scale_factor { return tif_size_m() / (tif_size_px() / tile_width()); }
-sub tile_type { return 'streetview'; }
-
-sub copyright {
- return _('Map contains Ordnance Survey data &copy; Crown copyright and database right 2010.');
-}
-
-sub watermark {
- return 0;
-}
-
-1;
diff --git a/t/app/controller/admin.t b/t/app/controller/admin.t
index dcf45e983..25b79dc44 100644
--- a/t/app/controller/admin.t
+++ b/t/app/controller/admin.t
@@ -108,9 +108,9 @@ subtest 'check summary counts' => sub {
$mech->get_ok('/admin');
$mech->title_like(qr/Summary/);
- $mech->content_contains( "0</strong> live problems" );
- $mech->content_contains( "0 confirmed alerts" );
- $mech->content_contains( "0 questionnaires sent" );
+ my ($num_live) = $mech->content =~ /(\d+)<\/strong> live problems/;
+ my ($num_alerts) = $mech->content =~ /(\d+) confirmed alerts/;
+ my ($num_qs) = $mech->content =~ /(\d+) questionnaires sent/;
$report->council(2489);
$report->cobrand('barnet');
@@ -121,9 +121,9 @@ subtest 'check summary counts' => sub {
$mech->get_ok('/admin');
- $mech->content_contains( "1</strong> live problems" );
- $mech->content_contains( "1 confirmed alerts" );
- $mech->content_contains( "1 questionnaires sent" );
+ $mech->content_contains( ($num_live+1) . "</strong> live problems" );
+ $mech->content_contains( ($num_alerts+1) . " confirmed alerts" );
+ $mech->content_contains( ($num_qs+1) . " questionnaires sent" );
$report->council(2504);
$report->cobrand('');
diff --git a/t/app/controller/alert_new.t b/t/app/controller/alert_new.t
index cb3b4b656..580a5ad9a 100644
--- a/t/app/controller/alert_new.t
+++ b/t/app/controller/alert_new.t
@@ -431,6 +431,19 @@ subtest "Test normal alert signups and that alerts are sent" => sub {
my $update_id = $update->id;
ok $update, "created test update - $update_id";
+ $update = FixMyStreet::App->model('DB::Comment')->create( {
+ problem_id => $report_id,
+ user_id => $user2->id,
+ name => 'Anonymous User',
+ mark_fixed => 'false',
+ text => 'This is some more update text',
+ state => 'confirmed',
+ confirmed => $dt->clone->add( hours => 8 ),
+ anonymous => 't',
+ } );
+ $update_id = $update->id;
+ ok $update, "created test update - $update_id";
+
FixMyStreet::App->model('DB::AlertType')->email_alerts();
$mech->email_count_is(3);
my @emails = $mech->get_email;
@@ -442,6 +455,10 @@ subtest "Test normal alert signups and that alerts are sent" => sub {
}
is $count, 3, 'Three emails with the right things in them';
+ my $email = $emails[0];
+ like $email->body, qr/Other User/, 'Update name given';
+ unlike $email->body, qr/Anonymous User/, 'Update name not given';
+
my ( $url, $url_token ) = $emails[0]->body =~ m{http://\S+(/A/(\S+))};
$mech->get_ok( $url );
$mech->content_contains('successfully deleted');
diff --git a/t/app/controller/around.t b/t/app/controller/around.t
index 0060e957c..ca1694b49 100644
--- a/t/app/controller/around.t
+++ b/t/app/controller/around.t
@@ -19,7 +19,7 @@ subtest "redirect x,y requests to lat/lon (301 - permanent)" => sub {
# did we redirect to lat,lon?
is $mech->uri->path, '/around', "still on /around";
is_deeply { $mech->uri->query_form },
- { lat => 51.499825, lon => -0.140137, },
+ { lat => 51.499825, lon => -0.140137, zoom => 3 },
"lat,lon correctly set";
# was it a 301?
diff --git a/t/app/controller/index.t b/t/app/controller/index.t
index be947e344..bf9124ee0 100644
--- a/t/app/controller/index.t
+++ b/t/app/controller/index.t
@@ -30,15 +30,15 @@ subtest "does pc, (x,y), (e,n) or (lat,lon) go to /around" => sub {
},
{
in => { lat => 51.50100, lon => -0.14158 },
- out => { lat => 51.50100, lon => -0.14158 },
+ out => { lat => 51.50100, lon => -0.14158, zoom => 3 },
},
{
in => { x => 3281, y => 1113, },
- out => { lat => 51.499825, lon => -0.140137 },
+ out => { lat => 51.499825, lon => -0.140137, zoom => 3 },
},
{
in => { e => 1234, n => 4567 },
- out => { lat => 49.808509, lon => -7.544784 },
+ out => { lat => 49.808509, lon => -7.544784, zoom => 3 },
},
)
{
diff --git a/t/app/controller/json.t b/t/app/controller/json.t
index d6820e1be..468fa5b31 100644
--- a/t/app/controller/json.t
+++ b/t/app/controller/json.t
@@ -78,9 +78,14 @@ is_deeply #
"/json/problems/new?start_date=2000-01-01&end_date=2000-02-01"), #
[
{
+ 'state' => 'confirmed',
+ 'longitude' => -0.23021896608596,
+ 'latitude' => 51.4531988729771,
+ 'used_map' => 1,
'anonymous' => 0,
'category' => 'test category',
'confirmed' => '2000-01-01 12:01:00',
+ 'lastupdate' => '2000-01-01 12:00:00',
'council' => 'Wandsworth Borough Council',
'detail' => 'Test detail',
'id' => $problem->id,
@@ -90,9 +95,14 @@ is_deeply #
'whensent' => undef
},
{
+ 'state' => 'confirmed',
+ 'longitude' => -0.23021896608596,
+ 'latitude' => 51.4531988729771,
+ 'used_map' => 1,
'anonymous' => 1,
'category' => 'test category',
'confirmed' => '2000-01-01 12:02:00',
+ 'lastupdate' => '2000-01-01 12:00:00',
'council' => 'Wandsworth Borough Council',
'detail' => 'Test detail',
'id' => $anon_problem->id,
diff --git a/t/app/controller/report_import.t b/t/app/controller/report_import.t
index ba73b2555..61ee28b88 100644
--- a/t/app/controller/report_import.t
+++ b/t/app/controller/report_import.t
@@ -68,7 +68,6 @@ subtest "Test creating bad partial entries" => sub {
};
-# submit an empty report to import - check we get all errors
subtest "Submit a correct entry" => sub {
$mech->get_ok('/import');
@@ -128,6 +127,35 @@ subtest "Submit a correct entry" => sub {
},
"check imported fields are shown";
+ # Check photo present, and still there after map submission (testing bug #18)
+ $mech->content_contains( '<img align="right" src="/photo?id' );
+ $mech->content_contains('latitude" value="51.50101"', 'Check latitude');
+ $mech->content_contains('longitude" value="-0.141587"', 'Check longitude');
+ $mech->submit_form_ok(
+ {
+ button => 'tile_32742.21793',
+ x => 10,
+ y => 10,
+ },
+ "New map location"
+ );
+ $mech->content_contains( '<img align="right" src="/photo?id' );
+ $mech->content_contains('latitude" value="51.50519"', 'Check latitude');
+ $mech->content_contains('longitude" value="-0.142608"', 'Check longitude');
+
+ # check that fields haven't changed at all
+ is_deeply $mech->visible_form_values,
+ {
+ name => 'Test User',
+ title => 'Test report',
+ detail => 'This is a test report',
+ photo => '',
+ phone => '',
+ may_show_name => '1',
+ category => '-- Pick a category --',
+ },
+ "check imported fields are shown";
+
# change the details
$mech->submit_form_ok( #
{
@@ -156,7 +184,6 @@ subtest "Submit a correct entry" => sub {
$mech->delete_user($user);
};
-# submit an empty report to import - check we get all errors
subtest "Submit a correct entry (with location)" => sub {
$mech->get_ok('/import');
@@ -235,4 +262,71 @@ subtest "Submit a correct entry (with location)" => sub {
$mech->delete_user($user);
};
+subtest "Submit a correct entry (with location) to cobrand" => sub {
+
+ skip( "Need 'fiksgatami' in ALLOWED_COBRANDS config", 8 )
+ unless FixMyStreet::App->config->{ALLOWED_COBRANDS} =~ m{fiksgatami};
+ mySociety::MaPit::configure('http://mapit.nuug.no/');
+ ok $mech->host("fiksgatami.no"), 'change host to fiksgatami';
+
+ $mech->get_ok('/import');
+
+ $mech->submit_form_ok( #
+ {
+ with_fields => {
+ service => 'test-script',
+ lat => '59',
+ lon => '10',
+ name => 'Test User ll',
+ email => 'test-ll@example.com',
+ subject => 'Test report ll',
+ detail => 'This is a test report ll',
+ photo => $sample_file,
+ }
+ },
+ "fill in form"
+ );
+
+ is_deeply( $mech->import_errors, [], "got no errors" );
+ is $mech->content, 'SUCCESS', "Got success response";
+
+ # check that we have received the email
+ $mech->email_count_is(1);
+ my $email = $mech->get_email;
+ $mech->clear_emails_ok;
+
+ my ($token_url) = $email->body =~ m{(http://\S+)};
+ ok $token_url, "Found a token url $token_url";
+
+ # go to the token url
+ $mech->get_ok($token_url);
+
+ # check that we are on '/report/new'
+ is $mech->uri->path, '/report/new', "sent to /report/new";
+
+ # check that fields are prefilled for us
+ is_deeply $mech->visible_form_values,
+ {
+ name => 'Test User ll',
+ title => 'Test report ll',
+ detail => 'This is a test report ll',
+ photo => '',
+ phone => '',
+ may_show_name => '1',
+ },
+ "check imported fields are shown";
+
+ my $user =
+ FixMyStreet::App->model('DB::User')
+ ->find( { email => 'test-ll@example.com' } );
+ ok $user, "Found a user";
+
+ my $report = $user->problems->first;
+ is $report->state, 'partial', 'is still partial';
+ is $report->title, 'Test report ll', 'title is correct';
+ is $report->lang, 'nb', 'language is correct';
+
+ $mech->delete_user($user);
+};
+
done_testing();
diff --git a/t/app/controller/report_new.t b/t/app/controller/report_new.t
index 537786ebc..f06c23501 100644
--- a/t/app/controller/report_new.t
+++ b/t/app/controller/report_new.t
@@ -331,6 +331,9 @@ foreach my $test (
my $user = FixMyStreet::App->model('DB::User')->find( { email => $test_email } );
ok $user, "test user does exist";
$user->problems->delete;
+ $user->name( 'Old Name' );
+ $user->password( 'old_password' );
+ $user->update;
} else {
ok !FixMyStreet::App->model('DB::User')->find( { email => $test_email } ),
"test user does not exist";
@@ -366,11 +369,15 @@ foreach my $test (
# check that we got the errors expected
is_deeply $mech->form_errors, [], "check there were no errors";
- # check that the user has been created
+ # check that the user has been created/ not changed
my $user =
FixMyStreet::App->model('DB::User')->find( { email => $test_email } );
- ok $user, "created new user";
- ok $user->check_password('secret'), 'password set correctly';
+ ok $user, "user found";
+ if ($test->{user}) {
+ ok $user->check_password('old_password'), 'password unchanged';
+ } else {
+ ok $user->check_password('secret'), 'password set correctly';
+ }
# find the report
my $report = $user->problems->first;
@@ -398,6 +405,11 @@ foreach my $test (
$mech->get_ok( '/report/' . $report->id );
+ if ($test->{user}) {
+ is $report->name, 'Joe Bloggs', 'name updated correctly';
+ ok $report->user->check_password('secret'), 'password updated correctly';
+ }
+
# check that the reporter has an alert
my $alert = FixMyStreet::App->model('DB::Alert')->find( {
user => $report->user,
diff --git a/t/app/controller/report_updates.t b/t/app/controller/report_updates.t
index e8acbfd14..0a9c5db1f 100644
--- a/t/app/controller/report_updates.t
+++ b/t/app/controller/report_updates.t
@@ -584,7 +584,7 @@ $report->update;
for my $test (
{
- desc => 'submit an update for a non registered user, signing in with wrong password',
+ desc => 'submit an update for a registered user, signing in with wrong password',
form_values => {
submit_update => 1,
rznvy => 'registered@example.com',
@@ -593,12 +593,12 @@ for my $test (
password_sign_in => 'secret',
},
field_errors => [
- 'There was a problem with your email/password combination. Please try again.',
+ "There was a problem with your email/password combination. Passwords and user accounts are a brand new service, so you probably do not have one yet \x{2013} please fill in the right hand side of this form to get one.",
'Please enter your name', # FIXME Not really necessary error
],
},
{
- desc => 'submit an update for a non registered user and sign in',
+ desc => 'submit an update for a registered user and sign in',
form_values => {
submit_update => 1,
rznvy => 'registered@example.com',
@@ -657,6 +657,66 @@ for my $test (
};
}
+subtest 'submit an update for a registered user, creating update by email' => sub {
+ my $user = $mech->create_user_ok( 'registered@example.com' );
+ $user->update( { name => 'Mr Reg', password => 'secret2' } );
+ $report->comments->delete;
+ $mech->log_out_ok();
+ $mech->clear_emails_ok();
+ $mech->get_ok("/report/$report_id");
+ $mech->submit_form_ok( {
+ with_fields => {
+ submit_update => 1,
+ rznvy => 'registered@example.com',
+ update => 'Update from a user',
+ add_alert => undef,
+ name => 'New Name',
+ password_register => 'new_secret',
+ },
+ }, 'submit update' );
+
+ $mech->content_contains('Nearly Done! Now check your email');
+
+ # No change to user yet.
+ $user->discard_changes;
+ ok $user->check_password( 'secret2' ), 'password unchanged';
+ is $user->name, 'Mr Reg', 'name unchanged';
+
+ my $email = $mech->get_email;
+ ok $email, "got an email";
+ like $email->body, qr/confirm the update you/i, "Correct email text";
+
+ my ( $url, $url_token ) = $email->body =~ m{(http://\S+/C/)(\S+)};
+ ok $url, "extracted confirm url '$url'";
+
+ my $token = FixMyStreet::App->model('DB::Token')->find( {
+ token => $url_token,
+ scope => 'comment'
+ } );
+ ok $token, 'Token found in database';
+
+ my $update_id = $token->data->{id};
+ my $add_alerts = $token->data->{add_alert};
+ my $update = FixMyStreet::App->model('DB::Comment')->find( { id => $update_id } );
+
+ ok $update, 'found update in database';
+ is $update->state, 'unconfirmed', 'update unconfirmed';
+ is $update->user->email, 'registered@example.com', 'update email';
+ is $update->text, 'Update from a user', 'update text';
+
+ $mech->get_ok( $url . $url_token );
+ $mech->content_contains("/report/$report_id#update_$update_id");
+
+ # User should have new name and password
+ $user->discard_changes;
+ ok $user->check_password( 'new_secret' ), 'password changed';
+ is $user->name, 'New Name', 'name changed';
+
+ $update->discard_changes;
+ is $update->state, 'confirmed', 'update confirmed';
+ $mech->delete_user( $user );
+};
+
for my $test (
{
desc => 'submit update for registered user',
diff --git a/t/app/controller/tilma.t b/t/app/controller/tilma.t
deleted file mode 100644
index 0eb0b251e..000000000
--- a/t/app/controller/tilma.t
+++ /dev/null
@@ -1,12 +0,0 @@
-use strict;
-use warnings;
-
-use Test::More;
-use FixMyStreet::TestMech;
-
-my $mech = FixMyStreet::TestMech->new;
-
-$mech->get_ok('/tilma/tileserver/10k-full/3278-3283,1110-1115/JSON');
-is $mech->res->content_type, 'text/javascript', "got JS response";
-
-done_testing(); \ No newline at end of file
diff --git a/templates/email/default/problem-confirm.txt b/templates/email/default/problem-confirm.txt
index e16c90037..58c1c75d1 100644
--- a/templates/email/default/problem-confirm.txt
+++ b/templates/email/default/problem-confirm.txt
@@ -1,6 +1,6 @@
Subject: Confirm your problem on FixMyStreet
-Hi [% report.user.name %],
+Hi [% report.name %],
Please click on the link below to confirm the problem you just
added to FixMyStreet:
diff --git a/templates/email/default/update-confirm.txt b/templates/email/default/update-confirm.txt
index 9a0db3029..c7571e76c 100644
--- a/templates/email/default/update-confirm.txt
+++ b/templates/email/default/update-confirm.txt
@@ -1,6 +1,6 @@
Subject: Confirm your update on FixMyStreet
-Hi [% update.user.name %],
+Hi [% update.name %],
Please click on the link below to confirm the update you just
wrote:
diff --git a/templates/email/fiksgatami/problem-confirm.txt b/templates/email/fiksgatami/problem-confirm.txt
index 046903270..cd58d95ce 100644
--- a/templates/email/fiksgatami/problem-confirm.txt
+++ b/templates/email/fiksgatami/problem-confirm.txt
@@ -1,6 +1,6 @@
Subject: Bekreftelse på ny sak lagt til på FiksGataMi.no
-Hei [% report.user.name %],
+Hei [% report.name %],
Vennligst klikk på linken under for å bekrefte saken du har lagt til
på FiksGataMi:
diff --git a/templates/email/fiksgatami/update-confirm.txt b/templates/email/fiksgatami/update-confirm.txt
index 70e1c2444..ba13f34b2 100644
--- a/templates/email/fiksgatami/update-confirm.txt
+++ b/templates/email/fiksgatami/update-confirm.txt
@@ -1,6 +1,6 @@
Subject: Bekreft din oppdatering på FiksGataMi
-Hei [% update.user.name %],
+Hei [% update.name %],
Vennligst klikk på lenken under for å bekrefte oppdateringen du skrev
nettopp:
diff --git a/templates/web/default/admin/index.html b/templates/web/default/admin/index.html
index 59722a5ed..d1ed09114 100644
--- a/templates/web/default/admin/index.html
+++ b/templates/web/default/admin/index.html
@@ -11,7 +11,8 @@
[% END -%]
<ul>
- <li>[% tprintf( loc('<strong>%d</strong> live problems'), total_problems_live ) %]</li>
+ <li>[% tprintf( loc('<strong>%d</strong> live problems'), total_problems_live ) %];
+ [% tprintf( loc('from %d different users'), total_problems_users ) %]</li>
<li>[% tprintf( loc('%d live updates'), comments.confirmed || 0 ) %]</li>
<li>[% tprintf( loc('%d confirmed alerts, %d unconfirmed'), alerts.1, alerts.0) %]</li>
<li>[% tprintf( loc('%d questionnaires sent &ndash; %d answered (%s%%)'), questionnaires.total, questionnaires.1, questionnaires_pc) %]</li>
@@ -28,4 +29,14 @@
[% PROCESS states title=loc('Update breakdown by state') object=comments %]
+[% FOREACH category IN categories %]
+ [% IF loop.first %]
+ <h2>[% loc('Category fix rate for problems > 4 weeks old') %]</h2>
+ <table>
+ <tr><th>[% loc('Category') %]</th><th>[% loc('Total') %]</th><th>[% loc('Fixed') %]</th></tr>
+ [% END %]
+ <tr><td>[% category.key %]</td><td>[% category.value.total %]</td><td>[% category.value.fixed / category.value.total * 100 | format('%.1f') %]%</td></tr>
+ [% '</table>' IF loop.last %]
+[% END %]
+
[% INCLUDE 'admin/footer.html' %]
diff --git a/templates/web/default/admin/questionnaire.html b/templates/web/default/admin/questionnaire.html
index baeb7c800..680e0d214 100644
--- a/templates/web/default/admin/questionnaire.html
+++ b/templates/web/default/admin/questionnaire.html
@@ -7,8 +7,8 @@
</tr>
[% IF questionnaires.total > 0 %]
<tr>
- <td>[% questionnaires.1 %] ([% reported_pc %]%)</td>
- <td>[% questionnaires.0 %] ([% not_reported_pc %]%)</td>
+ <td>[% questionnaires.1 %] ([% 100 * questionnaires.1 / questionnaires.total | format('%.1f') %]%)</td>
+ <td>[% questionnaires.0 %] ([% 100 * questionnaires.0 / questionnaires.total | format('%.1f') %]%)</td>
</tr>
[% ELSE %]
<tr>
@@ -18,4 +18,13 @@
[% END %]
</table>
+<h2>[% loc('Problem state change based on survey results') %]</h2>
+
+<table>
+<tr><th>[% loc('Old state') %]</th><th>[% loc('New state') %]</th><th>[% loc('Total') %]</th></tr>
+[% WHILE ( s = state_changes.next ) %]
+<tr><td>[% s.old_state %]</td><td>[% s.new_state %]</td><td>[% s.get_column('c') %] ([% 100 * s.get_column('c') / state_changes_count | format('%.1f') %]%)</td></tr>
+[% END %]
+</table>
+
[% INCLUDE 'admin/footer.html' %]
diff --git a/templates/web/default/admin/timeline.html b/templates/web/default/admin/timeline.html
index a7f4f3628..95120e48c 100644
--- a/templates/web/default/admin/timeline.html
+++ b/templates/web/default/admin/timeline.html
@@ -32,7 +32,7 @@
[% tprintf(loc("Questionnaire %d answered for problem %d, %s to %s"), item.obj.id, item.obj.problem_id, item.obj.old_state, item.obj.new_state ) %]
[% CASE 'update' %]
[% name = ( item.obj.name || 'anonymous' ) | html %]
- [% tprintf(loc("Update %s created for problem %d; by %s"), "<a href='" _ c.uri_for_email( '/report', item.obj.problem_id, c.cobrand_data ) _ "#update_" _ item.obj.id _ "'>" _ item.obj.id _ "</a>", item.obj.problem_id, name) %]&lt;[% item.obj.user.email | html %]&gt;
+ [% tprintf(loc("Update %s created for problem %d; by %s"), "<a href='" _ c.uri_for_email( '/report', item.obj.problem_id, c.cobrand_data ) _ "#update_" _ item.obj.id _ "'>" _ item.obj.id _ "</a>", item.obj.problem_id, name) %] &lt;[% item.obj.user.email | html %]&gt;
[% CASE 'alertSub' %]
[% tprintf(loc("Alert %d created for %s, type %s, parameters %s / %s"), item.obj.id, item.obj.user.email, item.obj.alert_type.ref, item.obj.parameter, item.obj.parameter2) | html %]
[% CASE 'alertDel' %]
diff --git a/templates/web/default/around/around_map_list_items.html b/templates/web/default/around/around_map_list_items.html
index e13e9ccc9..a98f25dbe 100644
--- a/templates/web/default/around/around_map_list_items.html
+++ b/templates/web/default/around/around_map_list_items.html
@@ -5,7 +5,7 @@
<li>
<a href="[% c.uri_for('/report', p.problem.id ) %]">[% p.problem.title | html %]</a>
- <small>([% prettify_epoch( p.problem.confirmed_local.epoch, 1 ) %], [% dist %]km)</small>
+ <small>[% prettify_epoch( p.problem.confirmed_local.epoch, 1 ) %], [% dist %]km</small>
[% IF p.problem.state == 'fixed' %]
<small>[% loc('(fixed)') %]</small>
[% END %]
diff --git a/templates/web/default/around/display_location.html b/templates/web/default/around/display_location.html
index 529c12eec..395054645 100755
--- a/templates/web/default/around/display_location.html
+++ b/templates/web/default/around/display_location.html
@@ -36,7 +36,9 @@
%]
<form action="[% c.uri_for('/report/new') %]" method="post" name="mapForm" id="mapForm">
-<input type="hidden" name="map" value="[% c.req.params.map | html %]">
+[% IF c.req.params.map_override %]
+<input type="hidden" name="map_override" value="[% c.req.params.map_override | html %]">
+[% END %]
<input type="hidden" name="pc" value="[% pc | html %]">
[% c.cobrand.form_elements('mapForm') %]
@@ -101,7 +103,7 @@
</ul>
- <h2 id="closest_problems">
+ <h2>
[%
tprintf(
loc( 'Closest nearby problems <small>(within&nbsp;%skm)</small>' ),
diff --git a/templates/web/default/around/on_map_list_items.html b/templates/web/default/around/on_map_list_items.html
index 9db3d9492..2db7d00d2 100644
--- a/templates/web/default/around/on_map_list_items.html
+++ b/templates/web/default/around/on_map_list_items.html
@@ -2,7 +2,7 @@
[% FOREACH p IN on_map %]
<li>
<a href="[% c.uri_for('/report', p.id ) %]">[% p.title | html %]</a>
- <small>([% prettify_epoch( p.confirmed_local.epoch, 1 ) %])</small>
+ <small>[% prettify_epoch( p.confirmed_local.epoch, 1 ) %]</small>
[% IF p.state == 'fixed' %]
<small>[% loc('(fixed)') %]</small>
[% END %]
diff --git a/templates/web/default/auth/general.html b/templates/web/default/auth/general.html
index 5f9a09199..234aadf52 100644
--- a/templates/web/default/auth/general.html
+++ b/templates/web/default/auth/general.html
@@ -20,7 +20,7 @@
[% IF loc_email_error %]
<div class="form-error">[% loc_email_error %]</div>
[% ELSIF sign_in_error %]
- <div class="form-error">[% loc('There was a problem with your email/password combination. Please try again.') %]</div>
+ <div class="form-error">[% loc('There was a problem with your email/password combination. Passwords and user accounts are a brand <strong>new</strong> service, so you probably do not have one yet &ndash; please fill in the right hand side of this form to get one.') %]</div>
[% END %]
<div class="form-field">
diff --git a/templates/web/default/common_header_tags.html b/templates/web/default/common_header_tags.html
index e69dac27d..f9048b067 100644
--- a/templates/web/default/common_header_tags.html
+++ b/templates/web/default/common_header_tags.html
@@ -1,11 +1,13 @@
<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="/jslib/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="/js/fixmystreet.js"></script>
[% map_js %]
[% IF robots %]
<meta name="robots" content="[% robots %]">
+[% ELSIF c.config.STAGING_SITE %]
+ <meta name="robots" content="noindex,nofollow">
[% END %]
[% IF rss %]
diff --git a/templates/web/default/faq/faq-en-gb.html b/templates/web/default/faq/faq-en-gb.html
index 0907d6275..e943bf28f 100755
--- a/templates/web/default/faq/faq-en-gb.html
+++ b/templates/web/default/faq/faq-en-gb.html
@@ -17,13 +17,15 @@ or clearing</strong>, such as:
<li>Flyposting or graffiti
<li>Flytipping or litter
<li>Streetcleaning, such as broken glass in a cycle lane
+ [% IF c.cobrand.moniker != 'southampton' %]
<li>Unlit lamposts
+ [% END %]
<li>Potholes
</ul>
</dd>
<dt>What isn&rsquo;t FixMyStreet for?</dt>
- <dd>FixMyStreet is not a way of getting in touch with your council for all
+ <dd>FixMyStreet is not a way of getting in touch with [% c.cobrand.moniker == 'southampton' ? 'the' : 'your' %] council for all
issues &ndash; please use FixMyStreet only for problems such as the above. We
often route problem reports via cleansing services or highways and so using
FixMyStreet for other matters may result in a delay in your report getting
@@ -49,10 +51,10 @@ with a map of that area. You can view problems already reported in that area,
or report ones of your own simply by clicking on the map at the location of
the problem.</dd>
<dt>How are the problems solved?</dt>
- <dd>They are reported to the relevant council by email. The
+ <dd>They are reported to the [% IF c.cobrand.moniker != 'southampton' %]relevant[% END %] council by email. The
council can then resolve the problem the way they normally would.
-Alternatively, you can discuss the problem on the website with others, and
-then together lobby the council to fix it, or fix it directly yourselves.</dd>
+Alternatively, you can discuss the problem on the website with others[% IF c.cobrand.moniker != 'southampton' %], and
+then together lobby the council to fix it, or fix it directly yourselves[% END %].</dd>
<dt>Is it free?</dt>
<dd>The site is free to use, yes. FixMyStreet is run
by a registered charity, though, so if you want to make a contribution, <a
@@ -90,6 +92,8 @@ href="https://secure.mysociety.org/donate/">please do</a>.</dd>
<dd>You can either leave a test report or <a href="/contact">contact us</a>
to find out where reports go at the moment. Also <a href="/contact">contact us</a>
to update the address or addresses we use.</dd>
+ <dt>I&rsquo;m from a council, can we have FixMyStreet on our website?</dt>
+ <dd>Yes you can! We offer branded, hosted versions of FixMyStreet for local council websites. <a href="http://www.mysociety.org/fixmystreet-for-local-council-websites/">Full details</a>.</dd>
<dt>Do you remove silly or illegal content?</dt>
<dd>FixMyStreet is not responsible for the content and accuracy
of material submitted by its users. We reserve the right to edit or remove any
diff --git a/templates/web/default/header.html b/templates/web/default/header.html
index 4221de86b..431e6db65 100644
--- a/templates/web/default/header.html
+++ b/templates/web/default/header.html
@@ -9,6 +9,10 @@
<style type="text/css">@import url("/css/ie6.css");</style>
<![endif]-->
+ [% IF c.req.uri.host == 'osm.fixmystreet.com' %]
+ <link rel="canonical" href="http://www.fixmystreet.com[% c.req.uri.path_query %]">
+ [% END %]
+
</head>
<body>
diff --git a/templates/web/default/index.html b/templates/web/default/index.html
index 4443e060f..131701b0e 100644
--- a/templates/web/default/index.html
+++ b/templates/web/default/index.html
@@ -82,11 +82,4 @@
</div>
[% END %]
-[% IF c.cobrand.moniker == 'emptyhomes' %]
-<div id="eha_advert">
- Now is the best time to turn empty properties into empty homes... Don't miss it!
- <a href="http://www.emptyhomes.com/EHConference2011.html">Home Again: Empty Homes National Conference 2011</a>
-</div>
-[% END %]
-
[% INCLUDE 'footer.html' %]
diff --git a/templates/web/default/maps/fms.html b/templates/web/default/maps/fms.html
index 36fd48467..6e6d747bf 100644
--- a/templates/web/default/maps/fms.html
+++ b/templates/web/default/maps/fms.html
@@ -3,6 +3,9 @@
<script type="text/javascript" src="/jslib/OpenLayers-2.10/OpenLayers.js"></script>
<script type="text/javascript" src="/js/map-OpenLayers.js"></script>
<script type="text/javascript" src="/js/map-bing-ol.js"></script>
+<!--[if lte IE 6]>
+ <link rel="stylesheet" href="/jslib/OpenLayers-2.10/theme/default/ie6-style.css" type="text/css" />
+<![endif]-->
[% END %]
[% map_html = BLOCK %]
diff --git a/templates/web/default/maps/openlayers.html b/templates/web/default/maps/openlayers.html
index 45551c3d5..b84799fdd 100644
--- a/templates/web/default/maps/openlayers.html
+++ b/templates/web/default/maps/openlayers.html
@@ -86,7 +86,7 @@ var fixmystreet = {
<a title="[% pin.title | html %]" href="[% c.uri_for('/report/' _ pin.id) %]">
[%- END -%]
<img border="0" class="pin" src="[% c.uri_for('/i/pin' _ cols.${pin.colour} _ '.gif') %]"
- alt="[% loc('Problem') %]" style="top:[% pin.py - 59 %]px; left:[% pin.px %]px; position: absolute;">
+ alt="[% loc('Problem') %]" style="top:[% pin.py - 59 %]px; left:[% pin.px - 2 %]px; position: absolute;">
[%- IF pin.id -%]
</a>
[% END %]
diff --git a/templates/web/default/maps/osm-streetview.html b/templates/web/default/maps/osm-streetview.html
index ba8d1fba4..9de99c253 100644
--- a/templates/web/default/maps/osm-streetview.html
+++ b/templates/web/default/maps/osm-streetview.html
@@ -2,6 +2,9 @@
<script type="text/javascript" src="/jslib/OpenLayers-2.10/OpenLayers.js"></script>
<script type="text/javascript" src="/js/map-OpenLayers.js"></script>
<script type="text/javascript" src="/js/map-streetview.js"></script>
+<!--[if lte IE 6]>
+ <link rel="stylesheet" href="/jslib/OpenLayers-2.10/theme/default/ie6-style.css" type="text/css" />
+<![endif]-->
[% END %]
[% map_html = BLOCK %]
diff --git a/templates/web/default/maps/osm.html b/templates/web/default/maps/osm.html
index c6529566e..e2762ee26 100644
--- a/templates/web/default/maps/osm.html
+++ b/templates/web/default/maps/osm.html
@@ -2,6 +2,9 @@
<script type="text/javascript" src="/jslib/OpenLayers-2.10/OpenLayers.js"></script>
<script type="text/javascript" src="/js/map-OpenLayers.js"></script>
<script type="text/javascript" src="/js/map-OpenStreetMap.js"></script>
+<!--[if lte IE 6]>
+ <link rel="stylesheet" href="/jslib/OpenLayers-2.10/theme/default/ie6-style.css" type="text/css" />
+<![endif]-->
[% END %]
[% map_html = BLOCK %]
diff --git a/templates/web/default/maps/pins_js.html b/templates/web/default/maps/pins_js.html
index 4a5814b15..355fffaba 100644
--- a/templates/web/default/maps/pins_js.html
+++ b/templates/web/default/maps/pins_js.html
@@ -1,4 +1,4 @@
[ [% FOR pin IN map.pins -%]
- [ [% pin.latitude %], [% pin.longitude %], '[% pin.colour %]', '[% pin.id %]', '[% pin.title %]' ]
+ [ [% pin.latitude %], [% pin.longitude %], '[% pin.colour %]', '[% pin.id %]', "[% pin.title | escape_js %]" ]
[%- IF !loop.last %],[% END %]
[% END %] ]
diff --git a/templates/web/default/maps/tilma/openlayers.html b/templates/web/default/maps/tilma/openlayers.html
deleted file mode 100644
index c8ae53bfe..000000000
--- a/templates/web/default/maps/tilma/openlayers.html
+++ /dev/null
@@ -1,26 +0,0 @@
-[% map_js = BLOCK %]
-<script type="text/javascript" src="/jslib/OpenLayers-2.10/OpenLayers.js"></script>
-<script type="text/javascript" src="/js/map-OpenLayers.js"></script>
-<script type="text/javascript" src="/js/map-tilma-ol.js"></script>
-<script type="text/javascript" src="/js/OpenLayers.Projection.OrdnanceSurvey.js"></script>
-[% END %]
-
-[% map_html = BLOCK %]
-<script type="text/javascript">
-var fixmystreet = {
- 'tilewidth': [% map.tilewidth %],
- 'tileheight': [% map.tilewidth %],
- 'latitude': [% map.latitude %],
- 'longitude': [% map.longitude %],
- 'pins': [% INCLUDE maps/pins_js.html %],
- 'tile_type': '[% map.tile_type %]',
- 'maxResolution': [% map.maxResolution %]
-};
-</script>
-<div id="map_box">
- [% pre_map %]
- <div id="map">
- [% '<div id="watermark"></div>' IF map.watermark %]
- </div>
- <p id="copyright">[% map.copyright %]</p>
-[% END %]
diff --git a/templates/web/default/maps/tilma/original.html b/templates/web/default/maps/tilma/original.html
deleted file mode 100644
index 5a07683ac..000000000
--- a/templates/web/default/maps/tilma/original.html
+++ /dev/null
@@ -1,89 +0,0 @@
-[% map_js = BLOCK %]
-<script type="text/javascript" src="/js/map-tilma.js"></script>
-[% END %]
-
-[% map_html = BLOCK %]
-
-[% IF !map.tiles %]
- <div id="map_box">
- <div id="map"><div id="drag">
- [% loc("Unable to fetch the map tiles from the tile server.") %]
- </div></div>
- [% RETURN %]
-[% END %]
-
-[% IF map.clickable %]
-<input type="hidden" name="x" id="formX" value="[% map.x %]">
-<input type="hidden" name="y" id="formY" value="[% map.y %]">
- [% map.img_type = 'input type="image"' %]
-[% ELSE %]
- [% map.img_type = 'img' %]
-[% END %]
-<script type="text/javascript">
-[% c.cobrand.root_path_js %]
-var fixmystreet = {
- 'all_pins': [% all_pins || "''" | html %],
- 'x': [% map.x - 3 %],
- 'y': [% map.y - 3 %],
- 'start_x': [% map.px %],
- 'start_y': [% map.py %],
- 'tile_type': '[% map.tile_type %]',
- 'tilewidth': [% map.tilewidth %],
- 'tileheight': [% map.tilewidth %]
-};
-</script>
-<div id="map_box">
- [% pre_map %]
- <div id="map"><div id="drag">
- <[% map.img_type %]
- alt="NW map tile" id="t2.2" name="tile_[% map.x - 1 %].[% map.y %]" src="[% map.url %][% map.tileids.0.0 %]" style="top:0px; left:0;"><[% map.img_type %]
- alt="NE map tile" id="t2.3" name="tile_[% map.x %].[% map.y %]" src="[% map.url %][% map.tileids.0.1 %]" style="top:0px; left:[% map.tilewidth %]px;"><br><[% map.img_type %]
- alt="SW map tile" id="t3.2" name="tile_[% map.x - 1 %].[% map.y - 1 %]" src="[% map.url %][% map.tileids.1.0 %]" style="top:[% map.tilewidth %]px; left:0;"><[% map.img_type %]
- alt="SE map tile" id="t3.3" name="tile_[% map.x %].[% map.y - 1 %]" src="[% map.url %][% map.tileids.1.1 %]" style="top:[% map.tilewidth %]px; left:[% map.tilewidth %]px;">
- <div id="pins">[% FOR pin IN map.pins %][% INCLUDE pin %][% END %]</div>
- </div>
- [% '<div id="watermark"></div>' IF map.watermark %]
- [% INCLUDE compass %]
- </div>
- <p id="copyright">[% map.copyright %]</p>
-[% END %]
-
-
-[% BLOCK pin %]
-
-[% num = '' IF !num or num > 9;
- cols = {
- red = 'R', green = 'G', blue = 'B', purple = 'P',
- }
-%]
-[% IF pin.id %]
-<a title="[% pin.title | html %]" href="[% c.uri_for('/report/' _ pin.id) %]">
-[%- END -%]
-<img class="pin" src="[% c.uri_for('/i/pin' _ cols.${pin.colour} _ num _ '.gif') %]"
- alt="[% loc('Problem') %]" style="top:[% pin.py - 59 %]px; left:[% pin.px %]px; position: absolute;">
-[%- IF pin.id -%]
-</a>
-[% END %]
-
-[% END %]
-
-
-[% BLOCK compass %]
- <table cellpadding="0" cellspacing="0" border="0" id="compass">
- <tr valign="bottom">
- <td align="right"><a href="[% c.req.uri_with( { x => map.x - 1, y => map.y + 1 } ) %]"><img src="[% c.uri_for('/i/arrow-northwest.gif') %]" alt="NW" width=11 height=11></a></td>
- <td align="center"><a href="[% c.req.uri_with( { x => map.x, y => map.y + 1 } ) %]"><img src="[% c.uri_for('/i/arrow-north.gif') %]" vspace="3" alt="N" width=13 height=11></a></td>
- <td><a href="[% c.req.uri_with( { x => map.x + 1, y => map.y + 1 } ) %]"><img src="[% c.uri_for('/i/arrow-northeast.gif') %]" alt="NE" width=11 height=11></a></td>
- </tr>
- <tr>
- <td><a href="[% c.req.uri_with( { x => map.x - 1, y => map.y } ) %]"><img src="[% c.uri_for('/i/arrow-west.gif') %]" hspace="3" alt="W" width=11 height=13></a></td>
- <td align="center"><a href="$recentre"><img src="[% c.uri_for('/i/rose.gif') %]" alt="Recentre" width=35 height=34></a></td>
- <td><a href="[% c.req.uri_with( { x => map.x + 1, y => map.y } ) %]"><img src="[% c.uri_for('/i/arrow-east.gif') %]" hspace="3" alt="E" width=11 height=13></a></td>
- </tr>
- <tr valign="top">
- <td align="right"><a href="[% c.req.uri_with( { x => map.x - 1, y => map.y - 1 } ) %]"><img src="[% c.uri_for('/i/arrow-southwest.gif') %]" alt="SW" width=11 height=11></a></td>
- <td align="center"><a href="[% c.req.uri_with( { x => map.x, y => map.y - 1 } ) %]"><img src="[% c.uri_for('/i/arrow-south.gif') %]" vspace="3" alt="S" width=13 height=11></a></td>
- <td><a href="[% c.req.uri_with( { x => map.x + 1, y => map.y - 1 } ) %]"><img src="[% c.uri_for('/i/arrow-southeast.gif') %]" alt="SE" width=11 height=11></a></td>
- </tr>
- </table>
-[% END %]
diff --git a/templates/web/default/my/my.html b/templates/web/default/my/my.html
index e7f4ca72d..2147ef5f2 100644
--- a/templates/web/default/my/my.html
+++ b/templates/web/default/my/my.html
@@ -13,7 +13,10 @@
<h1>[% loc('Your Reports') %]</h1>
-[% INCLUDE pagination, pager = problems_pager %]
+[% INCLUDE 'pagination.html',
+ pager = problems_pager,
+ param = 'p'
+%]
[% FOREACH p = problems.confirmed %]
[% IF loop.first %]<h2>[% loc('Open reports') %]</h2>[% END %]
@@ -35,7 +38,10 @@ END %]
[% FOREACH u IN updates %]
[% IF loop.first %]
<h2>[% loc('Your updates') %]</h2>
- [% INCLUDE pagination, pager = updates_pager %]
+ [% INCLUDE 'pagination.html',
+ pager = updates_pager,
+ param = 'u'
+ %]
<ul>
[% END %]
@@ -68,22 +74,3 @@ END %]
[% "</ul>" IF loop.last %]
[% END %]
-[% BLOCK pagination %]
- [% IF pager.last_page > 1 %]
- <p>
- [% IF pager.previous_page %]
- <a href="[% c.req.uri_with({'p_page' => pager.previous_page}) %]">&larr; Previous</a>
- [% ELSE %]
- &larr; Previous
- [% END %]
- |
- [% pager.first %] to [% pager.last %] of [% pager.total_entries %]
- |
- [% IF pager.next_page %]
- <a href="[% c.req.uri_with({'p_page' => pager.next_page}) %]">Next &rarr;</a>
- [% ELSE %]
- Next &rarr;
- [% END %]
- </p>
- [% END %]
-[% END %]
diff --git a/templates/web/default/pagination.html b/templates/web/default/pagination.html
new file mode 100644
index 000000000..f5a1192d1
--- /dev/null
+++ b/templates/web/default/pagination.html
@@ -0,0 +1,17 @@
+[% IF pager.last_page > 1 %]
+ <p>
+ [% IF pager.previous_page %]
+ <a href="[% c.req.uri_with({ $param => pager.previous_page }) %]">&larr; Previous</a>
+ [% ELSE %]
+ &larr; Previous
+ [% END %]
+ |
+ [% pager.first %] to [% pager.last %] of [% pager.total_entries %]
+ |
+ [% IF pager.next_page %]
+ <a href="[% c.req.uri_with({ $param => pager.next_page }) %]">Next &rarr;</a>
+ [% ELSE %]
+ Next &rarr;
+ [% END %]
+ </p>
+[% END %]
diff --git a/templates/web/default/report/new/fill_in_details.html b/templates/web/default/report/new/fill_in_details.html
index 32d4a733b..8150ba894 100644
--- a/templates/web/default/report/new/fill_in_details.html
+++ b/templates/web/default/report/new/fill_in_details.html
@@ -5,7 +5,9 @@
[% IF report.used_map %]
<form action="[% c.uri_for('/report/new') %]" method="post" name="mapForm" id="mapForm"[% IF c.cobrand.allow_photo_upload %] enctype="multipart/form-data"[% END %]>
-<input type="hidden" name="map" value="[% c.req.params.map | html %]">
+[% IF c.req.params.map_override %]
+<input type="hidden" name="map_override" value="[% c.req.params.map_override | html %]">
+[% END %]
<input type="hidden" name="pc" value="[% pc | html %]">
[% c.cobrand.form_elements('mapForm') %]
[% ELSE %]
diff --git a/templates/web/default/reports/council.html b/templates/web/default/reports/council.html
index d2578f9f2..2b004cf50 100755
--- a/templates/web/default/reports/council.html
+++ b/templates/web/default/reports/council.html
@@ -18,12 +18,12 @@
[% map_html %]
-[% IF children %]
+[% IF children.size %]
<h2 style="clear:right">[% loc('Wards of this council') %]</h2>
<p>[% loc('Follow a ward link to view only reports within that ward.') %]</p>
<ul>
-[% FOR c IN children.values.sort('name') %]
-<li><a href="[% c.url %]">[% c.name %]</a></p>
+[% FOR child IN children.values.sort('name') %]
+<li><a href="[% child.url %]">[% child.name %]</a></p>
[% END %]
</ul>
[% END %]
@@ -31,7 +31,35 @@
</div>
<div id="side">
+[% IF council.generation_high == 10 AND c.cobrand.country == 'GB' %]
+<p id="unknown">This council no longer exists.
+[% IF council.name.match('Penwith|Kerrier|Carrick|Restormel|Caradon|North Cornwall') %]
+Its area is now covered by <a href="/reports/Cornwall">Cornwall Council</a>.
+[% ELSIF council.name.match('Durham|Easington|Sedgefield|Teesdale|Wear Valley|Derwentside|Chester le Street') %]
+Its area is now covered by <a href="/reports/Durham+County">Durham County Council</a>.
+[% ELSIF council.name.match('Blyth Valley|Wansbeck|Castle Morpeth|Tynedale|Alnwick|Berwick upon Tweed') %]
+Its area is now covered by <a href="/reports/Northumberland">Northumberland County Council</a>.
+[% ELSIF council.name.match('North Shropshire|Oswestry|Shrewsbury and Atcham|South Shropshire|Bridgnorth') %]
+Its area is now covered by <a href="/reports/Shropshire">Shropshire Council</a>.
+[% ELSIF council.name.match('Salisbury|West Wiltshire|Kennet|North Wiltshire') %]
+Its area is now covered by <a href="/reports/Wiltshire">Wiltshire Council</a>.
+[% ELSIF council.name.match('Ellesmere Port and Neston|Vale Royal|Chester') %]
+Its area is now covered by <a href="/reports/Cheshire+West+and+Chester">Cheshire West and Chester Council</a>.
+[% ELSIF council.name.match('Macclesfield|Congleton|Crewe and Nantwich') %]
+Its area is now covered by <a href="/reports/Cheshire+East">Cheshire East Council</a>.
+[% ELSIF council.name.match('Mid Bedfordshire|South Bedfordshire') %]
+Its area is now covered by <a href="/reports/Central+Bedfordshire">Central Bedfordshire Council</a>.
+[% ELSIF council.name.match('Cheshire') %]
+Its area is now covered by <a href="/reports/Cheshire+West+and+Chester">Cheshire West and Chester Council</a> or
+<a href="/reports/Cheshire+East">Cheshire East Council</a>.
+[% ELSIF council.name.match('Bedfordshire') %]
+Its area is now covered by <a href="/reports/Bedford">Bedford Borough Council</a> or
+<a href="/reports/Central+Bedfordshire">Central Bedfordshire Council</a>.
+[% END %]
+</p>
+[% ELSE %]
<p><a href="[% rss_url %]"><img align="right" src="/i/feed.png" width="16" height="16" title="[% loc('RSS feed') %]" alt="[% tprintf(loc('RSS feed of problems in this %s'), thing) %]" border="0" hspace="4"></a>
+[% END %]
[% IF c.cobrand.all_councils_report %]
[% tprintf( loc('This is a summary of all reports for one %s.'), thing ) %]
@@ -47,7 +75,14 @@
<h2>[% name %]</h2>
- [% INCLUDE 'pagination' %]
+[% IF c.cobrand.moniker == '' %]
+<p class="promo">
+ FixMyStreet is now available for local council websites.
+ <a href="http://www.mysociety.org/fixmystreet-for-local-council-websites/">Find&nbsp;out&nbsp;more</a>.
+</p>
+[% END %]
+
+ [% INCLUDE 'pagination.html', param = 'p' %]
[% INCLUDE column
title = loc('Recently fixed')
@@ -104,23 +139,3 @@
[% END %]
[% END %]
-[% BLOCK pagination %]
- [% IF pager.last_page > 1 %]
- <p>
- [% IF pager.previous_page %]
- <a href="[% c.req.uri_with({'p' => pager.previous_page}) %]">&larr; Previous</a>
- [% ELSE %]
- &larr; Previous
- [% END %]
- |
- [% pager.first %] to [% pager.last %] of [% pager.total_entries %]
- |
- [% IF pager.next_page %]
- <a href="[% c.req.uri_with({'p' => pager.next_page}) %]">Next &rarr;</a>
- [% ELSE %]
- Next &rarr;
- [% END %]
- </p>
- [% END %]
-[% END %]
-
diff --git a/templates/web/emptyhomes/faq/faq-en-gb.html b/templates/web/emptyhomes/faq/faq-en-gb.html
index 1da62a41d..0222fcd9e 100755
--- a/templates/web/emptyhomes/faq/faq-en-gb.html
+++ b/templates/web/emptyhomes/faq/faq-en-gb.html
@@ -68,7 +68,7 @@ save 10 million tonnes of CO<sub>2</sub> over building the same number of new ho
<h2>Privacy Questions</h2>
<dl>
<dt>Who gets to see my email address?</dt>
- <dd>If you submit an empty property, your details are obviously provided to us.
+ <dd>If you submit an empty property, your details are provided to us and to the council.
Your name is displayed upon the site if you let us, but not your email address;
similarly with updates. We will never give or sell your email address to
anyone else, unless we are obliged to by law.</dd>
diff --git a/templates/web/emptyhomes/header.html b/templates/web/emptyhomes/header.html
index 08d1b1a05..ca51d8060 100644
--- a/templates/web/emptyhomes/header.html
+++ b/templates/web/emptyhomes/header.html
@@ -40,6 +40,15 @@
</ul>
</div>
+<ul id="meta">
+ [% IF c.user_exists %]
+ <li>[% tprintf(loc('Signed in as %s'), c.user.name || c.user.email) %]
+ <li><a href="/auth/sign_out">[% loc('Sign out') %]</a></li>
+ [% ELSE %]
+ <li>&nbsp;</li>
+ [% END %]
+</ul>
+
<div id="wrapper">
<div id="mysociety">
diff --git a/templates/web/fiksgatami/footer.html b/templates/web/fiksgatami/footer.html
index a7f899af4..7ad580fa0 100644
--- a/templates/web/fiksgatami/footer.html
+++ b/templates/web/fiksgatami/footer.html
@@ -12,7 +12,7 @@
<div id="logo" align="center"><a href="http://www.nuug.no/">Foreningen NUUG</a></div>
<p id="footer">
- [% loc('Built by <a href="http://www.mysociety.org/">mySociety</a> and maintained by <a href="http://www.nuug.no/">NUUG</a>, using some <a href="http://github.com/mysociety/fixmystreet">clever</a>&nbsp;<a href="https://secure.mysociety.org/cvstrac/dir?d=mysociety/services/TilMa">code</a>.') %]
+ [% loc('Built by <a href="http://www.mysociety.org/">mySociety</a> and maintained by <a href="http://www.nuug.no/">NUUG</a>') %] | <a href="http://github.com/mysociety/fixmystreet">[% loc('Source code') %]</a>
</p>
[% INCLUDE 'tracking_code.html' %]
diff --git a/templates/web/lichfield/footer.html b/templates/web/lichfield/footer.html
new file mode 100644
index 000000000..2a0fee889
--- /dev/null
+++ b/templates/web/lichfield/footer.html
@@ -0,0 +1,128 @@
+ </div>
+ <br class="cl">
+ </div><!-- end content -->
+ </div><!-- end wrap -->
+
+ </div><!-- End content -->
+
+ <div class="colinfo">
+ <form action="http://www.lichfielddc.gov.uk/site/scripts/documents.php" method="get" class="catNav" name="catNav">
+ <h2>Information on...</h2>
+ <select name="categoryID" onchange="submitform('catNav')">
+ <option value="100001">Advice and benefits</option>
+ <option value="100002">Business</option>
+
+ <option value="100003">Community and living</option>
+ <option value="100004">Council and democracy</option>
+ <option value="100005">Education and learning</option>
+ <option value="100006">Environment and planning</option>
+ <option value="100007">Housing</option>
+ <option value="100008">Jobs and careers</option>
+
+ <option value="100009">Leisure and culture</option>
+ <option value="100010">Health and social care</option>
+ <option value="100011">Transport and streets</option>
+ </select>
+ <noscript><input type="submit" value="Go" class="button" id="go"/></noscript>
+ </form>
+ </div>
+
+<ul id="column_nav">
+ <li class="column_widget">
+ <h2>FixMyStreet</h2>
+ <ul>
+ [% IF c.user_exists %]
+ <li class="section">[% tprintf(loc('Signed in as %s'), c.user.name || c.user.email) %]</li>
+ <li class="section"><a href="/auth/sign_out">[% loc('Sign out') %]</a></li>
+ [% END %]
+ <li class="section"><a href="/">Report a problem</a></li>
+ <li class="section"><a href="/reports/Lichfield">All reports</a></li>
+ <li class="section"><a href="/my">Your reports</a></li>
+ <li class="section"><a href="/alert">Local alerts</a></li>
+ <li class="section"><a href="/faq">Help</a></li>
+ <li class="section"><a href="/contact">Contact</a></li>
+ </ul>
+ </li>
+ <!-- End left-hand supplements -->
+
+</ul>
+ <br class="clear" />
+ </div>
+
+ </div>
+ <br class="clear" />
+ <br class="clear" />
+
+ <ul class="contactbox">
+ <li class="taxonomy">
+ <h2>Browse council information on...</h2>
+ <ul>
+ <li><a href="http://www.lichfielddc.gov.uk/site/scripts/documents.php?categoryID=100001">Advice and benefits</a></li>
+ <li><a href="http://www.lichfielddc.gov.uk/site/scripts/documents.php?categoryID=100002">Business</a></li>
+ <li><a href="http://www.lichfielddc.gov.uk/site/scripts/documents.php?categoryID=100003">Community and living</a></li>
+ <li><a href="http://www.lichfielddc.gov.uk/site/scripts/documents.php?categoryID=100004">Council and democracy</a></li>
+ <li><a href="http://www.lichfielddc.gov.uk/site/scripts/documents.php?categoryID=100005">Education and learning</a></li>
+ <li><a href="http://www.lichfielddc.gov.uk/site/scripts/documents.php?categoryID=100006">Environment and planning</a></li>
+ <li><a href="http://www.lichfielddc.gov.uk/site/scripts/documents.php?categoryID=100007">Housing</a></li>
+ <li><a href="http://www.lichfielddc.gov.uk/site/scripts/documents.php?categoryID=100008">Jobs and careers</a></li>
+ <li><a href="http://www.lichfielddc.gov.uk/site/scripts/documents.php?categoryID=100009">Leisure and culture</a></li>
+ <li><a href="http://www.lichfielddc.gov.uk/site/scripts/documents.php?categoryID=100010">Health and social care</a></li>
+ <li><a href="http://www.lichfielddc.gov.uk/site/scripts/documents.php?categoryID=100011">Transport and streets</a></li>
+ </ul>
+ </li>
+ <li class="contact vcard">
+ <a href="http://www.lichfielddc.gov.uk/site/scripts/location.php"><img src="http://www.lichfielddc.gov.uk/site/images/map.gif" alt="" /></a>
+ <h2>Get in touch or visit...</h2>
+ <ul>
+ <li><a href="http://www.lichfielddc.gov.uk/site/custom_scripts/feedback2.php">Your feedback or comments</a></li>
+ <li><a href="http://www.lichfielddc.gov.uk/site/scripts/faqs_ask.php">Ask a question about our services</a></li>
+ <li><a href="http://www.lichfielddc.gov.uk/site/scripts/location.php">Our location and travel details</a></li>
+ </ul>
+ <p class="fn councilName">Lichfield District Council</p>
+ <p class="phone tel">Phone our call centre: <span>01543 308 000</span></p>
+ <p class="adr">District Council House, Frog Lane, Lichfield, Staffs, WS13 6YY</p>
+ </li>
+ <li class="focus">
+ <h2>Our focus and priorities...</h2>
+ <ul>
+ <li><h3><a href="http://www.lichfielddc.gov.uk/people">Centred on people</a></h3>
+ <a href="http://www.lichfielddc.gov.uk/people"><img src="http://www.lichfielddc.gov.uk/site/images/people.gif" alt="" /></a>
+ </li>
+ <li><h3><a href="http://www.lichfielddc.gov.uk/place">Focused on place</a></h3>
+ <a href="http://www.lichfielddc.gov.uk/place"><img src="http://www.lichfielddc.gov.uk/site/images/place.gif" alt="" /></a>
+ </li>
+ <li><h3><a href="http://www.lichfielddc.gov.uk/improvement">Delivering through improvement</a></h3>
+ <a href="http://www.lichfielddc.gov.uk/improvement"><img src="http://www.lichfielddc.gov.uk/site/images/improvement.gif" alt="" /></a>
+ </li>
+ </ul>
+ </li>
+ </ul><!-- end contactbox -->
+ <div id="footer">
+ <img src="http://www.lichfielddc.gov.uk/site/images/footer-logo.gif" alt="Lichfield District Council" />
+ <p class="addNav"><a href="http://www.lichfielddc.gov.uk/site/custom_scripts/mysociety/footer.php?#mast">Jump to the top</a></p>
+ <p class="addNav"><a href="http://www.lichfielddc.gov.uk/site/scripts/terms.php">Terms and Disclaimer</a> - <a href="http://www.lichfielddc.gov.uk/site/scripts/accessibility.php">Accessibility Statement</a> - <a href="http://www.lichfielddc.gov.uk/site/scripts/website_statistics.php">Websites statistics</a> - <a accesskey="3" href="http://www.lichfielddc.gov.uk/site/scripts/site_map.php">Site map</a> - Lichfield District Council &copy; 2010</p>
+
+ <p class="addNav">Made with <a href="http://validator.w3.org/">XHTML</a> and <a href="http://jigsaw.w3.org/css-validator/">CSS</a> to <a href="http://www.w3.org/WAI/WCAG1AA-Conformance">WAI-AA</a>. <a href="http://www.icra.org">ICRA</a> rated. Powered by Jadu <a href="http://www.jadu.co.uk" >Content Management</a>.</p>
+
+ <p class="addNav"><a href="http://www.direct.gov.uk">www.direct.gov.uk</a> - A Beacon Authority</p>
+
+<p class="hidden">
+ <a accesskey="1" href="http://www.lichfielddc.gov.uk">Homepage</a> /
+ <a accesskey="2" href="http://www.lichfielddc.gov.uk/site/scripts/whats_new_index.php">Whats new </a> /
+ <a accesskey="3" href="http://www.lichfielddc.gov.uk/site/scripts/site_map.php">Site map</a> /
+ <a accesskey="4" href="http://www.lichfielddc.gov.uk/site/scripts/search_index.php">Search facility </a> /
+ <a accesskey="5" href="http://www.lichfielddc.gov.uk/site/scripts/faqs_index.php">Frequently asked questions</a> /
+ <a accesskey="7" href="http://www.lichfielddc.gov.uk/site/scripts/contact.php">Complaints procedure (Contacting the Council page)</a> /
+ <a accesskey="8" href="http://www.lichfielddc.gov.uk/site/scripts/terms.php">Terms and Privacy</a> /
+ <a accesskey="9" href="http://www.lichfielddc.gov.uk/site/scripts/feedback.php">Feedback</a> /
+ <a accesskey="0" href="http://www.lichfielddc.gov.uk/site/scripts/accessibility.php">Access key details</a> /
+ <a accesskey="/" href="#mast">Top of the page</a>
+</p>
+
+
+</div>
+</div>
+<!-- #################################### -->
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script><script type="text/javascript"> _uacct = "UA-511839-1"; urchinTracker(); </script>
+</body>
+</html>
diff --git a/templates/web/lichfield/header.html b/templates/web/lichfield/header.html
new file mode 100644
index 000000000..7b414159a
--- /dev/null
+++ b/templates/web/lichfield/header.html
@@ -0,0 +1,190 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="[% lang_code %]">
+<head>
+
+<style type="text/css">
+ @import url(/css/core.css);
+ @import url(/cobrands/lichfield/css/layout.css);
+</style>
+
+ <link rel="stylesheet" type="text/css" href="http://www.lichfielddc.gov.uk/site/styles/standard.css" media="screen" />
+<link rel="stylesheet" type="text/css" href="http://www.lichfielddc.gov.uk/site/styles/generic/style.php" media="screen" />
+
+<!--[if lte IE 6]>
+ <link rel="stylesheet" type="text/css" href="http://www.lichfielddc.gov.uk/site/styles/generic/ie_special.css" media="screen" />
+ <link rel="stylesheet" type="text/css" href="http://www.lichfielddc.gov.uk/site/styles/generic/ie_special_print.css" media="print" />
+<![endif]-->
+<!--[if IE 7]>
+ <link rel="stylesheet" type="text/css" href="http://www.lichfielddc.gov.uk/site/styles/generic/ie-seven.css" media="screen" />
+<![endif]-->
+
+<link rel="stylesheet" type="text/css" href="http://www.lichfielddc.gov.uk/site/styles/generic/print.css" media="print" />
+<link rel="stylesheet" type="text/css" href="http://www.lichfielddc.gov.uk/site/styles/generic/handheld.css" media="handheld" />
+<link rel="stylesheet" type="text/css" href="/assets/lichfielddc/reset.css">
+<link rel="stylesheet" type="text/css" href="/pet.css">
+<link rel="stylesheet" type="text/css" href="/assets/lichfielddc/css.css">
+
+<link rel="Shortcut Icon" type="image/x-icon" href="http://www.lichfielddc.gov.uk/site/favicon.ico" />
+<link rel="ToC" href="http://www.lichfielddc.gov.uk/site/scripts/site_map.php" />
+
+ <link rel="search" type="application/opensearchdescription+xml" href="http://www.lichfielddc.gov.uk/openSearch.php" title="Lichfield District Council" />
+
+ <!-- general metadata -->
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+ <meta http-equiv="content-language" content="en" />
+ <meta name="generator" content="http://www.jadu.co.uk" />
+ <meta name="robots" content="index,follow" />
+ <meta name="revisit-after" content="2 days" />
+ <meta name="Author-Template" content="Jadu CSS design" />
+ <meta name="Author" content="Lichfield District Council" />
+ <meta name="Publisher" content="Lichfield District Council, District Council House, Frog Lane, Lichfield, Staffordshire. WS13 6YY" />
+ <meta name="Publisher-Email" content="webmaster@lichfielddc.gov.uk" />
+ <meta name="Coverage" content="Worldwide" />
+
+ <!-- ICRA PICS label -->
+ <link rel="meta" href="http://www.lichfielddc.gov.uk/labels.rdf" type="application/rdf+xml" title="ICRA labels" />
+ <!-- Dublin Core Metadata -->
+ <meta name="DC.creator" lang="en" content="Lichfield District Council" />
+ <meta name="DC.date.created" lang="en" content="PARAM_DATE" />
+ <meta name="DC.format" lang="en" content="text/html" />
+ <meta name="DC.language" content="en" />
+ <meta name="DC.publisher" lang="en" content="Lichfield District Council, District Council House, Frog Lane, Lichfield, Staffordshire. WS13 6YY" />
+ <meta name="DC.rights.copyright" lang="en" content="Copyright 2010 Lichfield District Council" />
+ <meta name="DC.coverage" lang="en" content="Worldwide" />
+ <meta name="DC.identifier" content="PARAM_DC_IDENTIFIER" />
+
+ <!-- eGMS Metadata -->
+ <meta name="eGMS.status" lang="en" content="V1.0 Public Consumption" />
+ <meta name="eGMS.accessibility" scheme="WCAG" content="Double-A" />
+
+ <!-- javascript -->
+ <script type="text/javascript" src="http://www.lichfielddc.gov.uk/site/javascript/prototype.js"></script>
+ <script type="text/javascript" src="http://www.lichfielddc.gov.uk/site/javascript/scriptaculous.js"></script>
+ <script type="text/javascript" src="http://www.lichfielddc.gov.uk/site/custom_scripts/lightbox/js/lightbox.js"></script>
+ <script type="text/javascript" src="http://www.lichfielddc.gov.uk/site/javascript/global.js"></script>
+
+
+ <meta name="Keywords" content="home, homepage, index, root, Lichfield, UK, England, local authority, council, local government, services, citizen, councillor, community, leisure, tourist, tourism, social services, education, enviroment, fire, emergency planning, road safety, transport, motorways, library, libraries, archive, public record, record office, parish councils, county councillors" />
+ <meta name="Description" content="Lichfield District Council: PARAM_DESCRIPTION" />
+
+ <meta name="DC.title" lang="en" content="Lichfield District Council: PARAM_TITLE" />
+ <meta name="DC.description" lang="en" content="Lichfield District Council: PARAM_DESCRIPTION" />
+
+ <meta name="DC.subject" lang="en" scheme="eGMS.IPSV" content="Local government;Government, politics and public administration" />
+ <meta name="DC.subject" lang="en" content="Council, government and democracy" />
+
+[% INCLUDE 'common_header_tags.html' %]
+</head>
+<body PARAM_BODYID>
+<!-- ########## MAIN STRUCTURE ######### -->
+<div id="container">
+<div id="mobile_name">Lichfield District Council</div>
+<div id="mast">
+ <p class="skip">
+ <a accesskey="s" title="Skip to page content, access key S" href="http://www.lichfielddc.gov.uk/site/custom_scripts/mysociety/header.php?#main" rel="nofollow">Jump to content</a> -
+ <a accesskey="n" title="Skip to main navigation, access key N" href="http://www.lichfielddc.gov.uk/site/custom_scripts/mysociety/header.php?#main-nav" rel="nofollow">Jump to navigation</a> -
+
+ <a class="access" title="Change font size, colour and contrast of this site" href="http://www.lichfielddc.gov.uk/site/scripts/user_settings.php">Accessibility Settings</a>
+ </p>
+ <!--<form action="http://www.lichfielddc.gov.uk/site/scripts/search_results.php" method="get" id="search">
+ <fieldset><a title="Create a specific detailed search" href="http://www.lichfielddc.gov.uk/site/scripts/search_index.php">Need help finding something?</a>
+ <label for="SearchSite">Search this site</label>
+ <input type="text" size="18" maxlength="40" class="field" name="searchQuery" id="SearchSite" value="" />
+ <input type="submit" value="Search" class="button" /></fieldset>
+ </form>-->
+ <form action="http://www.lichfielddc.gov.uk/site/scripts/google_results.php" method="get" name="search" id="search">
+ <fieldset><a title="Create a specific detailed search" href="http://www.lichfielddc.gov.uk/site/scripts/search_index.php">Need help finding something?</a>
+ <label for="SearchSite">Search this site</label>
+ <input type="text" name="q" size="18" maxlength="40" class="field" id="SearchSite" value=""/>
+ <input type="hidden" name="site" value="ldc"/>
+ <input type="hidden" name="client" value="ldc"/>
+ <input type="hidden" name="output" value="xml"/>
+ <input type="submit" value="Search" class="button" /></fieldset>
+ </form>
+ <div class="pseudoH1">
+ <a href="http://www.lichfielddc.gov.uk/site/index.php"><span>Lichfield District Council</span></a>
+ </div>
+
+ <p class="about">
+ Making it easy to <a href="http://www.lichfielddc.gov.uk/site/scripts/az_home.php" class="tt">access council services</a>, <a href="http://www.lichfielddc.gov.uk/reportit" class="tt">report problems</a> in your area, view <a href="http://www.lichfielddc.gov.uk/planning" class="tt">planning applications</a>, find out <a href="http://www.lichfielddc.gov.uk/whatsgoingon" class="tt">what's going on locally</a>, <a href="http://www.lichfielddc.gov.uk/voiceit" class="tt">have your say</a> on local issues, and much more.
+ </p>
+
+ <a name="main-nav"></a>
+ <h2>Navigation</h2>
+ <ul>
+ <li><a href="http://www.lichfielddc.gov.uk" title="View the home page">Home</a></li>
+ <li><a href="http://www.lichfielddc.gov.uk/site/scripts/az_home.php">A-Z of services</a></li>
+ <li><a href="http://www.lichfielddc.gov.uk/site/scripts/documents_index.php">Council services</a></li>
+ <li><a href="http://www.lichfielddc.gov.uk/site/custom_scripts/newsblogindex.php">News</a></li>
+ <li><a href="http://www.lichfielddc.gov.uk/site/scripts/contact.php">Contacts</a></li>
+ <li><a href="http://www.lichfielddc.gov.uk/site/scripts/location.php">Opening hours and location</a></li>
+ <li><a href="http://www.lichfielddc.gov.uk/site/custom_scripts/myareasearch.php" id="myarea">My area</a>
+ </li>
+ <li><a href="http://www.lichfielddc.gov.uk/site/custom_scripts/map.php" >Online map</a></li>
+ <!-- <li class="sign-in"><a href="http://www.lichfielddc.gov.uk/site/index.php?sign_in=true">Sign-in</a> or <a href="http://www.lichfielddc.gov.uk/site/scripts/register.php">Register</a></li> -->
+ <li class="sign-in">
+
+ <a href="http://www.lichfielddc.gov.uk/site/index.php?sign_in=true">Sign in</a> or
+
+
+ <a href="http://www.lichfielddc.gov.uk/site/scripts/register.php">Register</a>
+ </li>
+
+ </ul><!-- end navigation -->
+ <!--
+ <span id="postcodebox" style="display: none;">
+<form action="http://www.lichfielddc.gov.uk/site/custom_scripts/myarea.php" method="get" id="pcodeform">
+<label for="postcode">Your Postcode: </label><input name="postcode" id="postcode" class="text" /> <input value="Go!" name="submit" class="pbutton" type="submit" />
+</form>
+</span> -->
+
+
+ <div class="clear"></div>
+</div>
+
+<div id="suggest"></div>
+<script type="text/javascript" src="http://www.lichfielddc.gov.uk/site/javascript/effects.js"></script>
+<script type="text/javascript">
+ new Ajax.Autocompleter('SearchSite', 'suggest', 'http://www.lichfielddc.gov.uk/site/custom_scripts/autocomplete.php', {
+ paramName: 'search',
+ minChars: 1,
+ afterUpdateElement : goTo
+ });
+
+ function goTo(text, li) {
+ var url = li.title;
+ window.location = url;
+ }
+
+/* document.observe("dom:loaded", function() {
+ Event.observe($('myarea'), 'click', function(event) {
+ $('postcodebox').appear();
+ event.stop(event);
+ });
+ }); */
+ </script> <div id="page_wrap">
+ <div id="mainContent">
+ <div id="content" class="withWidth">
+ <a name="main"></a>
+
+ <!-- BREAD CRUMB NAVIGATION -->
+
+ <!-- Breadcrumb --><!-- googleoff:all -->
+ <ul id="breadcrumb">
+ <li><a href="http://www.lichfielddc.gov.uk/site/">Home</a></li><li><a href="http://lichfield.fixmystreet.com/">FixMyStreet</a></li>
+ <li class="bc_end">
+ [% SWITCH c.req.uri.path %]Report a problem
+ [% CASE '/' %]Report a problem
+ [% CASE '/reports/Lichfield' %]All reports
+ [% CASE '/my' %]Your reports
+ [% CASE '/alert' %]Local alerts
+ [% CASE '/faq' %]Help
+ [% CASE '/contact' %] Contact
+ [% END %]
+ </li></ul>
+ <!-- END Breadcrumb --><!-- googleon:all -->
+ <!-- END BREAD CRUMB -->
+ <div id="wrap">
+ <div id="content">
+ <div id="mysociety">
+
diff --git a/templates/web/southampton/header.html b/templates/web/southampton/header.html
index a15054fb6..5d94d5bdf 100644
--- a/templates/web/southampton/header.html
+++ b/templates/web/southampton/header.html
@@ -2,6 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
[% INCLUDE 'common_header_tags.html' %]
+ <script type="text/javascript" src="/js/southampton.js"></script>
<link rel="stylesheet" type="text/css" href="/css/core.css" />
<link rel="stylesheet" type="text/css" href="/cobrands/southampton/style.css" />
@@ -27,7 +28,7 @@
<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 class="text" type="text" value="" placeholder="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"/>
@@ -40,7 +41,7 @@
<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 id="PostCode" name="Postcode" class="text2" type="text" value="" placeholder="Enter street/postcode" />
<input class="button" type="submit" value="go" />
</fieldset>
</form>
diff --git a/web/cobrands/emptyhomes/css.css b/web/cobrands/emptyhomes/css.css
index f6047ebe5..c45e9255f 100644
--- a/web/cobrands/emptyhomes/css.css
+++ b/web/cobrands/emptyhomes/css.css
@@ -147,6 +147,24 @@ a:hover, a:active {
background-position: 100% 0;
}
+#meta {
+ clear: right;
+ float: right;
+ list-style-type: none;
+ margin: 0.25em 0.5em 0 1em;
+ padding: 0;
+ font-size: 83%;
+}
+#meta li {
+ display: inline;
+ margin: 0;
+ padding: 0 0 0 0.25em;
+ border-left: solid 1px #B1BECF;
+}
+#meta li:first-child {
+ border-left: none;
+}
+
#logo {
border: none;
position: absolute;
diff --git a/web/cobrands/lichfield/css/layout.css b/web/cobrands/lichfield/css/layout.css
new file mode 100644
index 000000000..9485985eb
--- /dev/null
+++ b/web/cobrands/lichfield/css/layout.css
@@ -0,0 +1,61 @@
+#mysociety #postcodeForm {
+ padding: 0.8em;
+ background-color: #F3F4F4;
+}
+
+#mysociety #postcodeForm label {
+ float: none;
+ margin-bottom: 5px;
+ width: auto !important;
+}
+
+#mysociety #map_box {
+ width: 380px;
+}
+
+#mysociety #map, #mysociety #drag {
+ width: 378px;
+ height: 378px;
+}
+
+#mysociety p {
+ margin: 1em 0px;
+ padding: 0px;
+}
+
+#mysociety #update_form {
+ clear: both;
+}
+
+#mysociety #form_sign_in {
+ padding-top: 2em;
+}
+
+#mysociety form label {
+ width: 6em;
+ display: inline;
+ margin-right: 0px;
+}
+
+#mysociety div.checkbox {
+ padding-left: 6.5em;
+}
+
+#mysociety textarea,
+#mysociety input {
+ background-color: #f9f9f1;
+ margin: 4px;
+}
+
+#mysociety #fileupload_normalUI input {
+ background-color: white;
+}
+
+#mysociety input[type='submit']{
+ border: 0px;
+ color: white;
+ padding: 3px;
+ vertical-align: top;
+ font:150%/1.4em "Trebuchet MS", Helvetica, Arial, Sans-serif;
+ background:url(http://www.lichfielddc.gov.uk/site/styles/css_img/nav-bg.png) top repeat-x;
+}
diff --git a/web/cobrands/southampton/css.css b/web/cobrands/southampton/css.css
index 85f66dcc3..fa0e07548 100644
--- a/web/cobrands/southampton/css.css
+++ b/web/cobrands/southampton/css.css
@@ -1,22 +1,17 @@
#mysociety #map_box {
- width: 380px;
+ width: 422px;
}
#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;
+ width: 420px;
+ height: 420px;
}
#mysociety p#fixed, #mysociety p#unknown {
- margin-right: 400px;
+ margin-right: 442px;
width: auto;
}
+#mysociety #problem_form {
+ clear: both;
+}
#mysociety h1 {
margin: 0;
font-size: 175%;
diff --git a/web/cobrands/southampton/css.scss b/web/cobrands/southampton/css.scss
index 57cb95a8f..0760c982c 100644
--- a/web/cobrands/southampton/css.scss
+++ b/web/cobrands/southampton/css.scss
@@ -1,4 +1,4 @@
-$map_width: 378px;
+$map_width: 420px;
$background: #E9EEF7;
$darker: #768EB5;
@@ -13,20 +13,16 @@ $darker: #768EB5;
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;
}
+ #problem_form {
+ clear: both;
+ }
+
// Generics
h1 {
diff --git a/web/css/_main.scss b/web/css/_main.scss
index 0b9cf33ab..9063f1484 100644
--- a/web/css/_main.scss
+++ b/web/css/_main.scss
@@ -41,6 +41,14 @@ select, input, textarea {
#front_stats div {
background-color: $header_back;
}
+
+ p.promo {
+ border-top: 1px solid #bbb;
+ border-bottom: 1px solid #bbb;
+ background-color: #eee;
+ text-align: center;
+ padding: 0 0.5em;
+ }
}
diff --git a/web/css/core.css b/web/css/core.css
index cb35000cd..aeab2b79b 100644
--- a/web/css/core.css
+++ b/web/css/core.css
@@ -34,7 +34,9 @@
#mysociety #advert_thin {
width: 50%;
margin: 1em auto;
- border-top: dotted 1px #999999; }
+ text-align: center;
+ border-top: dotted 1px #999999;
+}
#mysociety #advert_hfymp {
border-top: dotted 1px #999999;
text-align: center; }
@@ -238,7 +240,11 @@
margin: 0; }
#mysociety #nearby_lists h2 {
margin-top: 0.5em;
- margin-bottom: 0; }
+ margin-bottom: 0;
+}
+#mysociety #nearby_lists li small {
+ color: #666666;
+}
#mysociety #alert_links {
float: right; }
#mysociety #alert_links_area {
diff --git a/web/css/core.scss b/web/css/core.scss
index d845d6de4..691d70f91 100644
--- a/web/css/core.scss
+++ b/web/css/core.scss
@@ -66,6 +66,7 @@ $map_width: 500px;
#advert_thin {
width: 50%;
margin: 1em auto;
+ text-align: center;
border-top: dotted 1px #999999;
}
#advert_hfymp {
@@ -354,6 +355,11 @@ $map_width: 500px;
margin-top: 0.5em;
margin-bottom: 0;
}
+
+ #nearby_lists li small {
+ color: #666666;
+ }
+
#alert_links {
float: right;
}
diff --git a/web/css/main.css b/web/css/main.css
index 686b74d40..5b4be5ebc 100644
--- a/web/css/main.css
+++ b/web/css/main.css
@@ -43,6 +43,13 @@ select, input, textarea {
#mysociety #front_stats div {
background-color: #e3d595;
}
+#mysociety p.promo {
+ border-top: 1px solid #bbb;
+ border-bottom: 1px solid #bbb;
+ background-color: #eee;
+ text-align: center;
+ padding: 0 0.5em;
+}
#header {
font-size: 200%;
diff --git a/web/js/fixmystreet.js b/web/js/fixmystreet.js
index 50ccb2ac3..4b19dc53e 100644
--- a/web/js/fixmystreet.js
+++ b/web/js/fixmystreet.js
@@ -3,76 +3,58 @@
* FixMyStreet JavaScript
*/
+$(function(){
-YAHOO.util.Event.onContentReady('pc', function() {
- if (this.id && this.value == this.defaultValue) {
- this.focus();
- }
-});
+ $('#pc').focus();
-YAHOO.util.Event.onContentReady('mapForm', function() {
- this.onsubmit = function() {
+ $('input[type=submit]').removeAttr('disabled');
+ $('#mapForm').submit(function() {
if (this.submit_problem) {
- this.onsubmit = function() { return false; };
+ $('input[type=submit]', this).prop("disabled", true);
}
-
- /* XXX Should be in Tilma code only */
- if (this.x) {
- this.x.value = fixmystreet.x + 3;
- this.y.value = fixmystreet.y + 3;
- }
-
return true;
- }
-});
+ });
-YAHOO.util.Event.onContentReady('another_qn', function() {
- if (!document.getElementById('been_fixed_no').checked && !document.getElementById('been_fixed_unknown').checked) {
- YAHOO.util.Dom.setStyle(this, 'display', 'none');
+ if (!$('#been_fixed_no').prop('checked') && !$('#been_fixed_unknown').prop('checked')) {
+ $('#another_qn').hide();
}
- YAHOO.util.Event.addListener('been_fixed_no', 'click', function(e) {
- YAHOO.util.Dom.setStyle('another_qn', 'display', 'block');
+ $('#been_fixed_no').click(function() {
+ $('#another_qn').show('fast');
});
- YAHOO.util.Event.addListener('been_fixed_unknown', 'click', function(e) {
- YAHOO.util.Dom.setStyle('another_qn', 'display', 'block');
+ $('#been_fixed_unknown').click(function() {
+ $('#another_qn').show('fast');
});
- YAHOO.util.Event.addListener('been_fixed_yes', 'click', function(e) {
- YAHOO.util.Dom.setStyle('another_qn', 'display', 'none');
+ $('#been_fixed_yes').click(function() {
+ $('#another_qn').hide('fast');
});
-});
-var timer;
-function email_alert_close() {
- YAHOO.util.Dom.setStyle('email_alert_box', 'display', 'none');
-}
-YAHOO.util.Event.onContentReady('email_alert', function() {
- YAHOO.util.Event.addListener(this, 'click', function(e) {
- if (!document.getElementById('email_alert_box'))
+ var timer;
+ function email_alert_close() {
+ $('#email_alert_box').hide('fast');
+ }
+
+ $('#email_alert').click(function(e) {
+ if (!$('#email_alert_box').length)
return true;
- YAHOO.util.Event.preventDefault(e);
- if (YAHOO.util.Dom.getStyle('email_alert_box', 'display') == 'block') {
+ e.preventDefault();
+ if ($('#email_alert_box').is(':visible')) {
email_alert_close();
} else {
- var pos = YAHOO.util.Dom.getXY(this);
- pos[0] -= 20; pos[1] += 20;
- YAHOO.util.Dom.setStyle('email_alert_box', 'display', 'block');
- YAHOO.util.Dom.setXY('email_alert_box', pos);
- document.getElementById('alert_rznvy').focus();
+ var pos = $(this).position();
+ $('#email_alert_box').css( { 'left': ( pos.left - 20 ) + 'px', 'top': ( pos.top + 20 ) + 'px' } );
+ $('#email_alert_box').show('fast');
+ $('#alert_rznvy').focus();
}
- });
- YAHOO.util.Event.addListener(this, 'mouseout', function(e) {
- timer = window.setTimeout(email_alert_close, 2000);
- });
- YAHOO.util.Event.addListener(this, 'mouseover', function(e) {
+ }).hover(function() {
window.clearTimeout(timer);
+ }, function() {
+ timer = window.setTimeout(email_alert_close, 2000);
});
-});
-YAHOO.util.Event.onContentReady('email_alert_box', function() {
- YAHOO.util.Event.addListener(this, 'mouseout', function(e) {
- timer = window.setTimeout(email_alert_close, 2000);
- });
- YAHOO.util.Event.addListener(this, 'mouseover', function(e) {
+
+ $('#email_alert_box').hover(function() {
window.clearTimeout(timer);
+ }, function() {
+ timer = window.setTimeout(email_alert_close, 2000);
});
-});
+});
diff --git a/web/js/map-OpenLayers.js b/web/js/map-OpenLayers.js
index 821bbafc3..d00079517 100644
--- a/web/js/map-OpenLayers.js
+++ b/web/js/map-OpenLayers.js
@@ -1,4 +1,4 @@
-YAHOO.util.Event.onContentReady('map', function() {
+$(function(){
var perm = new OpenLayers.Control.Permalink();
set_map_config(perm);
@@ -41,11 +41,20 @@ YAHOO.util.Event.onContentReady('map', function() {
return false;
});
+ // Vector layers must be added onload as IE sucks
+ if ($.browser.msie) {
+ $(window).load(fixmystreet_onload);
+ } else {
+ fixmystreet_onload();
+ }
+});
+
+function fixmystreet_onload() {
if ( fixmystreet.area ) {
var area = new OpenLayers.Layer.Vector("KML", {
strategies: [ new OpenLayers.Strategy.Fixed() ],
protocol: new OpenLayers.Protocol.HTTP({
- url: "/mapit/area/" + fixmystreet.area + ".kml",
+ url: "/mapit/area/" + fixmystreet.area + ".kml?simplify_tolerance=0.0001",
format: new OpenLayers.Format.KML()
})
});
@@ -64,7 +73,7 @@ YAHOO.util.Event.onContentReady('map', function() {
graphicWidth: 32,
graphicHeight: 59,
graphicOpacity: 1,
- graphicXOffset: -1,
+ graphicXOffset: -2,
graphicYOffset: -59
})
})
@@ -73,7 +82,7 @@ YAHOO.util.Event.onContentReady('map', function() {
pin_layer_options.strategies = [ new OpenLayers.Strategy.BBOX() ];
pin_layer_options.protocol = new OpenLayers.Protocol.HTTP({
url: '/ajax',
- params: fixmystreet.all_pins ? { all_pins: 1, map: 'FMS' } : { map: 'FMS' },
+ params: fixmystreet.all_pins ? { all_pins: 1 } : { },
format: new OpenLayers.Format.FixMyStreet()
});
}
@@ -81,7 +90,7 @@ YAHOO.util.Event.onContentReady('map', function() {
var markers = fms_markers_list( fixmystreet.pins, true );
fixmystreet.markers.addFeatures( markers );
- if (fixmystreet.page == 'around') {
+ if (fixmystreet.page == 'around' || fixmystreet.page == 'reports' || fixmystreet.page == 'my') {
fixmystreet.markers.events.register( 'featureselected', fixmystreet.markers, function(evt) {
window.location = '/report/' + evt.feature.attributes.id;
OpenLayers.Event.stop(evt);
@@ -96,8 +105,7 @@ YAHOO.util.Event.onContentReady('map', function() {
var bounds = fixmystreet.markers.getDataExtent();
if (bounds) { fixmystreet.map.zoomToExtent( bounds ); }
}
-
-});
+}
function fms_markers_list(pins, transform) {
var cols = { 'red':'R', 'green':'G', 'blue':'B', 'purple':'P' };
@@ -122,8 +130,8 @@ function fms_markers_list(pins, transform) {
return markers;
}
-YAHOO.util.Event.addListener('hide_pins_link', 'click', function(e) {
- YAHOO.util.Event.preventDefault(e);
+$('#hide_pins_link').click(function(e) {
+ e.preventDefault();
var showhide = [
'Show pins', 'Hide pins',
'Dangos pinnau', 'Cuddio pinnau',
@@ -140,8 +148,8 @@ YAHOO.util.Event.addListener('hide_pins_link', 'click', function(e) {
}
});
-YAHOO.util.Event.addListener('all_pins_link', 'click', function(e) {
- YAHOO.util.Event.preventDefault(e);
+$('#all_pins_link').click(function(e) {
+ e.preventDefault();
fixmystreet.markers.setVisibility(true);
var welsh = 0;
var texts = [
@@ -151,12 +159,12 @@ YAHOO.util.Event.addListener('all_pins_link', 'click', function(e) {
for (var i=0; i<texts.length; i+=3) {
if (this.innerHTML == texts[i+1]) {
this.innerHTML = texts[i+2];
- fixmystreet.markers.protocol.options.params = { all_pins: 1, map: 'FMS' };
+ fixmystreet.markers.protocol.options.params = { all_pins: 1 };
fixmystreet.markers.refresh( { force: true } );
lang = texts[i];
} else if (this.innerHTML == texts[i+2]) {
this.innerHTML = texts[i+1];
- fixmystreet.markers.protocol.options.params = { map: 'FMS' };
+ fixmystreet.markers.protocol.options.params = { };
fixmystreet.markers.refresh( { force: true } );
lang = texts[i];
}
@@ -215,7 +223,8 @@ OpenLayers.Control.PermalinkFMS = OpenLayers.Class(OpenLayers.Control.Permalink,
href = href.substring( 0, href.indexOf(separator) );
}
- href += separator + OpenLayers.Util.getParameterString(this.createParams(null, this.map.getZoom()+fixmystreet.ZOOM_OFFSET));
+ href += separator + OpenLayers.Util.getParameterString(this.createParams(null, this.map.getZoom()+fixmystreet.zoomOffset));
+ // Could use mlat/mlon here as well if we are on a page with a marker
if (this.anchor && !this.element) {
window.location.href = href;
}
@@ -269,12 +278,18 @@ OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, {
trigger: function(e) {
var lonlat = fixmystreet.map.getLonLatFromViewPortPx(e.xy);
+ if (fixmystreet.page == 'new') {
+ fixmystreet.markers.features[0].move(lonlat);
+ }
lonlat.transform(
fixmystreet.map.getProjectionObject(),
new OpenLayers.Projection("EPSG:4326")
);
document.getElementById('fixmystreet.latitude').value = lonlat.lat;
document.getElementById('fixmystreet.longitude').value = lonlat.lon;
+ if (fixmystreet.page == 'new') {
+ return;
+ }
document.getElementById('mapForm').submit();
}
});
diff --git a/web/js/map-bing-ol.js b/web/js/map-bing-ol.js
index 75bce80d3..032ac1e89 100644
--- a/web/js/map-bing-ol.js
+++ b/web/js/map-bing-ol.js
@@ -21,7 +21,7 @@ OpenLayers.Layer.Bing = OpenLayers.Class(OpenLayers.Layer.XYZ, {
numZoomLevels: 18,
transitionEffect: "resize",
sphericalMercator: true,
- buffer: 0,
+ buffer: 0
//attribution: "© Microsoft / OS 2010"
}, options);
var newArguments = [name, url, options];
@@ -56,16 +56,17 @@ OpenLayers.Layer.Bing = OpenLayers.Class(OpenLayers.Layer.XYZ, {
if (z >= 16) {
var url = [
- "http://a.os.openstreetmap.org/sv/${z}/${x}/${y}.png",
- "http://b.os.openstreetmap.org/sv/${z}/${x}/${y}.png",
- "http://c.os.openstreetmap.org/sv/${z}/${x}/${y}.png"
+ "http://tilma.mysociety.org/sv/${z}/${x}/${y}.png",
+ "http://a.tilma.mysociety.org/sv/${z}/${x}/${y}.png",
+ "http://b.tilma.mysociety.org/sv/${z}/${x}/${y}.png",
+ "http://c.tilma.mysociety.org/sv/${z}/${x}/${y}.png"
];
} else {
var url = [
- "http://ecn.t0.tiles.virtualearth.net/tiles/r${id}.png?g=587&productSet=mmOS",
- "http://ecn.t1.tiles.virtualearth.net/tiles/r${id}.png?g=587&productSet=mmOS",
- "http://ecn.t2.tiles.virtualearth.net/tiles/r${id}.png?g=587&productSet=mmOS",
- "http://ecn.t3.tiles.virtualearth.net/tiles/r${id}.png?g=587&productSet=mmOS"
+ "http://ecn.t0.tiles.virtualearth.net/tiles/r${id}.png?g=701&productSet=mmOS",
+ "http://ecn.t1.tiles.virtualearth.net/tiles/r${id}.png?g=701&productSet=mmOS",
+ "http://ecn.t2.tiles.virtualearth.net/tiles/r${id}.png?g=701&productSet=mmOS",
+ "http://ecn.t3.tiles.virtualearth.net/tiles/r${id}.png?g=701&productSet=mmOS"
];
}
var s = '' + x + y + z;
diff --git a/web/js/map-bing.js b/web/js/map-bing.js
index 748a03525..856e4f188 100644
--- a/web/js/map-bing.js
+++ b/web/js/map-bing.js
@@ -1,4 +1,4 @@
-YAHOO.util.Event.onContentReady('map', function() {
+$(function(){
var centre = new Microsoft.Maps.Location( fixmystreet.latitude, fixmystreet.longitude );
var map = new Microsoft.Maps.Map(document.getElementById("map"), {
credentials: fixmystreet.key,
diff --git a/web/js/map-google.js b/web/js/map-google.js
index ab9bb9042..742b55d47 100644
--- a/web/js/map-google.js
+++ b/web/js/map-google.js
@@ -1,4 +1,4 @@
-YAHOO.util.Event.onContentReady('map', function() {
+$(function(){
var centre = new google.maps.LatLng( fixmystreet.latitude, fixmystreet.longitude );
var map = new google.maps.Map(document.getElementById("map"), {
mapTypeId: google.maps.MapTypeId.ROADMAP,
diff --git a/web/js/map-tilma-ol.js b/web/js/map-tilma-ol.js
deleted file mode 100644
index 5230a5d2c..000000000
--- a/web/js/map-tilma-ol.js
+++ /dev/null
@@ -1,41 +0,0 @@
-function set_map_config(perm) {
- fixmystreet.controls = [
- new OpenLayers.Control.ArgParser(),
- perm,
- new OpenLayers.Control.Navigation(),
- new OpenLayers.Control.PanPanel()
- ];
- fixmystreet.map_type = OpenLayers.Layer.Tilma;
- fixmystreet.layer_options = {
- maxResolution: fixmystreet.maxResolution,
- tileSize: new OpenLayers.Size(fixmystreet.tilewidth, fixmystreet.tileheight),
- map_type: fixmystreet.tile_type,
- numZoomLevels: 1,
- zoomOffset: 0
- };
-}
-
-OpenLayers.Layer.Tilma = OpenLayers.Class(OpenLayers.Layer.XYZ, {
- initialize: function(name, options) {
- var url = "http://tilma.mysociety.org/tileserver/${type}/${x},${y}/png";
- options = OpenLayers.Util.extend({
- transitionEffect: "resize",
- numZoomLevels: 1,
- projection: "EPSG:27700",
- units: "m",
- maxExtent: new OpenLayers.Bounds(0, 0, 700000, 1300000)
- }, options);
- var newArguments = [name, url, options];
- OpenLayers.Layer.XYZ.prototype.initialize.apply(this, newArguments);
- },
-
- getURL: function (bounds) {
- var res = this.map.getResolution();
- var x = Math.round(bounds.left / (res * this.tileSize.w));
- var y = Math.round(bounds.bottom / (res * this.tileSize.h));
- var path = OpenLayers.String.format(this.url, {'x': x, 'y': y, 'type': this.map_type});
- return path;
- },
-
- CLASS_NAME: "OpenLayers.Layer.Tilma"
-});
diff --git a/web/js/map-tilma.js b/web/js/map-tilma.js
deleted file mode 100644
index a6e4fa082..000000000
--- a/web/js/map-tilma.js
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
- * map-tilma.js
- * JavaScript specifically for the tilma based maps
- */
-
-function compass_pan(e, a) {
- YAHOO.util.Event.preventDefault(e);
- if (a.home) {
- a.x = a.orig_x-drag_x;
- a.y = a.orig_y-drag_y;
- }
- pan(a.x, a.y);
-}
-
-YAHOO.util.Event.onContentReady('compass', function() {
- var ua=navigator.userAgent.toLowerCase();
- // if (document.getElementById('mapForm') && (/safari/.test(ua) || /Konqueror/.test(ua))) return;
- if (document.getElementById('map').offsetWidth > 510) return;
-
- var points = this.getElementsByTagName('a');
- YAHOO.util.Event.addListener(points[1], 'click', compass_pan, { x:0, y:fixmystreet.tileheight });
- YAHOO.util.Event.addListener(points[3], 'click', compass_pan, { x:fixmystreet.tilewidth, y:0 });
- YAHOO.util.Event.addListener(points[5], 'click', compass_pan, { x:-fixmystreet.tilewidth, y:0 });
- YAHOO.util.Event.addListener(points[7], 'click', compass_pan, { x:0, y:-fixmystreet.tileheight });
- YAHOO.util.Event.addListener(points[0], 'click', compass_pan, { x:fixmystreet.tilewidth, y:fixmystreet.tileheight });
- YAHOO.util.Event.addListener(points[2], 'click', compass_pan, { x:-fixmystreet.tilewidth, y:fixmystreet.tileheight });
- YAHOO.util.Event.addListener(points[6], 'click', compass_pan, { x:fixmystreet.tilewidth, y:-fixmystreet.tileheight });
- YAHOO.util.Event.addListener(points[8], 'click', compass_pan, { x:-fixmystreet.tilewidth, y:-fixmystreet.tileheight });
- YAHOO.util.Event.addListener(points[4], 'click', compass_pan, { home:1, orig_x:drag_x, orig_y:drag_y });
-});
-
-YAHOO.util.Event.onContentReady('map', function() {
- var ua=navigator.userAgent.toLowerCase();
- // if (document.getElementById('mapForm') && (/safari/.test(ua) || /Konqueror/.test(ua))) return;
- if (document.getElementById('map').offsetWidth > 510) return;
- new YAHOO.util.DDMap('map');
- update_tiles(fixmystreet.start_x, fixmystreet.start_y, true);
-});
-
-
-YAHOO.util.Event.addListener('hide_pins_link', 'click', function(e) {
- YAHOO.util.Event.preventDefault(e);
- if (this.innerHTML == 'Show pins') {
- YAHOO.util.Dom.setStyle('pins', 'display', 'block');
- this.innerHTML = 'Hide pins';
- } else if (this.innerHTML == 'Dangos pinnau') {
- YAHOO.util.Dom.setStyle('pins', 'display', 'block');
- this.innerHTML = 'Cuddio pinnau';
- } else if (this.innerHTML == 'Cuddio pinnau') {
- YAHOO.util.Dom.setStyle('pins', 'display', 'none');
- this.innerHTML = 'Dangos pinnau';
- } else if (this.innerHTML == 'Hide pins') {
- YAHOO.util.Dom.setStyle('pins', 'display', 'none');
- this.innerHTML = 'Show pins';
- }
-});
-YAHOO.util.Event.addListener('all_pins_link', 'click', function(e) {
- YAHOO.util.Event.preventDefault(e);
- YAHOO.util.Dom.setStyle('pins', 'display', 'block');
- var welsh = 0;
- if (this.innerHTML == 'Include stale reports') {
- this.innerHTML = 'Hide stale reports';
- fixmystreet.all_pins = 1;
- load_pins(fixmystreet.x, fixmystreet.y);
- } else if (this.innerHTML == 'Cynnwys hen adroddiadau') {
- this.innerHTML = 'Cuddio hen adroddiadau';
- fixmystreet.all_pins = 1;
- welsh = 1;
- load_pins(fixmystreet.x, fixmystreet.y);
- } else if (this.innerHTML == 'Cuddio hen adroddiadau') {
- this.innerHTML = 'Cynnwys hen adroddiadau';
- welsh = 1;
- fixmystreet.all_pins = '';
- load_pins(fixmystreet.x, fixmystreet.y);
- } else if (this.innerHTML == 'Hide stale reports') {
- this.innerHTML = 'Include stale reports';
- fixmystreet.all_pins = '';
- load_pins(fixmystreet.x, fixmystreet.y);
- }
- if (welsh) {
- document.getElementById('hide_pins_link').innerHTML = 'Cuddio pinnau';
- } else {
- document.getElementById('hide_pins_link').innerHTML = 'Hide pins';
- }
-});
-
-// I love the global
-var tile_x = 0;
-var tile_y = 0;
-
-var myAnim;
-function pan(x, y) {
- if (!myAnim || !myAnim.isAnimated()) {
- myAnim = new YAHOO.util.Motion('drag', { points:{by:[x,y]} }, 10, YAHOO.util.Easing.easeOut);
- myAnim.useSeconds = false;
- //myAnim.onTween.subscribe(function(){ update_tiles(x/10, y/10, false); });
- myAnim.onComplete.subscribe(function(){
- update_tiles(x, y, false);
- cleanCache();
- });
- myAnim.animate();
- }
-}
-
-var drag_x = 0;
-var drag_y = 0;
-function update_tiles(dx, dy, force) {
- dx = getInt(dx); dy = getInt(dy);
- if (!dx && !dy && !force) return;
- var old_drag_x = drag_x;
- var old_drag_y = drag_y;
- drag_x += dx;
- drag_y += dy;
-
- var drag = document.getElementById('drag');
- drag.style.left = drag_x + 'px';
- drag.style.top = drag_y + 'px';
-
- var horizontal = Math.floor(old_drag_x/fixmystreet.tilewidth) - Math.floor(drag_x/fixmystreet.tilewidth);
- var vertical = Math.floor(old_drag_y/fixmystreet.tileheight) - Math.floor(drag_y/fixmystreet.tileheight);
- if (!horizontal && !vertical && !force) return;
- fixmystreet.x += horizontal;
-
- tile_x += horizontal;
- fixmystreet.y -= vertical;
- tile_y += vertical;
- var url = [ root_path + '/tilma/tileserver/' + fixmystreet.tile_type + '/', fixmystreet.x, '-', (fixmystreet.x+5), ',', fixmystreet.y, '-', (fixmystreet.y+5), '/JSON' ].join('');
- YAHOO.util.Connect.asyncRequest('GET', url, {
- success: urls_loaded, failure: urls_not_loaded,
- argument: [tile_x, tile_y]
- });
-
- if (force) return;
- load_pins(fixmystreet.x, fixmystreet.y);
-}
-
-function load_pins(x, y) {
- if (document.getElementById('formX') && !document.getElementById('problem_submit')) {
- var ajax_params = [ 'sx=' + document.getElementById('formX').value,
- 'sy=' + document.getElementById('formY').value,
- 'x=' + (x+3),
- 'y=' + (y+3),
- 'all_pins=' + fixmystreet.all_pins ];
-
- var url = [ root_path , '/ajax?', ajax_params.join(';')].join('');
- YAHOO.util.Connect.asyncRequest('GET', url, {
- success: pins_loaded
- });
- }
-}
-
-function pins_loaded(o) {
- var data = eval(o.responseText);
- document.getElementById('pins').innerHTML = data.pins;
- if (typeof(data.current) != 'undefined')
- document.getElementById('current').innerHTML = data.current;
- if (typeof(data.current_near) != 'undefined')
- document.getElementById('current_near').innerHTML = data.current_near;
- if (typeof(data.fixed_near) != 'undefined')
- document.getElementById('fixed_near').innerHTML = data.fixed_near;
-}
-
-function urls_not_loaded(o) { /* Nothing yet */ }
-
-// Load 6x6 grid of tiles around current 2x2
-function urls_loaded(o) {
- var tiles = eval(o.responseText);
- var drag = document.getElementById('drag');
- for (var i=0; i<6; i++) {
- var ii = (i + o.argument[1]);
- for (var j=0; j<6; j++) {
- if (tiles[i][j] == null) continue;
- var jj = (j + o.argument[0]);
- var id = [ 't', ii, '.', jj ].join('');
- var xx = fixmystreet.x+j;
- var yy = fixmystreet.y+5-i;
- var img = document.getElementById(id);
- if (img) {
- if (!img.galleryimg) { img.galleryimg = false; }
- img.onclick = drag_check;
- tileCache[id] = { x: xx, y: yy, t: img };
- continue;
- }
- img = cloneNode();
- img.style.top = ((ii-2)*fixmystreet.tileheight) + 'px';
- img.style.left = ((jj-2)*fixmystreet.tilewidth) + 'px';
- img.name = [ 'tile_', xx, '.', yy ].join('')
- img.id = id;
- if (browser) {
- img.style.visibility = 'hidden';
- img.onload=function() { this.style.visibility = 'visible'; }
- }
- img.src = 'http://tilma.mysociety.org/tileserver/' + fixmystreet.tile_type + '/' + tiles[i][j];
- tileCache[id] = { x: xx, y: yy, t: img };
- drag.appendChild(img);
- }
- }
-}
-
-var imgElCache;
-function cloneNode() {
- var img = null;
- if (!imgElCache) {
- var form = document.getElementById('mapForm');
- if (form) {
- img = imgElCache = document.createElement('input');
- img.type = 'image';
- } else {
- img = imgElCache = document.createElement('img');
- }
- img.onclick = drag_check;
- img.style.position = 'absolute';
- img.style.width = fixmystreet.tilewidth + 'px';
- img.style.height = fixmystreet.tileheight + 'px';
- img.galleryimg = false;
- img.alt = 'Loading...';
- } else {
- img = imgElCache.cloneNode(true);
- }
- return img;
-}
-
-var tileCache=[];
-function cleanCache() {
- for (var i in tileCache) {
- if (tileCache[i].x < fixmystreet.x || tileCache[i].x > fixmystreet.x+5 || tileCache[i].y < fixmystreet.y || tileCache[i].y > fixmystreet.y+5) {
- var t = tileCache[i].t;
- t.parentNode.removeChild(t); // de-leak?
- delete tileCache[i];
- }
- }
-}
-
-/* Called every mousemove, so on first call, overwrite itself with quicker version */
-function get_posn(ev) {
- var posx, posy;
- if (ev.pageX || ev.pageY) {
- get_posn = function(e) {
- return { x: e.pageX, y: e.pageY };
- };
- } else if (ev.clientX || ev.clientY) {
- get_posn = function(e) {
- return {
- x: e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft,
- y: e.clientY + document.body.scrollTop + document.documentElement.scrollTop
- };
- };
- } else {
- get_posn = function(e) {
- return { x: undef, y: undef };
- };
- }
- return get_posn(ev);
-}
-
-function setCursor(s) {
- var drag = document.getElementById('drag');
- var inputs = drag.getElementsByTagName('input');
- for (var i=0; i<inputs.length; i++) {
- inputs[i].style.cursor = s;
- }
-}
-
-var in_drag = false;
-function drag_check(e) {
- if (in_drag) {
- in_drag = false;
- return false;
- }
- return true;
-}
-
-/* Simpler version of DDProxy */
-var mouse_pos = {};
-YAHOO.util.DDMap = function(id, sGroup, config) {
- this.init(id, sGroup, config);
-};
-YAHOO.extend(YAHOO.util.DDMap, YAHOO.util.DD, {
- scroll: false,
- b4MouseDown: function(e) { },
- startDrag: function(x, y) {
- mouse_pos = { x: x, y: y };
- setCursor('move');
- in_drag = true;
- },
- b4Drag: function(e) { },
- onDrag: function(e) {
- var point = get_posn(e);
- if (point == mouse_pos) return false;
- var dx = point.x-mouse_pos.x;
- var dy = point.y-mouse_pos.y;
- mouse_pos = point;
- update_tiles(dx, dy, false);
- },
- endDrag: function(e) {
- setCursor('crosshair');
- cleanCache();
- },
- toString: function() {
- return ("DDMap " + this.id);
- }
-});
-
-var browser = 1;
-var ua=navigator.userAgent.toLowerCase();
-if (!/opera|safari|gecko/.test(ua) && typeof document.all!='undefined')
- browser=0;
-
-function getInt(n) {
- n = parseInt(n); return (isNaN(n) ? 0 : n);
-}
-
diff --git a/web/js/southampton.js b/web/js/southampton.js
new file mode 100644
index 000000000..1f3e16105
--- /dev/null
+++ b/web/js/southampton.js
@@ -0,0 +1,50 @@
+/*
+ * southampton.js
+ * FixMyStreet JavaScript for Southampton
+ */
+
+
+$(function(){
+
+ $('[placeholder]').focus(function(){
+ var input = $(this);
+ if (input.val() == input.attr('placeholder')) {
+ input.val('');
+ input.removeClass('placeholder');
+ input.css({ 'color': '#000000' });
+ }
+ }).blur(function(){
+ var input = $(this);
+ if (input.val() == '' || input.val() == input.attr('placeholder')) {
+ input.css({ 'color': '#999999' });
+ input.val(input.attr('placeholder'));
+ }
+ }).blur();
+
+ $('#form_category').change(function(){
+ var category = $(this).val();
+ if ('Potholes' == category) {
+ if (!$('#potholes_extra').length) {
+ var qns = '<div id="potholes_extra" style="margin:0; display:none;">' +
+ '<div class="form-field"><label for="form_size">Size:</label>' +
+ '<select name="detail_size"><option>-- Please select --<option>Unknown' +
+ '<option>Small: No larger than a dinner plate (up to 30cm/12inches)' +
+ '<option>Medium: No larger than a dustbin lid (up to 60cm/24inches)' +
+ '<option>Large: Larger than a dustbin lid (over 60cm/24inches)' +
+ '</select></div>' +
+ '<div class="form-field"><label for="form_depth">Depth:</label>' +
+ '<select name="detail_depth"><option>-- Please select --<option>Unknown' +
+ '<option>No deeper than a golf ball (up to 4cm/1.5inches)' +
+ '<option>No deeper than a tennis ball (up to 6.5cm/2.5inches)' +
+ '<option>Deeper than a tennis ball' +
+ '</select></div></div>';
+ $('#form_title').closest('div.form-field').after(qns);
+ }
+ $('#potholes_extra').show('fast');
+ } else {
+ $('#potholes_extra').hide('fast');
+ }
+ }).change();
+
+});
+
diff --git a/web/yui/.gitignore b/web/yui/.gitignore
deleted file mode 100644
index 796b96d1c..000000000
--- a/web/yui/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build
diff --git a/web/yui/utilities.js b/web/yui/utilities.js
deleted file mode 100644
index 14a540630..000000000
--- a/web/yui/utilities.js
+++ /dev/null
@@ -1,305 +0,0 @@
-/*
-Copyright (c) 2006, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 0.12.2.ms1 - bits removed (NFI only, now)
-*/
-
-if(typeof YAHOO=="undefined"){var YAHOO={};}
-YAHOO.namespace=function(){var a=arguments,o=null,i,j,d;for(i=0;i<a.length;++i){d=a[i].split(".");o=YAHOO;for(j=(d[0]=="YAHOO")?1:0;j<d.length;++j){o[d[j]]=o[d[j]]||{};o=o[d[j]];}}
-return o;};YAHOO.extend=function(subc,superc,overrides){var F=function(){};F.prototype=superc.prototype;subc.prototype=new F();subc.prototype.constructor=subc;subc.superclass=superc.prototype;if(superc.prototype.constructor==Object.prototype.constructor){superc.prototype.constructor=superc;}
-if(overrides){for(var i in overrides){subc.prototype[i]=overrides[i];}}};YAHOO.augment=function(r,s){var rp=r.prototype,sp=s.prototype,a=arguments,i,p;if(a[2]){for(i=2;i<a.length;++i){rp[a[i]]=sp[a[i]];}}else{for(p in sp){if(!rp[p]){rp[p]=sp[p];}}}};YAHOO.namespace("util","widget","example");
-(function(){var Y=YAHOO.util,getStyle,setStyle,id_counter=0,propertyCache={};var ua=navigator.userAgent.toLowerCase(),isOpera=(ua.indexOf('opera')>-1),isSafari=(ua.indexOf('safari')>-1),isGecko=(!isOpera&&!isSafari&&ua.indexOf('gecko')>-1),isIE=(!isOpera&&ua.indexOf('msie')>-1);var patterns={HYPHEN:/(-[a-z])/i};var toCamel=function(property){if(!patterns.HYPHEN.test(property)){return property;}
-if(propertyCache[property]){return propertyCache[property];}
-while(patterns.HYPHEN.exec(property)){property=property.replace(RegExp.$1,RegExp.$1.substr(1).toUpperCase());}
-propertyCache[property]=property;return property;};if(document.defaultView&&document.defaultView.getComputedStyle){getStyle=function(el,property){var value=null;var computed=document.defaultView.getComputedStyle(el,'');if(computed){value=computed[toCamel(property)];}
-return el.style[property]||value;};}else if(document.documentElement.currentStyle&&isIE){getStyle=function(el,property){switch(toCamel(property)){case'opacity':var val=100;try{val=el.filters['DXImageTransform.Microsoft.Alpha'].opacity;}catch(e){try{val=el.filters('alpha').opacity;}catch(e){}}
-return val/100;break;default:var value=el.currentStyle?el.currentStyle[property]:null;return(el.style[property]||value);}};}else{getStyle=function(el,property){return el.style[property];};}
-if(isIE){setStyle=function(el,property,val){switch(property){case'opacity':if(typeof el.style.filter=='string'){el.style.filter='alpha(opacity='+val*100+')';if(!el.currentStyle||!el.currentStyle.hasLayout){el.style.zoom=1;}}
-break;default:el.style[property]=val;}};}else{setStyle=function(el,property,val){el.style[property]=val;};}
-YAHOO.util.Dom={get:function(el){if(!el){return null;}
-if(typeof el!='string'&&!(el instanceof Array)){return el;}
-if(typeof el=='string'){return document.getElementById(el);}
-else{var collection=[];for(var i=0,len=el.length;i<len;++i){collection[collection.length]=Y.Dom.get(el[i]);}
-return collection;}
-return null;},getStyle:function(el,property){property=toCamel(property);var f=function(element){return getStyle(element,property);};return Y.Dom.batch(el,f,Y.Dom,true);},setStyle:function(el,property,val){property=toCamel(property);var f=function(element){setStyle(element,property,val);};Y.Dom.batch(el,f,Y.Dom,true);},getXY:function(el){var f=function(el){if(el.parentNode===null||el.offsetParent===null||this.getStyle(el,'display')=='none'){return false;}
-var parentNode=null;var pos=[];var box;if(el.getBoundingClientRect){box=el.getBoundingClientRect();var doc=document;if(!this.inDocument(el)&&parent.document!=document){doc=parent.document;if(!this.isAncestor(doc.documentElement,el)){return false;}}
-var scrollTop=Math.max(doc.documentElement.scrollTop,doc.body.scrollTop);var scrollLeft=Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft);return[box.left+scrollLeft,box.top+scrollTop];}
-else{pos=[el.offsetLeft,el.offsetTop];parentNode=el.offsetParent;if(parentNode!=el){while(parentNode){pos[0]+=parentNode.offsetLeft;pos[1]+=parentNode.offsetTop;parentNode=parentNode.offsetParent;}}
-if(isSafari&&this.getStyle(el,'position')=='absolute'){pos[0]-=document.body.offsetLeft;pos[1]-=document.body.offsetTop;}}
-if(el.parentNode){parentNode=el.parentNode;}
-else{parentNode=null;}
-while(parentNode&&parentNode.tagName.toUpperCase()!='BODY'&&parentNode.tagName.toUpperCase()!='HTML')
-{if(Y.Dom.getStyle(parentNode,'display')!='inline'){pos[0]-=parentNode.scrollLeft;pos[1]-=parentNode.scrollTop;}
-if(parentNode.parentNode){parentNode=parentNode.parentNode;}else{parentNode=null;}}
-return pos;};return Y.Dom.batch(el,f,Y.Dom,true);},getX:function(el){var f=function(el){return Y.Dom.getXY(el)[0];};return Y.Dom.batch(el,f,Y.Dom,true);},getY:function(el){var f=function(el){return Y.Dom.getXY(el)[1];};return Y.Dom.batch(el,f,Y.Dom,true);},setXY:function(el,pos,noRetry){var f=function(el){var style_pos=this.getStyle(el,'position');if(style_pos=='static'){this.setStyle(el,'position','relative');style_pos='relative';}
-var pageXY=this.getXY(el);if(pageXY===false){return false;}
-var delta=[parseInt(this.getStyle(el,'left'),10),parseInt(this.getStyle(el,'top'),10)];if(isNaN(delta[0])){delta[0]=(style_pos=='relative')?0:el.offsetLeft;}
-if(isNaN(delta[1])){delta[1]=(style_pos=='relative')?0:el.offsetTop;}
-if(pos[0]!==null){el.style.left=pos[0]-pageXY[0]+delta[0]+'px';}
-if(pos[1]!==null){el.style.top=pos[1]-pageXY[1]+delta[1]+'px';}
-if(!noRetry){var newXY=this.getXY(el);if((pos[0]!==null&&newXY[0]!=pos[0])||(pos[1]!==null&&newXY[1]!=pos[1])){this.setXY(el,pos,true);}}};Y.Dom.batch(el,f,Y.Dom,true);},setX:function(el,x){Y.Dom.setXY(el,[x,null]);},setY:function(el,y){Y.Dom.setXY(el,[null,y]);},getRegion:function(el){var f=function(el){var region=new Y.Region.getRegion(el);return region;};return Y.Dom.batch(el,f,Y.Dom,true);},getClientWidth:function(){return Y.Dom.getViewportWidth();},getClientHeight:function(){return Y.Dom.getViewportHeight();},getElementsByClassName:function(className,tag,root){var method=function(el){return Y.Dom.hasClass(el,className);};return Y.Dom.getElementsBy(method,tag,root);},hasClass:function(el,className){var re=new RegExp('(?:^|\\s+)'+className+'(?:\\s+|$)');var f=function(el){return re.test(el['className']);};return Y.Dom.batch(el,f,Y.Dom,true);},addClass:function(el,className){var f=function(el){if(this.hasClass(el,className)){return;}
-el['className']=[el['className'],className].join(' ');};Y.Dom.batch(el,f,Y.Dom,true);},removeClass:function(el,className){var re=new RegExp('(?:^|\\s+)'+className+'(?:\\s+|$)','g');var f=function(el){if(!this.hasClass(el,className)){return;}
-var c=el['className'];el['className']=c.replace(re,' ');if(this.hasClass(el,className)){this.removeClass(el,className);}};Y.Dom.batch(el,f,Y.Dom,true);},replaceClass:function(el,oldClassName,newClassName){if(oldClassName===newClassName){return false;}
-var re=new RegExp('(?:^|\\s+)'+oldClassName+'(?:\\s+|$)','g');var f=function(el){if(!this.hasClass(el,oldClassName)){this.addClass(el,newClassName);return;}
-el['className']=el['className'].replace(re,' '+newClassName+' ');if(this.hasClass(el,oldClassName)){this.replaceClass(el,oldClassName,newClassName);}};Y.Dom.batch(el,f,Y.Dom,true);},generateId:function(el,prefix){prefix=prefix||'yui-gen';el=el||{};var f=function(el){if(el){el=Y.Dom.get(el);}else{el={};}
-if(!el.id){el.id=prefix+id_counter++;}
-return el.id;};return Y.Dom.batch(el,f,Y.Dom,true);},isAncestor:function(haystack,needle){haystack=Y.Dom.get(haystack);if(!haystack||!needle){return false;}
-var f=function(needle){if(haystack.contains&&!isSafari){return haystack.contains(needle);}
-else if(haystack.compareDocumentPosition){return!!(haystack.compareDocumentPosition(needle)&16);}
-else{var parent=needle.parentNode;while(parent){if(parent==haystack){return true;}
-else if(!parent.tagName||parent.tagName.toUpperCase()=='HTML'){return false;}
-parent=parent.parentNode;}
-return false;}};return Y.Dom.batch(needle,f,Y.Dom,true);},inDocument:function(el){var f=function(el){return this.isAncestor(document.documentElement,el);};return Y.Dom.batch(el,f,Y.Dom,true);},getElementsBy:function(method,tag,root){tag=tag||'*';var nodes=[];if(root){root=Y.Dom.get(root);if(!root){return nodes;}}else{root=document;}
-var elements=root.getElementsByTagName(tag);if(!elements.length&&(tag=='*'&&root.all)){elements=root.all;}
-for(var i=0,len=elements.length;i<len;++i){if(method(elements[i])){nodes[nodes.length]=elements[i];}}
-return nodes;},batch:function(el,method,o,override){var id=el;el=Y.Dom.get(el);var scope=(override)?o:window;if(!el||el.tagName||!el.length){if(!el){return false;}
-return method.call(scope,el,o);}
-var collection=[];for(var i=0,len=el.length;i<len;++i){if(!el[i]){id=el[i];}
-collection[collection.length]=method.call(scope,el[i],o);}
-return collection;},getDocumentHeight:function(){var scrollHeight=(document.compatMode!='CSS1Compat')?document.body.scrollHeight:document.documentElement.scrollHeight;var h=Math.max(scrollHeight,Y.Dom.getViewportHeight());return h;},getDocumentWidth:function(){var scrollWidth=(document.compatMode!='CSS1Compat')?document.body.scrollWidth:document.documentElement.scrollWidth;var w=Math.max(scrollWidth,Y.Dom.getViewportWidth());return w;},getViewportHeight:function(){var height=self.innerHeight;var mode=document.compatMode;if((mode||isIE)&&!isOpera){height=(mode=='CSS1Compat')?document.documentElement.clientHeight:document.body.clientHeight;}
-return height;},getViewportWidth:function(){var width=self.innerWidth;var mode=document.compatMode;if(mode||isIE){width=(mode=='CSS1Compat')?document.documentElement.clientWidth:document.body.clientWidth;}
-return width;}};})();YAHOO.util.Region=function(t,r,b,l){this.top=t;this[1]=t;this.right=r;this.bottom=b;this.left=l;this[0]=l;};YAHOO.util.Region.prototype.contains=function(region){return(region.left>=this.left&&region.right<=this.right&&region.top>=this.top&&region.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(region){var t=Math.max(this.top,region.top);var r=Math.min(this.right,region.right);var b=Math.min(this.bottom,region.bottom);var l=Math.max(this.left,region.left);if(b>=t&&r>=l){return new YAHOO.util.Region(t,r,b,l);}else{return null;}};YAHOO.util.Region.prototype.union=function(region){var t=Math.min(this.top,region.top);var r=Math.max(this.right,region.right);var b=Math.max(this.bottom,region.bottom);var l=Math.min(this.left,region.left);return new YAHOO.util.Region(t,r,b,l);};YAHOO.util.Region.getRegion=function(el){var p=YAHOO.util.Dom.getXY(el);var t=p[1];var r=p[0]+el.offsetWidth;var b=p[1]+el.offsetHeight;var l=p[0];return new YAHOO.util.Region(t,r,b,l);};YAHOO.util.Point=function(x,y){if(x instanceof Array){y=x[1];x=x[0];}
-this.x=this.right=this.left=this[0]=x;this.y=this.top=this.bottom=this[1]=y;};YAHOO.util.Point.prototype=new YAHOO.util.Region();
-YAHOO.util.CustomEvent=function(type,oScope,silent,signature){this.type=type;this.scope=oScope||window;this.silent=silent;this.signature=signature||YAHOO.util.CustomEvent.LIST;this.subscribers=[];if(!this.silent){}
-var onsubscribeType="_YUICEOnSubscribe";if(type!==onsubscribeType){this.subscribeEvent=new YAHOO.util.CustomEvent(onsubscribeType,this,true);}};YAHOO.util.CustomEvent.LIST=0;YAHOO.util.CustomEvent.FLAT=1;YAHOO.util.CustomEvent.prototype={subscribe:function(fn,obj,override){if(this.subscribeEvent){this.subscribeEvent.fire(fn,obj,override);}
-this.subscribers.push(new YAHOO.util.Subscriber(fn,obj,override));},unsubscribe:function(fn,obj){var found=false;for(var i=0,len=this.subscribers.length;i<len;++i){var s=this.subscribers[i];if(s&&s.contains(fn,obj)){this._delete(i);found=true;}}
-return found;},fire:function(){var len=this.subscribers.length;if(!len&&this.silent){return true;}
-var args=[],ret=true,i;for(i=0;i<arguments.length;++i){args.push(arguments[i]);}
-var argslength=args.length;if(!this.silent){}
-for(i=0;i<len;++i){var s=this.subscribers[i];if(s){if(!this.silent){}
-var scope=s.getScope(this.scope);if(this.signature==YAHOO.util.CustomEvent.FLAT){var param=null;if(args.length>0){param=args[0];}
-ret=s.fn.call(scope,param,s.obj);}else{ret=s.fn.call(scope,this.type,args,s.obj);}
-if(false===ret){if(!this.silent){}
-return false;}}}
-return true;},unsubscribeAll:function(){for(var i=0,len=this.subscribers.length;i<len;++i){this._delete(len-1-i);}},_delete:function(index){var s=this.subscribers[index];if(s){delete s.fn;delete s.obj;}
-this.subscribers.splice(index,1);}};YAHOO.util.Subscriber=function(fn,obj,override){this.fn=fn;this.obj=obj||null;this.override=override;};YAHOO.util.Subscriber.prototype.getScope=function(defaultScope){if(this.override){if(this.override===true){return this.obj;}else{return this.override;}}
-return defaultScope;};YAHOO.util.Subscriber.prototype.contains=function(fn,obj){if(obj){return(this.fn==fn&&this.obj==obj);}else{return(this.fn==fn);}};if(!YAHOO.util.Event){YAHOO.util.Event=function(){var loadComplete=false;var listeners=[];var unloadListeners=[];var legacyEvents=[];var legacyHandlers=[];var retryCount=0;var onAvailStack=[];var legacyMap=[];var counter=0;return{POLL_RETRYS:200,POLL_INTERVAL:20,EL:0,TYPE:1,FN:2,WFN:3,OBJ:3,ADJ_SCOPE:4,isSafari:(/Safari|Konqueror|KHTML/gi).test(navigator.userAgent),isIE:(!this.isSafari&&!navigator.userAgent.match(/opera/gi)&&navigator.userAgent.match(/msie/gi)),_interval:null,startInterval:function(){if(!this._interval){var self=this;var callback=function(){self._tryPreloadAttach();};this._interval=setInterval(callback,this.POLL_INTERVAL);}},onAvailable:function(p_id,p_fn,p_obj,p_override){onAvailStack.push({id:p_id,fn:p_fn,obj:p_obj,override:p_override,checkReady:false});retryCount=this.POLL_RETRYS;this.startInterval();},onContentReady:function(p_id,p_fn,p_obj,p_override){onAvailStack.push({id:p_id,fn:p_fn,obj:p_obj,override:p_override,checkReady:true});retryCount=this.POLL_RETRYS;this.startInterval();},addListener:function(el,sType,fn,obj,override){if(!fn||!fn.call){return false;}
-if(this._isValidCollection(el)){var ok=true;for(var i=0,len=el.length;i<len;++i){ok=this.on(el[i],sType,fn,obj,override)&&ok;}
-return ok;}else if(typeof el=="string"){var oEl=this.getEl(el);if(oEl){el=oEl;}else{this.onAvailable(el,function(){YAHOO.util.Event.on(el,sType,fn,obj,override);});return true;}}
-if(!el){return false;}
-if("unload"==sType&&obj!==this){unloadListeners[unloadListeners.length]=[el,sType,fn,obj,override];return true;}
-var scope=el;if(override){if(override===true){scope=obj;}else{scope=override;}}
-var wrappedFn=function(e){return fn.call(scope,YAHOO.util.Event.getEvent(e),obj);};var li=[el,sType,fn,wrappedFn,scope];var index=listeners.length;listeners[index]=li;if(this.useLegacyEvent(el,sType)){var legacyIndex=this.getLegacyIndex(el,sType);if(legacyIndex==-1||el!=legacyEvents[legacyIndex][0]){legacyIndex=legacyEvents.length;legacyMap[el.id+sType]=legacyIndex;legacyEvents[legacyIndex]=[el,sType,el["on"+sType]];legacyHandlers[legacyIndex]=[];el["on"+sType]=function(e){YAHOO.util.Event.fireLegacyEvent(YAHOO.util.Event.getEvent(e),legacyIndex);};}
-legacyHandlers[legacyIndex].push(li);}else{try{this._simpleAdd(el,sType,wrappedFn,false);}catch(e){this.removeListener(el,sType,fn);return false;}}
-return true;},fireLegacyEvent:function(e,legacyIndex){var ok=true;var le=legacyHandlers[legacyIndex];for(var i=0,len=le.length;i<len;++i){var li=le[i];if(li&&li[this.WFN]){var scope=li[this.ADJ_SCOPE];var ret=li[this.WFN].call(scope,e);ok=(ok&&ret);}}
-return ok;},getLegacyIndex:function(el,sType){var key=this.generateId(el)+sType;if(typeof legacyMap[key]=="undefined"){return-1;}else{return legacyMap[key];}},useLegacyEvent:function(el,sType){if(!el.addEventListener&&!el.attachEvent){return true;}else if(this.isSafari){if("click"==sType||"dblclick"==sType){return true;}}
-return false;},removeListener:function(el,sType,fn){var i,len;if(typeof el=="string"){el=this.getEl(el);}else if(this._isValidCollection(el)){var ok=true;for(i=0,len=el.length;i<len;++i){ok=(this.removeListener(el[i],sType,fn)&&ok);}
-return ok;}
-if(!fn||!fn.call){return this.purgeElement(el,false,sType);}
-if("unload"==sType){for(i=0,len=unloadListeners.length;i<len;i++){var li=unloadListeners[i];if(li&&li[0]==el&&li[1]==sType&&li[2]==fn){unloadListeners.splice(i,1);return true;}}
-return false;}
-var cacheItem=null;var index=arguments[3];if("undefined"==typeof index){index=this._getCacheIndex(el,sType,fn);}
-if(index>=0){cacheItem=listeners[index];}
-if(!el||!cacheItem){return false;}
-if(this.useLegacyEvent(el,sType)){var legacyIndex=this.getLegacyIndex(el,sType);var llist=legacyHandlers[legacyIndex];if(llist){for(i=0,len=llist.length;i<len;++i){li=llist[i];if(li&&li[this.EL]==el&&li[this.TYPE]==sType&&li[this.FN]==fn){llist.splice(i,1);break;}}}}else{try{this._simpleRemove(el,sType,cacheItem[this.WFN],false);}catch(e){return false;}}
-delete listeners[index][this.WFN];delete listeners[index][this.FN];listeners.splice(index,1);return true;},getTarget:function(ev,resolveTextNode){var t=ev.target||ev.srcElement;return this.resolveTextNode(t);},resolveTextNode:function(node){if(node&&3==node.nodeType){return node.parentNode;}else{return node;}},getPageX:function(ev){var x=ev.pageX;if(!x&&0!==x){x=ev.clientX||0;if(this.isIE){x+=this._getScrollLeft();}}
-return x;},getPageY:function(ev){var y=ev.pageY;if(!y&&0!==y){y=ev.clientY||0;if(this.isIE){y+=this._getScrollTop();}}
-return y;},getXY:function(ev){return[this.getPageX(ev),this.getPageY(ev)];},getRelatedTarget:function(ev){var t=ev.relatedTarget;if(!t){if(ev.type=="mouseout"){t=ev.toElement;}else if(ev.type=="mouseover"){t=ev.fromElement;}}
-return this.resolveTextNode(t);},getTime:function(ev){if(!ev.time){var t=new Date().getTime();try{ev.time=t;}catch(e){return t;}}
-return ev.time;},stopEvent:function(ev){this.stopPropagation(ev);this.preventDefault(ev);},stopPropagation:function(ev){if(ev.stopPropagation){ev.stopPropagation();}else{ev.cancelBubble=true;}},preventDefault:function(ev){if(ev.preventDefault){ev.preventDefault();}else{ev.returnValue=false;}},getEvent:function(e){var ev=e||window.event;if(!ev){var c=this.getEvent.caller;while(c){ev=c.arguments[0];if(ev&&Event==ev.constructor){break;}
-c=c.caller;}}
-return ev;},getCharCode:function(ev){return ev.charCode||ev.keyCode||0;},_getCacheIndex:function(el,sType,fn){for(var i=0,len=listeners.length;i<len;++i){var li=listeners[i];if(li&&li[this.FN]==fn&&li[this.EL]==el&&li[this.TYPE]==sType){return i;}}
-return-1;},generateId:function(el){var id=el.id;if(!id){id="yuievtautoid-"+counter;++counter;el.id=id;}
-return id;},_isValidCollection:function(o){return(o&&o.length&&typeof o!="string"&&!o.tagName&&!o.alert&&typeof o[0]!="undefined");},elCache:{},getEl:function(id){return document.getElementById(id);},clearCache:function(){},_load:function(e){loadComplete=true;var EU=YAHOO.util.Event;if(this.isIE){EU._simpleRemove(window,"load",EU._load);}},_tryPreloadAttach:function(){if(this.locked){return false;}
-this.locked=true;var tryAgain=!loadComplete;if(!tryAgain){tryAgain=(retryCount>0);}
-var notAvail=[];for(var i=0,len=onAvailStack.length;i<len;++i){var item=onAvailStack[i];if(item){var el=this.getEl(item.id);if(el){if(!item.checkReady||loadComplete||el.nextSibling||(document&&document.body)){var scope=el;if(item.override){if(item.override===true){scope=item.obj;}else{scope=item.override;}}
-item.fn.call(scope,item.obj);onAvailStack[i]=null;}}else{notAvail.push(item);}}}
-retryCount=(notAvail.length===0)?0:retryCount-1;if(tryAgain){this.startInterval();}else{clearInterval(this._interval);this._interval=null;}
-this.locked=false;return true;},purgeElement:function(el,recurse,sType){var elListeners=this.getListeners(el,sType);if(elListeners){for(var i=0,len=elListeners.length;i<len;++i){var l=elListeners[i];this.removeListener(el,l.type,l.fn);}}
-if(recurse&&el&&el.childNodes){for(i=0,len=el.childNodes.length;i<len;++i){this.purgeElement(el.childNodes[i],recurse,sType);}}},getListeners:function(el,sType){var elListeners=[];if(listeners&&listeners.length>0){for(var i=0,len=listeners.length;i<len;++i){var l=listeners[i];if(l&&l[this.EL]===el&&(!sType||sType===l[this.TYPE])){elListeners.push({type:l[this.TYPE],fn:l[this.FN],obj:l[this.OBJ],adjust:l[this.ADJ_SCOPE],index:i});}}}
-return(elListeners.length)?elListeners:null;},_unload:function(e){var EU=YAHOO.util.Event,i,j,l,len,index;for(i=0,len=unloadListeners.length;i<len;++i){l=unloadListeners[i];if(l){var scope=window;if(l[EU.ADJ_SCOPE]){if(l[EU.ADJ_SCOPE]===true){scope=l[EU.OBJ];}else{scope=l[EU.ADJ_SCOPE];}}
-l[EU.FN].call(scope,EU.getEvent(e),l[EU.OBJ]);unloadListeners[i]=null;l=null;scope=null;}}
-unloadListeners=null;if(listeners&&listeners.length>0){j=listeners.length;while(j){index=j-1;l=listeners[index];if(l){EU.removeListener(l[EU.EL],l[EU.TYPE],l[EU.FN],index);}
-j=j-1;}
-l=null;EU.clearCache();}
-for(i=0,len=legacyEvents.length;i<len;++i){legacyEvents[i][0]=null;legacyEvents[i]=null;}
-legacyEvents=null;EU._simpleRemove(window,"unload",EU._unload);},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var dd=document.documentElement,db=document.body;if(dd&&(dd.scrollTop||dd.scrollLeft)){return[dd.scrollTop,dd.scrollLeft];}else if(db){return[db.scrollTop,db.scrollLeft];}else{return[0,0];}},_simpleAdd:function(){if(window.addEventListener){return function(el,sType,fn,capture){el.addEventListener(sType,fn,(capture));};}else if(window.attachEvent){return function(el,sType,fn,capture){el.attachEvent("on"+sType,fn);};}else{return function(){};}}(),_simpleRemove:function(){if(window.removeEventListener){return function(el,sType,fn,capture){el.removeEventListener(sType,fn,(capture));};}else if(window.detachEvent){return function(el,sType,fn){el.detachEvent("on"+sType,fn);};}else{return function(){};}}()};}();(function(){var EU=YAHOO.util.Event;EU.on=EU.addListener;if(document&&document.body){EU._load();}else{EU._simpleAdd(window,"load",EU._load);}
-EU._simpleAdd(window,"unload",EU._unload);EU._tryPreloadAttach();})();}
-YAHOO.util.EventProvider=function(){};YAHOO.util.EventProvider.prototype={__yui_events:null,__yui_subscribers:null,subscribe:function(p_type,p_fn,p_obj,p_override){this.__yui_events=this.__yui_events||{};var ce=this.__yui_events[p_type];if(ce){ce.subscribe(p_fn,p_obj,p_override);}else{this.__yui_subscribers=this.__yui_subscribers||{};var subs=this.__yui_subscribers;if(!subs[p_type]){subs[p_type]=[];}
-subs[p_type].push({fn:p_fn,obj:p_obj,override:p_override});}},unsubscribe:function(p_type,p_fn,p_obj){this.__yui_events=this.__yui_events||{};var ce=this.__yui_events[p_type];if(ce){return ce.unsubscribe(p_fn,p_obj);}else{return false;}},createEvent:function(p_type,p_config){this.__yui_events=this.__yui_events||{};var opts=p_config||{};var events=this.__yui_events;if(events[p_type]){}else{var scope=opts.scope||this;var silent=opts.silent||null;var ce=new YAHOO.util.CustomEvent(p_type,scope,silent,YAHOO.util.CustomEvent.FLAT);events[p_type]=ce;if(opts.onSubscribeCallback){ce.subscribeEvent.subscribe(opts.onSubscribeCallback);}
-this.__yui_subscribers=this.__yui_subscribers||{};var qs=this.__yui_subscribers[p_type];if(qs){for(var i=0;i<qs.length;++i){ce.subscribe(qs[i].fn,qs[i].obj,qs[i].override);}}}
-return events[p_type];},fireEvent:function(p_type,arg1,arg2,etc){this.__yui_events=this.__yui_events||{};var ce=this.__yui_events[p_type];if(ce){var args=[];for(var i=1;i<arguments.length;++i){args.push(arguments[i]);}
-return ce.fire.apply(ce,args);}else{return null;}},hasEvent:function(type){if(this.__yui_events){if(this.__yui_events[type]){return true;}}
-return false;}};YAHOO.util.Connect={_msxml_progid:['MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP'],_poll:{},_timeOut:{},_transaction_id:0,createXhrObject:function(transactionId)
-{var obj,http;try
-{http=new XMLHttpRequest();obj={conn:http,tId:transactionId};}
-catch(e)
-{for(var i=0;i<this._msxml_progid.length;++i){try
-{http=new ActiveXObject(this._msxml_progid[i]);obj={conn:http,tId:transactionId};break;}
-catch(e){}}}
-finally
-{return obj;}},getConnectionObject:function()
-{var o;var tId=this._transaction_id;try
-{o=this.createXhrObject(tId);if(o){this._transaction_id++;}}
-catch(e){}
-finally
-{return o;}},asyncRequest:function(method,uri,callback)
-{var o=this.getConnectionObject();if(!o){return null;}
-else{
-o.conn.open(method,uri,true);
-this.handleReadyState(o,callback);o.conn.send(null);return o;}},handleReadyState:function(o,callback)
-{var oConn=this;if(callback&&callback.timeout){this._timeOut[o.tId]=window.setTimeout(function(){oConn.abort(o,callback,true);},callback.timeout);}
-this._poll[o.tId]=window.setInterval(function(){if(o.conn&&o.conn.readyState==4){window.clearInterval(oConn._poll[o.tId]);delete oConn._poll[o.tId];if(callback&&callback.timeout){delete oConn._timeOut[o.tId];}
-oConn.handleTransactionResponse(o,callback);}},50);},handleTransactionResponse:function(o,callback,isAbort)
-{if(!callback){this.releaseObject(o);return;}
-var httpStatus,responseObject;try
-{if(o.conn.status!==undefined&&o.conn.status!=0){httpStatus=o.conn.status;}
-else{httpStatus=13030;}}
-catch(e){httpStatus=13030;}
-if(httpStatus>=200&&httpStatus<300){try
-{responseObject=this.createResponseObject(o,callback.argument);if(callback.success){if(!callback.scope){callback.success(responseObject);}
-else{callback.success.apply(callback.scope,[responseObject]);}}}
-catch(e){}}
-else{try
-{switch(httpStatus){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:responseObject=this.createExceptionObject(o.tId,callback.argument,(isAbort?isAbort:false));if(callback.failure){if(!callback.scope){callback.failure(responseObject);}
-else{callback.failure.apply(callback.scope,[responseObject]);}}
-break;default:responseObject=this.createResponseObject(o,callback.argument);if(callback.failure){if(!callback.scope){callback.failure(responseObject);}
-else{callback.failure.apply(callback.scope,[responseObject]);}}}}
-catch(e){}}
-this.releaseObject(o);responseObject=null;},createResponseObject:function(o,callbackArg)
-{var obj={};var headerObj={};try
-{var headerStr=o.conn.getAllResponseHeaders();var header=headerStr.split('\n');for(var i=0;i<header.length;i++){var delimitPos=header[i].indexOf(':');if(delimitPos!=-1){headerObj[header[i].substring(0,delimitPos)]=header[i].substring(delimitPos+2);}}}
-catch(e){}
-obj.tId=o.tId;obj.status=o.conn.status;obj.statusText=o.conn.statusText;obj.getResponseHeader=headerObj;obj.getAllResponseHeaders=headerStr;obj.responseText=o.conn.responseText;obj.responseXML=o.conn.responseXML;if(typeof callbackArg!==undefined){obj.argument=callbackArg;}
-return obj;},createExceptionObject:function(tId,callbackArg,isAbort)
-{var COMM_CODE=0;var COMM_ERROR='communication failure';var ABORT_CODE=-1;var ABORT_ERROR='transaction aborted';var obj={};obj.tId=tId;if(isAbort){obj.status=ABORT_CODE;obj.statusText=ABORT_ERROR;}
-else{obj.status=COMM_CODE;obj.statusText=COMM_ERROR;}
-if(callbackArg){obj.argument=callbackArg;}
-return obj;}
-,abort:function(o,callback,isTimeout)
-{if(this.isCallInProgress(o)){o.conn.abort();window.clearInterval(this._poll[o.tId]);delete this._poll[o.tId];if(isTimeout){delete this._timeOut[o.tId];}
-this.handleTransactionResponse(o,callback,true);return true;}
-else{return false;}},isCallInProgress:function(o)
-{if(o.conn){return o.conn.readyState!=4&&o.conn.readyState!=0;}
-else{return false;}},releaseObject:function(o)
-{o.conn=null;o=null;}};
-YAHOO.util.Anim=function(el,attributes,duration,method){if(el){this.init(el,attributes,duration,method);}};YAHOO.util.Anim.prototype={patterns:{noNegatives:/width|height|opacity|padding/i,offsetAttribute:/^((width|height)|(top|left))$/,defaultUnit:/width|height|top$|bottom$|left$|right$/i,offsetUnit:/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i},doMethod:function(attr,start,end){return this.method(this.currentFrame,start,end-start,this.totalFrames);},setAttribute:function(attr,val,unit){if(this.patterns.noNegatives.test(attr)){val=(val>0)?val:0;}
-YAHOO.util.Dom.setStyle(this.getEl(),attr,val+unit);},getAttribute:function(attr){var el=this.getEl();var val=YAHOO.util.Dom.getStyle(el,attr);if(val!=='auto'&&!this.patterns.offsetUnit.test(val)){return parseFloat(val);}
-var a=this.patterns.offsetAttribute.exec(attr)||[];var pos=!!(a[3]);var box=!!(a[2]);if(box||(YAHOO.util.Dom.getStyle(el,'position')=='absolute'&&pos)){val=el['offset'+a[0].charAt(0).toUpperCase()+a[0].substr(1)];}else{val=0;}
-return val;},getDefaultUnit:function(attr){if(this.patterns.defaultUnit.test(attr)){return'px';}
-return'';},setRuntimeAttribute:function(attr){var start;var end;var attributes=this.attributes;this.runtimeAttributes[attr]={};var isset=function(prop){return(typeof prop!=='undefined');};if(!isset(attributes[attr]['to'])&&!isset(attributes[attr]['by'])){return false;}
-start=(isset(attributes[attr]['from']))?attributes[attr]['from']:this.getAttribute(attr);if(isset(attributes[attr]['to'])){end=attributes[attr]['to'];}else if(isset(attributes[attr]['by'])){if(start.constructor==Array){end=[];for(var i=0,len=start.length;i<len;++i){end[i]=start[i]+attributes[attr]['by'][i];}}else{end=start+attributes[attr]['by'];}}
-this.runtimeAttributes[attr].start=start;this.runtimeAttributes[attr].end=end;this.runtimeAttributes[attr].unit=(isset(attributes[attr].unit))?attributes[attr]['unit']:this.getDefaultUnit(attr);},init:function(el,attributes,duration,method){var isAnimated=false;var startTime=null;var actualFrames=0;el=YAHOO.util.Dom.get(el);this.attributes=attributes||{};this.duration=duration||1;this.method=method||YAHOO.util.Easing.easeNone;this.useSeconds=true;this.currentFrame=0;this.totalFrames=YAHOO.util.AnimMgr.fps;this.getEl=function(){return el;};this.isAnimated=function(){return isAnimated;};this.getStartTime=function(){return startTime;};this.runtimeAttributes={};this.animate=function(){if(this.isAnimated()){return false;}
-this.currentFrame=0;this.totalFrames=(this.useSeconds)?Math.ceil(YAHOO.util.AnimMgr.fps*this.duration):this.duration;YAHOO.util.AnimMgr.registerElement(this);};this.stop=function(finish){if(finish){this.currentFrame=this.totalFrames;this._onTween.fire();}
-YAHOO.util.AnimMgr.stop(this);};var onStart=function(){this.onStart.fire();this.runtimeAttributes={};for(var attr in this.attributes){this.setRuntimeAttribute(attr);}
-isAnimated=true;actualFrames=0;startTime=new Date();};var onTween=function(){var data={duration:new Date()-this.getStartTime(),currentFrame:this.currentFrame};this.onTween.fire(data);var runtimeAttributes=this.runtimeAttributes;for(var attr in runtimeAttributes){this.setAttribute(attr,this.doMethod(attr,runtimeAttributes[attr].start,runtimeAttributes[attr].end),runtimeAttributes[attr].unit);}
-actualFrames+=1;};var onComplete=function(){var actual_duration=(new Date()-startTime)/1000;var data={duration:actual_duration,frames:actualFrames,fps:actualFrames/actual_duration};isAnimated=false;actualFrames=0;this.onComplete.fire(data);};this._onStart=new YAHOO.util.CustomEvent('_start',this,true);this.onStart=new YAHOO.util.CustomEvent('start',this);this.onTween=new YAHOO.util.CustomEvent('tween',this);this._onTween=new YAHOO.util.CustomEvent('_tween',this,true);this.onComplete=new YAHOO.util.CustomEvent('complete',this);this._onComplete=new YAHOO.util.CustomEvent('_complete',this,true);this._onStart.subscribe(onStart);this._onTween.subscribe(onTween);this._onComplete.subscribe(onComplete);}};YAHOO.util.AnimMgr=new function(){var thread=null;var queue=[];var tweenCount=0;this.fps=1000;this.delay=1;this.registerElement=function(tween){queue[queue.length]=tween;tweenCount+=1;tween._onStart.fire();this.start();};this.unRegister=function(tween,index){tween._onComplete.fire();index=index||getIndex(tween);if(index!=-1){queue.splice(index,1);}
-tweenCount-=1;if(tweenCount<=0){this.stop();}};this.start=function(){if(thread===null){thread=setInterval(this.run,this.delay);}};this.stop=function(tween){if(!tween){clearInterval(thread);for(var i=0,len=queue.length;i<len;++i){if(queue[i].isAnimated()){this.unRegister(tween,i);}}
-queue=[];thread=null;tweenCount=0;}
-else{this.unRegister(tween);}};this.run=function(){for(var i=0,len=queue.length;i<len;++i){var tween=queue[i];if(!tween||!tween.isAnimated()){continue;}
-if(tween.currentFrame<tween.totalFrames||tween.totalFrames===null)
-{tween.currentFrame+=1;if(tween.useSeconds){correctFrame(tween);}
-tween._onTween.fire();}
-else{YAHOO.util.AnimMgr.stop(tween,i);}}};var getIndex=function(anim){for(var i=0,len=queue.length;i<len;++i){if(queue[i]==anim){return i;}}
-return-1;};var correctFrame=function(tween){var frames=tween.totalFrames;var frame=tween.currentFrame;var expected=(tween.currentFrame*tween.duration*1000/tween.totalFrames);var elapsed=(new Date()-tween.getStartTime());var tweak=0;if(elapsed<tween.duration*1000){tweak=Math.round((elapsed/expected-1)*tween.currentFrame);}else{tweak=frames-(frame+1);}
-if(tweak>0&&isFinite(tweak)){if(tween.currentFrame+tweak>=frames){tweak=frames-(frame+1);}
-tween.currentFrame+=tweak;}};};YAHOO.util.Bezier=new function(){this.getPosition=function(points,t){var n=points.length;var tmp=[];for(var i=0;i<n;++i){tmp[i]=[points[i][0],points[i][1]];}
-for(var j=1;j<n;++j){for(i=0;i<n-j;++i){tmp[i][0]=(1-t)*tmp[i][0]+t*tmp[parseInt(i+1,10)][0];tmp[i][1]=(1-t)*tmp[i][1]+t*tmp[parseInt(i+1,10)][1];}}
-return[tmp[0][0],tmp[0][1]];};};(function(){YAHOO.util.ColorAnim=function(el,attributes,duration,method){YAHOO.util.ColorAnim.superclass.constructor.call(this,el,attributes,duration,method);};YAHOO.extend(YAHOO.util.ColorAnim,YAHOO.util.Anim);var Y=YAHOO.util;var superclass=Y.ColorAnim.superclass;var proto=Y.ColorAnim.prototype;proto.patterns.color=/color$/i;proto.patterns.rgb=/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;proto.patterns.hex=/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;proto.patterns.hex3=/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i;proto.patterns.transparent=/^transparent|rgba\(0, 0, 0, 0\)$/;proto.parseColor=function(s){if(s.length==3){return s;}
-var c=this.patterns.hex.exec(s);if(c&&c.length==4){return[parseInt(c[1],16),parseInt(c[2],16),parseInt(c[3],16)];}
-c=this.patterns.rgb.exec(s);if(c&&c.length==4){return[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)];}
-c=this.patterns.hex3.exec(s);if(c&&c.length==4){return[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)];}
-return null;};proto.getAttribute=function(attr){var el=this.getEl();if(this.patterns.color.test(attr)){var val=YAHOO.util.Dom.getStyle(el,attr);if(this.patterns.transparent.test(val)){var parent=el.parentNode;val=Y.Dom.getStyle(parent,attr);while(parent&&this.patterns.transparent.test(val)){parent=parent.parentNode;val=Y.Dom.getStyle(parent,attr);if(parent.tagName.toUpperCase()=='HTML'){val='#fff';}}}}else{val=superclass.getAttribute.call(this,attr);}
-return val;};proto.doMethod=function(attr,start,end){var val;if(this.patterns.color.test(attr)){val=[];for(var i=0,len=start.length;i<len;++i){val[i]=superclass.doMethod.call(this,attr,start[i],end[i]);}
-val='rgb('+Math.floor(val[0])+','+Math.floor(val[1])+','+Math.floor(val[2])+')';}
-else{val=superclass.doMethod.call(this,attr,start,end);}
-return val;};proto.setRuntimeAttribute=function(attr){superclass.setRuntimeAttribute.call(this,attr);if(this.patterns.color.test(attr)){var attributes=this.attributes;var start=this.parseColor(this.runtimeAttributes[attr].start);var end=this.parseColor(this.runtimeAttributes[attr].end);if(typeof attributes[attr]['to']==='undefined'&&typeof attributes[attr]['by']!=='undefined'){end=this.parseColor(attributes[attr].by);for(var i=0,len=start.length;i<len;++i){end[i]=start[i]+end[i];}}
-this.runtimeAttributes[attr].start=start;this.runtimeAttributes[attr].end=end;}};})();YAHOO.util.Easing={easeNone:function(t,b,c,d){return c*t/d+b;},easeIn:function(t,b,c,d){return c*(t/=d)*t+b;},easeOut:function(t,b,c,d){return-c*(t/=d)*(t-2)+b;},easeBoth:function(t,b,c,d){if((t/=d/2)<1){return c/2*t*t+b;}
-return-c/2*((--t)*(t-2)-1)+b;},backIn:function(t,b,c,d,s){if(typeof s=='undefined'){s=1.70158;}
-return c*(t/=d)*t*((s+1)*t-s)+b;},backOut:function(t,b,c,d,s){if(typeof s=='undefined'){s=1.70158;}
-return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b;},backBoth:function(t,b,c,d,s){if(typeof s=='undefined'){s=1.70158;}
-if((t/=d/2)<1){return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;}
-return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b;}};
-(function(){YAHOO.util.Motion=function(el,attributes,duration,method){if(el){YAHOO.util.Motion.superclass.constructor.call(this,el,attributes,duration,method);}};YAHOO.extend(YAHOO.util.Motion,YAHOO.util.ColorAnim);var Y=YAHOO.util;var superclass=Y.Motion.superclass;var proto=Y.Motion.prototype;proto.patterns.points=/^points$/i;proto.setAttribute=function(attr,val,unit){if(this.patterns.points.test(attr)){unit=unit||'px';superclass.setAttribute.call(this,'left',val[0],unit);superclass.setAttribute.call(this,'top',val[1],unit);}else{superclass.setAttribute.call(this,attr,val,unit);}};proto.getAttribute=function(attr){if(this.patterns.points.test(attr)){var val=[superclass.getAttribute.call(this,'left'),superclass.getAttribute.call(this,'top')];}else{val=superclass.getAttribute.call(this,attr);}
-return val;};proto.doMethod=function(attr,start,end){var val=null;if(this.patterns.points.test(attr)){var t=this.method(this.currentFrame,0,100,this.totalFrames)/100;val=Y.Bezier.getPosition(this.runtimeAttributes[attr],t);}else{val=superclass.doMethod.call(this,attr,start,end);}
-return val;};proto.setRuntimeAttribute=function(attr){if(this.patterns.points.test(attr)){var el=this.getEl();var attributes=this.attributes;var start;var control=attributes['points']['control']||[];var end;var i,len;if(control.length>0&&!(control[0]instanceof Array)){control=[control];}else{var tmp=[];for(i=0,len=control.length;i<len;++i){tmp[i]=control[i];}
-control=tmp;}
-if(Y.Dom.getStyle(el,'position')=='static'){Y.Dom.setStyle(el,'position','relative');}
-if(isset(attributes['points']['from'])){Y.Dom.setXY(el,attributes['points']['from']);}
-else{Y.Dom.setXY(el,Y.Dom.getXY(el));}
-start=this.getAttribute('points');if(isset(attributes['points']['to'])){end=translateValues.call(this,attributes['points']['to'],start);var pageXY=Y.Dom.getXY(this.getEl());for(i=0,len=control.length;i<len;++i){control[i]=translateValues.call(this,control[i],start);}}else if(isset(attributes['points']['by'])){end=[start[0]+attributes['points']['by'][0],start[1]+attributes['points']['by'][1]];for(i=0,len=control.length;i<len;++i){control[i]=[start[0]+control[i][0],start[1]+control[i][1]];}}
-this.runtimeAttributes[attr]=[start];if(control.length>0){this.runtimeAttributes[attr]=this.runtimeAttributes[attr].concat(control);}
-this.runtimeAttributes[attr][this.runtimeAttributes[attr].length]=end;}
-else{superclass.setRuntimeAttribute.call(this,attr);}};var translateValues=function(val,start){var pageXY=Y.Dom.getXY(this.getEl());val=[val[0]-pageXY[0]+start[0],val[1]-pageXY[1]+start[1]];return val;};var isset=function(prop){return(typeof prop!=='undefined');};})();
-(function(){var Event=YAHOO.util.Event;var Dom=YAHOO.util.Dom;YAHOO.util.DragDrop=function(id,sGroup,config){if(id){this.init(id,sGroup,config);}};YAHOO.util.DragDrop.prototype={id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:false,lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isTarget:true,padding:null,_domRef:null,__ygDragDrop:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,maintainOffset:false,xTicks:null,yTicks:null,primaryButtonOnly:true,available:false,hasOuterHandles:false,startDrag:function(x,y){},b4Drag:function(e){},onDrag:function(e){},onDragEnter:function(e,id){},onDragOver:function(e,id){},onDragOut:function(e,id){},onDragDrop:function(e,id){},onInvalidDrop:function(e){},endDrag:function(e){},b4MouseDown:function(e){},onMouseDown:function(e){},onMouseUp:function(e){},onAvailable:function(){},getEl:function(){if(!this._domRef){this._domRef=Dom.get(this.id);}
-return this._domRef;},getDragEl:function(){return Dom.get(this.dragElId);},init:function(id,sGroup,config){this.initTarget(id,sGroup,config);Event.on(this.id,"mousedown",this.handleMouseDown,this,true);},initTarget:function(id,sGroup,config){this.config=config||{};this.DDM=YAHOO.util.DDM;this.groups={};if(typeof id!=="string"){id=Dom.generateId(id);}
-this.id=id;this.addToGroup((sGroup)?sGroup:"default");this.handleElId=id;Event.onAvailable(id,this.handleOnAvailable,this,true);this.setDragElId(id);this.invalidHandleTypes={A:"A"};this.invalidHandleIds={};this.invalidHandleClasses=[];this.applyConfig();},applyConfig:function(){this.padding=this.config.padding||[0,0,0,0];this.isTarget=(this.config.isTarget!==false);this.maintainOffset=(this.config.maintainOffset);this.primaryButtonOnly=(this.config.primaryButtonOnly!==false);},handleOnAvailable:function(){this.available=true;this.resetConstraints();this.onAvailable();},setPadding:function(iTop,iRight,iBot,iLeft){if(!iRight&&0!==iRight){this.padding=[iTop,iTop,iTop,iTop];}else if(!iBot&&0!==iBot){this.padding=[iTop,iRight,iTop,iRight];}else{this.padding=[iTop,iRight,iBot,iLeft];}},setInitPosition:function(diffX,diffY){var el=this.getEl();if(!this.DDM.verifyEl(el)){return;}
-var dx=diffX||0;var dy=diffY||0;var p=Dom.getXY(el);this.initPageX=p[0]-dx;this.initPageY=p[1]-dy;this.lastPageX=p[0];this.lastPageY=p[1];this.setStartPosition(p);},setStartPosition:function(pos){var p=pos||Dom.getXY(this.getEl());this.deltaSetXY=null;this.startPageX=p[0];this.startPageY=p[1];},addToGroup:function(sGroup){this.groups[sGroup]=true;this.DDM.regDragDrop(this,sGroup);},removeFromGroup:function(sGroup){if(this.groups[sGroup]){delete this.groups[sGroup];}
-this.DDM.removeDDFromGroup(this,sGroup);},setDragElId:function(id){this.dragElId=id;},setHandleElId:function(id){if(typeof id!=="string"){id=Dom.generateId(id);}
-this.handleElId=id;this.DDM.regHandle(this.id,id);},setOuterHandleElId:function(id){if(typeof id!=="string"){id=Dom.generateId(id);}
-Event.on(id,"mousedown",this.handleMouseDown,this,true);this.setHandleElId(id);this.hasOuterHandles=true;},unreg:function(){Event.removeListener(this.id,"mousedown",this.handleMouseDown);this._domRef=null;this.DDM._remove(this);},isLocked:function(){return(this.DDM.isLocked()||this.locked);},handleMouseDown:function(e,oDD){var button=e.which||e.button;if(this.primaryButtonOnly&&button>1){return;}
-if(this.isLocked()){return;}
-this.DDM.refreshCache(this.groups);var pt=new YAHOO.util.Point(Event.getPageX(e),Event.getPageY(e));if(!this.hasOuterHandles&&!this.DDM.isOverTarget(pt,this)){}else{if(this.clickValidator(e)){this.setStartPosition();this.b4MouseDown(e);this.onMouseDown(e);this.DDM.handleMouseDown(e,this);this.DDM.stopEvent(e);}else{}}},clickValidator:function(e){var target=Event.getTarget(e);return(this.isValidHandleChild(target)&&(this.id==this.handleElId||this.DDM.handleWasClicked(target,this.id)));},addInvalidHandleType:function(tagName){var type=tagName.toUpperCase();this.invalidHandleTypes[type]=type;},addInvalidHandleId:function(id){if(typeof id!=="string"){id=Dom.generateId(id);}
-this.invalidHandleIds[id]=id;},addInvalidHandleClass:function(cssClass){this.invalidHandleClasses.push(cssClass);},removeInvalidHandleType:function(tagName){var type=tagName.toUpperCase();delete this.invalidHandleTypes[type];},removeInvalidHandleId:function(id){if(typeof id!=="string"){id=Dom.generateId(id);}
-delete this.invalidHandleIds[id];},removeInvalidHandleClass:function(cssClass){for(var i=0,len=this.invalidHandleClasses.length;i<len;++i){if(this.invalidHandleClasses[i]==cssClass){delete this.invalidHandleClasses[i];}}},isValidHandleChild:function(node){var valid=true;var nodeName;try{nodeName=node.nodeName.toUpperCase();}catch(e){nodeName=node.nodeName;}
-valid=valid&&!this.invalidHandleTypes[nodeName];valid=valid&&!this.invalidHandleIds[node.id];for(var i=0,len=this.invalidHandleClasses.length;valid&&i<len;++i){valid=!Dom.hasClass(node,this.invalidHandleClasses[i]);}
-return valid;},setXTicks:function(iStartX,iTickSize){this.xTicks=[];this.xTickSize=iTickSize;var tickMap={};for(var i=this.initPageX;i>=this.minX;i=i-iTickSize){if(!tickMap[i]){this.xTicks[this.xTicks.length]=i;tickMap[i]=true;}}
-for(i=this.initPageX;i<=this.maxX;i=i+iTickSize){if(!tickMap[i]){this.xTicks[this.xTicks.length]=i;tickMap[i]=true;}}
-this.xTicks.sort(this.DDM.numericSort);},setYTicks:function(iStartY,iTickSize){this.yTicks=[];this.yTickSize=iTickSize;var tickMap={};for(var i=this.initPageY;i>=this.minY;i=i-iTickSize){if(!tickMap[i]){this.yTicks[this.yTicks.length]=i;tickMap[i]=true;}}
-for(i=this.initPageY;i<=this.maxY;i=i+iTickSize){if(!tickMap[i]){this.yTicks[this.yTicks.length]=i;tickMap[i]=true;}}
-this.yTicks.sort(this.DDM.numericSort);},setXConstraint:function(iLeft,iRight,iTickSize){this.leftConstraint=iLeft;this.rightConstraint=iRight;this.minX=this.initPageX-iLeft;this.maxX=this.initPageX+iRight;if(iTickSize){this.setXTicks(this.initPageX,iTickSize);}
-this.constrainX=true;},clearConstraints:function(){this.constrainX=false;this.constrainY=false;this.clearTicks();},clearTicks:function(){this.xTicks=null;this.yTicks=null;this.xTickSize=0;this.yTickSize=0;},setYConstraint:function(iUp,iDown,iTickSize){this.topConstraint=iUp;this.bottomConstraint=iDown;this.minY=this.initPageY-iUp;this.maxY=this.initPageY+iDown;if(iTickSize){this.setYTicks(this.initPageY,iTickSize);}
-this.constrainY=true;},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var dx=(this.maintainOffset)?this.lastPageX-this.initPageX:0;var dy=(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPosition(dx,dy);}else{this.setInitPosition();}
-if(this.constrainX){this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize);}
-if(this.constrainY){this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize);}},getTick:function(val,tickArray){if(!tickArray){return val;}else if(tickArray[0]>=val){return tickArray[0];}else{for(var i=0,len=tickArray.length;i<len;++i){var next=i+1;if(tickArray[next]&&tickArray[next]>=val){var diff1=val-tickArray[i];var diff2=tickArray[next]-val;return(diff2>diff1)?tickArray[i]:tickArray[next];}}
-return tickArray[tickArray.length-1];}}};})();
-if(!YAHOO.util.DragDropMgr){YAHOO.util.DragDropMgr=function(){var Event=YAHOO.util.Event;return{ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,initalized:false,locked:false,init:function(){this.initialized=true;},POINT:0,INTERSECT:1,STRICT_INTERSECT:2,mode:0,_execOnAll:function(sMethod,args){for(var i in this.ids){for(var j in this.ids[i]){var oDD=this.ids[i][j];if(!this.isTypeOfDD(oDD)){continue;}
-oDD[sMethod].apply(oDD,args);}}},_onLoad:function(){this.init();Event.on(document,"mouseup",this.handleMouseUp,this,true);Event.on(document,"mousemove",this.handleMouseMove,this,true);Event.on(window,"unload",this._onUnload,this,true);Event.on(window,"resize",this._onResize,this,true);},_onResize:function(e){this._execOnAll("resetConstraints",[]);},lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isLocked:function(){return this.locked;},locationCache:{},useCache:true,clickPixelThresh:3,clickTimeThresh:1000,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,regDragDrop:function(oDD,sGroup){if(!this.initialized){this.init();}
-if(!this.ids[sGroup]){this.ids[sGroup]={};}
-this.ids[sGroup][oDD.id]=oDD;},removeDDFromGroup:function(oDD,sGroup){if(!this.ids[sGroup]){this.ids[sGroup]={};}
-var obj=this.ids[sGroup];if(obj&&obj[oDD.id]){delete obj[oDD.id];}},_remove:function(oDD){for(var g in oDD.groups){if(g&&this.ids[g][oDD.id]){delete this.ids[g][oDD.id];}}
-delete this.handleIds[oDD.id];},regHandle:function(sDDId,sHandleId){if(!this.handleIds[sDDId]){this.handleIds[sDDId]={};}
-this.handleIds[sDDId][sHandleId]=sHandleId;},isDragDrop:function(id){return(this.getDDById(id))?true:false;},getRelated:function(p_oDD,bTargetsOnly){var oDDs=[];for(var i in p_oDD.groups){for(j in this.ids[i]){var dd=this.ids[i][j];if(!this.isTypeOfDD(dd)){continue;}
-if(!bTargetsOnly||dd.isTarget){oDDs[oDDs.length]=dd;}}}
-return oDDs;},isLegalTarget:function(oDD,oTargetDD){var targets=this.getRelated(oDD,true);for(var i=0,len=targets.length;i<len;++i){if(targets[i].id==oTargetDD.id){return true;}}
-return false;},isTypeOfDD:function(oDD){return(oDD&&oDD.__ygDragDrop);},isHandle:function(sDDId,sHandleId){return(this.handleIds[sDDId]&&this.handleIds[sDDId][sHandleId]);},getDDById:function(id){for(var i in this.ids){if(this.ids[i][id]){return this.ids[i][id];}}
-return null;},handleMouseDown:function(e,oDD){this.currentTarget=YAHOO.util.Event.getTarget(e);this.dragCurrent=oDD;var el=oDD.getEl();this.startX=YAHOO.util.Event.getPageX(e);this.startY=YAHOO.util.Event.getPageY(e);this.deltaX=this.startX-el.offsetLeft;this.deltaY=this.startY-el.offsetTop;this.dragThreshMet=false;this.clickTimeout=setTimeout(function(){var DDM=YAHOO.util.DDM;DDM.startDrag(DDM.startX,DDM.startY);},this.clickTimeThresh);},startDrag:function(x,y){clearTimeout(this.clickTimeout);if(this.dragCurrent){this.dragCurrent.startDrag(x,y);}
-this.dragThreshMet=true;},handleMouseUp:function(e){if(!this.dragCurrent){return;}
-clearTimeout(this.clickTimeout);if(this.dragThreshMet){this.fireEvents(e,true);}else{}
-this.stopDrag(e);/* MPS 2007-01-19 this.stopEvent(e); */},stopEvent:function(e){if(this.stopPropagation){YAHOO.util.Event.stopPropagation(e);}
-if(this.preventDefault){YAHOO.util.Event.preventDefault(e);}},stopDrag:function(e){if(this.dragCurrent){if(this.dragThreshMet){this.dragCurrent.endDrag(e);}
-this.dragCurrent.onMouseUp(e);}
-this.dragCurrent=null;this.dragOvers={};},handleMouseMove:function(e){if(!this.dragCurrent){return true;}
-if(YAHOO.util.Event.isIE&&!e.button){this.stopEvent(e);return this.handleMouseUp(e);}
-if(!this.dragThreshMet){var diffX=Math.abs(this.startX-YAHOO.util.Event.getPageX(e));var diffY=Math.abs(this.startY-YAHOO.util.Event.getPageY(e));if(diffX>this.clickPixelThresh||diffY>this.clickPixelThresh){this.startDrag(this.startX,this.startY);}}
-if(this.dragThreshMet){this.dragCurrent.b4Drag(e);this.dragCurrent.onDrag(e);this.fireEvents(e,false);}
-this.stopEvent(e);return true;},fireEvents:function(e,isDrop){var dc=this.dragCurrent;if(!dc||dc.isLocked()){return;}
-var x=YAHOO.util.Event.getPageX(e);var y=YAHOO.util.Event.getPageY(e);var pt=new YAHOO.util.Point(x,y);var oldOvers=[];var outEvts=[];var overEvts=[];var dropEvts=[];var enterEvts=[];for(var i in this.dragOvers){var ddo=this.dragOvers[i];if(!this.isTypeOfDD(ddo)){continue;}
-if(!this.isOverTarget(pt,ddo,this.mode)){outEvts.push(ddo);}
-oldOvers[i]=true;delete this.dragOvers[i];}
-for(var sGroup in dc.groups){if("string"!=typeof sGroup){continue;}
-for(i in this.ids[sGroup]){var oDD=this.ids[sGroup][i];if(!this.isTypeOfDD(oDD)){continue;}
-if(oDD.isTarget&&!oDD.isLocked()&&oDD!=dc){if(this.isOverTarget(pt,oDD,this.mode)){if(isDrop){dropEvts.push(oDD);}else{if(!oldOvers[oDD.id]){enterEvts.push(oDD);}else{overEvts.push(oDD);}
-this.dragOvers[oDD.id]=oDD;}}}}}
-if(this.mode){if(outEvts.length){dc.onDragOut(e,outEvts);}
-if(enterEvts.length){dc.onDragEnter(e,enterEvts);}
-if(overEvts.length){dc.onDragOver(e,overEvts);}
-if(dropEvts.length){dc.onDragDrop(e,dropEvts);}}else{var len=0;for(i=0,len=outEvts.length;i<len;++i){dc.onDragOut(e,outEvts[i].id);}
-for(i=0,len=enterEvts.length;i<len;++i){dc.onDragEnter(e,enterEvts[i].id);}
-for(i=0,len=overEvts.length;i<len;++i){dc.onDragOver(e,overEvts[i].id);}
-for(i=0,len=dropEvts.length;i<len;++i){dc.onDragDrop(e,dropEvts[i].id);}}
-if(isDrop&&!dropEvts.length){dc.onInvalidDrop(e);}},getBestMatch:function(dds){var winner=null;var len=dds.length;if(len==1){winner=dds[0];}else{for(var i=0;i<len;++i){var dd=dds[i];if(this.mode==this.INTERSECT&&dd.cursorIsOver){winner=dd;break;}else{if(!winner||!winner.overlap||(dd.overlap&&winner.overlap.getArea()<dd.overlap.getArea())){winner=dd;}}}}
-return winner;},refreshCache:function(groups){for(var sGroup in groups){if("string"!=typeof sGroup){continue;}
-for(var i in this.ids[sGroup]){var oDD=this.ids[sGroup][i];if(this.isTypeOfDD(oDD)){var loc=this.getLocation(oDD);if(loc){this.locationCache[oDD.id]=loc;}else{delete this.locationCache[oDD.id];}}}}},verifyEl:function(el){try{if(el){var parent=el.offsetParent;if(parent){return true;}}}catch(e){}
-return false;},getLocation:function(oDD){if(!this.isTypeOfDD(oDD)){return null;}
-var el=oDD.getEl(),pos,x1,x2,y1,y2,t,r,b,l;try{pos=YAHOO.util.Dom.getXY(el);}catch(e){}
-if(!pos){return null;}
-x1=pos[0];x2=x1+el.offsetWidth;y1=pos[1];y2=y1+el.offsetHeight;t=y1-oDD.padding[0];r=x2+oDD.padding[1];b=y2+oDD.padding[2];l=x1-oDD.padding[3];return new YAHOO.util.Region(t,r,b,l);},isOverTarget:function(pt,oTarget,intersect){var loc=this.locationCache[oTarget.id];if(!loc||!this.useCache){loc=this.getLocation(oTarget);this.locationCache[oTarget.id]=loc;}
-if(!loc){return false;}
-oTarget.cursorIsOver=loc.contains(pt);var dc=this.dragCurrent;if(!dc||!dc.getTargetCoord||(!intersect&&!dc.constrainX&&!dc.constrainY)){return oTarget.cursorIsOver;}
-oTarget.overlap=null;var pos=dc.getTargetCoord(pt.x,pt.y);var el=dc.getDragEl();var curRegion=new YAHOO.util.Region(pos.y,pos.x+el.offsetWidth,pos.y+el.offsetHeight,pos.x);var overlap=curRegion.intersect(loc);if(overlap){oTarget.overlap=overlap;return(intersect)?true:oTarget.cursorIsOver;}else{return false;}},_onUnload:function(e,me){this.unregAll();},unregAll:function(){if(this.dragCurrent){this.stopDrag();this.dragCurrent=null;}
-this._execOnAll("unreg",[]);for(i in this.elementCache){delete this.elementCache[i];}
-this.elementCache={};this.ids={};},elementCache:{},getElWrapper:function(id){var oWrapper=this.elementCache[id];if(!oWrapper||!oWrapper.el){oWrapper=this.elementCache[id]=new this.ElementWrapper(YAHOO.util.Dom.get(id));}
-return oWrapper;},getElement:function(id){return YAHOO.util.Dom.get(id);},getCss:function(id){var el=YAHOO.util.Dom.get(id);return(el)?el.style:null;},ElementWrapper:function(el){this.el=el||null;this.id=this.el&&el.id;this.css=this.el&&el.style;},getPosX:function(el){return YAHOO.util.Dom.getX(el);},getPosY:function(el){return YAHOO.util.Dom.getY(el);},swapNode:function(n1,n2){if(n1.swapNode){n1.swapNode(n2);}else{var p=n2.parentNode;var s=n2.nextSibling;if(s==n1){p.insertBefore(n1,n2);}else if(n2==n1.nextSibling){p.insertBefore(n2,n1);}else{n1.parentNode.replaceChild(n2,n1);p.insertBefore(n1,s);}}},getScroll:function(){var t,l,dde=document.documentElement,db=document.body;if(dde&&(dde.scrollTop||dde.scrollLeft)){t=dde.scrollTop;l=dde.scrollLeft;}else if(db){t=db.scrollTop;l=db.scrollLeft;}
-return{top:t,left:l};},getStyle:function(el,styleProp){return YAHOO.util.Dom.getStyle(el,styleProp);},getScrollTop:function(){return this.getScroll().top;},getScrollLeft:function(){return this.getScroll().left;},moveToEl:function(moveEl,targetEl){var aCoord=YAHOO.util.Dom.getXY(targetEl);YAHOO.util.Dom.setXY(moveEl,aCoord);},getClientHeight:function(){return YAHOO.util.Dom.getViewportHeight();},getClientWidth:function(){return YAHOO.util.Dom.getViewportWidth();},numericSort:function(a,b){return(a-b);},_timeoutCount:0,_addListeners:function(){var DDM=YAHOO.util.DDM;if(YAHOO.util.Event&&document){DDM._onLoad();}else{if(DDM._timeoutCount>2000){}else{setTimeout(DDM._addListeners,10);if(document&&document.body){DDM._timeoutCount+=1;}}}},handleWasClicked:function(node,id){if(this.isHandle(id,node.id)){return true;}else{var p=node.parentNode;while(p){if(this.isHandle(id,p.id)){return true;}else{p=p.parentNode;}}}
-return false;}};}();YAHOO.util.DDM=YAHOO.util.DragDropMgr;YAHOO.util.DDM._addListeners();}
-YAHOO.util.DD=function(id,sGroup,config){if(id){this.init(id,sGroup,config);}};YAHOO.extend(YAHOO.util.DD,YAHOO.util.DragDrop,{scroll:true,autoOffset:function(iPageX,iPageY){var x=iPageX-this.startPageX;var y=iPageY-this.startPageY;this.setDelta(x,y);},setDelta:function(iDeltaX,iDeltaY){this.deltaX=iDeltaX;this.deltaY=iDeltaY;},setDragElPos:function(iPageX,iPageY){var el=this.getDragEl();this.alignElWithMouse(el,iPageX,iPageY);},alignElWithMouse:function(el,iPageX,iPageY){var oCoord=this.getTargetCoord(iPageX,iPageY);if(!this.deltaSetXY){var aCoord=[oCoord.x,oCoord.y];YAHOO.util.Dom.setXY(el,aCoord);var newLeft=parseInt(YAHOO.util.Dom.getStyle(el,"left"),10);var newTop=parseInt(YAHOO.util.Dom.getStyle(el,"top"),10);this.deltaSetXY=[newLeft-oCoord.x,newTop-oCoord.y];}else{YAHOO.util.Dom.setStyle(el,"left",(oCoord.x+this.deltaSetXY[0])+"px");YAHOO.util.Dom.setStyle(el,"top",(oCoord.y+this.deltaSetXY[1])+"px");}
-this.cachePosition(oCoord.x,oCoord.y);this.autoScroll(oCoord.x,oCoord.y,el.offsetHeight,el.offsetWidth);},cachePosition:function(iPageX,iPageY){if(iPageX){this.lastPageX=iPageX;this.lastPageY=iPageY;}else{var aCoord=YAHOO.util.Dom.getXY(this.getEl());this.lastPageX=aCoord[0];this.lastPageY=aCoord[1];}},autoScroll:function(x,y,h,w){if(this.scroll){var clientH=this.DDM.getClientHeight();var clientW=this.DDM.getClientWidth();var st=this.DDM.getScrollTop();var sl=this.DDM.getScrollLeft();var bot=h+y;var right=w+x;var toBot=(clientH+st-y-this.deltaY);var toRight=(clientW+sl-x-this.deltaX);var thresh=40;var scrAmt=(document.all)?80:30;if(bot>clientH&&toBot<thresh){window.scrollTo(sl,st+scrAmt);}
-if(y<st&&st>0&&y-st<thresh){window.scrollTo(sl,st-scrAmt);}
-if(right>clientW&&toRight<thresh){window.scrollTo(sl+scrAmt,st);}
-if(x<sl&&sl>0&&x-sl<thresh){window.scrollTo(sl-scrAmt,st);}}},getTargetCoord:function(iPageX,iPageY){var x=iPageX-this.deltaX;var y=iPageY-this.deltaY;if(this.constrainX){if(x<this.minX){x=this.minX;}
-if(x>this.maxX){x=this.maxX;}}
-if(this.constrainY){if(y<this.minY){y=this.minY;}
-if(y>this.maxY){y=this.maxY;}}
-x=this.getTick(x,this.xTicks);y=this.getTick(y,this.yTicks);return{x:x,y:y};},applyConfig:function(){YAHOO.util.DD.superclass.applyConfig.call(this);this.scroll=(this.config.scroll!==false);},b4MouseDown:function(e){this.autoOffset(YAHOO.util.Event.getPageX(e),YAHOO.util.Event.getPageY(e));},b4Drag:function(e){this.setDragElPos(YAHOO.util.Event.getPageX(e),YAHOO.util.Event.getPageY(e));}});