aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/FixMyStreet')
-rw-r--r--perllib/FixMyStreet/App/Controller/Admin.pm44
-rw-r--r--perllib/FixMyStreet/Cobrand/Zurich.pm39
-rw-r--r--perllib/FixMyStreet/Map/Zurich.pm8
-rw-r--r--perllib/FixMyStreet/SendReport/Zurich.pm3
4 files changed, 85 insertions, 9 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin.pm b/perllib/FixMyStreet/App/Controller/Admin.pm
index 7c985fdfc..de69880c1 100644
--- a/perllib/FixMyStreet/App/Controller/Admin.pm
+++ b/perllib/FixMyStreet/App/Controller/Admin.pm
@@ -485,7 +485,7 @@ sub reports : Path('reports') {
my ( $self, $c ) = @_;
if (my $search = $c->req->param('search')) {
- $c->stash->{searched} = 1;
+ $c->stash->{searched} = $search;
my $site_restriction = $c->cobrand->site_restriction;
@@ -730,11 +730,9 @@ sub users: Path('users') : Args(0) {
my ( $self, $c ) = @_;
if (my $search = $c->req->param('search')) {
- $c->stash->{searched} = 1;
+ $c->stash->{searched} = $search;
- my $search = $c->req->param('search');
my $isearch = '%' . $search . '%';
-
my $search_n = 0;
$search_n = int($search) if $search =~ /^\d+$/;
@@ -765,6 +763,9 @@ sub users: Path('users') : Args(0) {
}
}
+ } else {
+ $c->forward('get_token');
+ $c->forward('fetch_all_bodies');
}
return 1;
@@ -875,6 +876,35 @@ sub update_edit : Path('update_edit') : Args(1) {
return 1;
}
+sub user_add : Path('user_edit') : Args(0) {
+ my ( $self, $c ) = @_;
+
+ $c->stash->{template} = 'admin/user_edit.html';
+ $c->forward('get_token');
+ $c->forward('fetch_all_bodies');
+
+ return 1 unless $c->req->param('submit');
+
+ $c->forward('check_token');
+
+ my $user = $c->model('DB::User')->find_or_create( {
+ name => $c->req->param('name'),
+ email => $c->req->param('email'),
+ from_body => $c->req->param('body') || undef,
+ flagged => $c->req->param('flagged') || 0,
+ }, {
+ key => 'users_email_key'
+ } );
+ $c->stash->{user} = $user;
+
+ $c->forward( 'log_edit', [ $user->id, 'user', 'edit' ] );
+
+ $c->stash->{status_message} =
+ '<p><em>' . _('Updated!') . '</em></p>';
+
+ return 1;
+}
+
sub user_edit : Path('user_edit') : Args(1) {
my ( $self, $c, $id ) = @_;
@@ -1295,7 +1325,11 @@ sub fetch_all_bodies : Private {
my ($self, $c ) = @_;
my @bodies = $c->model('DB::Body')->all;
- @bodies = sort { strcoll($a->name, $b->name) } @bodies;
+ if ( $c->cobrand->moniker eq 'zurich' ) {
+ @bodies = $c->cobrand->admin_fetch_all_bodies( @bodies );
+ } else {
+ @bodies = sort { strcoll($a->name, $b->name) } @bodies;
+ }
$c->stash->{bodies} = \@bodies;
return 1;
diff --git a/perllib/FixMyStreet/Cobrand/Zurich.pm b/perllib/FixMyStreet/Cobrand/Zurich.pm
index 1c4718da7..81ace5a05 100644
--- a/perllib/FixMyStreet/Cobrand/Zurich.pm
+++ b/perllib/FixMyStreet/Cobrand/Zurich.pm
@@ -334,4 +334,43 @@ sub _admin_send_email {
} );
}
+sub admin_fetch_all_bodies {
+ my ( $self, @bodies ) = @_;
+
+ sub tree_sort {
+ my ( $level, $id, $sorted, $out ) = @_;
+
+ my @sorted;
+ my $array = $sorted->{$id};
+ if ( $level == 0 ) {
+ @sorted = sort {
+ # Want Zurich itself at the top.
+ return -1 if $sorted->{$a->id};
+ return 1 if $sorted->{$b->id};
+ # Otherwise, by name
+ strcoll($a->name, $b->name)
+ } @$array;
+ } else {
+ @sorted = sort { strcoll($a->name, $b->name) } @$array;
+ }
+ foreach ( @sorted ) {
+ $_->api_key( $level ); # Misuse
+ push @$out, $_;
+ if ($sorted->{$_->id}) {
+ tree_sort( $level+1, $_->id, $sorted, $out );
+ }
+ }
+ }
+
+ my %sorted;
+ foreach (@bodies) {
+ my $p = $_->parent ? $_->parent->id : 0;
+ push @{$sorted{$p}}, $_;
+ }
+
+ my @out;
+ tree_sort( 0, 0, \%sorted, \@out );
+ return @out;
+}
+
1;
diff --git a/perllib/FixMyStreet/Map/Zurich.pm b/perllib/FixMyStreet/Map/Zurich.pm
index d2f7a35af..cec34f4fd 100644
--- a/perllib/FixMyStreet/Map/Zurich.pm
+++ b/perllib/FixMyStreet/Map/Zurich.pm
@@ -13,7 +13,7 @@ use Geo::Coordinates::CH1903;
use Math::Trig;
use Utils;
-use constant ZOOM_LEVELS => 10;
+use constant ZOOM_LEVELS => 9;
use constant DEFAULT_ZOOM => 7;
use constant MIN_ZOOM_LEVEL => 0;
@@ -30,7 +30,7 @@ sub map_tiles {
}
sub base_tile_url {
- return 'http://www.wmts.stadt-zuerich.ch/Luftbild/MapServer/WMTS/tile/1.0.0/Luftbild/default/nativeTileMatrixSet';
+ return 'http://www.wmts.stadt-zuerich.ch/Hybrid/MapServer/WMTS/tile/1.0.0/Hybrid/default/nativeTileMatrixSet';
}
sub copyright {
@@ -90,10 +90,10 @@ sub latlon_to_tile($$$) {
my ($x, $y) = Geo::Coordinates::CH1903::from_latlon($lat, $lon);
- my $matrix_id = $zoom - 1;
+ my $matrix_id = $zoom;
$matrix_id = 0 if $matrix_id < 0;
- my @scales = ( '250000', '125000', '64000', '32000', '16000', '8000', '4000', '2000', '1000', '500' );
+ my @scales = ( '250000', '125000', '64000', '32000', '16000', '8000', '4000', '2000', '1000' );
my $tileOrigin = { lat => 30814423, lon => -29386322 };
my $tileSize = 256;
my $res = $scales[$zoom] / (39.3701 * 96); # OpenLayers.INCHES_PER_UNIT[units] * OpenLayers.DOTS_PER_INCH
diff --git a/perllib/FixMyStreet/SendReport/Zurich.pm b/perllib/FixMyStreet/SendReport/Zurich.pm
index ca9e6f33e..d700dcb15 100644
--- a/perllib/FixMyStreet/SendReport/Zurich.pm
+++ b/perllib/FixMyStreet/SendReport/Zurich.pm
@@ -39,6 +39,9 @@ sub get_template {
$template = 'submit-feedback-pending.txt';
} elsif ( $row->state eq 'closed' ) {
$template = 'submit-external.txt';
+ if ( $row->extra->{third_personal} ) {
+ $template = 'submit-external-personal.txt';
+ }
}
my $template_path = FixMyStreet->path_to( "templates", "email", "zurich", $template )->stringify;