diff options
Diffstat (limited to 'docs')
-rw-r--r-- | docs/Gemfile.lock | 336 | ||||
-rw-r--r-- | docs/_includes/admin-tasks-content.md | 125 | ||||
-rw-r--r-- | docs/_includes/google-analytics.html | 9 | ||||
-rw-r--r-- | docs/_layouts/default.html | 1 | ||||
-rw-r--r-- | docs/_layouts/pro.html | 5 | ||||
-rw-r--r-- | docs/_posts/2020-03-04-v3.0.md | 147 | ||||
-rw-r--r-- | docs/_posts/2020-05-06-v3.0.1.md | 68 | ||||
-rw-r--r-- | docs/assets/img/pro-user-guide/edit-category-notice.png | bin | 0 -> 70403 bytes | |||
-rw-r--r-- | docs/assets/img/pro-user-guide/edit-category-page.png | bin | 34822 -> 65237 bytes | |||
-rw-r--r-- | docs/customising/config.md | 51 | ||||
-rw-r--r-- | docs/customising/geocoder.md | 21 | ||||
-rw-r--r-- | docs/customising/templates.md | 2 | ||||
-rw-r--r-- | docs/install/ami.md | 6 | ||||
-rw-r--r-- | docs/install/docker.md | 3 | ||||
-rw-r--r-- | docs/install/vagrant.md | 30 | ||||
-rw-r--r-- | docs/pro-manual/admin-tasks.md | 11 | ||||
-rw-r--r-- | docs/pro-manual/deep-linking.md | 92 | ||||
-rw-r--r-- | docs/pro-manual/index.md | 4 | ||||
-rw-r--r-- | docs/pro-manual/staff-user-accounts.md | 11 | ||||
-rw-r--r-- | docs/running/index.md | 18 | ||||
-rw-r--r-- | docs/running/staff.md | 6 | ||||
-rw-r--r-- | docs/running/users.md | 5 |
22 files changed, 722 insertions, 229 deletions
diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock index c51eb3c2e..ed1962744 100644 --- a/docs/Gemfile.lock +++ b/docs/Gemfile.lock @@ -1,205 +1,245 @@ GEM remote: https://rubygems.org/ specs: - activesupport (4.2.8) - i18n (~> 0.7) + activesupport (6.0.2.1) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) minitest (~> 5.1) - thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) - addressable (2.5.1) - public_suffix (~> 2.0, >= 2.0.2) + zeitwerk (~> 2.2) + addressable (2.7.0) + public_suffix (>= 2.0.2, < 5.0) coffee-script (2.4.1) coffee-script-source execjs - coffee-script-source (1.12.2) + coffee-script-source (1.11.1) colorator (1.1.0) + commonmarker (0.17.13) + ruby-enum (~> 0.5) + concurrent-ruby (1.1.6) + dnsruby (1.61.3) + addressable (~> 2.5) em-websocket (0.5.1) eventmachine (>= 0.12.9) http_parser.rb (~> 0.6.0) - ethon (0.10.1) + ethon (0.12.0) ffi (>= 1.3.0) - eventmachine (1.2.5) + eventmachine (1.2.7) execjs (2.7.0) - faraday (0.12.1) + faraday (1.0.0) multipart-post (>= 1.2, < 3) - ffi (1.9.18) + ffi (1.12.2) forwardable-extended (2.6.0) - gemoji (3.0.0) - github-pages (145) - activesupport (= 4.2.8) - github-pages-health-check (= 1.3.4) - jekyll (= 3.4.5) - jekyll-avatar (= 0.4.2) - jekyll-coffeescript (= 1.0.1) + gemoji (3.0.1) + github-pages (204) + github-pages-health-check (= 1.16.1) + jekyll (= 3.8.5) + jekyll-avatar (= 0.7.0) + jekyll-coffeescript (= 1.1.1) + jekyll-commonmark-ghpages (= 0.1.6) jekyll-default-layout (= 0.1.4) - jekyll-feed (= 0.9.2) - jekyll-gist (= 1.4.0) - jekyll-github-metadata (= 2.5.1) - jekyll-mentions (= 1.2.0) - jekyll-optional-front-matter (= 0.2.0) + jekyll-feed (= 0.13.0) + jekyll-gist (= 1.5.0) + jekyll-github-metadata (= 2.13.0) + jekyll-mentions (= 1.5.1) + jekyll-optional-front-matter (= 0.3.2) jekyll-paginate (= 1.1.0) - jekyll-readme-index (= 0.1.0) - jekyll-redirect-from (= 0.12.1) - jekyll-relative-links (= 0.4.1) - jekyll-sass-converter (= 1.5.0) - jekyll-seo-tag (= 2.2.3) - jekyll-sitemap (= 1.0.0) - jekyll-swiss (= 0.4.0) - jekyll-theme-architect (= 0.0.4) - jekyll-theme-cayman (= 0.0.4) - jekyll-theme-dinky (= 0.0.4) - jekyll-theme-hacker (= 0.0.4) - jekyll-theme-leap-day (= 0.0.4) - jekyll-theme-merlot (= 0.0.4) - jekyll-theme-midnight (= 0.0.4) - jekyll-theme-minimal (= 0.0.4) - jekyll-theme-modernist (= 0.0.4) - jekyll-theme-primer (= 0.3.1) - jekyll-theme-slate (= 0.0.4) - jekyll-theme-tactile (= 0.0.4) - jekyll-theme-time-machine (= 0.0.4) - jekyll-titles-from-headings (= 0.2.0) - jemoji (= 0.8.0) - kramdown (= 1.13.2) - liquid (= 3.0.6) - listen (= 3.0.6) + jekyll-readme-index (= 0.3.0) + jekyll-redirect-from (= 0.15.0) + jekyll-relative-links (= 0.6.1) + jekyll-remote-theme (= 0.4.1) + jekyll-sass-converter (= 1.5.2) + jekyll-seo-tag (= 2.6.1) + jekyll-sitemap (= 1.4.0) + jekyll-swiss (= 1.0.0) + jekyll-theme-architect (= 0.1.1) + jekyll-theme-cayman (= 0.1.1) + jekyll-theme-dinky (= 0.1.1) + jekyll-theme-hacker (= 0.1.1) + jekyll-theme-leap-day (= 0.1.1) + jekyll-theme-merlot (= 0.1.1) + jekyll-theme-midnight (= 0.1.1) + jekyll-theme-minimal (= 0.1.1) + jekyll-theme-modernist (= 0.1.1) + jekyll-theme-primer (= 0.5.4) + jekyll-theme-slate (= 0.1.1) + jekyll-theme-tactile (= 0.1.1) + jekyll-theme-time-machine (= 0.1.1) + jekyll-titles-from-headings (= 0.5.3) + jemoji (= 0.11.1) + kramdown (= 1.17.0) + liquid (= 4.0.3) mercenary (~> 0.3) - minima (= 2.1.1) - rouge (= 1.11.1) + minima (= 2.5.1) + nokogiri (>= 1.10.4, < 2.0) + rouge (= 3.13.0) terminal-table (~> 1.4) - github-pages-health-check (1.3.4) + github-pages-health-check (1.16.1) addressable (~> 2.3) - net-dns (~> 0.8) + dnsruby (~> 1.60) octokit (~> 4.0) - public_suffix (~> 2.0) - typhoeus (~> 0.7) - html-pipeline (2.6.0) + public_suffix (~> 3.0) + typhoeus (~> 1.3) + html-pipeline (2.12.3) activesupport (>= 2) nokogiri (>= 1.4) http_parser.rb (0.6.0) - i18n (0.8.6) - jekyll (3.4.5) + i18n (0.9.5) + concurrent-ruby (~> 1.0) + jekyll (3.8.5) addressable (~> 2.4) colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 0.7) jekyll-sass-converter (~> 1.0) - jekyll-watch (~> 1.1) - kramdown (~> 1.3) - liquid (~> 3.0) + jekyll-watch (~> 2.0) + kramdown (~> 1.14) + liquid (~> 4.0) mercenary (~> 0.3.3) pathutil (~> 0.9) - rouge (~> 1.7) + rouge (>= 1.7, < 4) safe_yaml (~> 1.0) - jekyll-avatar (0.4.2) - jekyll (~> 3.0) - jekyll-coffeescript (1.0.1) + jekyll-avatar (0.7.0) + jekyll (>= 3.0, < 5.0) + jekyll-coffeescript (1.1.1) coffee-script (~> 2.2) + coffee-script-source (~> 1.11.1) + jekyll-commonmark (1.3.1) + commonmarker (~> 0.14) + jekyll (>= 3.7, < 5.0) + jekyll-commonmark-ghpages (0.1.6) + commonmarker (~> 0.17.6) + jekyll-commonmark (~> 1.2) + rouge (>= 2.0, < 4.0) jekyll-default-layout (0.1.4) jekyll (~> 3.0) - jekyll-feed (0.9.2) - jekyll (~> 3.3) - jekyll-gist (1.4.0) + jekyll-feed (0.13.0) + jekyll (>= 3.7, < 5.0) + jekyll-gist (1.5.0) octokit (~> 4.2) - jekyll-github-metadata (2.5.1) - jekyll (~> 3.1) + jekyll-github-metadata (2.13.0) + jekyll (>= 3.4, < 5.0) octokit (~> 4.0, != 4.4.0) jekyll-livereload (0.2.2) em-websocket (~> 0.5) jekyll (~> 3.0) - jekyll-mentions (1.2.0) - activesupport (~> 4.0) + jekyll-mentions (1.5.1) html-pipeline (~> 2.3) - jekyll (~> 3.0) - jekyll-optional-front-matter (0.2.0) - jekyll (~> 3.0) + jekyll (>= 3.7, < 5.0) + jekyll-optional-front-matter (0.3.2) + jekyll (>= 3.0, < 5.0) jekyll-paginate (1.1.0) - jekyll-readme-index (0.1.0) - jekyll (~> 3.0) - jekyll-redirect-from (0.12.1) - jekyll (~> 3.3) - jekyll-relative-links (0.4.1) - jekyll (~> 3.3) - jekyll-sass-converter (1.5.0) + jekyll-readme-index (0.3.0) + jekyll (>= 3.0, < 5.0) + jekyll-redirect-from (0.15.0) + jekyll (>= 3.3, < 5.0) + jekyll-relative-links (0.6.1) + jekyll (>= 3.3, < 5.0) + jekyll-remote-theme (0.4.1) + addressable (~> 2.0) + jekyll (>= 3.5, < 5.0) + rubyzip (>= 1.3.0) + jekyll-sass-converter (1.5.2) sass (~> 3.4) - jekyll-seo-tag (2.2.3) - jekyll (~> 3.3) - jekyll-sitemap (1.0.0) - jekyll (~> 3.3) - jekyll-swiss (0.4.0) - jekyll-theme-architect (0.0.4) - jekyll (~> 3.3) - jekyll-theme-cayman (0.0.4) - jekyll (~> 3.3) - jekyll-theme-dinky (0.0.4) - jekyll (~> 3.3) - jekyll-theme-hacker (0.0.4) - jekyll (~> 3.3) - jekyll-theme-leap-day (0.0.4) - jekyll (~> 3.3) - jekyll-theme-merlot (0.0.4) - jekyll (~> 3.3) - jekyll-theme-midnight (0.0.4) - jekyll (~> 3.3) - jekyll-theme-minimal (0.0.4) - jekyll (~> 3.3) - jekyll-theme-modernist (0.0.4) - jekyll (~> 3.3) - jekyll-theme-primer (0.3.1) - jekyll (~> 3.3) - jekyll-theme-slate (0.0.4) - jekyll (~> 3.3) - jekyll-theme-tactile (0.0.4) - jekyll (~> 3.3) - jekyll-theme-time-machine (0.0.4) - jekyll (~> 3.3) - jekyll-titles-from-headings (0.2.0) - jekyll (~> 3.3) - jekyll-watch (1.5.0) - listen (~> 3.0, < 3.1) - jemoji (0.8.0) - activesupport (~> 4.0) + jekyll-seo-tag (2.6.1) + jekyll (>= 3.3, < 5.0) + jekyll-sitemap (1.4.0) + jekyll (>= 3.7, < 5.0) + jekyll-swiss (1.0.0) + jekyll-theme-architect (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-cayman (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-dinky (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-hacker (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-leap-day (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-merlot (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-midnight (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-minimal (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-modernist (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-primer (0.5.4) + jekyll (> 3.5, < 5.0) + jekyll-github-metadata (~> 2.9) + jekyll-seo-tag (~> 2.0) + jekyll-theme-slate (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-tactile (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-time-machine (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-titles-from-headings (0.5.3) + jekyll (>= 3.3, < 5.0) + jekyll-watch (2.2.1) + listen (~> 3.0) + jemoji (0.11.1) gemoji (~> 3.0) html-pipeline (~> 2.2) - jekyll (>= 3.0) - kramdown (1.13.2) - liquid (3.0.6) - listen (3.0.6) - rb-fsevent (>= 0.9.3) - rb-inotify (>= 0.9.7) + jekyll (>= 3.0, < 5.0) + kramdown (1.17.0) + liquid (4.0.3) + listen (3.2.1) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.3.6) - mini_portile2 (2.2.0) - minima (2.1.1) - jekyll (~> 3.3) - minitest (5.10.2) - multipart-post (2.0.0) - net-dns (0.8.0) - nokogiri (1.8.0) - mini_portile2 (~> 2.2.0) - octokit (4.7.0) + mini_portile2 (2.4.0) + minima (2.5.1) + jekyll (>= 3.5, < 5.0) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + minitest (5.14.0) + multipart-post (2.1.1) + nokogiri (1.10.8) + mini_portile2 (~> 2.4.0) + octokit (4.16.0) + faraday (>= 0.9) sawyer (~> 0.8.0, >= 0.5.3) - pathutil (0.14.0) + pathutil (0.16.2) forwardable-extended (~> 2.6) - public_suffix (2.0.5) - rb-fsevent (0.10.2) - rb-inotify (0.9.10) - ffi (>= 0.5.0, < 2) - rouge (1.11.1) - safe_yaml (1.0.4) - sass (3.5.1) + public_suffix (3.1.1) + rb-fsevent (0.10.3) + rb-inotify (0.10.1) + ffi (~> 1.0) + rouge (3.13.0) + ruby-enum (0.7.2) + i18n + rubyzip (2.2.0) + safe_yaml (1.0.5) + sass (3.7.4) sass-listen (~> 4.0.0) sass-listen (4.0.0) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) - sawyer (0.8.1) - addressable (>= 2.3.5, < 2.6) - faraday (~> 0.8, < 1.0) + sawyer (0.8.2) + addressable (>= 2.3.5) + faraday (> 0.8, < 2.0) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) thread_safe (0.3.6) - typhoeus (0.8.0) - ethon (>= 0.8.0) - tzinfo (1.2.3) + typhoeus (1.3.1) + ethon (>= 0.9.0) + tzinfo (1.2.6) thread_safe (~> 0.1) - unicode-display_width (1.3.0) + unicode-display_width (1.6.1) + zeitwerk (2.2.2) PLATFORMS ruby @@ -209,4 +249,4 @@ DEPENDENCIES jekyll-livereload BUNDLED WITH - 1.13.7 + 1.16.1 diff --git a/docs/_includes/admin-tasks-content.md b/docs/_includes/admin-tasks-content.md index b62e9f531..7e3d47efe 100644 --- a/docs/_includes/admin-tasks-content.md +++ b/docs/_includes/admin-tasks-content.md @@ -342,7 +342,7 @@ underway’ and ‘This issue is now closed’. From the report page, staff with the appropriate permissions may select from the ‘public update’ dropdown. This will prefill an update with template text for one of a number of common statuses. -The templates are created by the Administrator; see ‘[Creating response templates](#creating-and-editing-priorities)’. +The templates are created by the Administrator; see ‘[Creating response templates](#creating-editing-response-templates)’. The text in template responses is fully editable on the report page, so staff may also choose to add their own comments or edit the preformatted responses to reflect the precise circumstances of the @@ -379,7 +379,7 @@ details' must be ticked.</span> #### Setting a priority From the panel on the right hand side of a report, staff with the appropriate permissions may select a priority from a drop-down list. These priorities are created by Administrator-level users; -see ‘[Setting categories and priorities](#creating-and-editing-priorities) ’. +see ‘[Setting categories and priorities](#creating-editing-priorities) ’. </div> @@ -468,7 +468,7 @@ To synchronise your records once you're back online, just visit any page on FixM #### Creating a staff account -<span class="admin-task__permissions">Permissions required: User must be marked as staff; ‘Edit other users’ permissions’ must be ticked.</span> +<span class="admin-task__permissions">Permissions required: User must be marked as staff; ‘Edit users’ details’ must be ticked.</span> <img alt="From the user admin page you can administer staff accounts" src="/assets/img/pro-user-guide/user-admin-page.png" class="admin-screenshot" /> @@ -478,29 +478,43 @@ You’ll see a table of existing users. Below this is the ‘add user’ interfa First create the basic user account by inputting a name and email address, plus any other contact details desired. Once this is done and you have saved the input, you can edit the account to assign -any permissions required. +any roles or permissions required. You can use the same form to create a user account for a resident or a member of staff, so tick ‘staff user’ if you wish to create an admin account. The new staff user can then log in via the normal method. -#### Assigning permissions +#### Creating roles + +<span class="admin-task__permissions">Permissions required: User must be marked as staff; ‘Edit other users' permissions must be ticked.</span> + +Go to the ‘Roles’ tab in the admin menu. + +Here you can create a group of permissions, called a ‘role’. See [Staff user +accounts](../staff-user-accounts/) for some possible examples, but you can use +whatever makes sense to your own organisation. + +Once you have created a role, you can then assign a user to one or more roles +to give that user access to all the permissions of those roles, without having +to assign permissions individually for each user. + +#### Assigning roles and permissions <span class="admin-task__permissions">Permissions required: User must be marked as staff; ‘Edit other users' permissions must be ticked.</span> <img alt="You can assign permissions to users on this screen" src="/assets/img/pro-user-guide/user-admin-permissions.png" class="admin-screenshot" /> Once you have created the basic staff user account, you’ll be taken to a page where you can assign -permissions. +roles and permissions. You can also always edit any user from the table at the top of the Users page by clicking ‘edit’. -Check the boxes relating to the permissions you wish that user to have, and click ‘submit changes’. +Select the roles or permissions you wish that user to have, and click ‘submit changes’. #### Setting categories or areas -<span class="admin-task__permissions">Permissions required: User must be marked as staff; ‘Edit other users' permissions’ must be ticked.</span> +<span class="admin-task__permissions">Permissions required: User must be marked as staff; ‘Assign users to areas’ must be ticked (for areas).</span> <img alt="You can allocate categories to individual users by checking the relevant category boxes" src="/assets/img/pro-user-guide/user-admin-categories.png" class="admin-screenshot" /> @@ -550,6 +564,13 @@ that, a form by which you can create new ones. Input a title for the category, and the email address to which reports in that category should be forwarded. When creating a category, these are the only fields required. +You can also choose a variety of options – whether to automatically hide any +reports made in this category, whether to prevent form submission when this +category is selected, or what parent category or categories a particular +category is in. See below for information on <a +href="#creating-editing-notices">creating/editing extra notices and +questions</a> for a category. + You can set up as many or as few categories as you like, and each category can have its own email address attached to it, so for example, reports about potholes may go to one council email address, while reports about road signs go to another. More than one category may share the @@ -579,22 +600,63 @@ ticked.</span> You can edit categories at any time by clicking on their title within the table at the top of the Categories page. -From here, you can: - -- Change the email address that the reports in this category are routed to -- Set the category’s ‘state’ to Confirmed, Unconfirmed, Inactive or Deleted. This can be - useful when categories are discontinued or changed, for example if responsibilities are - transferred to another council, or your own council reconfigures its departments. - - **Confirmed** indicates that the email address has been verified as correct. - - **Inactive** will remove the category from use when reporting problems, but keep it - available in map filters. It’s useful for categories which have been discontinued, - but which you’d still like users to to be able to view data on. - - **Deleted** will remove the category from use, and from map filters. Use this if you - want to discontinue a category and have no need for it to appear on the site. - - **Unconfirmed** is for categories where the attached email address has not been - verified as correct. This option is not commonly used by councils. Reports sent to - unconfirmed categories are not routed to the council; instead, an alert email is - sent to mySociety staff. +From here, you can change the email address that the reports in this category are routed to, +or any of the other options for the category. + +</div> + +<div class="admin-task" markdown="1" id="creating-editing-notices"> + +### Creating and editing category notices and questions + +<div class="boxout" markdown="1"> + +#### Note + +If your FixMyStreet Pro installation has been integrated with a CRM system, some of this +section may not not apply, e.g. extra questions may be pulled directly from the backend. + +</div> + +<span class="admin-task__permissions">Permissions required: User must be marked as staff; “Add/edit problem categories” must be +ticked.</span> + +Each category can have additional notices and questions associated with it, called “Extra data”. +You can add as many as necessary (though we do recommend as few as possible, to stop people +being put off from filling in your form), reorder them, and update them. No extra data answers +are shown in public by default. + +<img alt="Control the extra notices and questions the site displays when a report is made in this category" + src="/assets/img/pro-user-guide/edit-category-notice.png" class="admin-screenshot" /> + +#### Notices + +A notice is some text that is displayed to the user when the category is +selected. This can be used to provide extra information about the category, +point specific cases elsewhere (e.g. a phone number for urgent enquiries), or +anything else you think the reporter may find useful. + +#### Questions + +A question can ask the user to provide some specific additional information +that you require in order to treat the problem appropriately, such as what +specific type of issue is being reported, or some additional details you +require to take the report forward. It can either be a free-text field, or a +drop-down, where you can specify the options to be picked from. + +You can also selectively disable the form submission process based upon a +drop-down question answer - for example, if you had a question asking if the +situation was dangerous, you could disable the form if the reporter answered +Yes and display a message asking the user to ring a number instead. + +#### Hidden/internal data fields + +As well as questions and notices, you can set up hidden and internal data +fields. A hidden data field will be output in the reporting form HTML (so e.g. +clicking on a map asset could fill this field with the asset’s ID), whereas an +internal data field is not output in the HTML (this is for special fields that +your server knows to accept, e.g. different co-ordinate systems, special +handling of textual input, and so on). </div> @@ -680,9 +742,18 @@ the ‘Resolved’ status update text is automatically applied. While this funct time-saver, we advise using it with caution to ensure that the template text is applicable to every situation in which is will be automatically applied. -If you have an Open311 connection, you can click ‘auto-response’ so that a template will be -applied when the state is updated by the automated Open311 process. - +If you have an Open311 connection, you can click ‘auto-response’ so that a +template will be applied when the state is updated by the automated Open311 +process. In this instance, if your Open311 server returns extra text as part of +the update, you may put the placeholder `{% raw %}{{description}}{% endraw %}` in the template here, +and that placeholder will be replaced by the text from the Open311 server. + +If you don’t have an Open311 connection, or your Open311 connection does not +provide an immediate initial update, there is a special case where if a +template is assigned to the Open state, and marked as ‘auto-response’, then it +will automatically be added as a first update to any new report created that +matches the template (ie. in the relevant category if assigned). This lets +you give e.g. estimated timescales or other useful information up front. #### Editing or deleting a template diff --git a/docs/_includes/google-analytics.html b/docs/_includes/google-analytics.html deleted file mode 100644 index 16967f5e7..000000000 --- a/docs/_includes/google-analytics.html +++ /dev/null @@ -1,9 +0,0 @@ -<!-- Global site tag (gtag.js) - Google Analytics --> -<script async src="https://www.googletagmanager.com/gtag/js?id=UA-660910-6"></script> -<script> - window.dataLayer = window.dataLayer || []; - function gtag(){dataLayer.push(arguments);} - gtag('js', new Date()); - - gtag('config', 'UA-660910-6', { 'anonymize_ip': true }); -</script> diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html index edc689bce..3a1f77215 100644 --- a/docs/_layouts/default.html +++ b/docs/_layouts/default.html @@ -10,7 +10,6 @@ <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> - {% include google-analytics.html %} <script type="text/javascript" src="/assets/vendor/jquery.min.js"></script> <script type="text/javascript" src="/assets/vendor/jquery-migrate.min.js"></script> <script type="text/javascript" src="/assets/vendor/owl.carousel.min.js"></script> diff --git a/docs/_layouts/pro.html b/docs/_layouts/pro.html index f305632ff..d79163989 100644 --- a/docs/_layouts/pro.html +++ b/docs/_layouts/pro.html @@ -13,7 +13,6 @@ <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> - {% include google-analytics.html %} <script type="text/javascript" src="{{ "/assets/vendor/jquery.min.js" | absolute_url }}"></script> <script type="text/javascript" src="{{ "/assets/vendor/jquery-migrate.min.js" | absolute_url }}"></script> <script type="text/javascript" src="https://www.fixmystreet.com/pro/wp-content/themes/fixmystreet-pro/assets/javascript/bootstrap.min.js"></script> @@ -84,7 +83,8 @@ <nav class="sidebar"> <ul> <li><a href="/pro-manual/">What is FixMyStreet Pro?</a></li> - <li><a href="/pro-manual/citizens-experience/">The Citizens Experience</a></li> + <li><a href="/pro-manual/citizens-experience/">The Citizen’s Experience</a></li> + <li><a href="/pro-manual/deep-linking/">Deep linking from your site</a></li> <li><a href="/pro-manual/staff-user-accounts/">Staff User Accounts</a></li> <li><a href="/pro-manual/admin-tasks/">Administrator Tasks</a> <ul> @@ -107,6 +107,7 @@ <li><a href="/pro-manual/admin-tasks/#viewing-editing-reports-offline">Viewing and editing reports offline</a></li> <li><a href="/pro-manual/admin-tasks/#adminstrating-staff-accounts">Administrating staff accounts</a></li> <li><a href="/pro-manual/admin-tasks/#creating-editing-categories">Creating and editing categories</a></li> + <li><a href="/pro-manual/admin-tasks/#creating-editing-notices">Creating and editing category notices/questions</a></li> <li><a href="/pro-manual/admin-tasks/#creating-editing-priorities">Creating and editing priorities</a></li> <li><a href="/pro-manual/admin-tasks/#creating-editing-response-templates">Creating and editing response templates</a></li> <li><a href="/pro-manual/admin-tasks/#view-statistics">Viewing statistics</a></li> diff --git a/docs/_posts/2020-03-04-v3.0.md b/docs/_posts/2020-03-04-v3.0.md new file mode 100644 index 000000000..e36f22c69 --- /dev/null +++ b/docs/_posts/2020-03-04-v3.0.md @@ -0,0 +1,147 @@ +--- +layout: post +title: Version 3.0 +author: matthew +--- + +<div class="r" align="right"> +<a data-flickr-embed="true" href="https://www.flickr.com/photos/iqremix/23232339432/" title="Follow the Yellow Line"><img src="https://live.staticflickr.com/750/23232339432_66b398ac1c.jpg" width="500" height="333" alt="Follow the Yellow Line"></a><script async src="//embedr.flickr.com/assets/client-code.js" charset="utf-8"></script> +</div> + +It has been quite a while since the last release, apologies, but today +we are happy to be releasing **version 3.0** of the FixMyStreet Platform, +which has a number of improvements. + +### Front end improvements + +* FixMyStreet can now be installed as a progressive web app. This means we've +added a web manifest (and an admin UI for managing this) and a basic service +worker that shows a page if you're offline, and continues the functionality of +allowing staff users to store and view their shortlisted reports offline. + + If you serve your site over HTTPS, you will be able to add the website to +your homescreen (browsers may prompt the user) and have it work like an app. +This provides us with a solid base on which to continue improving this in +future, including hopefully adding functionality such as offline report drafting +through the web site. + + <div class="r" style="height:217px;overflow:hidden"> + <a href="https://user-images.githubusercontent.com/739624/58807589-406d1480-8610-11e9-8208-ca71e3e0424f.png"> + <img style="margin-top:-450px" alt="Screenshot of mobile filters" src="https://user-images.githubusercontent.com/739624/58807589-406d1480-8610-11e9-8208-ca71e3e0424f.png"> + </a> + </div> + +* Various improvements have been made to the site on mobile – the "try again" process +is clearer, duplicate suggestions show an inline map, the photo upload message is +better, and map filters can now be accessed. + +* Category groups are now used wherever a category list is shown – admin pages, +map filters, and so on; and you can pass a `filter_category` or `filter_group` +parameter to the front page or around page to pre-select that option, which +makes it easier to deep link to FixMyStreet from a page or form on another site. + +* <img src="https://user-images.githubusercontent.com/4776/71002776-e4636c80-20d7-11ea-995b-72cfec673f73.png" +align="right" style="max-width:25%" hspace="8" alt="Screenshot of map geolocation blue dot"> + + If you use geolocation, your location will now be displayed on the map, as +shown in the screenshot. + +* As asked for a few times on our mailing list, we now use a report's image as +its OpenGraph image on an individual report page when shared. + +* We've added XSL to our RSS feeds which means browsers no longer display them +as raw XML but as a nice simple web page that explains its purpose. Before +and after shots below: + +<div style="height:250px; overflow:hidden; text-align: center"> +<img alt="RSS feed before changes, raw XML" hspace="8" align="top" style="max-width:40%" src="https://user-images.githubusercontent.com/154364/68796646-24ec4800-064b-11ea-8c21-607fc8198fb9.png"> +<img alt="RSS feed after changes, looks much nicer" hspace="8" align="top" style="max-width:40%" src="https://user-images.githubusercontent.com/739624/68948832-a9a4a680-07b0-11ea-9e7b-4d53e329a35a.png"> +</div> + +### Security + +All template variables are now automatically escaped by default, to help +protect against any future XSS vulnerabilities. We also rotate the user's +session ID after successful login, and scrub the admin description fields. + +If any of your own templates outputs a variable that contains HTML that you +wish to continue to allow to display as HTML, you will need to alter your +template to escape the variable with the `safe` filter, e.g. `[% some_html | +safe %]`. + +### Admin improvements + +* FixMyStreet now has a new roles system, allowing you to create groups of +permissions and apply those roles to users. + + <div class="r" style="height:280px;overflow:auto"><a href="https://user-images.githubusercontent.com/739624/65964516-0e03e480-e455-11e9-8c56-f4bb78096918.png"><img alt="Category edit form screenshot" src="https://user-images.githubusercontent.com/739624/65964516-0e03e480-e455-11e9-8c56-f4bb78096918.png"></a></div> + +* The category edit form has been drastically improved; category names can now be +edited, categories can be listed under more than one group, and categories or +particular extra questions can disable the reporting form (for e.g. emergency +"please call" categories or questions). + +* Two-factor authentication can be used by any staff member, and you can choose +to optionally enforce it for all staff. + +* The admin report edit page now stores moderation history, like the front end, + and you can now view a user's admin log history. + +* <img alt="Heatmap web page" src="https://user-images.githubusercontent.com/4776/72752804-0eb6b700-3bbb-11ea-915b-5afde5235014.png" + align="right" style="max-width:50%" hspace="8"> + + We've added a heatmap dashboard for staff users, which can show hotspots. +To enable this, you will need to add `heatmap: { yourcobrand: 1 }` to your +`COBRAND_FEATURES` configuration. + +* There's a new "staff only" contact state, for categories that can only be + used by staff. + +* Staff users can report as other users even if they only have a name, + and can sign other people up to alerts. + +### Bugfixes + +Of course there have been a lot of bugfixes as well. One I remember is +when going back to the initial state with popstate, a change event was +being triggered on every single option of the filter selects. This led +to a lot of change events running on the category/status multi-selects +which then needlessly repeated the same activities over and over. This +locked up the browser for seconds in locations with many categories. +Below is a chart showing browser performance before and after: + + + + +### Development improvements + +We've upgraded the underlying framework and other packages, added a banner to +the staging website/emails to make it obvious when you're in development, added +configuration for admin resending, a Content-Security-Policy header, and +stopped hard coding the site name in the database fixture. + +### Open311 improvements + +* It is now possible for an external Open311 service to POST updates on a report +to FixMyStreet, rather than have FixMyStreet poll an external service for updates. + +* Email templates can include a placeholder to include the description fetched + from the Open311 server in the update. + +* Private reports are supported, in that an Open311 server can mark a category + as private which will then automatically mark all reports sent and received + in that category as private. + +* Meta questions added in the admin can be marked as protected so that they + won't be overridden by data fetched from an Open311 server. This is useful + for e.g. an "emergency" question that the Open311 server does not care about. + +### Upgrading + +As mentioned above, but it is worth repeating, if any of your own templates +outputs a variable that contains HTML that you wish to continue to allow to +display as HTML, you will need to alter your template to escape the variable +with the `safe` filter, e.g. `[% some_html | safe %]`. + +A full list of changes can be seen in the +[changelog](https://github.com/mysociety/fixmystreet/releases/tag/v3.0) as usual. diff --git a/docs/_posts/2020-05-06-v3.0.1.md b/docs/_posts/2020-05-06-v3.0.1.md new file mode 100644 index 000000000..0ac1e6304 --- /dev/null +++ b/docs/_posts/2020-05-06-v3.0.1.md @@ -0,0 +1,68 @@ +--- +layout: post +title: Version 3.0.1 +author: matthew +--- + +<div class="r" align="right"> +</div> + +First of all, I hope you are all safe wherever you may be. We held a couple of +FixMyStreet user groups recently for body users of FixMyStreet in the UK, and +someone from a large body said that their FixMyStreet installation was proving +really useful in these times, as they were making far fewer internal reports +due to the UK lockdown. + +Admist all this, we continue to develop the software, and today are releasing +**version 3.0.1**, a bugfix release with a couple of new features. + +### Admin improvements + +You can now provide an automatic initial update on reports made in a particular +category to a particular body, perhaps to provide information on timings or +similar. Make sure the body has a user to associate comments with, and then add +a response template in the Open state with auto-response checked, restricted to +a list of categories if you wish. After that, the template will be used to +provide an initial update on new reports made. + +We have also added "staff-only" categories, which are categories that staff +users can see but normal users cannot. One council is using this to provide +emergency categories that their contact centre staff can use to make reports +after manual triage. + +The dashboard export and report search should now be quicker, after some +investigation that area. We've also moved the overall stats off the index page +to the stats page, so the index page loads more quickly. + +### Bugfixes + +Thanks to those of you letting us know about bugs or problems. Those we have +fixed include an incorrect To header on emails about inactive accounts, a +couple of issues with the front page recent reports list showing different +results depending on whether the cache was used or not, and a double escape in +the Google Maps URL. + +Others we have fixed include maintaining the category group on pin move with +same category in multiple groups, and fixing sorting by most commented on +the `/around` map view. + +### Development improvements + +As well as the cron scripts, this release now includes a dæmon that you +can use to send reports and updates. Using the dæmon will mean reports +and updates are sent almost immediately after they are confirmed, but will +require a bit more setup, as you'll need to set it up as a dæmon running +all the time in your system. We've provided an example config file for systemd +to hopefully help with that. If you do run the dæmon, be sure to remove +the lines of your crontab that send reports and updates :) + +Alongside that, `send-reports` no longer prints out failures in verbose mode, +there is a separate `send-reports-failure-summary` script to do that. Also the +fetch-comments and fetch-reports scripts have been consolidated into one +`fetch` script, which can also now parallelize fetching. + +### Upgrading + +A full list of changes can be seen in the +[changelog](https://github.com/mysociety/fixmystreet/releases/tag/v3.0.1) as usual. + diff --git a/docs/assets/img/pro-user-guide/edit-category-notice.png b/docs/assets/img/pro-user-guide/edit-category-notice.png Binary files differnew file mode 100644 index 000000000..67042ea1a --- /dev/null +++ b/docs/assets/img/pro-user-guide/edit-category-notice.png diff --git a/docs/assets/img/pro-user-guide/edit-category-page.png b/docs/assets/img/pro-user-guide/edit-category-page.png Binary files differindex 385633431..8b029faa0 100644 --- a/docs/assets/img/pro-user-guide/edit-category-page.png +++ b/docs/assets/img/pro-user-guide/edit-category-page.png diff --git a/docs/customising/config.md b/docs/customising/config.md index d83e00472..c5ac015b7 100644 --- a/docs/customising/config.md +++ b/docs/customising/config.md @@ -56,6 +56,7 @@ The following are all the configuration settings that you can change in `conf/ge * <code><a href="#base_url">BASE_URL</a></code> * <code><a href="#secure_proxy_ssl_header">SECURE_PROXY_SSL_HEADER</a></code> +* <code><a href="#content_security_policy">CONTENT_SECURITY_POLICY</a></code> * <code><a href="#geo_cache">GEO_CACHE</a></code> * <code><a href="#admin_base_url">ADMIN_BASE_URL</a></code> @@ -202,6 +203,33 @@ The following are all the configuration settings that you can change in `conf/ge </dd> <dt> + <a name="content_security_policy"><code>CONTENT_SECURITY_POLICY</code></a> + </dt> + <dd> + A Content-Security-Policy header can prevent cross-site scripting, + clickjacking and other code injection attacks (see + <a href="https://en.wikipedia.org/wiki/Content_Security_Policy">Wikipedia</a> + for more). To have FixMyStreet output such a header, set this setting to 1. + If you load third-party JavaScript on your site, you will need to set this + setting to a space-separated list of domains; whatever is here, if not 1, + will be included in the header output. + <div class="more-info"> + <p>Example:</p> + <ul class="examples"> + <li> + <code>CONTENT_SECURITY_POLICY: 1</code> + </li> + <li> + <code>CONTENT_SECURITY_POLICY: 'www.example.org other.example.org'</code> + </li> + <li> + <code>CONTENT_SECURITY_POLICY: [ 'www.example.org', 'other.example.org' ]</code> + </li> + </ul> + </div> + </dd> + + <dt> <a name="email_domain"><code>EMAIL_DOMAIN</code></a>, <a name="contact_email"><code>CONTACT_EMAIL</code></a> & <a name="contact_name"><code>CONTACT_NAME</code></a> @@ -283,12 +311,23 @@ The following are all the configuration settings that you can change in `conf/ge <p> A variety of flags that change the behaviour of a site when <code><a href="#staging_site">STAGING_SITE</a></code> is <code>1</code>. - <code>send_reports</code> being set to 0 will + </p> + <p> + Setting <code>send_reports</code> to <code>0</code> will <a href="{{ "/customising/send_reports" | relative_url }}">send reports</a> to the reporter <em>instead of</em> the relevant body's - contact address; <code>skip_checks</code> will stop cobrands from + contact address. + </p> + <p> + Setting <code>skip_checks</code> to <code>1</code> will stop cobrands from performing some checks such as the map pin location being within their - covered area, which makes testing multiple cobrands much easier; + covered area, which makes testing multiple cobrands much easier. + </p> + <p> + Setting <code>hide_staging_banner</code> to <code>1</code> will hide the + red “Staging site” banner in the top left corner of the site. + </p> + <p> <code>enable_appcache</code> lets you say whether the appcache should be active or not. </p> @@ -308,13 +347,13 @@ The following are all the configuration settings that you can change in `conf/ge STAGING_FLAGS: send_reports: 0 skip_checks: 1 - enable_appcache: 0 + hide_staging_banner: 1 </pre> </div> <p> Any reports created will now be sent to the email of the reporter - and <em>not</em> the body's; any location checks are skipped, and - we won't ever use appcache. Great for testing! + and <em>not</em> the body's; and any location checks are skipped. + Great for testing! </p> </dd> diff --git a/docs/customising/geocoder.md b/docs/customising/geocoder.md index 4dc44b507..6e5e54c4c 100644 --- a/docs/customising/geocoder.md +++ b/docs/customising/geocoder.md @@ -30,6 +30,27 @@ a specific country or city. The options vary [depending on which geocoder you use]({{ "/customising/config/#geocoding_disambiguation" | relative_url }}). +If you're running a site in the UK and want junction lookup (e.g. "M5 junction +11a") then see the [Junction lookup](#junction-lookup) section below. + ## Detailed flow: location → map pin → drop-down menu  + +## Junction lookup + +If the site is going to be run in the UK and you'd like the ability to do +junction lookups, i.e. allow the user to search for "M60, Junction 2" and have +it geocode to the correct location, then you'll need to generate a junctions +database. + +{% highlight bash %} +$ mkdir ../data +$ wget https://www.whatdotheyknow.com/request/272238/response/675823/attach/2/Gazetteer%20All%20Mposts%20only.zip +$ unzip Gazetteer\ All\ Mposts\ only.zip +$ in2csv Gazetteer_All_Mposts_only.xlsx > markerposts.csv +$ bin/make-junctions-database markerposts.csv +{% endhighlight %} + +This will create a SQLite database at `../data/roads.sqlite`. If this is present +then it will be used by the postcode search to do a junction lookup. diff --git a/docs/customising/templates.md b/docs/customising/templates.md index 793156f70..303dd6f0d 100644 --- a/docs/customising/templates.md +++ b/docs/customising/templates.md @@ -109,5 +109,5 @@ and click the email you wish to preview. To include an inline logo in your HTML email, put it at `web/cobrands/yourcobrands/images/email-logo.gif` and make sure `logo_width` and `logo_height` are set appropriately in your -`_email_setting_overrides.html`. The email template should then pick it up +`_email_color_overrides.html`. The email template should then pick it up automatically. diff --git a/docs/install/ami.md b/docs/install/ami.md index fd283945a..fd165691e 100644 --- a/docs/install/ami.md +++ b/docs/install/ami.md @@ -24,9 +24,9 @@ for a year](http://aws.amazon.com/free/). ### Using our pre-built AMI The AMI we've prepared for you can be found in the **EU West (Ireland)** -region, with the ID `ami-05386aa7b2b4faee9` and name "FixMyStreet installation -full 2018-12-21". You can launch an instance based on that AMI with -[this link](https://console.aws.amazon.com/ec2/home?region=eu-west-1#launchAmi=ami-05386aa7b2b4faee9). +region, with the ID `ami-03a135410792a8eb5` and name "FixMyStreet installation +full 2020-03-05". You can launch an instance based on that AMI with +[this link](https://console.aws.amazon.com/ec2/home?region=eu-west-1#launchAmi=ami-03a135410792a8eb5). This AMI is based on the [latest tagged release](https://github.com/mysociety/fixmystreet/releases) and contains everything you need to get a base install up and running. diff --git a/docs/install/docker.md b/docs/install/docker.md index 3c716a5da..79e3bcb84 100644 --- a/docs/install/docker.md +++ b/docs/install/docker.md @@ -46,7 +46,8 @@ repository/directory that contains the following (all items optional): perllib/FixMyStreet/Cobrand/(CoBrand.pm) web/cobrands/(cobrand)/ -Create a docker-compose.override.yml file containing: +Create a docker-compose.override.yml file in the root of the fixmystreet +repository (alongside docker-compose.yml) containing: version: '3' diff --git a/docs/install/vagrant.md b/docs/install/vagrant.md index 98f846644..55b7802ac 100644 --- a/docs/install/vagrant.md +++ b/docs/install/vagrant.md @@ -68,3 +68,33 @@ The server will now be running and you can visit it at the address The username and password to access the admin (at address `http://fixmystreet.127.0.0.1.xip.io:3000/admin/`) will have been shown at the end of the `vagrant up` output. + +## Editing a cobrand + +If you're working on a cobrand in an external repository, you will want that +cobrand available inside the virtual machine as well. To do this, you will need +to add a line to the Vagrantfile in the FixMyStreet repository, along the lines of: + + config.vm.synced_folder “../your-cobrand”, “/home/vagrant/your-cobrand”, :owner => “vagrant”, :group => “vagrant” + +Then restart your vagrant box. Once that is done, you can set up symlinks +inside Vagrant, linking the various components of your cobrand into the right +places in the core repository. For example, if your filesystem has a layout +like this: + + www/ + fixmystreet/ # The checkout of the fixmystreet repository + my-cobrand-repo/ + templates/web/(cobrand)/ + templates/email/(cobrand)/ + perllib/FixMyStreet/Cobrand/(CoBrand.pm) + web/cobrands/(cobrand)/ + +Then within the fixmystreet repository, you could run: + + ln -s -f -v ../my-cobrand-repo/perllib/FixMyStreet/Cobrand/(Cobrand.pm) perllib/FixMyStreet/Cobrand/ + ln -s -f -v ../my-cobrand-repo/templates/web/(cobrand) templates/web/ + ln -s -f -v ../my-cobrand-repo/templates/email/(cobrand) templates/email/ + ln -s -f -v ../my-cobrand-repo/web/cobrands/(cobrand) web/cobrands/ + +Restart the development server and your cobrand should be accessible. diff --git a/docs/pro-manual/admin-tasks.md b/docs/pro-manual/admin-tasks.md index 3dd6e30e1..d4f48a5eb 100644 --- a/docs/pro-manual/admin-tasks.md +++ b/docs/pro-manual/admin-tasks.md @@ -1,15 +1,20 @@ --- layout: pro title: Administrator tasks -order: 4 +order: 5 user-guide: true --- # Administrator tasks -If you find that you cannot perform any of the tasks detailed below when logged into your FixMyStreet account, it is likely that your account has not been given the relevant permissions. +If you find that you cannot perform any of the tasks detailed below when logged +into your FixMyStreet account, it is likely that your account has not been +given the relevant permissions or role. -Contact your account administrator to request these permissions. Accompanying each task covered in this document, you will see ‘permissions required’, listing the checkboxes an Administrator must tick on your account for you to be able to perform this task. +Contact your account administrator to request these permissions. Accompanying +each task covered in this document, you will see ‘permissions required’, +listing the permissions an Administrator must give you (either individually or +via a role) for you to be able to perform this task. {% include admin-tasks-content.md %} diff --git a/docs/pro-manual/deep-linking.md b/docs/pro-manual/deep-linking.md new file mode 100644 index 000000000..dae9480e8 --- /dev/null +++ b/docs/pro-manual/deep-linking.md @@ -0,0 +1,92 @@ +--- +layout: pro +title: FixMyStreet Pro deep linking +order: 3 +user-guide: true +categories: user-guide +--- + +# FixMyStreet Pro deep linking + +Your user will most likely be starting their journey of reporting an issue on +your own website. That may be a generic report an issue page, but could be a +page on a particular type of issue, such as Graffiti or Potholes. + +## Generic reporting page + +On a generic page, you can link directly to the FixMyStreet Pro front page with +a normal link, or embed a FixMyStreet Pro search form into the page, taking the +user straight to a map page. + +### Direct link + +Your website will have its own way of adding links. + +`<a href="https://your.fixmystreet.example/">Report a problem</a>` + +### Embedded form + +An embedded form should be a normal HTML form +whose action is `https://your.fixmystreet.example/around` and contains a text +input with name `pc`. Ideally it would also have a hidden field called `js` +that is set to 1 if the user has JavaScript enabled (this can speed the response up). +If you want to get really fancy and add geolocation to your own site, you can +also link to an `/around` page with parameters `latitude` and `longitude`. + +```html +<form action="https://your.fixmystreet.example/around"> +<label for="pc">Search term:</label> +<input type="text" id="pc" name="pc" value=""> +<input type="submit" value="Go"> +</form> +``` + +## Specific category page + +On a category page, you can also do either of the above things, but also +include an extra parameter that will restrict the default map view and +reporting to a particular category, categories, or parent category if you use +subcategories. + +### Direct link + +To link to one category, add a `filter_category` parameter with the +category/subcategory you wish to pre-filter, or provide multiple categories +separated by a comma (if one of your categories contains a comma, surround it +with double quotes). If you use subcategories in your installation and wish to +restrict the map to a particular top-level category, not an individual +subcategory, you should use a `filter_group` parameter with the name of the +top-level category. + +* https://your.fixmystreet.example/?filter_category=Graffiti + +* https://your.fixmystreet.example/?filter_category="A,+B,+and+C" + +* https://your.fixmystreet.example/?filter_category=Graffiti,Flyposting + +* https://your.fixmystreet.example/?filter_group=Road+defects + +### Embedded form + +Within a web form, specify the `filter_category` or `filter_group` as a hidden +field for equivalent behaviour to the link. + +Using `filter_category` will restrict the map pins to that category, and +automatically use that category when a report is begun; if you use multiple +categories, the map is filtered but no category is selected when a report is +begun. Using `filter_group` will restrict the map pins to all subcategories in +that category, preselect that category when a report is begun and the user will +still need to pick the correct subcategory. + +```html +<form action="https://your.fixmystreet.example/around"> +<input type="hidden" name="filter_category" value="Graffiti"> +<label for="pc">Search term:</label> +<input type="text" id="pc" name="pc" value=""> +<input type="submit" value="Go"> +</form> +``` + +* `<input type="hidden" name="filter_group" value="Trees">` + +* `<input type="hidden" name="filter_category" value='Trees,"Cars, bikes, trains"'>` diff --git a/docs/pro-manual/index.md b/docs/pro-manual/index.md index 85ed8377f..ee5af3990 100644 --- a/docs/pro-manual/index.md +++ b/docs/pro-manual/index.md @@ -48,7 +48,7 @@ been developed in consultation with UK councils. FixMyStreet Pro offers enhanced features to client councils, including: - A FixMyStreet instance for the council website, providing the council's fault-reporting interface, and branded to look like the rest of the site -- A variety of permissions which can be allocated to staff at a granular level +- A variety of permissions which can be allocated to staff at a granular level, and grouped into custom roles - Simple channels of communication with report makers, through status updates and template responses - The ability to moderate, edit or remove reports @@ -58,4 +58,4 @@ Depending on which type of installation the council has opted for, there may als - The ability to view and update reports even when offline - Workflow prioritisation and shortlist generation - The integration of council-owned assets, such as bins or streetlights, into the map -interface
\ No newline at end of file +interface diff --git a/docs/pro-manual/staff-user-accounts.md b/docs/pro-manual/staff-user-accounts.md index 3712dfcf5..37997ada2 100644 --- a/docs/pro-manual/staff-user-accounts.md +++ b/docs/pro-manual/staff-user-accounts.md @@ -1,7 +1,7 @@ --- layout: pro title: FixMyStreet Pro staff user accounts -order: 3 +order: 4 user-guide: true categories: user-guide --- @@ -46,13 +46,14 @@ the end of your session. You can change your password at any time by clicking on ‘Your account’ in the top menu bar. -## Permissions +## Permissions and Roles -Staff accounts can be assigned a variety of permissions, depending on each team member’s needs -or responsibilities. Permissions can be combined in any way. +Staff accounts can be assigned a variety of permissions or roles, depending on +each team member’s needs or responsibilities. Permissions can be combined in +any way, grouped into custom roles, or applied individually. Some common staff roles and the appropriate permissions are shown in the table below, but you -can tailor your permissions to best reflect your team’s operations. +can tailor your permissions and roles to best reflect your team’s operations. <table class="table table--responsive"> diff --git a/docs/running/index.md b/docs/running/index.md index e552826dd..d618a241a 100644 --- a/docs/running/index.md +++ b/docs/running/index.md @@ -26,19 +26,5 @@ everything running smoothly. </p> By default the administration pages for FixMyStreet can be found on your installation at `/admin`. -When you first deploy your installation of FixMyStreet, this is just a public -directory. Obviously, for a -<a href="{{ "/glossary/#production" | relative_url }}" class="glossary__link">production</a> -server you should **restrict access to -authorised users only**. For example, if you're running the Apache webserver, -you can use `htaccess` to do this. - -<div class="attention-box warning"> - <p><strong>You <em>must</em> restrict access to admin</strong> - <br> - Never put your FixMyStreet site live until you have protected - your admin pages. - </p> -</div> - -If you can configure your webserver to only allow access to the admin URLs over https, then you should do that, and deny access any other way. It's also a good idea to IP-restrict access to admin URLs if you know where your authorised users will be accessing them from. +Users that have the right to access the administration pages should also +see an Admin-link in the navigation bar on the front page. diff --git a/docs/running/staff.md b/docs/running/staff.md index 77ca05c8e..4330190e2 100644 --- a/docs/running/staff.md +++ b/docs/running/staff.md @@ -11,8 +11,8 @@ author: matthew Staff users are a middle rung of account, inbetween normal users of the site and superusers with full access to everything. They are associated with a particular body, and can have access to different features, depending upon the -permissions granted to them. All their abilities only apply to reports made -to the body with which they are associated; all staff users have access to all -report states, not just open/fixed. +permissions or roles granted to them. All their abilities only apply to reports +made to the body with which they are associated; all staff users have access to +all report states, not just open/fixed. {% include admin-tasks-content.md %} diff --git a/docs/running/users.md b/docs/running/users.md index 87b38f0d2..48cb2a791 100644 --- a/docs/running/users.md +++ b/docs/running/users.md @@ -117,12 +117,13 @@ FixMyStreet website). You can mark any FixMyStreet user as belonging to a body. This marks them as a "staff user" for that body. Staff users have extra privileges *which only apply to problem reports under the jurisdiction of the body to which the use -belongs*. These permissions can be set on a per-user basis. +belongs*. Permissions can be grouped into custom roles, and these roles and +individual permissions can be set on a per-user basis. To set (or revoke) staff user status, choose **Users** in the admin, and enter the email or name. (It's also possible to access a user via the reports they have made). Choose the appropriate body from the **Body** dropdown. Normal -(not staff) users have no body associated. Then you can assign permissions +(not staff) users have no body associated. Then you can assign roles or permissions to that user, depending upon what they require access to. For full details of what staff accounts can do, please see the |