From 81c542caf4819268bb6b3cb5c1a445f8e5a10b04 Mon Sep 17 00:00:00 2001 From: Matthew Somerville Date: Thu, 23 Jun 2011 12:23:46 +0100 Subject: Use update user centrally. --- perllib/FixMyStreet/App/Controller/Report/Update.pm | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 'perllib/FixMyStreet/App/Controller/Report/Update.pm') diff --git a/perllib/FixMyStreet/App/Controller/Report/Update.pm b/perllib/FixMyStreet/App/Controller/Report/Update.pm index 2f1d88d08..4e0d6d6c5 100644 --- a/perllib/FixMyStreet/App/Controller/Report/Update.pm +++ b/perllib/FixMyStreet/App/Controller/Report/Update.pm @@ -20,10 +20,6 @@ Creates an update to a report sub report_update : Path : Args(0) { my ( $self, $c ) = @_; - # if there's no id then we should just stop now - $c->detach( '/page_error_404_not_found', [ _('Unknown problem ID') ] ) - unless $c->req->param('id'); - $c->forward( '/report/load_problem_or_display_error', [ $c->req->param('id') ] ) && $c->forward('process_user') && $c->forward('process_update') @@ -182,7 +178,7 @@ sub check_for_errors : Private { # let the model check for errors my %field_errors = ( - %{ $c->stash->{update_user}->check_for_errors }, + %{ $c->stash->{update}->user->check_for_errors }, %{ $c->stash->{update}->check_for_errors }, ); @@ -213,14 +209,13 @@ Save the update and the user as appropriate. sub save_update : Private { my ( $self, $c ) = @_; - my $user = $c->stash->{update_user}; my $update = $c->stash->{update}; - if ( !$user->in_storage ) { - $user->insert; + if ( !$update->user->in_storage ) { + $update->user->insert; } - elsif ( $c->user && $c->user->id == $user->id ) { - $user->update; + elsif ( $c->user && $c->user->id == $update->user->id ) { + $update->user->update; $update->confirm; } -- cgit v1.2.3 From ead78ff31d49cfeff2503f9faf793e0e53110cf6 Mon Sep 17 00:00:00 2001 From: Matthew Somerville Date: Thu, 23 Jun 2011 13:33:02 +0100 Subject: Remove unneeded defaults checking and simplify. --- perllib/FixMyStreet/App/Controller/Report/Update.pm | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) (limited to 'perllib/FixMyStreet/App/Controller/Report/Update.pm') diff --git a/perllib/FixMyStreet/App/Controller/Report/Update.pm b/perllib/FixMyStreet/App/Controller/Report/Update.pm index 4e0d6d6c5..ccdfa8a54 100644 --- a/perllib/FixMyStreet/App/Controller/Report/Update.pm +++ b/perllib/FixMyStreet/App/Controller/Report/Update.pm @@ -77,14 +77,6 @@ sub update_problem : Private { return 1; } -sub display_confirmation : Private { - my ( $self, $c ) = @_; - - $c->stash->{template} = 'tokens/confirm_update.html'; - - return 1; -} - =head2 process_user Load user from the database or prepare a new one. @@ -106,13 +98,10 @@ sub process_user : Private { $email =~ s{\s+}{}g; my $update_user = $c->model('DB::User')->find_or_new( { email => $email } ); - - # set the user's name if they don't have one $update_user->name( Utils::trim_text( $params{name} ) ) - unless $update_user->name; + if $params{name}; $c->stash->{update_user} = $update_user; - $c->stash->{email} = $update_user->email; return 1; } @@ -158,9 +147,7 @@ sub process_update : Private { ); $c->stash->{update} = $update; - $c->stash->{update_text} = $update->text; $c->stash->{add_alert} = $c->req->param('add_alert'); - $c->stash->{may_show_name} = ' checked' if $c->req->param('may_show_name'); return 1; } @@ -215,6 +202,7 @@ sub save_update : Private { $update->user->insert; } elsif ( $c->user && $c->user->id == $update->user->id ) { + # Logged in and same user, so can confirm update straight away $update->user->update; $update->confirm; } @@ -250,8 +238,8 @@ sub redirect_or_confirm_creation : Private { # If confirmed send the user straight there. if ( $update->confirmed ) { - $c->forward( 'signup_for_alerts' ); $c->forward( 'update_problem' ); + $c->forward( 'signup_for_alerts' ); my $report_uri = $c->uri_for( '/report', $update->problem_id ); $c->res->redirect($report_uri); $c->detach; -- cgit v1.2.3 From 09ce7aeb489e5a43054c3b2b7bfa47fd6aba7c43 Mon Sep 17 00:00:00 2001 From: Matthew Somerville Date: Thu, 23 Jun 2011 14:13:04 +0100 Subject: Use user if logged in, and don't show email field on update. --- .../FixMyStreet/App/Controller/Report/Update.pm | 28 +++++++++++++--------- 1 file changed, 17 insertions(+), 11 deletions(-) (limited to 'perllib/FixMyStreet/App/Controller/Report/Update.pm') diff --git a/perllib/FixMyStreet/App/Controller/Report/Update.pm b/perllib/FixMyStreet/App/Controller/Report/Update.pm index ccdfa8a54..86c84f14c 100644 --- a/perllib/FixMyStreet/App/Controller/Report/Update.pm +++ b/perllib/FixMyStreet/App/Controller/Report/Update.pm @@ -86,20 +86,26 @@ Load user from the database or prepare a new one. sub process_user : Private { my ( $self, $c ) = @_; - # FIXME - If user already logged in use them regardless + my $update_user; + if ( $c->user ) { - # Extract all the params to a hash to make them easier to work with - my %params = # - map { $_ => scalar $c->req->param($_) } # - ( 'rznvy', 'name' ); + $update_user = $c->user->obj; - # cleanup the email address - my $email = $params{rznvy} ? lc $params{rznvy} : ''; - $email =~ s{\s+}{}g; + } else { - my $update_user = $c->model('DB::User')->find_or_new( { email => $email } ); - $update_user->name( Utils::trim_text( $params{name} ) ) - if $params{name}; + # Extract all the params to a hash to make them easier to work with + my %params = # + map { $_ => scalar $c->req->param($_) } # + ( 'rznvy', 'name' ); + + # cleanup the email address + my $email = $params{rznvy} ? lc $params{rznvy} : ''; + $email =~ s{\s+}{}g; + + $update_user = $c->model('DB::User')->find_or_new( { email => $email } ); + $update_user->name( Utils::trim_text( $params{name} ) ); + + } $c->stash->{update_user} = $update_user; -- cgit v1.2.3