summaryrefslogtreecommitdiffstats
path: root/askbot/skins/common/media/js/post.js
diff options
context:
space:
mode:
Diffstat (limited to 'askbot/skins/common/media/js/post.js')
-rw-r--r--askbot/skins/common/media/js/post.js131
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"){