From a9fd16db3e1513d563fdf9fc19ce0276bbc7b08a Mon Sep 17 00:00:00 2001
From: khall <kevinmichaelhall@gmail.com>
Date: Sun, 24 Aug 2014 13:28:57 -0700
Subject: [PATCH] Fix for issue 5090: Changing error message wording and
 providing more information to user when status message is too long.

---
 app/assets/javascripts/app/views/publisher_view.js | 4 ++--
 app/controllers/status_messages_controller.rb      | 2 +-
 app/models/status_message.rb                       | 2 +-
 config/locales/diaspora/en.yml                     | 5 +----
 4 files changed, 5 insertions(+), 8 deletions(-)

diff --git a/app/assets/javascripts/app/views/publisher_view.js b/app/assets/javascripts/app/views/publisher_view.js
index a975522de5..876ad83399 100644
--- a/app/assets/javascripts/app/views/publisher_view.js
+++ b/app/assets/javascripts/app/views/publisher_view.js
@@ -200,10 +200,10 @@ app.views.Publisher = Backbone.View.extend({
         // standalone means single-shot posting (until further notice)
         if( self.standalone ) self.setEnabled(false);
       },
-      error: function() {
+      error: function(model, resp, options) {
         if( app.publisher ) app.publisher.trigger('publisher:error');
         self.setInputEnabled(true);
-        Diaspora.page.flashMessages.render({ 'success':false, 'notice':Diaspora.I18n.t('failed_to_post_message') });
+        Diaspora.page.flashMessages.render({ 'success':false, 'notice':resp.responseText });
         self.setButtonsEnabled(true);
         self.setInputEnabled(true);
       }
diff --git a/app/controllers/status_messages_controller.rb b/app/controllers/status_messages_controller.rb
index 76cfc55aae..75beea674a 100644
--- a/app/controllers/status_messages_controller.rb
+++ b/app/controllers/status_messages_controller.rb
@@ -95,7 +95,7 @@ class StatusMessagesController < ApplicationController
       respond_to do |format|
         format.html { redirect_to :back }
         format.mobile { redirect_to stream_path }
-        format.json { render :nothing => true, :status => 403 }
+        format.json { render :text => @status_message.errors.messages[:text].join('. '), :status => 403 }
       end
     end
   end
diff --git a/app/models/status_message.rb b/app/models/status_message.rb
index 0695cdbdf6..e817b85076 100644
--- a/app/models/status_message.rb
+++ b/app/models/status_message.rb
@@ -10,7 +10,7 @@ class StatusMessage < Post
   acts_as_taggable_on :tags
   extract_tags_from :raw_message
 
-  validates_length_of :text, :maximum => 65535, :message => I18n.t('status_messages.too_long', :count => 65535)
+  validates_length_of :text, :maximum => 65535, :message => proc {|p, v| I18n.t('status_messages.too_long', :count => 65535, :current_length => v[:value].length)}
 
   # don't allow creation of empty status messages
   validate :presence_of_content, on: :create, if: proc { |sm| sm.author.local? }
diff --git a/config/locales/diaspora/en.yml b/config/locales/diaspora/en.yml
index fa2c84b8a5..a6db18f67e 100644
--- a/config/locales/diaspora/en.yml
+++ b/config/locales/diaspora/en.yml
@@ -1159,10 +1159,7 @@ en:
       no_message_to_display: "No message to display."
     destroy:
       failure: "Failed to delete post"
-    too_long:
-      zero: "please make your status messages less than %{count} characters"
-      one: "please make your status messages less than %{count} characters"
-      other: "please make your status messages less than %{count} characters"
+    too_long: "Please make your status message fewer than %{count} characters. Right now it is %{current_length} characters"
 
   stream_helper:
     show_comments:
-- 
GitLab