added role status to site settings and member index page.

This commit is contained in:
Saurabh Bhatia 2014-06-27 11:38:06 +08:00
parent 9b958354c2
commit a4110cf895
7 changed files with 141 additions and 61 deletions

View File

@ -1,6 +1,25 @@
class MembersController < ApplicationController class MembersController < ApplicationController
def index def index
members = MemberProfile.all 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| member_list = members.collect do |member|
if member.avatar.present? if member.avatar.present?
image = member.avatar.thumb.url image = member.avatar.thumb.url
@ -14,14 +33,21 @@ class MembersController < ApplicationController
end end
{ {
"name" => member.name, "name" => member.name,
"email" => member.email,
"roles" => roles, "roles" => roles,
"img_src" => image, "img_src" => image,
"email" => member.email,
"link_to_show" => OrbitHelper.url_to_show(member.to_param) "link_to_show" => OrbitHelper.url_to_show(member.to_param)
} }
end
{
"status-title" => status["status"],
"role-title" => status["status-role"],
"members" => member_list
}
end end
{ {
"members" => member_list, "stats" => stats,
"extras" => {"widget-title" => "Members"} "extras" => {"widget-title" => "Members"}
} }
end end
@ -33,9 +59,21 @@ class MembersController < ApplicationController
plugins = OrbitApp::Plugin::Registration.all rescue nil plugins = OrbitApp::Plugin::Registration.all rescue nil
plugin_list = plugins.collect do |plugin| 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 plugin_data = plugin.app_name.constantize.where(member_profile_id: member) rescue nil
pd = plugin_data.collect do |p| 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")) if (rf.attribute_field.markup.eql?("text_field") || rf.attribute_field.markup.eql?("text_area"))
role_field_value = rf.value[I18n.locale] role_field_value = rf.value[I18n.locale]
elsif (rf.attribute_field.markup.eql?("select") || rf.attribute_field.markup.eql?("radio_button")) 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") elsif rf.attribute_field.markup.eql?("address")
role_field_value = rf[:address_key][I18n.locale].map{|k,v| v}.join(', ') role_field_value = rf[:address_key][I18n.locale].map{|k,v| v}.join(', ')
elsif rf.attribute_field.markup.eql?("date") elsif rf.attribute_field.markup.eql?("date")
@ -112,7 +150,7 @@ class MembersController < ApplicationController
role_field_value = rf.value.to_date.strftime("%Y") role_field_value = rf.value.to_date.strftime("%Y")
end end
elsif rf.attribute_field.markup.eql?("checkbox") 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 end
{ {

View File

@ -131,12 +131,22 @@ class PagesController < ApplicationController
def get_categories def get_categories
module_app = ModuleApp.find_by_key(params[:module]); module_app = ModuleApp.find_by_key(params[:module]);
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| @categories = module_app.categories.collect do |cat|
{ {
"title" => cat.title, "title" => cat.title,
"id" => cat.id.to_s "id" => cat.id.to_s
} }
end end
end
if module_app.data_count.nil? if module_app.data_count.nil?
render :json => {"categories" => @categories,"layouts" => (get_layouts module_app.key),"data_count" => {"present"=>false}}.to_json render :json => {"categories" => @categories,"layouts" => (get_layouts module_app.key),"data_count" => {"present"=>false}}.to_json
else else
@ -158,6 +168,11 @@ class PagesController < ApplicationController
@modules = ModuleApp.all.frontend_enabled @modules = ModuleApp.all.frontend_enabled
@module_app = ModuleApp.find_by_key(@page.module) rescue nil @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 @layout_types = get_layouts @module_app.key
end end
end end

View File

@ -5,6 +5,5 @@
def filter_by_categories(categories=[]) def filter_by_categories(categories=[])
categories = OrbitHelper.page_categories if categories.blank? categories = OrbitHelper.page_categories if categories.blank?
self.where(:category_id.in => categories) rescue [] self.where(:category_id.in => categories) rescue []
end end
end end

View File

@ -77,6 +77,10 @@ class ModuleApp
Authorization.module_authorized_users(self).pluck(:role_id) Authorization.module_authorized_users(self).pluck(:role_id)
end end
def role_status
RoleStatus.all
end
def module_managers def module_managers
workgroup = Workgroup.find_by(key: 'sub_managers') workgroup = Workgroup.find_by(key: 'sub_managers')
authorized_users = Authorization.module_authorized_users(self).where(:user_id.ne => nil, :workgroup_id.ne => workgroup.id).map {|u| u.user} rescue nil authorized_users = Authorization.module_authorized_users(self).where(:user_id.ne => nil, :workgroup_id.ne => workgroup.id).map {|u| u.user} rescue nil

View File

@ -6,7 +6,7 @@ class RoleStatus
scope :can_display, ->{ where(disable: false) } scope :can_display, ->{ where(disable: false) }
has_and_belongs_to_many :member_profile has_and_belongs_to_many :member_profiles
belongs_to :role belongs_to :role
def self.get_role_data(role_key) def self.get_role_data(role_key)

View File

@ -1,8 +1,10 @@
<div class="index-members"> <div class="index" module="member">
<h3 class="index-title"> <h2 class="widget-title">{{widget-title}}</h2>
<span>{{widget-title}}</span> <div class="list-group">
</h3> <div class="list-group-item" data-list="stats" data-level="0">
<div class="row" module="member" data-level="0" data-list="members"> <h4 class="list-group-item-heading">{{status-title}} ({{role-title}})</h4>
<ul class="list-group-item-text">
<div class="row" module="member" data-level="1" data-list="members">
<div class="index-content col-sm-6"> <div class="index-content col-sm-6">
<div class="boxes-inner"> <div class="boxes-inner">
<div class="index-pic"> <div class="index-pic">
@ -12,7 +14,7 @@
<h4 class="index-part-title"> <h4 class="index-part-title">
<a href="{{link_to_show}}">{{name}}</a> <a href="{{link_to_show}}">{{name}}</a>
</h4> </h4>
<div data-level="1" data-list="roles"> <div data-level="2" data-list="roles">
<p class="index-part-subtitle">{{role}}</p> <p class="index-part-subtitle">{{role}}</p>
</div> </div>
<p class="index-part-subtitle">{{email}}</p> <p class="index-part-subtitle">{{email}}</p>
@ -20,6 +22,7 @@
</section> </section>
</div> </div>
</div> </div>
</ul>
</div>
</div> </div>
</div> </div>
{{pagination_goes_here}}

View File

@ -46,6 +46,27 @@
<% end %> <% end %>
</div> </div>
</div> </div>
<div class="control-group">
<label class="control-label"><%= "Category List :" if params[:action] == "edit" && !@status.blank? %></label>
<div id="categories_list">
<% if params[:action] == "edit" %>
<div class="controls">
<% if !@status.blank? %>
<label class="checkbox">
<input type="checkbox" value="all" class="checkbox-all" name="page[categories][]" <%= "checked='checked'" if (@page.categories.include? "all") %> >
All
</label>
<% end %>
<% @status.each do |status| %>
<label class="checkbox">
<input type="checkbox" name="page[categories][]" value="<%= status.id.to_s %>" <%= "checked='checked'" if (@page.categories.include? status.id.to_s) %> />
<%= status.title %>(<%= status.role.title %>)
</label>
<% end %>
</div>
<% end %>
</div>
</div>
<div class="control-group"> <div class="control-group">
<label class="control-label"><%= "Layout type :" if params[:action] == "edit" && !@layout_types.blank? %></label> <label class="control-label"><%= "Layout type :" if params[:action] == "edit" && !@layout_types.blank? %></label>
<div id="layouts_list"> <div id="layouts_list">