move alias levels into enums

This commit is contained in:
Benjamin Kampmann 2014-01-08 03:47:01 +11:00
parent c743a985a4
commit 7cbe92d5b6
2 changed files with 33 additions and 9 deletions

View File

@ -1,6 +1,15 @@
Discourse.Group = Discourse.Model.extend({ Discourse.Group = Discourse.Model.extend({
loaded: false, loaded: false,
ALIAS_LEVELS : {
"nobody": 0,
"only_admins": 1,
"mods_and_admins": 2,
"members_mods_and_admins": 3,
"everyone": 99
},
userCountDisplay: function(){ userCountDisplay: function(){
var c = this.get('user_count'); var c = this.get('user_count');
// don't display zero its ugly // don't display zero its ugly
@ -37,11 +46,11 @@ Discourse.Group = Discourse.Model.extend({
validValues: function() { validValues: function() {
return Em.A([ return Em.A([
{ name: I18n.t("admin.groups.alias_levels.nobody"), value: 0}, { name: I18n.t("admin.groups.alias_levels.nobody"), value: this.ALIAS_LEVELS.nobody},
{ name: I18n.t("admin.groups.alias_levels.only_admins"), value: 1}, { name: I18n.t("admin.groups.alias_levels.only_admins"), value: this.ALIAS_LEVELS.only_admins},
{ name: I18n.t("admin.groups.alias_levels.mods_and_admins"), value: 2}, { name: I18n.t("admin.groups.alias_levels.mods_and_admins"), value: this.ALIAS_LEVELS.mods_and_admins},
{ name: I18n.t("admin.groups.alias_levels.members_mods_and_admins"), value: 3}, { name: I18n.t("admin.groups.alias_levels.members_mods_and_admins"), value: this.ALIAS_LEVELS.members_mods_and_admins},
{ name: I18n.t("admin.groups.alias_levels.everyone"), value: 99} { name: I18n.t("admin.groups.alias_levels.everyone"), value: this.ALIAS_LEVELS.everyone}
]); ]);
}.property(), }.property(),

View File

@ -21,6 +21,16 @@ class Group < ActiveRecord::Base
:trust_level_5 => 15 :trust_level_5 => 15
} }
ALIAS_LEVELS = {
:nobody => 0,
:only_admins => 1,
:mods_and_admins => 2,
:members_mods_and_admins => 3,
:everyone => 99
}
validate :alias_level, inclusion: { in: ALIAS_LEVELS.values}
def self.trust_group_ids def self.trust_group_ids
(10..19).to_a (10..19).to_a
end end
@ -101,16 +111,21 @@ class Group < ActiveRecord::Base
def self.search_group(name, current_user) def self.search_group(name, current_user)
levels = [99] levels = [ALIAS_LEVELS[:everyone]]
if current_user.admin? if current_user.admin?
levels = [99, 1, 2, 3] levels = [ALIAS_LEVELS[:everyone],
ALIAS_LEVELS[:only_admins],
ALIAS_LEVELS[:mods_and_admins],
ALIAS_LEVELS[:members_mods_and_admins]]
elsif current_user.moderator? elsif current_user.moderator?
levels = [99, 2, 3] levels = [ALIAS_LEVELS[:everyone],
ALIAS_LEVELS[:mods_and_admins],
ALIAS_LEVELS[:members_mods_and_admins]]
end end
return Group.where("name LIKE :term_like AND (" + return Group.where("name LIKE :term_like AND (" +
" alias_level in (:levels)" + " alias_level in (:levels)" +
" OR (alias_level = 3 AND id in (" + " OR (alias_level = #{ALIAS_LEVELS[:everyone]} AND id in (" +
"SELECT group_id FROM group_users WHERE user_id= :user_id)" + "SELECT group_id FROM group_users WHERE user_id= :user_id)" +
")" + ")" +
")", term_like: "#{name.downcase}%", levels: levels, user_id: current_user.id) ")", term_like: "#{name.downcase}%", levels: levels, user_id: current_user.id)