aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cpanfile2
-rw-r--r--cpanfile.snapshot6
-rw-r--r--perllib/FixMyStreet/DB/Result/Problem.pm6
-rw-r--r--web/cobrands/fixmystreet/fixmystreet.js174
4 files changed, 102 insertions, 86 deletions
diff --git a/cpanfile b/cpanfile
index 7916a71eb..c96e05f36 100644
--- a/cpanfile
+++ b/cpanfile
@@ -73,7 +73,7 @@ requires 'Moose';
requires 'MooX::Types::MooseLike';
requires 'namespace::autoclean';
requires 'Net::DNS::Resolver';
-requires 'Net::Domain::TLD', '1.74';
+requires 'Net::Domain::TLD', '1.75';
requires 'Net::Facebook::Oauth2';
requires 'Net::OAuth';
requires 'Net::SMTP::SSL', '1.03';
diff --git a/cpanfile.snapshot b/cpanfile.snapshot
index 1b11c37a2..2c565f8cd 100644
--- a/cpanfile.snapshot
+++ b/cpanfile.snapshot
@@ -4302,10 +4302,10 @@ DISTRIBUTIONS
IO::Socket 0
MIME::Base64 2.11
Test::More 0.18
- Net-Domain-TLD-1.74
- pathname: A/AL/ALEXP/Net-Domain-TLD-1.74.tar.gz
+ Net-Domain-TLD-1.75
+ pathname: A/AL/ALEXP/Net-Domain-TLD-1.75.tar.gz
provides:
- Net::Domain::TLD 1.74
+ Net::Domain::TLD 1.75
requirements:
Carp 0
ExtUtils::MakeMaker 0
diff --git a/perllib/FixMyStreet/DB/Result/Problem.pm b/perllib/FixMyStreet/DB/Result/Problem.pm
index 69dc17e44..f421394fa 100644
--- a/perllib/FixMyStreet/DB/Result/Problem.pm
+++ b/perllib/FixMyStreet/DB/Result/Problem.pm
@@ -1027,10 +1027,8 @@ has shortlisted_user => (
lazy => 1,
default => sub {
my $self = shift;
- my $user = $self->result_source->schema->resultset('User')->search(
- { 'user_planned_reports.report_id' => $self->id },
- { join => 'user_planned_reports' })->first;
- return $user;
+ my $user = $self->user_planned_reports->active->first;
+ return $user->user if $user;
},
);
diff --git a/web/cobrands/fixmystreet/fixmystreet.js b/web/cobrands/fixmystreet/fixmystreet.js
index b8dfa94f9..fed983a2c 100644
--- a/web/cobrands/fixmystreet/fixmystreet.js
+++ b/web/cobrands/fixmystreet/fixmystreet.js
@@ -179,6 +179,40 @@ fixmystreet.resize_to = {
}
};
+fixmystreet.geolocate = {
+ setup: function(success_callback) {
+ $('#geolocate_link').click(function(e) {
+ var $link = $(this);
+ e.preventDefault();
+ // Spinny thing!
+ if ($('.mobile').length) {
+ $link.append(' <img src="/cobrands/fixmystreet/images/spinner-black.gif" alt="" align="bottom">');
+ } else {
+ var spincolor = $('<span>').css("color","white").css("color") === $('#front-main').css("background-color") ? 'white' : 'yellow';
+ $link.append(' <img src="/cobrands/fixmystreet/images/spinner-' + spincolor + '.gif" alt="" align="bottom">');
+ }
+ geo_position_js.getCurrentPosition(function(pos) {
+ $link.find('img').remove();
+ success_callback(pos);
+ }, function(err) {
+ $link.find('img').remove();
+ if (err.code === 1) { // User said no
+ $link.html(translation_strings.geolocation_declined);
+ } else if (err.code === 2) { // No position
+ $link.html(translation_strings.geolocation_no_position);
+ } else if (err.code === 3) { // Too long
+ $link.html(translation_strings.geolocation_no_result);
+ } else { // Unknown
+ $link.html(translation_strings.geolocation_unknown);
+ }
+ }, {
+ enableHighAccuracy: true,
+ timeout: 10000
+ });
+ });
+ }
+};
+
fixmystreet.set_up = fixmystreet.set_up || {};
$.extend(fixmystreet.set_up, {
basics: function() {
@@ -309,37 +343,6 @@ $.extend(fixmystreet.set_up, {
if (!geo_position_js.init()) {
return;
}
- function add_click_handler(success_callback) {
- $('#geolocate_link').click(function(e) {
- var $link = $(this);
- e.preventDefault();
- // Spinny thing!
- if($('.mobile').length){
- $link.append(' <img src="/cobrands/fixmystreet/images/spinner-black.gif" alt="" align="bottom">');
- }else{
- var spincolor = $('<span>').css("color","white").css("color") === $('#front-main').css("background-color")? 'white' : 'yellow';
- $link.append(' <img src="/cobrands/fixmystreet/images/spinner-' + spincolor + '.gif" alt="" align="bottom">');
- }
- geo_position_js.getCurrentPosition(function(pos) {
- $link.find('img').remove();
- success_callback(pos);
- }, function(err) {
- $link.find('img').remove();
- if (err.code == 1) { // User said no
- $link.html(translation_strings.geolocation_declined);
- } else if (err.code == 2) { // No position
- $link.html(translation_strings.geolocation_no_position);
- } else if (err.code == 3) { // Too long
- $link.html(translation_strings.geolocation_no_result);
- } else { // Unknown
- $link.html(translation_strings.geolocation_unknown);
- }
- }, {
- enableHighAccuracy: true,
- timeout: 10000
- });
- });
- }
if ($('#postcodeForm').length) {
var link = '<a href="LINK" id="geolocate_link">&hellip; ' + translation_strings.geolocate + '</a>';
$('form[action="/alert/list"]').append(link.replace('LINK','/alert/list'));
@@ -348,26 +351,13 @@ $.extend(fixmystreet.set_up, {
} else{
$('#postcodeForm').append(link.replace('LINK','/around'));
}
- add_click_handler(function(pos) {
+ fixmystreet.geolocate.setup(function(pos) {
var latitude = pos.coords.latitude;
var longitude = pos.coords.longitude;
var page = $('#geolocate_link').attr('href');
location.href = page + '?latitude=' + latitude + ';longitude=' + longitude;
});
}
- if ($('form#report_inspect_form').length) {
- add_click_handler(function(pos) {
- var latlon = new OpenLayers.LonLat(pos.coords.longitude, pos.coords.latitude);
- var bng = latlon.clone().transform(
- new OpenLayers.Projection("EPSG:4326"),
- new OpenLayers.Projection("EPSG:27700") // TODO: Handle other projections
- );
- $("#problem_northing").text(bng.lat.toFixed(1));
- $("#problem_easting").text(bng.lon.toFixed(1));
- $("form#report_inspect_form input[name=latitude]").val(latlon.lat);
- $("form#report_inspect_form input[name=longitude]").val(latlon.lon);
- });
- }
},
category_change: function() {
@@ -398,15 +388,6 @@ $.extend(fixmystreet.set_up, {
}
});
});
-
- // On the manage/inspect report form, we already have all the extra inputs
- // in the DOM, we just need to hide/show them as appropriate.
- $('form#report_inspect_form [name=category]').change(function() {
- var category = $(this).val();
- var selector = "[data-category='"+category+"']";
- $("form#report_inspect_form [data-category]:not("+selector+")").addClass("hidden");
- $("form#report_inspect_form "+selector).removeClass("hidden");
- });
},
@@ -439,25 +420,6 @@ $.extend(fixmystreet.set_up, {
$('.js-contribute-as').change();
},
- inspect_with_public_update: function() {
- $('.js-toggle-public-update').each(function() {
- var $checkbox = $(this);
- var toggle_public_update = function() {
- if ($checkbox.prop('checked')) {
- $('#public_update').parents('p').show();
- } else {
- $('#public_update').parents('p').hide();
- }
- };
-
- $checkbox.on('change', function() {
- toggle_public_update();
- });
-
- toggle_public_update();
- });
- },
-
on_resize: function() {
var last_type;
$(window).on('resize', function() {
@@ -596,6 +558,50 @@ $.extend(fixmystreet.set_up, {
make_multi('filter_categories');
},
+ report_page_inspect: function() {
+ if (!$('form#report_inspect_form').length) {
+ return;
+ }
+
+ // On the manage/inspect report form, we already have all the extra inputs
+ // in the DOM, we just need to hide/show them as appropriate.
+ $('form#report_inspect_form [name=category]').change(function() {
+ var category = $(this).val(),
+ selector = "[data-category='" + category + "']";
+ $("form#report_inspect_form [data-category]:not(" + selector + ")").addClass("hidden");
+ $("form#report_inspect_form " + selector).removeClass("hidden");
+ });
+
+ $('.js-toggle-public-update').each(function() {
+ var $checkbox = $(this);
+ var toggle_public_update = function() {
+ if ($checkbox.prop('checked')) {
+ $('#public_update').parents('p').show();
+ } else {
+ $('#public_update').parents('p').hide();
+ }
+ };
+ $checkbox.on('change', function() {
+ toggle_public_update();
+ });
+ toggle_public_update();
+ });
+
+ if (geo_position_js.init()) {
+ fixmystreet.geolocate.setup(function(pos) {
+ var latlon = new OpenLayers.LonLat(pos.coords.longitude, pos.coords.latitude);
+ var bng = latlon.clone().transform(
+ new OpenLayers.Projection("EPSG:4326"),
+ new OpenLayers.Projection("EPSG:27700") // TODO: Handle other projections
+ );
+ $("#problem_northing").text(bng.lat.toFixed(1));
+ $("#problem_easting").text(bng.lon.toFixed(1));
+ $("form#report_inspect_form input[name=latitude]").val(latlon.lat);
+ $("form#report_inspect_form input[name=longitude]").val(latlon.lon);
+ });
+ }
+ },
+
mobile_ui_tweaks: function() {
//move 'skip this step' link on mobile
$('.mobile #skip-this-step').addClass('chevron').wrap('<li>').parent().appendTo('#key-tools');
@@ -1070,13 +1076,23 @@ fixmystreet.display = {
report: function(reportPageUrl, reportId, callback) {
$.ajax(reportPageUrl).done(function(html, textStatus, jqXHR) {
- var $reportPage = $(html);
- var $sideReport = $reportPage.find('#side-report');
+ var $reportPage = $(html),
+ $twoColReport = $reportPage.find('.two_column_sidebar'),
+ $sideReport = $reportPage.find('#side-report');
if ($sideReport.length) {
$('#side').hide(); // Hide the list of reports
- $('#side-report').remove(); // Remove any existing report page content from sidebar
- $sideReport.appendTo('#map_sidebar'); // Insert this report's content
+ // Remove any existing report page content from sidebar
+ $('#side-report').remove();
+ $('.two_column_sidebar').remove();
+ // Insert this report's content
+ if ($twoColReport.length) {
+ $twoColReport.appendTo('#map_sidebar');
+ $('body').addClass('with-actions');
+ fixmystreet.set_up.report_page_inspect();
+ } else {
+ $sideReport.appendTo('#map_sidebar');
+ }
$('#map_sidebar').scrollTop(0);
var found = html.match(/<title>([\s\S]*?)<\/title>/);
@@ -1151,8 +1167,10 @@ fixmystreet.display = {
if ($('#side').length) {
$('#side').show();
$('#side-form').hide();
+ // Report page may have been one or two columns, remove either
$('#side-report').remove();
-
+ $('.two_column_sidebar').remove();
+ $('body').removeClass('with-actions');
$('body').removeClass('with-notes');
fixmystreet.page = fixmystreet.original.page;