aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perllib/FixMyStreet/App/Controller/Report/New.pm31
-rw-r--r--templates/web/default/report/new/category_extras.html26
-rw-r--r--templates/web/default/report/new/fill_in_details_form.html27
-rw-r--r--web/js/fixmystreet.js39
-rw-r--r--web/js/map-OpenLayers.js1
5 files changed, 69 insertions, 55 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Report/New.pm b/perllib/FixMyStreet/App/Controller/Report/New.pm
index 239fa7a1a..551e9b719 100644
--- a/perllib/FixMyStreet/App/Controller/Report/New.pm
+++ b/perllib/FixMyStreet/App/Controller/Report/New.pm
@@ -119,7 +119,36 @@ sub report_form_ajax : Path('ajax') : Args(0) {
{
councils_text => $councils_text,
category => $category,
- category_extras => $c->stash->{category_extras_json},
+ }
+ );
+
+ $c->res->content_type('application/json; charset=utf-8');
+ $c->res->body($body);
+}
+
+sub category_extras_ajax : Path('category_extras') : Args(0) {
+ my ( $self, $c ) = @_;
+
+ my $contacts
+ = $c
+ ->model('DB::Contact')
+ ->not_deleted
+ ->search( { area_id => $c->req->param('area_id'), category => $c->req->param('category') } );
+
+ my $category_extra = '';
+ if ( my $contact = $contacts->first ) {
+ if ( $contact->extra ) {
+ $c->stash->{report_meta} = {};
+ $c->stash->{report} = { category => $c->req->param('category') };
+ $c->stash->{category_extras} = { $c->req->param('category' ) => $contact->extra };
+
+ $category_extra= $c->view('Web')->render( $c, 'report/new/category_extras.html');
+ }
+ }
+
+ my $body = JSON->new->utf8(1)->encode(
+ {
+ category_extra => $category_extra,
}
);
diff --git a/templates/web/default/report/new/category_extras.html b/templates/web/default/report/new/category_extras.html
new file mode 100644
index 000000000..479b9f46c
--- /dev/null
+++ b/templates/web/default/report/new/category_extras.html
@@ -0,0 +1,26 @@
+<div id="category_meta">
+ [%- IF report_meta %]
+ [%- category = report.category %]
+ <h4>Additional Information</h4>
+ [%- FOR meta IN category_extras.$category %]
+ [%- meta_name = meta.code -%]
+
+[% IF field_errors.$meta_name %]
+ <div class='form-error'>[% field_errors.$meta_name %]</div>
+[% END -%]
+
+ <div class="form-field">
+ <label for="form_[% meta_name %]">[% meta.description _ ':' %]</label>
+ [% IF meta.exists('values') %]
+ <select name="[% meta_name %]" id="form_[% meta_name %]">
+ [% FOR option IN meta.values.value.keys %]
+ <option value="[% meta.values.value.$option.key %]">[% option %]</option>
+ [% END %]
+ </select>
+ [% ELSE %]
+ <input type="text" value="[% report_meta.$meta_name | html %]" name="[% meta_name %]" id="form_[% meta_name %]">
+ [% END %]
+ </div>
+ [%- END %]
+ [%- END %]
+</div>
diff --git a/templates/web/default/report/new/fill_in_details_form.html b/templates/web/default/report/new/fill_in_details_form.html
index 617bb0fa6..e2d8cb3ec 100644
--- a/templates/web/default/report/new/fill_in_details_form.html
+++ b/templates/web/default/report/new/fill_in_details_form.html
@@ -80,32 +80,7 @@
[% END %]
[%- IF category_extras %]
-<div id="category_meta">
- [%- IF report_meta %]
- [%- category = report.category %]
- <h4>Additional Information</h4>
- [%- FOR meta IN category_extras.$category %]
- [%- meta_name = meta.code -%]
-
-[% IF field_errors.$meta_name %]
- <div class='form-error'>[% field_errors.$meta_name %]</div>
-[% END -%]
-
- <div class="form-field">
- <label for="form_[% meta_name %]">[% meta.description _ ':' %]</label>
- [% IF meta.exists('values') %]
- <select name="[% meta_name %]" id="form_[% meta_name %]">
- [% FOR option IN meta.values.value.keys %]
- <option value="[% meta.values.value.$option.key %]">[% option %]</option>
- [% END %]
- </select>
- [% ELSE %]
- <input type="text" value="[% report_meta.$meta_name | html %]" name="[% meta_name %]" id="form_[% meta_name %]">
- [% END %]
- </div>
- [%- END %]
- [%- END %]
-</div>
+[% PROCESS "report/new/category_extras.html" %]
[%- END %]
[% IF c.cobrand.allow_photo_upload %]
diff --git a/web/js/fixmystreet.js b/web/js/fixmystreet.js
index a0ea02437..dc180151c 100644
--- a/web/js/fixmystreet.js
+++ b/web/js/fixmystreet.js
@@ -4,35 +4,20 @@
*/
function form_category_onchange() {
- if ( category_extras ) {
- if ( $('#category_meta').size() ) {
- $('#category_meta').empty();
- } else {
- $('#form_category_row').after(
- '<div id="category_meta"></div>'
- );
- }
- if ( category_extras[this.options[ this.selectedIndex ].text] ) {
- var fields = category_extras[this.options[ this.selectedIndex ].text];
- $('<h4>Additional information</h4>').appendTo('#category_meta');
- for ( var i in fields) {
- var meta = fields[i];
- var field = '<div class="form-field">';
- field += '<label for="form_' + meta.code + '">' + meta.description + ':</label>';
- if ( meta.values ) {
- field += '<select name="' + meta.code + '" id="form_' + meta.code + '">';
- for ( var j in meta.values.value ) {
- field += '<option value="' + meta.values.value[j].key + '">' + j + '</option>';
- }
- field += '</select>';
- } else {
- field += '<input type="text" value="" name="' + meta.code + '" id="form_' + meta.code + '">';
- }
- field += '</div>';
- $( field ).appendTo('#category_meta');
+ $.getJSON('/report/new/category_extras', {
+ area_id: 2649,
+ category: this.options[ this.selectedIndex ].text,
+ }, function(data) {
+ if ( data.category_extra ) {
+ if ( $('#category_meta').size() ) {
+ $('#category_meta').html( data.category_extra);
+ } else {
+ $('#form_category_row').after( data.category_extra );
}
+ } else {
+ $('#category_meta').empty();
}
- }
+ });
}
$(function(){
diff --git a/web/js/map-OpenLayers.js b/web/js/map-OpenLayers.js
index d754248f4..dda50b1b9 100644
--- a/web/js/map-OpenLayers.js
+++ b/web/js/map-OpenLayers.js
@@ -315,7 +315,6 @@ OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, {
}, function(data) {
$('#councils_text').html(data.councils_text);
$('#form_category_row').html(data.category);
- eval( 'category_extras = ' + data.category_extras + ';');
/* Need to reset this here as it gets removed when we replace
the HTML for the dropdown */
$('#form_category').change( form_category_onchange );