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? 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