aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md4
-rw-r--r--perllib/FixMyStreet/Script/ArchiveOldEnquiries.pm8
-rw-r--r--templates/web/base/report/new/category.html10
-rw-r--r--web/cobrands/buckinghamshire/assets.js22
-rw-r--r--web/cobrands/fixmystreet/fixmystreet.js62
-rw-r--r--web/cobrands/oxfordshire/assets.js31
-rw-r--r--web/cobrands/oxfordshire/base.scss5
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;