feat: need_pre_register, signup field label, settings tab redesign, permission check

This commit is contained in:
rulingcom 2026-06-25 18:11:20 +08:00
parent 40e0029fee
commit 19b4b6f978
12 changed files with 356 additions and 369 deletions

View File

@ -115,8 +115,27 @@ class ActivesController < ApplicationController
act_signup = ActSignup.new(id: nil)
time_now = Time.now
time_now = Time.now
# ↓ 新增:需先登入才能報名,且尚未登入,導向登入頁
if act.need_pre_register && OrbitHelper.current_user.nil?
OrbitHelper.get_page_controller.redirect_to "/sessions/new"
return nil
end
if act.need_pre_register && OrbitHelper.current_user
mp = OrbitHelper.current_user.member_profile rescue nil
if mp
act_signup.name = "#{mp.last_name_translations[I18n.locale.to_s]}#{mp.first_name_translations[I18n.locale.to_s]}".presence || mp.tmp_name
act_signup.email = mp.email
act_signup.birthday = mp.birthday
act_signup.sex = mp.sex
act_signup.fax = mp.fax
act_signup.address = mp.address
act_signup.tel = mp.office_tel
act_signup.phone = mp.mobile_no
end
end
{
"act" => act,
"act_signup" => act_signup,
@ -144,4 +163,4 @@ class ActivesController < ApplicationController
params.require(:act_signup).permit!
end
end
end

View File

@ -86,6 +86,7 @@ class Admin::ActivesController < OrbitAdminController
end
def export
return render_401 unless can_see_act_signup(@act)
title = @act.title.gsub(/\\|\//,'_')
respond_to do |format|
format.xlsx {
@ -96,7 +97,7 @@ class Admin::ActivesController < OrbitAdminController
end
def act_signup
return render_401 unless can_see_act_signup(@act)
@act_signups = ActSignup.where(:act_id => @act.id).page(params[:page]).per(10)
end

View File

@ -1,4 +1,8 @@
module Admin::ActivesHelper
def can_see_act_signup(act)
can_edit_or_delete?(act)
end
def page_for_act(active=nil)
ann_page = nil
pages = Page.where(:module=>'active')
@ -28,4 +32,4 @@ module Admin::ActivesHelper
request.protocol+(request.host_with_port+'/'+I18n.locale.to_s+ann_page.url+'/').gsub('//','/') rescue "/"
end
end
end
end

View File

@ -29,6 +29,7 @@ class Act
field :sign_start_date , :type => DateTime, :default => Time.now
field :sign_end_date , :type => DateTime, :default => Time.now
field :sign_up, :type => Boolean, :default => false
field :need_pre_register, :type => Boolean, :default => false
field :note, localize: true
field :has_name, :type => Boolean, :default => true
@ -65,6 +66,23 @@ class Act
field :enabled_emergency_contact_person, :type => Boolean, :default => false
field :enabled_vegetarian, :type => Boolean, :default => false
# ↓ 新增:自訂欄位顯示名稱(多語言)
field :signup_label_name, localize: true
field :signup_label_tel, localize: true
field :signup_label_phone, localize: true
field :signup_label_fax, localize: true
field :signup_label_email, localize: true
field :signup_label_idno, localize: true
field :signup_label_sex, localize: true
field :signup_label_birthday, localize: true
field :signup_label_organization, localize: true
field :signup_label_title, localize: true
field :signup_label_address, localize: true
field :signup_label_emergency_contact_number, localize: true
field :signup_label_emergency_contact_person, localize: true
field :signup_label_vegetarian, localize: true
field :signup_label_note, localize: true
has_many :act_links, :autosave => true, :dependent => :destroy
has_many :act_files, :autosave => true, :dependent => :destroy
has_many :act_signups, :autosave => true, :dependent => :destroy
@ -136,6 +154,12 @@ class Act
self.is_external_link && !self.external_link.blank?
end
# ↓ 新增:取得欄位自訂名稱,空白時 fallback 回 i18n 預設
def field_label(key)
custom = self.send("signup_label_#{key}") rescue nil
custom.presence || I18n.t("act_signup.#{key}")
end
def signup_show
time_now = Time.now
if self.sign_up

View File

@ -1,6 +1,9 @@
<% # encoding: utf-8 %>
<%
data = action_data
data = action_data
if data.nil?
return
end
@act = data["act"]
@act_signup = data["act_signup"]
@time_now = data["time_now"]
@ -8,7 +11,11 @@
%>
<% if !@act.sign_up.blank? and @act.sign_start_date < @time_now and ( @act.sign_end_date > @time_now or @act.sign_end_date.nil? ) %>
<% if @act.need_pre_register && OrbitHelper.current_user %>
<div class="alert alert-info">
<%= t('act.logged_in_as', email: (OrbitHelper.current_user.member_profile.email rescue '')) %>
</div>
<% end %>
<%= stylesheet_link_tag "basic/bootstrap-datetimepicker" %>
<%= javascript_include_tag "lib/bootstrap-datetimepicker" %>
@ -40,12 +47,12 @@
<!-- Name -->
<% if @act.enabled_name %>
<div class="form-group">
<label for="name" class="col-sm-2 control-label"><%= @act.has_name ? "*" : "" %><%= t('act_signup.name') %></label>
<label for="name" class="col-sm-2 control-label"><%= @act.has_name ? "*" : "" %><%= @act.field_label(:name) %></label>
<div class="col-sm-10">
<% if @act.has_name %>
<%= f.text_field :name, :class=>"input-medium form-control", :id=>'name', :placeholder=> t('act_signup.name'), :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
<%= f.text_field :name, :class=>"input-medium form-control", :id=>'name', :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
<% else %>
<%= f.text_field :name, :class=>"input-medium form-control", :id=>'name', :placeholder=> t('act_signup.name') %>
<%= f.text_field :name, :class=>"input-medium form-control", :id=>'name' %>
<% end %>
</div>
</div>
@ -54,12 +61,12 @@
<!-- IDNO -->
<% if @act.enabled_idno %>
<div class="form-group">
<label for="name" class="col-sm-2 control-label"><%= @act.has_idno ? "*" : "" %><%= t('act_signup.idno') %></label>
<label for="name" class="col-sm-2 control-label"><%= @act.has_idno ? "*" : "" %><%= @act.field_label(:idno) %></label>
<div class="col-sm-10">
<% if @act.has_idno %>
<%= f.text_field :idno, :class=>"input-medium form-control", :placeholder=> t('act_signup.idno'), :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
<%= f.text_field :idno, :class=>"input-medium form-control", :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
<% else %>
<%= f.text_field :idno, :class=>"input-medium form-control", :placeholder=> t('act_signup.idno') %>
<%= f.text_field :idno, :class=>"input-medium form-control" %>
<% end %>
</div>
</div>
@ -69,12 +76,12 @@
<!-- Birthday -->
<% if @act.enabled_birthday %>
<div class="form-group">
<label for="birthday" class="col-sm-2 control-label"><%= @act.has_birthday ? "*" : "" %><%= t('act_signup.birthday') %></label>
<label for="birthday" class="col-sm-2 control-label"><%= @act.has_birthday ? "*" : "" %><%= @act.field_label(:birthday) %></label>
<div class="col-sm-10">
<% if @act.has_birthday %>
<%= f.datetime_picker :birthday, :no_label => true, :format=>"yyyy/MM/dd", :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
<%= f.datetime_picker :birthday, :no_label => true, :format=>"yyyy/MM/dd", :new_record => @act_signup.birthday.blank?, :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
<% else %>
<%= f.datetime_picker :birthday, :no_label => true, :format=>"yyyy/MM/dd" %>
<%= f.datetime_picker :birthday, :no_label => true, :format=>"yyyy/MM/dd", :new_record => @act_signup.birthday.blank? %>
<% end %>
</div>
</div>
@ -83,7 +90,7 @@
<!-- Sex -->
<% if @act.enabled_sex %>
<div class="form-group">
<label for="sex" class="col-sm-2 control-label"><%= @act.has_sex ? "*" : "" %><%= t('act_signup.sex') %></label>
<label for="sex" class="col-sm-2 control-label"><%= @act.has_sex ? "*" : "" %><%= @act.field_label(:sex) %></label>
<div class="col-sm-10">
<label class="radio-inline">
<%= f.radio_button :sex, "male" %><%= t('users.male')%>
@ -102,12 +109,12 @@
<!-- Tel -->
<% if @act.enabled_tel %>
<div class="form-group">
<label for="tel" class="col-sm-2 control-label"><%= @act.has_tel ? "*" : "" %><%= t('act_signup.tel') %></label>
<label for="tel" class="col-sm-2 control-label"><%= @act.has_tel ? "*" : "" %><%= @act.field_label(:tel) %></label>
<div class="col-sm-10">
<% if @act.has_tel %>
<%= f.text_field :tel, :class=>"input-medium form-control", :placeholder=> t('act_signup.tel'), :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
<%= f.text_field :tel, :class=>"input-medium form-control", :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
<% else %>
<%= f.text_field :tel, :class=>"input-medium form-control", :placeholder=> t('act_signup.tel') %>
<%= f.text_field :tel, :class=>"input-medium form-control" %>
<% end %>
</div>
</div>
@ -116,12 +123,12 @@
<!-- Phone -->
<% if @act.enabled_phone %>
<div class="form-group">
<label for="phone" class="col-sm-2 control-label"><%= @act.has_phone ? "*" : "" %><%= t('act_signup.phone') %></label>
<label for="phone" class="col-sm-2 control-label"><%= @act.has_phone ? "*" : "" %><%= @act.field_label(:phone) %></label>
<div class="col-sm-10">
<% if @act.has_phone %>
<%= f.text_field :phone, :class=>"input-medium form-control", :placeholder=> t('act_signup.phone'), :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
<%= f.text_field :phone, :class=>"input-medium form-control", :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
<% else %>
<%= f.text_field :phone, :class=>"input-medium form-control", :placeholder=> t('act_signup.phone') %>
<%= f.text_field :phone, :class=>"input-medium form-control" %>
<% end %>
</div>
</div>
@ -130,12 +137,12 @@
<!-- Fax -->
<% if @act.enabled_fax %>
<div class="form-group">
<label for="fax" class="col-sm-2 control-label"><%= @act.has_fax ? "*" : "" %><%= t('act_signup.fax') %></label>
<label for="fax" class="col-sm-2 control-label"><%= @act.has_fax ? "*" : "" %><%= @act.field_label(:fax) %></label>
<div class="col-sm-10">
<% if @act.has_fax %>
<%= f.text_field :fax, :class=>"input-medium form-control", :placeholder=> t('act_signup.fax'), :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
<%= f.text_field :fax, :class=>"input-medium form-control", :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
<% else %>
<%= f.text_field :fax, :class=>"input-medium form-control", :placeholder=> t('act_signup.fax') %>
<%= f.text_field :fax, :class=>"input-medium form-control" %>
<% end %>
</div>
</div>
@ -144,7 +151,7 @@
<!-- Email -->
<% if @act.enabled_email %>
<div class="form-group">
<label for="email" class="col-sm-2 control-label"><%= @act.has_email ? "*" : "" %><%= t(:email) %></label>
<label for="email" class="col-sm-2 control-label"><%= @act.has_email ? "*" : "" %><%= @act.field_label(:email) %></label>
<div class="col-sm-10">
<% if @act.has_email %>
<%= f.email_field :email, :class=>"input-medium form-control availibility", :placeholder=> t(:email), :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
@ -158,12 +165,12 @@
<!-- Organization -->
<% if @act.enabled_organization %>
<div class="form-group">
<label for="fax" class="col-sm-2 control-label"><%= @act.has_organization ? "*" : "" %><%= t('act_signup.organization') %></label>
<label for="fax" class="col-sm-2 control-label"><%= @act.has_organization ? "*" : "" %><%= @act.field_label(:organization) %></label>
<div class="col-sm-10">
<% if @act.has_organization %>
<%= f.text_field :organization, :class=>"input-medium form-control", :placeholder=> t('act_signup.organization'), :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
<%= f.text_field :organization, :class=>"input-medium form-control", :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
<% else %>
<%= f.text_field :organization, :class=>"input-medium form-control", :placeholder=> t('act_signup.organization') %>
<%= f.text_field :organization, :class=>"input-medium form-control" %>
<% end %>
</div>
</div>
@ -172,12 +179,12 @@
<!-- Title -->
<% if @act.enabled_title %>
<div class="form-group">
<label for="fax" class="col-sm-2 control-label"><%= @act.has_title ? "*" : "" %><%= t('act_signup.title') %></label>
<label for="fax" class="col-sm-2 control-label"><%= @act.has_title ? "*" : "" %><%= @act.field_label(:title) %></label>
<div class="col-sm-10">
<% if @act.has_title %>
<%= f.text_field :title, :class=>"input-medium form-control", :placeholder=> t('act_signup.title'), :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
<%= f.text_field :title, :class=>"input-medium form-control", :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
<% else %>
<%= f.text_field :title, :class=>"input-medium form-control", :placeholder=> t('act_signup.title') %>
<%= f.text_field :title, :class=>"input-medium form-control" %>
<% end %>
</div>
</div>
@ -186,12 +193,12 @@
<!-- Address -->
<% if @act.enabled_address %>
<div class="form-group">
<label for="note" class="col-sm-2 control-label"><%= @act.has_address ? "*" : "" %><%= t('act_signup.address') %></label>
<label for="note" class="col-sm-2 control-label"><%= @act.has_address ? "*" : "" %><%= @act.field_label(:address) %></label>
<div class="col-sm-10">
<% if @act.has_address %>
<%= f.text_area :address, rows: 5, :class=>"input-medium form-control", :placeholder=> t('act_signup.address'), :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
<%= f.text_area :address, rows: 5, :class=>"input-medium form-control", :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
<% else %>
<%= f.text_area :address, rows: 5, :class=>"input-medium form-control", :placeholder=> t('act_signup.address') %>
<%= f.text_area :address, rows: 5, :class=>"input-medium form-control" %>
<% end %>
</div>
</div>
@ -200,12 +207,12 @@
<!-- Emergency Contact Person -->
<% if @act.enabled_emergency_contact_person %>
<div class="form-group">
<label for="fax" class="col-sm-2 control-label"><%= @act.has_emergency_contact_person ? "*" : "" %><%= t('act_signup.emergency_contact_person') %></label>
<label for="fax" class="col-sm-2 control-label"><%= @act.has_emergency_contact_person ? "*" : "" %><%= @act.field_label(:emergency_contact_person) %></label>
<div class="col-sm-10">
<% if @act.has_emergency_contact_person %>
<%= f.text_field :emergency_contact_person, :class=>"input-medium form-control", :placeholder=> t('act_signup.emergency_contact_person'), :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
<%= f.text_field :emergency_contact_person, :class=>"input-medium form-control", :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
<% else %>
<%= f.text_field :emergency_contact_person, :class=>"input-medium form-control", :placeholder=> t('act_signup.emergency_contact_person') %>
<%= f.text_field :emergency_contact_person, :class=>"input-medium form-control" %>
<% end %>
</div>
</div>
@ -214,12 +221,12 @@
<!-- Emergency Contact Number -->
<% if @act.enabled_emergency_contact_number %>
<div class="form-group">
<label for="fax" class="col-sm-2 control-label"><%= @act.has_emergency_contact_number ? "*" : "" %><%= t('act_signup.emergency_contact_number') %></label>
<label for="fax" class="col-sm-2 control-label"><%= @act.has_emergency_contact_number ? "*" : "" %><%= @act.field_label(:emergency_contact_number) %></label>
<div class="col-sm-10">
<% if @act.has_emergency_contact_number %>
<%= f.text_field :emergency_contact_number, :class=>"input-medium form-control", :placeholder=> t('act_signup.emergency_contact_number'), :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
<%= f.text_field :emergency_contact_number, :class=>"input-medium form-control", :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
<% else %>
<%= f.text_field :emergency_contact_number, :class=>"input-medium form-control", :placeholder=> t('act_signup.emergency_contact_number') %>
<%= f.text_field :emergency_contact_number, :class=>"input-medium form-control" %>
<% end %>
</div>
</div>
@ -228,7 +235,7 @@
<!-- Vegetarian -->
<% if @act.enabled_vegetarian %>
<div class="form-group">
<label for="sex" class="col-sm-2 control-label"><%= @act.has_vegetarian ? "*" : "" %><%= t('act_signup.vegetarian') %></label>
<label for="sex" class="col-sm-2 control-label"><%= @act.has_vegetarian ? "*" : "" %><%= @act.field_label(:vegetarian) %></label>
<div class="col-sm-10">
<label class="radio-inline">
<%= f.radio_button :vegetarian, "true" %><%= t(:yes_)%>
@ -247,12 +254,12 @@
<!-- Note -->
<% if @act.enabled_note %>
<div class="form-group">
<label for="note" class="col-sm-2 control-label"><%= @act.has_note ? "*" : "" %><%= t('act_signup.note') %></label>
<label for="note" class="col-sm-2 control-label"><%= @act.has_note ? "*" : "" %><%= @act.field_label(:note) %></label>
<div class="col-sm-10">
<% if @act.has_note %>
<%= f.text_area :note, rows: 5, :class=>"input-medium form-control", :placeholder=> t('act_signup.note'), :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
<%= f.text_area :note, rows: 5, :class=>"input-medium form-control", :data => {"fv-validation" => "required;", "fv-messages" => "Cannot be empty.;"} %>
<% else %>
<%= f.text_area :note, rows: 5, :class=>"input-medium form-control", :placeholder=> t('act_signup.note') %>
<%= f.text_area :note, rows: 5, :class=>"input-medium form-control" %>
<% end %>
</div>
</div>

View File

@ -30,36 +30,39 @@
</div>
<!-- Name -->
<% if @act.enabled_name %>
<div class="control-group">
<label class="control-label muted"><%= t('act_signup.name') %></label>
<label class="control-label muted"><%= @act.field_label(:name) %></label>
<div class="controls">
<%= f.text_field :name, :class => "input-block-level", placeholder: t('act_signup.name') %>
<%= f.text_field :name, :class => "input-block-level" %>
</div>
</div>
<% if @act.has_idno %>
<% end %>
<!-- IDNO -->
<% if @act.enabled_idno %>
<div class="control-group">
<label class="control-label muted"><%= t('act_signup.idno') %></label>
<label class="control-label muted"><%= @act.field_label(:idno) %></label>
<div class="controls">
<%= f.text_field :idno, :class => "input-block-level", :placeholder=> t('act_signup.idno'), :required => true %>
<%= f.text_field :idno, :class => "input-block-level" %>
</div>
</div>
<% end %>
<!-- Birthday -->
<% if @act.enabled_birthday %>
<div class="control-group">
<label class="control-label muted"><%= t('act_signup.birthday') %></label>
<label class="control-label muted"><%= @act.field_label(:birthday) %></label>
<div class="controls">
<%= f.datetime_picker :birthday, :no_label => true, :format=>"yyyy/MM/dd" %>
<%= f.datetime_picker :birthday, :no_label => true, :format=>"yyyy/MM/dd", :new_record => false %>
</div>
</div>
<% end %>
<!-- Sex -->
<% if @act.enabled_sex %>
<div class="control-group">
<label class="control-label muted"><%= t('act_signup.sex') %></label>
<label class="control-label muted"><%= @act.field_label(:sex) %></label>
<div class="controls">
<label class="radio inline">
<%= f.radio_button :sex, "male" %><%= t('users.male')%>
@ -69,47 +72,122 @@
</label>
</div>
</div>
<!-- Tel -->
<div class="control-group">
<label class="control-label muted"><%= t('act_signup.tel') %></label>
<div class="controls">
<%= f.text_field :tel, :class=>"input-block-level", :placeholder=> t('act_signup.tel'), :required => true %>
</div>
</div>
<!-- Phone -->
<div class="control-group">
<label class="control-label muted"><%= t('act_signup.phone') %></label>
<div class="controls">
<%= f.text_field :phone, :class=>"input-block-level", :placeholder=> t('act_signup.phone') %>
</div>
</div>
<!-- Fax -->
<div class="control-group">
<label class="control-label muted"><%= t('act_signup.fax') %></label>
<div class="controls">
<%= f.text_field :phone, :class=>"input-block-level", :placeholder=> t('act_signup.fax') %>
</div>
</div>
<!-- Email -->
<div class="control-group">
<label class="control-label muted"><%= t(:email) %></label>
<div class="controls">
<%= f.email_field :email, :class=>"input-block-level", :placeholder=> t(:email), :required => true %>
</div>
</div>
<!-- Note -->
<div class="control-group">
<label class="control-label muted"><%= t('act.note') %></label>
<div class="controls">
<%= f.text_area :note, rows: 5, :class=>"input-block-level", :placeholder=> t('act.note') %>
</div>
</div>
<% end %>
<!-- Tel -->
<% if @act.enabled_tel %>
<div class="control-group">
<label class="control-label muted"><%= @act.field_label(:tel) %></label>
<div class="controls">
<%= f.text_field :tel, :class=>"input-block-level" %>
</div>
</div>
<% end %>
<!-- Phone -->
<% if @act.enabled_phone %>
<div class="control-group">
<label class="control-label muted"><%= @act.field_label(:phone) %></label>
<div class="controls">
<%= f.text_field :phone, :class=>"input-block-level" %>
</div>
</div>
<% end %>
<!-- Fax -->
<% if @act.enabled_fax %>
<div class="control-group">
<label class="control-label muted"><%= @act.field_label(:fax) %></label>
<div class="controls">
<%= f.text_field :fax, :class=>"input-block-level" %>
</div>
</div>
<% end %>
<!-- Email -->
<% if @act.enabled_email %>
<div class="control-group">
<label class="control-label muted"><%= @act.field_label(:email) %></label>
<div class="controls">
<%= f.email_field :email, :class=>"input-block-level" %>
</div>
</div>
<% end %>
<!-- Organization -->
<% if @act.enabled_organization %>
<div class="control-group">
<label class="control-label muted"><%= @act.field_label(:organization) %></label>
<div class="controls">
<%= f.text_field :organization, :class=>"input-block-level" %>
</div>
</div>
<% end %>
<!-- Title -->
<% if @act.enabled_title %>
<div class="control-group">
<label class="control-label muted"><%= @act.field_label(:title) %></label>
<div class="controls">
<%= f.text_field :title, :class=>"input-block-level" %>
</div>
</div>
<% end %>
<!-- Address -->
<% if @act.enabled_address %>
<div class="control-group">
<label class="control-label muted"><%= @act.field_label(:address) %></label>
<div class="controls">
<%= f.text_area :address, rows: 5, :class=>"input-block-level" %>
</div>
</div>
<% end %>
<!-- Emergency Contact Person -->
<% if @act.enabled_emergency_contact_person %>
<div class="control-group">
<label class="control-label muted"><%= @act.field_label(:emergency_contact_person) %></label>
<div class="controls">
<%= f.text_field :emergency_contact_person, :class=>"input-block-level" %>
</div>
</div>
<% end %>
<!-- Emergency Contact Number -->
<% if @act.enabled_emergency_contact_number %>
<div class="control-group">
<label class="control-label muted"><%= @act.field_label(:emergency_contact_number) %></label>
<div class="controls">
<%= f.text_field :emergency_contact_number, :class=>"input-block-level" %>
</div>
</div>
<% end %>
<!-- Vegetarian -->
<% if @act.enabled_vegetarian %>
<div class="control-group">
<label class="control-label muted"><%= @act.field_label(:vegetarian) %></label>
<div class="controls">
<label class="radio inline">
<%= f.radio_button :vegetarian, "true" %><%= t(:yes_)%>
</label>
<label class="radio inline">
<%= f.radio_button :vegetarian, "false" %><%= t(:no_) %>
</label>
</div>
</div>
<% end %>
<!-- Note -->
<% if @act.enabled_note %>
<div class="control-group">
<label class="control-label muted"><%= @act.field_label(:note) %></label>
<div class="controls">
<%= f.text_area :note, rows: 5, :class=>"input-block-level" %>
</div>
</div>
<% end %>
</div>
@ -124,4 +202,4 @@
</fieldset>
<% end %>
<% end %>

View File

@ -101,6 +101,15 @@
</div>
</div>
<!-- 新增:是否需先註冊才能報名 -->
<div class="control-group" style="display: none;" id="need_pre_register_box">
<label class="control-label muted"><%= t('act.need_pre_register') %></label>
<div class="controls">
<label class="radio inline"><%= f.radio_button :need_pre_register, "true", checked: @act.need_pre_register == true %><%= t(:yes_) %></label>
<label class="radio inline"><%= f.radio_button :need_pre_register, "false", checked: @act.need_pre_register != true %><%= t(:no_) %></label>
</div>
</div>
<div class="control-group" style="display: none;" id="external_link_box">
<%= f.label :external_link, t("act.external_link"), :class => "control-label muted" %>
<div class="controls">
@ -110,250 +119,65 @@
</div>
</div>
<div class="tab-pane fade" id="settings">
<!-- Name -->
<div class="control-group">
<label class="control-label muted"><%= t('act.has_name') %></label>
<div class="controls">
<label for="act_enabled_name" class="checkbox inline">
<%= f.check_box :enabled_name, :class => "enabler" %>
<%= t(:enable)%>
</label>
</div>
<div class="controls required">
<label class="radio inline"><%= t("act.required") %></label>
<label class="radio inline"><%= f.radio_button :has_name, "yes", checked: @act.has_name == true ? true : false %><%= t(:yes_) %></label>
<label class="radio inline"><%= f.radio_button :has_name, "no", checked: @act.has_name == false ? true : false %><%= t(:no_) %></label>
</div>
</div>
<!-- Tel No -->
<div class="control-group">
<label class="control-label muted"><%= t('act.has_tel') %></label>
<div class="controls">
<label for="act_enabled_tel" class="checkbox inline">
<%= f.check_box :enabled_tel, :class => "enabler" %>
Enable
</label>
</div>
<div class="controls required" <%= !@act.enabled_tel ? "style=display:none;" : "" %>>
<label class="radio inline"><%= t("act.required") %></label>
<label class="radio inline"><%= f.radio_button :has_tel, "yes", checked: @act.has_tel == true ? true : false %><%= t(:yes_) %></label>
<label class="radio inline"><%= f.radio_button :has_tel, "no", checked: @act.has_tel == false ? true : false %><%= t(:no_) %></label>
</div>
</div>
<!-- Mobile No -->
<div class="control-group">
<label class="control-label muted"><%= t('act.has_phone') %></label>
<div class="controls">
<label for="act_enabled_phone" class="checkbox inline">
<%= f.check_box :enabled_phone, :class => "enabler" %>
Enable
</label>
</div>
<div class="controls required" <%= !@act.enabled_phone ? "style=display:none;" : "" %>>
<label class="radio inline"><%= t("act.required") %></label>
<label class="radio inline"><%= f.radio_button :has_phone, "yes", checked: @act.has_phone == true ? true : false %><%= t(:yes_) %></label>
<label class="radio inline"><%= f.radio_button :has_phone, "no", checked: @act.has_phone == false ? true : false %><%= t(:no_) %></label>
</div>
</div>
<!-- Fax No -->
<div class="control-group">
<label class="control-label muted"><%= t('act.has_fax') %></label>
<div class="controls">
<label for="act_enabled_fax" class="checkbox inline">
<%= f.check_box :enabled_fax, :class => "enabler" %>
Enable
</label>
</div>
<div class="controls required" <%= !@act.enabled_fax ? "style=display:none;" : "" %>>
<label class="radio inline"><%= t("act.required") %></label>
<label class="radio inline"><%= f.radio_button :has_fax, "yes", checked: @act.has_fax == true ? true : false %><%= t(:yes_) %></label>
<label class="radio inline"><%= f.radio_button :has_fax, "no", checked: @act.has_fax == false ? true : false %><%= t(:no_) %></label>
</div>
</div>
<!-- Email Id -->
<div class="control-group">
<label class="control-label muted"><%= t('act.has_email') %></label>
<div class="controls">
<label for="act_enabled_email" class="checkbox inline">
<%= f.check_box :enabled_email, :class => "enabler" %>
Enable
</label>
</div>
<div class="controls required" <%= !@act.enabled_email ? "style=display:none;" : "" %>>
<label class="radio inline"><%= t("act.required") %></label>
<label class="radio inline"><%= f.radio_button :has_email, "yes", checked: @act.has_email == true ? true : false %><%= t(:yes_) %></label>
<label class="radio inline"><%= f.radio_button :has_email, "no", checked: @act.has_email == false ? true : false %><%= t(:no_) %></label>
</div>
</div>
<!-- ID No -->
<div class="control-group">
<label class="control-label muted"><%= t('act.has_idno') %></label>
<div class="controls">
<label for="act_enabled_idno" class="checkbox inline">
<%= f.check_box :enabled_idno, :class => "enabler" %>
Enable
</label>
</div>
<div class="controls required" <%= !@act.enabled_idno ? "style=display:none;" : "" %>>
<label class="radio inline"><%= t("act.required") %></label>
<label class="radio inline"><%= f.radio_button :has_idno, "yes", checked: @act.has_idno == true ? true : false %><%= t(:yes_) %></label>
<label class="radio inline"><%= f.radio_button :has_idno, "no", checked: @act.has_idno == false ? true : false %><%= t(:no_) %></label>
</div>
</div>
<!-- Gender -->
<div class="control-group">
<label class="control-label muted"><%= t('act.has_sex') %></label>
<div class="controls">
<label for="act_enabled_sex" class="checkbox inline">
<%= f.check_box :enabled_sex, :class => "enabler" %>
Enable
</label>
</div>
<div class="controls required" <%= !@act.enabled_sex ? "style=display:none;" : "" %>>
<label class="radio inline"><%= t("act.required") %></label>
<label class="radio inline"><%= f.radio_button :has_sex, "yes", checked: @act.has_sex == true ? true : false %><%= t(:yes_) %></label>
<label class="radio inline"><%= f.radio_button :has_sex, "no", checked: @act.has_sex == false ? true : false %><%= t(:no_) %></label>
</div>
</div>
<!-- Birthday -->
<div class="control-group">
<label class="control-label muted"><%= t('act.has_birthday') %></label>
<div class="controls">
<label for="act_enabled_birthday" class="checkbox inline">
<%= f.check_box :enabled_birthday, :class => "enabler" %>
Enable
</label>
</div>
<div class="controls required" <%= !@act.enabled_birthday ? "style=display:none;" : "" %>>
<label class="radio inline"><%= t("act.required") %></label>
<label class="radio inline"><%= f.radio_button :has_birthday, "yes", checked: @act.has_birthday == true ? true : false %><%= t(:yes_) %></label>
<label class="radio inline"><%= f.radio_button :has_birthday, "no", checked: @act.has_birthday == false ? true : false %><%= t(:no_) %></label>
</div>
</div>
<!-- Organization -->
<div class="control-group">
<label class="control-label muted"><%= t('act.has_organization') %></label>
<div class="controls">
<label for="act_enabled_organization" class="checkbox inline">
<%= f.check_box :enabled_organization, :class => "enabler" %>
Enable
</label>
</div>
<div class="controls required" <%= !@act.enabled_organization ? "style=display:none;" : "" %>>
<label class="radio inline"><%= t("act.required") %></label>
<label class="radio inline"><%= f.radio_button :has_organization, "yes", checked: @act.has_organization == true ? true : false %><%= t(:yes_) %></label>
<label class="radio inline"><%= f.radio_button :has_organization, "no", checked: @act.has_organization == false ? true : false %><%= t(:no_) %></label>
</div>
</div>
<!-- Title -->
<div class="control-group">
<label class="control-label muted"><%= t('act.has_title') %></label>
<div class="controls">
<label for="act_enabled_title" class="checkbox inline">
<%= f.check_box :enabled_title, :class => "enabler" %>
Enable
</label>
</div>
<div class="controls required" <%= !@act.enabled_title ? "style=display:none;" : "" %>>
<label class="radio inline"><%= t("act.required") %></label>
<label class="radio inline"><%= f.radio_button :has_title, "yes", checked: @act.has_title == true ? true : false %><%= t(:yes_) %></label>
<label class="radio inline"><%= f.radio_button :has_title, "no", checked: @act.has_title == false ? true : false %><%= t(:no_) %></label>
</div>
</div>
<!-- Address -->
<div class="control-group">
<label class="control-label muted"><%= t('act.has_address') %></label>
<div class="controls">
<label for="act_enabled_address" class="checkbox inline">
<%= f.check_box :enabled_address, :class => "enabler" %>
Enable
</label>
</div>
<div class="controls required" <%= !@act.enabled_address ? "style=display:none;" : "" %>>
<label class="radio inline"><%= t("act.required") %></label>
<label class="radio inline"><%= f.radio_button :has_address, "yes", checked: @act.has_address == true ? true : false %><%= t(:yes_) %></label>
<label class="radio inline"><%= f.radio_button :has_address, "no", checked: @act.has_address == false ? true : false %><%= t(:no_) %></label>
</div>
</div>
<!-- Emergency Contact Number -->
<div class="control-group">
<label class="control-label muted"><%= t('act.has_emergency_contact_number') %></label>
<div class="controls">
<label for="act_enabled_emergency_contact_number" class="checkbox inline">
<%= f.check_box :enabled_emergency_contact_number, :class => "enabler" %>
Enable
</label>
</div>
<div class="controls required" <%= !@act.enabled_emergency_contact_number ? "style=display:none;" : "" %>>
<label class="radio inline"><%= t("act.required") %></label>
<label class="radio inline"><%= f.radio_button :has_emergency_contact_number, "yes", checked: @act.has_emergency_contact_number == true ? true : false %><%= t(:yes_) %></label>
<label class="radio inline"><%= f.radio_button :has_emergency_contact_number, "no", checked: @act.has_emergency_contact_number == false ? true : false %><%= t(:no_) %></label>
</div>
</div>
<!-- Emergency Contact Person -->
<div class="control-group">
<label class="control-label muted"><%= t('act.has_emergency_contact_person') %></label>
<div class="controls">
<label for="act_enabled_emergency_contact_person" class="checkbox inline">
<%= f.check_box :enabled_emergency_contact_person, :class => "enabler" %>
Enable
</label>
</div>
<div class="controls required" <%= !@act.enabled_emergency_contact_person ? "style=display:none;" : "" %>>
<label class="radio inline"><%= t("act.required") %></label>
<label class="radio inline"><%= f.radio_button :has_emergency_contact_person, "yes", checked: @act.has_emergency_contact_person == true ? true : false %><%= t(:yes_) %></label>
<label class="radio inline"><%= f.radio_button :has_emergency_contact_person, "no", checked: @act.has_emergency_contact_person == false ? true : false %><%= t(:no_) %></label>
</div>
</div>
<!-- Vegetarian -->
<div class="control-group">
<label class="control-label muted"><%= t('act.has_vegetarian') %></label>
<div class="controls">
<label for="act_enabled_vegetarian" class="checkbox inline">
<%= f.check_box :enabled_vegetarian, :class => "enabler" %>
Enable
</label>
</div>
<div class="controls required" <%= !@act.enabled_vegetarian ? "style=display:none;" : "" %>>
<label class="radio inline"><%= t("act.required") %></label>
<label class="radio inline"><%= f.radio_button :has_vegetarian, "yes", checked: @act.has_vegetarian == true ? true : false %><%= t(:yes_) %></label>
<label class="radio inline"><%= f.radio_button :has_vegetarian, "no", checked: @act.has_vegetarian == false ? true : false %><%= t(:no_) %></label>
</div>
</div>
<!-- Note -->
<div class="control-group">
<label class="control-label muted"><%= t('act.has_note') %></label>
<div class="controls">
<label for="act_enabled_note" class="checkbox inline">
<%= f.check_box :enabled_note, :class => "enabler" %>
Enable
</label>
</div>
<div class="controls required" <%= !@act.enabled_note ? "style=display:none;" : "" %>>
<label class="radio inline"><%= t("act.required") %></label>
<label class="radio inline"><%= f.radio_button :has_note, "yes", checked: @act.has_note == true ? true : false %><%= t(:yes_) %></label>
<label class="radio inline"><%= f.radio_button :has_note, "no", checked: @act.has_note == false ? true : false %><%= t(:no_) %></label>
</div>
</div>
<table class="table table-bordered table-condensed">
<thead>
<tr>
<th><%= t('act.field_name') %></th>
<% @site_in_use_locales.each do |locale| %>
<th><%= t('act.field_label') %> (<%= t(locale.to_s) %>)</th>
<% end %>
<th><%= t('act.field_enabled') %></th>
<th><%= t('act.required') %></th>
</tr>
</thead>
<tbody>
<% [
[:name, :enabled_name, :has_name],
[:tel, :enabled_tel, :has_tel],
[:phone, :enabled_phone, :has_phone],
[:fax, :enabled_fax, :has_fax],
[:email, :enabled_email, :has_email],
[:idno, :enabled_idno, :has_idno],
[:sex, :enabled_sex, :has_sex],
[:birthday, :enabled_birthday, :has_birthday],
[:organization, :enabled_organization, :has_organization],
[:title, :enabled_title, :has_title],
[:address, :enabled_address, :has_address],
[:emergency_contact_number, :enabled_emergency_contact_number, :has_emergency_contact_number],
[:emergency_contact_person, :enabled_emergency_contact_person, :has_emergency_contact_person],
[:vegetarian, :enabled_vegetarian, :has_vegetarian],
[:note, :enabled_note, :has_note],
].each do |key, enabled_field, has_field| %>
<tr>
<td><%= t("act.has_#{key}") %></td>
<% @site_in_use_locales.each do |locale| %>
<td>
<%= f.fields_for "signup_label_#{key}_translations" do |lf| %>
<%= lf.text_field locale,
value: (@act.send("signup_label_#{key}_translations")[locale.to_s].presence || I18n.with_locale(locale){ I18n.t("act_signup.#{key}") }),
placeholder: I18n.with_locale(locale){ I18n.t("act_signup.#{key}") },
class: "input-medium" %>
<% end %>
</td>
<% end %>
<td class="text-center">
<%= f.check_box enabled_field, class: "act-enabler", data: { target: "required_#{key}" } %>
</td>
<td id="required_<%= key %>" <%= @act.send(enabled_field) ? '' : 'style="display:none;"' %>>
<label class="radio inline">
<%= f.radio_button has_field, "yes", checked: @act.send(has_field) == true %><%= t(:yes_) %>
</label>
<label class="radio inline">
<%= f.radio_button has_field, "no", checked: @act.send(has_field) != true %><%= t(:no_) %>
</label>
</td>
</tr>
<% end %>
</tbody>
</table>
</div>
<!-- Status Module -->
<div class="tab-pane fade" id="status">
@ -590,14 +414,14 @@
}
},100)
})
$(".enabler").on("click",function(){
var parent = $(this).parent().parent().parent();
$(".act-enabler").on("change",function(){
var target = "#" + $(this).data("target");
if($(this).is(":checked")){
parent.find(".required").show();
$(target).show();
}else{
parent.find(".required").hide();
$(target).hide();
}
})
});
$("#main-wrap").after("");
$(document).on('click', '#add_link', function(){
@ -643,8 +467,15 @@
$("#act_is_external_link").on("change",function(){
if($(this).is(":checked") && $("input[name=\"act[sign_up]\"]:checked").val()=='yes'){
$("#external_link_box").show();
$("#need_pre_register_box").hide();
$("input[name=\"act[need_pre_register]\"][value='false']").prop("checked", true);
}else{
$("#external_link_box").hide();
if($("input[name=\"act[sign_up]\"]:checked").val()=='yes'){
$("#need_pre_register_box").show();
}else{
$("#need_pre_register_box").hide();
}
}
}).trigger('change');
@ -653,6 +484,8 @@
$("#external_link_check_box").show();
}else{
$("#external_link_check_box").hide();
$("#need_pre_register_box").hide();
$("input[name=\"act[need_pre_register]\"][value='false']").prop("checked", true);
}
$("#act_is_external_link").trigger('change')
}).trigger('change');
@ -677,4 +510,4 @@
});
});
</script>
<% end %>
<% end %>

View File

@ -42,8 +42,18 @@
<td><%= Act.time_range(act.act_start_date, act.act_end_date) %></td>
<td><%= format_value(act.postdate,'yyyy-MM-dd') %></td>
<td class="<%= act.expired? ? "expired" : "" %>"><%= format_value(act.end_date,'yyyy-MM-dd') %></td>
<td><a href="/admin/actives/<%=act.id.to_s%>/act_signup"><%= act.act_signups.count %></a></td>
<td><a href="/admin/actives/<%=act.id.to_s%>/export?format=xlsx" target="_blank"><%= t('act.export') %></a></td>
<td>
<% if can_see_act_signup(act) %>
<a href="/admin/actives/<%=act.id.to_s%>/act_signup"><%= act.act_signups.count %></a>
<% else %>
<%= act.act_signups.count %>
<% end %>
</td>
<td>
<% if can_see_act_signup(act) %>
<a href="/admin/actives/<%=act.id.to_s%>/export?format=xlsx" target="_blank"><%= t('act.export') %></a>
<% end %>
</td>
</tr>
<% end %>
</tbody>
@ -53,4 +63,4 @@
content_tag :div, class: "bottomnav clearfix" do
content_tag :div, paginate(@acts), class: "pagination pagination-centered"
end
%>
%>

View File

@ -21,7 +21,7 @@
<%= act_signup.name %>
<div class="quick-edit">
<ul class="nav nav-pills">
<% if can_edit_or_delete?(act_signup) %>
<% if can_see_act_signup(@act) %>
<li><a href="/admin/active_signups/<%=act_signup.id.to_s%>/edit"><%= t(:edit) %></a></li>
<li><a href="#" class="delete text-error" rel="/admin/active_signups/<%=act_signup.id.to_s%>"><%= t(:delete_) %></a></li>
<% end %>

View File

@ -6,35 +6,35 @@ wb.add_worksheet(name: t('module_name.active')) do |sheet|
row = []
row << t('act_signup.name') if !@act.enabled_name.blank?
row << @act.field_label(:name) if !@act.enabled_name.blank?
row << t('act_signup.idno') if !@act.enabled_idno.blank?
row << @act.field_label(:idno) if !@act.enabled_idno.blank?
row << t('act_signup.sex') if !@act.enabled_sex.blank?
row << @act.field_label(:sex) if !@act.enabled_sex.blank?
row << t('act_signup.birthday') if !@act.enabled_birthday.blank?
row << @act.field_label(:birthday) if !@act.enabled_birthday.blank?
row << t('act_signup.tel') if !@act.enabled_tel.blank?
row << @act.field_label(:tel) if !@act.enabled_tel.blank?
row << t('act_signup.phone') if !@act.enabled_phone.blank?
row << @act.field_label(:phone) if !@act.enabled_phone.blank?
row << t('act_signup.fax') if !@act.enabled_fax.blank?
row << @act.field_label(:fax) if !@act.enabled_fax.blank?
row << t(:email) if !@act.enabled_email.blank?
row << t("act_signup.organization") if !@act.enabled_organization.blank?
row << @act.field_label(:email) if !@act.enabled_email.blank?
row << t("act_signup.title") if !@act.enabled_title.blank?
row << @act.field_label(:organization) if !@act.enabled_organization.blank?
row << t("act_signup.address") if !@act.enabled_address.blank?
row << @act.field_label(:title) if !@act.enabled_title.blank?
row << t("act_signup.emergency_contact_number") if !@act.enabled_emergency_contact_number.blank?
row << @act.field_label(:address) if !@act.enabled_address.blank?
row << t("act_signup.emergency_contact_person") if !@act.enabled_emergency_contact_person.blank?
row << @act.field_label(:emergency_contact_number) if !@act.enabled_emergency_contact_number.blank?
row << t("act_signup.vegetarian") if !@act.enabled_vegetarian.blank?
row << @act.field_label(:emergency_contact_person) if !@act.enabled_emergency_contact_person.blank?
row << t('act.note') if !@act.enabled_note.blank?
row << @act.field_label(:vegetarian) if !@act.enabled_vegetarian.blank?
row << @act.field_label(:note) if !@act.enabled_note.blank?
sheet.add_row row
@ -50,13 +50,13 @@ wb.add_worksheet(name: t('module_name.active')) do |sheet|
row2 << signup.phone if !@act.enabled_phone.blank?
row2 << signup.fax if !@act.enabled_fax.blank?
row2 << signup.email if !@act.enabled_email.blank?
row2 << signup.note if !@act.enabled_note.blank?
row2 << signup.organization if !@act.enabled_organization.blank?
row2 << signup.title if !@act.enabled_title.blank?
row2 << signup.address if !@act.enabled_address.blank?
row2 << signup.emergency_contact_number if !@act.enabled_emergency_contact_number.blank?
row2 << signup.emergency_contact_person if !@act.enabled_emergency_contact_person.blank?
row2 << signup.vegetarian if !@act.enabled_vegetarian.blank?
row2 << (signup.vegetarian ? t(:yes_) : t(:no_)) if !@act.enabled_vegetarian.blank?
row2 << signup.note if !@act.enabled_note.blank?
sheet.add_row row2
end

View File

@ -31,6 +31,8 @@ en:
sign_start_date: Sign up start date
sign_end_date: Sign up end date
is_sign_up: Enable online registration
need_pre_register: Require login before registration
logged_in_as: "Currently logged in as: %{email}"
set_active_agreements: Policy Content Setting
active_agreements: Policy Content
active_agreements_content: Content of Privacy and Personal Information Protection Policy
@ -58,6 +60,9 @@ en:
has_email: Email
has_note: Note
required: Required
field_name: Field
field_label: Label
field_enabled: Enable
default_widget:
title: Title
@ -74,6 +79,7 @@ en:
tel: TEL
phone: Mobile telephone
fax: Fax
email: Email
agree: "Accept Privacy and Personal Information Protection Policy of the Site"
organization: Organization
title: Title
@ -81,4 +87,4 @@ en:
emergency_contact_person: Emergency Contact Person
emergency_contact_number: Emergency Contact Number
vegetarian: Vegetarian
note: Note
note: Note

View File

@ -31,6 +31,8 @@ zh_tw:
sign_start_date: 報名開始日期
sign_end_date: 報名結束日期
is_sign_up: 是否線上報名
need_pre_register: 是否需先登入才能報名
logged_in_as: 目前登入信箱:%{email}
set_active_agreements: 設定個資宣告
active_agreements: 個資宣告
active_agreements_content: 個資同意書內容
@ -58,7 +60,9 @@ zh_tw:
has_email: 電子郵件
has_note: 備註
required: 必填
field_name: 欄位名稱
field_label: 顯示名稱
field_enabled: 啟用
default_widget:
title: 活動標題
time_range: 活動期間
@ -74,6 +78,7 @@ zh_tw:
tel: 聯絡電話
phone: 行動電話
fax: 傳真
email: 電子郵件
agree: 同意接受本站個資及隱私權保護宣告
recaptcha: 驗證碼
organization: 單位
@ -82,4 +87,4 @@ zh_tw:
emergency_contact_person: 緊急聯絡人
emergency_contact_number: 緊急聯絡人電話
vegetarian: 素食
note: 備註
note: 備註