From e7c932c927ce384de6762d0a4ba33e57ba2aceab Mon Sep 17 00:00:00 2001 From: Adolfo Fitoria Date: Wed, 19 Sep 2012 15:48:26 -0600 Subject: List groups alphabetically in People&Groups header --- askbot/context.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/askbot/context.py b/askbot/context.py index 1828ae11..48c1cf3b 100644 --- a/askbot/context.py +++ b/askbot/context.py @@ -59,14 +59,22 @@ def application_settings(request): } if askbot_settings.GROUPS_ENABLED: - groups = models.Group.objects.exclude_personal() + + def _get_group_url(group): + group_slug = slugify(group['name']) + return reverse('users_by_group', + kwargs={'group_id': group['id'], + 'group_slug': group_slug}) + + + global_group = models.tag.get_global_group() + groups = models.Group.objects.exclude_personal().exclude(id=global_group.id).order_by('name') groups = groups.values('id', 'name') - group_list = [] + group_list = [{'link': _get_group_url({'name': global_group.name, + 'id': global_group.id}), + 'name': global_group.name},] for group in groups: - group_slug = slugify(group['name']) - link = reverse('users_by_group', - kwargs={'group_id': group['id'], - 'group_slug': group_slug}) + link = _get_group_url(group) group_list.append({'name': group['name'], 'link': link}) context['group_list'] = simplejson.dumps(group_list) -- cgit v1.2.3-1-g7c22 From f982936c5510d064ed11cc4d89048c33c9470bc5 Mon Sep 17 00:00:00 2001 From: Adolfo Fitoria Date: Thu, 20 Sep 2012 13:16:03 -0600 Subject: fixed group dropdown javascript to add new group in alphabetical order --- askbot/skins/common/media/js/utils.js | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/askbot/skins/common/media/js/utils.js b/askbot/skins/common/media/js/utils.js index 42f19d5b..5e6ed048 100644 --- a/askbot/skins/common/media/js/utils.js +++ b/askbot/skins/common/media/js/utils.js @@ -1689,14 +1689,29 @@ GroupDropdown.prototype.decorate = function(element){ } }; -GroupDropdown.prototype.prependGroup = function(group_name, url){ - new_group_li = this.makeElement('li'); +GroupDropdown.prototype.insertGroup = function(group_name, url){ + var new_group_li = this.makeElement('li'); new_group_a = this.makeElement('a'); new_group_a.attr('href', url); new_group_a.attr('class', 'group-name'); new_group_a.text(group_name); new_group_li.append(new_group_a); - this._element.prepend(new_group_li); + links_array = this._element.find('a') + for (i=1; i < links_array.length; i++){ + var value = links_array[i]; + if (value.text < group_name){ + if (i == links_array.length - 1){ + new_group_li.insertAfter(this._element.find('li')[i-1]) + break; + } else{ + continue; + } + } else { + new_group_li.insertAfter(this._element.find('li')[i-1]) + break; + } + + } }; GroupDropdown.prototype._add_group_handler = function(group_name){ @@ -1712,7 +1727,7 @@ GroupDropdown.prototype._add_group_handler = function(group_name){ data: {group: group_name}, success: function(data){ if (data.success){ - self.prependGroup(data.group_name, data.url); + self.insertGroup(data.group_name, data.url); self._input_box_element.hide(); self._add_link.show(); return true; -- cgit v1.2.3-1-g7c22 From 47a4bc923966046e6d3e76d4dcf0bfd55f2c4f66 Mon Sep 17 00:00:00 2001 From: Adolfo Fitoria Date: Fri, 21 Sep 2012 18:03:37 -0600 Subject: Fix for postgressql bug in order_by clauses when postgres have no correct locale setting: more info: http://scottbarnham.com/blog/2007/11/20/case-insensitive-ordering-with-django-and-postgresql/ --- askbot/context.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/askbot/context.py b/askbot/context.py index 48c1cf3b..812805e6 100644 --- a/askbot/context.py +++ b/askbot/context.py @@ -68,7 +68,13 @@ def application_settings(request): global_group = models.tag.get_global_group() - groups = models.Group.objects.exclude_personal().exclude(id=global_group.id).order_by('name') + + if 'postgresql_psycopg2' in askbot.get_database_engine_name(): + groups = models.Group.objects.exclude_personal().exclude(id=global_group.id).extra( + select={'lower_name': 'lower(name)'}).order_by('name') + else: + groups = models.Group.objects.exclude_personal().exclude(id=global_group.id).order_by('name') + groups = groups.values('id', 'name') group_list = [{'link': _get_group_url({'name': global_group.name, 'id': global_group.id}), -- cgit v1.2.3-1-g7c22