aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perllib/FixMyStreet/App/Controller/Around.pm16
-rwxr-xr-xtemplates/web/fixmystreet.com/around/_report_banner.html16
-rw-r--r--templates/web/fixmystreet.com/around/tabbed_lists.html46
-rw-r--r--templates/web/fixmystreet.com/header_extra.html21
-rw-r--r--web/cobrands/fixmystreet/fixmystreet.js15
-rw-r--r--web/cobrands/fixmystreet/layout.scss9
-rw-r--r--web/cobrands/sass/_layout.scss34
-rw-r--r--web/js/map-OpenLayers.js4
8 files changed, 149 insertions, 12 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Around.pm b/perllib/FixMyStreet/App/Controller/Around.pm
index 41e0ad947..c03f5d9c8 100644
--- a/perllib/FixMyStreet/App/Controller/Around.pm
+++ b/perllib/FixMyStreet/App/Controller/Around.pm
@@ -263,22 +263,18 @@ sub ajax : Path('/ajax') {
# render templates to get the html
my $on_map_list_html = $c->render_fragment(
'around/on_map_list_items.html',
- { on_map => $on_map }
+ { on_map => $on_map, around_map => $around_map }
);
my $around_map_list_html = $c->render_fragment(
'around/around_map_list_items.html',
- { around_map => $around_map, dist => $dist }
+ { on_map => $on_map, around_map => $around_map }
);
# JSON encode the response
- my $body = JSON->new->utf8(1)->encode(
- {
- pins => $pins,
- current => $on_map_list_html,
- current_near => $around_map_list_html,
- }
- );
-
+ my $json = { pins => $pins };
+ $json->{current} = $on_map_list_html if $on_map_list_html;
+ $json->{current_near} = $around_map_list_html if $around_map_list_html;
+ my $body = JSON->new->utf8(1)->encode($json);
$c->res->body($body);
}
diff --git a/templates/web/fixmystreet.com/around/_report_banner.html b/templates/web/fixmystreet.com/around/_report_banner.html
new file mode 100755
index 000000000..bd47a1b54
--- /dev/null
+++ b/templates/web/fixmystreet.com/around/_report_banner.html
@@ -0,0 +1,16 @@
+[%# Identical to parent, just with variant0s %]
+
+<h1 class="big-green-banner variant0">
+ [% loc( 'Click map to report a problem' ) %]
+ [% IF c.cobrand.moniker == 'bromley' %]
+ <span>Yellow pins show existing reports</span>
+ [% END %]
+</h1>
+<p id="skip-this-step" class="variant0">
+ [%
+ tprintf(
+ loc("Can't see the map? <a href='%s' rel='nofollow'>Skip this step</a>"),
+ url_skip
+ )
+ %]
+</p>
diff --git a/templates/web/fixmystreet.com/around/tabbed_lists.html b/templates/web/fixmystreet.com/around/tabbed_lists.html
new file mode 100644
index 000000000..6a3cdf8a9
--- /dev/null
+++ b/templates/web/fixmystreet.com/around/tabbed_lists.html
@@ -0,0 +1,46 @@
+<menu id="problems-nav" class="tab-nav">
+ <ul class="variant0">
+ <li><a href="#current_tab">[% loc('Problems on the map') %]</a></li>
+ <li><a href="#current_near_tab">[% loc( 'Problems nearby' ) %]</a></li>
+ </ul>
+ <ul class="variant1">
+ <li><a href="#reporting">[% loc('Report a problem') %]</a></li>
+ <li><a href="#current_near_tab">[% loc( 'Problems near here' ) %]</a></li>
+ </ul>
+</menu>
+
+<div class="variant1">
+<div id="reporting" class="tab">
+ <h1>[% loc( 'Click the map to<br/>report a problem' ) %]</h1>
+
+ <a id="skip-this-step" href="[% url_skip %]" rel="nofollow">
+ [% loc("Can't see the map? <em>Skip this step</em>") %]
+ </a>
+
+ <p>Don’t worry if it’s not in precisely the right place,<br/>
+ you can move the pin afterwards.</p>
+</div>
+</div>
+
+<div class="variant0">
+<div id="current_tab" class="tab">
+ <ul id="current" class="issue-list-a">
+ [% INCLUDE "around/on_map_list_items.html" %]
+ </ul>
+</div>
+</div>
+
+<div id="current_near_tab" class="tab">
+ <ul id="current_near" class="issue-list-a">
+ [% INCLUDE "around/around_map_list_items.html" %]
+ </ul>
+</div>
+
+<script>
+if (typeof variation !== 'undefined' && variation == 1) {
+ fixmystreet.initial_hide_pins = true;
+ $(function(){
+ $('#current').insertBefore('#current_near');
+ });
+}
+</script>
diff --git a/templates/web/fixmystreet.com/header_extra.html b/templates/web/fixmystreet.com/header_extra.html
index 27ffc12a1..65f88be14 100644
--- a/templates/web/fixmystreet.com/header_extra.html
+++ b/templates/web/fixmystreet.com/header_extra.html
@@ -1,3 +1,24 @@
<script src="[% start %][% version('/js/jquery.cookie.min.js') %]" type="text/javascript" charset="utf-8"></script>
+[%# We are conducting an A/B experiment on the first step of reporting process %]
+[% IF page == 'around' %]
+<script src="//www.google-analytics.com/cx/api.js?experiment=1gdSSsSMQgy99AsCPeBalg"></script>
+<script>
+if (window.matchMedia) {
+ var desktop = window.matchMedia("(min-width: 48em)").matches;
+ if (desktop) {
+ var variation = cxApi.chooseVariation(),
+ docElement = document.documentElement,
+ className = docElement.className;
+ docElement.className = className + ' ' + 'variant' + variation;
+ }
+}
+</script>
+<style>
+html .variant1 { display: none !important; }
+html.variant1 .variant0 { display: none !important; }
+html.variant1 .variant1 { display: block !important; }
+</style>
+[% END %]
+
[% INCLUDE 'tracking_code.html' %]
diff --git a/web/cobrands/fixmystreet/fixmystreet.js b/web/cobrands/fixmystreet/fixmystreet.js
index d26515ecf..e7e3f7bd3 100644
--- a/web/cobrands/fixmystreet/fixmystreet.js
+++ b/web/cobrands/fixmystreet/fixmystreet.js
@@ -46,6 +46,17 @@ function tabs(elem, indirect) {
//hide / show the right tab
$('.tab.open').hide().removeClass('open');
$(target).show().addClass('open');
+
+ // Clicking on tabs to show/hide pins, content experiment
+ if (typeof(variation) !== 'undefined' && variation == 1) {
+ if (target == '#current_near_tab' && !fixmystreet.markers.getVisibility()) {
+ $('#hide_pins_link').click();
+ }
+ if (target == '#reporting' && fixmystreet.markers.getVisibility()) {
+ $('#hide_pins_link').click();
+ }
+ }
+
}
}
@@ -176,8 +187,8 @@ $(function(){
* Tabs
*/
//make initial tab active
- $('.tab-nav a').first().addClass('active');
- $('.tab').first().addClass('open');
+ $('.tab-nav a:visible').first().addClass('active');
+ $('.tab:visible').first().addClass('open');
//hide other tabs
$('.tab').not('.open').hide();
diff --git a/web/cobrands/fixmystreet/layout.scss b/web/cobrands/fixmystreet/layout.scss
index 3f707f619..42df5fdbb 100644
--- a/web/cobrands/fixmystreet/layout.scss
+++ b/web/cobrands/fixmystreet/layout.scss
@@ -92,6 +92,15 @@ body.mappage {
@include background(linear-gradient(#000, #222 10%, #222 90%, #000));
}
}
+
+ #reporting {
+ padding: 1em;
+ text-align: center;
+
+ h1 {
+ line-height: 1.2em;
+ }
+ }
}
#main-nav {
diff --git a/web/cobrands/sass/_layout.scss b/web/cobrands/sass/_layout.scss
index 148bbdc36..bf8f1e03b 100644
--- a/web/cobrands/sass/_layout.scss
+++ b/web/cobrands/sass/_layout.scss
@@ -342,6 +342,40 @@ body.mappage {
}
}
+#skip-this-step {
+ display: block;
+ color: inherit;
+ //margin: 0 -15px;
+ padding: 16px;
+ font-size: 18px;
+ line-height: 20px;
+ border-bottom: 1px solid #E7E1C0;
+ background: #FDF4C5;
+
+ em {
+ font-style: normal;
+ text-decoration: underline;
+ color: #0BA7D1;
+ }
+
+ &:hover {
+ text-decoration: none;
+ }
+
+ html.js & {
+ // If javascript is enabled, hide the skip link off-screen,
+ // but keep it visible for screen readers.
+ position: absolute;
+ top: -999px;
+
+ &:focus {
+ // And show it again if it receives focus (eg: via tab key)
+ position: static;
+ }
+ }
+}
+
+
// full width page
body.fullwidthpage {
.content {
diff --git a/web/js/map-OpenLayers.js b/web/js/map-OpenLayers.js
index c7bfef2b0..63625efb8 100644
--- a/web/js/map-OpenLayers.js
+++ b/web/js/map-OpenLayers.js
@@ -227,6 +227,10 @@ function fixmystreet_onload() {
}
});
+ if (fixmystreet.initial_hide_pins) {
+ $('#hide_pins_link').click();
+ }
+
$('#all_pins_link').click(function(e) {
e.preventDefault();
fixmystreet.markers.setVisibility(true);