This commit is contained in:
BOHUNG 2020-02-06 14:40:35 +08:00
parent efbf71a7c7
commit b65696fea6
4 changed files with 200 additions and 130 deletions

View File

@ -22,6 +22,9 @@
<a href="#sidebar-nav" data-toggle="tab"><%= t('preferences.sidebar_nav') %></a>
</li>
<% end %>
<li>
<a href="#page_set" data-toggle="tab"><%= t('preferences.page_set') %></a>
</li>
<li class="active">
<a href="#system-email" data-toggle="tab"><%= t('preferences.system_email') %></a>
</li>
@ -58,7 +61,12 @@
</div>
</div>
<% end %>
<!-- Page set -->
<div id="page_set" class="tab-pane fade">
<%= f.fields_for :page_sets do |page_set| %>
<%= page_set.check_box :auto_convert_flag %> <%= t('preferences.auto_convert_flag') %>
<% end %>
</div>
<!-- System Email -->
<%= f.fields_for :site_settings, @site['site_settings'] do |f| %>
@ -274,6 +282,46 @@
</div>
</div>
<div class="control-group">
<label class="control-label muted"><%= t('preferences.orbit_bar_background_color') %></label>
<div class="controls">
<%= f.text_field :orbit_bar_background_color, :class=>'set_color',:type=>'color',:value=>@site.orbit_bar_background_color%>
</div>
</div>
<div class="control-group">
<label class="control-label muted"><%= t('preferences.orbit_bar_text_color') %></label>
<div class="controls">
<%= f.text_field :orbit_bar_text_color, :class=>'set_color',:type=>'color',:value=>@site.orbit_bar_text_color%>
</div>
</div>
<div class="control-group">
<label class="control-label muted"><%= t('preferences.orbit_bar_submenu_background_color') %></label>
<div class="controls">
<%= f.text_field :orbit_bar_submenu_background_color, :class=>'set_color',:type=>'color',:value=>@site.orbit_bar_submenu_background_color%>
</div>
</div>
<div class="control-group">
<label class="control-label muted"><%= t('preferences.orbit_bar_submenu_text_color') %></label>
<div class="controls">
<%= f.text_field :orbit_bar_submenu_text_color, :class=>'set_color',:type=>'color',:value=>@site.orbit_bar_submenu_text_color%>
</div>
</div>
<div class="control-group">
<label class="control-label muted"><%= t('preferences.is_hidden_orbit_bar') %></label>
<div class="controls">
<%if @site.is_hidden_orbit_bar%>
<%= f.check_box :is_hidden_orbit_bar ,:checked=>'checked'%>
<%else%>
<%= f.check_box :is_hidden_orbit_bar ,:checked=>false%>
<%end%>
</div>
</div>
<div class="control-group">
<label class="control-label muted"><%= t('preferences.orbit_bar_animation_time') %></label>
<div class="controls">
<%= f.text_field :orbit_bar_animation_time ,:value=>@site.orbit_bar_animation_time %>
</div>
</div>
<div class="control-group">
<label class="control-label muted">Orbit <%= t('preferences.site_logo') %>(second image or the only one image)</label>
<div class="controls">

View File

@ -1,5 +1,6 @@
class MembersController < ApplicationController
helper_method :current_user
include AttributeValuesHelper
def index
page_roles = OrbitHelper.page_categories
page_role_status = OrbitHelper.page_role_status
@ -15,22 +16,8 @@ class MembersController < ApplicationController
member_sort_position = OrbitHelper.member_sort_position
sort = nil
if !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 = "[(data['first_name'][0])]"
# sort = '[('+sort.join('),(')+')]'
fields_to_show.each_with_index do |field, idx|
if field["key"] == "name"
# sort = "[(data['profile_data'][idx]['sort_value'] rescue 0)]"
sort = idx
end
end
sort_select = fields_to_show.to_enum.with_index.select{|v| v[0]['key']=='name'}
sort = sort_select.blank? ? nil : sort_select[0][1]
end
if page_roles.include?("all")
roles = Role.all.asc(:key).collect do |role|
@ -38,7 +25,7 @@ class MembersController < ApplicationController
end
else
page_role_status.each do |status_id|
page_roles << RoleStatus.find(status_id).role.id.to_s
page_roles << (RoleStatus.find(status_id).role.id.to_s rescue '')
end
roles = Role.where(:id.in => page_roles.uniq).asc(:key).collect do |role|
{ "title" => role.title, "id" => role.id, "status" => RoleStatus.where(:role_id=>role, :_id.in=>page_role_status).asc(:key).to_a }
@ -134,14 +121,14 @@ class MembersController < ApplicationController
def get_member_data(member, fields_to_show)
image = member.avatar.present? ? member.avatar.thumb.url : ActionController::Base.helpers.asset_path('member-pic.png')
member_data_return = member_data(member, fields_to_show)
if !member_data_return.nil? && (!member_data_return.empty? rescue false)
{
'profile_data'=> member_data_return,
'list_order' => member.position,
'name' => member.name,
'image'=>image,
"link_to_show" => OrbitHelper.url_to_show(member.to_param)
}
if !member_data_return.blank?
{
'profile_data'=> member_data_return,
'list_order' => member.position,
'name' => member.name,
'image'=>image,
"link_to_show" => OrbitHelper.url_to_show(member.to_param)
}
else
nil
end
@ -149,7 +136,7 @@ class MembersController < ApplicationController
def show
params = OrbitHelper.params
member = MemberProfile.find_by(uid: params[:uid])
member = MemberProfile.find_by(uid: params[:uid]) rescue nil
page = Page.where(:page_id => params[:page_id]).first rescue nil
profile_data = []
@ -162,8 +149,10 @@ class MembersController < ApplicationController
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?
if fields_to_show.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?
attribute_field = role.attribute_fields.first
if !attribute_field.blank? && !attribute_field.to_show.blank?
profile_data = profile_data + member_data(member, [{"id"=> attribute_field.id.to_s, "key"=> attribute_field.key.to_s, "type"=>"role"}])
end
end
end
if fields_to_show.blank?
@ -190,7 +179,7 @@ class MembersController < ApplicationController
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?
role_fields_to_show << {"id"=> attribute_field.id.to_s,"key"=> attribute_field.key.to_s, "type"=>"role"} if !attribute_field.to_show.blank?
end
end
profile_data = profile_data + member_data(member, role_fields_to_show)
@ -337,120 +326,113 @@ class MembersController < ApplicationController
def member_data(member, fields_to_show)
profile_data = []
fields_to_show.each do |field|
privacy_approved_status = true
if field['type'] != 'role'
field_key = field["key"]
else
field_key = field["id"]
end
privacy_approved_status = false if member.get_privacy_type_for_field(field_key) != "public"
if !OrbitHelper.current_user.nil?
if(member.get_privacy_type_for_field(field_key) == "logged_in")
privacy_approved_status = true
elsif(member.get_privacy_type_for_field(field_key) == "locked")
if member.user.id == OrbitHelper.current_user.id || OrbitHelper.current_user.is_admin?
privacy_approved_status = true
end
end
end
if member.get_privacy_type_for_field(field_key) == "default"
if field['type'] != 'role'
privacy_approved_status = true #Todo: set not role field's default privacy_approved_status
else
case AttributeField.find(field["id"]).privacy_default
when 'public'
privacy_approved_status = true
when 'logged_in'
privacy_approved_status = true if !OrbitHelper.current_user.nil?
when 'locked'
if !OrbitHelper.current_user.nil?
privacy_approved_status = true if member.user.id == OrbitHelper.current_user.id || OrbitHelper.current_user.is_admin?
end
end
end
end
case field['type']
when 'profile'
next if !privacy_approved_status
field_data = member.get_attribute_data(field) rescue {}
when 'custom'
if !field['id'].blank?
next if !privacy_approved_status
field_data = member.member_profile_field_values.find_by(:member_profile_field_id=>field['id'],:key=>field['key']).get_field_value rescue {"value" => "&nbsp;"}
else
field_data = member.member_profile_field_values.find_by(:key=>field['key']).get_field_value rescue {"value" => "&nbsp;"}
privacy_approved_status = true
if field['type'] != 'role'
field_key = field["key"]
else
field_key = field["id"]
end
privacy_approved_status = false if member.get_privacy_type_for_field(field_key) != "public"
if !OrbitHelper.current_user.nil?
if(member.get_privacy_type_for_field(field_key) == "logged_in")
privacy_approved_status = true
elsif(member.get_privacy_type_for_field(field_key) == "locked")
if member.user.id == OrbitHelper.current_user.id || OrbitHelper.current_user.is_admin?
privacy_approved_status = true
end
when 'role'
if !field['id'].blank?
next if !privacy_approved_status
av = member.attribute_values.find_by(:attribute_field_id=>field['id'],:key=>field['key']) rescue nil
av = member.attribute_values.find_by(:attribute_field_id=>field['id']) rescue nil if av.nil? #some role's key has been changed to sort number,so it doesn't work when searching field from using its key
field_data = {"value" => "&nbsp;"}
end
end
if member.get_privacy_type_for_field(field_key) == "default"
if field['type'] != 'role'
privacy_approved_status = true #Todo: set not role field's default privacy_approved_status
else
case (AttributeField.find(field["id"]).privacy_default rescue nil)
when 'public'
privacy_approved_status = true
when 'logged_in'
privacy_approved_status = true if !OrbitHelper.current_user.nil?
when 'locked'
if !OrbitHelper.current_user.nil?
privacy_approved_status = true if member.user.id == OrbitHelper.current_user.id || OrbitHelper.current_user.is_admin?
end
end
end
end
case field['type']
when 'profile'
next if !privacy_approved_status
field_data = member.get_attribute_data(field) rescue {}
when 'custom'
if !field['id'].blank?
next if !privacy_approved_status
field_data = member.member_profile_field_values.find_by(:member_profile_field_id=>field['id'],:key=>field['key']).get_field_value rescue {"value" => "&nbsp;"}
else
field_data = member.member_profile_field_values.find_by(:key=>field['key']).get_field_value rescue {"value" => "&nbsp;"}
end
when 'role'
av = member.attribute_values.find_by(:attribute_field_id=>field['id']) rescue nil #some role's key has been changed to sort number,so it doesn't work when searching field from using its key
field_data = {"value" => "&nbsp;"}
if !av.nil?
next if !privacy_approved_status
r = av.attribute_field.role rescue nil
if !r.nil?
if member.roles.include?(r)
field_data = av.get_field_value(member) rescue {"value" => "&nbsp;"}
end
end
else
avs = member.attribute_values.find_by(:key=>field['key']) rescue []
avs.each do |av|
if !av.nil?
r = av.attribute_field.role rescue nil
if !r.nil?
if member.roles.include?(r)
field_data = av.get_field_value rescue {"value" => "&nbsp;"}
else
field_data = {"value" => "&nbsp;"}
end
else
field_data = {"value" => "&nbsp;"}
if !r.nil? && member.roles.include?(r)
field_data = av.get_field_value(member) rescue {"value" => "&nbsp;"}
break
end
else
field_data = {"value" => "&nbsp;"}
end
else
avs = member.attribute_values.where(:key=>field['key']) rescue nil
field_data = {"value" => "&nbsp;"}
avs.each do |av|
if !av.nil?
r = av.attribute_field.role rescue nil
if !r.nil?
if member.roles.include?(r)
field_data = av.get_field_value rescue {"value" => "&nbsp;"}
break
else
field_data = {"value" => "&nbsp;"}
end
else
field_data = {"value" => "&nbsp;"}
end
else
field_data = {"value" => "&nbsp;"}
end
if avs.blank? && !field['id'].nil?
attr_field = AttributeField.find(field['id']) rescue nil
if !attr_field.blank? && attr_field.markup.eql?("member_relationship")
field_data = {
"key" => attr_field.key,
"title" => attr_field.title,
"value" => get_member_show(attr_field.get_member_relationship(member.id.to_s))
}
if field_data['value'].blank?
field_data['value'] = '&nbsp;'
end
end
end
end
next if field_data.blank? or field_data['value'].blank? or (OrbitHelper.params[:target_action] == "show" && field_data['value'] == "&nbsp;")
end
next if field_data.blank? || field_data['value'].blank? || (OrbitHelper.params[:target_action] == "show" && field_data['value'] == "&nbsp;")
if field['sort_order']
field_data['sort_value'] = field_data['val'].blank? ? field_data['value'] : field_data['val']
if !field_data['sort_value'].is_a?(Hash)
if field_data['sort_value'].is_a?(Integer) || (field_data['sort_value'].is_i? rescue false)
field_data['sort_value'] = field_data['sort_value'].to_i rescue field_data['sort_value']
else
if I18n.locale == :zh_tw
field_data['sort_value'] = field_data['sort_value'].strip.encode("Big5") rescue "".encode("Big5")
end
elsif I18n.locale == :zh_tw
field_data['sort_value'] = field_data['sort_value'].strip.encode("Big5") rescue "".encode("Big5")
end
end
end
@current_field_value = field_data['value']
if (@current_field_value.gsub('&nbsp;','').strip rescue nil) == ""
@locale = I18n.locale
@site_in_use_locales = current_site.in_use_locales
@new_field_data = Hash.new
@site_in_use_locales.each_with_index do |locale,i|
I18n.locale = locale
@new_field_data = member.get_attribute_data(field) rescue {}
break if @new_field_data['value'].to_s.gsub('&nbsp;','').strip !=""
end
field_data['value'] = @new_field_data['value'].nil? ? "&nbsp" : @new_field_data['value']
I18n.locale = @locale
end
@current_field_value = field_data['value']
if (@current_field_value.gsub('&nbsp;','').strip rescue nil) == ""
@locale = I18n.locale
@site_in_use_locales = current_site.in_use_locales
@new_field_data = Hash.new
@site_in_use_locales.each_with_index do |locale,i|
I18n.locale = locale
@new_field_data = member.get_attribute_data(field) rescue {}
break if @new_field_data['value'].to_s.gsub('&nbsp;','').strip !=""
end
field_data['value'] = @new_field_data['value'].nil? ? "&nbsp" : @new_field_data['value']
I18n.locale = @locale
end
if field['link_to_show']
if field_data['value'] == '&nbsp;' #空白欄位
if field_data['value'] == '&nbsp;' #空白欄位
field_data['value'] = "" #若無網站連結,刪除實驗室網站字樣
field_data['title'] = "" #無網站連結,則不顯示
elsif field_data['value'].include? 'href='
@ -465,9 +447,9 @@ class MembersController < ApplicationController
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('_','-')
if !field_data['title'].blank? && !field_data['value'].blank?
field_data['title_class'] = "member-data-title-"+field['key'].to_s.underscore.gsub('_','-')
field_data['value_class'] = "member-data-value-"+field['key'].to_s.underscore.gsub('_','-')
if !field_data['title'].blank? && !field_data['value'].blank?
profile_data.push(field_data)
end
end

6
updatefiles/page_set.rb Normal file
View File

@ -0,0 +1,6 @@
class PageSet
include Mongoid::Document
include Mongoid::Timestamps
belongs_to :site
field :auto_convert_flag, type: Boolean, :default => false
end

View File

@ -4,7 +4,8 @@ class Site
include Slug
DEBUG = false
has_many :page_sets, :autosave => true, :dependent => :destroy
accepts_nested_attributes_for :page_sets, :allow_destroy => true
field :title, as: :slug_title, type: String, localize: true
field :school, type: String
field :department, type: String
@ -59,12 +60,45 @@ class Site
field :home_link_1, :type => String, :default=>"/"
field :site_title, :type => Hash, :default=>{:zh_tw=>"主頁",:en=>"home_page"}
field :site_title_1, :type => Hash, :default=>{:zh_tw=>"主頁",:en=>"home_page"}
field :is_hidden_orbit_bar , type: Boolean, :default => false
field :orbit_bar_background_color , type: String, :default => ""
field :orbit_bar_text_color , type: String, :default => ""
field :orbit_bar_submenu_background_color , type: String, :default => ""
field :orbit_bar_submenu_text_color , type: String, :default => ""
field :orbit_bar_animation_time , type: String, :default => "0.3s"
mount_uploader :default_image, ImageUploader
mount_uploader :site_logo, ImageUploader
mount_uploader :site_logo_1, ImageUploader
mount_uploader :favicon, ImageUploader
mount_uploader :mobile_icon, ImageUploader
after_initialize do
if !self.new_record?
if self.is_hidden_orbit_bar.nil?
self.is_hidden_orbit_bar = false
self.save
end
if self.orbit_bar_background_color.nil?
self.orbit_bar_background_color = ""
self.save
end
if self.orbit_bar_text_color.nil?
self.orbit_bar_text_color = ""
self.save
end
if self.orbit_bar_submenu_background_color.nil?
self.orbit_bar_submenu_background_color = ""
self.save
end
if self.orbit_bar_submenu_text_color.nil?
self.orbit_bar_submenu_text_color = ""
self.save
end
if self.orbit_bar_animation_time.nil?
self.orbit_bar_animation_time = "0.3s"
self.save
end
end
end
def register_site(url,university,department,email,country)
api_key = STORE_CONFIG[:store_settings]["api_key"]
self.generate_site_token