aboutsummaryrefslogtreecommitdiff
path: root/extensions/Voting/template
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/Voting/template')
-rw-r--r--extensions/Voting/template/en/default/hook/account/prefs/email-relationships.html.tmpl10
-rw-r--r--extensions/Voting/template/en/default/hook/admin/products/edit-common-rows.html.tmpl47
-rw-r--r--extensions/Voting/template/en/default/hook/admin/products/updated-changes.html.tmpl90
-rw-r--r--extensions/Voting/template/en/default/hook/admin/sanitycheck/messages-statuses.html.tmpl29
-rw-r--r--extensions/Voting/template/en/default/hook/admin/users/confirm-delete-warn_safe.html.tmpl26
-rw-r--r--extensions/Voting/template/en/default/hook/bug/edit-after_importance.html.tmpl25
-rw-r--r--extensions/Voting/template/en/default/hook/bug/format_comment-type.txt.tmpl11
-rw-r--r--extensions/Voting/template/en/default/hook/bug/process/header-title.html.tmpl11
-rw-r--r--extensions/Voting/template/en/default/hook/bug/process/results-title.html.tmpl9
-rw-r--r--extensions/Voting/template/en/default/hook/bug/show-header-end.html.tmpl9
-rw-r--r--extensions/Voting/template/en/default/hook/global/code-error-errors.html.tmpl13
-rw-r--r--extensions/Voting/template/en/default/hook/global/field-descs-end.none.tmpl11
-rw-r--r--extensions/Voting/template/en/default/hook/global/reason-descs-end.none.tmpl11
-rw-r--r--extensions/Voting/template/en/default/hook/global/user-error-errors.html.tmpl43
-rw-r--r--extensions/Voting/template/en/default/hook/search/form-after_freetext_fields.html.tmpl16
-rw-r--r--extensions/Voting/template/en/default/hook/search/search-report-select-rep_fields.html.tmpl9
-rw-r--r--extensions/Voting/template/en/default/pages/voting.html.tmpl55
-rw-r--r--extensions/Voting/template/en/default/pages/voting/bug.html.tmpl50
-rw-r--r--extensions/Voting/template/en/default/pages/voting/user.html.tmpl178
-rw-r--r--extensions/Voting/template/en/default/voting/delete-all.html.tmpl38
-rw-r--r--extensions/Voting/template/en/default/voting/votes-removed.txt.tmpl40
21 files changed, 731 insertions, 0 deletions
diff --git a/extensions/Voting/template/en/default/hook/account/prefs/email-relationships.html.tmpl b/extensions/Voting/template/en/default/hook/account/prefs/email-relationships.html.tmpl
new file mode 100644
index 0000000..846d742
--- /dev/null
+++ b/extensions/Voting/template/en/default/hook/account/prefs/email-relationships.html.tmpl
@@ -0,0 +1,10 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[% relationships.push({ id = constants.REL_VOTER, description = "Voter" }) %]
+[% no_added_removed.push(constants.REL_VOTER) %]
diff --git a/extensions/Voting/template/en/default/hook/admin/products/edit-common-rows.html.tmpl b/extensions/Voting/template/en/default/hook/admin/products/edit-common-rows.html.tmpl
new file mode 100644
index 0000000..9a8373b
--- /dev/null
+++ b/extensions/Voting/template/en/default/hook/admin/products/edit-common-rows.html.tmpl
@@ -0,0 +1,47 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[% DEFAULT
+ product.maxvotesperbug = constants.DEFAULT_VOTES_PER_BUG
+ product.votesperuser = 0
+ product.votestoconfirm = 0
+%]
+
+<tr>
+ <th align="right">Maximum votes per person:</th>
+ <td><input size="5" maxlength="5" name="votesperuser" id="votesperuser"
+ value="[% product.votesperuser FILTER html %]">
+ </td>
+</tr>
+
+<tr>
+ <th align="right">
+ Maximum votes a person can put on a single [% terms.bug %]:
+ </th>
+ <td><input size="5" maxlength="5" name="maxvotesperbug" id="maxvotesperbug"
+ value="[% product.maxvotesperbug FILTER html %]">
+ </td>
+</tr>
+
+<tr id="votes_to_confirm_container"
+ [%- ' class="bz_default_hidden"' IF !product.allows_unconfirmed %]>
+ <th align="right">
+ Confirm [% terms.abug %] if it gets this many votes:
+ </th>
+ <td>
+ <input size="3" maxlength="5" name="votestoconfirm" id="votestoconfirm"
+ value="[% product.votestoconfirm FILTER html %]">
+ <br>(Setting this to 0 disables auto-confirming [% terms.bugs %]
+ by vote.)
+ <script type="text/javascript">
+ YAHOO.util.Event.addListener('allows_unconfirmed', 'change',
+ function() { bz_toggleClass('votes_to_confirm_container',
+ 'bz_default_hidden'); });
+ </script>
+ </td>
+</tr>
diff --git a/extensions/Voting/template/en/default/hook/admin/products/updated-changes.html.tmpl b/extensions/Voting/template/en/default/hook/admin/products/updated-changes.html.tmpl
new file mode 100644
index 0000000..64db63d
--- /dev/null
+++ b/extensions/Voting/template/en/default/hook/admin/products/updated-changes.html.tmpl
@@ -0,0 +1,90 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[% SET checkvotes = 0 %]
+
+[% IF changes.votesperuser.defined %]
+ <p>
+ Updated votes per user from
+ [%+ changes.votesperuser.0 FILTER html %] to
+ [%+ product.votesperuser FILTER html %].
+ </p>
+ [% checkvotes = 1 %]
+[% END %]
+
+[% IF changes.maxvotesperbug.defined %]
+ <p>
+ Updated maximum votes per [% terms.bug %] from
+ [%+ changes.maxvotesperbug.0 FILTER html %] to
+ [%+ product.maxvotesperbug FILTER html %].
+ </p>
+ [% checkvotes = 1 %]
+[% END %]
+
+[% IF changes.votestoconfirm.defined %]
+ <p>
+ Updated number of votes needed to confirm a [% terms.bug %] from
+ [%+ changes.votestoconfirm.0 FILTER html %] to
+ [%+ product.votestoconfirm FILTER html %].
+ </p>
+ [% checkvotes = 1 %]
+[% END %]
+
+[%# Note that this display of changed votes and/or confirmed bugs is
+ not very scalable. We could have a _lot_, and we just list them all.
+ One day we should limit this perhaps, or have a more scalable display %]
+
+[% IF checkvotes %]
+ <hr>
+
+ <p>Checking existing votes in this product for anybody who now
+ has too many votes for [% terms.abug %]...<br>
+ [% IF changes._too_many_votes.size %]
+ [% FOREACH detail = changes._too_many_votes %]
+ &rarr;removed votes for [% terms.bug %] <a href="show_bug.cgi?id=
+ [%- detail.id FILTER uri %]">
+ [%- detail.id FILTER html %]</a> from [% detail.name FILTER html %]<br>
+ [% END %]
+ [% ELSE %]
+ &rarr;there were none.
+ [% END %]
+ </p>
+
+ <p>Checking existing votes in this product for anybody
+ who now has too many total votes...<br>
+ [% IF changes._too_many_total_votes.size %]
+ [% FOREACH detail = changes._too_many_total_votes %]
+ &rarr;removed votes for [% terms.bug %] <a href="show_bug.cgi?id=
+ [%- detail.id FILTER uri %]">
+ [%- detail.id FILTER html %]</a> from [% detail.name FILTER html %]<br>
+ [% END %]
+ [% ELSE %]
+ &rarr;there were none.
+ [% END %]
+ </p>
+
+ <p>Checking unconfirmed [% terms.bugs %] in this product for any which now have
+ sufficient votes...<br>
+ [% IF changes._confirmed_bugs.size %]
+ [% FOREACH id = changes._confirmed_bugs %]
+
+ [%# This is INCLUDED instead of PROCESSED to avoid variables getting
+ overwritten, which happens otherwise %]
+ [% INCLUDE bug/process/results.html.tmpl
+ type = 'votes'
+ header_done = 1
+ sent_bugmail = changes._confirmed_bugs_sent_bugmail.$id
+ id = id
+ %]
+ [% END %]
+ [% ELSE %]
+ &rarr;there were none.
+ [% END %]
+ </p>
+
+[% END %]
diff --git a/extensions/Voting/template/en/default/hook/admin/sanitycheck/messages-statuses.html.tmpl b/extensions/Voting/template/en/default/hook/admin/sanitycheck/messages-statuses.html.tmpl
new file mode 100644
index 0000000..926fead
--- /dev/null
+++ b/extensions/Voting/template/en/default/hook/admin/sanitycheck/messages-statuses.html.tmpl
@@ -0,0 +1,29 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[% IF san_tag == "voting_cache_rebuild_fix" %]
+ <a href="sanitycheck.cgi?rebuild_vote_cache=1&amp;token=
+ [%- issue_hash_token(['sanitycheck']) FILTER uri %]">Click here to
+ rebuild the vote cache</a>
+
+[% ELSIF san_tag == "voting_cache_alert" %]
+ Bad vote cache for [% PROCESS bug_link bug_id = id %]
+
+[% ELSIF san_tag == "voting_count_start" %]
+ Checking cached vote counts.
+
+[% ELSIF san_tag == "voting_count_alert" %]
+ Bad vote sum for [% terms.bug %] [%+ id FILTER html %].
+
+[% ELSIF san_tag == "voting_cache_rebuild_start" %]
+ OK, now rebuilding vote cache.
+
+[% ELSIF san_tag == "voting_cache_rebuild_end" %]
+ Vote cache has been rebuilt
+
+[% END %]
diff --git a/extensions/Voting/template/en/default/hook/admin/users/confirm-delete-warn_safe.html.tmpl b/extensions/Voting/template/en/default/hook/admin/users/confirm-delete-warn_safe.html.tmpl
new file mode 100644
index 0000000..b971dac
--- /dev/null
+++ b/extensions/Voting/template/en/default/hook/admin/users/confirm-delete-warn_safe.html.tmpl
@@ -0,0 +1,26 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[% IF votes %]
+ <li>
+ [% otheruser.login FILTER html %] has voted on
+ [% IF votes == 1 %]
+ [%+ terms.abug %]
+ [% ELSE %]
+ [%+ votes FILTER html %] [%+ terms.bugs %]
+ [% END %].
+
+ If you delete the user account,
+ [% IF votes == 1 %]
+ this vote
+ [% ELSE %]
+ these votes
+ [% END %]
+ will be deleted along with the user account.
+ </li>
+[% END %]
diff --git a/extensions/Voting/template/en/default/hook/bug/edit-after_importance.html.tmpl b/extensions/Voting/template/en/default/hook/bug/edit-after_importance.html.tmpl
new file mode 100644
index 0000000..6710ab3
--- /dev/null
+++ b/extensions/Voting/template/en/default/hook/bug/edit-after_importance.html.tmpl
@@ -0,0 +1,25 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+[% IF bug.product_obj.votesperuser %]
+ <span id="votes_container">
+ [% IF bug.votes %]
+ with
+ <a href="page.cgi?id=voting/bug.html&amp;bug_id=
+ [%- bug.id FILTER uri %]">
+ [%- bug.votes FILTER html %]
+ [% IF bug.votes == 1 %]
+ vote
+ [% ELSE %]
+ votes
+ [% END %]</a>
+ [% END %]
+ (<a href="page.cgi?id=voting/user.html&amp;bug_id=
+ [%- bug.id FILTER uri %]#vote_
+ [%- bug.id FILTER uri %]">vote</a>)
+ </span>
+[% END %]
diff --git a/extensions/Voting/template/en/default/hook/bug/format_comment-type.txt.tmpl b/extensions/Voting/template/en/default/hook/bug/format_comment-type.txt.tmpl
new file mode 100644
index 0000000..64d3f65
--- /dev/null
+++ b/extensions/Voting/template/en/default/hook/bug/format_comment-type.txt.tmpl
@@ -0,0 +1,11 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[% IF comment.type == constants.CMT_POPULAR_VOTES %]
+*** This [% terms.bug %] has been confirmed by popular vote. ***
+[% END %]
diff --git a/extensions/Voting/template/en/default/hook/bug/process/header-title.html.tmpl b/extensions/Voting/template/en/default/hook/bug/process/header-title.html.tmpl
new file mode 100644
index 0000000..200fe4b
--- /dev/null
+++ b/extensions/Voting/template/en/default/hook/bug/process/header-title.html.tmpl
@@ -0,0 +1,11 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[% IF title_tag == "change_votes" %]
+ [% title = "Change Votes" %]
+[% END %]
diff --git a/extensions/Voting/template/en/default/hook/bug/process/results-title.html.tmpl b/extensions/Voting/template/en/default/hook/bug/process/results-title.html.tmpl
new file mode 100644
index 0000000..86e48de
--- /dev/null
+++ b/extensions/Voting/template/en/default/hook/bug/process/results-title.html.tmpl
@@ -0,0 +1,9 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[% title.votes = "$Link confirmed by number of votes" %]
diff --git a/extensions/Voting/template/en/default/hook/bug/show-header-end.html.tmpl b/extensions/Voting/template/en/default/hook/bug/show-header-end.html.tmpl
new file mode 100644
index 0000000..92b373d
--- /dev/null
+++ b/extensions/Voting/template/en/default/hook/bug/show-header-end.html.tmpl
@@ -0,0 +1,9 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[% style_urls.push('extensions/Voting/web/style.css') %]
diff --git a/extensions/Voting/template/en/default/hook/global/code-error-errors.html.tmpl b/extensions/Voting/template/en/default/hook/global/code-error-errors.html.tmpl
new file mode 100644
index 0000000..81d9fff
--- /dev/null
+++ b/extensions/Voting/template/en/default/hook/global/code-error-errors.html.tmpl
@@ -0,0 +1,13 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[% IF error == "voting_no_open_bug_status" %]
+ [% title = "$terms.Bug Cannot Be Confirmed" %]
+ There is no valid transition from
+ [%+ display_value("bug_status", "UNCONFIRMED") FILTER html %] to an open state
+[% END %]
diff --git a/extensions/Voting/template/en/default/hook/global/field-descs-end.none.tmpl b/extensions/Voting/template/en/default/hook/global/field-descs-end.none.tmpl
new file mode 100644
index 0000000..33e8ac7
--- /dev/null
+++ b/extensions/Voting/template/en/default/hook/global/field-descs-end.none.tmpl
@@ -0,0 +1,11 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[% IF in_template_var %]
+ [% vars.field_descs.votes = "Votes" %]
+[% END %]
diff --git a/extensions/Voting/template/en/default/hook/global/reason-descs-end.none.tmpl b/extensions/Voting/template/en/default/hook/global/reason-descs-end.none.tmpl
new file mode 100644
index 0000000..28a1e36
--- /dev/null
+++ b/extensions/Voting/template/en/default/hook/global/reason-descs-end.none.tmpl
@@ -0,0 +1,11 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[% reason_descs.${constants.REL_VOTER} = "You voted for the ${terms.bug}." %]
+[% watch_reason_descs.${constants.REL_VOTER} =
+ "You are watching a voter for the ${terms.bug}." %]
diff --git a/extensions/Voting/template/en/default/hook/global/user-error-errors.html.tmpl b/extensions/Voting/template/en/default/hook/global/user-error-errors.html.tmpl
new file mode 100644
index 0000000..55c32d4
--- /dev/null
+++ b/extensions/Voting/template/en/default/hook/global/user-error-errors.html.tmpl
@@ -0,0 +1,43 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[% IF error == "voting_must_be_nonnegative" %]
+ [% title = "Votes Must Be Non-negative" %]
+ [% admindocslinks = {'voting.html' => 'Setting up the voting feature'} %]
+ Only use non-negative numbers for your [% terms.bug %] votes.
+
+[% ELSIF error == "voting_product_illegal_votes" %]
+ [% title = "Votes Must Be Non-negative" %]
+ [% admindocslinks = {'voting.html' => 'Setting up the voting feature'} %]
+ '[% votes FILTER html %]' is an invalid value for the
+ <em>
+ [% IF field == "votesperuser" %]
+ Votes Per User
+ [% ELSIF field == "maxvotesperbug" %]
+ Maximum Votes Per [% terms.Bug %]
+ [% ELSIF field == "votestoconfirm" %]
+ Votes To Confirm
+ [% END %]
+ </em> field, which should contain a non-negative number.
+
+[% ELSIF error == "voting_too_many_votes_for_bug" %]
+ [% title = "Illegal Vote" %]
+ [% admindocslinks = {'voting.html' => 'Setting up the voting feature'} %]
+ You may only use at most [% max FILTER html %] votes for a single
+ [%+ terms.bug %] in the
+ <tt>[% product FILTER html %]</tt> product, but you are trying to
+ use [% votes FILTER html %].
+
+[% ELSIF error == "voting_too_many_votes_for_product" %]
+ [% title = "Illegal Vote" %]
+ [% admindocslinks = {'voting.html' => 'Setting up the voting feature'} %]
+ You tried to use [% votes FILTER html %] votes in the
+ <tt>[% product FILTER html %]</tt> product, which exceeds the maximum of
+ [%+ max FILTER html %] votes for this product.
+
+[% END %]
diff --git a/extensions/Voting/template/en/default/hook/search/form-after_freetext_fields.html.tmpl b/extensions/Voting/template/en/default/hook/search/form-after_freetext_fields.html.tmpl
new file mode 100644
index 0000000..cb549e3
--- /dev/null
+++ b/extensions/Voting/template/en/default/hook/search/form-after_freetext_fields.html.tmpl
@@ -0,0 +1,16 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+<div class="search_field_row">
+ <span class="field_label ">
+ <label for="votes">Only [% terms.bugs %] with at least</label>:
+ </span>
+ <input name="votes" id="votes" size="3"
+ value="[% default.votes.0 FILTER html %]"> votes
+ <input type="hidden" name="votes_type" value="greaterthaneq">
+</div>
diff --git a/extensions/Voting/template/en/default/hook/search/search-report-select-rep_fields.html.tmpl b/extensions/Voting/template/en/default/hook/search/search-report-select-rep_fields.html.tmpl
new file mode 100644
index 0000000..d8ec155
--- /dev/null
+++ b/extensions/Voting/template/en/default/hook/search/search-report-select-rep_fields.html.tmpl
@@ -0,0 +1,9 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[% rep_fields.push('votes') %]
diff --git a/extensions/Voting/template/en/default/pages/voting.html.tmpl b/extensions/Voting/template/en/default/pages/voting.html.tmpl
new file mode 100644
index 0000000..82a4bbd
--- /dev/null
+++ b/extensions/Voting/template/en/default/pages/voting.html.tmpl
@@ -0,0 +1,55 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[% INCLUDE global/header.html.tmpl title = "Voting" %]
+
+<p>[% terms.Bugzilla %] has a "voting" feature. Each product allows users to
+have a certain number of votes. (Some products may not allow any, which means
+you can't vote on things in those products at all.) With your vote, you
+indicate which [% terms.bugs %] you think are the most important and
+would like to see fixed. Note that voting is nowhere near as effective
+as providing a fix yourself.</p>
+
+<p>Depending on how the administrator has configured the relevant product,
+you may be able to vote for the same [% terms.bug %] more than once.
+Remember that you have a limited number of votes. When weighted voting
+is allowed and a limited number of votes are available to you, you will
+have to decide whether you want to distribute your votes among a large
+number of [% terms.bugs %] indicating your minimal interest or focus on
+a few [% terms.bugs %] indicating your strong support for them.
+</p>
+
+<p>To look at votes:</p>
+
+<ul>
+ <li>Go to the query page. Do a normal query, but enter 1 in the "At least
+ ___ votes" field. This will show you items that match your query that
+ have at least one vote.</li>
+</ul>
+
+<p>To vote for [% terms.abug %]:</p>
+
+<ul>
+ <li>Bring up the [% terms.bug %] in question.</li>
+
+ <li>Click on the "(vote)" link that appears on the right of the "Importance"
+ fields. (If no such link appears, then voting may not be allowed in
+ this [% terms.bug %]'s product.)</li>
+
+ <li>Indicate how many votes you want to give this [% terms.bug %]. This page
+ also displays how many votes you've given to other [% terms.bugs %], so you
+ may rebalance your votes as necessary.</li>
+</ul>
+
+<p>You will automatically get email notifying you of any changes that occur
+on [% terms.bugs %] you vote for.</p>
+
+<p>You may review your votes at any time by clicking on the "<a href=
+"page.cgi?id=voting/user.html">My Votes</a>" link in the page footer.</p>
+
+[% INCLUDE global/footer.html.tmpl %]
diff --git a/extensions/Voting/template/en/default/pages/voting/bug.html.tmpl b/extensions/Voting/template/en/default/pages/voting/bug.html.tmpl
new file mode 100644
index 0000000..2ba784f
--- /dev/null
+++ b/extensions/Voting/template/en/default/pages/voting/bug.html.tmpl
@@ -0,0 +1,50 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[%# INTERFACE:
+ # bug: Bugzilla::Bug that we are listing the votes for.
+ # users: list of hashes. May be empty. Each hash has two members:
+ # login_name: string. The login name of the user whose vote is attached
+ # vote_count: integer. The number of times that user has votes for this bug.
+ #%]
+
+[% subheader = BLOCK %]
+ [% "$terms.Bug $bug.id" FILTER bug_link(bug) FILTER none %] - [% bug.short_desc FILTER html %]
+[% END %]
+
+[% PROCESS global/header.html.tmpl
+ title = "Show Votes"
+ subheader = subheader
+ %]
+
+[% total = 0 %]
+<table cellspacing="4">
+ <tr>
+ <th>Who</th>
+ <th>Number of votes</th>
+ </tr>
+
+ [% FOREACH voter = users %]
+ [% total = total + voter.vote_count %]
+ <tr>
+ <td>
+ <a href="page.cgi?id=voting/user.html&amp;user_id=
+ [%- voter.id FILTER uri %]">
+ [% voter.login_name FILTER email FILTER html %]
+ </a>
+ </td>
+ <td align="right">
+ [% voter.vote_count FILTER html %]
+ </td>
+ </tr>
+ [% END %]
+</table>
+
+<p>Total votes: [% total FILTER html %]</p>
+
+[% PROCESS global/footer.html.tmpl %]
diff --git a/extensions/Voting/template/en/default/pages/voting/user.html.tmpl b/extensions/Voting/template/en/default/pages/voting/user.html.tmpl
new file mode 100644
index 0000000..8777e03
--- /dev/null
+++ b/extensions/Voting/template/en/default/pages/voting/user.html.tmpl
@@ -0,0 +1,178 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[%# INTERFACE:
+ # voting_user: hash containing a 'login' field
+ #
+ # products: list of hashes containing details of products relating to
+ # voting:
+ # name: name of product
+ # bugs: list of bugs the user has voted for
+ # bug_ids: list of bug ids the user has voted for
+ # onevoteonly: one or more votes allowed per bug?
+ # total: users current vote count for the product
+ # maxvotes: max votes allowed for a user in this product
+ # maxperbug: max votes per bug allowed for a user in this product
+ #
+ # this_bug: Bugzilla::Bug; if the user is voting for a bug, this is the bug
+ #
+ # canedit: boolean; Should the votes be presented in a form, or readonly?
+ #
+ # all_bug_ids: List of all bug ids the user has voted for, across all products
+ #%]
+
+[% IF !header_done %]
+ [% subheader = voting_user.login FILTER html %]
+ [% IF canedit %]
+ [% title = "Change Votes" %]
+ [% IF this_bug %]
+ [%# We .select and .focus the input so it works for textbox and
+ checkbox %]
+ [% onload = "document.forms['voting_form'].bug_" _ this_bug.id _
+ ".select();document.forms['voting_form'].bug_" _ this_bug.id _
+ ".focus()" %]
+ [% END %]
+ [% ELSE %]
+ [% title = "Show Votes" %]
+ [% END %]
+ [% PROCESS global/header.html.tmpl
+ style_urls = [ "extensions/Voting/web/style.css" ]
+ %]
+[% ELSE %]
+ <hr>
+[% END %]
+
+[% IF votes_recorded %]
+ <p>
+ <font color="red">
+ The changes to your votes have been saved.
+ </font>
+ </p>
+[% ELSE %]
+ <br>
+[% END %]
+
+[% IF products.size %]
+ <form name="voting_form" method="post" action="page.cgi?id=voting/user.html">
+ <input type="hidden" name="action" value="vote">
+ <input type="hidden" name="token" value="[% issue_hash_token(['vote']) FILTER html %]">
+ <table cellspacing="4">
+ <tr>
+ <td></td>
+ <th>Votes</th>
+ <th>[% terms.Bug %] #</th>
+ <th>Summary</th>
+ </tr>
+
+ [% onevoteproduct = 0 %]
+ [% multivoteproduct = 0 %]
+ [% FOREACH product = products %]
+ [% IF product.onevoteonly %]
+ [% onevoteproduct = 1 %]
+ [% ELSE %]
+ [% multivoteproduct = 1 %]
+ [% END %]
+ <tr>
+ <th>[% product.name FILTER html %]</th>
+ <td colspan="2" ><a href="buglist.cgi?bug_id=
+ [%- product.bug_ids.join(",") FILTER uri %]">([% terms.bug %] list)</a>
+ </td>
+ <td>
+ [% IF product.maxperbug < product.maxvotes AND
+ product.maxperbug > 1 %]
+ <font size="-1">
+ (Note: only [% product.maxperbug FILTER html %] vote
+ [% "s" IF product.maxperbug != 1 %] allowed per [% terms.bug %] in
+ this product.)
+ </font>
+ [% END %]
+ </td>
+ </tr>
+
+ [% FOREACH bug = product.bugs %]
+ <tr [% IF bug.id == this_bug.id && canedit %] class="bz_bug_being_voted_on"[% END %]>
+ <td>
+ [% IF bug.id == this_bug.id && canedit %]
+ [% IF product.onevoteonly %]
+ Vote For This [% terms.Bug %] &rarr;
+ [% ELSE %]
+ Enter Votes Here &rarr;
+ [% END %]
+ [%- END %]
+ </td>
+ <td align="right"><a name="vote_[% bug.id FILTER none %]">
+ [% IF canedit %]
+ [% IF product.onevoteonly %]
+ <input type="checkbox" name="[% bug.id FILTER none %]" value="1"
+ [% " checked" IF bug.count %] id="bug_[% bug.id FILTER none %]">
+ [% ELSE %]
+ <input name="[% bug.id FILTER none %]" value="[% bug.count FILTER html %]"
+ size="2" id="bug_[% bug.id FILTER none %]">
+ [% END %]
+ [% ELSE %]
+ [% bug.count FILTER html %]
+ [% END %]
+ </a></td>
+ <td align="center">
+ [% PROCESS bug/link.html.tmpl bug = bug, link_text = bug.id %]
+ </td>
+ <td>
+ [% bug.short_desc FILTER html %]
+ (<a href="page.cgi?id=voting/bug.html&amp;bug_id=[% bug.id FILTER none %]">Show Votes</a>)
+ </td>
+ </tr>
+ [% END %]
+
+ <tr>
+ <td></td>
+ <td colspan="3">[% product.total FILTER html %] vote
+ [% "s" IF product.total != 1 %] used out of [% product.maxvotes FILTER html %]
+ allowed.
+ <br>
+ <br>
+ </td>
+ </tr>
+ [% END %]
+ </table>
+
+ [% IF canedit %]
+ <input type="submit" value="Change My Votes" id="change"> or
+ <a href="buglist.cgi?bug_id=[% all_bug_ids.join(",") FILTER uri %]">view all
+ as [% terms.bug %] list</a>
+ <br>
+ <br>
+ To change your votes,
+ [% IF multivoteproduct %]
+ type in new numbers (using zero to mean no votes)
+ [% " or " IF onevoteproduct %]
+ [% END %]
+ [% IF onevoteproduct %]
+ change the checkbox
+ [% END %]
+ and then click <b>Change My Votes</b>.
+ [% ELSE %]
+ <a href="buglist.cgi?bug_id=[% all_bug_ids.join(",") FILTER uri %]">View all
+ as [% terms.bug %] list</a>
+ [% END %]
+ </form>
+[% ELSE %]
+ <p>
+ [% IF canedit %]
+ You are
+ [% ELSE %]
+ This user is
+ [% END %]
+ currently not voting on any [% terms.bugs %].
+ </p>
+[% END %]
+
+<p>
+ <a href="page.cgi?id=voting.html">Help with voting</a>.
+</p>
+
+[% PROCESS global/footer.html.tmpl %]
diff --git a/extensions/Voting/template/en/default/voting/delete-all.html.tmpl b/extensions/Voting/template/en/default/voting/delete-all.html.tmpl
new file mode 100644
index 0000000..683ec06
--- /dev/null
+++ b/extensions/Voting/template/en/default/voting/delete-all.html.tmpl
@@ -0,0 +1,38 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[%# INTERFACE:
+ # This template has no interface.
+ #%]
+
+[% PROCESS global/header.html.tmpl
+ title = "Remove your votes?"
+ %]
+
+<p>
+ You are about to remove all of your [% terms.bug %] votes. Are you sure you wish to
+ remove your vote from every [% terms.bug %] you've voted on?
+</p>
+
+<form action="page.cgi?id=voting/user.html" method="post">
+ <input type="hidden" name="action" value="vote">
+ <input type="hidden" name="token" value="[% issue_hash_token(['vote']) FILTER html %]">
+ <p>
+ <input type="radio" name="delete_all_votes" value="1">
+ Yes, delete all my votes
+ </p>
+ <p>
+ <input type="radio" name="delete_all_votes" value="0" checked="checked">
+ No, go back and review my votes
+ </p>
+ <p>
+ <input type="submit" id="vote" value="Submit">
+ </p>
+</form>
+
+[% PROCESS global/footer.html.tmpl %]
diff --git a/extensions/Voting/template/en/default/voting/votes-removed.txt.tmpl b/extensions/Voting/template/en/default/voting/votes-removed.txt.tmpl
new file mode 100644
index 0000000..e3cb34d
--- /dev/null
+++ b/extensions/Voting/template/en/default/voting/votes-removed.txt.tmpl
@@ -0,0 +1,40 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+From: [% Param('mailfrom') %]
+To: [% to %]
+Subject: [% terms.Bug %] [%+ bugid %] Some or all of your votes have been removed.
+X-Bugzilla-Type: voteremoved
+
+Some or all of your votes have been removed from [% terms.bug %] [%+ bugid %].
+
+You had [% votesold FILTER html %] [%+ IF votesold == 1 %]vote[% ELSE %]votes[% END
+%] on this [% terms.bug %], but [% votesremoved FILTER html %] have been removed.
+
+[% IF votesnew %]
+You still have [% votesnew FILTER html %] [%+ IF votesnew == 1 %]vote[% ELSE %]votes[% END %] on this [% terms.bug %].
+[% ELSE %]
+You have no more votes remaining on this [% terms.bug %].
+[% END %]
+
+Reason:
+[% IF reason == "votes_bug_moved" %]
+ This [% terms.bug %] has been moved to a different product.
+
+[% ELSIF reason == "votes_too_many_per_bug" %]
+ The rules for voting on this product has changed;
+ you had too many votes for a single [% terms.bug %].
+
+[% ELSIF reason == "votes_too_many_per_user" %]
+ The rules for voting on this product has changed; you had
+ too many total votes, so all votes have been removed.
+[% END %]
+
+
+
+[% urlbase %]show_bug.cgi?id=[% bugid %]