From d836ded7f3bd926af835ad6c262eae13ecdf919e Mon Sep 17 00:00:00 2001 From: spen Date: Thu, 13 Nov 2014 11:56:50 +0800 Subject: [PATCH] fix member frontend show fields --- app/controllers/admin/members_controller.rb | 2 +- app/controllers/members_controller.rb | 80 ++++++++++++++------- config/environment.rb | 6 +- 3 files changed, 57 insertions(+), 31 deletions(-) diff --git a/app/controllers/admin/members_controller.rb b/app/controllers/admin/members_controller.rb index b3963ee..4406fb1 100644 --- a/app/controllers/admin/members_controller.rb +++ b/app/controllers/admin/members_controller.rb @@ -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" diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb index 79e5751..13cb49d 100644 --- a/app/controllers/members_controller.rb +++ b/app/controllers/members_controller.rb @@ -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? diff --git a/config/environment.rb b/config/environment.rb index c022e23..caa693c 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -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