aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md2
-rw-r--r--perllib/FixMyStreet/Cobrand/Default.pm3
-rw-r--r--t/app/controller/report_new_open311.t5
-rw-r--r--templates/web/base/admin/list_updates.html6
-rw-r--r--templates/web/base/admin/problem_row.html6
-rw-r--r--templates/web/base/report/new/category_extras_fields.html1
-rw-r--r--web/cobrands/fixmystreet/assets.js80
-rw-r--r--web/cobrands/fixmystreet/fixmystreet.js4
-rw-r--r--web/cobrands/sass/_base.scss3
9 files changed, 69 insertions, 41 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 003ec4bb9..fdfad3359 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,7 @@
- Improve questionnaire process. #1939 #1998
- Increase size of "sub map links" (hide pins, permalink, etc) #2003
- Edge-to-edge email layout on narrow screens #2010
+ - Add default placeholder to report extra fields. #2027
- Bugfixes:
- Stop asset layers obscuring marker layer. #1999
- Don't delete hidden field values when inspecting reports. #1999
@@ -13,6 +14,7 @@
- Admin improvements:
- Inspectors can set non_public status of reports. #1992
- Default start date is shown on the dashboard.
+ - Users with 'user_edit' permission can search for users/reports. #2027
- Development improvements:
- Add HTML email previewer.
diff --git a/perllib/FixMyStreet/Cobrand/Default.pm b/perllib/FixMyStreet/Cobrand/Default.pm
index 1883550e5..03a6c1a83 100644
--- a/perllib/FixMyStreet/Cobrand/Default.pm
+++ b/perllib/FixMyStreet/Cobrand/Default.pm
@@ -667,6 +667,7 @@ sub admin_pages {
$pages->{responsepriority_edit} = [ undef, undef ];
};
if ( $user->has_body_permission_to('user_edit') ) {
+ $pages->{reports} = [ _('Reports'), 2 ];
$pages->{users} = [ _('Users'), 6 ];
$pages->{user_edit} = [ undef, undef ];
}
@@ -727,7 +728,7 @@ sub available_permissions {
# trusted => _("Trusted to make reports that don't need to be inspected"),
},
_("Users") => {
- user_edit => _("Edit other users' details"),
+ user_edit => _("Edit users' details/search for their reports"),
user_manage_permissions => _("Edit other users' permissions"),
user_assign_body => _("Grant access to the admin"),
user_assign_areas => _("Assign users to areas"), # future use
diff --git a/t/app/controller/report_new_open311.t b/t/app/controller/report_new_open311.t
index 0224e7e47..d79f7883c 100644
--- a/t/app/controller/report_new_open311.t
+++ b/t/app/controller/report_new_open311.t
@@ -64,7 +64,7 @@ foreach my $test (
},
changes => {
number => '',
- type => 'old',
+ type => '',
},
errors => [
'This information is required',
@@ -80,6 +80,7 @@ foreach my $test (
username => 'testopen311@example.com',
category => 'Street lighting',
number => 27,
+ type => 'old',
},
extra => [
{
@@ -146,7 +147,7 @@ foreach my $test (
}
->scrape( $mech->response );
- is_deeply $result->{option}, [ qw/old modern/], 'displayed streetlight type select';
+ is_deeply $result->{option}, [ "", qw/old modern/], 'displayed streetlight type select';
}
$new_values = {
diff --git a/templates/web/base/admin/list_updates.html b/templates/web/base/admin/list_updates.html
index d759a2354..4b8b26d3c 100644
--- a/templates/web/base/admin/list_updates.html
+++ b/templates/web/base/admin/list_updates.html
@@ -39,7 +39,11 @@
<br>[% loc('Confirmed:') %] [% PROCESS format_time time=update.confirmed %]
</small></td>
<td>[% update.text | html %]</td>
- <td><a href="[% c.uri_for( 'update_edit', update.id ) %]">[% loc('Edit') %]</a></td>
+ <td>
+ [% IF c.user.has_permission_to('report_edit', update.problem.bodies_str_ids) %]
+ <a href="[% c.uri_for( 'update_edit', update.id ) %]">[% loc('Edit') %]</a>
+ [% END %]
+ </td>
</tr>
[% END -%]
</table>
diff --git a/templates/web/base/admin/problem_row.html b/templates/web/base/admin/problem_row.html
index 446e94d66..99142af4e 100644
--- a/templates/web/base/admin/problem_row.html
+++ b/templates/web/base/admin/problem_row.html
@@ -38,6 +38,10 @@
[%- IF problem.is_closed %]<br>[% prettify_state('closed') %]: [% PROCESS format_time time=problem.lastupdate %][% END -%]
[%- IF problem.is_open %]<br>[% loc('Last&nbsp;update:') %] [% PROCESS format_time time=problem.lastupdate %][% END -%]
</small></td>
- <td><a href="[% c.uri_for( 'report_edit', problem.id ) %]">[% loc('Edit') %]</a></td>
+ <td>
+ [% IF c.user.has_permission_to('report_edit', problem.bodies_str_ids) %]
+ <a href="[% c.uri_for( 'report_edit', problem.id ) %]">[% loc('Edit') %]</a>
+ [% END %]
+ </td>
</tr>
[%- END -%]
diff --git a/templates/web/base/report/new/category_extras_fields.html b/templates/web/base/report/new/category_extras_fields.html
index ca5cb1461..6ed6391c7 100644
--- a/templates/web/base/report/new/category_extras_fields.html
+++ b/templates/web/base/report/new/category_extras_fields.html
@@ -14,6 +14,7 @@
[% IF meta.variable != 'false' %]
[% IF meta.exists('values') %]
<select class="form-control" name="[% cat_prefix %][% meta_name %]" id="[% cat_prefix %]form_[% meta_name %]"[% meta.required == 'true' ? ' required' : '' %]>
+ <option value="">[% loc('-- Pick an option --') %]</option>
[% FOR option IN meta.values %]
<option value="[% option.key %]"[% IF option.key == report_meta.$meta_name.value %] selected[% END %]>[% option.name %]</option>
[% END %]
diff --git a/web/cobrands/fixmystreet/assets.js b/web/cobrands/fixmystreet/assets.js
index 4854b902e..14aab2db2 100644
--- a/web/cobrands/fixmystreet/assets.js
+++ b/web/cobrands/fixmystreet/assets.js
@@ -49,6 +49,49 @@ $(fixmystreet).on('report_new:category_change:extras_received', fixmystreet.usrn
var selected_feature = null;
var fault_popup = null;
+/*
+ * Adds the layer to the map and sets up event handlers and whatnot.
+ * Called as part of fixmystreet.assets.init for each asset layer on the map.
+ */
+function init_asset_layer(layer, pins_layer) {
+ fixmystreet.map.addLayer(layer);
+ if (layer.fixmystreet.asset_category) {
+ fixmystreet.map.events.register( 'zoomend', layer, check_zoom_message_visibility);
+ }
+
+ // Don't cover the existing pins layer
+ if (pins_layer) {
+ layer.setZIndex(pins_layer.getZIndex()-1);
+ }
+
+ // Make sure the fault markers always appear beneath the linked assets
+ if (layer.fixmystreet.fault_layer) {
+ fixmystreet.map.addLayer(layer.fixmystreet.fault_layer);
+ layer.fixmystreet.fault_layer.setZIndex(layer.getZIndex()-1);
+ }
+
+ if (!layer.fixmystreet.always_visible) {
+ // Show/hide the asset layer when the category is chosen
+ $("#problem_form").on("change.category", "select#form_category", function(){
+ var category = $(this).val();
+ if (category == layer.fixmystreet.asset_category) {
+ layer.setVisibility(true);
+ if (layer.fixmystreet.fault_layer) {
+ layer.fixmystreet.fault_layer.setVisibility(true);
+ }
+ zoom_to_assets(layer);
+ } else {
+ layer.setVisibility(false);
+ if (layer.fixmystreet.fault_layer) {
+ layer.fixmystreet.fault_layer.setVisibility(false);
+ }
+ }
+ });
+ }
+
+}
+
+
function close_fault_popup() {
if (!!fault_popup) {
fixmystreet.map.removePopup(fault_popup);
@@ -417,25 +460,6 @@ fixmystreet.assets = {
if (select_feature_control) {
fixmystreet.assets.controls.push(select_feature_control);
}
-
- if (!asset_layer.fixmystreet.always_visible) {
- // Show/hide the asset layer when the category is chosen
- $("#problem_form").on("change.category", "select#form_category", function(){
- var category = $(this).val();
- if (category == options.asset_category) {
- asset_layer.setVisibility(true);
- if (asset_layer.fixmystreet.fault_layer) {
- asset_layer.fixmystreet.fault_layer.setVisibility(true);
- }
- zoom_to_assets(asset_layer);
- } else {
- asset_layer.setVisibility(false);
- if (asset_layer.fixmystreet.fault_layer) {
- asset_layer.fixmystreet.fault_layer.setVisibility(false);
- }
- }
- });
- }
},
init: function() {
@@ -461,23 +485,7 @@ fixmystreet.assets = {
var pins_layer = fixmystreet.map.getLayersByName("Pins")[0];
for (var i = 0; i < fixmystreet.assets.layers.length; i++) {
- var layer = fixmystreet.assets.layers[i];
- fixmystreet.map.addLayer(layer);
- if (layer.fixmystreet.asset_category) {
- fixmystreet.map.events.register( 'zoomend', layer, check_zoom_message_visibility);
- }
-
- // Don't cover the existing pins layer
- if (pins_layer) {
- layer.setZIndex(pins_layer.getZIndex()-1);
- }
-
- // Make sure the fault markers always appear beneath the linked assets
- if (layer.fixmystreet.fault_layer) {
- fixmystreet.map.addLayer(layer.fixmystreet.fault_layer);
- layer.fixmystreet.fault_layer.setZIndex(layer.getZIndex()-1);
- }
-
+ init_asset_layer(fixmystreet.assets.layers[i], pins_layer);
}
for (i = 0; i < fixmystreet.assets.controls.length; i++) {
diff --git a/web/cobrands/fixmystreet/fixmystreet.js b/web/cobrands/fixmystreet/fixmystreet.js
index aae275ede..d85a5cdbc 100644
--- a/web/cobrands/fixmystreet/fixmystreet.js
+++ b/web/cobrands/fixmystreet/fixmystreet.js
@@ -409,6 +409,10 @@ $.extend(fixmystreet.set_up, {
if ( data.category_extra ) {
if ( $category_meta.length ) {
$category_meta.replaceWith( data.category_extra );
+ // Preserve any existing values
+ $category_meta.find("[name]").each(function() {
+ $('#category_meta').find("[name="+this.name+"]").val(this.value);
+ });
} else {
$('#form_category_row').after( data.category_extra );
}
diff --git a/web/cobrands/sass/_base.scss b/web/cobrands/sass/_base.scss
index 4f46d685a..4e2a2fd5f 100644
--- a/web/cobrands/sass/_base.scss
+++ b/web/cobrands/sass/_base.scss
@@ -560,6 +560,9 @@ ul.error {
font-size: 1.25em;
border-bottom: 0.25em solid #333;
}
+ a:visited {
+ color: #333;
+ }
a:hover, span.hover {
background-color: #333;
color: #fff;