diff options
author | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2011-03-09 02:44:53 -0500 |
---|---|---|
committer | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2011-03-09 02:44:53 -0500 |
commit | 747b8ba514511523f12c551d3c2492586767cd4d (patch) | |
tree | dbcbfcc263db199bcc1bb8acde3a84be44a20290 | |
parent | 4ec71727db6210e020ba783febbdc7e20a769115 (diff) | |
download | askbot-747b8ba514511523f12c551d3c2492586767cd4d.tar.gz askbot-747b8ba514511523f12c551d3c2492586767cd4d.tar.bz2 askbot-747b8ba514511523f12c551d3c2492586767cd4d.zip |
made tags on the questions save in the same order as entered
-rw-r--r-- | askbot/forms.py | 18 | ||||
-rw-r--r-- | askbot/skins/default/media/js/utils.js | 11 |
2 files changed, 22 insertions, 7 deletions
diff --git a/askbot/forms.py b/askbot/forms.py index d2369c69..223574c6 100644 --- a/askbot/forms.py +++ b/askbot/forms.py @@ -170,23 +170,29 @@ class TagNamesField(forms.CharField): entered_tags.append(tag) #normalize character case of tags + cleaned_entered_tags = list() if askbot_settings.FORCE_LOWERCASE_TAGS: - entered_tags = set([name.lower() for name in entered_tags]) + #a simpler way to handle tags - just lowercase thew all + for name in entered_tags: + lowercased_name = name.lower() + if lowercased_name not in cleaned_entered_tags: + cleaned_entered_tags.append(lowercased_name) else: #make names of tags in the input to agree with the database - cleaned_entered_tags = set() for entered_tag in entered_tags: try: #looks like we have to load tags one-by one + #because we need tag name cases to be the same + #as those stored in the database stored_tag = models.Tag.objects.get( name__iexact = entered_tag ) - cleaned_entered_tags.add(stored_tag.name) + if stored_tag.name not in cleaned_entered_tags: + cleaned_entered_tags.append(stored_tag.name) except models.Tag.DoesNotExist: - cleaned_entered_tags.add(entered_tag) - entered_tags = list(cleaned_entered_tags) + cleaned_entered_tags.append(entered_tag) - return u' '.join(entered_tags) + return u' '.join(cleaned_entered_tags) class WikiField(forms.BooleanField): def __init__(self, *args, **kwargs): diff --git a/askbot/skins/default/media/js/utils.js b/askbot/skins/default/media/js/utils.js index 2d59abd2..2b95113a 100644 --- a/askbot/skins/default/media/js/utils.js +++ b/askbot/skins/default/media/js/utils.js @@ -8,7 +8,16 @@ var copyAltToTitle = function(sel){ }; var getUniqueWords = function(value){ - return $.unique($.trim(value).split(/\s+/)); + var words = $.trim(value).split(/\s+/); + var uniques = new Object(); + var out = new Array(); + $.each(words, function(idx, item){ + if (!(item in uniques)){ + uniques[item] = 1; + out.push(item); + }; + }); + return out; }; var showMessage = function(element, msg, where) { |