diff options
author | Byron Jones <bjones@mozilla.com> | 2011-11-15 15:54:28 +0100 |
---|---|---|
committer | Byron Jones <bjones@mozilla.com> | 2011-11-15 15:54:28 +0100 |
commit | eec86341ab238905781728c178d971ab6928a0f3 (patch) | |
tree | 1fe0ed714c92c23baaa466cebde9aeb28f25a487 | |
parent | 2afa374c8b0281352374a90fd06d07ea3a9bf987 (diff) | |
download | bugzilla-eec86341ab238905781728c178d971ab6928a0f3.tar.gz bugzilla-eec86341ab238905781728c178d971ab6928a0f3.tar.xz |
Bug 702039: fix guided bug entry for products without a general component
-rw-r--r-- | extensions/GuidedBugEntry/web/js/guided.js | 50 |
1 files changed, 32 insertions, 18 deletions
diff --git a/extensions/GuidedBugEntry/web/js/guided.js b/extensions/GuidedBugEntry/web/js/guided.js index a83bf4b1b..4a12be49f 100644 --- a/extensions/GuidedBugEntry/web/js/guided.js +++ b/extensions/GuidedBugEntry/web/js/guided.js @@ -548,7 +548,7 @@ var dupes = { var bugForm = { _visibleHelpPanel: null, - _mandatoryFields: [ 'short_desc', 'version_select' ], + _mandatoryFields: [ 'short_desc', 'component_select', 'version_select' ], onInit: function() { Dom.get('user_agent').value = navigator.userAgent; @@ -601,19 +601,33 @@ var bugForm = { Dom.get('submit').disabled = false; // build components - // if there's a general component in it, make it selected by default + + // check for a general component var defaultComponent = false; for (var i = 0, n = product.details.components.length; i < n; i++) { var component = product.details.components[i]; if (component.is_active == '1') { - elComponents.options[elComponents.options.length] = - new Option(component.name, component.name); - if (!defaultComponent && component.name.match(/general/i)) { + if (component.name.match(/general/i)) { defaultComponent = component.name; + break; } } } + // if there isn't a default component, default to blank + if (!defaultComponent) { + elComponents.options[elComponents.options.length] = new Option('', ''); + } + + // build component select + for (var i = 0, n = product.details.components.length; i < n; i++) { + var component = product.details.components[i]; + if (component.is_active == '1') { + elComponents.options[elComponents.options.length] = + new Option(component.name, component.name); + } + } + var elComponent = Dom.get('component'); if (elComponent.value == '' && defaultComponent) elComponent.value = defaultComponent; @@ -735,8 +749,8 @@ var bugForm = { return filename; }, - _mandatoryCheck: function() { - result = true; + _mandatoryMissing: function() { + var result = new Array(); for (var i = 0, n = this._mandatoryFields.length; i < n; i++ ) { id = this._mandatoryFields[i]; el = Dom.get(id); @@ -750,7 +764,7 @@ var bugForm = { if (value == '') { Dom.addClass(id, 'missing'); - result = false; + result.push(id); } else { Dom.removeClass(id, 'missing'); } @@ -762,17 +776,17 @@ var bugForm = { // check mandatory fields - if (!bugForm._mandatoryCheck()) { - if (Dom.hasClass('short_desc', 'missing') - && Dom.hasClass('version_select', 'missing')) { - alert('Please enter the summary, and select the relevant version.'); - } else if (Dom.hasClass('short_desc', 'missing')) { - alert('Please enter the summary.'); - } else { - alert('Please select the relevant version.\n\n' + - 'If you are unsure select "unspecified".'); + var missing = bugForm._mandatoryMissing(); + if (missing.length) { + var message = 'The following field' + + (missing.length == 1 ? ' is' : 's are') + ' required:\n\n'; + for (var i = 0, n = missing.length; i < n; i++ ) { + var id = missing[i]; + if (id == 'short_desc') message += ' Summary\n'; + if (id == 'component_select') message += ' Component\n'; + if (id == 'version_select') message += ' Version\n'; } - + alert(message); return false; } |