From ada79260b3211dc99e3b7f84a91a66c8754d6a14 Mon Sep 17 00:00:00 2001
From: Neil Lalonde <neillalonde@gmail.com>
Date: Fri, 24 May 2013 17:08:54 -0400
Subject: [PATCH] Change composer error message when title is too long or too
 short, and make sure the submit button is 'disabled' when title is too long

---
 app/assets/javascripts/discourse/models/composer.js     | 4 +++-
 app/assets/javascripts/discourse/views/composer_view.js | 6 ++++--
 config/locales/client.en.yml                            | 3 ++-
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/app/assets/javascripts/discourse/models/composer.js b/app/assets/javascripts/discourse/models/composer.js
index 860c31ef2..55e7983af 100644
--- a/app/assets/javascripts/discourse/models/composer.js
+++ b/app/assets/javascripts/discourse/models/composer.js
@@ -164,7 +164,9 @@ Discourse.Composer = Discourse.Model.extend({
     //    - creating a new topic
     //    - editing the 1st post
     //    - creating a private message
-    if (this.get('editTitle') && this.get('titleLength') < Discourse.SiteSettings.min_topic_title_length) return true;
+    if (this.get('editTitle') &&
+          (this.get('titleLength') < Discourse.SiteSettings.min_topic_title_length ||
+            this.get('titleLength') > Discourse.SiteSettings.max_topic_title_length) ) return true;
 
     // Need at least one user when sending a private message
     if (this.get('creatingPrivateMessage') && (this.get('targetUsernames').trim() + ',').indexOf(',') === 0) return true;
diff --git a/app/assets/javascripts/discourse/views/composer_view.js b/app/assets/javascripts/discourse/views/composer_view.js
index a76ca09f9..376a9895d 100644
--- a/app/assets/javascripts/discourse/views/composer_view.js
+++ b/app/assets/javascripts/discourse/views/composer_view.js
@@ -375,8 +375,10 @@ Discourse.ComposerView = Discourse.View.extend({
     var title = this.get('content.title'), reason;
     if( !title || title.length < 1 ){
       reason = Em.String.i18n('composer.error.title_missing');
-    } else if( title.length < Discourse.SiteSettings.min_topic_title_length || title.length > Discourse.SiteSettings.max_topic_title_length ) {
-      reason = Em.String.i18n('composer.error.title_length', {min: Discourse.SiteSettings.min_topic_title_length, max: Discourse.SiteSettings.max_topic_title_length})
+    } else if( title.length < Discourse.SiteSettings.min_topic_title_length ) {
+      reason = Em.String.i18n('composer.error.title_too_short', {min: Discourse.SiteSettings.min_topic_title_length})
+    } else if( title.length > Discourse.SiteSettings.max_topic_title_length ) {
+      reason = Em.String.i18n('composer.error.title_too_long', {max: Discourse.SiteSettings.max_topic_title_length})
     }
 
     if( reason ) {
diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml
index 7f242843f..13df4f77b 100644
--- a/config/locales/client.en.yml
+++ b/config/locales/client.en.yml
@@ -340,7 +340,8 @@ en:
 
       error:
         title_missing: "Title is required."
-        title_length: "Title needs between {{min}} and {{max}} characters."
+        title_too_short: "Title must be at least {{min}} characters long."
+        title_too_long: "Title must be less than {{max}} characters long."
         post_missing: "Post can't be empty."
         post_length: "Post must be at least {{min}} characters long."
         category_missing: "You must choose a category."