aboutsummaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
Diffstat (limited to 'web')
-rw-r--r--web/cobrands/buckinghamshire/assets.js27
-rw-r--r--web/cobrands/fixmystreet/assets.js72
-rw-r--r--web/cobrands/northamptonshire/assets.js58
-rw-r--r--web/cobrands/oxfordshire/assets.js31
4 files changed, 97 insertions, 91 deletions
diff --git a/web/cobrands/buckinghamshire/assets.js b/web/cobrands/buckinghamshire/assets.js
index 8135fe184..c872033d3 100644
--- a/web/cobrands/buckinghamshire/assets.js
+++ b/web/cobrands/buckinghamshire/assets.js
@@ -465,27 +465,10 @@ 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>');
- $msg.insertBefore('#js-post-category-messages');
- $('.js-hide-if-invalid-category').hide();
-}
-$(fixmystreet).on('report_new:category_change', check_rights_of_way);
+fixmystreet.message_controller.register_category({
+ body: defaults.body,
+ category: 'Rights of Way',
+ message: '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>.'
+});
})();
diff --git a/web/cobrands/fixmystreet/assets.js b/web/cobrands/fixmystreet/assets.js
index 8b121066b..d4ab43e46 100644
--- a/web/cobrands/fixmystreet/assets.js
+++ b/web/cobrands/fixmystreet/assets.js
@@ -921,3 +921,75 @@ $(fixmystreet).on('body_overrides:change', function() {
fixmystreet.update_public_councils_text(
$('#js-councils_text').html(), bodies);
});
+
+/* Handling of the form-top messaging */
+
+fixmystreet.message_controller = (function() {
+ var stopperId = 'js-category-stopper',
+ stoppers = [];
+
+ /* utility functions */
+ function enable_report_form() {
+ $(".js-hide-if-invalid-category").show();
+ }
+
+ function disable_report_form() {
+ $(".js-hide-if-invalid-category").hide();
+ }
+
+ $(fixmystreet).on('report_new:category_change', function() {
+ if (fixmystreet.body_overrides.get_only_send() == 'Highways England') {
+ // If we're sending to Highways England, this message doesn't matter
+ return;
+ }
+
+ var $id = $('#' + stopperId);
+ var body = $('#form_category').data('body');
+ var matching = $.grep(stoppers, function(stopper, i) {
+ if (stopper.staff_ignore && body) {
+ return false;
+ }
+
+ var relevant_body = OpenLayers.Util.indexOf(fixmystreet.bodies, stopper.body) > -1;
+ var relevant_cat;
+ if (typeof stopper.category === 'function') {
+ relevant_cat = stopper.category();
+ } else {
+ relevant_cat = $('#form_category').val() == stopper.category;
+ }
+ var relevant = relevant_body && relevant_cat;
+ return relevant;
+ });
+
+ if (!matching.length) {
+ $id.remove();
+ if ( !$('#js-roads-responsibility').is(':visible') ) {
+ enable_report_form();
+ }
+ return;
+ }
+
+ var stopper = matching[0]; // Assume only one match possible at present
+ var $msg;
+ if (typeof stopper.message === 'function') {
+ $msg = stopper.message();
+ $msg.attr('id', stopperId);
+ } else {
+ $msg = $('<p id="' + stopperId + '" class="box-warning">' + stopper.message + '</p>');
+ }
+
+ if ($id.length) {
+ $id.replaceWith($msg);
+ } else {
+ $msg.insertBefore('#js-post-category-messages');
+ }
+ disable_report_form();
+ });
+
+ return {
+ register_category: function(params) {
+ stoppers.push(params);
+ }
+ };
+
+})();
diff --git a/web/cobrands/northamptonshire/assets.js b/web/cobrands/northamptonshire/assets.js
index a74ad622f..1de879d65 100644
--- a/web/cobrands/northamptonshire/assets.js
+++ b/web/cobrands/northamptonshire/assets.js
@@ -618,49 +618,21 @@ function ncc_is_emergency_category() {
return {relevant: relevant, currently_shown: currently_shown, body: body};
}
-// Hide form when emergency category used
-function check_emergency() {
- var state = ncc_is_emergency_category();
-
- if (state.relevant === state.currently_shown || state.body || fixmystreet.body_overrides.get_only_send() == 'Highways England') {
- // Either should be shown and already is, or shouldn't be shown and isn't
- return;
- }
-
- if (!state.relevant) {
- $('#northants-emergency-message').remove();
- if ( !$('#js-roads-responsibility').is(':visible') ) {
- $('.js-hide-if-invalid-category').show();
- }
- return;
- }
-
- var $msg = $('<div class="box-warning" id="northants-emergency-message"></div>');
- $msg.html($('label[for=form_emergency]').html());
- $msg.insertBefore('#js-post-category-messages');
- $('.js-hide-if-invalid-category').hide();
-}
-$(fixmystreet).on('report_new:category_change', check_emergency);
-
-function ncc_check_streetlights() {
- var relevant_body = OpenLayers.Util.indexOf(fixmystreet.bodies, northants_defaults.body) > -1;
- var relevant_cat = $('#form_category').val() == 'Street lighting';
- var relevant = relevant_body && relevant_cat;
- var currently_shown = !!$('#ncc_streetlights').length;
-
- if (relevant === currently_shown || fixmystreet.body_overrides.get_only_send() == 'Highways England') {
- return;
- }
-
- if (!relevant) {
- $('#ncc_streetlights').remove();
- return;
- }
+fixmystreet.message_controller.register_category({
+ body: northants_defaults.body,
+ category: function() {
+ return !!$('label[for=form_emergency]').length;
+ },
+ message: function() {
+ return $('<div class="box-warning">' + $('label[for=form_emergency]').html() + '</div>');
+ },
+ staff_ignore: true
+});
- var $msg = $('<p id="ncc_streetlights" class="box-warning">Street lighting in Northamptonshire is maintained by Balfour Beatty on behalf of the County Council under a Street Lighting Private Finance Initiative (PFI) contract. Please view our <b><a href="https://www3.northamptonshire.gov.uk/councilservices/northamptonshire-highways/roads-and-streets/Pages/street-lighting.aspx">Street Lighting</a></b> page to report any issues.</p>');
- $msg.insertBefore('#js-post-category-messages');
- disable_report_form();
-}
-$(fixmystreet).on('report_new:category_change', ncc_check_streetlights);
+fixmystreet.message_controller.register_category({
+ body: northants_defaults.body,
+ category: 'Street lighting',
+ message: 'Street lighting in Northamptonshire is maintained by Balfour Beatty on behalf of the County Council under a Street Lighting Private Finance Initiative (PFI) contract. Please view our <b><a href="https://www3.northamptonshire.gov.uk/councilservices/northamptonshire-highways/roads-and-streets/Pages/street-lighting.aspx">Street Lighting</a></b> page to report any issues.'
+});
})();
diff --git a/web/cobrands/oxfordshire/assets.js b/web/cobrands/oxfordshire/assets.js
index 46b555b02..df60b89c7 100644
--- a/web/cobrands/oxfordshire/assets.js
+++ b/web/cobrands/oxfordshire/assets.js
@@ -1,26 +1,5 @@
-(function(){
-
-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 (!relevant) {
- $('#occ_prow').remove();
- $('.js-hide-if-invalid-category').show();
- return;
- }
-
- 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>');
- $msg.insertBefore('#js-post-category-messages');
- $('.js-hide-if-invalid-category').hide();
-}
-$(fixmystreet).on('report_new:category_change', check_rights_of_way);
-
-})();
+fixmystreet.message_controller.register_category({
+ body: 'Oxfordshire County Council',
+ category: 'Countryside Paths / Public Rights of Way (usually not tarmac)',
+ message: 'Please report problems with rights of way using <a href="https://publicrightsofway.oxfordshire.gov.uk/web/standardmap.aspx">this page</a>.'
+});