aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perllib/FixMyStreet/App/Controller/Report/New.pm20
-rw-r--r--perllib/FixMyStreet/DB/Result/User.pm18
-rw-r--r--templates/web/bromley/report/new/fill_in_details_form.html31
-rw-r--r--templates/web/default/js/validation_strings.html5
-rw-r--r--templates/web/default/report/new/extra_name.html12
-rw-r--r--web/js/fixmystreet.js9
-rw-r--r--web/js/map-OpenLayers.js3
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);
}
});