diff --git a/app/controllers/admin/groups_controller.rb b/app/controllers/admin/groups_controller.rb index ba8fd13..b06ac4e 100644 --- a/app/controllers/admin/groups_controller.rb +++ b/app/controllers/admin/groups_controller.rb @@ -9,7 +9,15 @@ class Admin::GroupsController < OrbitGroupController end def categories - @categories = GroupCategory.all + old_categories = GroupCategory.where(:is_accepted.ne => false) + if old_categories.count > 0 + old_categories.each do |oc| + oc.is_accepted = true + oc.save + end + end + @admin_categories = GroupCategory.by_admin + @requested_categories = GroupCategory.is_requested end def newpost @@ -55,15 +63,20 @@ class Admin::GroupsController < OrbitGroupController def create_category gc = GroupCategory.new(category_params) gc.save - @categories = GroupCategory.all - render :partial => "group_categories" + if !current_user.is_admin? + @requested_categories = GroupCategory.is_requested + render :partial => "group_requested_categories" + else + @admin_categories = GroupCategory.by_admin + render :partial => "group_categories" + end end def update_category gc = GroupCategory.find(params[:category_id]) gc.update_attributes(category_params) gc.save - @categories = GroupCategory.all + @admin_categories = GroupCategory.by_admin render :partial => "group_categories" end @@ -95,6 +108,13 @@ class Admin::GroupsController < OrbitGroupController redirect_to admin_groups_path end + def update + @group = Group.find(params[:id]) + @group.update_attributes(group_update_params) + @group.save + redirect_to admin_groups_path + end + def destroy group = Group.find(params[:id]) group.destroy @@ -103,7 +123,8 @@ class Admin::GroupsController < OrbitGroupController def new @group = Group.new - @categories = GroupCategory.all.collect{|gc| [gc.title,gc.id]} + @no_breadcrumb = true + @categories = GroupCategory.by_admin.collect{|gc| [gc.title,gc.id]} @members = [] MemberProfile.all.each do |mp| user = mp.user rescue nil @@ -119,6 +140,81 @@ class Admin::GroupsController < OrbitGroupController end end + def edit + render_401 and return if !is_user_group_admin? + @no_breadcrumb = true + @members = [] + MemberProfile.all.each do |mp| + user = mp.user rescue nil + if !user.nil? && user.id.to_s != current_user.id.to_s && user.user_name != "rulingcom" && !@group.users.include?(user) + avatar = (mp.avatar.thumb.url == "thumb_person.png" ? "/assets/thumb_person.png" : mp.avatar.thumb.url rescue "/assets/thumb_person.png") + @members << { + "id" => user.id.to_s, + "user_name" => (user.user_name rescue ""), + "avatar" => avatar, + "name" => (mp.name_translations rescue {"en" => "","zh_tw" => ""}) + } + end + end + @existing_members = [] + @group.users.each do |user| + mp = user.member_profile rescue nil + if !mp.nil? + avatar = (mp.avatar.thumb.url == "thumb_person.png" ? "/assets/thumb_person.png" : mp.avatar.thumb.url rescue "/assets/thumb_person.png") + @existing_members << { + "id" => user.id.to_s, + "user_name" => (user.user_name rescue ""), + "avatar" => avatar, + "name" => (mp.name_translations rescue {"en" => "","zh_tw" => ""}), + "admin" => @group.admins.include?(user.id.to_s) + } + end + end + end + + def get_existing_member_template + g = params[:group_id] + group = Group.find(g) + @existing_members = [] + group.users.each do |user| + mp = user.member_profile rescue nil + if !mp.nil? + avatar = (mp.avatar.thumb.url == "thumb_person.png" ? "/assets/thumb_person.png" : mp.avatar.thumb.url rescue "/assets/thumb_person.png") + @existing_members << { + "id" => user.id.to_s, + "user_name" => (user.user_name rescue ""), + "avatar" => avatar, + "name" => (mp.name_translations rescue {"en" => "","zh_tw" => ""}), + "admin" => group.admins.include?(user.id.to_s) + } + end + end + render :partial => "group_existing_member" + end + + def remove_user + group = Group.find(params[:group_id]) + user_id = params[:user_id] + user = User.find(user_id) + group.users.delete(user) + group.admins.delete(user.id.to_s) if group.admins.include?(user.id.to_s) + group.save + render :json => {"success" => true}.to_json + end + + def toggle_admin + group = Group.find(params[:group_id]) + user_id = params[:user_id] + user = User.find(user_id) + if params[:admin] == "true" + group.admins << user.id.to_s + else + group.admins.delete(user.id.to_s) + end + group.save + render :json => {"success" => true}.to_json + end + def new_comment gpc = GroupPostComment.new(comment_params) gpc.save @@ -128,7 +224,13 @@ class Admin::GroupsController < OrbitGroupController private def category_params - params.require(:category).permit! + p = params.require(:category).permit! + if p[:is_accepted].nil? + p[:is_accepted] = true + else + p[:is_accepted] = false + end + p end def comment_params @@ -174,4 +276,16 @@ class Admin::GroupsController < OrbitGroupController p end -end \ No newline at end of file + def group_update_params + p = params.require(:group).permit! + p["user_ids"] = [] if p["user_ids"].nil? + p["user_ids"].concat(@group.users.collect{|u| u.id.to_s}) + p + end + +end + + + + + diff --git a/app/controllers/orbit_group_controller.rb b/app/controllers/orbit_group_controller.rb index 9a91144..2e2e8a4 100644 --- a/app/controllers/orbit_group_controller.rb +++ b/app/controllers/orbit_group_controller.rb @@ -4,7 +4,7 @@ class OrbitGroupController < ApplicationController def get_group case params[:action] - when "show" + when "show","edit" uid = params[:id].split("-").last @group = Group.find_by(:uid => uid) when "newpost", "createpost" @@ -21,7 +21,7 @@ class OrbitGroupController < ApplicationController @access_right_level = "none" read_or_write = @group.permission rescue "read" case params[:action] - when "show", "showpost", "newpost" + when "show", "showpost", "newpost", "edit" is_member = @group.users.include?(current_user) if @group.admins.include?(current_user.id.to_s) @access_right_level = "admin" diff --git a/app/models/group_category.rb b/app/models/group_category.rb index 5a3e7a5..601cba1 100644 --- a/app/models/group_category.rb +++ b/app/models/group_category.rb @@ -3,6 +3,10 @@ class GroupCategory include Mongoid::Timestamps field :title, localize: true + field :is_accepted, type: Boolean, :default => true has_many :groups + + scope :is_requested, ->{ where(is_accepted: false) } + scope :by_admin, ->{ where(is_accepted: true) } end \ No newline at end of file diff --git a/app/views/admin/groups/_group.html.erb b/app/views/admin/groups/_group.html.erb index 90f93c0..825fd8b 100644 --- a/app/views/admin/groups/_group.html.erb +++ b/app/views/admin/groups/_group.html.erb @@ -7,12 +7,12 @@ end %>
">
+ <% if current_user_is_group_admin %>