diff options
author | Byron Jones <bjones@mozilla.com> | 2014-02-18 18:07:17 +0100 |
---|---|---|
committer | Byron Jones <bjones@mozilla.com> | 2014-02-18 18:07:17 +0100 |
commit | 17a75b947405dc45ece1657d9cbfef7d51ee9df8 (patch) | |
tree | fa9b3099b8e545909bc262fa08ccc89819f80a8d /extensions/REMO | |
parent | 0d7f13d56847906ffd2fa107c5a7c4fe6c8e1cca (diff) | |
download | bugzilla-17a75b947405dc45ece1657d9cbfef7d51ee9df8.tar.gz bugzilla-17a75b947405dc45ece1657d9cbfef7d51ee9df8.tar.xz |
Bug 971004: Bugzilla form for Community IT Requests
Diffstat (limited to 'extensions/REMO')
3 files changed, 378 insertions, 0 deletions
diff --git a/extensions/REMO/template/en/default/bug/create/comment-remo-it.txt.tmpl b/extensions/REMO/template/en/default/bug/create/comment-remo-it.txt.tmpl new file mode 100644 index 000000000..7e95dd017 --- /dev/null +++ b/extensions/REMO/template/en/default/bug/create/comment-remo-it.txt.tmpl @@ -0,0 +1,79 @@ +[%# 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. + #%] + +[% USE Bugzilla %] +[% cgi = Bugzilla.cgi %] + +Name: +[%+ cgi.param('name') %] + +Mozillians.org Profile: +[%+ cgi.param('mozillian') %] + +Reps Profile: +[%+ cgi.param('reps') || "-" %] + +Community Name: +[%+ cgi.param('community') %] + +[% FOREACH item = cgi.param('items') %] +[% IF item == "apps_email" || item == "domain" || item == "ssl" %] +[% IF item == "apps_email" %] +[% domain_title = domain_title _ ":: Google Apps Emails\n" %] +[% END %] +[% IF item == "domain" %] +[% domain_title = domain_title _ ":: Domain Name\n" %] +[% END %] +[% IF item == "ssl" %] +[% domain_title = domain_title _ ":: SSL\n" %] +[% END %] +[% END %] +[% END %] + +[% FOREACH item = cgi.param('items') %] +[% IF item == "hosting" %] +:: Hosting + +Expected visits per month: +[%+ cgi.param('hosting_visits') %] + +What will run on the hosting: +[%+ cgi.param('hosting_running') %] + +Hosting data: +[%+ cgi.param('hosting_data') || "-" %] + +[% ELSIF (item == "apps_email" || item == "domain" || item == "ssl") + && domain_title %] +[% domain_title FILTER html %] +[% domain_title = "" %] +Domain Name: +[%+ cgi.param('domain_name') %] + +[% ELSIF item == "discourse" %] +:: Discourse Category + +Category Names: +[%+ cgi.param('discourse_names') %] + +Moderators: +[%+ cgi.param('discourse_mods') %] + +Background Hex Code: +[%+ cgi.param('discourse_bg') || "-" %] + +[% ELSIF item == "other" %] +:: Other + +[%+ cgi.param('other_value') %] + +[% END %] +[% END %] + +Comments: +[%+ cgi.param('comments') || "-" %] diff --git a/extensions/REMO/template/en/default/bug/create/create-remo-it.html.tmpl b/extensions/REMO/template/en/default/bug/create/create-remo-it.html.tmpl new file mode 100644 index 000000000..a1085ae97 --- /dev/null +++ b/extensions/REMO/template/en/default/bug/create/create-remo-it.html.tmpl @@ -0,0 +1,294 @@ +[%# 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. + #%] + +[% PROCESS global/variables.none.tmpl %] + +[% PROCESS global/header.html.tmpl + onload = "init()" + title = "Community IT Request" + style_urls = [ "extensions/REMO/web/styles/moz_reps.css" ] +%] + +[% USE Bugzilla %] +[% mandatory = '<span class="mandatory" title="Required">*</span>' %] + +<script type="text/javascript"> +var Dom = YAHOO.util.Dom; + +function mandatory(elements) { + result = true; + for (i in elements) { + element = elements[i]; + + if (typeof(element) == "object") { + missing = true; + for (j = 0; j < element.length; j++) { + if (element[j].checked) { + missing = false; + break; + } + } + + if (missing) { + Dom.addClass(element[0].name, 'missing'); + } else { + Dom.removeClass(element[0].name, 'missing'); + } + } else { + el = Dom.get(element); + value = el.value.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); + el.value = value; + + if (value == '') { + Dom.addClass(element, 'missing'); + result = false; + } else { + Dom.removeClass(element, 'missing'); + } + } + } + return result; +} + +function submitForm() { + fields = [ 'name', 'mozillian', 'community', document.forms.f.items ]; + if (Dom.get('item_hosting').checked) { + fields.push('hosting_visits'); + fields.push('hosting_running'); + } + if (Dom.get('item_domain').checked + || Dom.get('item_apps_email').checked + || Dom.get('item_ssl').checked + ) { + fields.push('domain_name'); + } + if (Dom.get('item_discourse').checked) { + fields.push('discourse_names'); + fields.push('discourse_mods'); + } + if (Dom.get('item_other').checked) { + fields.push('other_value'); + } + + if (!mandatory(fields)) { + alert('Please enter all the required fields.'); + return false; + } + + Dom.get('short_desc').value = + "IT Request: " + Dom.get('community').value + ' (' + Dom.get('name').value + ')'; + return true; +} + +function setItemVisibility() { + if (Dom.get('item_hosting').checked) { + Dom.removeClass('hosting', 'bz_default_hidden'); + } else { + Dom.addClass('hosting', 'bz_default_hidden'); + } + if (Dom.get('item_domain').checked + || Dom.get('item_apps_email').checked + || Dom.get('item_ssl').checked + ) { + var title = []; + if (Dom.get('item_apps_email').checked) + title.push('Google Apps Email'); + if (Dom.get('item_domain').checked) + title.push('Domain'); + if (Dom.get('item_ssl').checked) + title.push('SSL'); + Dom.get('domain_title').innerHTML = title.join(', '); + Dom.removeClass('domain', 'bz_default_hidden'); + } else { + Dom.addClass('domain', 'bz_default_hidden'); + } + if (Dom.get('item_discourse').checked) { + Dom.removeClass('discourse', 'bz_default_hidden'); + } else { + Dom.addClass('discourse', 'bz_default_hidden'); + } + if (Dom.get('item_other').checked) { + Dom.removeClass('other', 'bz_default_hidden'); + } else { + Dom.addClass('other', 'bz_default_hidden'); + } +} + +function init() { + items = document.forms.f.items; + for (i = 0; i < items.length; i++) { + YAHOO.util.Event.on(items[i], 'click', setItemVisibility); + } + setItemVisibility(); +} + +</script> + +<noscript> +<h1>Javascript is required to use this form.</h1> +</noscript> + +<h1>Community IT Request</h1> + +<form method="post" action="post_bug.cgi" id="tmRequestForm" name="f"> +<input type="hidden" name="product" value="Mozilla Reps"> +<input type="hidden" name="component" value="Community IT Requests"> +<input type="hidden" name="bug_severity" value="normal"> +<input type="hidden" name="rep_platform" value="All"> +<input type="hidden" name="priority" value="--"> +<input type="hidden" name="op_sys" value="Other"> +<input type="hidden" name="version" value="unspecified"> +<input type="hidden" name="groups" value="mozilla-reps"> +<input type="hidden" name="format" value="[% format FILTER html %]"> +<input type="hidden" name="comment" id="comment" value=""> +<input type="hidden" name="short_desc" id="short_desc" value=""> +<input type="hidden" name="token" value="[% token FILTER html %]"> + +<table id="reps-form"> + +<tr class="odd"> + <th>Your Name:[% mandatory FILTER none %]</th> + <td><input id="name" name="name" size="40" value="[% user.name FILTER html %]"></td> +</tr> + +<tr class="even"> + <th>Mozillians.org Profile:[% mandatory FILTER none %]</th> + <td><input id="mozillian" name="mozillian" size="40"></td> +</tr> + +<tr class="odd"> + <th>Reps Profile (if applicable):</th> + <td><input id="reps" name="reps" size="40"></td> +</tr> + +<tr class="even"> + <th>Your Community's Name:[% mandatory FILTER none %]</th> + <td><input id="community" name="community" size="40"></td> +</tr> + +<tr class="odd"> + <th> + Items Requesting:[% mandatory FILTER none %] + </th> + <td> + <div id="items"> + <div> + <input type="checkbox" name="items" value="hosting" id="item_hosting"> + <label for="item_hosting">Hosting</label> + </div> + <div> + <input type="checkbox" name="items" value="apps_email" id="item_apps_email"> + <label for="item_apps_email">Google Apps Emails</label> + </div> + <div> + <input type="checkbox" name="items" value="domain" id="item_domain"> + <label for="item_domain">Domain</label> + </div> + <div> + <input type="checkbox" name="items" value="discourse" id="item_discourse"> + <label for="item_discourse">Discourse Category</label> + </div> + <div> + <input type="checkbox" name="items" value="ssl" id="item_ssl"> + <label for="item_ssl">SSL</label> + </div> + <div> + <input type="checkbox" name="items" value="other" id="item_other"> + <label for="item_other">Other</label> + </div> + </div> + </td> +</tr> + +<tbody id="hosting"> +<tr class="even"> + <th colspan="2">Hosting</th> +</tr> +<tr class="odd"> + <th>Expected visits per month:[% mandatory FILTER none %]</th> + <td><input id="hosting_visits" name="hosting_visits" size="40"></td> +</tr> +<tr class="odd"> + <th>What will run on the hosting?:[% mandatory FILTER none %]</th> + <td><textarea id="hosting_running" name="hosting_running" class="small"></textarea></td> +</tr> +<tr class="odd"> + <th>Data:</td> + <td> + Any data we can use to help choose the best solution (traffic graphs etc).<br> + <textarea id="hosting_data" name="hosting_data" class="small"></textarea> + </td> +</tr> +</tbody> + +<tbody id="domain"> +<tr class="even"> + <th colspan="2" id="domain_title">Domain</th> +</tr> +<tr class="odd"> + <th>Domain Name:[% mandatory FILTER none %]</th> + <td><input id="domain_name" name="domain_name" size="40"></td> +</tr> +</tbody> + +<tbody id="discourse"> +<tr class="even"> + <th colspan="2">Discourse Category</th> +</tr> +<tr class="odd"> + <th>Discourse Category Names:[% mandatory FILTER none %]</th> + <td><input id="discourse_names" name="discourse_names" size="40"></td> +</tr> +<tr class="odd"> + <th>Moderators:[% mandatory FILTER none %]</th> + <td><input id="discourse_mods" name="discourse_mods" size="40"></td> +</tr> +<tr class="odd"> + <th>Hex code of background of category tag:</th> + <td><input id="discourse_bg" name="discourse_bg" size="40"></td> +</tr> +</tbody> + +<tbody id="other"> +<tr class="even"> + <th colspan="2">Other Item</th> +</tr> +<tr class="odd"> + <th>Other:[% mandatory FILTER none %]</th> + <td><input id="other_value" name="other_value" size="40"></td> +</tr> +</tbody> + +<tr class="even"> + <th colspan="2"> + Other Comments + </th> +</tr> +<tr class="even"> + <td colspan="2"> + Please explain why you'd like the hosting, and anything else this form does not include.<br> + <textarea id="comments" name="comments" rows="4"></textarea> + </td> +</tr> + +<tr class="even"> + <td colspan="2"> + <input id="submit" type="submit" value="Submit" onclick="return submitForm()"> + </td> +</tr> + +<tr class="even"> + <td width="35%"> </td> + <td width="65%"> </td> +</tr> + +</table> + +</form> + +[% PROCESS global/footer.html.tmpl %] diff --git a/extensions/REMO/web/styles/moz_reps.css b/extensions/REMO/web/styles/moz_reps.css index 1cd9002b4..216bdd234 100644 --- a/extensions/REMO/web/styles/moz_reps.css +++ b/extensions/REMO/web/styles/moz_reps.css @@ -6,6 +6,7 @@ #reps-form th, #reps-form td { padding: 5px; + vertical-align: top; } #reps-form .even th, #reps-form .even td { @@ -22,6 +23,10 @@ width: 590px; } +#reps-form textarea.small { + width: 295px; +} + #reps-form .mandatory { color: red; font-size: 80%; |