fix member frontend show fields

This commit is contained in:
spen 2014-11-13 11:56:50 +08:00
parent 63b08335fa
commit d836ded7f3
3 changed files with 57 additions and 31 deletions

View File

@ -521,7 +521,7 @@ class Admin::MembersController < OrbitMemberController
if !params[:role_field_values].nil?
params[:role_field_values].each_with_index do |r,i|
field_value = r.last[:id].present?
@custom_field_value = AttributeValue.put_field_values(@member, r.last, r.last[:attribute_field_id], field_value)
@custom_field_value = AttributeValue.put_field_values(@member, r.last, r.last[:id], field_value)
end
end
if params[:edit_type]=="edit_privilege"

View File

@ -3,12 +3,11 @@ class MembersController < ApplicationController
page_roles = OrbitHelper.page_categories
page_role_status = OrbitHelper.page_role_status
fields_to_show = [
{"key"=>"job_title", "type"=>"role","sort_order"=>1},
{"key"=>"name", "type"=>"profile","sort_order"=>2,"link_to_show"=>true},
{"key"=>"discipline", "type"=>"role", "max_length"=>12},
{"key"=>"email", "type"=>"profile"},
{"key"=>"office_tel", "type"=>"profile"}
]
{"key"=>"name", "type"=>"profile","sort_order"=>2,"link_to_show"=>true},
{"key"=>"discipline", "type"=>"role", "max_length"=>12},
{"key"=>"email", "type"=>"profile"},
{"key"=>"office_tel", "type"=>"profile"}
]
if OrbitHelper.member_sort_position
sort = "data['list_order']"
@ -37,10 +36,12 @@ class MembersController < ApplicationController
role_list = []
roles.each do |role|
attribute_field = AttributeField.where(:key => 'job_title', :role_id => role['id']).first
role_fields_to_show = [{"id"=> attribute_field.id.to_s, "key"=>"job_title", "type"=>"role","sort_order"=>1}] + fields_to_show if !attribute_field.blank?
status_list = []
if !role['status'].blank?
role['status'].each do |status|
member_profiles = get_members_by_status(status, sort, fields_to_show)
member_profiles = get_members_by_status(status, sort, role_fields_to_show)
status_list << { "status-title" => status.title, "members" => member_profiles } if !member_profiles.blank?
end
else
@ -49,7 +50,7 @@ class MembersController < ApplicationController
role_status_ids = role_status.collect{|status| status.id.to_s}
role_status.each do |status|
member_profiles = get_members_by_status(status, sort, fields_to_show)
member_profiles = get_members_by_status(status, sort, role_fields_to_show)
next if member_profiles.blank?
status_list << { "status-title" => status.title, "members" => member_profiles }
end
@ -97,26 +98,44 @@ class MembersController < ApplicationController
params = OrbitHelper.params
member = MemberProfile.find_by(uid: params[:uid])
profile_data = []
#role status
member.roles.where(:disabled => false).asc("_id").collect do |role|
role_status = member.role_statuses.where(role_id: role.id).map{|t|t.title.to_s}.join(',') rescue ''
profile_data = profile_data.push({"key"=>"role_status", "title"=>"", "value"=> role_status, "title_class"=>"member-data-title-role-status", "value_class"=>"member-data-value-role-status"}) if !role_status.blank?
attribute_field = role.attribute_fields.where(:key => 'job_title').first
profile_data = profile_data + member_data(member, [{"id"=> attribute_field.id.to_s, "key"=> attribute_field.key, "type"=>"role"}]) if !attribute_field.blank? and !attribute_field.to_show.blank?
end
fields_to_show = [
{"key"=>"job_title", "type"=>"role"},
{"key"=>"name", "type"=>"profile"},
{"key"=>"office_tel", "type"=>"profile"},
{"key"=>"fax", "type"=>"custom"},
{"key"=>"email", "type"=>"profile"},
{"key"=>"discipline", "type"=>"role"},
{"key"=>"research_expertise", "type"=>"role"},
{"key"=>"reference_website_of_individual_publication", "type"=>"role"},
{"key"=>"reference_website_of_individual_research", "type"=>"role"},
{"key"=>"autobiography", "type"=>"profile"},
{"key"=>"website", "type"=>"custom"},
{"key"=>"experience", "type"=>"custom"},
{"key"=>"mobile", "type"=>"custom"}
]
{"key"=>"name", "type"=>"profile"},
{"key"=>"office_tel", "type"=>"profile"},
{"key"=>"email", "type"=>"profile"}
]
profile_data = profile_data + member_data(member, fields_to_show)
profile_data = member_data(member, fields_to_show)
profile_fields_to_show = []
roles = member.roles.collect{|role| {"role" => role.title} }
# member info
infos = MemberInfo.order('created_at DESC')
infos.each do |info|
info.member_profile_fields.each do |member_profile_field|
profile_fields_to_show << {"id"=> member_profile_field.id.to_s, "key"=> member_profile_field.key, "type"=>"custom"} if !member_profile_field.to_show.blank?
end
end
profile_data = profile_data + member_data(member, profile_fields_to_show)
# member role
role_fields_to_show = []
member.roles.where(:disabled => false).asc("_id").collect do |role|
role.attribute_fields.where(:key.ne => 'job_title').asc("_id").each do |attribute_field|
role_fields_to_show << {"id"=> attribute_field.id.to_s, "key"=> attribute_field.key, "type"=>"role"} if !attribute_field.to_show.blank?
end
end
profile_data = profile_data + member_data(member, role_fields_to_show)
# member plugin
plugins = OrbitApp::Plugin::Registration.all rescue nil
plugin_list = plugins.collect.with_index do |plugin, idx|
intro = PersonalPluginIntro.find_by(member_profile_id: member.id, _type: "#{plugin.app_name}Intro") rescue nil
@ -144,7 +163,6 @@ class MembersController < ApplicationController
plugin_list = plugin_list.reject{|plugin| plugin['plugin_data'].blank?}
{
"roles" => roles,
"plugins" => plugin_list,
"profile_data" => profile_data,
"data" => {
@ -162,9 +180,17 @@ class MembersController < ApplicationController
when 'profile'
field_data = member.get_attribute_data(field) rescue {}
when 'custom'
field_data = member.member_profile_field_values.find_by(:key=>field['key']).get_field_value rescue {}
if !field['id'].blank?
field_data = member.member_profile_field_values.find_by(:member_profile_field_id=>field['id'],:key=>field['key']).get_field_value rescue {}
else
field_data = member.member_profile_field_values.find_by(:key=>field['key']).get_field_value rescue {}
end
when 'role'
field_data = member.attribute_values.find_by(:key=>field['key']).get_field_value rescue {}
if !field['id'].blank?
field_data = member.attribute_values.find_by(:attribute_field_id=>field['id'],:key=>field['key']).get_field_value rescue {}
else
field_data = member.attribute_values.find_by(:key=>field['key']).get_field_value rescue {}
end
end
next if field_data.blank? or field_data['value'].blank?

View File

@ -101,7 +101,7 @@ if Role.count==0
role_status.save
attribute_field = AttributeField.new
attribute_field.key = 'Job_Title'
attribute_field.key = 'job_title'
attribute_field.role_id = role.id
attribute_field.title_translations = {:en=>'Job Title', :zh_tw=>'職稱'}
attribute_field.markup = 'select'
@ -175,7 +175,7 @@ if Role.count==0
role_status.save
attribute_field = AttributeField.new
attribute_field.key = 'Job_Title'
attribute_field.key = 'job_title'
attribute_field.role_id = role.id
attribute_field.title_translations = {:en=>'Job Title', :zh_tw=>'職稱'}
attribute_field.markup = 'select'
@ -258,7 +258,7 @@ if User.count==0
user.member_profile = profile
user.user_name = "admin"
user.password = "Ab-5508881"
user.email = "servicet@rulingcom.com"
user.email = "service@rulingcom.com"
user.approved = true
user.save