diff options
-rw-r--r-- | CHANGELOG.md | 4 | ||||
-rw-r--r-- | perllib/FixMyStreet/Script/ArchiveOldEnquiries.pm | 8 | ||||
-rw-r--r-- | templates/web/base/report/new/category.html | 10 | ||||
-rw-r--r-- | web/cobrands/buckinghamshire/assets.js | 22 | ||||
-rw-r--r-- | web/cobrands/fixmystreet/fixmystreet.js | 62 | ||||
-rw-r--r-- | web/cobrands/oxfordshire/assets.js | 31 | ||||
-rw-r--r-- | web/cobrands/oxfordshire/base.scss | 5 |
7 files changed, 89 insertions, 53 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index f3b2e82a5..0f6afb5a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,10 @@ - Show all Open311 extra fields in edit admin. - Proper bodies check for sending updates. - Check better if extra question has values. + - Stop filter category overriding chosen category. + - Allow things to reset if "Pick a category" picked. + - Stop category_change firing more than it should. + - Fix extra question display when only one category. - Development improvements: - Make front page cache time configurable. - Better working of /fakemapit/ under https. diff --git a/perllib/FixMyStreet/Script/ArchiveOldEnquiries.pm b/perllib/FixMyStreet/Script/ArchiveOldEnquiries.pm index dd44b9651..ce32b0d93 100644 --- a/perllib/FixMyStreet/Script/ArchiveOldEnquiries.pm +++ b/perllib/FixMyStreet/Script/ArchiveOldEnquiries.pm @@ -138,9 +138,17 @@ sub close_problems { return unless $opts->{commit}; my $problems = shift; + + return unless $problems->count; + my $extra = { auto_closed_by_script => 1 }; $extra->{is_superuser} = 1 if !$opts->{user_name}; + # need to do this again in case no reports were closed with an + # email in which case we won't have set the lang and domain + my $cobrand = FixMyStreet::Cobrand->get_class_for_moniker($opts->{cobrand})->new(); + $cobrand->set_lang_and_domain($problems->first->lang, 1); + while (my $problem = $problems->next) { my $timestamp = \'current_timestamp'; my $comment = $problem->add_to_comments( { diff --git a/templates/web/base/report/new/category.html b/templates/web/base/report/new/category.html index e537c8f1f..ec53263ca 100644 --- a/templates/web/base/report/new/category.html +++ b/templates/web/base/report/new/category.html @@ -1,7 +1,15 @@ +[% +# If only one option, pre-select that as if it were already selected. This +# carries through to the category_extras template because this template is +# included with PROCESS. +IF category_options.size == 2; + category = category_options.1.category; +END +~%] [% IF category_options.size OR category_groups.size ~%] [%~ BLOCK category_option ~%] [% cat_op_lc = cat_op.category | lower =%] - <option value='[% cat_op.category | html %]'[% ' selected' IF report.category == cat_op.category || category_lc == cat_op_lc || (category_options.size == 2 AND loop.last) ~%] + <option value='[% cat_op.category | html %]'[% ' selected' IF report.category == cat_op.category || category_lc == cat_op_lc ~%] >[% IF loop.first %][% cat_op.category_display %][% ELSE %][% cat_op.category_display | html %][% END %] [%~ IF cat_op.get_extra_metadata('help_text') %] ([% cat_op.get_extra_metadata('help_text') %])[% END ~%] </option> diff --git a/web/cobrands/buckinghamshire/assets.js b/web/cobrands/buckinghamshire/assets.js index 7fb0f8833..87b7561b8 100644 --- a/web/cobrands/buckinghamshire/assets.js +++ b/web/cobrands/buckinghamshire/assets.js @@ -465,5 +465,27 @@ fixmystreet.assets.add($.extend(true, {}, defaults, { } })); +function check_rights_of_way() { + var relevant_body = OpenLayers.Util.indexOf(fixmystreet.bodies, defaults.body) > -1; + var relevant_cat = $('#form_category').val() == 'Rights of Way'; + var relevant = relevant_body && relevant_cat; + var currently_shown = !!$('#row-message').length; + + if (relevant === currently_shown) { + // Either should be shown and already is, or shouldn't be shown and isn't + return; + } + + if (!relevant) { + $('#row-message').remove(); + $('.js-hide-if-invalid-category').show(); + return; + } + + var $msg = $('<p id="row-message" class="box-warning">If you wish to report an issue on a Public Right of Way, please use <a href="https://www.buckscc.gov.uk/services/environment/public-rights-of-way/report-a-rights-of-way-issue/">this service</a>.</p>'); + $('#form_category_row').after($msg); + $('.js-hide-if-invalid-category').hide(); +} +$(fixmystreet).on('report_new:category_change', check_rights_of_way); })(); diff --git a/web/cobrands/fixmystreet/fixmystreet.js b/web/cobrands/fixmystreet/fixmystreet.js index d6d03eac3..54ecb3662 100644 --- a/web/cobrands/fixmystreet/fixmystreet.js +++ b/web/cobrands/fixmystreet/fixmystreet.js @@ -388,23 +388,18 @@ $.extend(fixmystreet.set_up, { data = fixmystreet.reporting_data.by_category[category], $category_meta = $('#category_meta'); - if (!data) { - // The Pick a category option, or something gone wrong - return; - } - - fixmystreet.bodies = data.bodies || []; + fixmystreet.bodies = data && data.bodies ? data.bodies : []; if (fixmystreet.body_overrides) { fixmystreet.body_overrides.clear(); } - if (data.councils_text) { + if (data && data.councils_text) { fixmystreet.update_councils_text(data); } else { // Use the original returned texts fixmystreet.update_councils_text(fixmystreet.reporting_data); } - if ( data.category_extra ) { + if (data && data.category_extra) { if ( $category_meta.length ) { $category_meta.replaceWith( data.category_extra ); // Preserve any existing values @@ -428,7 +423,7 @@ $.extend(fixmystreet.set_up, { }); // apply new validation rules fixmystreet.set_up.reapply_validation(core_validation_rules); - $.each(data.bodies, function(index, body) { + $.each(fixmystreet.bodies, function(index, body) { if ( typeof body_validation_rules !== 'undefined' && body_validation_rules[body] ) { var rules = body_validation_rules[body]; fixmystreet.set_up.reapply_validation(rules); @@ -451,11 +446,15 @@ $.extend(fixmystreet.set_up, { }); }, - category_groups: function() { - var $category_select = $("select#form_category.js-grouped-select"); - if ($category_select.length === 0) { + category_groups: function(old_group) { + var $category_select = $("select#form_category"); + if (!$category_select.hasClass('js-grouped-select')) { + if ($category_select.val() !== '-- Pick a category --') { + $category_select.change(); + } return; } + var $group_select = $("<select></select>").addClass("form-control validCategory").attr('id', 'category_group'); var $subcategory_label = $("#form_subcategory_label"); var $empty_option = $category_select.find("option").first(); @@ -531,6 +530,10 @@ $.extend(fixmystreet.set_up, { } return a.label > b.label ? 1 : -1; }).appendTo($group_select); + + if (old_group !== '-- Pick a category --' && $category_select.val() == '-- Pick a category --') { + $group_select.val(old_group); + } $group_select.change(); }, @@ -1169,17 +1172,27 @@ fixmystreet.update_pin = function(lonlat, savePushState) { return; } $('#side-form, #site-logo').show(); - var category_group = $('#category_group').val(), - old_category = $("select#form_category").val(); + var old_category_group = $('#category_group').val(), + old_category = $("#form_category").val(), + filter_category = $("#filter_categories").val(); fixmystreet.reporting_data = data; fixmystreet.update_councils_text(data); $('#js-top-message').html(data.top_message || ''); + $('#form_category_row').html(data.category); - if ($("select#form_category option[value=\""+old_category+"\"]").length) { - $("select#form_category").val(old_category); + if ($("#form_category option[value=\"" + old_category + "\"]").length) { + $("#form_category").val(old_category); + } else if (filter_category !== undefined && $("#form_category option[value='" + filter_category + "']").length) { + // If the category filter appears on the map and the user has selected + // something from it, then pre-fill the category field in the report, + // if it's a value already present in the drop-down. + $("#form_category").val(filter_category); } + + fixmystreet.set_up.category_groups(old_category_group); + if ( data.extra_name_info && !$('#form_fms_extra_title').length ) { // there might be a first name field on some cobrands var lb = $('#form_first_name').prev(); @@ -1192,23 +1205,6 @@ fixmystreet.update_pin = function(lonlat, savePushState) { fixmystreet.body_overrides.clear(); } - // If the category filter appears on the map and the user has selected - // something from it, then pre-fill the category field in the report, - // if it's a value already present in the drop-down. - var category = $("#filter_categories").val(); - if (category !== undefined && $("#form_category option[value='"+category+"']").length) { - $("#form_category").val(category); - } - - var category_select = $("select#form_category"); - if (category_select.val() != '-- Pick a category --') { - category_select.change(); - } - fixmystreet.set_up.category_groups(); - if (category_group !== '-- Pick a category --' && category_select.val() == '-- Pick a category --') { - $('#category_group').val(category_group).change(); - } - if (data.contribute_as) { var $select = $('.js-contribute-as'); if (!$select.data('original')) { diff --git a/web/cobrands/oxfordshire/assets.js b/web/cobrands/oxfordshire/assets.js index 59a6d777d..819719dc1 100644 --- a/web/cobrands/oxfordshire/assets.js +++ b/web/cobrands/oxfordshire/assets.js @@ -1,23 +1,26 @@ (function(){ - function disable_form(disable) { - $('.js-hide-if-invalid-category').toggle(!disable); - } - function check_rights_of_way() { - if (OpenLayers.Util.indexOf(fixmystreet.bodies, 'Oxfordshire County Council') == -1) { - $('#occ_prow').remove(); - disable_form(false); +function check_rights_of_way() { + var relevant_body = OpenLayers.Util.indexOf(fixmystreet.bodies, 'Oxfordshire County Council') > -1; + var relevant_cat = $('#form_category').val() == 'Countryside Paths / Public Rights of Way (usually not tarmac)'; + var relevant = relevant_body && relevant_cat; + var currently_shown = !!$('#occ_prow').length; + + if (relevant === currently_shown) { + // Either should be shown and already is, or shouldn't be shown and isn't return; } - if ($('#form_category').val() == 'Countryside Paths / Public Rights of Way (usually not tarmac)') { - $('#form_category_row').after('<p id="occ_prow" class="category-message">Please report problems with rights of way using <a href="https://publicrightsofway.oxfordshire.gov.uk/web/standardmap.aspx">this page</a>.</p>'); - disable_form(true); - } else { + if (!relevant) { $('#occ_prow').remove(); - disable_form(false); + $('.js-hide-if-invalid-category').show(); + return; } - } - $(fixmystreet).on('report_new:category_change', check_rights_of_way); + var $msg = $('<p id="occ_prow" class="box-warning">Please report problems with rights of way using <a href="https://publicrightsofway.oxfordshire.gov.uk/web/standardmap.aspx">this page</a>.</p>'); + $('#form_category_row').after($msg); + $('.js-hide-if-invalid-category').hide(); +} +$(fixmystreet).on('report_new:category_change', check_rights_of_way); + })(); diff --git a/web/cobrands/oxfordshire/base.scss b/web/cobrands/oxfordshire/base.scss index e55769ac7..a14e018b2 100644 --- a/web/cobrands/oxfordshire/base.scss +++ b/web/cobrands/oxfordshire/base.scss @@ -287,11 +287,6 @@ textarea { } } -.category-message { - padding: 1em; - background-color: $color-oxfordshire-pale-grey-green; -} - .item-list--reports__item { small { font-style: inherit; |