summaryrefslogtreecommitdiffstats
path: root/extensions
diff options
context:
space:
mode:
Diffstat (limited to 'extensions')
-rw-r--r--extensions/BMO/Extension.pm14
-rw-r--r--extensions/BMO/template/en/default/bug/create/comment-fxos-feature.txt.tmpl18
-rw-r--r--extensions/BMO/template/en/default/bug/create/create-fxos-feature.html.tmpl128
3 files changed, 108 insertions, 52 deletions
diff --git a/extensions/BMO/Extension.pm b/extensions/BMO/Extension.pm
index 2682657c6..4b3c3bb6e 100644
--- a/extensions/BMO/Extension.pm
+++ b/extensions/BMO/Extension.pm
@@ -1864,6 +1864,17 @@ EOF
$parent_bug->update($parent_bug->creation_ts);
}
+sub _pre_fxos_feature {
+ my ($self, $args) = @_;
+ my $cgi = Bugzilla->cgi;
+ my $user = Bugzilla->user;
+ my $params = $args->{params};
+
+ $params->{keywords} = 'foxfood';
+ $params->{keywords} .= ',feature' if ($cgi->param('feature_type') // '') eq 'new';
+ $params->{bug_status} = $user->in_group('canconfirm') ? 'NEW' : 'UNCONFIRMED';
+}
+
sub _add_attachment {
my ($self, $args, $attachment_args) = @_;
@@ -1964,6 +1975,9 @@ sub bug_before_create {
# map renamed groups
$params->{groups} = [ _map_groups($params->{groups}) ];
}
+ if ((Bugzilla->cgi->param('format') // '') eq 'fxos-feature') {
+ $self->_pre_fxos_feature($args);
+ }
}
sub _map_groups {
diff --git a/extensions/BMO/template/en/default/bug/create/comment-fxos-feature.txt.tmpl b/extensions/BMO/template/en/default/bug/create/comment-fxos-feature.txt.tmpl
index 65224bfba..7664ff502 100644
--- a/extensions/BMO/template/en/default/bug/create/comment-fxos-feature.txt.tmpl
+++ b/extensions/BMO/template/en/default/bug/create/comment-fxos-feature.txt.tmpl
@@ -7,18 +7,14 @@
#%]
[% USE Bugzilla %]
-[% cgi = Bugzilla.cgi +%]
->> Feature Request Title:
+[% cgi = Bugzilla.cgi %]
+
+>> Feature Request Summary:
[%+ cgi.param('short_desc') %]
>> Description of feature, or problem to be solved
-[%+ cgi.param("description") %]
-
->> Impact of implementing the feature/solution
-[%+ cgi.param("implement_impact") %]
-
->> Impact of NOT implementing the feature/solution
-[%+ cgi.param("not_implement_impact") %]
+[%+ cgi.param("description") || "-" %]
->> Date required
-[%+ cgi.param("date_required") %]
+[% RETURN IF cgi.param("discussion") != "yes" %]
+>> Mailing list thread
+[%+ cgi.param("bug_file_loc") %]
diff --git a/extensions/BMO/template/en/default/bug/create/create-fxos-feature.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-fxos-feature.html.tmpl
index faa0495a4..ec0cc84c9 100644
--- a/extensions/BMO/template/en/default/bug/create/create-fxos-feature.html.tmpl
+++ b/extensions/BMO/template/en/default/bug/create/create-fxos-feature.html.tmpl
@@ -43,10 +43,13 @@
color: green;
padding-left: 1em;
}
+#feature_form .hidden {
+ display: none;
+}
[% END %]
[% inline_javascript = BLOCK %]
-var compdesc = new Array();
+var compdesc = [];
compdesc[""] = 'Please select a component from the list above.';
[% FOREACH comp = product.components %]
compdesc['[% comp.name FILTER js %]'] = '[% comp.description FILTER js %]';
@@ -55,24 +58,44 @@ function showCompDesc() {
var comp_select = document.getElementById('component');
document.getElementById('comp_description').innerHTML = compdesc[comp_select.value];
}
+
function validateAndSubmit() {
var alert_text = '';
- if (!isFilledOut('component')) alert_text += 'Please select a value for product component.\n';
- if (!isFilledOut('short_desc')) alert_text += 'Please enter a value for feature request title.\n';
+ if (!isFilledOut('component')) alert_text += 'Please select a component.\n';
+ if (!isFilledOut('short_desc')) alert_text += 'Please provide a summary of the feature request.\n';
+ if ($('#discussion').val() === 'yes') {
+ if (!isFilledOut('bug_file_loc')) alert_text += 'Please provide the "Mailing list thread" URL.\n';
+ }
if (alert_text != '') {
alert(alert_text);
return false;
}
return true;
}
-YAHOO.util.Event.onDOMReady(showCompDesc);
+
+$(function() {
+ $('#discussion')
+ .change(function() {
+ if ($(this).val() === 'yes') {
+ $('.thread').removeClass('hidden');
+ $('.thread input').prop('disabled', false);
+ }
+ else {
+ $('.thread').addClass('hidden');
+ $('.thread input').prop('disabled', true);
+ }
+ })
+ .change();
+ showCompDesc();
+});
[% END %]
[% PROCESS global/header.html.tmpl
title = "Firefox OS Feature Request Form"
+ generate_api_token = 1
style = inline_style
javascript = inline_javascript
- javascript_urls = [ 'extensions/BMO/web/js/form_validate.js' ]
+ javascript_urls = [ 'extensions/BMO/web/js/form_validate.js', 'js/field.js' ]
%]
[% USE Bugzilla %]
@@ -82,39 +105,57 @@ YAHOO.util.Event.onDOMReady(showCompDesc);
onSubmit="return validateAndSubmit();">
<input type="hidden" name="format" value="fxos-feature">
<input type="hidden" name="product" value="Firefox OS">
- <input type="hidden" name="keywords" value="feature">
+ <input type="hidden" name="keywords" id="keywords" value="foxfood">
<input type="hidden" name="rep_platform" value="All">
<input type="hidden" name="op_sys" value="Other">
<input type="hidden" name="version" value="unspecified">
- <input type="hidden" name="bug_severity" id="bug_severity" value="normal">
+ <input type="hidden" name="bug_status" value="UNCONFIRMED">
+ <input type="hidden" name="bug_severity" value="normal">
<input type="hidden" name="token" value="[% token FILTER html %]">
-<img title="Firefox OS Feature Form" src="extensions/BMO/web/producticons/firefox.png">
+<img title="Firefox OS Feature Form" src="extensions/BMO/web/producticons/firefox_os.png" width="64" height="64">
<div class="form_section">
<label for="component" class="field_label required">Product Component</label>
<div class="field_desc">
Which product component is your feature request applicable to?
- If you are not sure, choose "General".
+ If you are not sure, choose "Gaia::Feedback".
</div>
<select name="component" id="component" onchange="showCompDesc(this);">
<option value="">Select One</option>
- [%- FOREACH c = product.components %]
- [% NEXT IF NOT c.is_active %]
- <option value="[% c.name FILTER html %]"
- id="v[% c.id FILTER html %]_component"
- [% IF c.name == default.component_ %]
- selected="selected"
- [% END %]>
- [% c.name FILTER html -%]
- </option>
- [%- END %]
+ [% FOREACH c IN product.components %]
+ [% NEXT UNLESS c.is_active %]
+ [% NEXT UNLESS c.name == "Gaia::Feedback" %]
+ <option value="[% c.name FILTER html %]" id="v[% c.id FILTER html %]_component"
+ [% " selected" IF c.name == default.component_ %]>
+ [% c.name FILTER html %]
+ </option>
+ [% END %]
+ [% FOREACH c IN product.components %]
+ [% NEXT UNLESS c.is_active %]
+ [% NEXT IF c.name == "Gaia::Feedback" %]
+ <option value="[% c.name FILTER html %]" id="v[% c.id FILTER html %]_component"
+ [% " selected" IF c.name == default.component_ %]>
+ [% c.name FILTER html %]
+ </option>
+ [% END %]
</select>
<div id="comp_description"></div>
</div>
<div class="form_section">
- <label for="short_desc" class="field_label required">Feature Request Title</label>
+ <label for="feature_type" class="field_label required">This is a feature request</label>
+ <div class="field_desc">
+ Is this a defect with existing functionality or a new feature request?
+ </div>
+ <select id="feature_type" name="feature_type">
+ <option value="new">New Feature Request</option>
+ <option value="existing">Existing Feature Defect</option>
+ </select>
+</div>
+
+<div class="form_section">
+ <label for="short_desc" class="field_label required">Feature Request Summary</label>
<div class="field_desc">
Please enter a title for your feature request that is brief and self explanatory.
(Example: "Memory dialing using keypad numbers")
@@ -134,40 +175,45 @@ YAHOO.util.Event.onDOMReady(showCompDesc);
</div>
<div class="form_section">
- <label for="implement_impact" class="field_label">Impact of implementing the feature/solution</label>
+ <label for="discussion" class="field_label">Was this discussed in a mailing list?</label>
<div class="field_desc">
- If this solution were to be implemented, what would the impact be?
- (Example, "If this solution were to be implemented, it would save the users
- significant time when dialing commonly used phone numbers.")
</div>
- <textarea id="implement_impact" name="implement_impact" cols="80" rows="5"></textarea>
+ <select id="discussion" name="discussion">
+ <option value="no">No</option>
+ <option value="yes">Yes</option>
+ </select>
</div>
-<div class="form_section">
- <label for="not_implement_impact" class="field_label">Impact of NOT implementing the feature/solution</label>
+<div class="form_section thread hidden">
+ <label for="bug_file_loc" class="field_label required">Mailing list thread</label>
<div class="field_desc">
- If this solution were NOT to be implemented, what would the impact be?
- (Example, "By not implementing this solution, we are unable to sell phones in
- Iceland which has a certification requirement to have support for memory dialing.")
+ The mailing list post where this was discussed.<br>
+ e.g. https://groups.google.com/a/mozilla.com/forum/#!topic/foxfood-feedback/eCg6KaVD4FE
</div>
- <textarea id="not_implement_impact" name="not_implement_impact" cols="80" rows="5"></textarea>
+ <input type="text" name="bug_file_loc" id="bug_file_loc" size="80" disabled>
</div>
-<div class="form_section">
- <label for="date_required" class="field_label">Date required</label>
+<div class="form_section thread hidden">
+ <label for="cc" class="field_label">Stakeholder email addresses</label>
<div class="field_desc">
- Is this solution required by a certain date? Why?
- (Example: "March 2014. We plan to sell phones in Iceland in June 2014 using Firefox OS 1.4.
- Completing the feature in March would allow the device to pass operator certification in time
- for a June retail launch.")<br>
- <strong>Note:</strong> completing this field does not imply that the feature will indeed be delivered in this timeframe.
+ Anyone you think would like to follow this request. You may include people
+ who discussed this in the mailing list thread, if there was one.
</div>
- <textarea id="date_required" name="date_required" cols="80" rows="5"></textarea>
+ [% INCLUDE global/userselect.html.tmpl
+ id => "cc"
+ name => "cc"
+ value => ""
+ size => 80
+ classes => ["bz_userfield"]
+ multiple => 5
+ %]
</div>
<div class="head_desc">
- Once your form has been submitted, a tracking [% terms.bug %] will be created. We will
- then reach out for additional info and next steps. Thanks!
+ Once your form has been submitted, a tracking [% terms.bug %] will be
+ created. We will then reach out for additional info and next steps. If you
+ discussed this on a mailing list, please link the people there to this
+ tracking [% terms.bug %]. Thanks!
</div>
<input type="submit" id="commit" value="Submit">