diff options
Diffstat (limited to 'askbot/skins/common/media/js/post.js')
-rw-r--r-- | askbot/skins/common/media/js/post.js | 131 |
1 files changed, 111 insertions, 20 deletions
diff --git a/askbot/skins/common/media/js/post.js b/askbot/skins/common/media/js/post.js index 59ba4fff..2f2fbd75 100644 --- a/askbot/skins/common/media/js/post.js +++ b/askbot/skins/common/media/js/post.js @@ -112,17 +112,14 @@ var CPValidator = function(){ limit_tag_length: true }, text: { - required: true, - minlength: 10 + minlength: askbot['settings']['minQuestionBodyLength'] + }, + title: { + minlength: askbot['settings']['minTitleLength'] } - /*title: { - required: true, - minlength: 10 - }*/ }; }, getQuestionFormMessages: function(){ - var chars = 10 return { tags: { required: " " + gettext('tags cannot be empty'), @@ -132,13 +129,49 @@ var CPValidator = function(){ }, text: { required: " " + gettext('content cannot be empty'), - minlength: interpolate(gettext('%s content minchars'), [chars]) + minlength: interpolate( + ngettext( + 'question body must be > %s character', + 'question body must be > %s characters', + askbot['settings']['minQuestionBodyLength'] + ), + [askbot['settings']['minQuestionBodyLength'], ] + ) }, title: { required: " " + gettext('please enter title'), - minlength: interpolate(gettext('%s title minchars'), [chars]) + minlength: interpolate( + ngettext( + 'title must be > %s character', + 'title must be > %s characters', + askbot['settings']['minTitleLength'] + ), + [askbot['settings']['minTitleLength'], ] + ) } }; + }, + getAnswerFormRules : function(){ + return { + text: { + minlength: askbot['settings']['minAnswerBodyLength'] + }, + }; + }, + getAnswerFormMessages: function(){ + return { + text: { + required: " " + gettext('content cannot be empty'), + minlength: interpolate( + ngettext( + 'answer must be > %s character', + 'answer must be > %s characters', + askbot['settings']['minAnswerBodyLength'] + ), + [askbot['settings']['minAnswerBodyLength'], ] + ) + }, + } } }; }(); @@ -271,11 +304,11 @@ var Vote = function(){ var commentLinkIdPrefix = 'comment-'; var voteNumberClass = "vote-number"; var offensiveIdPrefixQuestionFlag = 'question-offensive-flag-'; - var removeOffensiveIdPrefixQuestionFlag = 'question-offensive-flag-remove-'; - var removeAllOffensiveIdPrefixQuestionFlag = 'question-offensive-flag-remove-all-'; + var removeOffensiveIdPrefixQuestionFlag = 'question-offensive-remove-flag-'; + var removeAllOffensiveIdPrefixQuestionFlag = 'question-offensive-remove-all-flag-'; var offensiveIdPrefixAnswerFlag = 'answer-offensive-flag-'; - var removeOffensiveIdPrefixAnswerFlag = 'answer-offensive-flag-remove-'; - var removeAllOffensiveIdPrefixAnswerFlag = 'answer-offensive-flag-remove-all'; + var removeOffensiveIdPrefixAnswerFlag = 'answer-offensive-remove-flag-'; + var removeAllOffensiveIdPrefixAnswerFlag = 'answer-offensive-remove-all-flag-'; var offensiveClassFlag = 'offensive-flag'; var questionControlsId = 'question-controls'; var removeQuestionLinkIdPrefix = 'question-delete-link-'; @@ -472,7 +505,7 @@ var Vote = function(){ }); getRemoveAllOffensiveQuestionFlag().unbind('click').click(function(event){ - Vote.remove_offensive(this, VoteType.removeAllOffensiveQuestion); + Vote.remove_all_offensive(this, VoteType.removeAllOffensiveQuestion); }); getOffensiveAnswerFlags().unbind('click').click(function(event){ @@ -484,7 +517,7 @@ var Vote = function(){ }); getRemoveAllOffensiveAnswerFlag().unbind('click').click(function(event){ - Vote.remove_offensive(this, VoteType.removeAllOffensiveAnswer); + Vote.remove_all_offensive(this, VoteType.removeAllOffensiveAnswer); }); getremoveQuestionLink().unbind('click').click(function(event){ @@ -651,7 +684,7 @@ var Vote = function(){ // Change the link text and rebind events $(object).find("a.question-flag").html(gettext("remove flag")); var obj_id = $(object).attr("id"); - $(object).attr("id", obj_id.replace("flag-", "flag-remove-")); + $(object).attr("id", obj_id.replace("flag-", "remove-flag-")); getRemoveOffensiveQuestionFlag().unbind('click').click(function(event){ Vote.remove_offensive(this, VoteType.removeOffensiveQuestion); @@ -672,14 +705,53 @@ var Vote = function(){ //to django.po files //_('anonymous users cannot flag offensive posts') + pleaseLogin; if (data.success == "1"){ - if(data.count > 0) - $(object).children('span[class=darkred]').text("("+ data.count +")"); - else + if(data.count > 0){ + $(object).children('span[class=darkred]').text("("+ data.count +")"); + } + else{ $(object).children('span[class=darkred]').text(""); + // Remove "remove all flags link" since there are no more flags to remove + var remove_all = $(object).siblings("span.offensive-flag[id*=-offensive-remove-all-flag-]"); + $(remove_all).next("span.sep").remove(); + $(remove_all).remove(); + } // Change the link text and rebind events $(object).find("a.question-flag").html(gettext("flag offensive")); var obj_id = $(object).attr("id"); - $(object).attr("id", obj_id.replace("flag-remove-", "flag-")); + $(object).attr("id", obj_id.replace("remove-flag-", "flag-")); + + getOffensiveQuestionFlag().unbind('click').click(function(event){ + Vote.offensive(this, VoteType.offensiveQuestion); + }); + + getOffensiveAnswerFlags().unbind('click').click(function(event){ + Vote.offensive(this, VoteType.offensiveAnswer); + }); + } + else { + object = $(object); + showMessage(object, data.message) + } + }; + + var callback_remove_all_offensive = function(object, voteType, data){ + //todo: transfer proper translations of these from i18n.js + //to django.po files + //_('anonymous users cannot flag offensive posts') + pleaseLogin; + if (data.success == "1"){ + if(data.count > 0) + $(object).children('span[class=darkred]').text("("+ data.count +")"); + else + $(object).children('span[class=darkred]').text(""); + // remove the link. All flags are gone + var remove_own = $(object).siblings("span.offensive-flag[id*=-offensive-remove-flag-]") + $(remove_own).find("a.question-flag").html(gettext("flag offensive")); + $(remove_own).attr("id", $(remove_own).attr("id").replace("remove-flag-", "flag-")); + + $(object).next("span.sep").remove(); + $(object).remove(); + + getOffensiveQuestionFlag().unbind('click').click(function(event){ Vote.offensive(this, VoteType.offensiveQuestion); @@ -815,6 +887,25 @@ var Vote = function(){ submit(object, voteType, callback_remove_offensive); } }, + remove_all_offensive: function(object, voteType){ + if (!currentUserId || currentUserId.toUpperCase() == "NONE"){ + showMessage( + $(object), + offensiveAnonymousMessage.replace( + "{{QuestionID}}", + questionId + ).replace( + '{{questionSlug}}', + questionSlug + ) + ); + return false; + } + if (confirm(removeOffensiveConfirmation)){ + postId = object.id.substr(object.id.lastIndexOf('-') + 1); + submit(object, voteType, callback_remove_all_offensive); + } + }, //delete question or answer (comments are deleted separately) remove: function(object, voteType){ if (!currentUserId || currentUserId.toUpperCase() == "NONE"){ |