Bug 1079227 - Loop feedback form should always allow comments. r=nperriault
authorMark Banner <standard8@mozilla.com>
Wed, 07 Jan 2015 11:52:57 +0000
changeset 248292 91117e6349d00462218548339f8c34fde4877de9
parent 248240 5ab0b9577eae72356c629e9d2178b740fd302306
child 248293 3a1103c584cba23d7c09d42f00cdb16f79fd2e73
push id4489
push userraliiev@mozilla.com
push dateMon, 23 Feb 2015 15:17:55 +0000
treeherdermozilla-beta@fd7c3dc24146 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersnperriault
bugs1079227
milestone37.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1079227 - Loop feedback form should always allow comments. r=nperriault
browser/components/loop/content/shared/js/feedbackViews.js
browser/components/loop/content/shared/js/feedbackViews.jsx
browser/components/loop/standalone/content/l10n/en-US/loop.properties
browser/components/loop/test/shared/feedbackViews_test.js
browser/locales/en-US/chrome/browser/loop/loop.properties
--- a/browser/components/loop/content/shared/js/feedbackViews.js
+++ b/browser/components/loop/content/shared/js/feedbackViews.js
@@ -71,17 +71,17 @@ loop.shared.views.FeedbackView = (functi
     },
 
     _getCategories: function() {
       return {
         audio_quality: l10n.get("feedback_category_audio_quality"),
         video_quality: l10n.get("feedback_category_video_quality"),
         disconnected : l10n.get("feedback_category_was_disconnected"),
         confusing:     l10n.get("feedback_category_confusing"),
-        other:         l10n.get("feedback_category_other")
+        other:         l10n.get("feedback_category_other2")
       };
     },
 
     _getCategoryFields: function() {
       var categories = this._getCategories();
       return Object.keys(categories).map(function(category, key) {
         return (
           React.createElement("label", {key: key, className: "feedback-category-label"}, 
@@ -114,56 +114,48 @@ loop.shared.views.FeedbackView = (functi
         return false;
       }
       return true;
     },
 
     handleCategoryChange: function(event) {
       var category = event.target.value;
       this.setState({
-        category: category,
-        description: category == "other" ? "" : this._getCategories()[category]
+        category: category
       });
       if (category == "other") {
         this.refs.description.getDOMNode().focus();
       }
     },
 
     handleDescriptionFieldChange: function(event) {
       this.setState({description: event.target.value});
     },
 
-    handleDescriptionFieldFocus: function(event) {
-      this.setState({category: "other", description: ""});
-    },
-
     handleFormSubmit: function(event) {
       event.preventDefault();
       // XXX this feels ugly, we really want a feedbackActions object here.
       this.props.feedbackStore.dispatchAction(new sharedActions.SendFeedback({
         happy: false,
         category: this.state.category,
         description: this.state.description
       }));
     },
 
     render: function() {
-      var descriptionDisplayValue = this.state.category === "other" ?
-                                    this.state.description : "";
       return (
         React.createElement(FeedbackLayout, {title: l10n.get("feedback_what_makes_you_sad"), 
                         reset: this.props.reset}, 
           React.createElement("form", {onSubmit: this.handleFormSubmit}, 
             this._getCategoryFields(), 
             React.createElement("p", null, 
               React.createElement("input", {type: "text", ref: "description", name: "description", 
                 className: "feedback-description", 
                 onChange: this.handleDescriptionFieldChange, 
-                onFocus: this.handleDescriptionFieldFocus, 
-                value: descriptionDisplayValue, 
+                value: this.state.description, 
                 placeholder: 
                   l10n.get("feedback_custom_category_text_placeholder")})
             ), 
             React.createElement("button", {type: "submit", className: "btn btn-success", 
                     disabled: !this._isFormReady()}, 
               l10n.get("feedback_submit_button")
             )
           )
--- a/browser/components/loop/content/shared/js/feedbackViews.jsx
+++ b/browser/components/loop/content/shared/js/feedbackViews.jsx
@@ -71,17 +71,17 @@ loop.shared.views.FeedbackView = (functi
     },
 
     _getCategories: function() {
       return {
         audio_quality: l10n.get("feedback_category_audio_quality"),
         video_quality: l10n.get("feedback_category_video_quality"),
         disconnected : l10n.get("feedback_category_was_disconnected"),
         confusing:     l10n.get("feedback_category_confusing"),
-        other:         l10n.get("feedback_category_other")
+        other:         l10n.get("feedback_category_other2")
       };
     },
 
     _getCategoryFields: function() {
       var categories = this._getCategories();
       return Object.keys(categories).map(function(category, key) {
         return (
           <label key={key} className="feedback-category-label">
@@ -114,56 +114,48 @@ loop.shared.views.FeedbackView = (functi
         return false;
       }
       return true;
     },
 
     handleCategoryChange: function(event) {
       var category = event.target.value;
       this.setState({
-        category: category,
-        description: category == "other" ? "" : this._getCategories()[category]
+        category: category
       });
       if (category == "other") {
         this.refs.description.getDOMNode().focus();
       }
     },
 
     handleDescriptionFieldChange: function(event) {
       this.setState({description: event.target.value});
     },
 
-    handleDescriptionFieldFocus: function(event) {
-      this.setState({category: "other", description: ""});
-    },
-
     handleFormSubmit: function(event) {
       event.preventDefault();
       // XXX this feels ugly, we really want a feedbackActions object here.
       this.props.feedbackStore.dispatchAction(new sharedActions.SendFeedback({
         happy: false,
         category: this.state.category,
         description: this.state.description
       }));
     },
 
     render: function() {
-      var descriptionDisplayValue = this.state.category === "other" ?
-                                    this.state.description : "";
       return (
         <FeedbackLayout title={l10n.get("feedback_what_makes_you_sad")}
                         reset={this.props.reset}>
           <form onSubmit={this.handleFormSubmit}>
             {this._getCategoryFields()}
             <p>
               <input type="text" ref="description" name="description"
                 className="feedback-description"
                 onChange={this.handleDescriptionFieldChange}
-                onFocus={this.handleDescriptionFieldFocus}
-                value={descriptionDisplayValue}
+                value={this.state.description}
                 placeholder={
                   l10n.get("feedback_custom_category_text_placeholder")} />
             </p>
             <button type="submit" className="btn btn-success"
                     disabled={!this._isFormReady()}>
               {l10n.get("feedback_submit_button")}
             </button>
           </form>
--- a/browser/components/loop/standalone/content/l10n/en-US/loop.properties
+++ b/browser/components/loop/standalone/content/l10n/en-US/loop.properties
@@ -69,17 +69,17 @@ fxos_app_needed=Please install the {{fxo
 
 feedback_call_experience_heading2=How was your conversation?
 feedback_what_makes_you_sad=What makes you sad?
 feedback_thank_you_heading=Thank you for your feedback!
 feedback_category_audio_quality=Audio quality
 feedback_category_video_quality=Video quality
 feedback_category_was_disconnected=Was disconnected
 feedback_category_confusing=Confusing
-feedback_category_other=Other:
+feedback_category_other2=Other
 feedback_custom_category_text_placeholder=What went wrong?
 feedback_submit_button=Submit
 feedback_back_button=Back
 ## LOCALIZATION NOTE (feedback_window_will_close_in2):
 ## Gaia l10n format; see https://github.com/mozilla-b2g/gaia/blob/f108c706fae43cd61628babdd9463e7695b2496e/apps/email/locales/email.en-US.properties#L387
 ## In this item, don't translate the part between {{..}}
 feedback_window_will_close_in2={[ plural(countdown) ]}
 feedback_window_will_close_in2[one] = This window will close in {{countdown}} second
--- a/browser/components/loop/test/shared/feedbackViews_test.js
+++ b/browser/components/loop/test/shared/feedbackViews_test.js
@@ -128,26 +128,16 @@ describe("loop.shared.views.FeedbackView
        "chosen and a description is entered",
       function() {
         clickSadFace(comp);
         fillSadFeedbackForm(comp, "other", "fake");
 
         expect(comp.getDOMNode().querySelector("form button").disabled).eql(false);
       });
 
-    it("should empty the description field when a predefined category is " +
-       "chosen",
-      function() {
-        clickSadFace(comp);
-
-        fillSadFeedbackForm(comp, "confusing");
-
-        expect(comp.getDOMNode().querySelector(".feedback-description").value).eql("");
-      });
-
     it("should enable the form submit button once a predefined category is " +
        "chosen",
       function() {
         clickSadFace(comp);
 
         fillSadFeedbackForm(comp, "confusing");
 
         expect(comp.getDOMNode().querySelector("form button").disabled).eql(false);
--- a/browser/locales/en-US/chrome/browser/loop/loop.properties
+++ b/browser/locales/en-US/chrome/browser/loop/loop.properties
@@ -266,17 +266,17 @@ powered_by_afterLogo=
 
 feedback_call_experience_heading2=How was your conversation?
 feedback_what_makes_you_sad=What makes you sad?
 feedback_thank_you_heading=Thank you for your feedback!
 feedback_category_audio_quality=Audio quality
 feedback_category_video_quality=Video quality
 feedback_category_was_disconnected=Was disconnected
 feedback_category_confusing=Confusing
-feedback_category_other=Other:
+feedback_category_other2=Other
 feedback_custom_category_text_placeholder=What went wrong?
 feedback_submit_button=Submit
 feedback_back_button=Back
 ## LOCALIZATION NOTE (feedback_window_will_close_in2):
 ## Semicolon-separated list of plural forms. See:
 ## http://developer.mozilla.org/en/docs/Localization_and_Plurals
 ## In this item, don't translate the part between {{..}}
 feedback_window_will_close_in2=This window will close in {{countdown}} second;This window will close in {{countdown}} seconds