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,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
{

View File

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

View File

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

View File

@ -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')

View File

@ -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)

View File

@ -1,25 +1,28 @@
<div class="index-members">
<h3 class="index-title">
<span>{{widget-title}}</span>
</h3>
<div class="row" module="member" data-level="0" data-list="members">
<div class="index-content col-sm-6">
<div class="boxes-inner">
<div class="index-pic">
<img src="{{img_src}}" alt="">
</div>
<section class="index-part">
<h4 class="index-part-title">
<a href="{{link_to_show}}">{{name}}</a>
</h4>
<div data-level="1" data-list="roles">
<p class="index-part-subtitle">{{role}}</p>
<div class="index" module="member">
<h2 class="widget-title">{{widget-title}}</h2>
<div class="list-group">
<div class="list-group-item" data-list="stats" data-level="0">
<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="boxes-inner">
<div class="index-pic">
<img src="{{img_src}}" alt="">
</div>
<section class="index-part">
<h4 class="index-part-title">
<a href="{{link_to_show}}">{{name}}</a>
</h4>
<div data-level="2" data-list="roles">
<p class="index-part-subtitle">{{role}}</p>
</div>
<p class="index-part-subtitle">{{email}}</p>
<a class="more" href="{{link_to_show}}">Read More »</a>
</section>
</div>
<p class="index-part-subtitle">{{email}}</p>
<a class="more" href="{{link_to_show}}">Read More »</a>
</section>
</div>
</div>
</ul>
</div>
</div>
</div>
{{pagination_goes_here}}
</div>

View File

@ -46,6 +46,27 @@
<% end %>
</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">
<label class="control-label"><%= "Layout type :" if params[:action] == "edit" && !@layout_types.blank? %></label>
<div id="layouts_list">