diff options
-rw-r--r-- | web/cobrands/buckinghamshire/assets.js | 27 | ||||
-rw-r--r-- | web/cobrands/fixmystreet/assets.js | 72 | ||||
-rw-r--r-- | web/cobrands/northamptonshire/assets.js | 58 | ||||
-rw-r--r-- | web/cobrands/oxfordshire/assets.js | 31 |
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>.' +}); |