diff options
-rw-r--r-- | t/app/controller/report_new.t | 2 | ||||
-rw-r--r-- | templates/web/base/report/new/category.html | 20 | ||||
-rw-r--r-- | templates/web/eastsussex/report/new/category.html | 20 | ||||
-rw-r--r-- | templates/web/seesomething/report/new/category.html | 21 | ||||
-rw-r--r-- | web/cobrands/fixmystreet/fixmystreet.js | 13 | ||||
-rw-r--r-- | web/js/map-OpenLayers.js | 33 |
6 files changed, 71 insertions, 38 deletions
diff --git a/t/app/controller/report_new.t b/t/app/controller/report_new.t index 9b10de2bf..6ea4c9523 100644 --- a/t/app/controller/report_new.t +++ b/t/app/controller/report_new.t @@ -85,7 +85,7 @@ my $contact6 = $mech->create_contact_ok( ); my $contact7 = $mech->create_contact_ok( body_id => $body_ids{2227}, # Hampshire - category => 'Street lighting', + category => 'Street lighting', email => 'highways@example.com', ); my $contact8 = $mech->create_contact_ok( diff --git a/templates/web/base/report/new/category.html b/templates/web/base/report/new/category.html index 8cfbecdcd..ba6347d39 100644 --- a/templates/web/base/report/new/category.html +++ b/templates/web/base/report/new/category.html @@ -1,17 +1,15 @@ -[% FILTER collapse %] -[% IF category_options.size %] +[% IF category_options.size ~%] [% IF category; category = category | lower; - END; %] + END; ~%] <label for='form_category' id="form_category_label"> - [%- loc('Category') %] - </label> + [%~ loc('Category') ~%] + </label>[% =%] <select name='category' id='form_category'> - [% FOREACH cat_op IN category_options %] - [% cat_op_lc = cat_op | lower %] - <option value='[% cat_op | html %]'[% ' selected' IF report.category == cat_op || category == cat_op_lc || (category_options.size == 2 AND loop.last) -%] + [%~ FOREACH cat_op IN category_options ~%] + [% cat_op_lc = cat_op | lower =%] + <option value='[% cat_op | html %]'[% ' selected' IF report.category == cat_op || category == cat_op_lc || (category_options.size == 2 AND loop.last) ~%] >[% IF loop.first %][% cat_op %][% ELSE %][% cat_op | html %][% END %]</option> - [% END %] + [%~ END =%] </select> -[% END %] -[% END -%] +[%~ END ~%] diff --git a/templates/web/eastsussex/report/new/category.html b/templates/web/eastsussex/report/new/category.html index e4a7ed456..3c2ff4c36 100644 --- a/templates/web/eastsussex/report/new/category.html +++ b/templates/web/eastsussex/report/new/category.html @@ -1,18 +1,16 @@ -[% FILTER collapse %] -[% IF category_options.size %] +[% IF category_options.size ~%] [% IF category; category = category | lower; - END; %] + END; ~%] <label for='form_category' id="form_category_label"> Type - </label> + </label>[% =%] <select name='category' id='form_category'> - [% FOREACH cat_op IN category_options %] - [% cat_op_lc = cat_op | lower %] - [% IF loop.first; cat_op = '-- Pick a type --'; END %] - <option value='[% cat_op | html %]'[% ' selected' IF report.category == cat_op || category == cat_op_lc || (category_options.size == 2 AND loop.last) -%] + [%~ FOREACH cat_op IN category_options ~%] + [% cat_op_lc = cat_op | lower =%] + [% IF loop.first; cat_op = '-- Pick a type --'; END ~%] + <option value='[% cat_op | html %]'[% ' selected' IF report.category == cat_op || category == cat_op_lc || (category_options.size == 2 AND loop.last) ~%] >[% IF loop.first %][% cat_op %][% ELSE %][% cat_op | html %][% END %]</option> - [% END %] + [%~ END =%] </select> -[% END %] -[% END -%] +[%~ END ~%] diff --git a/templates/web/seesomething/report/new/category.html b/templates/web/seesomething/report/new/category.html index 691c38497..4b0589e17 100644 --- a/templates/web/seesomething/report/new/category.html +++ b/templates/web/seesomething/report/new/category.html @@ -1,14 +1,15 @@ -[% FILTER collapse %] -[% IF category_options.size %] +[% IF category_options.size ~%] [% IF category; category = category | lower; - END; %] - <label for='form_category' class="select">[% loc('Category') %]</label> + END; ~%] + <label for='form_category' class="select"> + [%~ loc('Category') ~%] + </label>[% =%] <select name='category' data-theme="c" id='form_category'> - [% FOREACH cat_op IN category_options %] - [% cat_op_lc = cat_op | lower %] - <option value='[% cat_op | html %]'[% ' selected' IF report.category == cat_op || category == cat_op_lc %]>[% cat_op | html %]</option> - [% END %] + [%~ FOREACH cat_op IN category_options ~%] + [% cat_op_lc = cat_op | lower =%] + <option value='[% cat_op | html %]'[% ' selected' IF report.category == cat_op || category == cat_op_lc ~%] + >[% cat_op | html %]</option> + [%~ END =%] </select> -[% END %] -[% END -%] +[%~ END ~%] diff --git a/web/cobrands/fixmystreet/fixmystreet.js b/web/cobrands/fixmystreet/fixmystreet.js index c74ae1ba2..acdfc869d 100644 --- a/web/cobrands/fixmystreet/fixmystreet.js +++ b/web/cobrands/fixmystreet/fixmystreet.js @@ -684,7 +684,12 @@ $.extend(fixmystreet.set_up, { ajax_history: function() { $('#map_sidebar').on('click', '.item-list--reports a', function(e) { + if (e.metaKey || e.ctrlKey) { + return; + } + e.preventDefault(); + var reportPageUrl = $(this).attr('href'); var reportId = parseInt(reportPageUrl.replace(/^.*\/([0-9]+)$/, '$1'), 10); @@ -714,6 +719,10 @@ $.extend(fixmystreet.set_up, { }); $('#map_sidebar').on('click', '.js-back-to-report-list', function(e) { + if (e.metaKey || e.ctrlKey) { + return; + } + e.preventDefault(); var reportListUrl = $(this).attr('href'); fixmystreet.display.reports_list(reportListUrl, function() { @@ -896,7 +905,6 @@ fixmystreet.display = { var found = html.match(/<title>([\s\S]*?)<\/title>/); var page_title = found[1]; - document.title = page_title; fixmystreet.page = 'report'; fixmystreet.mobile_reporting.remove_ui(); @@ -937,6 +945,7 @@ fixmystreet.display = { if (typeof callback === 'function') { callback(); } + document.title = page_title; } else { window.location.href = reportPageUrl; @@ -959,7 +968,6 @@ fixmystreet.display = { $('body').removeClass('with-notes'); - document.title = fixmystreet.original.title; fixmystreet.page = fixmystreet.original.page; if ($('html').hasClass('mobile') && fixmystreet.page == 'around') { $('#mob_sub_map_links').remove(); @@ -981,6 +989,7 @@ fixmystreet.display = { if (typeof callback === 'function') { callback(); } + document.title = fixmystreet.original.title; } else { window.location.href = reportListUrl; diff --git a/web/js/map-OpenLayers.js b/web/js/map-OpenLayers.js index e1f152820..992037a2f 100644 --- a/web/js/map-OpenLayers.js +++ b/web/js/map-OpenLayers.js @@ -202,9 +202,36 @@ var fixmystreet = fixmystreet || {}; } } - function marker_click(problem_id) { + function marker_click(problem_id, evt) { var $a = $('.item-list--reports a[href$="/' + problem_id + '"]'); - $a[0] && $a[0].click(); + if (!$a[0]) { + return; + } + + // All of this, just so that ctrl/cmd-click on a pin works?! + var event; + if (window.MouseEvent) { + event = new MouseEvent('click', evt); + $a[0].dispatchEvent(event); + } else if (document.createEvent) { + event = document.createEvent("MouseEvents"); + event.initMouseEvent( + 'click', true, true, window, 1, + 0, 0, 0, 0, + evt.ctrlKey, evt.altKey, evt.shiftKey, evt.metaKey, + 0, null); + $a[0].dispatchEvent(event); + } else if (document.createEventObject) { + event = document.createEventObject(); + event.metaKey = evt.metaKey; + event.ctrlKey = evt.ctrlKey; + if (e.metaKey === undefined) { + e.metaKey = e.ctrlKey; + } + $a[0].fireEvent("onclick", event); + } else { + $a[0].click(); + } } function categories_or_status_changed() { @@ -331,7 +358,7 @@ var fixmystreet = fixmystreet || {}; // Override clickFeature so that we can use it even though // hover is true. http://gis.stackexchange.com/a/155675 clickFeature: function (feature) { - marker_click(feature.attributes.id); + marker_click(feature.attributes.id, this.handlers.feature.evt); }, overFeature: function (feature) { if (fixmystreet.latest_map_hover_event != 'overFeature') { |