diff options
12 files changed, 47 insertions, 31 deletions
diff --git a/.cypress/cypress/integration/simple_spec.js b/.cypress/cypress/integration/simple_spec.js index 01fb77f49..7040681a3 100644 --- a/.cypress/cypress/integration/simple_spec.js +++ b/.cypress/cypress/integration/simple_spec.js @@ -12,8 +12,8 @@ describe('Clicking the map', function() { cy.get('[name=title]').type('Title'); cy.get('[name=detail]').type('Detail'); cy.get('#js-new-report-user-show').click(); - cy.get('[name=username]').type('user@example.org'); cy.get('#js-new-report-show-sign-in').click(); + cy.get('#form_username_sign_in').type('user@example.org'); cy.get('[name=password_sign_in]').type('password'); cy.get('[name=password_sign_in]').parents('form').submit(); cy.get('#map_sidebar').should('contain', 'check and confirm your details'); diff --git a/perllib/FixMyStreet/App/Controller/Report/New.pm b/perllib/FixMyStreet/App/Controller/Report/New.pm index 1a1a657a9..ce2fe19f6 100644 --- a/perllib/FixMyStreet/App/Controller/Report/New.pm +++ b/perllib/FixMyStreet/App/Controller/Report/New.pm @@ -6,6 +6,7 @@ BEGIN { extends 'Catalyst::Controller'; } use Encode; use List::MoreUtils qw(uniq); +use List::Util 'first'; use POSIX 'strcoll'; use HTML::Entities; use mySociety::MaPit; @@ -789,7 +790,10 @@ sub process_user : Private { # Extract all the params to a hash to make them easier to work with my %params = map { $_ => $c->get_param($_) } - ( 'username', 'email', 'name', 'phone', 'password_register', 'fms_extra_title' ); + ( 'email', 'name', 'phone', 'password_register', 'fms_extra_title' ); + + # Report form includes two username fields: #form_username_register and #form_username_sign_in + $params{username} = (first { $_ } $c->get_param_list('username')) || ''; if ( $c->cobrand->allow_anonymous_reports ) { my $anon_details = $c->cobrand->anonymous_account; diff --git a/perllib/FixMyStreet/App/Controller/Report/Update.pm b/perllib/FixMyStreet/App/Controller/Report/Update.pm index dc46be61f..cbedf7a01 100644 --- a/perllib/FixMyStreet/App/Controller/Report/Update.pm +++ b/perllib/FixMyStreet/App/Controller/Report/Update.pm @@ -5,6 +5,7 @@ use namespace::autoclean; BEGIN { extends 'Catalyst::Controller'; } use Path::Class; +use List::Util 'first'; use Utils; =head1 NAME @@ -99,7 +100,10 @@ sub process_user : Private { # Extract all the params to a hash to make them easier to work with my %params = map { $_ => $c->get_param($_) } - ( 'username', 'name', 'password_register', 'fms_extra_title' ); + ( 'name', 'password_register', 'fms_extra_title' ); + + # Update form includes two username fields: #form_username_register and #form_username_sign_in + $params{username} = (first { $_ } $c->get_param_list('username')) || ''; # Extra block to use 'last' if ( $c->user_exists ) { { diff --git a/templates/web/base/report/form/user_loggedout.html b/templates/web/base/report/form/user_loggedout.html index 8743883ee..c9c3fabad 100644 --- a/templates/web/base/report/form/user_loggedout.html +++ b/templates/web/base/report/form/user_loggedout.html @@ -2,13 +2,6 @@ <div id="form_sign_in"> [% PROCESS 'report/form/private_details.html' %] - -[% IF c.cobrand.social_auth_enabled %] - [% PROCESS 'report/form/user_loggedout_email.html' required=0 %] -[% ELSE %] - [% PROCESS 'report/form/user_loggedout_email.html' required=1 %] -[% END %] - <h2 class="hidden-js">[% tprintf(loc("Do you have a %s password?", "%s is the site name"), site_name) %]</h2> [% PROCESS 'report/form/user_loggedout_password.html' %] [% PROCESS 'report/form/user_loggedout_by_email.html' %] diff --git a/templates/web/base/report/form/user_loggedout_by_email.html b/templates/web/base/report/form/user_loggedout_by_email.html index e115f6d20..4ae3db868 100644 --- a/templates/web/base/report/form/user_loggedout_by_email.html +++ b/templates/web/base/report/form/user_loggedout_by_email.html @@ -8,7 +8,7 @@ [% INCLUDE 'report/_show_name_label.html' %] [% IF type != 'update' %] - [% UNLESS c.cobrand.call_hook('disable_phone_number_entry') %] + [% IF NOT c.cobrand.call_hook('disable_phone_number_entry') AND NOT c.config.SMS_AUTHENTICATION %] <div id="js-hide-if-username-phone"> <label for="form_phone">[% loc('Phone number (optional)') %]</label> [% IF field_errors.phone %] @@ -17,12 +17,6 @@ <input class="form-control" type="text" value="[% phone | html %]" name="phone" id="form_phone"> </div> [% END %] - [% IF c.config.SMS_AUTHENTICATION %] - <div id="js-hide-if-username-email"> - <label for="form_email">[% loc('Email address (optional)') %]</label> - <input class="form-control" type="text" value="[% email | html %]" name="email" id="form_email"> - </div> - [% END %] [% END %] [% IF c.cobrand.moniker == 'fixamingata' %] @@ -31,6 +25,25 @@ </div> [% END %] + [% IF c.cobrand.social_auth_enabled AND NOT email_required %] + [% PROCESS 'report/form/user_loggedout_email.html' name='username_register' required=0 %] + [% ELSE %] + [% PROCESS 'report/form/user_loggedout_email.html' name='username_register' required=1 %] + [% END %] + + [% IF type != 'update' AND c.config.SMS_AUTHENTICATION %] + [% UNLESS c.cobrand.call_hook('disable_phone_number_entry') %] + <div id="js-hide-if-username-phone" class="hidden-js"> + <label for="form_phone">[% loc('Phone number (optional)') %]</label> + <input class="form-control" type="text" value="[% phone | html %]" name="phone" id="form_phone"> + </div> + [% END %] + <div id="js-hide-if-username-email" class="hidden-js"> + <label for="form_email">[% loc('Email address (optional)') %]</label> + <input class="form-control" type="text" value="[% email | html %]" name="email" id="form_email"> + </div> + [% END %] + [% IF type == 'update' %] <div class="checkbox-group"> <input type="checkbox" name="add_alert" id="form_add_alert" value="1"[% ' checked' IF add_alert %]> diff --git a/templates/web/base/report/form/user_loggedout_email.html b/templates/web/base/report/form/user_loggedout_email.html index 932bc97a7..c32691eb4 100644 --- a/templates/web/base/report/form/user_loggedout_email.html +++ b/templates/web/base/report/form/user_loggedout_email.html @@ -9,11 +9,11 @@ [% SET username_value = object.user.email %] [% END %] -<label for="form_username">[% username_label %]</label> +<label for="form_[% name %]">[% username_label %]</label> [% IF field_errors.username %] <p class='form-error'>[% field_errors.username %]</p> [% END %] -<input type="[% username_type %]" name="username" id="form_username" +<input type="[% username_type %]" name="username" id="form_[% name %]" value="[% username_value | html %]" [% IF required %]required[% END %] class="form-control required"> diff --git a/templates/web/base/report/form/user_loggedout_password.html b/templates/web/base/report/form/user_loggedout_password.html index 016da88ad..dfd7d0d14 100644 --- a/templates/web/base/report/form/user_loggedout_password.html +++ b/templates/web/base/report/form/user_loggedout_password.html @@ -8,6 +8,12 @@ <a id="js-new-report-hide-sign-in" href="#">[% loc('Fill in your details manually.') %]</a> </p> + [% IF c.cobrand.social_auth_enabled %] + [% PROCESS 'report/form/user_loggedout_email.html' name='username_sign_in' required=0 %] + [% ELSE %] + [% PROCESS 'report/form/user_loggedout_email.html' name='username_sign_in' required=1 %] + [% END %] + <label for="password_sign_in">[% loc('Your password') %]</label> [% IF field_errors.password %] <p class='form-error'>[% field_errors.password %]</p> diff --git a/templates/web/base/report/new/oauth_email_form.html b/templates/web/base/report/new/oauth_email_form.html index 394a4b743..5b4622cda 100644 --- a/templates/web/base/report/new/oauth_email_form.html +++ b/templates/web/base/report/new/oauth_email_form.html @@ -11,10 +11,8 @@ <fieldset> <div id="problem_form"> - [% PROCESS 'report/form/user_loggedout_email.html' type='report' object=report required=1 %] - <div id="form_sign_in"> - [% PROCESS 'report/form/user_loggedout_by_email.html' object=report type='report' %] + [% PROCESS 'report/form/user_loggedout_by_email.html' object=report type='report' email_required=1 %] </div> <input type="hidden" name="oauth_need_email" value="1"> diff --git a/templates/web/base/report/update/form_user.html b/templates/web/base/report/update/form_user.html index 5d4c67528..47ba18c12 100644 --- a/templates/web/base/report/update/form_user.html +++ b/templates/web/base/report/update/form_user.html @@ -10,9 +10,8 @@ [% IF c.user_exists %] [% PROCESS "report/update/form_user_loggedin.html" %] [% ELSIF oauth_need_email %] - [% PROCESS 'report/form/user_loggedout_email.html' type='update' object=update required=1 %] <div id="form_sign_in"> - [% PROCESS 'report/form/user_loggedout_by_email.html' object=update type='update' valid_class='validNameU' %] + [% PROCESS 'report/form/user_loggedout_by_email.html' object=update type='update' valid_class='validNameU' email_required=1 %] <input type="hidden" name="oauth_need_email" value="1"> </div> [% ELSE %] diff --git a/templates/web/bromley/report/form/user_loggedout_email.html b/templates/web/bromley/report/form/user_loggedout_email.html index fc4f83f9c..78b4a0044 100644 --- a/templates/web/bromley/report/form/user_loggedout_email.html +++ b/templates/web/bromley/report/form/user_loggedout_email.html @@ -8,7 +8,7 @@ [% SET username_value = object.user.email %] [% END %] -<label for="form_username">[% loc('Email' ) %] +<label for="form_[% name %]">[% loc('Email' ) %] [% IF type == 'update' %] <span class="muted">([% loc('We never show your email') %])</span> [% END %] @@ -16,7 +16,7 @@ [% IF field_errors.username %] <p class='form-error'>[% field_errors.username %]</p> [% END %] -<input type="[% username_type %]" name="username" id="form_username" +<input type="[% username_type %]" name="username" id="form_[% name %]" value="[% username_value | html %]" [% IF required %]required[% END %] class="form-control required"> diff --git a/templates/web/zurich/report/new/fill_in_details_form.html b/templates/web/zurich/report/new/fill_in_details_form.html index bd20efdaa..17e308f07 100644 --- a/templates/web/zurich/report/new/fill_in_details_form.html +++ b/templates/web/zurich/report/new/fill_in_details_form.html @@ -50,11 +50,11 @@ [% PROCESS "report/new/category_wrapper.html" %] - <label for="form_username">[% loc('Your email') %]</label> + <label for="form_username_register">[% loc('Your email') %]</label> [% IF field_errors.username %] <p class='form-error'>[% field_errors.username %]</p> [% END %] - <input class="form-control" type="email" value="[% email | html %]" name="username" id="form_username" required> + <input class="form-control" type="email" value="[% email | html %]" name="username" id="form_username_register" required> <label for="form_name">[% loc('Name') %] [% loc('(optional)') %]</label> [% IF field_errors.name %] diff --git a/web/cobrands/fixmystreet/fixmystreet.js b/web/cobrands/fixmystreet/fixmystreet.js index 31b47f7a7..8f115fd1e 100644 --- a/web/cobrands/fixmystreet/fixmystreet.js +++ b/web/cobrands/fixmystreet/fixmystreet.js @@ -322,8 +322,7 @@ $.extend(fixmystreet.set_up, { } ); $('#facebook_sign_in, #twitter_sign_in').click(function(e){ - $('#form_username').removeClass(); - $('#username').removeClass(); + $('#username, #form_username_register, #form_username_sign_in').removeClass('required'); }); $('#planned_form').submit(function(e) { @@ -950,7 +949,7 @@ $.extend(fixmystreet.set_up, { }, reporting_hide_phone_email: function() { - $('#form_username').on('keyup change', function() { + $('#form_username_register').on('keyup change', function() { var username = $(this).val(); if (/^[^a-z]+$/i.test(username)) { $('#js-hide-if-username-phone').hide(); |