diff options
author | Byron Jones <glob@mozilla.com> | 2015-07-27 06:29:10 +0200 |
---|---|---|
committer | Byron Jones <glob@mozilla.com> | 2015-07-27 06:29:10 +0200 |
commit | 8553f91f07568d64ff84b3bedee9e6e532b5cc0c (patch) | |
tree | 0855ec167528c0cf4db44b7049445f35f198ed42 | |
parent | 6dd1813d03246095b46db4e7e824d6aaae3b6058 (diff) | |
download | bugzilla-8553f91f07568d64ff84b3bedee9e6e532b5cc0c.tar.gz bugzilla-8553f91f07568d64ff84b3bedee9e6e532b5cc0c.tar.xz |
Bug 1181453 - Amend https://bugzilla.mozilla.org/form.fxos.feature form
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"> |