diff options
-rw-r--r-- | CHANGELOG.md | 2 | ||||
-rw-r--r-- | perllib/FixMyStreet/Cobrand/Default.pm | 3 | ||||
-rw-r--r-- | t/app/controller/report_new_open311.t | 5 | ||||
-rw-r--r-- | templates/web/base/admin/list_updates.html | 6 | ||||
-rw-r--r-- | templates/web/base/admin/problem_row.html | 6 | ||||
-rw-r--r-- | templates/web/base/report/new/category_extras_fields.html | 1 | ||||
-rw-r--r-- | web/cobrands/fixmystreet/assets.js | 80 | ||||
-rw-r--r-- | web/cobrands/fixmystreet/fixmystreet.js | 4 | ||||
-rw-r--r-- | web/cobrands/sass/_base.scss | 3 |
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 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; |