diff --git a/app/assets/images/menber-pic.png b/app/assets/images/member-pic.png
similarity index 100%
rename from app/assets/images/menber-pic.png
rename to app/assets/images/member-pic.png
diff --git a/app/assets/javascripts/ckeditor/config.js.erb b/app/assets/javascripts/ckeditor/config.js.erb
index 3623438..06c2ec9 100644
--- a/app/assets/javascripts/ckeditor/config.js.erb
+++ b/app/assets/javascripts/ckeditor/config.js.erb
@@ -9,6 +9,7 @@ CKEDITOR.editorConfig = function( config ) {
config.height = 400;
config.resize_minHeight = 400;
config.toolbarCanCollapse = true;
+ config.allowedContent = true;
config.plugins = 'dialogui,dialog,about,a11yhelp,dialogadvtab,basicstyles,blockquote,clipboard,button,panelbutton,panel,floatpanel,colorbutton,colordialog,templates,menu,contextmenu,resize,toolbar,elementspath,enterkey,entities,popup,filebrowser,find,image,fakeobjects,floatingspace,listblock,richcombo,font,format,horizontalrule,htmlwriter,iframe,wysiwygarea,indent,indentblock,indentlist,justify,menubutton,link,list,liststyle,magicline,maximize,newpage,pastetext,pastefromword,removeformat,selectall,showblocks,showborders,sourcearea,specialchar,scayt,stylescombo,tab,table,tabletools,undo,wsc,youtube,codemirror';
diff --git a/app/assets/javascripts/lib/items/items.js.erb b/app/assets/javascripts/lib/items/items.js.erb
index 7ac8c8d..ba852a3 100755
--- a/app/assets/javascripts/lib/items/items.js.erb
+++ b/app/assets/javascripts/lib/items/items.js.erb
@@ -148,6 +148,12 @@ var Items = function(){
type : "get",
dataType : "json"
}).done(function(data){
+ if(this_value=="member"){
+ $("#member_sort_setting").html("<%= I18n.t(:sort) %>:
");
+ }else{
+ $("#member_sort_setting").html("");
+ }
+
var controlDiv = $("
");
if(data.categories.length){
categories_list.parent().find("label.control-label").text("<%= I18n.t(:category) %> :");
diff --git a/app/assets/javascripts/jquery.cycle2.js.map b/app/assets/javascripts/plugin/jquery.cycle2.js.map
similarity index 100%
rename from app/assets/javascripts/jquery.cycle2.js.map
rename to app/assets/javascripts/plugin/jquery.cycle2.js.map
diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb
index 4ce0fb1..bc07ad0 100644
--- a/app/controllers/members_controller.rb
+++ b/app/controllers/members_controller.rb
@@ -3,6 +3,26 @@ 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"}
+ ]
+
+ if OrbitHelper.member_sort_position
+ sort = "data['list_order']"
+ else
+ sort = fields_to_show
+ .collect.with_index{|field,idx| {'sort_order'=>field['sort_order'], 'index'=>idx}}
+ .select{|field|!field['sort_order'].blank?}
+ .sort_by{|field|field['sort_order']}
+ .collect.with_index{|field| "data['profile_data'][#{field['index']}]['sort_value'] rescue 0"}
+
+ sort = '[('+sort.join('),(')+')]'
+ end
+
if page_roles.include?("all")
roles = Role.all.collect do |role|
{ "title" => role.title, "id" => role.id }
@@ -21,7 +41,7 @@ class MembersController < ApplicationController
status_list = []
if !role['status'].blank?
role['status'].each do |status|
- member_profiles = get_members_by_status(status, role['id'])
+ member_profiles = get_members_by_status(status, sort, fields_to_show)
status_list << { "status-title" => status.title, "members" => member_profiles } if !member_profiles.blank?
end
else
@@ -29,21 +49,20 @@ class MembersController < ApplicationController
role_status = RoleStatus.order_by(:id=>"asc").where(:role_id=>role['id'])
role_status_ids = role_status.collect{|status| status.id.to_s}
role_status.each do |status|
- member_profiles = get_members_by_status(status, role['id'])
+ member_profiles = get_members_by_status(status, sort, fields_to_show)
next if member_profiles.blank?
status_list << { "status-title" => status.title, "members" => member_profiles }
end
# Members without status
member_profiles = []
MemberProfile.not_in(:role_status_ids.in=>role_status_ids).where(:role_ids.in=>[role['id']]).collect do |profile|
- member_profiles << get_member_data(profile, role['id'])
+ member_profiles << get_member_data(profile, fields_to_show)
end
- member_profiles = member_profiles.sort_by{|a|[a["job-title-value"],a["name"]] }
+ member_profiles = member_profiles.sort_by{|data| eval(sort)}
status_list << { "status-title" => role['title'], "members" => member_profiles } if !member_profiles.blank?
end
role_list << { "role-title" => role['title'], "status-list" => status_list }
end
-
{
"roles" => role_list,
"extras" => {
@@ -52,224 +71,116 @@ class MembersController < ApplicationController
}
end
- def get_members_by_status(status, role_id)
+ def get_members_by_status(status, sort, fields_to_show)
member_profiles = []
- status.member_profiles.each do |profile|
- member_profiles<profile.name,
- "email" => profile.email,
- "image" => profile.avatar.present? ? profile.avatar.thumb.url : "http://placehold.it/100x100",
- "link_to_show" => OrbitHelper.url_to_show(profile.to_param)
- }
- end
- end
-
- def get_teacher_data(profile, role_id)
- job_title_value = profile.attribute_values.where(:key=>'job_title', :attribute_field_id.in=>Role.find(role_id).attribute_field_ids).first
- job_title = job_title_value.attribute_field.option_list[job_title_value.value.to_s][I18n.locale.to_s] rescue ""
-
- discipline = profile.attribute_values.where(:key=>'discipline', :attribute_field_id.in=>Role.find(role_id).attribute_field_ids).first.value[I18n.locale][0..16]+'...' rescue ""
- phone_office = profile.attributes.select{|k,v| v if (k.eql?("office_tel") && v.present?)}
+ def get_member_data(member, fields_to_show)
+ image = member.avatar.present? ? member.avatar.thumb.url : ActionController::Base.helpers.asset_path('member-pic.png')
{
- "name"=>profile.name,
- "email" => profile.email,
- "job-title" => job_title,
- "job-title-value" => (job_title_value.value.to_s rescue ""),
- "discipline" => discipline,
- "phone-office" => (phone_office['office_tel'] rescue ""),
- "image" => profile.avatar.present? ? profile.avatar.thumb.url : "http://placehold.it/100x100",
- "position" => profile.position,
- "link_to_show" => OrbitHelper.url_to_show(profile.to_param)
- }
- end
-
- def get_staff_data(profile, role_id)
- job_title_value = profile.attribute_values.where(:key=>'job_title', :attribute_field_id.in=>Role.find(role_id).attribute_field_ids).first
- job_title = job_title_value.attribute_field.option_list[job_title_value.value.to_s][I18n.locale.to_s] rescue ""
- {
- "name"=>profile.name,
- "email" => profile.email,
- "job-title" => job_title,
- "job-title-value" => (job_title_value.value.to_s rescue ""),
- "image" => profile.avatar.present? ? profile.avatar.thumb.url : "http://placehold.it/100x100",
- "position" => profile.position,
- "link_to_show" => OrbitHelper.url_to_show(profile.to_param)
+ 'profile_data'=>member_data(member, fields_to_show),
+ 'list_order' => member.position,
+ 'name' => member.name,
+ 'image'=>image,
+ "link_to_show" => OrbitHelper.url_to_show(member.to_param)
}
end
def show
- params = OrbitHelper.params
+ params = OrbitHelper.params
+ member = MemberProfile.find_by(uid: params[:uid])
- member = MemberProfile.find_by(uid: params[:uid])
+ 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"}
+ ]
- 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") rescue nil
+ profile_data = member_data(member, fields_to_show)
- 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_plugin_show(p.to_param,plugin.module_app_name.underscore)
- }
- 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|
- {
- "data_title" => p.slug_title,
- "link_to_show" => OrbitHelper.url_to_plugin_show(p.to_param,plugin.module_app_name.underscore)
- }
- end
- {
- "plugin_data" => pd,
- "plugin_title" => plugin.app_name.titleize
- }
- # end
- elsif intro.brief_intro == true
+ roles = member.roles.collect{|role| {"role" => role.title} }
+
+ 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
+ if intro.nil? or intro.complete_list
+ plugin_data = plugin.app_name.constantize.where(member_profile_id: member) rescue nil
+ pd = plugin_data.collect do |p|
+ slug_title = ["JournalPaper","WritingConference"].include?(plugin.app_name) ? p.create_link : p.slug_title
+ {
+ "data_title" => slug_title,
+ "link_to_show" => OrbitHelper.url_to_plugin_show(p.to_param,plugin.module_app_name.underscore)
+ }
+ end
+ elsif intro.brief_intro == true
pd = []
pd << {"data_title" => intro.text.html_safe}
- {
- "plugin_data" => pd,
- "plugin_title" => plugin.app_name.titleize
- }
- end
- end
+ end
- if member.avatar.present?
- image = member.avatar.thumb.url
- else
- image = "http://placehold.it/100x100"
- end
-
- custom_fields = member.member_profile_field_values.collect do |cf|
- 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] rescue nil
- elsif cf.member_profile_field.markup.eql?("address")
- 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']
- when 'format1'
- custom_field_value = cf.value.to_date.strftime("%Y/%m/%d")
- when 'format2'
- custom_field_value = cf.value.to_date.strftime("%Y/%m/%d")
- when 'format3'
- custom_field_value = cf.value.to_date.strftime("%Y/%m")
- when 'format4'
- 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(', ') 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?)
+ "plugin_data" => pd,
+ "plugin_name" => plugin.module_app_name.underscore,
+ "plugin_title" => t('module_name.'+plugin.module_app_name.underscore),
+ "plugin_class" => idx==0 ? "active" : ""
+ }
+ end
+ plugin_list = plugin_list.reject{|plugin| plugin['plugin_data'].blank?}
- role_fields = member.attribute_values.collect do |rf|
- 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] rescue nil
- elsif rf.attribute_field.markup.eql?("address")
- 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']
- when 'format1'
- role_field_value = rf.value.to_date.strftime("%Y/%m/%d")
- when 'format2'
- role_field_value = rf.value.to_date.strftime("%Y/%m/%d")
- when 'format3'
- role_field_value = rf.value.to_date.strftime("%Y/%m")
- when 'format4'
- 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(', ') 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_final" => custom_fields_final,
- "role_fields_final" => role_fields_final,
- "member_data" => data,
- "autobiography_data" => autobiography,
+ {
+ "roles" => roles,
+ "plugins" => plugin_list,
+ "profile_data" => profile_data,
"data" => {
- "img_src" => image,
+ "image" => member.avatar.present? ? member.avatar.thumb.url : ActionController::Base.helpers.asset_path('member-pic.png'),
"name" => member.name
}
- }
- end
-
- def personal_plugin
- params = OrbitHelper.params
- plugin_class = params[:plugin_name].constantize
- plugin_value = plugin_class.find_by(uid: params[:uid])
- data = []
- plugin_value.values_for_view.each do |key,value|
- data << {"key" => key.humanize, "value" => value}
- end
- {
- "plugin_data" => data
}
end
+
+ def member_data(member, fields_to_show)
+ profile_data = []
+ fields_to_show.each do |field|
+ case field['type']
+ 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 {}
+ when 'role'
+ field_data = member.attribute_values.find_by(:key=>field['key']).get_field_value rescue {}
+ end
+ next if field_data.blank? or field_data['value'].blank?
+
+ if field['sort_order']
+ field_data['sort_value'] = field_data['val'].blank? ? field_data['value'] : field_data['val']
+ end
+
+ if field['link_to_show']
+ field_data['value'] = "#{field_data['value']} "
+ end
+
+ if field['max_length']
+ field_data['value'] = (field_data['value'].length > field['max_length']) ? field_data['value'][0..field['max_length']]+'...' : field_data['value']
+ end
+
+ field_data['title_class'] = "member-data-title-"+field['key'].underscore.gsub('_','-')
+ field_data['value_class'] = "member-data-value-"+field['key'].underscore.gsub('_','-')
+
+ profile_data.push(field_data)
+ end
+ return profile_data
+ end
end
diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb
index 1665cd6..1d8f0a5 100644
--- a/app/controllers/pages_controller.rb
+++ b/app/controllers/pages_controller.rb
@@ -82,6 +82,7 @@ class PagesController < ApplicationController
OrbitHelper.set_page_categories page.categories || []
OrbitHelper.set_page_tags page.tags || []
OrbitHelper.set_page_role_status page.role_status || []
+ OrbitHelper.set_member_sort_position page.member_sort_position
OrbitHelper.set_page_data_count page.data_count
if params[:layout].kind_of?(String)
layout = to_bool(params[:layout])
@@ -367,7 +368,7 @@ class PagesController < ApplicationController
page = Page.find(params[:page][:parent_page])
page.url = page.url == "/" ? "" : page.url
@url = page.url + "/#{params[:page][:page_id]}"
- p = params.require(:page).permit(:number, :page_type, :page_id, :module, :layout, :parent_page, :data_count, :enabled_for_mobile, enabled_for_sitemap: [], enabled_for: [], menu_enabled_for: [], categories: [], tags: [], role_status: [], name_translations: [:en, :zh_tw],external_url_translations: [:en, :zh_tw])
+ p = params.require(:page).permit(:number, :page_type, :page_id, :module, :layout, :parent_page, :data_count, :enabled_for_mobile, :member_sort_position, enabled_for_sitemap: [], enabled_for: [], menu_enabled_for: [], categories: [], tags: [], role_status: [], name_translations: [:en, :zh_tw],external_url_translations: [:en, :zh_tw])
p["url"] = @url
if p["external_url_translations"]
p["external_url_translations"]["en"] = p["external_url_translations"]["en"].sub("http://" + request.host_with_port,"")
@@ -377,7 +378,7 @@ class PagesController < ApplicationController
end
def page_update_params
- p = params.require(:page).permit(:number, :page_type, :page_id, :module, :layout, :parent_page, :data_count, :enabled_for_mobile, enabled_for_sitemap: [], enabled_for: [],menu_enabled_for: [], categories: [], tags: [], role_status: [], name_translations: [:en, :zh_tw], external_url_translations: [:en, :zh_tw])
+ p = params.require(:page).permit(:number, :page_type, :page_id, :module, :layout, :parent_page, :data_count, :enabled_for_mobile, :member_sort_position, enabled_for_sitemap: [], enabled_for: [],menu_enabled_for: [], categories: [], tags: [], role_status: [], name_translations: [:en, :zh_tw], external_url_translations: [:en, :zh_tw])
p["role_status"] = p["role_status"] || []
p["categories"] = p["categories"] || []
p["enabled_for"] = p["enabled_for"] || []
diff --git a/app/helpers/orbit_helper.rb b/app/helpers/orbit_helper.rb
index 96f5def..7e0c00d 100644
--- a/app/helpers/orbit_helper.rb
+++ b/app/helpers/orbit_helper.rb
@@ -15,6 +15,10 @@ module OrbitHelper
@role_status = role_status;
end
+ def self.set_member_sort_position(sort_position)
+ @sort_position = sort_position;
+ end
+
def self.set_page_data_count(data_count)
@data_count = data_count
end
@@ -46,6 +50,10 @@ module OrbitHelper
@role_status
end
+ def self.member_sort_position
+ @sort_position
+ end
+
def self.page_for_tag(tag)
page_for_tag = nil
pages = Page.where(:module => @module_app.key)
diff --git a/app/models/attribute_value.rb b/app/models/attribute_value.rb
index ff67d2d..0cb6e61 100644
--- a/app/models/attribute_value.rb
+++ b/app/models/attribute_value.rb
@@ -44,6 +44,47 @@ class AttributeValue
self[:temp_data] = value
end
+ def get_field_value
+ if (self.attribute_field.markup.eql?("text_field") || self.attribute_field.markup.eql?("text_area"))
+ field_value = self.value[I18n.locale]
+ elsif (self.attribute_field.markup.eql?("select") || self.attribute_field.markup.eql?("radio_button"))
+ field_value = self.attribute_field.markup_value["#{self.value}"][I18n.locale] rescue nil
+ elsif self.attribute_field.markup.eql?("address")
+ field_value = rf[:address_key][I18n.locale].map{|k,v| v}.delete_if(&:blank?).join(', ')
+ elsif self.attribute_field.markup.eql?("date")
+ case self.attribute_field.typeC['format']
+ when 'format1'
+ field_value = self.value.to_date.strftime("%Y/%m/%d")
+ when 'format2'
+ field_value = self.value.to_date.strftime("%Y/%m/%d")
+ when 'format3'
+ field_value = self.value.to_date.strftime("%Y/%m")
+ when 'format4'
+ field_value = self.value.to_date.strftime("%Y")
+ end
+ elsif self.attribute_field.markup.eql?("checkbox")
+ field_value = self.value.map {|v| self.attribute_field.markup_value["#{v}"][I18n.locale]}.join(', ') rescue nil
+ end
+
+ field_value = (field_value =~ /\A#{URI::regexp(['http', 'https'])}\z/) ? "#{field_value} " : field_value
+ field_value = (field_value =~ /\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i) ? "#{field_value} " : field_value
+
+ if !field_value.blank?
+ {
+ "key" => self.attribute_field.key,
+ "title" => self.attribute_field.title,
+ "value" => field_value,
+ "val" => field_value = self.value
+ }
+ else
+ {
+ "key" => self.attribute_field.key,
+ "title" => self.attribute_field.title,
+ "value" => "",
+ "val" => field_value = self.value
+ }
+ end
+ end
def get_value_by_locale(locale,add_more_index=nil)
case self.attribute_field.markup
diff --git a/app/models/member_profile.rb b/app/models/member_profile.rb
index f5d5026..9de02e4 100644
--- a/app/models/member_profile.rb
+++ b/app/models/member_profile.rb
@@ -123,16 +123,12 @@ 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)
+ def get_attribute_data(field)
+ data = self.send(field["key"]) rescue ""
+ data = (data =~ /\A#{URI::regexp(['http', 'https'])}\z/) ? "#{data} " : data
+ data = (data =~ /\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i) ? "#{data} " : data
+ field_data = data.blank? ? {} : {"key" => field["key"],"title" => I18n.t("users."+field["key"]), "value" =>data}
+ field_data
end
def get_image_for_show
@@ -145,14 +141,6 @@ class MemberProfile
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 delete_personal_plugin_data
OrbitApp::Plugin::Registration.all.each do |plugin|
class_name = plugin.app_name.constantize
diff --git a/app/models/member_profile_field_value.rb b/app/models/member_profile_field_value.rb
index 32324c2..5e5874f 100644
--- a/app/models/member_profile_field_value.rb
+++ b/app/models/member_profile_field_value.rb
@@ -122,11 +122,45 @@ class MemberProfileFieldValue
return @attribute_field_value
end
+ def get_field_value
+ if (self.member_profile_field.markup.eql?("text_field") || self.member_profile_field.markup.eql?("text_area"))
+ field_value = self.value[I18n.locale]
+ elsif (self.member_profile_field.markup.eql?("select") || self.member_profile_field.markup.eql?("radio_button"))
+ field_value = self.member_profile_field.markup_value["#{self.value}"][I18n.locale] rescue nil
+ elsif self.member_profile_field.markup.eql?("address")
+ field_value = cf[:address_key][I18n.locale].map{|k,v| v}.delete_if(&:blank?).join(', ')
+ elsif self.member_profile_field.markup.eql?("date")
+
+ case self.member_profile_field.typeC['format']
+ when 'format1'
+ field_value = self.value.to_date.strftime("%Y/%m/%d")
+ when 'format2'
+ field_value = self.value.to_date.strftime("%Y/%m/%d")
+ when 'format3'
+ field_value = self.value.to_date.strftime("%Y/%m")
+ when 'format4'
+ field_value = self.value.to_date.strftime("%Y")
+ end
+ elsif self.member_profile_field.markup.eql?("checkbox")
+ field_value = self.value.map {|v| self.member_profile_field.markup_value["#{v}"][I18n.locale]}.join(', ') rescue nil
+ end
+
+ field_value = (field_value =~ /\A#{URI::regexp(['http', 'https'])}\z/) ? "#{field_value} " : field_value
+ field_value = (field_value =~ /\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i) ? "#{field_value} " : field_value
+
+ {
+ "key" => self.member_profile_field.key,
+ "title" => self.member_profile_field.title,
+ "value" => (field_value.blank? ? "" : field_value),
+ "val" => field_value = self.value
+ }
+ end
+
protected
-def unset_all_lang_values
- VALID_LOCALES.each{|t| self.unset t}
- end
+ # def unset_all_lang_values
+ # VALID_LOCALES.each{|t| self.unset t}
+ # end
def data_proc
unless self[:temp_data].nil?
diff --git a/app/models/page.rb b/app/models/page.rb
index b33cb7f..964b34e 100644
--- a/app/models/page.rb
+++ b/app/models/page.rb
@@ -18,6 +18,7 @@ class Page
field :categories, type: Array, :default => []
field :tags, type: Array, :default => []
field :role_status, type: Array, :default => []
+ field :member_sort_position, type: Boolean, :default => false
field :enabled_for_sitemap, type: Array, :default => []
field :rss2_id, type: String
diff --git a/app/templates/orbit_bootstrap/modules/member/index.html.erb b/app/templates/orbit_bootstrap/modules/member/index.html.erb
index 24d52ba..0ede1de 100644
--- a/app/templates/orbit_bootstrap/modules/member/index.html.erb
+++ b/app/templates/orbit_bootstrap/modules/member/index.html.erb
@@ -1,34 +1,28 @@
-
- {{widget-title}}
-
-
-
{{role-title}}
-
-
-
{{status-title}}
-
+
+
+ {{status-title}}
+
-
-
-
+
+
+
-
-
-
- {{role-title}}
-
-
{{email}}
+
+
+
+ {{title}} {{value}}
+
+
+
diff --git a/app/templates/orbit_bootstrap/modules/member/index_staff.html.erb b/app/templates/orbit_bootstrap/modules/member/index_staff.html.erb
index c4d5ea7..0ede1de 100644
--- a/app/templates/orbit_bootstrap/modules/member/index_staff.html.erb
+++ b/app/templates/orbit_bootstrap/modules/member/index_staff.html.erb
@@ -1,27 +1,28 @@
-
- {{role-title}}
-
+
+
+ {{status-title}}
+
+
-
-
-
+
+
+
-
-
-
- {{job-title}}
-
-
{{email}}
+
+
+
+ {{title}} {{value}}
+
+
+
diff --git a/app/templates/orbit_bootstrap/modules/member/index_teacher.html.erb b/app/templates/orbit_bootstrap/modules/member/index_teacher.html.erb
index d70e011..0ede1de 100644
--- a/app/templates/orbit_bootstrap/modules/member/index_teacher.html.erb
+++ b/app/templates/orbit_bootstrap/modules/member/index_teacher.html.erb
@@ -3,27 +3,26 @@
+
{{status-title}}
-
-
-
-
-
-
- {{job-title}}
-
- {{name}}
- {{discipline}}
- {{phone-office}}
- {{email}}
-
-
+
+
+
+
+
+
+
+ {{title}} {{value}}
+
+
+
+
diff --git a/app/templates/orbit_bootstrap/modules/member/show.html.erb b/app/templates/orbit_bootstrap/modules/member/show.html.erb
index 8276624..df04c1f 100644
--- a/app/templates/orbit_bootstrap/modules/member/show.html.erb
+++ b/app/templates/orbit_bootstrap/modules/member/show.html.erb
@@ -1,40 +1,28 @@
-
-
-
{{name}}
+
+
+
+
+
+
+
+
+
{{title}} {{value}}
+
+
+
-
-
-
- Roles :
-
- {{role}}
-
-
-
-
-
{{role_field_title}} : {{role_field_value}}
-
-
-
-
-
-
{{custom_field_title}} : {{custom_field_value}}
-
-
-
-
-
{{key}}:
-
{{value}}
+
+
+
+
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/views/admin/members/_edit_order_list.html.erb b/app/views/admin/members/_edit_order_list.html.erb
index 0fe3d01..08d33b8 100644
--- a/app/views/admin/members/_edit_order_list.html.erb
+++ b/app/views/admin/members/_edit_order_list.html.erb
@@ -3,7 +3,7 @@
diff --git a/app/views/pages/_form.html.erb b/app/views/pages/_form.html.erb
index f00425b..d2c0b34 100644
--- a/app/views/pages/_form.html.erb
+++ b/app/views/pages/_form.html.erb
@@ -25,6 +25,18 @@
<%= f.hidden_field :page_type, value: "page" %>
+
+
+ <% if @module_app and @module_app.key.eql?("member") %>
+
<%= t(:sort) %>:
+
+ <%= f.radio_button :member_sort_position, false, checked: !@page.member_sort_position? %> <%= t(:sort_by_role_fields) %>
+ <%= f.radio_button :member_sort_position, true, checked: @page.member_sort_position?%> <%= t(:sort_manually) %>
+
<%= t(:sort_edit_order) %>
+
+ <% end %>
+
+
<%= t(:category)+" :" if params[:action] == "edit" && !@categories.blank? %>
diff --git a/config/application.rb b/config/application.rb
index 44d2141..126131f 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -23,8 +23,9 @@ module Orbit
I18n.load_path += Dir[Rails.root.join('lib', 'locale', '*.{rb,yml}')]
# set default locale to something other than :en
- I18n.default_locale = :en
- I18n.available_locales = [:en, :zh_tw]
+ config.i18n.enforce_available_locales = false
+ config.i18n.default_locale = :en
+ config.i18n.available_locales = [:en, :zh_tw]
config.autoload_paths += %W(#{config.root}/lib)
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 5b3c941..9e6e6df 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -648,6 +648,7 @@ en:
sid: ID No.
sid_note: Faculty ID No. or Student ID No.
sex: Gender
+ gender: Gender
user_id: User Account
user_id_note: Should be more than 3 characters and less than 50 characters
user_id_not_null: User account cannot be null
diff --git a/config/locales/zh_tw.yml b/config/locales/zh_tw.yml
index e808994..71e57b8 100644
--- a/config/locales/zh_tw.yml
+++ b/config/locales/zh_tw.yml
@@ -630,11 +630,12 @@ zh_tw:
female: 女性
unknown: 未知
last_name: 姓氏
- office_tel: 辦公室電話
+ office_tel: 聯絡電話
office_tel_note: 將公開於網頁
sid: 編號
sid_note: 教職員工編號或學生學號
sex: 性別
+ gender: 性別
user_id: 使用者帳號
user_id_note: 需介於3個字元至50個字元之間
user_id_not_null: 使用者帳號不能是空值
@@ -657,3 +658,7 @@ zh_tw:
visitors_today: 今日造訪人次
yes_: "是"
sort_number: 排序數
+ sort: 排序
+ sort_edit_order: 編輯排序
+ sort_manually: 手動排序
+ sort_by_role_fields: 依照身份欄位