From a5961baf355739886f7719e195355f6c72895bb7 Mon Sep 17 00:00:00 2001 From: Evgeny Fadeev Date: Thu, 1 Dec 2011 17:53:45 -0300 Subject: fixed a localization string in English --- askbot/locale/en/LC_MESSAGES/django.po | 6 ------ 1 file changed, 6 deletions(-) diff --git a/askbot/locale/en/LC_MESSAGES/django.po b/askbot/locale/en/LC_MESSAGES/django.po index ed78edd2..ca813006 100644 --- a/askbot/locale/en/LC_MESSAGES/django.po +++ b/askbot/locale/en/LC_MESSAGES/django.po @@ -4524,12 +4524,6 @@ msgstr "ask a question interesting to this community" msgid "try to give an answer, rather than engage into a discussion" msgstr "" -"Please try to give a substantial answer. " -"If you wanted to comment on the question or answer, just use the " -"commenting tool. Please remember that you can always " -"revise your answers - no need to answer the same " -"question twice. Also, please don't forget to vote - it " -"really helps to select the best questions and answers!" msgid "please try to provide details" msgstr "provide enough details" -- cgit v1.2.3-1-g7c22 From 50568a43725c632e744b81b4085781c01f80804c Mon Sep 17 00:00:00 2001 From: Dejan Noveski Date: Sun, 4 Dec 2011 15:48:58 +0100 Subject: Added - ability to remove own flags to questions and answers --- askbot/auth.py | 89 ++++++++- askbot/models/__init__.py | 216 +++++++++++++------- askbot/models/signals.py | 6 +- askbot/skins/common/media/js/post.js | 217 +++++++++++++++------ .../common/templates/question/answer_controls.html | 12 +- .../templates/question/question_controls.html | 10 +- askbot/templatetags/extra_filters_jinja.py | 11 +- askbot/views/commands.py | 29 ++- 8 files changed, 446 insertions(+), 144 deletions(-) diff --git a/askbot/auth.py b/askbot/auth.py index e9a93ec5..15044452 100644 --- a/askbot/auth.py +++ b/askbot/auth.py @@ -48,8 +48,8 @@ def onFlaggedItem(post, user, timestamp=None): reputation.save() signals.flag_offensive.send( - sender=post.__class__, - instance=post, + sender=post.__class__, + instance=post, mark_by=user ) @@ -102,6 +102,91 @@ def onFlaggedItem(post, user, timestamp=None): #post.deleted_by = Admin post.save() + +@transaction.commit_on_success +def onUnFlaggedItem(post, user, timestamp=None): + if timestamp is None: + timestamp = datetime.datetime.now() + + post.offensive_flag_count = post.offensive_flag_count - 1 + post.save() + + if post.post_type == 'comment':#todo: fix this + flagged_user = post.user + else: + flagged_user = post.author + + flagged_user.receive_reputation( + - askbot_settings.REP_LOSS_FOR_RECEIVING_FLAG + ) + flagged_user.save() + + question = post.get_origin_post() + + reputation = Repute( + user=flagged_user, + positive=askbot_settings.REP_LOSS_FOR_RECEIVING_FLAG, + question=question, + reputed_at=timestamp, + reputation_type=-4,#todo: clean up magic number + reputation=flagged_user.reputation + ) + reputation.save() + + signals.remove_flag_offensive.send( + sender=post.__class__, + instance=post, + mark_by=user + ) + + if post.post_type == 'comment': + #do not hide or delete comments automatically yet, + #because there is no .deleted field in the comment model + return + + #todo: These should be updated to work on same revisions. + # The post fell below HIDE treshold - unhide it. + if post.offensive_flag_count == askbot_settings.MIN_FLAGS_TO_HIDE_POST - 1: + #todo: strange - are we supposed to hide the post here or the name of + #setting is incorrect? + flagged_user.receive_reputation( + - askbot_settings.REP_LOSS_FOR_RECEIVING_THREE_FLAGS_PER_REVISION + ) + + flagged_user.save() + + reputation = Repute( + user=flagged_user, + positive=\ + askbot_settings.REP_LOSS_FOR_RECEIVING_THREE_FLAGS_PER_REVISION, + question=question, + reputed_at=timestamp, + reputation_type=-6, + reputation=flagged_user.reputation + ) + reputation.save() + # The post fell below DELETE treshold, undelete it + elif post.offensive_flag_count == askbot_settings.MIN_FLAGS_TO_DELETE_POST-1 : + flagged_user.receive_reputation( + - askbot_settings.REP_LOSS_FOR_RECEIVING_FIVE_FLAGS_PER_REVISION + ) + + flagged_user.save() + + reputation = Repute( + user=flagged_user, + positive =\ + askbot_settings.REP_LOSS_FOR_RECEIVING_FIVE_FLAGS_PER_REVISION, + question=question, + reputed_at=timestamp, + reputation_type=-7, + reputation=flagged_user.reputation + ) + reputation.save() + + post.deleted = False + post.save() + @transaction.commit_on_success def onAnswerAccept(answer, user, timestamp=None): answer.accepted = True diff --git a/askbot/models/__init__.py b/askbot/models/__init__.py index d63acc61..4c5cfdc5 100644 --- a/askbot/models/__init__.py +++ b/askbot/models/__init__.py @@ -44,7 +44,7 @@ def get_model(model_name): return models.get_model('askbot', model_name) User.add_to_class( - 'status', + 'status', models.CharField( max_length = 2, default = const.DEFAULT_USER_STATUS, @@ -55,14 +55,14 @@ User.add_to_class( User.add_to_class('email_isvalid', models.BooleanField(default=False)) User.add_to_class('email_key', models.CharField(max_length=32, null=True)) #hardcoded initial reputaion of 1, no setting for this one -User.add_to_class('reputation', +User.add_to_class('reputation', models.PositiveIntegerField(default=const.MIN_REPUTATION) ) User.add_to_class('gravatar', models.CharField(max_length=32)) #User.add_to_class('has_custom_avatar', models.BooleanField(default=False)) User.add_to_class( - 'avatar_type', - models.CharField(max_length=1, + 'avatar_type', + models.CharField(max_length=1, choices=const.AVATAR_STATUS_CHOICE, default='n') ) @@ -91,7 +91,7 @@ User.add_to_class('about', models.TextField(blank=True)) User.add_to_class('interesting_tags', models.TextField(blank = True)) User.add_to_class('ignored_tags', models.TextField(blank = True)) User.add_to_class( - 'email_tag_filter_strategy', + 'email_tag_filter_strategy', models.SmallIntegerField( choices=const.TAG_FILTER_STRATEGY_CHOICES, default=const.EXCLUDE_IGNORED @@ -158,7 +158,7 @@ def user_update_avatar_type(self): if 'avatar' in django_settings.INSTALLED_APPS: if self.avatar_set.count() > 0: - self.avatar_type = 'a' + self.avatar_type = 'a' else: self.avatar_type = _check_gravatar(self.gravatar) else: @@ -195,7 +195,7 @@ def user_get_old_vote_for_post(self, post): def user_has_affinity_to_question(self, question = None, affinity_type = None): - """returns True if number of tag overlap of the user tag + """returns True if number of tag overlap of the user tag selection with the question is 0 and False otherwise affinity_type can be either "like" or "dislike" """ @@ -228,7 +228,7 @@ def user_has_affinity_to_question(self, question = None, affinity_type = None): def user_has_ignored_wildcard_tags(self): - """True if wildcard tags are on and + """True if wildcard tags are on and user has some""" return ( askbot_settings.USE_WILDCARD_TAGS \ @@ -247,7 +247,7 @@ def user_has_interesting_wildcard_tags(self): def user_can_have_strong_url(self): - """True if user's homepage url can be + """True if user's homepage url can be followed by the search engine crawlers""" return (self.reputation >= askbot_settings.MIN_REP_TO_HAVE_STRONG_URL) @@ -327,14 +327,14 @@ def user_assert_can_unaccept_best_answer(self, answer = None): error_message = suspended_error_message elif self == answer.question.get_owner(): if self == answer.get_owner(): - if not self.is_administrator(): + if not self.is_administrator(): #check rep min_rep_setting = askbot_settings.MIN_REP_TO_ACCEPT_OWN_ANSWER low_rep_error_message = _( ">%(points)s points required to accept or unaccept " " your own answer to your own question" ) % {'points': min_rep_setting} - + _assert_user_can( user = self, blocked_error_message = blocked_error_message, @@ -346,7 +346,7 @@ def user_assert_can_unaccept_best_answer(self, answer = None): elif self.is_administrator() or self.is_moderator(): will_be_able_at = ( - answer.added_at + + answer.added_at + datetime.timedelta( days=askbot_settings.MIN_DAYS_FOR_STAFF_TO_ACCEPT_ANSWER) ) @@ -372,7 +372,7 @@ def user_assert_can_accept_best_answer(self, answer = None): self.assert_can_unaccept_best_answer(answer) def user_assert_can_vote_for_post( - self, + self, post = None, direction = None, ): @@ -657,7 +657,7 @@ def user_assert_can_delete_question(self, question = None): def user_assert_can_delete_answer(self, answer = None): """intentionally use "post" word in the messages - instead of "answer", because this logic also applies to + instead of "answer", because this logic also applies to assert on deleting question (in addition to some special rules) """ blocked_error_message = _( @@ -791,6 +791,54 @@ def user_assert_can_flag_offensive(self, post = None): } raise django_exceptions.PermissionDenied(flags_exceeded_error_message) +def user_assert_can_remove_flag_offensive(self, post = None): + + assert(post is not None) + + non_existing_flagging_error_message = _('cannot remove non-existing flag') + + if self.get_flags_for_post(post).count() < 1: + raise django_exceptions.PermissionDenied(non_existing_flagging_error_message) + + blocked_error_message = _('blocked users cannot remove flags') + + suspended_error_message = _('suspended users cannot remove flags') + + low_rep_error_message = _('need > %(min_rep)s points to remove flag') % \ + {'min_rep': askbot_settings.MIN_REP_TO_FLAG_OFFENSIVE} + min_rep_setting = askbot_settings.MIN_REP_TO_FLAG_OFFENSIVE + + _assert_user_can( + user = self, + post = post, + blocked_error_message = blocked_error_message, + suspended_error_message = suspended_error_message, + low_rep_error_message = low_rep_error_message, + min_rep_setting = min_rep_setting + ) + #one extra assertion + if self.is_administrator() or self.is_moderator(): + return + +def user_assert_can_remove_all_flags_offensive(self, post = None): + assert(post is not None) + permission_denied_message = _("you don't have the permission to remove all flags") + non_existing_flagging_error_message = _('no flags for this entry') + + # Check if the post is flagged by anyone + post_content_type = ContentType.objects.get_for_model(post) + all_flags = Activity.objects.filter( + activity_type = const.TYPE_ACTIVITY_MARK_OFFENSIVE, + content_type = post_content_type, object_id=post.id + ) + if all_flags.count() < 1: + raise django_exceptions.PermissionDenied(non_existing_flagging_error_message) + #one extra assertion + if self.is_administrator() or self.is_moderator(): + return + else: + raise django_exceptions.PermissionDenied(permission_denied_message) + def user_assert_can_retag_question(self, question = None): @@ -859,7 +907,7 @@ def user_assert_can_delete_comment(self, comment = None): def user_assert_can_revoke_old_vote(self, vote): - """raises exceptions.PermissionDenied if old vote + """raises exceptions.PermissionDenied if old vote cannot be revoked due to age of the vote """ if (datetime.datetime.now().day - vote.voted_at.day) \ @@ -874,7 +922,7 @@ def user_get_unused_votes_today(self): one_day_interval = (today, today + datetime.timedelta(1)) used_votes = Vote.objects.filter( - user = self, + user = self, voted_at__range = one_day_interval ).count() @@ -914,7 +962,7 @@ def user_post_comment( return comment def user_post_anonymous_askbot_content(user, session_key): - """posts any posts added just before logging in + """posts any posts added just before logging in the posts are identified by the session key, thus the second argument this function is used by the signal handler with a similar name @@ -953,7 +1001,7 @@ def user_mark_tags( ): """subscribe for or ignore a list of tags - * ``tagnames`` and ``wildcards`` are lists of + * ``tagnames`` and ``wildcards`` are lists of pure tags and wildcard tags, respectively * ``reason`` - either "good" or "bad" * ``action`` - eitrer "add" or "remove" @@ -1083,7 +1131,7 @@ def user_delete_answer( ): self.assert_can_delete_answer(answer = answer) answer.deleted = True - answer.deleted_by = self + answer.deleted_by = self answer.deleted_at = timestamp answer.save() @@ -1112,17 +1160,17 @@ def user_delete_question( self.assert_can_delete_question(question = question) question.deleted = True - question.deleted_by = self + question.deleted_by = self question.deleted_at = timestamp question.save() for tag in list(question.tags.all()): if tag.used_count == 1: tag.deleted = True - tag.deleted_by = self + tag.deleted_by = self tag.deleted_at = timestamp else: - tag.used_count = tag.used_count - 1 + tag.used_count = tag.used_count - 1 tag.save() signals.delete_question_or_answer.send( @@ -1192,20 +1240,20 @@ def user_restore_post( self.assert_can_restore_post(post) if isinstance(post, Question) or isinstance(post, Answer): post.deleted = False - post.deleted_by = None - post.deleted_at = None + post.deleted_by = None + post.deleted_at = None post.save() if isinstance(post, Answer): post.question.update_answer_count() elif isinstance(post, Question): #todo: make sure that these tags actually exist - #some may have since been deleted for good + #some may have since been deleted for good #or merged into others for tag in list(post.tags.all()): if tag.used_count == 1 and tag.deleted: tag.deleted = False tag.deleted_by = None - tag.deleted_at = None + tag.deleted_at = None tag.save() else: raise NotImplementedError() @@ -1323,9 +1371,9 @@ def user_post_answer( if self == question.author and not self.is_administrator(): # check date and rep required to post answer to own question - + delta = datetime.timedelta(askbot_settings.MIN_DAYS_TO_ANSWER_OWN_QUESTION) - + now = datetime.datetime.now() asked = question.added_at if (now - asked < delta and self.reputation < askbot_settings.MIN_REP_TO_ANSWER_OWN_QUESTION): @@ -1348,7 +1396,7 @@ def user_post_answer( left = ungettext('in %(hr)d hour','in %(hr)d hours',hours) % {'hr':hours} else: left = ungettext('in %(min)d min','in %(min)d mins',minutes) % {'min':minutes} - day = ungettext('%(days)d day','%(days)d days',askbot_settings.MIN_DAYS_TO_ANSWER_OWN_QUESTION) % {'days':askbot_settings.MIN_DAYS_TO_ANSWER_OWN_QUESTION} + day = ungettext('%(days)d day','%(days)d days',askbot_settings.MIN_DAYS_TO_ANSWER_OWN_QUESTION) % {'days':askbot_settings.MIN_DAYS_TO_ANSWER_OWN_QUESTION} error_message = _( 'New users must wait %(days)s before answering their own question. ' ' You can post an answer %(left)s' @@ -1384,7 +1432,7 @@ def user_visit_question(self, question = None, timestamp = None): on behalf of the user represented by the self object and mark it as taking place at timestamp time - and remove pending on-screen notifications about anything in + and remove pending on-screen notifications about anything in the post - question, answer or comments """ if not isinstance(question, Question): @@ -1399,7 +1447,7 @@ def user_visit_question(self, question = None, timestamp = None): ) except QuestionView.DoesNotExist: question_view = QuestionView( - who = self, + who = self, question = question ) question_view.when = timestamp @@ -1520,7 +1568,7 @@ def get_name_of_anonymous_user(): def user_get_anonymous_name(self): """Returns name of anonymous user - - convinience method for use in the template + - convinience method for use in the template macros that accept user as parameter """ return get_name_of_anonymous_user() @@ -1535,10 +1583,10 @@ def user_set_status(self, new_status): there is a slight aberration - administrator status can be removed, but not added yet - if new status is applied to user, then the record is + if new status is applied to user, then the record is committed to the database """ - #d - administrator + #d - administrator #m - moderator #s - suspended #b - blocked @@ -1556,8 +1604,8 @@ def user_set_status(self, new_status): self.set_admin_status() else: #This was the old method, kept in the else clause when changing - #to admin, so if you change the status to another thing that - #is not Administrator it will simply remove admin if the user have + #to admin, so if you change the status to another thing that + #is not Administrator it will simply remove admin if the user have #that permission, it will mostly be false. if self.is_administrator(): self.remove_admin_status() @@ -1589,7 +1637,7 @@ def user_moderate_user_reputation( user.save() #any question. This is necessary because reputes are read in the - #user_reputation view with select_related('question__title') and it fails if + #user_reputation view with select_related('question__title') and it fails if #ForeignKey is nullable even though it should work (according to the manual) #probably a bug in the Django ORM #fake_question = Question.objects.all()[:1][0] @@ -1717,7 +1765,7 @@ def delete_messages(self): def get_profile_url(self): """Returns the URL for this User's profile.""" return reverse( - 'user_profile', + 'user_profile', kwargs={'id':self.id, 'slug':slugify(self.username)} ) @@ -1790,7 +1838,7 @@ def toggle_favorite_question( ): """cancel has no effect here, but is important for the SE loader it is hoped that toggle will work and data will be consistent - but there is no guarantee, maybe it's better to be more strict + but there is no guarantee, maybe it's better to be more strict about processing the "cancel" option another strange thing is that this function unlike others below returns a value @@ -1931,17 +1979,25 @@ def downvote(self, post, timestamp=None, cancel=False, force = False): @auto_now_timestamp def flag_post(user, post, timestamp=None, cancel=False, force = False): if cancel:#todo: can't unflag? - return - - if force == False: - user.assert_can_flag_offensive(post = post) - auth.onFlaggedItem(post, user, timestamp=timestamp) - award_badges_signal.send(None, - event = 'flag_post', - actor = user, - context_object = post, - timestamp = timestamp - ) + if force == False: + user.assert_can_remove_flag_offensive(post = post) + auth.onUnFlaggedItem(post, user, timestamp=timestamp) + award_badges_signal.send(None, + event = 'flag_post', + actor = user, + context_object = post, + timestamp = timestamp + ) + else: + if force == False: + user.assert_can_flag_offensive(post = post) + auth.onFlaggedItem(post, user, timestamp=timestamp) + award_badges_signal.send(None, + event = 'flag_post', + actor = user, + context_object = post, + timestamp = timestamp + ) def user_get_flags(self): """return flag Activity query set @@ -2042,7 +2098,7 @@ User.add_to_class( user_get_followed_question_alert_frequency ) User.add_to_class( - 'subscribe_for_followed_question_alerts', + 'subscribe_for_followed_question_alerts', user_subscribe_for_followed_question_alerts ) User.add_to_class('get_absolute_url', user_get_absolute_url) @@ -2132,6 +2188,8 @@ User.add_to_class('assert_can_edit_answer', user_assert_can_edit_answer) User.add_to_class('assert_can_close_question', user_assert_can_close_question) User.add_to_class('assert_can_reopen_question', user_assert_can_reopen_question) User.add_to_class('assert_can_flag_offensive', user_assert_can_flag_offensive) +User.add_to_class('assert_can_remove_flag_offensive', user_assert_can_remove_flag_offensive) +User.add_to_class('assert_can_remove_all_flags_offensive', user_assert_can_remove_all_flags_offensive) User.add_to_class('assert_can_retag_question', user_assert_can_retag_question) #todo: do we need assert_can_delete_post User.add_to_class('assert_can_delete_post', user_assert_can_delete_post) @@ -2294,7 +2352,7 @@ def calculate_gravatar_hash(instance, **kwargs): def record_post_update_activity( post, - newly_mentioned_users = None, + newly_mentioned_users = None, updated_by = None, timestamp = None, created = False, @@ -2332,7 +2390,7 @@ def record_post_update_activity( def record_award_event(instance, created, **kwargs): """ - After we awarded a badge to user, we need to + After we awarded a badge to user, we need to record this activity and notify user. We also recaculate awarded_count of this badge and user information. """ @@ -2372,15 +2430,15 @@ def notify_award_message(instance, created, **kwargs): msg = _(u"Congratulations, you have received a badge '%(badge_name)s'. " u"Check out your profile.") \ % { - 'badge_name':badge.name, + 'badge_name':badge.name, 'user_profile':user.get_profile_url() - } + } user.message_set.create(message=msg) def record_answer_accepted(instance, created, **kwargs): """ - when answer is accepted, we record this for question author + when answer is accepted, we record this for question author - who accepted it. """ if not created and instance.accepted: @@ -2440,9 +2498,9 @@ def record_cancel_vote(instance, **kwargs): when user canceled vote, the vote will be deleted. """ activity = Activity( - user=instance.user, - active_at=datetime.datetime.now(), - content_object=instance, + user=instance.user, + active_at=datetime.datetime.now(), + content_object=instance, activity_type=const.TYPE_ACTIVITY_CANCEL_VOTE ) #todo: same problem - cannot access receiving user here @@ -2461,9 +2519,9 @@ def record_delete_question(instance, delete_by, **kwargs): activity_type = const.TYPE_ACTIVITY_DELETE_ANSWER activity = Activity( - user=delete_by, - active_at=datetime.datetime.now(), - content_object=instance, + user=delete_by, + active_at=datetime.datetime.now(), + content_object=instance, activity_type=activity_type, question = instance.get_origin_post() ) @@ -2472,9 +2530,9 @@ def record_delete_question(instance, delete_by, **kwargs): def record_flag_offensive(instance, mark_by, **kwargs): activity = Activity( - user=mark_by, - active_at=datetime.datetime.now(), - content_object=instance, + user=mark_by, + active_at=datetime.datetime.now(), + content_object=instance, activity_type=const.TYPE_ACTIVITY_MARK_OFFENSIVE, question=instance.get_origin_post() ) @@ -2488,6 +2546,20 @@ def record_flag_offensive(instance, mark_by, **kwargs): ) activity.add_recipients(recipients) +def remove_flag_offensive(instance, mark_by, **kwargs): + "Remove flagging activity" + content_type = ContentType.objects.get_for_model(instance) + + activity = Activity.objects.filter( + user=mark_by, + content_type = content_type, + object_id = instance.id, + activity_type=const.TYPE_ACTIVITY_MARK_OFFENSIVE, + question=instance.get_origin_post() + ) + activity.delete() + + def record_update_tags(question, tags, user, timestamp, **kwargs): """ This function sends award badges signal on each updated tag @@ -2516,9 +2588,9 @@ def record_favorite_question(instance, created, **kwargs): """ if created: activity = Activity( - user=instance.user, - active_at=datetime.datetime.now(), - content_object=instance, + user=instance.user, + active_at=datetime.datetime.now(), + content_object=instance, activity_type=const.TYPE_ACTIVITY_FAVORITE, question=instance.question ) @@ -2530,9 +2602,9 @@ def record_favorite_question(instance, created, **kwargs): def record_user_full_updated(instance, **kwargs): activity = Activity( - user=instance, - active_at=datetime.datetime.now(), - content_object=instance, + user=instance, + active_at=datetime.datetime.now(), + content_object=instance, activity_type=const.TYPE_ACTIVITY_USER_FULL_UPDATED ) activity.save() @@ -2614,6 +2686,8 @@ signals.delete_question_or_answer.connect(record_delete_question, sender=Questio signals.delete_question_or_answer.connect(record_delete_question, sender=Answer) signals.flag_offensive.connect(record_flag_offensive, sender=Question) signals.flag_offensive.connect(record_flag_offensive, sender=Answer) +signals.remove_flag_offensive.connect(remove_flag_offensive, sender=Question) +signals.remove_flag_offensive.connect(remove_flag_offensive, sender=Answer) signals.tags_updated.connect(record_update_tags) signals.user_updated.connect(record_user_full_updated, sender=User) signals.user_logged_in.connect(complete_pending_tag_subscriptions)#todo: add this to fake onlogin middleware diff --git a/askbot/models/signals.py b/askbot/models/signals.py index 8802fcf7..baa4c149 100644 --- a/askbot/models/signals.py +++ b/askbot/models/signals.py @@ -19,13 +19,14 @@ delete_question_or_answer = django.dispatch.Signal( providing_args=['instance', 'deleted_by'] ) flag_offensive = django.dispatch.Signal(providing_args=['instance', 'mark_by']) +remove_flag_offensive = django.dispatch.Signal(providing_args=['instance', 'mark_by']) user_updated = django.dispatch.Signal(providing_args=['instance', 'updated_by']) #todo: move this to authentication app user_logged_in = django.dispatch.Signal(providing_args=['session']) post_updated = django.dispatch.Signal( providing_args=[ - 'post', + 'post', 'updated_by', 'newly_mentioned_users' ] @@ -61,6 +62,7 @@ def pop_all_db_signal_receivers(): edit_question_or_answer, delete_question_or_answer, flag_offensive, + remove_flag_offensive, user_updated, user_logged_in, post_updated, @@ -83,7 +85,7 @@ def pop_all_db_signal_receivers(): def set_all_db_signal_receivers(receiver_data): """takes receiver data as an argument - where the argument is as returned by the + where the argument is as returned by the pop_all_db_signal_receivers() call and sets the receivers back to the signals """ diff --git a/askbot/skins/common/media/js/post.js b/askbot/skins/common/media/js/post.js index e35608fa..09c6c74d 100644 --- a/askbot/skins/common/media/js/post.js +++ b/askbot/skins/common/media/js/post.js @@ -38,8 +38,8 @@ function removeLoader() { $("img.ajax-loader").remove(); } -function setSubmitButtonDisabled(form, isDisabled) { - form.find("input[type='submit']").attr("disabled", isDisabled ? "true" : ""); +function setSubmitButtonDisabled(form, isDisabled) { + form.find("input[type='submit']").attr("disabled", isDisabled ? "true" : ""); } function enableSubmitButton(form) { @@ -72,10 +72,10 @@ function setupFormValidation(form, validationRules, validationMessages, onSubmit }, submitHandler: function(form_dom) { disableSubmitButton($(form_dom)); - + if (onSubmitCallback){ onSubmitCallback(); - } + } else{ form_dom.submit(); } @@ -110,7 +110,7 @@ var CPValidator = function(){ maxlength: 105, limit_tag_count: true, limit_tag_length: true - }, + }, text: { required: true, minlength: 10 @@ -132,11 +132,11 @@ var CPValidator = function(){ }, text: { required: " " + gettext('content cannot be empty'), - minlength: interpolate(gettext('%s content minchars'), [chars]) + minlength: interpolate(gettext('%s content minchars'), [chars]) }, title: { required: " " + gettext('please enter title'), - minlength: interpolate(gettext('%s title minchars'), [chars]) + minlength: interpolate(gettext('%s title minchars'), [chars]) } }; } @@ -146,7 +146,7 @@ var CPValidator = function(){ /** * @constructor * @extends {SimpleControl} - * @param {Comment} comment to upvote + * @param {Comment} comment to upvote */ var CommentVoteButton = function(comment){ SimpleControl.call(this); @@ -271,14 +271,18 @@ 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 offensiveIdPrefixAnswerFlag = 'answer-offensive-flag-'; + var removeOffensiveIdPrefixAnswerFlag = 'answer-offensive-flag-remove-'; + var removeAllOffensiveIdPrefixAnswerFlag = 'answer-offensive-flag-remove-all'; var offensiveClassFlag = 'offensive-flag'; var questionControlsId = 'question-controls'; var removeQuestionLinkIdPrefix = 'question-delete-link-'; var removeAnswerLinkIdPrefix = 'answer-delete-link-'; var questionSubscribeUpdates = 'question-subscribe-updates'; var questionSubscribeSidebar= 'question-subscribe-sidebar'; - + var acceptAnonymousMessage = gettext('insufficient privilege'); var acceptOwnAnswerMessage = gettext('cannot pick own answer as best'); @@ -292,12 +296,13 @@ var Vote = function(){ var voteAnonymousMessage = gettext('anonymous users cannot vote') + pleaseLogin; //there were a couple of more messages... var offensiveConfirmation = gettext('please confirm offensive'); + var removeOffensiveConfirmation = gettext('please confirm removal of offensive flag'); var offensiveAnonymousMessage = gettext('anonymous users cannot flag offensive posts') + pleaseLogin; var removeConfirmation = gettext('confirm delete'); var removeAnonymousMessage = gettext('anonymous users cannot delete/undelete') + pleaseLogin; var recoveredMessage = gettext('post recovered'); var deletedMessage = gettext('post deleted'); - + var VoteType = { acceptAnswer : 0, questionUpVote : 1, @@ -306,7 +311,11 @@ var Vote = function(){ answerUpVote: 5, answerDownVote:6, offensiveQuestion : 7, + removeOffensiveQuestion : 7.5, + removeAllOffensiveQuestion : 7.6, offensiveAnswer:8, + removeOffensiveAnswer:8.5, + removeAllOffensiveAnswer:8.6, removeQuestion: 9, removeAnswer:10, questionSubscribeUpdates:11, @@ -346,17 +355,37 @@ var Vote = function(){ var answerVoteDownButton = 'div.'+ voteContainerId +' div[id='+ imgIdPrefixAnswerVotedown + id + ']'; return $(answerVoteDownButton); }; - + var getOffensiveQuestionFlag = function(){ - var offensiveQuestionFlag = '#question-table span[class='+ offensiveClassFlag +']'; + var offensiveQuestionFlag = '#question-table span[id^="'+ offensiveIdPrefixQuestionFlag +'"]'; return $(offensiveQuestionFlag); }; - + + var getRemoveOffensiveQuestionFlag = function(){ + var removeOffensiveQuestionFlag = '#question-table span[id^="'+ removeOffensiveIdPrefixQuestionFlag +'"]'; + return $(removeOffensiveQuestionFlag); + }; + + var getRemoveAllOffensiveQuestionFlag = function(){ + var removeAllOffensiveQuestionFlag = '#question-table span[id^="'+ removeAllOffensiveIdPrefixQuestionFlag +'"]'; + return $(removeAllOffensiveQuestionFlag); + }; + var getOffensiveAnswerFlags = function(){ - var offensiveQuestionFlag = 'div.answer span[class='+ offensiveClassFlag +']'; + var offensiveQuestionFlag = 'div.answer span[id^="'+ offensiveIdPrefixAnswerFlag +'"]'; return $(offensiveQuestionFlag); }; - + + var getRemoveOffensiveAnswerFlag = function(){ + var removeOffensiveAnswerFlag = 'div.answer span[id^="'+ removeOffensiveIdPrefixAnswerFlag +'"]'; + return $(removeOffensiveAnswerFlag); + }; + + var getRemoveAllOffensiveAnswerFlag = function(){ + var removeAllOffensiveAnswerFlag = 'div.answer span[id^="'+ removeAllOffensiveIdPrefixAnswerFlag +'"]'; + return $(removeAllOffensiveAnswerFlag); + }; + var getremoveQuestionLink = function(){ var removeQuestionLink = 'div#question-controls a[id^='+ removeQuestionLinkIdPrefix +']'; return $(removeQuestionLink); @@ -369,12 +398,12 @@ var Vote = function(){ var getquestionSubscribeSidebarCheckbox= function(){ return $('#' + questionSubscribeSidebar); }; - + var getremoveAnswersLinks = function(){ var removeAnswerLinks = 'div.answer-controls a[id^='+ removeAnswerLinkIdPrefix +']'; return $(removeAnswerLinks); }; - + var setVoteImage = function(voteType, undo, object){ var flag = undo ? false : true; if (object.hasClass("on")) { @@ -382,7 +411,7 @@ var Vote = function(){ }else{ object.addClass("on"); } - + if(undo){ if(voteType == VoteType.questionUpVote || voteType == VoteType.questionDownVote){ $(getQuestionVoteUpButton()).removeClass("on"); @@ -394,12 +423,12 @@ var Vote = function(){ } } }; - + var setVoteNumber = function(object, number){ var voteNumber = object.parent('div.'+ voteContainerId).find('div.'+ voteNumberClass); $(voteNumber).text(number); }; - + var bindEvents = function(){ // accept answers var acceptedButtons = 'div.'+ voteContainerId +' img[id^='+ imgIdPrefixAccept +']'; @@ -412,36 +441,52 @@ var Vote = function(){ //Vote.favorite($(event.target)); Vote.favorite(favoriteButton); }); - + // question vote up var questionVoteUpButton = getQuestionVoteUpButton(); questionVoteUpButton.unbind('click').click(function(event){ Vote.vote($(event.target), VoteType.questionUpVote); }); - + var questionVoteDownButton = getQuestionVoteDownButton(); questionVoteDownButton.unbind('click').click(function(event){ Vote.vote($(event.target), VoteType.questionDownVote); }); - + var answerVoteUpButton = getAnswerVoteUpButtons(); answerVoteUpButton.unbind('click').click(function(event){ Vote.vote($(event.target), VoteType.answerUpVote); }); - + var answerVoteDownButton = getAnswerVoteDownButtons(); answerVoteDownButton.unbind('click').click(function(event){ Vote.vote($(event.target), VoteType.answerDownVote); }); - + getOffensiveQuestionFlag().unbind('click').click(function(event){ Vote.offensive(this, VoteType.offensiveQuestion); }); - + + getRemoveOffensiveQuestionFlag().unbind('click').click(function(event){ + Vote.remove_offensive(this, VoteType.removeOffensiveQuestion); + }); + + getRemoveAllOffensiveQuestionFlag().unbind('click').click(function(event){ + Vote.remove_offensive(this, VoteType.removeAllOffensiveQuestion); + }); + getOffensiveAnswerFlags().unbind('click').click(function(event){ Vote.offensive(this, VoteType.offensiveAnswer); }); - + + getRemoveOffensiveAnswerFlag().unbind('click').click(function(event){ + Vote.remove_offensive(this, VoteType.removeOffensiveAnswer); + }); + + getRemoveAllOffensiveAnswerFlag().unbind('click').click(function(event){ + Vote.remove_offensive(this, VoteType.removeAllOffensiveAnswer); + }); + getremoveQuestionLink().unbind('click').click(function(event){ Vote.remove(this, VoteType.removeQuestion); }); @@ -473,7 +518,7 @@ var Vote = function(){ Vote.remove(this, VoteType.removeAnswer); }); }; - + var submit = function(object, voteType, callback) { //this function submits votes $.ajax({ @@ -486,7 +531,7 @@ var Vote = function(){ success: function(data){callback(object, voteType, data);} }); }; - + var handleFail = function(xhr, msg){ alert("Callback invoke error: " + msg); }; @@ -511,7 +556,7 @@ var Vote = function(){ $(answers).removeClass("accepted-answer"); var commentLinks = ("div[id^="+answerContainerIdPrefix +"] div[id^="+ commentLinkIdPrefix +"]"); $(commentLinks).removeClass("comment-link-accepted"); - + object.attr("src", mediaUrl("media/images/vote-accepted-on.png")); $("#"+answerContainerIdPrefix+postId).addClass("accepted-answer"); $("#"+commentLinkIdPrefix+postId).addClass("comment-link-accepted"); @@ -524,12 +569,12 @@ var Vote = function(){ var callback_favorite = function(object, voteType, data){ if(data.allowed == "0" && data.success == "0"){ showMessage( - object, + object, favoriteAnonymousMessage.replace( - '{{QuestionID}}', + '{{QuestionID}}', questionId).replace( '{{questionSlug}}', - '' + '' ) ); } @@ -560,7 +605,7 @@ var Vote = function(){ showMessage(object, data.message); } }; - + var callback_vote = function(object, voteType, data){ if (data.success == '0'){ showMessage(object, data.message); @@ -583,7 +628,7 @@ var Vote = function(){ if (data.status == "1"){ setVoteImage(voteType, true, object); setVoteNumber(object, data.count); - } + } else if (data.success == "1"){ setVoteImage(voteType, false, object); setVoteNumber(object, data.count); @@ -592,20 +637,58 @@ var Vote = function(){ } } }; - + var callback_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"){ $(object).children('span[class=darkred]').text("("+ data.count +")"); + + // 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-")); + + getRemoveOffensiveQuestionFlag().unbind('click').click(function(event){ + Vote.remove_offensive(this, VoteType.removeOffensiveQuestion); + }); + + getRemoveOffensiveAnswerFlag().unbind('click').click(function(event){ + Vote.remove_offensive(this, VoteType.removeOffensiveAnswer); + }); + } + else { + object = $(object); + showMessage(object, data.message) + } + }; + + var callback_remove_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"){ + $(object).children('span[class=darkred]').text("("+ data.count +")"); + // 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-")); + + 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 = function(object, voteType, data){ if (data.success == "1"){ if (removeActionType == 'delete'){ @@ -623,7 +706,7 @@ var Vote = function(){ showMessage(object, data.message) } }; - + return { init : function(qId, qSlug, questionAuthor, userId){ questionId = qId; @@ -632,7 +715,7 @@ var Vote = function(){ currentUserId = userId; bindEvents(); }, - + //accept answer accept: function(object){ postId = object.attr("id").substring(imgIdPrefixAccept.length); @@ -642,7 +725,7 @@ var Vote = function(){ favorite: function(object){ if (!currentUserId || currentUserId.toUpperCase() == "NONE"){ showMessage( - object, + object, favoriteAnonymousMessage.replace( "{{QuestionID}}", questionId @@ -655,7 +738,7 @@ var Vote = function(){ } submit(object, VoteType.favorite, callback_favorite); }, - + vote: function(object, voteType){ if (!currentUserId || currentUserId.toUpperCase() == "NONE"){ if (voteType == VoteType.questionSubscribeUpdates || voteType == VoteType.questionUnsubscribeUpdates){ @@ -683,7 +766,7 @@ var Vote = function(){ else if (voteType == VoteType.answerDownVote){ postId = object.attr("id").substring(imgIdPrefixAnswerVotedown.length); } - + submit(object, voteType, callback_vote); }, //flag offensive @@ -699,13 +782,33 @@ var Vote = function(){ questionSlug ) ); - return false; + return false; } if (confirm(offensiveConfirmation)){ postId = object.id.substr(object.id.lastIndexOf('-') + 1); submit(object, voteType, callback_offensive); } }, + //remove flag offensive + remove_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_offensive); + } + }, //delete question or answer (comments are deleted separately) remove: function(object, voteType){ if (!currentUserId || currentUserId.toUpperCase() == "NONE"){ @@ -719,13 +822,13 @@ var Vote = function(){ questionSlug ) ); - return false; + return false; } bits = object.id.split('-'); postId = bits.pop();/* this seems to be used within submit! */ postType = bits.shift(); - var do_proceed = false; + var do_proceed = false; if (postType == 'answer'){ postNode = $('#answer-container-' + postId); } @@ -976,7 +1079,7 @@ EditCommentForm.prototype.getCounterUpdater = function(){ if (length2 < 0){ length2 = Math.round(0.9*maxCommentLength); } - + //todo: //1) use class instead of color - move color def to css var color = 'maroon'; @@ -1017,7 +1120,7 @@ EditCommentForm.prototype.getCancelHandler = function(){ return function(){ if (form.canCancel()){ form.detach(); - } + } return false; }; }; @@ -1047,7 +1150,7 @@ EditCommentForm.prototype.createDom = function(){ /* this._help_text = $('').attr('class', 'help-text'); - this._help_text.html(gettext('Markdown is allowed in the comments')); + this._help_text.html(gettext('Markdown is allowed in the comments')); div.append(this._help_text); this._help_text = $('
').attr('class', 'clearfix'); @@ -1257,7 +1360,7 @@ Comment.prototype.setContent = function(data){ var votes = this.makeElement('div'); votes.addClass('comment-votes'); - + var vote = new CommentVoteButton(this); if (this._data['upvoted_by_user']){ vote.setVoted(true); @@ -1274,7 +1377,7 @@ Comment.prototype.setContent = function(data){ this._comment_delete.append(this._delete_icon.getElement()); } this._element.append(this._comment_delete); - + this._comment_body = $('
'); this._comment_body.html(this._data['html']); //this._comment_body.append(' – '); @@ -1296,7 +1399,7 @@ Comment.prototype.setContent = function(data){ this._comment_body.append(this._edit_link.getElement()); } this._element.append(this._comment_body); - + this._blank = false; }; @@ -1306,7 +1409,7 @@ Comment.prototype.dispose = function(){ } if (this._comment_delete){ this._comment_delete.remove(); - } + } if (this._user_link){ this._user_link.remove(); } @@ -1386,11 +1489,11 @@ Comment.prototype.getDeleteHandler = function(){ comment.getElement().hide(); $.ajax({ type: 'POST', - url: askbot['urls']['deleteComment'], - data: { comment_id: comment.getId() }, + url: askbot['urls']['deleteComment'], + data: { comment_id: comment.getId() }, success: function(json, textStatus, xhr) { comment.dispose(); - }, + }, error: function(xhr, textStatus, exception) { comment.getElement().show() showMessage(del_icon.getElement(), xhr.responseText); @@ -1600,7 +1703,7 @@ var socialSharing = function(){ setupButtonEventHandlers(ica, function(){share_page("identica")}); } } -}(); +}(); /** * @constructor @@ -1635,7 +1738,7 @@ QASwapper.prototype.startSwapping = function(){ success: function(data){ var url_template = askbot['urls']['question_url_template']; new_question_url = url_template.replace( - '{{QuestionID}}', + '{{QuestionID}}', data['id'] ).replace( '{{questionSlug}}', diff --git a/askbot/skins/common/templates/question/answer_controls.html b/askbot/skins/common/templates/question/answer_controls.html index 4d26ffb9..0dddc72d 100644 --- a/askbot/skins/common/templates/question/answer_controls.html +++ b/askbot/skins/common/templates/question/answer_controls.html @@ -1,7 +1,7 @@ {% set pipe=joiner('|') %} {{ pipe() }} {% trans %}permanent link{% endtrans %} @@ -10,13 +10,21 @@ {% trans %}edit{% endtrans %} {% endif %} {% if request.user|can_flag_offensive(answer) %}{{ pipe() }} - {% trans %}flag offensive{% endtrans %} {% if request.user|can_see_offensive_flags(answer) %} {% if answer.offensive_flag_count > 0 %}({{ answer.offensive_flag_count }}){% endif %} {% endif %} +{% elif request.user|can_remove_flag_offensive(answer)%}{{ pipe() }} + + {% trans %}remove flag{% endtrans %} + {% if request.user|can_see_offensive_flags(answer) %} + {% if answer.offensive_flag_count > 0 %}({{ answer.offensive_flag_count }}){% endif %} + {% endif %} + {% endif %} {% if request.user|can_delete_post(answer) %}{{ pipe() }} {% spaceless %} diff --git a/askbot/skins/common/templates/question/question_controls.html b/askbot/skins/common/templates/question/question_controls.html index 9de54526..ea112aa6 100644 --- a/askbot/skins/common/templates/question/question_controls.html +++ b/askbot/skins/common/templates/question/question_controls.html @@ -18,13 +18,21 @@ {% endif %} {% endif %} {% if request.user|can_flag_offensive(question) %}{{ pipe() }} - {% trans %}flag offensive{% endtrans %} {% if request.user|can_see_offensive_flags(question) %} {% if question.offensive_flag_count > 0 %}({{ question.offensive_flag_count }}){% endif %} {% endif %} +{% elif request.user|can_remove_flag_offensive(question)%}{{ pipe() }} + + {% trans %}remove flag{% endtrans %} + {% if request.user|can_see_offensive_flags(question) %} + {% if question.offensive_flag_count > 0 %}({{ question.offensive_flag_count }}){% endif %} + {% endif %} + {% endif %} {% if request.user|can_delete_post(question) %}{{ pipe() }} {% if question.deleted %}{% trans %}undelete{% endtrans %}{% else %}{% trans %}delete{% endtrans %}{% endif %} diff --git a/askbot/templatetags/extra_filters_jinja.py b/askbot/templatetags/extra_filters_jinja.py index 2228eed4..8486d934 100644 --- a/askbot/templatetags/extra_filters_jinja.py +++ b/askbot/templatetags/extra_filters_jinja.py @@ -163,7 +163,16 @@ def can_moderate_user(user, other_user): can_flag_offensive = make_template_filter_from_permission_assertion( assertion_name = 'assert_can_flag_offensive', filter_name = 'can_flag_offensive', - allowed_exception = askbot_exceptions.DuplicateCommand + ) + +can_remove_flag_offensive = make_template_filter_from_permission_assertion( + assertion_name = 'assert_can_remove_flag_offensive', + filter_name = 'can_remove_flag_offensive', + ) + +can_remove_all_flags_offensive = make_template_filter_from_permission_assertion( + assertion_name = 'assert_can_remove_all_flags_offensive', + filter_name = 'can_remove_all_flags_offensive', ) can_post_comment = make_template_filter_from_permission_assertion( diff --git a/askbot/views/commands.py b/askbot/views/commands.py index 04d4ef1b..2eb562ed 100644 --- a/askbot/views/commands.py +++ b/askbot/views/commands.py @@ -1,7 +1,7 @@ """ :synopsis: most ajax processors for askbot -This module contains most (but not all) processors for Ajax requests. +This module contains most (but not all) processors for Ajax requests. Not so clear if this subdivision was necessary as separation of Ajax and non-ajax views is not always very clean. """ @@ -39,7 +39,7 @@ def process_vote(user = None, vote_direction = None, post = None): raise exceptions.PermissionDenied(_('anonymous users cannot vote')) user.assert_can_vote_for_post( - post = post, + post = post, direction = vote_direction ) @@ -71,7 +71,7 @@ def process_vote(user = None, vote_direction = None, post = None): else: vote = user.downvote(post = post) - response_data['count'] = post.score + response_data['count'] = post.score response_data['status'] = 0 #this means "not cancel", normal operation response_data['success'] = 1 @@ -217,7 +217,7 @@ def vote(request, id): vote_direction = 'down' if vote_type in ('5', '6'): - #todo: fix this weirdness - why postId here + #todo: fix this weirdness - why postId here #and not with question? id = request.POST.get('postId') post = get_object_or_404(models.Answer, id=id) @@ -245,9 +245,22 @@ def vote(request, id): response_data['count'] = post.offensive_flag_count response_data['success'] = 1 + elif vote_type in ['7.5', '8.5']: + #flag question or answer + if vote_type == '7.5': + post = get_object_or_404(models.Question, id=id) + if vote_type == '8.5': + id = request.POST.get('postId') + post = get_object_or_404(models.Answer, id=id) + + request.user.flag_post(post, cancel = True) + + response_data['count'] = post.offensive_flag_count + response_data['success'] = 1 + elif vote_type in ['9', '10']: #delete question or answer - post = get_object_or_404(models.Question, id = id) + post = get_object_or_404(models.Question, id = id) if vote_type == '10': id = request.POST.get('postId') post = get_object_or_404(models.Answer, id = id) @@ -460,7 +473,7 @@ def set_tag_filter_strategy(request): @login_required @csrf.csrf_protect def close(request, id):#close question - """view to initiate and process + """view to initiate and process question close """ question = get_object_or_404(models.Question, id=id) @@ -490,7 +503,7 @@ def close(request, id):#close question @login_required @csrf.csrf_protect def reopen(request, id):#re-open question - """view to initiate and process + """view to initiate and process question close this is not an ajax view @@ -512,7 +525,7 @@ def reopen(request, id):#re-open question 'closed_by_username': closed_by_username, } return render_into_skin('reopen.html', data, request) - + except exceptions.PermissionDenied, e: request.user.message_set.create(message = unicode(e)) return HttpResponseRedirect(question.get_absolute_url()) -- cgit v1.2.3-1-g7c22 From 801fe0298a415d9afe2cfb65049e533c0a0daf07 Mon Sep 17 00:00:00 2001 From: Dejan Noveski Date: Sun, 4 Dec 2011 16:16:38 +0100 Subject: Don't show flag count if flag count is 0 --- askbot/skins/common/media/js/post.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/askbot/skins/common/media/js/post.js b/askbot/skins/common/media/js/post.js index 09c6c74d..59ba4fff 100644 --- a/askbot/skins/common/media/js/post.js +++ b/askbot/skins/common/media/js/post.js @@ -643,7 +643,10 @@ var Vote = function(){ //to django.po files //_('anonymous users cannot flag offensive posts') + pleaseLogin; if (data.success == "1"){ - $(object).children('span[class=darkred]').text("("+ data.count +")"); + if(data.count > 0) + $(object).children('span[class=darkred]').text("("+ data.count +")"); + else + $(object).children('span[class=darkred]').text(""); // Change the link text and rebind events $(object).find("a.question-flag").html(gettext("remove flag")); @@ -669,7 +672,10 @@ var Vote = function(){ //to django.po files //_('anonymous users cannot flag offensive posts') + pleaseLogin; if (data.success == "1"){ - $(object).children('span[class=darkred]').text("("+ data.count +")"); + if(data.count > 0) + $(object).children('span[class=darkred]').text("("+ data.count +")"); + else + $(object).children('span[class=darkred]').text(""); // Change the link text and rebind events $(object).find("a.question-flag").html(gettext("flag offensive")); var obj_id = $(object).attr("id"); -- cgit v1.2.3-1-g7c22 From b3f698253e1b6e0db2a21b756b04e50f40aa59e3 Mon Sep 17 00:00:00 2001 From: Evgeny Fadeev Date: Sun, 4 Dec 2011 14:49:49 -0300 Subject: removed unused css class names and added latest feature addition to the changelog --- askbot/doc/source/changelog.rst | 1 + .../skins/common/templates/widgets/search_bar.html | 6 +- askbot/skins/old/media/images/anon.png | Bin 687 -> 0 bytes .../skins/old/media/images/blue-up-arrow-h18px.png | Bin 593 -> 0 bytes askbot/skins/old/media/images/box-arrow.gif | Bin 69 -> 0 bytes askbot/skins/old/media/images/bullet_green.gif | Bin 64 -> 0 bytes askbot/skins/old/media/images/cc-88x31.png | Bin 5460 -> 0 bytes askbot/skins/old/media/images/cc-by-sa.png | Bin 5083 -> 0 bytes askbot/skins/old/media/images/close-small-dark.png | Bin 226 -> 0 bytes .../skins/old/media/images/close-small-hover.png | Bin 337 -> 0 bytes askbot/skins/old/media/images/close-small.png | Bin 293 -> 0 bytes askbot/skins/old/media/images/dash.gif | Bin 44 -> 0 bytes .../skins/old/media/images/dialog-warning-off.png | Bin 419 -> 0 bytes askbot/skins/old/media/images/dialog-warning.png | Bin 603 -> 0 bytes .../old/media/images/djangomade124x25_grey.gif | Bin 2035 -> 0 bytes askbot/skins/old/media/images/dot-g.gif | Bin 61 -> 0 bytes askbot/skins/old/media/images/dot-list.gif | Bin 56 -> 0 bytes askbot/skins/old/media/images/edit.png | Bin 758 -> 0 bytes .../skins/old/media/images/expander-arrow-hide.gif | Bin 126 -> 0 bytes .../skins/old/media/images/expander-arrow-show.gif | Bin 135 -> 0 bytes askbot/skins/old/media/images/favicon.gif | Bin 898 -> 0 bytes askbot/skins/old/media/images/favicon.ico | Bin 1150 -> 0 bytes askbot/skins/old/media/images/feed-icon-small.png | Bin 689 -> 0 bytes askbot/skins/old/media/images/flags/ad.gif | Bin 371 -> 0 bytes askbot/skins/old/media/images/flags/ae.gif | Bin 361 -> 0 bytes askbot/skins/old/media/images/flags/af.gif | Bin 369 -> 0 bytes askbot/skins/old/media/images/flags/ag.gif | Bin 361 -> 0 bytes askbot/skins/old/media/images/flags/ai.gif | Bin 369 -> 0 bytes askbot/skins/old/media/images/flags/al.gif | Bin 370 -> 0 bytes askbot/skins/old/media/images/flags/am.gif | Bin 363 -> 0 bytes askbot/skins/old/media/images/flags/an.gif | Bin 368 -> 0 bytes askbot/skins/old/media/images/flags/ao.gif | Bin 244 -> 0 bytes askbot/skins/old/media/images/flags/ar.gif | Bin 366 -> 0 bytes askbot/skins/old/media/images/flags/as.gif | Bin 365 -> 0 bytes askbot/skins/old/media/images/flags/at.gif | Bin 361 -> 0 bytes askbot/skins/old/media/images/flags/au.gif | Bin 378 -> 0 bytes askbot/skins/old/media/images/flags/aw.gif | Bin 365 -> 0 bytes askbot/skins/old/media/images/flags/ax.gif | Bin 376 -> 0 bytes askbot/skins/old/media/images/flags/az.gif | Bin 370 -> 0 bytes askbot/skins/old/media/images/flags/ba.gif | Bin 363 -> 0 bytes askbot/skins/old/media/images/flags/bb.gif | Bin 368 -> 0 bytes askbot/skins/old/media/images/flags/bd.gif | Bin 361 -> 0 bytes askbot/skins/old/media/images/flags/be.gif | Bin 359 -> 0 bytes askbot/skins/old/media/images/flags/bf.gif | Bin 358 -> 0 bytes askbot/skins/old/media/images/flags/bg.gif | Bin 360 -> 0 bytes askbot/skins/old/media/images/flags/bh.gif | Bin 367 -> 0 bytes askbot/skins/old/media/images/flags/bi.gif | Bin 374 -> 0 bytes askbot/skins/old/media/images/flags/bj.gif | Bin 368 -> 0 bytes askbot/skins/old/media/images/flags/bm.gif | Bin 367 -> 0 bytes askbot/skins/old/media/images/flags/bn.gif | Bin 373 -> 0 bytes askbot/skins/old/media/images/flags/bo.gif | Bin 359 -> 0 bytes askbot/skins/old/media/images/flags/br.gif | Bin 367 -> 0 bytes askbot/skins/old/media/images/flags/bs.gif | Bin 351 -> 0 bytes askbot/skins/old/media/images/flags/bt.gif | Bin 377 -> 0 bytes askbot/skins/old/media/images/flags/bv.gif | Bin 376 -> 0 bytes askbot/skins/old/media/images/flags/bw.gif | Bin 364 -> 0 bytes askbot/skins/old/media/images/flags/by.gif | Bin 361 -> 0 bytes askbot/skins/old/media/images/flags/bz.gif | Bin 368 -> 0 bytes askbot/skins/old/media/images/flags/ca.gif | Bin 376 -> 0 bytes askbot/skins/old/media/images/flags/catalonia.gif | Bin 238 -> 0 bytes askbot/skins/old/media/images/flags/cc.gif | Bin 371 -> 0 bytes askbot/skins/old/media/images/flags/cd.gif | Bin 243 -> 0 bytes askbot/skins/old/media/images/flags/cf.gif | Bin 364 -> 0 bytes askbot/skins/old/media/images/flags/cg.gif | Bin 359 -> 0 bytes askbot/skins/old/media/images/flags/ch.gif | Bin 332 -> 0 bytes askbot/skins/old/media/images/flags/ci.gif | Bin 368 -> 0 bytes askbot/skins/old/media/images/flags/ck.gif | Bin 362 -> 0 bytes askbot/skins/old/media/images/flags/cl.gif | Bin 364 -> 0 bytes askbot/skins/old/media/images/flags/cm.gif | Bin 369 -> 0 bytes askbot/skins/old/media/images/flags/cn.gif | Bin 366 -> 0 bytes askbot/skins/old/media/images/flags/co.gif | Bin 353 -> 0 bytes askbot/skins/old/media/images/flags/cr.gif | Bin 359 -> 0 bytes askbot/skins/old/media/images/flags/cs.gif | Bin 364 -> 0 bytes askbot/skins/old/media/images/flags/cu.gif | Bin 367 -> 0 bytes askbot/skins/old/media/images/flags/cv.gif | Bin 367 -> 0 bytes askbot/skins/old/media/images/flags/cx.gif | Bin 363 -> 0 bytes askbot/skins/old/media/images/flags/cy.gif | Bin 365 -> 0 bytes askbot/skins/old/media/images/flags/cz.gif | Bin 362 -> 0 bytes askbot/skins/old/media/images/flags/de.gif | Bin 362 -> 0 bytes askbot/skins/old/media/images/flags/dj.gif | Bin 369 -> 0 bytes askbot/skins/old/media/images/flags/dk.gif | Bin 374 -> 0 bytes askbot/skins/old/media/images/flags/dm.gif | Bin 368 -> 0 bytes askbot/skins/old/media/images/flags/do.gif | Bin 362 -> 0 bytes askbot/skins/old/media/images/flags/dz.gif | Bin 370 -> 0 bytes askbot/skins/old/media/images/flags/ec.gif | Bin 362 -> 0 bytes askbot/skins/old/media/images/flags/ee.gif | Bin 364 -> 0 bytes askbot/skins/old/media/images/flags/eg.gif | Bin 363 -> 0 bytes askbot/skins/old/media/images/flags/eh.gif | Bin 359 -> 0 bytes askbot/skins/old/media/images/flags/england.gif | Bin 367 -> 0 bytes askbot/skins/old/media/images/flags/er.gif | Bin 361 -> 0 bytes askbot/skins/old/media/images/flags/es.gif | Bin 360 -> 0 bytes askbot/skins/old/media/images/flags/et.gif | Bin 364 -> 0 bytes .../skins/old/media/images/flags/europeanunion.gif | Bin 171 -> 0 bytes askbot/skins/old/media/images/flags/fam.gif | Bin 370 -> 0 bytes askbot/skins/old/media/images/flags/fi.gif | Bin 371 -> 0 bytes askbot/skins/old/media/images/flags/fj.gif | Bin 370 -> 0 bytes askbot/skins/old/media/images/flags/fk.gif | Bin 372 -> 0 bytes askbot/skins/old/media/images/flags/fm.gif | Bin 377 -> 0 bytes askbot/skins/old/media/images/flags/fo.gif | Bin 370 -> 0 bytes askbot/skins/old/media/images/flags/fr.gif | Bin 366 -> 0 bytes askbot/skins/old/media/images/flags/ga.gif | Bin 359 -> 0 bytes askbot/skins/old/media/images/flags/gb.gif | Bin 260 -> 0 bytes askbot/skins/old/media/images/flags/gd.gif | Bin 364 -> 0 bytes askbot/skins/old/media/images/flags/ge.gif | Bin 379 -> 0 bytes askbot/skins/old/media/images/flags/gf.gif | Bin 366 -> 0 bytes askbot/skins/old/media/images/flags/gh.gif | Bin 358 -> 0 bytes askbot/skins/old/media/images/flags/gi.gif | Bin 370 -> 0 bytes askbot/skins/old/media/images/flags/gl.gif | Bin 368 -> 0 bytes askbot/skins/old/media/images/flags/gm.gif | Bin 362 -> 0 bytes askbot/skins/old/media/images/flags/gn.gif | Bin 363 -> 0 bytes askbot/skins/old/media/images/flags/gp.gif | Bin 357 -> 0 bytes askbot/skins/old/media/images/flags/gq.gif | Bin 361 -> 0 bytes askbot/skins/old/media/images/flags/gr.gif | Bin 368 -> 0 bytes askbot/skins/old/media/images/flags/gs.gif | Bin 363 -> 0 bytes askbot/skins/old/media/images/flags/gt.gif | Bin 374 -> 0 bytes askbot/skins/old/media/images/flags/gu.gif | Bin 370 -> 0 bytes askbot/skins/old/media/images/flags/gw.gif | Bin 358 -> 0 bytes askbot/skins/old/media/images/flags/gy.gif | Bin 367 -> 0 bytes askbot/skins/old/media/images/flags/hk.gif | Bin 373 -> 0 bytes askbot/skins/old/media/images/flags/hm.gif | Bin 378 -> 0 bytes askbot/skins/old/media/images/flags/hn.gif | Bin 367 -> 0 bytes askbot/skins/old/media/images/flags/hr.gif | Bin 364 -> 0 bytes askbot/skins/old/media/images/flags/ht.gif | Bin 361 -> 0 bytes askbot/skins/old/media/images/flags/hu.gif | Bin 357 -> 0 bytes askbot/skins/old/media/images/flags/id.gif | Bin 362 -> 0 bytes askbot/skins/old/media/images/flags/ie.gif | Bin 371 -> 0 bytes askbot/skins/old/media/images/flags/il.gif | Bin 366 -> 0 bytes askbot/skins/old/media/images/flags/in.gif | Bin 363 -> 0 bytes askbot/skins/old/media/images/flags/io.gif | Bin 373 -> 0 bytes askbot/skins/old/media/images/flags/iq.gif | Bin 361 -> 0 bytes askbot/skins/old/media/images/flags/ir.gif | Bin 366 -> 0 bytes askbot/skins/old/media/images/flags/is.gif | Bin 373 -> 0 bytes askbot/skins/old/media/images/flags/it.gif | Bin 366 -> 0 bytes askbot/skins/old/media/images/flags/jm.gif | Bin 365 -> 0 bytes askbot/skins/old/media/images/flags/jo.gif | Bin 360 -> 0 bytes askbot/skins/old/media/images/flags/jp.gif | Bin 366 -> 0 bytes askbot/skins/old/media/images/flags/ke.gif | Bin 360 -> 0 bytes askbot/skins/old/media/images/flags/kg.gif | Bin 373 -> 0 bytes askbot/skins/old/media/images/flags/kh.gif | Bin 367 -> 0 bytes askbot/skins/old/media/images/flags/ki.gif | Bin 371 -> 0 bytes askbot/skins/old/media/images/flags/km.gif | Bin 358 -> 0 bytes askbot/skins/old/media/images/flags/kn.gif | Bin 370 -> 0 bytes askbot/skins/old/media/images/flags/kp.gif | Bin 366 -> 0 bytes askbot/skins/old/media/images/flags/kr.gif | Bin 385 -> 0 bytes askbot/skins/old/media/images/flags/kw.gif | Bin 362 -> 0 bytes askbot/skins/old/media/images/flags/ky.gif | Bin 373 -> 0 bytes askbot/skins/old/media/images/flags/kz.gif | Bin 374 -> 0 bytes askbot/skins/old/media/images/flags/la.gif | Bin 366 -> 0 bytes askbot/skins/old/media/images/flags/lb.gif | Bin 366 -> 0 bytes askbot/skins/old/media/images/flags/lc.gif | Bin 259 -> 0 bytes askbot/skins/old/media/images/flags/li.gif | Bin 359 -> 0 bytes askbot/skins/old/media/images/flags/lk.gif | Bin 377 -> 0 bytes askbot/skins/old/media/images/flags/lr.gif | Bin 360 -> 0 bytes askbot/skins/old/media/images/flags/ls.gif | Bin 369 -> 0 bytes askbot/skins/old/media/images/flags/lt.gif | Bin 362 -> 0 bytes askbot/skins/old/media/images/flags/lu.gif | Bin 368 -> 0 bytes askbot/skins/old/media/images/flags/lv.gif | Bin 363 -> 0 bytes askbot/skins/old/media/images/flags/ly.gif | Bin 362 -> 0 bytes askbot/skins/old/media/images/flags/ma.gif | Bin 367 -> 0 bytes askbot/skins/old/media/images/flags/mc.gif | Bin 359 -> 0 bytes askbot/skins/old/media/images/flags/md.gif | Bin 367 -> 0 bytes askbot/skins/old/media/images/flags/me.gif | Bin 238 -> 0 bytes askbot/skins/old/media/images/flags/mg.gif | Bin 372 -> 0 bytes askbot/skins/old/media/images/flags/mh.gif | Bin 370 -> 0 bytes askbot/skins/old/media/images/flags/mk.gif | Bin 382 -> 0 bytes askbot/skins/old/media/images/flags/ml.gif | Bin 363 -> 0 bytes askbot/skins/old/media/images/flags/mm.gif | Bin 365 -> 0 bytes askbot/skins/old/media/images/flags/mn.gif | Bin 368 -> 0 bytes askbot/skins/old/media/images/flags/mo.gif | Bin 378 -> 0 bytes askbot/skins/old/media/images/flags/mp.gif | Bin 368 -> 0 bytes askbot/skins/old/media/images/flags/mq.gif | Bin 379 -> 0 bytes askbot/skins/old/media/images/flags/mr.gif | Bin 377 -> 0 bytes askbot/skins/old/media/images/flags/ms.gif | Bin 371 -> 0 bytes askbot/skins/old/media/images/flags/mt.gif | Bin 369 -> 0 bytes askbot/skins/old/media/images/flags/mu.gif | Bin 358 -> 0 bytes askbot/skins/old/media/images/flags/mv.gif | Bin 372 -> 0 bytes askbot/skins/old/media/images/flags/mw.gif | Bin 364 -> 0 bytes askbot/skins/old/media/images/flags/mx.gif | Bin 366 -> 0 bytes askbot/skins/old/media/images/flags/my.gif | Bin 375 -> 0 bytes askbot/skins/old/media/images/flags/mz.gif | Bin 366 -> 0 bytes askbot/skins/old/media/images/flags/na.gif | Bin 371 -> 0 bytes askbot/skins/old/media/images/flags/nc.gif | Bin 364 -> 0 bytes askbot/skins/old/media/images/flags/ne.gif | Bin 366 -> 0 bytes askbot/skins/old/media/images/flags/nf.gif | Bin 375 -> 0 bytes askbot/skins/old/media/images/flags/ng.gif | Bin 371 -> 0 bytes askbot/skins/old/media/images/flags/ni.gif | Bin 366 -> 0 bytes askbot/skins/old/media/images/flags/nl.gif | Bin 360 -> 0 bytes askbot/skins/old/media/images/flags/no.gif | Bin 376 -> 0 bytes askbot/skins/old/media/images/flags/np.gif | Bin 302 -> 0 bytes askbot/skins/old/media/images/flags/nr.gif | Bin 364 -> 0 bytes askbot/skins/old/media/images/flags/nu.gif | Bin 369 -> 0 bytes askbot/skins/old/media/images/flags/nz.gif | Bin 369 -> 0 bytes askbot/skins/old/media/images/flags/om.gif | Bin 364 -> 0 bytes askbot/skins/old/media/images/flags/pa.gif | Bin 367 -> 0 bytes askbot/skins/old/media/images/flags/pe.gif | Bin 361 -> 0 bytes askbot/skins/old/media/images/flags/pf.gif | Bin 366 -> 0 bytes askbot/skins/old/media/images/flags/pg.gif | Bin 360 -> 0 bytes askbot/skins/old/media/images/flags/ph.gif | Bin 361 -> 0 bytes askbot/skins/old/media/images/flags/pk.gif | Bin 377 -> 0 bytes askbot/skins/old/media/images/flags/pl.gif | Bin 360 -> 0 bytes askbot/skins/old/media/images/flags/pm.gif | Bin 374 -> 0 bytes askbot/skins/old/media/images/flags/pn.gif | Bin 367 -> 0 bytes askbot/skins/old/media/images/flags/pr.gif | Bin 369 -> 0 bytes askbot/skins/old/media/images/flags/ps.gif | Bin 358 -> 0 bytes askbot/skins/old/media/images/flags/pt.gif | Bin 369 -> 0 bytes askbot/skins/old/media/images/flags/pw.gif | Bin 374 -> 0 bytes askbot/skins/old/media/images/flags/py.gif | Bin 363 -> 0 bytes askbot/skins/old/media/images/flags/qa.gif | Bin 364 -> 0 bytes askbot/skins/old/media/images/flags/re.gif | Bin 366 -> 0 bytes askbot/skins/old/media/images/flags/ro.gif | Bin 363 -> 0 bytes askbot/skins/old/media/images/flags/rs.gif | Bin 238 -> 0 bytes askbot/skins/old/media/images/flags/ru.gif | Bin 361 -> 0 bytes askbot/skins/old/media/images/flags/rw.gif | Bin 361 -> 0 bytes askbot/skins/old/media/images/flags/sa.gif | Bin 370 -> 0 bytes askbot/skins/old/media/images/flags/sb.gif | Bin 366 -> 0 bytes askbot/skins/old/media/images/flags/sc.gif | Bin 357 -> 0 bytes askbot/skins/old/media/images/flags/scotland.gif | Bin 378 -> 0 bytes askbot/skins/old/media/images/flags/sd.gif | Bin 355 -> 0 bytes askbot/skins/old/media/images/flags/se.gif | Bin 367 -> 0 bytes askbot/skins/old/media/images/flags/sg.gif | Bin 364 -> 0 bytes askbot/skins/old/media/images/flags/sh.gif | Bin 371 -> 0 bytes askbot/skins/old/media/images/flags/si.gif | Bin 362 -> 0 bytes askbot/skins/old/media/images/flags/sj.gif | Bin 376 -> 0 bytes askbot/skins/old/media/images/flags/sk.gif | Bin 361 -> 0 bytes askbot/skins/old/media/images/flags/sl.gif | Bin 363 -> 0 bytes askbot/skins/old/media/images/flags/sm.gif | Bin 367 -> 0 bytes askbot/skins/old/media/images/flags/sn.gif | Bin 364 -> 0 bytes askbot/skins/old/media/images/flags/so.gif | Bin 376 -> 0 bytes askbot/skins/old/media/images/flags/sr.gif | Bin 361 -> 0 bytes askbot/skins/old/media/images/flags/st.gif | Bin 367 -> 0 bytes askbot/skins/old/media/images/flags/sv.gif | Bin 363 -> 0 bytes askbot/skins/old/media/images/flags/sy.gif | Bin 361 -> 0 bytes askbot/skins/old/media/images/flags/sz.gif | Bin 363 -> 0 bytes askbot/skins/old/media/images/flags/tc.gif | Bin 366 -> 0 bytes askbot/skins/old/media/images/flags/td.gif | Bin 368 -> 0 bytes askbot/skins/old/media/images/flags/tf.gif | Bin 365 -> 0 bytes askbot/skins/old/media/images/flags/tg.gif | Bin 366 -> 0 bytes askbot/skins/old/media/images/flags/th.gif | Bin 360 -> 0 bytes askbot/skins/old/media/images/flags/tj.gif | Bin 361 -> 0 bytes askbot/skins/old/media/images/flags/tk.gif | Bin 372 -> 0 bytes askbot/skins/old/media/images/flags/tl.gif | Bin 360 -> 0 bytes askbot/skins/old/media/images/flags/tm.gif | Bin 367 -> 0 bytes askbot/skins/old/media/images/flags/tn.gif | Bin 375 -> 0 bytes askbot/skins/old/media/images/flags/to.gif | Bin 367 -> 0 bytes askbot/skins/old/media/images/flags/tr.gif | Bin 371 -> 0 bytes askbot/skins/old/media/images/flags/tt.gif | Bin 377 -> 0 bytes askbot/skins/old/media/images/flags/tv.gif | Bin 361 -> 0 bytes askbot/skins/old/media/images/flags/tw.gif | Bin 367 -> 0 bytes askbot/skins/old/media/images/flags/tz.gif | Bin 366 -> 0 bytes askbot/skins/old/media/images/flags/ua.gif | Bin 360 -> 0 bytes askbot/skins/old/media/images/flags/ug.gif | Bin 359 -> 0 bytes askbot/skins/old/media/images/flags/um.gif | Bin 371 -> 0 bytes askbot/skins/old/media/images/flags/us.gif | Bin 367 -> 0 bytes askbot/skins/old/media/images/flags/uy.gif | Bin 373 -> 0 bytes askbot/skins/old/media/images/flags/uz.gif | Bin 364 -> 0 bytes askbot/skins/old/media/images/flags/va.gif | Bin 369 -> 0 bytes askbot/skins/old/media/images/flags/vc.gif | Bin 370 -> 0 bytes askbot/skins/old/media/images/flags/ve.gif | Bin 364 -> 0 bytes askbot/skins/old/media/images/flags/vg.gif | Bin 368 -> 0 bytes askbot/skins/old/media/images/flags/vi.gif | Bin 376 -> 0 bytes askbot/skins/old/media/images/flags/vn.gif | Bin 370 -> 0 bytes askbot/skins/old/media/images/flags/vu.gif | Bin 365 -> 0 bytes askbot/skins/old/media/images/flags/wales.gif | Bin 372 -> 0 bytes askbot/skins/old/media/images/flags/wf.gif | Bin 377 -> 0 bytes askbot/skins/old/media/images/flags/ws.gif | Bin 365 -> 0 bytes askbot/skins/old/media/images/flags/ye.gif | Bin 356 -> 0 bytes askbot/skins/old/media/images/flags/yt.gif | Bin 382 -> 0 bytes askbot/skins/old/media/images/flags/za.gif | Bin 363 -> 0 bytes askbot/skins/old/media/images/flags/zm.gif | Bin 358 -> 0 bytes askbot/skins/old/media/images/flags/zw.gif | Bin 365 -> 0 bytes askbot/skins/old/media/images/go-up-grey.png | Bin 563 -> 0 bytes askbot/skins/old/media/images/go-up-orange.png | Bin 586 -> 0 bytes .../skins/old/media/images/gray-up-arrow-h18px.png | Bin 383 -> 0 bytes askbot/skins/old/media/images/grippie.png | Bin 162 -> 0 bytes askbot/skins/old/media/images/indicator.gif | Bin 2545 -> 0 bytes askbot/skins/old/media/images/logo.gif | Bin 2272 -> 0 bytes askbot/skins/old/media/images/logo.png | Bin 5841 -> 0 bytes askbot/skins/old/media/images/logo1.png | Bin 2752 -> 0 bytes askbot/skins/old/media/images/logo2.png | Bin 2124 -> 0 bytes .../skins/old/media/images/mail-envelope-empty.png | Bin 547 -> 0 bytes .../skins/old/media/images/mail-envelope-full.png | Bin 482 -> 0 bytes askbot/skins/old/media/images/medala.gif | Bin 801 -> 0 bytes askbot/skins/old/media/images/medala_on.gif | Bin 957 -> 0 bytes askbot/skins/old/media/images/new.gif | Bin 635 -> 0 bytes askbot/skins/old/media/images/nophoto.png | Bin 696 -> 0 bytes askbot/skins/old/media/images/openid.gif | Bin 910 -> 0 bytes askbot/skins/old/media/images/openid/aol.gif | Bin 2205 -> 0 bytes askbot/skins/old/media/images/openid/blogger.ico | Bin 3638 -> 0 bytes askbot/skins/old/media/images/openid/claimid.ico | Bin 3638 -> 0 bytes askbot/skins/old/media/images/openid/facebook.gif | Bin 2075 -> 0 bytes askbot/skins/old/media/images/openid/flickr.ico | Bin 1150 -> 0 bytes askbot/skins/old/media/images/openid/google.gif | Bin 1596 -> 0 bytes .../skins/old/media/images/openid/livejournal.ico | Bin 5222 -> 0 bytes askbot/skins/old/media/images/openid/myopenid.ico | Bin 2862 -> 0 bytes .../old/media/images/openid/openid-inputicon.gif | Bin 237 -> 0 bytes askbot/skins/old/media/images/openid/openid.gif | Bin 740 -> 0 bytes .../skins/old/media/images/openid/technorati.ico | Bin 2294 -> 0 bytes askbot/skins/old/media/images/openid/twitter.png | Bin 3130 -> 0 bytes askbot/skins/old/media/images/openid/verisign.ico | Bin 4710 -> 0 bytes askbot/skins/old/media/images/openid/vidoop.ico | Bin 1406 -> 0 bytes askbot/skins/old/media/images/openid/wordpress.ico | Bin 1150 -> 0 bytes askbot/skins/old/media/images/openid/yahoo.gif | Bin 1510 -> 0 bytes askbot/skins/old/media/images/print.png | Bin 1391 -> 0 bytes askbot/skins/old/media/images/pw-login.gif | Bin 1818 -> 0 bytes askbot/skins/old/media/images/quest-bg.gif | Bin 294 -> 0 bytes askbot/skins/old/media/images/sprite.png | Bin 5325 -> 0 bytes askbot/skins/old/media/images/tag-left.png | Bin 290 -> 0 bytes askbot/skins/old/media/images/tag-right.png | Bin 187 -> 0 bytes askbot/skins/old/media/images/vote-accepted-on.png | Bin 1124 -> 0 bytes askbot/skins/old/media/images/vote-accepted.png | Bin 1058 -> 0 bytes .../skins/old/media/images/vote-arrow-down-on.png | Bin 905 -> 0 bytes askbot/skins/old/media/images/vote-arrow-down.png | Bin 876 -> 0 bytes askbot/skins/old/media/images/vote-arrow-up-on.png | Bin 906 -> 0 bytes askbot/skins/old/media/images/vote-arrow-up.png | Bin 843 -> 0 bytes .../skins/old/media/images/vote-favorite-off.png | Bin 930 -> 0 bytes askbot/skins/old/media/images/vote-favorite-on.png | Bin 1023 -> 0 bytes askbot/skins/old/media/images/wiki.png | Bin 5178 -> 0 bytes .../skins/old/media/jquery-openid/images/aol.gif | Bin 1872 -> 0 bytes .../old/media/jquery-openid/images/blogger-1.png | Bin 432 -> 0 bytes .../old/media/jquery-openid/images/blogger.ico | Bin 3638 -> 0 bytes .../old/media/jquery-openid/images/claimid-0.png | Bin 629 -> 0 bytes .../old/media/jquery-openid/images/claimid.ico | Bin 3638 -> 0 bytes .../old/media/jquery-openid/images/facebook.gif | Bin 1737 -> 0 bytes .../old/media/jquery-openid/images/flickr.ico | Bin 1150 -> 0 bytes .../old/media/jquery-openid/images/flickr.png | Bin 426 -> 0 bytes .../old/media/jquery-openid/images/google.gif | Bin 1528 -> 0 bytes .../old/media/jquery-openid/images/identica.png | Bin 6601 -> 0 bytes .../old/media/jquery-openid/images/linkedin.gif | Bin 1530 -> 0 bytes .../media/jquery-openid/images/livejournal-1.png | Bin 713 -> 0 bytes .../old/media/jquery-openid/images/livejournal.ico | Bin 5222 -> 0 bytes .../old/media/jquery-openid/images/myopenid-2.png | Bin 511 -> 0 bytes .../old/media/jquery-openid/images/myopenid.ico | Bin 2862 -> 0 bytes .../jquery-openid/images/openid-inputicon.gif | Bin 237 -> 0 bytes .../old/media/jquery-openid/images/openid.gif | Bin 1473 -> 0 bytes .../old/media/jquery-openid/images/openidico.png | Bin 654 -> 0 bytes .../old/media/jquery-openid/images/openidico16.png | Bin 554 -> 0 bytes .../media/jquery-openid/images/technorati-1.png | Bin 606 -> 0 bytes .../old/media/jquery-openid/images/technorati.ico | Bin 2294 -> 0 bytes .../old/media/jquery-openid/images/twitter.gif | Bin 1913 -> 0 bytes .../old/media/jquery-openid/images/verisign-2.png | Bin 859 -> 0 bytes .../old/media/jquery-openid/images/verisign.ico | Bin 4710 -> 0 bytes .../old/media/jquery-openid/images/vidoop.ico | Bin 1406 -> 0 bytes .../old/media/jquery-openid/images/vidoop.png | Bin 499 -> 0 bytes .../old/media/jquery-openid/images/wordpress.ico | Bin 1150 -> 0 bytes .../old/media/jquery-openid/images/wordpress.png | Bin 566 -> 0 bytes .../skins/old/media/jquery-openid/images/yahoo.gif | Bin 1607 -> 0 bytes .../skins/old/media/jquery-openid/jquery.openid.js | 447 -- askbot/skins/old/media/jquery-openid/openid.css | 38 - askbot/skins/old/media/js/autocompleter.js | 766 --- askbot/skins/old/media/js/compress.bat | 5 - askbot/skins/old/media/js/editor.js | 75 - askbot/skins/old/media/js/excanvas.min.js | 1 - askbot/skins/old/media/js/flot-build.bat | 3 - askbot/skins/old/media/js/i18n.js | 469 -- askbot/skins/old/media/js/jquery-1.4.3.js | 6883 -------------------- askbot/skins/old/media/js/jquery-fieldselection.js | 83 - .../old/media/js/jquery-fieldselection.min.js | 1 - askbot/skins/old/media/js/jquery.ajaxfileupload.js | 195 - askbot/skins/old/media/js/jquery.flot.js | 2119 ------ askbot/skins/old/media/js/jquery.flot.min.js | 1 - askbot/skins/old/media/js/jquery.form.js | 654 -- askbot/skins/old/media/js/jquery.i18n.js | 133 - askbot/skins/old/media/js/jquery.openid.js | 176 - askbot/skins/old/media/js/jquery.validate.js | 1146 ---- askbot/skins/old/media/js/jquery.validate.min.js | 16 - askbot/skins/old/media/js/jquery.validate.pack.js | 15 - askbot/skins/old/media/js/live_search.js | 546 -- askbot/skins/old/media/js/output-words.html | 49 - askbot/skins/old/media/js/output-words.js | 97 - askbot/skins/old/media/js/post.js | 1665 ----- askbot/skins/old/media/js/se_hilite.js | 1 - askbot/skins/old/media/js/se_hilite_src.js | 273 - askbot/skins/old/media/js/tag_selector.js | 375 -- askbot/skins/old/media/js/user.js | 185 - askbot/skins/old/media/js/utils.js | 391 -- .../skins/old/media/js/wmd/images/wmd-buttons.png | Bin 11480 -> 0 bytes askbot/skins/old/media/js/wmd/showdown-min.js | 1 - askbot/skins/old/media/js/wmd/showdown.js | 1332 ---- askbot/skins/old/media/js/wmd/wmd-min.js | 1 - askbot/skins/old/media/js/wmd/wmd-test.html | 158 - askbot/skins/old/media/js/wmd/wmd.css | 130 - askbot/skins/old/media/js/wmd/wmd.js | 2438 ------- askbot/skins/old/media/style/auth.css | 48 - .../skins/old/media/style/jquery.autocomplete.css | 37 - askbot/skins/old/media/style/openid.css | 45 - askbot/skins/old/media/style/prettify.css | 27 - askbot/skins/old/media/style/style.css | 2474 ------- askbot/skins/old/templates/404.html | 5 - askbot/skins/old/templates/404.jinja.html | 44 - askbot/skins/old/templates/500.html | 5 - askbot/skins/old/templates/500.jinja.html | 25 - askbot/skins/old/templates/about.html | 10 - askbot/skins/old/templates/answer_edit.html | 80 - askbot/skins/old/templates/ask.html | 63 - .../old/templates/authopenid/changeemail.html | 80 - .../skins/old/templates/authopenid/complete.html | 84 - .../old/templates/authopenid/confirm_email.txt | 12 - .../old/templates/authopenid/email_validation.txt | 14 - askbot/skins/old/templates/authopenid/logout.html | 31 - askbot/skins/old/templates/authopenid/macros.html | 58 - .../templates/authopenid/providers_javascript.html | 55 - askbot/skins/old/templates/authopenid/signin.html | 241 - .../templates/authopenid/signup_with_password.html | 58 - askbot/skins/old/templates/avatar/add.html | 15 - askbot/skins/old/templates/avatar/change.html | 24 - .../skins/old/templates/avatar/confirm_delete.html | 16 - askbot/skins/old/templates/badge.html | 24 - askbot/skins/old/templates/badges.html | 60 - askbot/skins/old/templates/base.html | 70 - askbot/skins/old/templates/blocks/README | 2 - .../old/templates/blocks/answer_edit_tips.html | 63 - askbot/skins/old/templates/blocks/ask_form.html | 46 - .../skins/old/templates/blocks/bottom_scripts.html | 95 - askbot/skins/old/templates/blocks/editor_data.html | 10 - askbot/skins/old/templates/blocks/footer.html | 53 - askbot/skins/old/templates/blocks/forum_body.html | 14 - askbot/skins/old/templates/blocks/header.html | 44 - .../old/templates/blocks/header_meta_links.html | 16 - askbot/skins/old/templates/blocks/input_bar.html | 47 - .../old/templates/blocks/mandatory_tags_js.html | 25 - askbot/skins/old/templates/blocks/paginator.html | 4 - .../old/templates/blocks/question_edit_tips.html | 59 - .../old/templates/blocks/system_messages.html | 8 - .../skins/old/templates/blocks/tag_selector.html | 46 - askbot/skins/old/templates/close.html | 27 - askbot/skins/old/templates/faq.html | 9 - askbot/skins/old/templates/faq_static.html | 99 - askbot/skins/old/templates/feedback.html | 46 - askbot/skins/old/templates/feedback_email.txt | 13 - askbot/skins/old/templates/import_data.html | 31 - .../skins/old/templates/instant_notification.html | 42 - askbot/skins/old/templates/macros.html | 757 --- askbot/skins/old/templates/main_page.html | 24 - askbot/skins/old/templates/main_page/content.html | 17 - askbot/skins/old/templates/main_page/headline.html | 52 - .../skins/old/templates/main_page/javascript.html | 30 - .../old/templates/main_page/nothing_found.html | 31 - .../skins/old/templates/main_page/paginator.html | 7 - askbot/skins/old/templates/main_page/sidebar.html | 46 - askbot/skins/old/templates/main_page/tab_bar.html | 86 - askbot/skins/old/templates/one_column_body.html | 9 - askbot/skins/old/templates/privacy.html | 8 - askbot/skins/old/templates/question.html | 553 -- askbot/skins/old/templates/question_edit.html | 97 - askbot/skins/old/templates/question_retag.html | 68 - askbot/skins/old/templates/reopen.html | 38 - askbot/skins/old/templates/revisions.html | 97 - askbot/skins/old/templates/subscribe_for_tags.html | 19 - askbot/skins/old/templates/tags.html | 75 - askbot/skins/old/templates/two_column_body.html | 13 - askbot/skins/old/templates/user_profile/user.html | 42 - .../old/templates/user_profile/user_edit.html | 100 - .../user_profile/user_email_subscriptions.html | 27 - .../old/templates/user_profile/user_favorites.html | 9 - .../old/templates/user_profile/user_inbox.html | 106 - .../old/templates/user_profile/user_info.html | 107 - .../old/templates/user_profile/user_moderate.html | 94 - .../old/templates/user_profile/user_network.html | 25 - .../old/templates/user_profile/user_recent.html | 42 - .../templates/user_profile/user_reputation.html | 40 - .../old/templates/user_profile/user_stats.html | 159 - .../old/templates/user_profile/user_tabs.html | 52 - .../old/templates/user_profile/user_votes.html | 30 - .../templates/user_profile/users_questions.html | 8 - askbot/skins/old/templates/users.html | 58 - 465 files changed, 2 insertions(+), 28303 deletions(-) delete mode 100644 askbot/skins/old/media/images/anon.png delete mode 100755 askbot/skins/old/media/images/blue-up-arrow-h18px.png delete mode 100755 askbot/skins/old/media/images/box-arrow.gif delete mode 100755 askbot/skins/old/media/images/bullet_green.gif delete mode 100755 askbot/skins/old/media/images/cc-88x31.png delete mode 100644 askbot/skins/old/media/images/cc-by-sa.png delete mode 100755 askbot/skins/old/media/images/close-small-dark.png delete mode 100755 askbot/skins/old/media/images/close-small-hover.png delete mode 100755 askbot/skins/old/media/images/close-small.png delete mode 100755 askbot/skins/old/media/images/dash.gif delete mode 100644 askbot/skins/old/media/images/dialog-warning-off.png delete mode 100644 askbot/skins/old/media/images/dialog-warning.png delete mode 100755 askbot/skins/old/media/images/djangomade124x25_grey.gif delete mode 100755 askbot/skins/old/media/images/dot-g.gif delete mode 100755 askbot/skins/old/media/images/dot-list.gif delete mode 100755 askbot/skins/old/media/images/edit.png delete mode 100755 askbot/skins/old/media/images/expander-arrow-hide.gif delete mode 100755 askbot/skins/old/media/images/expander-arrow-show.gif delete mode 100644 askbot/skins/old/media/images/favicon.gif delete mode 100644 askbot/skins/old/media/images/favicon.ico delete mode 100755 askbot/skins/old/media/images/feed-icon-small.png delete mode 100755 askbot/skins/old/media/images/flags/ad.gif delete mode 100755 askbot/skins/old/media/images/flags/ae.gif delete mode 100755 askbot/skins/old/media/images/flags/af.gif delete mode 100755 askbot/skins/old/media/images/flags/ag.gif delete mode 100755 askbot/skins/old/media/images/flags/ai.gif delete mode 100755 askbot/skins/old/media/images/flags/al.gif delete mode 100755 askbot/skins/old/media/images/flags/am.gif delete mode 100755 askbot/skins/old/media/images/flags/an.gif delete mode 100644 askbot/skins/old/media/images/flags/ao.gif delete mode 100755 askbot/skins/old/media/images/flags/ar.gif delete mode 100755 askbot/skins/old/media/images/flags/as.gif delete mode 100755 askbot/skins/old/media/images/flags/at.gif delete mode 100755 askbot/skins/old/media/images/flags/au.gif delete mode 100755 askbot/skins/old/media/images/flags/aw.gif delete mode 100755 askbot/skins/old/media/images/flags/ax.gif delete mode 100755 askbot/skins/old/media/images/flags/az.gif delete mode 100755 askbot/skins/old/media/images/flags/ba.gif delete mode 100755 askbot/skins/old/media/images/flags/bb.gif delete mode 100755 askbot/skins/old/media/images/flags/bd.gif delete mode 100755 askbot/skins/old/media/images/flags/be.gif delete mode 100755 askbot/skins/old/media/images/flags/bf.gif delete mode 100755 askbot/skins/old/media/images/flags/bg.gif delete mode 100755 askbot/skins/old/media/images/flags/bh.gif delete mode 100755 askbot/skins/old/media/images/flags/bi.gif delete mode 100755 askbot/skins/old/media/images/flags/bj.gif delete mode 100755 askbot/skins/old/media/images/flags/bm.gif delete mode 100755 askbot/skins/old/media/images/flags/bn.gif delete mode 100755 askbot/skins/old/media/images/flags/bo.gif delete mode 100755 askbot/skins/old/media/images/flags/br.gif delete mode 100755 askbot/skins/old/media/images/flags/bs.gif delete mode 100755 askbot/skins/old/media/images/flags/bt.gif delete mode 100755 askbot/skins/old/media/images/flags/bv.gif delete mode 100755 askbot/skins/old/media/images/flags/bw.gif delete mode 100755 askbot/skins/old/media/images/flags/by.gif delete mode 100755 askbot/skins/old/media/images/flags/bz.gif delete mode 100755 askbot/skins/old/media/images/flags/ca.gif delete mode 100644 askbot/skins/old/media/images/flags/catalonia.gif delete mode 100755 askbot/skins/old/media/images/flags/cc.gif delete mode 100644 askbot/skins/old/media/images/flags/cd.gif delete mode 100755 askbot/skins/old/media/images/flags/cf.gif delete mode 100755 askbot/skins/old/media/images/flags/cg.gif delete mode 100755 askbot/skins/old/media/images/flags/ch.gif delete mode 100755 askbot/skins/old/media/images/flags/ci.gif delete mode 100755 askbot/skins/old/media/images/flags/ck.gif delete mode 100755 askbot/skins/old/media/images/flags/cl.gif delete mode 100755 askbot/skins/old/media/images/flags/cm.gif delete mode 100755 askbot/skins/old/media/images/flags/cn.gif delete mode 100755 askbot/skins/old/media/images/flags/co.gif delete mode 100755 askbot/skins/old/media/images/flags/cr.gif delete mode 100755 askbot/skins/old/media/images/flags/cs.gif delete mode 100755 askbot/skins/old/media/images/flags/cu.gif delete mode 100755 askbot/skins/old/media/images/flags/cv.gif delete mode 100755 askbot/skins/old/media/images/flags/cx.gif delete mode 100755 askbot/skins/old/media/images/flags/cy.gif delete mode 100755 askbot/skins/old/media/images/flags/cz.gif delete mode 100755 askbot/skins/old/media/images/flags/de.gif delete mode 100755 askbot/skins/old/media/images/flags/dj.gif delete mode 100755 askbot/skins/old/media/images/flags/dk.gif delete mode 100755 askbot/skins/old/media/images/flags/dm.gif delete mode 100755 askbot/skins/old/media/images/flags/do.gif delete mode 100755 askbot/skins/old/media/images/flags/dz.gif delete mode 100755 askbot/skins/old/media/images/flags/ec.gif delete mode 100755 askbot/skins/old/media/images/flags/ee.gif delete mode 100755 askbot/skins/old/media/images/flags/eg.gif delete mode 100755 askbot/skins/old/media/images/flags/eh.gif delete mode 100755 askbot/skins/old/media/images/flags/england.gif delete mode 100755 askbot/skins/old/media/images/flags/er.gif delete mode 100755 askbot/skins/old/media/images/flags/es.gif delete mode 100755 askbot/skins/old/media/images/flags/et.gif delete mode 100644 askbot/skins/old/media/images/flags/europeanunion.gif delete mode 100755 askbot/skins/old/media/images/flags/fam.gif delete mode 100755 askbot/skins/old/media/images/flags/fi.gif delete mode 100755 askbot/skins/old/media/images/flags/fj.gif delete mode 100755 askbot/skins/old/media/images/flags/fk.gif delete mode 100755 askbot/skins/old/media/images/flags/fm.gif delete mode 100755 askbot/skins/old/media/images/flags/fo.gif delete mode 100755 askbot/skins/old/media/images/flags/fr.gif delete mode 100755 askbot/skins/old/media/images/flags/ga.gif delete mode 100644 askbot/skins/old/media/images/flags/gb.gif delete mode 100755 askbot/skins/old/media/images/flags/gd.gif delete mode 100755 askbot/skins/old/media/images/flags/ge.gif delete mode 100755 askbot/skins/old/media/images/flags/gf.gif delete mode 100755 askbot/skins/old/media/images/flags/gh.gif delete mode 100755 askbot/skins/old/media/images/flags/gi.gif delete mode 100755 askbot/skins/old/media/images/flags/gl.gif delete mode 100755 askbot/skins/old/media/images/flags/gm.gif delete mode 100755 askbot/skins/old/media/images/flags/gn.gif delete mode 100755 askbot/skins/old/media/images/flags/gp.gif delete mode 100755 askbot/skins/old/media/images/flags/gq.gif delete mode 100755 askbot/skins/old/media/images/flags/gr.gif delete mode 100755 askbot/skins/old/media/images/flags/gs.gif delete mode 100755 askbot/skins/old/media/images/flags/gt.gif delete mode 100755 askbot/skins/old/media/images/flags/gu.gif delete mode 100755 askbot/skins/old/media/images/flags/gw.gif delete mode 100755 askbot/skins/old/media/images/flags/gy.gif delete mode 100755 askbot/skins/old/media/images/flags/hk.gif delete mode 100755 askbot/skins/old/media/images/flags/hm.gif delete mode 100755 askbot/skins/old/media/images/flags/hn.gif delete mode 100755 askbot/skins/old/media/images/flags/hr.gif delete mode 100755 askbot/skins/old/media/images/flags/ht.gif delete mode 100755 askbot/skins/old/media/images/flags/hu.gif delete mode 100755 askbot/skins/old/media/images/flags/id.gif delete mode 100755 askbot/skins/old/media/images/flags/ie.gif delete mode 100755 askbot/skins/old/media/images/flags/il.gif delete mode 100755 askbot/skins/old/media/images/flags/in.gif delete mode 100755 askbot/skins/old/media/images/flags/io.gif delete mode 100755 askbot/skins/old/media/images/flags/iq.gif delete mode 100755 askbot/skins/old/media/images/flags/ir.gif delete mode 100755 askbot/skins/old/media/images/flags/is.gif delete mode 100755 askbot/skins/old/media/images/flags/it.gif delete mode 100755 askbot/skins/old/media/images/flags/jm.gif delete mode 100755 askbot/skins/old/media/images/flags/jo.gif delete mode 100755 askbot/skins/old/media/images/flags/jp.gif delete mode 100755 askbot/skins/old/media/images/flags/ke.gif delete mode 100755 askbot/skins/old/media/images/flags/kg.gif delete mode 100755 askbot/skins/old/media/images/flags/kh.gif delete mode 100755 askbot/skins/old/media/images/flags/ki.gif delete mode 100755 askbot/skins/old/media/images/flags/km.gif delete mode 100755 askbot/skins/old/media/images/flags/kn.gif delete mode 100755 askbot/skins/old/media/images/flags/kp.gif delete mode 100755 askbot/skins/old/media/images/flags/kr.gif delete mode 100755 askbot/skins/old/media/images/flags/kw.gif delete mode 100755 askbot/skins/old/media/images/flags/ky.gif delete mode 100755 askbot/skins/old/media/images/flags/kz.gif delete mode 100755 askbot/skins/old/media/images/flags/la.gif delete mode 100755 askbot/skins/old/media/images/flags/lb.gif delete mode 100644 askbot/skins/old/media/images/flags/lc.gif delete mode 100755 askbot/skins/old/media/images/flags/li.gif delete mode 100755 askbot/skins/old/media/images/flags/lk.gif delete mode 100755 askbot/skins/old/media/images/flags/lr.gif delete mode 100755 askbot/skins/old/media/images/flags/ls.gif delete mode 100755 askbot/skins/old/media/images/flags/lt.gif delete mode 100755 askbot/skins/old/media/images/flags/lu.gif delete mode 100755 askbot/skins/old/media/images/flags/lv.gif delete mode 100755 askbot/skins/old/media/images/flags/ly.gif delete mode 100755 askbot/skins/old/media/images/flags/ma.gif delete mode 100755 askbot/skins/old/media/images/flags/mc.gif delete mode 100755 askbot/skins/old/media/images/flags/md.gif delete mode 100644 askbot/skins/old/media/images/flags/me.gif delete mode 100755 askbot/skins/old/media/images/flags/mg.gif delete mode 100755 askbot/skins/old/media/images/flags/mh.gif delete mode 100755 askbot/skins/old/media/images/flags/mk.gif delete mode 100755 askbot/skins/old/media/images/flags/ml.gif delete mode 100755 askbot/skins/old/media/images/flags/mm.gif delete mode 100755 askbot/skins/old/media/images/flags/mn.gif delete mode 100755 askbot/skins/old/media/images/flags/mo.gif delete mode 100755 askbot/skins/old/media/images/flags/mp.gif delete mode 100755 askbot/skins/old/media/images/flags/mq.gif delete mode 100755 askbot/skins/old/media/images/flags/mr.gif delete mode 100755 askbot/skins/old/media/images/flags/ms.gif delete mode 100755 askbot/skins/old/media/images/flags/mt.gif delete mode 100755 askbot/skins/old/media/images/flags/mu.gif delete mode 100755 askbot/skins/old/media/images/flags/mv.gif delete mode 100755 askbot/skins/old/media/images/flags/mw.gif delete mode 100755 askbot/skins/old/media/images/flags/mx.gif delete mode 100755 askbot/skins/old/media/images/flags/my.gif delete mode 100755 askbot/skins/old/media/images/flags/mz.gif delete mode 100755 askbot/skins/old/media/images/flags/na.gif delete mode 100755 askbot/skins/old/media/images/flags/nc.gif delete mode 100755 askbot/skins/old/media/images/flags/ne.gif delete mode 100755 askbot/skins/old/media/images/flags/nf.gif delete mode 100755 askbot/skins/old/media/images/flags/ng.gif delete mode 100755 askbot/skins/old/media/images/flags/ni.gif delete mode 100755 askbot/skins/old/media/images/flags/nl.gif delete mode 100755 askbot/skins/old/media/images/flags/no.gif delete mode 100755 askbot/skins/old/media/images/flags/np.gif delete mode 100755 askbot/skins/old/media/images/flags/nr.gif delete mode 100755 askbot/skins/old/media/images/flags/nu.gif delete mode 100755 askbot/skins/old/media/images/flags/nz.gif delete mode 100755 askbot/skins/old/media/images/flags/om.gif delete mode 100755 askbot/skins/old/media/images/flags/pa.gif delete mode 100755 askbot/skins/old/media/images/flags/pe.gif delete mode 100755 askbot/skins/old/media/images/flags/pf.gif delete mode 100755 askbot/skins/old/media/images/flags/pg.gif delete mode 100755 askbot/skins/old/media/images/flags/ph.gif delete mode 100755 askbot/skins/old/media/images/flags/pk.gif delete mode 100755 askbot/skins/old/media/images/flags/pl.gif delete mode 100755 askbot/skins/old/media/images/flags/pm.gif delete mode 100755 askbot/skins/old/media/images/flags/pn.gif delete mode 100755 askbot/skins/old/media/images/flags/pr.gif delete mode 100755 askbot/skins/old/media/images/flags/ps.gif delete mode 100755 askbot/skins/old/media/images/flags/pt.gif delete mode 100755 askbot/skins/old/media/images/flags/pw.gif delete mode 100755 askbot/skins/old/media/images/flags/py.gif delete mode 100755 askbot/skins/old/media/images/flags/qa.gif delete mode 100755 askbot/skins/old/media/images/flags/re.gif delete mode 100755 askbot/skins/old/media/images/flags/ro.gif delete mode 100644 askbot/skins/old/media/images/flags/rs.gif delete mode 100755 askbot/skins/old/media/images/flags/ru.gif delete mode 100755 askbot/skins/old/media/images/flags/rw.gif delete mode 100755 askbot/skins/old/media/images/flags/sa.gif delete mode 100755 askbot/skins/old/media/images/flags/sb.gif delete mode 100755 askbot/skins/old/media/images/flags/sc.gif delete mode 100755 askbot/skins/old/media/images/flags/scotland.gif delete mode 100755 askbot/skins/old/media/images/flags/sd.gif delete mode 100755 askbot/skins/old/media/images/flags/se.gif delete mode 100755 askbot/skins/old/media/images/flags/sg.gif delete mode 100755 askbot/skins/old/media/images/flags/sh.gif delete mode 100755 askbot/skins/old/media/images/flags/si.gif delete mode 100755 askbot/skins/old/media/images/flags/sj.gif delete mode 100755 askbot/skins/old/media/images/flags/sk.gif delete mode 100755 askbot/skins/old/media/images/flags/sl.gif delete mode 100755 askbot/skins/old/media/images/flags/sm.gif delete mode 100755 askbot/skins/old/media/images/flags/sn.gif delete mode 100755 askbot/skins/old/media/images/flags/so.gif delete mode 100755 askbot/skins/old/media/images/flags/sr.gif delete mode 100755 askbot/skins/old/media/images/flags/st.gif delete mode 100755 askbot/skins/old/media/images/flags/sv.gif delete mode 100755 askbot/skins/old/media/images/flags/sy.gif delete mode 100755 askbot/skins/old/media/images/flags/sz.gif delete mode 100755 askbot/skins/old/media/images/flags/tc.gif delete mode 100755 askbot/skins/old/media/images/flags/td.gif delete mode 100755 askbot/skins/old/media/images/flags/tf.gif delete mode 100755 askbot/skins/old/media/images/flags/tg.gif delete mode 100755 askbot/skins/old/media/images/flags/th.gif delete mode 100755 askbot/skins/old/media/images/flags/tj.gif delete mode 100755 askbot/skins/old/media/images/flags/tk.gif delete mode 100755 askbot/skins/old/media/images/flags/tl.gif delete mode 100755 askbot/skins/old/media/images/flags/tm.gif delete mode 100755 askbot/skins/old/media/images/flags/tn.gif delete mode 100755 askbot/skins/old/media/images/flags/to.gif delete mode 100755 askbot/skins/old/media/images/flags/tr.gif delete mode 100755 askbot/skins/old/media/images/flags/tt.gif delete mode 100755 askbot/skins/old/media/images/flags/tv.gif delete mode 100755 askbot/skins/old/media/images/flags/tw.gif delete mode 100755 askbot/skins/old/media/images/flags/tz.gif delete mode 100755 askbot/skins/old/media/images/flags/ua.gif delete mode 100755 askbot/skins/old/media/images/flags/ug.gif delete mode 100755 askbot/skins/old/media/images/flags/um.gif delete mode 100755 askbot/skins/old/media/images/flags/us.gif delete mode 100755 askbot/skins/old/media/images/flags/uy.gif delete mode 100755 askbot/skins/old/media/images/flags/uz.gif delete mode 100755 askbot/skins/old/media/images/flags/va.gif delete mode 100755 askbot/skins/old/media/images/flags/vc.gif delete mode 100755 askbot/skins/old/media/images/flags/ve.gif delete mode 100755 askbot/skins/old/media/images/flags/vg.gif delete mode 100755 askbot/skins/old/media/images/flags/vi.gif delete mode 100755 askbot/skins/old/media/images/flags/vn.gif delete mode 100755 askbot/skins/old/media/images/flags/vu.gif delete mode 100755 askbot/skins/old/media/images/flags/wales.gif delete mode 100755 askbot/skins/old/media/images/flags/wf.gif delete mode 100755 askbot/skins/old/media/images/flags/ws.gif delete mode 100755 askbot/skins/old/media/images/flags/ye.gif delete mode 100755 askbot/skins/old/media/images/flags/yt.gif delete mode 100755 askbot/skins/old/media/images/flags/za.gif delete mode 100755 askbot/skins/old/media/images/flags/zm.gif delete mode 100755 askbot/skins/old/media/images/flags/zw.gif delete mode 100644 askbot/skins/old/media/images/go-up-grey.png delete mode 100644 askbot/skins/old/media/images/go-up-orange.png delete mode 100755 askbot/skins/old/media/images/gray-up-arrow-h18px.png delete mode 100755 askbot/skins/old/media/images/grippie.png delete mode 100755 askbot/skins/old/media/images/indicator.gif delete mode 100644 askbot/skins/old/media/images/logo.gif delete mode 100644 askbot/skins/old/media/images/logo.png delete mode 100755 askbot/skins/old/media/images/logo1.png delete mode 100755 askbot/skins/old/media/images/logo2.png delete mode 100644 askbot/skins/old/media/images/mail-envelope-empty.png delete mode 100644 askbot/skins/old/media/images/mail-envelope-full.png delete mode 100755 askbot/skins/old/media/images/medala.gif delete mode 100755 askbot/skins/old/media/images/medala_on.gif delete mode 100755 askbot/skins/old/media/images/new.gif delete mode 100755 askbot/skins/old/media/images/nophoto.png delete mode 100755 askbot/skins/old/media/images/openid.gif delete mode 100755 askbot/skins/old/media/images/openid/aol.gif delete mode 100755 askbot/skins/old/media/images/openid/blogger.ico delete mode 100755 askbot/skins/old/media/images/openid/claimid.ico delete mode 100755 askbot/skins/old/media/images/openid/facebook.gif delete mode 100755 askbot/skins/old/media/images/openid/flickr.ico delete mode 100755 askbot/skins/old/media/images/openid/google.gif delete mode 100755 askbot/skins/old/media/images/openid/livejournal.ico delete mode 100755 askbot/skins/old/media/images/openid/myopenid.ico delete mode 100755 askbot/skins/old/media/images/openid/openid-inputicon.gif delete mode 100755 askbot/skins/old/media/images/openid/openid.gif delete mode 100755 askbot/skins/old/media/images/openid/technorati.ico delete mode 100755 askbot/skins/old/media/images/openid/twitter.png delete mode 100755 askbot/skins/old/media/images/openid/verisign.ico delete mode 100755 askbot/skins/old/media/images/openid/vidoop.ico delete mode 100755 askbot/skins/old/media/images/openid/wordpress.ico delete mode 100755 askbot/skins/old/media/images/openid/yahoo.gif delete mode 100644 askbot/skins/old/media/images/print.png delete mode 100644 askbot/skins/old/media/images/pw-login.gif delete mode 100755 askbot/skins/old/media/images/quest-bg.gif delete mode 100644 askbot/skins/old/media/images/sprite.png delete mode 100644 askbot/skins/old/media/images/tag-left.png delete mode 100644 askbot/skins/old/media/images/tag-right.png delete mode 100755 askbot/skins/old/media/images/vote-accepted-on.png delete mode 100755 askbot/skins/old/media/images/vote-accepted.png delete mode 100755 askbot/skins/old/media/images/vote-arrow-down-on.png delete mode 100755 askbot/skins/old/media/images/vote-arrow-down.png delete mode 100755 askbot/skins/old/media/images/vote-arrow-up-on.png delete mode 100755 askbot/skins/old/media/images/vote-arrow-up.png delete mode 100755 askbot/skins/old/media/images/vote-favorite-off.png delete mode 100755 askbot/skins/old/media/images/vote-favorite-on.png delete mode 100644 askbot/skins/old/media/images/wiki.png delete mode 100755 askbot/skins/old/media/jquery-openid/images/aol.gif delete mode 100755 askbot/skins/old/media/jquery-openid/images/blogger-1.png delete mode 100755 askbot/skins/old/media/jquery-openid/images/blogger.ico delete mode 100755 askbot/skins/old/media/jquery-openid/images/claimid-0.png delete mode 100755 askbot/skins/old/media/jquery-openid/images/claimid.ico delete mode 100755 askbot/skins/old/media/jquery-openid/images/facebook.gif delete mode 100755 askbot/skins/old/media/jquery-openid/images/flickr.ico delete mode 100755 askbot/skins/old/media/jquery-openid/images/flickr.png delete mode 100755 askbot/skins/old/media/jquery-openid/images/google.gif delete mode 100644 askbot/skins/old/media/jquery-openid/images/identica.png delete mode 100644 askbot/skins/old/media/jquery-openid/images/linkedin.gif delete mode 100755 askbot/skins/old/media/jquery-openid/images/livejournal-1.png delete mode 100755 askbot/skins/old/media/jquery-openid/images/livejournal.ico delete mode 100755 askbot/skins/old/media/jquery-openid/images/myopenid-2.png delete mode 100755 askbot/skins/old/media/jquery-openid/images/myopenid.ico delete mode 100755 askbot/skins/old/media/jquery-openid/images/openid-inputicon.gif delete mode 100755 askbot/skins/old/media/jquery-openid/images/openid.gif delete mode 100755 askbot/skins/old/media/jquery-openid/images/openidico.png delete mode 100755 askbot/skins/old/media/jquery-openid/images/openidico16.png delete mode 100755 askbot/skins/old/media/jquery-openid/images/technorati-1.png delete mode 100755 askbot/skins/old/media/jquery-openid/images/technorati.ico delete mode 100644 askbot/skins/old/media/jquery-openid/images/twitter.gif delete mode 100755 askbot/skins/old/media/jquery-openid/images/verisign-2.png delete mode 100755 askbot/skins/old/media/jquery-openid/images/verisign.ico delete mode 100755 askbot/skins/old/media/jquery-openid/images/vidoop.ico delete mode 100755 askbot/skins/old/media/jquery-openid/images/vidoop.png delete mode 100755 askbot/skins/old/media/jquery-openid/images/wordpress.ico delete mode 100755 askbot/skins/old/media/jquery-openid/images/wordpress.png delete mode 100755 askbot/skins/old/media/jquery-openid/images/yahoo.gif delete mode 100644 askbot/skins/old/media/jquery-openid/jquery.openid.js delete mode 100644 askbot/skins/old/media/jquery-openid/openid.css delete mode 100644 askbot/skins/old/media/js/autocompleter.js delete mode 100644 askbot/skins/old/media/js/compress.bat delete mode 100644 askbot/skins/old/media/js/editor.js delete mode 100644 askbot/skins/old/media/js/excanvas.min.js delete mode 100644 askbot/skins/old/media/js/flot-build.bat delete mode 100644 askbot/skins/old/media/js/i18n.js delete mode 100644 askbot/skins/old/media/js/jquery-1.4.3.js delete mode 100644 askbot/skins/old/media/js/jquery-fieldselection.js delete mode 100644 askbot/skins/old/media/js/jquery-fieldselection.min.js delete mode 100644 askbot/skins/old/media/js/jquery.ajaxfileupload.js delete mode 100644 askbot/skins/old/media/js/jquery.flot.js delete mode 100644 askbot/skins/old/media/js/jquery.flot.min.js delete mode 100644 askbot/skins/old/media/js/jquery.form.js delete mode 100644 askbot/skins/old/media/js/jquery.i18n.js delete mode 100644 askbot/skins/old/media/js/jquery.openid.js delete mode 100644 askbot/skins/old/media/js/jquery.validate.js delete mode 100644 askbot/skins/old/media/js/jquery.validate.min.js delete mode 100644 askbot/skins/old/media/js/jquery.validate.pack.js delete mode 100644 askbot/skins/old/media/js/live_search.js delete mode 100644 askbot/skins/old/media/js/output-words.html delete mode 100644 askbot/skins/old/media/js/output-words.js delete mode 100644 askbot/skins/old/media/js/post.js delete mode 100644 askbot/skins/old/media/js/se_hilite.js delete mode 100644 askbot/skins/old/media/js/se_hilite_src.js delete mode 100644 askbot/skins/old/media/js/tag_selector.js delete mode 100644 askbot/skins/old/media/js/user.js delete mode 100644 askbot/skins/old/media/js/utils.js delete mode 100755 askbot/skins/old/media/js/wmd/images/wmd-buttons.png delete mode 100644 askbot/skins/old/media/js/wmd/showdown-min.js delete mode 100644 askbot/skins/old/media/js/wmd/showdown.js delete mode 100644 askbot/skins/old/media/js/wmd/wmd-min.js delete mode 100644 askbot/skins/old/media/js/wmd/wmd-test.html delete mode 100644 askbot/skins/old/media/js/wmd/wmd.css delete mode 100644 askbot/skins/old/media/js/wmd/wmd.js delete mode 100644 askbot/skins/old/media/style/auth.css delete mode 100644 askbot/skins/old/media/style/jquery.autocomplete.css delete mode 100644 askbot/skins/old/media/style/openid.css delete mode 100644 askbot/skins/old/media/style/prettify.css delete mode 100644 askbot/skins/old/media/style/style.css delete mode 100644 askbot/skins/old/templates/404.html delete mode 100644 askbot/skins/old/templates/404.jinja.html delete mode 100644 askbot/skins/old/templates/500.html delete mode 100644 askbot/skins/old/templates/500.jinja.html delete mode 100644 askbot/skins/old/templates/about.html delete mode 100644 askbot/skins/old/templates/answer_edit.html delete mode 100644 askbot/skins/old/templates/ask.html delete mode 100644 askbot/skins/old/templates/authopenid/changeemail.html delete mode 100644 askbot/skins/old/templates/authopenid/complete.html delete mode 100644 askbot/skins/old/templates/authopenid/confirm_email.txt delete mode 100644 askbot/skins/old/templates/authopenid/email_validation.txt delete mode 100644 askbot/skins/old/templates/authopenid/logout.html delete mode 100644 askbot/skins/old/templates/authopenid/macros.html delete mode 100644 askbot/skins/old/templates/authopenid/providers_javascript.html delete mode 100644 askbot/skins/old/templates/authopenid/signin.html delete mode 100644 askbot/skins/old/templates/authopenid/signup_with_password.html delete mode 100644 askbot/skins/old/templates/avatar/add.html delete mode 100644 askbot/skins/old/templates/avatar/change.html delete mode 100644 askbot/skins/old/templates/avatar/confirm_delete.html delete mode 100644 askbot/skins/old/templates/badge.html delete mode 100644 askbot/skins/old/templates/badges.html delete mode 100644 askbot/skins/old/templates/base.html delete mode 100644 askbot/skins/old/templates/blocks/README delete mode 100644 askbot/skins/old/templates/blocks/answer_edit_tips.html delete mode 100644 askbot/skins/old/templates/blocks/ask_form.html delete mode 100644 askbot/skins/old/templates/blocks/bottom_scripts.html delete mode 100644 askbot/skins/old/templates/blocks/editor_data.html delete mode 100644 askbot/skins/old/templates/blocks/footer.html delete mode 100644 askbot/skins/old/templates/blocks/forum_body.html delete mode 100644 askbot/skins/old/templates/blocks/header.html delete mode 100644 askbot/skins/old/templates/blocks/header_meta_links.html delete mode 100644 askbot/skins/old/templates/blocks/input_bar.html delete mode 100644 askbot/skins/old/templates/blocks/mandatory_tags_js.html delete mode 100644 askbot/skins/old/templates/blocks/paginator.html delete mode 100644 askbot/skins/old/templates/blocks/question_edit_tips.html delete mode 100644 askbot/skins/old/templates/blocks/system_messages.html delete mode 100644 askbot/skins/old/templates/blocks/tag_selector.html delete mode 100644 askbot/skins/old/templates/close.html delete mode 100644 askbot/skins/old/templates/faq.html delete mode 100644 askbot/skins/old/templates/faq_static.html delete mode 100644 askbot/skins/old/templates/feedback.html delete mode 100644 askbot/skins/old/templates/feedback_email.txt delete mode 100644 askbot/skins/old/templates/import_data.html delete mode 100644 askbot/skins/old/templates/instant_notification.html delete mode 100644 askbot/skins/old/templates/macros.html delete mode 100644 askbot/skins/old/templates/main_page.html delete mode 100644 askbot/skins/old/templates/main_page/content.html delete mode 100644 askbot/skins/old/templates/main_page/headline.html delete mode 100644 askbot/skins/old/templates/main_page/javascript.html delete mode 100644 askbot/skins/old/templates/main_page/nothing_found.html delete mode 100644 askbot/skins/old/templates/main_page/paginator.html delete mode 100644 askbot/skins/old/templates/main_page/sidebar.html delete mode 100644 askbot/skins/old/templates/main_page/tab_bar.html delete mode 100644 askbot/skins/old/templates/one_column_body.html delete mode 100644 askbot/skins/old/templates/privacy.html delete mode 100644 askbot/skins/old/templates/question.html delete mode 100644 askbot/skins/old/templates/question_edit.html delete mode 100644 askbot/skins/old/templates/question_retag.html delete mode 100644 askbot/skins/old/templates/reopen.html delete mode 100644 askbot/skins/old/templates/revisions.html delete mode 100644 askbot/skins/old/templates/subscribe_for_tags.html delete mode 100644 askbot/skins/old/templates/tags.html delete mode 100644 askbot/skins/old/templates/two_column_body.html delete mode 100644 askbot/skins/old/templates/user_profile/user.html delete mode 100644 askbot/skins/old/templates/user_profile/user_edit.html delete mode 100644 askbot/skins/old/templates/user_profile/user_email_subscriptions.html delete mode 100644 askbot/skins/old/templates/user_profile/user_favorites.html delete mode 100644 askbot/skins/old/templates/user_profile/user_inbox.html delete mode 100644 askbot/skins/old/templates/user_profile/user_info.html delete mode 100644 askbot/skins/old/templates/user_profile/user_moderate.html delete mode 100644 askbot/skins/old/templates/user_profile/user_network.html delete mode 100644 askbot/skins/old/templates/user_profile/user_recent.html delete mode 100644 askbot/skins/old/templates/user_profile/user_reputation.html delete mode 100644 askbot/skins/old/templates/user_profile/user_stats.html delete mode 100644 askbot/skins/old/templates/user_profile/user_tabs.html delete mode 100644 askbot/skins/old/templates/user_profile/user_votes.html delete mode 100644 askbot/skins/old/templates/user_profile/users_questions.html delete mode 100644 askbot/skins/old/templates/users.html diff --git a/askbot/doc/source/changelog.rst b/askbot/doc/source/changelog.rst index 0d2e05f7..c8bd18f2 100644 --- a/askbot/doc/source/changelog.rst +++ b/askbot/doc/source/changelog.rst @@ -7,6 +7,7 @@ Development version and to the question page, if user was reading the question it is still possible to override the ``next`` url parameter or just rely on django's ``LOGIN_REDIRECT_URL`` (Evgeny) +* Implemented retraction of offensive flags (Dejan Noveski) 0.7.32 (Current Version) ------------------------ diff --git a/askbot/skins/common/templates/widgets/search_bar.html b/askbot/skins/common/templates/widgets/search_bar.html index d5a7859b..5efe3860 100644 --- a/askbot/skins/common/templates/widgets/search_bar.html +++ b/askbot/skins/common/templates/widgets/search_bar.html @@ -21,12 +21,8 @@ {% endif %} {# class was searchInput #} .hint'); - var account_recovery_link = $('#account-recovery-form>.hint>span.link'); - var account_recovery_text_span = $('#account-recovery-form>.hint>span.text'); - var password_input_fields = $('#password-fs'); - var existing_login_methods_div = $('#existing-login-methods'); - var openid_submit_button = $('input[name=openid_login_with_extra_token]'); - var existing_login_methods = {}; - - var account_recovery_question_text = account_recovery_heading.html(); - var account_recovery_prompt_text = account_recovery_text_span.html(); - - var setup_click_handler = function(elements, handler_function){ - elements.unbind('click').click(handler_function); - }; - - var setup_enter_key_handler = function(elements, handler_function){ - elements.each( - function(index, element){ - $(element).unbind('keypress').keypress( - function(e){ - if ((e.which && e.which == 13)||(e.keyCode && e.keyCode == 13)){ - if (handler_function){ - return handler_function(); - } - else { - element.click(); - return false; - } - } - } - ); - } - ); - }; - - var setup_event_handlers = function(elements, handler_function){ - setup_click_handler(elements, handler_function); - setup_enter_key_handler(elements); - }; - - var get_provider_name = function(row_el){ - var row = $(row_el); - var name_span = row.find('.ab-provider-name'); - return provider_name = $.trim(name_span.html()); - }; - - var read_existing_login_methods = function(){ - $('.ab-provider-row').each( - function(i, provider_row){ - var provider_name = get_provider_name(provider_row); - existing_login_methods[provider_name] = true; - } - ); - }; - - var setup_login_method_deleters = function(){ - $('.ab-provider-row').each( - function(i, provider_row){ - var provider_name = get_provider_name(provider_row); - var remove_button = $( - provider_row - ).find('button'); - remove_button.click( - function(){ - var message = $.i18n._( - 'Are you sure you want to remove ' + - 'your {provider} login?' - ).replace( - '{provider}', - provider_name - ); - if (confirm(message)){ - $.ajax({ - type: 'POST', - url: authUrl + 'delete_login_method/',//url!!! - data: {provider_name: provider_name}, - success: function(data, text_status, xhr){ - $(provider_row).remove(); - delete existing_login_methods[provider_name]; - provider_count -=1; - if (provider_count < 0){ - provider_count === 0; - } - if (provider_count === 0){ - $('#ab-existing-login-methods').remove(); - $('#ab-show-login-methods').remove(); - $('h1').html( - $.i18n._("Please add one or more login methods.") - ); - $('#login-intro').html( - $.i18n._("You don\'t have a method to log in right now, please add one or more by clicking any of the icons below.") - ); - existing_login_methods = null; - } - } - }); - } - } - ); - } - ); - } - - var submit_login_with_password = function(){ - var username = $('#id_username'); - var password = $('#id_password'); - - if (username.val().length < 1){ - username.focus(); - return false; - } - if (password.val().length < 1){ - password.focus(); - return false; - } - return true; - }; - - var submit_change_password = function(){ - var newpass = $('#id_new_password'); - var newpass_retyped = $('#id_new_password_retyped'); - if (newpass.val().length < 1){ - newpass.focus(); - return false - } - if (newpass_retyped.val().length < 1){ - newpass_retyped.focus(); - return false; - } - if (newpass.val() !== newpass_retyped.val()){ - newpass_retyped.after( - '' + - $.i18n._('passwords do not match') + - '' - ); - newpass.val('').focus(); - newpass_retyped.val(''); - return false; - } - return true; - }; - - //validator, may be extended to check url for openid - var submit_with_extra_openid_token = function() { - if (openid_login_token_input.val().length < 1) { - openid_login_token_input.focus(); - return false; - } - return true; - }; - - var insert_login_list_enabler = function(){ - var enabler = $('#login-list-enabler'); - if (enabler.is('p#login-list-enabler')){ - enabler.show(); - } - else { - enabler = $( - '

' + - $.i18n._('Show/change current login methods') + - '

'); - setup_event_handlers( - enabler, - function(){ - if (askbot['settings']['signin_always_show_local_login'] === false){ - password_input_fields.hide(); - } - openid_login_token_input_fields.hide(); - enabler.hide(); - existing_login_methods_div.show(); - } - ); - existing_login_methods_div.after(enabler); - } - }; - - var reset_password_input_fields = function(){ - if (userIsAuthenticated){ - $('#id_new_password').val(''); - $('#id_new_password_retyped').val(''); - } - else { - $('#id_username').val(''); - $('#id_password').val(''); - } - }; - - var reset_form = function(){ - openid_login_token_input_fields.hide(); - if (askbot['settings']['signin_always_show_local_login'] === false){ - password_input_fields.hide(); - } - reset_password_input_fields(); - $('.error').remove(); - if (userIsAuthenticated === false){ - email_input_fields.hide(); - account_recovery_heading.hide(); - account_recovery_link.show(); - account_recovery_hint.show(); - $('#account-recovery-form>p.hint').css('margin-top','10px'); - account_recovery_text_span.html(account_recovery_question_text).show(); - } - else { - if (existing_login_methods !== null){ - existing_login_methods_div.hide(); - insert_login_list_enabler(); - } - } - }; - - var set_provider_name = function(element){ - var provider_name = element.attr('name'); - provider_name_input.val(provider_name); - }; - - var show_openid_input_fields = function(provider_name){ - reset_form(); - var token_name = extra_token_name[provider_name] - if (userIsAuthenticated){ - var heading_text = $.i18n._( - 'Please enter your {token_name}, then proceed' - ); - $('#openid-heading').html( - heading_text.replace('{token_name}', token_name) - ); - var button_text = $.i18n._('Connect your {provider_name} account to {site}'); - button_text = button_text.replace( - '{provider_name}', provider_name - ).replace( - '{site}', siteName - ); - openid_submit_button.val(button_text); - } - else { - $('#openid-heading>span').html(token_name); - } - openid_login_token_input_fields.show(); - openid_login_token_input.focus(); - }; - - var start_simple_login = function() { - //$('#openid_form .providers td').removeClass('highlight'); - //$li.addClass('highlight'); - set_provider_name($(this)); - signin_form.submit(); - return true; - }; - - var start_login_with_extra_openid_token = function() { - show_openid_input_fields($(this).attr('name')); - set_provider_name($(this)); - - setup_enter_key_handler( - openid_login_token_input, - function(){ - openid_submit_button.click(); - return false; - } - ); - - setup_event_handlers( - openid_submit_button, - function(){ - signin_form.unbind( - 'submit' - ).submit( - submit_with_extra_openid_token - ); - } - ); - return false; - }; - - var start_facebook_login = function(){ - set_provider_name($(this)); - if (typeof FB != 'undefined'){ - FB.getLoginStatus(function(response){ - if (response.authResponse){ - signin_form.submit(); - } - else { - if (FB.getSession()){ - signin_form.submit(); - } - FB.login(); - } - }); - } - return false; - }; - - var start_password_login_or_change = function(){ - //called upon clicking on one of the password login buttons - reset_form(); - set_provider_name($(this)); - var provider_name = $(this).attr('name'); - return setup_password_login_or_change(provider_name); - }; - - var init_always_visible_password_login = function(){ - reset_form(); - //will break wordpress and ldap - provider_name_input.val('local'); - setup_password_login_or_change('local'); - }; - - var setup_password_login_or_change = function(provider_name){ - var token_name = extra_token_name[provider_name] - var password_action_input = $('input[name=password_action]'); - if (userIsAuthenticated === true){ - var password_button = $('input[name=change_password]'); - var submit_action = submit_change_password; - if (existing_login_methods && existing_login_methods[provider_name]){ - var change_pw_heading = 'Change your {provider} password'; - var password_heading_text = $.i18n._(change_pw_heading); - var password_button_text = $.i18n._('Change password'); - } - else { - var create_pw_heading = 'Create a password for {provider}'; - var password_heading_text = $.i18n._(create_pw_heading); - var password_button_text = $.i18n._('Create password'); - } - if (provider_name === 'local'){ - var provider_cleaned_name = siteName; - } - else { - var provider_cleaned_name = provider_name; - } - $('#password-heading').html( - password_heading_text.replace('{provider}', provider_cleaned_name) - ) - password_button.val(password_button_text); - password_action_input.val('change_password'); - var focus_input = $('#id_new_password'); - var submittable_input = $('#id_new_password_retyped'); - } - else{ - $('#password-heading>span').html(token_name); - var password_button = $('input[name=login_with_password]'); - var submit_action = submit_login_with_password; - var create_pw_link = $('a.create-password-account') - if (create_pw_link.length > 0){ - create_pw_link.html($.i18n._('Create a password-protected account')); - var url = create_pw_link.attr('href'); - if (url.indexOf('?') !== -1){ - url = url.replace(/\?.*$/,'?login_provider=' + provider_name); - } - else{ - url += '?login_provider=' + provider_name; - } - create_pw_link.attr('href', url); - } - password_action_input.val('login'); - var focus_input = $('#id_username'); - var submittable_input = $('#id_password'); - } - password_input_fields.show(); - focus_input.focus(); - - var submit_password_login = function(){ - signin_form.unbind('submit').submit(submit_action); - }; - - setup_enter_key_handler( - submittable_input, - function() { - password_button.click(); - return false; - } - ); - setup_event_handlers(password_button, submit_password_login); - return false; - }; - - var start_account_recovery = function(){ - reset_form(); - account_recovery_hint.hide(); - account_recovery_heading.css('margin-bottom', '0px'); - account_recovery_heading.html(account_recovery_prompt_text).show(); - email_input_fields.show(); - $('#id_email').focus(); - }; - - var clear_password_fields = function(){ - $('#id_password').val(''); - $('#id_new_password').val(''); - $('#id_new_password_retyped').val(''); - }; - - var setup_default_handlers = function(){ - setup_event_handlers( - signin_page.find('input.openid-direct'), - start_simple_login - ); - - setup_event_handlers( - signin_page.find('input.openid-username'), - start_login_with_extra_openid_token - ); - - setup_event_handlers( - signin_page.find('input.openid-generic'), - start_login_with_extra_openid_token - ); - - setup_event_handlers( - signin_page.find('input.facebook'), - start_facebook_login - ); - - setup_event_handlers( - signin_page.find('input.oauth'), - start_simple_login - ); - - setup_event_handlers( - signin_page.find('input.password'), - start_password_login_or_change - ); - setup_event_handlers( - signin_page.find('input.wordpress_site'), - start_password_login_or_change - ); - - setup_event_handlers(account_recovery_link, start_account_recovery); - - if (userIsAuthenticated){ - read_existing_login_methods(); - setup_login_method_deleters(); - } - }; - - setup_default_handlers(); - if (askbot['settings']['signin_always_show_local_login'] === true){ - init_always_visible_password_login(); - } - clear_password_fields(); - return this; -}; diff --git a/askbot/skins/old/media/jquery-openid/openid.css b/askbot/skins/old/media/jquery-openid/openid.css deleted file mode 100644 index da541e45..00000000 --- a/askbot/skins/old/media/jquery-openid/openid.css +++ /dev/null @@ -1,38 +0,0 @@ -div#login-icons {margin:10px 0 0 0;padding:0} -ul.login-icons {width: 450px; margin:0;padding:0;text-align:left; list-style-type:none; display:block;} -ul.login-icons li {display:inline;} -ul.large input {height: 40px; width: 90px;border:1px solid #ccc;margin:0 5px 5px 0;} -.openid-signin h2 {margin-top:15px;} -.openid-signin h2#account-recovery-heading {margin-bottom:2px;} -#account-recovery-form p.hint a {color:blue; text-decoration: underline;} -.openid-signin fieldset { border-style:none;margin:0;padding:0;} -.openid-signin p {margin:0;padding:0}; -.openid-signin p.hint {color: #555;} -.openid-signin #password-fs label {width:100px;margin-top:5px;text-align:left;} -.openid-signin #password-fs .hint {margin-bottom:5px} -#password-fs a {padding-left:5px;} -/*#signin-form #account-recovery-form input {cursor:pointer;} -#signin-form #account-recovery-form input.text {cursor:default;}*/ - -table.login { text-align: right;} - -.openid-signin .submit-b { - cursor: pointer; /*letter-spacing:1px;*/ - margin: 0 0 2px 0; - vertical-align: middle; -} - -.openid-signin .highlight { -moz-border-radius:4px; -webkit-border-radius:4px; background-color: #FD6} - -ul.providers { - display: block; -} - -.openid-signin th { - color: #555; - font-weight: normal; -} - -.openid-signin .ab-provider-name { - font-weight: bold; -} diff --git a/askbot/skins/old/media/js/autocompleter.js b/askbot/skins/old/media/js/autocompleter.js deleted file mode 100644 index a7c54315..00000000 --- a/askbot/skins/old/media/js/autocompleter.js +++ /dev/null @@ -1,766 +0,0 @@ -/** - * AutoCompleter Object, refactored closure style from - * jQuery autocomplete plugin - * @param {Object=} options Settings - * @constructor - */ -var AutoCompleter = function(options) { - - /** - * Default options for autocomplete plugin - */ - var defaults = { - autocompleteMultiple: true, - multipleSeparator: ' ',//a single character - inputClass: 'acInput', - loadingClass: 'acLoading', - resultsClass: 'acResults', - selectClass: 'acSelect', - queryParamName: 'q', - limitParamName: 'limit', - extraParams: {}, - lineSeparator: '\n', - cellSeparator: '|', - minChars: 2, - maxItemsToShow: 10, - delay: 400, - useCache: true, - maxCacheLength: 10, - matchSubset: true, - matchCase: false, - matchInside: true, - mustMatch: false, - preloadData: false, - selectFirst: false, - stopCharRegex: /\s+/, - selectOnly: false, - formatItem: null, // TBD - onItemSelect: false, - autoFill: false, - filterResults: true, - sortResults: true, - sortFunction: false, - onNoMatch: false - }; - - /** - * Options dictionary - * @type Object - * @private - */ - this.options = $.extend({}, defaults, options); - - /** - * Cached data - * @type Object - * @private - */ - this.cacheData_ = {}; - - /** - * Number of cached data items - * @type number - * @private - */ - this.cacheLength_ = 0; - - /** - * Class name to mark selected item - * @type string - * @private - */ - this.selectClass_ = 'jquery-autocomplete-selected-item'; - - /** - * Handler to activation timeout - * @type ?number - * @private - */ - this.keyTimeout_ = null; - - /** - * Last key pressed in the input field (store for behavior) - * @type ?number - * @private - */ - this.lastKeyPressed_ = null; - - /** - * Last value processed by the autocompleter - * @type ?string - * @private - */ - this.lastProcessedValue_ = null; - - /** - * Last value selected by the user - * @type ?string - * @private - */ - this.lastSelectedValue_ = null; - - /** - * Is this autocompleter active? - * @type boolean - * @private - */ - this.active_ = false; - - /** - * Is it OK to finish on blur? - * @type boolean - * @private - */ - this.finishOnBlur_ = true; - - this.options.minChars = parseInt(this.options.minChars, 10); - if (isNaN(this.options.minChars) || this.options.minChars < 1) { - this.options.minChars = 2; - } - - this.options.maxItemsToShow = parseInt(this.options.maxItemsToShow, 10); - if (isNaN(this.options.maxItemsToShow) || this.options.maxItemsToShow < 1) { - this.options.maxItemsToShow = 10; - } - - this.options.maxCacheLength = parseInt(this.options.maxCacheLength, 10); - if (isNaN(this.options.maxCacheLength) || this.options.maxCacheLength < 1) { - this.options.maxCacheLength = 10; - } - - if (this.options['preloadData'] === true){ - this.fetchRemoteData('', function(){}); - } -}; -inherits(AutoCompleter, WrappedElement); - -AutoCompleter.prototype.decorate = function(element){ - - /** - * Init DOM elements repository - */ - this._element = element; - - /** - * Switch off the native autocomplete - */ - this._element.attr('autocomplete', 'off'); - - /** - * Create DOM element to hold results - */ - this._results = $('
').hide(); - if (this.options.resultsClass) { - this._results.addClass(this.options.resultsClass); - } - this._results.css({ - position: 'absolute' - }); - $('body').append(this._results); - - this.setEventHandlers(); -}; - -AutoCompleter.prototype.setEventHandlers = function(){ - /** - * Shortcut to self - */ - var self = this; - - /** - * Attach keyboard monitoring to $elem - */ - self._element.keydown(function(e) { - self.lastKeyPressed_ = e.keyCode; - switch(self.lastKeyPressed_) { - - case 38: // up - e.preventDefault(); - if (self.active_) { - self.focusPrev(); - } else { - self.activate(); - } - return false; - break; - - case 40: // down - e.preventDefault(); - if (self.active_) { - self.focusNext(); - } else { - self.activate(); - } - return false; - break; - - case 9: // tab - case 13: // return - if (self.active_) { - e.preventDefault(); - self.selectCurrent(); - return false; - } - break; - - case 27: // escape - if (self.active_) { - e.preventDefault(); - self.finish(); - return false; - } - break; - - default: - self.activate(); - - } - }); - self._element.blur(function() { - if (self.finishOnBlur_) { - setTimeout(function() { self.finish(); }, 200); - } - }); -}; - -AutoCompleter.prototype.position = function() { - var offset = this._element.offset(); - this._results.css({ - top: offset.top + this._element.outerHeight(), - left: offset.left - }); -}; - -AutoCompleter.prototype.cacheRead = function(filter) { - var filterLength, searchLength, search, maxPos, pos; - if (this.options.useCache) { - filter = String(filter); - filterLength = filter.length; - if (this.options.matchSubset) { - searchLength = 1; - } else { - searchLength = filterLength; - } - while (searchLength <= filterLength) { - if (this.options.matchInside) { - maxPos = filterLength - searchLength; - } else { - maxPos = 0; - } - pos = 0; - while (pos <= maxPos) { - search = filter.substr(0, searchLength); - if (this.cacheData_[search] !== undefined) { - return this.cacheData_[search]; - } - pos++; - } - searchLength++; - } - } - return false; -}; - -AutoCompleter.prototype.cacheWrite = function(filter, data) { - if (this.options.useCache) { - if (this.cacheLength_ >= this.options.maxCacheLength) { - this.cacheFlush(); - } - filter = String(filter); - if (this.cacheData_[filter] !== undefined) { - this.cacheLength_++; - } - return this.cacheData_[filter] = data; - } - return false; -}; - -AutoCompleter.prototype.cacheFlush = function() { - this.cacheData_ = {}; - this.cacheLength_ = 0; -}; - -AutoCompleter.prototype.callHook = function(hook, data) { - var f = this.options[hook]; - if (f && $.isFunction(f)) { - return f(data, this); - } - return false; -}; - -AutoCompleter.prototype.activate = function() { - var self = this; - var activateNow = function() { - self.activateNow(); - }; - var delay = parseInt(this.options.delay, 10); - if (isNaN(delay) || delay <= 0) { - delay = 250; - } - if (this.keyTimeout_) { - clearTimeout(this.keyTimeout_); - } - this.keyTimeout_ = setTimeout(activateNow, delay); -}; - -AutoCompleter.prototype.activateNow = function() { - var value = this.getValue(); - if (value !== this.lastProcessedValue_ && value !== this.lastSelectedValue_) { - if (value.length >= this.options.minChars) { - this.active_ = true; - this.lastProcessedValue_ = value; - this.fetchData(value); - } - } -}; - -AutoCompleter.prototype.fetchData = function(value) { - if (this.options.data) { - this.filterAndShowResults(this.options.data, value); - } else { - var self = this; - this.fetchRemoteData(value, function(remoteData) { - self.filterAndShowResults(remoteData, value); - }); - } -}; - -AutoCompleter.prototype.fetchRemoteData = function(filter, callback) { - var data = this.cacheRead(filter); - if (data) { - callback(data); - } else { - var self = this; - if (this._element){ - this._element.addClass(this.options.loadingClass); - } - var ajaxCallback = function(data) { - var parsed = false; - if (data !== false) { - parsed = self.parseRemoteData(data); - self.options.data = parsed;//cache data forever - E.F. - self.cacheWrite(filter, parsed); - } - if (self._element){ - self._element.removeClass(self.options.loadingClass); - } - callback(parsed); - }; - $.ajax({ - url: this.makeUrl(filter), - success: ajaxCallback, - error: function() { - ajaxCallback(false); - } - }); - } -}; - -AutoCompleter.prototype.setOption = function(name, value){ - this.options[name] = value; -}; - -AutoCompleter.prototype.setExtraParam = function(name, value) { - var index = $.trim(String(name)); - if (index) { - if (!this.options.extraParams) { - this.options.extraParams = {}; - } - if (this.options.extraParams[index] !== value) { - this.options.extraParams[index] = value; - this.cacheFlush(); - } - } -}; - -AutoCompleter.prototype.makeUrl = function(param) { - var self = this; - var url = this.options.url; - var params = $.extend({}, this.options.extraParams); - // If options.queryParamName === false, append query to url - // instead of using a GET parameter - if (this.options.queryParamName === false) { - url += encodeURIComponent(param); - } else { - params[this.options.queryParamName] = param; - } - - if (this.options.limitParamName && this.options.maxItemsToShow) { - params[this.options.limitParamName] = this.options.maxItemsToShow; - } - - var urlAppend = []; - $.each(params, function(index, value) { - urlAppend.push(self.makeUrlParam(index, value)); - }); - if (urlAppend.length) { - url += url.indexOf('?') == -1 ? '?' : '&'; - url += urlAppend.join('&'); - } - return url; -}; - -AutoCompleter.prototype.makeUrlParam = function(name, value) { - return String(name) + '=' + encodeURIComponent(value); -}; - -/** - * Sanitize CR and LF, then split into lines - */ -AutoCompleter.prototype.splitText = function(text) { - return String(text).replace(/(\r\n|\r|\n)/g, '\n').split(this.options.lineSeparator); -}; - -AutoCompleter.prototype.parseRemoteData = function(remoteData) { - var value, lines, i, j, data; - var results = []; - var lines = this.splitText(remoteData); - for (i = 0; i < lines.length; i++) { - var line = lines[i].split(this.options.cellSeparator); - data = []; - for (j = 0; j < line.length; j++) { - data.push(unescape(line[j])); - } - value = data.shift(); - results.push({ value: unescape(value), data: data }); - } - return results; -}; - -AutoCompleter.prototype.filterAndShowResults = function(results, filter) { - this.showResults(this.filterResults(results, filter), filter); -}; - -AutoCompleter.prototype.filterResults = function(results, filter) { - - var filtered = []; - var value, data, i, result, type, include; - var regex, pattern, testValue; - - for (i = 0; i < results.length; i++) { - result = results[i]; - type = typeof result; - if (type === 'string') { - value = result; - data = {}; - } else if ($.isArray(result)) { - value = result[0]; - data = result.slice(1); - } else if (type === 'object') { - value = result.value; - data = result.data; - } - value = String(value); - if (value > '') { - if (typeof data !== 'object') { - data = {}; - } - if (this.options.filterResults) { - pattern = String(filter); - testValue = String(value); - if (!this.options.matchCase) { - pattern = pattern.toLowerCase(); - testValue = testValue.toLowerCase(); - } - include = testValue.indexOf(pattern); - if (this.options.matchInside) { - include = include > -1; - } else { - include = include === 0; - } - } else { - include = true; - } - if (include) { - filtered.push({ value: value, data: data }); - } - } - } - - if (this.options.sortResults) { - filtered = this.sortResults(filtered, filter); - } - - if (this.options.maxItemsToShow > 0 && this.options.maxItemsToShow < filtered.length) { - filtered.length = this.options.maxItemsToShow; - } - - return filtered; - -}; - -AutoCompleter.prototype.sortResults = function(results, filter) { - var self = this; - var sortFunction = this.options.sortFunction; - if (!$.isFunction(sortFunction)) { - sortFunction = function(a, b, f) { - return self.sortValueAlpha(a, b, f); - }; - } - results.sort(function(a, b) { - return sortFunction(a, b, filter); - }); - return results; -}; - -AutoCompleter.prototype.sortValueAlpha = function(a, b, filter) { - a = String(a.value); - b = String(b.value); - if (!this.options.matchCase) { - a = a.toLowerCase(); - b = b.toLowerCase(); - } - if (a > b) { - return 1; - } - if (a < b) { - return -1; - } - return 0; -}; - -AutoCompleter.prototype.showResults = function(results, filter) { - var self = this; - var $ul = $('
    '); - var i, result, $li, extraWidth, first = false, $first = false; - var numResults = results.length; - for (i = 0; i < numResults; i++) { - result = results[i]; - $li = $('
  • ' + this.showResult(result.value, result.data) + '
  • '); - $li.data('value', result.value); - $li.data('data', result.data); - $li.click(function() { - var $this = $(this); - self.selectItem($this); - }).mousedown(function() { - self.finishOnBlur_ = false; - }).mouseup(function() { - self.finishOnBlur_ = true; - }); - $ul.append($li); - if (first === false) { - first = String(result.value); - $first = $li; - $li.addClass(this.options.firstItemClass); - } - if (i == numResults - 1) { - $li.addClass(this.options.lastItemClass); - } - } - - // Alway recalculate position before showing since window size or - // input element location may have changed. This fixes #14 - this.position(); - - this._results.html($ul).show(); - extraWidth = this._results.outerWidth() - this._results.width(); - this._results.width(this._element.outerWidth() - extraWidth); - $('li', this._results).hover( - function() { self.focusItem(this); }, - function() { /* void */ } - ); - if (this.autoFill(first, filter)) { - this.focusItem($first); - } -}; - -AutoCompleter.prototype.showResult = function(value, data) { - if ($.isFunction(this.options.showResult)) { - return this.options.showResult(value, data); - } else { - return value; - } -}; - -AutoCompleter.prototype.autoFill = function(value, filter) { - var lcValue, lcFilter, valueLength, filterLength; - if (this.options.autoFill && this.lastKeyPressed_ != 8) { - lcValue = String(value).toLowerCase(); - lcFilter = String(filter).toLowerCase(); - valueLength = value.length; - filterLength = filter.length; - if (lcValue.substr(0, filterLength) === lcFilter) { - this._element.val(value); - this.selectRange(filterLength, valueLength); - return true; - } - } - return false; -}; - -AutoCompleter.prototype.focusNext = function() { - this.focusMove(+1); -}; - -AutoCompleter.prototype.focusPrev = function() { - this.focusMove(-1); -}; - -AutoCompleter.prototype.focusMove = function(modifier) { - var i, $items = $('li', this._results); - modifier = parseInt(modifier, 10); - for (var i = 0; i < $items.length; i++) { - if ($($items[i]).hasClass(this.selectClass_)) { - this.focusItem(i + modifier); - return; - } - } - this.focusItem(0); -}; - -AutoCompleter.prototype.focusItem = function(item) { - var $item, $items = $('li', this._results); - if ($items.length) { - $items.removeClass(this.selectClass_).removeClass(this.options.selectClass); - if (typeof item === 'number') { - item = parseInt(item, 10); - if (item < 0) { - item = 0; - } else if (item >= $items.length) { - item = $items.length - 1; - } - $item = $($items[item]); - } else { - $item = $(item); - } - if ($item) { - $item.addClass(this.selectClass_).addClass(this.options.selectClass); - } - } -}; - -AutoCompleter.prototype.selectCurrent = function() { - var $item = $('li.' + this.selectClass_, this._results); - if ($item.length == 1) { - this.selectItem($item); - } else { - this.finish(); - } -}; - -AutoCompleter.prototype.selectItem = function($li) { - var value = $li.data('value'); - var data = $li.data('data'); - var displayValue = this.displayValue(value, data); - this.lastProcessedValue_ = displayValue; - this.lastSelectedValue_ = displayValue; - - this.setValue(displayValue); - - this.setCaret(displayValue.length); - this.callHook('onItemSelect', { value: value, data: data }); - this.finish(); -}; - -/** - * @return {boolean} true if the symbol matches something that is - * considered content and false otherwise - * @param {string} symbol - a single char string - */ -AutoCompleter.prototype.isContentChar = function(symbol){ - if (symbol.match(this.options['stopCharRegex'])){ - return false; - } else if (symbol === this.options['multipleSeparator']){ - return false; - } else { - return true; - } -}; - -/** - * takes value from the input box - * and saves _selection_start and _selection_end coordinates - * respects settings autocompleteMultiple and - * multipleSeparator - * @return {string} the current word in the - * autocompletable word - */ -AutoCompleter.prototype.getValue = function(){ - var sel = this._element.getSelection(); - var text = this._element.val(); - var pos = sel.start;//estimated start - //find real start - var start = pos; - for (cpos = pos; cpos >= 0; cpos = cpos - 1){ - if (cpos === text.length){ - continue; - } - var symbol = text.charAt(cpos); - if (!this.isContentChar(symbol)){ - break; - } - start = cpos; - } - //find real end - var end = pos; - for (cpos = pos; cpos < text.length; cpos = cpos + 1){ - if (cpos === 0){ - continue; - } - var symbol = text.charAt(cpos); - if (!this.isContentChar(symbol)){ - break; - } - end = cpos; - } - this._selection_start = start; - this._selection_end = end; - return text.substring(start, end); -} - -/** - * sets value of the input box - * by replacing the previous selection - * with the value from the autocompleter - */ -AutoCompleter.prototype.setValue = function(val){ - var prefix = this._element.val().substring(0, this._selection_start); - var postfix = this._element.val().substring(this._selection_end + 1); - this._element.val(prefix + val + postfix); -}; - -AutoCompleter.prototype.displayValue = function(value, data) { - if ($.isFunction(this.options.displayValue)) { - return this.options.displayValue(value, data); - } else { - return value; - } -}; - -AutoCompleter.prototype.finish = function() { - if (this.keyTimeout_) { - clearTimeout(this.keyTimeout_); - } - if (this._element.val() !== this.lastSelectedValue_) { - if (this.options.mustMatch) { - this._element.val(''); - } - this.callHook('onNoMatch'); - } - this._results.hide(); - this.lastKeyPressed_ = null; - this.lastProcessedValue_ = null; - if (this.active_) { - this.callHook('onFinish'); - } - this.active_ = false; -}; - -AutoCompleter.prototype.selectRange = function(start, end) { - var input = this._element.get(0); - if (input.setSelectionRange) { - input.focus(); - input.setSelectionRange(start, end); - } else if (this.createTextRange) { - var range = this.createTextRange(); - range.collapse(true); - range.moveEnd('character', end); - range.moveStart('character', start); - range.select(); - } -}; - -AutoCompleter.prototype.setCaret = function(pos) { - this.selectRange(pos, pos); -}; - diff --git a/askbot/skins/old/media/js/compress.bat b/askbot/skins/old/media/js/compress.bat deleted file mode 100644 index 53d72588..00000000 --- a/askbot/skins/old/media/js/compress.bat +++ /dev/null @@ -1,5 +0,0 @@ -#java -jar yuicompressor-2.4.2.jar --type js --charset utf-8 wmd\wmd.js -o wmd\wmd-min.js -#java -jar yuicompressor-2.4.2.jar --type js --charset utf-8 wmd\showdown.js -o wmd\showdown-min.js -#java -jar yuicompressor-2.4.2.jar --type js --charset utf-8 post.js -o post.pack.js -java -jar yuicompressor-2.4.2.jar --type js --charset utf-8 se_hilite_src.js -o se_hilite.js -pause diff --git a/askbot/skins/old/media/js/editor.js b/askbot/skins/old/media/js/editor.js deleted file mode 100644 index f5b1e2af..00000000 --- a/askbot/skins/old/media/js/editor.js +++ /dev/null @@ -1,75 +0,0 @@ -๏ปฟ/* - jQuery TextAreaResizer plugin - Created on 17th January 2008 by Ryan O'Dell - Version 1.0.4 -*/(function($){var textarea,staticOffset;var iLastMousePos=0;var iMin=32;var grip;$.fn.TextAreaResizer=function(){return this.each(function(){textarea=$(this).addClass('processed'),staticOffset=null;$(this).wrap('
    ').parent().append($('
    ').bind("mousedown",{el:this},startDrag));var grippie=$('div.grippie',$(this).parent())[0];grippie.style.marginRight=(grippie.offsetWidth-$(this)[0].offsetWidth)+'px'})};function startDrag(e){textarea=$(e.data.el);textarea.blur();iLastMousePos=mousePosition(e).y;staticOffset=textarea.height()-iLastMousePos;textarea.css('opacity',0.25);$(document).mousemove(performDrag).mouseup(endDrag);return false}function performDrag(e){var iThisMousePos=mousePosition(e).y;var iMousePos=staticOffset+iThisMousePos;if(iLastMousePos>=(iThisMousePos)){iMousePos-=5}iLastMousePos=iThisMousePos;iMousePos=Math.max(iMin,iMousePos);textarea.height(iMousePos+'px');if(iMousePosoptions.captureLength&&elTxt.toUpperCase()!=timer.text)||(override&&elTxt.length>options.captureLength)){timer.text=elTxt.toUpperCase();timer.cb(elTxt)}};function watchElement(elem){if(elem.type.toUpperCase()=="TEXT"||elem.nodeName.toUpperCase()=="TEXTAREA"){var timer={timer:null,text:jQuery(elem).val().toUpperCase(),cb:options.callback,el:elem,wait:options.wait};if(options.highlight){jQuery(elem).focus(function(){this.select()})}var startWatch=function(evt){var timerWait=timer.wait;var overrideBool=false;if(evt.keyCode==13&&this.type.toUpperCase()=="TEXT"){timerWait=1;overrideBool=true}var timerCallbackFx=function(){checkElement(timer,overrideBool)};clearTimeout(timer.timer);timer.timer=setTimeout(timerCallbackFx,timerWait)};jQuery(elem).keydown(startWatch)}};return this.each(function(index){watchElement(this)})}})(jQuery); -/* -Ajax upload -*/jQuery.extend({createUploadIframe:function(d,b){var a="jUploadFrame"+d;if(window.ActiveXObject){var c=document.createElement('