aboutsummaryrefslogtreecommitdiffstats
path: root/templates
diff options
context:
space:
mode:
Diffstat (limited to 'templates')
-rw-r--r--templates/email/fixmystreet/alert-problem-area.txt23
-rw-r--r--templates/email/fixmystreet/alert-problem-council.txt22
-rw-r--r--templates/email/fixmystreet/alert-problem-nearby.txt21
-rw-r--r--templates/email/fixmystreet/alert-problem-ward.txt23
-rw-r--r--templates/email/fixmystreet/alert-problem.txt21
-rw-r--r--templates/email/fixmystreet/alert-update.txt28
-rw-r--r--templates/web/bromley/report/_item.html25
-rw-r--r--templates/web/default/admin/bodies.html100
-rw-r--r--templates/web/default/admin/body-form.html169
-rw-r--r--templates/web/default/admin/body.html243
-rw-r--r--templates/web/default/admin/body_edit.html2
-rw-r--r--templates/web/default/admin/config_page.html146
-rw-r--r--templates/web/default/admin/edit-league.html7
-rw-r--r--templates/web/default/admin/flagged.html39
-rw-r--r--templates/web/default/admin/header.html2
-rw-r--r--templates/web/default/admin/index.html10
-rw-r--r--templates/web/default/admin/list_updates.html20
-rw-r--r--templates/web/default/admin/problem_row.html2
-rw-r--r--templates/web/default/admin/report_edit.html9
-rw-r--r--templates/web/default/admin/reports.html6
-rw-r--r--templates/web/default/admin/stats.html12
-rw-r--r--templates/web/default/admin/timeline.html6
-rw-r--r--templates/web/default/admin/update_edit.html9
-rw-r--r--templates/web/default/admin/user-form.html44
-rw-r--r--templates/web/default/admin/users.html10
-rw-r--r--templates/web/default/common_header_tags.html22
-rw-r--r--templates/web/default/dashboard/index.html1
-rwxr-xr-xtemplates/web/default/faq/faq-en-gb.html25
-rw-r--r--templates/web/default/js/translation_strings.html6
-rw-r--r--templates/web/default/maps/bing.html18
-rw-r--r--templates/web/default/maps/fms.html2
-rw-r--r--templates/web/default/maps/google-ol.html15
-rw-r--r--templates/web/default/maps/openlayers.html14
-rw-r--r--templates/web/default/maps/osm-streetview.html2
-rw-r--r--templates/web/default/maps/osm.html2
-rw-r--r--templates/web/default/my/my.html5
-rw-r--r--templates/web/default/report/_council_sent_info.html5
-rw-r--r--templates/web/default/report/_main.html6
-rw-r--r--templates/web/default/report/updates.html4
-rwxr-xr-xtemplates/web/default/reports/body.html4
-rw-r--r--templates/web/fixmindelo/footer.html54
-rw-r--r--templates/web/fixmindelo/static/privacy.html114
-rw-r--r--templates/web/fixmystreet/around/postcode_form.html5
-rwxr-xr-xtemplates/web/fixmystreet/faq/faq-en-gb.html34
-rw-r--r--templates/web/fixmystreet/footer.html11
-rw-r--r--templates/web/fixmystreet/header.html10
-rw-r--r--templates/web/fixmystreet/index.html8
-rw-r--r--templates/web/fixmystreet/my/my.html7
-rw-r--r--templates/web/hart/_hart_hants_note.html5
-rw-r--r--templates/web/hart/around/intro.html4
-rw-r--r--templates/web/hart/contact/submit.html19
-rwxr-xr-xtemplates/web/hart/faq/faq-en-gb.html132
-rw-r--r--templates/web/hart/footer.html110
-rw-r--r--templates/web/hart/header.html82
-rw-r--r--templates/web/hart/index-steps.html18
-rw-r--r--templates/web/hart/report/new/councils_extra_text.html10
-rw-r--r--templates/web/hart/tokens/confirm_problem.html21
-rw-r--r--templates/web/oxfordshire/around/extra_text.html5
-rw-r--r--templates/web/oxfordshire/around/intro.html2
-rw-r--r--templates/web/oxfordshire/footer.html23
-rw-r--r--templates/web/oxfordshire/js/translation_strings.html40
-rw-r--r--templates/web/oxfordshire/report/_council_sent_info.html16
-rw-r--r--templates/web/oxfordshire/report/new/councils_text_all.html29
-rw-r--r--templates/web/southampton/header.html2
-rw-r--r--templates/web/zurich/admin/body-form.html10
-rw-r--r--templates/web/zurich/admin/header.html1
-rw-r--r--templates/web/zurich/admin/list_updates.html31
-rw-r--r--templates/web/zurich/admin/problem_row.html8
-rw-r--r--templates/web/zurich/admin/report_edit-sdm.html7
-rw-r--r--templates/web/zurich/admin/report_edit.html32
-rw-r--r--templates/web/zurich/admin/reports.html1
-rw-r--r--templates/web/zurich/admin/stats.html2
-rw-r--r--templates/web/zurich/auth/general.html6
-rw-r--r--templates/web/zurich/js/validation_rules.html8
-rw-r--r--templates/web/zurich/report/new/fill_in_details_form.html5
-rw-r--r--templates/web/zurich/report/photo-js.html6
76 files changed, 1692 insertions, 316 deletions
diff --git a/templates/email/fixmystreet/alert-problem-area.txt b/templates/email/fixmystreet/alert-problem-area.txt
new file mode 100644
index 000000000..4f1176685
--- /dev/null
+++ b/templates/email/fixmystreet/alert-problem-area.txt
@@ -0,0 +1,23 @@
+Subject: New problems in <?=$values['area_name']?> on FixMyStreet
+
+The following new problems have been added within
+<?=$values['area_name']?>:
+
+<?=$values['data']?>
+
+-------
+
+We're running a survey to help us understand who uses our sites.
+If you have 10-15 minutes to spare then we'd be grateful if you
+could take part:
+ http://questions.mysociety.org/S/fms/e/
+
+Thank you!
+
+-------
+
+<?=$values['signature']?>
+
+To stop receiving emails when there are new problems in
+<?=$values['area_name']?>, please follow this link:
+<?=$values['unsubscribe_url']?>
diff --git a/templates/email/fixmystreet/alert-problem-council.txt b/templates/email/fixmystreet/alert-problem-council.txt
new file mode 100644
index 000000000..7c17ae163
--- /dev/null
+++ b/templates/email/fixmystreet/alert-problem-council.txt
@@ -0,0 +1,22 @@
+Subject: New problems reported to <?=$values['area_name']?> on FixMyStreet
+
+The following new problems have been reported to <?=$values['area_name']?>:
+
+<?=$values['data']?>
+
+-------
+
+We're running a survey to help us understand who uses our sites.
+If you have 10-15 minutes to spare then we'd be grateful if you
+could take part:
+ http://questions.mysociety.org/S/fms/e/
+
+Thank you!
+
+-------
+
+<?=$values['signature']?>
+
+To stop receiving emails when there are new problems reported to
+<?=$values['area_name']?>, please follow this link:
+<?=$values['unsubscribe_url']?>
diff --git a/templates/email/fixmystreet/alert-problem-nearby.txt b/templates/email/fixmystreet/alert-problem-nearby.txt
new file mode 100644
index 000000000..44fbae742
--- /dev/null
+++ b/templates/email/fixmystreet/alert-problem-nearby.txt
@@ -0,0 +1,21 @@
+Subject: New nearby problems on FixMyStreet
+
+The following nearby problems have been added:
+
+<?=$values['data']?>
+
+-------
+
+We're running a survey to help us understand who uses our sites.
+If you have 10-15 minutes to spare then we'd be grateful if you
+could take part:
+ http://questions.mysociety.org/S/fms/e/
+
+Thank you!
+
+-------
+
+<?=$values['signature']?>
+
+To stop receiving emails when there are nearby problems,
+please follow this link: <?=$values['unsubscribe_url']?>
diff --git a/templates/email/fixmystreet/alert-problem-ward.txt b/templates/email/fixmystreet/alert-problem-ward.txt
new file mode 100644
index 000000000..308f52ddd
--- /dev/null
+++ b/templates/email/fixmystreet/alert-problem-ward.txt
@@ -0,0 +1,23 @@
+Subject: New problems reported to <?=$values['area_name']?> within <?=$values['ward_name']?> on FixMyStreet
+
+The following new problems have been reported to <?=$values['area_name']?>
+within <?=$values['ward_name']?>:
+
+<?=$values['data']?>
+
+-------
+
+We're running a survey to help us understand who uses our sites.
+If you have 10-15 minutes to spare then we'd be grateful if you
+could take part:
+ http://questions.mysociety.org/S/fms/e/
+
+Thank you!
+
+-------
+
+<?=$values['signature']?>
+
+To stop receiving emails when there are new problems reported to
+<?=$values['area_name']?> within <?=$values['ward_name']?>,
+please follow this link: <?=$values['unsubscribe_url']?>
diff --git a/templates/email/fixmystreet/alert-problem.txt b/templates/email/fixmystreet/alert-problem.txt
new file mode 100644
index 000000000..3902f723b
--- /dev/null
+++ b/templates/email/fixmystreet/alert-problem.txt
@@ -0,0 +1,21 @@
+Subject: New problems on FixMyStreet
+
+The following new problems have been added:
+
+<?=$values['data']?>
+
+-------
+
+We're running a survey to help us understand who uses our sites.
+If you have 10-15 minutes to spare then we'd be grateful if you
+could take part:
+ http://questions.mysociety.org/S/fms/e/
+
+Thank you!
+
+-------
+
+<?=$values['signature']?>
+
+To stop receiving emails when there are new problems,
+please follow this link: <?=$values['unsubscribe_url']?>
diff --git a/templates/email/fixmystreet/alert-update.txt b/templates/email/fixmystreet/alert-update.txt
new file mode 100644
index 000000000..c9054fe10
--- /dev/null
+++ b/templates/email/fixmystreet/alert-update.txt
@@ -0,0 +1,28 @@
+Subject: New updates on problem - '<?=$values['title']?>'
+
+The following updates have been left on this problem:
+
+<?=$values['data']?>
+
+<?=$values['state_message']?>
+
+To view or reply to these updates, please visit the following URL:
+ <?=$values['problem_url']?>
+
+You cannot contact anyone by replying to this email.
+
+-------
+
+We're running a survey to help us understand who uses our sites.
+If you have 10-15 minutes to spare then we'd be grateful if you
+could take part:
+ http://questions.mysociety.org/S/fms/e/
+
+Thank you!
+
+-------
+
+<?=$values['signature']?>
+
+To stop receiving emails when there are new updates on this problem,
+please follow this link: <?=$values['unsubscribe_url']?>
diff --git a/templates/web/bromley/report/_item.html b/templates/web/bromley/report/_item.html
new file mode 100644
index 000000000..cd3fbc18c
--- /dev/null
+++ b/templates/web/bromley/report/_item.html
@@ -0,0 +1,25 @@
+<li>
+<a class="text" href="[% c.uri_for('/report', problem.id ) %]">
+ [% IF problem.photo;
+ photo = problem.get_photo_params
+ %]
+ <img class="img" height="60" width="90" src="[% photo.url_fp %]" alt="">
+ [% END %]
+ <span>[% problem.title | html %]</span><br />
+ <small>[% prettify_dt( problem.confirmed, 1 ) %]
+ [%- IF dist %], [% dist %]km[% END %]
+ [%- IF include_lastupdate AND problem.confirmed != problem.lastupdate AND problem.whensent != problem.lastupdate %],
+ [% tprintf(loc('last updated %s'), prettify_dt( problem.lastupdate, 1 ) ) %]
+ [%- END %]
+ [% IF include_lastupdate %]
+ [% IF problem.bodies_str_ids.size > 1 %] [% loc('(sent to both)') %]
+ [% ELSIF problem.bodies_str_ids.size == 0 %] [% loc('(not sent to council)') %]
+ [% END %]
+ [% END %]
+ [% IF NOT no_fixed AND problem.is_fixed %]
+ [% loc('(fixed)') %]
+ [% ELSIF NOT no_fixed AND problem.is_closed %]
+ [% loc('(closed)') %]
+ [% END %]</small>
+</a>
+</li>
diff --git a/templates/web/default/admin/bodies.html b/templates/web/default/admin/bodies.html
index e0cf013d8..8bf7954f3 100644
--- a/templates/web/default/admin/bodies.html
+++ b/templates/web/default/admin/bodies.html
@@ -2,51 +2,63 @@
[% INCLUDE 'admin/edit-league.html' %]
-<table cellspacing="0" cellpadding="2" border="1">
- <tr>
- <th>[% loc('Name') %]</th>
+[% IF bodies.size == 0 %]
+ <p class="fms-admin-info">
+ [% loc('Currently no bodies have been created.') %]
+ <br>
+ [% loc('You need to add bodies (such as councils or departments) so that you can then add
+ the categories of problems they can handle (such as potholes or streetlights) and the
+ contacts (such as an email address) to which reports are sent.') %]
+ </p>
+[% ELSE %]
+ <table cellspacing="0" cellpadding="2" border="1">
+ <tr>
+ <th>[% loc('Name') %]</th>
+ [% IF c.cobrand.moniker == 'zurich' %]
+ <th>[% loc('Email') %]</th>
+ [% ELSE %]
+ <th>[% loc('Category') %]</th>
+ [% END %]
+ <th>[% loc('Deleted') %]</th>
+ </tr>
+ [%- FOREACH body IN bodies %]
+ [%- SET id = body.id %]
+ [% NEXT IF c.cobrand.moniker == 'zurich' AND admin_type == 'dm' AND (body.parent OR body.bodies) %]
+ <tr[% IF body.deleted %] class="adminhidden"[% END %]>
+ <td>
+ [% IF c.cobrand.moniker == 'zurich' %]
+ [% FILTER repeat(4*body.api_key) %]&nbsp;[% END %]
+ [% IF admin_type == 'super' %]
+ <a href="[% c.uri_for( 'body', id ) %]">[% body.name %]</a>
+ [% ELSE %]
+ [% body.name %]
+ [% END %]
+ [% ELSE %] [%# not Zurich: all bodies should be links %]
+ <a href="[% c.uri_for( 'body', id ) %]">[% body.name %]</a>
+ [%- ', ' _ body.parent.name IF body.parent -%]
+ [% END %]
+ </td>
[% IF c.cobrand.moniker == 'zurich' %]
- <th>[% loc('Email') %]</th>
+ <td>[% body.endpoint %]</td>
[% ELSE %]
- <th>[% loc('Category') %]</th>
- [% END %]
- </tr>
-[%- FOREACH body IN bodies %]
- [%- SET id = body.id %]
- [% NEXT IF c.cobrand.moniker == 'zurich' AND admin_type == 'dm' AND (body.parent OR body.bodies) %]
- <tr>
- <td>
- [% IF c.cobrand.moniker == 'zurich' %]
- [% FILTER repeat(4*body.api_key) %]&nbsp;[% END %]
- [% END %]
- [% IF admin_type == 'super' %]
- <a href="[% c.uri_for( 'body', id ) %]">[% body.name %]</a>
+ <td>
+ [% IF counts.$id %]
+ [% tprintf( loc('%d addresses'), counts.$id.c) IF c.cobrand.moniker != 'emptyhomes' %]
+ [% IF counts.$id.deleted %]
+ (1+ deleted)
+ [% ELSIF counts.$id.confirmed != counts.$id.c %]
+ (some unconfirmed)
+ [% END %]
[% ELSE %]
- [% body.name %]
- [% END %]
- [% IF c.cobrand.moniker != 'zurich' %]
- [%- ', ' _ body.parent.name IF body.parent -%]
+ no categories
[% END %]
- </td>
- [% IF c.cobrand.moniker == 'zurich' %]
- <td>[% body.endpoint %]</td>
- [% ELSE %]
- <td>
- [% IF counts.$id %]
- [% tprintf( loc('%d addresses'), counts.$id.c) IF c.cobrand.moniker != 'emptyhomes' %]
- [% IF counts.$id.deleted %]
- (1+ deleted)
- [% ELSIF counts.$id.confirmed != counts.$id.c %]
- (some unconfirmed)
- [% END %]
- [% ELSE %]
- no categories
- [% END %]
- </td>
- [% END %]
- </tr>
-[%- END %]
-</table>
+ </td>
+ [% END %]
+ <td>[% IF body.deleted %][% loc('Yes') %][% END %]</td>
+ </tr>
+ [%- END %]
+ </table>
+[% END %]
[% IF c.cobrand.moniker == 'zurich' %]
[% IF admin_type == 'super' %]
@@ -54,8 +66,10 @@
[% INCLUDE 'admin/body-form.html', body='' %]
[% END %]
[% ELSE %]
- <h2>[% loc('Add body') %]</h2>
- [% INCLUDE 'admin/body-form.html', body='' %]
+ <div class="admin-box">
+ <h2>[% loc('Add body') %]</h2>
+ [% INCLUDE 'admin/body-form.html', body='' %]
+ </div>
[% END %]
[% INCLUDE 'admin/footer.html' %]
diff --git a/templates/web/default/admin/body-form.html b/templates/web/default/admin/body-form.html
index 039d83ae2..f2eb505ab 100644
--- a/templates/web/default/admin/body-form.html
+++ b/templates/web/default/admin/body-form.html
@@ -1,10 +1,32 @@
<form method="post" action="[% body ? c.uri_for('body', body.id) : c.uri_for('bodies') %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
-
+ <div class="fms-admin-info">
+ [% loc(
+ "Add a <strong>body</strong> for each administrative body, such as a council or department
+ to which problem reports can be sent. You can add one or more contacts (for different
+ categories of problem) to each body."
+ ) %]
+ </div>
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "The body's <strong>name</strong> identifies the body (for example, <em>Borsetshire District Council</em>)
+ and may be displayed publically."
+ ) %]
+ </p>
+ </div>
<p>
<label for="name">[% loc('Name') %]</label>
<input type="text" name="name" id="name" value="[% body.name %]" size="50">
</p>
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "Identify a <strong>parent</strong> if this body is itself part of another body.
+ For basic installations, you don't need to join bodies in this way."
+ ) %]
+ </p>
+ </div>
<p>
<label for="parent">[% loc('Parent') %]</label>
<select name="parent" id="parent">
@@ -15,17 +37,62 @@
</select>
</p>
+ [% IF areas.size == 0 AND c.config.MAPIT_URL AND (NOT c.config.MAPIT_TYPES OR c.config.MAPIT_TYPES.size==O) %]
+ <p class="fms-admin-warning">
+ [% tprintf( loc(
+ '<code>MAPIT_URL</code> is set (<code>%s</code>) but no <code>MAPIT_TYPES</code>.<br>
+ This is probably why "area covered" is empty (below).<br>
+ Maybe add some <code>MAPIT_TYPES</code> to your config file?'), c.config.MAPIT_URL)
+ %]
+ </p>
+ [% END %]
+
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "This body will only be sent reports for problems that are located in the <strong>area covered</strong>.
+ A body will not receive any reports unless it covers at least one area."
+ ) %]
+ <br>
+ [% IF c.config.MAPIT_URL %]
+ [% tprintf( loc("The list of available areas is being provided by the MapIt service at %s."), c.config.MAPIT_URL) %]
+ [% ELSE %]
+ [% loc(
+ "No specific areas are currently available, because the <code>MAPIT_URL</code> in
+ your config file is not pointing to a live MapIt service.") %]
+ [% END %]
+ <br>
+ [% loc("For more information, see <a href='http://code.fixmystreet.com/customising/fms_and_mapit' class='admin-offsite-link'>How FixMyStreet uses Mapit</a>.")%]
+ </p>
+ </div>
<p>
<label for="area_ids">[% loc('Area covered') %]</label>
<select name="area_ids" id="area_ids" multiple>
<option value=""> -- [% loc('Select an area') %] -- </option>
+ [% SET body_areas = body.areas %]
[% FOR area IN areas %]
[% SET aid = area.id %]
- <option value="[% area.id %]"[% ' selected' IF body.areas.$aid %]>[% area.name %]</option>
+ <option value="[% area.id %]"[% ' selected' IF body_areas.$aid %]>[% area.name %]</option>
[% END %]
</select>
</p>
+ <div class="admin-hint">
+ <p>[% loc( "You can mark a body as deleted if you do not want it to be active on the site." ) %]</p>
+ </div>
+ <p>
+ <label for="deleted">[% loc('Flag as deleted') %]</label>
+ <input type="checkbox" name="deleted" id="deleted" value="1"[% ' checked' IF body.deleted %]>
+ </p>
+
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "The <strong>send method</strong> determines how problem reports will be sent to the body.
+ If you leave this blank, <strong>send method defaults to email</strong>."
+ ) %]
+ </p>
+ </div>
<p>
<label for="send_method">Send Method</label>
<select name="send_method" id="send_method">
@@ -36,46 +103,130 @@
</select>
</p>
+ <div class="admin-open311-only">
+ <p class="fms-admin-info">
+ [% loc(
+ "These settings are for bodies that use Open311 (or other back-end integration) to receive problem reports.<br>
+ <strong>You don't need to set them if the Send Method is email.</strong>.
+ For more information on Open311, see
+ <a href='http://www.mysociety.org/2013/01/17/open311-explained/' class='admin-offsite-link'>this article</a>.
+ "
+ ) %]
+ </p>
+
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "The <strong>endpoint</strong> is the URL of the service that FixMyStreet will connect to
+ when sending reports to this body."
+ ) %]
+ </p>
+ </div>
<p>
<label for="endpoint">[% loc('Endpoint') %]</label>
<input type="text" name="endpoint" id="endpoint" value="[% body.endpoint %]" size="50">
</p>
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "The <strong>jurisdiction</strong> is only needed if the endpoint is serving more
+ than one. If the body is running its own endpoint, you can usually leave this blank."
+ ) %]
+ </p>
+ </div>
<p>
<label for="jurisdiction">Open311 Jurisdiction</label>
<input type="text" name="jurisdiction" id="jurisdiction" value="[% body.jurisdiction %]" size="50">
</p>
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "Some endpoints require an <strong>API key</strong> to indicate that the reports are being
+ sent from your FixMyStreet installation."
+ ) %]
+ </p>
+ </div>
<p>
<label for="api_key">Open311 API Key</label>
<input type="text" name="api_key" id="api_key" value="[% body.api_key %]" size="25">
</p>
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "Enable <strong>Open311 update-sending</strong> if the endpoint will send and receive
+ updates to existing reports. If you're not sure, it probably does not, so leave this unchecked.
+ For more information, see
+ <a href='http://www.mysociety.org/2013/02/20/open311-extended/' class='admin-offsite-link'>this article</a>."
+ ) %]
+ </p>
+ </div>
<p>
<input type="checkbox" id="send_comments" name="send_comments"[% ' checked' IF body.send_comments %]>
- <label for="send_comments" class="inline">Use Open311 comment sending extension</label>
+ <label for="send_comments" class="inline">Use Open311 update-sending extension</label>
</p>
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "If you've enabled Open311 update-sending above, you must identify which
+ FixMyStreet <strong>user</strong> will be attributed as the creator of those updates
+ when they are shown on the site. Enter the ID (number) of that user."
+ ) %]
+ </p>
+ </div>
<p>
<label for"comment_user_id">User ID to attribute fetched comments to</label>
<input type="text" name="comment_user_id" value="[% body.comment_user_id %]">
</p>
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "If you've enabled Open311 update-sending above, enable <strong>suppression of alerts</strong>
+ if you do <strong>not</strong> want that user to be notified whenever these updates are created."
+ ) %]
+ </p>
+ </div>
<p>
<input type="checkbox" id="suppress_alerts" name="suppress_alerts"[% ' checked' IF body.suppress_alerts %]>
<label for="suppress_alerts" class="inline">Do not send email alerts on fetched comments to problem creator</label>
</p>
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "If you've enabled Open311 update-sending above, Open311 usually only accepts OPEN or CLOSED status in
+ its updates. Enable <strong>extended Open311 stauses</strong> if you want to allow extra states to be passed.
+ Check that your cobrand supports this feature before switching it on."
+ ) %]
+ </p>
+ </div>
<p>
- <input type="checkbox" id="can_be_devolved" name="can_be_devolved"[% ' checked' IF body.can_be_devolved %]>
- <label for="can_be_devolved" class="inline">Endpoint lookup can be devolved to contacts</label>
+ <input type="checkbox" id="send_extended_statuses" name="send_extended_statuses"[% ' checked' IF conf.send_extended_statuses %]>
+ <label for="send_extended_statuses" class="inline">Send extended Open311 statuses with service request updates</label>
</p>
-
+ </div>
+
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "Enable this <strong>can be devolved</strong> setting if one or more contacts have a
+ different endpoint (and send method) from the body's. For example, if reports for some categories of
+ problem must be emailed, while others can be sent over Open311."
+ ) %]
+ <br>
+ [%# NB 'email' is a literal setting, so not translating it in following string? %]
+ [% tprintf( loc('Leave this blank if all reports to this body should be sent using the same send method (e.g., "%s").'), body.send_method or 'email' ) %]
+ </p>
+ </div>
<p>
- <label for="send_extended_statuses">Send extended open311 statuses with service request updates</label>:
- <input type="checkbox" id="send_extended_statuses" name="send_extended_statuses"[% ' checked' IF conf.send_extended_statuses %]>
+ <input type="checkbox" id="can_be_devolved" name="can_be_devolved"[% ' checked' IF body.can_be_devolved %]>
+ <label for="can_be_devolved" class="inline">Send method or endpoints can be devolved to contacts (i.e, can be different from the body's)</label>
</p>
-
+
<p>
<input type="hidden" name="posted" value="body">
<input type="hidden" name="token" value="[% token %]">
diff --git a/templates/web/default/admin/body.html b/templates/web/default/admin/body.html
index 120a07da9..b207d18ca 100644
--- a/templates/web/default/admin/body.html
+++ b/templates/web/default/admin/body.html
@@ -1,115 +1,192 @@
[% INCLUDE 'admin/header.html' title=tprintf(loc('Council contacts for %s'), body.name) -%]
[% IF updated %]
-<p>
-<em>[% updated %]</em>
-</p>
+ <p>
+ <em>[% updated %]</em>
+ </p>
[% END %]
<p>
-[% IF example_pc %]
-<a href="[% c.uri_for_email( '/around', { pc => example_pc } ) %]">[% tprintf( loc('Example postcode %s'), example_pc ) | html %]</a> |
-[% END %]
-[% IF c.cobrand.moniker == 'emptyhomes' %]
-<a href="[% c.uri_for( 'reports', search => 'body:' _ body_id ) %]">[% loc('List all reported problems' ) %]</a>
-[% ELSE %]
-<a href="[% c.uri_for_email( '/reports/' _ body_id ) %]">[% loc('List all reported problems' ) %]</a>
-[% END %]
-<a href="[% c.uri_for( 'body', body_id, { text => 1 } ) %]">[% loc('Text only version') %]</a>
+ [% IF example_pc %]
+ <a href="[% c.uri_for_email( '/around', { pc => example_pc } ) %]" class="admin-offsite-link">[% tprintf( loc('Example postcode %s'), example_pc ) | html %]</a> |
+ [% END %]
+ [% IF c.cobrand.moniker == 'emptyhomes' %]
+ <a href="[% c.uri_for( 'reports', search => 'body:' _ body_id ) %]">[% loc('List all reported problems' ) %]</a> |
+ [% ELSE %]
+ <a href="[% c.uri_for_email( '/reports/' _ body_id ) %]" class="admin-offsite-link">[% loc('List all reported problems' ) %]</a> |
+ [% END %]
+ <a href="[% c.uri_for( 'body', body_id, { text => 1 } ) %]">[% loc('Text only version') %]</a>
</p>
[% IF body.send_method == 'Open311' %]
- <h2>
+ <h2>
Council contacts configured via Open311
- </h2>
+ </h2>
[% END %]
[% IF c.cobrand.moniker == 'fixmystreet' %]
-<p class="error">Do not give these out except to people at the council.</p>
+ <p class="error">Do not give these out except to people at the council.</p>
[% END %]
-<form method="post" action="[% c.uri_for('body', body_id ) %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
+[% IF body.areas.size == 0 %]
+ <p class="fms-admin-warning">
+ [% loc("This body covers no area. This means that it has no jurisdiction over problems reported <em>at any location</em>.
+ Consequently, none of its categories will appear in the drop-down category menu when users report problems.
+ Currently, users <strong>cannot report problems to this body</strong>.") %]
+ <br>
+ [% loc("Fix this by choosing an <strong>area covered</strong> in the <em>Edit body details</em> form below.") %]
+ </p>
+[% END %]
- <table cellspacing="0" cellpadding="2" border="1">
- <tr>
- <th>[% loc('Category') %]</th>
- <th>[% loc('Email') %]</th>
- <th>[% loc('Confirmed') %]</th>
- <th>[% loc('Deleted') %]</th>
- <th>[% loc('Devolved') %]</th>
- <th>[% loc('Last editor') %]</th>
- <th>[% loc('Note') %]</th>
- <th>[% loc('Public') %]</th>
- <th>[% loc('When edited') %]</th>
- <th>[% loc('Confirm') %]</th>
- </tr>
- [% WHILE ( contact = contacts.next ) %]
- <tr>
- <td><a href="[% c.uri_for( 'body_edit', body_id, contact.category ) %]">[% contact.category %]</a></td>
- <td>[% contact.email | html %]</td>
- <td>[% IF contact.confirmed %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %]</td>
- <td>[% IF contact.deleted %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %]</td>
- <td>[% IF body.can_be_devolved && contact.send_method %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %]</td>
- <td>[% contact.editor %]</td>
- <td>[% contact.note | html %]</td>
- <td>[% contact.non_public ? loc('Non Public') : loc('Public') %]</td>
- <td>[% contact.whenedited.ymd _ ' ' _ contact.whenedited.hms %]</td>
- <td><input type="checkbox" name="confirmed" value="[% contact.category %]"></td>
- </tr>
- [% END %]
- </table>
+[% IF live_contacts == 0 %]
+ <p class="fms-admin-warning">
+ [% loc("This body has no contacts. This means that currently problems reported to this body <strong>will not be sent</strong>.") %]
+ <br>
+ [% loc("Add a contact using the form below.") %]
+ </p>
+[% END %]
- <p>
+<form method="post" action="[% c.uri_for('body', body_id ) %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
+
+ <table cellspacing="0" cellpadding="2" border="1">
+ <tr>
+ <th>[% loc('Category') %]</th>
+ <th>[% loc('Email') %]</th>
+ <th>[% loc('Confirmed') %]</th>
+ <th>[% loc('Deleted') %]</th>
+ <th>[% loc('Devolved') %]</th>
+ <th>[% loc('Last editor') %]</th>
+ <th>[% loc('Note') %]</th>
+ <th>[% loc('Public') %]</th>
+ <th>[% loc('When edited') %]</th>
+ <th>[% loc('Confirm') %]</th>
+ </tr>
+ [% WHILE ( contact = contacts.next ) %]
+ <tr [% IF contact.deleted %]class="is-deleted"[% END %]>
+ <td class="contact-category"><a href="[% c.uri_for( 'body_edit', body_id, contact.category ) %]">[% contact.category %]</a></td>
+ <td>[% contact.email | html %]</td>
+ <td>[% IF contact.confirmed %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %]</td>
+ <td>[% IF contact.deleted %]<strong>[% loc('Yes') %]</strong>[% ELSE %][% loc('No') %][% END %]</td>
+ <td>[% IF body.can_be_devolved && contact.send_method %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %]</td>
+ <td>[% contact.editor %]</td>
+ <td>[% contact.note | html %]</td>
+ <td>[% contact.non_public ? loc('Non Public') : loc('Public') %]</td>
+ <td>[% contact.whenedited.ymd _ ' ' _ contact.whenedited.hms %]</td>
+ <td><input type="checkbox" name="confirmed" value="[% contact.category %]"></td>
+ </tr>
+ [% END %]
+ </table>
+
+ <p>
<input type="hidden" name="posted" value="update">
<input type="hidden" name="token" value="[% token %]">
<input type="submit" name="Update statuses" value="[% loc('Update statuses') %]">
- </p>
- </form>
-
- <h2>[% loc('Add new category') %]</h2>
-
- <form method="post" action="[% c.uri_for('body', body_id ) %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
-
- [% IF c.cobrand.moniker != 'emptyhomes' %]
+ </p>
+</form>
+
+<div class="admin-box">
+ <h2>[% loc('Add new category') %]</h2>
+ <p class="fms-admin-info">
+ [% loc("Each contact for the body has a category, which is displayed to the public.
+ Different categories <strong>can have the same contact</strong> (email address).
+ This means you can add many categories even if you only have one contact for the body.
+ ") %]
+ </p>
+
+ <form method="post" action="[% c.uri_for('body', body_id ) %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
+
+ [% IF c.cobrand.moniker != 'emptyhomes' %]
+ <div class="admin-hint">
<p>
- <strong>[% loc('Category:') %] </strong><input type="text" name="category" size="30">
+ [% loc('Choose a <strong>category</strong> name that makes sense to the public (e.g., "Pothole", "Street lighting") but is helpful
+ to the body too. These will appear in the drop-down menu on the report-a-problem page.') %]
+ <br>
+ [% loc("If two or more bodies serve the same location, FixMyStreet combines identical categories into a single entry in
+ the menu. Make sure you use the same category name in the bodies if you want this to happen.") %]
</p>
- [% END %]
-
+ </div>
+ <p>
+ <strong>[% loc('Category:') %] </strong><input type="text" name="category" size="30">
+ </p>
+ [% END %]
+
+ <div class="admin-hint">
+ <p>
+ [% loc("The <strong>email address</strong> is the destination to which reports about this category will be sent.
+ Other categories for this body may have the same email address.") %]
+ </p>
+ [% IF (body.send_method AND body.send_method != 'Email') OR body.can_be_devolved %]
<p>
- <strong>[% loc('Email:') %] </strong><input type="text" name="email" size="30">
+ [% loc("If you're using <strong>a send method that is not email</strong>, enter the service ID (Open311) or equivalent identifier here.") %]
</p>
+ [% END %]
+ </div>
- <p>
- <input type="checkbox" name="confirmed" value="1" id="confirmed">
- <label for="confirmed" class="inline">[% loc('Confirmed') %]</label>
-
- <input type="checkbox" name="deleted" value="1" id="deleted">
- <label for="deleted" class="inline">[% loc('Deleted') %]</label>
- </p>
+ <p>
+ <strong>[% loc('Email address:') %] </strong><input type="text" name="email" size="30">
+ </p>
- <p>
- <strong>[% loc('Note:') %] </strong> <textarea name="note" rows="3" cols="40"></textarea>
- </p>
+ <div class="admin-hint">
+ <p>
+ [% loc("Check <strong>confirmed</strong> to indicate that this contact has been confirmed as correct.
+ If you are not sure of the origin or validity of the contact, leave this unchecked.") %]
+ </p>
+ </div>
+ <p>
+ <input type="checkbox" name="confirmed" value="1" id="confirmed">
+ <label for="confirmed" class="inline">[% loc('Confirmed') %]</label>
+ </p>
- <p>
- <input type="checkbox" name="non_public" value="1" id="non_public">
- <label for="non_public" class="inline">[% loc('Private') %]</label>
- </p>
+ <div class="admin-hint">
+ <p>
+ [% loc("Check <strong>deleted</strong> to remove the category from use.
+ It will not appear as an available category in the drop-down menu on the report-a-problem page.") %]
+ </p>
+ </div>
+ <p>
+ <input type="checkbox" name="deleted" value="1" id="deleted">
+ <label for="deleted" class="inline">[% loc('Deleted') %]</label>
+ </p>
- <p>
- <input type="hidden" name="posted" value="new" >
- <input type="hidden" name="token" value="[% token %]" >
- <input type="submit" name="Create category" value="[% loc('Create category') %]" >
- </p>
+ <div class="admin-hint">
+ <p>
+ [% loc("Use the <strong>note</strong> to record details that are only displayed in the admin. Notes are not shown publicly, and are not sent to the body.") %]
+ </p>
+ </div>
+ <p>
+ <strong>[% loc('Note:') %] </strong> <textarea name="note" rows="3" cols="40"></textarea>
+ </p>
- <div>
- <input type="hidden" name=".cgifields" value="confirmed" >
- <input type="hidden" name=".cgifields" value="deleted" >
- </div>
- </form>
+ <div class="admin-hint">
+ <p>
+ [% loc("Check <strong>private</strong> if reports in this category should <strong>never be displayed on the website</strong>.
+ <br>
+ Normally, categories are not private.
+ <br>
+ This is suitable for issues that you want to allow users to report to the body, but for which there is no public
+ interest in displaying the report. In the UK, we've used this for services like requesting an extra rubbish bin
+ at a specific address.") %]
+ </p>
+ </div>
+ <p>
+ <input type="checkbox" name="non_public" value="1" id="non_public">
+ <label for="non_public" class="inline">[% loc('Private') %]</label>
+ </p>
- <h2>[% loc('Edit body details') %]</h2>
- [% INCLUDE 'admin/body-form.html' %]
+ <p>
+ <input type="hidden" name="posted" value="new" >
+ <input type="hidden" name="token" value="[% token %]" >
+ <input type="submit" name="Create category" value="[% loc('Create category') %]" >
+ </p>
+ <div>
+ <input type="hidden" name=".cgifields" value="confirmed" >
+ <input type="hidden" name=".cgifields" value="deleted" >
+ </div>
+ </form>
+</div>
+<div class="admin-box">
+ <h2>[% loc('Edit body details') %]</h2>
+ [% INCLUDE 'admin/body-form.html' %]
+</div>
[% INCLUDE 'admin/footer.html' %]
diff --git a/templates/web/default/admin/body_edit.html b/templates/web/default/admin/body_edit.html
index 1eeff9ab5..f2bae0c0b 100644
--- a/templates/web/default/admin/body_edit.html
+++ b/templates/web/default/admin/body_edit.html
@@ -15,7 +15,7 @@
<p>
[% IF example_pc %]
-<a href="[% c.uri_for_email( '/around', { pc => example_pc } ) %]">[% tprintf( loc('Example postcode %s'), example_pc ) | html %]</a>
+<a href="[% c.uri_for_email( '/around', { pc => example_pc } ) %]" class="admin-offsite-link">[% tprintf( loc('Example postcode %s'), example_pc ) | html %]</a>
[% END %]
</p>
diff --git a/templates/web/default/admin/config_page.html b/templates/web/default/admin/config_page.html
new file mode 100644
index 000000000..77a8be4b1
--- /dev/null
+++ b/templates/web/default/admin/config_page.html
@@ -0,0 +1,146 @@
+[% INCLUDE 'admin/header.html' title=loc('Configuration') -%]
+
+[% BLOCK subsection %]
+<tr><td colspan=3><strong>[% heading %]</strong></td></tr>
+[% END %]
+
+[% BLOCK just_value %]
+[% SET conf = c.config.$value IF NOT conf;
+ conf = conf.join(', ') IF conf.size %]
+<tr>
+ <td>[% value %]</td>
+ <td colspan=2>[% conf or conf_default %]</td>
+</tr>
+[% END %]
+
+[% BLOCK with_cobrand %]
+[% SET conf = c.config.$value IF NOT conf;
+ conf = conf.join(', ') IF conf.size;
+ cob = cob.join(', ') IF conf.size %]
+<tr>
+ <td>[% value %]</td>
+ <td>[% conf %]</td>
+ <td>[% cob IF cob != conf %]</td>
+</tr>
+[% END %]
+
+<p>A summary of this site's configuration,
+running version <strong>[% git_version || 'unknown' %]</strong>.
+</p>
+
+<table>
+<tr><th>Variable</th>
+ <th>general.yml value</th>
+ <th>Cobrand module override</th>
+</tr>
+
+[% INCLUDE subsection heading="URLs" %]
+[% INCLUDE with_cobrand value="BASE_URL" cob=c.cobrand.base_url %]
+[% INCLUDE with_cobrand value="ADMIN_BASE_URL" cob=c.cobrand.admin_base_url %]
+
+[% INCLUDE subsection heading="Display" %]
+[% allowed_conf = FOR k IN c.config.ALLOWED_COBRANDS %]
+ [% IF k.keys %][% k.items.join(':') %][% ELSE %][% k %][% END %]
+ [%- ',' IF NOT loop.last %]
+[% END %]
+[% INCLUDE just_value value="ALLOWED_COBRANDS" conf = allowed_conf %]
+<tr>
+<td>Web templates</td>
+<td colspan=2>[% c.cobrand.path_to_web_templates.join('<br>') %]</td>
+</tr>
+[% INCLUDE with_cobrand value="MAP_TYPE" cob=c.cobrand.map_type %]
+[% INCLUDE with_cobrand value="EXAMPLE_PLACES"
+ conf = decode(c.config.EXAMPLE_PLACES.join(', '))
+ cob = c.cobrand.example_places %]
+[% INCLUDE with_cobrand value="LANGUAGES"
+ cob = c.cobrand.languages %]
+<tr><td>Language override</td>
+ <td>-</td>
+ <td>
+ [% 'domain=' _ c.cobrand.language_domain IF c.cobrand.language_domain %]
+ [% 'language=' _ c.cobrand.language_override IF c.cobrand.language_override %]
+ </td>
+</tr>
+[% INCLUDE with_cobrand value="ALL_REPORTS_PER_PAGE" cob=c.cobrand.reports_per_page %]
+[% INCLUDE just_value value="RSS_LIMIT" %]
+[% INCLUDE just_value value="AREA_LINKS_FROM_PROBLEMS" %]
+
+[% INCLUDE subsection heading="Geocoder" %]
+[% INCLUDE just_value value="GEOCODER"
+ conf_default = '<em>(None; default Nominatim OSM)</em>'
+%]
+[% disconf = FOR k IN c.config.GEOCODING_DISAMBIGUATION %]
+ [% k.key %]=[% k.value %][% ',' IF NOT loop.last %]
+[% END %]
+[% discob = FOR k IN c.cobrand.disambiguate_location %]
+ [% k.key %]=[% k.value %][% ',' IF NOT loop.last %]
+[% END %]
+[% INCLUDE with_cobrand value="GEOCODING_DISAMBIGUATION"
+ conf = disconf
+ cob = discob %]
+
+[% INCLUDE subsection heading="MapIt" %]
+[% INCLUDE just_value value="MAPIT_URL" %]
+[% INCLUDE with_cobrand value="MAPIT_TYPES"
+ cob = c.cobrand.area_types %]
+[% INCLUDE just_value value="MAPIT_ID_WHITELIST" %]
+[% INCLUDE with_cobrand value="MAPIT_TYPES_CHILDREN"
+ cob = c.cobrand.area_types_children %]
+
+[% INCLUDE subsection heading="Database" %]
+[% INCLUDE just_value value="FMS_DB_HOST" %]
+[% INCLUDE just_value value="FMS_DB_PORT" %]
+[% INCLUDE just_value value="FMS_DB_NAME" %]
+[% INCLUDE just_value value="FMS_DB_USER" %]
+
+[% INCLUDE subsection heading="Email" %]
+[% INCLUDE just_value value="EMAIL_DOMAIN" %]
+[% INCLUDE with_cobrand value="CONTACT_NAME" cob=c.cobrand.contact_name %]
+[% INCLUDE with_cobrand value="CONTACT_EMAIL" cob=c.cobrand.contact_email %]
+[% INCLUDE just_value value="DO_NOT_REPLY_EMAIL" %]
+
+[% INCLUDE subsection heading="Development" %]
+[% INCLUDE just_value value="STAGING_SITE" %]
+[% INCLUDE just_value value="SEND_REPORTS_ON_STAGING" %]
+[% INCLUDE just_value value="UPLOAD_DIR" %]
+[% INCLUDE just_value value="GEO_CACHE" %]
+[% INCLUDE just_value value="TESTING_COUNCILS" %]
+[% INCLUDE just_value value="SMTP_SMARTHOST" %]
+[% INCLUDE just_value value="TIME_ZONE" %]
+[% INCLUDE just_value value="GAZE_URL" %]
+
+</table>
+
+<h2>Cobrand module</h2>
+
+Other things can be changed on a cobrand basis by using functions in an
+(optional) Cobrand .pm module, as explained in the
+<a href="http://code.fixmystreet.com/customising/" class="admin-offsite-link">customising section of our
+documentation</a>. If you wish to add new functionality just for your cobrand
+that can't be done simply by changes to your cobrand's templates, you might
+need to add a new Cobrand function.
+
+<p>Examples of cobrand functions are below; this is not exhaustive.
+Many were added for one specific cobrand, so didn't need a general
+configuration option. Please feel free to discuss on <a
+href="http://code.fixmystreet.com/community/" class="admin-offsite-link">our mailing list</a> if you think
+something should be moved to the general.yml file, done differently,
+or have any questions.</p>
+
+<ul style="font-size: 80%">
+<li>allow_photo_upload: [% c.cobrand.allow_photo_upload %],
+ allow_photo_display: [% c.cobrand.allow_photo_display %]</li>
+<li>send_questionnaires: [% c.cobrand.send_questionnaires %],
+ ask_ever_reported: [% c.cobrand.ask_ever_reported %]</li>
+<li>default_map_zoom: [% c.cobrand.default_map_zoom or '-' %]</li>
+<li>default_show_name: [% c.cobrand.default_show_name %]</li>
+<li>users_can_hide: [% c.cobrand.users_can_hide %]</li>
+<li>report_sent_confirmation_email: [% c.cobrand.report_sent_confirmation_email %]</li>
+<li>never_confirm_reports: [% c.cobrand.never_confirm_reports %],
+ allow_anonymous_reports: [% c.cobrand.allow_anonymous_reports %],
+ show_unconfirmed_reports: [% c.cobrand.show_unconfirmed_reports %]</li>
+<li>email_indent: [% c.cobrand.email_indent %]</li>
+</ul>
+
+[% INCLUDE 'admin/footer.html' %]
+
diff --git a/templates/web/default/admin/edit-league.html b/templates/web/default/admin/edit-league.html
index 6bf71537e..4f31eeb2e 100644
--- a/templates/web/default/admin/edit-league.html
+++ b/templates/web/default/admin/edit-league.html
@@ -1,3 +1,10 @@
+<div class="admin-hint">
+ <p>
+ [% loc(
+ "The diligency prize league table shows editors' activity (who's been editing the most records)."
+ ) %]
+ </p>
+</div>
<h2>[% loc('Diligency prize league table') %]</h2>
[% IF edit_activity.count %]
<ul>
diff --git a/templates/web/default/admin/flagged.html b/templates/web/default/admin/flagged.html
index fc8b1fae1..518d1b14e 100644
--- a/templates/web/default/admin/flagged.html
+++ b/templates/web/default/admin/flagged.html
@@ -1,6 +1,11 @@
-[% INCLUDE 'admin/header.html' title=loc('Search Reports') %]
+[% INCLUDE 'admin/header.html' title=loc('Flagged reports and users') %]
[% PROCESS 'admin/report_blocks.html' %]
+<p class="fms-admin-info">
+ [% loc("You can flag any report or user by editing them, and they will be listed on this page.
+ For example, this can useful if you want to keep an eye on a user who has posted inappropriate
+ reports in the past.") %]
+</p>
<h2>[% loc( 'Problems' ) %]</h2>
[% IF problems.size > 0 %]
@@ -16,29 +21,41 @@
[% INCLUDE 'admin/problem_row.html' %]
</table>
[% ELSE %]
-<p>
-[% loc('No flagged problems found') %]
-</p>
+ <p class="fms-admin-warning">
+ [% loc('No flagged problems found.') %]
+ </p>
[% END %]
<h2>[% loc( 'Users' ) %]</h2>
-[% IF users%]
+<p class="fms-admin-info">
+ [% loc("Flagged users are not restricted in any way. This is just a list of users that have been marked for attention.") %]
+</p>
+
+[% IF users.size %]
<table cellspacing="0" cellpadding="2" border="1">
<tr>
<th>[% loc('Name') %]</th>
<th>[% loc('Email') %]</th>
+ <th>[% loc('In abuse table?') %]</th>
+ <th>&nbsp;</th>
</tr>
-[% WHILE ( user = users.next ) -%]
- <tr>
+ [%- FOREACH user IN users %]
+ <tr [% IF user.flagged == 2 %]class="is-deleted"[% END %]>
<td>[% user.name | html %]</td>
<td>[% user.email | html %]</td>
- <td><a href="[% c.uri_for( 'reports', search => user.email ) %]">list content</a></td>
+ <td>
+ [% IF user.flagged == 2 %] <strong>[% loc('Yes') %]</strong> [% ELSE %] &nbsp; [% END %]
+ </td>
+ <td>
+ <a href="[% c.uri_for( 'reports', search => user.email ) %]">list content</a>
+ [% IF user.id %] | <a href="[% c.uri_for( 'user_edit', user.id ) %]">[% loc('edit user') %]</a>[% END %]
+ </td>
</tr>
-[%- END %]
+ [%- END %]
</table>
[%- ELSE %]
-<p>
-[% loc('No flagged users found') %]
+<p class="fms-admin-warning">
+ [% loc('No flagged users found.') %]
</p>
[%- END %]
diff --git a/templates/web/default/admin/header.html b/templates/web/default/admin/header.html
index 6282bf383..9f3503e20 100644
--- a/templates/web/default/admin/header.html
+++ b/templates/web/default/admin/header.html
@@ -1,4 +1,4 @@
-[% INCLUDE 'header.html' admin = 1, bodyclass = 'fullwidthpage admin' %]
+[% INCLUDE 'header.html' admin = 1, bodyclass = 'fullwidthpage admin show-admin-notes' %]
<style type="text/css">
dt { clear: left; float: left; font-weight: bold; }
dd { margin-left: 8em; }
diff --git a/templates/web/default/admin/index.html b/templates/web/default/admin/index.html
index 2c5ee55db..ad5932d97 100644
--- a/templates/web/default/admin/index.html
+++ b/templates/web/default/admin/index.html
@@ -1,5 +1,13 @@
[% INCLUDE 'admin/header.html' title=loc('Summary') -%]
+[% IF total_bodies == 0 %]
+ <p class="fms-admin-info">
+ [% loc('Currently no bodies have been created.') %]
+ <br>
+ [% tprintf( loc('You need to <a href="%s">add some bodies</a> (such as councils or departments) before any reports can be sent.'), c.uri_for('bodies')) %]
+ </p>
+[% END %]
+
[%- BLOCK states -%]
<h2>[% title %]</h2>
@@ -21,7 +29,7 @@
[% IF c.cobrand.admin_show_creation_graph -%]
<p>
- <a href="[% c.config.BASE_URL %]/fms-live-creation.png">[% loc('Graph of problem creation by status over time') %]</a>
+ <a href="[% c.config.BASE_URL %]/fms-live-creation.png" class="admin-offsite-link">[% loc('Graph of problem creation by status over time') %]</a>
</p>
[% END -%]
diff --git a/templates/web/default/admin/list_updates.html b/templates/web/default/admin/list_updates.html
index dbf679702..02845b0ee 100644
--- a/templates/web/default/admin/list_updates.html
+++ b/templates/web/default/admin/list_updates.html
@@ -4,14 +4,11 @@
<table cellspacing="0" cellpadding="2" border="1">
<tr>
<th>[% loc('ID') %]</th>
- <th>[% loc('State') %]</th>
<th>[% loc('Name') %]</th>
- <th>[% loc('Email') %]</th>
- <th>[% loc('Created') %]</th>
- <th>[% loc('Anonymous') %]</th>
<th>[% loc('Owner') %]</th>
<th>[% loc('Council') %]</th>
<th>[% loc('Cobrand') %]</th>
+ <th>[% loc('State') %]</th>
<th>[% loc('Text') %]</th>
<th>*</th>
</tr>
@@ -26,18 +23,21 @@
uri = c.uri_for_email( '/report', update.problem.id );
END;
%]
- <a href="[% uri %]#update_[% update.id %]">[% update.id %]</a>
+ <a href="[% uri %]#update_[% update.id %]" class="admin-offsite-link">[% update.id %]</a>
[%- ELSE %]
[%- update.id %]
[%- END -%]</td>
- <td>[% update.state %]</td>
- <td>[% update.name | html %]</td>
- <td>[% update.user.email | html %]</td>
- <td>[% PROCESS format_time time=update.created %]</td>
- <td>[% IF update.anonymous %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %]</td>
+ <td>[% PROCESS value_or_nbsp value=update.name %]
+ <br>[% PROCESS value_or_nbsp value=update.user.email %]
+ <br>[% loc('Anonymous') %]: [% IF update.anonymous %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %]
+ </td>
<td>[% IF update.user.id == update.problem.user_id %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %]</td>
<td>[% IF update.user.belongs_to_body( update.problem.bodies_str ) %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %]</td>
<td>[% update.cobrand %]<br>[% update.cobrand_data | html %]</td>
+ <td>[% update.state %]<br><small>
+ [% loc('Created:') %] [% PROCESS format_time time=update.created %]
+ <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>
</tr>
diff --git a/templates/web/default/admin/problem_row.html b/templates/web/default/admin/problem_row.html
index 6dc4de188..2413a6062 100644
--- a/templates/web/default/admin/problem_row.html
+++ b/templates/web/default/admin/problem_row.html
@@ -9,7 +9,7 @@
uri = c.uri_for_email( '/report', problem.id );
END;
%]
- <a href="[% uri %]">[% problem.id %]</a>
+ <a href="[% uri %]" class="admin-offsite-link">[% problem.id %]</a>
[%- ELSE %]
[%- problem.id %]
[%- END -%]</td>
diff --git a/templates/web/default/admin/report_edit.html b/templates/web/default/admin/report_edit.html
index f3307658d..12560fdf3 100644
--- a/templates/web/default/admin/report_edit.html
+++ b/templates/web/default/admin/report_edit.html
@@ -15,7 +15,7 @@
uri = c.uri_for_email( '/report', problem.id );
END;
%]
-<li><a href="[% uri %]">[% loc('View report on site' )%]</a></li>
+<li><a href="[% uri %]" class="admin-offsite-link">[% loc('View report on site' )%]</a></li>
<li><label for='title'>[% loc('Subject:') %]</label> <input size=60 type='text' id='title' name='title' value='[% problem.title | html %]'></li>
<li><label for='detail'>[% loc('Details:') %]</label>
<textarea name='detail' id='detail' cols=60 rows=10>[% problem.detail | html %]</textarea></li>
@@ -80,7 +80,12 @@
[% IF problem.photo %]
[% photo = problem.get_photo_params %]
-<li><img alt="" height="[% photo.height %]" width="[% photo.width %]" src="[% c.cobrand.base_url %][% photo.url %]">
+<li><img alt="Photo of this report" height="[% photo.height %]" width="[% photo.width %]" src="[% c.cobrand.base_url %]
+ [%~ IF problem.photo.length == 40 ~%]
+ /photo/[% problem.photo %].temp.jpeg
+ [%~ ELSE ~%]
+ [% photo.url %]
+ [%~ END %]">
<br>
<input type="submit" name="rotate_photo" value="[% loc('Rotate Left') %]">
<input type="submit" name="rotate_photo" value="[% loc('Rotate Right') %]">
diff --git a/templates/web/default/admin/reports.html b/templates/web/default/admin/reports.html
index d57b2f53e..7267dd11d 100644
--- a/templates/web/default/admin/reports.html
+++ b/templates/web/default/admin/reports.html
@@ -20,6 +20,12 @@
[% INCLUDE 'pagination.html', admin = 1, param = 'p' IF pager %]
+[% ELSIF searched %]
+
+<div class="fms-admin-warning">
+ [% loc("Searching found no reports.") %]
+</div>
+
[% END %]
[% INCLUDE 'admin/list_updates.html' %]
diff --git a/templates/web/default/admin/stats.html b/templates/web/default/admin/stats.html
index bb42d5b7d..d143d9f28 100644
--- a/templates/web/default/admin/stats.html
+++ b/templates/web/default/admin/stats.html
@@ -61,15 +61,15 @@
<form method="post" action="[% c.uri_for('stats') %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
<p>
- <label for="start_date_year">[% loc('Start Year:') %]</label><input type="text" name="start_date_year" id="start_date_year" size="5" value="[% start_date ? start_date.year : '' | html %]" />
- <label for="start_date_month">[% loc('Start month:') %]</label><input type="text" name="start_date_month" id="start_date_month" size="3" value="[% start_date ? start_date.month : '' | html %]" />
- <label for="start_date_day">[% loc('Start day:') %]</label><input type="text" name="start_date_day" id="start_date_day" size="3" value="[% start_date ? start_date.day : '' | html %]" />
+ <label for="start_date">[% loc('Start Date:') %]</label><input type="text"
+ placeholder="[% loc('Click here or enter as dd/mm/yyyy') %]" name="start_date" id="start_date"
+ value="[% start_date ? start_date.strftime( '%d/%m/%Y') : '' | html %]" />
</p>
<p>
- <label for="end_date_year">[% loc('End Year:') %]</label><input type="text" name="end_date_year" id="end_date_year" size="5" value="[% end_date ? end_date.year : '' | html %]" />
- <label for="end_date_month">[% loc('End month:') %]</label><input type="text" name="end_date_month" id="end_date_month" size="3" value="[% end_date ? end_date.month : '' | html %]" />
- <label for="end_date_day">[% loc('End day:') %]</label><input type="text" name="end_date_day" id="end_date_day" size="3" value="[% end_date ? end_date.day : '' | html %]" />
+ <label for="end_date">[% loc('End Date:') %]</label><input type="text"
+ placeholder="[% loc('Click here or enter as dd/mm/yyyy') %]" name="end_date" id="end_date" size="5"
+ value="[% end_date ? end_date.strftime( '%d/%m/%Y') : '' | html %]" />
</p>
<p>
diff --git a/templates/web/default/admin/timeline.html b/templates/web/default/admin/timeline.html
index 2e4c3b771..6bf350a58 100644
--- a/templates/web/default/admin/timeline.html
+++ b/templates/web/default/admin/timeline.html
@@ -21,16 +21,16 @@
[% CASE 'problemCreated' %]
[%- tprintf(loc('Problem %d created'), item.obj.id) %]; [% PROCESS problem_name problem=item.obj -%]
[% CASE 'problemConfirmed' %]
- [%- tprintf( loc('Problem %s confirmed'), '<a href="' _ c.uri_for_email( '/report', item.obj.id ) _ '">' _ item.obj.id _ '</a>') %]; [% PROCESS problem_name problem=item.obj -%]
+ [%- tprintf( loc('Problem %s confirmed'), '<a href="' _ c.uri_for_email( '/report', item.obj.id ) _ '" class="admin-offsite-link">' _ item.obj.id _ '</a>') %]; [% PROCESS problem_name problem=item.obj -%]
[% CASE 'problemSent' %]
- [% tprintf(loc("Problem %s sent to council %s"), '<a href="' _ c.uri_for_email( '/report', item.obj.id ) _ '">' _ item.obj.id _ '</a>', item.obj.bodies_str ) %]
+ [% tprintf(loc("Problem %s sent to council %s"), '<a href="' _ c.uri_for_email( '/report', item.obj.id ) _ '" class="admin-offsite-link">' _ item.obj.id _ '</a>', item.obj.bodies_str ) %]
[% CASE 'quesSent' %]
[% tprintf(loc("Questionnaire %d sent for problem %d"), item.obj.id, item.obj.problem_id ) %]
[% CASE 'quesAnswered' %]
[% tprintf(loc("Questionnaire %d answered for problem %d, %s to %s"), item.obj.id, item.obj.problem_id, item.obj.old_state, item.obj.new_state ) %]
[% CASE 'update' %]
[% name = ( item.obj.name || 'anonymous' ) | html %]
- [% tprintf(loc("Update %s created for problem %d; by %s"), "<a href='" _ c.uri_for_email( '/report', item.obj.problem_id ) _ "#update_" _ item.obj.id _ "'>" _ item.obj.id _ "</a>", item.obj.problem_id, name) %] &lt;[% item.obj.user.email | html %]&gt;
+ [% tprintf(loc("Update %s created for problem %d; by %s"), "<a href='" _ c.uri_for_email( '/report', item.obj.problem_id ) _ "#update_" _ item.obj.id _ "' class='admin-offsite-link'>" _ item.obj.id _ "</a>", item.obj.problem_id, name) %] &lt;[% item.obj.user.email | html %]&gt;
[% CASE 'alertSub' %]
[% tprintf(loc("Alert %d created for %s, type %s, parameters %s / %s"), item.obj.id, item.obj.user.email, item.obj.alert_type.ref, item.obj.parameter, item.obj.parameter2) | html %]
[% CASE 'alertDel' %]
diff --git a/templates/web/default/admin/update_edit.html b/templates/web/default/admin/update_edit.html
index f2029c63f..5ffce8bc4 100644
--- a/templates/web/default/admin/update_edit.html
+++ b/templates/web/default/admin/update_edit.html
@@ -15,7 +15,7 @@
uri = c.uri_for_email( '/report', update.problem_id );
END;
%]
-<li><a href="[% uri %]#update_[% update.id %]">[% loc('View report on site' )%]</a></li>
+<li><a href="[% uri %]#update_[% update.id %]" class="admin-offsite-link">[% loc('View report on site' )%]</a></li>
<li><label for='detail'>[% loc('Text:') %]</label>
<textarea name='text' id='text' cols=60 rows=10>[% update.text | html %]</textarea></li>
@@ -52,7 +52,12 @@
[% IF update.photo %]
[% photo = update.get_photo_params %]
-<li><img alt="" height="[% photo.height %]" width="[% photo.width %]" src="[% photo.url %]">
+<li><img alt="Photo of this update" height="[% photo.height %]" width="[% photo.width %]" src="[% c.cobrand.base_url %]
+ [%~ IF update.photo.length == 40 ~%]
+ /photo/[% update.photo %].temp.jpeg
+ [%~ ELSE ~%]
+ [% photo.url %]
+ [%~ END ~%]">
<input type="checkbox" id="remove_photo" name="remove_photo" value="1">
<label for="remove_photo" class="inline">[% loc("Remove photo (can't be undone!)") %]</label></li>
[% END %]
diff --git a/templates/web/default/admin/user-form.html b/templates/web/default/admin/user-form.html
index 9c60ec940..4a57b05a0 100644
--- a/templates/web/default/admin/user-form.html
+++ b/templates/web/default/admin/user-form.html
@@ -1,17 +1,55 @@
<form method="post" action="[% c.uri_for( 'user_edit', user.id ) %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
<input type="hidden" name="token" value="[% token %]" >
<input type="hidden" name="submit" value="1" >
+
+ [% IF c.cobrand.moniker == 'zurich' AND field_errors.email %]
+ <p class='error'>[% field_errors.email %]</p>
+ [% END %]
<ul class="no-bullets">
- <li>[% loc('Name:') %] <input type='text' name='name' id='name' value='[% user.name | html %]'></li>
+ <li>
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "The user's <strong>name</strong> is displayed publicly on reports that have not been marked <em>anonymous</em>.
+ Names are not necessarily unique.")
+ %]
+ </p>
+ </div>
+ [% loc('Name:') %] <input type='text' name='name' id='name' value='[% user.name | html %]'>
+ </li>
<li>[% loc('Email:') %] <input type='text' id='email' name='email' value='[% user.email | html %]'></li>
- <li>[% loc('Body:') %] <select id='body' name='body'>
+ <li>
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "Normal (public) users should not be associated with any <strong>body</strong>.<br>
+ Authorised staff users can be associated with the body they represent.<br>
+ Depending on the implementation, staff users may have access to the dashboard (summary of
+ activity across their body), the ability to hide reports or set special report statuses.")
+ %]
+ </p>
+ </div>
+ [% loc('Body:') %] <select id='body' name='body'>
<option value=''>[% loc('No body') %]</option>
[% FOR body IN bodies %]
<option value="[% body.id %]"[% ' selected' IF body.id == user.from_body.id %]>[% body.name %]</option>
[% END %]
+ </li>
</select>
[% IF c.cobrand.moniker != 'zurich' %]
- <li>[% loc('Flagged:') %] <input type="checkbox" id="flagged" name="flagged"[% user.flagged ? ' checked' : '' %]></li>
+ <li>
+ <div class="admin-hint">
+ <p>
+ [% loc("Mark users whose behaviour you want to keep a check on as <strong>flagged</strong>.") %]
+ <br>
+ [% tprintf(loc("Flagged users are listed on the <a href='%s'>flagged</a> page."), c.uri_for( 'flagged' )) %]
+ <br>
+ [% loc("You can add an abusive user's email to the abuse list, which automatically hides (and never sends) reports they create.") %]
+ </p>
+ </div>
+
+ [% loc('Flagged:') %] <input type="checkbox" id="flagged" name="flagged"[% user.flagged ? ' checked' : '' %]>
+ </li>
[% END %]
</ul>
<input type="submit" name="Submit changes" value="[% loc('Submit changes') %]" >
diff --git a/templates/web/default/admin/users.html b/templates/web/default/admin/users.html
index 70833ff85..db97c7d59 100644
--- a/templates/web/default/admin/users.html
+++ b/templates/web/default/admin/users.html
@@ -1,6 +1,9 @@
[% INCLUDE 'admin/header.html' title=loc('Search Users') %]
[% PROCESS 'admin/report_blocks.html' %]
+<div class="fms-admin-info">
+ [% loc("User search finds matches in users' names and email addresses.") %]
+</div>
<form method="get" action="[% c.uri_for('users') %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
<p><label for="search">[% loc('Search:') %]</label> <input type="text" name="search" size="30" id="search" value="[% searched | html %]">
</form>
@@ -30,12 +33,17 @@
[%- END -%]
</table>
+[% ELSIF searched %]
+
+<div class="fms-admin-warning">
+ [% loc("Searching found no users.") %]
+</div>
+
[% END %]
[% IF NOT searched %]
<h2>[% loc('Add user') %]</h2>
[% INCLUDE 'admin/user-form.html', user = '' %]
-
[% END %]
[% INCLUDE 'admin/footer.html' %]
diff --git a/templates/web/default/common_header_tags.html b/templates/web/default/common_header_tags.html
index 346d53693..1080e8a88 100644
--- a/templates/web/default/common_header_tags.html
+++ b/templates/web/default/common_header_tags.html
@@ -1,15 +1,23 @@
[% USE date %][% USE Math %]
<meta http-equiv="content-type" content="text/html; charset=utf-8">
-<script type="text/javascript" src="/js/validation_rules.js?[% Math.int( date.now / 3600 ) %]"></script>
-<script type="text/javascript" src="/js/translation_strings.[% lang_code %].js?[% Math.int( date.now / 3600 ) %]"></script>
+<meta name="cobrand" content="[% c.cobrand.moniker %]">
-<script type="text/javascript" src="/jslib/jquery-1.7.2.min.js"></script>
-<script src="[% version('/js/jquery.validate.min.js') %]" type="text/javascript" charset="utf-8"></script>
+<script type="text/javascript" src="[% start %]/js/validation_rules.js?[% Math.int( date.now / 3600 ) %]"></script>
+<script type="text/javascript" src="[% start %]/js/translation_strings.[% lang_code %].js?[% Math.int( date.now / 3600 ) %]"></script>
-<script type="text/javascript" src="[% version('/js/geo.min.js') %]"></script>
-<script type="text/javascript" src="[% version('/js/fixmystreet.js') %]"></script>
-<script type="text/javascript" src="[% version(js_override || '/js/fixmystreet-old-box.js') %]"></script>
+<script type="text/javascript" src="[% start %]/jslib/jquery-1.7.2.min.js"></script>
+<script src="[% start %][% version('/js/jquery.validate.min.js') %]" type="text/javascript" charset="utf-8"></script>
+
+<script type="text/javascript" src="[% start %][% version('/js/geo.min.js') %]"></script>
+<script type="text/javascript" src="[% start %][% version('/js/fixmystreet.js') %]"></script>
+<script type="text/javascript" src="[% start %][% version(js_override || '/js/fixmystreet-old-box.js') %]"></script>
+
+[% IF admin %]
+ <script src="[% start %]/js/jquery-ui/js/jquery-ui-1.10.3.custom.min.js"></script>
+ <link rel="stylesheet" href="[% start %]/js/jquery-ui/css/smoothness/jquery-ui-1.10.3.custom.min.css" />
+ <script type="text/javascript" src="[% start %][% version('/js/fixmystreet-admin.js') %]"></script>
+[% END %]
[% map_js %]
diff --git a/templates/web/default/dashboard/index.html b/templates/web/default/dashboard/index.html
index f5a3cfba3..b3e1e8426 100644
--- a/templates/web/default/dashboard/index.html
+++ b/templates/web/default/dashboard/index.html
@@ -146,6 +146,7 @@
[% END %]
</select>
<input type="submit" value="Look up">
+<a class="export_as_csv" href="[% c.req.uri_with({ export => 1 }) %]">Export as CSV</a>
<table width="100%" id="reports">
<tr>
diff --git a/templates/web/default/faq/faq-en-gb.html b/templates/web/default/faq/faq-en-gb.html
index bf47a1420..3bfbfb467 100755
--- a/templates/web/default/faq/faq-en-gb.html
+++ b/templates/web/default/faq/faq-en-gb.html
@@ -62,19 +62,18 @@ href="https://secure.mysociety.org/donate/">please do</a>.</dd>
<dt>Can I use FixMyStreet on my mobile?</dt>
<dd>
- <p>The FixMyStreet website should work on your mobile phone, adapting to
- the size of your screen automatically. We plan to release updated native
- apps in the near future.
- <ul>
- <li><em>iPhone:</em> Our basic app from 2008 is available for download
- on the App Store:
- <a href="http://itunes.apple.com/gb/app/fixmystreet/id297456545">FixMyStreet</a>,
- <li><em>Android:</em> A volunteer, Anna Powell-Smith, has written an app
- available from the
- <a href="https://market.android.com/details?id=com.android.fixmystreet">Android Market</a>.
- <li><em>Nokia:</em> A volunteer, Thomas Forth, has written an app available from the
- <a href="http://store.ovi.com/content/107557">Ovi Store</a>.
- </ul>
+ <p>The FixMyStreet website will already work on your mobile phone, adapting to
+ the size of your screen automatically. Using an app has some advantages, though
+ &mdash; for example, you can create a report even when you have no network
+ connection.
+ <ul>
+ <li>
+ <a href="https://itunes.apple.com/gb/app/fixmystreet/id297456545">FixMyStreet app for iPhone</a>
+ <li>
+ <a href="https://play.google.com/store/apps/details?id=org.mysociety.FixMyStreet">FixMyStreet app for Android</a>
+ <li><em>Nokia:</em> A volunteer, Thomas Forth, has written an app available from the
+ <a href="http://store.ovi.com/content/107557">Ovi Store</a>.
+ </ul>
</dd>
</dl>
diff --git a/templates/web/default/js/translation_strings.html b/templates/web/default/js/translation_strings.html
index f6c4f7d41..a14443b71 100644
--- a/templates/web/default/js/translation_strings.html
+++ b/templates/web/default/js/translation_strings.html
@@ -15,6 +15,12 @@
required: '[% loc('Please enter your email') | replace("'", "\\'") %]',
email: '[% loc('Please enter a valid email') | replace("'", "\\'") %]'
},
+ password_sign_in: {
+ required: '[% loc('Please enter a password') | replace("'", "\\'") %]'
+ },
+ phone: {
+ required: '[% loc('Please enter your phone number') | replace("'", "\\'") %]'
+ },
fms_extra_title: '[% loc('Please enter your title') | replace("'", "\\'") %]',
first_name: '[% loc('Please enter your first name') | replace("'", "\\'") %]',
last_name: '[% loc('Please enter your second name') | replace("'", "\\'") %]',
diff --git a/templates/web/default/maps/bing.html b/templates/web/default/maps/bing.html
deleted file mode 100644
index 277886cdb..000000000
--- a/templates/web/default/maps/bing.html
+++ /dev/null
@@ -1,18 +0,0 @@
-[% map_js = BLOCK %]
-<script type="text/javascript" src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0&mkt=en-GB"></script>
-<script type="text/javascript" src="[% version('/js/map-bing.js') %]"></script>
-[% END %]
-
-[% map_html = BLOCK %]
-<script type="text/javascript">
-var fixmystreet = {
- 'key': '[% map.key %]',
- 'latitude': [% map.latitude %],
- 'longitude': [% map.longitude %],
- 'pins': [% INCLUDE maps/pins_js.html %]
-}
-</script>
-<div id="map_box">
- [% pre_map %]
- <div id="map"></div>
-[% END %]
diff --git a/templates/web/default/maps/fms.html b/templates/web/default/maps/fms.html
index 956a22e69..1cdfc0b35 100644
--- a/templates/web/default/maps/fms.html
+++ b/templates/web/default/maps/fms.html
@@ -5,7 +5,7 @@
<script type="text/javascript" src="[% version('/js/map-bing-ol.js') %]"></script>
<script type="text/javascript" src="[% version('/js/jquery.ba-hashchange.min.js') %]"></script>
<!--[if lte IE 6]>
- <link rel="stylesheet" href="/jslib/OpenLayers-2.10/theme/default/ie6-style.css" type="text/css" />
+ <link rel="stylesheet" href="/js/OpenLayers-2.13.1/theme/default/ie6-style.css" type="text/css">
<![endif]-->
[% END %]
diff --git a/templates/web/default/maps/google-ol.html b/templates/web/default/maps/google-ol.html
new file mode 100644
index 000000000..35c046b55
--- /dev/null
+++ b/templates/web/default/maps/google-ol.html
@@ -0,0 +1,15 @@
+[% map_js = BLOCK %]
+<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
+<script type="text/javascript" src="[% version('/js/OpenLayers.fixmystreet.google.js') %]"></script>
+<script type="text/javascript" src="[% version('/js/map-OpenLayers.js') %]"></script>
+<script type="text/javascript" src="[% version('/js/map-google-ol.js') %]"></script>
+<script type="text/javascript" src="[% version('/js/jquery.ba-hashchange.min.js') %]"></script>
+<!--[if lte IE 6]>
+ <link rel="stylesheet" href="/jslib/OpenLayers-2.10/theme/default/ie6-style.css" type="text/css" />
+<![endif]-->
+[% END %]
+
+[% map_html = BLOCK %]
+[% INCLUDE maps/openlayers.html %]
+[% END %]
+
diff --git a/templates/web/default/maps/openlayers.html b/templates/web/default/maps/openlayers.html
index b75e2bbd8..1ac32a717 100644
--- a/templates/web/default/maps/openlayers.html
+++ b/templates/web/default/maps/openlayers.html
@@ -65,13 +65,13 @@ var fixmystreet = {
SET zoom_out = '#' IF map.zoom <= 0;
%]
<div style="position: absolute; left: 4px; top: 4px; z-index: 1007;" class="olControlPanZoom olControlNoSelect" unselectable="on">
- <div style="position: absolute; left: 13px; top: 4px; width: 18px; height: 18px;"><a rel="nofollow" href="[% north %]"><img style="position: relative; width: 18px; height: 18px;" src="/jslib/OpenLayers-2.10/img/north-mini.png" border="0"></a></div>
- <div style="position: absolute; left: 4px; top: 22px; width: 18px; height: 18px;"><a rel="nofollow" href="[% west %]"><img style="position: relative; width: 18px; height: 18px;" src="/jslib/OpenLayers-2.10/img/west-mini.png" border="0"></a></div>
- <div style="position: absolute; left: 22px; top: 22px; width: 18px; height: 18px;"><a rel="nofollow" href="[% east %]"><img style="position: relative; width: 18px; height: 18px;" src="/jslib/OpenLayers-2.10/img/east-mini.png" border="0"></a></div>
- <div style="position: absolute; left: 13px; top: 40px; width: 18px; height: 18px;"><a rel="nofollow" href="[% south %]"><img style="position: relative; width: 18px; height: 18px;" src="/jslib/OpenLayers-2.10/img/south-mini.png" border="0"></a></div>
- <div style="position: absolute; left: 13px; top: 63px; width: 18px; height: 18px;"><a rel="nofollow" href="[% zoom_in %]"><img style="position: relative; width: 18px; height: 18px;" src="/jslib/OpenLayers-2.10/img/zoom-plus-mini.png" border="0"></a></div>
- <div style="position: absolute; left: 13px; top: 81px; width: 18px; height: 18px;"><a rel="nofollow" href="[% world %]"><img style="position: relative; width: 18px; height: 18px;" src="/jslib/OpenLayers-2.10/img/zoom-world-mini.png" border="0"></a></div>
- <div style="position: absolute; left: 13px; top: 99px; width: 18px; height: 18px;"><a rel="nofollow" href="[% zoom_out %]"><img style="position: relative; width: 18px; height: 18px;" src="/jslib/OpenLayers-2.10/img/zoom-minus-mini.png" border="0"></a></div>
+ <div style="position: absolute; left: 13px; top: 4px; width: 18px; height: 18px;"><a rel="nofollow" href="[% north %]"><img style="position: relative; width: 18px; height: 18px;" src="/js/OpenLayers-2.13.1/img/north-mini.png" border="0"></a></div>
+ <div style="position: absolute; left: 4px; top: 22px; width: 18px; height: 18px;"><a rel="nofollow" href="[% west %]"><img style="position: relative; width: 18px; height: 18px;" src="/js/OpenLayers-2.13.1/img/west-mini.png" border="0"></a></div>
+ <div style="position: absolute; left: 22px; top: 22px; width: 18px; height: 18px;"><a rel="nofollow" href="[% east %]"><img style="position: relative; width: 18px; height: 18px;" src="/js/OpenLayers-2.13.1/img/east-mini.png" border="0"></a></div>
+ <div style="position: absolute; left: 13px; top: 40px; width: 18px; height: 18px;"><a rel="nofollow" href="[% south %]"><img style="position: relative; width: 18px; height: 18px;" src="/js/OpenLayers-2.13.1/img/south-mini.png" border="0"></a></div>
+ <div style="position: absolute; left: 13px; top: 63px; width: 18px; height: 18px;"><a rel="nofollow" href="[% zoom_in %]"><img style="position: relative; width: 18px; height: 18px;" src="/js/OpenLayers-2.13.1/img/zoom-plus-mini.png" border="0"></a></div>
+ <div style="position: absolute; left: 13px; top: 81px; width: 18px; height: 18px;"><a rel="nofollow" href="[% world %]"><img style="position: relative; width: 18px; height: 18px;" src="/js/OpenLayers-2.13.1/img/zoom-world-mini.png" border="0"></a></div>
+ <div style="position: absolute; left: 13px; top: 99px; width: 18px; height: 18px;"><a rel="nofollow" href="[% zoom_out %]"><img style="position: relative; width: 18px; height: 18px;" src="/js/OpenLayers-2.13.1/img/zoom-minus-mini.png" border="0"></a></div>
</div>
[% END %]
diff --git a/templates/web/default/maps/osm-streetview.html b/templates/web/default/maps/osm-streetview.html
index 3bc4614c6..dff6a0c0f 100644
--- a/templates/web/default/maps/osm-streetview.html
+++ b/templates/web/default/maps/osm-streetview.html
@@ -4,7 +4,7 @@
<script type="text/javascript" src="[% version('/js/map-streetview.js') %]"></script>
<script type="text/javascript" src="[% version('/js/jquery.ba-hashchange.min.js') %]"></script>
<!--[if lte IE 6]>
- <link rel="stylesheet" href="/jslib/OpenLayers-2.10/theme/default/ie6-style.css" type="text/css" />
+ <link rel="stylesheet" href="/js/OpenLayers-2.13.1/theme/default/ie6-style.css" type="text/css">
<![endif]-->
[% END %]
diff --git a/templates/web/default/maps/osm.html b/templates/web/default/maps/osm.html
index 804710ad1..0b2db1a53 100644
--- a/templates/web/default/maps/osm.html
+++ b/templates/web/default/maps/osm.html
@@ -4,7 +4,7 @@
<script type="text/javascript" src="[% version('/js/map-OpenStreetMap.js') %]"></script>
<script type="text/javascript" src="[% version('/js/jquery.ba-hashchange.min.js') %]"></script>
<!--[if lte IE 6]>
- <link rel="stylesheet" href="/jslib/OpenLayers-2.10/theme/default/ie6-style.css" type="text/css" />
+ <link rel="stylesheet" href="/js/OpenLayers-2.13.1/theme/default/ie6-style.css" type="text/css">
<![endif]-->
[% END %]
diff --git a/templates/web/default/my/my.html b/templates/web/default/my/my.html
index a6e4000df..48a33a1d2 100644
--- a/templates/web/default/my/my.html
+++ b/templates/web/default/my/my.html
@@ -13,6 +13,11 @@
<h1>[% loc('Your Reports') %]</h1>
+[% IF ! has_content %]
+[% tprintf( loc('You haven&rsquo;t created any reports yet. <a href="%s">Report a problem now.</a>'),
+ c.uri_for('/') ) %]
+[% END %]
+
[% INCLUDE 'pagination.html',
pager = problems_pager,
param = 'p'
diff --git a/templates/web/default/report/_council_sent_info.html b/templates/web/default/report/_council_sent_info.html
new file mode 100644
index 000000000..958562dc2
--- /dev/null
+++ b/templates/web/default/report/_council_sent_info.html
@@ -0,0 +1,5 @@
+[% IF problem.whensent || problem.can_display_external_id %]
+ <small class="council_sent_info"><br>
+ [% problem.processed_summary_string(c) %]
+ </small>
+[% END %]
diff --git a/templates/web/default/report/_main.html b/templates/web/default/report/_main.html
index 789f8e43e..0124052c0 100644
--- a/templates/web/default/report/_main.html
+++ b/templates/web/default/report/_main.html
@@ -5,11 +5,7 @@
[% problem.meta_line(c) | html %]
[%- IF !problem.used_map AND c.cobrand.moniker != 'emptyhomes' %]; <strong>[% loc('there is no pin shown as the user did not use the map') %]</strong>[% END %]
[% IF problem.bodies_str %]
- [% IF problem.whensent || problem.can_display_external_id %]
- <small class="council_sent_info"><br>
- [% problem.processed_summary_string(c) %]
- </small>
- [% END %]
+ [% INCLUDE 'report/_council_sent_info.html' %]
[% ELSE %]
<br><small>[% loc('Not reported to council') %]</small>
[% END %]
diff --git a/templates/web/default/report/updates.html b/templates/web/default/report/updates.html
index 9134c34f8..b0a015f03 100644
--- a/templates/web/default/report/updates.html
+++ b/templates/web/default/report/updates.html
@@ -30,8 +30,8 @@
[%- IF !update_state && update.problem_state %]
[%- state = update.meta_problem_state %]
[%- IF c.cobrand.moniker == 'bromley' OR problem.bodies_str == '2482' %]
- [%- update_state = 'marked as no further action' IF state == 'unable to fix' %]
- [%- update_state = 'marked as third party responsibility' IF state == 'not responsible' %]
+ [%- SET update_state = 'marked as no further action' IF state == 'unable to fix' %]
+ [%- SET update_state = 'marked as third party responsibility' IF state == 'not responsible' %]
[%- END %]
[%- END %]
[%- IF !update_state && update.problem_state %]
diff --git a/templates/web/default/reports/body.html b/templates/web/default/reports/body.html
index 8a443a5fe..2b19e5735 100755
--- a/templates/web/default/reports/body.html
+++ b/templates/web/default/reports/body.html
@@ -39,6 +39,10 @@
[% END %]
</h1>
+[% IF c.cobrand.moniker == 'hart' %]
+ [% INCLUDE '_hart_hants_note.html' %]
+[% END %]
+
[% IF NOT body.areas.size AND c.cobrand.country == 'GB' %]
<p id="unknown" class="alert">This council no longer exists.
[% IF council.name.match('Penwith|Kerrier|Carrick|Restormel|Caradon|North Cornwall') %]
diff --git a/templates/web/fixmindelo/footer.html b/templates/web/fixmindelo/footer.html
new file mode 100644
index 000000000..0af813439
--- /dev/null
+++ b/templates/web/fixmindelo/footer.html
@@ -0,0 +1,54 @@
+ [% IF pagefooter %]
+ <footer role="content-info">
+ <div id="footer-help">
+ <ul>
+ <li>
+ <h4>
+ <a class="link-fb" href="https://www.facebook.com/fixmindelo">Facebook</a>
+ </h4>
+ </li>
+ <li>
+ <h4>
+ <a class="link-fabap" href="http://galeria.fabricadeaplicativos.com.br/fixmystreetmindelo">Fábrica de aplicativos</a>
+ </h4>
+ </li>
+ <li>
+ <h4>
+ <a href="/privacy">Privacy and cookies</a>
+ </h4>
+ <li>
+ </ul>
+ </div>
+ </footer>
+ [% END %]
+ </div><!-- .content role=main -->
+ </div><!-- .container -->
+ </div><!-- .table-cell -->
+
+ <div class="nav-wrapper">
+ <div class="nav-wrapper-2">
+ <div id="main-nav" role="navigation">
+ <ul id="mysoc-menu">
+ <li><a id="mysoc-logo" href="http://www.mysociety.org/">mySociety</a></li>
+ </ul>
+
+ <ul id="main-menu">
+ <li><[% IF c.req.uri.path == '/' %]span[% ELSE %]a href="/"[% END %] class="report-a-problem-btn"
+ >[% loc("Report a problem") %]</[% c.req.uri.path == '/' ? 'span' : 'a' %]></li>[%
+ %]<li><[% IF c.req.uri.path == '/my' %]span[% ELSE %]a href="/my"[% END
+ %]>[% loc("Your reports") %]</[% c.req.uri.path == '/my' ? 'span' : 'a' %]></li>[%
+ %]<li><[% IF c.req.uri.path == '/reports' %]span[% ELSE %]a href="/reports"[% END
+ %]>[% loc("All reports") %]</[% c.req.uri.path == '/reports' ? 'span' : 'a' %]></li>[%
+ %]<li><[% IF c.req.uri.path == '/alert' %]span[% ELSE %]a href="/alert[% pc ? '/list?pc=' : '' %][% pc | uri %]"[% END
+ %]>[% loc("Local alerts") %]</[% c.req.uri.path == '/alert' ? 'span' : 'a' %]></li>[%
+ %]<li><[% IF c.req.uri.path == '/faq' %]span[% ELSE %]a href="/faq"[% END
+ %]>[% loc("Help") %]</[% c.req.uri.path == '/faq' ? 'span' : 'a' %]></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+
+<!-- [% INCLUDE 'debug_footer.html' %] -->
+ </div> <!-- .wrapper -->
+</body>
+</html>
diff --git a/templates/web/fixmindelo/static/privacy.html b/templates/web/fixmindelo/static/privacy.html
new file mode 100644
index 000000000..fd75f65e2
--- /dev/null
+++ b/templates/web/fixmindelo/static/privacy.html
@@ -0,0 +1,114 @@
+[% INCLUDE 'header.html', title = loc('Frequently Asked Questions'), bodyclass = 'twothirdswidthpage' %]
+
+<div class="sticky-sidebar">
+ <aside>
+ <ul class="plain-list">
+ <li><a href="/faq">Frequently Asked Questions</a></li>
+ <li><a href="/faq#practical">Practical Questions</a></li>
+ <li><a href="/faq#organisation">Organisation Questions</a></li>
+ <li><strong>Privacy and cookies</strong></li>
+ <li><a href="/contact">Contact FixMyStreet</a></li>
+ </ul>
+ </aside>
+</div>
+
+<h1>Privacidade, cookies e Serviços de Terceiros</h1>
+
+<p><strong>Nosso uso dos seus dados, cookies e serviços externos: o que você
+deve saber, e como optar por sair, se você desejar.</strong></p>
+
+<p>Sumário: Nós nos importamos muito com a privacidade de nossos usuários. Nós
+fornecemos detalhes abaixo, e tentamos o nosso melhor para cuidar dos dados
+privados que possuem. Como muitos outros sites, nós às vezes usamos cookies do
+Google Analytics e para nos ajudar a tornar nosso site melhor. Estas
+ferramentas são muito comuns e usadas por muitos outros sites, mas elas têm
+implicações de privacidade e, como uma instituição sem fins e preocupado com
+usos socialmente positivos da internet, nós achamos que é importante
+explicá-los na íntegra. Se você não quer compartilhar suas atividades de
+navegação em sites do FixMyStreetMindelo com outras empresas, você pode ajustar
+o seu uso ou instalar plugins do navegador opt-out.
+
+<h2>Privacidade</h2>
+
+ <dl>
+ <dt>Quem consegue ver o meu endereço de e-mail?</dt>
+ <dd>Se você enviar um problema, os seus detalhes, e os detalhes do
+problema, para o contato ou contatos conselho responsável pela área onde se
+localiza o problema, ou outro órgão competente do Conselho de Mindelo, podem
+publicar os detalhes públicos de seu relatório. Diferentemente do conselho,
+que, obviamente, obter o seu endereço de e-mail, apenas pessoas que autorizar
+para ver a interface de administração FixMyStreetMindelo será capaz de ver o
+seu endereço de e-mail e eles nunca vão usá-lo para outra coisa senão para
+ajudar a administrar FixMyStreetMindelo. O mesmo ocorre com os endereços de
+e-mail de atualizações. Nós nunca iremos dar ou vender o seu endereço de e-mail
+para qualquer outra pessoa, a menos que sejamos obrigados por lei. Seu nome,
+dados no campo de nome, não será publicado em qualquer lugar, a menos que você
+nos deixou (se você dá o seu nome em outro lugar, por exemplo, na seção de
+detalhes público, estará disponível ao público).</dd>
+ <dt>Você vai enviar spam para o meu endereço de e-mail ?</dt>
+ <dd>Nunca. Nós só enviaremos, se alguém deixar uma atualização sobre um
+problema que você relatou, ou reportou e lhe enviamos um e-mail questionário
+mais ou menos após quatro semanas depois de apresentar um problema, pedindo uma
+atualização de status do problema , e só vamos sempre enviar-lhe e-mails em
+relação ao seu problema, relatado e reportado.</dd>
+ </dl>
+
+<h2>Cookies</h2>
+
+<p>Para tornar o nosso serviço mais fácil ou mais útil, às vezes colocar
+pequenos arquivos de dados em seu computador ou telefone celular, conhecido
+como cookies, muitos sites fazem isso. Usamos essa informação para, por
+exemplo, lembrar que destes entrada no site FixMyStreetMindelo, assim você não
+precisa fazer isso em cada página, ou para medir como as pessoas usam o site
+para que possamos melhorá-lo e certificar-se de que ele funciona corretamente.
+
+
+<h3>Medir o uso do site (Google Analytics) </h3>
+
+<p>Usamos o Google Analytics para coletar informações sobre como as pessoas
+usam este site. Fazemos isso para ter certeza que atendemos às necessidades
+dos utilizadores e para entender como poderíamos fazê-lo melhor. Google
+Analytics armazena informações como as páginas que você visita, quanto tempo
+você está no site, como você chegou aqui, o que você clicar, e informações
+sobre o seu navegador. Os endereços IP são mascaradas (apenas uma parte é
+armazenada) e informações pessoais só são relatadas em conjunto. Nós não
+permitimos que o Google use ou compartilhar nossos dados de análise para
+qualquer finalidade, além de nos fornecer informações de análise, e
+recomendamos que qualquer usuário do Google Analytics faça o mesmo.
+
+<p>Se você não está satisfeito com dados sobre sua visita no site para ser
+usada desta forma, você pode instalar o <a
+href="http://tools.google.com/dlpage/gaoptout">plugin oficial do navegador para
+bloquear o Google Analytics.</a>.
+
+<p>Os cookies criados pelo Google Analytics são os seguintes
+
+<table cellpadding=5>
+<tr align="left"><th scope="col">Nome</th><th scope="col">conteúdo típico </th><th scope="col">Expira</th></tr>
+<tr><td>__utma</td><td>anônimo único ID</td><td>2&nbsp;anos</td></tr>
+<tr><td>__utmb</td><td>única sessão anônima ID </td><td>30&nbsp;minutos</td></tr>
+<tr><td>__utmz</td><td>IInformações sobre como o site foi alcançado (eg direta ou através de um link / search / propaganda)</td><td>6&nbsp;meses</td></tr>
+<tr><td>__utmx</td><td>Que variação de uma página que você está vendo se estamos testando versões diferentes para ver qual é o melhor </td><td>2&nbsp;anos</td></tr>
+</table>
+
+<h4>Declaração oficial sobre dados do Google Analytics</h4>
+
+<p>"Este site usa o Google Analytics, um serviço de analítico Web fornecido
+pelo Google, Inc. (" Google "). Google Analytics utiliza "cookies", que são
+arquivos de texto colocados no seu computador, para ajudar o site a analisar
+como os usuários usam o site. A informação gerada pelo cookie acerca da sua
+utilização do website (incluindo o seu endereço IP) será transmitida para e
+armazenada pelo Google nos servidores nos Estados Unidos. Google irá utilizar
+esta informação para efeitos de avaliar a sua utilização do website, compilando
+relatórios sobre a actividade no website para operadores e fornecendo outros
+serviços relativos a actividade do website e utilização da Internet. Google
+pode igualmente transferir esta informação para terceiros, quando obrigado a
+fazê-lo por lei, ou caso tais terceiros processem a informação em nome do
+Google. O Google não associará o seu endereço IP com quaisquer outros dados
+mantidos pelo Google. Você pode recusar o uso de cookies, selecionando as
+definições apropriadas no seu navegador, no entanto, por favor, note que se
+você fizer isso, você pode não ser capaz de usar todas as funcionalidades deste
+site. Ao utilizar este site, você concorda com o processamento de dados pelo
+Google na forma e para os fins acima referidos. "</p>
+
+[% INCLUDE 'footer.html' pagefooter = 'yes' %]
diff --git a/templates/web/fixmystreet/around/postcode_form.html b/templates/web/fixmystreet/around/postcode_form.html
index ed5d700f0..c060c1a00 100644
--- a/templates/web/fixmystreet/around/postcode_form.html
+++ b/templates/web/fixmystreet/around/postcode_form.html
@@ -28,4 +28,9 @@
</form>
[% END %]
</div>
+ [% IF c.cobrand.moniker == 'fixmystreet' %]
+ <div style="max-width: 30em; margin: 1em auto;">
+ We're running a survey to help us understand who uses our sites. If you have 10-15 minutes to spare then we'd be grateful if you could <a href="http://questions.mysociety.org/S/fms/w/" target="_blank">take part</a>.
+ </div>
+ [% END %]
</div>
diff --git a/templates/web/fixmystreet/faq/faq-en-gb.html b/templates/web/fixmystreet/faq/faq-en-gb.html
index 3fe8d5af9..b9d720dab 100755
--- a/templates/web/fixmystreet/faq/faq-en-gb.html
+++ b/templates/web/fixmystreet/faq/faq-en-gb.html
@@ -74,25 +74,21 @@ then together lobby the council to fix it, or fix it directly yourselves[% END %
by a registered charity, though, so if you want to make a contribution, <a
href="https://secure.mysociety.org/donate/">please do</a>.</dd>
- <dt>Can I use FixMyStreet on my mobile?</dt>
- <dd>
- <p>The FixMyStreet website should work on your mobile phone, adapting to
- the size of your screen automatically. We plan to release updated native
- apps in the near future.
- <ul>
-<!--
- <li><em>iPhone:</em> Our basic app from 2008 is available for download
- on the App Store:
- <a href="http://itunes.apple.com/gb/app/fixmystreet/id297456545">FixMyStreet</a>,
- <li><em>Android:</em> A volunteer, Anna Powell-Smith, has written an app
- available from the
- <a href="https://market.android.com/details?id=com.android.fixmystreet">Android Market</a>.
--->
- <li><em>Nokia:</em> A volunteer, Thomas Forth, has written an app available from the
- <a href="http://store.ovi.com/content/107557">Ovi Store</a>.
- </ul>
- </dd>
-
+ <dt>Can I use FixMyStreet on my mobile?</dt>
+ <dd>
+ <p>The FixMyStreet website will already work on your mobile phone, adapting to
+ the size of your screen automatically. Using an app has some advantages, though
+ &mdash; for example, you can create a report even when you have no network
+ connection.
+ <ul>
+ <li>
+ <a href="https://itunes.apple.com/gb/app/fixmystreet/id297456545">FixMyStreet app for iPhone</a>
+ <li>
+ <a href="https://play.google.com/store/apps/details?id=org.mysociety.FixMyStreet">FixMyStreet app for Android</a>
+ <li><em>Nokia:</em> A volunteer, Thomas Forth, has written an app available from the
+ <a href="http://store.ovi.com/content/107557">Ovi Store</a>.
+ </ul>
+ </dd>
</dl>
<h2><a name="practical"></a>Practical Questions</h2>
diff --git a/templates/web/fixmystreet/footer.html b/templates/web/fixmystreet/footer.html
index c1b04750a..dbf9235e0 100644
--- a/templates/web/fixmystreet/footer.html
+++ b/templates/web/fixmystreet/footer.html
@@ -3,11 +3,12 @@
<div class="tablewrapper bordered">
<div id="footer-mobileapps">
<h4>Mobile apps</h4>
-
- <ul>
- <li><a class="m-app-nokia" href="http://store.ovi.com/content/107557">Nokia</a></li>
- <li style="line-height:1"><small>New iPhone and Android<br>apps coming soon</small></li>
- </ul>
+ <p>
+ <a href="https://itunes.apple.com/gb/app/fixmystreet/id297456545">iPhone</a>
+ and
+ <a href="https://play.google.com/store/apps/details?id=org.mysociety.FixMyStreet">Android</a>
+ apps now available.
+ </p>
</div>
<div id="footer-help">
diff --git a/templates/web/fixmystreet/header.html b/templates/web/fixmystreet/header.html
index 34c78d68b..e0d0e7af2 100644
--- a/templates/web/fixmystreet/header.html
+++ b/templates/web/fixmystreet/header.html
@@ -11,6 +11,16 @@
<meta name="HandHeldFriendly" content="true">
<meta name="mobileoptimized" content="0">
+ <meta property="og:url" content="[% c.cobrand.base_url %][% c.req.uri.path %]">
+ <meta property="og:title" content="[% title || 'FixMyStreet' %]">
+ <meta property="og:site_name" content="[% c.cobrand.site_title %]">
+ [% IF c.req.uri.path == '/' %]<meta property="og:description" content="Report, view, and discuss local street-related problems.">[% END %]
+ <meta property="og:type" content="website">
+ <meta property="og:image" content="[% c.cobrand.base_url %]/cobrands/fixmystreet/fms-og_image.png">
+ <meta property="og:image:type" content="image/png">
+ <meta property="og:image:width" content="500">
+ <meta property="og:image:height" content="500">
+
[% SET start = c.config.ADMIN_BASE_URL IF admin %]
<link rel="stylesheet" href="[% start %][% version('/cobrands/' _ c.cobrand.moniker _ '/base.css') %]">
diff --git a/templates/web/fixmystreet/index.html b/templates/web/fixmystreet/index.html
index f45509891..4d674a17e 100644
--- a/templates/web/fixmystreet/index.html
+++ b/templates/web/fixmystreet/index.html
@@ -42,7 +42,13 @@ kinds of problems like missed bins use our
[% IF recent_photos.size %]
<div id="front-recently">
- <h2>[% loc('Recently reported problems') %]</h2>
+ <h2>
+ [% IF c.cobrand.moniker == 'hart' %]
+ Recently reported
+ [% ELSE %]
+ [% loc('Recently reported problems') %]
+ [% END %]
+ </h2>
<section class="full-width">
<ul class="issue-list-a">
diff --git a/templates/web/fixmystreet/my/my.html b/templates/web/fixmystreet/my/my.html
index 12f68bd80..5c4ccf2af 100644
--- a/templates/web/fixmystreet/my/my.html
+++ b/templates/web/fixmystreet/my/my.html
@@ -13,8 +13,15 @@
<h1>[% loc('Your Reports') %]</h1>
+[% IF ! has_content %]
+[% tprintf( loc('You haven&rsquo;t created any reports yet. <a href="%s">Report a problem now.</a>'),
+ c.uri_for('/') ) %]
+[% END %]
+
[% IF c.cobrand.moniker == 'fixmybarangay' %]
[% INCLUDE '_barangay_buttons.html' %]
+[% ELSIF c.cobrand.moniker == 'hart' %]
+ [% INCLUDE '_hart_hants_note.html' %]
[% END %]
[% INCLUDE 'pagination.html',
diff --git a/templates/web/hart/_hart_hants_note.html b/templates/web/hart/_hart_hants_note.html
new file mode 100644
index 000000000..a091ad3fc
--- /dev/null
+++ b/templates/web/hart/_hart_hants_note.html
@@ -0,0 +1,5 @@
+<div id="hart_hants_note">
+ Note that reports managed by Hampshire County Council are not shown on
+ this map. View those reports on
+ <a href="http://www.fixmystreet.com/reports/Hampshire">FixMyStreet.com</a>
+</div>
diff --git a/templates/web/hart/around/intro.html b/templates/web/hart/around/intro.html
new file mode 100644
index 000000000..7cc971041
--- /dev/null
+++ b/templates/web/hart/around/intro.html
@@ -0,0 +1,4 @@
+ <div id="postcode-intro">
+ <h1> Report something in Hart that needs to be fixed </h1>
+ <h2> (like graffiti, fly tipping, broken paving slabs, or street lighting) </h2>
+ </div>
diff --git a/templates/web/hart/contact/submit.html b/templates/web/hart/contact/submit.html
new file mode 100644
index 000000000..781862866
--- /dev/null
+++ b/templates/web/hart/contact/submit.html
@@ -0,0 +1,19 @@
+[% INCLUDE 'header.html', title = loc('Contact Us') %]
+
+<h1>[% loc('Contact the team') %]</h1>
+
+[% IF success %]
+
+<p>Thank you for letting us know about this report. We will review, and if
+necessary, edit the report, or remove it from the site. You can contact us at
+<a href="mailto:[% contact_email %]">[% contact_email %]</a>.
+
+[% ELSE %]
+
+ <p>
+ [% tprintf( loc('Failed to send message. Please try again, or <a href="mailto:%s">email us</a>.'), contact_email ) %]
+ </p>
+
+[% END %]
+
+[% INCLUDE 'footer.html' %]
diff --git a/templates/web/hart/faq/faq-en-gb.html b/templates/web/hart/faq/faq-en-gb.html
new file mode 100755
index 000000000..0379b0745
--- /dev/null
+++ b/templates/web/hart/faq/faq-en-gb.html
@@ -0,0 +1,132 @@
+[% INCLUDE 'header.html', title = 'Help', bodyclass = 'fullwidthpage' %]
+
+<h1> Frequently Asked Questions </h1>
+
+<p>These pages are for reporting things which are broken, dirty, damaged or dumped, and need fixing, cleaning or clearing, such as the following (<a href="http://hart.gov.uk/index/customer_services/a-z_of_services.htm">See the full list</a>):</p>
+<ul>
+ <li>abandoned vehicles
+ <li>graffiti
+ <li>flytipping and dumped rubbish
+ <li>street cleaning, such as dog fouling and street sweeping
+ <li>unlit lamp posts
+ <li>potholes
+ </ul>
+<p> Note that though most of these services are provided by Hart District Council, while FixMyStreet will forward some categories of issue to Hampshire County Council. </p>
+
+<dl>
+ <dt>What issues can&rsquo;t be reported here?</dt>
+ <dd><p>The following problems should be reported via
+ <a href="http://www.hart.gov.uk/online-forms">www.hart.gov.uk/online-forms</a>:</p>
+ <ul>
+ <li>missed rubbish or recycling collections
+ <li>anti-social behaviour
+ <li>noise pollution or barking dogs
+ <li>fires and smoke/smell pollution
+ <li>proposals for speed bumps/ CCTV/ pedestrian crossings/ new road layouts/ etc.
+ <li>complaining about your neighbours
+ <li>complaining or commenting about the council
+ </ul>
+
+ </dd>
+
+ <dt><a name="emergencies"></a>Reporting emergencies (Out of Hours)</dt>
+ <dd>
+ <p> Please do not report problems which present an immediate risk to life, for example missing manhole covers or a fallen lamp column. </p>
+ <p> Issues reported via the website are only actioned during office hours. If you require an Out of Hours service please ring our main number 01252 622122 and a message will direct you to the relevant Council Out of Hours service. </p>
+
+ </dd>
+
+ <dt>How do I report a problem here?</dt>
+ <dd>After entering a postcode or location, you are shown
+a map of that area. You can view problems already reported in that area,
+or report ones of your own by clicking on the map at the location of
+the problem.</dd>
+ <dt>How are the problems solved?</dt>
+ <dd>They are reported directly to us so we can then resolve the problem.
+ You can also discuss the problem on the website with others if you wish.</dd>
+
+ <dt>Do you remove silly or illegal content?</dt>
+ <dd>Hart District Council and FixMyStreet are not responsible for the content and accuracy
+of material submitted by its users. We reserve the right to edit or remove any
+problems or updates which we consider to be inappropriate upon being informed
+by a user of the site.</dd>
+
+ <dt>Can I use FixMyStreet on my mobile?</dt>
+ <dd>
+ <p>The FixMyStreet website will already work on your mobile phone, adapting to
+ the size of your screen automatically. Using an app has some advantages, though
+ &mdash; for example, you can create a report even when you have no network
+ connection.
+ <ul>
+ <li>
+ <a href="https://itunes.apple.com/gb/app/fixmystreet/id297456545">FixMyStreet app for iPhone</a>
+ <li>
+ <a href="https://play.google.com/store/apps/details?id=org.mysociety.FixMyStreet">FixMyStreet app for Android</a>
+ <li><em>Nokia:</em> A volunteer, Thomas Forth, has written an app available from the
+ <a href="http://store.ovi.com/content/107557">Ovi Store</a>.
+ </ul>
+ </dd>
+
+ <dt>Can I use these pages to report problems outside of the Hart District?</dd>
+ <dd>Yes, if you enter a postcode or address outside the borough you will be re-directed to the main FixMyStreet site that will enable you to report problems elsewhere. FixMyStreet will forward these on to the relevant council.</dd>
+
+ <dt>The site is powered by FixMyStreet, who are they?</dt>
+ <dd>FixMyStreet was built by <a href="http://www.mysociety.org/">mySociety</a>, in conjunction with the <a href="http://www.youngfoundation.org.uk/">Young Foundation</a>.
+mySociety is the project of a registered charity which has grown out of the community of
+volunteers who built sites like <a href="http://www.theyworkforyou.com/">TheyWorkForYou</a>.
+mySociety&rsquo;s primary mission is to build Internet projects which give people simple, tangible
+benefits in the civic and community aspects of their lives.
+The charity is called UK Citizens Online Democracy and is charity number 1076346. mySociety
+can be contacted by email at <a href="mailto:hello&#64;mysociety.org">hello&#64;mysociety.org</a>,
+or by post at mySociety, 483 Green Lanes, London, N13 4BS.</dd>
+
+ <dt>Why does the site use kilometres for measurements?</dt>
+ <dd>The British national
+ grid reference system, devised by Ordnance Survey (the British national
+ mapping agency) around the time of the second world war, uses eastings and
+ northings measured in metres and kilometres; the maps we use are from
+ Ordnance Survey and so this is what we use to display distances.
+ There you have it: not everything British is in miles!</dd>
+
+ <dt>Why can&rsquo;t I zoom out more on the reporting map?</dt>
+ <dd>We want to keep reports locally focused, so we restrict the ability to
+ move radically between areas. The map on <a href="/my">Your Reports</a> will let you see all
+ the reports you&rsquo;ve made, wherever they are.</dd>
+
+ <dt>I&rsquo;d like a site like this for my own location/ where&rsquo;s the "source code" to this site?</dt>
+ <dd>
+The mySociety software behind this site is open source, and available
+under the GNU Affero GPL software license. You can <a
+href="http://github.com/mysociety/fixmystreet">download the
+source code</a> and help mySociety develop it.
+You&rsquo;re welcome to use it in your own projects, although you must also
+make available the source code to any such projects.
+<a href="http://www.fiksgatami.no/">Fiksgatami</a> is an example of our code
+being used in a Norwegian version of this site.
+</dd>
+
+</dl>
+
+ <h2><a name="privacy"></a>Privacy Questions</h2>
+
+ <dl>
+ <dt>Who gets to see my email address?</dt>
+ <dd>
+<p>If you submit a problem, your details, and details of the problem, will be
+submitted to Hart District Council, or Hampshire County Council, as
+appropriate. Other than the council, only people we authorise to view the
+FixMyStreet administration interface will be able to see your email address and
+they will never use it for anything other than to help administer
+FixMyStreet.</p>
+<p>We will never give or sell your email address to anyone else, unless we are
+obliged to by law. Your name will not be published anywhere unless you let us.</p>
+</dd>
+
+ <dt>What emails will you send to me?</dt>
+ <dd>We will email you when we have received your report, and when it has
+ been investigated and actioned. We will only send you emails that
+ relate to an issue you have reported.</dd>
+
+ </dl>
+
+[% INCLUDE 'footer.html' pagefooter = 'yes' %]
diff --git a/templates/web/hart/footer.html b/templates/web/hart/footer.html
new file mode 100644
index 000000000..ebdd74d51
--- /dev/null
+++ b/templates/web/hart/footer.html
@@ -0,0 +1,110 @@
+ </div><!-- .content role=main -->
+
+ </div><!-- .container -->
+
+ </div><!-- .table-cell -->
+
+ <div class="nav-wrapper clearfix">
+ <div class="main-menu-wrapper">
+ <div class="main-menu">
+ <ul class="clearfix">
+ <li class="home"><[% IF c.req.uri.path == '/' %]span[% ELSE %]a href="/"[% END %] class="report-a-problem-btn"
+ >[% "Report" %]</[% c.req.uri.path == '/' ? 'span' : 'a' %]></li>[%
+ %]<li><[% IF c.req.uri.path == '/my' OR ( c.req.uri.path == '/auth' AND c.req.params.r == 'my' ) %]span[% ELSE %]a href="/my"[% END
+ %]>[% loc("Your reports") %]</[% ( c.req.uri.path == '/my' OR ( c.req.uri.path == '/auth' AND c.req.params.r == 'my' ) ) ? 'span' : 'a' %]></li>[%
+ %]<li><[% IF c.req.uri.path == '/reports/Hart' %]span[% ELSE %]a href="/reports/Hart"[% END
+ %]>[% loc("All reports") %]</[% c.req.uri.path == '/reports' ? 'span' : 'a' %]></li>[%
+ %]<li><[% IF c.req.uri.path == '/alert' %]span[% ELSE %]a href="/alert[% pc ? '/list?pc=' : '' %][% pc | uri %]"[% END
+ %]>[% loc("Local alerts") %]</[% c.req.uri.path == '/alert' ? 'span' : 'a' %]></li>[%
+ %]<li class="last"><[% IF c.req.uri.path == '/faq' %]span[% ELSE %]a href="/faq"[% END
+ %]>[% loc("Help") %]</[% c.req.uri.path == '/faq' ? 'span' : 'a' %]></li>
+ </ul>
+ </div>
+ </div>
+ <div class="nav-wrapper-2 clearfix">
+ <div id="main-nav" class="clearfix" role="navigation">
+ <ul>
+ <li>
+ <a href="http://www.hart.gov.uk/home">Home</a>
+ </li>
+ <li>
+ <a href="http://www.hart.gov.uk/services">My Services</a>
+ </li>
+ <li>
+ <a href="http://www.hart.gov.uk/residents">Residents</a>
+ </li>
+ <li>
+ <a href="http://www.hart.gov.uk/businesses">Businesses</a>
+ </li>
+ <li>
+ <a href="http://www.hart.gov.uk/visiting">Visiting</a>
+ </li>
+ <li>
+ <a href="http://www.hart.gov.uk/the-council">The Council</a>
+ </li>
+ </ul>
+ </div>
+ <div class="sign-in">
+ [% IF c.user_exists %]
+ <p>
+ [% tprintf(loc('Hi %s'), c.user.name || c.user.email) %]
+ <a href="/auth/sign_out">[% loc('sign out') %]</a>
+ </p>
+ [% END %]
+ </div>
+ </div>
+ </div>
+
+ <div class="hart-footer-wrapper">
+ <div id="footer_outside_wrapper">
+ <div id="footer_inside_wrapper" class="clearfix">
+ <div id="footer-right" class="clearfix">
+ <ul class="footer-nav">
+ <li> <a href="http://www.hart.gov.uk/sitemap">Site map</a> </li>
+ <li> <a href="http://www.hart.gov.uk/Accessibility">Accessibility</a> </li>
+ </ul>
+ </div>
+ <footer id="hart-footer" class="clearfix">
+ <div id="copyright-block" class="desk-only">
+ <strong>©</strong> &nbsp;
+ <a href="http://www.hart.gov.uk/disclaimer" title="More information on the Disclaimer">Hart District Council</a>
+ </div>
+ <ul class="footer-nav clearfix">
+ <li> <a href="http://www.hart.gov.uk/disclaimer">Disclaimer</a></li>
+ <li> <a href="http://www.hart.gov.uk/freedom-information">Freedom of Information</a></li>
+ <li> <a href="http://www.hart.gov.uk/privacy">Privacy</a></li>
+ </ul>
+ </footer>
+ <div class="clearfix" id="footer-row-2">
+ <div id="hart-powered-by">
+ <a href="http://www.mysociety.org/for-councils/fixmystreet/">Powered by <img src="/cobrands/hart/fms-logo.png" alt="FixMyStreet" style="height:20px;"></a>
+ </div>
+ <div id="footer-images">
+ <a href="https://twitter.com/HartCouncil">
+ <img alt="" src="/cobrands/hart/twitter-logo.png" style="height:43px; width:43px" />
+ </a>
+ <a href="http://www.facebook.com/HartDistrictCouncil">
+ <img alt="" src="/cobrands/hart/facebook-logo.png" style="height:43px; margin-right: 10px; width:43px" />
+ </a>
+ <a href="http://www.gov.uk">
+ <img alt="" src="/cobrands/hart/gov-logo.png" style="height:43px; width:172px" />
+ </a>
+ </div>
+ </div>
+ <div id="footer-row-3">
+ <div id="copyright-block-mobile" class="mob-only">
+ <strong>©</strong> &nbsp;
+ <a href="http://www.hart.gov.uk/disclaimer" title="More information on the Disclaimer">
+ Hart District Council</a>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="footer_border">
+ </div>
+
+
+</div>
+</body>
+</html>
diff --git a/templates/web/hart/header.html b/templates/web/hart/header.html
new file mode 100644
index 000000000..670ddede0
--- /dev/null
+++ b/templates/web/hart/header.html
@@ -0,0 +1,82 @@
+<!doctype html>
+<!--[if lt IE 7]><html class="no-js ie6 oldie" lang="[% lang_code %]"><![endif]-->
+<!--[if IE 7]> <html class="no-js ie7 oldie" lang="[% lang_code %]"><![endif]-->
+<!--[if IE 8]> <html class="no-js ie8 oldie" lang="[% lang_code %]"><![endif]-->
+<!--[if IE 9]> <html class="no-js ie9 oldie" lang="[% lang_code %]"><![endif]-->
+<!--[if gt IE 9]><!--><html class="no-js" lang="[% lang_code %]"><!--<![endif]-->
+ <head>
+ <meta name="viewport" content="initial-scale=1.0">
+
+ <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
+ <meta name="HandHeldFriendly" content="true">
+ <meta name="mobileoptimized" content="0">
+
+ <meta property="og:url" content="[% c.cobrand.base_url %][% c.req.uri.path %]">
+ <meta property="og:title" content="[% title || 'FixMyStreet' %]">
+ <meta property="og:site_name" content="[% c.cobrand.site_title %]">
+ [% IF c.req.uri.path == '/' %]<meta property="og:description" content="Report, view, and discuss local street-related problems.">[% END %]
+ <meta property="og:type" content="website">
+ <meta property="og:image" content="[% c.cobrand.base_url %]/cobrands/fixmystreet/fms-og_image.png">
+ <meta property="og:image:type" content="image/png">
+ <meta property="og:image:width" content="500">
+ <meta property="og:image:height" content="500">
+
+[% SET start = c.config.ADMIN_BASE_URL IF admin %]
+
+ <link rel="stylesheet" href="[% start %][% version('/cobrands/' _ c.cobrand.moniker _ '/base.css') %]">
+ <link rel="stylesheet" href="[% start %][% version('/cobrands/' _ c.cobrand.moniker _ '/layout.css') %]" media="(min-width:48em)">
+ <link rel="stylesheet" href="[% version('/cobrands/hart/hart.css') %]">
+ [% extra_css %]
+ <!--[if (lt IE 9) & (!IEMobile)]>
+ <link rel="stylesheet" href="[% start %][% version('/cobrands/' _ c.cobrand.moniker _ '/layout.css') %]">
+ <![endif]-->
+
+ <script src="[% start %][% version('/js/modernizr.custom.js') %]" charset="utf-8"></script>
+ <script src="[% start %][% version('/cobrands/fixmystreet/position_map.js') %]" charset="utf-8"></script>
+ [% INCLUDE 'common_header_tags.html', js_override = '/cobrands/fixmystreet/fixmystreet.js', site_title = c.cobrand.site_title %]
+ [% extra_js %]
+ <script type="text/javascript">
+ $(function(){
+ var $html = $('html');
+ $(window).resize(function(){
+ if(!$html.hasClass('mobile')) {
+ // Hart has a bigger header and so needs more room for
+ // the map controls
+ $('#fms_pan_zoom').css({ top: '17.75em' });
+ }
+ }).resize();
+ });
+ </script>
+
+ [% IF c.req.uri.host == 'osm.fixmystreet.com' %]
+ <link rel="canonical" href="http://www.fixmystreet.com[% c.req.uri.path_query %]">
+ [% END %]
+
+ [% INCLUDE 'tracking_code.html' %]
+
+ <link rel="Shortcut Icon" type="image/x-icon" href="/cobrands/hart/favicon.ico">
+
+ </head>
+ [% TRY %][% PROCESS 'set_body_class.html' %][% CATCH file %][% END %]
+ <body class="[% bodyclass | html IF bodyclass %]">
+
+ <div class="wrapper">
+ <div class="table-cell">
+ <header id="site-header" role="banner">
+ <div class="mobile-header-nav">
+ <ul>
+ <li> <a href="http://www.hart.gov.uk/"><div class="home-icon">&nbsp;</div></a>
+ <li> <a href="#main-nav"><div class="menu-icon">&nbsp;</div></a>
+ </ul>
+ </div>
+ <div class="header-container">
+ <a id="site-logo" href="http://www.hart.gov.uk">Hart District Council</a>
+ </div>
+ </header>
+
+ [% pre_container_extra %]
+
+ <div class="container">
+ <div class="content[% " $mainclass" | html IF mainclass %]" role="main">
+
+ <!-- [% INCLUDE 'debug_header.html' %] -->
diff --git a/templates/web/hart/index-steps.html b/templates/web/hart/index-steps.html
new file mode 100644
index 000000000..450a793c9
--- /dev/null
+++ b/templates/web/hart/index-steps.html
@@ -0,0 +1,18 @@
+<h2> How to report </h2>
+
+<ol class="big-numbers">
+ <li>[% question %]</li>
+ <li> Locate it on a map of the area </li>
+ <li> Enter its details </li>
+ <li>Confirm the report and [% c.cobrand.council_name %] will investigate</li>
+</ol>
+
+<div id="hart_hants_note">
+ This site can also be used to report problems to Hampshire County Council via FixMyStreet.
+</div>
+
+<section class="full-width">
+[% INCLUDE "front/stats.html" %]
+[% TRY %][% INCLUDE "front/tips.html" %][% CATCH file %][% END %]
+</section>
+
diff --git a/templates/web/hart/report/new/councils_extra_text.html b/templates/web/hart/report/new/councils_extra_text.html
new file mode 100644
index 000000000..e3e5fb27e
--- /dev/null
+++ b/templates/web/hart/report/new/councils_extra_text.html
@@ -0,0 +1,10 @@
+<div id="hart_hants_note">
+<p>
+<b>NB:</b> though we will forward your request as appropriate,
+reports for problems managed by Hampshire County Council are not shown on this map.
+View all problems in this area on
+<a href="http://www.fixmystreet.com/reports/Hampshire">FixMyStreet.com</a>.
+</p>
+</div>
+
+Do not use this to <a href="/faq#emergencies">report emergencies outside of working hours</a>.
diff --git a/templates/web/hart/tokens/confirm_problem.html b/templates/web/hart/tokens/confirm_problem.html
new file mode 100644
index 000000000..117d2d1bc
--- /dev/null
+++ b/templates/web/hart/tokens/confirm_problem.html
@@ -0,0 +1,21 @@
+[% INCLUDE 'header.html', title = loc('Confirmation') %]
+
+<h1>[% loc('Confirmation') %]</h1>
+
+<p class="confirmed">
+Thank you. You have successfully confirmed your report
+[% IF c.cobrand.owns_problem( problem ) %]
+and this will now be investigated by the council.
+You can <a href="[% c.cobrand.base_url_for_report( problem ) %][% problem.url %]">view the problem on this site</a>.
+[% ELSE %]
+and this has now been passed on to [%# TODO make this generic %] <b>Hampshire County Council</b> to investigate.
+Note that Hart District Council is not responsible for this type of problem. However you can continue to view your problem on the <a href="[% c.cobrand.base_url_for_report( problem ) %][% problem.url %]"><i>fixmystreet.com</i> website</a>.
+[% END %]
+</p>
+
+<p>Your reference for this problem is [% problem.id %], please quote it in any enquiries.
+</p>
+
+[% display_crosssell_advert( problem.user.email, problem.name ) %]
+
+[% INCLUDE 'footer.html' %]
diff --git a/templates/web/oxfordshire/around/extra_text.html b/templates/web/oxfordshire/around/extra_text.html
new file mode 100644
index 000000000..439bf00a2
--- /dev/null
+++ b/templates/web/oxfordshire/around/extra_text.html
@@ -0,0 +1,5 @@
+<div class="extra-text">
+ <p>Please do not use this form for reporting <a href="/faq#pothole" target="_blank">emergencies and urgent problems</a>.</p>
+
+ <p><img src="/i/pin-yellow.png" class="extra-text__image" width="48" height="64" /> - <b>these are problems that have already been reported</b>.<br>Click them to see more details.</p>
+</div>
diff --git a/templates/web/oxfordshire/around/intro.html b/templates/web/oxfordshire/around/intro.html
index 3b96ec82f..68c38c030 100644
--- a/templates/web/oxfordshire/around/intro.html
+++ b/templates/web/oxfordshire/around/intro.html
@@ -1 +1 @@
- <h1 class="main">Report a street or road problem</h1>
+ <h1 class="main">Find and report road or street problems</h1>
diff --git a/templates/web/oxfordshire/footer.html b/templates/web/oxfordshire/footer.html
index 2b8a066e7..29146d935 100644
--- a/templates/web/oxfordshire/footer.html
+++ b/templates/web/oxfordshire/footer.html
@@ -32,17 +32,18 @@
<!-- [% INCLUDE 'debug_footer.html' %] -->
</div> <!-- .wrapper -->
- <div id="oxford-footer" class="desk-only">
- <address>
- <strong>Oxfordshire County Council</strong><br>
- <a href="http://www.oxfordshire.gov.uk/cms/public-site/contact-oxfordshire-county-council" title="Contac the council">Contact the council</a>
- </address>
- <ul><!-- use | between items -->
- <li class="powered-by-fms">
- <a href="http://www.fixmystreet.com/">Powered&nbsp;by&nbsp;<img src="/cobrands/oxfordshire/images/fms-logo-inverse.png" alt="FixMyStreet"></a>
- </li>
- </ul>
- </div>
+ <div id="oxford-footer" class="desk-only">
+ <address>
+ <strong>Oxfordshire County Council</strong><br>
+ <a href="http://www.oxfordshire.gov.uk/cms/public-site/contact-oxfordshire-county-council" title="Contact the council">Contact the council</a><br>
+ <a href="/privacy">View our terms and conditions</a>
+ </address>
+ <ul><!-- use | between items -->
+ <li class="powered-by-fms">
+ <a href="http://www.fixmystreet.com/">Powered&nbsp;by&nbsp;<img src="/cobrands/oxfordshire/images/fms-logo-inverse.png" alt="FixMyStreet"></a>
+ </li>
+ </ul>
+ </div>
</div> <!-- oxford-wrapper -->
</body>
</html>
diff --git a/templates/web/oxfordshire/js/translation_strings.html b/templates/web/oxfordshire/js/translation_strings.html
new file mode 100644
index 000000000..e326da0a8
--- /dev/null
+++ b/templates/web/oxfordshire/js/translation_strings.html
@@ -0,0 +1,40 @@
+ translation_strings = {
+ update: '[% loc('Please enter a message') | replace("'", "\\'") %]',
+ title: '[% loc('Please enter a subject') | replace("'", "\\'") %]',
+ detail: '[% loc('Please enter some details') | replace("'", "\\'") %]',
+ name: {
+ required: '[% loc('Please enter your name') | replace("'", "\\'") %]',
+ validName: '[% loc('Please enter your full name, councils need this information – if you do not wish your name to be shown on the site, untick the box below') | replace("'", "\\'") %]'
+ },
+ category: '[% loc('Please choose a category') | replace("'", "\\'") %]',
+ rznvy: {
+ required: '[% loc('Please enter your email') | replace("'", "\\'") %]',
+ email: '[% loc('Please enter a valid email') | replace("'", "\\'") %]'
+ },
+ email: {
+ required: '[% loc('Please enter your email') | replace("'", "\\'") %]',
+ email: '[% loc('Please enter a valid email') | replace("'", "\\'") %]'
+ },
+ fms_extra_title: '[% loc('Please enter your title') | replace("'", "\\'") %]',
+ first_name: '[% loc('Please enter your first name') | replace("'", "\\'") %]',
+ last_name: '[% loc('Please enter your second name') | replace("'", "\\'") %]',
+ geolocate: '[% loc('or locate me automatically') | replace("'", "\\'") %]',
+ right_place: '[% loc('Right place?') | replace("'", "\\'") %]',
+ try_again: '[% loc('Try again') | replace("'", "\\'") %]',
+ place_pin_on_map: '[% loc('Place pin on map') | replace("'", "\\'") %]',
+ home: '[% loc('Home') | replace("'", "\\'") %]',
+ back: '[% loc('Back') | replace("'", "\\'") %]',
+ how_to_send: '[% loc('How to send successful reports') | replace("'", "\\'") %]',
+ more_details: '[% loc('Details') | replace("'", "\\'") %]',
+
+ geolocation_declined: '[% loc('You declined; please fill in the box above') | replace("'", "\\'") %]',
+ geolocation_no_position: '[% loc('Could not look up location') | replace("'", "\\'") %]',
+ geolocation_no_result: '[% loc('No result returned') | replace("'", "\\'") %]',
+ geolocation_unknown: '[% loc('Unknown error') | replace("'", "\\'") %]',
+
+ reporting_a_problem: '[% loc('Reporting a problem') | replace("'", "\\'") %]',
+ ok: '[% loc('OK') | replace("'", "\\'") %]',
+ map: '[% loc('MAP') | replace("'", "\\'") %]',
+
+ report_problem_heading: '[% loc('Click on the map to report a problem') | replace("'", "\\'") %]'
+ };
diff --git a/templates/web/oxfordshire/report/_council_sent_info.html b/templates/web/oxfordshire/report/_council_sent_info.html
new file mode 100644
index 000000000..464c10256
--- /dev/null
+++ b/templates/web/oxfordshire/report/_council_sent_info.html
@@ -0,0 +1,16 @@
+[% IF problem.whensent || problem.can_display_external_id %]
+ <small class="council_sent_info"><br>
+ [% IF problem.whensent %]
+ [% problem.duration_string(c) %]<br>
+ [% END %]
+ <strong>
+ [% IF problem.can_display_external_id %]
+ [% IF problem.whensent %]
+ Council ref:&nbsp;[% problem.external_id %]
+ [% ELSE %]
+ [% problem.external_body %] ref:&nbsp;[% problem.external_id %]
+ [% END %]
+ [% END %]
+ </strong>
+ </small>
+[% END %]
diff --git a/templates/web/oxfordshire/report/new/councils_text_all.html b/templates/web/oxfordshire/report/new/councils_text_all.html
index 638c9d7de..f205418d7 100644
--- a/templates/web/oxfordshire/report/new/councils_text_all.html
+++ b/templates/web/oxfordshire/report/new/councils_text_all.html
@@ -1,24 +1,5 @@
-<div class="oxfordshire-preamble">
- <p>
- Please <strong>do not</strong> use this form for reporting
- <strong>emergencies and urgent</strong> problems.
- You should report these by contacting 0845&nbsp;310&nbsp;11&nbsp;11.
- </p>
- <p>
- Our opening hours are 8.30&nbsp;to&nbsp;5, Monday to Thursday and 8.30&nbsp;to&nbsp;4 on Fridays.
- </p>
- If your enquiry is related to Highways and is outside of our opening hours and
- cannot wait, please contact Thames Valley Police on 101.
- </p>
-</div>
-
-<p>You can use this form to report a problem or to make an enquiry about roads
-and pavements in your area.
-The subject and details of the problem will be public, plus your name if you
-give us permission. If you report a fault on a road that is not owned by
-Oxfordshire County Council we will pass the report on to the relevant body.
-
-<p>Please use <a href="/faq#pothole" target="_blank">our chart</a> to determine
-the size of any pot holes being reported and whether to submit a report using
-this online form or by telephone.</p>
-
+<p>
+ All the information you provide here will be sent to the
+ <strong>relevant department</strong>. The subject and details of the
+ problem will be public, plus your name if you give us permission.
+</p>
diff --git a/templates/web/southampton/header.html b/templates/web/southampton/header.html
index 430b8027c..113803492 100644
--- a/templates/web/southampton/header.html
+++ b/templates/web/southampton/header.html
@@ -5,7 +5,7 @@
<!--[if gt IE 8]><!--><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="[% lang_code %]" lang="[% lang_code %]"><!--<![endif]-->
<head>
<link rel="stylesheet" type="text/css" href="[% version('/css/core.css') %]">
- <link rel="stylesheet" type="text/css" href="/cobrands/southampton/css/style.css" />
+ <link rel="stylesheet" type="text/css" href="[% version('/cobrands/southampton/css/style.css') %]" />
<link rel="stylesheet" type="text/css" href="[% version('/cobrands/southampton/css.css') %]" />
[% INCLUDE 'common_header_tags.html', site_title = 'Southampton City Council FixMyStreet' %]
diff --git a/templates/web/zurich/admin/body-form.html b/templates/web/zurich/admin/body-form.html
index 5ae8eb8a6..a31dffe7c 100644
--- a/templates/web/zurich/admin/body-form.html
+++ b/templates/web/zurich/admin/body-form.html
@@ -10,7 +10,6 @@
<input type="text" name="endpoint" id="email" value="[% body.endpoint %]" size="50">
</p>
-[% IF admin_type == 'super' %]
<p>
<label for="parent">[% loc('Parent') %]</label>
<select name="parent" id="parent">
@@ -25,13 +24,18 @@
<label for="area_ids">[% loc('Area covered') %]</label>
<select name="area_ids" id="area_ids" multiple>
<option value=""> -- [% loc('Select an area') %] -- </option>
+ [% SET body_areas = body.areas %]
[% FOR area IN areas %]
[% SET aid = area.id %]
- <option value="[% area.id %]"[% ' selected' IF body.areas.$aid %]>[% area.name %]</option>
+ <option value="[% area.id %]"[% ' selected' IF body_areas.$aid %]>[% area.name %]</option>
[% END %]
</select>
</p>
-[% END %]
+
+ <p>
+ <label for="deleted">[% loc('Flag as deleted') %]</label>
+ <input type="checkbox" name="deleted" id="deleted" value="1"[% ' checked' IF body.deleted %] />
+ </p>
<input type="hidden" name="send_method" value="Email">
<input type="hidden" name="jurisdiction" id="jurisdiction" value="[% body.jurisdiction %]">
diff --git a/templates/web/zurich/admin/header.html b/templates/web/zurich/admin/header.html
index be146f0e1..281b1de23 100644
--- a/templates/web/zurich/admin/header.html
+++ b/templates/web/zurich/admin/header.html
@@ -14,6 +14,7 @@
%]
<style type="text/css">
.adminhidden { color: #666666; }
+ .admininternal { background-color: #eeeeff; }
.active { background-color: #ffffee; cursor: pointer; }
.error { color: red; }
.overdue { background-color: #ffcccc; }
diff --git a/templates/web/zurich/admin/list_updates.html b/templates/web/zurich/admin/list_updates.html
index c475d839e..2b575f27e 100644
--- a/templates/web/zurich/admin/list_updates.html
+++ b/templates/web/zurich/admin/list_updates.html
@@ -1,18 +1,45 @@
[% IF updates.size %]
+
+<h2>[% loc('Internal notes') %]</h3>
+
+<table cellspacing="0" cellpadding="2" border="1">
+ <tr>
+ <th>[% loc('ID') %]</th>
+ <th>[% loc('Created') %]</th>
+ <th>[% loc('User') %]</th>
+ <th>[% loc('Text') %]</th>
+ </tr>
+[% FOREACH update IN updates -%]
+ [% IF update.extra.is_internal_note %]
+ <tr class="[% 'admininternal' IF update.extra.is_internal_note %]">
+ <td>[% update.id %]</td>
+ <td>[% PROCESS format_date this_date=update.created %] [% update.created.hms %]</td>
+ <td><a href="mailto:[% update.user.email %]">[% update.user.name || update.user.email %]</a></td>
+ <td>[% update.text | html %]</td>
+ </tr>
+ [% END %]
+[% END -%]
+</table>
+
<h2>[% loc('Updates') %]</h2>
<table cellspacing="0" cellpadding="2" border="1">
<tr>
<th>[% loc('ID') %]</th>
<th>[% loc('Created') %]</th>
+ <th>[% loc('User') %]</th>
<th>[% loc('Text') %]</th>
</tr>
[% FOREACH update IN updates -%]
- <tr[% ' class="adminhidden"' IF update.state == 'hidden' || update.problem.state == 'hidden' %]>
- <td>[%- update.id %]</td>
+ [% IF ! update.extra.is_internal_note %]
+ <tr class="[% 'adminhidden' IF update.state == 'hidden' || update.problem.state == 'hidden' %]">
+ <td>[% update.id %]</td>
<td>[% PROCESS format_date this_date=update.created %] [% update.created.hms %]</td>
+ <td><a href="mailto:[% update.user.email %]">[% update.user.name || update.user.email %]</a></td>
<td>[% update.text | html %]</td>
</tr>
+ [% END %]
[% END -%]
</table>
+
[% END %]
diff --git a/templates/web/zurich/admin/problem_row.html b/templates/web/zurich/admin/problem_row.html
index 162b6992a..9b395a1ac 100644
--- a/templates/web/zurich/admin/problem_row.html
+++ b/templates/web/zurich/admin/problem_row.html
@@ -3,7 +3,7 @@
<tr[%
SET classes = [];
classes.push('adminhidden') IF problem.state == 'hidden';
- classes.push('overdue') IF c.cobrand.overdue( problem );
+ classes.push('overdue') IF c.cobrand.get_or_check_overdue( problem );
classes.push('row-link') IF NOT no_edit;
' class="' _ classes.join(' ') _ '"' IF classes.size;
%]>
@@ -33,10 +33,8 @@
[% END %]
<td>
- [% IF problem.photo;
- photo = problem.get_photo_params
- %]
- <img class="img" height="60" width="90" src="[% photo.url_fp %]" alt="">
+ [% IF problem.photo %]
+ <img class="img" height="60" width="90" src="[% c.cobrand.base_url %]/photo/[% problem.photo %].temp.jpeg" alt="">
[% END %]
</td>
diff --git a/templates/web/zurich/admin/report_edit-sdm.html b/templates/web/zurich/admin/report_edit-sdm.html
index fcdb03602..5ff031ce2 100644
--- a/templates/web/zurich/admin/report_edit-sdm.html
+++ b/templates/web/zurich/admin/report_edit-sdm.html
@@ -22,6 +22,9 @@
<ul class="no-bullets">
<li><a href="[% c.uri_for_email( '/report', problem.id ) %]">[% loc('View report on site' )%]</a></li>
+
+<li><a href="http://webgis.intra.stzh.ch/AV_Online/Direct.asp?Map=AV&Search=Koord&West=[% problem.local_coords.0 %]&Nord=[% problem.local_coords.1 %]&B=300" target="_blank">Standort in AV-Online anzeigen</a></li>
+
<li><span class="mock-label">[% loc('Details:') %]</span> [% problem.detail | html %]
[% IF problem.extra.original_detail %]
<br>[%
@@ -52,8 +55,8 @@
<li><span class="mock-label">[% loc('State:') %]</span> [% states.${problem.state} %]</li>
-<li><label for="internal_notes">[% loc('Internal notes:') %]</label>
-<textarea name='internal_notes' id='internal_notes' cols=60 rows=5>[% problem.extra.internal_notes | html %]</textarea></li>
+<li><label for="new_internal_note">[% loc('New internal note:') %]</label>
+<textarea name='new_internal_note' id='new_internal_note' cols=60 rows=5></textarea></li>
<li><label for="status_update">[% loc('New update:') %]</label>
<textarea name='status_update' id='status_update' cols=60 rows=5></textarea></li>
diff --git a/templates/web/zurich/admin/report_edit.html b/templates/web/zurich/admin/report_edit.html
index 5c5cdf182..66a51f162 100644
--- a/templates/web/zurich/admin/report_edit.html
+++ b/templates/web/zurich/admin/report_edit.html
@@ -22,6 +22,8 @@
<ul class="no-bullets">
<li><a href="[% c.uri_for_email( '/report', problem.id ) %]">[% loc('View report on site' )%]</a></li>
+<li><a href="http://webgis.intra.stzh.ch/AV_Online/Direct.asp?Map=AV&Search=Koord&West=[% problem.local_coords.0 %]&Nord=[% problem.local_coords.1 %]&B=300" target="_blank">Standort in AV-Online anzeigen</a></li>
+
[% IF problem.state == 'fixed - council' OR problem.state == 'closed' %]
<li><span class="mock-label">[% loc('Details:') %]</span> [% problem.detail | html %]
[% IF problem.extra.original_detail %]
@@ -66,9 +68,9 @@
<li>
[% photo = problem.get_photo_params %]
<div class="update-img">
- [% IF photo.url_full %]<a href="[% photo.url_full %]" rel="fancy">[% END
- %]<img alt="Photo of this report" [% IF photo.height %]height="[% photo.height %]" width="[% photo.width %]"[% END %] src="[% photo.url %]">
- [%- IF photo.url_full %]<span>zoom</span></a>[% END %]
+ <a href="[% c.cobrand.base_url %]/photo/[% problem.photo %].fulltemp.jpeg" rel="fancy">
+ <img alt="Photo of this report" src="[% c.cobrand.base_url %]/photo/[% problem.photo %].temp.jpeg">
+ <span>zoom</span></a>
</div>
<br>
<input type="submit" name="rotate_photo" value="[% loc('Rotate Left') %]">
@@ -79,8 +81,8 @@
[% END %]
</ul>
-<p><label for="internal_notes">[% loc('Internal notes:') %]</label>
-<textarea name='internal_notes' id='internal_notes' cols=60 rows=5>[% problem.extra.internal_notes | html %]</textarea></p>
+<p><label for="new_internal_note">[% loc('New internal note:') %]</label>
+<textarea name='new_internal_note' id='new_internal_note' cols=60 rows=5>[% new_internal_note | html %]</textarea></p>
<p><span class="mock-label">[% loc('State:') %]</span> <select name="state" id="state">
<option value="">--</option>
@@ -101,6 +103,24 @@
[% END %]
</select></p>
+<p id="automatic-reply">
+ <span class="mock-label">Automatische Antwort</span>
+ <input type="checkbox" name="send_rejected_email" id="send_rejected_email" value="1" />
+</p>
+
+<script type="text/javascript">
+$(function(){
+ // Show or hide the automatic reply field
+ $('#state').change(function(){
+ if ($(this).val() === 'hidden') {
+ $('#automatic-reply').show();
+ } else {
+ $('#automatic-reply').hide();
+ }
+ }).change();
+});
+</script>
+
[% IF problem.state == 'unconfirmed' OR problem.state == 'confirmed' %]
<ul class="no-bullets">
@@ -134,7 +154,7 @@
<select name="body_external" id="body_external">
<option value="">--</option>
[% FOR body IN bodies %]
- [% NEXT IF body.parent OR body.bodies %]
+ [% NEXT IF body.parent OR body.bodies OR body.deleted %]
<option value="[% body.id %]"[% IF body.id == problem.bodies_str %] selected[% END %]>[% body.name %]</option>
[% END %]
</select>
diff --git a/templates/web/zurich/admin/reports.html b/templates/web/zurich/admin/reports.html
index b0bc733c4..68f98c44a 100644
--- a/templates/web/zurich/admin/reports.html
+++ b/templates/web/zurich/admin/reports.html
@@ -13,6 +13,7 @@
[% FOREACH col IN [ [ 'category', loc('Category') ], [ 'created', loc('Submitted') ], [ 'lastupdate', loc('Updated') ], [ 'state', loc('Status') ] ] %]
<th><a href="[% INCLUDE sort_link choice = col.0 %]">[% col.1 %] [% INCLUDE sort_arrow choice = col.0 %]</a></th>
[% END %]
+ <th>[% loc('Photo') %]</th>
<th class='edit'>*</th>
</tr>
[% INCLUDE 'admin/problem_row.html' %]
diff --git a/templates/web/zurich/admin/stats.html b/templates/web/zurich/admin/stats.html
index 92521ff1d..52b33ebc4 100644
--- a/templates/web/zurich/admin/stats.html
+++ b/templates/web/zurich/admin/stats.html
@@ -13,7 +13,7 @@
<option value="">[% loc('All reports') %]</option>
[% FOR y IN [ 2013 .. date.format(date.now, '%Y') ];
SET max = 12;
- max = date.format(date.now, '%m') IF y == date.format(date.now, '%Y');
+ SET max = date.format(date.now, '%m') IF y == date.format(date.now, '%Y');
FOR m IN [ 1 .. max ];
m = m | format('%02d');
SET v = m _ '.' _ y;
diff --git a/templates/web/zurich/auth/general.html b/templates/web/zurich/auth/general.html
index 7f6403d00..11c729fde 100644
--- a/templates/web/zurich/auth/general.html
+++ b/templates/web/zurich/auth/general.html
@@ -35,8 +35,10 @@ END %]
<input class="green-btn" type="submit" name="sign_in" value="[% loc('Sign in') %]">
</div>
- <input type="checkbox" id="remember_me" name="remember_me" value='1'[% ' checked' IF remember_me %]>
- <label class="inline n" for="remember_me">[% loc('Keep me signed in on this computer') %]</label>
+ <div class="form-txt-submit-box">
+ <input type="checkbox" id="remember_me" name="remember_me" value='1'[% ' checked' IF remember_me %]>
+ <label class="inline n" for="remember_me">[% loc('Keep me signed in on this computer') %]</label>
+ </div>
</div>
</fieldset>
diff --git a/templates/web/zurich/js/validation_rules.html b/templates/web/zurich/js/validation_rules.html
new file mode 100644
index 000000000..d98bc1118
--- /dev/null
+++ b/templates/web/zurich/js/validation_rules.html
@@ -0,0 +1,8 @@
+ validation_rules = {
+ title: { required: true },
+ detail: { required: true },
+ email: { required: true },
+ update: { required: true },
+ phone: { required: true },
+ rznvy: { required: true }
+ };
diff --git a/templates/web/zurich/report/new/fill_in_details_form.html b/templates/web/zurich/report/new/fill_in_details_form.html
index 1cecf036d..076536601 100644
--- a/templates/web/zurich/report/new/fill_in_details_form.html
+++ b/templates/web/zurich/report/new/fill_in_details_form.html
@@ -103,7 +103,10 @@
[% END %]
<input type="text" value="[% report.name | html %]" name="name" id="form_name" placeholder="[% loc('Your name') %]">
- <label for="form_phone">[% loc('Phone number (optional)') %]</label>
+ <label for="form_phone">[% loc('Phone number') %]</label>
+ [% IF field_errors.phone %]
+ <p class='form-error'>[% field_errors.phone %]</p>
+ [% END %]
<input type="text" value="[% report.user.phone | html %]" name="phone" id="form_phone" placeholder="[% loc('Your phone number') %]">
<div class="form-txt-submit-box">
diff --git a/templates/web/zurich/report/photo-js.html b/templates/web/zurich/report/photo-js.html
new file mode 100644
index 000000000..05588d085
--- /dev/null
+++ b/templates/web/zurich/report/photo-js.html
@@ -0,0 +1,6 @@
+[% extra_css = BLOCK %]
+ <link rel="stylesheet" href="[% version('/js/fancybox/jquery.fancybox-1.3.4.css') %]">
+[% END %]
+[% extra_js = BLOCK %]
+ <script src="[% version('/js/fancybox/jquery.fancybox-1.3.4.pack.js') %]" charset="utf-8"></script>
+[% END %]