forked from saurabh/orbit4-5
360 lines
8.8 KiB
Ruby
360 lines
8.8 KiB
Ruby
class Admin::GroupsController < OrbitGroupController
|
|
include Admin::GroupsHelper
|
|
def index
|
|
@groups = current_user.groups
|
|
end
|
|
|
|
def public_groups
|
|
@groups = Group.open
|
|
end
|
|
|
|
def categories
|
|
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
|
|
render_401 and return if !user_can_write?
|
|
@no_breadcrumb = true
|
|
@grouppost = GroupPost.new
|
|
end
|
|
|
|
def createpost
|
|
gp = GroupPost.new(post_params)
|
|
gp.group = @group
|
|
gp.save
|
|
redirect_to admin_group_path(@group)
|
|
end
|
|
|
|
def updatepost
|
|
@post = GroupPost.find(params[:id])
|
|
group = @post.group
|
|
@post.update_attributes(post_update_params)
|
|
@post.save
|
|
redirect_to admin_group_path(group)
|
|
end
|
|
|
|
def deletepost
|
|
gp = GroupPost.find(params[:id])
|
|
gp.destroy
|
|
render :json => {"success" => true}.to_json
|
|
end
|
|
|
|
def showpost
|
|
render_401 and return if !user_can_read?
|
|
if (current_user.id.to_s != @post.author.to_s) && (!@post.read_by.include?(current_user.id.to_s))
|
|
@post.read_by << current_user.id.to_s
|
|
@post.save
|
|
end
|
|
@read_by_names = @post.read_by.collect{|rb|
|
|
user = User.find(rb) rescue nil
|
|
author = (user.member_profile.name == nil ? user.user_name : user.member_profile.name rescue "") if !user.nil?
|
|
author
|
|
}
|
|
end
|
|
|
|
def editpost
|
|
render_401 and return if @post.author != current_user.id
|
|
@no_breadcrumb = true
|
|
@grouppost = @post
|
|
end
|
|
|
|
def show
|
|
@no_breadcrumb = true
|
|
@no_filter = true
|
|
if !user_can_read?
|
|
render_401 and return
|
|
end
|
|
end
|
|
|
|
def members
|
|
render_401 and return if !user_can_read?
|
|
@group_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")
|
|
@group_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 create_category
|
|
gc = GroupCategory.new(category_params)
|
|
gc.save
|
|
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
|
|
@admin_categories = GroupCategory.by_admin
|
|
render :partial => "group_categories"
|
|
end
|
|
|
|
def upload_photo
|
|
photo = GroupPostImage.new(post_image_params)
|
|
photo.save
|
|
render :json => {"success" => true,"id" => photo.id.to_s}.to_json
|
|
end
|
|
|
|
|
|
def upload_file
|
|
file = GroupPostFile.new(post_file_params)
|
|
file.save
|
|
render :json => {"success" => true,"id" => file.id.to_s}.to_json
|
|
end
|
|
|
|
def download_file
|
|
file_id = params[:id]
|
|
file = GroupPostFile.find(file_id) rescue nil
|
|
if !file.nil?
|
|
redirect_to file.file.url and return
|
|
end
|
|
render :nothing => true
|
|
end
|
|
|
|
def create
|
|
group = Group.new(group_params)
|
|
group.save
|
|
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
|
|
render :json => {"success" => true}.to_json
|
|
end
|
|
|
|
def new
|
|
@group = Group.new
|
|
@no_breadcrumb = true
|
|
@categories = GroupCategory.by_admin.collect{|gc| [gc.title,gc.id]}
|
|
@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"
|
|
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
|
|
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
|
|
render :partial => "post_comment", :collection => [gpc]
|
|
end
|
|
|
|
private
|
|
|
|
def category_params
|
|
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
|
|
params.require(:group_post_comment).permit!
|
|
end
|
|
|
|
def post_params
|
|
p = params.require(:group_post).permit!
|
|
p["author"] = current_user.id
|
|
images = []
|
|
p[:group_post_images].each do |id|
|
|
gpi = GroupPostImage.find(id) rescue nil
|
|
if !gpi.nil?
|
|
images << gpi
|
|
end
|
|
end if !p[:group_post_images].nil?
|
|
files = []
|
|
p[:group_post_files].each do |id|
|
|
gpf = GroupPostFile.find(id) rescue nil
|
|
if !gpf.nil?
|
|
files << gpf
|
|
end
|
|
end if !p[:group_post_files].nil?
|
|
p[:group_post_images] = images
|
|
p[:group_post_files] = files
|
|
p
|
|
end
|
|
|
|
def post_update_params
|
|
p = params.require(:group_post).permit!
|
|
p["author"] = current_user.id
|
|
params[:images_to_destroy].each do |img|
|
|
gpi = GroupPostImage.find(img) rescue nil
|
|
gpi.destroy if !gpi.nil?
|
|
end if !params[:images_to_destroy].nil?
|
|
|
|
images = @post.group_post_images
|
|
|
|
p[:group_post_images].each do |id|
|
|
gpi = GroupPostImage.find(id) rescue nil
|
|
if !gpi.nil?
|
|
images << gpi
|
|
end
|
|
end if !p[:group_post_images].nil?
|
|
|
|
params[:files_to_destroy].each do |fil|
|
|
gpf = GroupPostFile.find(fil) rescue nil
|
|
gpf.destroy if !gpf.nil?
|
|
end if !params[:files_to_destroy].nil?
|
|
|
|
files = @post.group_post_files
|
|
|
|
p[:group_post_files].each do |id|
|
|
gpf = GroupPostFile.find(id) rescue nil
|
|
if !gpf.nil?
|
|
files << gpf
|
|
end
|
|
end if !p[:group_post_files].nil?
|
|
|
|
p[:group_post_images] = images
|
|
p[:group_post_files] = files
|
|
p
|
|
end
|
|
|
|
def post_image_params
|
|
params.require(:group_post_image).permit!
|
|
end
|
|
|
|
def post_file_params
|
|
params.require(:group_post_file).permit!
|
|
end
|
|
|
|
def group_params
|
|
p = params.require(:group).permit!
|
|
p["user_ids"] = [] if p["user_ids"].nil?
|
|
p["user_ids"] << current_user.id.to_s
|
|
p["admins"] = []
|
|
p["admins"] << current_user.id.to_s
|
|
p
|
|
end
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|