forked from saurabh/orbit4-5
Rewrite member frontend, fix I18n.enforce_available_locales, update CKEditor setting
This commit is contained in:
parent
0f4ea70943
commit
69db2e2926
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
|
@ -9,6 +9,7 @@ CKEDITOR.editorConfig = function( config ) {
|
||||||
config.height = 400;
|
config.height = 400;
|
||||||
config.resize_minHeight = 400;
|
config.resize_minHeight = 400;
|
||||||
config.toolbarCanCollapse = true;
|
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';
|
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';
|
||||||
|
|
||||||
|
|
|
@ -148,6 +148,12 @@ var Items = function(){
|
||||||
type : "get",
|
type : "get",
|
||||||
dataType : "json"
|
dataType : "json"
|
||||||
}).done(function(data){
|
}).done(function(data){
|
||||||
|
if(this_value=="member"){
|
||||||
|
$("#member_sort_setting").html("<label class='control-label'><%= I18n.t(:sort) %>:</label><div class='controls'><input checked='checked' id='page_member_sort_position_false' name='page[member_sort_position]' type='radio' value='false'> <%= I18n.t(:sort_by_role_fields) %><br><input id='page_member_sort_position_true' name='page[member_sort_position]' type='radio' value='true'> <%= I18n.t(:sort_manually) %><a href='/admin/members/edit_order_list' target='_blank'> <%= I18n.t(:sort_edit_order) %> </a></div>");
|
||||||
|
}else{
|
||||||
|
$("#member_sort_setting").html("");
|
||||||
|
}
|
||||||
|
|
||||||
var controlDiv = $("<div class='controls'></div>");
|
var controlDiv = $("<div class='controls'></div>");
|
||||||
if(data.categories.length){
|
if(data.categories.length){
|
||||||
categories_list.parent().find("label.control-label").text("<%= I18n.t(:category) %> :");
|
categories_list.parent().find("label.control-label").text("<%= I18n.t(:category) %> :");
|
||||||
|
|
|
@ -3,6 +3,26 @@ class MembersController < ApplicationController
|
||||||
page_roles = OrbitHelper.page_categories
|
page_roles = OrbitHelper.page_categories
|
||||||
page_role_status = OrbitHelper.page_role_status
|
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")
|
if page_roles.include?("all")
|
||||||
roles = Role.all.collect do |role|
|
roles = Role.all.collect do |role|
|
||||||
{ "title" => role.title, "id" => role.id }
|
{ "title" => role.title, "id" => role.id }
|
||||||
|
@ -21,7 +41,7 @@ class MembersController < ApplicationController
|
||||||
status_list = []
|
status_list = []
|
||||||
if !role['status'].blank?
|
if !role['status'].blank?
|
||||||
role['status'].each do |status|
|
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?
|
status_list << { "status-title" => status.title, "members" => member_profiles } if !member_profiles.blank?
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
@ -29,21 +49,20 @@ class MembersController < ApplicationController
|
||||||
role_status = RoleStatus.order_by(:id=>"asc").where(:role_id=>role['id'])
|
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_ids = role_status.collect{|status| status.id.to_s}
|
||||||
role_status.each do |status|
|
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?
|
next if member_profiles.blank?
|
||||||
status_list << { "status-title" => status.title, "members" => member_profiles }
|
status_list << { "status-title" => status.title, "members" => member_profiles }
|
||||||
end
|
end
|
||||||
# Members without status
|
# Members without status
|
||||||
member_profiles = []
|
member_profiles = []
|
||||||
MemberProfile.not_in(:role_status_ids.in=>role_status_ids).where(:role_ids.in=>[role['id']]).collect do |profile|
|
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
|
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?
|
status_list << { "status-title" => role['title'], "members" => member_profiles } if !member_profiles.blank?
|
||||||
end
|
end
|
||||||
role_list << { "role-title" => role['title'], "status-list" => status_list }
|
role_list << { "role-title" => role['title'], "status-list" => status_list }
|
||||||
end
|
end
|
||||||
|
|
||||||
{
|
{
|
||||||
"roles" => role_list,
|
"roles" => role_list,
|
||||||
"extras" => {
|
"extras" => {
|
||||||
|
@ -52,224 +71,116 @@ class MembersController < ApplicationController
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_members_by_status(status, role_id)
|
def get_members_by_status(status, sort, fields_to_show)
|
||||||
member_profiles = []
|
member_profiles = []
|
||||||
status.member_profiles.each do |profile|
|
status.member_profiles.each do |member|
|
||||||
member_profiles<<get_member_data(profile, role_id)
|
member_profiles<<get_member_data(member, fields_to_show)
|
||||||
end
|
end
|
||||||
return member_profiles.sort_by{|a|[a['job-title-value'],a["name"]] }
|
return member_profiles.sort_by{|data| eval(sort)}
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_member_data(profile, role_id)
|
def get_member_data(member, fields_to_show)
|
||||||
params = OrbitHelper.params
|
image = member.avatar.present? ? member.avatar.thumb.url : ActionController::Base.helpers.asset_path('member-pic.png')
|
||||||
case params['layout_type']
|
|
||||||
when "index_teacher"
|
|
||||||
get_teacher_data(profile, role_id)
|
|
||||||
when "index_staff"
|
|
||||||
get_staff_data(profile, role_id)
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
"name"=>profile.name,
|
'profile_data'=>member_data(member, fields_to_show),
|
||||||
"email" => profile.email,
|
'list_order' => member.position,
|
||||||
"image" => profile.avatar.present? ? profile.avatar.thumb.url : "http://placehold.it/100x100",
|
'name' => member.name,
|
||||||
"link_to_show" => OrbitHelper.url_to_show(profile.to_param)
|
'image'=>image,
|
||||||
}
|
"link_to_show" => OrbitHelper.url_to_show(member.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?)}
|
|
||||||
{
|
|
||||||
"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)
|
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
params = OrbitHelper.params
|
params = OrbitHelper.params
|
||||||
|
|
||||||
member = MemberProfile.find_by(uid: params[:uid])
|
member = MemberProfile.find_by(uid: params[:uid])
|
||||||
|
|
||||||
plugins = OrbitApp::Plugin::Registration.all rescue nil
|
fields_to_show = [
|
||||||
plugin_list = plugins.collect do |plugin|
|
{"key"=>"job_title", "type"=>"role"},
|
||||||
intro = PersonalPluginIntro.find_by(member_profile_id: member.id, _type: "#{plugin.app_name}Intro") rescue nil
|
{"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"}
|
||||||
|
]
|
||||||
|
|
||||||
if intro.nil?
|
profile_data = member_data(member, fields_to_show)
|
||||||
|
|
||||||
|
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
|
plugin_data = plugin.app_name.constantize.where(member_profile_id: member) rescue nil
|
||||||
pd = plugin_data.collect do |p|
|
pd = plugin_data.collect do |p|
|
||||||
|
slug_title = ["JournalPaper","WritingConference"].include?(plugin.app_name) ? p.create_link : p.slug_title
|
||||||
{
|
{
|
||||||
"data_title" => p.slug_title,
|
"data_title" => slug_title,
|
||||||
"link_to_show" => OrbitHelper.url_to_plugin_show(p.to_param,plugin.module_app_name.underscore)
|
"link_to_show" => OrbitHelper.url_to_plugin_show(p.to_param,plugin.module_app_name.underscore)
|
||||||
}
|
}
|
||||||
end
|
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
|
elsif intro.brief_intro == true
|
||||||
pd = []
|
pd = []
|
||||||
pd << {"data_title" => intro.text.html_safe}
|
pd << {"data_title" => intro.text.html_safe}
|
||||||
|
end
|
||||||
|
|
||||||
{
|
{
|
||||||
"plugin_data" => pd,
|
"plugin_data" => pd,
|
||||||
"plugin_title" => plugin.app_name.titleize
|
"plugin_name" => plugin.module_app_name.underscore,
|
||||||
|
"plugin_title" => t('module_name.'+plugin.module_app_name.underscore),
|
||||||
|
"plugin_class" => idx==0 ? "active" : ""
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
plugin_list = plugin_list.reject{|plugin| plugin['plugin_data'].blank?}
|
||||||
|
|
||||||
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?)
|
|
||||||
|
|
||||||
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,
|
"roles" => roles,
|
||||||
"plugins" => plugin_list,
|
"plugins" => plugin_list,
|
||||||
"custom_fields_final" => custom_fields_final,
|
"profile_data" => profile_data,
|
||||||
"role_fields_final" => role_fields_final,
|
|
||||||
"member_data" => data,
|
|
||||||
"autobiography_data" => autobiography,
|
|
||||||
"data" => {
|
"data" => {
|
||||||
"img_src" => image,
|
"image" => member.avatar.present? ? member.avatar.thumb.url : ActionController::Base.helpers.asset_path('member-pic.png'),
|
||||||
"name" => member.name
|
"name" => member.name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
def personal_plugin
|
def member_data(member, fields_to_show)
|
||||||
params = OrbitHelper.params
|
profile_data = []
|
||||||
plugin_class = params[:plugin_name].constantize
|
fields_to_show.each do |field|
|
||||||
plugin_value = plugin_class.find_by(uid: params[:uid])
|
case field['type']
|
||||||
data = []
|
when 'profile'
|
||||||
plugin_value.values_for_view.each do |key,value|
|
field_data = member.get_attribute_data(field) rescue {}
|
||||||
data << {"key" => key.humanize, "value" => value}
|
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
|
end
|
||||||
{
|
next if field_data.blank? or field_data['value'].blank?
|
||||||
"plugin_data" => data
|
|
||||||
}
|
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'] = "<a href='#{OrbitHelper.url_to_show(member.to_param)}'>#{field_data['value']}</a>"
|
||||||
|
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
|
||||||
end
|
end
|
||||||
|
|
|
@ -82,6 +82,7 @@ class PagesController < ApplicationController
|
||||||
OrbitHelper.set_page_categories page.categories || []
|
OrbitHelper.set_page_categories page.categories || []
|
||||||
OrbitHelper.set_page_tags page.tags || []
|
OrbitHelper.set_page_tags page.tags || []
|
||||||
OrbitHelper.set_page_role_status page.role_status || []
|
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
|
OrbitHelper.set_page_data_count page.data_count
|
||||||
if params[:layout].kind_of?(String)
|
if params[:layout].kind_of?(String)
|
||||||
layout = to_bool(params[:layout])
|
layout = to_bool(params[:layout])
|
||||||
|
@ -367,7 +368,7 @@ class PagesController < ApplicationController
|
||||||
page = Page.find(params[:page][:parent_page])
|
page = Page.find(params[:page][:parent_page])
|
||||||
page.url = page.url == "/" ? "" : page.url
|
page.url = page.url == "/" ? "" : page.url
|
||||||
@url = page.url + "/#{params[:page][:page_id]}"
|
@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
|
p["url"] = @url
|
||||||
if p["external_url_translations"]
|
if p["external_url_translations"]
|
||||||
p["external_url_translations"]["en"] = p["external_url_translations"]["en"].sub("http://" + request.host_with_port,"")
|
p["external_url_translations"]["en"] = p["external_url_translations"]["en"].sub("http://" + request.host_with_port,"")
|
||||||
|
@ -377,7 +378,7 @@ class PagesController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def page_update_params
|
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["role_status"] = p["role_status"] || []
|
||||||
p["categories"] = p["categories"] || []
|
p["categories"] = p["categories"] || []
|
||||||
p["enabled_for"] = p["enabled_for"] || []
|
p["enabled_for"] = p["enabled_for"] || []
|
||||||
|
|
|
@ -15,6 +15,10 @@ module OrbitHelper
|
||||||
@role_status = role_status;
|
@role_status = role_status;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.set_member_sort_position(sort_position)
|
||||||
|
@sort_position = sort_position;
|
||||||
|
end
|
||||||
|
|
||||||
def self.set_page_data_count(data_count)
|
def self.set_page_data_count(data_count)
|
||||||
@data_count = data_count
|
@data_count = data_count
|
||||||
end
|
end
|
||||||
|
@ -46,6 +50,10 @@ module OrbitHelper
|
||||||
@role_status
|
@role_status
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.member_sort_position
|
||||||
|
@sort_position
|
||||||
|
end
|
||||||
|
|
||||||
def self.page_for_tag(tag)
|
def self.page_for_tag(tag)
|
||||||
page_for_tag = nil
|
page_for_tag = nil
|
||||||
pages = Page.where(:module => @module_app.key)
|
pages = Page.where(:module => @module_app.key)
|
||||||
|
|
|
@ -44,6 +44,47 @@ class AttributeValue
|
||||||
self[:temp_data] = value
|
self[:temp_data] = value
|
||||||
end
|
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/) ? "<a href='#{field_value}' target='blank'>#{field_value}</a>" : field_value
|
||||||
|
field_value = (field_value =~ /\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i) ? "<a href='mailto:#{field_value}'>#{field_value}</a>" : 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)
|
def get_value_by_locale(locale,add_more_index=nil)
|
||||||
case self.attribute_field.markup
|
case self.attribute_field.markup
|
||||||
|
|
|
@ -123,16 +123,12 @@ class MemberProfile
|
||||||
member_data_tmp = member_data.collect {|v| v[1] }
|
member_data_tmp = member_data.collect {|v| v[1] }
|
||||||
end
|
end
|
||||||
|
|
||||||
def values_for_show
|
def get_attribute_data(field)
|
||||||
attribute_values = self.attributes.select{|k,v| v if (k.in?(["office_tel","sid","email"]) && v.present?)}
|
data = self.send(field["key"]) rescue ""
|
||||||
name_fields = {"name" => self.name}
|
data = (data =~ /\A#{URI::regexp(['http', 'https'])}\z/) ? "<a href='#{data}' target='blank'>#{data}</a>" : data
|
||||||
|
data = (data =~ /\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i) ? "<a href='mailto:#{data}'>#{data}</a>" : data
|
||||||
if self.sex.present?
|
field_data = data.blank? ? {} : {"key" => field["key"],"title" => I18n.t("users."+field["key"]), "value" =>data}
|
||||||
gender_fields = {"gender" => self.sex}
|
field_data
|
||||||
end
|
|
||||||
|
|
||||||
values = [attribute_values, name_fields, gender_fields].delete_if(&:nil?)
|
|
||||||
values.inject(&:merge)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_image_for_show
|
def get_image_for_show
|
||||||
|
@ -145,14 +141,6 @@ class MemberProfile
|
||||||
image_fields = {"img_src" => image}
|
image_fields = {"img_src" => image}
|
||||||
end
|
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
|
def delete_personal_plugin_data
|
||||||
OrbitApp::Plugin::Registration.all.each do |plugin|
|
OrbitApp::Plugin::Registration.all.each do |plugin|
|
||||||
class_name = plugin.app_name.constantize
|
class_name = plugin.app_name.constantize
|
||||||
|
|
|
@ -122,11 +122,45 @@ class MemberProfileFieldValue
|
||||||
return @attribute_field_value
|
return @attribute_field_value
|
||||||
end
|
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/) ? "<a href='#{field_value}' target='blank'>#{field_value}</a>" : field_value
|
||||||
|
field_value = (field_value =~ /\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i) ? "<a href='mailto:#{field_value}'>#{field_value}</a>" : 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
|
protected
|
||||||
|
|
||||||
def unset_all_lang_values
|
# def unset_all_lang_values
|
||||||
VALID_LOCALES.each{|t| self.unset t}
|
# VALID_LOCALES.each{|t| self.unset t}
|
||||||
end
|
# end
|
||||||
|
|
||||||
def data_proc
|
def data_proc
|
||||||
unless self[:temp_data].nil?
|
unless self[:temp_data].nil?
|
||||||
|
|
|
@ -18,6 +18,7 @@ class Page
|
||||||
field :categories, type: Array, :default => []
|
field :categories, type: Array, :default => []
|
||||||
field :tags, type: Array, :default => []
|
field :tags, type: Array, :default => []
|
||||||
field :role_status, 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 :enabled_for_sitemap, type: Array, :default => []
|
||||||
field :rss2_id, type: String
|
field :rss2_id, type: String
|
||||||
|
|
||||||
|
|
|
@ -1,34 +1,28 @@
|
||||||
<div class="index-member index1">
|
<div class="index-member index1">
|
||||||
<h3 class="index-title">
|
|
||||||
<span>{{widget-title}}</span>
|
|
||||||
</h3>
|
|
||||||
<div class="index-member-group" data-list="roles" data-level="0">
|
<div class="index-member-group" data-list="roles" data-level="0">
|
||||||
<div class="index-member-group-item">
|
<div class="index-member-group-item">
|
||||||
<div class="index-member-group-title">
|
|
||||||
<h4>{{role-title}}</h4>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="index-member-status" data-level="1" data-list="status-list">
|
<div class="index-member-status" data-level="1" data-list="status-list">
|
||||||
<div class="index-member-status-title">
|
|
||||||
<h4>{{status-title}}</h4>
|
<h3 class="index-title">
|
||||||
</div>
|
<span>{{status-title}}</span>
|
||||||
|
</h3>
|
||||||
|
|
||||||
<div class="index-member-list row" data-level="2" data-list="members">
|
<div class="index-member-list row" data-level="2" data-list="members">
|
||||||
<div class="index-member-item clearfix col-sm-6">
|
<div class="index-member-item clearfix col-sm-6 row" style="font-size: 8px; min-height:180px;">
|
||||||
<div class="index-member-avatar pull-left">
|
<div class="col-sm-4">
|
||||||
<img class="img-circle" src="{{image}}" alt="">
|
<a href="{{link_to_show}}"><img class="member-pic" src="{{image}}" alt="{{name}}" title="{{name}}" width="100%"></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="index-member-info">
|
<div class="col-sm-8">
|
||||||
<h5 class="index-member-name">
|
<table class="table table-condensed">
|
||||||
<a href="{{link_to_show}}">{{name}}</a>
|
<tbody data-list="profile_data" data-level="3">
|
||||||
</h5>
|
<tr><th class="{{title_class}}" style="min-width:70px;">{{title}}</th><td class="{{value_class}}">{{value}}</td></tr>
|
||||||
<p data-level="2" data-list="roles">
|
</tbody>
|
||||||
<span class="index-member-role">{{role-title}}</span>
|
</table>
|
||||||
</p>
|
|
||||||
<p class="index-member-mail">{{email}}</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,27 +1,28 @@
|
||||||
<div class="index-member index1">
|
<div class="index-member index1">
|
||||||
<div class="index-member-group" data-list="roles" data-level="0">
|
<div class="index-member-group" data-list="roles" data-level="0">
|
||||||
<div class="index-member-group-item">
|
<div class="index-member-group-item">
|
||||||
<h3 class="index-title">
|
|
||||||
<span>{{role-title}}</span>
|
|
||||||
</h3>
|
|
||||||
|
|
||||||
<div class="index-member-status" data-level="1" data-list="status-list">
|
<div class="index-member-status" data-level="1" data-list="status-list">
|
||||||
|
|
||||||
|
<h3 class="index-title">
|
||||||
|
<span>{{status-title}}</span>
|
||||||
|
</h3>
|
||||||
|
|
||||||
<div class="index-member-list row" data-level="2" data-list="members">
|
<div class="index-member-list row" data-level="2" data-list="members">
|
||||||
<div class="index-member-item clearfix col-sm-6">
|
<div class="index-member-item clearfix col-sm-6 row" style="font-size: 8px; min-height:180px;">
|
||||||
<div class="index-member-avatar pull-left">
|
<div class="col-sm-4">
|
||||||
<img src="{{image}}" alt="{{name}}" height="80">
|
<a href="{{link_to_show}}"><img class="member-pic" src="{{image}}" alt="{{name}}" title="{{name}}" width="100%"></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="index-member-info">
|
<div class="col-sm-8">
|
||||||
<h5 class="index-member-name">
|
<table class="table table-condensed">
|
||||||
<a href="{{link_to_show}}">{{name}}</a>
|
<tbody data-list="profile_data" data-level="3">
|
||||||
</h5>
|
<tr><th class="{{title_class}}" style="min-width:70px;">{{title}}</th><td class="{{value_class}}">{{value}}</td></tr>
|
||||||
<p data-level="3" data-list="roles">
|
</tbody>
|
||||||
<span class="index-member-job-title">{{job-title}}</span>
|
</table>
|
||||||
</p>
|
|
||||||
<p class="index-member-mail">{{email}}</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,30 +3,29 @@
|
||||||
<div class="index-member-group-item">
|
<div class="index-member-group-item">
|
||||||
|
|
||||||
<div class="index-member-status" data-level="1" data-list="status-list">
|
<div class="index-member-status" data-level="1" data-list="status-list">
|
||||||
|
|
||||||
<h3 class="index-title">
|
<h3 class="index-title">
|
||||||
<span>{{status-title}}</span>
|
<span>{{status-title}}</span>
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
<div class="index-member-list row" data-level="2" data-list="members">
|
<div class="index-member-list row" data-level="2" data-list="members">
|
||||||
<div class="index-member-item clearfix col-sm-6">
|
<div class="index-member-item clearfix col-sm-6 row" style="font-size: 8px; min-height:180px;">
|
||||||
<table class="table-condensed" height="165">
|
<div class="col-sm-4">
|
||||||
<tr>
|
<a href="{{link_to_show}}"><img class="member-pic" src="{{image}}" alt="{{name}}" title="{{name}}" width="100%"></a>
|
||||||
<td rowspan="5" valign="top">
|
</div>
|
||||||
<img src="{{image}}" alt="{{name}}" height="160" height="auto">
|
<div class="col-sm-8">
|
||||||
</td>
|
<table class="table table-condensed">
|
||||||
<td>{{job-title}}</td>
|
<tbody data-list="profile_data" data-level="3">
|
||||||
</tr>
|
<tr><th class="{{title_class}}" style="min-width:70px;">{{title}}</th><td class="{{value_class}}">{{value}}</td></tr>
|
||||||
<tr><td><a href="{{link_to_show}}">{{name}}</a></td></tr>
|
</tbody>
|
||||||
<tr><td>{{discipline}}</td></tr>
|
|
||||||
<tr><td>{{phone-office}}</td></tr>
|
|
||||||
<tr><td><a href="mailto:{{email}}">{{email}}</a></td></tr>
|
|
||||||
</table>
|
</table>
|
||||||
<br/><br/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{pagination_goes_here}}
|
{{pagination_goes_here}}
|
|
@ -1,40 +1,28 @@
|
||||||
<article class="show" module="member">
|
<div class="show" module="member">
|
||||||
<div class="post-name">
|
<div class="row">
|
||||||
<h1>{{name}}</h1>
|
<div class="member-pic col-md-3">
|
||||||
|
<img src="{{image}}" alt="{{name}}" title="{{name}}" width="100%">
|
||||||
</div>
|
</div>
|
||||||
|
<div class="member-data col-md-9">
|
||||||
<small>
|
<table class="table table-striped">
|
||||||
<span>
|
<div data-list="profile_data" data-level="0">
|
||||||
Roles :
|
<tr><th class="{{title_class}}" width="30%">{{title}}</th><td class="{{value_class}}">{{value}}</td></tr>
|
||||||
<span data-list="roles" data-level="0">
|
|
||||||
<a href="#"><span class="label label-info">{{role}}</span></a>
|
|
||||||
</span>
|
|
||||||
</span>
|
|
||||||
</small>
|
|
||||||
<div data-list="role_fields_final" data-level="0">
|
|
||||||
<p>{{role_field_title}} : {{role_field_value}}</p>
|
|
||||||
</div>
|
</div>
|
||||||
|
</table>
|
||||||
<div data-list="member_data" data-level="0">
|
|
||||||
<p>{{key}} : {{value}}</p>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div data-list="custom_fields_final" data-level="0">
|
|
||||||
<p>{{custom_field_title}} : {{custom_field_value}}</p>
|
|
||||||
</div>
|
</div>
|
||||||
<section class="post">
|
<br/>
|
||||||
<p class="pic"><img src="{{img_src}}" alt=""></p>
|
<ul class="nav nav-pills" role="tablist" data-list="plugins" data-level="0">
|
||||||
<div data-list="autobiography_data" data-level="0">
|
<li class="{{plugin_class}}"><a href="#{{plugin_name}}" role="tab" data-toggle="tab">{{plugin_title}}</a></li>
|
||||||
<h3>{{key}}:</h3>
|
|
||||||
<p>{{value}}</p>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<div data-list="plugins" data-level="0">
|
|
||||||
<ul>
|
|
||||||
<li>{{plugin_title}} : <div data-list="plugin_data" data-level="1"><ul><li><a href="{{link_to_show}}">{{data_title}}</a></li></ul></div></li>
|
|
||||||
</ul>
|
</ul>
|
||||||
|
<br/>
|
||||||
|
<div class="tab-content" data-list="plugins" data-level="0">
|
||||||
|
<div class="tab-pane {{plugin_class}}" id="{{plugin_name}}">
|
||||||
|
<table class="table table-hover table-striped">
|
||||||
|
<tbody data-list="plugin_data" data-level="1">
|
||||||
|
<tr><td><a href="{{link_to_show}}">{{data_title}}</a></td></tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</article>
|
|
|
@ -3,7 +3,7 @@
|
||||||
<thead>
|
<thead>
|
||||||
<tr class="sort-header">
|
<tr class="sort-header">
|
||||||
<th class="gender"></th>
|
<th class="gender"></th>
|
||||||
<th class="span1"><a href="#"><%= t(:position) %></a></th>
|
<th class="span1"><a href="#"><%= t(:sort_number) %></a></th>
|
||||||
<th class="span2"><a href="#"><%= t(:name) %></a></th>
|
<th class="span2"><a href="#"><%= t(:name) %></a></th>
|
||||||
<th class="span2"><a href="#"><%= t(:role) %></a></th>
|
<th class="span2"><a href="#"><%= t(:role) %></a></th>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -25,6 +25,18 @@
|
||||||
<%= f.hidden_field :page_type, value: "page" %>
|
<%= f.hidden_field :page_type, value: "page" %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="control-group" id="member_sort_setting">
|
||||||
|
<% if @module_app and @module_app.key.eql?("member") %>
|
||||||
|
<label class="control-label"><%= t(:sort) %>:</label>
|
||||||
|
<div class="controls">
|
||||||
|
<%= f.radio_button :member_sort_position, false, checked: !@page.member_sort_position? %> <%= t(:sort_by_role_fields) %><br/>
|
||||||
|
<%= f.radio_button :member_sort_position, true, checked: @page.member_sort_position?%> <%= t(:sort_manually) %>
|
||||||
|
<a href="/admin/members/edit_order_list" target="_blank"> <%= t(:sort_edit_order) %> </a>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<label class="control-label"><%= t(:category)+" :" if params[:action] == "edit" && !@categories.blank? %></label>
|
<label class="control-label"><%= t(:category)+" :" if params[:action] == "edit" && !@categories.blank? %></label>
|
||||||
<div id="categories_list">
|
<div id="categories_list">
|
||||||
|
|
|
@ -23,8 +23,9 @@ module Orbit
|
||||||
I18n.load_path += Dir[Rails.root.join('lib', 'locale', '*.{rb,yml}')]
|
I18n.load_path += Dir[Rails.root.join('lib', 'locale', '*.{rb,yml}')]
|
||||||
|
|
||||||
# set default locale to something other than :en
|
# set default locale to something other than :en
|
||||||
I18n.default_locale = :en
|
config.i18n.enforce_available_locales = false
|
||||||
I18n.available_locales = [:en, :zh_tw]
|
config.i18n.default_locale = :en
|
||||||
|
config.i18n.available_locales = [:en, :zh_tw]
|
||||||
|
|
||||||
config.autoload_paths += %W(#{config.root}/lib)
|
config.autoload_paths += %W(#{config.root}/lib)
|
||||||
|
|
||||||
|
|
|
@ -648,6 +648,7 @@ en:
|
||||||
sid: ID No.
|
sid: ID No.
|
||||||
sid_note: Faculty ID No. or Student ID No.
|
sid_note: Faculty ID No. or Student ID No.
|
||||||
sex: Gender
|
sex: Gender
|
||||||
|
gender: Gender
|
||||||
user_id: User Account
|
user_id: User Account
|
||||||
user_id_note: Should be more than 3 characters and less than 50 characters
|
user_id_note: Should be more than 3 characters and less than 50 characters
|
||||||
user_id_not_null: User account cannot be null
|
user_id_not_null: User account cannot be null
|
||||||
|
|
|
@ -630,11 +630,12 @@ zh_tw:
|
||||||
female: 女性
|
female: 女性
|
||||||
unknown: 未知
|
unknown: 未知
|
||||||
last_name: 姓氏
|
last_name: 姓氏
|
||||||
office_tel: 辦公室電話
|
office_tel: 聯絡電話
|
||||||
office_tel_note: 將公開於網頁
|
office_tel_note: 將公開於網頁
|
||||||
sid: 編號
|
sid: 編號
|
||||||
sid_note: 教職員工編號或學生學號
|
sid_note: 教職員工編號或學生學號
|
||||||
sex: 性別
|
sex: 性別
|
||||||
|
gender: 性別
|
||||||
user_id: 使用者帳號
|
user_id: 使用者帳號
|
||||||
user_id_note: 需介於3個字元至50個字元之間
|
user_id_note: 需介於3個字元至50個字元之間
|
||||||
user_id_not_null: 使用者帳號不能是空值
|
user_id_not_null: 使用者帳號不能是空值
|
||||||
|
@ -657,3 +658,7 @@ zh_tw:
|
||||||
visitors_today: 今日造訪人次
|
visitors_today: 今日造訪人次
|
||||||
yes_: "是"
|
yes_: "是"
|
||||||
sort_number: 排序數
|
sort_number: 排序數
|
||||||
|
sort: 排序
|
||||||
|
sort_edit_order: 編輯排序
|
||||||
|
sort_manually: 手動排序
|
||||||
|
sort_by_role_fields: 依照身份欄位
|
||||||
|
|
Loading…
Reference in New Issue