Compare commits

..

33 Commits

Author SHA1 Message Date
junyi 8ec5d8a187 Add sub_page_setting check permissions 2026-06-08 09:03:32 +00:00
rulingcom 5b822a9501 Fixd Category Authorization Permissions 2026-06-05 05:32:25 +00:00
rulingcom 5f3e00164b Adjust permission settings 2026-06-04 10:06:05 +00:00
chiu e2da713248 Optimize to avoid 502 errors caused by multiple queries 2026-05-12 11:03:28 +00:00
chiu d65daa92d8 revert adbd76ed30
revert Optimize to avoid 502 errors caused by multiple queries
2026-05-12 11:01:37 +00:00
chiu adbd76ed30 Optimize to avoid 502 errors caused by multiple queries 2026-05-12 10:40:29 +00:00
chiu 8f4623aed8 Change text zh_tw 2026-04-16 06:01:40 +00:00
chiu 605b864730 Change text 2026-04-16 06:00:14 +00:00
chiu 75b3536b1e Repairing export failure
Added support for handling characters not allowed in MS Excel
2025-11-10 05:11:12 +00:00
chiu 8addfd0631 Merge pull request 'Hide empty time field.' (#21) from 123/seminar:master into master
Reviewed-on: https://gitlab.tp.rulingcom.com/spen/seminar/pulls/21
2024-04-15 16:26:46 +00:00
chiu d62248c9e0 Merge pull request 'Add hidden class when sign_up_not_yet.' (#20) from 123/seminar:master into master
Reviewed-on: https://gitlab.tp.rulingcom.com/spen/seminar/pulls/20
2024-04-15 16:13:37 +00:00
邱博亞 aadc929ae0 Merge pull request 'Add hidden class when sign_up_overdue.' (#19) from 123/seminar:master into master
Reviewed-on: https://gitlab.tp.rulingcom.com/spen/seminar/pulls/19
2024-04-15 23:58:58 +08:00
chiu be3af16a12 Merge pull request 'master' (#18) from 123/seminar:master into master
Reviewed-on: https://gitlab.tp.rulingcom.com/spen/seminar/pulls/18
2024-04-09 13:06:06 +00:00
邱博亞 e4790f8490 Fix bug. 2024-03-21 22:26:05 +08:00
邱博亞 8b9bfaab8d Fix bug. 2024-03-21 22:20:27 +08:00
邱博亞 52755f9afe sync codes from 123/seminar. 2024-03-21 21:57:22 +08:00
chiu 397046e9b4 Merge pull request 'Add instructions field.' (#17) from 123/seminar:master into master
Reviewed-on: https://gitlab.tp.rulingcom.com/spen/seminar/pulls/17
2024-02-28 08:38:54 +00:00
chiu a934972e72 Merge pull request 'master' (#16) from 123/seminar:master into master
Reviewed-on: https://gitlab.tp.rulingcom.com/spen/seminar/pulls/16
2024-02-28 07:00:37 +00:00
邱博亞 d6b2d23462 Add instructions field. 2024-02-28 14:17:06 +08:00
chiu 31112700c3 Merge pull request 'merge new feature' (#15) from 123/seminar:master into master
Reviewed-on: https://gitlab.tp.rulingcom.com/spen/seminar/pulls/15
2023-09-27 16:22:21 +00:00
chiu dd935ebf89 Merge pull request 'merge fix bug' (#14) from 123/seminar:master into master
Reviewed-on: https://gitlab.tp.rulingcom.com/spen/seminar/pulls/14
2023-09-27 09:21:06 +00:00
chiu 78012b43f2 Merge pull request 'Fix bug.' (#13) from 123/seminar:master into master
Reviewed-on: https://gitlab.tp.rulingcom.com/spen/seminar/pulls/13
2023-05-12 00:02:39 +00:00
chiu 2b3c4bbb6f Merge pull request 'Fix bug.' (#12) from 123/seminar:master into master
Reviewed-on: https://gitlab.tp.rulingcom.com/spen/seminar/pulls/12
2023-04-12 04:36:54 +00:00
chiu dde6e2a8cf Merge pull request 'Fix bug and add sort number.' (#11) from 123/seminar:master into master
Reviewed-on: https://gitlab.tp.rulingcom.com/spen/seminar/pulls/11
2023-04-12 03:34:38 +00:00
chiu 81040a3413 Merge pull request 'Fix bug.' (#10) from 123/seminar:master into master
Reviewed-on: http://gitlab.tp.rulingcom.com/spen/seminar/pulls/10
2023-03-18 08:26:57 +00:00
chiu ac824fb5ed Merge pull request 'Fix bug.' (#9) from 123/seminar:master into master
Reviewed-on: http://gitlab.tp.rulingcom.com/spen/seminar/pulls/9
2023-03-18 06:35:04 +00:00
chiu 55d504d0d9 Merge pull request 'Fix bug.' (#8) from 123/seminar:master into master
Reviewed-on: http://gitlab.tp.rulingcom.com/spen/seminar/pulls/8
2023-03-17 07:59:37 +00:00
chiu f25c6b6934 Merge pull request 'Fix function name conflict.' (#7) from 123/seminar:master into master
Reviewed-on: http://gitlab.tp.rulingcom.com/spen/seminar/pulls/7
2023-03-08 03:19:36 +00:00
chiu 81ea8c4f67 Merge pull request 'fix bug.' (#6) from 123/seminar:master into master
Reviewed-on: http://gitlab.tp.rulingcom.com/spen/seminar/pulls/6
2023-03-07 13:40:23 +00:00
chiu f2ab125ae6 Merge pull request 'Fix bug.' (#5) from 123/seminar:master into master
Reviewed-on: http://gitlab.tp.rulingcom.com/spen/seminar/pulls/5
2023-01-16 09:58:09 +00:00
chiu 651f6cb29c Merge pull request 'Fix bug.' (#4) from 123/seminar:master into master
Reviewed-on: http://gitlab.tp.rulingcom.com/spen/seminar/pulls/4
2023-01-16 09:37:27 +00:00
chiu 3627bdc4b2 Merge pull request 'Fix bug.' (#3) from 123/seminar:master into master
Reviewed-on: http://gitlab.tp.rulingcom.com/spen/seminar/pulls/3
2023-01-16 09:32:36 +00:00
chiu f952165f34 Merge pull request 'Fix bug. Add signup limit feature.' (#2) from 123/seminar:master into master
Reviewed-on: http://gitlab.tp.rulingcom.com/spen/seminar/pulls/2
2023-01-11 10:13:36 +00:00
6 changed files with 61 additions and 21 deletions

View File

@ -3,18 +3,26 @@ class Admin::SeminarSignupsController < OrbitAdminController
include Admin::SeminarsHelper
before_action ->(module_app = @app_title) { set_variables module_app }
before_action :check_manager_for_seminar
skip_before_action :check_for_nil_categories
def initialize
super
@app_title = "seminar"
end
def check_manager_for_seminar
OrbitHelper.set_params(params,current_user)
OrbitHelper.set_this_module_app("seminar")
access_level = OrbitHelper.user_access_level?
if (access_level.nil? || access_level == "user")
if access_level.nil? || access_level == "user"
@seminar = SeminarSignup.find(params[:id]).seminar_main rescue nil
if (@seminar.organizer_id != current_user.member_profile_id rescue true)
render_401
end
elsif access_level == "sub_manager"
@seminar = SeminarSignup.find(params[:id]).seminar_main rescue nil
approved_category_ids = current_user.approved_categories.collect{|c| c.id}
unless approved_category_ids.include?(@seminar.category_id) || (@seminar.organizer_id == current_user.member_profile_id rescue false)
render_401
end
end
end
def edit

View File

@ -5,10 +5,10 @@ class Admin::SeminarsController < OrbitAdminController
include Admin::SeminarsHelper
helper Admin::SeminarsFieldHelper
before_action ->(module_app = @app_title) { set_variables module_app }
before_action :set_seminar, only: [:edit, :set_write_off, :seminar_signup, :destroy,:seminar_signup_admin_setting,:update_seminar_signup_admin_setting,:get_reviewer_block,:get_session_block,:update_seminar_review,:update_seminar_session,:reviewer_setting,:update_reviewer_setting,:template_setting,:update_template_setting,:sub_page_setting]
before_action :set_seminar, only: [:edit, :set_write_off, :seminar_signup, :destroy,:seminar_signup_admin_setting,:update_seminar_signup_admin_setting,:get_reviewer_block,:get_session_block,:update_seminar_review,:update_seminar_session,:reviewer_setting,:update_reviewer_setting,:template_setting,:update_template_setting,:sub_page_setting,:export]
before_action :set_seminar_signup_admin_setting, only: [:seminar_signup,:seminar_signup_admin_setting,:update_seminar_signup_admin_setting,:get_reviewer_block,:get_session_block]
before_action :check_permission_for_seminar, only: [:seminar_signup,:get_reviewer_block,:get_session_block]
before_action :check_manager_for_seminar, only: [:seminar_signup_admin_setting,:update_seminar_signup_admin_setting,:update_seminar_review,:update_seminar_session,:reviewer_setting,:update_reviewer_setting,:template_setting,:update_template_setting]
before_action :check_permission_for_seminar, only: [:seminar_signup,:get_reviewer_block,:get_session_block,:export]
before_action :check_manager_for_seminar, only: [:seminar_signup_admin_setting,:update_seminar_signup_admin_setting,:update_seminar_review,:update_seminar_session,:reviewer_setting,:update_reviewer_setting,:template_setting,:update_template_setting,:sub_page_setting]
def initialize
super
@app_title = "seminar"
@ -39,6 +39,10 @@ class Admin::SeminarsController < OrbitAdminController
else
@user_authenticated_categories = ['all']
end
elsif access_level == "sub_manager"
unless can_see_seminar_signup(@seminar)
render_401
end
end
end
def template_setting
@ -407,7 +411,7 @@ class Admin::SeminarsController < OrbitAdminController
}
end
else
render :nothing => true
render_401
end
end
def copy
@ -619,6 +623,8 @@ class Admin::SeminarsController < OrbitAdminController
@can_edit = true
if @access_level == "user" || @access_level.nil?
@can_edit = false
elsif @access_level == "sub_manager"
@can_edit = can_edit_or_delete?(@seminar)
end
unless @can_edit
@can_edit = (@seminar.organizer_id == current_user.member_profile_id rescue false)

View File

@ -40,14 +40,24 @@
</td>
<td><%= SeminarMain.time_range(seminar.seminar_start_date, seminar.seminar_end_date) %></td>
<td><%= SeminarMain.time_range(seminar.signup_start_date, seminar.signup_end_date) %></td>
<td><a href="/admin/seminars/<%=seminar.id.to_s%>/seminar_signup">
<td>
<% @seminar_review = seminar.seminar_reviews.where(:reviewer_id => current_user.member_profile_id.to_s).first %>
<% if @seminar_review.present? && !@can_edit %>
<%= @seminar_review.get_all_seminar_signup_ids.count %>
<% if can_see_seminar_signup(seminar) %>
<a href="/admin/seminars/<%=seminar.id.to_s%>/seminar_signup">
<% if @seminar_review.present? && !@can_edit %>
<%= @seminar_review.get_all_seminar_signup_ids.count %>
<% else %>
<%= seminar.seminar_signups.count %>
<% end %>
</a>
<% else %>
<%= seminar.seminar_signups.count %>
<% if @seminar_review.present? && !@can_edit %>
<%= @seminar_review.get_all_seminar_signup_ids.count %>
<% else %>
<%= seminar.seminar_signups.count %>
<% end %>
<% end %>
</a></td>
</td>
<td>
<% if can_see_seminar_signup(seminar) %>
<a href="/admin/seminars/<%=seminar.id.to_s%>/export?format=xlsx" target="_blank"><%= t('seminar.export') %></a>
@ -62,4 +72,4 @@
content_tag :div, class: "bottomnav clearfix" do
content_tag :div, paginate(@seminars), class: "pagination pagination-centered"
end
%>
%>

View File

@ -2,7 +2,12 @@
wb = xlsx_package.workbook
wb.add_worksheet(name: (@seminar.title.to_s[0..27]+'...')) do |sheet|
illegal_chars = /[:\\\/\[\]\*\?]/
sanitized_title = @seminar.title.to_s.gsub(illegal_chars, ' ').strip
sheet_name = (sanitized_title[0..27] + '...').gsub(/\.{4,}/, '...')
wb.add_worksheet(name: sheet_name) do |sheet|
row = [t('seminar_signup.signup_time')]
@ -26,7 +31,7 @@ wb.add_worksheet(name: (@seminar.title.to_s[0..27]+'...')) do |sheet|
seminar_signup_fields = @seminar.seminar_signup_fields.where(:disabled=>false).asc(:sort_number, :_id).to_a
seminar_signup_fields.each do |rf|
seminar_signup_fields.each do |rf|
if rf.can_muti_lang_input?
@site_in_use_locales.each do |l|
row << rf.title + " (#{t(l.to_s)})"
@ -35,9 +40,10 @@ wb.add_worksheet(name: (@seminar.title.to_s[0..27]+'...')) do |sheet|
row << rf.title
end
end
highlight_style = wb.styles.add_style(
:bg_color => 'ffeb3b',
:b => true,
:b => true,
:border => { :style => :thick, :color => "000000", :edges => [:top, :left, :bottom, :right] },
:alignment => {:horizontal => :center, :vertical => :center, :wrap_text => true}
)
@ -46,25 +52,36 @@ wb.add_worksheet(name: (@seminar.title.to_s[0..27]+'...')) do |sheet|
wrap_text_style = wb.styles.add_style({:alignment => {:horizontal => :center, :vertical => :center, :wrap_text => true}})
types = [:time]
styles = [date_time_style]
# 優化:一次性載入所有資料,避免 N+1 查詢
signup_ids = @seminar_signups.map(&:id)
signup_values_index = {}
SeminarSignupValue.where(:seminar_signup_id.in => signup_ids).each do |sv|
key = "#{sv.seminar_signup_id}_#{sv.seminar_signup_field_id}"
signup_values_index[key] = sv
end
@seminar_signups.each_with_index do |signup, i|
row2 = []
row2 << signup.created_at
row2 << "#{signup.display_serial_number}"
row2 << "#{signup[:name]} "
row2 << "#{signup.unit} "
row2 << "#{signup[:tel]} "
row2 << "#{signup.tel} "
row2 << "#{signup[:phone]} "
row2 << "#{signup[:fax]} "
row2 << "#{signup.address} "
row2 << "#{signup[:email]} "
row2 << "#{signup.note} "
seminar_signup_fields.each do |rf|
seminar_signup_fields.each do |rf|
key = "#{signup.id}_#{rf.id}"
signup_value = signup_values_index[key]
if rf.can_muti_lang_input?
@site_in_use_locales.each do |l|
row2 << (@seminar.get_attribute_value(rf,signup.id).get_value_by_locale(l) rescue '')
row2 << (signup_value&.get_value_by_locale(l) rescue '')
end
else
row2 << (@seminar.get_attribute_value(rf,signup.id).get_value_by_locale(I18n.locale) rescue '')
row2 << (signup_value&.get_value_by_locale(I18n.locale) rescue '')
end
end
if i == 0
@ -77,4 +94,3 @@ wb.add_worksheet(name: (@seminar.title.to_s[0..27]+'...')) do |sheet|
end
end

View File

@ -207,7 +207,7 @@ en:
email_address: Email address
_password: Password
login: Login
new_: 'Load abstract'
new_: 'UpLoad'
load_file: load file
enable_summary_choice: Enable summary choice
summary_choice_type: Summary choice type

View File

@ -207,7 +207,7 @@ zh_tw:
email_address: Email address
_password: Password
login: Login
new_: '新增(load abstract)'
new_: '新增(Upload)'
load_file: load file
enable_summary_choice: 開啟摘要選項
summary_choice_type: 摘要選項類型