From baf464b7617ed3038bf66e31ed7fa7ec24d9c233 Mon Sep 17 00:00:00 2001 From: Miguel Freitas Date: Sat, 16 Jul 2016 18:15:50 -0300 Subject: [PATCH] make post size (display and editor) configurable. default is now 256. --- js/interface_common.js | 21 ++++++++++++--------- js/options.js | 14 ++++++++++++++ js/twister_formatpost.js | 4 ++++ options.html | 12 ++++++++++++ 4 files changed, 42 insertions(+), 9 deletions(-) diff --git a/js/interface_common.js b/js/interface_common.js index dd2eab9..87aaf80 100644 --- a/js/interface_common.js +++ b/js/interface_common.js @@ -1667,8 +1667,9 @@ function replyTextInput(event) { } function getPostSplitingPML() { + var MaxPostSize = $.Options.MaxPostEditorChars.val; if (splitedPostsCount > 1) { - var pml = 140 - (i+1).toString().length - splitedPostsCount.toString().length - 4; + var pml = MaxPostSize - (i+1).toString().length - splitedPostsCount.toString().length - 4; // if mention exists, we shouldn't add it while posting. if (typeof reply_to !== 'undefined' && @@ -1676,7 +1677,7 @@ function replyTextInput(event) { pml -= reply_to.length; } } else - var pml = 140; + var pml = MaxPostSize; return pml; } @@ -1723,7 +1724,8 @@ function replyTextUpdateRemaining(ta) { return false; } }); - if (!disable && c >= 0 && c < 140 && textArea.val() !== textArea.attr('data-reply-to')) { + if (!disable && c >= 0 && c < $.Options.MaxPostEditorChars.val && + textArea.val() !== textArea.attr('data-reply-to')) { remainingCount.removeClass('warn'); $.MAL.enableButton(buttonSend); } else { @@ -1739,14 +1741,15 @@ function replyTextCountRemaining(ta) { var textArea = $(ta); var c; + var MaxPostSize = $.Options.MaxPostEditorChars.val; if (usePostSpliting && !textArea.closest('.directMessages').length && splitedPostsCount > 1) { - c = 140 - ta.value.length - (textArea.closest('form').find('textarea').index(ta) + 1).toString().length - splitedPostsCount.toString().length - 4; + c = MaxPostSize - ta.value.length - (textArea.closest('form').find('textarea').index(ta) + 1).toString().length - splitedPostsCount.toString().length - 4; var reply_to = textArea.attr('data-reply-to'); if (typeof reply_to !== 'undefined' && - !checkPostForMentions(ta.value, reply_to, 140 -c -reply_to.length)) + !checkPostForMentions(ta.value, reply_to, MaxPostSize -c -reply_to.length)) c -= reply_to.length; } else - c = 140 - ta.value.length; + c = MaxPostSize - ta.value.length; return c; } @@ -2211,7 +2214,7 @@ function postSubmit(e, oldLastPostId) { var postText = ''; var reply_to = textArea.attr('data-reply-to'); var val = textArea.val(); - if (typeof reply_to === 'undefined' || checkPostForMentions(val, reply_to, 140)) + if (typeof reply_to === 'undefined' || checkPostForMentions(val, reply_to, $.Options.MaxPostEditorChars.val)) postText = val + ' (' + splitedPostsCount.toString() + '/' + splitedPostsCount.toString() + ')'; else postText = reply_to + val + ' (' + splitedPostsCount.toString() + '/' + splitedPostsCount.toString() + ')'; @@ -2225,7 +2228,7 @@ function postSubmit(e, oldLastPostId) { var postText = ''; var reply_to = textArea.attr('data-reply-to'); var val = textArea[0].value; - if (typeof reply_to === 'undefined' || checkPostForMentions(val, reply_to, 140)) + if (typeof reply_to === 'undefined' || checkPostForMentions(val, reply_to, $.Options.MaxPostEditorChars.val)) postText = val + ' (' + (splitedPostsCount - textArea.length + 1).toString() + '/' + splitedPostsCount.toString() + ')'; else postText = reply_to + val + ' (' + (splitedPostsCount - textArea.length + 1).toString() + '/' + splitedPostsCount.toString() + ')'; @@ -2242,7 +2245,7 @@ function postSubmit(e, oldLastPostId) { closePrompt(btnPostSubmit); else { textArea.val('').attr('placeholder', polyglot.t('Your message was sent!')); - btnPostSubmit.closest('form').find('.post-area-remaining').text('140'); + btnPostSubmit.closest('form').find('.post-area-remaining').text(''); if (btnPostSubmit.closest('.post-area,.post-reply-content')) { $('.post-area-new').removeClass('open').find('textarea').blur(); diff --git a/js/options.js b/js/options.js index 6906cc5..b3d034b 100644 --- a/js/options.js +++ b/js/options.js @@ -190,6 +190,20 @@ function twisterOptions() { type: 'checkbox', valDefault: false }); + this.add({ + name: 'MaxPostDisplayChars', + type: 'numeric', + valDefault: '256', + valMes: 'characters', + getMethod: function (val) {return parseInt(val);} + }); + this.add({ + name: 'MaxPostEditorChars', + type: 'numeric', + valDefault: '256', + valMes: 'characters', + getMethod: function (val) {return parseInt(val);} + }); this.add({ name: 'splitPosts', valDefault: 'disable' diff --git a/js/twister_formatpost.js b/js/twister_formatpost.js index c36433f..79fd1e5 100644 --- a/js/twister_formatpost.js +++ b/js/twister_formatpost.js @@ -89,6 +89,10 @@ function postToElem(post, kind, promoted) { if (typeof msg !== 'string') msg = ''; + if (msg.length > $.Options.MaxPostDisplayChars.val) { + msg = msg.slice(0,$.Options.MaxPostDisplayChars.val) + "\u2026"; + } + // Now create the html elements var elem = $.MAL.getPostTemplate().clone(true).appendTo(twister.html.detached); elem.removeAttr('id') diff --git a/options.html b/options.html index 3ce1711..8338e62 100644 --- a/options.html +++ b/options.html @@ -312,6 +312,12 @@ Use proxy for image preview only +
+
+

Maximum post size to show

+ characters +
+

Top Trends

@@ -417,6 +423,12 @@
+
+
+

Maximum post size to send

+ characters +
+

Split long posts