From a4110cf895b15475c95322f74356617d87e62128 Mon Sep 17 00:00:00 2001 From: Saurabh Bhatia Date: Fri, 27 Jun 2014 11:38:06 +0800 Subject: [PATCH] added role status to site settings and member index page. --- app/controllers/members_controller.rb | 94 +++++++++++++------ app/controllers/pages_controller.rb | 27 ++++-- app/models/concerns/filter.rb | 7 +- app/models/module_app.rb | 4 + app/models/role_status.rb | 2 +- .../modules/member/index.html.erb | 47 +++++----- app/views/pages/_form.html.erb | 21 +++++ 7 files changed, 141 insertions(+), 61 deletions(-) diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb index 658af24..eee76c4 100644 --- a/app/controllers/members_controller.rb +++ b/app/controllers/members_controller.rb @@ -1,29 +1,55 @@ class MembersController < ApplicationController def index - members = MemberProfile.all - member_list = members.collect do |member| - if member.avatar.present? - image = member.avatar.thumb.url - else - image = "http://placehold.it/100x100" - end - roles = member.roles.collect do |role| - { - "role" => role.title - } - end - { - "name" => member.name, - "email" => member.email, - "roles" => roles, - "img_src" => image, - "link_to_show" => OrbitHelper.url_to_show(member.to_param) - } - end - { - "members" => member_list, - "extras" => {"widget-title"=>"Members"} - } + statuses = OrbitHelper.page_categories + @statuses = [] + if statuses.first == "all" + module_app = OrbitHelper.this_module_app + @statuses = module_app.role_status.collect do |stat| + { + "status" => stat.title, + "id" => stat.id.to_s, + "status-role" => stat.role.title, + "rs" => stat + } + end + else + statuses.each do |stat| + s = RoleStatus.find(stat) + @statuses << {"status" => s.title, "id" => s.id.to_s, "rs" => s, "status-role" => s.role.title} + end + end + stats = @statuses.collect do |status| + members = status["rs"].member_profiles + member_list = members.collect do |member| + if member.avatar.present? + image = member.avatar.thumb.url + else + image = "http://placehold.it/100x100" + end + roles = member.roles.collect do |role| + { + "role" => role.title + } + end + { + "name" => member.name, + "roles" => roles, + "img_src" => image, + "email" => member.email, + "link_to_show" => OrbitHelper.url_to_show(member.to_param) + } + + end + { + "status-title" => status["status"], + "role-title" => status["status-role"], + "members" => member_list + } + end + { + "stats" => stats, + "extras" => {"widget-title" => "Members"} + } end def show @@ -33,9 +59,21 @@ class MembersController < ApplicationController plugins = OrbitApp::Plugin::Registration.all rescue nil plugin_list = plugins.collect do |plugin| - intro = PersonalPluginIntro.find_by(member_profile_id:member.id, _type: "#{plugin.app_name}Intro") + intro = PersonalPluginIntro.find_by(member_profile_id:member.id, _type: "#{plugin.app_name}Intro") rescue nil - if intro.complete_list == true + if intro.nil? + plugin_data = plugin.app_name.constantize.where(member_profile_id: member) rescue nil + pd = plugin_data.collect do |p| + { + "data_title" => p.slug_title, + "link_to_show" => OrbitHelper.url_to_show(p.to_param) + "?method=personal_plugin&plugin_name=#{plugin.app_name}" + } + end + { + "plugin_data" => pd, + "plugin_title" => plugin.app_name.titleize + } + elsif intro.complete_list == true plugin_data = plugin.app_name.constantize.where(member_profile_id: member) rescue nil pd = plugin_data.collect do |p| { @@ -96,7 +134,7 @@ class MembersController < ApplicationController if (rf.attribute_field.markup.eql?("text_field") || rf.attribute_field.markup.eql?("text_area")) role_field_value = rf.value[I18n.locale] elsif (rf.attribute_field.markup.eql?("select") || rf.attribute_field.markup.eql?("radio_button")) - role_field_value = rf.attribute_field.markup_value["#{rf.value}"][I18n.locale] + role_field_value = rf.attribute_field.markup_value["#{rf.value}"][I18n.locale] rescue nil elsif rf.attribute_field.markup.eql?("address") role_field_value = rf[:address_key][I18n.locale].map{|k,v| v}.join(', ') elsif rf.attribute_field.markup.eql?("date") @@ -112,7 +150,7 @@ class MembersController < ApplicationController role_field_value = rf.value.to_date.strftime("%Y") end elsif rf.attribute_field.markup.eql?("checkbox") - role_field_value = rf.value.map {|v| rf.attribute_field.markup_value["#{v}"][I18n.locale]}.join(', ') + role_field_value = rf.value.map {|v| rf.attribute_field.markup_value["#{v}"][I18n.locale]}.join(', ') rescue nil end { diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index 72b3156..6ddeee9 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -131,12 +131,22 @@ class PagesController < ApplicationController def get_categories module_app = ModuleApp.find_by_key(params[:module]); - @categories = module_app.categories.collect do |cat| - { - "title" => cat.title, - "id" => cat.id.to_s - } + if module_app.key.eql?("member") + @categories = module_app.role_status.collect do |cat| + { + "title" => "#{cat.title} (#{cat.role.title})", + "id" => cat.id.to_s + } + end + else + @categories = module_app.categories.collect do |cat| + { + "title" => cat.title, + "id" => cat.id.to_s + } + end end + if module_app.data_count.nil? render :json => {"categories" => @categories,"layouts" => (get_layouts module_app.key),"data_count" => {"present"=>false}}.to_json else @@ -157,7 +167,12 @@ class PagesController < ApplicationController @pages = Page.where(:page_id.ne => "" , :page_id.exists => true) @modules = ModuleApp.all.frontend_enabled @module_app = ModuleApp.find_by_key(@page.module) rescue nil - @categories = @module_app.categories rescue [] + @categories = @module_app.categories rescue [] + if @module_app.key.eql?("member") + @status = @module_app.role_status rescue [] + else + @status = [] + end @layout_types = get_layouts @module_app.key end end diff --git a/app/models/concerns/filter.rb b/app/models/concerns/filter.rb index cf866ad..057727e 100644 --- a/app/models/concerns/filter.rb +++ b/app/models/concerns/filter.rb @@ -3,8 +3,7 @@ included do end def filter_by_categories(categories=[]) - categories = OrbitHelper.page_categories if categories.blank? - self.where(:category_id.in => categories) rescue [] - - end + categories = OrbitHelper.page_categories if categories.blank? + self.where(:category_id.in => categories) rescue [] + end end \ No newline at end of file diff --git a/app/models/module_app.rb b/app/models/module_app.rb index 650166e..24fb183 100644 --- a/app/models/module_app.rb +++ b/app/models/module_app.rb @@ -76,6 +76,10 @@ class ModuleApp def role_managers Authorization.module_authorized_users(self).pluck(:role_id) end + + def role_status + RoleStatus.all + end def module_managers workgroup = Workgroup.find_by(key: 'sub_managers') diff --git a/app/models/role_status.rb b/app/models/role_status.rb index 32b3cd5..e500f5d 100644 --- a/app/models/role_status.rb +++ b/app/models/role_status.rb @@ -6,7 +6,7 @@ class RoleStatus scope :can_display, ->{ where(disable: false) } - has_and_belongs_to_many :member_profile + has_and_belongs_to_many :member_profiles belongs_to :role def self.get_role_data(role_key) diff --git a/app/templates/orbit_bootstrap/modules/member/index.html.erb b/app/templates/orbit_bootstrap/modules/member/index.html.erb index de950eb..2171256 100644 --- a/app/templates/orbit_bootstrap/modules/member/index.html.erb +++ b/app/templates/orbit_bootstrap/modules/member/index.html.erb @@ -1,25 +1,28 @@ -
-

- {{widget-title}} -

-
-
-
-
- -
-
-

- {{name}} -

-
-

{{role}}

+
+

{{widget-title}}

+
+
+

{{status-title}} ({{role-title}})

+
-
+
+
- -{{pagination_goes_here}} \ No newline at end of file + \ No newline at end of file diff --git a/app/views/pages/_form.html.erb b/app/views/pages/_form.html.erb index a93e4ac..dbbb859 100644 --- a/app/views/pages/_form.html.erb +++ b/app/views/pages/_form.html.erb @@ -46,6 +46,27 @@ <% end %> +
+ +
+ <% if params[:action] == "edit" %> +
+ <% if !@status.blank? %> + + <% end %> + <% @status.each do |status| %> + + <% end %> +
+ <% end %> +
+