diff options
Diffstat (limited to 'perllib/FixMyStreet/App')
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Admin.pm | 17 | ||||
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Contact.pm | 7 | ||||
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Dashboard.pm | 8 | ||||
-rwxr-xr-x | perllib/FixMyStreet/App/Controller/JS.pm | 2 | ||||
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Open311.pm | 2 | ||||
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Report.pm | 2 | ||||
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Report/New.pm | 35 | ||||
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Report/Update.pm | 18 | ||||
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Reports.pm | 13 |
9 files changed, 82 insertions, 22 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin.pm b/perllib/FixMyStreet/App/Controller/Admin.pm index 17bc3ca76..a3a241590 100644 --- a/perllib/FixMyStreet/App/Controller/Admin.pm +++ b/perllib/FixMyStreet/App/Controller/Admin.pm @@ -29,9 +29,11 @@ sub begin : Private { $c->uri_disposition('relative'); - if ($c->cobrand->moniker eq 'zurich') { + if ( $c->cobrand->moniker eq 'zurich' || $c->cobrand->moniker eq 'seesomething' ) { $c->detach( '/auth/redirect' ) unless $c->user_exists; $c->detach( '/auth/redirect' ) unless $c->user->from_body; + } + if ( $c->cobrand->moniker eq 'zurich' ) { $c->cobrand->admin_type(); } } @@ -75,11 +77,9 @@ sub index : Path : Args(0) { %prob_counts = map { $_ => $prob_counts{$_} || 0 } - ('confirmed', 'investigating', 'in progress', 'closed', 'fixed - council', - 'fixed - user', 'fixed', 'unconfirmed', 'hidden', - 'partial', 'planned'); + ( FixMyStreet::DB::Result::Problem->all_states() ); $c->stash->{problems} = \%prob_counts; - $c->stash->{total_problems_live} += $prob_counts{$_} + $c->stash->{total_problems_live} += $prob_counts{$_} ? $prob_counts{$_} : 0 for ( FixMyStreet::DB::Result::Problem->visible_states() ); $c->stash->{total_problems_users} = $c->cobrand->problems->unique_users; @@ -399,12 +399,13 @@ sub update_contacts : Private { sub body_params : Private { my ( $self, $c ) = @_; - my @fields = qw/name endpoint jurisdiction api_key send_method send_comments suppress_alerts comment_user_id can_be_devolved parent/; + my @fields = qw/name endpoint jurisdiction api_key send_method send_comments suppress_alerts send_extended_statuses comment_user_id can_be_devolved parent/; my %defaults = map { $_ => '' } @fields; %defaults = ( %defaults, send_comments => 0, suppress_alerts => 0, comment_user_id => undef, + send_extended_statuses => 0, can_be_devolved => 0, parent => undef, ); @@ -981,6 +982,10 @@ sub stats : Path('stats') : Args(0) { $c->forward('fetch_all_bodies'); + if ( $c->cobrand->moniker eq 'seesomething' ) { + return $c->cobrand->admin_stats(); + } + if ( $c->req->param('getcounts') ) { my ( $start_date, $end_date, @errors ); diff --git a/perllib/FixMyStreet/App/Controller/Contact.pm b/perllib/FixMyStreet/App/Controller/Contact.pm index 926a3f2a5..04360301e 100644 --- a/perllib/FixMyStreet/App/Controller/Contact.pm +++ b/perllib/FixMyStreet/App/Controller/Contact.pm @@ -113,6 +113,9 @@ sub validate : Private { or $c->req->param('update_id') && $c->req->param('update_id') !~ /^[1-9]\d*$/; + push @errors, _('There was a problem showing this page. Please try again later.') + if $c->req->params->{message} && $c->req->params->{message} =~ /\[url=/; + unshift @errors, _('There were problems with your report. Please see below.') if scalar keys %field_errors; @@ -184,7 +187,7 @@ generally required to stash sub setup_request : Private { my ( $self, $c ) = @_; - $c->stash->{contact_email} = $c->cobrand->contact_email( 'contact' ); + $c->stash->{contact_email} = $c->cobrand->contact_email; $c->stash->{contact_email} =~ s/\@/@/; for my $param (qw/em subject message/) { @@ -206,7 +209,7 @@ Sends the email sub send_email : Private { my ( $self, $c ) = @_; - my $recipient = $c->cobrand->contact_email( 'contact' ); + my $recipient = $c->cobrand->contact_email; my $recipient_name = $c->cobrand->contact_name(); $c->stash->{host} = $c->req->header('HOST'); diff --git a/perllib/FixMyStreet/App/Controller/Dashboard.pm b/perllib/FixMyStreet/App/Controller/Dashboard.pm index 657751e5c..028b9aadd 100644 --- a/perllib/FixMyStreet/App/Controller/Dashboard.pm +++ b/perllib/FixMyStreet/App/Controller/Dashboard.pm @@ -141,6 +141,8 @@ sub index : Path : Args(0) { $prob_where->{state} = [ FixMyStreet::DB::Result::Problem->fixed_states() ]; } elsif ( $c->stash->{q_state} ) { $prob_where->{state} = $c->stash->{q_state}; + $prob_where->{state} = { IN => [ 'planned', 'action scheduled' ] } + if $prob_where->{state} eq 'action scheduled'; } my $params = { %$prob_where, @@ -184,11 +186,13 @@ sub updates_search : Private { map { $_ => $counts{$_} || 0 } ('confirmed', 'investigating', 'in progress', 'closed', 'fixed - council', 'fixed - user', 'fixed', 'unconfirmed', 'hidden', - 'partial', 'planned'); + 'partial', 'action scheduled', 'planned'); + + $counts{'action scheduled'} += $counts{planned} || 0; for my $vars ( [ 'time_to_fix', 'fixed - council' ], - [ 'time_to_mark', 'in progress', 'planned', 'investigating', 'closed' ], + [ 'time_to_mark', 'in progress', 'action scheduled', 'investigating', 'closed' ], ) { my $col = shift @$vars; my $substmt = "select min(id) from comment where me.problem_id=comment.problem_id and problem_state in ('" diff --git a/perllib/FixMyStreet/App/Controller/JS.pm b/perllib/FixMyStreet/App/Controller/JS.pm index 1ced9d43b..483c3c2cc 100755 --- a/perllib/FixMyStreet/App/Controller/JS.pm +++ b/perllib/FixMyStreet/App/Controller/JS.pm @@ -24,6 +24,8 @@ sub translation_strings : LocalRegex('^translation_strings\.(.*?)\.js$') : Args( $c->res->content_type( 'application/javascript' ); } +sub validation_rules : Path('validation_rules.js') : Args(0) { } + __PACKAGE__->meta->make_immutable; 1; diff --git a/perllib/FixMyStreet/App/Controller/Open311.pm b/perllib/FixMyStreet/App/Controller/Open311.pm index 3a6794325..7b8cb649f 100644 --- a/perllib/FixMyStreet/App/Controller/Open311.pm +++ b/perllib/FixMyStreet/App/Controller/Open311.pm @@ -100,7 +100,7 @@ sub error : Private { sub get_discovery : Private { my ( $self, $c ) = @_; - my $contact_email = $c->config->{CONTACT_EMAIL}; + my $contact_email = $c->cobrand->contact_email; my $prod_url = 'http://www.fiksgatami.no/open311'; my $test_url = 'http://fiksgatami-dev.nuug.no/open311'; my $prod_changeset = '2011-04-08T00:00:00Z'; diff --git a/perllib/FixMyStreet/App/Controller/Report.pm b/perllib/FixMyStreet/App/Controller/Report.pm index 39d750562..460ccaec5 100644 --- a/perllib/FixMyStreet/App/Controller/Report.pm +++ b/perllib/FixMyStreet/App/Controller/Report.pm @@ -114,7 +114,7 @@ sub load_problem_or_display_error : Private { if ( !$c->user || $c->user->id != $problem->user->id ) { $c->detach( '/page_error_403_access_denied', - [ _('That report cannot be viewed on FixMyStreet.') ] # + [ sprintf(_('That report cannot be viewed on %s.'), $c->cobrand->site_title) ] # ); } } diff --git a/perllib/FixMyStreet/App/Controller/Report/New.pm b/perllib/FixMyStreet/App/Controller/Report/New.pm index 0ba8c5f71..687e54fbe 100644 --- a/perllib/FixMyStreet/App/Controller/Report/New.pm +++ b/perllib/FixMyStreet/App/Controller/Report/New.pm @@ -194,6 +194,7 @@ sub report_form_ajax : Path('ajax') : Args(0) { councils_text => $councils_text, category => $category, extra_name_info => $extra_name_info, + categories => $c->stash->{category_options}, } ); @@ -716,6 +717,14 @@ sub process_user : Private { my $user_title = Utils::trim_text( $params{fms_extra_title} ); + if ( $c->cobrand->allow_anonymous_reports ) { + my $anon_details = $c->cobrand->anonymous_account; + + for my $key ( qw( email name ) ) { + $params{ $key } ||= $anon_details->{ $key }; + } + } + # The user is already signed in if ( $c->user_exists ) { my $user = $c->user->obj; @@ -780,7 +789,9 @@ sub process_report : Private { 'detail_offensive', 'may_show_name', # 'category', # + 'subcategory', # 'partial', # + 'service', # ); # load the report @@ -805,9 +816,14 @@ sub process_report : Private { } $report->detail( $detail ); + # mobile device type + $report->service( $params{service} ) if $params{service}; + # set these straight from the params $report->category( _ $params{category} ) if $params{category}; + $report->subcategory( $params{subcategory} ); + my $areas = $c->stash->{all_areas_mapit}; $report->areas( ',' . join( ',', sort keys %$areas ) . ',' ); @@ -927,11 +943,7 @@ sub check_for_errors : Private { # let the model check for errors $c->stash->{field_errors} ||= {}; - my %field_errors = ( - %{ $c->stash->{field_errors} }, - %{ $c->stash->{report}->user->check_for_errors }, - %{ $c->stash->{report}->check_for_errors }, - ); + my %field_errors = $c->cobrand->report_check_for_errors( $c ); # Zurich, we don't care about title or name # There is no title, and name is optional @@ -978,7 +990,14 @@ sub save_user_and_report : Private { my $report = $c->stash->{report}; # Save or update the user if appropriate - if ( !$report->user->in_storage ) { + if ( $c->cobrand->never_confirm_reports ) { + if ( $report->user->in_storage() ) { + $report->user->update(); + } else { + $report->user->insert(); + } + $report->confirm(); + } elsif ( !$report->user->in_storage ) { # User does not exist. # Store changes in token for when token is validated. $c->stash->{token_data} = { @@ -1106,6 +1125,10 @@ sub redirect_or_confirm_creation : Private { if ( $c->cobrand->moniker eq 'fixmybarangay' && $c->user->from_body && $c->stash->{external_source_id}) { $report_uri = $c->uri_for( '/report', $report->id, undef, { external_source_id => $c->stash->{external_source_id} } ); + } elsif ( $c->cobrand->never_confirm_reports && $report->non_public ) { + $c->log->info( 'cobrand was set to always confirm reports and report was non public, success page showed'); + $c->stash->{template} = 'report_created.html'; + return 1; } else { $report_uri = $c->cobrand->base_url_for_report( $report ) . $report->url; } diff --git a/perllib/FixMyStreet/App/Controller/Report/Update.pm b/perllib/FixMyStreet/App/Controller/Report/Update.pm index 4467a7036..dbfd57e78 100644 --- a/perllib/FixMyStreet/App/Controller/Report/Update.pm +++ b/perllib/FixMyStreet/App/Controller/Report/Update.pm @@ -203,8 +203,23 @@ sub process_update : Private { $params{state} = 'fixed - council' if $params{state} eq 'fixed' && $c->user && $c->user->belongs_to_body( $update->problem->bodies_str ); $update->problem_state( $params{state} ); + } else { + # we do this so we have a record of the state of the problem at this point + # for use when sending updates to external parties + if ( $update->mark_fixed ) { + $update->problem_state( 'fixed - user' ); + } elsif ( $update->mark_open ) { + $update->problem_state( 'confirmed' ); + # if there is not state param and neither of the above conditions apply + # then we are not changing the state of the problem so can use the current + # problem state + } else { + my $problem = $c->stash->{problem} || $update->problem; + $update->problem_state( $problem->state ); + } } + my @extra; # Next function fills this, but we don't need it here. # This is just so that the error checkign for these extra fields runs. # TODO Use extra here as it is used on reports. @@ -249,7 +264,8 @@ sub check_for_errors : Private { $error = 1 unless $c->user && $c->user->belongs_to_body( $c->stash->{update}->problem->bodies_str ); my $state = $c->req->param('state'); - $error = 1 unless ( grep { $state eq $_ } ( qw/confirmed closed fixed investigating planned/, 'in progress', 'fixed', 'fixed - user', 'fixed - council' ) ); + $state = 'fixed - council' if $state eq 'fixed'; + $error = 1 unless ( grep { $state eq $_ } ( FixMyStreet::DB::Result::Problem->council_states() ) ); if ( $error ) { $c->stash->{errors} ||= []; diff --git a/perllib/FixMyStreet/App/Controller/Reports.pm b/perllib/FixMyStreet/App/Controller/Reports.pm index fc7eb522f..781dee698 100644 --- a/perllib/FixMyStreet/App/Controller/Reports.pm +++ b/perllib/FixMyStreet/App/Controller/Reports.pm @@ -112,14 +112,21 @@ sub ward : Path : Args(2) { my $pins = $c->stash->{pins}; $c->stash->{page} = 'reports'; # So the map knows to make clickable pins - FixMyStreet::Map::display_map( - $c, + my %map_params = ( latitude => @$pins ? $pins->[0]{latitude} : 0, longitude => @$pins ? $pins->[0]{longitude} : 0, area => $c->stash->{ward} ? $c->stash->{ward}->{id} : [ keys %{$c->stash->{body}->areas} ], - pins => $pins, any_zoom => 1, ); + if ( $c->cobrand->moniker eq 'emptyhomes' ) { + FixMyStreet::Map::display_map( + $c, %map_params, latitude => 0, longitude => 0, + ); + } else { + FixMyStreet::Map::display_map( + $c, %map_params, pins => $pins, + ); + } $c->cobrand->tweak_all_reports_map( $c ); |