aboutsummaryrefslogtreecommitdiffstats
path: root/templates
diff options
context:
space:
mode:
Diffstat (limited to 'templates')
-rw-r--r--templates/email/default/confirm_report_sent.txt2
-rw-r--r--templates/email/default/login.txt2
-rw-r--r--templates/email/default/submit-brent.txt2
-rw-r--r--templates/email/default/submit.txt2
-rw-r--r--templates/email/emptyhomes/cy/submit.txt16
-rw-r--r--templates/email/emptyhomes/en-gb/submit.txt15
-rw-r--r--templates/email/fiksgatami/nn/submit.txt2
-rw-r--r--templates/email/fiksgatami/submit.txt2
-rw-r--r--templates/email/fixamingata/alert-confirm.txt13
-rw-r--r--templates/email/fixamingata/alert-problem-area.txt10
-rw-r--r--templates/email/fixamingata/alert-problem-council.txt10
-rw-r--r--templates/email/fixamingata/alert-problem-nearby.txt10
-rw-r--r--templates/email/fixamingata/alert-problem-ward.txt10
-rw-r--r--templates/email/fixamingata/alert-problem.txt10
-rw-r--r--templates/email/fixamingata/alert-update.txt18
-rw-r--r--templates/email/fixamingata/contact.txt3
-rw-r--r--templates/email/fixamingata/login.txt13
-rw-r--r--templates/email/fixamingata/partial.txt12
-rw-r--r--templates/email/fixamingata/problem-confirm.txt20
-rw-r--r--templates/email/fixamingata/questionnaire.txt22
-rw-r--r--templates/email/fixamingata/reply-autoresponse22
-rw-r--r--templates/email/fixamingata/signature.txt3
-rw-r--r--templates/email/fixamingata/site-name.txt1
-rw-r--r--templates/email/fixamingata/submit-brent.txt43
-rw-r--r--templates/email/fixamingata/submit-example.txt61
-rw-r--r--templates/email/fixamingata/submit.txt61
-rw-r--r--templates/email/fixamingata/test.txt15
-rw-r--r--templates/email/fixamingata/update-confirm.txt17
-rw-r--r--templates/email/fixmystreet/alert-problem-area.txt14
-rw-r--r--templates/email/fixmystreet/alert-problem-council.txt13
-rw-r--r--templates/email/fixmystreet/alert-problem-nearby.txt12
-rw-r--r--templates/email/fixmystreet/alert-problem-ward.txt14
-rw-r--r--templates/email/fixmystreet/alert-problem.txt12
-rw-r--r--templates/email/fixmystreet/alert-update.txt19
-rw-r--r--templates/email/seesomething/confirm_report_sent.txt9
-rw-r--r--templates/email/zerotb/alert-update.txt9
-rw-r--r--templates/email/zurich/alert-moderation-overdue.txt9
-rw-r--r--templates/email/zurich/alert-overdue.txt9
-rw-r--r--templates/email/zurich/alert-update.txt11
-rw-r--r--templates/email/zurich/login.txt6
-rw-r--r--templates/email/zurich/problem-closed.txt25
-rw-r--r--templates/email/zurich/problem-confirm.txt23
-rw-r--r--templates/email/zurich/problem-external.txt26
-rw-r--r--templates/email/zurich/problem-rejected.txt29
-rw-r--r--templates/email/zurich/reply-autoresponse.txt10
-rw-r--r--templates/email/zurich/submit-external-personal.txt26
-rw-r--r--templates/email/zurich/submit-external.txt20
-rw-r--r--templates/email/zurich/submit-feedback-pending.txt10
-rw-r--r--templates/email/zurich/submit-in-progress.txt10
-rw-r--r--templates/email/zurich/submit.txt10
-rwxr-xr-xtemplates/web/barnet/faq/faq-en-gb.html2
-rw-r--r--templates/web/barnet/footer.html4
-rw-r--r--templates/web/bromley/footer.html4
-rw-r--r--templates/web/bromley/report/_item.html25
-rw-r--r--templates/web/bromley/report/display.html14
-rw-r--r--templates/web/bromley/report/new/fill_in_details_form.html4
-rw-r--r--templates/web/default/admin/bodies.html75
-rw-r--r--templates/web/default/admin/body-form.html236
-rw-r--r--templates/web/default/admin/body.html192
-rw-r--r--templates/web/default/admin/body_edit.html (renamed from templates/web/default/admin/council_edit.html)45
-rw-r--r--templates/web/default/admin/config_page.html145
-rw-r--r--templates/web/default/admin/council_contacts.html172
-rw-r--r--templates/web/default/admin/council_list.html47
-rw-r--r--templates/web/default/admin/edit-league.html21
-rw-r--r--templates/web/default/admin/flagged.html62
-rw-r--r--templates/web/default/admin/header.html4
-rw-r--r--templates/web/default/admin/index.html10
-rw-r--r--templates/web/default/admin/list_flagged.html51
-rw-r--r--templates/web/default/admin/list_updates.html38
-rw-r--r--templates/web/default/admin/problem_row.html58
-rw-r--r--templates/web/default/admin/report_blocks.html25
-rw-r--r--templates/web/default/admin/report_edit.html78
-rw-r--r--templates/web/default/admin/reports.html33
-rw-r--r--templates/web/default/admin/search_reports.html32
-rw-r--r--templates/web/default/admin/search_users.html31
-rw-r--r--templates/web/default/admin/stats.html18
-rw-r--r--templates/web/default/admin/timeline.html12
-rw-r--r--templates/web/default/admin/update_edit.html28
-rw-r--r--templates/web/default/admin/user-form.html56
-rw-r--r--templates/web/default/admin/user_edit.html16
-rw-r--r--templates/web/default/admin/users.html49
-rw-r--r--templates/web/default/alert/index.html6
-rw-r--r--templates/web/default/alert/list.html6
-rw-r--r--templates/web/default/around/around_index.html2
-rw-r--r--templates/web/default/around/around_map_list_items.html2
-rwxr-xr-xtemplates/web/default/around/display_location.html11
-rw-r--r--templates/web/default/around/location_error.html1
-rw-r--r--templates/web/default/around/on_map_list_items.html2
-rw-r--r--templates/web/default/around/postcode_form.html2
-rw-r--r--templates/web/default/auth/sign_out.html3
-rw-r--r--templates/web/default/auth/token.html13
-rw-r--r--templates/web/default/common_header_tags.html26
-rw-r--r--templates/web/default/contact/index.html12
-rw-r--r--templates/web/default/contact/who.html (renamed from templates/web/emptyhomes/contact/address.html)0
-rw-r--r--templates/web/default/dashboard/index.html17
-rw-r--r--templates/web/default/email_sent.html46
-rwxr-xr-xtemplates/web/default/faq/faq-en-gb.html27
-rw-r--r--templates/web/default/front/stats.html4
-rw-r--r--templates/web/default/header_logo.html0
-rw-r--r--templates/web/default/header_opengraph.html0
-rw-r--r--templates/web/default/header_rss.html3
-rw-r--r--templates/web/default/index-steps.html22
-rw-r--r--templates/web/default/index.html12
-rw-r--r--templates/web/default/js/translation_strings.html48
-rw-r--r--templates/web/default/js/validation_strings.html21
-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/google.html20
-rw-r--r--templates/web/default/maps/mapquest-attribution.html14
-rw-r--r--templates/web/default/maps/openlayers.html17
-rw-r--r--templates/web/default/maps/osm-streetview.html2
-rw-r--r--templates/web/default/maps/osm.html3
-rw-r--r--templates/web/default/my/my.html11
-rw-r--r--templates/web/default/open311/index.html73
-rw-r--r--templates/web/default/pagination.html22
-rw-r--r--templates/web/default/questionnaire/completed.html2
-rw-r--r--templates/web/default/questionnaire/index.html4
-rw-r--r--templates/web/default/report/_council_sent_info.html5
-rw-r--r--templates/web/default/report/_main.html10
-rw-r--r--templates/web/default/report/_support.html18
-rw-r--r--templates/web/default/report/banner.html4
-rw-r--r--templates/web/default/report/display.html180
-rw-r--r--templates/web/default/report/new/category.html10
-rw-r--r--templates/web/default/report/new/councils_text.html4
-rw-r--r--templates/web/default/report/new/councils_text_all.html11
-rw-r--r--templates/web/default/report/new/councils_text_none.html18
-rw-r--r--templates/web/default/report/new/councils_text_some.html8
-rw-r--r--templates/web/default/report/new/fill_in_details_form.html6
-rw-r--r--templates/web/default/report/new/notes.html2
-rw-r--r--templates/web/default/report/photo.html2
-rw-r--r--templates/web/default/report/update-form.html165
-rw-r--r--templates/web/default/report/updates.html59
-rwxr-xr-xtemplates/web/default/reports/_list-entry.html4
-rwxr-xr-xtemplates/web/default/reports/body.html27
-rwxr-xr-xtemplates/web/default/reports/index.html16
-rw-r--r--templates/web/default/static/about-en-gb.html (renamed from templates/web/default/static/about.html)0
-rw-r--r--templates/web/default/tokens/confirm_problem.html9
-rwxr-xr-xtemplates/web/emptyhomes/around/display_location.html56
-rw-r--r--templates/web/emptyhomes/around/extra_text.html9
-rw-r--r--templates/web/emptyhomes/faq/faq-cy.html5
-rwxr-xr-xtemplates/web/emptyhomes/faq/faq-en-gb.html5
-rw-r--r--templates/web/emptyhomes/front/stats.html29
-rw-r--r--templates/web/emptyhomes/header.html15
-rw-r--r--templates/web/emptyhomes/index.html101
-rw-r--r--templates/web/emptyhomes/report/banner.html6
-rw-r--r--templates/web/emptyhomes/report/display.html32
-rw-r--r--templates/web/emptyhomes/report/new/councils_text_all.html4
-rw-r--r--templates/web/emptyhomes/report/new/councils_text_none.html2
-rw-r--r--templates/web/emptyhomes/report/new/fill_in_details_form.html157
-rwxr-xr-xtemplates/web/emptyhomes/reports/_ward-list.html0
-rwxr-xr-xtemplates/web/emptyhomes/reports/body.html73
-rwxr-xr-xtemplates/web/emptyhomes/reports/index.html18
-rw-r--r--templates/web/emptyhomes/static/about-cy.html44
-rw-r--r--templates/web/emptyhomes/static/about-en-gb.html62
-rw-r--r--templates/web/emptyhomes/static/about.html43
-rw-r--r--templates/web/emptyhomes/tokens/confirm_problem.html2
-rw-r--r--templates/web/emptyhomes/tracking_code.html12
-rwxr-xr-xtemplates/web/fiksgatami/nn/reports/index.html16
-rwxr-xr-xtemplates/web/fiksgatami/reports/index.html14
-rw-r--r--templates/web/fixamingata/contact/address.html9
-rw-r--r--templates/web/fixamingata/contact/blurb.html7
-rwxr-xr-xtemplates/web/fixamingata/faq/faq-sv.html120
-rw-r--r--templates/web/fixamingata/footer.html76
-rw-r--r--templates/web/fixamingata/header_extra.html1
-rw-r--r--templates/web/fixamingata/open311/index.html146
-rw-r--r--templates/web/fixamingata/report/new/fill_in_details_form.html218
-rw-r--r--templates/web/fixamingata/report/new/notes.html14
-rwxr-xr-xtemplates/web/fixamingata/static/council.html214
-rw-r--r--templates/web/fixamingata/static/fun.html35
-rwxr-xr-xtemplates/web/fixamingata/static/privacy.html82
-rw-r--r--templates/web/fixmindelo/faq/faq-pt-cv.html121
-rw-r--r--templates/web/fixmindelo/footer.html54
-rw-r--r--templates/web/fixmindelo/static/privacy.html114
-rw-r--r--templates/web/fixmybarangay/alert/index.html6
-rw-r--r--templates/web/fixmybarangay/around/tabbed_lists.html2
-rw-r--r--templates/web/fixmybarangay/faq/faq-en-gb.html56
-rw-r--r--templates/web/fixmybarangay/footer.html75
-rw-r--r--templates/web/fixmybarangay/header.html20
-rw-r--r--templates/web/fixmybarangay/report/_message_manager.html124
-rw-r--r--templates/web/fixmybarangay/report/new/councils_text.html4
-rwxr-xr-xtemplates/web/fixmybarangay/reports/index.html42
-rwxr-xr-xtemplates/web/fixmystreet/around/_updates.html2
-rw-r--r--templates/web/fixmystreet/around/around_index.html2
-rw-r--r--templates/web/fixmystreet/around/location_error.html1
-rw-r--r--templates/web/fixmystreet/around/postcode_form.html2
-rw-r--r--templates/web/fixmystreet/auth/general.html2
-rw-r--r--templates/web/fixmystreet/contact/address.html11
-rw-r--r--templates/web/fixmystreet/contact/blurb.html15
-rw-r--r--templates/web/fixmystreet/contact/index.html35
-rw-r--r--templates/web/fixmystreet/contact/who.html77
-rwxr-xr-xtemplates/web/fixmystreet/faq/faq-en-gb.html34
-rw-r--r--templates/web/fixmystreet/footer.html18
-rw-r--r--templates/web/fixmystreet/header.html5
-rw-r--r--templates/web/fixmystreet/header_logo.html1
-rw-r--r--templates/web/fixmystreet/header_opengraph.html9
-rw-r--r--templates/web/fixmystreet/index.html11
-rw-r--r--templates/web/fixmystreet/my/my.html9
-rw-r--r--templates/web/fixmystreet/pagination.html15
-rw-r--r--templates/web/fixmystreet/report/_item.html24
-rw-r--r--templates/web/fixmystreet/report/banner.html6
-rw-r--r--templates/web/fixmystreet/report/display.html175
-rw-r--r--templates/web/fixmystreet/report/new/fill_in_details_form.html22
-rw-r--r--templates/web/fixmystreet/report/new/fill_in_details_text.html5
-rw-r--r--templates/web/fixmystreet/report/new/notes.html4
-rw-r--r--templates/web/fixmystreet/report/photo-js.html2
-rw-r--r--templates/web/fixmystreet/report/update-form.html150
-rw-r--r--templates/web/fixmystreet/report/updates-sidebar-notes.html4
-rwxr-xr-xtemplates/web/fixmystreet/reports/_extras.html3
-rwxr-xr-xtemplates/web/fixmystreet/static/privacy.html5
-rw-r--r--templates/web/fixmystreet/tracking_code.html30
-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.html1
-rwxr-xr-xtemplates/web/oxfordshire/faq/faq-en-gb.html234
-rw-r--r--templates/web/oxfordshire/footer.html49
-rw-r--r--templates/web/oxfordshire/header.html124
-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.html5
-rw-r--r--templates/web/oxfordshire/report/new/fill_in_details_text.html6
-rw-r--r--templates/web/oxfordshire/report/new/notes.html10
-rw-r--r--templates/web/oxfordshire/tracking_code.html22
-rw-r--r--templates/web/reading/header.html2
-rw-r--r--templates/web/seesomething/auth/general.html46
-rw-r--r--templates/web/seesomething/auth/sign_out.html (renamed from templates/web/fixmybarangay/auth/sign_out.html)3
-rw-r--r--templates/web/seesomething/js/translation_strings.html (renamed from templates/web/seesomething/js/validation_strings.html)4
-rw-r--r--templates/web/seesomething/js/validation_rules.html1
-rw-r--r--templates/web/seesomething/report/new/category.html2
-rw-r--r--templates/web/southampton/front/news.html9
-rw-r--r--templates/web/southampton/header.html2
-rw-r--r--templates/web/southampton/report/new/category.html2
-rw-r--r--templates/web/stevenage/around/intro.html2
-rw-r--r--templates/web/trinidadtobago/footer.html38
-rw-r--r--templates/web/zerotb/around/_updates.html0
-rw-r--r--templates/web/zerotb/around/around_map_list_items.html9
-rw-r--r--templates/web/zerotb/around/intro.html1
-rw-r--r--templates/web/zerotb/around/location_error.html8
-rw-r--r--templates/web/zerotb/around/on_map_list_items.html7
-rw-r--r--templates/web/zerotb/around/postcode_form.html36
-rw-r--r--templates/web/zerotb/around/tabbed_lists.html14
-rw-r--r--templates/web/zerotb/faq/faq-en-gb.html124
-rw-r--r--templates/web/zerotb/footer.html22
-rw-r--r--templates/web/zerotb/header_extra.html18
-rw-r--r--templates/web/zerotb/header_logo.html6
-rw-r--r--templates/web/zerotb/header_opengraph.html0
-rw-r--r--templates/web/zerotb/header_rss.html0
-rw-r--r--templates/web/zerotb/index-steps.html8
-rw-r--r--templates/web/zerotb/index.html45
-rw-r--r--templates/web/zerotb/report/_item.html5
-rw-r--r--templates/web/zerotb/report/_main.html6
-rw-r--r--templates/web/zerotb/report/display.html34
-rw-r--r--templates/web/zerotb/report/update-form.html64
-rw-r--r--templates/web/zerotb/report/updates-sidebar-notes.html3
-rw-r--r--templates/web/zurich/admin/body-form.html54
-rw-r--r--templates/web/zurich/admin/body.html67
-rw-r--r--templates/web/zurich/admin/edit-league.html0
-rw-r--r--templates/web/zurich/admin/header.html34
-rw-r--r--templates/web/zurich/admin/index-dm.html37
-rw-r--r--templates/web/zurich/admin/index-sdm.html34
-rw-r--r--templates/web/zurich/admin/index.html17
-rw-r--r--templates/web/zurich/admin/list_updates.html45
-rw-r--r--templates/web/zurich/admin/problem_row.html45
-rw-r--r--templates/web/zurich/admin/report_edit-sdm.html74
-rw-r--r--templates/web/zurich/admin/report_edit.html231
-rw-r--r--templates/web/zurich/admin/reports.html28
-rw-r--r--templates/web/zurich/admin/stats.html54
-rw-r--r--templates/web/zurich/admin/update_edit.html40
-rw-r--r--templates/web/zurich/around/_updates.html0
-rw-r--r--templates/web/zurich/around/intro.html12
-rw-r--r--templates/web/zurich/auth/general.html73
-rw-r--r--templates/web/zurich/auth/sign_out.html7
-rw-r--r--templates/web/zurich/faq/faq-de-ch.html88
-rwxr-xr-xtemplates/web/zurich/faq/faq-de.html192
-rw-r--r--templates/web/zurich/footer.html40
-rw-r--r--templates/web/zurich/header.html79
-rw-r--r--templates/web/zurich/js/validation_rules.html8
-rw-r--r--templates/web/zurich/maps/zurich.html14
-rw-r--r--templates/web/zurich/nav_over_content.html10
-rw-r--r--templates/web/zurich/report/_item.html24
-rw-r--r--templates/web/zurich/report/_main.html17
-rw-r--r--templates/web/zurich/report/banner.html17
-rw-r--r--templates/web/zurich/report/new/councils_text_all.html0
-rw-r--r--templates/web/zurich/report/new/fill_in_details_form.html125
-rw-r--r--templates/web/zurich/report/photo-js.html6
-rw-r--r--templates/web/zurich/report/update-form.html0
-rw-r--r--templates/web/zurich/report/updates.html17
-rwxr-xr-xtemplates/web/zurich/reports/index.html33
-rw-r--r--templates/web/zurich/tokens/confirm_problem.html15
-rw-r--r--templates/web/zurich/tracking_code.html18
298 files changed, 7477 insertions, 1813 deletions
diff --git a/templates/email/default/confirm_report_sent.txt b/templates/email/default/confirm_report_sent.txt
index 42f200213..201888270 100644
--- a/templates/email/default/confirm_report_sent.txt
+++ b/templates/email/default/confirm_report_sent.txt
@@ -2,7 +2,7 @@ Subject: Problem Report Sent: <?=$values['title']?>
Hi,
-Your report about "<?=$values['title']?>" has been sent to <?=$values['councils_name']?>.
+Your report about "<?=$values['title']?>" has been sent to <?=$values['bodies_name']?>.
Thanks
diff --git a/templates/email/default/login.txt b/templates/email/default/login.txt
index 608d99ee9..762407b01 100644
--- a/templates/email/default/login.txt
+++ b/templates/email/default/login.txt
@@ -1,4 +1,4 @@
-Subject: [% loc('Your FixMyStreet.com account details') %]
+Subject: Your FixMyStreet.com account details
Please click on the link below to confirm your email address. Then you will be
able to view your problem reports and manage them more easily.
diff --git a/templates/email/default/submit-brent.txt b/templates/email/default/submit-brent.txt
index c94e6e1e4..75a954765 100644
--- a/templates/email/default/submit-brent.txt
+++ b/templates/email/default/submit-brent.txt
@@ -1,6 +1,6 @@
Subject: FMS Problem Report: <?=$values['title']?>
-Dear <?=$values['councils_name']?>,
+Dear <?=$values['bodies_name']?>,
<?=$values['missing']?><?=$values['multiple']?>A user of
FixMyStreet has submitted the following report
diff --git a/templates/email/default/submit.txt b/templates/email/default/submit.txt
index a956b4add..6066a7b68 100644
--- a/templates/email/default/submit.txt
+++ b/templates/email/default/submit.txt
@@ -1,6 +1,6 @@
Subject: Problem Report: <?=$values['title']?>
-Dear <?=$values['councils_name']?>,
+Dear <?=$values['bodies_name']?>,
<?=$values['missing']?><?=$values['multiple']?>A user of
FixMyStreet has submitted the following report
diff --git a/templates/email/emptyhomes/cy/submit.txt b/templates/email/emptyhomes/cy/submit.txt
index 57c0d58b7..061758d12 100644
--- a/templates/email/emptyhomes/cy/submit.txt
+++ b/templates/email/emptyhomes/cy/submit.txt
@@ -5,19 +5,9 @@ Annwyl Swyddog Eiddo Gwag,
Dyma gyfeiriad newydd am eiddo gwag yn eich ardal, a wnaed gan ddefnyddiwr
gwefan ReportEmptyHomes.com; dywedwyd wrth ddefnyddiwr y wefan fod yr achos
wedi cael ei gyfeirio atoch. Byddem yn ddiolchgar petaech yn gwneud yr hyn y
-gallwch i helpu adfer yr eiddo hwn i'w ddefnyddio eto. Byddwn yn cysylltu â'r
-defnyddiwr ymhen mis ac eto ymhen chwe mis ac yn gofyn iddynt beth sydd wedi
-digwydd i'r eiddo.
+gallwch i helpu adfer yr eiddo hwn i'w ddefnyddio eto.
-Hoffwn eich annog chi i ddweud wrthom beth rydych chi wedi'i wneud, a phan y
-daw'r eiddo yn ôl mewn defnydd, trwy lenwi diweddariad wrth y cyfeiriad at yr
-eiddo ar y wefan:
-
- <?=$values['url']?>
-
-Mae hyn yn rhoi adborth defnyddiol i ddefnyddwyr y wefan ac yn helpu iddynt
-ddeall pa gamau yr ydych yn eu cymryd. Byddwn yn cynnig cyngor i'r defnyddiwr
-ar gamau eraill y gall eu cymryd os nad eir i'r afael â'r eiddo'n llwyddiannus.
+<?=$values['url']?>
<?=$values['has_photo']?>Os hoffech gael help neu gyngor ar gael eiddo gwag yn
ôl mewn defnydd mae llawer o wybodaeth ddefnyddiol ar wefan yr Asiantaeth Tai
@@ -34,6 +24,8 @@ E-bost: <?=$values['email']?>
Math o eiddo: <?=$values['category']?>
+Address: <?=$values['address']?>
+
Manylion: <?=$values['detail']?>
<?=$values['closest_address']?>----------
diff --git a/templates/email/emptyhomes/en-gb/submit.txt b/templates/email/emptyhomes/en-gb/submit.txt
index 4bbaed408..2256732d5 100644
--- a/templates/email/emptyhomes/en-gb/submit.txt
+++ b/templates/email/emptyhomes/en-gb/submit.txt
@@ -5,18 +5,9 @@ Dear Empty Property Officer,
This is a new referral of an empty property in your area made by a user of the
website ReportEmptyHomes.com; the website user has been told that the case has
been referred to you. We would be grateful if you could do whatever you can to
-help get this property back into use. We will contact the user in a month and
-again in six months and ask them what has happened to the property.
+help get this property back into use.
-We'd encourage you to tell us what you have done, and when the property comes
-back into use, by filling in an update against the property referral on the
-website:
-
- <?=$values['url']?>
-
-This gives useful feedback to website users and helps them understand what
-action you are taking. We will offer advice to the user on other action they
-might take if the property isn't successfully dealt with.
+<?=$values['url']?>
<?=$values['has_photo']?>If you would like help or advice on getting empty properties back into use
there is lots of useful information on the Empty Homes Agency's website
@@ -32,6 +23,8 @@ Email: <?=$values['email']?>
Property type: <?=$values['category']?>
+Address: <?=$values['address']?>
+
Details: <?=$values['detail']?>
<?=$values['closest_address']?>----------
diff --git a/templates/email/fiksgatami/nn/submit.txt b/templates/email/fiksgatami/nn/submit.txt
index 82849b0d5..52f519221 100644
--- a/templates/email/fiksgatami/nn/submit.txt
+++ b/templates/email/fiksgatami/nn/submit.txt
@@ -1,6 +1,6 @@
Subject: Problemrapport: <?=$values['title']?>
-Til <?=$values['councils_name']?>,
+Til <?=$values['bodies_name']?>,
<?=$values['missing']?><?=$values['multiple']?>Ein brukar av
FiksGataMi har sendt inn følgjande rapport om eit lokalt problem som
diff --git a/templates/email/fiksgatami/submit.txt b/templates/email/fiksgatami/submit.txt
index 8005f5c82..947729422 100644
--- a/templates/email/fiksgatami/submit.txt
+++ b/templates/email/fiksgatami/submit.txt
@@ -1,6 +1,6 @@
Subject: Problemrapport: <?=$values['title']?>
-Til <?=$values['councils_name']?>,
+Til <?=$values['bodies_name']?>,
<?=$values['missing']?><?=$values['multiple']?>En bruker av
FiksGataMi har sendt inn følgende rapport om et lokalt
diff --git a/templates/email/fixamingata/alert-confirm.txt b/templates/email/fixamingata/alert-confirm.txt
new file mode 100644
index 000000000..c2a32b051
--- /dev/null
+++ b/templates/email/fixamingata/alert-confirm.txt
@@ -0,0 +1,13 @@
+Subject: Bekräfta din bevakning på [% INCLUDE 'site-name.txt' | trim %]
+
+Hej,
+
+vänligen klicka på länken nedan för att bekräfta den bevakning du
+just valde att prenumerera till på [% INCLUDE 'site-name.txt' | trim %]:
+
+ [% token_url %]
+
+Om du inte kan klicka på länken kan du kopiera den och klistra in den
+i adressfältet på din webbläsare.
+
+[% INCLUDE 'signature.txt' %]
diff --git a/templates/email/fixamingata/alert-problem-area.txt b/templates/email/fixamingata/alert-problem-area.txt
new file mode 100644
index 000000000..ae3973e2c
--- /dev/null
+++ b/templates/email/fixamingata/alert-problem-area.txt
@@ -0,0 +1,10 @@
+Subject: Nya rapporter i <?=$values['area_name']?> på Fixa Min Gata
+
+Följande nya rapporter har lagts till inom <?=$values['area_name']?>:
+
+<?=$values['data']?>
+
+<?=$values['signature']?>
+
+Om du vill avsluta din prenumeration på nya rapporter i <?=$values['area_name']?>
+kan du klickan på följande länk: <?=$values['unsubscribe_url']?>
diff --git a/templates/email/fixamingata/alert-problem-council.txt b/templates/email/fixamingata/alert-problem-council.txt
new file mode 100644
index 000000000..ae3973e2c
--- /dev/null
+++ b/templates/email/fixamingata/alert-problem-council.txt
@@ -0,0 +1,10 @@
+Subject: Nya rapporter i <?=$values['area_name']?> på Fixa Min Gata
+
+Följande nya rapporter har lagts till inom <?=$values['area_name']?>:
+
+<?=$values['data']?>
+
+<?=$values['signature']?>
+
+Om du vill avsluta din prenumeration på nya rapporter i <?=$values['area_name']?>
+kan du klickan på följande länk: <?=$values['unsubscribe_url']?>
diff --git a/templates/email/fixamingata/alert-problem-nearby.txt b/templates/email/fixamingata/alert-problem-nearby.txt
new file mode 100644
index 000000000..70dd1cd48
--- /dev/null
+++ b/templates/email/fixamingata/alert-problem-nearby.txt
@@ -0,0 +1,10 @@
+Subject: Nya rapporter på FixMyStreet
+
+Följande rapporter har nyligen lagts till på:
+
+<?=$values['data']?>
+
+<?=$values['signature']?>
+
+Om du vill avsluta din prenumeration på nya rapporter
+kan du klickan på följande länk: <?=$values['unsubscribe_url']?>
diff --git a/templates/email/fixamingata/alert-problem-ward.txt b/templates/email/fixamingata/alert-problem-ward.txt
new file mode 100644
index 000000000..ae3973e2c
--- /dev/null
+++ b/templates/email/fixamingata/alert-problem-ward.txt
@@ -0,0 +1,10 @@
+Subject: Nya rapporter i <?=$values['area_name']?> på Fixa Min Gata
+
+Följande nya rapporter har lagts till inom <?=$values['area_name']?>:
+
+<?=$values['data']?>
+
+<?=$values['signature']?>
+
+Om du vill avsluta din prenumeration på nya rapporter i <?=$values['area_name']?>
+kan du klickan på följande länk: <?=$values['unsubscribe_url']?>
diff --git a/templates/email/fixamingata/alert-problem.txt b/templates/email/fixamingata/alert-problem.txt
new file mode 100644
index 000000000..70dd1cd48
--- /dev/null
+++ b/templates/email/fixamingata/alert-problem.txt
@@ -0,0 +1,10 @@
+Subject: Nya rapporter på FixMyStreet
+
+Följande rapporter har nyligen lagts till på:
+
+<?=$values['data']?>
+
+<?=$values['signature']?>
+
+Om du vill avsluta din prenumeration på nya rapporter
+kan du klickan på följande länk: <?=$values['unsubscribe_url']?>
diff --git a/templates/email/fixamingata/alert-update.txt b/templates/email/fixamingata/alert-update.txt
new file mode 100644
index 000000000..9cc42a2f2
--- /dev/null
+++ b/templates/email/fixamingata/alert-update.txt
@@ -0,0 +1,18 @@
+Subject: Ny uppdatering - '<?=$values['title']?>'
+
+Följande uppdatering har lämnats för rapporten
+<?=$values['title']?>:
+
+<?=$values['data']?>
+
+<?=$values['state_message']?>
+
+För att se eller svara på dessa uppdateringar, klicka på följande länk:
+ <?=$values['problem_url']?>
+
+Du kan inte kontakta någon genom att svara på detta brev.
+
+<?=$values['signature']?>
+
+För att avsluta din prenumeration på nya uppdateringar kring denna
+rapport, klicka på följande länk: <?=$values['unsubscribe_url']?>
diff --git a/templates/email/fixamingata/contact.txt b/templates/email/fixamingata/contact.txt
new file mode 100644
index 000000000..44638fccc
--- /dev/null
+++ b/templates/email/fixamingata/contact.txt
@@ -0,0 +1,3 @@
+Subject: [% subject %] (via Fixa Min Gata)
+
+[% message %]
diff --git a/templates/email/fixamingata/login.txt b/templates/email/fixamingata/login.txt
new file mode 100644
index 000000000..dc5e93f45
--- /dev/null
+++ b/templates/email/fixamingata/login.txt
@@ -0,0 +1,13 @@
+Subject: [% loc('Your FixMyStreet.com account details') %]
+
+Välkommen till Fixa Min Gata!
+
+För att bekräfta din epostadress måste du nu klicka på länken nedan.
+Du kommer sedan att kunna se dina rapporter och hantera dem via
+webbsidan.
+
+
+[% c.uri_for_action( 'auth/token', token ) %]
+
+[% INCLUDE 'signature.txt' %]
+
diff --git a/templates/email/fixamingata/partial.txt b/templates/email/fixamingata/partial.txt
new file mode 100644
index 000000000..bb35883ab
--- /dev/null
+++ b/templates/email/fixamingata/partial.txt
@@ -0,0 +1,12 @@
+Subject: Bekräfta din rapport på Fixa Min gata
+
+Hej [% report.name || report.email %],
+
+För att bekräfta den rapport som du nyligen lade in i Fixa Min Gata
+via [% report.service %] måste du klicka på:
+
+[% token_url %]
+
+Tack!
+
+[% INCLUDE 'signature.txt' %]
diff --git a/templates/email/fixamingata/problem-confirm.txt b/templates/email/fixamingata/problem-confirm.txt
new file mode 100644
index 000000000..e8fc61a9f
--- /dev/null
+++ b/templates/email/fixamingata/problem-confirm.txt
@@ -0,0 +1,20 @@
+Subject: Bekräfta din rapport på [% INCLUDE 'site-name.txt' | trim %]
+
+Hej [% report.name %],
+
+För att bekräfta den rapport som du nyligen lade in på Fixa Min Gata
+måste du klicka på nedanstående länk:
+
+[% token_url %]
+
+Om det inte går att klicka på länken kan du kopiera den och klistra in
+i adressfältet på din webläsare.
+
+Din rapport har titeln: [% report.title %]
+
+Du har angivit följande information om problemet:
+
+[% report.detail %]
+
+
+[% INCLUDE 'signature.txt' %]
diff --git a/templates/email/fixamingata/questionnaire.txt b/templates/email/fixamingata/questionnaire.txt
new file mode 100644
index 000000000..47368bc5b
--- /dev/null
+++ b/templates/email/fixamingata/questionnaire.txt
@@ -0,0 +1,22 @@
+Subject: Frågeformulär om '<?=$values['title']?>'
+
+Hej <?=$values['name']?>,
+
+<?=$values['created']?> sedan lämnade du en rapport på Fixa Min Gata.
+För att hålla alla rapporter uppdaterade skulle vi uppskatta om du kunde
+klicka på länken nedan och svara på ett par korta frågor om det problem
+du rapporterade:
+
+ <?=$values['url']?>
+
+Var snäll och svara inte på det här brevet. Använd istället
+kommentarsfältet i frågeformuläret.
+
+<?=$values['signature']?>
+
+Ditt rapporterade problem var enligt nedan:
+
+<?=$values['title']?>
+
+<?=$values['detail']?>
+
diff --git a/templates/email/fixamingata/reply-autoresponse b/templates/email/fixamingata/reply-autoresponse
new file mode 100644
index 000000000..b6ddb5146
--- /dev/null
+++ b/templates/email/fixamingata/reply-autoresponse
@@ -0,0 +1,22 @@
+Subject: Automatiskt svar på ditt brev till Fixa Min Gata
+
+Hej,
+
+det här ett ett automatiskt svar på ditt brev. Ditt brev har inte
+lästs eller levererats till någon.
+
+Om du svarar på ett brev om en uppdatering måste du klicka på
+länken som var i det brevet för att lämna en uppdatering. Du kan
+inte skicka en uppdatering via epost.
+
+Om du försöker bekräfta en rapport måste du klicka på länken i
+det brev som skickades till dig.
+
+Om du vill avbryta en prenumeration finns det en länk sist i
+varje brev som du kan klicka på för att avbryta en prenumeration.
+
+Om du har frågor eller kommenterar på tjänsten kan du lämna dina
+kommenterar på http://fixamingata.se/contact
+
+Vänligen,
+Fixa Min Gata
diff --git a/templates/email/fixamingata/signature.txt b/templates/email/fixamingata/signature.txt
new file mode 100644
index 000000000..c2dffee4c
--- /dev/null
+++ b/templates/email/fixamingata/signature.txt
@@ -0,0 +1,3 @@
+Vänligen,
+
+Fixa Min Gata
diff --git a/templates/email/fixamingata/site-name.txt b/templates/email/fixamingata/site-name.txt
new file mode 100644
index 000000000..8c9aa3aea
--- /dev/null
+++ b/templates/email/fixamingata/site-name.txt
@@ -0,0 +1 @@
+Fixa Min Gata
diff --git a/templates/email/fixamingata/submit-brent.txt b/templates/email/fixamingata/submit-brent.txt
new file mode 100644
index 000000000..75a954765
--- /dev/null
+++ b/templates/email/fixamingata/submit-brent.txt
@@ -0,0 +1,43 @@
+Subject: FMS Problem Report: <?=$values['title']?>
+
+Dear <?=$values['bodies_name']?>,
+
+<?=$values['missing']?><?=$values['multiple']?>A user of
+FixMyStreet has submitted the following report
+of a local problem that they believe might require your attention.
+
+<?=$values['fuzzy']?>, or to provide an update on the problem,
+please visit the following link:
+
+ <?=$values['url']?>
+
+<?=$values['has_photo']?>----------
+
+Name: <?=$values['name']?>
+
+Email: <?=$values['email']?>
+
+<?=$values['phone_line']?><?=$values['category_line']?>Subject: <?=$values['title']?>
+
+Details: <?=$values['detail']?>
+
+<?=$values['easting_northing']?>Latitude: <?=$values['latitude']?>
+
+Longitude: <?=$values['longitude']?>
+
+<?=$values['closest_address']?>----------
+
+Replies to this email will go to the user who submitted the problem.
+
+<?=$values['signature']?>
+
+This message was sent via FixMyStreet, a project of UKCOD, registered charity
+number 1076346. If there is a more appropriate email address for messages about
+<?=$values['category_footer']?>, please let us know by visiting <http://www.fixmystreet.com/contact>.
+This will help improve the service for local people. We
+also welcome any other feedback you may have.
+
+FixMyStreet is now available for full integration into council
+websites, making life easier for both you and your residents.
+Read more here: http://www.mysociety.org/for-councils/fixmystreet/
+
diff --git a/templates/email/fixamingata/submit-example.txt b/templates/email/fixamingata/submit-example.txt
new file mode 100644
index 000000000..4956a7a93
--- /dev/null
+++ b/templates/email/fixamingata/submit-example.txt
@@ -0,0 +1,61 @@
+Subject: Problem Report: Dangerous pothole
+
+Dear Birmingham City Council,
+
+A user of FixMyStreet has submitted the following report of a
+local problem that they believe might require your attention.
+
+To view a map of the precise location of this issue, or to provide
+an update on the problem, please visit the following link:
+
+ http://www.fixmystreet.com/report/39092
+
+----------
+
+Name: Matthew Somerville
+
+Email: [...]
+
+Phone: [...]
+
+Category: Potholes
+
+Subject: Dangerous pothole
+
+Details: There is a large pothole almost on the give way line as
+you approach the junction along Bournville Lane from the east,
+which leads to vehicles rolling back as they fall in and out of it
+whilst waiting at the junction.
+
+Easting: 404517
+
+Northing: 280922
+
+Latitude: 52.4262642791826
+
+Longitude: -1.93500217285966
+
+Nearest road to the pin placed on the map (automatically
+generated by Bing Maps): Bournville Lane, Birmingham B30 1
+
+Nearest postcode to the pin placed on the map (automatically
+generated): B30 1LA (83m away)
+
+----------
+
+Replies to this email will go to the user who submitted the problem.
+
+Yours,
+The FixMyStreet team
+
+This message was sent via FixMyStreet, a project of UKCOD,
+registered charity number 1076346. If there is a more appropriate
+email address for messages about 'Potholes', please let us know by
+visiting <http://www.fixmystreet.com/contact>. This will help
+improve the service for local people. We also welcome any other
+feedback you may have.
+
+FixMyStreet is now available for full integration into council
+websites, making life easier for both you and your residents.
+Read more here: http://www.mysociety.org/for-councils/fixmystreet/
+
diff --git a/templates/email/fixamingata/submit.txt b/templates/email/fixamingata/submit.txt
new file mode 100644
index 000000000..547099ba6
--- /dev/null
+++ b/templates/email/fixamingata/submit.txt
@@ -0,0 +1,61 @@
+Subject: Ny rapport: <?=$values['title']?>
+
+Till <?=$values['bodies_name']?>,
+
+Det här meddelandet rör en rapport om ett problem i gatumiljön som en
+medborgare lämnat via tjänsten Fixa Min Gata.
+
+<?=$values['missing']?><?=$values['multiple']?>Följande rapport
+tror medborgaren behöver er uppmärksamhet.
+
+<?=$values['fuzzy']?> eller uppdatera problemet, klicka på följande länk:
+
+ <?=$values['url']?>
+
+<?=$values['has_photo']?>
+
+** Uppgiftslämnare
+
+Namn: <?=$values['name']?>
+
+Epost: <?=$values['email']?>
+
+<?=$values['phone_line']?>
+
+** Information om ärendet
+
+<?=$values['category_line']?>Ärende: <?=$values['title']?>
+
+<?=$values['detail']?>
+
+** Geografisk position
+
+<?=$values['easting_northing']?>Latitude: <?=$values['latitude']?>
+
+Longitude: <?=$values['longitude']?>
+
+<?=$values['closest_address']?>----------
+
+Svar på det här brevet kommer att skickas till den person som lämnade
+rapporten.
+
+Om det finns en lämpligare adress dit rapporter kan skickas kan ni
+kontakta oss för att ändra detta.
+
+Föreningen Sambruk som driver tjänsten ansvarar för en användargrupp
+som det går bra att gå med i för att få tillgång till ytterligare
+FixaMinGata-relaterade tjänster och support. Bland annat kan varje
+kategori ha sin egen e-postadress, och FixaMinGata kan även kopplas
+mot system som Open311.
+
+Om ni vill läsa mer om Fixa Min Gata och vad det innebär för er som kommun
+kan ni hitta ytterligare information på vår informationssida för kommuner:
+
+ <http://fixamingata.se/kommun>
+
+Kontakta Föreningen Sambruk via:
+
+ <http://fixamingata.se/contact>
+
+<?=$values['signature']?>
+
diff --git a/templates/email/fixamingata/test.txt b/templates/email/fixamingata/test.txt
new file mode 100644
index 000000000..bfa2c1dd3
--- /dev/null
+++ b/templates/email/fixamingata/test.txt
@@ -0,0 +1,15 @@
+Subject: test email ☺
+From: bad-sender@duff.com
+
+Hello,
+
+This is a test email where foo: [% foo %].
+
+utf8: 我们应该能够无缝处理UTF8编码
+
+ indented_text
+
+long line: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+
+Yours,
+FixMyStreet.
diff --git a/templates/email/fixamingata/update-confirm.txt b/templates/email/fixamingata/update-confirm.txt
new file mode 100644
index 000000000..6ef35f83d
--- /dev/null
+++ b/templates/email/fixamingata/update-confirm.txt
@@ -0,0 +1,17 @@
+Subject: Bekräfta din uppdatering på [% INCLUDE 'site-name.txt' | trim %]
+
+Hej [% update.name %],
+
+vänligen klicka på länken nedan för att bekräfta den uppdatering du
+just lämnade:
+
+[% token_url %]
+
+Om det inte går att klicka på länken kan du kopiera och klistra in
+länken i adressfältet på din webbläsare.
+
+Din uppdatering var:
+
+[% update.text %]
+
+[% INCLUDE 'signature.txt' %]
diff --git a/templates/email/fixmystreet/alert-problem-area.txt b/templates/email/fixmystreet/alert-problem-area.txt
new file mode 100644
index 000000000..736e45143
--- /dev/null
+++ b/templates/email/fixmystreet/alert-problem-area.txt
@@ -0,0 +1,14 @@
+Subject: New problems in <?=$values['area_name']?> on FixMyStreet
+
+The following new problems have been added within
+<?=$values['area_name']?>:
+
+<?=$values['data']?>
+
+-------
+
+<?=$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..65b11aceb
--- /dev/null
+++ b/templates/email/fixmystreet/alert-problem-council.txt
@@ -0,0 +1,13 @@
+Subject: New problems reported to <?=$values['area_name']?> on FixMyStreet
+
+The following new problems have been reported to <?=$values['area_name']?>:
+
+<?=$values['data']?>
+
+-------
+
+<?=$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..17d792a12
--- /dev/null
+++ b/templates/email/fixmystreet/alert-problem-nearby.txt
@@ -0,0 +1,12 @@
+Subject: New nearby problems on FixMyStreet
+
+The following nearby problems have been added:
+
+<?=$values['data']?>
+
+-------
+
+<?=$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..dc7a02b9b
--- /dev/null
+++ b/templates/email/fixmystreet/alert-problem-ward.txt
@@ -0,0 +1,14 @@
+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']?>
+
+-------
+
+<?=$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..12af205f1
--- /dev/null
+++ b/templates/email/fixmystreet/alert-problem.txt
@@ -0,0 +1,12 @@
+Subject: New problems on FixMyStreet
+
+The following new problems have been added:
+
+<?=$values['data']?>
+
+-------
+
+<?=$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..7cbf26c44
--- /dev/null
+++ b/templates/email/fixmystreet/alert-update.txt
@@ -0,0 +1,19 @@
+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.
+
+-------
+
+<?=$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/email/seesomething/confirm_report_sent.txt b/templates/email/seesomething/confirm_report_sent.txt
index b17a76186..d62a50c49 100644
--- a/templates/email/seesomething/confirm_report_sent.txt
+++ b/templates/email/seesomething/confirm_report_sent.txt
@@ -1,9 +1,10 @@
Subject: See Something, Say Something report sent
-Hi,
+Thank you for your report. It will help us to direct our policing activity to make public transport even safer. Find out more of what we are doing at:
-Your report on See Something, Say Something has been sent
+Safer Travel Partnership
-Thanks
+http://www.safertravel.info
-<?=$values['signature']?>
+Follow us on Twitter: https://www.twitter.com/ST_Police
+or on Facebook: http://www.facebook.com/safertravelpolice
diff --git a/templates/email/zerotb/alert-update.txt b/templates/email/zerotb/alert-update.txt
new file mode 100644
index 000000000..ee32524f9
--- /dev/null
+++ b/templates/email/zerotb/alert-update.txt
@@ -0,0 +1,9 @@
+Subject: New stockout report for Clinic - '<?=$values['title']?>'
+
+The following stockouts have been reported for this clinic:
+
+<?=$values['data']?>
+
+You cannot contact anyone by replying to this email.
+
+<?=$values['signature']?>
diff --git a/templates/email/zurich/alert-moderation-overdue.txt b/templates/email/zurich/alert-moderation-overdue.txt
new file mode 100644
index 000000000..c31d5c349
--- /dev/null
+++ b/templates/email/zurich/alert-moderation-overdue.txt
@@ -0,0 +1,9 @@
+Subject: eskalierte Meldungen auf Züri wie neu
+
+Die folgenden Meldungen auf <<Züri wie neu>> sind älter als einen Tag und müssen dringend bearbeitet werden:
+
+<?=$values['data']?>
+
+Um diese Meldungen zu moderieren, klicken Sie auf folgende URL:
+
+<?=$values['admin_url']?>
diff --git a/templates/email/zurich/alert-overdue.txt b/templates/email/zurich/alert-overdue.txt
new file mode 100644
index 000000000..92bb58f26
--- /dev/null
+++ b/templates/email/zurich/alert-overdue.txt
@@ -0,0 +1,9 @@
+Subject: Rückmeldung erforderlich auf Züri wie neu
+
+Die folgenden Meldungen wurden eskaliert, da sie nicht innerhalb von fünf Tagen beantwortet worden sind:
+
+<?=$values['data']?>
+
+Um diese Meldungen zu bearbeiten, klicken Sie auf folgende URL:
+
+<?=$values['admin_url']?>
diff --git a/templates/email/zurich/alert-update.txt b/templates/email/zurich/alert-update.txt
new file mode 100644
index 000000000..3f8da5f66
--- /dev/null
+++ b/templates/email/zurich/alert-update.txt
@@ -0,0 +1,11 @@
+Subject: New update on report - '<?=$values['title']?>'
+
+The following update has been left on this report:
+
+<?=$values['data']?>
+
+To view this report on the site, please visit the following URL:
+ <?=$values['problem_url']?>
+
+<?=$values['signature']?>
+
diff --git a/templates/email/zurich/login.txt b/templates/email/zurich/login.txt
new file mode 100644
index 000000000..6c7b91330
--- /dev/null
+++ b/templates/email/zurich/login.txt
@@ -0,0 +1,6 @@
+Subject: Ihr Züri wie neu Konto
+
+Bitte klicken Sie auf den Link um Ihre E-Mail-Adresse zu bestätigen und sich direkt einzuloggen.
+
+[% c.uri_for_action( 'auth/token', token ) %]
+
diff --git a/templates/email/zurich/problem-closed.txt b/templates/email/zurich/problem-closed.txt
new file mode 100644
index 000000000..392004504
--- /dev/null
+++ b/templates/email/zurich/problem-closed.txt
@@ -0,0 +1,25 @@
+Subject: Züri wie neu: Meldung #[% problem.id %]
+
+Grüezi [% problem.name %]
+
+Besten Dank für Ihre Meldung auf <<Züri wie neu>>. Ihr Anliegen wurde wie folgt beantwortet:
+
+[% problem.extra.public_response %]
+
+Unter:
+ [% url %]
+finden Sie Ihre Meldung auf der Website.
+
+Ihre Meldung lautet:
+
+[% problem.detail %]
+
+
+
+Freundliche Grüsse
+
+Ihre Stadt Zürich
+
+
+Dieses E-Mail wurde automatisch generiert. Bitte antworten Sie nicht darauf.
+
diff --git a/templates/email/zurich/problem-confirm.txt b/templates/email/zurich/problem-confirm.txt
new file mode 100644
index 000000000..b945c6d59
--- /dev/null
+++ b/templates/email/zurich/problem-confirm.txt
@@ -0,0 +1,23 @@
+Subject: Züri wie neu: Meldung #[% report.id %]
+
+Grüezi [% report.name %]
+
+Besten Dank für Ihre Meldung auf <<Züri wie neu>>. Klicken Sie bitte auf diesen Link, um Ihre E-Mail-Adresse zu bestätigen und über den Status der Meldung informiert zu bleiben. Falls der Link nicht funktioniert, kopieren Sie ihn in Ihren Browser:
+
+[% token_url %]
+
+Wir werden Ihr Anliegen innerhalb der nächsten sechs Arbeitstage beantworten.
+
+
+Ihre Meldung lautet:
+
+[% report.detail %]
+
+
+
+Freundliche Grüsse
+
+Ihre Stadt Zürich
+
+
+Dieses E-Mail wurde automatisch generiert. Bitte antworten Sie nicht darauf.
diff --git a/templates/email/zurich/problem-external.txt b/templates/email/zurich/problem-external.txt
new file mode 100644
index 000000000..dbac3d563
--- /dev/null
+++ b/templates/email/zurich/problem-external.txt
@@ -0,0 +1,26 @@
+Subject: Züri wie neu: Meldung #[% problem.id %]
+
+Grüezi [% problem.name %]
+
+Besten Dank für Ihre Meldung auf <<Züri wie neu>>. Wir haben Ihr Anliegen an [% problem.body(c).name %]
+weitergeleitet, da es nicht in den Zuständigkeitsbereich der am Pilot beteiligten Fachbereiche fällt.
+
+Unter:
+ [% url %]
+finden Sie Ihre Meldung auf der Website.
+
+
+Ihre Meldung lautet:
+
+[% problem.detail %]
+
+
+
+Freundliche Grüsse
+
+Ihre Stadt Zürich
+
+
+
+Dieses E-Mail wurde automatisch generiert. Bitte antworten Sie nicht darauf.
+
diff --git a/templates/email/zurich/problem-rejected.txt b/templates/email/zurich/problem-rejected.txt
new file mode 100644
index 000000000..c3d375747
--- /dev/null
+++ b/templates/email/zurich/problem-rejected.txt
@@ -0,0 +1,29 @@
+Subject: Züri wie neu: Meldung #[% problem.id %]
+
+Grüezi [% problem.name %]
+
+Ihre Meldung wurde aufgrund des Inhalts zurückgewiesen.
+Dies kann verschiedene Gründe haben wie zum Beispiel unzureichenden, nicht nachvollziehbaren oder diskriminierenden Inhalt.
+
+Bitte geben Sie die Meldung nochmals, mit möglichst detaillierten, sachlichen Informationen ein.
+
+Besten Dank für Ihr Verständnis.
+
+Freundliche Grüsse
+
+Ihre Stadt Zürich
+
+Ihre Meldung lautet:
+
+[% problem.detail %]
+
+
+
+Freundliche Grüsse
+
+Ihre Stadt Zürich
+
+
+
+Dieses E-Mail wurde automatisch generiert. Bitte antworten Sie nicht darauf.
+
diff --git a/templates/email/zurich/reply-autoresponse.txt b/templates/email/zurich/reply-autoresponse.txt
new file mode 100644
index 000000000..c47a6186f
--- /dev/null
+++ b/templates/email/zurich/reply-autoresponse.txt
@@ -0,0 +1,10 @@
+Subject: Automatische Antwort auf Ihr E-Mail
+
+Guten Tag
+
+Dies ist eine automatische Antwort auf Ihr E-Mail. Ihr E-Mail wurde nicht übermittelt.
+
+Falls Sie eine Meldung erfassen möchten, tun Sie das bitte über die Hauptseite:
+[%# link to FMZ %]
+
+Falls Sie Fragen zu Züri wie neu haben, senden Sie ein E-Mail an gis-zentrum@zuerich.ch
diff --git a/templates/email/zurich/submit-external-personal.txt b/templates/email/zurich/submit-external-personal.txt
new file mode 100644
index 000000000..5e0823871
--- /dev/null
+++ b/templates/email/zurich/submit-external-personal.txt
@@ -0,0 +1,26 @@
+Subject: Züri wie neu: Weitergeleitete Meldung #<?=$values['id']?>
+
+Grüezi <?=$values['bodies_name']?>,
+
+Die folgende Meldung wurde auf http://www.stadt-zuerich.ch/zueriwieneu erfasst:
+
+Öffentliche URL: <?=$values['url']?>
+
+Name des Meldenden: <?=$values['name']?>
+
+Email des Meldenden: <?=$values['email']?>
+
+Telefonnummer des Meldenden: <?=$values['phone']?>
+
+"Züri wie neu" ist ein Pilotprojekt der Stadt Zürich zum Thema
+Bürgerbeteiligung. Auf dieser Plattform kann die Bevölkerung auf Schäden und
+Mängel an der städtischen Infrastruktur hinweisen. Diese Meldung wurde Ihnen
+von der Stadt Zürich gesendet, da es Ihr Zuständigkeitsgebiet betreffen könnte.
+
+Bei Fragen zum Pilotprojekt "Züri wie neu" wenden Sie sich bitte an
+gis-zentrum@zuerich.ch.
+
+
+Freundliche Grüsse
+
+Ihre Stadt Zürich
diff --git a/templates/email/zurich/submit-external.txt b/templates/email/zurich/submit-external.txt
new file mode 100644
index 000000000..0218b4e23
--- /dev/null
+++ b/templates/email/zurich/submit-external.txt
@@ -0,0 +1,20 @@
+Subject: Züri wie neu: Weitergeleitete Meldung #<?=$values['id']?>
+
+Grüezi <?=$values['bodies_name']?>,
+
+Die folgende Meldung wurde auf http://www.stadt-zuerich.ch/zueriwieneu erfasst:
+
+Öffentliche URL: <?=$values['url']?>
+
+"Züri wie neu" ist ein Pilotprojekt der Stadt Zürich zum Thema
+Bürgerbeteiligung. Auf dieser Plattform kann die Bevölkerung auf Schäden und
+Mängel an der städtischen Infrastruktur hinweisen. Diese Meldung wurde Ihnen
+von der Stadt Zürich gesendet, da es Ihr Zuständigkeitsgebiet betreffen könnte.
+
+Bei Fragen zum Pilotprojekt "Züri wie neu" wenden Sie sich bitte an
+gis-zentrum@zuerich.ch.
+
+
+Freundliche Grüsse
+
+Ihre Stadt Zürich
diff --git a/templates/email/zurich/submit-feedback-pending.txt b/templates/email/zurich/submit-feedback-pending.txt
new file mode 100644
index 000000000..dbdd9eedb
--- /dev/null
+++ b/templates/email/zurich/submit-feedback-pending.txt
@@ -0,0 +1,10 @@
+Subject: Züri wie neu: Meldung #<?=$values['id']?> bereit für Feedback
+
+Guten Tag <?=$values['bodies_name']?>,
+
+Diese Meldung wurde vom Fachbereich abschliessend beantwortet und kann nun auf Züri wie neu beantwortet und abgeschlossen werden.
+
+Öffentliche URL: <?=$values['url']?>
+
+Admin URL: <?=$values['admin_url']?>
+
diff --git a/templates/email/zurich/submit-in-progress.txt b/templates/email/zurich/submit-in-progress.txt
new file mode 100644
index 000000000..d1ba838bb
--- /dev/null
+++ b/templates/email/zurich/submit-in-progress.txt
@@ -0,0 +1,10 @@
+Subject: Züri wie neu: Neue Meldung #<?=$values['id']?>
+
+Guten Tag <?=$values['bodies_name']?>,
+
+Diese Meldung wurde Ihnen von Ihrer <<Züri wie neu>>-Kommunikationsstelle zugeteilt.
+
+Öffentliche URL: <?=$values['url']?>
+
+Admin URL: <?=$values['admin_url']?>
+
diff --git a/templates/email/zurich/submit.txt b/templates/email/zurich/submit.txt
new file mode 100644
index 000000000..15aea7504
--- /dev/null
+++ b/templates/email/zurich/submit.txt
@@ -0,0 +1,10 @@
+Subject: Züri wie neu: Neue Meldung #<?=$values['id']?>
+
+Guten Tag <?=$values['bodies_name']?>,
+
+Eine neue Meldung wurde erfasst:
+
+Öffentliche URL: <?=$values['url']?>
+
+Admin URL: <?=$values['admin_url']?>
+
diff --git a/templates/web/barnet/faq/faq-en-gb.html b/templates/web/barnet/faq/faq-en-gb.html
index 126a03314..08bb744a6 100755
--- a/templates/web/barnet/faq/faq-en-gb.html
+++ b/templates/web/barnet/faq/faq-en-gb.html
@@ -7,7 +7,7 @@
<li>flyposting or graffiti
<li>flytipping or litter
<li>streetcleaning, such as broken glass in a cycle lane
- <li>unlit lamposts
+ <li>unlit lampposts
<li>broken playground equipment
<li>potholes
</ul>
diff --git a/templates/web/barnet/footer.html b/templates/web/barnet/footer.html
index 7982ad530..30b35f152 100644
--- a/templates/web/barnet/footer.html
+++ b/templates/web/barnet/footer.html
@@ -1,5 +1,5 @@
<p id="barnet-powered-by" class="desk-only">
- <a href="http://www.fixmystreet.com/">Powered by <img src="/cobrands/barnet/img/fms-logo.png" style="height:20px;"></a>
+ <a href="http://www.mysociety.org/for-councils/fixmystreet/">Powered by <img src="/cobrands/barnet/img/fms-logo.png" style="height:20px;"></a>
</p>
</div><!-- .content role=main -->
</div><!-- .container -->
@@ -9,7 +9,7 @@
<div class="nav-wrapper-2">
<div id="main-nav" role="navigation">
<ul id="mysoc-menu">
- <li><a href="http://www.fixmystreet.com/">Powered by <img src="/cobrands/barnet/img/fms-logo.png" style="height:20px;"></a></li>
+ <li><a href="http://www.mysociety.org/for-councils/fixmystreet/">Powered by <img src="/cobrands/barnet/img/fms-logo.png" style="height:20px;"></a></li>
</ul>
<ul id="main-menu">
<li><[% IF c.req.uri.path == '/' %]span[% ELSE %]a href="/"[% END %] class="report-a-problem-btn"
diff --git a/templates/web/bromley/footer.html b/templates/web/bromley/footer.html
index d60854daa..31b566047 100644
--- a/templates/web/bromley/footer.html
+++ b/templates/web/bromley/footer.html
@@ -1,6 +1,6 @@
</div><!-- .content role=main -->
<p id="bromley-powered-by" class="desk-only">
- <a href="http://www.fixmystreet.com/">Powered by <img src="/cobrands/bromley/fms-logo.png" alt="FixMyStreet" style="height:20px;"></a>
+ <a href="http://www.mysociety.org/for-councils/fixmystreet/">Powered by <img src="/cobrands/bromley/fms-logo.png" alt="FixMyStreet" style="height:20px;"></a>
</p>
</div><!-- .container -->
@@ -10,7 +10,7 @@
<div class="nav-wrapper-2">
<div id="main-nav" role="navigation">
<ul id="mysoc-menu">
- <li><a href="http://www.fixmystreet.com/">Powered by <img src="/cobrands/bromley/fms-logo.png" alt="FixMyStreet" style="height:20px;"></a></li>
+ <li><a href="http://www.mysociety.org/for-councils/fixmystreet/">Powered by <img src="/cobrands/bromley/fms-logo.png" alt="FixMyStreet" style="height:20px;"></a></li>
</ul>
<ul id="main-menu">
<li><[% IF c.req.uri.path == '/' %]span[% ELSE %]a href="/"[% END %] class="report-a-problem-btn"
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/bromley/report/display.html b/templates/web/bromley/report/display.html
index 13bc5f960..67802e82a 100644
--- a/templates/web/bromley/report/display.html
+++ b/templates/web/bromley/report/display.html
@@ -2,7 +2,7 @@
PROCESS "report/photo-js.html";
PROCESS "maps/${map.type}.html";
- problem_title = problem.title _ ' - ' _ loc('Viewing a problem');
+ problem_title = problem.title_safe _ ' - ' _ loc('Viewing a problem');
INCLUDE 'header.html'
title = problem_title
rss = [ loc('Updates to this problem, FixMyStreet'), "/rss/$problem.id" ]
@@ -20,7 +20,7 @@
<div class="shadow-wrap">
<ul id="key-tools">
- [% IF c.user_exists AND c.user.council == 'Bromley Council' %]
+ [% IF c.user_exists AND c.user.body == 'Bromley Council' %]
<li><form method="post" action="/report/delete/[% problem.id %]">
<input type="submit" class="abuse" value="Remove from site">
</form></li>
@@ -74,12 +74,14 @@
<br><a href="http://www.bromley.gov.uk/report">Report a different issue</a>
</div>
- [% IF c.user && c.user.belongs_to_council( problem.council ) %]
+ [% IF c.user && c.user.belongs_to_body( problem.bodies_str ) %]
<label for="form_state">[% loc( 'State' ) %]</label>
<select name="state" id="form_state">
- [% FOREACH state IN [ ['confirmed', loc('Open')], ['investigating',
- loc('Investigating')], ['planned', loc('Planned')], ['in progress',
- loc('In Progress')], ['closed', loc('Closed')], ['fixed', loc('Fixed')] ] %]
+ [% FOREACH state IN [ ['confirmed', loc('Open')], ['investigating',
+ loc('Investigating')], ['action scheduled', loc('Action Scheduled')],
+ ['in progress', loc('In Progress')], ['duplicate', loc('Duplicate')],
+ ['unable to fix', loc('Unable to fix')], ['not responsible', loc('Not Responsible')],
+ ['fixed', loc('Fixed')] ] %]
<option [% 'selected ' IF state.0 == problem.state %] value="[% state.0 %]">[% state.1 %]</option>
[% END %]
</select>
diff --git a/templates/web/bromley/report/new/fill_in_details_form.html b/templates/web/bromley/report/new/fill_in_details_form.html
index 2c5abb874..b60935f47 100644
--- a/templates/web/bromley/report/new/fill_in_details_form.html
+++ b/templates/web/bromley/report/new/fill_in_details_form.html
@@ -39,8 +39,8 @@
[% INCLUDE 'report/new/form_heading.html' %]
- [% IF field_errors.council %]
- <p class='form-error'>[% field_errors.council %]</p>
+ [% IF field_errors.bodies %]
+ <p class='form-error'>[% field_errors.bodies %]</p>
[% END %]
diff --git a/templates/web/default/admin/bodies.html b/templates/web/default/admin/bodies.html
new file mode 100644
index 000000000..8bf7954f3
--- /dev/null
+++ b/templates/web/default/admin/bodies.html
@@ -0,0 +1,75 @@
+[% INCLUDE 'admin/header.html' title=loc('Bodies') -%]
+
+[% INCLUDE 'admin/edit-league.html' %]
+
+[% 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' %]
+ <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 %]
+ <td>[% IF body.deleted %][% loc('Yes') %][% END %]</td>
+ </tr>
+ [%- END %]
+ </table>
+[% END %]
+
+[% IF c.cobrand.moniker == 'zurich' %]
+ [% IF admin_type == 'super' %]
+ <h2>[% loc('Add body') %]</h2>
+ [% INCLUDE 'admin/body-form.html', body='' %]
+ [% END %]
+[% ELSE %]
+ <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
new file mode 100644
index 000000000..f2eb505ab
--- /dev/null
+++ b/templates/web/default/admin/body-form.html
@@ -0,0 +1,236 @@
+ <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">
+ <option value=""> -- [% loc('Select a body') %] -- </option>
+ [% FOR b IN bodies %]
+ <option value="[% b.id %]"[% ' selected' IF body.parent.id == b.id %]>[% b.name %]</option>
+ [% END %]
+ </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>
+ [% 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">
+ <option value=""> -- Select a method -- </option>
+ [% FOR method IN send_methods %]
+ <option value="[% method %]"[% ' selected' IF body.send_method == method %]>[% method %]</option>
+ [% END %]
+ </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 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="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>
+ <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 %]">
+ <input type="submit" value="[% body ? loc('Update body') : loc('Add body') %]">
+ </p>
+ </form>
+
diff --git a/templates/web/default/admin/body.html b/templates/web/default/admin/body.html
new file mode 100644
index 000000000..b207d18ca
--- /dev/null
+++ b/templates/web/default/admin/body.html
@@ -0,0 +1,192 @@
+[% INCLUDE 'admin/header.html' title=tprintf(loc('Council contacts for %s'), body.name) -%]
+
+[% IF updated %]
+ <p>
+ <em>[% updated %]</em>
+ </p>
+[% END %]
+
+<p>
+ [% 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>
+ Council contacts configured via Open311
+ </h2>
+[% END %]
+
+[% IF c.cobrand.moniker == 'fixmystreet' %]
+ <p class="error">Do not give these out except to people at the council.</p>
+[% END %]
+
+[% 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 %]
+
+[% 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 %]
+
+<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>
+
+<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>
+ [% 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>
+ </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>
+ [% 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>
+ <strong>[% loc('Email address:') %] </strong><input type="text" name="email" size="30">
+ </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>
+
+ <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>
+
+ <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 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>
+
+ <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/council_edit.html b/templates/web/default/admin/body_edit.html
index 408466b51..f2bae0c0b 100644
--- a/templates/web/default/admin/council_edit.html
+++ b/templates/web/default/admin/body_edit.html
@@ -1,4 +1,4 @@
-[% INCLUDE 'admin/header.html' title=tprintf(loc('Council contacts for %s'), council_name) -%]
+[% INCLUDE 'admin/header.html' title=tprintf(loc('Council contacts for %s'), body.name) -%]
[% BLOCK highlightchanged_yesno %]
[%- output = loc('No') %]
@@ -15,41 +15,54 @@
<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>
-<form method="post" action="[% c.uri_for('council_contacts', area_id ) %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
- <strong>[% loc('Category:') %] </strong>[% contact.category | html %]
+<form method="post" action="[% c.uri_for('body', body_id ) %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
+ <p><strong>[% loc('Category:') %] </strong>[% contact.category | html %]
<input type="hidden" name="category" value="[% contact.category | html %]" >
<input type="hidden" name="token" value="[% token %]" >
- <strong>[% loc('Email:') %] </strong>
+ <p><strong>[% loc('Email:') %] </strong>
<input type="text" name="email" value="[% contact.email | html %]" size="30">
- <input type="checkbox" name="confirmed" value="1" id="confirmed"[% ' checked' IF contact.confirmed %]> <label for="confirmed">[% loc('Confirmed' ) %]</label>
- <input type="checkbox" name="deleted" value="1" id="deleted"[% ' checked' IF contact.deleted %]> <label for="deleted">[% loc('Deleted') %]</label>
- <input type="checkbox" name="non_public" value="1" id="non_public"[% ' checked' IF contact.non_public %]> <label for="non_public">[% loc('Private') %]</label><br>
- <strong>[% loc('Note:') %] </strong><textarea name="note" rows="3" cols="40">[% contact.note | html %]</textarea> <br>
+ <p>
+ [% IF c.cobrand.moniker != 'zurich' %]
+ <input type="checkbox" name="confirmed" value="1" id="confirmed"[% ' checked' IF contact.confirmed %]>
+ <label class="inline" for="confirmed">[% loc('Confirmed' ) %]</label>
+ [% ELSE %]
+ <input type="hidden" name="confirmed" value="1">
+ [% END %]
+ <input type="checkbox" name="deleted" value="1" id="deleted"[% ' checked' IF contact.deleted %]>
+ <label class="inline" for="deleted">[% loc('Deleted') %]</label>
+ [% IF c.cobrand.moniker != 'zurich' %]
+ <input type="checkbox" name="non_public" value="1" id="non_public"[% ' checked' IF contact.non_public %]>
+ <label class="inline" for="non_public">[% loc('Private') %]</label>
+ [% END %]
+ </p>
+
+ <p><strong>[% loc('Note:') %] </strong><textarea name="note" rows="3" cols="40">[% contact.note | html %]</textarea>
+ [% IF body.can_be_devolved %]
<h2>[% loc('Configure Endpoint') %]</h2>
- <form method="post" action="[% c.uri_for('council_contacts', area_id ) %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
+ <form method="post" action="[% c.uri_for('body', body_id ) %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
<p>
- <label for="endpoint">Endpoint</label>:
+ <label for="endpoint">Endpoint</label>
<input type="text" name="endpoint" id="endpoint" value="[% contact.endpoint %]" size="50">
</p>
<p>
- <label for="jurisdiction">Jurisdiction</label>:
+ <label for="jurisdiction">Jurisdiction</label>
<input type="text" name="jurisdiction" id="jurisdiction" value="[% contact.jurisdiction %]" size="50">
</p>
<p>
- <label for="api_key">Api Key</label>:
+ <label for="api_key">Api Key</label>
<input type="text" name="api_key" id="api_key" value="[% contact.api_key %]" size="25">
</p>
<p>
- <label for="send_method">Send Method</label>:
+ <label for="send_method">Send Method</label>
<select name="send_method">
<option value=""> -- Select a method -- </option>
[% FOR method IN send_methods %]
@@ -57,10 +70,10 @@
[% END %]
</select>
</p>
+ [% END %]
- <input type="hidden" name="area_id" value="[% area_id %]">
<input type="hidden" name="posted" value="new">
- <input type="submit" name="Save changes" value="[% loc('Save changes') %]">
+ <p><input type="submit" name="Save changes" value="[% loc('Save changes') %]">
</form>
<h2>[% loc('History') %]</h2>
diff --git a/templates/web/default/admin/config_page.html b/templates/web/default/admin/config_page.html
new file mode 100644
index 000000000..f198de2af
--- /dev/null
+++ b/templates/web/default/admin/config_page.html
@@ -0,0 +1,145 @@
+[% 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://fixmystreet.org/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://fixmystreet.org/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>
+</ul>
+
+[% INCLUDE 'admin/footer.html' %]
+
diff --git a/templates/web/default/admin/council_contacts.html b/templates/web/default/admin/council_contacts.html
deleted file mode 100644
index be855cb95..000000000
--- a/templates/web/default/admin/council_contacts.html
+++ /dev/null
@@ -1,172 +0,0 @@
-[% INCLUDE 'admin/header.html' title=tprintf(loc('Council contacts for %s'), council_name) -%]
-
-[% conf = open311.next %]
-
-[% IF updated %]
-<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( 'search_reports', search => 'area:' _ area_id ) %]">[% loc('List all reported problems' ) %]</a>
-[% ELSE %]
-<a href="[% c.uri_for_email( '/reports/' _ area_id ) %]">[% loc('List all reported problems' ) %]</a>
-[% END %]
-<a href="[% c.uri_for( 'council_contacts', area_id, { text => 1 } ) %]">[% loc('Text only version') %]</a>
-</p>
-
-[% IF open311.count > 0 %]
- <h2>
- Council contacts configured via Open311
- </h2>
-[% END %]
-
-[% IF c.cobrand.moniker == 'fixmystreet' %]
-<p class="error">Do not give these out except to people at the council.</p>
-[% END %]
-
-<form method="post" action="[% c.uri_for('council_contacts', area_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>
- <td><a href="[% c.uri_for( 'council_edit', area_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 conf.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="area_id" value="[% area_id %]">
- <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('council_contacts', area_id ) %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
-
- [% IF c.cobrand.moniker != 'emptyhomes' %]
- <p>
- <strong>[% loc('Category:') %] </strong><input type="text" name="category" size="30">
- </p>
- [% END %]
-
- <p>
- <strong>[% loc('Email:') %] </strong><input type="text" name="email" size="30">
- </p>
-
- <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('Note:') %] </strong> <textarea name="note" rows="3" cols="40"></textarea>
- </p>
-
- <p>
- <input type="checkbox" name="non_public" value="1" id="non_public">
- <label for="non_public" class="inline">[% loc('Private') %]</label>
- </p>
-
- <p>
- <input type="hidden" name="area_id" value="[% area_id %]" >
- <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>
-
- <h2>[% loc('Configure Open311 integration') %]</h2>
- <form method="post" action="[% c.uri_for('council_contacts', area_id ) %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
- <p>
- <label for="endpoint">Endpoint</label>
- <input type="text" name="endpoint" id="endpoint" value="[% conf.endpoint %]" size="50">
- </p>
-
- <p>
- <label for="jurisdiction">Jurisdiction</label>
- <input type="text" name="jurisdiction" id="jurisdiction" value="[% conf.jurisdiction %]" size="50">
- </p>
-
- <p>
- <label for="api_key">Api Key</label>
- <input type="text" name="api_key" id="api_key" value="[% conf.api_key %]" size="25">
- </p>
-
- <p>
- <label for="send_method">Send Method</label>
- <select name="send_method">
- <option value=""> -- Select a method -- </option>
- [% FOR method IN send_methods %]
- <option value="[% method %]"[% ' selected' IF conf.send_method == method %]>[% method %]</option>
- [% END %]
- </select>
- </p>
-
- <p>
- <input type="checkbox" name="send_comments"[% ' checked' IF conf.send_comments %]>
- <label for="send_comments" class="inline">Use Open311 comment sending extension</label>
- </p>
-
- <p>
- <label for"comment_user_id">User to attribute fetched comments to</label>
- <input type="text" name="comment_user_id" value="[% conf.comment_user_id %]">
- </p>
-
- <p>
- <input type="checkbox" name="suppress_alerts"[% ' checked' IF conf.suppress_alerts %]>
- <label for="suppress_alerts" class="inline">Do not send email alerts on fetched comments to problem creator</label>
- </p>
-
- <p>
- <input type="checkbox" name="devolved"[% ' checked' IF conf.can_be_devolved %]>
- <label for="devolved" class="inline">Endpoint lookup can be devolved to contacts</label>
- </p>
-
- <p>
- <input type="hidden" name="open311_id" value="[% conf.id %]">
- <input type="hidden" name="area_id" value="[% area_id %]">
- <input type="hidden" name="posted" value="open311">
- <input type="hidden" name="token" value="[% token %]">
- <input type="submit" name="Configure Open311" value="[% loc('Configure Open311') %]">
- </p>
- </form>
-
-[% INCLUDE 'admin/footer.html' %]
diff --git a/templates/web/default/admin/council_list.html b/templates/web/default/admin/council_list.html
deleted file mode 100644
index ac99368fe..000000000
--- a/templates/web/default/admin/council_list.html
+++ /dev/null
@@ -1,47 +0,0 @@
-[% INCLUDE 'admin/header.html' title=loc('Council contacts') -%]
-
-[%- BLOCK details %]
-[%- IF councils.size == 0 %]
- [%- loc('None') %]
-[%- ELSE %]
-[%- FOREACH council IN councils %]
- [%- IF council.parent_area %]
- [%-
- p_area = areas.$council.parent_area
- parent = ', ' _ areas.$parent.name
- %]
- [%- ELSE %]
- [%- parent = '' %]
- [%- END %]
- [%- '<ul>' IF loop.first %]
- <li><a href="[% c.uri_for( 'council_contacts', council ) %]">[% areas.$council.name %] [% parent %][% tprintf( loc('%d addresses'), counts.$council.c) IF counts.$council && c.cobrand.moniker != 'emptyhomes' %]</a>
- [%- '</ul>' IF loop.last %]
-[%- END %]
-[%- END %]
-[%- END %]
-
-<h2>[% loc('Diligency prize league table') %]</h2>
-[% IF edit_activity.count %]
-<ul>
- [% WHILE ( editor = edit_activity.next ) %]
- <li>[% tprintf( loc('%d edits by %s'), editor.get_column('c'), editor.editor ) %]</li>
- [% END %]
-</ul>
-[% ELSE %]
-<p>
-[% loc('No edits have yet been made.') %]
-</p>
-[% END %]
-
-<h2>[% loc('Councils') %]</h2>
-
-<h3>[% loc('No info at all') %]</h3>
-[% PROCESS details councils=no_info %]
-<h3>[% loc('Currently has 1+ deleted') %]</h3>
-[% PROCESS details councils=one_plus_deleted %]
-<h3>[% loc('Some unconfirmeds') %]</h3>
-[% PROCESS details councils=unconfirmeds %]
-<h3>[% loc('All confirmed') %]</h3>
-[% PROCESS details councils=all_confirmed %]
-
-[% INCLUDE 'admin/footer.html' %]
diff --git a/templates/web/default/admin/edit-league.html b/templates/web/default/admin/edit-league.html
new file mode 100644
index 000000000..4f31eeb2e
--- /dev/null
+++ b/templates/web/default/admin/edit-league.html
@@ -0,0 +1,21 @@
+<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>
+ [% WHILE ( editor = edit_activity.next ) %]
+ <li>[% tprintf( loc('%d edits by %s'), editor.get_column('c'), editor.editor ) %]</li>
+ [% END %]
+</ul>
+[% ELSE %]
+<p>
+[% loc('No edits have yet been made.') %]
+</p>
+[% END %]
+
+
diff --git a/templates/web/default/admin/flagged.html b/templates/web/default/admin/flagged.html
new file mode 100644
index 000000000..518d1b14e
--- /dev/null
+++ b/templates/web/default/admin/flagged.html
@@ -0,0 +1,62 @@
+[% 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 %]
+<table cellspacing="0" cellpadding="2" border="1">
+ <tr>
+ <th>[% loc('ID') %]</th>
+ <th>[% loc('Title') %]</th>
+ <th>[% loc('Name') %]</th>
+ <th>[% loc('Body') %]</th>
+ <th>[% loc('State') %]</th>
+ <th>*</th>
+ </tr>
+ [% INCLUDE 'admin/problem_row.html' %]
+</table>
+[% ELSE %]
+ <p class="fms-admin-warning">
+ [% loc('No flagged problems found.') %]
+ </p>
+[% END %]
+
+<h2>[% loc( 'Users' ) %]</h2>
+<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>
+ [%- FOREACH user IN users %]
+ <tr [% IF user.flagged == 2 %]class="is-deleted"[% END %]>
+ <td>[% user.name | html %]</td>
+ <td>[% user.email | html %]</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 %]
+</table>
+[%- ELSE %]
+<p class="fms-admin-warning">
+ [% loc('No flagged users found.') %]
+</p>
+[%- END %]
+
+[% INCLUDE 'admin/footer.html' %]
diff --git a/templates/web/default/admin/header.html b/templates/web/default/admin/header.html
index 114c96a18..9f3503e20 100644
--- a/templates/web/default/admin/header.html
+++ b/templates/web/default/admin/header.html
@@ -1,8 +1,8 @@
-[% INCLUDE 'header.html' admin = 1, bodyclass = 'fullwidthpage' %]
+[% 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; }
-.hidden { color: #666666; }
+.adminhidden { color: #666666; }
.error { color: red; }
select { width: auto; }
</style>
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_flagged.html b/templates/web/default/admin/list_flagged.html
deleted file mode 100644
index 0b22bccb2..000000000
--- a/templates/web/default/admin/list_flagged.html
+++ /dev/null
@@ -1,51 +0,0 @@
-[% INCLUDE 'admin/header.html' title=loc('Search Reports') %]
-[% PROCESS 'admin/report_blocks.html' %]
-
-
-<h2>[% loc( 'Problems' ) %]</h2>
-[% IF problems.size > 0 %]
-<table cellspacing="0" cellpadding="2" border="1">
- <tr>
- <th>[% loc('ID') %]</th>
- <th>[% loc('Title') %]</th>
- <th>[% loc('Name') %]</th>
- <th>[% loc('Email') %]</th>
- <th>[% loc('Council') %]</th>
- <th>[% loc('Category') %]</th>
- <th>[% loc('Anonymous') %]</th>
- <th>[% loc('Cobrand') %]</th>
- <th>[% loc('Created') %]</th>
- <th>[% loc('State') %]</th>
- <th>[% loc('When sent') %]</th>
- <th>*</th>
- </tr>
- [% INCLUDE 'admin/problem_row.html' %]
-</table>
-[% ELSE %]
-<p>
-[% loc('No flagged problems found') %]
-</p>
-[% END %]
-
-<h2>[% loc( 'Users' ) %]</h2>
-[% IF users%]
-<table cellspacing="0" cellpadding="2" border="1">
- <tr>
- <th>[% loc('Name') %]</th>
- <th>[% loc('Email') %]</th>
- </tr>
-[% WHILE ( user = users.next ) -%]
- <tr>
- <td>[% user.name | html %]</td>
- <td>[% user.email | html %]</td>
- <td><a href="[% c.uri_for( 'search_reports', search => user.email ) %]">list content</a></td>
- </tr>
-[%- END %]
-</table>
-[%- ELSE %]
-<p>
-[% loc('No flagged users found') %]
-</p>
-[%- END %]
-
-[% INCLUDE 'admin/footer.html' %]
diff --git a/templates/web/default/admin/list_updates.html b/templates/web/default/admin/list_updates.html
index 0a05ba4ac..02845b0ee 100644
--- a/templates/web/default/admin/list_updates.html
+++ b/templates/web/default/admin/list_updates.html
@@ -1,38 +1,46 @@
+[% IF updates.size %]
<h2>[% loc('Updates') %]</h2>
<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>
[% FOREACH update IN updates -%]
- <tr[% ' class="hidden"' IF update.state == 'hidden' || update.problem.state == 'hidden' %]>
+ <tr[% ' class="adminhidden"' IF update.state == 'hidden' || update.problem.state == 'hidden' %]>
<td>[%- IF update.state == 'confirmed' && update.problem.state != 'hidden' -%]
- [%- cobrand_data = update.cobrand_data %]
- [%- cobrand_data = c.data_for_generic_update IF !update.cobrand %]
- <a href="[% c.uri_for_email( '/report', update.problem.id, cobrand_data ) %]#update_[% update.id %]">[% update.id %]</a>
+ [%- cobrand_data = update.cobrand_data;
+ cobrand_data = c.data_for_generic_update IF !update.cobrand;
+ IF cobrand_data;
+ uri = c.uri_for_email( '/report', update.problem.id, cobrand_data );
+ ELSE;
+ uri = c.uri_for_email( '/report', update.problem.id );
+ END;
+ %]
+ <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_council( update.problem.council ) %][% 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>
+ </tr>
[% END -%]
</table>
+[% END %]
diff --git a/templates/web/default/admin/problem_row.html b/templates/web/default/admin/problem_row.html
index 22825429a..2413a6062 100644
--- a/templates/web/default/admin/problem_row.html
+++ b/templates/web/default/admin/problem_row.html
@@ -1,31 +1,43 @@
[%- FOR problem IN problems %]
- <tr[% ' class="hidden"' IF problem.state == 'hidden' %]>
- <td>[%- IF problem.is_visible -%]
- [%- cobrand_data = problem.cobrand_data %]
- [%- cobrand_data = c.data_for_generic_problem IF !problem.cobrand %]
- <a href="[% c.uri_for_email( '/report', problem.id, cobrand_data ) %]">[% problem.id %]</a>
+ <tr[% ' class="adminhidden"' IF problem.state == 'hidden' %]>
+ <td class="record-id">[%- IF problem.is_visible -%]
+ [%- cobrand_data = problem.cobrand_data;
+ cobrand_data = c.data_for_generic_problem IF !problem.cobrand;
+ IF cobrand_data;
+ uri = c.uri_for_email( '/report', problem.id, cobrand_data );
+ ELSE;
+ uri = c.uri_for_email( '/report', problem.id );
+ END;
+ %]
+ <a href="[% uri %]" class="admin-offsite-link">[% problem.id %]</a>
[%- ELSE %]
[%- problem.id %]
[%- END -%]</td>
<td>[% PROCESS value_or_nbsp value=problem.title %]</td>
- <td>[% PROCESS value_or_nbsp value=problem.name %]</td>
- <td>[% PROCESS value_or_nbsp value=problem.user.email %]</td>
- <td>[%- IF edit_council_contacts -%]
- <a href="[% c.uri_for('council_contacts', problem.council ) %]">[% PROCESS value_or_nbsp value=problem.council %]</a>
- [%- ELSE -%]
- [%- PROCESS value_or_nbsp value=problem.council -%]
- [%- END -%]</td>
- <td>[% PROCESS value_or_nbsp value=problem.category %]</td>
- <td>[% IF problem.anonymous %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %]</td>
- <td>[% problem.cobrand %]<br>[% problem.cobrand_data | html %]</td>
- <td>[% PROCESS format_time time=problem.created %]</td>
- <td>[% problem.state %]<small>
- [%- IF problem.is_visible %]<br>[% loc('Confirmed:' ) %]&nbsp;[% PROCESS format_time time=problem.confirmed %][% END -%]
- [%- IF problem.is_fixed %]<br>[% loc('Fixed:') %] [% PROCESS format_time time=problem.lastupdate %][% END -%]
- [%- IF problem.is_closed %]<br>[% loc('Closed:') %] [% PROCESS format_time time=problem.lastupdate %][% END -%]
- [%- IF problem.is_open %]<br>[% loc('Last&nbsp;update:') %] [% PROCESS format_time time=problem.lastupdate %][% END -%]</small>
- </td>
- <td>[% PROCESS format_time time=problem.whensent %]</td>
+ <td>
+ [% PROCESS value_or_nbsp value=problem.name %]
+ <br>[% PROCESS value_or_nbsp value=problem.user.email %]
+ <br>[% loc('Anonymous') %]: [% IF problem.anonymous %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %]
+ </td>
+ <td>
+ [% PROCESS value_or_nbsp value=problem.category %]
+ <br>[%- IF edit_body_contacts -%]
+ [% FOR body IN problem.bodies.values %]
+ <a href="[% c.uri_for('body', body.id ) %]">[% PROCESS value_or_nbsp value=body.name %]</a>
+ [% END %]
+ [%- ELSE -%]
+ [%- PROCESS value_or_nbsp value=problem.bodies_str -%]
+ [%- END -%]
+ <br>[% problem.cobrand %]<br>[% problem.cobrand_data | html %]
+ </td>
+ <td>[% problem.state %]<br><small>
+ [% loc('Created') %]:&nbsp;[% PROCESS format_time time=problem.created %]
+ <br>[% loc('When sent') %]:&nbsp;[% PROCESS format_time time=problem.whensent %]
+ [%- IF problem.is_visible %]<br>[% loc('Confirmed:' ) %]&nbsp;[% PROCESS format_time time=problem.confirmed %][% END -%]
+ [%- IF problem.is_fixed %]<br>[% loc('Fixed:') %] [% PROCESS format_time time=problem.lastupdate %][% END -%]
+ [%- IF problem.is_closed %]<br>[% loc('Closed:') %] [% PROCESS format_time time=problem.lastupdate %][% END -%]
+ [%- IF problem.is_open %]<br>[% loc('Last&nbsp;update:') %] [% PROCESS format_time time=problem.lastupdate %][% END -%]
+ </small></td>
<td><a href="[% c.uri_for( 'report_edit', problem.id ) %]">[% loc('Edit') %]</a></td>
</tr>
[%- END -%]
diff --git a/templates/web/default/admin/report_blocks.html b/templates/web/default/admin/report_blocks.html
index f08529ce7..c2cffc352 100644
--- a/templates/web/default/admin/report_blocks.html
+++ b/templates/web/default/admin/report_blocks.html
@@ -15,3 +15,28 @@
[% BLOCK flag_button -%]
[% IF user.flagged || user_flagged %]<input type="submit" name="removeuserflag" value="[% loc('Remove flag') %]">[% ELSE %]<input type="submit" name="flaguser" value="[% loc('Flag user') %]" />[% END %]
[%- END %]
+
+[%# note: date format here (i.e., dd.mm.YYYY) currently used by Zurich %]
+[% BLOCK format_date -%]
+ [%- IF this_date %]
+ [% this_date.strftime('%d.%m.%Y') %]
+ [% ELSE %][% no_time || '&nbsp;' %][% END %][% no_time = '' %]
+[%- END %]
+
+[% BLOCK sort_link %][% IF order == choice %][% c.uri_with( d => 1 - dir ) %][% ELSE %][% c.uri_with( { o => choice, d => 0 } ) %][% END %][% END %]
+
+[% BLOCK sort_arrow %]
+ [% IF order == choice %]
+ <span style="font-size:50%">
+ [% IF dir %]
+ &#9660;
+ [% ELSE %]
+ &#9650;
+ [% END %]
+ </span>
+ [% ELSE %]
+ <span style="font-size:50%; color: #999;">
+ &#9650;
+ </span>
+ [% END %]
+[% END %]
diff --git a/templates/web/default/admin/report_edit.html b/templates/web/default/admin/report_edit.html
index ea98a9be9..12560fdf3 100644
--- a/templates/web/default/admin/report_edit.html
+++ b/templates/web/default/admin/report_edit.html
@@ -7,23 +7,59 @@
<input type="hidden" name="token" value="[% token %]" >
<input type="hidden" name="submit" value="1" >
<ul>
- [%- cobrand_data = problem.cobrand_data %]
- [%- cobrand_data = c.data_for_generic_problem IF !problem.cobrand %]
-<li><a href="[% c.uri_for_email( '/report', problem.id, cobrand_data ) %]">[% loc('View report on site' )%]</a></li>
+ [%- cobrand_data = problem.cobrand_data;
+ cobrand_data = c.data_for_generic_problem IF !problem.cobrand;
+ IF cobrand_data;
+ uri = c.uri_for_email( '/report', problem.id, cobrand_data );
+ ELSE;
+ uri = c.uri_for_email( '/report', problem.id );
+ END;
+ %]
+<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><br><textarea name='detail' id='detail' cols=60 rows=10>[% problem.detail | html %]</textarea></li>
-<li>[% loc('Co-ordinates:') %] [% problem.latitude %], [% problem.longitude %] ( [% loc('originally entered') %] [% problem.postcode | html %] , [% IF problem.used_map %][% loc('used map') %][% ELSE %][% loc("didn't use map") %][% END %])</li>
-<li>[% loc('For council(s):') %] [% IF problem.council %][% problem.council %][% ELSE %]<em>[% loc('None' ) %]</em>[% END %] ([% loc('other areas:') %] [% problem.areas | remove('^,') | remove( ',$' ) %])</li>
-<li><label for="state">[% loc('State:') %]</label> <select name="state" id="state">
- [% FOREACH state IN [ ['confirmed', loc('Open')], ['investigating',
- loc('Investigating')], ['planned', loc('Planned')], ['in progress',
- loc('In Progress')], ['closed', loc('Closed')], ['fixed', loc('Fixed')], ['fixed - user',
- loc('Fixed - User')], ['fixed - council', loc('Fixed - Council')], ['hidden', loc('Hidden')], ['partial', loc('Partial')],['unconfirmed',loc('Unconfirmed')] ] %]
+<li><label for='detail'>[% loc('Details:') %]</label>
+<textarea name='detail' id='detail' cols=60 rows=10>[% problem.detail | html %]</textarea></li>
+
+<li>[% loc('Co-ordinates:') %] [% problem.latitude %], [% problem.longitude %]
+( [%
+ SET postcode_safe = problem.postcode | html;
+ tprintf( loc('originally entered: &ldquo;%s&rdquo;'), postcode_safe )
+%],
+[% IF problem.used_map %][% loc('used map') %][% ELSE %][% loc("didn't use map") %][% END %])</li>
+
+<li>[% loc('For council(s):') %] [% IF problem.bodies_str %][% problem.bodies_str %][% ELSE %]<em>[% loc('None' ) %]</em>[% END %] ([% loc('other areas:') %] [% problem.areas | remove('^,') | remove( ',$' ) %])</li>
+[% IF problem.extra.address %]
+<li>[% loc('Property address:') %] [% problem.extra.address | html %]</li>
+[% END %]
+<li><label class="inline" for="state">[% loc('State:') %]</label> <select name="state" id="state">
+[% FOREACH group IN [
+ [ loc('Open'), [
+ [ 'confirmed', loc('Open') ], [ 'investigating', loc('Investigating') ],
+ [ 'planned', loc('Planned') ], [ 'in progress', loc('In progress') ],
+ [ 'action scheduled', loc('Action Scheduled') ],
+ ] ],
+ [ loc('Fixed'), [
+ [ 'fixed', loc('Fixed') ], [ 'fixed - user', loc('Fixed - User') ],
+ [ 'fixed - council', loc('Fixed - Council') ]
+ ] ],
+ [ loc('Closed'), [
+ [ 'unable to fix', loc('Unable to fix') ], [ 'not responsible', loc('Not Responsible') ],
+ [ 'duplicate', loc('Duplicate') ], [ 'closed', loc('Closed') ],
+ [ 'internal referral', loc('Internal referral') ],
+ ] ],
+ [ loc('Hidden'), [
+ [ 'hidden', loc('Hidden') ], [ 'partial', loc('Partial') ], [ 'unconfirmed',loc('Unconfirmed') ]
+ ] ]
+] %]
+ <optgroup label="[% group.0 %]">
+ [% FOREACH state IN group.1 %]
<option [% 'selected ' IF state.0 == problem.state %] value="[% state.0 %]">[% state.1 %]</option>
[% END %]
+ </optgroup>
+[% END %]
</select></li>
<li>[% loc('Category:') %] [% problem.category | html %] </li>
-<li><label for="anonymous">[% loc('Anonymous:') %]</label> <select name="anonymous" id="anonymous">
+<li><label class="inline" for="anonymous">[% loc('Anonymous:') %]</label> <select name="anonymous" id="anonymous">
<option [% 'selected ' IF problem.anonymous %]value="1">[% loc('Yes') %]</option>
<option [% 'selected ' IF !problem.anonymous %]value="0">[% loc('No') %]</option>
</select></li>
@@ -39,19 +75,23 @@
<li>[% loc('Cobrand data:') %] [% problem.cobrand_data %]</li>
<li>[% loc('Extra data:') %] [% problem.extra ? 'Yes' : 'No' %]</li>
<li>[% loc('Going to send questionnaire?') %] [% IF problem.send_questionnaire %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %]</li>
-<li><label for="flagged">[% loc('Flagged:') %]</label> <input type="checkbox" name="flagged"[% ' checked' IF problem.flagged %]></li>
-<li><label for="non_public">[% loc('Private') %]:</label> <input type="checkbox" name="non_public"[% ' checked' IF problem.non_public %]></li>
+<li><label class="inline" for="flagged">[% loc('Flagged:') %]</label> <input type="checkbox" name="flagged"[% ' checked' IF problem.flagged %]></li>
+<li><label class="inline" for="non_public">[% loc('Private') %]:</label> <input type="checkbox" name="non_public"[% ' checked' IF problem.non_public %]></li>
[% 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>
-[% IF rotated %]Photo may be cached. View image directly to check<br>[% END %]
-<input type="submit" name="rotate_photo" value="Rotate Left" />
-<input type="submit" name="rotate_photo" value="Rotate Right" />
+<input type="submit" name="rotate_photo" value="[% loc('Rotate Left') %]">
+<input type="submit" name="rotate_photo" value="[% loc('Rotate Right') %]">
<br>
<input type="checkbox" id="remove_photo" name="remove_photo" value="1">
-<label for="remove_photo">[% loc("Remove photo (can't be undone!)") %]</label></li>
+<label class="inline" for="remove_photo">[% loc("Remove photo (can't be undone!)") %]</label></li>
[% END %]
</ul>
<input type="submit" name="Submit changes" value="[% loc('Submit changes') %]" ></form>
diff --git a/templates/web/default/admin/reports.html b/templates/web/default/admin/reports.html
new file mode 100644
index 000000000..7267dd11d
--- /dev/null
+++ b/templates/web/default/admin/reports.html
@@ -0,0 +1,33 @@
+[% INCLUDE 'admin/header.html' title=loc('Search Reports') %]
+[% PROCESS 'admin/report_blocks.html' %]
+
+<form method="get" action="[% c.uri_for('reports') %]" 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>
+
+[% IF problems.size %]
+<table cellspacing="0" cellpadding="2" border="1">
+ <tr>
+ <th>[% loc('ID') %]</th>
+ <th>[% loc('Title') %]</th>
+ <th>[% loc('Name') %]</th>
+ <th>[% loc('Body') %]</th>
+ <th>[% loc('State') %]</th>
+ <th>*</th>
+ </tr>
+ [% INCLUDE 'admin/problem_row.html' %]
+</table>
+
+[% 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' %]
+
+[% INCLUDE 'admin/footer.html' %]
diff --git a/templates/web/default/admin/search_reports.html b/templates/web/default/admin/search_reports.html
deleted file mode 100644
index 9702c16a7..000000000
--- a/templates/web/default/admin/search_reports.html
+++ /dev/null
@@ -1,32 +0,0 @@
-[% INCLUDE 'admin/header.html' title=loc('Search Reports') %]
-[% PROCESS 'admin/report_blocks.html' %]
-
-<form method="get" action="[% c.uri_for('search_reports') %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
- <label for="search">[% loc('Search:') %]</label> <input type="text" name="search" size="30" id="search">
-</form>
-
-
-[% IF searched %]
-<table cellspacing="0" cellpadding="2" border="1">
- <tr>
- <th>[% loc('ID') %]</th>
- <th>[% loc('Title') %]</th>
- <th>[% loc('Name') %]</th>
- <th>[% loc('Email') %]</th>
- <th>[% loc('Council') %]</th>
- <th>[% loc('Category') %]</th>
- <th>[% loc('Anonymous') %]</th>
- <th>[% loc('Cobrand') %]</th>
- <th>[% loc('Created') %]</th>
- <th>[% loc('State') %]</th>
- <th>[% loc('When sent') %]</th>
- <th>*</th>
- </tr>
- [% INCLUDE 'admin/problem_row.html' %]
-</table>
-
-[% INCLUDE 'admin/list_updates.html' %]
-
-[% END %]
-
-[% INCLUDE 'admin/footer.html' %]
diff --git a/templates/web/default/admin/search_users.html b/templates/web/default/admin/search_users.html
deleted file mode 100644
index 0b4ba88e7..000000000
--- a/templates/web/default/admin/search_users.html
+++ /dev/null
@@ -1,31 +0,0 @@
-[% INCLUDE 'admin/header.html' title=loc('Search Users') %]
-[% PROCESS 'admin/report_blocks.html' %]
-
-<form method="get" action="[% c.uri_for('search_users') %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
- <label for="search">[% loc('Search:') %]</label> <input type="text" name="search" size="30" id="search">
-</form>
-
-
-[% IF searched %]
-<table cellspacing="0" cellpadding="2" border="1">
- <tr>
- <th>[% loc('Name') %]</th>
- <th>[% loc('Email') %]</th>
- <th>[% loc('Council') %]</th>
- <th>[% loc('Flagged') %]</th>
- <th>*</th>
- </tr>
-[%- FOREACH user IN users %]
- <tr>
- <td>[% PROCESS value_or_nbsp value=user.name %]</td>
- <td><a href="[% c.uri_for( 'search_reports', search => user.email ) %]">[% PROCESS value_or_nbsp value=user.email %]</a></td>
- <td>[% PROCESS value_or_nbsp value=user.from_council %]</td>
- <td>[% user.flagged == 2 ? loc('(Email in abuse table)') : user.flagged ? loc('Yes') : '&nbsp;' %]</td>
- <td>[% IF user.id %]<a href="[% c.uri_for( 'user_edit', user.id ) %]">[% loc('Edit') %]</a>[% END %]</td>
- </tr>
-[%- END -%]
-</table>
-
-[% END %]
-
-[% INCLUDE 'admin/footer.html' %]
diff --git a/templates/web/default/admin/stats.html b/templates/web/default/admin/stats.html
index 234600837..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>
@@ -81,10 +81,10 @@
</p>
<p>
- [% loc('Council:') %] <select id='council' name='council'>
+ [% loc('Council:') %] <select id='body' name='body'>
<option value=''>[% loc('No council') %]</option>
- [% FOR council IN council_ids %]
- <option value="[% council %]"[% ' selected' IF council == selected_council %]>[% council_details.$council.name %]</option>
+ [% FOR body IN bodies %]
+ <option value="[% body.id %]"[% ' selected' IF body.id == selected_body %]>[% body.name %]</option>
[% END %]
</select>
</p>
diff --git a/templates/web/default/admin/timeline.html b/templates/web/default/admin/timeline.html
index 95120e48c..6bf350a58 100644
--- a/templates/web/default/admin/timeline.html
+++ b/templates/web/default/admin/timeline.html
@@ -1,6 +1,4 @@
[% INCLUDE 'admin/header.html' title=loc('Timeline') %]
-[%- USE f = DateTime::Format('DateTime::Format::Strptime', { pattern => "%A, %e %B %Y" }) %]
-[%- USE alert_format = DateTime::Format('DateTime::Format::Strptime', { pattern => "%H:%M:%S %e %B %Y" }) %]
[%- BLOCK problem_name %]
[%- tprintf(loc('by %s'), problem.name) | html %] &lt;[% problem.user.email | html %]&gt;, '[% problem.title | html %]'
@@ -8,7 +6,7 @@
[%- date = '' %]
[% FOREACH moment IN time.keys.sort.reverse %]
- [%- curdate = f.format(time.$moment.0.date) -%]
+ [%- curdate = time.$moment.0.date.strftime('%A, %e %B %Y') -%]
[%- IF date != curdate %]
[% '</dl>' IF date %]
<h2>[% curdate %]</h2>
@@ -23,20 +21,20 @@
[% 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, c.cobrand_data ) _ '">' _ 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, c.cobrand_data ) _ '">' _ item.obj.id _ '</a>', item.obj.council ) %]
+ [% 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, c.cobrand_data ) _ "#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' %]
- [% tprintf(loc("Alert %d disabled (created %s)"), item.obj.id, alert_format.format( item.obj.whensubscribed_local ) ) %]
+ [% tprintf(loc("Alert %d disabled (created %s)"), item.obj.id, item.obj.whensubscribed.strftime('%H:%M:%S %e %B %Y') ) %]
[%- END %]
<br />
[%- END %]
diff --git a/templates/web/default/admin/update_edit.html b/templates/web/default/admin/update_edit.html
index 1d5ee80b4..5ffce8bc4 100644
--- a/templates/web/default/admin/update_edit.html
+++ b/templates/web/default/admin/update_edit.html
@@ -7,10 +7,19 @@
<input type="hidden" name="token" value="[% token %]" >
<input type="hidden" name="submit" value="1" >
<ul>
- [%- cobrand_data = update.cobrand_data %]
- [%- cobrand_data = c.data_for_generic_update IF !update.cobrand %]
-<li><a href="[% c.uri_for_email( '/report', update.problem_id, cobrand_data ) %]#update_[% update.id %]">[% loc('View report on site' )%]</a></li>
-<li><label for='detail'>[% loc('Text:') %]</label><br><textarea name='text' id='text' cols=60 rows=10>[% update.text | html %]</textarea></li>
+ [%- cobrand_data = update.cobrand_data;
+ cobrand_data = c.data_for_generic_update IF !update.cobrand;
+ IF cobrand_data;
+ uri = c.uri_for_email( '/report', update.problem_id, cobrand_data );
+ ELSE;
+ uri = c.uri_for_email( '/report', update.problem_id );
+ END;
+ %]
+<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>
+
<li><label for="anonymous">[% loc('Anonymous:') %]</label> <select name="anonymous" id="anonymous">
<option [% 'selected ' IF update.anonymous %]value="1">[% loc('Yes') %]</option>
<option [% 'selected ' IF !update.anonymous %]value="0">[% loc('No') %]</option>
@@ -22,8 +31,8 @@
</select></li>
<li>[% loc('Name:') %] <input type='text' name='name' id='name' value='[% update.name | html %]'></li>
<li>[% loc('Email:') %] <input type='text' id='email' name='email' value='[% update.user.email | html %]'>
-[%- IF update.user.from_council && update.user.from_council == update.problem.council %]
-[% ' (' _ tprintf(loc('user is from same council as problem - %d'), update.user.from_council ) _')' %]
+[%- IF update.user.from_body && update.user.from_body.id == update.problem.bodies_str %]
+[% ' (' _ tprintf(loc('user is from same council as problem - %d'), update.user.from_body.id ) _')' %]
[% END -%]
[%- IF update.user.id == update.problem.user.id %]
[% ' (' _ loc('user is problem owner') _')' %]
@@ -43,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
new file mode 100644
index 000000000..4a57b05a0
--- /dev/null
+++ b/templates/web/default/admin/user-form.html
@@ -0,0 +1,56 @@
+<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>
+ <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>
+ <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>
+ <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') %]" >
+</form>
diff --git a/templates/web/default/admin/user_edit.html b/templates/web/default/admin/user_edit.html
index a03a4b734..d69c873a3 100644
--- a/templates/web/default/admin/user_edit.html
+++ b/templates/web/default/admin/user_edit.html
@@ -3,20 +3,6 @@
[% status_message %]
-<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" >
-<ul>
-<li>[% 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('Council:') %] <select id='council' name='council'>
- <option value=''>[% loc('No council') %]</option>
-[% FOR council IN council_ids %]
- <option value="[% council %]"[% ' selected' IF council == user.from_council %]>[% council_details.$council.name %]</option>
-[% END %]
-</select>
-<li>[% loc('Flagged:') %] <input type="checkbox" id="flagged" name="flagged"[% user.flagged ? ' checked' : '' %]></li>
-</ul>
-<input type="submit" name="Submit changes" value="[% loc('Submit changes') %]" ></form>
+[% INCLUDE 'admin/user-form.html' %]
[% INCLUDE 'admin/footer.html' %]
diff --git a/templates/web/default/admin/users.html b/templates/web/default/admin/users.html
new file mode 100644
index 000000000..db97c7d59
--- /dev/null
+++ b/templates/web/default/admin/users.html
@@ -0,0 +1,49 @@
+[% 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>
+
+[% IF users.size %]
+
+<table cellspacing="0" cellpadding="2" border="1">
+ <tr>
+ <th>[% loc('Name') %]</th>
+ <th>[% loc('Email') %]</th>
+ <th>[% loc('Body') %]</th>
+ [% IF c.cobrand.moniker != 'zurich' %]
+ <th>[% loc('Flagged') %]</th>
+ [% END %]
+ <th>*</th>
+ </tr>
+[%- FOREACH user IN users %]
+ <tr>
+ <td>[% PROCESS value_or_nbsp value=user.name %]</td>
+ <td><a href="[% c.uri_for( 'reports', search => user.email ) %]">[% PROCESS value_or_nbsp value=user.email %]</a></td>
+ <td>[% PROCESS value_or_nbsp value=user.from_body.name %]</td>
+ [% IF c.cobrand.moniker != 'zurich' %]
+ <td>[% user.flagged == 2 ? loc('(Email in abuse table)') : user.flagged ? loc('Yes') : '&nbsp;' %]</td>
+ [% END %]
+ <td>[% IF user.id %]<a href="[% c.uri_for( 'user_edit', user.id ) %]">[% loc('Edit') %]</a>[% END %]</td>
+ </tr>
+[%- 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/alert/index.html b/templates/web/default/alert/index.html
index 1f0635ae4..36c0daf91 100644
--- a/templates/web/default/alert/index.html
+++ b/templates/web/default/alert/index.html
@@ -40,9 +40,11 @@ To find out what local alerts we have for you, please enter your [% c.cobrand.co
<div class="sticky-sidebar" id="alert_recent">
<aside>
<h2>[% loc('Some photos of recent reports') %]</h2>
- [% FOREACH p IN photos %]
+ [% FOREACH p IN photos;
+ photo = p.get_photo_params;
+ %]
<a href="/report/[% p.id %]"><img border="0" height="100"
- src="/photo/[% p.id %].tn.jpeg" alt="[% p.title | html %]" title="[% p.title | html %]"></a>
+ src="[% photo.url_tn %]" alt="[% p.title | html %]" title="[% p.title | html %]"></a>
[% END %]
</aside>
</div>
diff --git a/templates/web/default/alert/list.html b/templates/web/default/alert/list.html
index 20ebbf455..447bfcd76 100644
--- a/templates/web/default/alert/list.html
+++ b/templates/web/default/alert/list.html
@@ -24,9 +24,11 @@
<div id="alert_photos" class="sticky-sidebar">
<aside>
<h2>[% loc('Photos of recent nearby reports') %]</h2>
- [% FOREACH p IN photos %]
+ [% FOREACH p IN photos;
+ photo = p.get_photo_params;
+ %]
<a href="/report/[% p.id %]"><img border="0" height="100"
- src="/photo/[% p.id %].tn.jpeg" alt="[% p.title | html %]" title="[% p.title | html %]"></a>
+ src="[% photo.url_tn %]" alt="[% p.title | html %]" title="[% p.title | html %]"></a>
[% END %]
</aside>
</div>
diff --git a/templates/web/default/around/around_index.html b/templates/web/default/around/around_index.html
index a143e90a2..087abf65f 100644
--- a/templates/web/default/around/around_index.html
+++ b/templates/web/default/around/around_index.html
@@ -6,7 +6,7 @@
[% INCLUDE 'around/postcode_form.html' %]
[% IF location_error %]
- <p class="error">[% location_error %]</p>
+ [% INCLUDE 'around/location_error.html' %]
[% END %]
[% IF possible_location_matches %]
diff --git a/templates/web/default/around/around_map_list_items.html b/templates/web/default/around/around_map_list_items.html
index f598a9ba9..da75561b5 100644
--- a/templates/web/default/around/around_map_list_items.html
+++ b/templates/web/default/around/around_map_list_items.html
@@ -5,7 +5,7 @@
<li>
<a href="[% c.uri_for('/report', p.problem.id ) %]">[% p.problem.title | html %]</a>
- <small>[% prettify_epoch( p.problem.confirmed_local.epoch, 1 ) %], [% dist %]km</small>
+ <small>[% prettify_dt( p.problem.confirmed, 1 ) %], [% dist %]km</small>
[% IF p.problem.is_fixed %]
<small>[% loc('(fixed)') %]</small>
[% ELSIF p.problem.is_closed %]
diff --git a/templates/web/default/around/display_location.html b/templates/web/default/around/display_location.html
index d50009299..c8c6935de 100755
--- a/templates/web/default/around/display_location.html
+++ b/templates/web/default/around/display_location.html
@@ -29,13 +29,13 @@
PROCESS "maps/${map.type}.html";
+ SET rss = [ loc('Recent local problems, FixMyStreet'), rss_url ] IF c.cobrand.moniker != 'emptyhomes';
INCLUDE 'header.html',
title => loc('Viewing a location')
- rss => [ loc('Recent local problems, FixMyStreet'), rss_url ],
bodyclass => 'mappage',
robots => 'noindex,nofollow';
- allow_creation = !c.cobrand.only_authed_can_create || (c.user && c.user.from_council);
+ allow_creation = !c.cobrand.only_authed_can_create || (c.user && c.user.from_body);
%]
[% IF allow_creation %]
@@ -51,7 +51,11 @@
[% map_html %]
+ [% IF c.cobrand.moniker != 'emptyhomes' %]
<p id='sub_map_links'>
+ [% IF c.cobrand.moniker == 'zurich' %]
+ <a class="hidden-nojs" id="map_layer_toggle" href="">Stadtplan</a>
+ [% END %]
[% IF c.req.params.no_pins %]
<a id='hide_pins_link' rel='nofollow' href='[% c.uri_with( { no_pins => 0 } ) %]'>[% loc('Show pins') %]</a>
[% ELSE %]
@@ -66,6 +70,7 @@
[% END %]
[% END %]
</p>
+ [% END %]
</div>
@@ -79,11 +84,13 @@
[% TRY %][% INCLUDE 'around/extra_text.html' %][% CATCH file %][% END %]
[% END %]
+ [% IF c.cobrand.moniker != 'emptyhomes' %]
[% INCLUDE 'around/_updates.html' %]
<section class="full-width">
[% INCLUDE "around/tabbed_lists.html" %]
</section>
+ [% END %]
</div>
[% IF allow_creation %]
diff --git a/templates/web/default/around/location_error.html b/templates/web/default/around/location_error.html
new file mode 100644
index 000000000..9b907b64b
--- /dev/null
+++ b/templates/web/default/around/location_error.html
@@ -0,0 +1 @@
+<p class="error">[% location_error %]</p>
diff --git a/templates/web/default/around/on_map_list_items.html b/templates/web/default/around/on_map_list_items.html
index e0f8eea08..70a071406 100644
--- a/templates/web/default/around/on_map_list_items.html
+++ b/templates/web/default/around/on_map_list_items.html
@@ -2,7 +2,7 @@
[% FOREACH p IN on_map %]
<li>
<a href="[% c.uri_for('/report', p.id ) %]">[% p.title | html %]</a>
- <small>[% prettify_epoch( p.confirmed_local.epoch, 1 ) %]</small>
+ <small>[% prettify_dt( p.confirmed, 1 ) %]</small>
[% IF p.is_fixed %]
<small>[% loc('(fixed)') %]</small>
[% ELSIF p.is_closed %]
diff --git a/templates/web/default/around/postcode_form.html b/templates/web/default/around/postcode_form.html
index 935995cfe..f58d7285d 100644
--- a/templates/web/default/around/postcode_form.html
+++ b/templates/web/default/around/postcode_form.html
@@ -5,7 +5,7 @@
<form action="[% c.uri_for('/around') %]" method="get" name="postcodeForm" id="postcodeForm">
<label for="pc">[% question %]:</label>
<span><input type="text" name="pc" value="[% pc | html %]" id="pc" size="10" maxlength="200">
- <input type="submit" value="[% loc('Go') %]" id="submit">
+ <input type="submit" value="[% loc('Go') %]" id="sub">
</span>
[% IF partial_token %]
<input type="hidden" name="partial" value="[% partial_token.token %]">
diff --git a/templates/web/default/auth/sign_out.html b/templates/web/default/auth/sign_out.html
index 23d39aa2d..571e13f9f 100644
--- a/templates/web/default/auth/sign_out.html
+++ b/templates/web/default/auth/sign_out.html
@@ -2,7 +2,6 @@
<h1>[% loc('You have been signed out') %]</h1>
-<p>Please feel free to <a href="[% c.uri_for('/auth') %]">sign in again</a>, or
-go back to the <a href="/">FixMyStreet front page</a>.</p>
+<p>[% tprintf( loc('Please feel free to <a href="%s">sign in again</a>, or go back to the <a href="/">front page</a>.'), c.uri_for('/auth') ) %]</p>
[% INCLUDE 'footer.html' %]
diff --git a/templates/web/default/auth/token.html b/templates/web/default/auth/token.html
index 0f44d1074..361d4fbd5 100644
--- a/templates/web/default/auth/token.html
+++ b/templates/web/default/auth/token.html
@@ -4,13 +4,10 @@
<h1>[% loc('Error') %]</h1>
-<p>We have not been able to confirm your account - sorry. This may be because:</p>
-
-<ul>
- <li>Link too old or already used</li>
- <li>URL not copied correctly</li>
- [%# FIXME - add more reasons here %]
-</ul>
+<p>
+ [% loc('We have not been able to confirm your account - sorry.') %]
+ [% loc('This may be because the link is too old or already used, or the address was not copied correctly.') %]
+</p>
[% ELSE %]
@@ -18,7 +15,9 @@
<p>[% loc("We have sent you an email containing a link to confirm your account.") %]</p>
+[% IF c.cobrand.moniker != 'zurich' %]
<p>[% loc("The confirmation email <strong>may</strong> take a few minutes to arrive &mdash; <em>please</em> be patient.") %]</p>
+[% END %]
<p>[% loc("If you use web-based email or have 'junk mail' filters, you may wish to check your bulk/spam mail folders: sometimes, our messages are marked that way.") %]</p>
diff --git a/templates/web/default/common_header_tags.html b/templates/web/default/common_header_tags.html
index 4839249ac..cd6b4ab3a 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/validation_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 %]
@@ -25,9 +33,7 @@
<meta name="robots" content="noindex,nofollow">
[% END %]
-[% IF rss %]
- <link rel="alternate" type="application/rss+xml" title="[% rss.0 %]" href="[% rss.1 %]">
-[% END %]
+[% INCLUDE 'header_rss.html' %]
<title>
[% "$title :: " | html IF title %]
diff --git a/templates/web/default/contact/index.html b/templates/web/default/contact/index.html
index a644ed952..8789fd03e 100644
--- a/templates/web/default/contact/index.html
+++ b/templates/web/default/contact/index.html
@@ -18,9 +18,9 @@
<blockquote>
<p>
[% IF update.anonymous %]
- [% tprintf( loc('Update below added anonymously at %s'), prettify_epoch( update.confirmed_local.epoch ) ) %]
+ [% tprintf( loc('Update below added anonymously at %s'), prettify_dt( update.confirmed ) ) %]
[% ELSE %]
- [% tprintf( loc('Update below added by %s at %s'), update.name, prettify_epoch( update.confirmed_local.epoch ) ) | html %]
+ [% tprintf( loc('Update below added by %s at %s'), update.name, prettify_dt( update.confirmed ) ) | html %]
[% END %]
</p>
@@ -38,13 +38,13 @@
</p>
<blockquote>
- <h2>[% problem.title | html %]</h2>
+ <h2>[% problem.title_safe | html %]</h2>
<p>
[% IF problem.anonymous %]
- [% tprintf( loc('Reported anonymously at %s'), prettify_epoch( problem.confirmed_local.epoch ) ) %]
+ [% tprintf( loc('Reported anonymously at %s'), prettify_dt( problem.confirmed ) ) %]
[% ELSE %]
- [% tprintf( loc('Reported by %s at %s'), problem.user.name, prettify_epoch( problem.confirmed_local.epoch ) ) | html %]
+ [% tprintf( loc('Reported by %s at %s'), problem.user.name, prettify_dt( problem.confirmed ) ) | html %]
[% END %]
</p>
@@ -83,6 +83,8 @@
<label for="form_subject">[% loc('Subject:') %]</label>
<input type="text" class="required" name="subject" id="form_subject" value="[% subject | html %]" size="30"></div>
+[% INCLUDE 'contact/who.html' %]
+
[% IF field_errors.message %]
<div class="form-error">[% field_errors.message %]</div>
[% END %]
diff --git a/templates/web/emptyhomes/contact/address.html b/templates/web/default/contact/who.html
index e69de29bb..e69de29bb 100644
--- a/templates/web/emptyhomes/contact/address.html
+++ b/templates/web/default/contact/who.html
diff --git a/templates/web/default/dashboard/index.html b/templates/web/default/dashboard/index.html
index 169d7d3fe..b3e1e8426 100644
--- a/templates/web/default/dashboard/index.html
+++ b/templates/web/default/dashboard/index.html
@@ -81,7 +81,7 @@
[%
rows = {
'0' => [ "in progress", "Council has marked as in progress" ]
- '1' => [ "planned", "Council has marked as planned" ]
+ '1' => [ "action scheduled", "Council has marked as planned" ]
'2' => [ "investigating", "Council has marked as investigating" ]
'3' => [ "closed", "Council has marked as closed" ]
};
@@ -98,10 +98,14 @@
<tr class='subtotal' id="marked">
<th scope="row">Total marked</th>
- <td>[% problems.wtd.${"in progress"} + problems.wtd.planned + problems.wtd.investigating + problems.wtd.closed %]</td>
- <td>[% problems.week.${"in progress"} + problems.week.planned + problems.week.investigating + problems.wtd.closed %]</td>
- <td>[% problems.weeks.${"in progress"} + problems.weeks.planned + problems.weeks.investigating + problems.wtd.closed %]</td>
- <td>[% problems.ytd.${"in progress"} + problems.ytd.planned + problems.ytd.investigating + problems.wtd.closed %]</td>
+ <td>[% problems.wtd.${"in progress"} + problems.wtd.${"action scheduled"} +
+ problems.wtd.investigating + problems.wtd.closed %]</td>
+ <td>[% problems.week.${"in progress"} + problems.week.${"action scheduled"} +
+ problems.week.investigating + problems.wtd.closed %]</td>
+ <td>[% problems.weeks.${"in progress"} + problems.weeks.${"action scheduled"} +
+ problems.weeks.investigating + problems.wtd.closed %]</td>
+ <td>[% problems.ytd.${"in progress"} + problems.ytd.${"action scheduled"} +
+ problems.ytd.investigating + problems.wtd.closed %]</td>
</tr>
<tr id="avg_fixed">
@@ -136,12 +140,13 @@
<p>Report state: <select name="state">
<option value=''>All</option>
[% FOREACH state IN [ ['confirmed', loc('Open')], ['investigating',
- loc('Investigating')], ['planned', loc('Planned')], ['in progress',
+ loc('Investigating')], ['action scheduled', loc('Planned')], ['in progress',
loc('In Progress')], ['closed', loc('Closed')], ['fixed', loc('Fixed')] ] %]
<option [% 'selected ' IF state.0 == q_state %] value="[% state.0 %]">[% state.1 %]</option>
[% 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/email_sent.html b/templates/web/default/email_sent.html
index fd947022a..9afddf2bd 100644
--- a/templates/web/default/email_sent.html
+++ b/templates/web/default/email_sent.html
@@ -1,30 +1,34 @@
-[% INCLUDE 'header.html', title => loc('Create a report') %]
-
-[%
- messages = {
- problem => {
- action => loc('your problem will not be posted'),
- worry => loc("we'll hang on to your problem report while you're checking your email."),
- },
- update => {
- action => loc('your update will not be posted'),
- worry => loc("we'll hang on to your update while you're checking your email."),
- },
- alert => {
- action => loc('your alert will not be activated'),
- worry => loc("we'll hang on to your alert while you're checking your email."),
- },
- }
-%]
+[% INCLUDE 'header.html', title = loc('Create a report') %]
<h1>[% loc("Nearly Done! Now check your email...") %]</h1>
-<p>[% loc("The confirmation email <strong>may</strong> take a few minutes to arrive &mdash; <em>please</em> be patient.") %]</p>
+[% IF c.cobrand.moniker != 'zurich' %]
+ <p>[% loc("The confirmation email <strong>may</strong> take a few minutes to arrive &mdash; <em>please</em> be patient.") %]</p>
+[% END %]
<p>[% loc("If you use web-based email or have 'junk mail' filters, you may wish to check your bulk/spam mail folders: sometimes, our messages are marked that way.") %]</p>
-<p>[% tprintf( loc("You must now click the link in the email we've just sent you &mdash; if you do not, %s."), messages.$email_type.action ) %].</p>
+[% IF c.cobrand.moniker != 'zurich' %]
+ <p>
+ [% loc("You must now click the link in the email we've just sent you.") %]
+ [% IF email_type == 'problem' %]
+ [% loc("If you do not, your problem will not be posted.") %]
+ [% ELSIF email_type == 'update' %]
+ [% loc("If you do not, your update will not be posted.") %]
+ [% ELSIF email_type == 'alert' %]
+ [% loc("If you do not, your alert will not be activated.") %]
+ [% END %]
+ </p>
-<p>[% tprintf( loc("(Don't worry &mdash; %s)"), messages.$email_type.worry ) %]</p>
+ <p>
+ [% IF email_type == 'problem' %]
+ [% loc("(Don't worry &mdash; we'll hang on to your problem report while you're checking your email.)") %]
+ [% ELSIF email_type == 'update' %]
+ [% loc("(Don't worry &mdash; we'll hang on to your update while you're checking your email.)") %]
+ [% ELSIF email_type == 'alert' %]
+ [% loc("(Don't worry &mdash; we'll hang on to your alert while you're checking your email.)") %]
+ [% END %]
+ </p>
+[% END %]
[% INCLUDE 'footer.html' %]
diff --git a/templates/web/default/faq/faq-en-gb.html b/templates/web/default/faq/faq-en-gb.html
index 26f93afb8..3bfbfb467 100755
--- a/templates/web/default/faq/faq-en-gb.html
+++ b/templates/web/default/faq/faq-en-gb.html
@@ -18,7 +18,7 @@ or clearing</strong>, such as:
<li>Flytipping or litter
<li>Streetcleaning, such as broken glass in a cycle lane
[% IF c.cobrand.moniker != 'southampton' %]
- <li>Unlit lamposts
+ <li>Unlit lampposts
[% END %]
<li>Potholes
</ul>
@@ -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/front/stats.html b/templates/web/default/front/stats.html
index c5d931d08..5367f1118 100644
--- a/templates/web/default/front/stats.html
+++ b/templates/web/default/front/stats.html
@@ -36,8 +36,8 @@
<div id="front_stats">
<div>[% tprintf( new_text, stats.new ) | comma %]</div>
- [% IF c.cobrand.moniker != 'emptyhomes' %]
<div>[% tprintf( fixed_text, stats.fixed ) | comma %]</div>
- [% END %]
+ [% IF c.cobrand.moniker != 'zurich' %]
<div>[% tprintf( updates_text, stats.updates ) | comma %]</div>
+ [% END %]
</div>
diff --git a/templates/web/default/header_logo.html b/templates/web/default/header_logo.html
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/templates/web/default/header_logo.html
diff --git a/templates/web/default/header_opengraph.html b/templates/web/default/header_opengraph.html
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/templates/web/default/header_opengraph.html
diff --git a/templates/web/default/header_rss.html b/templates/web/default/header_rss.html
new file mode 100644
index 000000000..b93a2e7fc
--- /dev/null
+++ b/templates/web/default/header_rss.html
@@ -0,0 +1,3 @@
+[% IF rss %]
+ <link rel="alternate" type="application/rss+xml" title="[% rss.0 %]" href="[% rss.1 %]">
+[% END %]
diff --git a/templates/web/default/index-steps.html b/templates/web/default/index-steps.html
index 7129241d2..431791c20 100644
--- a/templates/web/default/index-steps.html
+++ b/templates/web/default/index-steps.html
@@ -2,8 +2,23 @@
<ol class="big-numbers">
[% IF c.cobrand.moniker == 'fixmybarangay' %]
- <li>Text LUZ or BSN followed by your report to 12345</li>
- <li>Visit the Barangay Center in person</li>
+ <li>Text <span class="promo-big">FMB LUZ</span> or <span class="promo-big">FMB BSN</span> followed by your report to
+ <ul id="promo-list">
+ <li>
+ <span class="promo-bigger">391-FMB</span> (391362) SMART short code
+ </li>
+ <li>
+ <span class="promo-bigger">0908&nbsp;896&nbsp;8278</span> for all networks
+ </li>
+ </ul>
+ <div class="promo-example">
+ For example:<br/>
+ <div>
+ FMB LUZ Busted streetlamp, P. Cabantan St., Pole # 12345, near Sto. Antonio Chapel
+ </div>
+ </div>
+ </li>
+ <li>Or visit the Barangay Center in person</li>
<li>Staff? <a href="/auth">Sign in</a> and click on the map!
[% ELSE %]
<li>[% question %]</li>
@@ -11,14 +26,17 @@
<li>[% loc('Enter details of the problem') %]</li>
[% IF c.cobrand.is_council %]
<li>Confirm the report and [% c.cobrand.council_name %] will investigate</li>
+ [% ELSIF c.cobrand.moniker == 'zurich' %]
[% ELSE %]
<li>[% loc('We send it to the council on your behalf') %]</li>
[% END %]
[% END %]
</ol>
+[% IF c.cobrand.moniker != 'emptyhomes' %]
<section class="full-width">
[% INCLUDE "front/stats.html" %]
[% TRY %][% INCLUDE "front/tips.html" %][% CATCH file %][% END %]
</section>
+[% END %]
diff --git a/templates/web/default/index.html b/templates/web/default/index.html
index 3698d6494..37bdd8c1e 100644
--- a/templates/web/default/index.html
+++ b/templates/web/default/index.html
@@ -8,12 +8,10 @@
[%
subhead
= c.cobrand.moniker == 'southampton'
- ? '(like graffiti, fly tipping, or broken paving slabs)'
+ ? ''
: loc('(like graffiti, fly tipping, broken paving slabs, or street lighting)');
%]
-
<strong>[% loc('Report, view, or discuss local problems') %]</strong>
-
[% IF subhead != ' ' %]
<small>[% subhead %]</small>
[% END %]
@@ -37,9 +35,11 @@
<h2>[% loc('Recently reported problems') %]</h2>
[% IF recent_photos.size %]
<p id="front_photos">
- [% FOREACH p IN recent_photos %]
+ [% FOREACH p IN recent_photos;
+ photo = p.get_photo_params;
+ %]
<a href="/report/[% p.id %]"><img border="0" height="100"
- src="/photo/[% p.id %].tn.jpeg" alt="[% p.title | html %]" title="[% p.title | html %]"></a>
+ src="[% photo.url_tn %]" alt="[% p.title | html %]" title="[% p.title | html %]"></a>
[% END %]
</p>
[% END %]
@@ -49,7 +49,7 @@
[% FOREACH p IN probs %]
<li>
<a href="/report/[% p.id %]">[% p.title | html %]</a>
- <small>[% prettify_epoch( p.confirmed_local.epoch, 1 ) %]</small>
+ <small>[% prettify_dt( p.confirmed, 1 ) %]</small>
</li>
[% END %]
</ul>
diff --git a/templates/web/default/js/translation_strings.html b/templates/web/default/js/translation_strings.html
new file mode 100644
index 000000000..a14443b71
--- /dev/null
+++ b/templates/web/default/js/translation_strings.html
@@ -0,0 +1,48 @@
+ 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("'", "\\'") %]'
+ },
+ 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("'", "\\'") %]',
+ 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("'", "\\'") %]',
+
+ permalink: '[% loc('Permalink') | replace("'", "\\'") %]',
+
+ report_problem_heading: '[% loc('Click map to report a problem') | replace("'", "\\'") %]'
+ };
diff --git a/templates/web/default/js/validation_strings.html b/templates/web/default/js/validation_strings.html
deleted file mode 100644
index 3148d1993..000000000
--- a/templates/web/default/js/validation_strings.html
+++ /dev/null
@@ -1,21 +0,0 @@
- validation_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("'", "\\'") %]'
- };
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/google.html b/templates/web/default/maps/google.html
index 69020ea81..741edec40 100644
--- a/templates/web/default/maps/google.html
+++ b/templates/web/default/maps/google.html
@@ -1,13 +1,31 @@
[% map_js = BLOCK %]
-<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
+<style>
+#map_box img {
+ max-width: none;
+}
+#map_box {
+ color: #000;
+}
+</style>
+<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="[% version('/js/map-google.js') %]"></script>
+<script type="text/javascript" src="[% version('/js/jquery.ba-hashchange.min.js') %]"></script>
[% END %]
[% map_html = BLOCK %]
<script type="text/javascript">
var fixmystreet = {
+ 'page': '[% page %]',
+ 'area': [ [% map.area.join(',') %] ],
+ 'all_pins': '[% all_pins %]',
'latitude': [% map.latitude %],
'longitude': [% map.longitude %],
+[% IF map.any_zoom -%]
+ 'zoomToBounds': 1,
+[%- END %]
+[% IF map.zoom -%]
+ 'zoom': [% map.zoom %],
+[%- END %]
'pins': [% INCLUDE maps/pins_js.html %]
}
</script>
diff --git a/templates/web/default/maps/mapquest-attribution.html b/templates/web/default/maps/mapquest-attribution.html
new file mode 100644
index 000000000..8ca4ea650
--- /dev/null
+++ b/templates/web/default/maps/mapquest-attribution.html
@@ -0,0 +1,14 @@
+[% map_js = BLOCK %]
+<script type="text/javascript" src="[% version('/js/OpenLayers.fixmystreet.js') %]"></script>
+<script type="text/javascript" src="[% version('/js/map-OpenLayers.js') %]"></script>
+<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" />
+<![endif]-->
+[% END %]
+
+[% map_html = BLOCK %]
+[% INCLUDE maps/openlayers.html %]
+<div class="olControlAttribution" style="position: absolute; z-index: 1005;">Data, imagery and map information provided by <a href="http://www.mapquest.com/">MapQuest</a> <img src="http://developer.mapquest.com/content/osm/mq_logo.png" />, <a href="http://openstreetmap.org/">Open Street Map</a> and contributors, <a href="http://opendatacommons.org/licenses/odbl/">ODbL</a></div>
+[% END %]
diff --git a/templates/web/default/maps/openlayers.html b/templates/web/default/maps/openlayers.html
index b75e2bbd8..7967d4480 100644
--- a/templates/web/default/maps/openlayers.html
+++ b/templates/web/default/maps/openlayers.html
@@ -18,6 +18,7 @@ var fixmystreet = {
[% IF map.zoom -%]
'zoom': [% map.zoom %],
[%- END %]
+ 'pin_prefix': '[% c.cobrand.path_to_pin_icons %]',
'numZoomLevels': [% map.numZoomLevels %],
'zoomOffset': [% map.zoomOffset %],
'map_type': [% map.map_type %],
@@ -65,13 +66,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 %]
@@ -81,7 +82,7 @@ var fixmystreet = {
[% IF pin.id %]
<a title="[% pin.title | html %]" href="[% c.uri_for('/report/' _ pin.id) %]">
[%- END -%]
-<img border="0" class="pin" src="[% c.uri_for('/i/pin-' _ pin.colour _ '.png') %]"
+<img border="0" class="pin" src="[% c.uri_for( c.cobrand.path_to_pin_icons _ 'pin-' _ pin.colour _ '.png') %]"
alt="[% loc('Problem') %]" style="top:[% pin.py - 64 %]px; left:[% pin.px - 24 %]px; position: absolute;">
[%- IF pin.id -%]
</a>
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..ce08e179a 100644
--- a/templates/web/default/maps/osm.html
+++ b/templates/web/default/maps/osm.html
@@ -4,10 +4,11 @@
<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 %]
[% map_html = BLOCK %]
[% INCLUDE maps/openlayers.html %]
+<div class="olControlAttribution" style="position: absolute; z-index: 1006;">&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors</div>
[% END %]
diff --git a/templates/web/default/my/my.html b/templates/web/default/my/my.html
index 3d418cda7..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'
@@ -53,7 +58,7 @@ END %]
<li>&ldquo;[% u.text | html %]&rdquo;
&ndash; <a href="[% c.uri_for( '/report', u.problem_id ) %]#update_[% u.id %]">[% u.problem.title | html %]</a>.
<em class="council_sent_info">
- [% tprintf( loc("Added %s"), prettify_epoch( u.confirmed_local.epoch, 'date' ) ) %]
+ [% tprintf( loc("Added %s"), prettify_dt( u.confirmed, 'date' ) ) %]
</em>
</li>
[% "</ul>" IF loop.last %]
@@ -69,9 +74,9 @@ END %]
<li><a href="[% c.uri_for( '/report', p.id ) %]">[% p.title | html %]</a>
<em class="council_sent_info"> &ndash;
[% IF p.whensent %]
- [% tprintf( loc("Reported %s, to %s"), prettify_epoch( p.confirmed_local.epoch, 'date' ), p.body(c) ) %]
+ [% tprintf( loc("Reported %s, to %s"), prettify_dt( p.confirmed, 'date' ), p.body(c) ) %]
[% ELSE %]
- [% tprintf( loc("Reported %s"), prettify_epoch( p.confirmed_local.epoch, 'date' ) ) %]
+ [% tprintf( loc("Reported %s"), prettify_dt( p.confirmed, 'date' ) ) %]
[% END %]
</em>
</li>
diff --git a/templates/web/default/open311/index.html b/templates/web/default/open311/index.html
index 8ce18f68c..aa77a8381 100644
--- a/templates/web/default/open311/index.html
+++ b/templates/web/default/open311/index.html
@@ -1,6 +1,75 @@
-[% INCLUDE 'header.html', title => 'Open311' %]
+[% INCLUDE 'header.html', title = 'Open311', 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><a href="/privacy">Privacy and cookies</a></li>
+ <li><a href="/contact">Contact FixMyStreet</a></li>
+ </ul>
+ </aside>
+</div>
+
+<h1>FixMyStreet support for Open311</h1>
+
+<p>FixMyStreet supports Open311 both as a <a href="#client">client</a> (sending
+reports made on the site to an external service via the Open311 protocol), and
+partly as a <a href="#server">server</a> (returning reports made on the site when
+queried via the Open311 protocol).</p>
+
+<dl id="client">
+
+<dt>What is Open311?</dt>
+
+<dd>
+<p>In a nutshell, it's an international open standard that allows services to
+'talk to' council systems.</p>
+<p>As channels of communication diversify, it has become more and more
+important that council systems can recognise and accept reports from a variety
+of sources. For example, reports may come in via Twitter, SMS, email, services
+like FixMyStreet, and the council's own website.</p>
+</dd>
+
+<dt>Where can I find out more?</dt>
+
+<dd>
+<p>Open311 isn't as widely known as it deserves to be, so we wrote a
+<a href="http://www.mysociety.org/2013/01/10/open311-introduced/">short
+series of blog posts</a> to explain the basics. And you can find out lots more at
+<a href="http://open311.org/">open311.org</a>.</p>
+</dd>
+
+<dt>Why does it matter?</dt>
+
+<dd>
+<p>If you oversee problem reports at a council, you will of course be concerned
+about future-proofing your communication channels in an easy and economical way
+&ndash; Open311 gives you that assurance.</p>
+
+[% IF c.cobrand.moniker == 'fixmystreet' %]
+<p>You may be interested to know about <a
+href="http://www.google.com/url?q=http%3A%2F%2Fwww.mysociety.org%2Ffor-councils%2Ffixmystreet%2F&sa=D&sntz=1&usg=AFQjCNHo4eT2yOopyZ-39zz16jC-Faa5gQ">FixMyStreet
+for Councils</a>, our hosted service which sits seamlessly on your council
+website.</p>
+
+<p>We can integrate it with any council back-end system, but if you use
+Open311, we charge less. That's how much we believe it's the sane way forward
+for council problem-reporting systems.</p>
+[% END %]
+
+<dt>Any questions?</dt>
+
+<dd>
+<p>We're always happy to talk. Just <a href="/contact">drop us a line</a>.</p>
+</dd>
+
+</dl>
+
+<hr>
-<h1>[% loc('Open311 API for the mySociety FixMyStreet server') %]</h1>
+<h2 id="server">[% loc('Open311 API for the mySociety FixMyStreet server') %]</h2>
[% IF error %]
<p>[% tprintf( loc('Note: <strong>%s</strong>'), error ) %]</p>
diff --git a/templates/web/default/pagination.html b/templates/web/default/pagination.html
index f5a1192d1..63180b600 100644
--- a/templates/web/default/pagination.html
+++ b/templates/web/default/pagination.html
@@ -1,17 +1,19 @@
[% IF pager.last_page > 1 %]
- <p>
+[% IF NOT admin %]
+<section class="full-width">
+[% END %]
+ <p class="pagination">
[% IF pager.previous_page %]
- <a href="[% c.req.uri_with({ $param => pager.previous_page }) %]">&larr; Previous</a>
- [% ELSE %]
- &larr; Previous
+ <a class="prev" href="[% c.req.uri_with({ $param => pager.previous_page }) %][% '#' _ hash IF hash %]">[% loc('Previous') %]</a>
[% END %]
- |
- [% pager.first %] to [% pager.last %] of [% pager.total_entries %]
- |
+
+ [% tprintf( loc('%d to %d of %d'), pager.first, pager.last, pager.total_entries ) %]
+
[% IF pager.next_page %]
- <a href="[% c.req.uri_with({ $param => pager.next_page }) %]">Next &rarr;</a>
- [% ELSE %]
- Next &rarr;
+ <a class="next" href="[% c.req.uri_with({ $param => pager.next_page }) %][% '#' _ hash IF hash %]">[% loc('Next') %]</a>
[% END %]
</p>
+[% IF NOT admin %]
+</section>
+[% END %]
[% END %]
diff --git a/templates/web/default/questionnaire/completed.html b/templates/web/default/questionnaire/completed.html
index 52c20652c..4d848a63c 100644
--- a/templates/web/default/questionnaire/completed.html
+++ b/templates/web/default/questionnaire/completed.html
@@ -22,7 +22,7 @@ site and leave an update.</p>') %]
[% END %]
[% IF advert_outcome %]
- [% display_crosssell_advert( problem.user.email, problem.name, 'council', problem.council ) %]
+ [% display_crosssell_advert( problem.user.email, problem.name, 'council', problem.bodies_str ) %]
[% END %]
[% INCLUDE 'footer.html' %]
diff --git a/templates/web/default/questionnaire/index.html b/templates/web/default/questionnaire/index.html
index 5b48f8915..6783bca57 100644
--- a/templates/web/default/questionnaire/index.html
+++ b/templates/web/default/questionnaire/index.html
@@ -80,9 +80,13 @@ href="http://www.emptyhomes.com/getinvolved/campaign.html">http://www.emptyhomes
</p>
[% END %]
+[% IF c.cobrand.moniker == 'southampton' %]
+<p>Add a public update (please note it will not be sent to the council)</p>
+[% ELSE %]
<p>[% loc('If you wish to leave a public update on the problem, please enter it here
(please note it will not be sent to the council). For example, what was
your experience of getting the problem fixed?') %]</p>
+[% END %]
<p><textarea name="update" style="max-width:90%" rows="7" cols="30">[% update | html %]</textarea></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 b9779db69..0124052c0 100644
--- a/templates/web/default/report/_main.html
+++ b/templates/web/default/report/_main.html
@@ -3,13 +3,9 @@
<p><em>
[% problem.meta_line(c) | html %]
- [%- IF !problem.used_map %]; <strong>[% loc('there is no pin shown as the user did not use the map') %]</strong>[% END %]
- [% IF problem.council %]
- [% IF problem.whensent || problem.can_display_external_id %]
- <small class="council_sent_info"><br>
- [% problem.processed_summary_string(c) %]
- </small>
- [% END %]
+ [%- 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 %]
+ [% INCLUDE 'report/_council_sent_info.html' %]
[% ELSE %]
<br><small>[% loc('Not reported to council') %]</small>
[% END %]
diff --git a/templates/web/default/report/_support.html b/templates/web/default/report/_support.html
index e8b958940..3e372ba69 100644
--- a/templates/web/default/report/_support.html
+++ b/templates/web/default/report/_support.html
@@ -1,11 +1,17 @@
[% IF c.cobrand.can_support_problems %]
-<p id="supporter"><small>
- [% IF !problem.interest_count %][% text=loc('No supporters') %][% ELSIF problem.interest_count == 1 %][% text = loc('1 supporter') %][% ELSE %][% text = tprintf( loc('%d supporters' ), problem.interest_count ) %][% END %]
- [% IF c.user && c.user.from_council %]<form action="[% c.uri_for( '/report/support' ) %]">
- [% text %] <input type="hidden" name="id" value="[% problem.id %]"><input type="submit" class="green-btn" value="Add support">
+[%
+ IF !problem.interest_count;
+ SET text = loc('No supporters');
+ ELSE;
+ SET text = tprintf( nget( "%d supporter", "%d supporters", problem.interest_count ), problem.interest_count );
+ END;
+%]
+
+ [% IF c.user AND c.user.from_body %]
+ <form action="[% c.uri_for( '/report/support' ) %]">
+ <p id="supporter"><small>[% text %] <input type="hidden" name="id" value="[% problem.id %]"><input type="submit" class="green-btn" value="Add support"></small></p>
</form>
[% ELSE %]
- [% text %]
+ <p id="supporter"><small>[% text %]</small></p>
[% END %]
-</small></p>
[% END %]
diff --git a/templates/web/default/report/banner.html b/templates/web/default/report/banner.html
index 85aaed82d..bd7798d79 100644
--- a/templates/web/default/report/banner.html
+++ b/templates/web/default/report/banner.html
@@ -5,7 +5,7 @@
</p>
[% END %]
-[% IF problem.is_open AND date.now - problem.lastupdate_local.epoch > 8 * 7 * 24 * 60 * 60 %]
+[% IF problem.is_open AND date.now - problem.lastupdate.epoch > 8 * 7 * 24 * 60 * 60 %]
[% INCLUDE banner, id = 'unknown', text = loc('This problem is old and of unknown status.') %]
[% END %]
[% IF problem.is_fixed %]
@@ -14,7 +14,7 @@
[% IF problem.is_closed %]
[% INCLUDE banner, id = 'closed', text = loc('This problem has been closed') %]
[% END %]
-[% states = [ 'investigating', 'in progress', 'planned' ];
+[% states = [ 'investigating', 'in progress', 'planned', 'action scheduled' ];
IF states.grep(problem.state).size %]
[% INCLUDE banner, id = 'progress', text = loc('This problem is in progress') %]
[% END %]
diff --git a/templates/web/default/report/display.html b/templates/web/default/report/display.html
index 6b93539f2..fd7580ac1 100644
--- a/templates/web/default/report/display.html
+++ b/templates/web/default/report/display.html
@@ -1,16 +1,19 @@
[%
PROCESS "maps/${map.type}.html";
- problem_title = problem.title _ ' - ' _ loc('Viewing a problem');
+ problem_title = problem.title_safe _ ' - ' _ loc('Viewing a problem');
+ SET rss = [ loc('Updates to this problem, FixMyStreet'), "/rss/$problem.id" ] IF c.cobrand.moniker != 'emptyhomes';
+ SET robots = 'index, nofollow';
+ SET robots = 'noindex, nofollow' IF c.cobrand.moniker == 'emptyhomes';
INCLUDE 'header.html'
title = problem_title
- rss = [ loc('Updates to this problem, FixMyStreet'), "/rss/$problem.id" ]
- robots = 'index, nofollow'
%]
-[% map_html %]
+[% IF c.cobrand.moniker != 'emptyhomes' %]
+ [% map_html %]
+ </div>
+[% END %]
-</div>
<div id="side">
[% INCLUDE 'report/banner.html' %]
@@ -22,6 +25,7 @@
</small>
</p>
+[% IF c.cobrand.moniker != 'emptyhomes' %]
<p style="padding-bottom: 0.5em; border-bottom: dotted 1px #999999;" align="right">
<a href="[% c.uri_for( '/around', { lat => short_latitude, lon => short_longitude } ) %]">[% loc( 'More problems nearby' ) %]</a>
</p>
@@ -44,173 +48,9 @@
</div>
[% INCLUDE 'report/updates.html' %]
-
-<div id="update_form">
-
- <h2>
- [% loc( 'Provide an update') %]
- </h2>
-
- [% IF c.cobrand.moniker != 'emptyhomes' %]
- <p>
- <small>[% loc( 'Please note that updates are not sent to the council. If you leave your name it will be public. Your information will only be used in accordance with our <a href="/faq#privacy">privacy policy</a>' ) %]</small>
- </p>
- [% END %]
-
- [% INCLUDE 'errors.html' %]
-
- <form method="post" action="[% c.uri_for( '/report/update' ) %]" name="updateForm" class="fieldset validate"[% IF c.cobrand.allow_photo_upload %] enctype="multipart/form-data"[% END %]>
-
- <input type="hidden" name="submit_update" value="1">
- <input type="hidden" name="id" value="[% problem.id | html %]">
-
- [% IF field_errors.update %]
- <div class='form-error'>[% field_errors.update %]</div>
- [% END %]
- <div class="form-field">
- <label for="form_update">[% loc( 'Update:' ) %]</label>
- <textarea name="update" id="form_update" rows="7" cols="30" required>[% update.text | html %]</textarea>
- </div>
-
- [% IF c.user && c.user.belongs_to_council( problem.council ) %]
- <div class="form-field">
- <label for="form_state">[% loc( 'State:' ) %]</label>
- <select name="state" id="form_state">
- [% FOREACH state IN [ ['confirmed', loc('Open')], ['investigating',
- loc('Investigating')], ['planned', loc('Planned')], ['in progress',
- loc('In Progress')], ['closed', loc('Closed')], ['fixed', loc('Fixed')] ] %]
- <option [% 'selected ' IF state.0 == problem.state %] value="[% state.0 %]">[% state.1 %]</option>
- [% END %]
- </select>
- </div>
- [% ELSE %]
- [% IF problem.is_fixed AND c.user_exists AND c.user.id == problem.user_id %]
- <div class="checkbox">
- <input type="checkbox" name="reopen" id="form_reopen" value="1"[% ' checked' IF update.mark_open %]>
- <label for="form_reopen">[% loc('This problem has not been fixed') %]</label>
- </div>
- [% ELSIF !problem.is_fixed %]
- <div class="checkbox">
- <input type="checkbox" name="fixed" id="form_fixed" value="1"[% ' checked' IF update.mark_fixed %]>
- <label for="form_fixed">[% loc('This problem has been fixed') %]</label>
- </div>
- [% END %]
- [% END %]
-
- [% IF c.cobrand.allow_photo_upload %]
- [% IF field_errors.photo %]
- <div class='form-error'>[% field_errors.photo %]</div>
- [% END %]
- <div id="fileupload_normalUI">
- [% IF upload_fileid %]
- <p>[% loc('You have already attached a photo to this update, attaching another one will replace it.') %]</p>
- <input type="hidden" name="upload_fileid" value="[% upload_fileid %]">
- [% END %]
- <label for="form_photo">[% loc('Photo:') %]</label>
- <input type="file" name="photo" id="form_photo" style="width:20em">
- </div>
- [% END %]
-
-[% IF c.user_exists %]
-
- [% INCLUDE name %]
-
- <div class="checkbox">
- <input type="submit" id="update_post" value="[% loc('Post') %]">
- </div>
-
-[% ELSE %]
-
- [% IF field_errors.email %]
- <div class='form-error'>[% field_errors.email %]</div>
- [% END %]
- <div class="form-field">
- <label for="form_rznvy">[% loc('Your email:' ) %]</label>
- <input type="email" name="rznvy" id="form_rznvy" value="[% update.user.email | html %]" size="30" required>
- </div>
-
-<div id="form_sign_in">
- <h3>[% loc("Now to submit your update&hellip; do you have a FixMyStreet password?") %]</h3>
-
- <div id="form_sign_in_yes">
-
- [% IF field_errors.password %]
- <div class='form-error'>[% field_errors.password %]</div>
- [% END %]
-
- <p>
- <label class="n" for="password_sign_in">[% loc('<strong>Yes</strong> I have a password') %]</label>
- <input type="password" name="password_sign_in" id="password_sign_in" value="" size="25">
- </p>
-
- <div class="fieldset">
-
- <p>
- <input type="checkbox" id="remember_me" name="remember_me" value='1'[% ' checked' IF remember_me %]>
- <label class="n" for="remember_me">
- [% loc('Keep me signed in on this computer') %]
- </label>
- </p>
-
- <p>
- <input type="submit" name="submit_sign_in" id="submit_sign_in" value="[% loc('Post') %]">
- </p>
-
- </div>
-
- </div>
- <div id="form_sign_in_no">
-
- <p>[% loc('<strong>No</strong>, let me confirm my update by email:') %]</p>
-
- <div class="fieldset">
-
- [% INCLUDE name %]
-
- <div class="form-field">
- <label for="password_register">[% loc('Enter a new password:') %]</label>
- <input type="password" name="password_register" id="password_register" value="" size="25">
- </div>
-
- <p style="clear:both"><small>[% loc('Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports.') %]</small></p>
-
- <p>
- <input type="submit" name="submit_register" id="submit_register" value="[% loc('Post') %]">
- </p>
-
- </div>
-
- </div>
-
-</div>
-
+[% INCLUDE 'report/update-form.html' %]
[% END %]
- </form>
-</div>
-
</div>
[% INCLUDE 'footer.html' %]
-
-[% BLOCK name %]
- [% IF field_errors.name %]
- <div class='form-error'>[% field_errors.name %]</div>
- [% END %]
-
- <div>
- <label for="form_name">[% loc('Your name:') %]</label>
- <input type="text" name="name" id="form_name" value="[% update.name || c.user.name | html %]" size="25">
- </div>
-
- <div class="checkbox">
- <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' UNLESS update.anonymous %]>
- <label for="form_may_show_name">[% loc('Show my name publicly') %]</label>
- <small>[% loc('(we never show your email)') %]</small>
- </div>
-
- <div class="checkbox">
- <input type="checkbox" name="add_alert" id="form_add_alert" value="1"[% ' checked' IF add_alert %]>
- <label for="form_add_alert">[% loc( 'Alert me to future updates' ) %]</label>
- </div>
-[% END %]
diff --git a/templates/web/default/report/new/category.html b/templates/web/default/report/new/category.html
index 49be4d25d..ee47adc9e 100644
--- a/templates/web/default/report/new/category.html
+++ b/templates/web/default/report/new/category.html
@@ -3,11 +3,17 @@
[% IF category;
category = category | lower;
END; %]
- <label for='form_category' id="form_category_label">[% category_label | html %]</label>
+ <label for='form_category' id="form_category_label">
+ [%- IF c.cobrand.moniker == 'emptyhomes' %]
+ [%- loc('Property type:') %]
+ [%- ELSE %]
+ [%- loc('Category') %]
+ [%- END -%]</label>
<select name='category' id='form_category'[% ' onchange="form_category_onchange()"' IF category_extras.size %]>
[% FOREACH cat_op IN category_options %]
[% cat_op_lc = cat_op | lower %]
- <option value='[% cat_op | html %]'[% ' selected' IF report.category == cat_op || category == cat_op_lc %]>[% cat_op | html %]</option>
+ <option value='[% cat_op | html %]'[% ' selected' IF report.category == cat_op || category == cat_op_lc || (category_options.size == 2 AND loop.last) -%]
+ >[% IF loop.first %][% cat_op %][% ELSE %][% cat_op | html %][% END %]</option>
[% END %]
</select>
[% END %]
diff --git a/templates/web/default/report/new/councils_text.html b/templates/web/default/report/new/councils_text.html
index 1da5746c1..f526beb28 100644
--- a/templates/web/default/report/new/councils_text.html
+++ b/templates/web/default/report/new/councils_text.html
@@ -1,7 +1,7 @@
[% FILTER collapse %]
-[% IF area_ids_to_list.size == 0 %]
+[% IF bodies_to_list.size == 0 %]
[% PROCESS 'report/new/councils_text_none.html' %]
-[% ELSIF area_ids_to_list.size == all_councils.size %]
+[% ELSIF bodies_to_list.size == bodies.size %]
[% PROCESS 'report/new/councils_text_all.html' %]
[% ELSE %]
[% PROCESS 'report/new/councils_text_some.html' %]
diff --git a/templates/web/default/report/new/councils_text_all.html b/templates/web/default/report/new/councils_text_all.html
index af5d822b0..e9a008e90 100644
--- a/templates/web/default/report/new/councils_text_all.html
+++ b/templates/web/default/report/new/councils_text_all.html
@@ -1,23 +1,24 @@
+[%# XXX The below type checking is assuming that a body ID can be used to look up a mapit type. %]
<p>
-[% IF area_ids_to_list.0 != 2489 && area_ids_to_list.0 != 2482 && all_councils.${area_ids_to_list.0}.type == 'LBO' %]
+[% IF bodies_to_list.0 != 2489 && bodies_to_list.0 != 2482 && all_areas.${bodies_to_list.0}.type == 'LBO' %]
[%
tprintf(
loc('All the information you provide here will be sent to <strong>%s</strong> or a relevant local body such as <strong>TfL</strong>, via the London Report-It system.'),
- all_council_names.join( '</strong>' _ loc(' or ') _ '<strong>' )
+ all_body_names.join( '</strong>' _ loc(' or ') _ '<strong>' )
);
%]
-[% ELSIF all_councils.${area_ids_to_list.0}.type == 'LGD' %]
+[% ELSIF all_areas.${bodies_to_list.0}.type == 'LGD' %]
[%
tprintf(
loc('All the information you provide here will be sent to <strong>%s</strong> or <strong>Roads Service</strong>.'),
- all_council_names.join( '</strong>' _ loc(' or ') _ '<strong>' )
+ all_body_names.join( '</strong>' _ loc(' or ') _ '<strong>' )
);
%]
[% ELSE %]
[%
tprintf(
loc('All the information you provide here will be sent to <strong>%s</strong>.'),
- all_council_names.join( '</strong>' _ loc(' or ') _ '<strong>' )
+ all_body_names.join( '</strong>' _ loc(' or ') _ '<strong>' )
);
%]
[% END %]
diff --git a/templates/web/default/report/new/councils_text_none.html b/templates/web/default/report/new/councils_text_none.html
index 06a4bbe49..9293c03a7 100644
--- a/templates/web/default/report/new/councils_text_none.html
+++ b/templates/web/default/report/new/councils_text_none.html
@@ -1,22 +1,28 @@
-
-
<p>[%
-
nget(
"We do not yet have details for the council that covers this location.",
"We do not yet have details for the councils that cover this location.",
- all_councils.size
+ missing_details_bodies.size || all_areas.size
);
%]
[%
loc("If you submit a problem here the subject and details of the problem will be public, but the problem will <strong>not</strong> be reported to the council.");
%]
+[% IF c.cobrand.moniker == 'fixamingata' AND all_body_names.size == 1 %]
+[%
+ tprintf(
+ "Du kan istället kontakta %s via <a href='%s'>deras webbsida</a>.",
+ all_body_names.first, all_body_urls.first);
+%]
+[% ELSE %]
[%
tprintf(
loc("You can help us by finding a contact email address for local problems for %s and emailing it to us at <a href='mailto:%s'>%s</a>."),
- all_council_names.join( loc(' or ') ),
+ missing_details_body_names.join( loc(' or ') ) || all_area_names.join( loc(' or ') ),
c.cobrand.contact_email,
c.cobrand.contact_email
);
-%]</p>
+%]
+[% END %]
+</p>
diff --git a/templates/web/default/report/new/councils_text_some.html b/templates/web/default/report/new/councils_text_some.html
index 042e89914..8d4768612 100644
--- a/templates/web/default/report/new/councils_text_some.html
+++ b/templates/web/default/report/new/councils_text_some.html
@@ -1,9 +1,9 @@
<p>
[% loc('All the information you provide here will be sent to') %]
-[% FOREACH council_id IN area_ids_to_list %]
+[% FOREACH body_id IN bodies_to_list %]
[% loc( ' or ') IF ! loop.first %]
- <strong>[% all_councils.$council_id.name %]</strong>
+ <strong>[% bodies.$body_id.name %]</strong>
[%- '.' IF loop.last %]
[% END %]
@@ -14,13 +14,13 @@
nget(
"We do <strong>not</strong> yet have details for the other council that covers this location.",
"We do <strong>not</strong> yet have details for the other councils that cover this location.",
- missing_details_councils.size
+ missing_details_bodies.size
);
%]
[%
tprintf(
loc("You can help us by finding a contact email address for local problems for %s and emailing it to us at <a href='mailto:%s'>%s</a>."),
- missing_details_council_names.join( loc(' or ') ),
+ missing_details_body_names.join( loc(' or ') ),
c.cobrand.contact_email,
c.cobrand.contact_email
);
diff --git a/templates/web/default/report/new/fill_in_details_form.html b/templates/web/default/report/new/fill_in_details_form.html
index 9c9451914..5eff4e147 100644
--- a/templates/web/default/report/new/fill_in_details_form.html
+++ b/templates/web/default/report/new/fill_in_details_form.html
@@ -40,8 +40,8 @@
-[% IF field_errors.council %]
- <div class='form-error'>[% field_errors.council %]</div>
+[% IF field_errors.bodies %]
+ <div class='form-error'>[% field_errors.bodies %]</div>
[% END %]
[% IF field_errors.title %]
@@ -206,7 +206,7 @@
<div class="checkbox">
[%# if there is nothing in the name field then set check box as default on form %]
- <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' IF !report.anonymous %]>
+ <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' IF report.anonymous==0 OR (c.cobrand.default_show_name AND report.anonymous=='') %]>
<label for="form_may_show_name">[% loc('Show my name publicly') %]</label>
<br><small>[% loc('(we never show your email address or phone number)') %]</small>
</div>
diff --git a/templates/web/default/report/new/notes.html b/templates/web/default/report/new/notes.html
index be605ddaa..68408acc7 100644
--- a/templates/web/default/report/new/notes.html
+++ b/templates/web/default/report/new/notes.html
@@ -4,7 +4,7 @@
<li>[% loc("We will only use your personal information in accordance with our <a href=\"/faq#privacy\">privacy policy.</a>") %]</li>
<li>[% loc("Please be polite, concise and to the point.") %]</li>
- <li>[% loc("Please do not be abusive &mdash; abusing your council devalues the service for all users.") %]</li>
+ <li>[% loc("Please do not be abusive&nbsp;&mdash; abusing your council devalues the service for all users.") %]</li>
<li>[% loc("Writing your message entirely in block capitals makes it hard to read, as does a lack of punctuation.") %]</li>
<li>[% loc("Remember that FixMyStreet is primarily for reporting physical problems that can be fixed. If your problem is not appropriate for submission via this site remember that you can contact your council directly using their own website.") %]</li>
diff --git a/templates/web/default/report/photo.html b/templates/web/default/report/photo.html
index 02ab9228b..c463c34c4 100644
--- a/templates/web/default/report/photo.html
+++ b/templates/web/default/report/photo.html
@@ -1,4 +1,4 @@
-[% IF c.cobrand.allow_photo_display && object.photo %]
+[% IF c.cobrand.allow_photo_display(object) && object.photo %]
[% photo = object.get_photo_params %]
<div class="update-img">
[% IF photo.url_full %]<a href="[% photo.url_full %]" rel="fancy">[% END
diff --git a/templates/web/default/report/update-form.html b/templates/web/default/report/update-form.html
new file mode 100644
index 000000000..50bc2906c
--- /dev/null
+++ b/templates/web/default/report/update-form.html
@@ -0,0 +1,165 @@
+<div id="update_form">
+
+ <h2>[% loc( 'Provide an update') %]</h2>
+
+ [% IF c.cobrand.moniker != 'emptyhomes' %]
+ <p>
+ <small>[% loc( 'Please note that updates are not sent to the council. If you leave your name it will be public. Your information will only be used in accordance with our <a href="/faq#privacy">privacy policy</a>' ) %]</small>
+ </p>
+ [% END %]
+
+ [% INCLUDE 'errors.html' %]
+
+ <form method="post" action="[% c.uri_for( '/report/update' ) %]" name="updateForm" class="fieldset validate"[% IF c.cobrand.allow_photo_upload %] enctype="multipart/form-data"[% END %]>
+
+ <input type="hidden" name="submit_update" value="1">
+ <input type="hidden" name="id" value="[% problem.id | html %]">
+
+ [% IF field_errors.update %]
+ <div class='form-error'>[% field_errors.update %]</div>
+ [% END %]
+ <div class="form-field">
+ <label for="form_update">[% loc( 'Update:' ) %]</label>
+ <textarea name="update" id="form_update" rows="7" cols="30" required>[% update.text | html %]</textarea>
+ </div>
+
+ [% IF c.user && c.user.belongs_to_body( problem.bodies_str ) %]
+ <div class="form-field">
+ <label for="form_state">[% loc( 'State:' ) %]</label>
+ <select name="state" id="form_state">
+ [% FOREACH state IN [ ['confirmed', loc('Open')], ['investigating',
+ loc('Investigating')], ['action scheduled', loc('Action Scheduled')],
+ ['in progress', loc('In Progress')], ['duplicate', loc('Duplicate')],
+ ['unable to fix', loc('Unable to fix')], ['not responsible', loc('Not Responsible')],
+ ['fixed', loc('Fixed')] ] %]
+ <option [% 'selected ' IF state.0 == problem.state %] value="[% state.0 %]">[% state.1 %]</option>
+ [% END %]
+ </select>
+ </div>
+ [% ELSE %]
+ [% IF problem.is_fixed AND c.user_exists AND c.user.id == problem.user_id %]
+ <div class="checkbox">
+ <input type="checkbox" name="reopen" id="form_reopen" value="1"[% ' checked' IF update.mark_open %]>
+ <label class="inline" for="form_reopen">[% loc('This problem has not been fixed') %]</label>
+ </div>
+ [% ELSIF !problem.is_fixed %]
+ <div class="checkbox">
+ <input type="checkbox" name="fixed" id="form_fixed" value="1"[% ' checked' IF update.mark_fixed %]>
+ <label class="inline" for="form_fixed">[% loc('This problem has been fixed') %]</label>
+ </div>
+ [% END %]
+ [% END %]
+
+ [% IF c.cobrand.allow_photo_upload %]
+ [% IF field_errors.photo %]
+ <div class='form-error'>[% field_errors.photo %]</div>
+ [% END %]
+ <div id="fileupload_normalUI">
+ [% IF upload_fileid %]
+ <p>[% loc('You have already attached a photo to this update, attaching another one will replace it.') %]</p>
+ <input type="hidden" name="upload_fileid" value="[% upload_fileid %]">
+ [% END %]
+ <label for="form_photo">[% loc('Photo:') %]</label>
+ <input type="file" name="photo" id="form_photo" style="width:20em">
+ </div>
+ [% END %]
+
+[% IF c.user_exists %]
+
+ [% INCLUDE name %]
+
+ <div class="checkbox">
+ <input type="submit" id="update_post" value="[% loc('Post') %]">
+ </div>
+
+[% ELSE %]
+
+ [% IF field_errors.email %]
+ <div class='form-error'>[% field_errors.email %]</div>
+ [% END %]
+ <div class="form-field">
+ <label for="form_rznvy">[% loc('Your email:' ) %]</label>
+ <input type="email" name="rznvy" id="form_rznvy" value="[% update.user.email | html %]" size="30" required>
+ </div>
+
+<div id="form_sign_in">
+ <h3>[% loc("Now to submit your update&hellip; do you have a FixMyStreet password?") %]</h3>
+
+ <div id="form_sign_in_yes">
+
+ [% IF field_errors.password %]
+ <div class='form-error'>[% field_errors.password %]</div>
+ [% END %]
+
+ <p>
+ <label class="n" for="password_sign_in">[% loc('<strong>Yes</strong> I have a password') %]</label>
+ <input type="password" name="password_sign_in" id="password_sign_in" value="" size="25">
+ </p>
+
+ <div class="fieldset">
+
+ <p>
+ <input type="checkbox" id="remember_me" name="remember_me" value='1'[% ' checked' IF remember_me %]>
+ <label class="n" for="remember_me">
+ [% loc('Keep me signed in on this computer') %]
+ </label>
+ </p>
+
+ <p>
+ <input type="submit" name="submit_sign_in" id="submit_sign_in" value="[% loc('Post') %]">
+ </p>
+
+ </div>
+
+ </div>
+ <div id="form_sign_in_no">
+
+ <p>[% loc('<strong>No</strong>, let me confirm my update by email:') %]</p>
+
+ <div class="fieldset">
+
+ [% INCLUDE name %]
+
+ <div class="form-field">
+ <label for="password_register">[% loc('Enter a new password:') %]</label>
+ <input type="password" name="password_register" id="password_register" value="" size="25">
+ </div>
+
+ <p style="clear:both"><small>[% loc('Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports.') %]</small></p>
+
+ <p>
+ <input type="submit" name="submit_register" id="submit_register" value="[% loc('Post') %]">
+ </p>
+
+ </div>
+
+ </div>
+
+</div>
+
+[% END %]
+
+ </form>
+</div>
+
+[% BLOCK name %]
+ [% IF field_errors.name %]
+ <div class='form-error'>[% field_errors.name %]</div>
+ [% END %]
+
+ <div>
+ <label for="form_name">[% loc('Your name:') %]</label>
+ <input type="text" name="name" id="form_name" value="[% update.name || c.user.name | html %]" size="25">
+ </div>
+
+ <div class="checkbox">
+ <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' IF update.anonymous==0 OR (c.cobrand.default_show_name AND update.anonymous=='') %]>
+ <label for="form_may_show_name">[% loc('Show my name publicly') %]</label>
+ <small>[% loc('(we never show your email)') %]</small>
+ </div>
+
+ <div class="checkbox">
+ <input type="checkbox" name="add_alert" id="form_add_alert" value="1"[% ' checked' IF add_alert %]>
+ <label class="inline" for="form_add_alert">[% loc( 'Alert me to future updates' ) %]</label>
+ </div>
+[% END %]
diff --git a/templates/web/default/report/updates.html b/templates/web/default/report/updates.html
index eaf5209ff..b0a015f03 100644
--- a/templates/web/default/report/updates.html
+++ b/templates/web/default/report/updates.html
@@ -1,3 +1,4 @@
+[% global.last_state = '' %]
[% FOREACH update IN updates %]
[% INCLUDE 'report/update.html' %]
[% END %]
@@ -6,24 +7,58 @@
[% IF update.whenanswered %]
[%# A questionnaire update, currently saying report is still open %]
- [% tprintf( loc( 'Still open, via questionnaire, %s' ), prettify_epoch( update.whenanswered_local.epoch ) ) %]
+ [% tprintf( loc( 'Still open, via questionnaire, %s' ), prettify_dt( update.whenanswered ) ) %]
[% RETURN %]
[% END %]
[% IF update.anonymous || update.name == '' %]
- [% tprintf( loc( 'Posted anonymously at %s' ), prettify_epoch( update.confirmed_local.epoch ) ) -%]
- [%- ELSIF update.user.from_council;
+ [% tprintf( loc( 'Posted anonymously at %s' ), prettify_dt( update.confirmed ) ) -%]
+ [%- ELSIF update.user.from_body;
user_name = update.user.name | html;
- council = update.user.council;
- IF council == 'Bromley Council';
- council = "$council <img src='/cobrands/bromley/favicon.png' alt=''>";
+ body = update.user.body;
+ IF body == 'Bromley Council';
+ body = "$body <img src='/cobrands/bromley/favicon.png' alt=''>";
END %]
- [% tprintf( loc( 'Posted by %s (<strong>%s</strong>) at %s' ), user_name, council, prettify_epoch( update.confirmed_local.epoch ) ) -%]
+ [% tprintf( loc( 'Posted by %s (<strong>%s</strong>) at %s' ), user_name, body, prettify_dt( update.confirmed ) ) -%]
[%- ELSE %]
- [% tprintf( loc( 'Posted by %s at %s' ), update.name, prettify_epoch( update.confirmed_local.epoch ) ) | html -%]
+ [% tprintf( loc( 'Posted by %s at %s' ), update.name, prettify_dt( update.confirmed ) ) | html -%]
[%- END -%]
- [%- ", " _ loc( 'marked as fixed' ) IF update.mark_fixed %]
- [%- ", " _ loc( 'reopened' ) IF update.mark_open OR update.problem_state == 'confirmed' %]
- [%- ", " _ tprintf(loc( 'marked as %s' ), update.meta_problem_state) IF update.problem_state AND update.problem_state != 'confirmed' %]
-[% END %]
+ [%- update_state = '' %]
+ [%- IF update.mark_fixed %][% update_state = loc( 'marked as fixed' ) %][% END %]
+ [%- IF update.mark_open %][% update_state = loc( 'reopened' ) %][% END %]
+ [%- IF !update_state && update.problem_state %]
+ [%- state = update.meta_problem_state %]
+ [%- IF c.cobrand.moniker == 'bromley' OR problem.bodies_str == '2482' %]
+ [%- 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 %]
+ [%- IF state == 'confirmed' AND global.last_state != '' %]
+ [%- update_state = loc( 'reopened' ) %]
+ [%- ELSIF state == 'investigating' %]
+ [%- update_state = loc( 'marked as investigating' ) %]
+ [%- ELSIF state == 'planned' %]
+ [%- update_state = loc( 'marked as planned' ) %]
+ [%- ELSIF state == 'in progress' %]
+ [%- update_state = loc( 'marked as in progress' ) %]
+ [%- ELSIF state == 'action scheduled' %]
+ [%- update_state = loc( 'marked as action scheduled' ) %]
+ [%- ELSIF state == 'closed' %]
+ [%- update_state = loc( 'marked as closed' ) %]
+ [%- ELSIF state == 'fixed' %]
+ [%- update_state = loc( 'marked as fixed' ) %]
+ [%- ELSIF state == 'unable to fix' %]
+ [%- update_state = loc( 'marked as unable to fix' ) %]
+ [%- ELSIF state == 'not responsible' %]
+ [%- update_state = loc( "marked as not the council's responsibility" ) %]
+ [%- ELSIF state == 'duplicate' %]
+ [%- update_state = loc( 'marked as a duplicate report' ) %]
+ [%- ELSIF state == 'internal referral' %]
+ [%- update_state = loc( 'marked as an internal referral' ) %]
+ [%- END %]
+ [%- END %]
+ [%- ", " _ update_state IF update_state != global.last_state %]
+ [%- global.last_state = update_state %]
+[% END %]
diff --git a/templates/web/default/reports/_list-entry.html b/templates/web/default/reports/_list-entry.html
index 14863c4a1..445a5315f 100755
--- a/templates/web/default/reports/_list-entry.html
+++ b/templates/web/default/reports/_list-entry.html
@@ -1,6 +1,6 @@
<li><a href="[% c.uri_for('/report/' _ problem.id) %]">[% problem.title | html %]</a>
- [% IF problem.councils > 1 %] <small>[% loc('(sent to both)') %]</small> [% END %]
+ [% IF problem.bodies_str_ids.size > 1 %] <small>[% loc('(sent to both)') %]</small> [% END %]
[% IF c.cobrand.moniker != 'emptyhomes' %]
- [% IF problem.councils == 0 %] <small>[% loc('(not sent to council)') %]</small> [% END %]
+ [% IF problem.bodies_str_ids.size == 0 %] <small>[% loc('(not sent to council)') %]</small> [% END %]
[% END %]
</li>
diff --git a/templates/web/default/reports/body.html b/templates/web/default/reports/body.html
index 134c9d4fc..2b19e5735 100755
--- a/templates/web/default/reports/body.html
+++ b/templates/web/default/reports/body.html
@@ -1,20 +1,16 @@
-[% IF c.cobrand.moniker == 'fixmystreet' OR c.cobrand.moniker == 'bromley';
- style = 'new';
- ELSE;
- style = 'old';
- END;
-%]
[% IF ward %]
- [% name = "$ward.name, $council.name"
+ [% name = "$ward.name, $body.name"
thing = loc('ward')
%]
[% ELSE %]
- [% name = council.name
+ [% name = body.name
thing = loc('council')
%]
[% END %]
-[% IF c.cobrand.is_council %]
+[% IF c.cobrand.moniker == 'oxfordshire' %]
+ [% ward_text = 'View reports by division' %]
+[% ELSIF c.cobrand.is_council %]
[% ward_text = loc( 'View reports by ward' ) %]
[% ELSE %]
[% ward_text = loc( 'Wards of this council' ) %]
@@ -24,7 +20,6 @@
PROCESS "maps/${map.type}.html";
INCLUDE 'header.html',
title = tprintf(loc('%s - Summary reports'), name)
- context = 'reports'
bodyclass = 'mappage'
rss = [ tprintf(loc('Problems within %s, FixMyStreet'), name), rss_url ]
%]
@@ -38,13 +33,17 @@
<h1 id="reports_heading">
[% IF ward %]
- [% ward.name %]<span>, </span><a href="[% council_url %]">[% council.name %]</a>
+ [% ward.name %]<span>, </span><a href="[% body_url %]">[% body.name %]</a>
[% ELSE %]
- [% council.name %]
+ [% body.name %]
[% END %]
</h1>
-[% IF council.generation_high == 10 AND c.cobrand.country == 'GB' %]
+[% 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') %]
Its area is now covered by <a href="/reports/Cornwall">Cornwall Council</a>.
@@ -89,7 +88,7 @@
<section class="full-width">
[% INCLUDE column
- problems = problems.${council.id}
+ problems = problems.${body.id}
%]
</section>
diff --git a/templates/web/default/reports/index.html b/templates/web/default/reports/index.html
index 76c2afcd2..e4b4c3033 100755
--- a/templates/web/default/reports/index.html
+++ b/templates/web/default/reports/index.html
@@ -22,17 +22,17 @@
</thead>
<tbody>
-[% FOREACH area IN areas_info_sorted %]
+[% FOREACH body IN bodies %]
<tr align="center"
-[%- IF area.generation_high == 10 %] class="gone"
+[%- IF NOT body.areas.size %] class="gone"
[%- ELSIF ! (loop.count % 2) %] class="a"
[%- END %]>
-<td class="title"><a href="[% area.url %]">[% area.name %]</a></td>
-<td class="data">[% open.${area.id}.new or 0 %]</td>
-<td class="data">[% open.${area.id}.older or 0 %]</td>
-<td class="data">[% open.${area.id}.unknown or 0 %]</td>
-<td class="data">[% fixed.${area.id}.new or 0 %]</td>
-<td class="data">[% fixed.${area.id}.old or 0 %]</td>
+<td class="title"><a href="[% body.url(c) %]">[% body.name %]</a></td>
+<td class="data">[% open.${body.id}.new or 0 %]</td>
+<td class="data">[% open.${body.id}.older or 0 %]</td>
+<td class="data">[% open.${body.id}.unknown or 0 %]</td>
+<td class="data">[% fixed.${body.id}.new or 0 %]</td>
+<td class="data">[% fixed.${body.id}.old or 0 %]</td>
</tr>
[% TRY %][% PROCESS "reports/_extras.html" %][% CATCH file %][% END %]
[% END %]
diff --git a/templates/web/default/static/about.html b/templates/web/default/static/about-en-gb.html
index 9c319f051..9c319f051 100644
--- a/templates/web/default/static/about.html
+++ b/templates/web/default/static/about-en-gb.html
diff --git a/templates/web/default/tokens/confirm_problem.html b/templates/web/default/tokens/confirm_problem.html
index b6d82968f..723d515e1 100644
--- a/templates/web/default/tokens/confirm_problem.html
+++ b/templates/web/default/tokens/confirm_problem.html
@@ -13,13 +13,12 @@ You can <a href="[% c.cobrand.base_url_for_report( problem ) %][% problem.url %]
[% ELSE %]
[%
loc('You have successfully confirmed your problem');
-
- IF problem.council;
+ IF problem.bodies_str;
loc(' and <strong>we will now send it to the council</strong>');
- END;
-
+ END; %].
+[%
tprintf(
- loc( '. You can <a href="%s%s">view the problem on this site</a>.' ),
+ loc( 'You can <a href="%s%s">view the problem on this site</a>.' ),
c.cobrand.base_url_for_report( problem ),
problem.url
);
diff --git a/templates/web/emptyhomes/around/display_location.html b/templates/web/emptyhomes/around/display_location.html
deleted file mode 100755
index 888c8717e..000000000
--- a/templates/web/emptyhomes/around/display_location.html
+++ /dev/null
@@ -1,56 +0,0 @@
-[%
-
- url_skip = c.uri_for(
- '/report/new',
- {
- pc => pc
- latitude => short_latitude,
- longitude => short_longitude,
- skipped => 1,
- }
- );
-
- PROCESS "maps/${map.type}.html";
-
- INCLUDE 'header.html',
- title => loc('Viewing a location')
- robots => 'noindex,nofollow';
-%]
-
-<form action="[% c.uri_for('/report/new') %]" method="post" name="mapForm" id="mapForm" enctype="multipart/form-data">
-[% IF c.req.params.map_override %]
-<input type="hidden" name="map_override" value="[% c.req.params.map_override | html %]">
-[% END %]
-<input type="hidden" name="pc" value="[% pc | html %]">
-
-<input type="hidden" name="latitude" id="fixmystreet.latitude" value="[% short_latitude | html %]">
-<input type="hidden" name="longitude" id="fixmystreet.longitude" value="[% short_longitude | html %]">
-
-[% map_html %]
-
-</div>
-<div id="side">
-
-<p id="text_map" class="banner">
- [% loc( 'To <strong>report a problem</strong>, simply click on the map at the correct location.' ) %]
- [%
- tprintf(
- loc("<small>If you cannot see the map, <a href='%s' rel='nofollow'>skip this step</a>.</small>"),
- url_skip
- )
- %]
- <span id="text_map_arrow"></span>
-</p>
-
-</div>
-
-<div style="display:none" id="side-form">
-[% INCLUDE "report/new/fill_in_details_form.html"
- js = 1,
- report.used_map = 1
-%]
-</div>
-
-</form>
-
-[% INCLUDE 'footer.html' %]
diff --git a/templates/web/emptyhomes/around/extra_text.html b/templates/web/emptyhomes/around/extra_text.html
new file mode 100644
index 000000000..a69aa8fbf
--- /dev/null
+++ b/templates/web/emptyhomes/around/extra_text.html
@@ -0,0 +1,9 @@
+[%
+# Need to ignore any county council
+FOR coun IN all_areas.values;
+ SET council = coun IF coun.type != 'CTY';
+END;
+%]
+<a href="/local/[% c.cobrand.short_name(council) | lower %]/">
+ Find out local news and stats for [% council.name %]
+</a>
diff --git a/templates/web/emptyhomes/faq/faq-cy.html b/templates/web/emptyhomes/faq/faq-cy.html
index c462b9719..2945d24a9 100644
--- a/templates/web/emptyhomes/faq/faq-cy.html
+++ b/templates/web/emptyhomes/faq/faq-cy.html
@@ -9,8 +9,9 @@
<dd>Rhowch god post neu gyfeiriad yn y blwch ar y dudalen hafan ac fe gyflwynir map o’r ardal honno i chi. Cliciwch ar y man lle mae’r eiddo gwag, llenwch y manylion, llwythwch ffotograff i fyny os oes un gennych a phwyswch anfon. A dyna’r cyfan.</dd>
<dt>A yw’r gwasanaeth ar gael am ddim?</dt>
<dd>Ydy. Talwyd am gostau datblygu a chynnal y safle hwn gan yr Asiantaeth Tai Gwag a Shelter Cymru drwy haelioni eu cyllidwyr. Mae'r Asiantaeth Tai Gwag a Shelter Cymru yn elusennau cofrestredig, felly os ydych yn credu yn ein nodau a hoffech gyfrannu, mae croeso i chi wneud hynny.
-<a href="https://secure.thebiggive.org.uk/donate/donate.php?charity_id=6651">Asiantaeth Tai Gwag</a>
-/ <a href="http://cymraeg.sheltercymru.org.uk/Help/donating.aspx?ParentID=7&year=0&type=1&subcat=32&pageid=93">Shelter Cymru</a>.</dd>
+<a href="https://secure.thebiggive.org.uk/donate/donate.php?charity_id=6651">Asiantaeth Tai Gwag</a>,
+<a href="http://cymraeg.sheltercymru.org.uk/Help/donating.aspx?ParentID=7&year=0&type=1&subcat=32&pageid=93">Shelter Cymru</a>,
+<a href="http://scotland.shelter.org.uk/donate">Shelter Scotland</a>.</dd>
<dt>Ydych chi’n cael gwared ar gynnwys gwirion neu anghyfreithlon?</dt>
<dd>Rydym yn cadw’r hawl i ddileu unrhyw adroddiadau neu ddiweddariadau yr ydym yn eu hystyried yn amhriodol.</dd>
diff --git a/templates/web/emptyhomes/faq/faq-en-gb.html b/templates/web/emptyhomes/faq/faq-en-gb.html
index e010ddae0..e6fbc25ea 100755
--- a/templates/web/emptyhomes/faq/faq-en-gb.html
+++ b/templates/web/emptyhomes/faq/faq-en-gb.html
@@ -14,8 +14,9 @@ it. </dd>
<dt>Is it free?</dt>
<dd>Yes. The costs of developing and running this site are shared
between the Empty Homes Agency, Shelter Cymru and Shlter Scotland through the generosity of their funders. We are all registered charities, so if you believe in their aims and would like to make a contribution, please do:
-<a href="https://secure.thebiggive.org.uk/donate/donate.php?charity_id=6651">Empty Homes</a>
-or <a href="http://www.sheltercymru.org.uk/Help/donating.aspx?ParentID=7&year=0&type=1&subcat=32&pageid=93">Shelter Cymru</a>.</dd>
+<a href="https://secure.thebiggive.org.uk/donate/donate.php?charity_id=6651">Empty Homes</a>,
+<a href="http://www.sheltercymru.org.uk/Help/donating.aspx?ParentID=7&year=0&type=1&subcat=32&pageid=93">Shelter Cymru</a>,
+<a href="http://scotland.shelter.org.uk/donate">Shelter Scotland</a>.</dd>
<dt>Do you remove silly or illegal content?</dt>
<dd>We reserve the right to remove any reports or updates
which we consider to be inappropriate.</dd>
diff --git a/templates/web/emptyhomes/front/stats.html b/templates/web/emptyhomes/front/stats.html
index cbb26fee1..0dc03336f 100644
--- a/templates/web/emptyhomes/front/stats.html
+++ b/templates/web/emptyhomes/front/stats.html
@@ -1,27 +1,8 @@
-[%
- USE Comma;
- # Note - if we want to i18n the commas we should try
- # 'Template::Plugin::Number::Format'
-%]
-
-[%
- stats = c.cobrand.front_stats_data();
-
- new_text =
- stats.recency == '1 week'
- ? nget(
- "<big>%s</big> report in past week",
- "<big>%s</big> reports in past week",
- stats.new
- )
- : nget(
- "<big>%s</big> report recently",
- "<big>%s</big> reports recently",
- stats.new
- );
-
-%]
+[% USE Comma %]
+[% stats = c.cobrand.front_stats_data %]
<div id="front_stats">
- <div>[% tprintf( new_text, stats.new ) | comma %]</div>
+ <div>[% tprintf( loc("<big>%s</big> reports"), stats ) | comma %]</div>
+ <div><a href="/local/">[% loc('Find latest local and national news') %]</a></div>
+ <div id="eha-app-link"><a href="https://itunes.apple.com/gb/app/empty-homes-spotter/id482550587?mt=8">Get the Empty Homes Spotter App for iPhone</a></div>
</div>
diff --git a/templates/web/emptyhomes/header.html b/templates/web/emptyhomes/header.html
index 96ad1040c..fea973468 100644
--- a/templates/web/emptyhomes/header.html
+++ b/templates/web/emptyhomes/header.html
@@ -5,26 +5,31 @@
<!--[if gt IE 8]><!--><html lang="[% lang_code %]"><!--<![endif]-->
<head>
- <link rel="stylesheet" type="text/css" href="[% version('/css/core.css') %]">
- <link rel="stylesheet" type="text/css" href="[% version('/cobrands/emptyhomes/css.css') %]">
+[% SET start = c.config.ADMIN_BASE_URL IF admin %]
+
+ <link rel="stylesheet" type="text/css" href="[% start %][% version('/css/core.css') %]">
+ <link rel="stylesheet" type="text/css" href="[% start %][% version('/cobrands/emptyhomes/css/css.css') %]">
[% INCLUDE 'common_header_tags.html', site_title = loc('Report Empty Homes') %]
</head>
<body>
<div id="header">
- <a href="http://www.emptyhomes.com/"><img id="eha-logo" border="0" src="/i/eha-logo.jpeg" alt="Empty Homes Agency" width="91" height="71" align="left"></a>
+ <a href="http://www.emptyhomes.com/"><img id="eha-logo" border="0" src="/cobrands/emptyhomes/eha-logo.jpeg" alt="Empty Homes Agency" width="91" height="71" align="left"></a>
<div>
<small><em>in conjunction with</em></small>
<br>
- <a href="http://www.sheltercymru.org.uk/"><img border="0" src="/i/Sheltercymru47s.png" alt="Shelter Cymru" width="80" height="33" align="bottom"></a>
- <a href="http://scotland.shelter.org.uk/housing_issues/more_homes/empty_homes"><img border="0" src="/i/SEHPlogo-bwS.png" alt="Scottish Empty Homes Partnership" width="131" height="40" align="bottom"></a>
+ <a href="http://www.sheltercymru.org.uk/"><img border="0" src="/cobrands/emptyhomes/Sheltercymru47s.png" alt="Shelter Cymru" width="80" height="33" align="bottom"></a>
+ <a href="http://scotland.shelter.org.uk/housing_issues/more_homes/empty_homes"><img border="0" src="/cobrands/emptyhomes/SEHPlogo-bwS.png" alt="Scottish Empty Homes Partnership" width="131" height="40" align="bottom"></a>
+ <a href="http://www.channel4.com/"><img src="/cobrands/emptyhomes/c4logo.png" border="0" alt="Channel 4" align="bottom" width="30" height="40"></a>
+ <a href="http://www.tigeraspect.co.uk/"><img src="/cobrands/emptyhomes/tiger-aspect.png" border="0" alt="Tiger Aspect" align="bottom" width="113" height="30"></a>
</div>
</div>
<div id="navigation">
<ul>
<li><a href="/">[% loc("Report a problem") %]</a></li>
+ <li><a href="/reports">[% loc("All reports") %]</a></li>
<li><a href="/faq">[% loc("Help") %]</a></li>
<li><a href="/about">[% loc('About us') %]</a></li>
[% IF lang_code == 'en-gb' %]
diff --git a/templates/web/emptyhomes/index.html b/templates/web/emptyhomes/index.html
index be6a14b95..b8b0ce78a 100644
--- a/templates/web/emptyhomes/index.html
+++ b/templates/web/emptyhomes/index.html
@@ -1,68 +1,57 @@
-[% INCLUDE 'header.html', title => '' %]
+[% INCLUDE 'header.html', title = '' %]
-[% IF c.req.uri.host == 'reportemptyhomes.com' or c.req.uri.host == 'emptyhomes.matthew.fixmystreet.com' %]
+<div class="grid-50">
+ <h1 class="bl">
+ <small>[% loc('Report, view, or discuss local problems') %]</small>
+ </h1>
-<h2>Channel 4: The Great British Property Scandal</h2>
+ [% IF error %]
+ <p class="error">[% error %]</p>
+ [% END %]
-<div class="video"><object id="flashObj" width="480" height="270" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0"><param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9?isVid=1&isUI=1" /><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="@videoPlayer=1293919404001&playerID=1242807532001&playerKey=AQ~~,AAABIWs5YNk~,K8Yb_Dc0PlMA8gCUiCBbnEcXR1bU7HRm&domain=embed&dynamicStreaming=true" /><param name="base" value="http://admin.brightcove.com" /><param name="seamlesstabbing" value="false" /><param name="allowFullScreen" value="true" /><param name="swLiveConnect" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://c.brightcove.com/services/viewer/federated_f9?isVid=1&isUI=1" bgcolor="#FFFFFF" flashVars="@videoPlayer=1293919404001&playerID=1242807532001&playerKey=AQ~~,AAABIWs5YNk~,K8Yb_Dc0PlMA8gCUiCBbnEcXR1bU7HRm&domain=embed&dynamicStreaming=true" base="http://admin.brightcove.com" name="flashObj" width="480" height="270" seamlesstabbing="false" type="application/x-shockwave-flash" allowFullScreen="true" allowScriptAccess="always" swLiveConnect="true" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></object></div>
+ [% PROCESS 'around/postcode_form.html' %]
-<p>
-Empty Homes were offical advisors to the recent empty homes TV series <strong>The Great British Property Scandal</strong>!
-</p>
+ <div class="grid-50">
+ [% INCLUDE 'front/stats.html' %]
+ </div>
-<p>
-The series highlighted the nearly two million British families who don’t have adequate housing, and the million-odd homes lying empty across the UK.
-</p>
-
-<p>
-The TV series launched a campaign for action and while this is running, our <a href="[% uri => '/' %]">www.reportemptyhomes.com</a> website has been merged with the campaign's reporting system so that all reports are gathered together and sent on to the local councils. Please use these links to report empty properties which you know of:
-</p>
-
-<ul class="channel4">
-
-<li><a href="http://www.channel4.com/programmes/the-great-british-property-scandal/articles/report-an-empty">Report an empty property</a></li>
-<li><a href="http://cy.reportemptyhomes.com/">Rhoi gwybod am eiddo gwag</a></li>
-
-<li><a href="http://itunes.apple.com/gb/app/empty-homes-spotter/id482550587?mt=8"><img src="/i/appstore.png" hspace="5" alt="" align="right">Download the iPhone app</a> from the App Store.</li>
-
-</ul>
-
-[% ELSE %]
-
-[% IF error %]
- <p class="error">[% error %]</p>
-[% END %]
-
-<p id="expl">
- <strong>[% loc('Report empty properties') %]</strong>
-</p>
-
-[%
- question = loc("Enter a nearby GB postcode, or street name and area");
+[%
+ recent_photos = c.cobrand.recent_photos('front', 2);
+ probs = c.cobrand.recent();
%]
+[% IF probs.size %]
+ <div class="grid-50">
+ <h2 class="bl"><small>[% loc('Recently reported problems') %]</small></h2>
+ <ul id="nearby_lists">
+ [% FOREACH p IN probs %]
+ <li>
+ <a href="/report/[% p.id %]">[% p.title | html %]</a>
+ <small>[% prettify_dt( p.confirmed, 1 ) %]</small>
+ </li>
+ [% END %]
+ </ul>
+ </div>
+[% END %]
-<form action="[% c.uri_for('/around') %]" method="get" name="postcodeForm" id="postcodeForm">
- <label for="pc">[% question %]:</label>
- <span><input type="text" name="pc" value="" id="pc" size="10" maxlength="200">
- <input type="submit" value="[% loc('Go') %]" id="submit">
- </span>
-</form>
-
-<div id="front_intro">
+</div>
- <h2>[% loc('How to report a problem') %]</h2>
-
- <ol>
- <li>[% question %]</li>
- <li>[% loc('Locate the problem on a map of the area') %]</li>
- <li>[% loc('Enter details of the problem') %]</li>
- <li>[% loc('We send it to the council on your behalf') %]</li>
- </ol>
-
- [% INCLUDE "front/stats.html" %]
+<div class="grid-50">
+ <div id="eha_steps">
+ [% INCLUDE 'index-steps.html',
+ question = c.cobrand.enter_postcode_text %]
+ </div>
+
+ [% IF recent_photos.size %]
+ <p id="front_photos">
+ [% FOREACH p IN recent_photos;
+ photo = p.get_photo_params;
+ %]
+ <a href="/report/[% p.id %]"><img border="0" height="100"
+ src="[% photo.url_tn %]" alt="[% p.title | html %]" title="[% p.title | html %]"></a>
+ [% END %]
+ </p>
+ [% END %]
</div>
-[% END %]
-
[% INCLUDE 'footer.html' %]
diff --git a/templates/web/emptyhomes/report/banner.html b/templates/web/emptyhomes/report/banner.html
new file mode 100644
index 000000000..d473a777e
--- /dev/null
+++ b/templates/web/emptyhomes/report/banner.html
@@ -0,0 +1,6 @@
+[% IF problem.is_fixed %]
+<p class="banner" id="fixed">
+ [% loc('This problem has been fixed') %].
+</p>
+[% END %]
+
diff --git a/templates/web/emptyhomes/report/display.html b/templates/web/emptyhomes/report/display.html
deleted file mode 100644
index 545a4ca44..000000000
--- a/templates/web/emptyhomes/report/display.html
+++ /dev/null
@@ -1,32 +0,0 @@
-[%
- problem_title = loc('Viewing a problem');
- INCLUDE 'header.html'
- title = problem_title
- robots = 'noindex, nofollow'
-%]
-
-<div id="side">
-
-[% IF problem.is_fixed %]
-<p class="banner" id="fixed">
- [% loc('This problem has been fixed') %].
-</p>
-[% END %]
-
-<h1>Empty property report</h1>
-
-<p><em>[% problem.meta_line(c) | html %]
-[% IF problem.council %]
- [% IF problem.whensent %]
- <small class="council_sent_info"><br>[% problem.duration_string(c) %]</small>
- [% END %]
-[% ELSE %]
-<br><small>[% loc('Not reported to council') %]</small>
-[% END %]
-
-</em></p>
-
-</div>
-
-[% INCLUDE 'footer.html' %]
-
diff --git a/templates/web/emptyhomes/report/new/councils_text_all.html b/templates/web/emptyhomes/report/new/councils_text_all.html
index 8bdad1c1f..a2eae5efb 100644
--- a/templates/web/emptyhomes/report/new/councils_text_all.html
+++ b/templates/web/emptyhomes/report/new/councils_text_all.html
@@ -1,8 +1,8 @@
<p>
[%
tprintf(
- loc('All the information you provide here will be sent to <strong>%s</strong>. On the site, we will show the subject and details of the problem, plus your name if you give us permission.'),
- all_council_names.join( '</strong>' _ loc(' or ') _ '<strong>' )
+ loc('All the information you provide here will be sent to <strong>%s</strong>.')
+ all_body_names.join( '</strong>' _ loc(' or ') _ '<strong>' )
);
%]
</p>
diff --git a/templates/web/emptyhomes/report/new/councils_text_none.html b/templates/web/emptyhomes/report/new/councils_text_none.html
index dbe9cd510..088e6fa1d 100644
--- a/templates/web/emptyhomes/report/new/councils_text_none.html
+++ b/templates/web/emptyhomes/report/new/councils_text_none.html
@@ -3,7 +3,7 @@
nget(
"We do not yet have details for the council that covers this location.",
"We do not yet have details for the councils that cover this location.",
- all_councils.size
+ all_areas.size
);
%]
[% loc("If you submit a report here it will be left on the site, but not reported to the council &ndash; please still leave your report, so that we can show to the council the activity in their area."); %]
diff --git a/templates/web/emptyhomes/report/new/fill_in_details_form.html b/templates/web/emptyhomes/report/new/fill_in_details_form.html
new file mode 100644
index 000000000..b269267e1
--- /dev/null
+++ b/templates/web/emptyhomes/report/new/fill_in_details_form.html
@@ -0,0 +1,157 @@
+<h1>[% loc('Reporting a problem') %]</h1>
+
+[% IF report.used_map %]
+ [% IF partial_token %]
+ <p id="unknown">[% loc('Please note your report has <strong>not yet been sent</strong>. Choose a category and add further information below, then submit.') %]</p>
+ [% END %]
+<p>[% loc('You have located the problem at the point marked with a green pin on the map. If this is not the correct location, simply click on the map again. ') %]</p>
+[% END %]
+
+[% IF js %]
+ <p id="councils_text">[%
+ tprintf(
+ loc('All the information you provide here will be sent to <strong>%s</strong>.'),
+ loc('the local council')
+ );
+ %]
+ </p>
+[% ELSE %]
+ [% PROCESS 'report/new/councils_text.html' %]
+[% END %]
+
+<p>
+[% IF report.used_map %]
+ [% INCLUDE 'report/new/fill_in_details_text.html' %]
+[% ELSE %]
+ [% loc('Please fill in the form below with details of the problem, and describe the location as precisely as possible in the details box.') %]
+[% END %]
+</p>
+
+[% INCLUDE 'errors.html' %]
+
+<div id="problem_form">
+
+[% INCLUDE 'report/new/form_heading.html' %]
+
+<div class="fieldset">
+
+[% IF field_errors.bodies %]
+ <div class='form-error'>[% field_errors.bodies %]</div>
+[% END %]
+
+<div id="form_sign_in_yes">
+
+<h3>[% loc('Public information (shown on site)') %]</h3>
+
+<p>[% loc('Please do not give address or personal information in this section.') %]</p>
+
+[% IF js %]
+ <div class="form-field" id="form_category_row">
+ <label for="form_category">[% loc('Category:') %]</label>
+ <select name="category" id="form_category" required><option>[% loc('Loading...') %]</option></select>
+ </div>
+[% ELSE %]
+ [% IF category_options.size %]
+ [% IF field_errors.category %]
+ <div class='form-error'>[% field_errors.category %]</div>
+ [% END %]
+
+ <div class="form-field">
+ [% PROCESS "report/new/category.html" %]
+ </div>
+ [% END %]
+[% END %]
+
+[% IF field_errors.title %]
+ <div class='form-error'>[% field_errors.title %]</div>
+[% END %]
+
+<div class="form-field">
+ <label for="form_title">[% loc('Subject:') %]</label>
+ <input type="text" value="[% report.title | html %]" name="title" id="form_title" size="25" required>
+</div>
+
+[% IF field_errors.detail %]
+ <div class='form-error'>[% field_errors.detail %]</div>
+[% END %]
+
+<div class="form-field">
+ <label for="form_detail">[% loc('Details:') %]</label>
+ <textarea name="detail" id="form_detail" rows="7" cols="26" required>[% report.detail | html %]</textarea>
+</div>
+
+[% IF c.cobrand.allow_photo_upload %]
+ [% IF field_errors.photo %]
+ <div class='form-error'>[% field_errors.photo %]</div>
+ [% END %]
+
+ <div class='form-field'>
+ [% IF upload_fileid || report.photo %]
+ <p>[% loc('You have already attached a photo to this report, attaching another one will replace it.') %]</p>
+ [% IF upload_fileid %]
+ <input type="hidden" name="upload_fileid" value="[% upload_fileid %]" />
+ [% END %]
+ [% IF report.photo %]
+ <img align="right" src="/photo/[% report.id %].jpeg" hspace="5">
+ [% END %]
+ [% END %]
+
+ <label for="form_photo">[% loc('Photo:') %]</label>
+ <input type="file" name="photo" id="form_photo" style="width:20em">
+ </div>
+[% END %]
+
+</div>
+
+<div id="form_sign_in_no">
+
+<h3>[% loc('Private information (not shown on site)') %]</h3>
+
+[% IF field_errors.address %]
+ <div class='form-error'>[% field_errors.address %]</div>
+[% END %]
+
+<div class="form-field">
+ <label for="form_address">[% loc('Property address:') %]</label>
+ <textarea name="address" id="form_address" rows="7" cols="26">[% report.extra.address | html %]</textarea>
+</div>
+
+ [% IF field_errors.name %]
+ <div class='form-error'>[% field_errors.name %]</div>
+ [% END %]
+
+ <div class="form-field">
+ <label for="form_name">[% loc('Your name:') %]</label>
+ <input type="text" required value="[% report.name | html %]" name="name" id="form_name" size="25">
+ </div>
+
+ [% IF field_errors.email %]
+ <div class='form-error'>[% field_errors.email %]</div>
+ [% END %]
+
+ <div class="form-field">
+ <label for="form_email">[% loc('Your email:') %]</label>
+ <input type="email" value="[% report.user.email | html %]" name="email" id="form_email" size="25" required>
+ </div>
+
+ <div class="form-field">
+ <label for="form_phone">[% loc('Phone:') %]</label>
+ <input type="text" value="[% report.user.phone | html %]" name="phone" id="form_phone" size="15">
+ <small>[% loc('(optional)') %]</small>
+ </div>
+
+ <p>
+ <input type="submit" value="[% loc('Submit') %]">
+ </p>
+
+</div>
+
+[% IF partial_token %]
+ <input type="hidden" name="partial" value="[% partial_token.token %]">
+[% END %]
+
+<input type="hidden" name="submit_problem" value="1">
+
+</div>
+</div>
+
diff --git a/templates/web/emptyhomes/reports/_ward-list.html b/templates/web/emptyhomes/reports/_ward-list.html
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/templates/web/emptyhomes/reports/_ward-list.html
diff --git a/templates/web/emptyhomes/reports/body.html b/templates/web/emptyhomes/reports/body.html
deleted file mode 100755
index 8ba9bf1ca..000000000
--- a/templates/web/emptyhomes/reports/body.html
+++ /dev/null
@@ -1,73 +0,0 @@
-[% IF ward %]
- [% name = "$ward.name, $council.name"
- thing = loc('ward')
- %]
-[% ELSE %]
- [% name = council.name
- thing = loc('council')
- %]
-[% END %]
-
-[%
- INCLUDE 'header.html',
- title = tprintf(loc('%s - Summary reports'), name)
- context = 'reports'
-%]
-
-[% IF children.size %]
-<h2 style="clear:right">[% loc('Wards of this council') %]</h2>
-<p>[% loc('Follow a ward link to view only reports within that ward.') %]</p>
-<ul>
-[% FOR child IN children.values.sort('name') %]
-<li><a href="[% child.url %]">[% child.name %]</a></li>
-[% END %]
-</ul>
-[% END %]
-
-<div id="side">
-
-[% IF council.generation_high == 10 AND c.cobrand.country == 'GB' %]
-<p id="unknown">This council no longer exists.
-[% IF council.name.match('Penwith|Kerrier|Carrick|Restormel|Caradon|North Cornwall') %]
-Its area is now covered by <a href="/reports/Cornwall">Cornwall Council</a>.
-[% ELSIF council.name.match('Durham|Easington|Sedgefield|Teesdale|Wear Valley|Derwentside|Chester le Street') %]
-Its area is now covered by <a href="/reports/Durham+County">Durham County Council</a>.
-[% ELSIF council.name.match('Blyth Valley|Wansbeck|Castle Morpeth|Tynedale|Alnwick|Berwick upon Tweed') %]
-Its area is now covered by <a href="/reports/Northumberland">Northumberland County Council</a>.
-[% ELSIF council.name.match('North Shropshire|Oswestry|Shrewsbury and Atcham|South Shropshire|Bridgnorth') %]
-Its area is now covered by <a href="/reports/Shropshire">Shropshire Council</a>.
-[% ELSIF council.name.match('Salisbury|West Wiltshire|Kennet|North Wiltshire') %]
-Its area is now covered by <a href="/reports/Wiltshire">Wiltshire Council</a>.
-[% ELSIF council.name.match('Ellesmere Port and Neston|Vale Royal|Chester') %]
-Its area is now covered by <a href="/reports/Cheshire+West+and+Chester">Cheshire West and Chester Council</a>.
-[% ELSIF council.name.match('Macclesfield|Congleton|Crewe and Nantwich') %]
-Its area is now covered by <a href="/reports/Cheshire+East">Cheshire East Council</a>.
-[% ELSIF council.name.match('Mid Bedfordshire|South Bedfordshire') %]
-Its area is now covered by <a href="/reports/Central+Bedfordshire">Central Bedfordshire Council</a>.
-[% ELSIF council.name.match('Cheshire') %]
-Its area is now covered by <a href="/reports/Cheshire+West+and+Chester">Cheshire West and Chester Council</a> or
-<a href="/reports/Cheshire+East">Cheshire East Council</a>.
-[% ELSIF council.name.match('Bedfordshire') %]
-Its area is now covered by <a href="/reports/Bedford">Bedford Borough Council</a> or
-<a href="/reports/Central+Bedfordshire">Central Bedfordshire Council</a>.
-[% END %]
-</p>
-[% END %]
-
-[% IF c.cobrand.all_councils_report %]
- [% tprintf( loc('This is a summary of all reports for one %s.'), thing ) %]
-[% ELSE %]
- [% tprintf( loc('This is a summary of all reports for this %s.'), thing ) %]
-[% END %]
-
-[% IF ward %]
-[% tprintf( loc('You can <a href="%s">view all reports for the council</a> or <a href="/reports">show all councils</a>.'), council_url ) %]
-[% ELSE %]
-[% loc('You can <a href="/reports">show all councils</a>.') %]
-[% END %]
-
-<h2>[% name %]</h2>
-
-</div>
-[% INCLUDE 'footer.html' %]
-
diff --git a/templates/web/emptyhomes/reports/index.html b/templates/web/emptyhomes/reports/index.html
index db506679e..8b8704134 100755
--- a/templates/web/emptyhomes/reports/index.html
+++ b/templates/web/emptyhomes/reports/index.html
@@ -1,8 +1,7 @@
[% INCLUDE 'header.html', title = loc('Summary reports') %]
<p>
-[% loc('This is a summary of all reports on this site; select a particular council to see the reports sent there.') %]
-[% loc('Greyed-out lines are councils that no longer exist.') %]
+[% loc("This is a summary of all reports on this site; select a particular council to see the empty homes news for that area.") %]
</p>
<table cellpadding="3" cellspacing="1" border="0">
@@ -10,22 +9,19 @@
<th>[% loc('Name') %]</th>
<th>[% loc('New problems') %]</th>
<th>[% loc('Older problems') %]</th>
-<th>[% loc('Recently fixed') %]</th>
-<th>[% loc('Older fixed') %]</th>
</tr>
-[% FOREACH area IN areas_info_sorted %]
+[% FOREACH body IN bodies %]
<tr align="center"
-[%- IF area.generation_high == 10 %] class="gone"
+[%- IF NOT body.areas.size %] class="gone"
[%- ELSIF loop.count % 2 %] class="a"
[%- END -%]
>
-<td align="left">[% area.name %]</td>
-<td>[% open.${area.id}.new or 0 %]</td>
-<td>[% (open.${area.id}.older or 0) + (open.${area.id}.unknown or 0) %]</td>
-<td>[% fixed.${area.id}.new or 0 %]</td>
-<td>[% fixed.${area.id}.old or 0 %]</td>
+<td align="left"><a href="/local/[% c.cobrand.short_name(body) | lower %]/">[% body.name %]</a></td>
+<td>[% open.${body.id}.new or 0 %]</td>
+<td>[% (open.${body.id}.older or 0) + (open.${body.id}.unknown or 0) + (fixed.${body.id}.new or 0) + (fixed.${body.id}.old or 0) %]</td>
</tr>
+
[% END %]
</table>
diff --git a/templates/web/emptyhomes/static/about-cy.html b/templates/web/emptyhomes/static/about-cy.html
new file mode 100644
index 000000000..dab6cefea
--- /dev/null
+++ b/templates/web/emptyhomes/static/about-cy.html
@@ -0,0 +1,44 @@
+[% INCLUDE 'header.html', title => loc('About us') %]
+
+<h1>[% loc('About us') %]</h1>
+
+<div style="float: left; width: 48%;">
+
+ <h2>Yr Asiantaeth Tai Gwag</h2>
+
+<p>Mae'r Asiantaeth Tai Gwag yn elusen ymgyrchu annibynnol. Nid ydym yn rhan
+o'r llywodraeth, ac nid oes gennym unrhyw gysylltiadau ffurfiol â chynghorau
+lleol er ein bod yn cydweithio â'r naill a'r llall. Rydym yn bodoli er mwyn
+amlygu gwastraff yr eiddo gwag ac yn gweithio gyda eraill er mwyn dyfeisio a
+hyrwyddo atebion cynaliadwy er mwyn adfer eiddo gwag yn eiddo y mae pobl yn byw
+ynddynt eto. Rydym wedi'n lleoli yn Llundain ond rydym yn gweithio ledled
+Lloegr. Rydym hefyd yn gweithio mewn partneriaeth ag elusennau eraill ledled y
+DU.</p>
+
+</div>
+
+<div style="float: right; width:48%;">
+
+ <h2>Shelter Cymru</h2>
+
+<p>Shelter Cymru yw&rsquo;r elusen yng Nghymru ar gyfer pobl a chartrefi ac
+rydym eisiau i bawb yng Nghymru gael cartref addas. Credwn fod cartref yn hawl
+sylfaenol a&rsquo;i fod yn hanfodol i iechyd a lles pobl a chymunedau. Rydym
+yn gweithio dros bobl sydd mewn angen am dai. Mae gennym swyddfeydd ar draws
+Cymru ac rydym yn atal pobl rhag colli eu cartrefi drwy gynnig cyngor
+annibynnol, cyfrinachol, am ddim. Pan fo&rsquo;r angen, rydym yn herio&rsquo;n
+adeiladol ar ran pobl er mwyn sicrhau eu bod yn cael eu cynorthwyo&rsquo;n
+gywir ac i wella ymarfer a dysgu. Mae Shelter Cymru yn credu y gall gwneud
+gwell defnydd o gartrefi gwag gyfrannu&rsquo;n sylweddol at y ddaprariaeth o
+dai fforddiadwy yng Nghymru.
+
+ <a href="http://www.sheltercymru.org.uk/shelter/advice/pdetail.asp?cat=20">
+ Gwybodaeth bellach am ein gwaith ar gartrefi gwag</a>.
+
+ </p>
+
+</div>
+
+<br clear="both">
+
+[% INCLUDE 'footer.html' %]
diff --git a/templates/web/emptyhomes/static/about-en-gb.html b/templates/web/emptyhomes/static/about-en-gb.html
new file mode 100644
index 000000000..e9eeea103
--- /dev/null
+++ b/templates/web/emptyhomes/static/about-en-gb.html
@@ -0,0 +1,62 @@
+[% INCLUDE 'header.html', title => loc('About us') %]
+
+<h1>[% loc('About us') %]</h1>
+
+<div style="float: left; width: 31%; margin-right: 4%">
+
+ <h2>The Empty Homes Agency</h2>
+
+ <p>The Empty Homes agency is an independent campaigning charity. We
+ are not part of government, and have no formal links with local councils
+ although we work in cooperation with both. We exist to highlight the waste
+ of empty property and work with others to devise and promote sustainable
+ solutions to bring empty property back into use. We are based in London but
+ work across England. We also work in partnership with other charities across
+ the UK.</p>
+
+</div>
+
+<div style="float: left; width: 31%;">
+
+ <h2>Shelter<br>Cymru</h2>
+
+ <p>Shelter Cymru is Wales&rsquo; people and homes charity and wants
+ everyone in Wales to have a decent home. We believe a home is a fundamental
+ right and essential to the health and well-being of people and communities.
+ We work for people in housing need. We have offices all over Wales and
+ prevent people from losing their homes by offering free, confidential and
+ independent advice. When necessary we constructively challenge on behalf of
+ people to ensure they are properly assisted and to improve practice and
+ learning. We believe that bringing empty homes back into use can make a
+ significant contribution to the supply of affordable homes in Wales.
+
+ <a href="http://www.sheltercymru.org.uk/shelter/advice/pdetail.asp?cat=20">
+ Further information about our work on empty homes</a>.
+
+ </p>
+
+</div>
+
+<div style="float: right; width: 31%;">
+
+ <h2>The Scottish Empty Homes Partnership</h2>
+
+<p>The Scottish Empty Homes Partnership works with Scottish Local Authorities
+and their partners to help them bring the 23,000+ long term private sector
+empty homes in Scotland back into use. In existence since June 2010, the
+Partnership is funded by Scottish Government and hosted by Shelter Scotland.
+
+<p>We provide training for empty homes officers, share best practice, link
+industry professionals and provide consultancy and advice to councils and
+others working to bring private sector empty homes back into use. We aim to
+highlight the opportunities for communities in bringing empty homes back into
+use. Based on our experience we also make recommendations for changes in both
+practice and policy on local and national levels. To find out more about the
+work we do please
+<a href="http://scotland.shelter.org.uk/housing_issues/empty_homes">visit our webpage</a>.
+
+</div>
+
+<br clear="both">
+
+[% INCLUDE 'footer.html' %]
diff --git a/templates/web/emptyhomes/static/about.html b/templates/web/emptyhomes/static/about.html
deleted file mode 100644
index 880f69b98..000000000
--- a/templates/web/emptyhomes/static/about.html
+++ /dev/null
@@ -1,43 +0,0 @@
-[% INCLUDE 'header.html', title => loc('About us') %]
-
-<h1>[% loc('About us') %]</h1>
-
-<div style="float: left; width: 48%;">
-
- <h2>[% loc('The Empty Homes Agency') %]</h2>
-
- <p>[% loc('The Empty Homes agency is an independent campaigning charity. We
- are not part of government, and have no formal links with local councils
- although we work in cooperation with both. We exist to highlight the waste
- of empty property and work with others to devise and promote sustainable
- solutions to bring empty property back into use. We are based in London but
- work across England. We also work in partnership with other charities across
- the UK.') %]</p>
-
-</div>
-
-<div style="float: right; width:48%;">
-
- <h2>[% loc('Shelter Cymru') %]</h2>
-
- <p>[% loc('Shelter Cymru is Wales&rsquo; people and homes charity and wants
- everyone in Wales to have a decent home. We believe a home is a fundamental
- right and essential to the health and well-being of people and communities.
- We work for people in housing need. We have offices all over Wales and
- prevent people from losing their homes by offering free, confidential and
- independent advice. When necessary we constructively challenge on behalf of
- people to ensure they are properly assisted and to improve practice and
- learning. We believe that bringing empty homes back into use can make a
- significant contribution to the supply of affordable homes in Wales.') %]
-
- <a href="http://www.sheltercymru.org.uk/shelter/advice/pdetail.asp?cat=20">
- [% loc('Further information about our work on empty homes.') %]
- </a>
-
- </p>
-
-</div>
-
-<br clear="both">
-
-[% INCLUDE 'footer.html' %] \ No newline at end of file
diff --git a/templates/web/emptyhomes/tokens/confirm_problem.html b/templates/web/emptyhomes/tokens/confirm_problem.html
index 7bcf8acdf..5e77ca59f 100644
--- a/templates/web/emptyhomes/tokens/confirm_problem.html
+++ b/templates/web/emptyhomes/tokens/confirm_problem.html
@@ -2,7 +2,7 @@
<h1>[% loc('Confirmation') %]</h1>
-[% IF problem.council %]
+[% IF problem.bodies_str %]
<p>[%
loc(
'Thank you for reporting an empty property on ReportEmptyHomes.com. We have emailed the lead officer for empty homes in the council responsible with details, and asked them to do whatever they can to get the empty property back into use as soon as possible.'
diff --git a/templates/web/emptyhomes/tracking_code.html b/templates/web/emptyhomes/tracking_code.html
deleted file mode 100644
index 73526d3bd..000000000
--- a/templates/web/emptyhomes/tracking_code.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<!-- Piwik -->
-<script type="text/javascript">
-var pkBaseURL = (("https:" == document.location.protocol) ? "https://piwik.mysociety.org/" : "http://piwik.mysociety.org/");
-document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
-</script><script type="text/javascript">
-try {
-var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 12);
-piwikTracker.trackPageView();
-piwikTracker.enableLinkTracking();
-} catch( err ) {}
-</script><noscript><img width=1 height=1 src="http://piwik.mysociety.org/piwik.php?idsite=12" style="border:0" alt=""></noscript>
-<!-- End Piwik Tag -->
diff --git a/templates/web/fiksgatami/nn/reports/index.html b/templates/web/fiksgatami/nn/reports/index.html
index 3cbb2bf8d..05296ba76 100755
--- a/templates/web/fiksgatami/nn/reports/index.html
+++ b/templates/web/fiksgatami/nn/reports/index.html
@@ -14,18 +14,18 @@
<th>[% loc('Older fixed') %]</th>
</tr>
-[% FOREACH area IN areas_info_sorted %]
-[% NEXT IF area.id == 301 %]
+[% FOREACH body IN bodies %]
+[% NEXT IF body.id == 301 %]
<tr align="center"
[%- IF loop.count % 2 %] class="a"
[%- END -%]
>
-<td align="left"><a href="[% area.url %]">[% area.name %]</a></td>
-<td>[% open.${area.id}.new or 0 %]</td>
-<td>[% open.${area.id}.older or 0 %]</td>
-<td>[% open.${area.id}.unknown or 0 %]</td>
-<td>[% fixed.${area.id}.new or 0 %]</td>
-<td>[% fixed.${area.id}.old or 0 %]</td>
+<td align="left"><a href="[% body.url(c) %]">[% body.name %]</a></td>
+<td>[% open.${body.id}.new or 0 %]</td>
+<td>[% open.${body.id}.older or 0 %]</td>
+<td>[% open.${body.id}.unknown or 0 %]</td>
+<td>[% fixed.${body.id}.new or 0 %]</td>
+<td>[% fixed.${body.id}.old or 0 %]</td>
</tr>
[% END %]
</table>
diff --git a/templates/web/fiksgatami/reports/index.html b/templates/web/fiksgatami/reports/index.html
index 1ba90ece3..3235b96c4 100755
--- a/templates/web/fiksgatami/reports/index.html
+++ b/templates/web/fiksgatami/reports/index.html
@@ -14,17 +14,17 @@
<th>[% loc('Older fixed') %]</th>
</tr>
-[% FOREACH area IN areas_info_sorted %]
+[% FOREACH body IN bodies %]
<tr align="center"
[%- IF loop.count % 2 %] class="a"
[%- END -%]
>
-<td align="left"><a href="[% area.url %]">[% area.name %]</a></td>
-<td>[% open.${area.id}.new or 0 %]</td>
-<td>[% open.${area.id}.older or 0 %]</td>
-<td>[% open.${area.id}.unknown or 0 %]</td>
-<td>[% fixed.${area.id}.new or 0 %]</td>
-<td>[% fixed.${area.id}.old or 0 %]</td>
+<td align="left"><a href="[% body.url(c) %]">[% body.name %]</a></td>
+<td>[% open.${body.id}.new or 0 %]</td>
+<td>[% open.${body.id}.older or 0 %]</td>
+<td>[% open.${body.id}.unknown or 0 %]</td>
+<td>[% fixed.${body.id}.new or 0 %]</td>
+<td>[% fixed.${body.id}.old or 0 %]</td>
</tr>
[% END %]
</table>
diff --git a/templates/web/fixamingata/contact/address.html b/templates/web/fixamingata/contact/address.html
new file mode 100644
index 000000000..7ee7f51af
--- /dev/null
+++ b/templates/web/fixamingata/contact/address.html
@@ -0,0 +1,9 @@
+<div class="contact-details">
+<p>FixaMinGata är en tjänst som tillhandahålls av Föreningen Sambruk, en
+förening med ca 100 medlemskommuner, med gemensamt intresse av e-tjänster.
+Du kan kontakta Föreningen Sambruk via post:</p>
+
+<p>Föreningen Sambruk<br>
+c/o Sandvikens kommun<br>
+811 80 Sandviken</p>
+</div>
diff --git a/templates/web/fixamingata/contact/blurb.html b/templates/web/fixamingata/contact/blurb.html
new file mode 100644
index 000000000..2e5054bcf
--- /dev/null
+++ b/templates/web/fixamingata/contact/blurb.html
@@ -0,0 +1,7 @@
+<p>
+Rapportera <strong>inte</strong> problem i din närmiljö genom det här formuläret. Breven går till Fixa Min Gata i stället för din kommun. Vill du rapportera ett problem i din närmiljö måste du <a href="/">gå till framsidan</a> och följa instruktionerna där.
+</p>
+
+<p>
+Vi vill gärna höra vad du tycker om FixaMinGata. Fyll i formuläret nedan och skicka in.
+</p>
diff --git a/templates/web/fixamingata/faq/faq-sv.html b/templates/web/fixamingata/faq/faq-sv.html
new file mode 100755
index 000000000..c21b3b45a
--- /dev/null
+++ b/templates/web/fixamingata/faq/faq-sv.html
@@ -0,0 +1,120 @@
+[% INCLUDE 'header.html', title => loc('Frequently Asked Questions'), bodyclass => 'twothirdswidthpage' %]
+
+<div class="sticky-sidebar">
+ <aside>
+ <ul class="plain-list">
+ <li><a href="#faq">Vanliga frågor</a></li>
+ <li><a href="#practical">Praktiska frågor</a></li>
+ <li><a href="#organisation">Organisation</a></li>
+ <li><a href="#pul">Personuppgiftsombud</a></li>
+ <li><a href="/privacy">Offentlighet och kakor</a></li>
+ </ul>
+ </aside>
+</div>
+
+<h1><a name="faq"></a>Vanliga frågor</h1>
+ <dl>
+ <dt>Vad är FixaMinGata?</dt>
+ <dd>FixaMinGata är en e-tjänst som hjälper människor se, diskutera och
+till kommunen rapportera problem i deras närmiljö på ett enkelt sätt genom att
+markera problemen på en karta. Tjänsten bygger på en förlaga från Storbritannien
+där tjänsten lanserades i Februari 2007. I Norge lanserades den 2011 och i
+Sverige 2013.
+</dd>
+ <dt>Hur kommer jag i kontakt med FixaMinGata?</dt>
+ <dd>Använd vårt <a href="/contact">kontaktformulär</a>.</dd>
+ <dt>Vilken typ av problem ska jag rapportera i FixaMinGata?</dt>
+ <dd>FixaMinGata är främst anpassad för att rapportera fysiska
+problem i din närmiljö, exempelvis sådant som är <strong>trasigt eller
+smutsigt, sådant som behöver underhållas, lagas, städas eller rensas</strong>,
+till exempel:
+
+ <ul><li>Övergivna bilar och cyklar
+ <li>Graffiti
+ <li>Netskräpning
+ <li>Gatustädning, exempelvis trasigt glas på en cykelbana
+ <li>Trasiga gatulysen
+ <li>Hål i vägar och gångbanor
+ </ul>
+ </dd>
+
+ <dt>Vad är inte FixaMinGata till för?</dt>
+ <dd>FixaMinGata är inte lämpligt för andra typer av problem än de som
+ anges ovan. Du måste kontakta din kommun eller fastighetsägare direkt för problem i stil
+ med:
+
+ <ul>
+ <li>Brådskande och akuta problem
+ <li>Oljud i din närmiljö
+ <li>Brand och rök
+ <li>Förslag på nya vägar, farthinder, etc.
+ <li>Klaga på dina grannar
+ <li>Klaga på din kommun
+ <li>Droger, djurplågeri, stöld, eller andra kriminella aktiviteter.
+ </ul>
+ </dd>
+
+ <dt>Hur använder jag e-tjänsten?</dt>
+ <dd>Efter att du angivit postnummer eller adress ser du en karta
+över närområdet. Du kan se de problem som redan har rapporterats, eller
+rapportera nya genom att klicka på kartan där problemet finns.
+</dd>
+ <dt>Hur löses problem?</dt>
+ <dd>Problem som rapporteras skickas till berörd kommun via epost
+eller direkt till deras datorsystem. Kommunen hanterar sedan problemet på
+det sättet de vanligen arbetar med problem, exempelvis genom att delegera
+det till rätt enhet inom kommunen som får i uppdrag att lösa problemet.
+</dd>
+ <dt>Är det gratis?</dt>
+ <dd>Den här e-tjänsten är gratis att använda. Tjänsten tillhandahålls
+av <a href="http://sambruk.se/">Föreningen Sambruk</a>, en förening för
+kommunal samverkan kring e-tjänster. Totalt ingår runt 100 kommuner och
+landsting i Sambruk.</dd>
+
+ <dt>Kan jag använda FixaMinGata på min mobil?</dt>
+ <dd>
+ <p>FixaMinGata ska fungera direkt på din mobiltelefon och anpassar
+storleken på skärmen automatiskt.</p>
+ </dd>
+
+ </dl>
+
+ <h2><a name="practical"></a>Praktiska frågor</h2>
+ <dl>
+ <dt>Jag arbetar på en kommun och är intresserad av att veta var ni skickar rapporter.</dt>
+ <dd>Du får gärna <a href="/contact">kontakta oss</a> så kan vi ge
+information om var rapporter går idag. Du kan också kontakta oss för att
+uppdatera de adresser vi använder.</dd>
+
+ <dt>Jag arbetar på en kommun och vill få in rapporter från FixaMinGata i vårt verksamhetssystem.</dt>
+ <dd>FixaMinGata kan skicka rapporter till ert verksamhetssystem
+via epost eller via ett automatiskt gränssnitt som kallas Open 311. De
+flesta verksamhetssystem kan anpassas till detta för en mindre kostnad.
+Du får gärna <a href="/contact">kontakta oss</a> så kan vi ge mer information
+och hjälpa dig i kommunikationen med berörda parter.</dd>
+ </dl>
+
+ <h2><a name="organisation"></a>Organisation</h2>
+ <dl>
+ <dt>Vem tillhandahåller FixaMinGata?</dt>
+
+ <dd>Den här e-tjänsten tillhandahålls
+av <a href="http://sambruk.se/">Föreningen Sambruk</a>, en förening för
+kommunal samverkan kring e-tjänster. Totalt ingår runt 100 kommuner och
+landsting i Sambruk. Tjänsten togs fram i samarbete med <a href="http://kivos.se/">KIVOS</a> och <a href="http://ffkp.se/">Föreningen fri kultur och programvara</a>.</dd>
+
+ <dt>Finns källkoden tillgänglig?</dt>
+ <dd>
+Programvaran bakom den här tjänsten är öppen programvara och tillgänglig
+under Affero GPL (AGPL). Du kan <a href="http://github.com/mysociety/fixmystreet">ladda ner</a> källkoden och hjälpa oss utveckla den. Du är också välkommen att använda den i dina egna projekt!
+</dd>
+ </dl>
+ <h2><a name="pul"></a>Personuppgiftsombud</h2>
+ <dl>
+ <dt>Vem är personuppgiftsombud för FixaMinGata?</dt>
+
+ <dd>Personuppgiftsombud är Claes-Olof Olsson som du kan kontakta via vårt <a href="/contact">kontaktformulär.</a></dd>
+ </dl>
+
+
+[% INCLUDE 'footer.html' pagefooter = 'yes' %]
diff --git a/templates/web/fixamingata/footer.html b/templates/web/fixamingata/footer.html
new file mode 100644
index 000000000..d196d1c6d
--- /dev/null
+++ b/templates/web/fixamingata/footer.html
@@ -0,0 +1,76 @@
+ [% IF pagefooter %]
+ <footer role="content-info">
+ <div class="tablewrapper bordered">
+ <div id="footer-mobileapps">
+ </div>
+ <div id="footer-help">
+
+ <ul>
+ <li>
+ <h4>Sekretess och kakor</h4>
+ <p>Vill du veta mer om det juridiska? Läs vår information <a href="/privacy">om sekretess och kakor</a></p>
+ </li>
+ <li>
+ <h4>[% loc('Are you a developer?') %]</h4>
+ <p>[% loc('Would you like to contribute to FixMyStreet? Our code is open source and <a href="http://github.com/mysociety/fixmystreet">available on GitHub</a>.') %]</p>
+ </li>
+ <li>
+ <h4>[% loc('Are you from a council?') %]</h4>
+ <p>Vill du veta mer om Fixa Min Gata eller hur det kan fungera för er kommun? <a href="/kommun">Läs mer om Fixa Min Gata för kommuner</a>.</p>
+ </li>
+ </ul>
+ </div>
+ </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="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>
+ <li><a href="javascript:UserVoice.showPopupWidget();">Lämna förslag</a></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+
+<!-- [% INCLUDE 'debug_footer.html' %] -->
+ </div> <!-- .wrapper -->
+<script type="text/javascript">
+ var uvOptions = {};
+ (function() {
+ var uv = document.createElement('script'); uv.type = 'text/javascript'; uv.async = true;
+ uv.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'widget.uservoice.com/vflswzMnwvfytYBz1rNw.js';
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(uv, s);
+ })();
+</script>
+</body>
+
+<!-- Piwik -->
+<script type="text/javascript">
+var pkBaseURL = (("https:" == document.location.protocol) ? "https://piwik.ffkp.se/" : "http://piwik.ffkp.se/");
+document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
+</script><script type="text/javascript">
+try {
+var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 12);
+piwikTracker.trackPageView();
+piwikTracker.enableLinkTracking();
+} catch( err ) {}
+</script><noscript><p><img src="http://piwik.ffkp.se/piwik.php?idsite=12" style="border:0" alt="" /></p></noscript>
+<!-- End Piwik Tracking Code -->
+<!-- Note, Piwik really should be changed so that we have one for beta and one for www -->
+
+</html>
diff --git a/templates/web/fixamingata/header_extra.html b/templates/web/fixamingata/header_extra.html
new file mode 100644
index 000000000..b3dec58a2
--- /dev/null
+++ b/templates/web/fixamingata/header_extra.html
@@ -0,0 +1 @@
+<link rel="Shortcut Icon" type="image/x-icon" href="/cobrands/fixamingata/favicon.ico">
diff --git a/templates/web/fixamingata/open311/index.html b/templates/web/fixamingata/open311/index.html
new file mode 100644
index 000000000..995069ed2
--- /dev/null
+++ b/templates/web/fixamingata/open311/index.html
@@ -0,0 +1,146 @@
+[% INCLUDE 'header.html', title => 'Open311' %]
+
+<h1>[% loc('Open311 API for the mySociety FixMyStreet server') %]</h1>
+
+[% IF error %]
+<p>[% tprintf( loc('Note: <strong>%s</strong>'), error ) %]</p>
+[% END %]
+
+<p>[% loc('At the moment only searching for and looking at reports work.') %]</p>
+<p>[% loc('This API implementation is work in progress and not yet stabilized. It will change without warnings in the future.') %]</p>
+
+<ul>
+<li><a rel="nofollow" href="http://www.open311.org/">[% loc('Open311 initiative web page') %]</a></li>
+<li><a rel="nofollow" href="http://wiki.open311.org/GeoReport_v2">[% loc('Open311 specification') %]</a></li>
+</ul>
+
+<p>[% tprintf( loc('At most %d requests are returned in each query. The returned requests are ordered by requested_datetime, so to get all requests, do several searches with rolling start_date and end_date.'), c.config.RSS_LIMIT ) %]</p>
+
+<p>[% loc('The following Open311 v2 attributes are returned for each request: service_request_id, description, lat, long, media_url, status, requested_datetime, updated_datetime, service_code and service_name.') %]</p>
+
+<p>[% loc('In addition, the following attributes that are not part of the Open311 v2 specification are returned: agency_sent_datetime, title (also returned as part of description), interface_used, comment_count, requestor_name (only present if requestor allowed the name to be shown on this site).') %]</p>
+
+<p>[% loc('The Open311 v2 attribute agency_responsible is used to list the administrations that received the problem report, which is not quite the way the attribute is defined in the Open311 v2 specification.') %]</p>
+
+<p>[% tprintf( loc('With request searches, it is also possible to search for agency_responsible to limit the requests to those sent to a single administration. The search term is the administration ID provided by <a href="%s">MaPit</a>.'), c.config.MAPIT_URL ) %]</p>
+
+<p>[% loc('Examples:') %]</p>
+
+<ul>
+
+[% jurisdiction_id = 'fixamingata.se' %]
+[% examples = [
+ {
+ url = c.cobrand.base_url _ "/open311/v2/discovery.xml?jurisdiction_id=$jurisdiction_id",
+ info = 'discovery-information',
+ },
+ {
+ url = c.cobrand.base_url _ "/open311/v2/services.xml?jurisdiction_id=$jurisdiction_id",
+ info = 'Lista alla feltyper, t ex Trasig lampa, hål i gatan osv',
+ },
+ {
+ url = c.cobrand.base_url _ "/open311/v2/services.xml?jurisdiction_id=$jurisdiction_id&lat=59&long=18",
+ info = 'Lista feltyper för WGS84 koordinater latityd 59 longityd 18',
+ },
+ {
+ url = c.cobrand.base_url _ "/open311/v2/requests/1.xml?jurisdiction_id=$jurisdiction_id",
+ info = 'Felrapport nummer 1',
+ },
+ {
+ url = c.cobrand.base_url _ "/open311/v2/requests.xml?jurisdiction_id=$jurisdiction_id&status=open&agency_responsible=37&end_date=2013-04-10",
+ info = 'Alla öppna felrapporter innan 2013-04-10 för Stockholm (kommun-id 37)',
+ },
+ {
+ url = c.cobrand.base_url _ "/open311/v2/requests.xml?jurisdiction_id=$jurisdiction_id&status=open&agency_responsible=37|38",
+ info = 'Alla öppna felrapporter för Stockholm (id 37) och Järfälla (id 38)',
+ },
+ {
+ url = c.cobrand.base_url _ "/open311/v2/requests.xml?jurisdiction_id=$jurisdiction_id&service_code=Hål i gatan",
+ info = "Alla felrapporter av typen 'Hål i gatan'",
+ },
+ {
+ url = c.cobrand.base_url _ "/open311/v2/requests.xml?jurisdiction_id=$jurisdiction_id&status=closed",
+ info = 'Alla stängda felrapporter',
+ },
+] %]
+[% FOREACH examples %]
+ <li><a href="[% url %]">[% info %]</a>
+ [% IF url.match('/requests.xml') %]
+ [ <a href="http://maps.google.com/?q=[% url.replace('.xml', '.rss') | uri %]">[% loc('GeoRSS on Google Maps') %]</a> ]
+ [% END %]
+ <br>[% url | html %]</li>
+[% END %]
+
+</ul>
+
+<h2>Searching</h2>
+
+<p>The following search parameters can be used:</p>
+
+<dl>
+
+<dt>service_request_id</dt>
+<dd>Search for numeric ID of specific request.
+ Using this is identical to asking for a individual request using
+ the /requests/number.format URL.</dd>
+<dt>service_code</dt>
+<dd>Search for the given category / service type string.</dd>
+
+<dt>status</dt>
+<dd>Search for open or closed (fixed) requests.</dd>
+
+<dt>start_date<dt>
+<dd>Only return requests with requested_datetime set after or at the
+ date and time specified. The format is YYYY-MM-DDTHH:MM:SS+TZ:TZ.</dd>
+
+<dt>end_date<dt>
+<dd>Only return requests with requested_datetime set before the date
+ and time specified. Same format as start_date.</dd>
+
+<dt>agency_responsible</dt>
+<dd>ID of government body receiving the request. Several IDs can be
+ specified with | as a separator.</dd>
+
+<dt>interface_used<dt>
+<dd>Name / identifier of interface used.</dd>
+
+<dt>has_photo<dt>
+<dd>Search for entries with or without photos. Use value 'true' to
+only get requests created with images, and 'false' to get those
+created without images.</dd>
+
+<dt>max_requests</dt>
+<dd>Max number of requests to return from the search. If it is larger
+than the site specific max_requests value specified in the discovery
+call, the value provided is ignored.</dd>
+
+<dl>
+
+<p>The search result might look like this:</p>
+
+<pre>[% "
+ <requests>
+ <request>
+ <agency_responsible>
+ <recipient>Stockholm</recipient>
+ </agency_responsible>
+ <agency_sent_datetime>2012-11-16T10:35:12,534712Z</agency_sent_datetime>
+ <description>Test: Test</description>
+ <detail>Test</detail>
+ <interface_used>Web interface</interface_used>
+ <lat>59.336044310435</lat>
+ <long>18.05058735521</long>
+ <requested_datetime>2012-11-16T10:31:30,702990Z</requested_datetime>
+ <requestor_name>Jonas Öberg</requestor_name>
+ <service_code>Trasig gatubelysning</service_code>
+ <service_name>Trasig gatubelysning</service_name>
+ <service_request_id>10</service_request_id>
+ <status>open</status>
+ <title>Test</title>
+ <updated_datetime>2012-11-16T10:35:12,534712Z</updated_datetime>
+ </request>
+ </requests>
+" | html %]</pre>
+
+[% INCLUDE 'footer.html' %]
+
diff --git a/templates/web/fixamingata/report/new/fill_in_details_form.html b/templates/web/fixamingata/report/new/fill_in_details_form.html
new file mode 100644
index 000000000..eea1da8d2
--- /dev/null
+++ b/templates/web/fixamingata/report/new/fill_in_details_form.html
@@ -0,0 +1,218 @@
+<div id="report-a-problem-main">
+ <h1>[% loc('Reporting a problem') %]</h1>
+
+ [% IF js %]
+ <p id="councils_text">
+ [%
+ tprintf(
+ loc('All the information you provide here will be sent to <strong>%s</strong>.'),
+ loc('the local council')
+ );
+ %]
+ [% loc('The subject and details of the problem will be public, plus your name if you give us permission.') %]
+ </p>
+ [% ELSE %]
+ [% PROCESS 'report/new/councils_text.html' %]
+ [% END %]
+
+ [% IF c.cobrand.moniker != 'fixmybarangay' || ( c.user && c.user.from_council ) %]
+ <div id="report-a-problem-sidebar">
+ <!--
+ The text for this section needs checking, but I can't work out which bit comes from where
+ -->
+ <div class="sidebar-tips">
+ [% IF report.used_map %]
+ [% IF partial_token %]
+ <p id="unknown">[% loc('Please note your report has <strong>not yet been sent</strong>. Choose a category and add further information below, then submit.') %]</p>
+ [% END %]
+ <p>[% loc('You have located the problem at the point marked with a green pin on the map. If this is not the correct location, simply click on the map again. ') %]</p>
+ [% END %]
+
+ <p>
+ [% IF report.used_map %]
+ [% INCLUDE 'report/new/fill_in_details_text.html' %]
+ [% ELSE %]
+ [% loc('Please fill in the form below with details of the problem, and describe the location as precisely as possible in the details box.') %]
+ [% END %]
+ </p>
+ </div>
+
+ <div class="sidebar-notes">
+ [% INCLUDE 'report/new/notes.html' %]
+ </div>
+
+ </div>
+ [% END %]
+
+ [% INCLUDE 'errors.html' %]
+ <fieldset>
+ <div id="problem_form">
+
+ [% INCLUDE 'report/new/form_heading.html' %]
+
+
+ [% IF field_errors.council %]
+ <p class='form-error'>[% field_errors.council %]</p>
+ [% END %]
+
+
+
+ <label for="form_title">[% loc('Subject') %]</label>
+ [% IF field_errors.title %]
+ <p class='form-error'>[% field_errors.title %]</p>
+ [% END %]
+ <input type="text" value="[% report.title | html %]" name="title" id="form_title" placeholder="[% loc('Provide a title') %]" required>
+
+ <label for="form_detail">[% loc('Details') %]</label>
+ [% IF field_errors.detail %]
+ <p class='form-error'>[% field_errors.detail %]</p>
+ [% END %]
+ <textarea rows="7" cols="26" name="detail" id="form_detail" placeholder="[% loc('Please fill in details of the problem.') %]" required>[% report.detail | html %]</textarea>
+
+ [% IF js %]
+ <div id="form_category_row">
+ <label for="form_category">[% loc('Category') %]</label>
+ <select name="category" id="form_category" required><option>[% loc('Loading...') %]</option></select>
+ </div>
+ [% ELSE %]
+ [% IF category_options.size %]
+ [% IF field_errors.category %]
+ <p class='form-error'>[% field_errors.category %]</p>
+ [% END %]
+
+ [% PROCESS "report/new/category.html" %]
+ [% END %]
+ [% END %]
+
+ [%- IF category_extras %]
+ [% PROCESS "report/new/category_extras.html" %]
+ [%- END %]
+
+ [% IF c.cobrand.allow_photo_upload %]
+ [% IF field_errors.photo %]
+ <p class='form-error'>[% field_errors.photo %]</p>
+ [% END %]
+
+
+ [% IF upload_fileid || report.photo %]
+ [% IF upload_fileid %]
+ <img align="right" src="/photo/[% upload_fileid %].temp.jpeg" alt="">
+ <input type="hidden" name="upload_fileid" value="[% upload_fileid %]">
+ [% END %]
+
+ <p>[% loc('You have already attached a photo to this report, attaching another one will replace it.') %]</p>
+
+ [% IF report.photo %]
+ <img align="right" src="/photo/[% report.id %].jpeg">
+ [% END %]
+ [% END %]
+
+ <label for="form_photo">[% loc('Photo') %]</label>
+ <input type="file" name="photo" id="form_photo">
+ [% END %]
+
+ [% IF c.user_exists %]
+ <div class="form-box">
+
+ [% INCLUDE 'report/new/extra_name.html' %]
+
+ <label for="form_name">[% loc('Name') %]</label>
+ [% IF field_errors.name %]
+ <p class='form-error'>[% field_errors.name %]</p>
+ [% END %]
+ <input type="text" class="validName" value="[% report.name | html %]" name="name" id="form_name" placeholder="[% loc('Your name') %]">
+
+ [%# if there is nothing in the name field then set check box as default on form %]
+ <div class="checkbox-group">
+ <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' IF !report.anonymous %]>
+ <label class="inline" for="form_may_show_name">[% loc('Show my name publicly') %]</label>
+ </div>
+
+ [% IF c.cobrand.moniker != 'fixmybarangay' || ( c.user && c.user.from_council ) %]
+ <div class="general-sidebar-notes">
+ <p>[% loc('We never show your email address or phone number.') %]</p>
+ </div>
+ [% END %]
+
+ <label for="form_phone">[% loc('Phone number (optional)') %]</label>
+ <input class="" type="text" value="[% report.user.phone | html %]" name="phone" id="form_phone" placeholder="[% loc('Your phone number') %]">
+
+ <div class="form-txt-submit-box">
+ <input class="green-btn" type="submit" id="submit_register" name="submit_register" value="[% loc('Submit') %]">
+ </div>
+ </div>
+ [% ELSE %]
+
+ <label for="form_email">[% loc('Your email') %]</label>
+ [% IF field_errors.email %]
+ <p class='form-error'>[% field_errors.email %]</p>
+ [% END %]
+ <input type="email" value="[% report.user.email | html %]" name="email" id="form_email" placeholder="[% loc('Please enter your email address') %]" required>
+
+ <div id="form_sign_in">
+ <h3>[% loc("Now to submit your report&hellip;") %]</h3>
+
+ <div id="form_sign_in_no" class="form-box">
+ <h5>Om du inte har ett lösenord fyller du i ditt namn och eventuellt telefonnummer och nytt lösenord (valfria) här. När du skickar din rapport får du epost med en länk som du måste klicka på för att bekräfta rapporten. Om du redan har ett lösenord fyller du i detta längre ner på sidan och behöver då inte bekräfta rapporten.</h5>
+
+ [% INCLUDE 'report/new/extra_name.html' %]
+
+ <label for="form_name">[% loc('Name') %]</label>
+ [% IF field_errors.name %]
+ <p class='form-error'>[% field_errors.name %]</p>
+ [% END %]
+
+ <input type="text" class="form-focus-trigger validName" value="[% report.name | html %]" name="name" id="form_name" placeholder="[% loc('Your name') %]">
+
+ [%# if there is nothing in the name field then set check box as default on form %]
+ <div class="checkbox-group">
+ <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' IF !report.anonymous %]>
+ <label class="inline" for="form_may_show_name">[% loc('Show my name publicly') %]</label>
+ </div>
+
+ <div class="general-sidebar-notes form-focus-hidden">
+ <p class="dark">[% loc('We never show your email address or phone number.') %]</p>
+ <p>[% loc('Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports.') %]</p>
+ </div>
+
+ <label for="form_phone">[% loc('Phone number (optional)') %]</label>
+ <input type="text" value="[% report.user.phone | html %]" name="phone" id="form_phone" placeholder="[% loc('Your phone number') %]">
+
+ <label for="password_register">[% loc('Password (optional)') %]</label>
+
+ <div class="form-txt-submit-box">
+ <input type="password" name="password_register" id="password_register" value="" placeholder="[% loc('Enter a password') %]">
+ <input class="green-btn" type="submit" id="submit_register" name="submit_register" value="[% loc('Submit') %]">
+ </div>
+ </div>
+ <div id="form_sign_in_yes" class="form-box">
+
+ <h5>Jag har ett lösenord sedan tidigare:</h5>
+
+ <label class="hidden-js n" for="password_sign_in">[% loc('Yes I have a password') %]</label>
+ <div class="form-txt-submit-box">
+ [% IF field_errors.password %]
+ <p class='form-error'>[% field_errors.password %]</p>
+ [% END %]
+ <input type="password" name="password_sign_in" id="password_sign_in" placeholder="[% loc('Your password') %]" value="">
+ <input class="green-btn" type="submit" id="submit_sign_in" name="submit_sign_in" value="[% loc('Submit') %]">
+ </div>
+
+ <div class="checkbox-group">
+ <input type="checkbox" id="remember_me" name="remember_me" value='1'[% ' checked' IF remember_me %]>
+ <label class="n inline" for="remember_me">[% loc('Keep me signed in on this computer') %]</label>
+ </div>
+ </div>
+
+ </div>
+
+ [% END %]
+ </div>
+ </fieldset>
+
+ [% IF partial_token %]
+ <input type="hidden" name="partial" value="[% partial_token.token %]">
+ [% END %]
+
+ <input type="hidden" name="submit_problem" value="1">
+</div>
diff --git a/templates/web/fixamingata/report/new/notes.html b/templates/web/fixamingata/report/new/notes.html
new file mode 100644
index 000000000..8f081f637
--- /dev/null
+++ b/templates/web/fixamingata/report/new/notes.html
@@ -0,0 +1,14 @@
+<p>[% loc("Please note:") %]</p>
+
+<ul class="plain-list">
+ <li>[% loc("We will only use your personal information in accordance with our <a href=\"/privacy\">privacy policy.</a>") %]</li>
+ <li>[% loc("Please be polite, concise and to the point.") %]</li>
+ <li>[% loc("Please do not be abusive&nbsp;&mdash; abusing your council devalues the service for all users.") %]</li>
+ <li>[% loc("Writing your message entirely in block capitals makes it hard to read, as does a lack of punctuation.") %]</li>
+[% IF all_councils.items.first > 0 %]
+ <li>[% id = all_councils.items.first;
+ tprintf("Kom ihåg att FixaMinGata primärt är avsett för att rapportera fysiska problem som kan åtgärdas. Om ditt problem inte lämpar sig för att rapportera via den här webbsidan kan du kontakta din kommun direkt via <a href='%s'>deras webbsida</a>.", all_body_urls.$id); %]</li>
+[% ELSE %]
+ <li>[% loc("Remember that FixMyStreet is primarily for reporting physical problems that can be fixed. If your problem is not appropriate for submission via this site remember that you can contact your council directly using their own website.") %]</li>
+[% END %]
+</ul>
diff --git a/templates/web/fixamingata/static/council.html b/templates/web/fixamingata/static/council.html
new file mode 100755
index 000000000..a3a019328
--- /dev/null
+++ b/templates/web/fixamingata/static/council.html
@@ -0,0 +1,214 @@
+[% INCLUDE 'header.html', title => 'För kommuner', bodyclass => 'twothirdswidthpage' %]
+
+<div class="sticky-sidebar">
+ <aside>
+ <ul class="plain-list">
+ <li><a href="#kommuner">Deltagande kommuner</a></li>
+ <li><a href="#nykommun">Checklista för nya kommuner</a></li>
+ <li><a href="#process">Förklaring av rapporteringsprocessen</a></li>
+ <li><a href="#kategorier">Kategorier av fel</a></li>
+ <li><a href="#integration">Integration med verksamhetssystem</a></li>
+ <li><a href="#kostnader">Kostnader</a></li>
+ <li><a href="#kontakt">Kontaktpersoner</a></li>
+ </ul>
+ </aside>
+</div>
+
+<h1>Information för kommuner</h1>
+
+<p>
+Fixa Min Gata är en e-tjänst som drivs av
+<a href="http://sambruk.se/">Föreningen Sambruk</a> och är framtagen i
+samarbete med <a href="http://kivos.se/">KIVOS</a> och
+<a href="http://ffkp.se/">FFKP</a>. Invånare i medverkande kommuner kan
+använda e-tjänsten för att rapportera fel i sin lokala gatumiljö. I och
+med att tjänsten drivs som en molntjänst kan den snabbt driftsättas för
+en ny kommun. Fel som rapporteras skickas via e-post till berörd enhet
+på kommunen. För kommuner som har befintliga verksamhetssystem för
+rapportering och uppföljning finns flera möjligheter att integrera
+systemen med varandra.
+</p>
+
+<h2><a name="kommuner"></a>Kommuner</h2>
+<p>
+Fixa Min Gata stödjer samtliga Svenska kommuner, men hur det ser ut hos
+varje kommun ser lite olika ut. En del kommuner väljer att inte ta emot
+rapporter via Fixa Min Gata utan hänvisar istället medborgarna till sin
+egen webbsida. I dessa fall ger Fixa Min Gata en länk till kommunens
+webbsida om en medborgare försöker rapportera ett fel.
+</p>
+<p>
+Andra kommuner har valt att vara med i styrgruppen för Fixa Min Gata
+vilket ger dem möjlighet att påverka utvecklingen och den framtida
+inriktningen, exempelvis för att bättre kunna integrera Fixa Min Gata
+i sina egna verksamhetssystem.
+</p>
+<p>
+De kommuner som var med i den ursprungliga
+referensgruppen var Alingsås, Falköping, Tidaholm, Vårgårda, Aneby,
+Eksjö, Gislaved, Gnosjö, Habo, Mullsjö, Nässjö, Sävsjö, Tranås,
+Vaggeryd, Vetlanda och Värnamo.
+</p>
+
+<h2><a name="nykommun"></a>Ny kommun</h2>
+<p>
+ Här följer en checklista som kommuner kan använda sig av när de tittar på
+ hur Fixa Min Gata kan användas i kommunen. Eventuella frågor eller hjälp
+ i processen kan fås från Fixa Min Gatas <a href="#kontakt">kontaktpersoner</a>.
+</p>
+<p>
+ <ul>
+ <li>Fixa Min Gata använder
+ <a href="http://www.openstreetmap.org/">Open Street Map</a> för sin
+ kartinformation. Verifiera så att de kartor som finns för kommunen
+ är relevanta. Om det finns fel i kartinformationen går detta att
+ korrigera, av kommunen själva eller i samarbete med invånarna.</li>
+ <li>Fixa Min Gata låter medborgarna välja position genom att ange postnummer.
+ Dessvärre finns det ingen publik lista över postnummer och dess
+ geografiska koordinater som är tillgänglig att använda för vem som helst
+ och en del koordinater kan därför vara fel. Verifiera genom att välja
+ ett par postnummer i kommunen och mata in dem i Fixa Min Gata för att
+ se hur det ser ut i er kommun. Om något postnummer inte centrerar på
+ rätt geografisk koordinat går detta att ändra. Kontakta Fixa Min Gatas
+ <a href="#kontakt">kontaktpersoner</a> för mer information om detta.</li>
+ <li>För kommuner som har ett eget verksamhetssystem finns möjlighet att
+ integrera Fixa Min Gata med detta. Kontakta leverantören av
+ verksamhetssystemet för att fråga om integration med Fixa Min Gata.
+ Det finns flera sätt på vilket detta kan ske och du kan få mer
+ information från Fixa Min Gatas <a href="#kontakt">kontaktpersoner</a>.
+ </li>
+ <li>Titta på den lista med <a href="#kategorier">kategorier</a> som finns
+ i Fixa Min Gata och fundera över om några förändringar behövs i den
+ listan. Det finns möjigheter att förändra den listan per kommun.</li>
+ <li>Om felrapporter från invånarna ska skickas via epost till kommunen,
+ bestäm vilka adresser som information ska skickas till och om det är
+ samma adress för samtliga kategorier eller om olika kategorier ska
+ skickas till olika adresser.</li>
+ <li>Prata med och informera de anställda som kommer att ta emot och arbeta
+ med felrapporter. Säkerställ att alla är på det klara med hur kommunen
+ arbetar med inkomna felrapporer och vikten av att fel också rapporteras
+ som åtgärdat när arbetet är klart.</li>
+ <li>Bjud in de anställda att vara med i den första testen av systemet så att
+ de som vill kan testa att rapportera fel och följa upp ärenden. Det kan
+ ske under ett par veckor innan systemet driftsätts helt för att ge
+ personalen möjlighet att bli komfortabel med systemet först.</li>
+ <li>Prata med kommunens informationsansvarige eller motsvarande för att
+ länka till Fixa Min Gata från kommunens hemsida. Logotyper för FixaMinGata
+ kan hämtas från <a
+ href="http://www.sambruk.se/projektnatverk/fixamingata/projektdokument.4.7b34e07a139d0d50e8b23cb.html?folder=19.7b34e07a139d0d50e8b23b1&sv.url=12.7b34e07a139d0d50e8b23d1">här</a>.</li>
+ <li>Följ upp löpande under den första tiden med de personer som från
+ kommunen tar emot felrapporter. Du kan också ta hjälp av den
+ <a href="/reports">statistik</a> som publiceras i Fixa Min Gata för
+ att se vilka problem som rapporteras samt om de markeras som åtgärdade.
+ </li>
+ </ul>
+</p>
+
+
+<h2><a name="process"></a>Rapporteringprocess</h2>
+<p>
+
+Fixa Min Gata erbjuder ett enkelt sätt för en invånare att rapportera ett fel
+vilket sedan kommuniceras till kommunen. En visuell beskrivning av processen
+finns tillgänglig på <a
+href="http://www.sambruk.se/projektnatverk/fixamingata/projektdokument.4.7b34e07a139d0d50e8b23cb.html?folder=19.7b34e07a139d0d50e8b23b1&sv.url=12.7b34e07a139d0d50e8b23d1">
+Sambruks projeksida för FixaMinGata</a>.
+
+Nedanstående flöde beskriver hur FixaMinGata fungerar utifrån invånarens
+perspektiv.
+
+</p>
+<p>
+ <ol>
+ <li>En invånare söker på postnummer eller gatuadress och får upp en karta
+ över närområdet.</li>
+ <li>Invånaren kan se befintliga felrapporter inom området.</li>
+ <li>Om invånaren klickar på en position på kartan ges möjlighet att rapportera ett nytt fel.</li>
+ <li>Invånaren väljer en av de kategorier som finns, skriver in information om felet och bifogar eventuellt ett foto.</li>
+ <li>Om invånaren inte tidigare har rapporterat ett fel eller om invånaren valt att inte skapa ett konto i tjänsten skickas epost till invånaren med en länk som måste klickas på för att bekräfta felet.</li>
+ <li>När felet är bekräftat skickas detta till kommunen.</li>
+ <li>Andra invånare kan se felet och bifoga uppdateringar eller kommentarer.</li>
+ <li>När kommunen har åtgärdat felet eller engagerat sig på annat sätt kan kommunen lämna uppdateringar eller markera felet som åtgärdat.</li>
+ <li>Invånaren får information via epost om att felet är åtgärdat.</li>
+ </ol>
+</p>
+
+<h2><a name="kategorier"></a>Kategorier</h2>
+<p>
+Följande kategorier finns för alla kommuner i Fixa Min Gata.
+En del kommuner väljer andra kategorier beroende på vad som passar dem
+bäst.
+</p>
+<p>
+ <ul>
+ <li>Buss- och tågstopp
+ <li>Cykelställ
+ <li>Cykelväg
+ <li>Dumpat skräp
+ <li>Gatlyse
+ <li>Gator och vägar
+ <li>Grafitti/taggning
+ <li>Hål i väg
+ <li>Igensatt brunn
+ <li>Nedskräpning
+ <li>Offentlig toalett
+ <li>Oljespill
+ <li>Parkering
+ <li>Park/landskap
+ <li>Snöplogning
+ <li>Trafiklyse
+ <li>Trafikskylt
+ <li>Träd
+ <li>Trottoar/gångbana
+ <li>Vattenförsörjning
+ <li>Vägstädning
+ <li>Vägnamnsskylt
+ <li>Övergiven bil
+ <li>Övrigt
+ </ul>
+
+<h2><a name="integration"></a>Integration med verksamhetssystem</h2>
+<p>
+ För <strong>kommuner som har ett eget verksamhetssystem</strong>
+ finns det flera olika sätt att integrera detta med Fixa Min Gata.
+ Det enklaste, vilket stödjs av i princip samtliga verksamhetssystem, är
+ att Fixa Min Gata skickar epost till verksamhetssystemet när någon
+ lämnar en rapport vilket sedan görs till ett ärende i systemet. När
+ rapporten är åtgärdad rapporterar kommunen detta i sitt verksamhetssystem
+ <strong>samt</strong> i Fixa Min Gata.
+</p>
+<p>
+ Det finns också möjlighet att på olika sätt integrera systemen så att en
+ rapport som avslutas i verksamhetssystemet också markeras som åtgärdad
+ i Fixa Min Gata. Beroende på verksamhetssystem kan en viss kostnad utgå
+ för detta från leverantören. Ta kontakt med din leverantör av
+ verksamhetssystem för att höra dig för.
+</p>
+<p>
+ Vi har också tagit fram en sida med
+ <a href="https://wiki.ffkp.se/index.php?title=Open311_och_annan_integration_mot_FixaMinGata">teknisk information om integration av Fixa Min Gata</a> som
+ kan vara lämplig att titta på för mer information.
+</p>
+
+<h2><a name="kostnader"></a>Kostnader för medverkan</h2>
+<p>
+ Kommuner som är med i styrgruppen för Fixa Min Gata betalar en kostnad
+ per invånare, vilket täcker kostnaden för drift och utveckling. För mer
+ information
+ om kostnader och deltagande, kontakta våra <a href="#kontakt">kontaktpersoner</a>.
+
+<h2><a name="kontakt"></a>Kontaktpersoner</h2>
+<p>
+ Du kan alltid kontakta oss genom <a
+ href="mailto:info@fixamingata.se">info@fixamingata.se</a>. Vi ser då
+ till att din fråga behandlas och kommer till rätt person.
+</p>
+<p>
+ För frågor kring medverkan, villkor och kostnader, kontakta Claes-Olof Olsson, Sambruk via e-postadressen <a href="mailto:claes-olof.olsson@sambruk.se">claes-olof.olsson@sambruk.se</a> eller ledningen för styrgruppen på <a href="mailto:info@fixamingata.se">info@fixamingata.se</a>.
+</p>
+<p>
+ För tekniska frågor om plattformen, integration med verksamhetssystem eller
+ uppdaterade kontakt uppgifter, använda vårt <a href="/contact">kontaktformulär</a>.
+</p>
+
+[% INCLUDE 'footer.html' pagefooter = 'yes' %]
diff --git a/templates/web/fixamingata/static/fun.html b/templates/web/fixamingata/static/fun.html
new file mode 100644
index 000000000..ff8f30e49
--- /dev/null
+++ b/templates/web/fixamingata/static/fun.html
@@ -0,0 +1,35 @@
+[% INCLUDE header.html
+ title = 'Udda och imponerande rapporter'
+%]
+
+<h1>Udda och imponerande rapporter</h1>
+
+<p>
+Här är några av de bästa och mest udda rapporter som har synts på
+den engelska FixMyStreet. Meddela oss om du hittar några liknande
+rapporter på svenska FixaMingata!</p>
+
+<ul class="plain-list">
+
+ <li><img src='http://www.fixmystreet.com/photo/9468.jpeg' align='right' hspace=8>
+ <h2>Dumped Piano (right)</h2>
+ <p>The reporter of this problem summed it up with their report,
+ which consisted solely of the one character &ldquo;!&rdquo;. &mdash;
+ <a href='http://www.fixmystreet.com/report/9468'>Problem report</a>
+
+ <li><h2>Mad Seagull</h2>
+ <p>&ldquo;A seagull is attacking various cars within this road. He starts at around 05:45 every morning and continues until around 19:30. This causes a lot of noisy banging and wakes up children.&rdquo; &mdash;
+ <a href='http://www.fixmystreet.com/report/2722'>Problem report</a>
+
+ <li><img src='http://www.fixmystreet.com/photo/6553.jpeg' align='right' hspace=8>
+ <h2>Boxes full of cheese dumped (right)</h2>
+ <p>&ldquo;About a dozen boxes full of mozzarella cheese have been dumped opposite 3 rufford street. if it warms up we could have nasty road topping problem (seriously there is a lot of cheese)&rdquo; &mdash;
+ <a href='http://www.fixmystreet.com/report/6553'>Problem report</a>
+
+ <li><h2>Dangerous Nivea Billboard</h2>
+ <p>&ldquo;The Nivea 'Oxygen is a wonderful thing' billboard here has a device on it releasing bubbles and foam. This is blowing into the road which is both distracting and dangerous to drivers. A large ball of foam hit my windscreen unexpectedly and nearly caused me to have an accident&rdquo; &mdash;
+ <a href='http://www.fixmystreet.com/report/7552'>Problem report</a>
+</ul>
+
+[% INCLUDE footer.html %]
+
diff --git a/templates/web/fixamingata/static/privacy.html b/templates/web/fixamingata/static/privacy.html
new file mode 100755
index 000000000..2a3c88071
--- /dev/null
+++ b/templates/web/fixamingata/static/privacy.html
@@ -0,0 +1,82 @@
+[% INCLUDE 'header.html', title => loc('Vanliga Frågor'), bodyclass => 'twothirdswidthpage' %]
+
+<div class="sticky-sidebar">
+ <aside>
+ <ul class="plain-list">
+ <li><a href="/faq#faq">Vanliga frågor</a></li>
+ <li><a href="/faq#practical">Praktiska frågor</a></li>
+ <li><a href="/faq#organisation">Organisation</a></li>
+ <li><a href="/faq#pul">Personuppgiftsombud</a></li>
+ <li><strong>Offentlighet och kakor</strong></li>
+ </ul>
+ </aside>
+</div>
+
+<h1>Offentlighet, kakor och tredjepartstjänster</h1>
+
+<p><strong>Vår användning av din information och vad du behöver veta.</strong></p>
+
+<p>Sammanfattning: Vi bryr oss om våra användares privatliv. Du kan läsa
+mer detaljer om det här nedan. Vi gör vårt bästa för säkra den privata
+information som vi har i vår databas. Precis som många andra webbplatser
+använder vi ibland kakor för att hjälpa oss göra
+tjänsten bättre. De här verktygen är väldigt vanliga och används av många
+andra tjänster, men det finns nackdelar med dem och vi är måna om att du
+förstår hur din data används.</p>
+
+<h2>Offentlighet och personuppgifter</h2>
+ <dl>
+ <dt>Hur hanteras mina personuppgifter?</dt>
+ <dd>Dina personuppgifter hanteras med största försiktighet. Din
+epostadress och namn lagras i vår databas. Du har rätt att begära att få
+ta del av de uppgifter som finns registrerade om dig genom att kontakta vårt
+personuppgiftsombud.</dd>
+
+ <dt>Hur hanteras min information hos Fixa Min Gata?</dt>
+ <dd>Vi kommer att visa en rapports ärende och information publikt. Vi kommer dock inte att visa din e-postadress eller ditt namn, om du inte ger oss tillsånt att visa ditt namn.</dd>
+
+ <dt>Hur hanteras min information hos kommunen?</dt>
+ <dd>All information du anger kring ett problem kommer att skickas till berörd kommun. Alla handlingar som inkommer till en kommun betraktas som offentliga och därmed kommer också alla rapporter från Fixa Min Gata att vara offentliga via den berörda kommunen.</dd>
+ </dl>
+
+<h2>Sekretess</h2>
+
+ <dl>
+ <dt>Vem ser min epostadress?</dt>
+ <dd>Om du rapporterar ett problem kommer vi att skicka din
+information och information om problemet till den kommun som är ansvarig
+för det område där du lokaliserat problemet. Förutom kommunen, som
+givetvis får se din epostadress, kommer personer som är ansvariga för
+tjänsten FixaMinGata att kunna se din epostadress. Ingen kommer att
+använda din epostadress för något annat än för att kunna administrera
+FixaMinGata. Vi kommer inte ge ut eller sälja din epostadress till någon
+annan om vi inte blir tvingade till det av domstol. Ditt namn, som du
+anger det, kommer inte att publiceras om du inte vill att vi publicerar
+det. Observera dock att om du skriver ditt namn någon annan stans,
+exempelvis i informationen om en rapport, kommer det att bli publik
+synligt.</dd>
+
+ <dt>Kommer ni att skicka spam?</dt>
+ <dd>Aldrig. Vi kommer att skicka brev till dig om någon lämnar
+en uppdatering på ett problem som du rapporterat, och skicka dig ett
+frågeformulär fyra veckor efter din rapportering där vi frågar om
+uppdatering. Vi kommer endast att skicka brev i relation till ditt problem.</dd>
+
+ </dl>
+
+<h2>Kakor</h2>
+
+<p>För att göra våra tjänster lättare och mer användbara skickar vi
+ibland små datafiler till din dator eller mobiltelefon. Dessa kallas för
+kakor och de flesta webbplatser använder dem. Vi använder den här
+informationen för att, till exempel, komma ihåg när du har loggat in
+så att du slipper göra det på varje sida, och för att mäta hur
+tjänsten används så att vi kan förbättra den. Nedan ger vi en lista med
+de kakor som den här tjänsten använder.
+
+<table cellpadding=5>
+<tr align="left"><th scope="col">Namn</th><th scope="col">Innehåll</th><th scope="col">Giltighet</th></tr>
+<tr><td>fixmystreet_app_session</td><td nowrap>A slumpvis sträng</td><td>Raderas när webbläsaren stängs, eller efter fyra veckor om &ldquo;Håll mig inloggad&rdquo; är valt</td></tr>
+</table>
+
+[% INCLUDE 'footer.html' pagefooter = 'yes' %]
diff --git a/templates/web/fixmindelo/faq/faq-pt-cv.html b/templates/web/fixmindelo/faq/faq-pt-cv.html
new file mode 100644
index 000000000..cae17ebc6
--- /dev/null
+++ b/templates/web/fixmindelo/faq/faq-pt-cv.html
@@ -0,0 +1,121 @@
+[% 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="#practical">Practical Questions</a></li>
+ <li><a href="#organisation">Organisation Questions</a></li>
+ <li><a href="/privacy">Privacy and cookies</a></li>
+ <li><a href="/contact">Contact FixMyStreet</a></li>
+ </ul>
+ </aside>
+</div>
+
+<h1><a name="faq"></a>Frequently Asked Questions</h1>
+ <dl>
+ <dt>O que é FixMyStreet?</dt>
+ <dd>FixMyStreet é um site para ajudar a informar as pessoas, ver ou discutir os problemas locais que encontrarem no seu conselho local, e basta localizá-los o mapa. Foi lançado no início de fevereiro de 2007.</dd>
+
+ <dt>Como faço para entrar em contato com FixMyStreet?</dt>
+ <dd>Aqui está a nossa <a href="/contact">página de contato</a>.</dd>
+
+ <dt>Que tipo de problemas que devo relatar com FixMyStreet?</dt>
+ <dd>FixMyStreet é principalmente para relatar coisas que <strong>estao quebradas, sujas, danificadas ou despejadas, abandonadas e precisam de conserto, limpeza e correção</strong>, tais como:
+
+
+ <ul><li>Veículos abandonados
+ <li>Animais na rua
+ <li>Grafites nas paredes
+ <li>Lixo ou entulho
+ <li>Iluminaçao deficiente, armaduras e candeeiros, quebrados, armarios partidos
+ <li>Postes quebrados, arvores caidas,
+ <li>Buracos na rua, nos passeios, jardins, calçadas
+ <li>Predios abandonados, pardeeiros,
+ <li>Lajes, varandas, em perigo
+ <li>Vazamentos de agua, tubagens
+ <li>Cabos, fios de electricidade em mau estado, caixas e portinholas,
+ <li>Placas de sinalizaçao, letreiros luminosos, de ruas, espaços, em mau estado
+ <li>Sinais de transito
+ </ul>
+ </dd>
+
+ <dt>O que não é para ser relatado no FixMyStreet?</dt>
+ <dd>
+ FixMyStreet não é uma forma de entrar em contato com o seu conselho para todas as questões - por favor use FixMyStreet apenas para problemas como o acima. Nós muitas vezes recebemos relatórios de problemas que não dizem respeito ao Fix – directamente - e de rotas através de serviços de limpeza ou rodovias e assim usando FixMyStreet para outros assuntos pode resultar em um atraso do seu relatório de chegar ao departamento certo. Você vai precisar de contactar o seu município diretamente para problemas, tais como:
+
+ <ul>
+ <li>Comportamento Anti-social
+ <li>Qualquer problema de urgência ou emergência
+ <li>A poluição sonora ou cachorros latindo
+ <li>Fogos e fumaça / poluição cheiro
+ <li>Falta recipientes para lixo ou reciclagem de caixas ou perdeu coleções de lixo
+ <li>Propostas para redutores de velocidade / CCTV / travessias de pedestres / novos layouts de estrada / etc
+ <li>Queixar-se sobre os seus vizinhos
+ <li>Reclamando do conselho
+ <li>Joy passeios, consumo de drogas, crueldade animal, ou outra atividade criminosa
+ </ul>
+ <p>Conselhos costumam ter linhas diretas para esses tipos de questões. Contacte-os directamente atravez do seu site.</p>
+ </dd>
+
+ <dt>Como faço para usar o site?</dt>
+ <dd>Depois de inserir um código postal ou localização, zona ou lugar, é apresentado com um mapa dessa área, zona ou local.Você pode ver os problemas já relatados nesta área, ou denunciar, relatar os problemas do seu propio local, simplesmente clicando no mapa no local do problema.</dd>
+
+ <dt>Como são resolvidos os problemas?</dt>
+ <dd>Eles são relatados ao conselho, do departamento responsavel, por e-mail. O conselho pode, então, resolver o problema da maneira que normalmente faria. O Conselho encaminhara para cada sector ou departamento os relatorios dos problemas a que dizem respeito. Alternativamente, você pode discutir o problema no site com os outros, e, em seguida, juntos pressionar o conselho para corrigi-lo, saber a posiçao e andamento do relatorio ou sendo possivel tentar corrigir os problemas em entre ajuda com pessoas da comunidade.O Conselho dará tambem sempre uma resposta quanto possivel sobre o problema.</dd>
+
+ <dt>O FixMyStreet é grátis?</dt>
+ <dd>O site é livre para usar, sim. FixMyStreet é gerido por uma instituição sem fins lucrativos, mas se aceitam doaçoes livres. É só enviar.
+ </dd>
+
+ <dt>Posso usar FixMyStreet no meu celular?</dt>
+ <dd>
+ <p> O site FixMyStreet deve funcionar em seu telefone móvel, adaptando-se ao tamanho da tela automaticamente. Estamos a preparar uma versão atualizada de um aplicativo para utilizaçao futura.
+ </dd>
+
+ </dl>
+
+ <h2><a name="practical"></a>Perguntas práticas</h2>
+ <dl>
+ <dt>Eu sou de um conselho, onde enviar os relatorios?</dt>
+ <dd>
+ Você pode deixar um relatório de ensaio no site ou entrar em contato conosco para saber o andamento e posiçao dos seus relatorios e seu acompanhamento. Contacte-nos também para atualizar o endereço ou endereços que usamos.
+ </dt>
+ <dt>Eu sou de um conselho, podemos ter FixMyStreet em nosso site?</dt>
+ <dd>
+ Sim, você pode! Nós oferecemos marca, as versões do FixMyStreet para sites locais do conselho hospedado. <a href="http://www.mysociety.org/for-councils/fixmystreet/">Detalhes completos</a>.
+ </dd>
+ <dt>Voces removem conteudo ilegal, descriminatorio ou sem conteudo de fix?</dt>
+ <dd>FixMyStreet não é responsável pelo conteúdo e precisão do material enviado por seus usuários. Reservamo-nos o direito de editar ou remover quaisquer problemas ou atualizações que consideramos ser impróprio ao ser informado por um usuário do site.</dd>
+
+ <dt>Por que não posso diminuir o zoom mais no mapa de referência?</dt>
+ <dd>Queremos manter FixMyStreet focado localmente, de modo restringir a capacidade de mover-se radicalmente entre as áreas. O mapa em seus relatórios permitirá que você veja todos os relatórios que você fez, onde quer que estejam. Se você é do conselho, em seguida, a versão do relatório enviado por email do problema também contém a estrada, zona, lugar, mais próximo e código postal para o pino no mapa.
+ </dd>
+
+ <dt>Porque não é divulgado muito o FixMyStreet, apesar da sua importancia?</dt>
+ <dd>Como uma pequena instituição sem fins lucrativos nóssimplesmente não temos um orçamento de publicidade, e por isso temos sempre confiado na palavra da boca para divulgar o site. Contamos consigo para essa divulgaçao.
+ </dd>
+ </dl>
+
+ <h2><a name="organisation"></a>Organização Perguntas</h2>
+ <dl>
+ <dt>Quem construiu FixMyStreet?</dt>
+ <dd>
+ Este site foi construído por <a href="http://www.mysociety.org/">mySociety</a>, em conjunto com a <a href="http://www.youngfoundation.org.uk/">Young Foundation</a>. mySociety é o projeto de uma instituição sem fins lucrativos que cresceu fora da comunidade de voluntários que construíram sites como <a href="http://www.theyworkforyou.com/">TheyWorkForYou.com</a>. A principal missão da mySociety é a construção de projetos de Internet que dão às pessoas benefícios simples e tangíveis nos aspectos cívicos e comunidade onde vivem ou residem. Nosso primeiro projeto foi <a href="http://www.writetothem.com/">WriteToThem</a>, onde você pode escrever a qualquer um de seus representantes eleitos, de forma gratuita. A fundaçao é chamado UK Citizens Online Democracy e é o número 1076346 caridade. mySociety pode ser contactado pelo e-mail <a href="mailto:hello&#64;mysociety.org">hello@mysociety.org</a>, ou por correio para mySociety, 483 Green Lanes, London, N13&nbsp;4BS, Reino Unido.
+ </dd>
+ <dt>Você precisa de alguma ajuda com o projeto?</dt>
+ <dd>Sim, nós podemos usar a ajuda em todos os tipos de formas, técnicas ou não-técnicas. Por favor, consulte a nossa <a
+href="http://www.mysociety.org/helpus/">página se envolver</a>.
+ </dd>
+
+ <dt>Eu gostaria de um site como este para o meu próprio local / onde está o "código fonte" a este site?</dt>
+ <dd>
+O software por trás deste site é de código aberto e disponível para você, principalmente sob a licença GNU Affero software GPL. Você pode <a href="http://github.com/mysociety/fixmystreet">baixar o código fonte</a> e nos ajudar a desenvolvê-lo. Você está convidado a usá-lo em seus próprios projetos, mas você também deve disponibilizar o código-fonte para tais projetos. <a href="http://www.fiksgatami.no/">Fiksgatami</a> é um exemplo de página de código a ser utilizado numa versão norueguesa deste local.
+ </dd>
+
+ <dt>As pessoas constroem coisas, e não organizações. Quem realmente construiu?</dt>
+ <dd>
+ Matthew Somerville e Francis Irving escreveu o site, Chris Lightfoot escreveu o tileserver e mapa de corte, Richard Papa criou nossos pins, Deborah Kerr mantém as coisas up-to-date e faz suporte ao usuário, Ayesha Garrett projetou nossos cartazes e Tom Steinberg construi tudo. Agradecemos também a Yahoo! para as bibliotecas JavaScript BSD-licenciados, toda a comunidade de software livre (este projeto foi trazido a você por Perl, PostgreSQL, eo número 161,290) e <a href="http://www.bytemark.co.uk/">Bytemark</a> (que gentilmente acolheu todos os nossos servidores). Deixe-nos saber se nos esquecemeos de mencionar alguem. Nos contacte para o efeito.
+ </dd>
+ </dl>
+[% INCLUDE 'footer.html' pagefooter = 'yes' %]
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/fixmybarangay/alert/index.html b/templates/web/fixmybarangay/alert/index.html
index d9bb74ee9..8e2ce7518 100644
--- a/templates/web/fixmybarangay/alert/index.html
+++ b/templates/web/fixmybarangay/alert/index.html
@@ -30,9 +30,11 @@ FixMyBarangay has a RSS feeds and email alerts for local problems.
<div class="sticky-sidebar" id="alert_recent">
<aside>
<h2>[% loc('Some photos of recent reports') %]</h2>
- [% FOREACH p IN photos %]
+ [% FOREACH p IN photos;
+ photo = p.get_photo_params
+ %]
<a href="/report/[% p.id %]"><img border="0" height="100"
- src="/photo/[% p.id %].tn.jpeg" alt="[% p.title | html %]" title="[% p.title | html %]"></a>
+ src="[% photo.url_tn %]" alt="[% p.title | html %]" title="[% p.title | html %]"></a>
[% END %]
</aside>
</div>
diff --git a/templates/web/fixmybarangay/around/tabbed_lists.html b/templates/web/fixmybarangay/around/tabbed_lists.html
index c9f1c2a38..342b03f0e 100644
--- a/templates/web/fixmybarangay/around/tabbed_lists.html
+++ b/templates/web/fixmybarangay/around/tabbed_lists.html
@@ -1,4 +1,4 @@
-[% allow_creation = !c.cobrand.only_authed_can_create || (c.user && c.user.from_council);
+[% allow_creation = !c.cobrand.only_authed_can_create || (c.user && c.user.from_body);
IF allow_creation %]
<menu id="problems-nav" class="tab-nav">
diff --git a/templates/web/fixmybarangay/faq/faq-en-gb.html b/templates/web/fixmybarangay/faq/faq-en-gb.html
index 320a7528e..6e8893143 100644
--- a/templates/web/fixmybarangay/faq/faq-en-gb.html
+++ b/templates/web/fixmybarangay/faq/faq-en-gb.html
@@ -54,7 +54,8 @@ the problem.</dd>
<dd>
You can use your email address and set a password right away, but your
account won't be enabled as a <em>staff account</em> until one of the
- system administrators has checked it. TODO: contact details.
+ system administrators has checked it. If you're not sure who to contact, try
+ <a href="mailto:[% c.config.CONTACT_EMAIL %]">[% c.config.CONTACT_EMAIL %]</a>.
</dd>
<dt>I've forgotten my password, what do I do?</dt>
<dd>
@@ -68,10 +69,32 @@ the problem.</dd>
or quit the browser (just closing the window without quitting the browser is not enough).
</dd>
<dt>Reporting</dt>
- <dd>TODO</dd>
+ <dd><p>
+ To make a new report, start by clicking on the button for either barangay <em>BSN</em> or <em>Luz</em>.
+ </p>
+ <ul>
+ <li>
+ <strong>To create a standalone report</strong> simply click on the map where the problem is.
+ </li>
+ <li>
+ <strong>To create a report from a text message</strong> log into Message Manager (see below),
+ then select the message you want to use (click on the radio button). When the message has gone
+ green, you can click on the map and the message will automatically be used to create the report.
+ You can edit the text, but that report will be associated with that incoming message.
+ </li>
+ </ul>
+ <p>
+ Once you've placed the pin, but before you press <em>Submit</em>, you can drag or reposition the pin
+ if you want to change its position.
+ </p>
+ <p>
+ Choose the category for this report &dash; obviously, this helps FixMyBarangay decide to which
+ department the report will be sent.
+ </p>
+ </dd>
<dt>How do I see the SMS messages people have sent?</dt>
- <dd>When you look at the barangay problems, click on "Problems via text"
- (or, if you're viewing a specific report, click "Show messages") to see the
+ <dd>When you look at the barangay problems, click on <em>Problems via text</em>
+ (or, if you're viewing a specific report, click <em>Show messages</em>) to see the
currently available messages. You'll need a username and password
for the Message Manager (your manager will have told you what these
are). Note that you can only see messages that have not yet been used to
@@ -82,31 +105,40 @@ the problem.</dd>
No, it's a separate account (some FMB users don't have any access to the SMS messages).
Your manager will tell you what your login for Message Manager system is, if you have one.
</dd>
- <dt>I tried to work with a message but it said "lock not granted". What's up?</dt>
+ <dt>I tried to work with a message but it said "Someone is working with that message right now!" What's up?</dt>
<dd>
- This means another staff member is working on the message. To prevent you both creating
+ This means another staff member has a "lock" on the message. To prevent you both creating
a report, or sending a reply, we use a first-come-first-serve locking mechanism.
Collisions like this are rare, but if they do happen, try again a few minutes later
because the lock may have expired by then.
</dd>
<dt>Can I delete a message?</dt>
<dd>
- Yes. Click on the red cross when you hover over it (although really you're only hiding it).
- You need an <em>administrator</em> account in the Message Manager to be able to see the
+ Yes. Click on the red cross when you hover over it (although really you're only hiding it so
+ it never gets shown within FixMyBarangay).
+ You need a manager's account in the Message Manager to be able to see any
messages that have been hidden, so hiding them is as good as deleting them.
</dd>
<dt>It looks like an incoming message is wrongly shown as a reply. Can I fix it?</dt>
<dd>
FixMyBarangay tries to recognise SMS replies, and automatically matches them to the right thread. If it
- gets this wrong, the reply may appear as a new "available" message, or a new message might be
- mistaken for a reply. You need to ask an administrator to log into Message Manager to sort this out for you.
+ gets this wrong you can click on the <em>detach</em> button. The message will then be a new "available"
+ message. If Message Manager got it wrong the other way round, and missed a reply, you can fix this too
+ but you need to log into Message Manager with a manager's account to do it.
</dd>
<dt>How do the replies get back to the original sender?</dt>
<dd>
Although you're replying from within FixMyBarangay, the replies are sent by SMS.
- There may be a delay of a few minutes between the moment you press <strong>reply</strong>
+ There may be a delay of a several minutes between the moment you press <strong>reply</strong>
and the message's arrival.
</dd>
+ <dt>How can I tell the original sender their problem has been fixed?</dt>
+ <dd>
+ Go to the report. If the report is marked "this report was submitted by SMS", you can send a reply.
+ Click on <em>Show Messages</em>. When the messages appear, click on <em>Show messages for
+ <strong>this</strong> report</em>. Hover over the message you want to send the message to, and
+ click <em>Reply</em>.
+ </dd>
<h2><a name="organisation"></a>Organisation Questions</h2>
<dl>
@@ -128,7 +160,7 @@ UK</dd>
<dd>
The software behind this site is open source, and available
to you mainly under the GNU Affero GPL software license.
-See <a href="http://code.fixmystreet.com/">code.fixmystreet.com</a> for more information about setting up
+See <a href="http://fixmystreet.org/">fixmystreet.org</a> for more information about setting up
and running sites like these.
</dd>
</dl>
diff --git a/templates/web/fixmybarangay/footer.html b/templates/web/fixmybarangay/footer.html
index 966abacd8..5bac32e98 100644
--- a/templates/web/fixmybarangay/footer.html
+++ b/templates/web/fixmybarangay/footer.html
@@ -75,6 +75,29 @@
</div>
</div>
<div style="display:none">
+ <div id="detach-form-container" class="fancybox-popup">
+ <p>
+ Are you sure you want to detach this message?
+ </p>
+ <p>
+ Message Manager probably thinks this message is a reply because
+ it came in from a number to which we'd recently sent an outward reply.
+ </p>
+ <p>
+ If you detach the message, it will appear as a new, available message (instead of being a reply).
+ </p>
+ <form action="/dummy" id="detach-form" onsubmit="event.returnValue = false; return false;" method="post" accept-charset="utf-8">
+ <div style="display:none;">
+ <input type="hidden" name="_method" value="POST">
+ </div>
+ <input type="hidden" name="msg_id" id="detach_msg_id">
+ <div class="submit">
+ <input id="detach-submit" type="submit" value="Detach Message">
+ </div>
+ </form>
+ </div>
+ </div>
+ <div style="display:none">
<div id="mm-help" style="font-size:90%;">
<h2> Accessing Message Manager from FixMyBarangay (FMB)</h2>
<h3>
@@ -91,27 +114,57 @@
If you want to see any other messages, you'll need to have a manager or admin account on Message Manager: click on the
<a href="[% c.config.MESSAGE_MANAGER_URL %]">admin</a> link to get there.
</p>
+ <p>
+ [% IF global.is_fmb_creation_page %]
+ <h3>
+ Creating a new report from a message
+ </h3>
+ <p>
+ If you want to use a message to create a problem report, you'll need to select it first. Click on the radio button. When the message
+ is selected, it will go bright green. Now when you click on the map, the report will be used to create the report.
+ </p>
+ <p>
+ To stop two people replying to a message at the same time, if anyone else has just started working on it, you'll see a message
+ warning you, and you won't be able to select the radio button. Normally, if nobody works with a message, such a lock is released
+ after about 3 minutes.
+ </p>
+ [% ELSE %]
+ <p>
+ Click <strong>show messages for this report</strong> to see
+ the message (or messages) that contributed to this report. Often this will be a single message
+ if the problem was submitted by SMS. But it will also include any messages that have been
+ added as updates, as well as any replies that were sent back by barangay staff.
+ As well as letting you review the background to the report, this also lets you reply (for example,
+ to notify the original reporter that the problem has been fixed).
+ </p>
+ <h3>
+ Adding a message as an update to this report
+ </h3>
+ <p>
+ If you want to add this message's contents as an update to this report, you'll need to select it first. Click
+ on the radio button. When the message is selected, it will go bright green. Now when you click on the
+ <strong>COPY&nbsp;TO&nbsp;UPDATE</strong> button, the message text will be added to this report's update text.
+ You can edit the text before clicking <strong>POST</strong>.
+ </p>
+ [% END %]
<h3>
- Creating a new report from a message
+ <span class="demo_detach_btn">detach</span> Detaching a message ("not a reply")
</h3>
<p>
- If you want to use a message to create a problem report, you'll need to select it first. Click on the radio button. When the message
- is selected, it will go bright green. Now when you click on the map, the report will be used to create the report.
- </p>
- <p>
- To stop two people replying to a message at the same time, if anyone else has just started working on it, you'll see a message
- warning you, and you won't be able to select the radio button. Normally, if nobody works with a message, such a lock is released
- after about 3 minutes.
+ Message Manager tries to notice when an incoming message is a reply. Sometimes it guesses wrong. To detach a
+ message from its parent &mdash; that is, to mark it as <em>not a reply</em>, hover over the message and click
+ <span class="demo_detach_btn">detach</span>.
</p>
+
<h3>
- Replying to a message
+ <span class="demo_reply_btn">reply</span> Replying to a message
</h3>
<p>
You can send an SMS back to the original sender: just hover over the message and click <span class="demo_reply_btn">reply</span>. It will usually
take a few minutes for the message to arrive.
</p>
<h3>
- Getting message info
+ <span class="demo_info_btn">i</span> Getting message info
</h3>
<p>
Hover over a message and click on its <span class="demo_info_btn">i</span> button to see when it was sent.
@@ -119,7 +172,7 @@
actual number (instead the number is scrambled, but will be the <em>same scrambled number</em> on other messages they've sent).
</p>
<h3>
- Hiding a message
+ <span class="demo_hide_btn">X</span> Hiding a message
</h3>
<p>
If a message can't be used to create a report, you can hide it by hovering over it and clicking its <span class="demo_hide_btn">X</span> button. If you're not
diff --git a/templates/web/fixmybarangay/header.html b/templates/web/fixmybarangay/header.html
index 911a72022..06a8b71a1 100644
--- a/templates/web/fixmybarangay/header.html
+++ b/templates/web/fixmybarangay/header.html
@@ -11,23 +11,25 @@
<meta name="HandHeldFriendly" content="true">
<meta name="mobileoptimized" content="0">
- <link rel="stylesheet" href="[% version('/cobrands/fixmybarangay/base.css') %]">
- <link rel="stylesheet" href="[% version('/cobrands/fixmybarangay/layout.css') %]" media="(min-width:48em)">
+[% SET start = c.config.ADMIN_BASE_URL IF admin %]
+
+ <link rel="stylesheet" href="[% start %][% version('/cobrands/fixmybarangay/base.css') %]">
+ <link rel="stylesheet" href="[% start %][% version('/cobrands/fixmybarangay/layout.css') %]" media="(min-width:48em)">
[% extra_css %]
<!--[if (lt IE 9) & (!IEMobile)]>
- <link rel="stylesheet" href="[% version('/cobrands/fixmybarangay/layout.css') %]">
+ <link rel="stylesheet" href="[% start %][% version('/cobrands/fixmybarangay/layout.css') %]">
<![endif]-->
- <script src="[% version('/js/modernizr.custom.js') %]" charset="utf-8"></script>
- <script src="[% version('/cobrands/fixmybarangay/position_map.js') %]" charset="utf-8"></script>
+ <script src="[% start %][% version('/js/modernizr.custom.js') %]" charset="utf-8"></script>
+ <script src="[% start %][% version('/cobrands/fixmybarangay/position_map.js') %]" charset="utf-8"></script>
[% INCLUDE 'common_header_tags.html', site_title = 'FixMyBarangay', js_override = '/cobrands/fixmystreet/fixmystreet.js' %]
[% extra_js %]
- [% allow_creation = !c.cobrand.only_authed_can_create || (c.user && c.user.from_council); %]
+ [% allow_creation = !c.cobrand.only_authed_can_create || (c.user && c.user.from_body); %]
[% IF allow_creation %]
- <link rel="stylesheet" href="[% version('/js/fancybox/jquery.fancybox-1.3.4.css') %]">
- <script src="[% version('/js/fancybox/jquery.fancybox-1.3.4.pack.js') %]" charset="utf-8"></script>
- <script src="[% version('/cobrands/fixmybarangay/message_manager_client.js') %]" charset="utf-8"></script>
+ <link rel="stylesheet" href="[% start %][% version('/js/fancybox/jquery.fancybox-1.3.4.css') %]">
+ <script src="[% start %][% version('/js/fancybox/jquery.fancybox-1.3.4.pack.js') %]" charset="utf-8"></script>
+ <script src="[% start %][% version('/cobrands/fixmybarangay/message_manager_client.js') %]" charset="utf-8"></script>
<script>
$(document).ready(function() {
diff --git a/templates/web/fixmybarangay/report/_message_manager.html b/templates/web/fixmybarangay/report/_message_manager.html
index 10f627a2e..3845feeef 100644
--- a/templates/web/fixmybarangay/report/_message_manager.html
+++ b/templates/web/fixmybarangay/report/_message_manager.html
@@ -1,10 +1,10 @@
-[% IF c.user && c.user.from_council %]
+[% IF c.user && c.user.from_body %]
-[% IF problem.external_source_id && problem.external_source == c.config.MESSAGE_MANAGER_URL %]
+[% IF problem.external_source_id && problem.external_source == c.config.MESSAGE_MANAGER_URL %]
<p class="mm-submitted-by-sms">
[%# OK to link to Message Manager here because (currently) we're only showing this to staff users %]
- <a href="[%= problem.external_source %]messages/view/[%= problem.external_source_id %]"
- title="view in Message Manager admin"><img
+ <a href="[%= problem.external_source %]messages/view/[%= problem.external_source_id %]"
+ title="view in Message Manager admin"><img
src="/cobrands/fixmybarangay/images/mobile-22x40.png" alt="SMS"></a>
This report was submitted via SMS.
</p>
@@ -41,7 +41,7 @@
<input name="mm-htauth-password" id="mm-htauth-password" type="password"/>
</div>
<div class="submit">
- <input id="available-submit" type="submit" value="Get available messages" class="green-btn"/>
+ <input id="available-submit" type="submit" value="Get available messages" class="green-btn"/>
</div>
</div>
</li>
@@ -49,47 +49,50 @@
<div id="mm-message-list" style="min-height:1em;"></div>
</li>
</ul>
-
+
<script type="text/javascript">
$(document).ready(function() {
var $mm_message_list = $('#mm-message-list');
var mm_url = "[% c.config.MESSAGE_MANAGER_URL %]"; // from config
+
+ [%# note that the presence of a problem id implies that this is a report view page, not a problem creation page %]
var problem_id = "[% problem.id %]";
+
var dummy_busy = false;
var fms_username = "[% c.user.email | replace('\@.*', '') %]";
var timeout_id = 0;
var can_refresh = true; // disable refresh
var refresh_period = 60000 * 3; // refresh messages every three minutes
var has_archive_message = false;
-
+
function sanitise_id(css_id) {
- return css_id.replace(/\D/g, "");
+ return css_id.replace(/\D/g, "");
}
-
+
// call this to push the auto-refresh timeout off so it's only triggered
// if there's no activity for a while
function reset_timeout() {
- if (refresh_period && can_refresh) {
+ if (mm_url && refresh_period && can_refresh) {
if (timeout_id) {
clearTimeout(timeout_id);
}
timeout_id = setTimeout(mm_refresh_messages, refresh_period);
}
}
-
+
var mm_refresh_messages = function() {
$('#mm-link-to-refresh').fadeOut();
$('#available-submit').click();
}
-
+
var mm_populate_list = function(data) {
$('#mm-status-message-container').find('p').text("Accessed Message Manager as " + data['username']);
$('input[name=mm_text]').prop('checked', false); // uncheck all
$('#mm-link-to-refresh').delay(2000).fadeIn();
reset_timeout();
}
-
+
var mm_selected_message = function(data) {
var msg_text = "";
var service_id = "";
@@ -105,71 +108,87 @@ $(document).ready(function() {
$('#form_detail').val(msg_text);
$('#external_source_id').val(service_id);
}
-
- var dummy_reply_cleanup = function(data) {
+
+ var reply_cleanup = function(data) {
reset_timeout();
$('#reply_text').val('');
dummy_busy = false;
mm_refresh_messages();
}
- var dummy_hide_cleanup = function(data) {
+ var hide_cleanup = function(data) {
reset_timeout();
$('#reason_text').val('');
dummy_busy = false;
}
- message_manager.config({url_root: mm_url, want_nice_msgs: true});
+ var detach_cleanup = function(data) {
+ reset_timeout();
+ dummy_busy = false;
+ mm_refresh_messages(); // refresh because detached message now appears in the list
+ }
+
+ var custom_tooltips;
+ if (problem_id) { // this page is viewing, not creating
+ custom_tooltips = {tt_radio: "Select before clicking 'Copy to Update' to add this message as an update"};
+ }
+ message_manager.config({
+ url_root: mm_url,
+ tooltips: custom_tooltips,
+ want_nice_msgs: true
+ });
message_manager.setup_click_listener({callback:mm_selected_message});
// problem form hidden input "external_source_id": pass the MM id into FMS, if used
var $problem_form = $('#problem_form').size()? $('#problem_form') : $('#form_update_form');
$('<input type="hidden"/>').attr({
- 'id': 'external_source_id',
- 'name': 'external_source_id',
- }).appendTo($problem_form);
+ 'id': 'external_source_id',
+ 'name': 'external_source_id',
+ }).appendTo($problem_form);
$('#available-submit').click(function(e){
e.preventDefault();
reset_timeout();
message_manager.get_available_messages({
- callback: mm_populate_list,
+ callback: mm_populate_list,
suggest_username: fms_username,
fms_id: problem_id,
anim_duration: 500
});
});
$('#available-submit').click();
-
+
$mm_message_list.on('mouseover', 'li.mm-msg', function(e){
e.stopPropagation(); // because replies are nested
$('.mm-msg-action', $mm_message_list).stop().fadeOut(200);
$(this).find('> .mm-msg-action').stop().show();
});
-
+
$('#mm-message-list').on('click', '.mm-info', function(e){
reset_timeout();
message_manager.show_info(sanitise_id($(this).parent().attr('id')));
});
-
+
$('#mm-hide-reasons').change(function(e){
- $('#reason_text').val($(this).val()); // load reason_text with boilerplate reason
+ $('#reason_text').val($(this).val()); // load reason_text with boilerplate reason
});
$('#mm-boilerplate-replies').change(function(e){
- $('#reply_text').val($(this).val()); // load reason_text with boilerplate reason
+ var old_txt = $('#reply_text').val();
+ var new_txt = $(this).val().replace(/(^\.\.\.|\.\.\.$)/, old_txt);
+ $('#reply_text').val(new_txt); // load reply_text with boilerplate reason
});
-
+
$('#reply-submit').click(function(e) {
e.preventDefault();
// TODO: pending fancybox callbacks working, force dummy_busy here
- // this is possibly overly cautious anyway
- dummy_busy = false;
+ // this is possibly overly cautious anyway
+ dummy_busy = false;
if (! dummy_busy) {
dummy_busy = true;
message_manager.reply(
- $('#reply_to_msg_id').val(),
- $('#reply_text').val(),
- {callback:dummy_reply_cleanup});
+ $('#reply_to_msg_id').val(),
+ $('#reply_text').val(),
+ {callback:reply_cleanup});
}
});
@@ -177,17 +196,27 @@ $(document).ready(function() {
e.preventDefault();
reset_timeout();
// TODO: pending fancybox callbacks working, force dummy_busy here
- // this is possibly overly cautious anyway
- dummy_busy = false;
+ // this is possibly overly cautious anyway
+ dummy_busy = false;
if (! dummy_busy) {
dummy_busy = true;
message_manager.hide(
- $('#hide_msg_id').val(),
- $('#reason_text').val(),
- {callback:dummy_hide_cleanup});
+ $('#hide_msg_id').val(),
+ $('#reason_text').val(),
+ {callback:hide_cleanup});
+ }
+ });
+
+ $('#detach-submit').click(function(e) {
+ e.preventDefault();
+ if (! dummy_busy) {
+ dummy_busy = true;
+ message_manager.mark_as_not_a_reply(
+ $('#detach_msg_id').val(),
+ {callback:detach_cleanup});
}
});
-
+
$("a#reply").fancybox({onClosed: function(){dummy_busy=false;}});
// only show on problem display page
@@ -209,7 +238,7 @@ $(document).ready(function() {
$('#external_source_id').val(id);
$('#form_update').val( $(this).val() );
$('#form_update_form').on('submit', function(e) {
- message_manager.assign_fms_id( $('#external_source_id').val(), problem_id, { 'is_async': false } );
+ message_manager.assign_fms_id( $('#external_source_id').val(), problem_id, { 'is_async': false } );
});
});
});
@@ -223,9 +252,9 @@ $(document).ready(function() {
$('#show_messages').val('Show Messages');
$('#copy_to_update').stop(true,true).fadeOut();
}
-
+
});
-
+
$('#mm-link-to-refresh').on('click', function(e) {
e.preventDefault();
mm_refresh_messages();
@@ -250,8 +279,8 @@ $(document).ready(function() {
.attr('title', 'show all available messages (for adding updates)');
$('#mm-link-to-toggle-archive').fadeIn();
can_refresh = false;
- })
- });
+ })
+ });
} else {
$('.mm-archive', $mm_message_list).stop(true,true).slideUp(1000, function(){
message_manager.say_status("Available messages:");
@@ -264,19 +293,20 @@ $(document).ready(function() {
$('.mm-empty', $mm_message_list).stop(true,true).fadeIn();
can_refresh = true;
reset_timeout();
- })
- });
+ })
+ });
}
});
-
+
$("a#mm-link-to-help").fancybox();
message_manager.populate_boilerplate_strings('hide-reason');
- message_manager.populate_boilerplate_strings('reply');
+ message_manager.populate_boilerplate_strings('reply');
});
</script>
[% global.want_fmb_hidden_dialogs = 1 %]
+[% global.is_fmb_creation_page = problem.id? 0 : 1 %]
[% END %]
diff --git a/templates/web/fixmybarangay/report/new/councils_text.html b/templates/web/fixmybarangay/report/new/councils_text.html
index 24c54ea50..0001b0e68 100644
--- a/templates/web/fixmybarangay/report/new/councils_text.html
+++ b/templates/web/fixmybarangay/report/new/councils_text.html
@@ -1,5 +1,5 @@
<p>
The information provided here will be displayed publicly on the site as well as being sent to the
-relevant authority (DPWH, DEPW, or DPS). If you select the Fix Locally category then the
-information will not be sent anywhere.
+relevant authority (DPWH, DEPW, or DPS).
+If you select a "bgy. will fix" category, then your report will be emailed to the barangay team.
</p>
diff --git a/templates/web/fixmybarangay/reports/index.html b/templates/web/fixmybarangay/reports/index.html
new file mode 100755
index 000000000..984e0d472
--- /dev/null
+++ b/templates/web/fixmybarangay/reports/index.html
@@ -0,0 +1,42 @@
+[% INCLUDE 'header.html', title = loc('Summary reports'), bodyclass => 'fullwidthpage' %]
+
+<h1>[% loc('All Reports') %]</h1>
+
+<div class="intro">
+<p>
+[% loc('This is a summary of all reports on this site; select a particular barangay to see the reports sent there.') %]
+
+</p>
+</div>
+
+<table cellpadding="3" cellspacing="1" border="0" class="nicetable">
+<thead>
+<tr>
+<th class="title">[% loc('Name') %]</th>
+<th class="data">[% loc('New <br>problems') %]</th>
+<th class="data">[% loc('Older <br>problems') %]</th>
+<th class="data">[% loc('Old / unknown <br>problems') %]</th>
+<th class="data">[% loc('Recently <br>fixed') %]</th>
+<th class="data">[% loc('Older <br>fixed') %]</th>
+</tr>
+</thead>
+
+<tbody>
+[% FOREACH body IN bodies %]
+<tr align="center"
+[%- IF ! (loop.count % 2) %] class="a"
+[%- END %]>
+<td class="title"><a href="[% body.url(c) %]">[% body.name %]</a></td>
+<td class="data">[% open.${body.id}.new or 0 %]</td>
+<td class="data">[% open.${body.id}.older or 0 %]</td>
+<td class="data">[% open.${body.id}.unknown or 0 %]</td>
+<td class="data">[% fixed.${body.id}.new or 0 %]</td>
+<td class="data">[% fixed.${body.id}.old or 0 %]</td>
+</tr>
+[% TRY %][% PROCESS "reports/_extras.html" %][% CATCH file %][% END %]
+[% END %]
+</tbody>
+</table>
+
+
+[% INCLUDE 'footer.html', pagefooter = 'yes' %]
diff --git a/templates/web/fixmystreet/around/_updates.html b/templates/web/fixmystreet/around/_updates.html
index 75327c935..458983e8f 100755
--- a/templates/web/fixmystreet/around/_updates.html
+++ b/templates/web/fixmystreet/around/_updates.html
@@ -1,5 +1,5 @@
<div class="shadow-wrap">
<ul id="key-tools" class="singleton">
- <li><a class="feed" id="key-tool-around-updates" href="[% email_url | html %]">Get updates</a></li>
+ <li><a class="feed" id="key-tool-around-updates" href="[% email_url | html %]">[% loc("Get updates") %]</a></li>
</ul>
</div>
diff --git a/templates/web/fixmystreet/around/around_index.html b/templates/web/fixmystreet/around/around_index.html
index c547b7ba9..0d9d35171 100644
--- a/templates/web/fixmystreet/around/around_index.html
+++ b/templates/web/fixmystreet/around/around_index.html
@@ -9,7 +9,7 @@
%]
[% IF location_error %]
- <p class="form-error">[% location_error %]</p>
+ [% INCLUDE 'around/location_error.html' %]
[% END %]
[% IF possible_location_matches %]
diff --git a/templates/web/fixmystreet/around/location_error.html b/templates/web/fixmystreet/around/location_error.html
new file mode 100644
index 000000000..fc9b2b8ce
--- /dev/null
+++ b/templates/web/fixmystreet/around/location_error.html
@@ -0,0 +1 @@
+<p class="form-error">[% location_error %]</p>
diff --git a/templates/web/fixmystreet/around/postcode_form.html b/templates/web/fixmystreet/around/postcode_form.html
index d48a53183..ed5d700f0 100644
--- a/templates/web/fixmystreet/around/postcode_form.html
+++ b/templates/web/fixmystreet/around/postcode_form.html
@@ -18,7 +18,7 @@
<label for="pc">[% question %]:</label>
<div>
<input type="text" name="pc" value="[% pc | html %]" id="pc" size="10" maxlength="200" placeholder="[% tprintf(loc('e.g. ‘%s’ or ‘%s’'), c.cobrand.example_places) %]">
- <input type="submit" value="[% loc('Go') %]" id="submit">
+ <input type="submit" value="[% loc('Go') %]" id="sub">
</div>
[% IF partial_token %]
diff --git a/templates/web/fixmystreet/auth/general.html b/templates/web/fixmystreet/auth/general.html
index 7fa2b57fe..b9d02c18b 100644
--- a/templates/web/fixmystreet/auth/general.html
+++ b/templates/web/fixmystreet/auth/general.html
@@ -50,7 +50,7 @@
<h5>[% loc('<strong>No</strong> let me sign in by email') %]</h5>
<div class="general-sidebar-notes">
- <p>Providing a name and password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports.</p>
+ <p>[% loc('Providing a name and password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports.') %]</p>
</div>
<label for="name">[% loc('Name') %]</label>
diff --git a/templates/web/fixmystreet/contact/address.html b/templates/web/fixmystreet/contact/address.html
deleted file mode 100644
index b7ff37e5c..000000000
--- a/templates/web/fixmystreet/contact/address.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<div class="contact-details">
-<p>FixMyStreet is a service provided by mySociety, which is the project of a
-registered charity. The charity is called UK Citizens Online Democracy and is charity number 1076346.</p>
-<p>mySociety can be contacted by email at <a href="mailto:hello&#64;mysociety.org">hello&#64;mysociety.org</a>,
-or by post at:</p>
-<p>mySociety<br>
-483 Green Lanes<br>
-London<br>
-N13 4BS<br>
-UK</p>
-</div>
diff --git a/templates/web/fixmystreet/contact/blurb.html b/templates/web/fixmystreet/contact/blurb.html
new file mode 100644
index 000000000..21a4ae715
--- /dev/null
+++ b/templates/web/fixmystreet/contact/blurb.html
@@ -0,0 +1,15 @@
+[% IF c.cobrand.moniker == 'fixmystreet' %]
+<h3>Send a message to FixMyStreet's technical support team</h3>
+
+<h4>If you have questions about FixMyStreet</h4>
+[% END %]
+
+<p>
+[% tprintf( loc("It's often quickest to <a href=\"%s\">check our FAQs</a> and see if the answer is there."), c.uri_for('/faq') ) %]
+</p>
+
+<p>
+[% loc('Please do <strong>not</strong> report problems through this form; messages go to
+the team behind FixMyStreet, not a council. To report a problem,
+please <a href="/">go to the front page</a> and follow the instructions.') %]
+</p>
diff --git a/templates/web/fixmystreet/contact/index.html b/templates/web/fixmystreet/contact/index.html
index 368fb0628..44aa5c2e4 100644
--- a/templates/web/fixmystreet/contact/index.html
+++ b/templates/web/fixmystreet/contact/index.html
@@ -1,10 +1,26 @@
[% INCLUDE 'header.html',
title = loc('Contact Us')
robots = 'noindex,nofollow'
- bodyclass => 'twothirdswidthpage'
+ 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><a href="/privacy">Privacy and cookies</a></li>
+ <li><strong>Contact FixMyStreet</strong></li>
+ </ul>
+ </aside>
+</div>
+
+[% IF c.cobrand.moniker == 'fixmystreet' %]
+<h1>FixMyStreet technical support</h1>
+[% ELSE %]
<h1>[% loc('Contact the team') %]</h1>
+[% END %]
<form method="post" action="/contact/submit" class="validate">
<fieldset>
@@ -19,9 +35,9 @@
<blockquote>
<p>
[% IF update.anonymous %]
- [% tprintf( loc('Update below added anonymously at %s'), prettify_epoch( update.confirmed_local.epoch ) ) %]
+ [% tprintf( loc('Update below added anonymously at %s'), prettify_dt( update.confirmed ) ) %]
[% ELSE %]
- [% tprintf( loc('Update below added by %s at %s'), update.name, prettify_epoch( update.confirmed_local.epoch ) ) | html %]
+ [% tprintf( loc('Update below added by %s at %s'), update.name, prettify_dt( update.confirmed ) ) | html %]
[% END %]
</p>
@@ -39,13 +55,13 @@
</p>
<blockquote>
- <h2>[% problem.title | html %]</h2>
+ <h2>[% problem.title_safe | html %]</h2>
<p>
[% IF problem.anonymous %]
- [% tprintf( loc('Reported anonymously at %s'), prettify_epoch( problem.confirmed_local.epoch ) ) %]
+ [% tprintf( loc('Reported anonymously at %s'), prettify_dt( problem.confirmed ) ) %]
[% ELSE %]
- [% tprintf( loc('Reported by %s at %s'), problem.user.name, prettify_epoch( problem.confirmed_local.epoch ) ) | html %]
+ [% tprintf( loc('Reported by %s at %s'), problem.user.name, prettify_dt( problem.confirmed ) ) | html %]
[% END %]
</p>
@@ -82,6 +98,7 @@
[% END %]
<input type="text" class="required" name="subject" id="form_subject" value="[% subject | html %]" size="30">
+ [% INCLUDE 'contact/who.html' %]
<label for="form_message">[% loc('Message') %]</label>
[% IF field_errors.message %]
@@ -95,6 +112,12 @@
</fieldset>
</form>
+<h4>[% loc("Don't like forms?") %]</h4>
+
+<p>
+[% tprintf( loc("You can contact technical support on <a href='mailto:%s'>%s</a>"), contact_email, contact_email) %]
+</p>
+
[% TRY %][% INCLUDE 'contact/address.html' %][% CATCH file %][% END %]
[% INCLUDE 'footer.html' pagefooter = 'yes' %]
diff --git a/templates/web/fixmystreet/contact/who.html b/templates/web/fixmystreet/contact/who.html
new file mode 100644
index 000000000..49f22b612
--- /dev/null
+++ b/templates/web/fixmystreet/contact/who.html
@@ -0,0 +1,77 @@
+[% IF c.cobrand.moniker == 'fixmystreet' %]
+ <h4>Topic:</h4>
+
+ [% IF field_errors.dest %]
+ <div class="form-error">[% field_errors.dest %]</div>
+ [% ELSIF field_errors.not_for_us %]
+ <div class="form-error">You can only contact the team behind FixMyStreet using our contact form</div>
+
+ [% IF dest == 'council' %]
+ <p>
+ We’re not the council: we just run this website which helps you report issues
+ to them.
+ </p>
+
+ <p>
+ <strong>If you want to report a street problem</strong>, return to the
+ FixMyStreet homepage and enter your postcode. You can then make a report.
+ We'll send it to your council, and publish it on FixMyStreet.
+ </p>
+
+ <p>
+ <strong>If your problem is not a street issue</strong>, or is <strong>not
+ suitable for publication on the site</strong>, then FixMyStreet isn't the
+ right place for it. You should find contact details on your council's own
+ website.
+ </p>
+ [% ELSIF dest == 'update' %]
+ <p>
+ FixMyStreet is great for reporting problems, but we don't fix them - your
+ council oversees that.
+ </p>
+
+ <p>
+ <strong>If you'd like to chase your report</strong>, please reply directly
+ to any response - or auto-reply - that your council sent you. Check that
+ it has your council's email address on it so that it goes to the right place.
+ </p>
+
+ <p>
+ It's a good idea to include the URL [web address] of your original FixMyStreet
+ report.
+ </p>
+
+ <p>
+ <strong>If you're not having any luck getting your community problems fixed</strong>,
+ you could try contacting your local councillor, using another useful mySociety site:
+ <a href="https://www.writetothem.com/">https://www.writetothem.com/</a>.
+ </p>
+
+ [% END %]
+ [% END %]
+
+ <div class="checkbox-group">
+ <input name="dest" id="dest_help" type="radio" value="help" class="required"[% IF dest AND dest == 'help' %] checked[% END %]>
+ <label class="inline" for="dest_help">I need help using the site</label>
+ </div>
+
+ <div class="checkbox-group">
+ <input name="dest" id="dest_feeback" type="radio" value="feeback" class="required"[% IF dest AND dest == 'feeback' %] checked[% END %]>
+ <label class="inline" for="dest_feeback">I have feedback about the site</label>
+ </div>
+
+ <div class="checkbox-group">
+ <input name="dest" id="dest_from_council" type="radio" value="from_council" class="required"[% IF dest AND dest == 'from_council' %] checked[% END %]>
+ <label class="inline" for="dest_from_council">I am from a council and I have a question for the FixMyStreet team</label>
+ </div>
+
+ <div class="checkbox-group">
+ <input name="dest" id="dest_council" type="radio" value="council" class="required"[% IF dest AND dest == 'council' %] checked[% END %]>
+ <label class="inline" for="dest_council">I want to report a street problem</label>
+ </div>
+
+ <div class="checkbox-group">
+ <input name="dest" id="dest_update" type="radio" value="update"[% IF dest AND dest == 'update' %] checked[% END %]>
+ <label class="inline" for="dest_update">My street problem hasn't been fixed</label>
+ </div>
+[% END %]
diff --git a/templates/web/fixmystreet/faq/faq-en-gb.html b/templates/web/fixmystreet/faq/faq-en-gb.html
index 8628085e5..b9d720dab 100755
--- a/templates/web/fixmystreet/faq/faq-en-gb.html
+++ b/templates/web/fixmystreet/faq/faq-en-gb.html
@@ -32,7 +32,7 @@ or clearing</strong>, such as:
<li>Flytipping or litter
<li>Streetcleaning, such as broken glass in a cycle lane
[% IF c.cobrand.moniker != 'southampton' %]
- <li>Unlit lamposts
+ <li>Unlit lampposts
[% END %]
<li>Potholes
</ul>
@@ -74,23 +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 c45c3c536..cb39416f4 100644
--- a/templates/web/fixmystreet/footer.html
+++ b/templates/web/fixmystreet/footer.html
@@ -2,14 +2,16 @@
<footer role="content-info">
<div class="tablewrapper bordered">
<div id="footer-mobileapps">
- <h4>Mobile apps</h4>
-
- <ul>
- <li><a class="m-app-iphone" href="http://itunes.apple.com/gb/app/fixmystreet/id297456545">iPhone</a></li>
- <li><a class="m-app-droid" href="https://market.android.com/details?id=com.android.fixmystreet">Android</a></li>
- <li><a class="m-app-nokia" href="http://store.ovi.com/content/107557">Nokia</a></li>
- </ul>
- </div>
+ <h4>The FixMyStreet App</h4>
+ <p>
+ <a href="https://itunes.apple.com/gb/app/fixmystreet/id297456545">
+ <img alt="FixMyStreet app on the App Store" src="/cobrands/fixmystreet/images/itunes_store_logo.png" />
+ </a>
+ <a href="https://play.google.com/store/apps/details?id=org.mysociety.FixMyStreet">
+ <img alt="FixMyStreet Android app on Google Play" src="/cobrands/fixmystreet/images/google_play_logo.png" />
+ </a>
+ </p>
+ </div>
<div id="footer-help">
<ul>
diff --git a/templates/web/fixmystreet/header.html b/templates/web/fixmystreet/header.html
index 85ed2c0e1..6ed84a85d 100644
--- a/templates/web/fixmystreet/header.html
+++ b/templates/web/fixmystreet/header.html
@@ -11,6 +11,8 @@
<meta name="HandHeldFriendly" content="true">
<meta name="mobileoptimized" content="0">
+ [% INCLUDE 'header_opengraph.html' %]
+
[% SET start = c.config.ADMIN_BASE_URL IF admin %]
<link rel="stylesheet" href="[% start %][% version('/cobrands/' _ c.cobrand.moniker _ '/base.css') %]">
@@ -29,6 +31,7 @@
<link rel="canonical" href="http://www.fixmystreet.com[% c.req.uri.path_query %]">
[% END %]
+ [% TRY %][% PROCESS 'header_extra.html' %][% CATCH file %][% END %]
[% INCLUDE 'tracking_code.html' %]
</head>
@@ -39,7 +42,7 @@
<div class="table-cell">
<header id="site-header" role="banner">
<div class="container">
- <a href="/" id="site-logo">[% c.cobrand.site_title | html %]</a>
+ [% INCLUDE 'header_logo.html' %]
<a href="#main-nav" id="nav-link">Main Navigation</a>
</div>
</header>
diff --git a/templates/web/fixmystreet/header_logo.html b/templates/web/fixmystreet/header_logo.html
new file mode 100644
index 000000000..e5e4aae60
--- /dev/null
+++ b/templates/web/fixmystreet/header_logo.html
@@ -0,0 +1 @@
+ <a href="/" id="site-logo">[% c.cobrand.site_title | html %]</a>
diff --git a/templates/web/fixmystreet/header_opengraph.html b/templates/web/fixmystreet/header_opengraph.html
new file mode 100644
index 000000000..45e7c246c
--- /dev/null
+++ b/templates/web/fixmystreet/header_opengraph.html
@@ -0,0 +1,9 @@
+ <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">
diff --git a/templates/web/fixmystreet/index.html b/templates/web/fixmystreet/index.html
index 5d7d31baa..4d674a17e 100644
--- a/templates/web/fixmystreet/index.html
+++ b/templates/web/fixmystreet/index.html
@@ -42,13 +42,18 @@ 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">
[% FOREACH problem IN recent_photos %]
- [% problem.photo = 1; # Definitely is
- INCLUDE 'report/_item.html', no_fixed = 1 %]
+ [% INCLUDE 'report/_item.html', no_fixed = 1 %]
[% END %]
</ul>
</section>
diff --git a/templates/web/fixmystreet/my/my.html b/templates/web/fixmystreet/my/my.html
index 258f147c6..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',
@@ -57,7 +64,7 @@ END %]
<li>&ldquo;[% u.text | html %]&rdquo;
&ndash; <a href="[% c.uri_for( '/report', u.problem_id ) %]#update_[% u.id %]">[% u.problem.title | html %]</a>.
<p><small class="council_sent_info">
- [% tprintf( loc("Added %s"), prettify_epoch( u.confirmed_local.epoch, 'date' ) ) %]
+ [% tprintf( loc("Added %s"), prettify_dt( u.confirmed, 'date' ) ) %]
</small></p>
</li>
[% "</ul>" IF loop.last %]
diff --git a/templates/web/fixmystreet/pagination.html b/templates/web/fixmystreet/pagination.html
deleted file mode 100644
index 4f4d00a79..000000000
--- a/templates/web/fixmystreet/pagination.html
+++ /dev/null
@@ -1,15 +0,0 @@
-[% IF pager.last_page > 1 %]
-<section class="full-width">
- <p class="pagination">
- [% IF pager.previous_page %]
- <a class="prev" href="[% c.req.uri_with({ $param => pager.previous_page }) %]">Previous</a>
- [% END %]
-
- [% pager.first %] to [% pager.last %] of [% pager.total_entries %]
-
- [% IF pager.next_page %]
- <a class="next" href="[% c.req.uri_with({ $param => pager.next_page }) %]">Next</a>
- [% END %]
- </p>
-</section>
-[% END %]
diff --git a/templates/web/fixmystreet/report/_item.html b/templates/web/fixmystreet/report/_item.html
index 6014074e0..8e2e73a8d 100644
--- a/templates/web/fixmystreet/report/_item.html
+++ b/templates/web/fixmystreet/report/_item.html
@@ -1,20 +1,24 @@
<li>
<a class="text" href="[% c.uri_for('/report', problem.id ) %]">
- [% IF problem.photo %]
- <img class="img" height="60" width="90" src="/photo/[% problem.id %].fp.jpeg" alt="">
+ [% IF problem.photo;
+ photo = problem.get_photo_params
+ %]
+ <img class="img" height="60" width="90" src="[% photo.url_fp %]" alt="">
[% END %]
<h4>[% problem.title | html %]</h4>
- <small>[% IF problem.confirmed_local %]
- [%- prettify_epoch( problem.confirmed_local.epoch, 1 ) %]
- [%- ELSE %]
- [%- prettify_epoch( problem.confirmed, 1 ) %]
- [%- END %]
+ <small>
+ [% IF c.cobrand.moniker != 'fixamingata' %] [%# Default: %]
+ [%- prettify_dt( problem.confirmed, 1 ) %]
+ [% ELSE %] [%# Swedish cobrand fixamingata: %]
+ [%- prettify_dt( problem.confirmed) %]
+ [% END %]
[%- IF dist %], [% dist %]km[% END %]
- [%- IF include_lastupdate AND problem.confirmed != problem.lastupdate AND problem.whensent != problem.lastupdate %], last updated [% prettify_epoch( problem.lastupdate, 1 ) %]
+ [%- 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.councils > 1 %] [% loc('(sent to both)') %]
- [% ELSIF problem.councils == 0 %] [% loc('(not sent to council)') %]
+ [% 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 %]
diff --git a/templates/web/fixmystreet/report/banner.html b/templates/web/fixmystreet/report/banner.html
index 58712604e..83c780958 100644
--- a/templates/web/fixmystreet/report/banner.html
+++ b/templates/web/fixmystreet/report/banner.html
@@ -5,7 +5,7 @@
</div>
[% END %]
-[% IF problem.is_open AND date.now - problem.lastupdate_local.epoch > 8 * 7 * 24 * 60 * 60 %]
+[% IF c.cobrand.moniker != 'bromley' AND problem.bodies_str != '2482' AND problem.is_open AND date.now - problem.lastupdate.epoch > 8 * 7 * 24 * 60 * 60 %]
[% INCLUDE banner, id = 'unknown', text = loc('Unknown') %]
[% END %]
[% IF problem.is_fixed %]
@@ -14,8 +14,8 @@
[% IF problem.is_closed %]
[% INCLUDE banner, id = 'closed', text = loc('Closed') %]
[% END %]
-[% states = [ 'investigating', 'in progress', 'planned' ];
- IF states.grep(problem.state).size %]
+[% states = [ 'investigating', 'in progress', 'planned', 'action scheduled' ];
+ IF c.cobrand.moniker != 'bromley' AND problem.bodies_str != '2482' && states.grep(problem.state).size %]
[% INCLUDE banner, id = 'progress', text = loc('In progress') %]
[% END %]
diff --git a/templates/web/fixmystreet/report/display.html b/templates/web/fixmystreet/report/display.html
index 8c6498448..b75ef92bc 100644
--- a/templates/web/fixmystreet/report/display.html
+++ b/templates/web/fixmystreet/report/display.html
@@ -2,18 +2,22 @@
PROCESS "report/photo-js.html";
PROCESS "maps/${map.type}.html";
- problem_title = problem.title _ ' - ' _ loc('Viewing a problem');
+ problem_title = problem.title_safe _ ' - ' _ loc('Viewing a problem');
INCLUDE 'header.html'
title = problem_title
rss = [ loc('Updates to this problem, FixMyStreet'), "/rss/$problem.id" ]
robots = 'index, nofollow'
bodyclass = 'mappage';
-
- allow_creation = !c.cobrand.only_authed_can_create || (c.user && c.user.from_council);
%]
[% map_html %]
+ [% IF c.cobrand.moniker == 'zurich' %]
+ <p id='sub_map_links'>
+ <a class="hidden-nojs" id="map_layer_toggle" href="">Stadtplan</a>
+ </p>
+ [% END %]
+
</div>
[% INCLUDE 'report/banner.html' %]
@@ -23,23 +27,29 @@
<div class="shadow-wrap">
<ul id="key-tools">
- [% IF c.user_exists AND c.cobrand.users_can_hide AND c.user.belongs_to_council( c.cobrand.council_id ) %]
- <li><form method="post" action="/report/delete/[% problem.id %]">
+ [% IF c.user_exists AND c.cobrand.users_can_hide AND c.user.belongs_to_body( c.cobrand.council_id ) %]
+ <li><form method="post" action="/report/delete/[% problem.id %]" id="remove-from-site-form">
<input type="submit" id="key-tool-report-abuse" class="abuse" value="Remove from site">
</form></li>
- [% ELSE %]
+ [% ELSIF c.cobrand.moniker != 'zurich' %]
<li><a rel="nofollow" id="key-tool-report-abuse" class="abuse" href="[% c.uri_for( '/contact', { id => problem.id } ) %]">[% loc('Report abuse' ) %]</a></li>
[% END %]
+ [% IF c.cobrand.moniker != 'zurich' %]
<li><a rel="nofollow" id="key-tool-report-updates" class="feed" href="[% c.uri_for( '/alert/subscribe', { id => problem.id } ) %]">[% loc('Get updates' ) %]</a></li>
+ [% END %]
[% IF c.cobrand.moniker == 'fixmystreet' %]
<li><a rel="nofollow" id="key-tool-report-share" class="share" href="#report-share">[% loc('Share') %]</a></li>
[% END %]
+ [% IF c.cobrand.moniker == 'zurich' %]
+ <li><a class="chevron" id="key-tool-problems-nearby" href="[% c.uri_for( '/around', { lat => short_latitude, lon => short_longitude } ) %]">[% loc( 'Problems on the map' ) %]</a></li>
+ [% ELSE %]
<li><a class="chevron" id="key-tool-problems-nearby" href="[% c.uri_for( '/around', { lat => short_latitude, lon => short_longitude } ) %]">[% loc( 'Problems nearby' ) %]</a></li>
+ [% END %]
</ul>
[% IF c.cobrand.moniker == 'fixmystreet' %]
<div id="report-share" class="hidden-js" align="center">
- <a href="https://twitter.com/share" class="twitter-share-button" data-text="I just reported &lsquo;[% problem.title | html %]&rsquo;" data-via="fixmystreet" data-related="mysociety" data-count="none" data-dnt="true">Tweet</a>
+ <a href="https://twitter.com/share" class="twitter-share-button" data-text="I just reported &lsquo;[% problem.title_safe | html %]&rsquo;" data-via="fixmystreet" data-related="mysociety" data-count="none" data-dnt="true">Tweet</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
<iframe src="//www.facebook.com/plugins/like.php?href=[% c.req.uri | uri %]&amp;send=false&amp;layout=button_count&amp;width=90&amp;show_faces=false&amp;action=like&amp;colorscheme=light&amp;font&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:90px; height:21px;" allowTransparency="true"></iframe>
</div>
@@ -66,154 +76,5 @@
</div>
[% INCLUDE 'report/updates.html' %]
-
-[% IF allow_creation %]
-<div id="update_form">
- <h2>[% loc( 'Provide an update') %]</h2>
-
- [% IF c.cobrand.moniker != 'emptyhomes' AND c.cobrand.moniker != 'stevenage' %]
- <div class="general-sidebar-notes">
- [% INCLUDE 'report/updates-sidebar-notes.html' %]
- </div>
- [% END %]
-
- [% INCLUDE 'errors.html' %]
-
- <form method="post" action="[% c.uri_for( '/report/update' ) %]" id="form_update_form" name="updateForm" class="validate"[% IF c.cobrand.allow_photo_upload %] enctype="multipart/form-data"[% END %]>
- <fieldset>
- <input type="hidden" name="submit_update" value="1">
- <input type="hidden" name="id" value="[% problem.id | html %]">
-
- <label for="form_update">[% loc( 'Update' ) %]</label>
- [% IF field_errors.update %]
- <div class='form-error'>[% field_errors.update %]</div>
- [% END %]
- <textarea rows="7" cols="30" name="update" id="form_update" placeholder="[% loc('Please write your update here') %]" required>[% update.text | html %]</textarea>
-
- [% IF c.user && c.user.belongs_to_council( problem.council ) %]
- <label for="form_state">[% loc( 'State' ) %]</label>
- <select name="state" id="form_state">
- [% FOREACH state IN [ ['confirmed', loc('Open')], ['investigating',
- loc('Investigating')], ['planned', loc('Planned')], ['in progress',
- loc('In Progress')], ['closed', loc('Closed')], ['fixed', loc('Fixed')] ] %]
- <option [% 'selected ' IF state.0 == problem.state %] value="[% state.0 %]">[% state.1 %]</option>
- [% END %]
- </select>
- [% ELSE %]
- [% IF problem.is_fixed AND c.user_exists AND c.user.id == problem.user_id %]
-
- <input type="checkbox" name="reopen" id="form_reopen" value="1"[% ' checked' IF update.mark_open %]>
- <label class="inline" for="form_reopen">[% loc('This problem has not been fixed') %]</label>
-
- [% ELSIF !problem.is_fixed %]
-
- <div class="checkbox-group">
- <input type="checkbox" name="fixed" id="form_fixed" value="1"[% ' checked' IF update.mark_fixed %]>
- <label class="inline" for="form_fixed">[% loc('This problem has been fixed') %]</label>
- </div>
-
- [% END %]
- [% END %]
-
- [% IF c.cobrand.allow_photo_upload %]
- <div id="fileupload_normalUI">
- [% IF upload_fileid %]
- <img align="right" src="/photo/[% upload_fileid %].temp.jpeg" alt="">
- <p>[% loc('You have already attached a photo to this update, attaching another one will replace it.') %]</p>
- <input type="hidden" name="upload_fileid" value="[% upload_fileid %]">
- [% END %]
- <label for="form_photo">[% loc('Photo') %]</label>
- [% IF field_errors.photo %]
- <p class='form-error'>[% field_errors.photo %]</p>
- [% END %]
- <input type="file" name="photo" id="form_photo">
- </div>
- [% END %]
-
- [% IF c.user_exists %]
-
- [% INCLUDE name %]
-
- <input class="final-submit green-btn" type="submit" id="update_post" value="[% loc('Post') %]">
-
-
- [% ELSE %]
-
- <label for="form_rznvy">[% loc('Email' ) %]</label>
- [% IF field_errors.email %]
- <p class='form-error'>[% field_errors.email %]</p>
- [% END %]
- <input type="email" name="rznvy" id="form_rznvy" value="[% update.user.email | html %]" placeholder="[% loc('Your email address' ) %]" required>
-
- <div id="form_sign_in">
- <h3>[% loc("Now to submit your update&hellip;") %]</h3>
- <h2>[% loc("Do you have a FixMyStreet password?") %]</h2>
-
- <div id="form_sign_in_yes" class="form-box">
- <h5>[% loc('<strong>Yes</strong> I have a password') %]</h5>
-
- <label class="hidden-js n" for="password_sign_in">[% loc('Yes I have a password') %]</label>
- [% IF field_errors.password %]
- <p class='form-error'>[% field_errors.password %]</p>
- [% END %]
- <div class="form-txt-submit-box">
- <input type="password" name="password_sign_in" id="password_sign_in" value="" placeholder="[% loc('Your password') %]">
- <input class="green-btn" type="submit" name="submit_sign_in" id="submit_sign_in" value="[% loc('Post') %]">
- </div>
-
- <div class="checkbox-group">
- <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 class="general-sidebar-notes" id="forgotten-pw">
- <p class="dark">[% loc('Forgotten your password?') %]</p>
- <p>[% loc('Confirm by email below, providing a new password at that point. When you confirm, your password will be updated.') %]</p>
- </div>
-
- </div>
- <div id="form_sign_in_no" class="form-box">
- <h5>[% loc('<strong>No</strong> Let me confirm my update by email') %]</h5>
-
- [% INCLUDE name %]
-
- <div class="general-sidebar-notes">
- <p class="dark">[% loc('We never show your email') %]</p>
- <p>[% loc('Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports.') %]</p>
- </div>
-
- <label for="password_register">[% loc('Password (optional)') %]</label>
-
- <div class="form-txt-submit-box">
- <input type="password" name="password_register" id="password_register" value="" placeholder="[% loc('Enter a password') %]">
- <input class="green-btn" type="submit" name="submit_register" id="submit_register" value="[% loc('Post') %]">
- </div>
- </div>
- </div>
-
- [% END %]
- </fieldset>
- </form>
-</div>
-[% END %]
-
-
+[% INCLUDE 'report/update-form.html' %]
[% INCLUDE 'footer.html' %]
-
-[% BLOCK name %]
- [% INCLUDE 'report/new/extra_name.html' %]
- <label for="form_name">[% loc('Name') %]</label>
- [% IF field_errors.name %]
- <p class='form-error'>[% field_errors.name %]</p>
- [% END %]
- <input type="text" [% IF problem.council == '2482' %]class="validName" [% END %]name="name" id="form_name" value="[% update.name || c.user.name | html %]" placeholder="[% loc('Your name') %]">
-
- <div class="checkbox-group">
- <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' UNLESS update.anonymous %]>
- <label class="inline" for="form_may_show_name">[% loc('Show my name publicly') %]</label>
- </div>
- <div class="checkbox-group">
- <input type="checkbox" name="add_alert" id="form_add_alert" value="1"[% ' checked' IF add_alert %]>
- <label class="inline" for="form_add_alert">[% loc( 'Alert me to future updates' ) %]</label>
- </div>
-[% END %]
diff --git a/templates/web/fixmystreet/report/new/fill_in_details_form.html b/templates/web/fixmystreet/report/new/fill_in_details_form.html
index 82f9b0da5..e2e091460 100644
--- a/templates/web/fixmystreet/report/new/fill_in_details_form.html
+++ b/templates/web/fixmystreet/report/new/fill_in_details_form.html
@@ -15,7 +15,7 @@
[% PROCESS 'report/new/councils_text.html' %]
[% END %]
- [% IF c.cobrand.moniker != 'fixmybarangay' || ( c.user && c.user.from_council ) %]
+ [% IF c.cobrand.moniker != 'fixmybarangay' || ( c.user && c.user.from_body ) %]
<div id="report-a-problem-sidebar">
<!--
The text for this section needs checking, but I can't work out which bit comes from where
@@ -51,8 +51,8 @@
[% INCLUDE 'report/new/form_heading.html' %]
- [% IF field_errors.council %]
- <p class='form-error'>[% field_errors.council %]</p>
+ [% IF field_errors.bodies %]
+ <p class='form-error'>[% field_errors.bodies %]</p>
[% END %]
@@ -125,21 +125,11 @@
[%# if there is nothing in the name field then set check box as default on form %]
<div class="checkbox-group">
- <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"
- [% IF c.cobrand.moniker == 'fixmybarangay' && c.user.from_council %]
- [%#
- FMB staff reports are anonymous by default; so may_show_name is checked only if explicitly set to 0.
- If the user has not set it (that is, it is null) TemplateToolkit sees an empty string.
- %]
- [% 'checked' IF report.anonymous==0 %]
- [% ELSE %]
- [% 'checked' IF !report.anonymous %]
- [% END %]
- >
+ <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' IF report.anonymous==0 OR (c.cobrand.default_show_name AND report.anonymous=='') %]>
<label class="inline" for="form_may_show_name">[% loc('Show my name publicly') %] </label>
</div>
- [% IF c.cobrand.moniker != 'fixmybarangay' || c.user.from_council %]
+ [% IF c.cobrand.moniker != 'fixmybarangay' || c.user.from_body %]
<div class="general-sidebar-notes">
<p>[% loc('We never show your email address or phone number.') %]</p>
</div>
@@ -203,7 +193,7 @@
[%# if there is nothing in the name field then set check box as default on form %]
<div class="checkbox-group">
- <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' IF !report.anonymous %]>
+ <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' IF report.anonymous==0 OR (c.cobrand.default_show_name AND report.anonymous=='') %]>
<label class="inline" for="form_may_show_name">[% loc('Show my name publicly') %]</label>
</div>
diff --git a/templates/web/fixmystreet/report/new/fill_in_details_text.html b/templates/web/fixmystreet/report/new/fill_in_details_text.html
index b9ce7e110..05527bb24 100644
--- a/templates/web/fixmystreet/report/new/fill_in_details_text.html
+++ b/templates/web/fixmystreet/report/new/fill_in_details_text.html
@@ -1,9 +1,6 @@
[%
IF area_ids_to_list.size != 0;
- loc('The council won&rsquo;t be able to help unless you leave as much
-detail as you can. Please describe the exact location of the problem (e.g. on a
-wall), what it is, how long it has been there, a description (and a photo of
-the problem if you have one), etc.');
+ loc('The council won&rsquo;t be able to help unless you leave as much detail as you can. Please describe the exact location of the problem (e.g. on a wall), what it is, how long it has been there, a description (and a photo of the problem if you have one), etc.');
IF category_extras;
' ' _ loc('Some categories may require additional information.');
END;
diff --git a/templates/web/fixmystreet/report/new/notes.html b/templates/web/fixmystreet/report/new/notes.html
index aa73f0694..657390c79 100644
--- a/templates/web/fixmystreet/report/new/notes.html
+++ b/templates/web/fixmystreet/report/new/notes.html
@@ -2,8 +2,10 @@
<ul class="plain-list">
<li>[% loc("We will only use your personal information in accordance with our <a href=\"/privacy\">privacy policy.</a>") %]</li>
+ [% IF c.cobrand.moniker != 'zurich' %]
<li>[% loc("Please be polite, concise and to the point.") %]</li>
- <li>[% loc("Please do not be abusive &mdash; abusing your council devalues the service for all users.") %]</li>
+ <li>[% loc("Please do not be abusive&nbsp;&mdash; abusing your council devalues the service for all users.") %]</li>
<li>[% loc("Writing your message entirely in block capitals makes it hard to read, as does a lack of punctuation.") %]</li>
+ [% END %]
<li>[% loc("Remember that FixMyStreet is primarily for reporting physical problems that can be fixed. If your problem is not appropriate for submission via this site remember that you can contact your council directly using their own website.") %]</li>
</ul>
diff --git a/templates/web/fixmystreet/report/photo-js.html b/templates/web/fixmystreet/report/photo-js.html
index df0e2f92d..9075ce005 100644
--- a/templates/web/fixmystreet/report/photo-js.html
+++ b/templates/web/fixmystreet/report/photo-js.html
@@ -1,4 +1,4 @@
-[% IF c.cobrand.allow_photo_display %]
+[% IF c.cobrand.allow_photo_display(problem) %]
[% extra_css = BLOCK %]
<link rel="stylesheet" href="[% version('/js/fancybox/jquery.fancybox-1.3.4.css') %]">
[% END %]
diff --git a/templates/web/fixmystreet/report/update-form.html b/templates/web/fixmystreet/report/update-form.html
new file mode 100644
index 000000000..add176549
--- /dev/null
+++ b/templates/web/fixmystreet/report/update-form.html
@@ -0,0 +1,150 @@
+[% allow_creation = !c.cobrand.only_authed_can_create || (c.user && c.user.from_body) %]
+[% IF allow_creation %]
+<div id="update_form">
+ <h2>[% loc( 'Provide an update') %]</h2>
+
+ [% IF c.cobrand.moniker != 'emptyhomes' AND c.cobrand.moniker != 'stevenage' %]
+ <div class="general-sidebar-notes">
+ [% INCLUDE 'report/updates-sidebar-notes.html' %]
+ </div>
+ [% END %]
+
+ [% INCLUDE 'errors.html' %]
+
+ <form method="post" action="[% c.uri_for( '/report/update' ) %]" id="form_update_form" name="updateForm" class="validate"[% IF c.cobrand.allow_photo_upload %] enctype="multipart/form-data"[% END %]>
+ <fieldset>
+ <input type="hidden" name="submit_update" value="1">
+ <input type="hidden" name="id" value="[% problem.id | html %]">
+
+ <label for="form_update">[% loc( 'Update' ) %]</label>
+ [% IF field_errors.update %]
+ <div class='form-error'>[% field_errors.update %]</div>
+ [% END %]
+ <textarea rows="7" cols="30" name="update" id="form_update" placeholder="[% loc('Please write your update here') %]" required>[% update.text | html %]</textarea>
+
+ [% IF c.user && c.user.belongs_to_body( problem.bodies_str ) %]
+ <label for="form_state">[% loc( 'State' ) %]</label>
+ <select name="state" id="form_state">
+ [% FOREACH state IN [ ['confirmed', loc('Open')], ['investigating',
+ loc('Investigating')], ['action scheduled', loc('Action Scheduled')],
+ ['in progress', loc('In Progress')], ['duplicate', loc('Duplicate')],
+ ['unable to fix', loc('Unable to fix')], ['not responsible', loc('Not Responsible')],
+ ['fixed', loc('Fixed')] ] %]
+ <option [% 'selected ' IF state.0 == problem.state %] value="[% state.0 %]">[% state.1 %]</option>
+ [% END %]
+ </select>
+ [% ELSE %]
+ [% IF problem.is_fixed AND c.user_exists AND c.user.id == problem.user_id %]
+
+ <input type="checkbox" name="reopen" id="form_reopen" value="1"[% ' checked' IF update.mark_open %]>
+ <label class="inline" for="form_reopen">[% loc('This problem has not been fixed') %]</label>
+
+ [% ELSIF !problem.is_fixed %]
+
+ <div class="checkbox-group">
+ <input type="checkbox" name="fixed" id="form_fixed" value="1"[% ' checked' IF update.mark_fixed %]>
+ <label class="inline" for="form_fixed">[% loc('This problem has been fixed') %]</label>
+ </div>
+
+ [% END %]
+ [% END %]
+
+ [% IF c.cobrand.allow_photo_upload %]
+ <div id="fileupload_normalUI">
+ [% IF upload_fileid %]
+ <img align="right" src="/photo/[% upload_fileid %].temp.jpeg" alt="">
+ <p>[% loc('You have already attached a photo to this update, attaching another one will replace it.') %]</p>
+ <input type="hidden" name="upload_fileid" value="[% upload_fileid %]">
+ [% END %]
+ <label for="form_photo">[% loc('Photo') %]</label>
+ [% IF field_errors.photo %]
+ <p class='form-error'>[% field_errors.photo %]</p>
+ [% END %]
+ <input type="file" name="photo" id="form_photo">
+ </div>
+ [% END %]
+
+ [% IF c.user_exists %]
+
+ [% INCLUDE name %]
+
+ <input class="final-submit green-btn" type="submit" id="update_post" value="[% loc('Post') %]">
+
+
+ [% ELSE %]
+
+ <label for="form_rznvy">[% loc('Email' ) %]</label>
+ [% IF field_errors.email %]
+ <p class='form-error'>[% field_errors.email %]</p>
+ [% END %]
+ <input type="email" name="rznvy" id="form_rznvy" value="[% update.user.email | html %]" placeholder="[% loc('Your email address' ) %]" required>
+
+ <div id="form_sign_in">
+ <h3>[% loc("Now to submit your update&hellip;") %]</h3>
+ <h2>[% loc("Do you have a FixMyStreet password?") %]</h2>
+
+ <div id="form_sign_in_yes" class="form-box">
+ <h5>[% loc('<strong>Yes</strong> I have a password') %]</h5>
+
+ <label class="hidden-js n" for="password_sign_in">[% loc('Yes I have a password') %]</label>
+ [% IF field_errors.password %]
+ <p class='form-error'>[% field_errors.password %]</p>
+ [% END %]
+ <div class="form-txt-submit-box">
+ <input type="password" name="password_sign_in" id="password_sign_in" value="" placeholder="[% loc('Your password') %]">
+ <input class="green-btn" type="submit" name="submit_sign_in" id="submit_sign_in" value="[% loc('Post') %]">
+ </div>
+
+ <div class="checkbox-group">
+ <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 class="general-sidebar-notes" id="forgotten-pw">
+ <p class="dark">[% loc('Forgotten your password?') %]</p>
+ <p>[% loc('Confirm by email below, providing a new password at that point. When you confirm, your password will be updated.') %]</p>
+ </div>
+
+ </div>
+ <div id="form_sign_in_no" class="form-box">
+ <h5>[% loc('<strong>No</strong> Let me confirm my update by email') %]</h5>
+
+ [% INCLUDE name %]
+
+ <div class="general-sidebar-notes">
+ <p class="dark">[% loc('We never show your email') %]</p>
+ <p>[% loc('Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports.') %]</p>
+ </div>
+
+ <label for="password_register">[% loc('Password (optional)') %]</label>
+
+ <div class="form-txt-submit-box">
+ <input type="password" name="password_register" id="password_register" value="" placeholder="[% loc('Enter a password') %]">
+ <input class="green-btn" type="submit" name="submit_register" id="submit_register" value="[% loc('Post') %]">
+ </div>
+ </div>
+ </div>
+
+ [% END %]
+ </fieldset>
+ </form>
+</div>
+[% END %]
+
+[% BLOCK name %]
+ [% INCLUDE 'report/new/extra_name.html' %]
+ <label for="form_name">[% loc('Name') %]</label>
+ [% IF field_errors.name %]
+ <p class='form-error'>[% field_errors.name %]</p>
+ [% END %]
+ <input type="text" [% IF problem.bodies_str == '2482' %]class="validName" [% END %]name="name" id="form_name" value="[% update.name || c.user.name | html %]" placeholder="[% loc('Your name') %]">
+
+ <div class="checkbox-group">
+ <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' IF update.anonymous==0 OR (c.cobrand.default_show_name AND update.anonymous=='') %]>
+ <label class="inline" for="form_may_show_name">[% loc('Show my name publicly') %]</label>
+ </div>
+ <div class="checkbox-group">
+ <input type="checkbox" name="add_alert" id="form_add_alert" value="1"[% ' checked' IF add_alert %]>
+ <label class="inline" for="form_add_alert">[% loc( 'Alert me to future updates' ) %]</label>
+ </div>
+[% END %]
diff --git a/templates/web/fixmystreet/report/updates-sidebar-notes.html b/templates/web/fixmystreet/report/updates-sidebar-notes.html
index e59d61fec..9f2420392 100644
--- a/templates/web/fixmystreet/report/updates-sidebar-notes.html
+++ b/templates/web/fixmystreet/report/updates-sidebar-notes.html
@@ -1,5 +1,7 @@
<p>
- [% IF ( problem.council != '2482' AND !problem.council.match('2347') ) OR problem.send_method_used != 'Open311' %]
+ [% IF c.cobrand.moniker != 'fixamingata' %]
+ [% IF problem.send_method_used != 'Open311' OR c.cobrand.moniker != 'fixmystreet' OR ( problem.bodies_str != '2482' AND !problem.bodies_str.match('2347') ) %]
[% loc( 'Please note that updates are not sent to the council.' ) %]
[% END %]
+ [% END %]
[% loc( 'Your information will only be used in accordance with our <a href="/privacy">privacy policy</a>' ) %]</p>
diff --git a/templates/web/fixmystreet/reports/_extras.html b/templates/web/fixmystreet/reports/_extras.html
index e210b9c07..258e94ce7 100755
--- a/templates/web/fixmystreet/reports/_extras.html
+++ b/templates/web/fixmystreet/reports/_extras.html
@@ -5,11 +5,12 @@
'Lichfield District Council' = 'lichfielddc.fixmystreet.com'
'Reading Borough Council' = 'reading.fixmystreet.com'
'Southampton City Council' = 'southampton.fixmystreet.com'
+ 'Oxfordshire County Council' = 'fixmystreet.oxfordshire.gov.uk'
}
secure = {
'fix.bromley.gov.uk' = 's'
}
- site = fms_councils.${area.name}
+ site = fms_councils.${body.name}
%]
[% IF site %]
<tr align="center"
diff --git a/templates/web/fixmystreet/static/privacy.html b/templates/web/fixmystreet/static/privacy.html
index 92e096ef4..b280624ae 100755
--- a/templates/web/fixmystreet/static/privacy.html
+++ b/templates/web/fixmystreet/static/privacy.html
@@ -1,12 +1,13 @@
-[% INCLUDE 'header.html', title => loc('Frequently Asked Questions'), bodyclass => 'twothirdswidthpage' %]
+[% INCLUDE 'header.html', title = loc('Frequently Asked Questions'), bodyclass = 'twothirdswidthpage' %]
<div class="sticky-sidebar">
<aside>
<ul class="plain-list">
- <li><a href="/faq#faq">Frequently Asked Questions</a></li>
+ <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>
diff --git a/templates/web/fixmystreet/tracking_code.html b/templates/web/fixmystreet/tracking_code.html
index 52018b312..9d8c00d3c 100644
--- a/templates/web/fixmystreet/tracking_code.html
+++ b/templates/web/fixmystreet/tracking_code.html
@@ -1,17 +1,25 @@
[% IF c.config.BASE_URL == "http://www.fixmystreet.com" %]
<script type="text/javascript">
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-660910-4']);
- _gaq.push(['_setDomainName', '.fixmystreet.com']);
- _gaq.push (['_gat._anonymizeIp']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
+ga('create', 'UA-660910-4', {'cookieDomain': '.fixmystreet.com'});
+ga('set', 'anonymizeIp', true);
+[% IF created_report %]
+ga(function(tracker) {
+ var page = tracker.get('location');
+ var extra = '';
+ if ( page.indexOf('?') != -1 ) {
+ extra = '&created_report=1';
+ } else {
+ extra = '?created_report=1';
+ }
+ tracker.set('location', page + extra);
+});
+[% END %]
+ga('send', 'pageview');
</script>
[% ELSE %]
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
new file mode 100644
index 000000000..68c38c030
--- /dev/null
+++ b/templates/web/oxfordshire/around/intro.html
@@ -0,0 +1 @@
+ <h1 class="main">Find and report road or street problems</h1>
diff --git a/templates/web/oxfordshire/faq/faq-en-gb.html b/templates/web/oxfordshire/faq/faq-en-gb.html
new file mode 100755
index 000000000..3aa87e229
--- /dev/null
+++ b/templates/web/oxfordshire/faq/faq-en-gb.html
@@ -0,0 +1,234 @@
+[% 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="#practical">Practical Questions</a></li>
+ <li><a href="#organisation">Acknowledgement</a></li>
+ <li><a href="/privacy">Privacy and cookies</a></li>
+ <li><a href="/contact">Contact FixMyStreet</a></li>
+ </ul>
+ </aside>
+</div>
+
+<h1><a name="faq"></a>Frequently Asked Questions</h1>
+<dl>
+ <dt>How can I report a pothole, street or road problem?</dt>
+ <dd>
+ <p>
+ This easy to use web site is designed to help Oxfordshire residents to report,
+ view, or discuss local highway faults, including potholes, directly and quickly
+ to us by simply locating them on a map. You can do this by using your computer
+ or your mobile phone.
+ </p>
+ <p>
+ Please report one problem at a time; you will be given an opportunity at the end
+ to report another problem using the personal details previously entered.
+ </p>
+ <p>
+ If you are reporting an emergency please do not report it online, but ring our
+ Customer Service Centre on <strong>0845&nbsp;310&nbsp;111</strong>.
+ </p>
+ <p>
+ Here is a <a href="http://vimeo.com/65813425">short video</a>
+ about how you can use our web site to report road and street problems.
+ </p>
+ </dd>
+
+ <dt>What sort of problems can I report?</dt>
+ <dd>
+ <p>
+ You can report faults linked to amenities or problems that are broken or dirty,
+ damaged or dumped, or need fixing, cleaning or clearing such as:
+ </p>
+ <ul>
+ <li>Abandoned vehicles
+ <li>Dog Fouling
+ <li>Flyposting or graffiti
+ <li>Flytipping or litter
+ <li>Streetcleaning, such as broken glass in a cycle lane
+ <li>Unlit lampposts
+ <li>Potholes
+ </ul>
+ </dd>
+ <dt>What isn&rsquo;t it for?</dt>
+ <dd>
+ <p>
+ The web site is not a way of getting in touch with the council for all issues
+ — please use it only for problems highlighted above.
+ </p>
+ <p>
+ As we often route problems via our cleansing services or highways departments,
+ using the site for other matters may result in a delay in your report getting
+ to the right people.
+ </p>
+ <div style="margin-left:1.5em;">
+ <p>
+ <strong>You will need to contact the county council directly for</strong>:
+ </p>
+ <ul>
+ <li>Any urgent or emergency problems
+ <li>Complaining about the council
+ <li>Proposals for speed bumps/ CCTV/ pedestrian crossings/ new road layouts/ etc.
+ </ul>
+ <p>
+ <strong>You will need to contact your district council directly for problems such as:</strong>:
+ </p>
+ <ul>
+ <li>Anti-social behaviour
+ <li>Noise pollution or barking dogs
+ <li>Fires and smoke/smell pollution
+ <li>Missing wheelie bins or recycling boxes or missed rubbish collections
+ <li>Proposals for speed bumps/ CCTV/ pedestrian crossings/ new road layouts/ etc.
+ <li>Complaining about your neighbours
+ <li>Joy riding, drug taking, animal cruelty, or other criminal activity
+ </ul>
+ </div>
+ </dd>
+
+ <dt><a name="pothole"></a>Should I report a pothole on this site, or call?</dt>
+ <dd>
+ <p>
+ <strong>Please call us on 0845 310 1111 for urgent enquiries.</strong>
+ </p>
+ <p>
+ Potholes may need urgent attention if they are more than 40 millimetres in depth and/or
+ 120 millimetres in width, or, as a simple guide:
+ </p>
+ <ul>
+ <li>The depth of a milk bottle
+ <li>The size of a dustbin lid
+ <li>The depth of a tennis ball, size of a dinner plate and on a busy carriageway
+ <li>The depth of a coke can on a pathway or busy carriageway
+ <li>The depth of a coke can and the size of a dinner plate on a quiet carriageway
+ </ul>
+ <p>
+ If a pothole has been outlined with paint it has already been inspected by our team
+ and programmed to be fixed, so you don't need to report it.
+ </p>
+ <p>
+ All other significant potholes can be reported on the map. Uploaded photos
+ and locations from your smart phone or tablet, in particular, can greatly
+ assist our Highways department in determining pothole repair priorities.
+ </p>
+ <p>
+ The level of response is dependent on the location, size and risk the
+ pothole poses to public safety. This may result in the pothole either
+ being repaired within 28 days if it is identified as a safety risk;
+ or being repaired as part of other programmed works; or being monitored
+ as part of the routine inspections programme as the risk to public safety
+ is not sufficient to merit any immediate action.
+ </p>
+ </dd>
+
+ <dt>How do I use the reporting tool on the site?</dt>
+ <dd>
+ After entering a postcode or location, you will then be presented with a map of
+ that area. You can then view problems already reported in that area, or report new
+ ones of your own simply by clicking on the map at the location of the problem.
+ </dd>
+
+ <dt>How are the problems solved?</dt>
+ <dd>
+ They are reported to us automatically. We then resolve the problem the way we
+ normally would and update the fault on the map.
+ </dd>
+
+ <dt>What does the map show?</dt>
+ <dd>
+ The map shows all faults submitted online. You can view the exact location of
+ each fault and see its current status.
+ </dd>
+
+ <dt>What updates will I receive?</dt>
+ <dd>
+ <p>
+ When you record a fault you can sign up to receive updates and you will
+ receive an initial email to acknowledge the report.
+ </p>
+ <p>
+ You will then receive an email every time that fault is updated. This could be when
+ a member of the public posts an update onto the fault or when we post a status update.
+ </p>
+ <p>
+ Road problems that are the responsibility of our Highways department, such as potholes,
+ will receive automatic updates at different stages. You will receive an email when the
+ problem has been inspected and another one when the fault is fixed.
+ </p>
+ <p>
+ Some faults may be marked as referred when they are not the responsibility of Oxfordshire County Council,
+ for example problems such as graffiti or rubbish which are the responsibility of the District
+ Council for that area.
+ </p>
+ <p>
+ All of these updates will also be posted on the mapped fault so that anyone can see the status of any
+ fault recorded by clicking on it on the map.
+ </p>
+ </dd>
+
+ <dt>How can I get an update on a fault?</dt>
+ <dd>
+ <p>
+ When you record a fault you can sign up to receive updates. You will then receive an initial
+ email to acknowledge the report. In time, you will receive a further email when the problem is
+ assigned for inspection, one if the problem needs to be referred to another department or
+ organisation, and a final email when it is fixed or requires no further work.
+ </p>
+ <p>
+ These updates will also be posted on the mapped fault so that anyone can see the status of
+ any fault recorded by clicking on it on the map.
+ </p>
+ </dd>
+
+ <dt>Can I report a fault on my mobile?</dt>
+ <dd>
+ <p>
+ Yes, you can view our website on your phone or tablet and it will automatically adapt to the
+ size of your screen.
+ </p>
+ </dd>
+</dl>
+
+<a name="practical"></a>
+<dl>
+ <dt>Inappropriate use</dt>
+ <dd>
+ Oxfordshire County Council is not responsible for the content and
+ accuracy of material submitted by its users. Oxfordshire County Council will monitor
+ this website for instances of inappropriate use, and reserves the right to moderate
+ comments if such instances occur.
+ </dd>
+
+ <dt>Why does the site use kilometres for measurements?</dt>
+ <dd>
+ The maps are from Ordnance Survey who based their grid reference
+ system on measurements in metres and kilometres.
+ </dd>
+
+ <dt>How do I report a fault outside of Oxfordshire?</dt>
+ <dd>
+ The map only shows locations within Oxfordshire to keep it locally focussed.
+ </dd>
+</dl>
+
+<a name="organisation"></a>
+<dl>
+ <dt>Acknowledgement</dt>
+ <dd>
+ This site 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>.
+ FixMyStreet is the project of a registered charity mySociety which has grown out of the community of
+ volunteers who built sites like <a href="http://www.theyworkforyou.com/">TheyWorkForYou.com</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. Their first project
+ was <a href="http://www.writetothem.com/">WriteToThem</a>, where you can write to any of your
+ elected representatives, for free.
+ </dd>
+</dl>
+<p>
+ You can find out more about FixMyStreet at <a href="http://www.fixmystreet.com">www.fixmystreet.com</a>.
+</p>
+<p>&nbsp;<p>
+
+[% INCLUDE 'footer.html' pagefooter = 'yes' %]
diff --git a/templates/web/oxfordshire/footer.html b/templates/web/oxfordshire/footer.html
new file mode 100644
index 000000000..29146d935
--- /dev/null
+++ b/templates/web/oxfordshire/footer.html
@@ -0,0 +1,49 @@
+ [% IF pagefooter %]
+ <footer role="content-info">
+ <p><a href="/privacy">Privacy and cookies</a></p>
+ </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/for-councils/fixmystreet/">Powered by <img src="/cobrands/oxfordshire/images/fms-logo-105x20.png" alt="FixMyStreet"></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 -->
+ <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/header.html b/templates/web/oxfordshire/header.html
new file mode 100644
index 000000000..67afb2334
--- /dev/null
+++ b/templates/web/oxfordshire/header.html
@@ -0,0 +1,124 @@
+<!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">
+
+[% 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)">
+ [% 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/oxfordshire/position_map.js') %]" charset="utf-8"></script>
+ [% INCLUDE 'common_header_tags.html', js_override = '/cobrands/fixmystreet/fixmystreet.js', site_title = 'FixMyStreet' %]
+ [% extra_js %]
+
+ [% 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' %]
+
+ </head>
+ <body class="[% bodyclass | html IF bodyclass %]">
+<div id="oxford-wrapper">
+ <div id="oxford-header" class="desk-only oxford-left">
+ <a href="http://www.oxfordshire.gov.uk/" title="Home" class="logo">Oxfordshire County Council<span></span></a>
+ <span id="oxford-links">
+ <a href="http://www.oxfordshire.gov.uk/" title="">Oxfordshire County Council home</a>
+ </span>
+ <div style="clear:both"></div>
+ <span class="header"><a href="/">Report a road or street problem</a></span>
+ <div class="oxford-user">
+ <p>
+ [% IF c.user_exists %]
+ [% tprintf(loc('Hi %s'), c.user.name || c.user.email) %]
+ <a href="/auth/sign_out">[% loc('sign out') %]</a>
+ [% END %]
+ </p>
+ </div>
+
+
+ <div id="navigation">
+ <div class="menubar">
+ <div class="menu-inner">
+ <ul class="menu">
+ <li>
+ <[% IF c.req.uri.path == '/' %]span[% ELSE %]a href="/"[% END %]>[% "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/Oxfordshire' %]span[% ELSE %]a href="/reports/Oxfordshire"[% 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>
+
+
+
+
+ </div> <!-- end of oxford header -->
+<!--
+ <div id="oxford-main-menu" class="desk-only">
+ <ul class="tabs">
+ <li class="home first"></li>[%
+ %]<li></li>[%
+ %]<li></li>[%
+ %]<li></li>[%
+ %]<li class="last"></li>
+ </ul>
+ </div>
+-->
+
+ <div class="wrapper">
+
+ <div class="table-cell">
+ <header id="site-header" role="banner">
+ <div class="container">
+ <a href="/" id="site-logo">Oxfordshire FixMyStreet</a>
+ <a href="#main-nav" id="nav-link">Main Navigation</a>
+ </div>
+ </header>
+
+ <div id="user-meta">
+ [% 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>
+ [% ELSE %]
+ <!-- <a href="/auth">[% loc('Sign in') %]</a> -->
+ [% END %]
+ </div>
+
+ [% pre_container_extra %]
+
+ <div class="container">
+ <div class="content[% " $mainclass" | html IF mainclass %]" role="main">
+
+ <!-- [% INCLUDE 'debug_header.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
new file mode 100644
index 000000000..f205418d7
--- /dev/null
+++ b/templates/web/oxfordshire/report/new/councils_text_all.html
@@ -0,0 +1,5 @@
+<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/oxfordshire/report/new/fill_in_details_text.html b/templates/web/oxfordshire/report/new/fill_in_details_text.html
new file mode 100644
index 000000000..065005956
--- /dev/null
+++ b/templates/web/oxfordshire/report/new/fill_in_details_text.html
@@ -0,0 +1,6 @@
+Oxfordshire County Council won’t be able to help unless you leave as much
+detail as you can. Please describe the exact location of the problem (e.g. in
+the carriageway), what it is, how long it has been there, a description and a
+photo of the problem if you have one. Please be aware that you can only attach
+one picture so ensure that you provide a picture that clearly shows the
+location not just the fault.
diff --git a/templates/web/oxfordshire/report/new/notes.html b/templates/web/oxfordshire/report/new/notes.html
new file mode 100644
index 000000000..5fa154ed9
--- /dev/null
+++ b/templates/web/oxfordshire/report/new/notes.html
@@ -0,0 +1,10 @@
+<p>[% loc("Please note:") %]</p>
+
+<ul class="plain-list">
+ <li>[% loc("We will only use your personal information in accordance with our <a href=\"/privacy\">privacy policy.</a>") %]</li>
+ <li>[% loc("Please be polite, concise and to the point.") %]</li>
+ <li>[% loc("Please do not be abusive&nbsp;&mdash; abusing your council devalues the service for all users.") %]</li>
+ <li>[% loc("Writing your message entirely in block capitals makes it hard to read, as does a lack of punctuation.") %]</li>
+ <li>Remember that FixMyStreet is primarily for reporting physical problems that can be fixed. Remember that you can contact Oxfordshire County Council for additional issues that are not covered on this reporting facility.</li>
+</ul>
+
diff --git a/templates/web/oxfordshire/tracking_code.html b/templates/web/oxfordshire/tracking_code.html
new file mode 100644
index 000000000..1ed17651b
--- /dev/null
+++ b/templates/web/oxfordshire/tracking_code.html
@@ -0,0 +1,22 @@
+[% IF c.config.BASE_URL == "http://www.fixmystreet.com" %]
+
+<script type="text/javascript">
+
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-22094787-2']);
+ _gaq.push(['_setDomainName', '.oxfordshire.gov.uk']);
+ _gaq.push(['_setCustomVar',1,'level1','Roads and transport',3]);
+ _gaq.push(['_setCustomVar',2,'level2','FixMyStreet',3]);
+ _gaq.push(['_trackPageview']);
+ jQuery(document).ready( function () {
+ jQuery.occ.gaico({
+ messageIcon: '/cms/sites/all/themes/publicsite/images/gaico_exclamation.png',
+ permanentMessageIcon: '/cms/sites/all/themes/publicsite/images/gaico_question.png'
+ });
+ });
+
+</script>
+
+[% ELSE %]
+<!-- Tracking code not inserted as "[% c.config.BASE_URL %]" not "http://www.fixmystreet.com" -->
+[% END %]
diff --git a/templates/web/reading/header.html b/templates/web/reading/header.html
index 85117b57e..23bafd726 100644
--- a/templates/web/reading/header.html
+++ b/templates/web/reading/header.html
@@ -12,7 +12,7 @@
<link rel="stylesheet" type="text/css" href="[% version('/css/core.css') %]">
<link rel="stylesheet" type="text/css" href="[% version('/cobrands/reading/css/reading.css') %]" />
<link rel="stylesheet" type="text/css" href="[% version('/cobrands/reading/css/print3rdParty.css') %]" media="print"/>
- <link rel="stylesheet" type="text/css" href="[% version('/cobrands/reading/css/css.css') %]" />
+ <link rel="stylesheet" type="text/css" href="[% version('/cobrands/reading/css.css') %]" />
[% INCLUDE 'common_header_tags.html', site_title = 'Reading City Council FixMyStreet' %]
diff --git a/templates/web/seesomething/auth/general.html b/templates/web/seesomething/auth/general.html
new file mode 100644
index 000000000..4fe2829d3
--- /dev/null
+++ b/templates/web/seesomething/auth/general.html
@@ -0,0 +1,46 @@
+[% INCLUDE 'header.html', title = loc('Sign in or create an account') %]
+
+<h1>[% loc('Sign in') %]</h1>
+
+<form action="[% c.uri_for() %]" method="post" name="general_auth" class="validate">
+ <fieldset>
+ <input type="hidden" name="r" value="[% c.req.params.r | html %]">
+
+ [% IF email_error;
+
+ # other keys include fqdn, mxcheck if you'd like to write a custom error message
+
+ errors = {
+ missing => loc('Please enter your email'),
+ other => loc('Please check your email address is correct')
+ };
+
+ loc_email_error = errors.$email_error || errors.other;
+ END %]
+ <label class="n" for="email">[% loc('Email') %]</label>
+ [% IF loc_email_error %]
+ <div class="form-error">[% loc_email_error %]</div>
+ [% ELSIF sign_in_error %]
+ <div class="form-error">[% loc('There was a problem with your email/password combination. If you cannot remember your password, or do not have one, please fill in the &lsquo;sign in by email&rsquo; section of the form.') %]</div>
+ [% END %]
+ <input type="email" class="required email" id="email" name="email" value="[% email | html %]" placeholder="[% loc('Your email address') %]">
+
+ <div class="form-txt-submit-box">
+ <label class="n" for="password_sign_in">Password</label>
+ <input type="password" name="password_sign_in" id="password_sign_in" value="" placeholder="[% loc('Your password') %]">
+ </div>
+
+ <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 class="form-txt-submit-box">
+ <input class="green-btn" type="submit" name="sign_in" value="[% loc('Sign in') %]">
+ </div>
+
+ </fieldset>
+</form>
+
+
+[% INCLUDE 'footer.html' %]
diff --git a/templates/web/fixmybarangay/auth/sign_out.html b/templates/web/seesomething/auth/sign_out.html
index 11888089a..ef1d11b58 100644
--- a/templates/web/fixmybarangay/auth/sign_out.html
+++ b/templates/web/seesomething/auth/sign_out.html
@@ -2,7 +2,6 @@
<h1>[% loc('You have been signed out') %]</h1>
-<p>Please feel free to <a href="[% c.uri_for('/auth') %]">sign in again</a>, or
-go back to the <a href="/">FixMyBarangay front page</a>.</p>
+<p>Please feel free to <a href="[% c.uri_for('/auth', { r => 'admin/stats' } ) %]">sign in again</a></p>
[% INCLUDE 'footer.html' %]
diff --git a/templates/web/seesomething/js/validation_strings.html b/templates/web/seesomething/js/translation_strings.html
index 64251c163..0ae40bf97 100644
--- a/templates/web/seesomething/js/validation_strings.html
+++ b/templates/web/seesomething/js/translation_strings.html
@@ -1,4 +1,4 @@
- validation_strings = {
+ translation_strings = {
detail: '[% loc('Please enter some details') | replace("'", "\\'") %]',
name: {
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("'", "\\'") %]'
@@ -11,5 +11,5 @@
},
email: {
email: '[% loc('Please enter a valid email') | replace("'", "\\'") %]'
- },
+ }
};
diff --git a/templates/web/seesomething/js/validation_rules.html b/templates/web/seesomething/js/validation_rules.html
index 5517cd8e8..cef5fce7e 100644
--- a/templates/web/seesomething/js/validation_rules.html
+++ b/templates/web/seesomething/js/validation_rules.html
@@ -6,7 +6,6 @@
$(function(){
$('#submit_noname').click( function(e) {
- alert('click');
$('#form_category').addClass('required validCategory').removeClass('valid');
$('#form_subcategory').addClass('required validCategory').removeClass('valid');
});
diff --git a/templates/web/seesomething/report/new/category.html b/templates/web/seesomething/report/new/category.html
index 26d750b52..8c837a047 100644
--- a/templates/web/seesomething/report/new/category.html
+++ b/templates/web/seesomething/report/new/category.html
@@ -3,7 +3,7 @@
[% IF category;
category = category | lower;
END; %]
- <label for='form_category' class="select">[% category_label | html %]</label>
+ <label for='form_category' class="select">[% loc('Category') %]</label>
<select name='category' data-theme="c" id='form_category'[% ' onchange="form_category_onchange()"' IF category_extras.size %]>
[% FOREACH cat_op IN category_options %]
[% cat_op_lc = cat_op | lower %]
diff --git a/templates/web/southampton/front/news.html b/templates/web/southampton/front/news.html
new file mode 100644
index 000000000..79d51542c
--- /dev/null
+++ b/templates/web/southampton/front/news.html
@@ -0,0 +1,9 @@
+<div class="news">
+<p>Fix My Street is for reporting non-urgent, local problems like graffiti, fly
+tipping, or broken paving slabs; reports will be reviewed within 48 working
+hours.</p>
+
+<p>If you are reporting an urgent or dangerous matter, for example a fallen
+tree or a very deep pot hole that may cause damage, please contact us
+directly on 023 8083 3008</p>
+</div>
diff --git a/templates/web/southampton/header.html b/templates/web/southampton/header.html
index e02083a99..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/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/southampton/report/new/category.html b/templates/web/southampton/report/new/category.html
index 7c7748c78..0a7703bbb 100644
--- a/templates/web/southampton/report/new/category.html
+++ b/templates/web/southampton/report/new/category.html
@@ -1,6 +1,6 @@
[% FILTER collapse %]
[% IF category_options.size %]
- <label for='form_category'>[% category_label | html %]</label>
+ <label for='form_category'>[% loc('Category') %]</label>
<select name='category' id='form_category'>
[% FOREACH cat_op IN category_options %]
[% NEXT IF cat_op == 'Abandoned vehicles' %]
diff --git a/templates/web/stevenage/around/intro.html b/templates/web/stevenage/around/intro.html
index 488b587da..9c3a117f1 100644
--- a/templates/web/stevenage/around/intro.html
+++ b/templates/web/stevenage/around/intro.html
@@ -1,2 +1,2 @@
<h1>[% loc('Report, view, or discuss local problems') %]</h1>
- <h2>(like Graffiti, Fly Tipping and Abandoned Vehicles)</h2>
+ <h2>(Like Graffiti, Fly Tipping, Street Cleansing and Abandoned Vehicles)</h2>
diff --git a/templates/web/trinidadtobago/footer.html b/templates/web/trinidadtobago/footer.html
new file mode 100644
index 000000000..4a8144ccf
--- /dev/null
+++ b/templates/web/trinidadtobago/footer.html
@@ -0,0 +1,38 @@
+ [% IF pagefooter %]
+ <footer role="content-info">
+ <p><a href="/privacy">Privacy and cookies</a></p>
+ </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>[%
+ %]<li><a href="http://mysociety.org/donate/">Donate</a></li>[%
+ %]<li><a href="http://www.mysociety.org/projects/">Our Sites</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/zerotb/around/_updates.html b/templates/web/zerotb/around/_updates.html
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/templates/web/zerotb/around/_updates.html
diff --git a/templates/web/zerotb/around/around_map_list_items.html b/templates/web/zerotb/around/around_map_list_items.html
new file mode 100644
index 000000000..225ddde6e
--- /dev/null
+++ b/templates/web/zerotb/around/around_map_list_items.html
@@ -0,0 +1,9 @@
+[% IF around_map.size %]
+ [% FOREACH p IN around_map %]
+ [% INCLUDE 'report/_item.html'
+ problem = p.problem,
+ dist = tprintf("%.1f", (p.distance || 0) ) %]
+ [% END %]
+[% ELSE %]
+ <li><p>[% loc('No clinics found.') %]</p></li>
+[% END %]
diff --git a/templates/web/zerotb/around/intro.html b/templates/web/zerotb/around/intro.html
new file mode 100644
index 000000000..07d018f57
--- /dev/null
+++ b/templates/web/zerotb/around/intro.html
@@ -0,0 +1 @@
+<h2>[% loc('If a hospital, clinic or other health facility near you is experiencing <b>stockouts of tuberculosis drugs</b> you can use this form to report it') %]</h2>
diff --git a/templates/web/zerotb/around/location_error.html b/templates/web/zerotb/around/location_error.html
new file mode 100644
index 000000000..45428e723
--- /dev/null
+++ b/templates/web/zerotb/around/location_error.html
@@ -0,0 +1,8 @@
+<p class="form-error">
+[% IF location_error_no_areas %]
+ [% loc('This location seems to be outside the Dehli area.') %]
+[% ELSE %]
+ [% location_error %]
+[% END %]
+</p>
+
diff --git a/templates/web/zerotb/around/on_map_list_items.html b/templates/web/zerotb/around/on_map_list_items.html
new file mode 100644
index 000000000..838e2e9fa
--- /dev/null
+++ b/templates/web/zerotb/around/on_map_list_items.html
@@ -0,0 +1,7 @@
+[% IF on_map.size %]
+ [% FOREACH problem IN on_map %]
+ [% INCLUDE 'report/_item.html' %]
+ [% END %]
+[% ELSE %]
+ <li><p>[% loc('No clinics found.') %]</p></li>
+[% END %]
diff --git a/templates/web/zerotb/around/postcode_form.html b/templates/web/zerotb/around/postcode_form.html
new file mode 100644
index 000000000..484f41c5c
--- /dev/null
+++ b/templates/web/zerotb/around/postcode_form.html
@@ -0,0 +1,36 @@
+<div id="front-main">
+ <div id="front-main-container">
+ [% INCLUDE 'around/intro.html' %]
+
+ [%
+ question = c.cobrand.enter_postcode_text || loc('Enter a nearby street name and area');
+ %]
+
+ <div id="postcodeForm">
+ <form action="[% c.uri_for('/around') %]" method="get" name="postcodeForm">
+ <label for="pc">[% question %]:</label>
+ <div>
+ <input type="text" name="pc" value="[% pc | html %]" id="pc" size="10" maxlength="200" placeholder="[% tprintf(loc('e.g. ‘%s’ or ‘%s’'), c.cobrand.example_places) %]">
+ <input type="submit" value="[% loc('Go') %]" id="sub">
+ </div>
+
+ [% IF partial_token %]
+ <input type="hidden" name="partial" value="[% partial_token.token %]">
+ [% END %]
+
+ </form>
+ <form action="[% c.uri_for( '/report' ) %]/" method="get" name="clinicForm">
+ <label for="clinic">[% loc('... or select a clinic by name' ) %]</label>
+ <div>
+ <select id="clinic" name="clinic">
+ [% FOR clinic IN c.cobrand.get_clinic_list %]
+ <option value="[% clinic.id %]">[% clinic.title %]</option>
+ [% END %]
+ </select>
+ <input class="green-btn" type="submit" value="[% loc('Go') %]" id="show_report">
+ </div>
+ </form>
+ </div>
+
+ </div>
+</div>
diff --git a/templates/web/zerotb/around/tabbed_lists.html b/templates/web/zerotb/around/tabbed_lists.html
new file mode 100644
index 000000000..8b8e8753e
--- /dev/null
+++ b/templates/web/zerotb/around/tabbed_lists.html
@@ -0,0 +1,14 @@
+<menu id="problems-nav" class="tab-nav">
+ <ul>
+ <li><a href="#current">[% loc('Clinics on the map') %]</a></li>
+ <li><a href="#current_near">[% loc( 'Clinics nearby' ) %]</a></li>
+ </ul>
+</menu>
+
+<ul id="current" class="issue-list-a tab">
+ [% INCLUDE "around/on_map_list_items.html" %]
+</ul>
+
+<ul id="current_near" class="issue-list-a tab">
+ [% INCLUDE "around/around_map_list_items.html" %]
+</ul>
diff --git a/templates/web/zerotb/faq/faq-en-gb.html b/templates/web/zerotb/faq/faq-en-gb.html
new file mode 100644
index 000000000..b2607f769
--- /dev/null
+++ b/templates/web/zerotb/faq/faq-en-gb.html
@@ -0,0 +1,124 @@
+[% INCLUDE 'header.html', title => loc('Frequently Asked Questions') %]
+
+<h1>Frequently Asked Questions</h1>
+ <dl>
+ <dt>What is this website?</dt>
+ <dd>This site was created to help people report anti-tuberculosis drug stockouts in Delhi. It was created in response to the ongoing stockouts reported in India last year (see here). The information will be used to encourage the government to address stockouts as they arise.</dd>
+ <dt>What is FixMyStreet?</dt>
+ <dd>FixMyStreet is a site to help people report, view, or discuss local problems they’ve found by simply locating them on a map. It launched in early February 2007.</dd>
+ <dt>How do I get in touch with FixMyStreet?</dt>
+ <dd>Here’s our <a href="[% c.uri_for( '/contact' ) %]">contact page</a>.</dd>
+ <dt>What sort of problems should I report with this site?</dt>
+ <dd>This site is primarily for reporting barriers to TB treatment clinics such as drug stockouts.</dd>
+ <dt>How do I use the site?</dt>
+ <dd>You can either enter a location in Delhi or choose a specific clinic name. If you enter a location, you will be presented with a map of that area. You can then search for a TB clinic in that area to report a stockout.</dd>
+ <dt>How are the problems solved?</dt>
+ <dd>They are anonymously reported to the District TB Officer by email. They are also shared with local activists and media to generate awareness of the issue and encourage the government to take action. We respect your privacy: your name and email will NOT be given to any of these groups without your written permission.</dd>
+ <dt>Is it free?</dt>
+ <dd>The site is free to use, yes. FixMyStreet is run
+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 the site on my mobile?</dt>
+ <dd>
+ <p>The website will already work on your mobile phone, adapting to
+ the size of your screen automatically.
+ </dd>
+ </dl>
+
+ <h2>Practical Questions</h2>
+ <dl>
+ <dt>I work with a TB clinic, where do you send the reports?</dt>
+ <dd>You can contact us to find out where reports go at the moment. Also contact us to update the address or addresses we use.</dd>
+ <dt>Do you remove silly or illegal content?</dt>
+ <dd>FixMyStreet is 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>Why can&rsquo;t I zoom out more on the reporting map?</dt>
+ <dd>We want to keep the site locally focused, so restrict the ability to
+ move radically between areas.</dd>
+
+ <dt>This site is great – why aren&rsquo;t you better publicised?</dt>
+ <dd>As a tiny charity we simply don&rsquo;t have a publicity budget, and we
+ rely on word of mouth to advertise the site. We have a whole <a
+ href="posters/">array of posters, flyers and badges</a> if you&rsquo;d like
+ to publicise us on the web or in your local area, and why not write to your
+ local paper to let them know about us?</dd> </dl>
+
+ <h2><a name="privacy"></a>Privacy Questions</h2>
+ <dl>
+ <dt>Who gets to see my name and email address?</dt>
+ <dd>
+ Due to the sensitive nature of the stockout situation, if you submit a report, we will NOT share your name or email with anyone unless you give us permission. We may, however, send other information from your report (such as the clinic name and any description you write about the stockouts) to the TB officers with the government or activists in order to raise awareness issue.
+ The only people who will be able to see your name and email address will be the FixMyStreet administrators and team members, and they will never use it for anything other than to help administer FixMyStreet. We will never give or sell your email address to anyone else, unless we are obliged to by law. Your name, given in the name field, will not be published anywhere unless you specifically give us permission to.
+ </dd>
+ <dt>Will you send nasty, brutish spam to my email address?</dt>
+ <dd>Never. We will email you if someone leaves an update on a
+problem you&rsquo;ve reported, and send you a questionnaire email four weeks
+after you submit a problem, asking for a status update; we&rsquo;ll only ever
+send you emails in relation to your problem.</dd>
+ </dl>
+ <h2>Organisation Questions</h2>
+ <dl>
+ <dt>Who built FixMyStreet?</dt>
+ <dd>This site 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.com</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. Our first project
+was <a href="http://www.writetothem.com/">WriteToThem</a>, where you can write to any of your
+elected representatives, for free. 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, UK.</dd>
+ <dt><img src="/i/moj.png" align="right" alt="Ministry of Justice" hspace="10">Who pays for it?</dt>
+ <dd>FixMyStreet was originally paid for via the Department for
+ Constitutional Affairs Innovations Fund. It is now funded by a variety of means, from commercial
+ work to <a href="http://www.mysociety.org/donate/">donations</a>.</dd>
+ <dt>Do you need any help with the project?</dt>
+ <dd>Yes, we can use help in all sorts of ways, technical or
+non-technical. Please see our <a
+href="http://www.mysociety.org/helpus/">Get Involved page</a>.</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 software behind this site is open source, and available
+to you mainly under the GNU Affero GPL software license. You can <a
+href="http://github.com/mysociety/fixmystreet">download the
+source code</a> and help us 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>
+<dt>I&rsquo;d prefer code in a different language?</dt>
+<dd>
+VisibleGovernment.ca wrote their own code for
+<a href="http://www.fixmystreet.ca/">http://www.fixmystreet.ca/</a>, which is
+written in GeoDjango and available under an MIT licence at <a
+href="http://github.com/visiblegovernment/django-fixmystreet/tree/master">github</a>.
+Or <a href="http://www.fixmystreet.org.nz/">FixMyStreet.org.nz</a> is written in
+Drupal.
+</p>
+</dd>
+ <dt>People build things, not organisations. Who <em>actually</em> built it?</dt>
+ <dd>Matthew Somerville and Francis Irving wrote the site,
+Chris Lightfoot wrote the tileserver and map cutter, Richard Pope created
+our pins, Deborah Kerr keeps things up-to-date and does user support,
+Ayesha Garrett designed our posters, and Tom Steinberg managed it all.
+
+Thanks also to
+<a href="http://www.ordnancesurvey.co.uk">Ordnance Survey</a> (for the maps,
+UK postcodes, and UK addresses &ndash; data &copy; Crown copyright, all
+rights reserved, Ministry of Justice 100037819&nbsp;2008),
+Yahoo! for their BSD-licensed JavaScript libraries, the entire free software
+community (this particular project was brought to you by Perl, PostgreSQL,
+and the number 161.290) and <a
+href="http://www.bytemark.co.uk/">Bytemark</a> (who kindly host all
+our servers).
+
+Let us know if we&rsquo;ve missed anyone.</dd>
+ </dl>
+
+[% INCLUDE 'footer.html' %]
diff --git a/templates/web/zerotb/footer.html b/templates/web/zerotb/footer.html
new file mode 100644
index 000000000..c46a03878
--- /dev/null
+++ b/templates/web/zerotb/footer.html
@@ -0,0 +1,22 @@
+
+ </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="main-menu">
+ <li><[% IF c.req.uri.path == '/' %]span[% ELSE %]a href="/"[% END %] class="report-a-problem-btn"
+ >[% loc("Report a Stockout") %]</[% c.req.uri.path == '/' ? '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/zerotb/header_extra.html b/templates/web/zerotb/header_extra.html
new file mode 100644
index 000000000..23f061799
--- /dev/null
+++ b/templates/web/zerotb/header_extra.html
@@ -0,0 +1,18 @@
+<link rel="stylesheet" href="[% start %][% version('/js/select2/select2.css') %]" />
+<script type="text/javascript" src="[% start %][% version('/js/select2/select2.min.js') %]"></script>
+
+<script>
+$(document).ready(function() {
+ $("#clinic").select2({
+ placeholder: '[% loc('Enter a clinic name') %]',
+ allowClear: true,
+ });
+ $('#show_report').click(
+ function() {
+ var report = $('#clinic').select2('val');
+ document.location = '[% c.uri_for( '/report' ) %]/' + report;
+ return false;
+ }
+ );
+});
+</script>
diff --git a/templates/web/zerotb/header_logo.html b/templates/web/zerotb/header_logo.html
new file mode 100644
index 000000000..bcc690d97
--- /dev/null
+++ b/templates/web/zerotb/header_logo.html
@@ -0,0 +1,6 @@
+ <div id="site-logo">
+ <p><a href="/">[% loc('<span class="orange">Report</span> Delhi TB drug <b>stockouts</b>') %]</a></p>
+ [% IF c.req.uri.path == '/' %]
+ <p id="brought-to-you">Brought to you by <a href="http://www.fixmystreet.org" id="fms-logo-small">FixMyStreet</a></p>
+ [% END %]
+ </div>
diff --git a/templates/web/zerotb/header_opengraph.html b/templates/web/zerotb/header_opengraph.html
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/templates/web/zerotb/header_opengraph.html
diff --git a/templates/web/zerotb/header_rss.html b/templates/web/zerotb/header_rss.html
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/templates/web/zerotb/header_rss.html
diff --git a/templates/web/zerotb/index-steps.html b/templates/web/zerotb/index-steps.html
new file mode 100644
index 000000000..2d49b8f28
--- /dev/null
+++ b/templates/web/zerotb/index-steps.html
@@ -0,0 +1,8 @@
+<h2>[% loc('How to report a stockout') %]</h2>
+
+<ol class="big-numbers">
+ <li>[% loc('Enter a Delhi chest clinic or street name and area') %]</li>
+ <li>[% loc('Locate the clinic on a map of the area') %]</li>
+ <li>[% loc('Enter details of the problem (optional)') %]</li>
+ <li>[% loc('We will send your stockout report to the district TB officer and to local activists to ensure action is taken') %]</li>
+</ol>
diff --git a/templates/web/zerotb/index.html b/templates/web/zerotb/index.html
new file mode 100644
index 000000000..754dcbabc
--- /dev/null
+++ b/templates/web/zerotb/index.html
@@ -0,0 +1,45 @@
+[%# Assumes fixmystreet cobrand is using FMS map template - for bonus points preload all the right map elements. %]
+[% map_js = BLOCK %]
+<script>
+yepnope.addPrefix( 'preload', function ( resource ) {
+ resource.noexec = true;
+ return resource;
+});
+Modernizr.load({
+ load: [
+ "preload![% version('/js/OpenLayers.fixmystreet.js') %]",
+ "preload![% version('/js/map-OpenLayers.js') %]",
+ "preload![% version('/js/map-bing-ol.js') %]",
+ "preload![% version('/js/jquery.ba-hashchange.min.js') %]"
+ ]
+});
+</script>
+[% END %]
+
+[% pre_container_extra = PROCESS 'around/postcode_form.html' %]
+[% INCLUDE 'header.html', title = '', bodyclass = 'frontpage fullwidthpage' %]
+
+[% IF error %]
+ <p class="form-error">[% error %]</p>
+[% END %]
+
+<div class="tablewrapper">
+ <div id="front-howto">
+ [% INCLUDE 'index-steps.html' %]
+ </div>
+
+ <div id="front-recently">
+ <h2>
+ [% loc('About stockouts') %]
+ </h2>
+
+ <section class="full-width">
+ <p>
+ [% loc('In 2013 India faced stockouts of anti-tuberculosis medicines, threatening to leave many patients across the country without access to life-saving treatment. Some government officials have denied that these drug stockouts exist. There is no simple mechanism for gathering drug shortage data, making accountability and transparency impossible. We aim to change this by enabling anyone in Delhi to report stockouts through this website.') %]
+ </p>
+ </section>
+
+ </div>
+</div>
+
+[% INCLUDE 'footer.html' pagefooter = 'yes' %]
diff --git a/templates/web/zerotb/report/_item.html b/templates/web/zerotb/report/_item.html
new file mode 100644
index 000000000..92fb8e8d8
--- /dev/null
+++ b/templates/web/zerotb/report/_item.html
@@ -0,0 +1,5 @@
+<li>
+<a class="text" href="[% c.uri_for('/report', problem.id ) %]">
+ <h4>[% problem.title | html %]</h4>
+</a>
+</li>
diff --git a/templates/web/zerotb/report/_main.html b/templates/web/zerotb/report/_main.html
new file mode 100644
index 000000000..189b4eeb5
--- /dev/null
+++ b/templates/web/zerotb/report/_main.html
@@ -0,0 +1,6 @@
+<div class="problem-header cf">
+ <h1>[% problem.title | html %]</h1>
+
+ [% add_links( problem.detail ) | html_para %]
+
+</div>
diff --git a/templates/web/zerotb/report/display.html b/templates/web/zerotb/report/display.html
new file mode 100644
index 000000000..9161fb586
--- /dev/null
+++ b/templates/web/zerotb/report/display.html
@@ -0,0 +1,34 @@
+[%
+ PROCESS "report/photo-js.html";
+ PROCESS "maps/${map.type}.html";
+
+ problem_title = problem.title_safe _ ' - ' _ loc('Viewing a Clinic');
+ INCLUDE 'header.html'
+ title = problem_title
+ robots = 'index, nofollow'
+ bodyclass = 'mappage';
+%]
+
+[% map_html %]
+
+</div>
+
+[% INCLUDE 'report/banner.html' %]
+
+[% IF c.flash.comment_created %]
+<p>
+[% loc('Your report has been sent') %]
+</p>
+[% END %]
+
+[% INCLUDE 'report/_main.html' %]
+
+<div class="shadow-wrap">
+ <ul id="key-tools">
+ <li><a class="chevron" id="key-tool-problems-nearby" href="[% c.uri_for( '/around', { lat => short_latitude, lon => short_longitude } ) %]">[% loc( 'Clinics nearby' ) %]</a></li>
+ </ul>
+
+</div>
+
+[% INCLUDE 'report/update-form.html' %]
+[% INCLUDE 'footer.html' %]
diff --git a/templates/web/zerotb/report/update-form.html b/templates/web/zerotb/report/update-form.html
new file mode 100644
index 000000000..b278b5f8d
--- /dev/null
+++ b/templates/web/zerotb/report/update-form.html
@@ -0,0 +1,64 @@
+<div id="update_form">
+ <h2>[% loc( 'Report a stockout') %]</h2>
+
+ <div class="general-sidebar-notes">
+ [% INCLUDE 'report/updates-sidebar-notes.html' %]
+ </div>
+
+ [% INCLUDE 'errors.html' %]
+
+ <form method="post" action="[% c.uri_for( '/report/update' ) %]" id="form_update_form" name="updateForm" class="validate"[% IF c.cobrand.allow_photo_upload %] enctype="multipart/form-data"[% END %]>
+ <fieldset>
+ <input type="hidden" name="submit_update" value="1">
+ <input type="hidden" name="id" value="[% problem.id | html %]">
+
+ <label for="form_update">[% loc( 'Details' ) %]</label>
+ [% IF field_errors.update %]
+ <div class='form-error'>[% field_errors.update %]</div>
+ [% END %]
+ <textarea rows="7" cols="30" name="update" id="form_update" placeholder="[% loc('Please write your update here') %]" required>[% update.text | html %]</textarea>
+
+ [% IF c.user_exists %]
+
+ [% INCLUDE name %]
+
+ <input class="final-submit green-btn" type="submit" id="update_post" value="[% loc('Post') %]">
+
+
+ [% ELSE %]
+
+ <label for="form_rznvy">[% loc('Email' ) %]</label>
+
+ <div class="general-sidebar-notes">
+ <p class="dark">[% loc('We never show your email or name') %]</p>
+ </div>
+
+ [% IF field_errors.email %]
+ <p class='form-error'>[% field_errors.email %]</p>
+ [% END %]
+ <input type="email" name="rznvy" id="form_rznvy" value="[% update.user.email | html %]" placeholder="[% loc('Your email address' ) %]" required>
+
+ <div id="form_sign_in">
+ <div id="form_sign_in_no">
+ [% INCLUDE name %]
+
+ <div class="form-txt-submit-box">
+ <input class="green-btn" type="submit" name="submit_register" id="submit_register" value="[% loc('Post') %]">
+ </div>
+ </div>
+ </div>
+
+ [% END %]
+ </fieldset>
+ </form>
+</div>
+
+[% BLOCK name %]
+ [% INCLUDE 'report/new/extra_name.html' %]
+ <label for="form_name">[% loc('Name') %]</label>
+ [% IF field_errors.name %]
+ <p class='form-error'>[% field_errors.name %]</p>
+ [% END %]
+ <input type="text" [% IF problem.bodies_str == '2482' %]class="validName" [% END %]name="name" id="form_name" value="[% update.name || c.user.name | html %]" placeholder="[% loc('Your name') %]">
+
+[% END %]
diff --git a/templates/web/zerotb/report/updates-sidebar-notes.html b/templates/web/zerotb/report/updates-sidebar-notes.html
new file mode 100644
index 000000000..28de7d4fa
--- /dev/null
+++ b/templates/web/zerotb/report/updates-sidebar-notes.html
@@ -0,0 +1,3 @@
+ <p>
+ [% loc( 'Please note that reports are sent to the clinic.' ) %]
+ [% loc( 'Your information will only be used in accordance with our <a href="/privacy">privacy policy</a>' ) %]</p>
diff --git a/templates/web/zurich/admin/body-form.html b/templates/web/zurich/admin/body-form.html
new file mode 100644
index 000000000..a31dffe7c
--- /dev/null
+++ b/templates/web/zurich/admin/body-form.html
@@ -0,0 +1,54 @@
+ <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">
+
+ <p>
+ <label for="name">[% loc('Name') %]</label>
+ <input type="text" name="name" id="name" value="[% body.name %]" size="50">
+ </p>
+
+ <p>
+ <label for="email">[% loc('Email') %]</label>
+ <input type="text" name="endpoint" id="email" value="[% body.endpoint %]" size="50">
+ </p>
+
+ <p>
+ <label for="parent">[% loc('Parent') %]</label>
+ <select name="parent" id="parent">
+ <option value=""> -- [% loc('Select a body') %] -- </option>
+ [% FOR b IN bodies %]
+ <option value="[% b.id %]"[% ' selected' IF body.parent.id == b.id %]>[% b.name %]</option>
+ [% END %]
+ </select>
+ </p>
+
+ <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>
+ [% END %]
+ </select>
+ </p>
+
+ <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 %]">
+ <input type="hidden" name="api_key" id="api_key" value="[% body.api_key %]">
+ <input type="hidden" id="send_comments" name="send_comments" value="[% body.send_comments %]">
+ <input type="hidden" name="comment_user_id" value="[% body.comment_user_id %]">
+ <input type="hidden" id="suppress_alerts" name="suppress_alerts" value="[% body.suppress_alerts %]">
+ <input type="hidden" id="can_be_devolved" name="can_be_devolved" value="[% body.can_be_devolved %]">
+
+ <p>
+ <input type="hidden" name="posted" value="body">
+ <input type="hidden" name="token" value="[% token %]">
+ <input type="submit" value="[% body ? loc('Update body') : loc('Add body') %]">
+ </p>
+ </form>
+
diff --git a/templates/web/zurich/admin/body.html b/templates/web/zurich/admin/body.html
new file mode 100644
index 000000000..764ad9bd8
--- /dev/null
+++ b/templates/web/zurich/admin/body.html
@@ -0,0 +1,67 @@
+[% INCLUDE 'admin/header.html' title=tprintf(loc('Council contacts for %s'), body.name) -%]
+[% PROCESS 'admin/report_blocks.html' %]
+
+[% IF updated %]
+<p>
+<em>[% updated %]</em>
+</p>
+[% END %]
+
+[% IF admin_type == 'super' AND body.parent AND NOT body.parent.parent # A division %]
+ <table cellspacing="0" cellpadding="2" border="1">
+ <tr>
+ <th>[% loc('Category') %]</th>
+ <th>[% loc('Email') %]</th>
+ <th>[% loc('Last editor') %]</th>
+ <th>[% loc('Note') %]</th>
+ <th>[% loc('When edited') %]</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>[% contact.editor %]</td>
+ <td>[% contact.note | html %]</td>
+ <td>[% PROCESS format_date this_date=contact.whenedited %]</td>
+ </tr>
+ [% END %]
+ </table>
+
+ <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>
+ <strong>[% loc('Category:') %] </strong><input type="text" name="category" size="30">
+ </p>
+ [% END %]
+
+ <p>
+ <strong>[% loc('Email:') %] </strong><input type="text" name="email" size="30">
+ </p>
+
+ <input type="hidden" name="confirmed" value="1" id="confirmed">
+
+ <p>
+ <strong>[% loc('Note:') %] </strong> <textarea name="note" rows="3" cols="40"></textarea>
+ </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>
+ <input type="hidden" name=".cgifields" value="confirmed" >
+ <input type="hidden" name=".cgifields" value="deleted" >
+ </div>
+ </form>
+
+[% END %]
+
+ <h2>[% loc('Edit body details') %]</h2>
+ [% INCLUDE 'admin/body-form.html' %]
+
+[% INCLUDE 'admin/footer.html' %]
diff --git a/templates/web/zurich/admin/edit-league.html b/templates/web/zurich/admin/edit-league.html
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/templates/web/zurich/admin/edit-league.html
diff --git a/templates/web/zurich/admin/header.html b/templates/web/zurich/admin/header.html
new file mode 100644
index 000000000..281b1de23
--- /dev/null
+++ b/templates/web/zurich/admin/header.html
@@ -0,0 +1,34 @@
+[%
+ SET bodyclass = bodyclass || 'fullwidthpage';
+ INCLUDE 'header.html' admin = 1, bodyclass = bodyclass _ ' admin';
+
+ states = {
+ 'unconfirmed' = loc('Submitted'),
+ 'confirmed' = loc('Open'),
+ 'in progress' = loc('In progress'),
+ 'planned' = loc('Planned'),
+ 'fixed - council' = loc('Closed'),
+ 'hidden' = loc('Hidden'),
+ 'closed' = loc('Closed'),
+ }
+%]
+<style type="text/css">
+ .adminhidden { color: #666666; }
+ .admininternal { background-color: #eeeeff; }
+ .active { background-color: #ffffee; cursor: pointer; }
+ .error { color: red; }
+ .overdue { background-color: #ffcccc; }
+ select { width: auto; }
+ #fms_pan_zoom { top: 13em !important; }
+</style>
+<script>
+$(function(){
+ $('.row-link').hover(function(){
+ $(this).toggleClass("active");
+ }).click(function(){
+ window.location = this.getElementsByTagName('a')[0];
+ }).find('td:last').hide();
+ $('th.edit').hide();
+});
+</script>
+
diff --git a/templates/web/zurich/admin/index-dm.html b/templates/web/zurich/admin/index-dm.html
new file mode 100644
index 000000000..e0b62d5d2
--- /dev/null
+++ b/templates/web/zurich/admin/index-dm.html
@@ -0,0 +1,37 @@
+[% PROCESS 'admin/header.html' title=loc('Summary') -%]
+[% PROCESS 'admin/report_blocks.html' %]
+
+[% status_message %]
+
+<h2 id="submitted">[% loc('Submitted') %]</h2>
+[% INCLUDE list, problems = unconfirmed.all, hash = 'submitted' %]
+
+<h2 id="planned">[% loc('Planned') %]</h2>
+[% INCLUDE list, problems = approval.all, hash = 'planned' %]
+
+<h2 id="alle">[% loc('All reports') %]</h2>
+[% INCLUDE list, problems = other.all, include_subdiv = 1, hash = 'alle' %]
+[% INCLUDE 'pagination.html', admin = 1, param = 'p', hash = 'alle' %]
+
+[% INCLUDE 'admin/footer.html' %]
+
+[% BLOCK list %]
+<table cellspacing="0" cellpadding="2" border="1">
+ <tr>
+ <th>[% loc('ID') %]</th>
+ <th>[% loc('Description') %]</th>
+ [% FOREACH col IN [ [ 'category', loc('Category') ], [ 'created', loc('Submitted') ], [ 'lastupdate', loc('Updated') ], [ 'state', loc('Status') ] ] %]
+ <th><a href="[% INCLUDE sort_link choice = col.0 %]#[% hash %]">[% col.1 %] [% INCLUDE sort_arrow choice = col.0 %]</a></th>
+ [% END %]
+ [% IF include_subdiv %]
+ <th>[% loc('Subdivision/Body') %]</th>
+ [% END %]
+ <th>[% loc('Photo') %]</th>
+ <th class='edit'>*</th>
+ </tr>
+ <tr class="filter-row">
+ <td colspan="8"><input type="text" placeholder="[%= loc('Filter report list') %]" /></td>
+ </tr>
+[% INCLUDE 'admin/problem_row.html' %]
+</table>
+[% END %]
diff --git a/templates/web/zurich/admin/index-sdm.html b/templates/web/zurich/admin/index-sdm.html
new file mode 100644
index 000000000..707bb2d9d
--- /dev/null
+++ b/templates/web/zurich/admin/index-sdm.html
@@ -0,0 +1,34 @@
+[% PROCESS 'admin/header.html' title=loc('Summary') -%]
+[% PROCESS 'admin/report_blocks.html' %]
+
+<h2 id="new">[% loc('New reports') %]</h2>
+[% INCLUDE list, problems = reports_new.all, hash = 'new' %]
+
+<h2 id="wait">[% loc('Reports awaiting approval') %]</h2>
+[% INCLUDE list, problems = reports_unpublished.all, no_edit = 1, hash = 'wait' %]
+
+<h2 id="alle">[% loc('Reports published') %]</h2>
+[% INCLUDE list, problems = reports_published.all, no_edit = 1, hash = 'alle' %]
+[% INCLUDE 'pagination.html', admin = 1, param = 'p', hash = 'alle' %]
+
+[% INCLUDE 'admin/footer.html' %]
+
+[% BLOCK list %]
+<table cellspacing="0" cellpadding="2" border="1">
+ <tr>
+ <th>[% loc('ID') %]</th>
+ <th>[% loc('Description') %]</th>
+ [% FOREACH col IN [ [ 'category', loc('Category') ], [ 'created', loc('Submitted') ], [ 'lastupdate', loc('Updated') ], [ 'state', loc('Status') ] ] %]
+ <th><a href="[% INCLUDE sort_link choice = col.0 %]#[% hash %]">[% col.1 %] [% INCLUDE sort_arrow choice = col.0 %]</a></th>
+ [% END %]
+ <th>[% loc('Photo') %]</th>
+ [% IF NOT no_edit %]
+ <th class='edit'>*</th>
+ [% END %]
+ </tr>
+ <tr class="filter-row">
+ <td colspan="8"><input type="text" placeholder="[%= loc('Filter report list') %]" /></td>
+ </tr>
+[% INCLUDE 'admin/problem_row.html' %]
+</table>
+[% END %]
diff --git a/templates/web/zurich/admin/index.html b/templates/web/zurich/admin/index.html
new file mode 100644
index 000000000..a51c7f6fe
--- /dev/null
+++ b/templates/web/zurich/admin/index.html
@@ -0,0 +1,17 @@
+[% PROCESS 'admin/header.html' title=loc('Summary') -%]
+
+<ul>
+ <li>[% tprintf( loc('<strong>%d</strong> live problems'), total_problems_live ) %];
+ [% tprintf( loc('from %d different users'), total_problems_users ) %]</li>
+ <li>[% tprintf( loc('%d council contacts &ndash; %d confirmed, %d unconfirmed'), contacts.total, contacts.1, contacts.0) %]</li>
+</ul>
+
+<h2>[% loc('Problem breakdown by state') %]</h2>
+<ul>
+ [% FOREACH state IN problems.keys.sort %]
+ [% NEXT IF NOT states.$state %]
+ <li>[% problems.$state %] [% states.$state %]</li>
+ [% END %]
+</ul>
+
+[% INCLUDE 'admin/footer.html' %]
diff --git a/templates/web/zurich/admin/list_updates.html b/templates/web/zurich/admin/list_updates.html
new file mode 100644
index 000000000..2b575f27e
--- /dev/null
+++ b/templates/web/zurich/admin/list_updates.html
@@ -0,0 +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 -%]
+ [% 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
new file mode 100644
index 000000000..9b395a1ac
--- /dev/null
+++ b/templates/web/zurich/admin/problem_row.html
@@ -0,0 +1,45 @@
+[%- FOR problem IN problems %]
+ [% SET p_body = problem.bodies.values.0 %]
+ <tr[%
+ SET classes = [];
+ classes.push('adminhidden') IF problem.state == 'hidden';
+ 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;
+ %]>
+ <td class="record-id">
+ [% IF no_edit AND problem.is_visible %]
+ <a href="[% c.uri_for_email( '/report', problem.id ) %]">[% problem.id %]</a>
+ [% ELSE %]
+ [% problem.id %]
+ [% END %]
+ </td>
+ <td>[% PROCESS value_or_nbsp value=problem.title %]</td>
+ <td>[% PROCESS value_or_nbsp value=problem.category %]</td>
+ <td>[% PROCESS format_date this_date=problem.created %]</td>
+ <td>[% PROCESS format_date this_date=problem.lastupdate %]</td>
+ <td>[% states.${problem.state} %]</td>
+
+ [% IF include_subdiv %]
+ <td>
+ [%- IF p_body.parent.parent.id -%][%# ...it's a subdivision %]
+ [% PROCESS value_or_nbsp value=p_body.name %]
+ [%- ELSIF problem.external_body %]
+ [% PROCESS value_or_nbsp value=problem.body(c).name %]
+ [%- ELSE -%]
+ &nbsp;
+ [%- END -%]
+ </td>
+ [% END %]
+
+ <td>
+ [% IF problem.photo %]
+ <img class="img" height="60" width="90" src="[% c.cobrand.base_url %]/photo/[% problem.photo %].temp.jpeg" alt="">
+ [% END %]
+ </td>
+
+ [% IF NOT no_edit %]
+ <td><a href="[% c.uri_for( 'report_edit', problem.id ) %]">[% loc('Edit') %]</a></td>
+ [% END %]
+ </tr>
+[%- END -%]
diff --git a/templates/web/zurich/admin/report_edit-sdm.html b/templates/web/zurich/admin/report_edit-sdm.html
new file mode 100644
index 000000000..5ff031ce2
--- /dev/null
+++ b/templates/web/zurich/admin/report_edit-sdm.html
@@ -0,0 +1,74 @@
+[%
+ PROCESS "maps/zurich.html";
+ PROCESS 'admin/header.html'
+ title = tprintf(loc('Editing problem %d'), problem.id ),
+ bodyclass = 'mappage';
+ PROCESS 'admin/report_blocks.html'
+-%]
+
+[% map_html %]
+ <p id='sub_map_links'>
+ <a class="hidden-nojs" id="map_layer_toggle" href="">Stadtplan</a>
+ </p>
+</div>
+
+[% status_message %]
+
+<form method="post" action="[% c.uri_for( 'report_edit', problem.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" >
+
+<p align="right"><input type="submit" name="send_back" value="[% loc('Not for my subdivision') %]"></p>
+
+<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>[%
+ SET safe = problem.extra.original_detail | html;
+ tprintf( loc('originally entered: &ldquo;%s&rdquo;'), safe )
+%]
+[% END %]
+</li>
+<li><span class="mock-label">[% loc('Co-ordinates:') %]</span> [% problem.local_coords.join(',') %]
+ <input type="hidden" name="latitude" id="fixmystreet.latitude" value="[% problem.latitude %]">
+ <input type="hidden" name="longitude" id="fixmystreet.longitude" value="[% problem.longitude %]">
+([%
+ SET safe = problem.postcode | html;
+ tprintf( loc('originally entered: &ldquo;%s&rdquo;'), safe )
+%],
+[% IF problem.used_map %][% loc('used map') %][% ELSE %][% loc("didn't use map") %][% END %])</li>
+
+<li><span class="mock-label">[% loc('Category:') %]</span> [% problem.category | html %] </li>
+<li><span class="mock-label">[% loc('Name:') %]</span> [% problem.name | html %]
+<li><span class="mock-label">[% loc('Email:') %]</span> [% problem.user.email | html %]
+[% IF NOT problem.extra.email_confirmed %]<span class="error">[% loc('Unconfirmed') %]</span>[% END %]
+<li><span class="mock-label">[% loc('Phone:') %]</span> [% IF problem.user.phone %][% problem.user.phone | html %][% ELSE %]<em>[% loc('None') %]</em>[% END %]</li>
+<li><span class="mock-label">[% loc('Created:') %]</span> [% PROCESS format_date this_date=problem.created %] [% problem.created.hms %]</li>
+
+[% IF problem.photo %]
+<li><img alt="" src="[% c.cobrand.base_url %]/photo/[% problem.photo %].temp.jpeg"></li>
+[% END %]
+
+<li><span class="mock-label">[% loc('State:') %]</span> [% states.${problem.state} %]</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>
+
+</ul>
+
+<p class="cf">
+ <input style="float:left" type="submit" name="Submit changes" value="[% loc('Submit changes') %]" >
+ <input style="float:right" type="submit" name="no_more_updates" value="[% loc('No further updates') %]">
+</p>
+</form>
+
+[% INCLUDE 'admin/list_updates.html' %]
+
+[% INCLUDE 'admin/footer.html' %]
diff --git a/templates/web/zurich/admin/report_edit.html b/templates/web/zurich/admin/report_edit.html
new file mode 100644
index 000000000..66a51f162
--- /dev/null
+++ b/templates/web/zurich/admin/report_edit.html
@@ -0,0 +1,231 @@
+[%
+ PROCESS "report/photo-js.html";
+ PROCESS "maps/zurich.html";
+ INCLUDE 'admin/header.html'
+ title = tprintf(loc('Editing problem %d'), problem.id ),
+ bodyclass = 'mappage';
+ PROCESS 'admin/report_blocks.html'
+-%]
+
+[% map_html %]
+ <p id='sub_map_links'>
+ <a class="hidden-nojs" id="map_layer_toggle" href="">Stadtplan</a>
+ </p>
+</div>
+
+[% status_message %]
+
+<form method="post" action="[% c.uri_for( 'report_edit', problem.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" >
+
+<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 %]
+ <br>[%
+ SET detail_safe = problem.extra.original_detail | html;
+ tprintf( loc('originally entered: &ldquo;%s&rdquo;'), detail_safe )
+ %]
+ [% END %]
+ </li>
+[% ELSE %]
+ <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=5>[% problem.detail | html %]</textarea>
+ [% IF problem.extra.original_detail %]
+ [%
+ SET detail_safe = problem.extra.original_detail | html;
+ tprintf( loc('originally entered: &ldquo;%s&rdquo;'), detail_safe )
+ %]
+ [% END %]
+ </li>
+[% END %]
+
+<li><span class="mock-label">[% loc('Co-ordinates:') %]</span> [% problem.local_coords.join(',') %]
+ <input type="hidden" name="latitude" id="fixmystreet.latitude" value="[% problem.latitude %]">
+ <input type="hidden" name="longitude" id="fixmystreet.longitude" value="[% problem.longitude %]">
+
+([%
+ SET safe = problem.postcode | html;
+ tprintf( loc('originally entered: &ldquo;%s&rdquo;'), safe )
+%],
+[% IF problem.used_map %][% loc('used map') %][% ELSE %][% loc("didn't use map") %][% END %])</li>
+
+<li><span class="mock-label">[% loc('Name:') %]</span> [% problem.name | html %] <input type='hidden' name='name' id='name' value='[% problem.name | html %]'></li>
+<li><span class="mock-label">[% loc('Email:') %]</span> [% problem.user.email | html %] <input type='hidden' id='email' name='email' value='[% problem.user.email | html %]'>
+[% IF NOT problem.extra.email_confirmed %]<span class="error">[% loc('Unconfirmed') %]</span>[% END %]
+</li>
+<li><span class="mock-label">[% loc('Phone:') %]</span> [% IF problem.user.phone %][% problem.user.phone | html %][% ELSE %]<em>[% loc('None') %]</em>[% END %]</li>
+<li><span class="mock-label">[% loc('Created:') %]</span> [% PROCESS format_date this_date=problem.created %] [% problem.created.hms %]</li>
+
+
+[% IF problem.photo %]
+<li>
+[% photo = problem.get_photo_params %]
+<div class="update-img">
+ <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') %]">
+<input type="submit" name="rotate_photo" value="[% loc('Rotate Right') %]">
+<br>
+<input type="checkbox" id="publish_photo" name="publish_photo" value="1"[% ' checked' IF problem.extra.publish_photo %]>
+<label class="inline" for="publish_photo">[% loc("Publish photo") %]</label></li>
+[% END %]
+</ul>
+
+<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>
+ [% FOREACH s IN [
+ ['unconfirmed', loc('Submitted')]
+ ['confirmed', loc('Open')],
+ ['planned', loc('Planned')],
+ ['hidden', loc('Hidden')],
+ ] %]
+ <option [% 'selected ' IF s.0 == problem.state %] value="[% s.0 %]">[% s.1 %]</option>
+ [% END %]
+ [% IF problem.state == 'closed' %]
+ <option selected value="closed">[% loc('Closed') %]</option>
+ [% ELSIF problem.state == 'fixed - council' %]
+ <option selected value="fixed - council">[% loc('Closed') %]</option>
+ [% ELSIF problem.state == 'in progress' %]
+ <option selected value="in progress">[% loc('In progress') %]</option>
+ [% 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">
+[% list = FOR body IN bodies %]
+ [%- NEXT UNLESS body.parent.id == c.user.from_body.id %]
+ <option value="[% body.id %]"[% IF body.id == problem.bodies_str %] selected[% END %]>[% body.name %]</option>
+[% END %]
+ [% IF admin_type != 'super' AND list %]
+ <li class="assignation">
+ <label for="body_subdivision">[% loc('Assign to subdivision:') %]</label>
+ <select name="body_subdivision" id="body_subdivision">
+ <option value="">--</option>
+ [% list %]
+ </select>
+ </li>
+ [% END %]
+
+<li class="assignation">
+<label for="category">
+[% loc('Category:') %] [% problem.category %]<br>
+[% loc('Assign to different category:') %]</label>
+ <select name="category" id="category">
+ <option value="">--</option>
+ [% FOREACH cat IN categories %]
+ <option value="[% cat %]">[% cat %]</option>
+ [% END %]
+ </select></li>
+
+<li class="assignation">
+<label for="body_external">[% loc('Assign to external body:') %]</label>
+ <select name="body_external" id="body_external">
+ <option value="">--</option>
+ [% FOR body IN 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>
+ <br>
+ <input type="checkbox" name="third_personal" id="third_personal" value="1"[% ' checked' IF problem.extra.third_personal %]>
+ <label for="third_personal" class="inline">[% loc('Include reporter personal details') %]</label>
+
+</ul>
+
+<script type="text/javascript">
+$(function(){
+ $('.assignation select').change(function(){
+ if (this.value == "") {
+ $('.assignation').css('color', '#000');
+ } else {
+ var a = $(this).closest('li').css('color', '#000');
+ $('.assignation select').not(this).val("");
+ $('.assignation').not(a).css('color', '#999');
+ }
+ });
+});
+</script>
+
+[% ELSIF problem.state == 'planned' %]
+
+<ul class="no-bullets">
+[% list = FOR body IN bodies %]
+ [%- NEXT UNLESS body.parent.id == c.user.from_body.id %]
+ <option value="[% body.id %]">[% body.name %]</option>
+[% END %]
+ [% IF admin_type != 'super' AND list %]
+ <li class="assignation">
+ <label for="body_subdivision">[% loc('Assign to subdivision:') %]</label>
+ <select name="body_subdivision" id="body_subdivision">
+ <option value="" selected>--</option>
+ [% list %]
+ </select>
+ </li>
+ [% END %]
+
+ <li><label for="status_update">[% loc('Public response:') %]</label>
+
+ <textarea name='status_update' id='status_update' cols=60 rows=5>
+ [%- IF problem.extra.public_response -%]
+ [%- problem.extra.public_response | html -%]
+ [%- ELSE -%]
+
+Freundliche Grüsse
+
+Ihre Stadt Zürich
+ [%- END %]</textarea>
+ </li>
+</ul>
+
+[% ELSIF problem.state == 'fixed - council' %]
+
+<p><span class="mock-label">[% loc('Public response:') %]</span>
+[% problem.extra.public_response | html %]
+</p>
+
+[% END %]
+
+<p align="right">
+[% IF problem.state == 'planned' %]
+<input type="submit" name="publish_response" value="[% loc('Publish the response') %]">
+[% END %]
+<input type="submit" name="Submit changes" value="[% loc('Submit changes') %]" >
+</p>
+
+</form>
+
+[% INCLUDE 'admin/list_updates.html' %]
+
+[% INCLUDE 'admin/footer.html' %]
diff --git a/templates/web/zurich/admin/reports.html b/templates/web/zurich/admin/reports.html
new file mode 100644
index 000000000..68f98c44a
--- /dev/null
+++ b/templates/web/zurich/admin/reports.html
@@ -0,0 +1,28 @@
+[% PROCESS 'admin/header.html' title=loc('Search Reports') %]
+[% PROCESS 'admin/report_blocks.html' %]
+
+<form method="get" action="[% c.uri_for('reports') %]" 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>
+
+[% IF problems.size %]
+<table cellspacing="0" cellpadding="2" border="1">
+ <tr>
+ <th>[% loc('ID') %]</th>
+ <th>[% loc('Description') %]</th>
+ [% 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' %]
+</table>
+
+[% INCLUDE 'pagination.html', admin = 1, param = 'p' IF pager %]
+
+[% END %]
+
+[% INCLUDE 'admin/list_updates.html' %]
+
+[% INCLUDE 'admin/footer.html' %]
diff --git a/templates/web/zurich/admin/stats.html b/templates/web/zurich/admin/stats.html
new file mode 100644
index 000000000..52b33ebc4
--- /dev/null
+++ b/templates/web/zurich/admin/stats.html
@@ -0,0 +1,54 @@
+[% INCLUDE 'admin/header.html' title=loc('Stats') %]
+[% PROCESS 'admin/report_blocks.html' %]
+[% USE date %]
+
+<p style="float:right"><a href="[% c.uri_with( { export=1 } ) %]">[% loc('All Reports') %]</a></p>
+
+[% IF start_date AND end_date %]
+<p><strong>[% tprintf( loc( 'All reports between %s and %s' ), start_date.ymd, end_date.ymd ) | html %]</strong></p>
+[% END %]
+
+<form method="get" action="[% c.uri_for('stats') %]">
+<p><select name="ym">
+ <option value="">[% loc('All reports') %]</option>
+ [% FOR y IN [ 2013 .. date.format(date.now, '%Y') ];
+ SET max = 12;
+ 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;
+ %]
+ <option[% ' selected' IF v == ym %]>[% v %]</option>
+ [% END %]
+ [% END %]
+</select>
+
+<input type="submit" value="[% loc('Go') %]">
+</form>
+
+<ul>
+<li>[% loc('Total') %]: [% reports_total || 0 %]
+<li>[% loc('Closed') %]: [% reports_solved || 0 %]
+<li>[% loc('Hidden') %]: [% reports_spam || 0 %]
+<li>Externe Adressen: [% reports_assigned || 0 %]
+<li>[% loc('Moderated by division within one working day') %]: [% reports_moderated || 0 %]
+<li>[% loc('Dealt with by subdivision within 5 working days') %]: [% reports_dealtwith || 0 %]
+<li>[% loc('Assign to different category:') %] [% reports_category_changed || 0 %]
+<li>[% loc('Photo') %]: [% pictures_taken || 0 %]
+<li>[% loc('Publish photo') %]: [% pictures_published || 0 %]
+<!-- <li>[% loc('Phone:') %] [% users_phone || 0 %] -->
+<li>[% loc('Confirmed') %]: [% email_confirmed || 0 %]
+<li>[% loc('Name:') %] [% name_provided || 0 %]
+</ul>
+
+<table>
+<tr><th>[% loc('Service:') %]</th><th>[% loc('Count') %]</th></tr>
+[% WHILE ( s = per_service.next ) %]<tr><td>[% s.service || 'Web' %]</td><td>[% s.get_column('c') %]</td></tr>[% END %]
+</table>
+
+<table>
+<tr><th>[% loc('Category') %]</th><th>[% loc('Count') %]</th></tr>
+[% WHILE ( c = per_category.next ) %]<tr><td>[% c.category %]</td><td>[% c.get_column('c') %]</td></tr>[% END %]
+</table>
+
+[% INCLUDE 'admin/footer.html' %]
diff --git a/templates/web/zurich/admin/update_edit.html b/templates/web/zurich/admin/update_edit.html
new file mode 100644
index 000000000..ab40981a5
--- /dev/null
+++ b/templates/web/zurich/admin/update_edit.html
@@ -0,0 +1,40 @@
+[% INCLUDE 'admin/header.html' title=tprintf(loc('Editing update %d'), update.id ) -%]
+[% PROCESS 'admin/report_blocks.html' %]
+
+[% status_message %]
+
+<form method="post" action="[% c.uri_for( 'update_edit', update.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" >
+<ul>
+<li><a href="[% c.uri_for_email( '/report', update.problem_id ) %]#update_[% update.id %]">[% loc('View report on site' )%]</a></li>
+
+<li><label for='detail'>[% loc('Text:') %]</label>
+<textarea name='text' id='text' cols=60 rows=5>[% update.text | html %]</textarea></li>
+
+<input type="hidden" name="anonymous" value="[% update.anonymous %]">
+
+<li>[% loc('State:') %] <select name="state" id="state">
+ [% FOREACH state IN [ ['confirmed', loc('Open')], ['hidden', loc('Hidden')], ['unconfirmed',loc('Unconfirmed')] ] %]
+ <option [% 'selected ' IF state.0 == update.state %] value="[% state.0 %]">[% state.1 %]</option>
+ [% END %]
+</select></li>
+<input type='hidden' name='name' id='name' value='[% update.name | html %]'>
+<input type='hidden' id='email' name='email' value='[% update.user.email | html %]'>
+[% IF update.problem_state %]
+<li>[% tprintf(loc('Update changed problem state to %s'), update.problem_state) %]</li>
+[% END %]
+</li>
+
+<li>[% loc('Created:') %] [% PROCESS format_date this_date=update.created %] [% update.created.hms %]</li>
+
+[% IF update.photo %]
+[% photo = update.get_photo_params %]
+<li><img alt="" height="[% photo.height %]" width="[% photo.width %]" src="[% photo.url %]">
+<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 %]
+</ul>
+<input type="submit" name="Submit changes" value="[% loc('Submit changes') %]" ></form>
+
+[% INCLUDE 'admin/footer.html' %]
diff --git a/templates/web/zurich/around/_updates.html b/templates/web/zurich/around/_updates.html
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/templates/web/zurich/around/_updates.html
diff --git a/templates/web/zurich/around/intro.html b/templates/web/zurich/around/intro.html
new file mode 100644
index 000000000..04edcd3a7
--- /dev/null
+++ b/templates/web/zurich/around/intro.html
@@ -0,0 +1,12 @@
+ <h1>[% loc('Report, view, or discuss local problems') %]</h1>
+ <h2>(Pilot bis M&auml;rz 2014)</h2>
+
+<!-- FIXME Better place for this -->
+<script>
+ $(function() {
+ $( "#pc" ).autocomplete({
+ minLength: 3,
+ source: "/ajax/geocode"
+ });
+ });
+</script>
diff --git a/templates/web/zurich/auth/general.html b/templates/web/zurich/auth/general.html
new file mode 100644
index 000000000..11c729fde
--- /dev/null
+++ b/templates/web/zurich/auth/general.html
@@ -0,0 +1,73 @@
+[% INCLUDE 'header.html', title = loc('Sign in or create an account') %]
+
+[% IF email_error;
+
+ # other keys include fqdn, mxcheck if you'd like to write a custom error message
+
+ errors = {
+ missing => loc('Please enter your email'),
+ other => loc('Please check your email address is correct')
+ };
+
+ loc_email_error = errors.$email_error || errors.other;
+END %]
+
+<form action="[% c.uri_for() %]" method="post" name="general_auth_login" class="validate">
+ <fieldset>
+
+ <h1>[% loc('Sign in') %]</h1>
+
+ <input type="hidden" name="r" value="[% c.req.params.r | html %]">
+
+ <div id="form_sign_in_yes" class="form-box">
+
+ <label class="n" for="email">[% loc('Email') %]</label>
+ [% IF loc_email_error %]
+ <div class="form-error">[% loc_email_error %]</div>
+ [% ELSIF sign_in_error %]
+ <div class="form-error">[% loc('There was a problem with your email/password combination. If you cannot remember your password, or do not have one, please fill in the &lsquo;sign in by email&rsquo; section of the form.') %]</div>
+ [% END %]
+ <input type="email" class="required email" id="email" name="email" value="[% email | html %]" placeholder="[% loc('Your email address') %]">
+
+ <label for="password_sign_in">[% loc('Password (optional)') %]</label>
+ <div class="form-txt-submit-box">
+ <input type="password" class="required" name="password_sign_in" id="password_sign_in" value="" placeholder="[% loc('Your password') %]">
+ <input class="green-btn" type="submit" name="sign_in" value="[% loc('Sign in') %]">
+ </div>
+
+ <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>
+</form>
+
+<form action="[% c.uri_for() %]" method="post" name="general_auth_register" class="validate">
+ <fieldset>
+ <input type="hidden" name="r" value="[% c.req.params.r | html %]">
+
+ <h1>[% loc('<strong>No</strong> let me sign in by email') %]</h1>
+ <div id="form_sign_in_no" class="form-box">
+
+ <label class="n" for="email2">[% loc('Email') %]</label>
+ [% IF loc_email_error %]
+ <div class="form-error">[% loc_email_error %]</div>
+ [% END %]
+ <input type="email" class="required email" id="email2" name="email" value="[% email | html %]" placeholder="[% loc('Your email address') %]">
+
+ <label for="name">[% loc('Name') %]</label>
+ <input type="text" class="required" name="name" value="" placeholder="[% loc('Your name') %]">
+
+ <label for="password_register">[% loc('Password (optional)') %]</label>
+ <div class="form-txt-submit-box">
+ <input type="password" class="required" name="password_register" id="password_register" value="" placeholder="[% loc('Enter a password') %]">
+ <input class="green-btn" type="submit" name="email_sign_in" value="Registrieren">
+ </div>
+
+ </div>
+ </fieldset>
+</form>
+
+[% INCLUDE 'footer.html' %]
diff --git a/templates/web/zurich/auth/sign_out.html b/templates/web/zurich/auth/sign_out.html
new file mode 100644
index 000000000..644118f63
--- /dev/null
+++ b/templates/web/zurich/auth/sign_out.html
@@ -0,0 +1,7 @@
+[% INCLUDE 'header.html', title = loc('Sign out'), bodyclass = 'fullwidthpage' %]
+
+<h1>[% loc('You have been signed out') %]</h1>
+
+<p>[% tprintf( loc('Please feel free to <a href="%s">sign in again</a>, or go back to the <a href="/">front page</a>.'), c.uri_for('/admin') ) %]</p>
+
+[% INCLUDE 'footer.html' %]
diff --git a/templates/web/zurich/faq/faq-de-ch.html b/templates/web/zurich/faq/faq-de-ch.html
new file mode 100644
index 000000000..c7e284194
--- /dev/null
+++ b/templates/web/zurich/faq/faq-de-ch.html
@@ -0,0 +1,88 @@
+[% INCLUDE 'header.html', title => loc('Help'), bodyclass => 'fullwidthpage' %]
+
+<h1><a name="faq"></a>Hilfe</h1>
+
+ <dl>
+
+<dt>Was ist «Züri wie neu»</dt>
+<dd>
+«Züri wie neu» ist eine Online-Plattform, über die die Einwohnerinnen und
+Einwohner der Stadt Zürich auf Mängel und Schäden der städtischen Infrastruktur
+hinweisen können. «Züri wie neu» wird von der Stadtverwaltung moderiert und
+transparent geführt. Die Meldungen werden innerhalb von einem Arbeitstag den zuständigen Fachstellen
+zugewiesen und innert fünf Arbeitstagen abschliessend beantwortet. Fällt eine
+Meldung nicht in den Zuständigkeitsbereich der Stadtverwaltung, wird die
+Meldung anonymisiert der zuständigen dritten Stelle per E-Mail zugestellt.
+</dd>
+
+<dt>Welche Probleme kann ich über «Züri wie neu» melden?</dt>
+<dd>
+<p>Gemeldet werden können sämtliche Schäden an der Infrastruktur der Stadt Zürich.
+Dabei kann es sich um ein Loch im Strassenbelag, ein Graffiti am Stadthaus oder
+eine durch Vandalen beschädigte Parkbank handeln.
+
+<p>Es können Probleme zu folgenden Kategorien gemeldet werden:
+
+<ul>
+<li>Abfall / Sammelstellen</li>
+<li>Beleuchtung</li>
+<li>Graffiti</li>
+<li>Spielplatz / Sitzbank</li>
+<li>Strasse / Trottoir / Platz</li>
+<li>Tiere / Grünflächen</li>
+</ul>
+
+</dd>
+
+<dt>Was kann ich nicht über «Züri wie neu» melden?</dt>
+<dd>
+<ul>
+<li>Mängel die nicht auf Stadtgebiet liegen.</li>
+<li>Melden Sie «Züri wie neu» KEINE Notfälle. Die Notrufnummern lauten:
+ <br>Medizinisch - 144 Polizei - 117 Feuer - 118 Allgemein - 112</li>
+<li>Allgemeine Verschönerungs- und Verbesserungsvorschläge</li>
+</ul>
+</dd>
+
+<dt>Wie verwende ich die Webseite?</dt>
+<dd>
+<p>
+Geben Sie zuerst eine Adresse an oder lassen Sie Ihren Standort automatisch
+über den entsprechenden Link lokalisieren. Mittels Mausklick in die danach
+angezeigte Karte können Sie den exakten Ort des Mangels angeben. Als letzten
+Schritt füllen Sie die Felder des Formulars aus und schicken die Meldung ab.
+</p>
+<p>
+Weiter können Sie bestehende Meldungen sowie auch die Rückmeldungen der
+Verwaltung betrachten.
+</p>
+</dd>
+
+<dt>Wie werden die Probleme gelöst?</dt>
+<dd>
+Die Meldungen werden innerhalb von einem Arbeitstag den zuständigen Fachstellen
+zugewiesen und innert fünf Arbeitstagen von den dafür zuständigen
+Fachstellen bearbeitet sowie mit einer entsprechenden Rückmeldung versehen.
+</dd>
+
+<dt>Kann ich «Züri wie neu» auf meinem Smartphone nutzen?</dt>
+<dd>
+Ja, sowohl über die für mobile Geräte optimierte Webseite, als auch über die
+<a href="https://itunes.apple.com/ch/app/zuri-wie-neu/id631302236">iOS</a>- und <a href="https://play.google.com/store/apps/details?id=ch.zueriwieneu.zueriwieneu">Android-App</a>.
+</dd>
+
+<dt>Kann ich auch Probleme ausserhalb von Zürich melden?</dt>
+<dd>Nein.</dd>
+
+<dt>Werden meine E-Mail-Adresse, mein Name und meine Telefonnummer vertraulich behandelt?</dt>
+<dd>
+Die Kontaktinformationen werden nur stadtintern für Rückfragen verwendet. Sie
+werden weder im Internet publiziert noch an Dritte weitergegeben.
+</dd>
+
+<dt>Wer hat «Züri wie neu» programmiert?</dt>
+<dd>«Züri wie neu» wurde von <a href="http://www.mysociety.org/">mySociety</a> entwickelt.</dd>
+
+</dl>
+
+[% INCLUDE 'footer.html' pagefooter = 'yes' %]
diff --git a/templates/web/zurich/faq/faq-de.html b/templates/web/zurich/faq/faq-de.html
deleted file mode 100755
index a739f1b74..000000000
--- a/templates/web/zurich/faq/faq-de.html
+++ /dev/null
@@ -1,192 +0,0 @@
-[% 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="#practical">Practical Questions</a></li>
- <li><a href="#organisation">Organisation Questions</a></li>
- <li><a href="/privacy">Privacy and cookies</a></li>
- </ul>
- </aside>
-</div>
-
-<h1><a name="faq"></a>Frequently Asked Questions</h1>
- <dl>
- <dt>What is FixMyStreet?</dt>
- <dd>FixMyStreet is a site to help people report, view,
-or discuss local problems they&rsquo;ve found to their local council by
-simply locating them on a map. It launched in early February
-2007.</dd>
- <dt>What sort of problems should I report with FixMyStreet?</dt>
- <dd>FixMyStreet is primarily for reporting things which are
-<strong>broken or dirty or damaged or dumped, and need fixing, cleaning
-or clearing</strong>, such as:
-
- <ul><li>Abandoned vehicles
- <li>Dog Fouling
- <li>Flyposting or graffiti
- <li>Flytipping or litter
- <li>Streetcleaning, such as broken glass in a cycle lane
- [% IF c.cobrand.moniker != 'southampton' %]
- <li>Unlit lamposts
- [% END %]
- <li>Potholes
- </ul>
- </dd>
-
- <dt>What isn&rsquo;t FixMyStreet for?</dt>
- <dd>FixMyStreet is not a way of getting in touch with [% c.cobrand.is_council ? 'the' : 'your' %] council for all
- issues &ndash; please use FixMyStreet only for problems such as the above. We
- often route problem reports via cleansing services or highways and so using
- FixMyStreet for other matters may result in a delay in your report getting
- to the right department. <strong>You will need to contact [% c.cobrand.is_council ? 'the' : 'your' %] council
- directly for problems such as</strong>:
-
- <ul><li>Anti-social behaviour
- <li>Any urgent or emergency problems
- <li>Noise pollution or barking dogs
- <li>Fires and smoke/smell pollution
- <li>Missing wheelie bins or recycling boxes or missed rubbish collections
- <li>Proposals for speed bumps/ CCTV/ pedestrian crossings/ new road layouts/ etc.
- <li>Complaining about your neighbours
- <li>Complaining about the council
- <li>Joy riding, drug taking, animal cruelty, or other criminal activity
- </ul>
- <p>Councils often have direct hotlines for these sorts of issues.</p>
- </dd>
-
- <dt>How do I use the site?</dt>
- <dd>After entering a postcode or location, you are presented
-with a map of that area. You can view problems already reported in that area,
-or report ones of your own simply by clicking on the map at the location of
-the problem.</dd>
- <dt>How are the problems solved?</dt>
- <dd>They are reported to the [% IF !c.cobrand.is_council %]relevant[% END %] council by email. The
-council can then resolve the problem the way they normally would.
-Alternatively, you can discuss the problem on the website with others[% IF c.cobrand.moniker != 'southampton' %], and
-then together lobby the council to fix it, or fix it directly yourselves[% END %].</dd>
- <dt>Is it free?</dt>
- <dd>The site is free to use, yes. FixMyStreet is run
-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>
-
- </dl>
-
- <h2><a name="practical"></a>Practical Questions</h2>
- <dl>
- <dt>I&rsquo;m from a council, where do you send the reports?</dt>
- <dd>You can either leave a test report or <a href="/contact">contact us</a>
-to find out where reports go at the moment. Also <a href="/contact">contact us</a>
-to update the address or addresses we use.</dd>
- <dt>I&rsquo;m from a council, can we have FixMyStreet on our website?</dt>
- <dd>Yes you can! We offer branded, hosted versions of FixMyStreet for local council websites. <a href="http://www.mysociety.org/for-councils/fixmystreet/">Full details</a>.</dd>
- <dt>Do you remove silly or illegal content?</dt>
- <dd>FixMyStreet is 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>Why does the site use kilometres for measurements?</dt>
- <dd>Thanks for asking politely &ndash; we never quite understand why some of the rudest
- emails we receive are on this topic. 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 FixMyStreet locally focused, so restrict the ability to
- move radically between areas. The map on Your Reports will let you see all
- the reports you&rsquo;ve made, wherever they are. If you&rsquo;re from the
- council then the emailed version of the problem report also contains the
- closest road and postcode to the pin on the map.</dd>
-
- <dt>This site is great – why aren&rsquo;t you better publicised?</dt>
- <dd>As a tiny charity we simply don&rsquo;t have a publicity budget, and we
- rely on word of mouth to advertise the site. We have a whole <a
- href="posters/">array of posters, flyers and badges</a> if you&rsquo;d like
- to publicise us on the web or in your local area, and why not write to your
- local paper to let them know about us?</dd> </dl>
-
- <h2><a name="organisation"></a>Organisation Questions</h2>
- <dl>
- <dt>Who built FixMyStreet?</dt>
- <dd>This site 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.com</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. Our first project
-was <a href="http://www.writetothem.com/">WriteToThem</a>, where you can write to any of your
-elected representatives, for free. 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, UK.</dd>
- <dt><img src="/i/moj.png" align="right" alt="Ministry of Justice" hspace="10">Who pays for it?</dt>
- <dd>FixMyStreet was originally paid for via the Department for
- Constitutional Affairs Innovations Fund. It is now funded by a variety of means, from commercial
- work to <a href="http://www.mysociety.org/donate/">donations</a>.</dd>
- <dt><a name="nfi"></a>Wasn&rsquo;t this site called Neighbourhood Fix-It?</dt>
- <dd>Yes, we changed the name mid June 2007. We decided
-Neighbourhood Fix-It was a bit of a mouthful, hard to spell, and hard to publicise (does the URL have a dash in it or not?). The domain FixMyStreet became available, and everyone liked the name.</dd>
- <dt>Do you need any help with the project?</dt>
- <dd>Yes, we can use help in all sorts of ways, technical or
-non-technical. Please see our <a
-href="http://www.mysociety.org/helpus/">Get Involved page</a>.</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 software behind this site is open source, and available
-to you mainly under the GNU Affero GPL software license. You can <a
-href="http://github.com/mysociety/fixmystreet">download the
-source code</a> and help us 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>
-<dt>I&rsquo;d prefer code in a different language?</dt>
-<dd>
-VisibleGovernment.ca wrote their own code for
-<a href="http://www.fixmystreet.ca/">http://www.fixmystreet.ca/</a>, which is
-written in GeoDjango and available under an MIT licence at <a
-href="http://github.com/visiblegovernment/django-fixmystreet/tree/master">github</a>.
-Or <a href="http://www.fixmystreet.org.nz/">FixMyStreet.org.nz</a> is written in
-Drupal.
-</p>
-</dd>
- <dt>People build things, not organisations. Who <em>actually</em> built it?</dt>
- <dd>Matthew Somerville and Francis Irving wrote the site,
-Chris Lightfoot wrote the tileserver and map cutter, Richard Pope created
-our pins, Deborah Kerr keeps things up-to-date and does user support,
-Ayesha Garrett designed our posters, and Tom Steinberg managed it all.
-
-Thanks also to
-<a href="http://www.ordnancesurvey.co.uk">Ordnance Survey</a> (for the maps,
-UK postcodes, and UK addresses &ndash; data &copy; Crown copyright, all
-rights reserved, Ministry of Justice 100037819&nbsp;2008),
-Yahoo! for their BSD-licensed JavaScript libraries, the entire free software
-community (this particular project was brought to you by Perl, PostgreSQL,
-and the number 161.290) and <a
-href="http://www.bytemark.co.uk/">Bytemark</a> (who kindly host all
-our servers).
-
-Let us know if we&rsquo;ve missed anyone.</dd>
- </dl>
-[% INCLUDE 'footer.html' pagefooter = 'yes' %]
diff --git a/templates/web/zurich/footer.html b/templates/web/zurich/footer.html
new file mode 100644
index 000000000..2304c048e
--- /dev/null
+++ b/templates/web/zurich/footer.html
@@ -0,0 +1,40 @@
+ </div><!-- .content role=main -->
+ </div><!-- .container -->
+ </div><!-- .table-cell -->
+
+ <div class="nav-wrapper">
+ <div class="nav-wrapper-2">
+ <div class="nav-wrapper-3">
+ <div id="main-nav" role="navigation">
+ [% IF c.user_exists %]
+ <p>
+ [% tprintf(loc('Hi %s'), c.user.name || c.user.email) %]
+ </p><p><a href="/admin">[% loc('Summary') %]</a> | <a href="/auth/sign_out">[% loc('sign out') %]</a>
+ </p>
+ [% END %]
+ <ul id="main-menu" class="mob-only">
+ <li><[% IF c.req.uri.path == '/' %]a onclick="$('html, body').animate({scrollTop:0}, 500); return false;" href="#site-header"[% ELSE %]a href="/"[% END %]
+ >[% loc("Report a problem") %]</[% c.req.uri.path == '/' ? 'a' : '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 == '/faq' %]span[% ELSE %]a href="/faq"[% END
+ %]>[% loc("Help") %]</[% c.req.uri.path == '/faq' ? 'span' : 'a' %]></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+
+<!-- [% INCLUDE 'debug_footer.html' %] -->
+ </div> <!-- .wrapper -->
+
+ <div id="zurich-footer-wrapper" class="desk-only">
+ <div id="zurich-footer">
+ &copy; 2013 Stadt Z&uuml;rich
+ <span class="hidden">|</span> <a href="http://www.stadt-zuerich.ch/content/portal/de/index/footer/rechtliche_hinweise.html">Rechtliche Hinweise</a>
+ <span class="hidden">|</span> <a href="http://www.stadt-zuerich.ch/content/portal/de/index/footer/impressum.html">Impressum</a>
+ </div>
+ </div>
+
+</body>
+</html>
diff --git a/templates/web/zurich/header.html b/templates/web/zurich/header.html
index 9fa43f3fa..891c6f1d3 100644
--- a/templates/web/zurich/header.html
+++ b/templates/web/zurich/header.html
@@ -11,21 +11,23 @@
<meta name="HandHeldFriendly" content="true">
<meta name="mobileoptimized" content="0">
- <link rel="stylesheet" href="[% version('/cobrands/' _ c.cobrand.moniker _ '/base.css') %]">
- <link rel="stylesheet" href="[% version('/cobrands/' _ c.cobrand.moniker _ '/layout.css') %]" media="(min-width:48em)">
+[% 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)">
[% extra_css %]
<!--[if (lt IE 9) & (!IEMobile)]>
- <link rel="stylesheet" href="[% version('/cobrands/' _ c.cobrand.moniker _ '/layout.css') %]">
+ <link rel="stylesheet" href="[% start %][% version('/cobrands/' _ c.cobrand.moniker _ '/layout.css') %]">
<![endif]-->
- <script src="[% version('/js/modernizr.custom.js') %]" charset="utf-8"></script>
- <script src="[% version('/cobrands/fixmystreet/position_map.js') %]" charset="utf-8"></script>
- [% INCLUDE 'common_header_tags.html', js_override = '/cobrands/fixmystreet/fixmystreet.js', site_title = 'FixMyZ&uuml;rich' %]
+ <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/themes/redmond/jquery-ui.css">
+
+ <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 = 'Züri wie neu' %]
[% extra_js %]
-
- [% IF c.req.uri.host == 'osm.fixmystreet.com' %]
- <link rel="canonical" href="http://www.fixmystreet.com[% c.req.uri.path_query %]">
- [% END %]
+
+ <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js" charset="utf-8"></script>
[% INCLUDE 'tracking_code.html' %]
@@ -36,25 +38,56 @@
<div class="table-cell">
<header id="site-header" role="banner">
<div class="container">
- <a href="/" id="site-logo">FixMyStreet</a>
+ <a href="/" id="site-logo-text">Züri wie neu</a>
+ <a href="http://www.stadt-zuerich.ch/" id="site-logo">Stadt Zürich</a>
<a href="#main-nav" id="nav-link">Main Navigation</a>
</div>
</header>
- <div id="user-meta">
- [% 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>
- [% ELSE %]
- <!-- <a href="/auth">[% loc('Sign in') %]</a> -->
- [% END %]
- </div>
+ <div class="container">
- [% pre_container_extra %]
+[% IF admin %]
+ <div class="admin-nav-wrapper">
+ <div class="admin-nav">
+ <ul>
+ [% pagename = c.req.uri.path %]
+ [% pagename = pagename.replace('/admin/?(\w*).*', '$1') %]
+
+ <li [% IF pagename == 'summary' OR pagename == '' %]class="current"[% END %]>
+ <a href="/admin/summary">[% loc('Summary') %]</a>
+ </li>
+ <li [% IF pagename == 'reports' OR pagename == 'report_edit' %]class="current"[% END %]>
+ <a href="/admin/reports">[% loc('Reports') %]</a>
+ </li>
+ [% IF admin_type == 'dm' OR admin_type == 'super' %]
+ <li [% IF pagename == 'bodies' OR pagename == 'body' %]class="current"[% END %]>
+ <a href="/admin/bodies">[% loc('Bodies') %]</a>
+ </li>
+ [% END %]
+ [% IF admin_type == 'super' %]
+ <li [% IF pagename == 'users' OR pagename == 'user_edit' %]class="current"[% END %]>
+ <a href="/admin/users">[% loc('Users') %]</a>
+ </li>
+ <li [% IF pagename == 'stats' %]class="current"[% END %]>
+ <a href="/admin/stats">[% loc('Stats') %]</a>
+ </li>
+ [% END %]
+ <li class="search-box">
+ <form method="get" action="[% c.uri_for('reports') %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
+ <input type="text" name="search" size="20" id="search" placeholder="[% loc('Search reports') %]">
+ </form>
+
+ </li>
+ </ul>
+ </div>
+ </div>
+[% END %]
- <div class="container">
<div class="content[% " $mainclass" | html IF mainclass %]" role="main">
+ [% IF NOT admin %]
+ [% INCLUDE 'nav_over_content.html' %]
+ [% END %]
+
+ [% pre_container_extra %]
<!-- [% INCLUDE 'debug_header.html' %] -->
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/maps/zurich.html b/templates/web/zurich/maps/zurich.html
new file mode 100644
index 000000000..492ccc556
--- /dev/null
+++ b/templates/web/zurich/maps/zurich.html
@@ -0,0 +1,14 @@
+[% map_js = BLOCK %]
+<script type="text/javascript" src="[% version('/js/OpenLayers.2.11.zurich.js') %]"></script>
+<script type="text/javascript" src="[% version('/js/OpenLayers.Projection.CH1903.js') %]"></script>
+<script type="text/javascript" src="[% version('/js/map-OpenLayers.js') %]"></script>
+<script type="text/javascript" src="[% version('/js/map-wmts-zurich.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/zurich/nav_over_content.html b/templates/web/zurich/nav_over_content.html
new file mode 100644
index 000000000..4dbe87652
--- /dev/null
+++ b/templates/web/zurich/nav_over_content.html
@@ -0,0 +1,10 @@
+ <div id="zurich-main-nav" class="desk-only">
+ <ul>
+ <li><[% IF c.req.uri.path == '/around' || c.req.uri.path == '/' %]span[% ELSE %]a href="/"[% END %]
+ >[% loc("Report a problem") %]</[% c.req.uri.path == '/around' ? '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 == '/faq' %]span[% ELSE %]a href="/faq"[% END
+ %]>[% loc("Help") %]</[% c.req.uri.path == '/faq' ? 'span' : 'a' %]></li>
+ </ul>
+ </div>
diff --git a/templates/web/zurich/report/_item.html b/templates/web/zurich/report/_item.html
new file mode 100644
index 000000000..22b39a2c8
--- /dev/null
+++ b/templates/web/zurich/report/_item.html
@@ -0,0 +1,24 @@
+<li>
+<a class="text" href="[% c.uri_for('/report', problem.id ) %]">
+ [% IF problem.state != 'unconfirmed' AND problem.photo AND c.cobrand.allow_photo_display(problem);
+ photo = problem.get_photo_params
+ %]
+ <img class="img" height="60" width="90" src="[% photo.url_fp %]" alt="">
+ [% END %]
+ [% IF problem.state != 'unconfirmed' %]
+ <h4>[% problem.title | html %]</h4>
+ [% ELSE %]
+ <h4><em>[% loc('Awaiting moderation') %]</em></h4>
+ [% END %]
+ <small>[% prettify_dt( problem.created, 'zurich' ) %]
+ [%- IF dist %], [% dist %]km[% END %]
+ [%- IF include_lastupdate AND problem.created != problem.lastupdate AND problem.whensent != problem.lastupdate %],
+ [% tprintf(loc('last updated %s'), prettify_dt( problem.lastupdate, 'zurich' ) ) %]
+ [%- 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/zurich/report/_main.html b/templates/web/zurich/report/_main.html
new file mode 100644
index 000000000..d80eeb9a4
--- /dev/null
+++ b/templates/web/zurich/report/_main.html
@@ -0,0 +1,17 @@
+<div class="problem-header cf">
+ <h1>[% tprintf( loc('Reported in the %s category'), problem.category ) %]</h1>
+ <p class="sub">
+ [% prettify_dt( problem.created, 'zurich' ) %]
+ [%- IF !problem.used_map %]<br>[% loc('there is no pin shown as the user did not use the map') %][% END %]
+ </p>
+
+ [% IF problem.state != 'unconfirmed' %]
+ [% IF c.cobrand.allow_photo_display(problem) %]
+ [% INCLUDE 'report/photo.html' object=problem %]
+ [% END %]
+ [% add_links( problem.detail ) | html_para %]
+ [% ELSE %]
+ [% loc('This report is awaiting moderation.') %]
+ [% END %]
+
+</div>
diff --git a/templates/web/zurich/report/banner.html b/templates/web/zurich/report/banner.html
new file mode 100644
index 000000000..eda70a0de
--- /dev/null
+++ b/templates/web/zurich/report/banner.html
@@ -0,0 +1,17 @@
+[% USE date %]
+[% BLOCK banner %]
+ <div class="banner">
+ <p id="[% id %]">[% text %]</p>
+ </div>
+[% END %]
+
+[% IF problem.state == 'unconfirmed' %]
+ [% INCLUDE banner, id = 'closed', text = loc('Submitted') %]
+[% ELSIF problem.state == 'confirmed' %]
+ [% INCLUDE banner, id = 'closed', text = loc('Open') %]
+[% ELSIF problem.is_fixed OR problem.is_closed %]
+ [% INCLUDE banner, id = 'fixed', text = loc('Closed') %]
+[% ELSIF problem.state == 'in progress' OR problem.state == 'planned' %]
+ [% INCLUDE banner, id = 'progress', text = loc('In progress') %]
+[% END %]
+
diff --git a/templates/web/zurich/report/new/councils_text_all.html b/templates/web/zurich/report/new/councils_text_all.html
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/templates/web/zurich/report/new/councils_text_all.html
diff --git a/templates/web/zurich/report/new/fill_in_details_form.html b/templates/web/zurich/report/new/fill_in_details_form.html
new file mode 100644
index 000000000..076536601
--- /dev/null
+++ b/templates/web/zurich/report/new/fill_in_details_form.html
@@ -0,0 +1,125 @@
+<div id="report-a-problem-main">
+ <h1>[% loc('Reporting a problem') %]</h1>
+
+ <div id="report-a-problem-sidebar">
+ <!--
+ The text for this section needs checking, but I can't work out which bit comes from where
+ -->
+ <div class="sidebar-tips">
+ [% IF report.used_map %]
+ [% IF partial_token %]
+ <p id="unknown">[% loc('Please note your report has <strong>not yet been sent</strong>. Choose a category and add further information below, then submit.') %]</p>
+ [% END %]
+ <p>[% loc('You have located the problem at the point marked with a green pin on the map. If this is not the correct location, simply click on the map again. ') %]</p>
+ [% END %]
+
+ <p>
+ [% IF report.used_map %]
+ [% INCLUDE 'report/new/fill_in_details_text.html' %]
+ [% ELSE %]
+ [% loc('Please fill in the form below with details of the problem, and describe the location as precisely as possible in the details box.') %]
+ [% END %]
+ </p>
+ </div>
+
+ <div class="sidebar-notes">
+ [% INCLUDE 'report/new/notes.html' %]
+ </div>
+
+ </div>
+
+ [% INCLUDE 'errors.html' %]
+ <fieldset>
+ <div id="problem_form">
+
+ [% INCLUDE 'report/new/form_heading.html' %]
+
+
+ [% IF field_errors.bodies %]
+ <p class='form-error'>[% field_errors.bodies %]</p>
+ [% END %]
+
+ <label for="form_detail">[% loc('Details') %]</label>
+ [% IF field_errors.detail %]
+ <p class='form-error'>[% field_errors.detail %]</p>
+ [% END %]
+ <textarea rows="7" cols="26" name="detail" id="form_detail" placeholder="[% loc('Please fill in details of the problem.') %]" required>[% report.detail | html %]</textarea>
+
+ [% IF js %]
+ <div id="form_category_row">
+ <label for="form_category">[% loc('Category') %]</label>
+ <select name="category" id="form_category" required><option>[% loc('Loading...') %]</option></select>
+ </div>
+ [% ELSE %]
+ [% IF category_options.size %]
+ [% IF field_errors.category %]
+ <p class='form-error'>[% field_errors.category %]</p>
+ [% END %]
+
+ [% PROCESS "report/new/category.html" %]
+ [% END %]
+ [% END %]
+
+ [%- IF category_extras %]
+ [% PROCESS "report/new/category_extras.html" %]
+ [%- END %]
+
+ [% IF c.cobrand.allow_photo_upload %]
+ <label for="form_photo">[% loc('Photo') %]</label>
+ [% IF upload_fileid || report.photo %]
+ [% IF upload_fileid %]
+ <img align="right" src="/photo/[% upload_fileid %].temp.jpeg" alt="">
+ <input type="hidden" name="upload_fileid" value="[% upload_fileid %]">
+ [% END %]
+
+ <p>[% loc('You have already attached a photo to this report, attaching another one will replace it.') %]</p>
+
+ [% IF report.photo %]
+ <img align="right" src="/photo/[% report.id %].jpeg">
+ [% END %]
+ [% END %]
+
+ [% IF field_errors.photo %]
+ <p class='form-error'>[% field_errors.photo %]</p>
+ [% END %]
+ <input type="file" name="photo" id="form_photo">
+ [% END %]
+
+ <label for="form_email">[% loc('Your email') %]</label>
+ [% IF field_errors.email %]
+ <p class='form-error'>[% field_errors.email %]</p>
+ [% END %]
+ <input type="email" value="[% report.user.email | html %]" name="email" id="form_email" placeholder="[% loc('Please enter your email address') %]" required>
+
+ <!--
+ <div class="general-sidebar-notes">
+ <p class="dark">[% loc('We never show your email address or phone number.') %]</p>
+ </div>
+ -->
+
+ <label for="form_name">[% loc('Name') %] [% loc('(optional)') %]</label>
+ [% IF field_errors.name %]
+ <p class='form-error'>[% field_errors.name %]</p>
+ [% END %]
+ <input type="text" value="[% report.name | html %]" name="name" id="form_name" placeholder="[% loc('Your name') %]">
+
+ <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">
+ [%# ID of submit_sign_in so name can be option, name of submit_register so it doesn't try and sign us in %]
+ <p><input class="green-btn" type="submit" id="submit_sign_in" name="submit_register" value="[% loc('Submit') %]">
+ </div>
+
+ </div>
+ </fieldset>
+
+ [% IF partial_token %]
+ <input type="hidden" name="partial" value="[% partial_token.token %]">
+ [% END %]
+
+ <input type="hidden" name="submit_problem" value="1">
+</div>
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 %]
diff --git a/templates/web/zurich/report/update-form.html b/templates/web/zurich/report/update-form.html
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/templates/web/zurich/report/update-form.html
diff --git a/templates/web/zurich/report/updates.html b/templates/web/zurich/report/updates.html
new file mode 100644
index 000000000..786ecd582
--- /dev/null
+++ b/templates/web/zurich/report/updates.html
@@ -0,0 +1,17 @@
+[% IF problem.state == 'fixed - council' OR problem.state == 'closed' %]
+ <h4 class="static-with-rule">[% loc('Updates') %]</h4>
+ <ul class="issue-list">
+ <li>
+ <div class="update-wrap">
+ <div class="update-text">
+ <p class="meta-2">[% prettify_dt( problem.lastupdate, 'zurich' ) %]</p>
+ [% IF problem.state == 'fixed - council' %]
+ [% add_links( problem.extra.public_response ) | html_para %]
+ [% ELSIF problem.state == 'closed' AND problem.external_body %]
+ <p>[% tprintf( loc('Assigned to %s'), problem.body(c).name ) %]</p>
+ [% END %]
+ </div>
+ </div>
+ </li>
+ </ul>
+[% END %]
diff --git a/templates/web/zurich/reports/index.html b/templates/web/zurich/reports/index.html
new file mode 100755
index 000000000..670746753
--- /dev/null
+++ b/templates/web/zurich/reports/index.html
@@ -0,0 +1,33 @@
+[%
+ PROCESS "maps/${map.type}.html";
+ INCLUDE 'header.html',
+ title = loc('Summary reports'),
+ bodyclass = 'mappage';
+%]
+[% map_html %]
+ <p id='sub_map_links'>
+ <a class="hidden-nojs" id="map_layer_toggle" href="">Stadtplan</a>
+ </p>
+</div>
+
+<div id="side">
+
+<h1>[% loc('All Reports') %]</h1>
+
+[% INCLUDE 'pagination.html', param = 'p' %]
+
+<section class="full-width">
+ [% IF problems.0 %]
+ <ul class="issue-list-a">
+ [% FOREACH problem IN problems.0 %]
+ [% INCLUDE 'reports/_list-entry.html' %]
+ [% END %]
+ </ul>
+ [% END %]
+</section>
+
+[% INCLUDE 'pagination.html', param = 'p' %]
+
+</div>
+[% INCLUDE 'footer.html' %]
+
diff --git a/templates/web/zurich/tokens/confirm_problem.html b/templates/web/zurich/tokens/confirm_problem.html
new file mode 100644
index 000000000..d61cf3ffa
--- /dev/null
+++ b/templates/web/zurich/tokens/confirm_problem.html
@@ -0,0 +1,15 @@
+[% INCLUDE 'header.html', title = loc('Confirmation') %]
+
+<h1>[% loc('Confirmation') %]</h1>
+
+[%
+ loc('You have successfully confirmed your email address.');
+ tprintf(
+ loc( 'You can <a href="%s%s">view the problem on this site</a>.' ),
+ c.cobrand.base_url_for_report( problem ),
+ problem.url
+ );
+%]
+</p>
+
+[% INCLUDE 'footer.html' %]
diff --git a/templates/web/zurich/tracking_code.html b/templates/web/zurich/tracking_code.html
new file mode 100644
index 000000000..bffd0fd6f
--- /dev/null
+++ b/templates/web/zurich/tracking_code.html
@@ -0,0 +1,18 @@
+[%
+ SET ga_code = 'UA-38427437-1';
+ SET ga_code = 'UA-39223200-1' IF c.config.BASE_URL == "https://www.zueriwieneu.ch";
+%]
+<script type="text/javascript">
+
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', '[% ga_code %]']);
+ _gaq.push (['_gat._anonymizeIp']);
+ _gaq.push(['_trackPageview']);
+
+ (function() {
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script>