diff options
author | Struan Donald <struan@exo.org.uk> | 2012-03-30 12:44:59 +0100 |
---|---|---|
committer | Struan Donald <struan@exo.org.uk> | 2012-03-30 12:44:59 +0100 |
commit | 32a74ddaf0f203ef9c9a28dc08c650c643e09de1 (patch) | |
tree | 570694dd21f36b562d38e8d5e1ffd8ddc848c70b | |
parent | ff3926d0599b90f05e12b949205d8cc6e35df3be (diff) |
add first name and last name boxes for bromley
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Report/New.pm | 20 | ||||
-rw-r--r-- | perllib/FixMyStreet/DB/Result/User.pm | 18 | ||||
-rw-r--r-- | templates/web/bromley/report/new/fill_in_details_form.html | 31 | ||||
-rw-r--r-- | templates/web/default/js/validation_strings.html | 5 | ||||
-rw-r--r-- | templates/web/default/report/new/extra_name.html | 12 | ||||
-rw-r--r-- | web/js/fixmystreet.js | 9 | ||||
-rw-r--r-- | web/js/map-OpenLayers.js | 3 |
7 files changed, 80 insertions, 18 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Report/New.pm b/perllib/FixMyStreet/App/Controller/Report/New.pm index 9baee5eb4..ac462e293 100644 --- a/perllib/FixMyStreet/App/Controller/Report/New.pm +++ b/perllib/FixMyStreet/App/Controller/Report/New.pm @@ -398,6 +398,13 @@ sub initialize_report : Private { } + if ( $c->req->param('first_name') && $c->req->param('last_name') ) { + $c->stash->{first_name} = $c->req->param('first_name'); + $c->stash->{last_name} = $c->req->param('last_name'); + + $c->req->param( 'name', sprintf( '%s %s', $c->req->param('first_name'), $c->req->param('last_name') ) ); + } + # Capture whether the map was used $report->used_map( $c->req->param('skipped') ? 0 : 1 ); @@ -791,13 +798,22 @@ sub process_report : Private { } if ( $contacts[0]->area_id == 2482 ) { - for my $field ( qw/ fms_extra_title / ) { + for my $field ( qw/ fms_extra_title first_name last_name / ) { + my $value = $c->request->param( $field ); + if ( !$value ) { + $c->stash->{field_errors}->{ $field } = _('This information is required'); + } push @extra, { name => $field, description => uc( $field), - value => $c->request->param( $field ) || '', + value => $value || '', }; } + + if ( $c->request->param('fms_extra_title') ) { + $c->stash->{fms_extra_title} = $c->request->param('fms_extra_title'); + $c->stash->{extra_name_info} = 1; + } } if ( @extra ) { diff --git a/perllib/FixMyStreet/DB/Result/User.pm b/perllib/FixMyStreet/DB/Result/User.pm index 56d726a8d..7b0ffca73 100644 --- a/perllib/FixMyStreet/DB/Result/User.pm +++ b/perllib/FixMyStreet/DB/Result/User.pm @@ -172,4 +172,22 @@ sub belongs_to_council { return 0; } +=head2 split_name + + $name = $user->split_name; + printf( 'Welcome %s %s', $name->{first}, $name->{last} ); + +Returns a hashref with first and last keys with first name(s) and last name. +NB: the spliting algorithm is extremely basic. + +=cut + +sub split_name { + my $self = shift; + + my ($first, $last) = $self->name =~ /^(\S*)(?: (.*))?$/; + + return { first => $first, last => $last }; +} + 1; diff --git a/templates/web/bromley/report/new/fill_in_details_form.html b/templates/web/bromley/report/new/fill_in_details_form.html index ac08de5a9..5729f1637 100644 --- a/templates/web/bromley/report/new/fill_in_details_form.html +++ b/templates/web/bromley/report/new/fill_in_details_form.html @@ -111,11 +111,21 @@ [% IF c.user_exists %] <div class="form-box"> - <label for="form_may_show_nameme">[% loc('Name') %]</label> - [% IF field_errors.name %] - <p class='form-error'>[% field_errors.name %]</p> + [% INCLUDE 'report/new/extra_name.html' %] + + [% names = c.user.split_name %] + <label for="form_first_name">[% loc('First Name') %]</label> + [% IF field_errors.first_name %] + <p class='form-error'>[% field_errors.first_name %]</p> + [% END %] + <input type="text" value="[% ( first_name || names.first ) | html %]" name="first_name" id="form_first_name" placeholder="[% loc('Your first name') %]"> + + <label for="form_last_name">[% loc('Last Name') %]</label> + [% IF field_errors.last_name %] + <p class='form-error'>[% field_errors.last_name %]</p> [% END %] - <input type="text" class="validName" value="[% report.name | html %]" name="name" id="form_name" placeholder="[% loc('Your name') %]"> + <input type="text" value="[% ( last_name || names.last ) | html %]" name="last_name" id="form_last_name" placeholder="[% loc('Your last name') %]"> + [%# if there is nothing in the name field then set check box as default on form %] <div class="checkbox-group"> @@ -151,12 +161,17 @@ [% INCLUDE 'report/new/extra_name.html' %] - <label for="form_may_show_nameme">[% loc('Name') %]</label> - [% IF field_errors.name %] - <p class='form-error'>[% field_errors.name %]</p> + <label for="form_first_name">[% loc('First Name') %]</label> + [% IF field_errors.first_name %] + <p class='form-error'>[% field_errors.first_name %]</p> [% END %] + <input type="text" class="form-focus-trigger" value="[% first_name | html %]" name="first_name" id="form_first_name" placeholder="[% loc('Your first name') %]"> - <input type="text" class="form-focus-trigger validName" value="[% report.name | html %]" name="name" id="form_name" placeholder="[% loc('Your name') %]"> + <label for="form_last_name">[% loc('Last Name') %]</label> + [% IF field_errors.last_name %] + <p class='form-error'>[% field_errors.last_name %]</p> + [% END %] + <input type="text" class="form-focus-trigger" value="[% last_name | html %]" name="last_name" id="form_last_name" placeholder="[% loc('Your last name') %]"> [%# if there is nothing in the name field then set check box as default on form %] <div class="checkbox-group"> diff --git a/templates/web/default/js/validation_strings.html b/templates/web/default/js/validation_strings.html index 70a0ed41c..71637877a 100644 --- a/templates/web/default/js/validation_strings.html +++ b/templates/web/default/js/validation_strings.html @@ -14,5 +14,8 @@ email: { required: '[% loc('Please enter your email') %]', email: '[% loc('Please enter a valid email') %]' - } + }, + fms_extra_title: '[% loc('Please enter your title') %]', + first_name: '[% loc('Please enter your first name') %]', + last_name: '[% loc('Please enter your second name') %]' }; diff --git a/templates/web/default/report/new/extra_name.html b/templates/web/default/report/new/extra_name.html index 7b057a831..ea523410b 100644 --- a/templates/web/default/report/new/extra_name.html +++ b/templates/web/default/report/new/extra_name.html @@ -4,12 +4,12 @@ <p class='form-error'>[% field_errors.fms_extra_title %]</p> [% END %] <select class="form-focus-trigger" id="form_fms_extra_title" - name="fms_extra_title" required> + name="fms_extra_title"> <option></option> - <option value="Mr">Mr</option> - <option value="Miss">Miss</option> - <option value="Mrs">Mrs</option> - <option value="Ms">Ms</option> - <option value="Dr">Dr</option> + <option value="Mr"[% ' selected' IF fms_extra_title == 'Mr' %]>Mr</option> + <option value="Miss"[% ' selected' IF fms_extra_title == 'Miss' %]>Miss</option> + <option value="Mrs"[% ' selected' IF fms_extra_title == 'Mrs' %]>Mrs</option> + <option value="Ms"[% ' selected' IF fms_extra_title == 'Ms' %]>Ms</option> + <option value="Dr"[% ' selected' IF fms_extra_title == 'Dr' %]>Dr</option> </select> [% END %] diff --git a/web/js/fixmystreet.js b/web/js/fixmystreet.js index 75546baff..36d47b5b2 100644 --- a/web/js/fixmystreet.js +++ b/web/js/fixmystreet.js @@ -101,16 +101,25 @@ $(function(){ $('#submit_sign_in').click( function(e) { $('#form_category').addClass('required validCategory').removeClass('valid'); $('#form_name').removeClass(); + $('#form_first_name').removeClass(); + $('#form_last_name').removeClass(); + $('#form_fms_extra_title').removeClass(); } ); $('#submit_register').click( function(e) { $('#form_category').addClass('required validCategory').removeClass('valid'); $('#form_name').addClass('required validName'); + $('#form_first_name').addClass('required'); + $('#form_last_name').addClass('required'); + $('#form_fms_extra_title').addClass('required'); } ); $('#problem_submit > input[type="submit"]').click( function(e) { $('#form_category').addClass('required validCategory').removeClass('valid'); $('#form_name').addClass('required validName'); + $('#form_first_name').addClass('required'); + $('#form_last_name').addClass('required'); + $('#form_fms_extra_title').addClass('required'); } ); $('#update_post').click( function(e) { diff --git a/web/js/map-OpenLayers.js b/web/js/map-OpenLayers.js index e4859b590..8ea54cac3 100644 --- a/web/js/map-OpenLayers.js +++ b/web/js/map-OpenLayers.js @@ -443,7 +443,8 @@ OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, { $('#councils_text').html(data.councils_text); $('#form_category_row').html(data.category); if ( data.extra_name_info ) { - var lb = $('#form_name').prev(); + // there might be a first name field on some cobrands + var lb = $('#form_first_name').prev() || $('#form_name').prev(); lb.before(data.extra_name_info); } }); |