From 77b31482e55967f5895e81c08ad0e01489b61b54 Mon Sep 17 00:00:00 2001 From: Saurabh Bhatia Date: Sun, 29 Jun 2014 20:42:15 +0800 Subject: [PATCH] Only the fields with a value will be displayed --- app/controllers/admin/members_controller.rb | 8 ++- app/controllers/members_controller.rb | 50 +++++++++++++------ app/models/member_profile.rb | 30 +++++++++++ .../modules/member/show.html.erb | 43 ++++------------ 4 files changed, 81 insertions(+), 50 deletions(-) diff --git a/app/controllers/admin/members_controller.rb b/app/controllers/admin/members_controller.rb index 45f7bd7..c392b2a 100644 --- a/app/controllers/admin/members_controller.rb +++ b/app/controllers/admin/members_controller.rb @@ -113,7 +113,6 @@ class Admin::MembersController < OrbitMemberController @user = User.new(user_params) rescue nil if @member.save @user.member_profile_id = @member.id - if !params[:member_profile_field_values].nil? params[:member_profile_field_values].each_with_index do |m,i| @custom_field_value = @member.member_profile_field_values.build(value: m.second["value"], member_profile_field_id: m.second["member_profile_field_id"]) @@ -121,6 +120,13 @@ class Admin::MembersController < OrbitMemberController end end + 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) + end + end + @user.save redirect_to admin_members_path else diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb index eee76c4..9990a63 100644 --- a/app/controllers/members_controller.rb +++ b/app/controllers/members_controller.rb @@ -106,9 +106,9 @@ class MembersController < ApplicationController if (cf.member_profile_field.markup.eql?("text_field") || cf.member_profile_field.markup.eql?("text_area")) custom_field_value = cf.value[I18n.locale] elsif (cf.member_profile_field.markup.eql?("select") || cf.member_profile_field.markup.eql?("radio_button")) - custom_field_value = cf.member_profile_field.markup_value["#{cf.value}"][I18n.locale] + custom_field_value = cf.member_profile_field.markup_value["#{cf.value}"][I18n.locale] rescue nil elsif cf.member_profile_field.markup.eql?("address") - custom_field_value = cf[:address_key][I18n.locale].map{|k,v| v}.join(', ') + custom_field_value = cf[:address_key][I18n.locale].map{|k,v| v}.delete_if(&:blank?).join(', ') elsif cf.member_profile_field.markup.eql?("date") case cf.member_profile_field.typeC['format'] @@ -122,13 +122,21 @@ class MembersController < ApplicationController custom_field_value = cf.value.to_date.strftime("%Y") end elsif cf.member_profile_field.markup.eql?("checkbox") - custom_field_value = cf.value.map {|v| cf.member_profile_field.markup_value["#{v}"][I18n.locale]}.join(', ') + custom_field_value = cf.value.map {|v| cf.member_profile_field.markup_value["#{v}"][I18n.locale]}.join(', ') rescue nil end + if !custom_field_value.blank? { "custom_field_title" => cf.member_profile_field.title, "custom_field_value" => custom_field_value } + else + { + "custom_field_title" => "", + "custom_field_value" => "" + } + end end + custom_fields_final = custom_fields.map {|c| c.delete_if {|k,v| (v.nil? || v.blank?)}}.delete_if(&:blank?) role_fields = member.attribute_values.collect do |rf| if (rf.attribute_field.markup.eql?("text_field") || rf.attribute_field.markup.eql?("text_area")) @@ -136,7 +144,7 @@ class MembersController < ApplicationController 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] rescue nil 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}.delete_if(&:blank?).join(', ') elsif rf.attribute_field.markup.eql?("date") case rf.attribute_field.typeC['format'] @@ -152,32 +160,44 @@ class MembersController < ApplicationController elsif rf.attribute_field.markup.eql?("checkbox") role_field_value = rf.value.map {|v| rf.attribute_field.markup_value["#{v}"][I18n.locale]}.join(', ') rescue nil end - + if !role_field_value.blank? { "role_field_title" => rf.attribute_field.title, "role_field_value" => role_field_value } + else + { + "role_field_title" => "", + "role_field_value" => "" + } + end end + role_fields_final = role_fields.map {|r| r.delete_if {|k,v| (v.nil? || v.blank?)}}.delete_if(&:blank?) roles = member.roles.collect do |role| { "role" => role.title } end + data = [] + member.values_for_show.each do |key,value| + data << {"key" => key.humanize, "value" => value} + end + autobiography = [] + if !member.get_autobiography_for_show.blank? + autobiography << {"key" => "#{member.get_autobiography_for_show.first[0].capitalize}", "value" => member.get_autobiography_for_show["autobiography"]} + end + image = member.get_image_for_show["img_src"] { "roles" => roles, "plugins" => plugin_list, - "custom_fields" => custom_fields, - "role_fields" => role_fields, - "data" => { - "name" => member.name, + "custom_fields_final" => custom_fields_final, + "role_fields_final" => role_fields_final, + "member_data" => data, + "autobiography_data" => autobiography, + "data" => { "img_src" => image, - "email" => member.email, - "autobiography" => member.autobiography, - "gender" => member.sex, - "office" => member.office_tel, - "birthday" => member.birthday, - "id" => member.sid + "name" => member.name } } end diff --git a/app/models/member_profile.rb b/app/models/member_profile.rb index 2bbaf5b..4659f77 100644 --- a/app/models/member_profile.rb +++ b/app/models/member_profile.rb @@ -120,6 +120,36 @@ class MemberProfile member_data_tmp = member_data.collect {|v| v[1] } end + def values_for_show + attribute_values = self.attributes.select{|k,v| v if (k.in?(["office_tel","sid","email"]) && v.present?)} + name_fields = {"name" => self.name} + + if self.sex.present? + gender_fields = {"gender" => self.sex} + end + + values = [attribute_values, name_fields, gender_fields].delete_if(&:nil?) + values.inject(&:merge) + end + + def get_image_for_show + if self.avatar.present? + image = self.avatar.thumb.url + else + image = "http://placehold.it/100x100" + end + + image_fields = {"img_src" => image} + end + + def get_autobiography_for_show + if autobiography.present? + autobiography = {"autobiography" => self.attributes["autobiography"][I18n.locale]} + else + autobiography = {} + end + end + def assign_default_position? self.position.nil? || self.parent_id_changed? end diff --git a/app/templates/orbit_bootstrap/modules/member/show.html.erb b/app/templates/orbit_bootstrap/modules/member/show.html.erb index ef40911..8276624 100644 --- a/app/templates/orbit_bootstrap/modules/member/show.html.erb +++ b/app/templates/orbit_bootstrap/modules/member/show.html.erb @@ -11,48 +11,23 @@ -
+

{{role_field_title}} : {{role_field_value}}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
id number:{{id}}
e-mail:{{email}}
gender:{{gender}}
birthday:{{birthday}}
office telephone:{{office}}
+
+

{{key}} : {{value}}

+
-
+

{{custom_field_title}} : {{custom_field_value}}

-

Autobiography:

-

{{autobiography}}

+
+

{{key}}:

+

{{value}}

+