From c406951876ce3feff8cc47e9a47751d2908bb872 Mon Sep 17 00:00:00 2001 From: Harry Bomrah Date: Sat, 23 May 2015 03:48:07 +0800 Subject: [PATCH] delete post, edit groups done --- app/controllers/admin/groups_controller.rb | 128 +++++++++++++++++- app/controllers/orbit_group_controller.rb | 4 +- app/models/group_category.rb | 4 + app/views/admin/groups/_group.html.erb | 6 +- .../admin/groups/_group_categories.html.erb | 5 +- .../groups/_group_existing_member.html.erb | 19 +++ app/views/admin/groups/_group_form.html.erb | 61 +++++---- .../_group_requested_categories.html.erb | 23 ++++ app/views/admin/groups/categories.html.erb | 40 +++--- app/views/admin/groups/edit.html.erb | 94 +++++++++++++ app/views/admin/members/_side_bar.html.erb | 2 +- config/routes.rb | 3 + 12 files changed, 326 insertions(+), 63 deletions(-) create mode 100644 app/views/admin/groups/_group_existing_member.html.erb create mode 100644 app/views/admin/groups/_group_requested_categories.html.erb create mode 100644 app/views/admin/groups/edit.html.erb 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 %>
  • -
    +
    card">
    -

    ">

    +

    <% if current_user_is_group_admin %>
    - <%= link_to(content_tag(:i, nil, :class => 'icon-edit'),"#",:class=>"edit" ) %> + <%= link_to(content_tag(:i, nil, :class => 'icon-edit'),edit_admin_group_path(group),:class=>"edit" ) %> <%= link_to(content_tag(:i, nil, :class => 'icon-trash'),"/admin/groups/#{group.id.to_s}",:class=>"trash delete-group-button" ) %>
    <% end %> diff --git a/app/views/admin/groups/_group_categories.html.erb b/app/views/admin/groups/_group_categories.html.erb index 85a8c09..0900bd5 100644 --- a/app/views/admin/groups/_group_categories.html.erb +++ b/app/views/admin/groups/_group_categories.html.erb @@ -1,6 +1,7 @@ -<% @categories.each do |cat| %> +<% is_admin = current_user.is_admin? %> +<% @admin_categories.each do |cat| %> <% end %> \ No newline at end of file diff --git a/app/views/admin/groups/_group_existing_member.html.erb b/app/views/admin/groups/_group_existing_member.html.erb new file mode 100644 index 0000000..1ea8a7b --- /dev/null +++ b/app/views/admin/groups/_group_existing_member.html.erb @@ -0,0 +1,19 @@ +<% existing_members_limit = 4 %> + + +
    + <% @existing_members.each_with_index do |em,i| %> + <% if em["id"] != current_user.id.to_s %> + " class="existing-phone-avatar" src="<%= em["avatar"] %>" style="width:75px;height:75px;" /> + <% end %> + <% if i == existing_members_limit %> + … <%= (@existing_members.count - existing_members_limit).to_s %> more. + <% break + end %> + <% end %> + <% if @existing_members.count > 1 %> + Edit members + <% else %> + No members. + <% end %> +
    diff --git a/app/views/admin/groups/_group_form.html.erb b/app/views/admin/groups/_group_form.html.erb index 6785e6f..8471685 100644 --- a/app/views/admin/groups/_group_form.html.erb +++ b/app/views/admin/groups/_group_form.html.erb @@ -28,7 +28,11 @@
    - <%= f.select :group_category_id, @categories %> + <% if params[:action] == "new" %> + <%= f.select :group_category_id, @categories %> + <% else %> + <%= @group.group_category.title %> + <% end %>
    @@ -64,10 +68,10 @@
    @@ -75,10 +79,10 @@
    @@ -98,7 +102,11 @@
    - + <% if params[:action] == "edit" %> +
    + <%= render :partial => "group_existing_member" %> +
    + <% end %> @@ -146,26 +154,29 @@
    - <%= f.submit t('submit'), class: 'btn btn-primary' %> - <%= link_to t('cancel'), admin_groups_path, :class=>"btn" %> -
    + <%= f.submit t('submit'), class: 'btn btn-primary' %> + <%= link_to t('cancel'), admin_groups_path, :class=>"btn" %> + diff --git a/app/views/admin/groups/_group_requested_categories.html.erb b/app/views/admin/groups/_group_requested_categories.html.erb new file mode 100644 index 0000000..c0e5693 --- /dev/null +++ b/app/views/admin/groups/_group_requested_categories.html.erb @@ -0,0 +1,23 @@ +<% is_admin = current_user.is_admin? %> +<% @requested_categories.each do |rc| %> + +<% end %> \ No newline at end of file diff --git a/app/views/admin/groups/categories.html.erb b/app/views/admin/groups/categories.html.erb index c424448..248198f 100644 --- a/app/views/admin/groups/categories.html.erb +++ b/app/views/admin/groups/categories.html.erb @@ -15,7 +15,7 @@
  • - Request categories + Requested categories
  • @@ -23,31 +23,18 @@
    <%= render :partial => "group_categories" %>
    -
    - +
    + <%= render :partial => "group_requested_categories" %>
    - Add new category + <% if current_user.is_admin? %> + Add new category + <% else %> + Request new category + <% end %>
    @@ -70,6 +57,9 @@ <% end %> + <% if !current_user.is_admin? %> + + <% end %>
    <%= t(:category_notice) %>
    @@ -171,12 +161,16 @@ $.ajax({ url : "/admin/groups/create_category", type : "post", - data: $("#create_category_form input[type=text]").serialize(), + data: $("#create_category_form input").serialize(), }).done(function(data){ $.each($('#categoryModal .input-large'),function(){ $(this).val(""); }); - $("#category_holder_box").html(data); + <% if current_user.is_admin? %> + $("#category_holder_box").html(data); + <% else %> + $("#requested_category_holder_box").html(data); + <% end %> $('#categoryModal').modal('hide'); bindOpenSlide(true); }); diff --git a/app/views/admin/groups/edit.html.erb b/app/views/admin/groups/edit.html.erb new file mode 100644 index 0000000..05cbac3 --- /dev/null +++ b/app/views/admin/groups/edit.html.erb @@ -0,0 +1,94 @@ +<%= form_for @group, :url => admin_group_path(@group.id), :html => { :multipart => true , :class=>"form-horizontal main-forms"} do |f| %> +
    + <%= render :partial => "group_form", locals: {f: f} %> +
    +<% end %> + + + + + + + + + + + diff --git a/app/views/admin/members/_side_bar.html.erb b/app/views/admin/members/_side_bar.html.erb index 84a36af..b6f9f72 100644 --- a/app/views/admin/members/_side_bar.html.erb +++ b/app/views/admin/members/_side_bar.html.erb @@ -43,7 +43,7 @@ <%= content_tag :li, link_to((content_tag(:span, "My Groups")), admin_groups_path), :class => active_for_action('groups', 'index') %> <%= content_tag :li, link_to((content_tag(:span, "Public Groups")), admin_groups_public_path), :class => active_for_action('groups','public_groups') %> <%= content_tag :li, link_to((content_tag(:span, "Create New Group")), new_admin_group_path), :class => active_for_action('groups','new') %> - <%= content_tag :li, link_to((content_tag(:span, "Categories")), admin_groups_categories_path), :class => active_for_action('groups','categories') if current_user.is_admin? %> + <%= content_tag :li, link_to((content_tag(:span, "Categories")), admin_groups_categories_path), :class => active_for_action('groups','categories') %> <% end -%>