Merge branch 'master' into 'master'
Master Add lots of feature. See merge request !9
This commit is contained in:
commit
66953c08a3
|
@ -2,12 +2,21 @@
|
|||
class Admin::SeminarSignupsController < OrbitAdminController
|
||||
include Admin::SeminarsHelper
|
||||
before_action ->(module_app = @app_title) { set_variables module_app }
|
||||
|
||||
before_action :check_manager_for_seminar
|
||||
def initialize
|
||||
super
|
||||
@app_title = "seminar"
|
||||
end
|
||||
|
||||
def check_manager_for_seminar
|
||||
OrbitHelper.set_params(params,current_user)
|
||||
access_level = OrbitHelper.user_access_level?
|
||||
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
|
||||
end
|
||||
end
|
||||
def edit
|
||||
OrbitHelper.set_params(params,current_user)
|
||||
params[:controller] = "admin/seminars"
|
||||
|
@ -29,6 +38,15 @@ class Admin::SeminarSignupsController < OrbitAdminController
|
|||
field_value = r.last[:id].present?
|
||||
@custom_field_value = SeminarSignupValue.put_field_values(@seminar_signup, r.last, r.last[:id], field_value)
|
||||
end
|
||||
seminar_reviews = SeminarReview.where(:seminar_main_id=>@seminar_signup.seminar_main_id).to_a
|
||||
seminar_reviews.each{|sr| sr.save}
|
||||
@seminar = @seminar_signup.seminar_main
|
||||
unassigned_seminar_signup_ids = @seminar.seminar_signup_ids.map{|s| s.to_s}
|
||||
@seminar.seminar_reviews.each do |sr|
|
||||
unassigned_seminar_signup_ids = unassigned_seminar_signup_ids - sr.all_seminar_signup_ids
|
||||
end
|
||||
@seminar.unassigned_seminar_signup_ids = unassigned_seminar_signup_ids
|
||||
@seminar.save
|
||||
end
|
||||
|
||||
redirect_to "/admin/seminars/#{@seminar_signup.seminar_main_id}/seminar_signup"
|
||||
|
|
|
@ -2,10 +2,13 @@
|
|||
class Admin::SeminarsController < OrbitAdminController
|
||||
|
||||
require 'axlsx'
|
||||
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]
|
||||
|
||||
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]
|
||||
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]
|
||||
def initialize
|
||||
super
|
||||
@app_title = "seminar"
|
||||
|
@ -16,7 +19,229 @@ class Admin::SeminarsController < OrbitAdminController
|
|||
:category=>categories.map{|c| {:title=>(c.title.blank? ? " " : c.title), :id=>c.id}}
|
||||
}
|
||||
end
|
||||
def check_manager_for_seminar
|
||||
OrbitHelper.set_params(params,current_user)
|
||||
access_level = OrbitHelper.user_access_level?
|
||||
if (access_level.nil? || access_level == "user") && (@seminar.organizer_id != current_user.member_profile_id rescue true)
|
||||
render_401
|
||||
end
|
||||
end
|
||||
def check_permission_for_seminar
|
||||
OrbitHelper.set_params(params,current_user)
|
||||
access_level = OrbitHelper.user_access_level?
|
||||
if (access_level.nil? || access_level == "user")
|
||||
unless (@seminar.reviewer_ids.include?(current_user.member_profile_id.to_s) rescue false) || (@seminar.organizer_id == current_user.member_profile_id rescue false)
|
||||
render_401
|
||||
else
|
||||
@user_authenticated_categories = ['all']
|
||||
end
|
||||
end
|
||||
end
|
||||
def reviewer_setting
|
||||
@seminar_reviews = @seminar.seminar_reviews
|
||||
@fields = []
|
||||
@fields_translations = []
|
||||
access_markup = ["select","radio_button","checkbox"]
|
||||
@fields_values = []
|
||||
@seminar.seminar_signup_fields.each do |f|
|
||||
next if f.disabled
|
||||
if access_markup.include?(f.markup)
|
||||
@fields << "seminar_signup_fields.#{f.id}"
|
||||
@fields_translations << f.title
|
||||
@fields_values << f.option_list
|
||||
end
|
||||
end
|
||||
@seminar.seminar_submission_fields.each do |f|
|
||||
next if f.disabled
|
||||
if access_markup.include?(f.markup)
|
||||
@fields << "seminar_submission_fields.#{f.id}"
|
||||
@fields_translations << f.title
|
||||
@fields_values << f.option_list
|
||||
end
|
||||
end
|
||||
if @seminar.enable_summary_choice
|
||||
@fields << "seminar_signup_contributes.description"
|
||||
begin
|
||||
data2 = @seminar.seminar_submission_field_sets.select{|v| v.field_name=='description'}[0]
|
||||
name2 = data2['name'][I18n.locale]
|
||||
@fields_translations << (name2.present? ? name2 : I18n.t("seminar_signup.description"))
|
||||
rescue
|
||||
@fields_translations << I18n.t("seminar_signup.description")
|
||||
end
|
||||
@fields_values << @seminar.summary_chioices.map.with_index{|v,i| [i.to_s,{I18n.locale=>v}]}.to_h
|
||||
end
|
||||
@fields_values = @fields_values.collect.with_index{|fields_values,i| [i, fields_values.values.map{|v| v[I18n.locale]} ] }.to_h
|
||||
end
|
||||
def update_reviewer_setting
|
||||
seminar_params[:seminar_reviews_attributes].keys.each do |i|
|
||||
if seminar_params[:seminar_reviews_attributes][i][:default_topics].present?
|
||||
seminar_params[:seminar_reviews_attributes][i][:default_topics] = [] if seminar_params[:seminar_reviews_attributes][i][:default_topics].nil?
|
||||
default_topics_values = []
|
||||
(0...seminar_params[:seminar_reviews_attributes][i][:default_topics].count).each do |ii|
|
||||
default_topics_values << (Array(seminar_params[:seminar_reviews_attributes][i][:default_topics_values][ii.to_s]) rescue [])
|
||||
end
|
||||
seminar_params[:seminar_reviews_attributes][i][:default_topics_values] = default_topics_values
|
||||
else
|
||||
seminar_params[:seminar_reviews_attributes][i][:default_topics] = []
|
||||
seminar_params[:seminar_reviews_attributes][i][:default_topics_values] = []
|
||||
end
|
||||
end
|
||||
#render :html => seminar_params and return
|
||||
@seminar.update_attributes(seminar_params)
|
||||
unassigned_seminar_signup_ids = @seminar.seminar_signup_ids.map{|s| s.to_s}
|
||||
unassigned_mode_1_seminar_signup_ids = unassigned_seminar_signup_ids.dup
|
||||
@seminar.seminar_reviews.each do |sr|
|
||||
unassigned_mode_1_seminar_signup_ids = unassigned_mode_1_seminar_signup_ids - sr.get_all_seminar_signup_ids(1)
|
||||
unassigned_seminar_signup_ids = unassigned_seminar_signup_ids - sr.all_seminar_signup_ids
|
||||
end
|
||||
@seminar.unassigned_mode_1_seminar_signup_ids = unassigned_mode_1_seminar_signup_ids
|
||||
@seminar.unassigned_seminar_signup_ids = unassigned_seminar_signup_ids
|
||||
@seminar.save
|
||||
redirect_to admin_seminars_path
|
||||
end
|
||||
def enquiry_for_applicants
|
||||
OrbitHelper.set_params(params,current_user)
|
||||
@access_level = OrbitHelper.user_access_level?
|
||||
@can_edit = true
|
||||
if @access_level == "user" || @access_level.nil?
|
||||
@can_edit = false
|
||||
end
|
||||
reviewer_id = current_user.member_profile_id.to_s
|
||||
if !@can_edit && SeminarMain.where(:reviewer_ids=>reviewer_id).count == 0 && SeminarMain.where(:organizer_id=>reviewer_id).count == 0
|
||||
render_401 and return
|
||||
end
|
||||
|
||||
@seminar_signup_admin_setting = SeminarSignupAdminSetting.where(:seminar_main_id=>"enquiry_for_applicants").first
|
||||
if @seminar_signup_admin_setting.nil?
|
||||
@seminar_signup_admin_setting = SeminarSignupAdminSetting.create(:seminar_main_id=>"enquiry_for_applicants")
|
||||
end
|
||||
if params[:name].present?
|
||||
@seminar_signups = SeminarSignup.where(:name => /#{params[:name]}/).sort_ordered.page(params[:page]).per(10)
|
||||
else
|
||||
@seminar_signups = []
|
||||
end
|
||||
unless @can_edit
|
||||
if @seminar_signups.class != Array
|
||||
seminar_review = SeminarReview.where(:reviewer_id=>reviewer_id)
|
||||
seminar_signup_ids = seminar_review.pluck(:seminar_signup_ids).flatten
|
||||
remove_seminar_signup_ids = seminar_review.pluck(:remove_seminar_signup_ids).flatten
|
||||
assign_ids = []
|
||||
seminars = SeminarMain.where(:id.in => seminar_review.pluck(:seminar_main_id))
|
||||
final_assign_signup_ids = SeminarSession.where(:id.in=>seminar_review.pluck(:seminar_session_ids).flatten,:seminar_main_id.in=>seminars.where(:assign_mode=>1).pluck(:id)).pluck(:seminar_signup_ids).flatten
|
||||
default_seminar_signup_ids = seminar_review.where(:seminar_main_id.in=>seminars.where(:assign_mode=>0).pluck(:id)).pluck(:default_seminar_signup_ids).flatten
|
||||
all_seminar_signup_ids = seminar_signup_ids - remove_seminar_signup_ids + final_assign_signup_ids + default_seminar_signup_ids
|
||||
|
||||
ids2 = SeminarSignup.where(:seminar_main_id.in=> SeminarMain.where(:organizer_id=>current_user.member_profile_id).pluck(:id)).pluck(:id)
|
||||
|
||||
@seminar_signups = @seminar_signups.where(:id.in=>all_seminar_signup_ids + ids2).sort_ordered.page(params[:page]).per(10)
|
||||
end
|
||||
end
|
||||
end
|
||||
def get_hide_session
|
||||
seminar_main = SeminarMain.find(params[:id]) rescue nil
|
||||
if seminar_main.nil?
|
||||
render :nothing => true
|
||||
else
|
||||
@seminar = seminar_main
|
||||
@seminar_sessions = @seminar.seminar_sessions
|
||||
@hide_session_ids = (0...seminar_main.summary_chioices.count).to_a - Array(seminar_main.session_show_ids)
|
||||
@hide_sessions = @hide_session_ids.zip(seminar_main.summary_chioices[Range.new(@hide_session_ids[0],@hide_session_ids[-1])]).to_h
|
||||
render :layout => false
|
||||
end
|
||||
end
|
||||
def get_hide_reviewer
|
||||
seminar_main = SeminarMain.find(params[:id]) rescue nil
|
||||
if seminar_main.nil?
|
||||
render :nothing => true
|
||||
else
|
||||
@hide_reviewer_ids = Array(seminar_main.reviewer_ids) - Array(seminar_main.reviewer_show_ids)
|
||||
@hide_reviewers = MemberProfile.where(:id.in=>@hide_reviewer_ids)
|
||||
@reviewers = seminar_main.seminar_reviews.where(:reviewer_id.in=>@hide_reviewer_ids).to_a
|
||||
render :layout => false
|
||||
end
|
||||
end
|
||||
def get_session_block
|
||||
@session_id = params[:session_id].to_i
|
||||
unless (@seminar.session_show_ids.include?(@session_id) rescue false)
|
||||
@seminar.session_show_ids << @session_id
|
||||
@seminar.save
|
||||
end
|
||||
render :layout => false
|
||||
end
|
||||
def get_reviewer_block
|
||||
@reviewer_id = params[:reviewer_id]
|
||||
unless (@seminar.reviewer_show_ids.include?(@reviewer_id) rescue false)
|
||||
@seminar.reviewer_show_ids << @reviewer_id
|
||||
@seminar.save
|
||||
end
|
||||
render :layout => false
|
||||
end
|
||||
def update_seminar_session
|
||||
if @seminar.nil?
|
||||
render :json => {:success => false}
|
||||
else
|
||||
seminar_main = @seminar
|
||||
session_id = params[:session_id].to_i
|
||||
seminar_main.save
|
||||
seminar_session = @seminar.seminar_sessions.where(:key=>session_id).first
|
||||
if params[:mode] == "append"
|
||||
@seminar_signup.update(:final_session=>session_id)
|
||||
seminar_session.seminar_signup_ids << @seminar_signup.id.to_s
|
||||
@seminar_signup.update(:seminar_session_id=>seminar_session.id)
|
||||
seminar_main.assign_mode = 1
|
||||
seminar_session.save
|
||||
seminar_main.unassigned_mode_1_seminar_signup_ids.delete(@seminar_signup.id.to_s)
|
||||
elsif params[:mode] == "remove"
|
||||
@seminar_signup.update(:final_session=>nil)
|
||||
seminar_session.seminar_signup_ids.delete(@seminar_signup.id.to_s)
|
||||
@seminar_signup.update(:seminar_session_id=>nil)
|
||||
seminar_session.save
|
||||
seminar_main.assign_mode = 0 if seminar_main.seminar_sessions.where(:seminar_signup_ids.ne=>[]).count == 0
|
||||
seminar_main.unassigned_mode_1_seminar_signup_ids << @seminar_signup.id.to_s
|
||||
elsif params[:mode] == "hide"
|
||||
if seminar_main.session_show_ids.nil?
|
||||
seminar_main.session_show_ids = (0...seminar_main.summary_chioices.count).to_a[0..1]
|
||||
end
|
||||
seminar_main.session_show_ids.delete(session_id)
|
||||
elsif params[:mode] == "show"
|
||||
seminar_main.session_show_ids = seminar_main.session_show_ids.to_a + Array(session_id)
|
||||
else
|
||||
render :json => {:success => false} and return
|
||||
end
|
||||
seminar_main.save
|
||||
render :json => {:success => true}
|
||||
end
|
||||
end
|
||||
def update_seminar_review
|
||||
if @seminar_review.nil?
|
||||
render :json => {:success => false}
|
||||
else
|
||||
seminar_main = @seminar_review.seminar_main
|
||||
if params[:mode] == "append"
|
||||
@seminar_review.seminar_signup_ids << params[:signup_id]
|
||||
@seminar_review.remove_seminar_signup_ids.delete(params[:signup_id])
|
||||
seminar_main.unassigned_seminar_signup_ids.delete(params[:signup_id])
|
||||
seminar_main.unassigned_mode_1_seminar_signup_ids.delete(params[:signup_id])
|
||||
elsif params[:mode] == "remove"
|
||||
@seminar_review.seminar_signup_ids.delete(params[:signup_id])
|
||||
@seminar_review.remove_seminar_signup_ids << params[:signup_id]
|
||||
seminar_main.unassigned_seminar_signup_ids << params[:signup_id]
|
||||
seminar_main.unassigned_mode_1_seminar_signup_ids << params[:signup_id]
|
||||
elsif params[:mode] == "hide"
|
||||
if seminar_main.reviewer_show_ids.nil?
|
||||
seminar_main.reviewer_show_ids = seminar_main.reviewer_ids[0..1]
|
||||
end
|
||||
seminar_main.reviewer_show_ids = seminar_main.reviewer_show_ids - Array(@seminar_review.reviewer_id).flatten
|
||||
elsif params[:mode] == "show"
|
||||
seminar_main.reviewer_show_ids = seminar_main.reviewer_show_ids.to_a + Array(@seminar_review.reviewer_id).flatten
|
||||
else
|
||||
render :json => {:success => false} and return
|
||||
end
|
||||
seminar_main.save
|
||||
@seminar_review.save
|
||||
render :json => {:success => true}
|
||||
end
|
||||
end
|
||||
def index
|
||||
@categories = @module_app.categories.enabled
|
||||
@filter_fields = filter_fields(@categories)
|
||||
|
@ -31,13 +256,24 @@ class Admin::SeminarsController < OrbitAdminController
|
|||
sort = {params[:sort].to_sym=>params[:order]}
|
||||
end
|
||||
else
|
||||
sort = {:signup_start_date=>"desc"}
|
||||
sort = {:signup_start_date=>"desc",:created_at=>"desc"}
|
||||
end
|
||||
|
||||
@seminars = SeminarMain.all.order_by(sort).with_categories(filters("category"))
|
||||
|
||||
@seminars = search_data(@seminars,[:title]).page(params[:page]).per(10)
|
||||
|
||||
OrbitHelper.set_params(params,current_user)
|
||||
@access_level = OrbitHelper.user_access_level?
|
||||
@can_edit = true
|
||||
if @access_level == "user" || @access_level.nil?
|
||||
@can_edit = false
|
||||
end
|
||||
unless @can_edit
|
||||
reviewer_id = current_user.member_profile_id.to_s
|
||||
ids1 = @seminars.where(:reviewer_ids=>reviewer_id).pluck(:id)
|
||||
ids2 = @seminars.where(:organizer_id=>current_user.member_profile_id).pluck(:id)
|
||||
@seminars = @seminars.where(:id.in=>ids1+ids2)
|
||||
end
|
||||
if request.xhr?
|
||||
render :partial => "index"
|
||||
end
|
||||
|
@ -49,14 +285,31 @@ class Admin::SeminarsController < OrbitAdminController
|
|||
@seminar = SeminarMain.find(params[:id])
|
||||
@seminar_signups = SeminarSignup.where(:seminar_main_id => params[:id])
|
||||
filename = @seminar.title.parameterize.underscore + "_export.xlsx"
|
||||
respond_to do |format|
|
||||
format.xlsx {
|
||||
response.headers['Content-Disposition'] = 'attachment; filename="' + filename + '"'
|
||||
}
|
||||
if can_see_seminar_signup(@seminar)
|
||||
if !admin_for_seminar(@seminar)
|
||||
@seminar_review = @seminar.seminar_reviews.where(:reviewer_id => current_user.member_profile_id.to_s).first
|
||||
@seminar_signups = @seminar_signups.where(:id.in=>@seminar_review.get_all_seminar_signup_ids) rescue []
|
||||
end
|
||||
@seminar_signups = @seminar_signups.sort_ordered
|
||||
respond_to do |format|
|
||||
format.xlsx {
|
||||
response.headers['Content-Disposition'] = 'attachment; filename="' + filename + '"'
|
||||
}
|
||||
end
|
||||
else
|
||||
render :nothing => true
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def copy
|
||||
@seminar = SeminarMain.find(params[:id]).clone_new
|
||||
@member = MemberProfile.where(:id.in=>@seminar.reviewer_ids).to_a
|
||||
@email_set = @seminar.seminar_email_sets
|
||||
@signup_sets = @seminar.seminar_signup_field_sets
|
||||
@submission_set = @seminar.seminar_submission_field_sets
|
||||
@custom_set = @seminar.seminar_signup_field_customs
|
||||
@seminar_items = SeminarItem.all
|
||||
@review = @seminar.seminar_reviews.first
|
||||
end
|
||||
def new
|
||||
@member = nil
|
||||
@seminar = SeminarMain.new
|
||||
|
@ -79,21 +332,43 @@ class Admin::SeminarsController < OrbitAdminController
|
|||
seminar_signup_set_params = seminar_main_params['seminar_signup_field_sets']
|
||||
seminar_submission_set_params = seminar_main_params['seminar_submission_field_sets']
|
||||
seminar_email_sets_params = seminar_main_params['seminar_email_sets']
|
||||
seminar_signup_field_customs_params = seminar_main_params["seminar_signup_field_customs"].to_hash
|
||||
seminar_main_params["seminar_signup_field_customs"].each do |k,v|
|
||||
v.delete "title"
|
||||
end
|
||||
seminar_main_params.delete(:seminar_signup_field_sets)
|
||||
seminar_main_params.delete(:seminar_submission_field_sets)
|
||||
seminar_main_params.delete(:seminar_email_sets)
|
||||
seminar = SeminarMain.new(seminar_main_params)
|
||||
seminar.create_user_id = current_user.id
|
||||
seminar.update_user_id = current_user.id
|
||||
if seminar.copy_id && params["clone_signups"].blank?
|
||||
seminar.except_clone_relations = ["seminar_signups","seminar_signup_values","seminar_signup_contributes","seminar_submission_values"]
|
||||
end
|
||||
seminar.save
|
||||
seminar_signup_set_params.each do |key,value|
|
||||
seminar.seminar_signup_field_sets.create(value)
|
||||
end
|
||||
seminar_submission_set_params.each do |key,value|
|
||||
seminar.seminar_submission_field_sets.create(value)
|
||||
end
|
||||
seminar_email_sets_params.each do |key,value|
|
||||
seminar.seminar_email_sets.create(value)
|
||||
if seminar.copy_id
|
||||
seminar_signup_set_params.each do |key,value|
|
||||
seminar.seminar_signup_field_sets[key.to_i].update_attributes(value) rescue nil
|
||||
end
|
||||
seminar_submission_set_params.each do |key,value|
|
||||
seminar.seminar_submission_field_sets[key.to_i].update_attributes(value) rescue nil
|
||||
end
|
||||
seminar_email_sets_params.each do |key,value|
|
||||
seminar.seminar_email_sets[key.to_i].update_attributes(value) rescue nil
|
||||
end
|
||||
seminar_signup_field_customs_params.each_with_index do |(key,value),i|
|
||||
seminar.seminar_signup_field_customs[i].update(:seminar_signup_field_id => seminar.seminar_signup_fields.where(:title=>value["title"]).first.id) rescue nil
|
||||
end
|
||||
else
|
||||
seminar_signup_set_params.each do |key,value|
|
||||
seminar.seminar_signup_field_sets.create(value)
|
||||
end
|
||||
seminar_submission_set_params.each do |key,value|
|
||||
seminar.seminar_submission_field_sets.create(value)
|
||||
end
|
||||
seminar_email_sets_params.each do |key,value|
|
||||
seminar.seminar_email_sets.create(value)
|
||||
end
|
||||
end
|
||||
redirect_to params['referer_url']
|
||||
|
||||
|
@ -121,22 +396,22 @@ class Admin::SeminarsController < OrbitAdminController
|
|||
@signup_sets = @seminar.seminar_signup_field_sets
|
||||
@submission_set = @seminar.seminar_submission_field_sets
|
||||
@custom_set = @seminar.seminar_signup_field_customs
|
||||
if @seminar.seminar_reviews.first.nil?
|
||||
@review = @seminar.seminar_reviews.new()
|
||||
@member = MemberProfile.where(:id.in=>@seminar.reviewer_ids).to_a rescue []
|
||||
if (@seminar.organizer_id == current_user.member_profile_id rescue false)
|
||||
@user_authorized_categories = @module_app.categories.enabled.to_a
|
||||
else
|
||||
@review = @seminar.seminar_reviews.first
|
||||
@user_authorized_categories = nil
|
||||
end
|
||||
@member = MemberProfile.find(@review.reviewer_id) rescue nil
|
||||
end
|
||||
|
||||
def update
|
||||
|
||||
|
||||
params[:seminar_main][:registration_status] = (params[:seminar_main][:registration_status] ? params[:seminar_main][:registration_status] : [])
|
||||
|
||||
uid = params[:id].split('-').last
|
||||
@seminar = SeminarMain.find_by(:uid=>uid)
|
||||
|
||||
seminar_params["reviewer_ids"] = [] if seminar_params["reviewer_ids"].nil?
|
||||
seminar_params["organizer_id"] = nil if seminar_params["organizer_id"].nil?
|
||||
if params[:seminar_main][:seminar_signup_fields]
|
||||
seminar_params[:seminar_signup_fields].each do |a|
|
||||
@field_name = 'seminar_main'
|
||||
|
@ -209,15 +484,61 @@ class Admin::SeminarsController < OrbitAdminController
|
|||
end
|
||||
|
||||
def seminar_signup
|
||||
|
||||
if !params[:search].blank?
|
||||
@seminar_signups = SeminarSignup.where(:seminar_main_id => @seminar.id, :name=>params[:search]).page(params[:page]).per(10)
|
||||
@seminar_signups = []
|
||||
if params[:type] == "table"
|
||||
if params[:search].to_i != 0
|
||||
@seminar_signups = @seminar.seminar_signups.where(:serial_number=>params[:search].to_i)
|
||||
else
|
||||
@seminar_signups = @seminar.seminar_signups.where(:name=>/#{params[:search]}/)
|
||||
end
|
||||
elsif params[:type] == "session"
|
||||
@seminar_signups = @seminar.seminar_signups.where(:final_session => nil, :name=>/#{params[:search]}/)
|
||||
else
|
||||
@seminar_signups = SeminarSignup.where(:seminar_main_id => @seminar.id).page(params[:page]).per(10)
|
||||
unassigned_seminar_signup_ids = @seminar.unassigned_seminar_signup_ids
|
||||
if @seminar.assign_mode == 1
|
||||
unassigned_seminar_signup_ids = @seminar.unassigned_mode_1_seminar_signup_ids
|
||||
end
|
||||
@seminar_signups = @seminar.seminar_signups.where(:id.in => unassigned_seminar_signup_ids, :name=>/#{params[:search]}/)
|
||||
end
|
||||
OrbitHelper.set_params(params,current_user)
|
||||
@access_level = OrbitHelper.user_access_level?
|
||||
@can_edit = true
|
||||
if @access_level == "user" || @access_level.nil?
|
||||
@can_edit = false
|
||||
end
|
||||
unless @can_edit
|
||||
@can_edit = (@seminar.organizer_id == current_user.member_profile_id rescue false)
|
||||
end
|
||||
unless @can_edit
|
||||
@seminar_review = @seminar.seminar_reviews.where(:reviewer_id => current_user.member_profile_id.to_s).first
|
||||
@seminar_signups = @seminar.seminar_signups.where(:id.in=>@seminar_review.get_all_seminar_signup_ids)
|
||||
end
|
||||
@seminar_signups = @seminar_signups.sort_ordered.page(params[:page]).per(10)
|
||||
if request.xhr?
|
||||
render :layout => false
|
||||
end
|
||||
end
|
||||
def seminar_signup_admin_setting
|
||||
if @seminar.nil? && params[:id] != "enquiry_for_applicants"
|
||||
redirect_to admin_seminars_path
|
||||
end
|
||||
end
|
||||
def update_seminar_signup_admin_setting
|
||||
@seminar_signup_admin_setting.update_attributes(params.require(:seminar_signup_admin_setting).permit!)
|
||||
if params[:id] != "enquiry_for_applicants"
|
||||
redirect_to seminar_signup_admin_seminar_path(params[:id]) + "?type=#{params[:page]}"
|
||||
else
|
||||
redirect_to admin_seminar_enquiry_for_applicants_path
|
||||
end
|
||||
end
|
||||
def set_seminar_signup_admin_setting
|
||||
page = params[:type] || params[:page]
|
||||
page = nil if page.blank?
|
||||
@seminar_signup_admin_setting = SeminarSignupAdminSetting.where(:seminar_main_id=>params[:id],:page=>page).first
|
||||
if @seminar_signup_admin_setting.nil?
|
||||
@seminar_signup_admin_setting = SeminarSignupAdminSetting.create(:seminar_main_id=>params[:id],:page=>page)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def edit_seminar_signup
|
||||
@seminar_signup = SeminarSignup.find(params[:id])
|
||||
@seminar = SeminarMain.find(@seminar_signup.seminar_main_id)
|
||||
|
@ -237,7 +558,13 @@ class Admin::SeminarsController < OrbitAdminController
|
|||
private
|
||||
|
||||
def set_seminar
|
||||
@seminar = SeminarMain.find(params[:id])
|
||||
@seminar = SeminarMain.find(params[:id]) rescue nil
|
||||
if params[:action] == "update_seminar_review"
|
||||
@seminar_review = SeminarReview.find(params[:id]) rescue nil
|
||||
@seminar = @seminar_review.seminar_main
|
||||
elsif params[:action] == "update_seminar_session"
|
||||
@seminar_signup = SeminarSignup.find(params[:signup_id]) rescue nil
|
||||
end
|
||||
end
|
||||
|
||||
def seminar_params
|
||||
|
@ -245,7 +572,7 @@ class Admin::SeminarsController < OrbitAdminController
|
|||
end
|
||||
def create_set (save_flag)
|
||||
SeminarSignup.attribute_names.each do |attr_signup|
|
||||
if !(['_id', 'created_at', 'updated_at','seminar_main_id'].include? attr_signup)
|
||||
if !(['_id', 'created_at', 'updated_at','seminar_main_id','final_session','seminar_session_id'].include? attr_signup)
|
||||
signup_set = @seminar.seminar_signup_field_sets.select{|v| v.field_name==attr_signup }
|
||||
if signup_set.length==0
|
||||
if ['status','name','tel','phone','email','password'].include? attr_signup
|
||||
|
|
|
@ -148,15 +148,32 @@ class SeminarsController < ApplicationController
|
|||
field_value = r.last[:id].present?
|
||||
@custom_field_value = SeminarSignupValue.put_field_values(@seminar_signup, r.last, r.last[:seminar_signup_field_id], field_value)
|
||||
end
|
||||
seminar_reviews = SeminarReview.where(:seminar_main_id=>@seminar.id).to_a
|
||||
seminar_reviews.each{|sr| sr.save}
|
||||
@seminar = @seminar_signup.seminar_main
|
||||
unassigned_seminar_signup_ids = @seminar.seminar_signup_ids.map{|s| s.to_s}
|
||||
unassigned_seminar_signup_ids.push(@seminar_signup.id.to_s)
|
||||
seminar_reviews = SeminarReview.where(:seminar_main_id=>@seminar.id).to_a
|
||||
seminar_reviews.each do |sr|
|
||||
unassigned_seminar_signup_ids = unassigned_seminar_signup_ids - sr.all_seminar_signup_ids
|
||||
end
|
||||
@seminar.unassigned_seminar_signup_ids << @seminar_signup.id.to_s
|
||||
@seminar.unassigned_mode_1_seminar_signup_ids << @seminar_signup.id.to_s
|
||||
@seminar.save
|
||||
else
|
||||
@seminar.unassigned_seminar_signup_ids << @seminar_signup.id.to_s
|
||||
@seminar.unassigned_mode_1_seminar_signup_ids << @seminar_signup.id.to_s
|
||||
@seminar.save
|
||||
end
|
||||
extra_text = "<br>#{I18n.t('seminar_signup.serial_number')}: #{@seminar_signup.display_serial_number}"
|
||||
if params['seminar_signup']['status']=='C'
|
||||
status_param = '&status='
|
||||
send_mail('submission',params[:seminar_signup][:email],params[:seminar_signup][:seminar_main_id])
|
||||
send_mail('submission',params[:seminar_signup][:email],params[:seminar_signup][:seminar_main_id],extra_text)
|
||||
else
|
||||
status_param = ''
|
||||
send_mail('signup',params[:seminar_signup][:email],params[:seminar_signup][:seminar_main_id])
|
||||
send_mail('signup',params[:seminar_signup][:email],params[:seminar_signup][:seminar_main_id],extra_text)
|
||||
end
|
||||
redirect_to "#{params[:referer_url]}/?method=signup_ok#{status_param}"
|
||||
redirect_to "#{params[:referer_url]}/?method=signup_ok#{status_param}&serial_number=#{@seminar_signup.display_serial_number}"
|
||||
else
|
||||
if !@signup.blank?
|
||||
redirect_to "#{params[:referer_url]}", :notice => 'mail已存在'
|
||||
|
@ -171,6 +188,8 @@ class SeminarsController < ApplicationController
|
|||
end
|
||||
|
||||
def signup_ok
|
||||
params = OrbitHelper.params
|
||||
{"serial_number"=> params[:serial_number]}
|
||||
end
|
||||
|
||||
def add_file_proc
|
||||
|
@ -203,6 +222,15 @@ class SeminarsController < ApplicationController
|
|||
seminar_id = signup.seminar_main_id
|
||||
@seminar = SeminarMain.where(id:seminar_id).first
|
||||
send_mail('add_file',signup.email,seminar_id)
|
||||
seminar_reviews = SeminarReview.where(:seminar_main_id=>signup.seminar_main_id).to_a
|
||||
seminar_reviews.each{|sr| sr.save}
|
||||
@seminar = signup.seminar_main
|
||||
unassigned_seminar_signup_ids = @seminar.seminar_signup_ids.map{|s| s.to_s}
|
||||
@seminar.seminar_reviews.each do |sr|
|
||||
unassigned_seminar_signup_ids = unassigned_seminar_signup_ids - sr.all_seminar_signup_ids
|
||||
end
|
||||
@seminar.unassigned_seminar_signup_ids = unassigned_seminar_signup_ids
|
||||
@seminar.save
|
||||
redirect_to "#{params[:referer_url]}/?method=con_upload"
|
||||
else
|
||||
redirect_to "#{params[:referer_url]}", :notice => t('recaptcha.errors.verification_failed')
|
||||
|
@ -237,6 +265,15 @@ class SeminarsController < ApplicationController
|
|||
seminar_id = signup.seminar_main_id
|
||||
@seminar = SeminarMain.where(id:seminar_id).first
|
||||
send_mail('edit_file',signup.email,seminar_id)
|
||||
seminar_reviews = SeminarReview.where(:seminar_main_id=>signup.seminar_main_id).to_a
|
||||
seminar_reviews.each{|sr| sr.save}
|
||||
@seminar = signup.seminar_main
|
||||
unassigned_seminar_signup_ids = @seminar.seminar_signup_ids.map{|s| s.to_s}
|
||||
@seminar.seminar_reviews.each do |sr|
|
||||
unassigned_seminar_signup_ids = unassigned_seminar_signup_ids - sr.all_seminar_signup_ids
|
||||
end
|
||||
@seminar.unassigned_seminar_signup_ids = unassigned_seminar_signup_ids
|
||||
@seminar.save
|
||||
redirect_to "#{params[:referer_url]}/?method=con_upload"
|
||||
else
|
||||
redirect_to "#{params[:referer_url]}", :notice => t('recaptcha.errors.verification_failed')
|
||||
|
@ -250,9 +287,18 @@ class SeminarsController < ApplicationController
|
|||
|
||||
# seminar_signup = SeminarSignup.find_by(_id: con.seminar_signup_id )
|
||||
# seminar = SeminarMain.find_by(_id: seminar_signup.seminar_main_id )
|
||||
|
||||
signup = con.seminar_signup
|
||||
con.destroy
|
||||
|
||||
seminar_reviews = SeminarReview.where(:seminar_main_id=>signup.seminar_main_id).to_a
|
||||
seminar_reviews.each{|sr| sr.save}
|
||||
@seminar = SeminarMain.find(signup.seminar_main_id)
|
||||
unassigned_seminar_signup_ids = @seminar.seminar_signup_ids.map{|s| s.to_s}
|
||||
@seminar.seminar_reviews.each do |sr|
|
||||
unassigned_seminar_signup_ids = unassigned_seminar_signup_ids - sr.all_seminar_signup_ids
|
||||
end
|
||||
@seminar.unassigned_seminar_signup_ids = unassigned_seminar_signup_ids
|
||||
@seminar.save
|
||||
redirect_to "#{params[:referer_url]}/?method=con_upload"
|
||||
|
||||
end
|
||||
|
@ -375,7 +421,7 @@ class SeminarsController < ApplicationController
|
|||
def seminar_signup_values_params
|
||||
params.require(:seminar_signup_values).permit!
|
||||
end
|
||||
def send_mail(field_name,email,seminar_id)
|
||||
def send_mail(field_name,email,seminar_id,extra_text="")
|
||||
email_set = @seminar.seminar_email_sets.select{|v| v.field_name == field_name}
|
||||
if email_set.length==0
|
||||
mail = Email.create(mail_to:[email],
|
||||
|
@ -383,14 +429,14 @@ class SeminarsController < ApplicationController
|
|||
template:"email/#{field_name}_email.html.erb",
|
||||
mail_sentdate:Time.current,
|
||||
mail_subject: t("seminar.email_#{field_name}_success"),
|
||||
template_data:{'seminar_id'=>seminar_id,'locale'=>I18n.locale})
|
||||
template_data:{'seminar_id'=>seminar_id,'locale'=>I18n.locale,'extra_text'=> extra_text})
|
||||
elsif !(email_set[0].disabled)
|
||||
mail = Email.create(mail_to:[email],
|
||||
module_app_key:"seminar",
|
||||
template:"email/#{field_name}_email.html.erb",
|
||||
mail_sentdate:Time.current,
|
||||
mail_subject: email_set[0].title[I18n.locale],
|
||||
template_data:{'seminar_id'=>seminar_id,'locale'=>I18n.locale})
|
||||
template_data:{'seminar_id'=>seminar_id,'locale'=>I18n.locale,'extra_text'=> extra_text})
|
||||
end
|
||||
begin
|
||||
mail.deliver
|
||||
|
|
|
@ -39,12 +39,12 @@ module Admin::SeminarsFieldHelper
|
|||
|
||||
add_ext= @attribute_value.address_key[key] rescue {}
|
||||
|
||||
result << hidden_field_tag(get_basic_field_name_base+"[address_key][#{key}][county]",add_ext["county"],:class=>"county_#{key}")
|
||||
result << hidden_field_tag(get_basic_field_name_base+"[address_key][#{key}][street_address]",add_ext["street_address"],:class=>"street_address_#{key}")
|
||||
result << hidden_field_tag(get_basic_field_name_base+"[address_key][#{key}][city]",add_ext["city"],:class=>"city_#{key}")
|
||||
result << hidden_field_tag(get_basic_field_name_base+"[address_key][#{key}][zip]",add_ext["zip"],:class=>"zip_#{key}")
|
||||
result << hidden_field_tag(get_basic_field_name_base+"[address_key][#{key}][country]",add_ext["country"],:class=>"country_#{key}")
|
||||
result << hidden_field_tag(get_basic_field_name_base+"[address_key][#{key}][indicator]",add_ext["indicator"],:class=>"indicator_#{key}")
|
||||
result << hidden_field_tag(get_basic_field_name_base+"[address_key][#{key}][county]",add_ext["county"],:class=>"county_#{key}", :id=>nil)
|
||||
result << hidden_field_tag(get_basic_field_name_base+"[address_key][#{key}][street_address]",add_ext["street_address"],:class=>"street_address_#{key}", :id=>nil)
|
||||
result << hidden_field_tag(get_basic_field_name_base+"[address_key][#{key}][city]",add_ext["city"],:class=>"city_#{key}", :id=>nil)
|
||||
result << hidden_field_tag(get_basic_field_name_base+"[address_key][#{key}][zip]",add_ext["zip"],:class=>"zip_#{key}", :id=>nil)
|
||||
result << hidden_field_tag(get_basic_field_name_base+"[address_key][#{key}][country]",add_ext["country"],:class=>"country_#{key}", :id=>nil)
|
||||
result << hidden_field_tag(get_basic_field_name_base+"[address_key][#{key}][indicator]",add_ext["indicator"],:class=>"indicator_#{key}", :id=>nil)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -52,7 +52,7 @@ module Admin::SeminarsFieldHelper
|
|||
@prefiled_value ||=[]
|
||||
control_group_wrapper do
|
||||
a = self.typeE[:option_list].collect do |key,value|
|
||||
label_tag(key,check_box_tag(get_field_name_base+"[#{key}]", true , (@prefiled_value.include?(key) ? true : false), { :id=>"#{get_basic_field_name_org}_#{self.id}"})+value[I18n.locale.to_s],@markup_options.merge(:class=>"checkbox inline"))
|
||||
label_tag("#{get_basic_field_name_org}_#{self.id}_#{key}",check_box_tag(get_field_name_base+"[#{key}]", true , (@prefiled_value.include?(key) ? true : false), { :id=>"#{get_basic_field_name_org}_#{self.id}_#{key}"})+value[I18n.locale.to_s],@markup_options.merge(:class=>"checkbox inline"))
|
||||
end.join.html_safe rescue ""
|
||||
end
|
||||
end
|
||||
|
@ -138,7 +138,7 @@ module Admin::SeminarsFieldHelper
|
|||
@prefiled_value ||=[]
|
||||
control_group_wrapper do
|
||||
self.typeE[:option_list].collect do |key,value|
|
||||
label_tag(key,radio_button_tag(get_field_name_base, key , (@prefiled_value.include?(key) ? true : false), {:required=>@require})+value[I18n.locale.to_s],@markup_options.merge(:class=>"radio inline"))
|
||||
label_tag("#{get_basic_field_name_org}_#{self.id}_#{key}",radio_button_tag(get_field_name_base, key , (@prefiled_value.include?(key) ? true : false), {:required=>@require,:id=>"#{get_basic_field_name_org}_#{self.id}_#{key}"})+value[I18n.locale.to_s],@markup_options.merge(:class=>"radio inline"))
|
||||
end.join.html_safe
|
||||
end
|
||||
end
|
||||
|
@ -195,7 +195,7 @@ protected
|
|||
if self.markup=='text_area' #or self.markup=='address'
|
||||
tmp1 = valid_locales.collect do |key|
|
||||
if !@prefiled_value.nil?
|
||||
value = @prefiled_value[key] rescue nil
|
||||
value = @prefiled_value[key] || @prefiled_value[key.to_s] rescue nil
|
||||
else
|
||||
value = nil
|
||||
end
|
||||
|
@ -203,7 +203,6 @@ protected
|
|||
div_class_ary = ["tab-pane" ,"fade"]
|
||||
if @show_set_field && @markup=='text_area'
|
||||
div_id = "ckeditor_#{get_pairing_tab_class({})}_#{key}"
|
||||
puts 'ckeditor_'
|
||||
else
|
||||
div_id = "#{get_pairing_tab_class({})}_#{key}"
|
||||
end
|
||||
|
@ -245,7 +244,7 @@ protected
|
|||
content_tag :div,:class=> "tab-content" do
|
||||
|
||||
buff = valid_locales.collect do |key|
|
||||
value = @prefiled_value[key] rescue nil
|
||||
value = @prefiled_value[key] || @prefiled_value[key.to_s] rescue nil
|
||||
# div_class_ary = ["tab-pane" ,"fade","#{get_pairing_tab_class({})}_#{key}"]
|
||||
div_class_ary = ["tab-pane" ,"fade"]
|
||||
|
||||
|
@ -380,8 +379,8 @@ protected
|
|||
temp_field_name = get_basic_field_name_base + '[temp]'
|
||||
add_more = content_tag :p,:class=> 'add-btn' do
|
||||
content = link_to (content_tag :i,I18n.t(:add),:class=>"icon-plus"),"#","data-roles"=>"role_a",:class=>"trigger #{can_muti_lang_input? ? 'textLengInput' : 'textInput' } btn btn-small btn-primary"
|
||||
content << hidden_field_tag("#{temp_field_name}[count]",@attribute_value.add_more_counter ,:class=>"list_count")
|
||||
content << hidden_field_tag("#{temp_field_name}[count]",get_basic_field_name_base,:class=>"field_name")
|
||||
content << hidden_field_tag("#{temp_field_name}[count]",@attribute_value.add_more_counter ,:class=>"list_count", :id=>nil)
|
||||
content << hidden_field_tag("#{temp_field_name}[count]",get_basic_field_name_base,:class=>"field_name", :id=>nil)
|
||||
content
|
||||
end # of div
|
||||
# add_more = content_tag :div,:class=> 'controls' do
|
||||
|
@ -396,9 +395,9 @@ protected
|
|||
|
||||
def end_block
|
||||
if @new_attribute
|
||||
hidden_field_tag(get_basic_field_name_base+"[#{get_basic_field_name}_id]",id,:for=>"field_#{@index}")
|
||||
hidden_field_tag(get_basic_field_name_base+"[#{get_basic_field_name}_id]",id,:for=>"field_#{@index}", :id=>nil)
|
||||
else
|
||||
hidden_field_tag(get_basic_field_name_base+"[id]",@attribute_value.id,:for=>"field_#{@index}")
|
||||
hidden_field_tag(get_basic_field_name_base+"[id]",@attribute_value.id,:for=>"field_#{@index}", :id=>nil)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -495,8 +494,12 @@ protected
|
|||
''
|
||||
end
|
||||
def self.end_block
|
||||
hidden_field_tag("seminar_main[#{@key_field}][#{@key_index}]"+"[id]",
|
||||
@attribute_value.id,:for=>"field_#{@key_index}")
|
||||
unless @attribute_value.new_record?
|
||||
hidden_field_tag("seminar_main[#{@key_field}][#{@key_index}]"+"[id]",
|
||||
@attribute_value.id,:for=>"field_#{@key_index}", :id=>nil)
|
||||
else
|
||||
""
|
||||
end
|
||||
end
|
||||
@key_field = key_field
|
||||
@field = field
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
module Admin::SeminarsHelper
|
||||
def display_format_string(num, str_length)
|
||||
return format("%0#{str_length}d", num % (10^str_length))
|
||||
end
|
||||
def page_for_seminar(seminar)
|
||||
ann_page = nil
|
||||
pages = Page.where(:module=>'seminar')
|
||||
|
@ -24,7 +27,18 @@ module Admin::SeminarsHelper
|
|||
ann_page = pages.first if ann_page.nil?
|
||||
request.protocol+(request.host_with_port+ann_page.url+'/'+seminar.to_param).gsub('//','/') rescue "/"
|
||||
end
|
||||
|
||||
def can_see_seminar_signup(seminar)
|
||||
if can_edit_or_delete?(seminar)
|
||||
return true
|
||||
elsif (seminar.organizer_id == current_user.member_profile_id rescue false)
|
||||
return true
|
||||
else
|
||||
return seminar.reviewer_ids.to_a.include?(current_user.member_profile_id.to_s)
|
||||
end
|
||||
end
|
||||
def admin_for_seminar(seminar)
|
||||
return can_edit_or_delete?(seminar) || (seminar.organizer_id == current_user.member_profile_id rescue false)
|
||||
end
|
||||
def page_for_seminar_url
|
||||
page = Pag.where(:module => 'seminar').first
|
||||
return request.protocol+(request.host_with_port+"/#{I18n.locale}#{page.url}").gsub('//','/') rescue "/"
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
class SeminarMain
|
||||
require 'fileutils'
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
|
||||
|
@ -6,13 +7,21 @@ class SeminarMain
|
|||
# encoding: utf-8
|
||||
include OrbitCategory::Categorizable
|
||||
include Slug
|
||||
|
||||
ChoiceTypes = ["checkbox","radio","select"]
|
||||
field :copy_id
|
||||
field :except_clone_relations, :type=>Array, :default => []
|
||||
field :signup_note, localize: true
|
||||
field :title, as: :slug_title, type: String, localize: true
|
||||
field :speaker, localize: true
|
||||
field :content, localize: true
|
||||
field :act_place, localize: true
|
||||
|
||||
field :enable_summary_choice, :type => Boolean, :default => false
|
||||
field :summary_chioice_type, :type => String, :default => "checkbox"
|
||||
field :summary_chioices, :type => Array, :default => ["A. Energy Conversion","B. Biocatalysis","C. Electrocatalysis",
|
||||
"D. Photocatalysis","E. Catalytic and Porous Materials",
|
||||
"F. Environmental and Reaction Engineering","G. Industrial Applications",
|
||||
"H. Student Oral Presentation Contest (in English)","I. Student Poster Competition"
|
||||
]
|
||||
field :seminar_start_date, :type => Date, :default => Time.now
|
||||
field :seminar_end_date, :type => Date, :default => Time.now
|
||||
|
||||
|
@ -28,9 +37,18 @@ class SeminarMain
|
|||
|
||||
field :create_user_id
|
||||
field :update_user_id
|
||||
|
||||
field :reviewer_ids
|
||||
field :reviewer_show_ids
|
||||
field :session_show_ids
|
||||
field :unassigned_seminar_signup_ids
|
||||
field :unassigned_mode_1_seminar_signup_ids
|
||||
field :review_start_date, :type => Date
|
||||
field :review_end_date, :type => Date
|
||||
field :last_serial_number, :type => Integer, :default => 0
|
||||
field :assign_mode, :type => Integer, :default => 0 # 0 => 用default signup ids來分配 ,1 => 用final_session來分配
|
||||
belongs_to :seminar_item
|
||||
|
||||
belongs_to :organizer , :class_name=>"MemberProfile", :foreign_key => :organizer_id
|
||||
has_many :seminar_sessions, :autosave => true, :dependent => :destroy
|
||||
has_many :seminar_links, :autosave => true, :dependent => :destroy
|
||||
has_many :seminar_files, :autosave => true, :dependent => :destroy
|
||||
has_many :seminar_item_contents, :autosave => true, :dependent => :destroy
|
||||
|
@ -42,6 +60,7 @@ class SeminarMain
|
|||
has_many :seminar_submission_field_sets, autosave: true, dependent: :destroy
|
||||
has_many :seminar_email_sets, autosave: true, dependent: :destroy
|
||||
has_many :seminar_signup_field_customs, :autosave => true, :dependent => :destroy
|
||||
accepts_nested_attributes_for :seminar_sessions, :allow_destroy => true
|
||||
accepts_nested_attributes_for :seminar_links, :allow_destroy => true
|
||||
accepts_nested_attributes_for :seminar_files, :allow_destroy => true
|
||||
accepts_nested_attributes_for :seminar_item_contents, :allow_destroy => true
|
||||
|
@ -53,6 +72,144 @@ class SeminarMain
|
|||
accepts_nested_attributes_for :seminar_submission_field_sets, :allow_destroy => true
|
||||
accepts_nested_attributes_for :seminar_email_sets, :allow_destroy => true
|
||||
accepts_nested_attributes_for :seminar_signup_field_customs, :allow_destroy => true
|
||||
before_save do
|
||||
module_app_key = "seminar"
|
||||
add_module_app_member_ids = []
|
||||
remove_module_app_member_ids = []
|
||||
if self.reviewer_ids_changed? && (self.copy_id.nil? || !self.new_record?)
|
||||
new_reviewer_ids = self.reviewer_ids.to_a - self.reviewer_ids_was.to_a
|
||||
remove_reviewer_ids = self.reviewer_ids_was.to_a - self.reviewer_ids.to_a
|
||||
new_reviewer_ids.each do |reviewer_id|
|
||||
SeminarReview.create(:reviewer_id=>reviewer_id,:seminar_main=>self)
|
||||
add_module_app_member_ids << reviewer_id
|
||||
end
|
||||
remove_reviewer_ids.each do |reviewer_id|
|
||||
SeminarReview.where(:reviewer_id=>reviewer_id,:seminar_main=>self).destroy
|
||||
remove_module_app_member_ids << reviewer_id
|
||||
end
|
||||
unassigned_seminar_signup_ids = self.seminar_signup_ids.map{|s| s.to_s}
|
||||
seminar_reviews = self.seminar_reviews
|
||||
unassigned_mode_1_seminar_signup_ids = unassigned_seminar_signup_ids.dup
|
||||
seminar_reviews.each do |sr|
|
||||
unassigned_mode_1_seminar_signup_ids = unassigned_mode_1_seminar_signup_ids - sr.get_all_seminar_signup_ids(1)
|
||||
unassigned_seminar_signup_ids = unassigned_seminar_signup_ids - sr.all_seminar_signup_ids
|
||||
end
|
||||
self.unassigned_mode_1_seminar_signup_ids = unassigned_mode_1_seminar_signup_ids
|
||||
self.unassigned_seminar_signup_ids = unassigned_seminar_signup_ids
|
||||
end
|
||||
if self.organizer_id_changed?
|
||||
if self.organizer_id_was.present?
|
||||
remove_module_app_member_ids << self.organizer_id_was
|
||||
end
|
||||
if self.organizer_id.present?
|
||||
add_module_app_member_ids << self.organizer_id
|
||||
end
|
||||
end
|
||||
remove_module_app_member_ids.delete(self.organizer_id)
|
||||
self.reviewer_ids.each{|r| remove_module_app_member_ids.delete(r)} rescue nil
|
||||
remove_module_app_member_ids.each do |m_id|
|
||||
user = User.where(:member_profile_id=>m_id).first
|
||||
begin
|
||||
user.extra_link_module_app_keys.delete(module_app_key)
|
||||
user.save
|
||||
rescue
|
||||
next
|
||||
end
|
||||
end
|
||||
add_module_app_member_ids.each do |m_id|
|
||||
user = User.where(:member_profile_id=>m_id).first
|
||||
begin
|
||||
user.extra_link_module_app_keys << module_app_key
|
||||
user.save
|
||||
rescue
|
||||
next
|
||||
end
|
||||
end
|
||||
if self.enable_summary_choice
|
||||
(0...self.summary_chioices.count).to_a.each do |i|
|
||||
seminar_session = self.seminar_sessions.where(:key=>i).first
|
||||
if seminar_session.nil?
|
||||
self.seminar_sessions << SeminarSession.new(:key=>i)
|
||||
end
|
||||
end
|
||||
(self.summary_chioices.count...self.summary_chioices_was.to_a.count).to_a.each do |i|
|
||||
self.seminar_sessions.where(:key=>i).destroy
|
||||
end
|
||||
end
|
||||
end
|
||||
before_create do
|
||||
self.unassigned_seminar_signup_ids = []
|
||||
self.unassigned_mode_1_seminar_signup_ids = []
|
||||
if self.copy_id.present?
|
||||
clone_new(true)
|
||||
self.created_at = DateTime.now
|
||||
self.updated_at = DateTime.now
|
||||
end
|
||||
end
|
||||
after_create do
|
||||
if self.copy_id.present?
|
||||
self.seminar_signup_fields.each do |seminar_signup_field|
|
||||
seminar_signup_field.seminar_signup_values.update_all(:key=>seminar_signup_field.key)
|
||||
end
|
||||
self.seminar_submission_fields.each do |seminar_submission_field|
|
||||
seminar_submission_field.seminar_submission_values.update_all(:key=>seminar_submission_field.key)
|
||||
end
|
||||
current_reviewer_ids = self.reviewer_ids.to_a
|
||||
self.seminar_reviews.where(:reviewer_id.nin=>current_reviewer_ids).destroy
|
||||
module_app_key = "seminar"
|
||||
current_reviewer_ids.each do |reviewer_id|
|
||||
seminar_review = self.seminar_reviews.select{|sr| sr.reviewer_id == reviewer_id}.first
|
||||
if seminar_review.nil?
|
||||
self.seminar_reviews << SeminarReview.create(:reviewer_id=>reviewer_id,:seminar_main=>self)
|
||||
user = User.where(:member_profile_id=>reviewer_id).first
|
||||
if user.present?
|
||||
user.extra_link_module_app_keys << module_app_key
|
||||
user.save
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
after_initialize do
|
||||
unless self.new_record?
|
||||
save_flag = false
|
||||
seminar_reviews = self.seminar_reviews
|
||||
if seminar_reviews.present?
|
||||
if self["reviewer_ids"].nil?
|
||||
self["reviewer_ids"] = seminar_reviews.pluck(:reviewer_id).flatten.select{|s| !s.nil?}.to_a
|
||||
save_flag = true
|
||||
end
|
||||
if seminar_reviews.count != 0 && self.review_start_date.nil? && self.review_end_date.nil?
|
||||
review_start_date = seminar_reviews.pluck(:review_start_date).select{|t| t.present?}.first.to_datetime rescue nil
|
||||
review_end_date = seminar_reviews.pluck(:review_end_date).select{|t| t.present?}.first.to_datetime rescue nil
|
||||
self.review_start_date = review_start_date
|
||||
self.review_end_date = review_end_date
|
||||
if (self.review_start_date_changed? || self.review_end_date_changed?)
|
||||
save_flag = true
|
||||
end
|
||||
end
|
||||
end
|
||||
if self.unassigned_seminar_signup_ids.nil?
|
||||
self.unassigned_seminar_signup_ids = self.seminar_signup_ids.map{|s| s.to_s}
|
||||
save_flag = true
|
||||
end
|
||||
if self.unassigned_mode_1_seminar_signup_ids.nil?
|
||||
self.unassigned_mode_1_seminar_signup_ids = self.seminar_signup_ids.map{|s| s.to_s}
|
||||
save_flag = true
|
||||
end
|
||||
unless self.last_serial_number_changed_from_default?
|
||||
self.seminar_signups.sort_ordered.each do |ss|
|
||||
if ss.serial_number.nil?
|
||||
self.last_serial_number += 1
|
||||
ss.serial_number = self.last_serial_number
|
||||
ss.save(:validate=>false)
|
||||
save_flag = true
|
||||
end
|
||||
end
|
||||
end
|
||||
self.save(:validate=>false) if save_flag
|
||||
end
|
||||
end
|
||||
def self.time_range(date1 = null, date2 = null)
|
||||
|
||||
if !date1.blank?
|
||||
|
@ -84,5 +241,212 @@ class SeminarMain
|
|||
value = values.detect {|value| value.seminar_signup_field_id == field_id} rescue nil
|
||||
value ? value : nil
|
||||
end
|
||||
def clone_new(clone_mode=false)
|
||||
@records_all = {}
|
||||
if clone_mode
|
||||
clone_target = self.class.find(object.copy_id) rescue nil
|
||||
else
|
||||
clone_target = self
|
||||
end
|
||||
seminar,clone_target = clone_new_for_object(self,clone_target,clone_mode)
|
||||
if clone_mode
|
||||
copy_settings = SeminarSignupAdminSetting.where(:seminar_main_id=>clone_target.id.to_s).to_a
|
||||
copy_settings.each do |setting|
|
||||
new_setting = setting.dup
|
||||
new_setting.seminar_main_id = seminar.id.to_s
|
||||
new_setting.save
|
||||
end
|
||||
count_array = (0...self.seminar_sessions.to_a.count).to_a
|
||||
count_array.each do |i|
|
||||
seminar_session = self.seminar_sessions[i]
|
||||
seminar_session.seminar_signup_ids = map_seminar_signup_ids(seminar_session.seminar_signup_ids)
|
||||
end
|
||||
self.unassigned_seminar_signup_ids = map_seminar_signup_ids(clone_target.unassigned_seminar_signup_ids)
|
||||
self.unassigned_mode_1_seminar_signup_ids = map_seminar_signup_ids(clone_target.unassigned_mode_1_seminar_signup_ids)
|
||||
|
||||
need_change_seminar_signups = self.seminar_signups.where(:seminar_session_id.ne=>nil).to_a
|
||||
count_array = (0...need_change_seminar_signups.count).to_a
|
||||
count_array.each do |i|
|
||||
seminar_signup = need_change_seminar_signups[i]
|
||||
if seminar_signup.seminar_session_id.present?
|
||||
seminar_signup.seminar_session_id = @records_all["seminar_session_ids"][seminar_signup.seminar_session_id] rescue nil
|
||||
end
|
||||
end
|
||||
count_array = (0...self.seminar_reviews.to_a.count).to_a
|
||||
change_fields = [:seminar_signup_ids, :remove_seminar_signup_ids, :default_seminar_signup_ids]
|
||||
count_array.each do |i|
|
||||
seminar_review = self.seminar_reviews[i]
|
||||
change_fields.each do |f|
|
||||
seminar_review.send("#{f}=",map_seminar_signup_ids( seminar_review.send(f)))
|
||||
end
|
||||
seminar_review.seminar_session_ids = seminar_review.seminar_session_ids.map{|seminar_session_id| @records_all["seminar_session_ids"][seminar_session_id] rescue nil}.select{|id| !id.nil?}
|
||||
seminar_review.default_topics = seminar_review.default_topics.map do |default_topic|
|
||||
fn,id = default_topic.split(".")
|
||||
if fn == "seminar_signup_fields"
|
||||
id = @records_all["seminar_signup_field_ids"][BSON::ObjectId(id)].to_s rescue nil
|
||||
elsif fn == "seminar_submission_fields"
|
||||
id = @records_all["seminar_submission_field_ids"][BSON::ObjectId(id)].to_s rescue nil
|
||||
end
|
||||
"#{fn}.#{id}"
|
||||
end
|
||||
end
|
||||
end
|
||||
seminar
|
||||
end
|
||||
end
|
||||
def map_seminar_signup_ids(old_seminar_signup_ids)
|
||||
if @records_all["seminar_signup_ids"].present?
|
||||
old_seminar_signup_ids.map{|seminar_signup_id| @records_all["seminar_signup_ids"][BSON::ObjectId(seminar_signup_id)].to_s rescue ""}.select{|t| t.present?}
|
||||
else
|
||||
[]
|
||||
end
|
||||
end
|
||||
def clone_new_for_object(object,clone_target=nil,clone_mode=false)
|
||||
if clone_mode
|
||||
new_object = object
|
||||
clone_target = object.class.find(object.copy_id) rescue nil if clone_target.nil?
|
||||
else
|
||||
clone_target = object if clone_target.nil?
|
||||
new_object = object.dup
|
||||
end
|
||||
return if self.except_clone_relations.to_s.include?(new_object.class.to_s.underscore)
|
||||
@records_all["#{new_object.class.to_s.underscore.singularize}_ids"] = {} if @records_all["#{new_object.class.to_s.underscore.singularize}_ids"].nil?
|
||||
begin
|
||||
@records_all["#{new_object.class.to_s.underscore.singularize}_ids"][clone_target.id] = object.id
|
||||
rescue
|
||||
nil
|
||||
end
|
||||
if !clone_target.nil? && !new_object.nil?
|
||||
initialize_fields = ["uid","created_at","updated_at"]
|
||||
initialize_fields.each do |f|
|
||||
new_object.send("#{f}=",nil) if new_object.fields.keys.include?(f)
|
||||
end
|
||||
relations_fields = clone_target.relations.except("impressions").keys
|
||||
all_fields = clone_target.fields.keys - relations_fields
|
||||
all_fields = all_fields - relations_fields.map{|k| "#{k}_id"}
|
||||
all_fields = all_fields - relations_fields.map{|k| "#{k.singularize}_ids"}
|
||||
new_object_class_name = new_object.class.to_s.underscore
|
||||
relations_fields = clone_target.relations.except("impressions").keys
|
||||
unsort_relation_keys = clone_target.relations.keys
|
||||
unless @parent_level
|
||||
fields_to_delete = [new_object_class_name]
|
||||
tmp_relations_fields = [new_object_class_name]
|
||||
while relations_fields.count > 0
|
||||
tmp_singularize_relations_fields = tmp_relations_fields.map{|f| f.singularize}
|
||||
approve_append = nil
|
||||
relations_fields.each do |k|
|
||||
belongs_to_class = clone_target.relations[k].class_name.constantize.relations.select{|k,v| v.macro == :belongs_to}.keys
|
||||
has_many_class = clone_target.relations[k].class_name.constantize.relations.select{|k,v| v.macro == :has_many}.keys
|
||||
if (belongs_to_class - tmp_singularize_relations_fields).count == 0
|
||||
other_has_many_class = (has_many_class - unsort_relation_keys)
|
||||
if other_has_many_class.count == 0
|
||||
tmp_relations_fields << k
|
||||
else
|
||||
result = other_has_many_class.map do |k|
|
||||
belongs_to_class = k.classify.constantize.relations.select{|kk,v| v.macro == :belongs_to}.keys
|
||||
has_many_class = k.classify.constantize.relations.select{|kk,v| v.macro == :has_many}.keys
|
||||
if (belongs_to_class - tmp_singularize_relations_fields).count == 0
|
||||
true
|
||||
else
|
||||
fields_to_delete = fields_to_delete.concat(belongs_to_class)
|
||||
tmp_relations_fields.concat(belongs_to_class)
|
||||
false
|
||||
end
|
||||
end
|
||||
if result.select{|t| !t}.count == 0
|
||||
if (fields_to_delete.map{|f| f.pluralize} - tmp_relations_fields).count == 0
|
||||
tmp_relations_fields << k
|
||||
elsif clone_target.relations[k].class_name.constantize.fields.keys.include?("key")
|
||||
tmp_relations_fields << k
|
||||
elsif (clone_target.relations[k].class_name.constantize.relations.keys.map{|f| f.singularize} & fields_to_delete).count != 0
|
||||
approve_append = k
|
||||
end
|
||||
end
|
||||
end
|
||||
elsif !unsort_relation_keys.include?(clone_target.relations[k].class_name.underscore) && !unsort_relation_keys.include?(clone_target.relations[k].class_name.underscore.pluralize)
|
||||
tmp_relations_fields << k
|
||||
end
|
||||
end
|
||||
tmp_relations_fields << approve_append if approve_append.present?
|
||||
approve_append = nil
|
||||
relations_fields = relations_fields - tmp_relations_fields
|
||||
end
|
||||
relations_fields = tmp_relations_fields
|
||||
fields_to_delete.each{|f| relations_fields.delete(f)}
|
||||
@clone_mode = clone_mode
|
||||
end
|
||||
@parent_level = true
|
||||
if clone_mode
|
||||
all_fields.each do |f|
|
||||
next if f == "uid"
|
||||
unless new_object.send("#{f}_changed?") && new_object.send("#{f}_changed_from_default?")
|
||||
new_object.send("#{f}=",clone_target.send(f))
|
||||
end
|
||||
end
|
||||
end
|
||||
relations_fields.each do |f|
|
||||
no_dup_flag = false
|
||||
if clone_target.relations[f].macro == :belongs_to
|
||||
no_dup_flag = new_object.send(f).present?
|
||||
elsif clone_target.relations[f].macro == :has_many
|
||||
no_dup_flag = new_object.send(f).to_a.count != 0
|
||||
end
|
||||
if clone_target.relations[f].macro == :belongs_to || clone_target.relations[f].class_name == "MemberProfile"
|
||||
if @records_all["#{f}_ids"].nil?
|
||||
new_object.send("#{f}_id=",clone_target.send("#{f}_id"))
|
||||
else
|
||||
new_object.send("#{f}_id=",(@records_all["#{f}_ids"][clone_target.send("#{f}_id")]))
|
||||
end
|
||||
elsif clone_target.relations[f].macro == :has_many
|
||||
next if self.except_clone_relations.to_s.include?(f)
|
||||
clone_relations = []
|
||||
need_clone_relations = clone_target.send(f).asc(:_id).to_a
|
||||
file_flag = false
|
||||
need_clone_relations.each_with_index do |r,i|
|
||||
clone_relation = new_object.send(f)[i]
|
||||
clone_relation = r.dup if clone_relation.nil?
|
||||
initialize_fields.each do |f|
|
||||
clone_relation.send("#{f}=",nil) if clone_relation.fields.keys.include?(f)
|
||||
end
|
||||
check_fields = clone_relation.fields.except(initialize_fields)
|
||||
check_fields.keys.each do |f|
|
||||
if (clone_relation.send(f).class.to_s.match(/uploader/i) rescue false)
|
||||
if clone_relation[f].blank? && (clone_relation.send(f).file.nil? rescue true)
|
||||
clone_relation[f] = r[f]
|
||||
source_filepath = r.send(f).file.file
|
||||
if @clone_mode
|
||||
dest_filepath = clone_relation.send(f).file.file
|
||||
FileUtils.mkdir_p(File.dirname(dest_filepath))
|
||||
FileUtils.cp(source_filepath,dest_filepath)
|
||||
end
|
||||
elsif (clone_relation.send(f).file rescue nil)
|
||||
clone_relation[f] = File.basename(clone_relation.send(f).file.file.to_s)
|
||||
end
|
||||
file_flag = true
|
||||
end
|
||||
end
|
||||
clone_relations << clone_relation
|
||||
end
|
||||
if !no_dup_flag || (no_dup_flag && file_flag)
|
||||
new_object_relations = new_object.send(f).to_a
|
||||
if new_object_relations.count != 0
|
||||
if clone_relations.count > new_object_relations.count
|
||||
clone_relations = clone_relations[0...new_object_relations.count]
|
||||
else
|
||||
clone_relations = clone_relations.concat(new_object.send(f)[clone_relations.count...new_object_relations.count])
|
||||
end
|
||||
new_object.send("#{f}=",clone_relations)
|
||||
else
|
||||
new_object.send("#{f}=",clone_relations)
|
||||
end
|
||||
end
|
||||
count_array = (0...new_object.send(f).to_a.count).to_a
|
||||
count_array.each do |i|
|
||||
clone_new_for_object(new_object.send(f)[i],need_clone_relations[i],true)
|
||||
end
|
||||
end
|
||||
end
|
||||
new_object.copy_id = clone_target.id if new_object.fields.keys.include?("copy_id")
|
||||
return new_object, clone_target
|
||||
end
|
||||
end
|
|
@ -5,8 +5,90 @@ class SeminarReview
|
|||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
|
||||
field :review_start_date, :type => Date, :default => Time.now
|
||||
field :review_end_date, :type => Date, :default => Time.now
|
||||
field :review_start_date, :type => Date, :default => Time.now #Already move to seminar_main
|
||||
field :review_end_date, :type => Date, :default => Time.now #Already move to seminar_main
|
||||
field :reviewer_id
|
||||
field :seminar_signup_ids, :type => Array, :default => []
|
||||
field :remove_seminar_signup_ids, :type => Array, :default => []
|
||||
field :default_seminar_signup_ids, :type => Array, :default => []
|
||||
field :default_topics, :type => Array, :default => []
|
||||
field :default_topics_values, :type => Array, :default => []
|
||||
field :final_session
|
||||
field :session_ids
|
||||
field :seminar_session_ids
|
||||
belongs_to :seminar_main
|
||||
after_initialize do
|
||||
unless self.new_record?
|
||||
save_flag = false
|
||||
if (self.reviewer_id.class == Array rescue false)
|
||||
reviewer_ids = self.reviewer_id[1..-1]
|
||||
reviewer_ids.each do |reviewer_id|
|
||||
self.class.create(:reviewer_id=>reviewer_id,:seminar_main=>self.seminar_main)
|
||||
end
|
||||
self.reviewer_id = self.reviewer_id.first
|
||||
save_flag = true
|
||||
end
|
||||
if (self.session_ids.nil? rescue true)
|
||||
session_ids = []
|
||||
self.default_topics.each_with_index do |t,i|
|
||||
next if t != "seminar_signup_contributes.description"
|
||||
session_ids << self.default_topics_values[i]
|
||||
end
|
||||
session_ids = session_ids.flatten.map{|i| i.to_i}
|
||||
self.session_ids = session_ids
|
||||
save_flag = true
|
||||
end
|
||||
if self.seminar_session_ids.nil? && self.session_ids.class == Array
|
||||
self.seminar_session_ids = self.seminar_main.seminar_sessions.where(:key.in=>self.session_ids).pluck(:id) rescue nil
|
||||
save_flag = true
|
||||
end
|
||||
self.save(:validate=>false) if save_flag
|
||||
end
|
||||
end
|
||||
before_save do
|
||||
default_seminar_signup_ids = []
|
||||
self.session_ids = []
|
||||
self.default_topics.each_with_index do |topic,i|
|
||||
fn,id = (topic.split(".") rescue [])
|
||||
next if fn.nil?
|
||||
if fn == "seminar_signup_fields"
|
||||
default_seminar_signup_ids += SeminarSignupValue.where(:seminar_signup_field_id=>id,:val.in=>self.default_topics_values[i].to_a).pluck(:seminar_signup_id)
|
||||
elsif fn == "seminar_submission_fields"
|
||||
seminar_signup_contribute_ids = SeminarSubmissionValue.where(:seminar_submission_field_id=>id,:val.in=>self.default_topics_values[i].to_a).pluck(:seminar_signup_contribute)
|
||||
default_seminar_signup_ids += SeminarSignupContribute.where(:id.in=>seminar_signup_contribute_ids).pluck(:seminar_signup_id)
|
||||
elsif fn == "seminar_signup_contributes"
|
||||
seminar_signup_ids_from_contribute = SeminarSignupContribute.where(:description.in=>self.default_topics_values[i].to_a).pluck(:seminar_signup_id)
|
||||
seminar_signup_ids_from_contribute = seminar_signup_ids_from_contribute & (self.seminar_main.seminar_signups.pluck(:id) rescue [])
|
||||
default_seminar_signup_ids += seminar_signup_ids_from_contribute
|
||||
self.session_ids = self.session_ids.concat(self.default_topics_values[i].map{|v| v.to_i})
|
||||
end
|
||||
end
|
||||
self.seminar_session_ids = self.seminar_main.seminar_sessions.where(:key.in=>self.session_ids.to_a).pluck(:id) rescue []
|
||||
default_seminar_signup_ids.uniq!
|
||||
default_seminar_signup_ids = default_seminar_signup_ids.map{|s| s.to_s}
|
||||
self.default_seminar_signup_ids = default_seminar_signup_ids
|
||||
end
|
||||
def review
|
||||
MemberProfile.find(self.reviewer_id) rescue nil
|
||||
end
|
||||
def get_all_seminar_signup_ids(mode = nil)
|
||||
if (self.default_topics.include?("seminar_signup_contributes.description") && self.seminar_main.assign_mode == 1) || mode == 1
|
||||
final_assign_signup_ids = SeminarSession.where(:id.in=>self.seminar_session_ids).pluck(:seminar_signup_ids).flatten.map{|id| id.to_s} rescue []
|
||||
result = final_assign_signup_ids + self.seminar_signup_ids - self.remove_seminar_signup_ids
|
||||
result = result.uniq
|
||||
else
|
||||
result = all_seminar_signup_ids
|
||||
end
|
||||
result
|
||||
end
|
||||
def all_seminar_signup_ids
|
||||
result = self.seminar_signup_ids - self.remove_seminar_signup_ids + self.default_seminar_signup_ids
|
||||
result.uniq
|
||||
end
|
||||
def append_default_signup_id(signup_id)
|
||||
sid = signup_id.to_s
|
||||
unless self.default_seminar_signup_ids.include?(sid)
|
||||
self.default_seminar_signup_ids << sid
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
# encoding: utf-8
|
||||
class SeminarSession
|
||||
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
|
||||
field :key
|
||||
belongs_to :seminar_main
|
||||
field :seminar_signup_ids, :type => Array, :default => []
|
||||
def seminar_signups
|
||||
SeminarSignup.where(:id.in=>seminar_signup_ids)
|
||||
end
|
||||
end
|
|
@ -14,14 +14,54 @@ class SeminarSignup
|
|||
field :address, localize: true
|
||||
field :password
|
||||
field :note, localize: true
|
||||
|
||||
field :serial_number
|
||||
field :final_session
|
||||
belongs_to :seminar_main
|
||||
|
||||
has_many :seminar_signup_values
|
||||
has_many :seminar_signup_contributes
|
||||
field :seminar_session_id
|
||||
has_many :seminar_signup_values, :autosave => true, :dependent => :destroy
|
||||
has_many :seminar_signup_contributes, :autosave => true, :dependent => :destroy
|
||||
|
||||
accepts_nested_attributes_for :seminar_signup_values, allow_destroy: true
|
||||
accepts_nested_attributes_for :seminar_signup_contributes, allow_destroy: true
|
||||
scope :sort_ordered, ->{ order_by(:created_at=>1) }
|
||||
|
||||
|
||||
before_create do
|
||||
unit = self.unit_translations.values.select{|v| v.present?}.first
|
||||
self.unit_translations = I18n.available_locales.map{|l| [l.to_s,unit]}.to_h
|
||||
if self.serial_number.nil?
|
||||
s = SeminarMain.find(self.seminar_main)
|
||||
s.last_serial_number += 1
|
||||
self.serial_number = s.last_serial_number
|
||||
s.save(:validate=>false)
|
||||
end
|
||||
end
|
||||
after_destroy do
|
||||
seminar_main = self.seminar_main
|
||||
if seminar_main.present?
|
||||
seminar_reviews = seminar_main.seminar_reviews
|
||||
id = self.id.to_s
|
||||
seminar_reviews.each do |sr|
|
||||
if sr.all_seminar_signup_ids.include?(id)
|
||||
sr.seminar_signup_ids.delete(id)
|
||||
sr.remove_seminar_signup_ids.delete(id)
|
||||
sr.default_seminar_signup_ids.delete(id)
|
||||
sr.save
|
||||
end
|
||||
end
|
||||
if seminar_main.unassigned_seminar_signup_ids.delete(id)
|
||||
seminar_main.save
|
||||
end
|
||||
end
|
||||
seminar_session = SeminarSession.where(:id=>self.seminar_session_id).first
|
||||
if seminar_session
|
||||
seminar_session.seminar_signup_ids.delete(self.id.to_s)
|
||||
seminar_session.save
|
||||
end
|
||||
end
|
||||
def display_serial_number
|
||||
display_format_string(self.serial_number,4)
|
||||
end
|
||||
def display_format_string(num, str_length)
|
||||
return format("%0#{str_length}d", num)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
# encoding: utf-8
|
||||
class SeminarSignupAdminSetting
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
field :display_field , type: Array , default: []
|
||||
field :seminar_main_id
|
||||
field :page
|
||||
end
|
|
@ -5,4 +5,7 @@ class SeminarSignupFieldCustom
|
|||
field :seminar_signup_field_id
|
||||
field :hidden, type: Boolean, default: true
|
||||
belongs_to :seminar_main
|
||||
def seminar_signup_field
|
||||
SeminarSignupField.find(self.seminar_signup_field_id) rescue nil
|
||||
end
|
||||
end
|
||||
|
|
|
@ -46,25 +46,30 @@ class SeminarSignupValue
|
|||
end
|
||||
|
||||
def get_field_value
|
||||
if (self.seminar_signup_field.markup.eql?("text_field") || self.seminar_signup_field.markup.eql?("text_area"))
|
||||
seminar_signup_field = self.seminar_signup_field
|
||||
if (seminar_signup_field.markup.eql?("text_field") || seminar_signup_field.markup.eql?("text_area"))
|
||||
if self.value.class == String
|
||||
field_value = self.value
|
||||
else
|
||||
field_value = self.value[I18n.locale]
|
||||
elsif (self.seminar_signup_field.markup.eql?("select") || self.seminar_signup_field.markup.eql?("radio_button"))
|
||||
field_value = self.seminar_signup_field.markup_value["#{self.value}"][I18n.locale] rescue nil
|
||||
elsif self.seminar_signup_field.markup.eql?("address")
|
||||
field_value = rf[:address_key][I18n.locale].map{|k,v| v}.delete_if(&:blank?).join(', ')
|
||||
elsif self.seminar_signup_field.markup.eql?("date")
|
||||
case self.seminar_signup_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.seminar_signup_field.markup.eql?("checkbox")
|
||||
field_value = self.value.map {|v| self.seminar_signup_field.markup_value["#{v}"][I18n.locale]}.join(', ') rescue nil
|
||||
end
|
||||
elsif (seminar_signup_field.markup.eql?("select") || seminar_signup_field.markup.eql?("radio_button"))
|
||||
field_value = seminar_signup_field.markup_value["#{self.value}"][I18n.locale] rescue nil
|
||||
elsif seminar_signup_field.markup.eql?("address")
|
||||
field_value = rf[:address_key][I18n.locale].map{|k,v| v}.delete_if(&:blank?).join(', ')
|
||||
elsif seminar_signup_field.markup.eql?("date")
|
||||
case seminar_signup_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 seminar_signup_field.markup.eql?("checkbox")
|
||||
field_value = self.value.map {|v| seminar_signup_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
|
||||
|
@ -72,15 +77,15 @@ class SeminarSignupValue
|
|||
|
||||
if !field_value.blank?
|
||||
{
|
||||
"key" => self.seminar_signup_field.key,
|
||||
"title" => self.seminar_signup_field.title,
|
||||
"key" => seminar_signup_field.key,
|
||||
"title" => seminar_signup_field.title,
|
||||
"value" => field_value,
|
||||
"val" => field_value = self.value
|
||||
}
|
||||
else
|
||||
{
|
||||
"key" => self.seminar_signup_field.key,
|
||||
"title" => self.seminar_signup_field.title,
|
||||
"key" => seminar_signup_field.key,
|
||||
"title" => seminar_signup_field.title,
|
||||
"value" => "",
|
||||
"val" => field_value = self.value
|
||||
}
|
||||
|
@ -88,29 +93,30 @@ class SeminarSignupValue
|
|||
end
|
||||
|
||||
def get_value_by_locale(locale,add_more_index=nil)
|
||||
case self.seminar_signup_field.markup
|
||||
seminar_signup_field = self.seminar_signup_field
|
||||
case seminar_signup_field.markup
|
||||
when "text_field"
|
||||
case self.seminar_signup_field.add_more
|
||||
when true
|
||||
if self.seminar_signup_field.locale
|
||||
add_more_index.nil? ? self.value.collect{|t| t[locale.to_s]}.join(",") : self.value(add_more_index)[locale]
|
||||
else
|
||||
add_more_index.nil? ? self.value.join(",") : self.value(add_more_index)
|
||||
end
|
||||
|
||||
when false
|
||||
self.seminar_signup_field.locale ? self[locale.to_s] : self.value
|
||||
case seminar_signup_field.add_more
|
||||
when true
|
||||
if seminar_signup_field.locale
|
||||
add_more_index.nil? ? self.value.collect{|t| t[locale.to_s]}.join(",") : self.value(add_more_index)[locale]
|
||||
else
|
||||
add_more_index.nil? ? self.value.join(",") : self.value(add_more_index)
|
||||
end
|
||||
|
||||
when false
|
||||
seminar_signup_field.locale ? self[locale.to_s] : self.value
|
||||
end
|
||||
|
||||
when "select"
|
||||
markup_values = self.seminar_signup_field.self_defined_markup_options? ? self.seminar_signup_field.markup_value : self.seminar_signup_field.markup_value
|
||||
markup_values = seminar_signup_field.self_defined_markup_options? ? seminar_signup_field.markup_value : self.seminar_signup_field.markup_value
|
||||
markup_values[self.value][locale.to_s] rescue 'NoData'
|
||||
|
||||
when "text_area"
|
||||
self.seminar_signup_field.locale ? self[locale.to_s] : self.value
|
||||
seminar_signup_field.locale ? self[locale.to_s] : self.value
|
||||
|
||||
when "date"
|
||||
if self.seminar_signup_field.date_is_range?
|
||||
if seminar_signup_field.date_is_range?
|
||||
get_date_by_format(:from) + ' ~ ' + get_date_by_format(:to)
|
||||
# self.value["from"] + ' ~ ' + self.value["to"]
|
||||
else
|
||||
|
@ -122,17 +128,17 @@ class SeminarSignupValue
|
|||
self.value[locale.to_s]
|
||||
|
||||
when "radio_button"
|
||||
markup_values = self.seminar_signup_field.markup_value
|
||||
markup_values = seminar_signup_field.markup_value
|
||||
markup_values[self.value][locale.to_s]
|
||||
|
||||
when "checkbox"
|
||||
markup_values = self.seminar_signup_field.markup_value
|
||||
markup_values = seminar_signup_field.markup_value
|
||||
self.value.collect{|key| markup_values["#{key}"][I18n.locale]}.join(",")
|
||||
when "date_durnation"
|
||||
self.value
|
||||
|
||||
else
|
||||
self.seminar_signup_field.locale ? self[locale.to_s] : self.value
|
||||
seminar_signup_field.locale ? self[locale.to_s] : self.value
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -174,18 +180,19 @@ def unset_all_lang_values
|
|||
end
|
||||
|
||||
def data_proc
|
||||
seminar_signup_field = self.seminar_signup_field
|
||||
unless self[:temp_data].nil?
|
||||
case self.seminar_signup_field.markup
|
||||
case seminar_signup_field.markup
|
||||
when "address"
|
||||
self["val"] = self["temp_data"]
|
||||
when 'text_field','text_area'
|
||||
if self.seminar_signup_field.add_more
|
||||
if seminar_signup_field.add_more
|
||||
self["val"] = self["temp_data"]
|
||||
else # if not add_more
|
||||
if self.seminar_signup_field.can_muti_lang_input?
|
||||
if seminar_signup_field.can_muti_lang_input?
|
||||
self[:temp_data].each do |key,val|
|
||||
self[key] = val
|
||||
end if(!self.seminar_signup_field.get_data[:cross_lang])
|
||||
end if(!seminar_signup_field.get_data[:cross_lang])
|
||||
else
|
||||
self["val"] = self[:temp_data]
|
||||
end
|
||||
|
@ -202,7 +209,14 @@ def unset_all_lang_values
|
|||
end #of data_proc
|
||||
|
||||
def check_key
|
||||
self.key = self.seminar_signup_field.key
|
||||
if self.seminar_signup_field_id.present? && self.seminar_signup_field.nil?
|
||||
begin
|
||||
self.seminar_signup_field = SeminarSignupField.find(self.seminar_signup_field_id)
|
||||
rescue
|
||||
nil
|
||||
end
|
||||
end
|
||||
self.key = self.seminar_signup_field.key rescue nil
|
||||
end
|
||||
|
||||
def method_missing(*field)
|
||||
|
|
|
@ -45,25 +45,30 @@ class SeminarSubmissionValue
|
|||
end
|
||||
|
||||
def get_field_value
|
||||
if (self.seminar_submission_field.markup.eql?("text_field") || self.seminar_submission_field.markup.eql?("text_area"))
|
||||
seminar_submission_field = self.seminar_submission_field
|
||||
if (seminar_submission_field.markup.eql?("text_field") || seminar_submission_field.markup.eql?("text_area"))
|
||||
if self.value.class == String
|
||||
field_value = self.value
|
||||
else
|
||||
field_value = self.value[I18n.locale]
|
||||
elsif (self.seminar_submission_field.markup.eql?("select") || self.seminar_submission_field.markup.eql?("radio_button"))
|
||||
field_value = self.seminar_submission_field.markup_value["#{self.value}"][I18n.locale] rescue nil
|
||||
elsif self.seminar_submission_field.markup.eql?("address")
|
||||
field_value = rf[:address_key][I18n.locale].map{|k,v| v}.delete_if(&:blank?).join(', ')
|
||||
elsif self.seminar_submission_field.markup.eql?("date")
|
||||
case self.seminar_submission_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.seminar_submission_field.markup.eql?("checkbox")
|
||||
field_value = self.value.map {|v| self.seminar_submission_field.markup_value["#{v}"][I18n.locale]}.join(', ') rescue nil
|
||||
end
|
||||
elsif (seminar_submission_field.markup.eql?("select") || seminar_submission_field.markup.eql?("radio_button"))
|
||||
field_value = seminar_submission_field.markup_value["#{self.value}"][I18n.locale] rescue nil
|
||||
elsif seminar_submission_field.markup.eql?("address")
|
||||
field_value = rf[:address_key][I18n.locale].map{|k,v| v}.delete_if(&:blank?).join(', ')
|
||||
elsif seminar_submission_field.markup.eql?("date")
|
||||
case seminar_submission_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 seminar_submission_field.markup.eql?("checkbox")
|
||||
field_value = self.value.map {|v| seminar_submission_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
|
||||
|
@ -71,15 +76,15 @@ class SeminarSubmissionValue
|
|||
|
||||
if !field_value.blank?
|
||||
{
|
||||
"key" => self.seminar_submission_field.key,
|
||||
"title" => self.seminar_submission_field.title,
|
||||
"key" => seminar_submission_field.key,
|
||||
"title" => seminar_submission_field.title,
|
||||
"value" => field_value,
|
||||
"val" => field_value = self.value
|
||||
}
|
||||
else
|
||||
{
|
||||
"key" => self.seminar_submission_field.key,
|
||||
"title" => self.seminar_submission_field.title,
|
||||
"key" => seminar_submission_field.key,
|
||||
"title" => seminar_submission_field.title,
|
||||
"value" => "",
|
||||
"val" => field_value = self.value
|
||||
}
|
||||
|
@ -87,29 +92,30 @@ class SeminarSubmissionValue
|
|||
end
|
||||
|
||||
def get_value_by_locale(locale,add_more_index=nil)
|
||||
case self.seminar_submission_field.markup
|
||||
seminar_submission_field = self.seminar_submission_field
|
||||
case seminar_submission_field.markup
|
||||
when "text_field"
|
||||
case self.seminar_submission_field.add_more
|
||||
when true
|
||||
if self.seminar_submission_field.locale
|
||||
add_more_index.nil? ? self.value.collect{|t| t[locale.to_s]}.join(",") : self.value(add_more_index)[locale]
|
||||
else
|
||||
add_more_index.nil? ? self.value.join(",") : self.value(add_more_index)
|
||||
end
|
||||
|
||||
when false
|
||||
self.seminar_submission_field.locale ? self[locale.to_s] : self.value
|
||||
case seminar_submission_field.add_more
|
||||
when true
|
||||
if seminar_submission_field.locale
|
||||
add_more_index.nil? ? self.value.collect{|t| t[locale.to_s]}.join(",") : self.value(add_more_index)[locale]
|
||||
else
|
||||
add_more_index.nil? ? self.value.join(",") : self.value(add_more_index)
|
||||
end
|
||||
|
||||
when false
|
||||
seminar_submission_field.locale ? self[locale.to_s] : self.value
|
||||
end
|
||||
|
||||
when "select"
|
||||
markup_values = self.seminar_submission_field.self_defined_markup_options? ? self.seminar_submission_field.markup_value : self.seminar_submission_field.markup_value
|
||||
markup_values = seminar_submission_field.self_defined_markup_options? ? seminar_submission_field.markup_value : self.seminar_submission_field.markup_value
|
||||
markup_values[self.value][locale.to_s] rescue 'NoData'
|
||||
|
||||
when "text_area"
|
||||
self.seminar_submission_field.locale ? self[locale.to_s] : self.value
|
||||
seminar_submission_field.locale ? self[locale.to_s] : self.value
|
||||
|
||||
when "date"
|
||||
if self.seminar_submission_field.date_is_range?
|
||||
if seminar_submission_field.date_is_range?
|
||||
get_date_by_format(:from) + ' ~ ' + get_date_by_format(:to)
|
||||
# self.value["from"] + ' ~ ' + self.value["to"]
|
||||
else
|
||||
|
@ -121,17 +127,17 @@ class SeminarSubmissionValue
|
|||
self.value[locale.to_s]
|
||||
|
||||
when "radio_button"
|
||||
markup_values = self.seminar_submission_field.markup_value
|
||||
markup_values = seminar_submission_field.markup_value
|
||||
markup_values[self.value][locale.to_s]
|
||||
|
||||
when "checkbox"
|
||||
markup_values = self.seminar_submission_field.markup_value
|
||||
markup_values = seminar_submission_field.markup_value
|
||||
self.value.collect{|key| markup_values["#{key}"][I18n.locale]}.join(",")
|
||||
when "date_durnation"
|
||||
self.value
|
||||
|
||||
else
|
||||
self.seminar_submission_field.locale ? self[locale.to_s] : self.value
|
||||
seminar_submission_field.locale ? self[locale.to_s] : self.value
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -167,22 +173,23 @@ class SeminarSubmissionValue
|
|||
protected
|
||||
|
||||
def unset_all_lang_values
|
||||
VALID_LOCALES.each{|t| self.unset t}
|
||||
end
|
||||
VALID_LOCALES.each{|t| self.unset t}
|
||||
end
|
||||
|
||||
def data_proc
|
||||
seminar_submission_field = self.seminar_submission_field
|
||||
unless self[:temp_data].nil?
|
||||
case self.seminar_submission_field.markup
|
||||
case seminar_submission_field.markup
|
||||
when "address"
|
||||
self["val"] = self["temp_data"]
|
||||
when 'text_field','text_area'
|
||||
if self.seminar_submission_field.add_more
|
||||
if seminar_submission_field.add_more
|
||||
self["val"] = self["temp_data"]
|
||||
else # if not add_more
|
||||
if self.seminar_submission_field.can_muti_lang_input?
|
||||
if seminar_submission_field.can_muti_lang_input?
|
||||
self[:temp_data].each do |key,val|
|
||||
self[key] = val
|
||||
end if(!self.seminar_submission_field.get_data[:cross_lang])
|
||||
end if(!seminar_submission_field.get_data[:cross_lang])
|
||||
else
|
||||
self["val"] = self[:temp_data]
|
||||
end
|
||||
|
@ -199,7 +206,14 @@ def unset_all_lang_values
|
|||
end #of data_proc
|
||||
|
||||
def check_key
|
||||
self.key = self.seminar_submission_field.key
|
||||
if self.seminar_submission_field_id.present? && self.seminar_submission_field.nil?
|
||||
begin
|
||||
self.seminar_submission_field = SeminarSubmissionField.find(self.seminar_submission_field_id)
|
||||
rescue
|
||||
nil
|
||||
end
|
||||
end
|
||||
self.key = self.seminar_submission_field.key rescue nil
|
||||
end
|
||||
|
||||
def method_missing(*field)
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
class SeminarUser
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
field :user_name
|
||||
field :password
|
||||
belongs_to :seminar_main
|
||||
# belongs_to :user
|
||||
# before_save do
|
||||
# if self.new_record?
|
||||
# self.user = User.find()
|
||||
# end
|
||||
# end
|
||||
end
|
|
@ -1,5 +1,6 @@
|
|||
<%
|
||||
multi_helper = Admin::SeminarsHelper::MultiLang
|
||||
new_record = @seminar.new_record? && @seminar.copy_id.nil?
|
||||
%>
|
||||
<% content_for :page_specific_css do %>
|
||||
<%= stylesheet_link_tag "lib/main-forms" %>
|
||||
|
@ -54,17 +55,30 @@
|
|||
<div class="control-group">
|
||||
<label class="control-label muted"><%= t('seminar.seminar_start_date') %></label>
|
||||
<div class="controls">
|
||||
<%= f.datetime_picker :seminar_start_date, :no_label => true, :format=>"yyyy/MM/dd", :new_record => @seminar.new_record? %>
|
||||
<%= f.datetime_picker :seminar_start_date, :no_label => true, :format=>"yyyy/MM/dd", :new_record => new_record %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label muted"><%= t('seminar.seminar_end_date') %></label>
|
||||
<div class="controls">
|
||||
<%= f.datetime_picker :seminar_end_date, :no_label => true, :format=>"yyyy/MM/dd", :new_record => @seminar.new_record? %>
|
||||
<%= f.datetime_picker :seminar_end_date, :no_label => true, :format=>"yyyy/MM/dd", :new_record => new_record %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label muted"><%= t('seminar.organizer') %></label>
|
||||
<div class="controls">
|
||||
<%= render partial: 'admin/member_selects/email_selection_box', locals: {field: 'seminar_main[organizer_id]', email_members:Array(f.object.organizer), index: "1", select_name: 'organizer_id'} %>
|
||||
</div>
|
||||
</div>
|
||||
<% if params[:action] == "copy" %>
|
||||
<div class="control-group">
|
||||
<label class="control-label muted"><%= t('seminar.clone_signups') %></label>
|
||||
<div class="controls">
|
||||
<%= check_box_tag("clone_signups",true) %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -87,14 +101,14 @@
|
|||
<div class="control-group">
|
||||
<label class="control-label muted"><%= t('seminar.signup_start_date') %></label>
|
||||
<div class="controls">
|
||||
<%= f.datetime_picker :signup_start_date, :no_label => true, :format=>"yyyy/MM/dd", :new_record => @seminar.new_record? %>
|
||||
<%= f.datetime_picker :signup_start_date, :no_label => true, :format=>"yyyy/MM/dd", :new_record => new_record %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label muted"><%= t('seminar.signup_end_date') %></label>
|
||||
<div class="controls">
|
||||
<%= f.datetime_picker :signup_end_date, :no_label => true, :format=>"yyyy/MM/dd", :new_record => @seminar.new_record? %>
|
||||
<%= f.datetime_picker :signup_end_date, :no_label => true, :format=>"yyyy/MM/dd", :new_record => new_record %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -102,14 +116,14 @@
|
|||
<div class="control-group">
|
||||
<label class="control-label muted"><%= t('seminar.contribute_start_date') %></label>
|
||||
<div class="controls">
|
||||
<%= f.datetime_picker :contribute_start_date, :no_label => true, :format=>"yyyy/MM/dd", :new_record => @seminar.new_record? %>
|
||||
<%= f.datetime_picker :contribute_start_date, :no_label => true, :format=>"yyyy/MM/dd", :new_record => new_record %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label muted"><%= t('seminar.contribute_end_date') %></label>
|
||||
<div class="controls">
|
||||
<%= f.datetime_picker :contribute_end_date, :no_label => true, :format=>"yyyy/MM/dd", :new_record => @seminar.new_record? %>
|
||||
<%= f.datetime_picker :contribute_end_date, :no_label => true, :format=>"yyyy/MM/dd", :new_record => new_record %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -131,30 +145,28 @@
|
|||
</div>
|
||||
<!-- Review Module -->
|
||||
<div class="tab-pane fade in " id="review">
|
||||
<%= f.fields_for :seminar_reviews,@review do |seminar_reviews_form| %>
|
||||
<div class="control-group big-group">
|
||||
<label class="control-label muted"><%= t("seminar.reviewer") %></label>
|
||||
<div class="controls">
|
||||
<% if !@member.nil? %>
|
||||
<%= render partial: 'admin/member_selects/email_selection_box', locals: {field: 'seminar_main[seminar_reviews_attributes][0][reviewer_id][]', email_members:@member} %>
|
||||
<%= render partial: 'admin/member_selects/email_selection_box', locals: {field: 'seminar_main[reviewer_ids][]', email_members:@member, index: "2", select_name: 'reviewer_ids'} %>
|
||||
<% else %>
|
||||
<%= render partial: 'admin/member_selects/email_selection_box', locals: {field: 'seminar_main[seminar_reviews_attributes][0][reviewer_id][]', email_members:[]} %>
|
||||
<%= render partial: 'admin/member_selects/email_selection_box', locals: {field: 'seminar_main[reviewer_ids][]', email_members:[], index: "2", select_name: 'reviewer_ids'} %>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label muted"><%= t('seminar.review_start_date') %></label>
|
||||
<div class="controls">
|
||||
<%= seminar_reviews_form.datetime_picker :review_start_date, :no_label => true, :format=>"yyyy/MM/dd", :new_record => @seminar.new_record? %>
|
||||
<%= f.datetime_picker :review_start_date, :no_label => true, :format=>"yyyy/MM/dd", :new_record => new_record %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label muted"><%= t('seminar.review_end_date') %></label>
|
||||
<div class="controls">
|
||||
<%= seminar_reviews_form.datetime_picker :review_end_date, :no_label => true, :format=>"yyyy/MM/dd", :new_record => @seminar.new_record? %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
<div class="control-group">
|
||||
<label class="control-label muted"><%= t('seminar.review_end_date') %></label>
|
||||
<div class="controls">
|
||||
<%= f.datetime_picker :review_end_date, :no_label => true, :format=>"yyyy/MM/dd", :new_record => new_record %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Signup Set Module -->
|
||||
<div class="tab-pane fade in " id="signup_set" style="padding: 1.2em;">
|
||||
|
@ -230,6 +242,27 @@
|
|||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="control-group">
|
||||
<div class="control-label"><%=t('seminar_signup.enable_summary_choice')%></div>
|
||||
<div class="controls"><%= f.check_box :enable_summary_choice %></div>
|
||||
</div>
|
||||
<% hidden_style = (f.object.enable_summary_choice) ? "" : "style=display:none" %>
|
||||
<div class="control-group summary_choice_block" <%=hidden_style%>>
|
||||
<div class="control-label"><%=t('seminar_signup.summary_choice_type')%></div>
|
||||
<div class="controls"><%= f.select :summary_chioice_type,f.object.class::ChoiceTypes.map{|c| [t("seminar_signup.#{c}"),c]} %></div>
|
||||
</div>
|
||||
<div class="control-group summary_choice_block" <%=hidden_style%>>
|
||||
<div class="control-label"><%=t('seminar_signup.choices')%></div>
|
||||
<div class="controls">
|
||||
<% f.object.summary_chioices.each do |choice| %>
|
||||
<div>
|
||||
<span class="remove_btn">X</span>
|
||||
<%= text_field_tag "seminar_main[summary_chioices][]",choice, {:id=>nil} %>
|
||||
</div>
|
||||
<% end %>
|
||||
<button type="button" class="btn btn-primary btn-small" id="add_summary_choice"><%=t(:new_)%></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Custom Set Module -->
|
||||
<div class="tab-pane fade in " id="custom_set" style="padding: 1.2em;">
|
||||
|
@ -248,7 +281,11 @@
|
|||
<input type="hidden" class="field_set" name='<%= "seminar_main[seminar_signup_field_customs][#{custom_index}][hidden]" %>' value="false">
|
||||
<%= check_box_tag("seminar_main[seminar_signup_field_customs][#{custom_index}][hidden]", true ,attr_custom.hidden) %>
|
||||
</td>
|
||||
<input for="field_0" id="seminar_main_seminar_signup_field_customs_<%= custom_index.to_s %>_id" name="seminar_main[seminar_signup_field_customs][<%= custom_index.to_s %>][id]" type="hidden" value="<%= attr_custom.id.to_s %>">
|
||||
<% if !attr_custom.new_record? %>
|
||||
<input for="field_0" id="seminar_main_seminar_signup_field_customs_<%= custom_index.to_s %>_id" name="seminar_main[seminar_signup_field_customs][<%= custom_index.to_s %>][id]" type="hidden" value="<%= attr_custom.id.to_s %>">
|
||||
<% elsif f.object.copy_id.present? %>
|
||||
<input name="seminar_main[seminar_signup_field_customs][<%= custom_index.to_s %>][title]" type="hidden" value="<%= attr_custom.seminar_signup_field.title.to_s %>">
|
||||
<% end %>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
|
@ -433,7 +470,7 @@
|
|||
<div class="add-target">
|
||||
</div>
|
||||
<p class="add-btn">
|
||||
<%= hidden_field_tag 'seminar_file_field_count', @seminar.seminar_files.count %>
|
||||
<%= hidden_field_tag 'seminar_file_field_count', @seminar.seminar_files.to_a.count %>
|
||||
<a id="add_file" class="trigger btn btn-small btn-primary"><i class="icons-plus"></i> <%= t(:add) %></a>
|
||||
</p>
|
||||
|
||||
|
@ -491,7 +528,26 @@
|
|||
$(this).parents('.start-line').hide();
|
||||
}
|
||||
});
|
||||
|
||||
$(document).on('click','#add_summary_choice',function(){
|
||||
$(this).before("<div><span class=\"remove_btn\">X</span><input name=\"seminar_main[summary_chioices][]\" type=\"text\"></div>")
|
||||
})
|
||||
$(document).on('click','.remove_btn',function(){
|
||||
$(this).parent().remove();
|
||||
})
|
||||
$("input[name=\"seminar_main[enable_summary_choice]\"]").change(function(){
|
||||
if($(this).prop("checked")){
|
||||
$(".summary_choice_block").css("display","");
|
||||
}else{
|
||||
$(".summary_choice_block").css("display","none");
|
||||
}
|
||||
})
|
||||
});
|
||||
</script>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<style type="text/css">
|
||||
.remove_btn{
|
||||
color: red;
|
||||
font-weight: bold;
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
|
@ -1,11 +1,24 @@
|
|||
<% if form_file.new_record? %>
|
||||
<% new_record = form_file.new_record? && form_file["file"].blank? %>
|
||||
<% if new_record %>
|
||||
<div class="fileupload fileupload-new start-line" data-provides="fileupload">
|
||||
<% else %>
|
||||
<div class="fileupload fileupload-exists start-line" data-provides="fileupload">
|
||||
<% if form_file.file.blank? %>
|
||||
<% if form_file.file.blank? && form_file["file"].blank? %>
|
||||
<%= t(:no_file) %>
|
||||
<% else %>
|
||||
<%= link_to content_tag(:i) + form_file.file_identifier, form_file.file.url, {:class => 'file-link file-type', :target => '_blank', :title => form_file.file_identifier} %>
|
||||
<% belongs_to_record = form_file.relations.select{|k,v| v.macro == :belongs_to}.first[0] rescue nil %>
|
||||
<% url = form_file.file.url %>
|
||||
<% if belongs_to_record.present? && (form_file.send(belongs_to_record).copy_id.present? rescue false) %>
|
||||
<% begin
|
||||
belongs_to_record = belongs_to_record.classify.constantize.find(form_file.send(belongs_to_record).copy_id)
|
||||
target_form_files = belongs_to_record.send(form_file.class.to_s.underscore+"s")
|
||||
target_form_file = target_form_files.select{|ff| ff["file"] == form_file["file"]}.first
|
||||
url = target_form_file.file.url
|
||||
rescue
|
||||
nil
|
||||
end %>
|
||||
<% end %>
|
||||
<%= link_to content_tag(:i) + form_file.file_identifier, url, {:class => 'file-link file-type', :target => '_blank', :title => form_file.file_identifier} %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<div class="input-prepend input-append">
|
||||
|
@ -16,7 +29,7 @@
|
|||
</span>
|
||||
<div class="uneditable-input input-medium">
|
||||
<i class="icon-file fileupload-exists"></i>
|
||||
<span class="fileupload-preview"><%= (form_file.new_record? || form_file.file.blank?) ? t(:select_file) : t(:change_file) %></span>
|
||||
<span class="fileupload-preview"><%= (new_record) ? t(:select_file) : t(:change_file) %></span>
|
||||
</div>
|
||||
</label>
|
||||
<span class="add-on icons-pencil" title='<%= t(:alternative) %>'></span>
|
||||
|
@ -40,13 +53,13 @@
|
|||
<% end %>
|
||||
</span>
|
||||
</span>
|
||||
<% if form_file.new_record? %>
|
||||
<% if new_record %>
|
||||
<span class="delete_file add-on btn" title="<%= t(:delete_) %>">
|
||||
<a class="icon-trash"></a>
|
||||
</span>
|
||||
<% else %>
|
||||
<span class="remove_existing_record add-on btn" title="<%= t(:remove) %>">
|
||||
<%= f.hidden_field :id %>
|
||||
<%= f.hidden_field :id unless form_file.new_record?%>
|
||||
<a class="icon-remove"></a>
|
||||
<%= f.hidden_field :_destroy, :value => nil, :class => 'should_destroy' %>
|
||||
</span>
|
||||
|
|
|
@ -0,0 +1,126 @@
|
|||
<% @field_names = [] %>
|
||||
<% @field_name_translations = [] %>
|
||||
<% default_hidden = [] %>
|
||||
<%
|
||||
default_seminar_signup_fields = ["serial_number"]
|
||||
default_seminar_signup_fields.each do |f|
|
||||
@field_names << "seminar_signup.#{f}"
|
||||
@field_name_translations << t("seminar_signup.#{f}")
|
||||
end
|
||||
%>
|
||||
<% if @seminar.present? %>
|
||||
<% if @seminar.seminar_signup_field_sets.count != 0 %>
|
||||
<% @seminar.seminar_signup_field_sets.each do |field_set| %>
|
||||
<% default_hidden << "seminar_signup_field_set.#{field_set.field_name}" if (field_set.hidden) %>
|
||||
<% @field_names << "seminar_signup_field_set.#{field_set.field_name}" %>
|
||||
<% @field_name_translations << field_set.name[I18n.locale] %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<% ['seminar_signup.name','seminar_signup.tel','seminar.registration_status'].each do |th| %>
|
||||
<% @field_names << "default.#{th}" %>
|
||||
<% @field_name_translations << t(th) %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% if @seminar.seminar_signup_field_customs.count != 0 %>
|
||||
<% @seminar.seminar_signup_field_customs.each do |field_set| %>
|
||||
<% s = SeminarSignupField.where(id:field_set.seminar_signup_field_id).first %>
|
||||
<% title = s.title rescue '' %>
|
||||
<% next if title.blank? %>
|
||||
<% next if s.key.blank? %>
|
||||
<% default_hidden << "seminar_signup_field_custom.#{s.key}" if (field_set.hidden) %>
|
||||
<% @field_names << "seminar_signup_field_custom.#{s.key}" %>
|
||||
<% @field_name_translations << (title)%>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% @seminar.seminar_signup_fields.each do |s| %>
|
||||
<% default_hidden << "seminar_signup_fields.#{s.key}" %>
|
||||
<% @field_names << "seminar_signup_fields.#{s.key}" %>
|
||||
<% @field_name_translations << s.title %>
|
||||
<% end %>
|
||||
<% if @seminar.seminar_submission_field_sets.count != 0 %>
|
||||
<% show1 = !(@seminar.seminar_submission_field_sets.select{|v| v.field_name=='title'}[0].hidden)
|
||||
show2 = !(@seminar.seminar_submission_field_sets.select{|v| v.field_name=='file'}[0].hidden)
|
||||
show3 = !(@seminar.seminar_submission_field_sets.select{|v| v.field_name=='description'}[0].hidden)
|
||||
%>
|
||||
<% else %>
|
||||
<% show1 = true
|
||||
show2 = true
|
||||
show3 = true
|
||||
%>
|
||||
<% end %>
|
||||
<% default_hidden << "seminar_signup_contributes.title" if !show1 %>
|
||||
<% @field_names << 'seminar_signup_contributes.title' %>
|
||||
<% @field_name_translations << t('seminar_signup.title') %>
|
||||
|
||||
<% default_hidden << "seminar_signup_contributes.file" if !show2 %>
|
||||
<% @field_names << 'seminar_signup_contributes.file' %>
|
||||
<% @field_name_translations << t('seminar_signup.file') %>
|
||||
|
||||
<% default_hidden << "seminar_signup_contributes.description" if !show3 %>
|
||||
<% @field_names << 'seminar_signup_contributes.description' %>
|
||||
<% @field_name_translations << t('seminar_signup.description') %>
|
||||
<% @seminar.seminar_submission_fields.each do |s| %>
|
||||
<% @field_names << "seminar_submission_fields.#{s.key}" %>
|
||||
<% @field_name_translations << s.title %>
|
||||
<% end %>
|
||||
<% @display_field = @seminar_signup_admin_setting.display_field %>
|
||||
<% if @display_field.blank?
|
||||
@display_field = @field_names - default_hidden
|
||||
end %>
|
||||
<% else %>
|
||||
<% @field_names = [] %>
|
||||
<% @field_name_translations = [] %>
|
||||
<% default_show = [] %>
|
||||
<% seminar_signup_field_sets = SeminarSignupFieldSet.all.uniq{|s| s.field_name} %>
|
||||
<% if seminar_signup_field_sets.count != 0 %>
|
||||
<% seminar_signup_field_sets.each do |field_set| %>
|
||||
<% default_show << "seminar_signup_field_set.#{field_set.field_name}" if !(field_set.hidden) %>
|
||||
<% @field_names << "seminar_signup_field_set.#{field_set.field_name}" %>
|
||||
<% @field_name_translations << field_set.name[I18n.locale] %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<% ['seminar_signup.name','seminar_signup.tel','seminar.registration_status'].each do |th| %>
|
||||
<% @field_names << "default.#{th}" %>
|
||||
<% @field_name_translations << t(th) %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% seminar_signup_field_customs = SeminarSignupFieldCustom.all.map{|field_set| SeminarSignupField.where(id: field_set.seminar_signup_field_id).first}.select{|s| !s.nil?}.uniq{|s| s.key } %>
|
||||
<% if seminar_signup_field_customs.count != 0 %>
|
||||
<% seminar_signup_field_customs.each do |s| %>
|
||||
<% title = s.title rescue '' %>
|
||||
<% next if title.blank? %>
|
||||
<% next if s.key.blank? %>
|
||||
<% @field_names << "seminar_signup_field_custom.#{s.key}" %>
|
||||
<% @field_name_translations << (title)%>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% seminar_signup_fields = SeminarSignupField.all.uniq{|s| s.key} %>
|
||||
<% seminar_signup_fields.each do |s| %>
|
||||
<% @field_names << "seminar_signup_fields.#{s.key}" %>
|
||||
<% @field_name_translations << s.title %>
|
||||
<% end %>
|
||||
<% show1 = true
|
||||
show2 = true
|
||||
show3 = true
|
||||
%>
|
||||
<% default_show << "seminar_signup_contributes.title" if show1 %>
|
||||
<% @field_names << 'seminar_signup_contributes.title' %>
|
||||
<% @field_name_translations << t('seminar_signup.title') %>
|
||||
|
||||
<% default_show << "seminar_signup_contributes.file" if show2 %>
|
||||
<% @field_names << 'seminar_signup_contributes.file' %>
|
||||
<% @field_name_translations << t('seminar_signup.file') %>
|
||||
|
||||
<% default_show << "seminar_signup_contributes.description" if show3 %>
|
||||
<% @field_names << 'seminar_signup_contributes.description' %>
|
||||
<% @field_name_translations << t('seminar_signup.description') %>
|
||||
<% seminar_submission_fields = SeminarSignupField.all.uniq{|s| s.key} %>
|
||||
<% seminar_submission_fields.each do |s| %>
|
||||
<% @field_names << "seminar_submission_fields.#{s.key}" %>
|
||||
<% @field_name_translations << s.title %>
|
||||
<% end %>
|
||||
<% @display_field = @seminar_signup_admin_setting.display_field %>
|
||||
<% if @display_field.blank?
|
||||
@display_field = default_show
|
||||
end %>
|
||||
<% end %>
|
|
@ -22,11 +22,13 @@
|
|||
<a href="<%= page_for_seminar(seminar) %>?method=show_data" target="_blank"><%= seminar.title %></a>
|
||||
<div class="quick-edit">
|
||||
<ul class="nav nav-pills">
|
||||
<% if can_edit_or_delete?(seminar) %>
|
||||
<% if admin_for_seminar(seminar) %>
|
||||
<li><a href="/admin/seminars/<%=seminar.id.to_s%>/edit"><%= t(:edit) %></a></li>
|
||||
<li><a href="/admin/seminars/<%=seminar.id.to_s%>/copy"><%= t("seminar.copy") %></a></li>
|
||||
<li><a href="<%= admin_seminar_item_contents_path(:seminar_main_id=>seminar.id.to_s) %>"><%= t('seminar.set_seminar_item_content') %></a></li>
|
||||
<li><a href="/admin/seminars/<%=seminar.id.to_s%>/seminar_signup_field"><%= t('seminar.set_seminar_signup_field') %></a></li>
|
||||
<li><a href="/admin/seminars/<%=seminar.id.to_s%>/seminar_submission_field"><%= t('seminar.set_seminar_submission_field') %></a></li>
|
||||
<li><a href="<%=reviewer_setting_admin_seminar_path(seminar.id)%>"><%= t('seminar.reviewer_setting') %></a></li>
|
||||
<li><a href="#" class="delete text-error" rel="/admin/seminars/<%=seminar.id.to_s%>"><%= t(:delete_) %></a></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
|
@ -34,8 +36,19 @@
|
|||
</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"><%= seminar.seminar_signups.count %></a></td>
|
||||
<td><a href="/admin/seminars/<%=seminar.id.to_s%>/export?format=xlsx" target="_blank"><%= t('seminar.export') %></a></td>
|
||||
<td><a href="/admin/seminars/<%=seminar.id.to_s%>/seminar_signup">
|
||||
<% @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 %>
|
||||
<% else %>
|
||||
<%= seminar.seminar_signups.count %>
|
||||
<% end %>
|
||||
</a></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>
|
||||
<% end %>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
|
|
|
@ -0,0 +1,299 @@
|
|||
<h3 class="pull-left"><%= @seminar.title %></h3>
|
||||
<div style="clear: both;"></div>
|
||||
<% org_seminar_signups = @seminar_signups %>
|
||||
<div style="float: left;width: 50%;" class="left_block">
|
||||
<h4><%= t("seminar.reviewer") %></h4>
|
||||
<% reviewer_show_ids = @seminar.reviewer_show_ids %>
|
||||
<% if reviewer_show_ids.nil?
|
||||
reviewer_show_ids = @seminar.reviewer_ids[0..1]
|
||||
@seminar.update(:reviewer_show_ids=>reviewer_show_ids)
|
||||
end
|
||||
%>
|
||||
<% count = 0 %>
|
||||
<% reviewer_show_ids.each do |reviewer_id| %>
|
||||
<% seminar_review = @seminar.seminar_reviews.where(:reviewer_id => reviewer_id.to_s).first %>
|
||||
<% next if seminar_review.nil? %>
|
||||
<% count += 1 %>
|
||||
<div class="reviewer_block" data-id="<%=seminar_review.id.to_s%>" data-count="<%=count%>">
|
||||
<h5><%= MemberProfile.find(reviewer_id).name rescue "" %></h5>
|
||||
<span class="zoom_out_btn">-</span>
|
||||
<% @seminar_signups = SeminarSignup.where(:id.in=>seminar_review.get_all_seminar_signup_ids).sort_ordered %>
|
||||
<% @seminar_signups = @seminar_signups.page(params["page_no#{count}"]).per(5) %>
|
||||
<% @seminar_signups = @seminar_signups.page(0) if @seminar_signups.to_a.count == 0 %>
|
||||
<%= render :partial => "seminar_signup_render_table",:locals=>{:@seminar_signups=>@seminar_signups,:@drag => true,:@include_blank=>true,:@reviewer_id=>seminar_review.id.to_s} %>
|
||||
<%
|
||||
pagination_html = content_tag :div, class: "bottomnav clearfix", style: "position: static;" do
|
||||
content_tag :div, paginate(@seminar_signups), class: "pagination pagination-centered"
|
||||
end
|
||||
%>
|
||||
<%= pagination_html.gsub(/page_no#{count}=\d*/,"").gsub('&&','&').gsub(/page=(\d*)/m){|ff| ff.gsub("page=#{$1}","page=#{params[:page]}&page_no#{count}=#{$1}")}.html_safe %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% if count != 2 && @seminar.seminar_reviews.count >= 2 %>
|
||||
<% (0...(2-count)).each do |i| %>
|
||||
<div class="blank_block reviewer_block">
|
||||
<i class="fa fa-plus-circle add_btn"></i>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</div>
|
||||
<% @seminar_signups = org_seminar_signups
|
||||
@include_blank = false
|
||||
@reviewer_id = nil
|
||||
%>
|
||||
<div style="float: right;width: 50%;" data-count="<%=count+=1%>">
|
||||
<div id="main-table" style="overflow: scroll;">
|
||||
<h5><%= t('seminar.submitter_without_reviewer') %></h5>
|
||||
<%= render :partial => "seminar_signup_render_table" %>
|
||||
</div>
|
||||
<%=
|
||||
content_tag :div, class: "bottomnav clearfix", style: "position: static;" do
|
||||
content_tag :div, paginate(@seminar_signups), class: "pagination pagination-centered"
|
||||
end
|
||||
%>
|
||||
</div>
|
||||
<% unless request.xhr? %>
|
||||
<div id='dialog-confirm' title="<%= t("seminar.select_reviewer") %>" style="display: none;">
|
||||
<div style="clear:both;"></div>
|
||||
<div id="info_texts">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottomnav clearfix">
|
||||
<div class="action pull-right">
|
||||
<%= link_to content_tag(:i, nil, :class => 'icon-cog icon-white') + t("seminar.field_display_setting"), seminar_signup_admin_setting_admin_seminar_path(params[:id]), :class => 'btn btn-primary' %>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
function add_obj(obj1,obj2){
|
||||
var keys = Object.keys(obj1);
|
||||
var obj = {};
|
||||
keys.forEach(function(k){
|
||||
obj[k] = obj1[k] + obj2[k];
|
||||
});
|
||||
return obj;
|
||||
}
|
||||
function generate_pagination(reviewer_id,index=1,start=1,end=1,active=1){
|
||||
var pagination = $('<div class="pagination pagination-centered">');
|
||||
pagination.append('<div class="pagination"><ul></ul></div>');
|
||||
var href = "<%=get_reviewer_block_admin_seminar_path(@seminar.id)%>?reviewer_id="+reviewer_id+"&page_no"+index+"=new_page_no";
|
||||
if(active != start){
|
||||
pagination.find("ul").append("<li class=\"first\"><a href=\""+href.replace('new_page_no',1)+"\">« First</a></li>");
|
||||
pagination.find("ul").append("<li class=\"prev\"><a href=\""+href.replace('new_page_no',active-1)+"\">‹ Prev</a></li>");
|
||||
}
|
||||
for(var i=start;i<end;i++){
|
||||
if(i == active){
|
||||
pagination.find("ul").append("<li class=\"page active\"><a href=\""+href.replace('new_page_no',i)+"\">"+i+"</a></li>");
|
||||
}else{
|
||||
pagination.find("ul").append("<li class=\"page\"><a href=\""+href.replace('new_page_no',i)+"\">"+i+"</a></li>");
|
||||
}
|
||||
}
|
||||
if(active != end && end != 1){
|
||||
pagination.find("ul").append("<li class=\"next\"><a href=\""+href.replace('new_page_no',active+1)+"\">Next ›</a></li>");
|
||||
pagination.find("ul").append("<li class=\"last\"><a href=\""+href.replace('new_page_no',end)+"\">Last »</a></li>");
|
||||
}
|
||||
return pagination.prop("outerHTML");
|
||||
}
|
||||
function adjust_height(){
|
||||
var bottom_offset = $(".bottomnav").eq(1).offset().top;
|
||||
var top_offset = [$('ul.pull-right').offset().top,$('h3.pull-left').offset().top];
|
||||
var top_height = [$('ul.pull-right').height(),$("h3.pull-left").height()];
|
||||
var top_all_offset_bottom = top_offset.map(function(d,i){return d+top_height[i]});
|
||||
top_all_offset_bottom = Math.max.apply(null, top_all_offset_bottom);
|
||||
var bottom_height = $(".bottomnav")[0].offsetHeight;
|
||||
var block_height;// = bottom_offset - top_all_offset_bottom - bottom_height - 100;
|
||||
block_height = $(window).height() - top_all_offset_bottom - bottom_height - 100;
|
||||
$("#main-table").height(block_height);
|
||||
$(".reviewer_block").height(block_height / 2);
|
||||
}
|
||||
function a_tag_xhr_request(ele){
|
||||
var href = $(ele).attr("href");
|
||||
var div_block = $(ele).parents(".bottomnav").parent();
|
||||
var index = div_block.data("count");
|
||||
$.get(href).done(function(data){
|
||||
var $d = $(data);
|
||||
div_block.html($d.find('[data-count='+index+']').html());
|
||||
$(".pagination a").attr("onclick","a_tag_xhr_request(this);return false;");
|
||||
adjust_height();
|
||||
window.history.pushState(data,null,href);
|
||||
})
|
||||
}
|
||||
function init_func(){
|
||||
adjust_height();
|
||||
$("tbody").each(function(i,v){
|
||||
if($(v).find("tr[data-id]").length != 0){
|
||||
$(v).find("tr.blank_tr").css("display","none");
|
||||
}
|
||||
})
|
||||
$(".zoom_out_btn").off("click").on("click",function(){
|
||||
var parent = $(this).parent();
|
||||
var id = parent.data("id");
|
||||
$.post("<%=admin_seminar_update_seminar_review_path%>",{id: id,mode: "hide"}).done(function(data){
|
||||
console.log(data);
|
||||
parent.css("display","none");
|
||||
parent.before('<div class="blank_block reviewer_block">'+
|
||||
'<i class="fa fa-plus-circle add_btn"></i>'+
|
||||
'</div>');
|
||||
init_func();
|
||||
})
|
||||
})
|
||||
$(".blank_block .add_btn").off("click").on("click",function(){
|
||||
var ele = $(this).parent();
|
||||
$.get("<%=get_hide_reviewer_admin_seminar_path(@seminar.id)%>").done(function(data){
|
||||
$("#info_texts").html(data);
|
||||
$( "#dialog-confirm" ).dialog({
|
||||
resizable: true,
|
||||
minHeight: 300,
|
||||
maxHeight: 400,
|
||||
modal: true,
|
||||
width: '80%',
|
||||
close: function(){$( this ).dialog( "close" );},
|
||||
open: function(){
|
||||
$(".selected_item").click(function(){
|
||||
var reviewer_id = $(this).data("id");
|
||||
$.get("<%=get_reviewer_block_admin_seminar_path(@seminar.id)%>",{reviewer_id: reviewer_id}).done(function(data){
|
||||
ele.prop("outerHTML",data);
|
||||
init_func();
|
||||
$( "#dialog-confirm" ).dialog( "close" );
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
$(".pagination a").attr("onclick","a_tag_xhr_request(this);return false;")
|
||||
$( ".table tbody" ).sortable({
|
||||
revert: true,
|
||||
handle: ".brand",
|
||||
connectWith: ".table tbody",
|
||||
start: function(event, ui){
|
||||
var target = $(event.target);
|
||||
if(target.find("tr[data-id]").length <= 1){
|
||||
target.find(".blank_tr").css("display","");
|
||||
}else{
|
||||
target.find(".blank_tr").css("display","none");
|
||||
}
|
||||
$(".reviewer_block").css("overflow","hidden");
|
||||
if($("#copy_mode_on:checked").length != 0){
|
||||
var clone_obj = ui.item.clone();
|
||||
clone_obj.attr("style","")
|
||||
ui.item.before(clone_obj)
|
||||
window.clone_obj = clone_obj;
|
||||
}else{
|
||||
window.clone_obj = undefined;
|
||||
}
|
||||
parent_left_block = ui.item.parents(".left_block");
|
||||
if(parent_left_block.length != 0){
|
||||
var parent_block = ui.item.parents(".reviewer_block");
|
||||
console.log(parent_left_block);
|
||||
parent_left_block.before(ui.item);
|
||||
window.parent_block = parent_block;
|
||||
ui.item.css("background","#ffffff");
|
||||
window.over_flag = false;
|
||||
}else{
|
||||
window.parent_block = undefined;
|
||||
}
|
||||
},
|
||||
sort: function(event, ui) {
|
||||
if(window.parent_block != undefined){
|
||||
var offset = ui.position;
|
||||
var parent_offset = window.parent_block.offset();
|
||||
if(!window.over_flag){
|
||||
offset = add_obj(ui.position,parent_offset);
|
||||
ui.item.offset(offset);
|
||||
}
|
||||
}
|
||||
},
|
||||
over: function( event, ui ) {
|
||||
if(window.parent_block != undefined && $(this).data("id") != window.parent_block.data("id")){
|
||||
window.over_flag = true;
|
||||
}
|
||||
},
|
||||
stop: function(event, ui){
|
||||
$(".reviewer_block").css("overflow","");
|
||||
ui.item.css("background","");
|
||||
},
|
||||
update: function(event, ui) {
|
||||
if(window.clone_obj != undefined){
|
||||
if(window.clone_obj.parent().data("id") == undefined){
|
||||
window.clone_obj.remove();
|
||||
}else if(window.clone_obj.parent().data("id") == ui.item.parent().data("id")){
|
||||
window.clone_obj.remove();
|
||||
}else if(ui.item.parent().data("id") == undefined){
|
||||
window.clone_obj.remove();
|
||||
}
|
||||
}
|
||||
var target = $(event.target);
|
||||
var mode = "";
|
||||
var id = target.data("id");
|
||||
var signup_id = ui.item.data("id");
|
||||
if(target.find("tr[data-id=\""+signup_id+"\"]").length != 0){
|
||||
mode = "append";
|
||||
if(target.find("tr[data-id=\""+signup_id+"\"]").length > 1){
|
||||
var target_signups= target.find("tr[data-id=\""+signup_id+"\"]");
|
||||
for(var i=1;i<target_signups.length;i++){
|
||||
target_signups.eq(i).remove();
|
||||
}
|
||||
}
|
||||
}else{
|
||||
mode = "remove";
|
||||
}
|
||||
if(target.find("tr").not(".blank_tr").length == 0){
|
||||
target.find(".blank_tr").css("display","");
|
||||
}else{
|
||||
target.find(".blank_tr").css("display","none");
|
||||
}
|
||||
if(id != undefined){
|
||||
$.post("<%=admin_seminar_update_seminar_review_path%>",{id: id,mode: mode,signup_id: signup_id}).done(function(data){
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
$(document).ready(function(){
|
||||
init_func();
|
||||
})
|
||||
$(window).resize(function(){
|
||||
adjust_height();
|
||||
})
|
||||
</script>
|
||||
<style type="text/css">
|
||||
.icons-list-2 {
|
||||
cursor: all-scroll;
|
||||
}
|
||||
.reviewer_block{
|
||||
overflow: scroll;
|
||||
border: 0.2em solid black;
|
||||
position: relative;
|
||||
}
|
||||
.zoom_out_btn{
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
background: #454545;
|
||||
color: #FFFFFF;
|
||||
font-size: 2em;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
.blank_block .add_btn {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
font-size: 3em;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
margin: -10px 0 0 -10px;
|
||||
display: inline-block;
|
||||
font-family: FontAwesome;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
line-height: 1;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
<% end %>
|
|
@ -0,0 +1,156 @@
|
|||
<table class="table main-list">
|
||||
<thead>
|
||||
<tr>
|
||||
<% render :partial => "get_display_fields" %>
|
||||
<% if @seminar.nil? %>
|
||||
<th><%= t('seminar.title') %></th>
|
||||
<% end %>
|
||||
<% if @drag%>
|
||||
<th></th>
|
||||
<% end %>
|
||||
<% @field_name_translations.each_with_index do |trans,i|%>
|
||||
<% next unless @display_field.include?(@field_names[i]) %>
|
||||
<th class="span2" id="<%=@field_names[i]%>"><%= trans %></th>
|
||||
<% end %>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="sort-holder" <%=@reviewer_id.nil? ? "" : "data-id=#{@reviewer_id}" %>>
|
||||
<% display_title = @seminar.nil? %>
|
||||
<% @seminar_signups.each do |seminar_signup| %>
|
||||
<% @seminar = seminar_signup.seminar_main if display_title %>
|
||||
<% len = seminar_signup.seminar_signup_contributes.count %>
|
||||
<% rowspan = "rowspan=#{len==0? 1 : len}" %>
|
||||
<% vals = [] %>
|
||||
<tr data-id="<%=seminar_signup.id.to_s%>">
|
||||
<% if @drag%>
|
||||
<td <%=rowspan%>><span class="brand"><i class="icons-list-2"></i></span></td>
|
||||
<% end %>
|
||||
<% vals << seminar_signup.seminar_main.title if display_title %>
|
||||
<% @display_field.each_with_index do |fn,i|%>
|
||||
<% names = fn.split(".") %>
|
||||
<% val = "" %>
|
||||
<% if names[0] == "seminar_signup_field_set" %>
|
||||
<% if names[1] == "name" %>
|
||||
<% val = seminar_signup.name
|
||||
val += "<div class=\"quick-edit\">
|
||||
<ul class=\"nav nav-pills\">"
|
||||
if can_edit_or_delete?(seminar_signup)
|
||||
val += "<li><a href=\"/admin/seminar_signups/#{seminar_signup.id}/edit\">#{t(:edit)}</a></li>
|
||||
<li><a href=\"#{admin_seminar_signup_path(seminar_signup.id)}\" class=\"delete text-error\" rel=\"nofollow\" data-method=\"delete\" data-confirm=\"Are you sure?\">#{t(:delete_)}</a></li>"
|
||||
end
|
||||
val += "</ul>
|
||||
</div>"
|
||||
%>
|
||||
<% elsif names[1] == 'status' %>
|
||||
<% val = t("seminar.registration_status_#{seminar_signup.status}") if !seminar_signup.status.blank? %>
|
||||
<% elsif names[1] != 'recaptcha' %>
|
||||
<% val = seminar_signup.send("#{names[1]}") %>
|
||||
<% end %>
|
||||
<% elsif names[0] == "default" %>
|
||||
<% if names[2] == "name" %>
|
||||
<% val = seminar_signup.name
|
||||
val += "<div class=\"quick-edit\">
|
||||
<ul class=\"nav nav-pills\">"
|
||||
if can_edit_or_delete?(seminar_signup)
|
||||
val += "<li><a href=\"/admin/seminar_signups/#{seminar_signup.id}/edit\">#{t(:edit)}</a></li>
|
||||
<li><a href=\"#{admin_seminar_signup_path(seminar_signup.id)}\" class=\"delete text-error\" rel=\"nofollow\" data-method=\"delete\" data-confirm=\"Are you sure?\">#{t(:delete_)}</a></li>"
|
||||
end
|
||||
val += "</ul>
|
||||
</div>"
|
||||
%>
|
||||
<% elsif names[2] == "tel" %>
|
||||
<% val = seminar_signup.tel %>
|
||||
<% elsif names[2] == "registration_status" %>
|
||||
<% val = t("seminar.registration_status_#{seminar_signup.status}") if !seminar_signup.status.blank? %>
|
||||
<% end %>
|
||||
<% elsif names[0] == "seminar_signup_field_custom" || names[0] == "seminar_signup_fields" %>
|
||||
<% val = seminar_signup.seminar_signup_values.where(:key=>names[1]).first.get_value_by_locale(I18n.locale) rescue "" %>
|
||||
<% elsif names[0] == "seminar_signup_contributes" %>
|
||||
<% if names[1] == "file" %>
|
||||
<% val = seminar_signup.seminar_signup_contributes.to_a %>
|
||||
<% else %>
|
||||
<% if names[1] == "description" %>
|
||||
<% descriptions = seminar_signup.seminar_signup_contributes.collect{|s| s.send(names[1])} %>
|
||||
<% if @seminar.enable_summary_choice
|
||||
descriptions = descriptions.map do |description|
|
||||
if (description.to_s.to_i.to_s == description)
|
||||
description = @seminar.summary_chioices[description.to_i] rescue description
|
||||
else
|
||||
description = description.map{|i| @seminar.summary_chioices[i.to_i] rescue "" }.join("<br>") rescue description
|
||||
end
|
||||
end
|
||||
end %>
|
||||
<% val = descriptions %>
|
||||
<% else %>
|
||||
<% val = seminar_signup.seminar_signup_contributes.collect{|s| s.send(names[1]).to_s} %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% elsif names[0] == "seminar_submission_fields" %>
|
||||
<% val = seminar_signup.seminar_signup_contributes.collect{|s| (s.seminar_submission_values.where(:key=>names[1]).first.get_value_by_locale(I18n.locale) rescue "")} %>
|
||||
<% elsif names[0] == "seminar_signup" %>
|
||||
<% val = (seminar_signup.send("display_"+names[1]) rescue seminar_signup.send(names[1])) rescue nil %>
|
||||
<% end %>
|
||||
<% vals << val %>
|
||||
<% end %>
|
||||
<% count = 0 %>
|
||||
<% indices = [] %>
|
||||
<% vals.each_with_index do |val,i| %>
|
||||
<% if val.class == Array %>
|
||||
<% count = val.count - 1 %>
|
||||
<% indices << i%>
|
||||
<td>
|
||||
<% if val[0].class == SeminarSignupContribute #File %>
|
||||
<% seminar_signup_contribute = val[0] %>
|
||||
<% description = seminar_signup_contribute.description.to_s %>
|
||||
<% if @seminar.enable_summary_choice
|
||||
if (seminar_signup_contribute.description.to_s.to_i.to_s == seminar_signup_contribute.description)
|
||||
description = @seminar.summary_chioices[seminar_signup_contribute.description.to_i] rescue seminar_signup_contribute.description
|
||||
else
|
||||
description = seminar_signup_contribute.description.map{|i| @seminar.summary_chioices[i.to_i] rescue "" }.join("<br>") rescue seminar_signup_contribute.description
|
||||
end
|
||||
end %>
|
||||
<%= link_to (seminar_signup_contribute.title.blank? ? File.basename(seminar_signup_contribute.file.path) : seminar_signup_contribute.title) , seminar_signup_contribute.file.url, {:target => '_blank', :title => Nokogiri::HTML(description.gsub("<br>"," , ")).text} if seminar_signup_contribute.file.file %>
|
||||
<% else %>
|
||||
<%= val[0].html_safe.to_s rescue "" %>
|
||||
<% end %>
|
||||
</td>
|
||||
<% else %>
|
||||
<td <%= rowspan %>><%= val.to_s.html_safe %></td>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% (0...count).each do |i|%>
|
||||
<tr>
|
||||
<% indices.each do |index| %>
|
||||
<td>
|
||||
<% if vals[index][i].class == SeminarSignupContribute #File %>
|
||||
<% seminar_signup_contribute = vals[index][i] %>
|
||||
<% description = seminar_signup_contribute.description.to_s %>
|
||||
<% if @seminar.enable_summary_choice
|
||||
if (seminar_signup_contribute.description.to_s.to_i.to_s == seminar_signup_contribute.description)
|
||||
description = @seminar.summary_chioices[seminar_signup_contribute.description.to_i] rescue seminar_signup_contribute.description
|
||||
else
|
||||
description = seminar_signup_contribute.description.map{|i| @seminar.summary_chioices[i.to_i] rescue "" }.join("<br>") rescue seminar_signup_contribute.description
|
||||
end
|
||||
end %>
|
||||
<%= link_to (seminar_signup_contribute.title.blank? ? File.basename(seminar_signup_contribute.file.path) : seminar_signup_contribute.title) , seminar_signup_contribute.file.url, {:target => '_blank', :title => Nokogiri::HTML(description.gsub("<br>"," , ")).text} if seminar_signup_contribute.file.file %>
|
||||
<% else %>
|
||||
<%= vals[index][i].html_safe.to_s rescue "" %>
|
||||
<% end %>
|
||||
</td>
|
||||
<% end %>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tr>
|
||||
<% end %>
|
||||
<% if @include_blank %>
|
||||
<tr class="blank_tr">
|
||||
<% if @drag %>
|
||||
<td rowspan="3"></td>
|
||||
<% end %>
|
||||
<% (0...@display_field.count).each do |f| %>
|
||||
<td rowspan="3"></td>
|
||||
<% end %>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
|
@ -0,0 +1,286 @@
|
|||
<h3 class="pull-left"><%= @seminar.title %></h3>
|
||||
<div style="clear: both;"></div>
|
||||
<% org_seminar_signups = @seminar_signups %>
|
||||
<% session_translation = (@seminar.seminar_submission_field_sets.select{|v| v.field_name=='description'}[0]['name'][I18n.locale] rescue "Session") %>
|
||||
<div style="float: left;width: 50%;" class="left_block">
|
||||
<h4><%= session_translation %></h4>
|
||||
<% session_show_ids = @seminar.session_show_ids %>
|
||||
<% if session_show_ids.nil?
|
||||
session_show_ids = (0...@seminar.summary_chioices.count).to_a[0..1]
|
||||
@seminar.update(:session_show_ids=>session_show_ids)
|
||||
end
|
||||
%>
|
||||
<% count = 0 %>
|
||||
<% session_show_ids.each do |session_id| %>
|
||||
<% next if session_id >= @seminar.summary_chioices.count %>
|
||||
<% count += 1 %>
|
||||
<div class="session_block" data-id="<%=session_id%>" data-count="<%=count%>">
|
||||
<h5><%= @seminar.summary_chioices[session_id] %></h5>
|
||||
<span class="zoom_out_btn">-</span>
|
||||
<% seminar_session = @seminar.seminar_sessions.where(:key=>session_id).first %>
|
||||
<% @seminar_signups = seminar_session.seminar_signups.sort_ordered %>
|
||||
<% @seminar_signups = @seminar_signups.page(params["page_no#{count}"]).per(5) %>
|
||||
<% @seminar_signups = @seminar_signups.page(0) if @seminar_signups.to_a.count == 0 %>
|
||||
<%= render :partial => "seminar_signup_render_table",:locals=>{:@seminar_signups=>@seminar_signups,:@drag => true,:@include_blank=>true,:@reviewer_id=>session_id} %>
|
||||
<%
|
||||
pagination_html = content_tag :div, class: "bottomnav clearfix", style: "position: static;" do
|
||||
content_tag :div, paginate(@seminar_signups), class: "pagination pagination-centered"
|
||||
end
|
||||
%>
|
||||
<%= pagination_html.gsub(/page_no#{count}=\d*/,"").gsub('&&','&').gsub(/page=(\d*)/m){|ff| ff.gsub("page=#{$1}","page=#{params[:page]}&page_no#{count}=#{$1}")}.html_safe %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% if count != 2 && @seminar.summary_chioices.count >= 2 %>
|
||||
<% (0...(2-count)).each do |i| %>
|
||||
<div class="blank_block session_block">
|
||||
<i class="fa fa-plus-circle add_btn"></i>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</div>
|
||||
<% @seminar_signups = org_seminar_signups
|
||||
@include_blank = false
|
||||
@reviewer_id = nil
|
||||
%>
|
||||
<div style="float: right;width: 50%;" data-count="<%=count+=1%>">
|
||||
<div id="main-table" style="overflow: scroll;">
|
||||
<h5><%= t('seminar.unassigned_session_signups',{:session=>session_translation}) %></h5>
|
||||
<%= render :partial => "seminar_signup_render_table" %>
|
||||
</div>
|
||||
<%=
|
||||
content_tag :div, class: "bottomnav clearfix", style: "position: static;" do
|
||||
content_tag :div, paginate(@seminar_signups), class: "pagination pagination-centered"
|
||||
end
|
||||
%>
|
||||
</div>
|
||||
<% unless request.xhr? %>
|
||||
<div id='dialog-confirm' title="<%= t("seminar.select_session",{:session=>session_translation}) %>" style="display: none;">
|
||||
<div style="clear:both;"></div>
|
||||
<div id="info_texts">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottomnav clearfix">
|
||||
<div class="action pull-right">
|
||||
<%= link_to content_tag(:i, nil, :class => 'icon-cog icon-white') + t("seminar.field_display_setting"), seminar_signup_admin_setting_admin_seminar_path(params[:id]) + "?page=session", :class => 'btn btn-primary' %>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
function add_obj(obj1,obj2){
|
||||
var keys = Object.keys(obj1);
|
||||
var obj = {};
|
||||
keys.forEach(function(k){
|
||||
obj[k] = obj1[k] + obj2[k];
|
||||
});
|
||||
return obj;
|
||||
}
|
||||
function sub_obj(obj1,obj2){
|
||||
var keys = Object.keys(obj1);
|
||||
var obj = {};
|
||||
keys.forEach(function(k){
|
||||
obj[k] = obj1[k] - obj2[k];
|
||||
});
|
||||
return obj;
|
||||
}
|
||||
function generate_pagination(session_id,index=1,start=1,end=1,active=1){
|
||||
var pagination = $('<div class="pagination pagination-centered">');
|
||||
pagination.append('<div class="pagination"><ul></ul></div>');
|
||||
var href = "<%=get_session_block_admin_seminar_path(@seminar.id)%>?session_id="+session_id+"&page_no"+index+"=new_page_no";
|
||||
if(active != start){
|
||||
pagination.find("ul").append("<li class=\"first\"><a href=\""+href.replace('new_page_no',1)+"\">« First</a></li>");
|
||||
pagination.find("ul").append("<li class=\"prev\"><a href=\""+href.replace('new_page_no',active-1)+"\">‹ Prev</a></li>");
|
||||
}
|
||||
for(var i=start;i<end;i++){
|
||||
if(i == active){
|
||||
pagination.find("ul").append("<li class=\"page active\"><a href=\""+href.replace('new_page_no',i)+"\">"+i+"</a></li>");
|
||||
}else{
|
||||
pagination.find("ul").append("<li class=\"page\"><a href=\""+href.replace('new_page_no',i)+"\">"+i+"</a></li>");
|
||||
}
|
||||
}
|
||||
if(active != end && end != 1){
|
||||
pagination.find("ul").append("<li class=\"next\"><a href=\""+href.replace('new_page_no',active+1)+"\">Next ›</a></li>");
|
||||
pagination.find("ul").append("<li class=\"last\"><a href=\""+href.replace('new_page_no',end)+"\">Last »</a></li>");
|
||||
}
|
||||
return pagination.prop("outerHTML");
|
||||
}
|
||||
function adjust_height(){
|
||||
var bottom_offset = $(".bottomnav").eq(1).offset().top;
|
||||
var top_offset = [$('ul.pull-right').offset().top,$('h3.pull-left').offset().top];
|
||||
var top_height = [$('ul.pull-right').height(),$("h3.pull-left").height()];
|
||||
var top_all_offset_bottom = top_offset.map(function(d,i){return d+top_height[i]});
|
||||
top_all_offset_bottom = Math.max.apply(null, top_all_offset_bottom);
|
||||
var bottom_height = $(".bottomnav")[0].offsetHeight;
|
||||
var block_height;// = bottom_offset - top_all_offset_bottom - bottom_height - 100;
|
||||
block_height = $(window).height() - top_all_offset_bottom - bottom_height - 100;
|
||||
$("#main-table").height(block_height);
|
||||
$(".session_block").height(block_height / 2);
|
||||
}
|
||||
function a_tag_xhr_request(ele){
|
||||
var href = $(ele).attr("href");
|
||||
var div_block = $(ele).parents(".bottomnav").parent();
|
||||
var index = div_block.data("count");
|
||||
$.get(href).done(function(data){
|
||||
var $d = $(data);
|
||||
div_block.html($d.find('[data-count='+index+']').html());
|
||||
$(".pagination a").attr("onclick","a_tag_xhr_request(this);return false;");
|
||||
adjust_height();
|
||||
window.history.pushState(data,null,href);
|
||||
})
|
||||
}
|
||||
function init_func(){
|
||||
adjust_height();
|
||||
$("tbody").each(function(i,v){
|
||||
if($(v).find("tr[data-id]").length != 0){
|
||||
$(v).find("tr.blank_tr").css("display","none");
|
||||
}
|
||||
})
|
||||
$(".zoom_out_btn").off("click").on("click",function(){
|
||||
var parent = $(this).parent();
|
||||
var session_id = parent.data("id");
|
||||
$.post("<%=update_seminar_session_admin_seminar_path(params[:id])%>",{session_id: session_id,mode: "hide"}).done(function(data){
|
||||
console.log(data);
|
||||
parent.css("display","none");
|
||||
parent.before('<div class="blank_block session_block">'+
|
||||
'<i class="fa fa-plus-circle add_btn"></i>'+
|
||||
'</div>');
|
||||
init_func();
|
||||
})
|
||||
})
|
||||
$(".blank_block .add_btn").off("click").on("click",function(){
|
||||
var ele = $(this).parent();
|
||||
$.get("<%=get_hide_session_admin_seminar_path(@seminar.id)%>").done(function(data){
|
||||
$("#info_texts").html(data);
|
||||
$( "#dialog-confirm" ).dialog({
|
||||
resizable: true,
|
||||
minHeight: 300,
|
||||
maxHeight: 400,
|
||||
modal: true,
|
||||
width: '80%',
|
||||
close: function(){$( this ).dialog( "close" );},
|
||||
open: function(){
|
||||
$(".selected_item").click(function(){
|
||||
var session_id = $(this).data("id");
|
||||
$.get("<%=get_session_block_admin_seminar_path(params[:id])%>",{session_id: session_id,type: "<%=params[:type]%>"}).done(function(data){
|
||||
ele.prop("outerHTML",data);
|
||||
init_func();
|
||||
$( "#dialog-confirm" ).dialog( "close" );
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
$(".pagination a").attr("onclick","a_tag_xhr_request(this);return false;")
|
||||
$( ".table tbody" ).sortable({
|
||||
revert: true,
|
||||
handle: ".brand",
|
||||
connectWith: ".table tbody",
|
||||
start: function(event, ui){
|
||||
var target = $(event.target);
|
||||
if(target.find("tr[data-id]").length <= 1){
|
||||
target.find(".blank_tr").css("display","");
|
||||
}else{
|
||||
target.find(".blank_tr").css("display","none");
|
||||
}
|
||||
$(".session_block").css("overflow","hidden");
|
||||
parent_left_block = ui.item.parents(".left_block");
|
||||
if(parent_left_block.length != 0){
|
||||
var parent_block = ui.item.parents(".session_block");
|
||||
parent_left_block.before(ui.item);
|
||||
window.parent_block = parent_block;
|
||||
ui.item.css("background","#ffffff");
|
||||
window.over_flag = false;
|
||||
}else{
|
||||
window.parent_block = undefined;
|
||||
}
|
||||
},
|
||||
sort: function(event, ui) {
|
||||
if(window.parent_block != undefined){
|
||||
var offset = ui.position;
|
||||
var parent_offset = window.parent_block.offset();
|
||||
if(!window.over_flag){
|
||||
offset = add_obj(ui.position,parent_offset);
|
||||
ui.item.offset(offset);
|
||||
}
|
||||
}
|
||||
},
|
||||
over: function( event, ui ) {
|
||||
if(window.parent_block != undefined && $(this).data("id") != window.parent_block.data("id")){
|
||||
window.over_flag = true;
|
||||
}
|
||||
},
|
||||
stop: function(event, ui){
|
||||
$(".session_block").css("overflow","");
|
||||
ui.item.css("background","");
|
||||
console.log("stop")
|
||||
},
|
||||
update: function(event, ui) {
|
||||
var target = $(event.target);
|
||||
var mode = "";
|
||||
var session_id = target.data("id");
|
||||
var signup_id = ui.item.data("id");
|
||||
if(ui.item.parent().data("id") == session_id){
|
||||
mode = "append";
|
||||
}else{
|
||||
mode = "remove";
|
||||
}
|
||||
if(target.find("tr").not(".blank_tr").length == 0){
|
||||
target.find(".blank_tr").css("display","");
|
||||
}else{
|
||||
target.find(".blank_tr").css("display","none");
|
||||
}
|
||||
if(session_id != undefined){
|
||||
$.post("<%=update_seminar_session_admin_seminar_path(params[:id])%>",{session_id: session_id,mode: mode,signup_id: signup_id}).done(function(data){
|
||||
console.log(data);
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
$(document).ready(function(){
|
||||
init_func();
|
||||
})
|
||||
$(window).resize(function(){
|
||||
adjust_height();
|
||||
})
|
||||
</script>
|
||||
<style type="text/css">
|
||||
.icons-list-2 {
|
||||
cursor: all-scroll;
|
||||
}
|
||||
.session_block{
|
||||
overflow: scroll;
|
||||
border: 0.2em solid black;
|
||||
position: relative;
|
||||
}
|
||||
.zoom_out_btn{
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
background: #454545;
|
||||
color: #FFFFFF;
|
||||
font-size: 2em;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
.blank_block .add_btn {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
font-size: 3em;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
margin: -10px 0 0 -10px;
|
||||
display: inline-block;
|
||||
font-family: FontAwesome;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
line-height: 1;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
<% end %>
|
|
@ -0,0 +1,22 @@
|
|||
<form id="module-search-form">
|
||||
<div class="sc-field">
|
||||
<input name="type" value="<%=params[:type]%>" type="hidden">
|
||||
<input id="filter-input" class="search-query input-medium" type="text" name="search" value="<%= params[:search] %>" placeholder="搜尋">
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
<h4><%= @seminar.title %></h4>
|
||||
|
||||
<%= render :partial => "seminar_signup_render_table" %>
|
||||
|
||||
<div class="bottomnav clearfix">
|
||||
<div class="pagination pagination-centered"><%= (paginate(@seminar_signups) rescue nil) %></div>
|
||||
<% if @can_edit %>
|
||||
<div class="action pull-right">
|
||||
<%= link_to content_tag(:i, nil, :class => 'icon-cog icon-white') + t("seminar.field_display_setting"), seminar_signup_admin_setting_admin_seminar_path(params[:id]) + "?page=table", :class => 'btn btn-primary' %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<%= render 'layouts/delete_modal', delete_options: @delete_options %>
|
|
@ -0,0 +1,6 @@
|
|||
<%= form_for @seminar, url: admin_seminars_path, html: {class: "form-horizontal main-forms"} do |f| %>
|
||||
<fieldset>
|
||||
<%= f.hidden_field :copy_id %>
|
||||
<%= render :partial => 'form', locals: {f: f} %>
|
||||
</fieldset>
|
||||
<% end %>
|
|
@ -0,0 +1,33 @@
|
|||
<% content_for :page_specific_css do %>
|
||||
<%= stylesheet_link_tag "lib/main-forms" %>
|
||||
<%= stylesheet_link_tag "lib/fileupload" %>
|
||||
<%= stylesheet_link_tag "lib/main-list" %>
|
||||
<% end %>
|
||||
<% content_for :page_specific_javascript do %>
|
||||
<%= javascript_include_tag "lib/bootstrap-fileupload" %>
|
||||
<%= javascript_include_tag "lib/bootstrap-datetimepicker" %>
|
||||
<%= javascript_include_tag "lib/datetimepicker/datetimepicker.js" %>
|
||||
<%= javascript_include_tag "lib/file-type" %>
|
||||
<%= javascript_include_tag "lib/module-area" %>
|
||||
<% end %>
|
||||
<fieldset>
|
||||
<legend>查詢報名人</legend>
|
||||
<form method="get" id="searchform" class="form-horizontal">
|
||||
<div class="control-group">
|
||||
<label for="name" class="control-label">報名人姓名</label>
|
||||
<div class="controls">
|
||||
<input name="name" type="text" id="name" value="<%=params[:name]%>" size="30">
|
||||
<input type="submit" id="searchsubmit" value="<%=t(:search_)%>">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</fieldset>
|
||||
<%= render :partial => "seminar_signup_render_table" %>
|
||||
<% if @can_edit %>
|
||||
<div class="bottomnav clearfix">
|
||||
<div class="pagination pagination-centered"><%= (paginate(@seminar_signups) rescue nil) %></div>
|
||||
<div class="action pull-right">
|
||||
<%= link_to content_tag(:i, nil, :class => 'icon-cog icon-white') + t("seminar.field_display_setting"), seminar_signup_admin_setting_admin_seminar_path("enquiry_for_applicants"), :class => 'btn btn-primary' %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
|
@ -6,6 +6,8 @@ wb.add_worksheet(name: (@seminar.title.to_s[0..27]+'...')) do |sheet|
|
|||
|
||||
row = [t('seminar_signup.signup_time')]
|
||||
|
||||
row << t('seminar_signup.serial_number')
|
||||
|
||||
row << t('seminar_signup.name')
|
||||
|
||||
row << t('seminar_signup.unit')
|
||||
|
@ -34,11 +36,13 @@ wb.add_worksheet(name: (@seminar.title.to_s[0..27]+'...')) do |sheet|
|
|||
|
||||
sheet.add_row row
|
||||
|
||||
@seminar.seminar_signups.each do |signup|
|
||||
|
||||
@seminar_signups.each do |signup|
|
||||
types = {}
|
||||
row2 = []
|
||||
|
||||
row2 << "#{signup.created_at} "
|
||||
types[1] = :string
|
||||
row2 << "#{signup.display_serial_number}"
|
||||
row2 << "#{signup[:name]} "
|
||||
row2 << "#{signup.unit} "
|
||||
row2 << "#{signup[:tel]} "
|
||||
|
@ -57,8 +61,8 @@ wb.add_worksheet(name: (@seminar.title.to_s[0..27]+'...')) do |sheet|
|
|||
row2 << nl2br(show_attribute_value(@seminar.get_attribute_value(rf,signup.id).get_value_by_locale(I18n.locale))) rescue ' '
|
||||
end
|
||||
end
|
||||
|
||||
sheet.add_row row2
|
||||
types = (0...row2.count).map{|i| types[i]}
|
||||
sheet.add_row row2 , :types => types
|
||||
end
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
<ul class="checkbox-card">
|
||||
<% @hide_reviewers.each do |member|%>
|
||||
<% reviewer = @reviewers.select{|r| r.reviewer_id == member.id.to_s}.first %>
|
||||
<% member_name = member.name %>
|
||||
<% member_id = member.id.to_s %>
|
||||
<% member_pic_url = ((member.avatar.file.present? rescue false) ? member.avatar.url : "/assets/member-pic.png") %>
|
||||
<li class="filter-item selected_item selected_member check-item" data-id="<%=member_id%>" style="margin: 0 10px 10px 0;">
|
||||
<label style="height: 100%;padding: 0;max-width: 20%;">
|
||||
<img style="max-height: 100%;" alt="Member pic" class="member-pic" src="<%=member_pic_url%>">
|
||||
<span class="user-name" style="float: right;width: 95px;padding-top: 8px;font-size: 1em;position: absolute;padding-left: 0.5em;"><%=member_name%><span class="badge badge-info"><%= reviewer.get_all_seminar_signup_ids.count %></span></span>
|
||||
</label>
|
||||
<input name="member_ids[]" type="hidden" value="<%=member_id%>">
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
<style type="text/css">
|
||||
.checkbox-card li:hover label span, .checkbox-card li:hover label span.user-name{
|
||||
color: #363636;
|
||||
}
|
||||
.checkbox-card li:hover{
|
||||
background-color: #cccccc;
|
||||
}
|
||||
.selected_item{
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,34 @@
|
|||
<ul class="checkbox-card">
|
||||
<% @hide_sessions.each do |i,session|%>
|
||||
<% seminar_session = @seminar_sessions.where(:key=>i).first %>
|
||||
<li class="filter-item selected_item selected_member check-item" data-id="<%=i%>" style="margin: 0 10px 10px 0;">
|
||||
<label style="height: 100%;padding: 0;max-width: 100%;position: relative;">
|
||||
<div class="session-name"><%=session%><span class="badge badge-info"><%= seminar_session.seminar_signup_ids.count %></span></div>
|
||||
</label>
|
||||
<input name="session_ids[]" type="hidden" value="<%=i%>">
|
||||
</li>
|
||||
<div style="clear: both;"></div>
|
||||
<% end %>
|
||||
</ul>
|
||||
<style type="text/css">
|
||||
.checkbox-card li:hover label span, .checkbox-card li:hover label span.user-name{
|
||||
color: #363636;
|
||||
}
|
||||
.checkbox-card li:hover{
|
||||
background-color: #cccccc;
|
||||
}
|
||||
.selected_item{
|
||||
cursor: pointer;
|
||||
}
|
||||
.session-name{
|
||||
float: right;
|
||||
width: 100%;
|
||||
padding-top: 0.5em;
|
||||
font-size: 1em;
|
||||
padding-left: 0.5em;
|
||||
background: #bdb9b9;
|
||||
}
|
||||
.session-name:hover{
|
||||
background: #9a9898;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,14 @@
|
|||
<% seminar_review = @seminar.seminar_reviews.where(:reviewer_id => @reviewer_id.to_s).first %>
|
||||
<% unless seminar_review.nil? %>
|
||||
<div class="reviewer_block" data-id="<%=seminar_review.id.to_s%>">
|
||||
<h5><%= MemberProfile.find(@reviewer_id).name rescue "" %></h5>
|
||||
<span class="zoom_out_btn">-</span>
|
||||
<% @seminar_signups = SeminarSignup.where(:id.in=>seminar_review.get_all_seminar_signup_ids).sort_ordered %>
|
||||
<%= render :partial => "seminar_signup_render_table",:locals=>{:@seminar_signups=>@seminar_signups.page(params[:page]).per(5),:@drag => true,:@include_blank=>true,:@reviewer_id=>seminar_review.id.to_s} %>
|
||||
<%=
|
||||
content_tag :div, class: "bottomnav clearfix", style: "position: static;" do
|
||||
content_tag :div, paginate(@seminar_signups), class: "pagination pagination-centered"
|
||||
end
|
||||
%>
|
||||
</div>
|
||||
<% end %>
|
|
@ -0,0 +1,13 @@
|
|||
<% if @session_id < @seminar.summary_chioices.count %>
|
||||
<div class="session_block" data-id="<%=@session_id%>">
|
||||
<h5><%= @seminar.summary_chioices[@session_id] %></h5>
|
||||
<span class="zoom_out_btn">-</span>
|
||||
<% @seminar_signups = @seminar.seminar_signups.where(:final_session=>@session_id).sort_ordered %>
|
||||
<%= render :partial => "seminar_signup_render_table",:locals=>{:@seminar_signups=>@seminar_signups.page(params[:page]).per(5),:@drag => true,:@include_blank=>true} %>
|
||||
<%=
|
||||
content_tag :div, class: "bottomnav clearfix", style: "position: static;" do
|
||||
content_tag :div, paginate(@seminar_signups), class: "pagination pagination-centered"
|
||||
end
|
||||
%>
|
||||
</div>
|
||||
<% end %>
|
|
@ -0,0 +1,99 @@
|
|||
<% select_keys = [] %>
|
||||
<% fields_values = @fields_values.map{|i,fields_values|
|
||||
"<div class=\"fields_value_block\">" + fields_values.map.with_index{|v,ii| "<label class=\"checkbox-inline\">" + check_box_tag("seminar_main[seminar_reviews_attributes][new_index][default_topics_values][new_value_index][]",ii,false,{:id=>nil}) + "#{v}</label>" }.join("") +
|
||||
"</div>"
|
||||
} %>
|
||||
<%= form_for @seminar, url: update_reviewer_setting_admin_seminar_path(@seminar.id), html: {class: "form-horizontal main-forms"} do |f| %>
|
||||
<fieldset>
|
||||
<% count = 0 %>
|
||||
<% @seminar_reviews.each_with_index do |seminar_review,i| %>
|
||||
<% next if seminar_review.review.nil? %>
|
||||
<%= f.fields_for :seminar_reviews,seminar_review do |f| %>
|
||||
<h4><%= seminar_review.review.name rescue "" %></h4>
|
||||
<div class="control-group">
|
||||
<label class="control-label muted"><%= t('seminar.assign_fields') %></label>
|
||||
<div class="controls">
|
||||
<% seminar_review.default_topics.each_with_index do |v,ii| %>
|
||||
<div class="border-block">
|
||||
<span class="remove_btn">X</span>
|
||||
<%= select_tag("seminar_main[seminar_reviews_attributes][#{count}][default_topics][]" , options_for_select(@fields_translations.zip(@fields),v),{:class=>"select_field_types","data-index"=>count}) %>
|
||||
<% select_index = @fields.index(v) %>
|
||||
<% checked_values = seminar_review.default_topics_values[ii] %>
|
||||
<div class="fields_value_block">
|
||||
<% @fields_values[select_index].each_with_index do |v,iii| %>
|
||||
<% checked = checked_values.include?(iii.to_s) rescue false %>
|
||||
<label class="checkbox-inline">
|
||||
<%= check_box_tag("seminar_main[seminar_reviews_attributes][#{count}][default_topics_values][#{ii}][]",iii,checked,{:id=>nil}) + v %>
|
||||
</label>
|
||||
<% end if select_index.present? %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
<% select_keys << select_tag("seminar_main[seminar_reviews_attributes][#{count}][default_topics][]" , options_for_select(@fields_translations.zip(@fields)),{:class=>"select_field_types","data-index"=>count}) %>
|
||||
<button class="btn btn-primary add_assign_fields" type="button" data-index=<%=count%>><%=t('seminar.add_assign_fields')%></button>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
<% count += 1 %>
|
||||
<% end %>
|
||||
<div class="form-actions">
|
||||
<%= f.submit t('submit'), class: 'btn btn-primary' %>
|
||||
<input type="hidden" name="referer_url" value="<%= get_referer_url %>">
|
||||
<%= link_to t('cancel'), admin_seminars_path, :class=>"btn" %>
|
||||
</div>
|
||||
</fieldset>
|
||||
<% end %>
|
||||
<script type="text/javascript">
|
||||
function init_reviews(){
|
||||
$(".select_field_types").off("change").on("change",function(){
|
||||
var selectedIndex = $(this).prop("selectedIndex");
|
||||
var index = $(this).data("index");
|
||||
var length = $(this).parent().parent().find(".border-block").length - 1;
|
||||
$(this).siblings(".fields_value_block").html(fields_values[selectedIndex].replaceAll("new_index",index).replaceAll("new_value_index",length))
|
||||
})
|
||||
$(".remove_btn").off("click").on("click",function(){
|
||||
if(window.confirm("<%=t('seminar.are_you_want_to_remove')%>"))
|
||||
$(this).parent().remove();
|
||||
})
|
||||
}
|
||||
$(document).ready(function(){
|
||||
select_keys = <%= select_keys.to_s.html_safe %>;
|
||||
fields_values = <%= fields_values.to_s.html_safe %>;
|
||||
$(".add_assign_fields").click(function(){
|
||||
var index = $(this).data("index");
|
||||
var div_block = $("<div class=\"border-block\"><span class=\"remove_btn\">X</span></div>");
|
||||
div_block.append(select_keys[index]);
|
||||
var length = $(this).siblings(".border-block").length;
|
||||
div_block.append(fields_values[0].replaceAll("new_index",index).replaceAll("new_value_index",length));
|
||||
$(this).before(div_block);
|
||||
init_reviews();
|
||||
})
|
||||
init_reviews();
|
||||
})
|
||||
</script>
|
||||
<style type="text/css">
|
||||
.checkbox-inline{
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
padding-top: 0.4375em;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
padding-left: 1.25em;
|
||||
}
|
||||
.border-block{
|
||||
position: relative;
|
||||
border: 0.2em solid;
|
||||
padding: 1.3em 0 1.3em 1.3em;
|
||||
}
|
||||
.remove_btn{
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
color: red;
|
||||
background-color: #333333;
|
||||
width: 1.3em;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
|
@ -1,215 +1,32 @@
|
|||
|
||||
<span id="index_table">
|
||||
<span id="index_table" style="display: inline-block;">
|
||||
<script>
|
||||
if(document.querySelectorAll("#orbit-bar").length==0) location.reload();
|
||||
</script>
|
||||
|
||||
|
||||
<form id="module-search-form">
|
||||
<div class="sc-field">
|
||||
<input id="filter-input" class="search-query input-medium" type="text" name="search" value="<%= params[:search] %>" placeholder="搜尋">
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
<h4><%= @seminar.title %></h4>
|
||||
|
||||
<table class="table main-list">
|
||||
<thead>
|
||||
<tr class="sort-header">
|
||||
<% if @seminar.seminar_signup_field_sets.count != 0 %>
|
||||
<% @seminar.seminar_signup_field_sets.each do |field_set| %>
|
||||
<% if !(field_set.hidden) %>
|
||||
<th class='span2'><%= field_set.name[I18n.locale] %></th>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<th class='span2'><%= t('seminar_signup.name')%></th>
|
||||
<th class='span2'><%= t('seminar_signup.tel')%></th>
|
||||
<th class='span2'><%= t('seminar.registration_status')%></th>
|
||||
<% end %>
|
||||
<% if @seminar.seminar_signup_field_customs.count != 0 %>
|
||||
<% @seminar.seminar_signup_field_customs.each do |field_set| %>
|
||||
<% if !(field_set.hidden) %>
|
||||
<th class='span2'><%= SeminarSignupField.where(id:field_set.seminar_signup_field_id).first.title rescue '' %></th>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% if @seminar.seminar_submission_field_sets.count != 0 %>
|
||||
<% show1 = !(@seminar.seminar_submission_field_sets.select{|v| v.field_name=='title'}[0].hidden)
|
||||
show2 = !(@seminar.seminar_submission_field_sets.select{|v| v.field_name=='file'}[0].hidden)
|
||||
show3 = !(@seminar.seminar_submission_field_sets.select{|v| v.field_name=='description'}[0].hidden)
|
||||
%>
|
||||
<% else %>
|
||||
<% show1 = true
|
||||
show2 = true
|
||||
show3 = true
|
||||
%>
|
||||
<% end %>
|
||||
<% if show1 %>
|
||||
<th class='span2'><%= t('seminar_signup.title')%></th>
|
||||
<% end %>
|
||||
<% if show2 %>
|
||||
<th class='span2'><%= t('seminar_signup.file')%></th>
|
||||
<% end %>
|
||||
<% if show3 %>
|
||||
<th class='span2'><%= t('seminar_signup.description')%></th>
|
||||
<% end %>
|
||||
<% @seminar.seminar_submission_fields.asc(:_id).each do |submission_field| %>
|
||||
<th class='span2'><%= submission_field.title %></th>
|
||||
<% end %>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% @seminar_signups.each do |seminar_signup| %>
|
||||
<% len = seminar_signup.seminar_signup_contributes.count %>
|
||||
<tr>
|
||||
<% if @seminar.seminar_signup_field_sets.count != 0 %>
|
||||
<% @seminar.seminar_signup_field_sets.each do |field_set| %>
|
||||
<% if !(field_set.hidden) %>
|
||||
<td rowspan="<%= len==0? 1 : len %>">
|
||||
<% if field_set.field_name== 'name' %>
|
||||
<%= seminar_signup.name %>
|
||||
<div class="quick-edit">
|
||||
<ul class="nav nav-pills">
|
||||
<% if can_edit_or_delete?(seminar_signup) %>
|
||||
<li><a href="/admin/seminar_signups/<%=seminar_signup.id.to_s%>/edit"><%= t(:edit) %></a></li>
|
||||
<li><a href="#" class="delete text-error" rel="/admin/seminar_signups/<%=seminar_signup.id.to_s%>"><%= t(:delete_) %></a></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
<% elsif field_set.field_name== 'status' %>
|
||||
<%= t("seminar.registration_status_#{seminar_signup.status}") if !seminar_signup.status.blank? %>
|
||||
<% elsif field_set.field_name != 'recaptcha' %>
|
||||
<%= seminar_signup.send("#{field_set.field_name}") %>
|
||||
<% end %>
|
||||
</td>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<td rowspan="<%= len==0? 1 : len %>">
|
||||
<%= seminar_signup.name %>
|
||||
<div class="quick-edit">
|
||||
<ul class="nav nav-pills">
|
||||
<% if can_edit_or_delete?(seminar_signup) %>
|
||||
<li><a href="/admin/seminar_signups/<%=seminar_signup.id.to_s%>/edit"><%= t(:edit) %></a></li>
|
||||
<li><a href="#" class="delete text-error" rel="/admin/seminar_signups/<%=seminar_signup.id.to_s%>"><%= t(:delete_) %></a></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="<%= len==0? 1 : len %>"><%= seminar_signup.tel %></td>
|
||||
<td rowspan="<%= len==0? 1 : len %>"><%= t("seminar.registration_status_#{seminar_signup.status}") if !seminar_signup.status.blank? %>
|
||||
</td>
|
||||
<% end %>
|
||||
<% if @seminar.seminar_signup_field_customs.count != 0 %>
|
||||
<% @seminar.seminar_signup_field_customs.each do |field_set| %>
|
||||
<% if !(field_set.hidden) %>
|
||||
<td rowspan="<%= len==0? 1 : len %>">
|
||||
<% seminar_signup.seminar_signup_values.each do |seminar_signup_values| %>
|
||||
<% if seminar_signup_values.seminar_signup_field_id == field_set.seminar_signup_field_id %>
|
||||
<% if seminar_signup_values.value.class == String || seminar_signup_values.value.nil? %>
|
||||
<%= seminar_signup_values.get_value_by_locale(I18n.locale,seminar_signup_values) %>
|
||||
<% else %>
|
||||
<% seminar_signup_values.value.each do |key,v| %>
|
||||
<%= "#{I18n.t(key)}:#{seminar_signup_values.get_value_by_locale(key,seminar_signup_values)}" %>
|
||||
<br>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</td>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% count_set = 0 %>
|
||||
<% if @seminar.seminar_submission_field_sets.count != 0 %>
|
||||
<% show1 = !(@seminar.seminar_submission_field_sets.select{|v| v.field_name=='title'}[0].hidden)
|
||||
show2 = !(@seminar.seminar_submission_field_sets.select{|v| v.field_name=='file'}[0].hidden)
|
||||
show3 = !(@seminar.seminar_submission_field_sets.select{|v| v.field_name=='description'}[0].hidden)
|
||||
%>
|
||||
<% @seminar.seminar_submission_field_sets.each do |field_set| %>
|
||||
<% if !(field_set.hidden) %>
|
||||
<% count_set+=1 %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<% show1 = true
|
||||
show2 = true
|
||||
show3 = true
|
||||
%>
|
||||
<% count_set = 2 %>
|
||||
<% end %>
|
||||
<% if len==0 %>
|
||||
<%
|
||||
count_field = @seminar.seminar_submission_fields.count
|
||||
%>
|
||||
<ul>
|
||||
<% for i in 1..count_field+count_set %>
|
||||
<td rowspan="1">
|
||||
</td>
|
||||
<% end %>
|
||||
</ul>
|
||||
</tr>
|
||||
<% end %>
|
||||
<ul>
|
||||
<% seminar_signup.seminar_signup_contributes.collect do |seminar_signup_contribute| %>
|
||||
<% if show1 %>
|
||||
<td>
|
||||
<li><%= seminar_signup_contribute.title.to_s %></li>
|
||||
</td>
|
||||
<% end %>
|
||||
<% if show2 %>
|
||||
<td>
|
||||
<li>
|
||||
<%= link_to (seminar_signup_contribute.title.blank? ? File.basename(seminar_signup_contribute.file.path) : seminar_signup_contribute.title) , seminar_signup_contribute.file.url, {:target => '_blank', :title => Nokogiri::HTML(seminar_signup_contribute.description).text} if seminar_signup_contribute.file.file %>
|
||||
</li>
|
||||
</td>
|
||||
<% end %>
|
||||
<% if show3 %>
|
||||
<td>
|
||||
<li><%= seminar_signup_contribute.description.to_s.html_safe %></li>
|
||||
</td>
|
||||
<% end %>
|
||||
<%
|
||||
count_value = seminar_signup_contribute.seminar_submission_values.count
|
||||
count_field = @seminar.seminar_submission_fields.count
|
||||
%>
|
||||
<% if count_value == count_field %>
|
||||
<% seminar_signup_contribute.seminar_submission_values.asc(:seminar_submission_field_id).each do |value| %>
|
||||
<td>
|
||||
<span style="display: list-item;">
|
||||
<% if value.value.class == String || value.value.nil? %>
|
||||
<%= value.get_value_by_locale(I18n.locale,value) %>
|
||||
<% else %>
|
||||
<% value.value.each do |key,v| %>
|
||||
<%= "#{I18n.t(key)}:#{value.get_value_by_locale(key,value)}" %>
|
||||
<br>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</span>
|
||||
</td>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<% for i in 1..(count_field-count_value) %>
|
||||
<td>
|
||||
</td>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</tr>
|
||||
<tr>
|
||||
<% end %>
|
||||
</ul>
|
||||
</tr>
|
||||
<% if @can_edit %>
|
||||
<% if params[:type].blank?%>
|
||||
<label><input id="copy_mode_on" type="checkbox"><%=t("seminar.copy_mode_on")%></label>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<%=
|
||||
content_tag :div, class: "bottomnav clearfix" do
|
||||
content_tag :div, paginate(@seminar_signups), class: "pagination pagination-centered"
|
||||
end
|
||||
%>
|
||||
</span>
|
||||
|
||||
<%= render 'layouts/delete_modal', delete_options: @delete_options %>
|
||||
<ul class="pull-right">
|
||||
<li><a href="?type=" class="btn <%='active' if params[:type].blank? %>"><%= t('seminar.dashboard') %></a></li>
|
||||
<% if @seminar.enable_summary_choice %>
|
||||
<li><a href="?type=session" class="btn <%='active' if params[:type] == 'session'%>"><%= t('seminar.session_dashboard') %></a></li>
|
||||
<% end %>
|
||||
<li><a href="?type=table" class="btn <%='active' if params[:type] == 'table'%>"><%= t('seminar.table') %></a></li>
|
||||
</ul>
|
||||
<% end %>
|
||||
<% if params[:type] == "table" || (!@can_edit) %>
|
||||
<div style="clear: both;"></div>
|
||||
<%= render :partial => 'seminar_signup_table' %>
|
||||
<% elsif params[:type] == "session" %>
|
||||
<%=render :partial => 'seminar_signup_session_dashboard' %>
|
||||
<% else %>
|
||||
<%= render :partial => 'seminar_signup_dashboard' %>
|
||||
<% end %>
|
||||
<style type="text/css">
|
||||
.pull-right li{
|
||||
float: left;
|
||||
}
|
||||
li{
|
||||
list-style: none;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
<% content_for :page_specific_css do %>
|
||||
<%= stylesheet_link_tag "lib/main-forms" %>
|
||||
<%= stylesheet_link_tag "lib/fileupload" %>
|
||||
<%= stylesheet_link_tag "lib/main-list" %>
|
||||
<% end %>
|
||||
<% content_for :page_specific_javascript do %>
|
||||
<%= javascript_include_tag "lib/bootstrap-fileupload" %>
|
||||
<%= javascript_include_tag "lib/bootstrap-datetimepicker" %>
|
||||
<%= javascript_include_tag "lib/datetimepicker/datetimepicker.js" %>
|
||||
<%= javascript_include_tag "lib/file-type" %>
|
||||
<%= javascript_include_tag "lib/module-area" %>
|
||||
<% end %>
|
||||
<%= form_for @seminar_signup_admin_setting, url: update_seminar_signup_admin_setting_admin_seminar_path, html: {class: "form-horizontal main-forms"} do |f| %>
|
||||
<h3>
|
||||
<% if @seminar %>
|
||||
<%= @seminar.title %>
|
||||
<% else %>
|
||||
<%= t("seminar.enquiry_for_applicants_display_fields_setting") %>
|
||||
<% end %>
|
||||
</h3>
|
||||
<fieldset>
|
||||
<!-- Input Area -->
|
||||
<div class="input-area">
|
||||
<h4><%= t('seminar.display_field') %></h4>
|
||||
<% render :partial => "get_display_fields" %>
|
||||
<% max_length = 10 %>
|
||||
<% @field_name_translations.each_with_index do |trans,i|%>
|
||||
<% if i % max_length == 0 %>
|
||||
<table class="table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="span2"><%= trans %></th>
|
||||
<% else %>
|
||||
<th class="span2"><%= trans %></th>
|
||||
<% end %>
|
||||
<% if ((i % max_length) == (max_length - 1) || i == (@field_name_translations.count - 1)) %>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% @field_names[((i/max_length) *max_length) ..i].each do |fn|%>
|
||||
<td><%= check_box_tag "#{f.object_name}[display_field][]",fn , @display_field.include?(fn) %></td>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<%= hidden_field_tag :id, params[:id] %>
|
||||
<%= hidden_field_tag :page, params[:page] %>
|
||||
</div>
|
||||
|
||||
<!-- Form Actions -->
|
||||
<div class="form-actions">
|
||||
<%= f.submit t('submit'), class: 'btn btn-primary' %>
|
||||
<input type="hidden" name="referer_url" value="<%= get_referer_url %>">
|
||||
<%= link_to t('cancel'), seminar_signup_admin_seminar_path(params[:id]), :class=>"btn" %>
|
||||
</div>
|
||||
</fieldset>
|
||||
<% end %>
|
|
@ -0,0 +1,103 @@
|
|||
<table class="table main-list">
|
||||
<thead>
|
||||
<tr>
|
||||
<% render :partial => "get_display_fields" %>
|
||||
<% @field_name_translations.each_with_index do |trans,i|%>
|
||||
<% next unless @display_field.include?(@field_names[i]) %>
|
||||
<th class="span2" id="<%=@field_names[i]%>"><%= trans %></th>
|
||||
<% end %>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="sort-holder">
|
||||
<% @seminar_signups.each do |seminar_signup| %>
|
||||
<% len = seminar_signup.seminar_signup_contributes.count %>
|
||||
<% rowspan = "rowspan=#{len==0? 1 : len}" %>
|
||||
<% vals = [] %>
|
||||
<tr>
|
||||
<% @field_names.each_with_index do |fn,i|%>
|
||||
<% next unless @display_field.include?(fn) %>
|
||||
<% names = fn.split(".") %>
|
||||
<% val = "" %>
|
||||
<% if names[0] == "seminar_signup_field_set" %>
|
||||
<% if names[1] == "name" %>
|
||||
<% val = seminar_signup.name
|
||||
val += "<div class=\"quick-edit\">
|
||||
<ul class=\"nav nav-pills\">"
|
||||
if can_edit_or_delete?(seminar_signup)
|
||||
val += "<li><a href=\"/admin/seminar_signups/#{seminar_signup.id}/edit\">#{t(:edit)}</a></li>
|
||||
<li><a href=\"#{admin_seminar_signup_path(seminar_signup.id)}\" class=\"delete text-error\" rel=\"nofollow\" data-method=\"delete\" data-confirm=\"Are you sure?\">#{t(:delete_)}</a></li>"
|
||||
end
|
||||
val += "</ul>
|
||||
</div>"
|
||||
%>
|
||||
<% elsif names[1] == 'status' %>
|
||||
<% val = t("seminar.registration_status_#{seminar_signup.status}") if !seminar_signup.status.blank? %>
|
||||
<% elsif names[1] != 'recaptcha' %>
|
||||
<% val = seminar_signup.send("#{names[1]}") %>
|
||||
<% end %>
|
||||
<% elsif names[0] == "default" %>
|
||||
<% if names[2] == "name" %>
|
||||
<% val = seminar_signup.name
|
||||
val += "<div class=\"quick-edit\">
|
||||
<ul class=\"nav nav-pills\">"
|
||||
if can_edit_or_delete?(seminar_signup)
|
||||
val += "<li><a href=\"/admin/seminar_signups/#{seminar_signup.id}/edit\">#{t(:edit)}</a></li>
|
||||
<li><a href=\"#{admin_seminar_signup_path(seminar_signup.id)}\" class=\"delete text-error\" rel=\"nofollow\" data-method=\"delete\" data-confirm=\"Are you sure?\">#{t(:delete_)}</a></li>"
|
||||
end
|
||||
val += "</ul>
|
||||
</div>"
|
||||
%>
|
||||
<% elsif names[2] == "tel" %>
|
||||
<% val = seminar_signup.tel %>
|
||||
<% elsif names[2] == "registration_status" %>
|
||||
<% val = t("seminar.registration_status_#{seminar_signup.status}") if !seminar_signup.status.blank? %>
|
||||
<% end %>
|
||||
<% elsif names[0] == "seminar_signup_field_custom" || names[0] == "seminar_signup_fields" %>
|
||||
<% val = seminar_signup.seminar_signup_values.where(:key=>names[1]).first.get_value_by_locale(I18n.locale) rescue "" %>
|
||||
<% elsif names[0] == "seminar_signup_contributes" %>
|
||||
<% if names[1] == "file" %>
|
||||
<% val = seminar_signup.seminar_signup_contributes.to_a %>
|
||||
<% else %>
|
||||
<% val = seminar_signup.seminar_signup_contributes.collect{|s| s.send(names[1])} %>
|
||||
<% end %>
|
||||
<% elsif names[0] == "seminar_submission_fields" %>
|
||||
<% val = seminar_signup.seminar_signup_contributes.collect{|s| (s.seminar_submission_values.where(:key=>names[1]).first.get_value_by_locale(I18n.locale) rescue "")} %>
|
||||
<% end %>
|
||||
<% vals << val %>
|
||||
<% end %>
|
||||
<% count = 0 %>
|
||||
<% indices = [] %>
|
||||
<% vals.each_with_index do |val,i| %>
|
||||
<% if val.class == Array %>
|
||||
<% count = val.count - 1 %>
|
||||
<% indices << i%>
|
||||
<td>
|
||||
<% if val[0].class == SeminarSignupContribute #File %>
|
||||
<% seminar_signup_contribute = val[0] %>
|
||||
<%= link_to (seminar_signup_contribute.title.blank? ? File.basename(seminar_signup_contribute.file.path) : seminar_signup_contribute.title) , seminar_signup_contribute.file.url, {:target => '_blank', :title => Nokogiri::HTML(seminar_signup_contribute.description).text} if seminar_signup_contribute.file.file %>
|
||||
<% else %>
|
||||
<%= val[0].html_safe.to_s rescue "" %>
|
||||
<% end %>
|
||||
</td>
|
||||
<% else %>
|
||||
<td <%= rowspan %>><%= val.to_s.html_safe %></td>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% (0...count).each do |i|%>
|
||||
<tr>
|
||||
<% indices.each do |index| %>
|
||||
<td>
|
||||
<% if vals[index][i].class == SeminarSignupContribute #File %>
|
||||
<% seminar_signup_contribute = vals[index][i] %>
|
||||
<%= link_to (seminar_signup_contribute.title.blank? ? File.basename(seminar_signup_contribute.file.path) : seminar_signup_contribute.title) , seminar_signup_contribute.file.url, {:target => '_blank', :title => Nokogiri::HTML(seminar_signup_contribute.description).text} if seminar_signup_contribute.file.file %>
|
||||
<% else %>
|
||||
<%= vals[index][i].html_safe.to_s rescue "" %>
|
||||
<% end %>
|
||||
</td>
|
||||
<% end %>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
|
@ -5,4 +5,5 @@
|
|||
<% end %>
|
||||
<% else %>
|
||||
<%= t('seminar.email_signup_content') %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<%= (@data['extra_text'] rescue "").to_s.html_safe %>
|
|
@ -5,4 +5,5 @@
|
|||
<% end %>
|
||||
<% else %>
|
||||
<%= t('seminar.email_submission_content') %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<%= (@data['extra_text'] rescue "").to_s.html_safe %>
|
|
@ -0,0 +1,139 @@
|
|||
<fieldset>
|
||||
<% unless f.object.new_record? %>
|
||||
<%= f.hidden_field :id %>
|
||||
<% end %>
|
||||
<% if @seminar.seminar_submission_field_sets.count != 0
|
||||
data1 = @seminar.seminar_submission_field_sets.select{|v| v.field_name=='title'}[0]
|
||||
data2 = @seminar.seminar_submission_field_sets.select{|v| v.field_name=='description'}[0]
|
||||
data3 = @seminar.seminar_submission_field_sets.select{|v| v.field_name=='file'}[0]
|
||||
show1 = !(data1.disabled)
|
||||
show2 = !(data2.disabled)
|
||||
show3 = !(data3.disabled)
|
||||
name1 = data1['name'][I18n.locale]
|
||||
name2 = data2['name'][I18n.locale]
|
||||
name3 = data3['name'][I18n.locale]
|
||||
plc1 = data1['placeholder'][I18n.locale]
|
||||
plc2 = data2['placeholder'][I18n.locale]==t('seminar_signup.description') ? '' : data2['placeholder'][I18n.locale]
|
||||
plc3 = data3['placeholder'][I18n.locale]==t('seminar_signup.file') ? '' : data3['placeholder'][I18n.locale]
|
||||
else
|
||||
show1 = true
|
||||
show2 = true
|
||||
show3 = true
|
||||
name1 = t('seminar_signup.title')
|
||||
name2 = t('seminar_signup.description')
|
||||
name3 = t('seminar_signup.file')
|
||||
plc1 = t('seminar_signup.title')
|
||||
plc2 = ''
|
||||
plc3 = ''
|
||||
end
|
||||
%>
|
||||
<% if show1 %>
|
||||
<div class="form-group">
|
||||
<label for="file_name" class="col-sm-2 control-label">*<%= name1 %></label>
|
||||
<div class="col-sm-10">
|
||||
<%= f.text_field :title, :class=>"input-medium form-control", :id=>'name', :placeholder=> plc1, :required => true %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
<% if show2 %>
|
||||
<div class="form-group" style="display: flex;justify-content: flex-end;text-align: right;">
|
||||
<span style="margin-right: 0.5em;">
|
||||
<% required = @seminar.enable_summary_choice %>
|
||||
<label for="description" class="col-sm-2 control-label" style="display: contents;">
|
||||
<%=required ? '*' : '' %><%= name2 %>
|
||||
</label>
|
||||
<br>
|
||||
<%= "(#{plc2})" if !(plc2.to_s.blank?) %>
|
||||
</span>
|
||||
<div class="col-sm-10" id="description" required="required">
|
||||
<% if @seminar.enable_summary_choice %>
|
||||
<% check_choices = Array(f.object.description) %>
|
||||
<% if @seminar.summary_chioice_type == "select" %>
|
||||
<%= f.select :description,options_for_select(@seminar.summary_chioices.map.with_index{|v,i| [v,i]},check_choices),{},{:style=>"float: left;",:required=>"required"} %>
|
||||
<% else %>
|
||||
<% multiple = @seminar.summary_chioice_type == "checkbox" %>
|
||||
<% @seminar.summary_chioices.each_with_index do |c,i| %>
|
||||
<label class="inline-label">
|
||||
<input type="<%=@seminar.summary_chioice_type%>" name="<%=f.object_name%>[description]<%= (multiple ? '[]' : '')%>" value="<%=i%>" <%= "checked=checked" if check_choices.include?(i.to_s)%>>
|
||||
<%=c%>
|
||||
</label>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<%= f.text_area :description, rows: 5, :class=>"ckeditor input-medium form-control", :placeholder=> plc2 %>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
<% if show3 %>
|
||||
<div class="form-group" style="display: flex;justify-content: flex-end;text-align: right;">
|
||||
<span style="margin-right: 0.5em;">
|
||||
<label for="note" class="col-sm-2 control-label" style="display: contents;">
|
||||
*<%= name3 %>
|
||||
</label>
|
||||
<br>
|
||||
<%= "(#{plc3})" if !(plc3.to_s.blank?) %>
|
||||
</span>
|
||||
<div class="col-sm-10">
|
||||
<label style="float: left;border-color: #666666" class="btn">
|
||||
<%= f.file_field :file, :required => f.object.new_record?, :style=>"position: absolute;width: 0.00000001em;" %>
|
||||
<%= t('seminar_signup.load_file') %>
|
||||
</label>
|
||||
<div class="filename" style="float: left;margin-left: 0.3em; "><%= f.object["file"] if f.object.file.present? %></div>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
<% @seminar.seminar_submission_fields.asc(:_id).each do |rf| %>
|
||||
<div class="form-group" style="<%= rf.markup=='text_area' ? 'display: flex;justify-content: flex-end;text-align: right;' : '' %>">
|
||||
<%= rf.block_helper(@seminar,@form_index,false,"seminar_signup_contribute",@con, rf.to_require,rf) %>
|
||||
</div>
|
||||
<% @form_index = @form_index +1 %>
|
||||
<% end %>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10">
|
||||
<input type="hidden" name="referer_url" value="<%= request.original_url.split(request.env["HTTP_HOST"]).last.split('?').first %>">
|
||||
<input type="hidden" name="seminar_signup_contribute[seminar_signup_id]" value="<%= session[:seminar_signup_id] %>">
|
||||
<%= f.submit "Submit", class: 'btn btn-primary', :id => 'button-mail' %>
|
||||
<%= f.button "Delete", type: 'reset', class: 'btn' %>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<script type="text/javascript">
|
||||
$("input[type=\"file\"]").change(function(){
|
||||
var file_name = "";
|
||||
if($(this).prop("files").length != 0){
|
||||
file_name = $(this).prop("files")[0].name;
|
||||
}
|
||||
$(this).parent().next(".filename").text(file_name)
|
||||
})
|
||||
$("form.form-horizontal").submit(function(){
|
||||
var flag = true;
|
||||
$("div[required=\"required\"]").each(function(i,v){
|
||||
if($(v).find("input:checked").length == 0){
|
||||
$(v).find("input").attr("required","required");
|
||||
flag = false;
|
||||
}else{
|
||||
$(v).find("input").removeAttr("required");
|
||||
}
|
||||
})
|
||||
return flag;
|
||||
})
|
||||
$("form.form-horizontal [type=\"submit\"]").click(function(){
|
||||
var flag = true;
|
||||
$("div[required=\"required\"]").each(function(i,v){
|
||||
if($(v).find("input:checked").length == 0){
|
||||
$(v).find("input").attr("required","required");
|
||||
flag = false;
|
||||
}else{
|
||||
$(v).find("input").removeAttr("required")
|
||||
}
|
||||
})
|
||||
return flag;
|
||||
})
|
||||
</script>
|
||||
<style type="text/css">
|
||||
.inline-label{
|
||||
float: left;
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
|
@ -16,83 +16,11 @@
|
|||
<% if ( @seminar.contribute_file_count.blank? or @seminar_signup.seminar_signup_contributes.count < @seminar.contribute_file_count.to_i ) %>
|
||||
|
||||
<%= form_for @con, url: add_file_proc_seminars_path, html: {class: "content form-horizontal" , :id=>"new-seminar-signup-contribute"} do |f| %>
|
||||
<fieldset>
|
||||
<% if @seminar.seminar_submission_field_sets.count != 0
|
||||
data1 = @seminar.seminar_submission_field_sets.select{|v| v.field_name=='title'}[0]
|
||||
data2 = @seminar.seminar_submission_field_sets.select{|v| v.field_name=='description'}[0]
|
||||
data3 = @seminar.seminar_submission_field_sets.select{|v| v.field_name=='file'}[0]
|
||||
show1 = !(data1.disabled)
|
||||
show2 = !(data2.disabled)
|
||||
show3 = !(data3.disabled)
|
||||
name1 = data1['name'][I18n.locale]
|
||||
name2 = data2['name'][I18n.locale]
|
||||
name3 = data3['name'][I18n.locale]
|
||||
plc1 = data1['placeholder'][I18n.locale]
|
||||
plc2 = data2['placeholder'][I18n.locale]==t('seminar_signup.description') ? '' : data2['placeholder'][I18n.locale]
|
||||
plc3 = data3['placeholder'][I18n.locale]==t('seminar_signup.file') ? '' : data3['placeholder'][I18n.locale]
|
||||
else
|
||||
show1 = true
|
||||
show2 = true
|
||||
show3 = true
|
||||
name1 = t('seminar_signup.title')
|
||||
name2 = t('seminar_signup.description')
|
||||
name3 = t('seminar_signup.file')
|
||||
plc1 = t('seminar_signup.title')
|
||||
plc2 = ''
|
||||
plc3 = ''
|
||||
end
|
||||
%>
|
||||
<% if show1 %>
|
||||
<div class="form-group">
|
||||
<label for="file_name" class="col-sm-2 control-label">*<%= name1 %></label>
|
||||
<div class="col-sm-10">
|
||||
<%= f.text_field :title, :class=>"input-medium form-control", :id=>'name', :placeholder=> plc1, :required => true %>
|
||||
</div>
|
||||
</div>
|
||||
<% begin %>
|
||||
<%= render :partial => 'seminars/contribute_form',:locals=>{:f=>f} %>
|
||||
<%rescue => e%>
|
||||
<%= e %>
|
||||
<% end %>
|
||||
<% if show2 %>
|
||||
<div class="form-group" style="display: flex;justify-content: flex-end;text-align: right;">
|
||||
<span style="margin-right: 0.5em;">
|
||||
<label for="note" class="col-sm-2 control-label" style="display: contents;">
|
||||
<%= name2 %>
|
||||
</label>
|
||||
<br>
|
||||
<%= "(#{plc2})" if !(plc2.to_s.blank?) %>
|
||||
</span>
|
||||
<div class="col-sm-10">
|
||||
<%= f.text_area :description, rows: 5, :class=>"ckeditor input-medium form-control", :placeholder=> plc2 %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
<% if show3 %>
|
||||
<div class="form-group" style="display: flex;justify-content: flex-end;text-align: right;">
|
||||
<span style="margin-right: 0.5em;">
|
||||
<label for="note" class="col-sm-2 control-label" style="display: contents;">
|
||||
*<%= name3 %>
|
||||
</label>
|
||||
<br>
|
||||
<%= "(#{plc3})" if !(plc3.to_s.blank?) %>
|
||||
</span>
|
||||
<div class="col-sm-10">
|
||||
<%= f.file_field :file, :required => true %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
<% @seminar.seminar_submission_fields.asc(:_id).each do |rf| %>
|
||||
<div class="form-group" style="<%= rf.markup=='text_area' ? 'display: flex;justify-content: flex-end;text-align: right;' : '' %>">
|
||||
<%= rf.block_helper(@seminar,@form_index,false,"seminar_signup_contribute",@con, rf.to_require,rf) %>
|
||||
</div>
|
||||
<% @form_index = @form_index +1 %>
|
||||
<% end %>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10">
|
||||
<input type="hidden" name="referer_url" value="<%= request.original_url.split(request.env["HTTP_HOST"]).last.split('?').first %>">
|
||||
<input type="hidden" name="seminar_signup_contribute[seminar_signup_id]" value="<%= session[:seminar_signup_id] %>">
|
||||
<%= f.submit t('submit'), class: 'btn btn-primary', :id => 'button-mail' %>
|
||||
<%= f.button t('cancel'), type: 'reset', class: 'btn' %>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<% end %>
|
||||
|
||||
<% else %>
|
||||
|
|
|
@ -24,20 +24,20 @@
|
|||
<%= form_tag con_login_proc_seminars_path, :class => 'content' do %>
|
||||
<div class="control-group clear">
|
||||
<label for="user_email">
|
||||
<i class="icon-user"></i>
|
||||
<i class="icon-user"></i><%=t('seminar_signup.email_address')%>
|
||||
</label>
|
||||
<%= text_field_tag :user_name, params[:user_name], :placeholder => t("users.user_id"), :id=>"user_email" %>
|
||||
<%= text_field_tag :user_name, params[:user_name], :placeholder => t('seminar_signup.email_address'), :id=>"user_email" %>
|
||||
</div>
|
||||
<div class="control-group clear">
|
||||
<label for="user_password">
|
||||
<i class="icon-lock"></i>
|
||||
<i class="icon-lock"></i><%=t("seminar_signup._password")%>
|
||||
</label>
|
||||
<%= password_field_tag :password, nil, :placeholder => t(:dots), :id=>"user_password" %>
|
||||
</div>
|
||||
<br/>
|
||||
<input type="hidden" name="referer_url" value="<%= request.original_url.split(request.env["HTTP_HOST"]).last.split('?').first %>">
|
||||
<input type="hidden" name="seminar_signup[seminar_main_id]" value="<%= @seminar.id %>">
|
||||
<button class="btn btn-primary" name="button" type="submit"><%= t(:login) %></button>
|
||||
<button class="btn btn-primary" name="button" type="submit"><%= t('seminar_signup.login') %></button>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -50,4 +50,10 @@
|
|||
|
||||
已截止
|
||||
|
||||
<% end %>
|
||||
<% end %>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
var max_width = Math.max.apply(null, $(".form .control-group label").map(function(i,el){return $(el).width()}));
|
||||
$(".form .control-group label").width(max_width);
|
||||
})
|
||||
</script>
|
|
@ -6,11 +6,20 @@
|
|||
@seminar = data["seminar"]
|
||||
@seminar_signup = data["seminar_signup"]
|
||||
@time_now = data["time_now"]
|
||||
data1 = @seminar.seminar_submission_field_sets.select{|v| v.field_name=='title'}[0]
|
||||
data2 = @seminar.seminar_submission_field_sets.select{|v| v.field_name=='description'}[0]
|
||||
data3 = @seminar.seminar_submission_field_sets.select{|v| v.field_name=='file'}[0]
|
||||
show1 = !(data1.disabled) rescue false
|
||||
show2 = !(data2.disabled) rescue false
|
||||
show3 = !(data3.disabled) rescue false
|
||||
name1 = data1['name'][I18n.locale]
|
||||
name2 = data2['name'][I18n.locale]
|
||||
name3 = data3['name'][I18n.locale]
|
||||
%>
|
||||
<% if @seminar.contribute_start_date <= @time_now and ( @seminar.contribute_end_date.nil? or @seminar.contribute_end_date+1 >= @time_now ) %>
|
||||
|
||||
<% begin %>
|
||||
<% if !session[:seminar_signup_id].blank? %>
|
||||
|
||||
<%=t('seminar_signup.serial_number') %>: <%=@seminar_signup.display_serial_number rescue ""%>
|
||||
<a href="<%= OrbitHelper.url_to_show(@seminar.to_param) %>?method=con_logout&con_no=<%= @seminar.id %>" class='btn btn-primary'><%= t('seminar_signup.logout') %></a>
|
||||
|
||||
<table class="table table-hover table-striped seminar-index">
|
||||
|
@ -19,9 +28,15 @@
|
|||
</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="col-md-2"><%= t('seminar_signup.file_name') %></th>
|
||||
<th class="col-md-2"><%= t('seminar_signup.file_note') %></th>
|
||||
<th class="col-md-2"><%= t('seminar_signup.files') %></th>
|
||||
<% if show1 %>
|
||||
<th class="col-md-2"><%= name1 %></th>
|
||||
<% end %>
|
||||
<% if show2 %>
|
||||
<th class="col-md-2"><%= name2 %></th>
|
||||
<% end %>
|
||||
<% if show3 %>
|
||||
<th class="col-md-2"><%= name3 %></th>
|
||||
<% end %>
|
||||
<th class="col-md-2"><%= t(:action) %></th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
@ -31,8 +46,16 @@
|
|||
%>
|
||||
<tr>
|
||||
<td><%= seminar_signup_contribute.title %></td>
|
||||
<td><%= seminar_signup_contribute.description.to_s.html_safe %></td>
|
||||
<td><%= link_to File.basename(seminar_signup_contribute.file.path), seminar_signup_contribute.file.url, {:target => '_blank', :title => Nokogiri::HTML(seminar_signup_contribute.description).text} if seminar_signup_contribute.file.file %></td>
|
||||
<% description = seminar_signup_contribute.description.to_s %>
|
||||
<% if @seminar.enable_summary_choice
|
||||
if (seminar_signup_contribute.description.to_s.to_i.to_s == seminar_signup_contribute.description)
|
||||
description = @seminar.summary_chioices[seminar_signup_contribute.description.to_i] rescue seminar_signup_contribute.description
|
||||
else
|
||||
description = seminar_signup_contribute.description.map{|i| @seminar.summary_chioices[i.to_i] rescue "" }.join("<br>") rescue seminar_signup_contribute.description
|
||||
end
|
||||
end %>
|
||||
<td><%= description.html_safe %></td>
|
||||
<td><%= link_to File.basename(seminar_signup_contribute.file.path), seminar_signup_contribute.file.url, {:target => '_blank', :title => Nokogiri::HTML(description.gsub("<br>"," , ")).text} if seminar_signup_contribute.file.file %></td>
|
||||
<td>
|
||||
<%= link_to t(:edit), OrbitHelper.url_to_show(@seminar.to_param) + '?method=edit_file&con_no=' + seminar_signup_contribute.id, :class => 'btn btn-primary' %>
|
||||
<form method="post" action="<%= del_file_seminars_path %>">
|
||||
|
@ -49,7 +72,7 @@
|
|||
|
||||
<% if ( @seminar.contribute_file_count.blank? or @seminar_signup.seminar_signup_contributes.count < @seminar.contribute_file_count.to_i ) %>
|
||||
|
||||
<%= link_to content_tag(:i, nil, :class => 'icon-plus') +' '+ t('new_'), OrbitHelper.url_to_show(@seminar.to_param) + '?method=add_file', :class => 'btn btn-primary' %>
|
||||
<%= link_to content_tag(:i, nil, :class => 'icon-plus') +' '+ t('seminar_signup.new_'), OrbitHelper.url_to_show(@seminar.to_param) + '?method=add_file', :class => 'btn btn-primary' %>
|
||||
|
||||
<% end %>
|
||||
<br />
|
||||
|
@ -63,7 +86,10 @@
|
|||
<a href="<%= page_for_seminar_url %>">回列表頁</a>
|
||||
|
||||
<% end %>
|
||||
|
||||
<%
|
||||
rescue => e
|
||||
puts e
|
||||
end%>
|
||||
<% else %>
|
||||
|
||||
已截止
|
||||
|
|
|
@ -14,84 +14,11 @@
|
|||
<% if !session[:seminar_signup_id].blank? %>
|
||||
|
||||
<%= form_for @con, url: edit_file_proc_seminars_path, html: {class: "content form-horizontal" , :id=>"new-seminar-signup-contribute"} do |f| %>
|
||||
<fieldset>
|
||||
<% if @seminar.seminar_submission_field_sets.count != 0
|
||||
data1 = @seminar.seminar_submission_field_sets.select{|v| v.field_name=='title'}[0]
|
||||
data2 = @seminar.seminar_submission_field_sets.select{|v| v.field_name=='description'}[0]
|
||||
data3 = @seminar.seminar_submission_field_sets.select{|v| v.field_name=='file'}[0]
|
||||
show1 = !(data1.disabled)
|
||||
show2 = !(data2.disabled)
|
||||
show3 = !(data3.disabled)
|
||||
name1 = data1['name'][I18n.locale]
|
||||
name2 = data2['name'][I18n.locale]
|
||||
name3 = data3['name'][I18n.locale]
|
||||
plc1 = data1['placeholder'][I18n.locale]
|
||||
plc2 = data2['placeholder'][I18n.locale]==t('seminar_signup.description') ? '' : data2['placeholder'][I18n.locale]
|
||||
plc3 = data3['placeholder'][I18n.locale]==t('seminar_signup.file') ? '' : data3['placeholder'][I18n.locale]
|
||||
else
|
||||
show1 = true
|
||||
show2 = true
|
||||
show3 = true
|
||||
name1 = t('seminar_signup.title')
|
||||
name2 = t('seminar_signup.description')
|
||||
name3 = t('seminar_signup.file')
|
||||
plc1 = t('seminar_signup.title')
|
||||
plc2 = ''
|
||||
plc3 = ''
|
||||
end
|
||||
%>
|
||||
<% if show1 %>
|
||||
<div class="form-group">
|
||||
<label for="file_name" class="col-sm-2 control-label">*<%= name1 %></label>
|
||||
<div class="col-sm-10">
|
||||
<%= f.text_field :title, :class=>"input-medium form-control", :id=>'name', :placeholder=> plc1, :required => true %>
|
||||
</div>
|
||||
</div>
|
||||
<% begin %>
|
||||
<%= render :partial => 'seminars/contribute_form',:locals=>{:f=>f} %>
|
||||
<%rescue => e%>
|
||||
<%= e %>
|
||||
<% end %>
|
||||
<% if show2 %>
|
||||
<div class="form-group" style="display: flex;justify-content: flex-end;text-align: right;">
|
||||
<span style="margin-right: 0.5em;">
|
||||
<label for="note" class="col-sm-2 control-label" style="display: contents;">
|
||||
<%= name2 %>
|
||||
</label>
|
||||
<br>
|
||||
<%= "(#{plc2})" if !(plc2.to_s.blank?) %>
|
||||
</span>
|
||||
<div class="col-sm-10">
|
||||
<%= f.text_area :description, rows: 5, :class=>"ckeditor input-medium form-control", :placeholder=> plc2 %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
<% if show3 %>
|
||||
<div class="form-group" style="display: flex;justify-content: flex-end;text-align: right;">
|
||||
<span style="margin-right: 0.5em;">
|
||||
<label for="note" class="col-sm-2 control-label" style="display: contents;">
|
||||
*<%= name3 %>
|
||||
</label>
|
||||
<br>
|
||||
<%= "(#{plc3})" if !(plc3.to_s.blank?) %>
|
||||
</span>
|
||||
<div class="col-sm-10">
|
||||
<%= f.file_field :file %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
<% @seminar.seminar_submission_fields.asc(:_id).each do |rf| %>
|
||||
<div class="form-group" style="<%= rf.markup=='text_area' ? 'display: flex;justify-content: flex-end;text-align: right;' : '' %>">
|
||||
<%= rf.block_helper(@seminar,@form_index,false,"seminar_signup_contribute",@con, rf.to_require,rf) %>
|
||||
</div>
|
||||
<% @form_index = @form_index +1 %>
|
||||
<% end %>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10">
|
||||
<input type="hidden" name="referer_url" value="<%= request.original_url.split(request.env["HTTP_HOST"]).last.split('?').first %>">
|
||||
<input type="hidden" name="seminar_signup_contribute[id]" value="<%= @con[:_id] %>">
|
||||
<input type="hidden" name="seminar_signup_contribute[seminar_signup_id]" value="<%= session[:seminar_signup_id] %>">
|
||||
<%= f.submit t('submit'), class: 'btn btn-primary', :id => 'button-mail' %>
|
||||
<%= f.button t('cancel'), type: 'reset', class: 'btn' %>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<% end %>
|
||||
|
||||
<% else %>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
@total_pages = data["total_pages"]
|
||||
@time_now = data["time_now"]
|
||||
%>
|
||||
|
||||
<% begin %>
|
||||
<table class="table table-hover table-striped seminar-index">
|
||||
<caption>
|
||||
<h3><%= t('seminar.seminar') %></h3>
|
||||
|
@ -23,11 +23,11 @@
|
|||
<%
|
||||
@seminars.each do |seminar|
|
||||
|
||||
if !seminar.registration_status.blank? and seminar.signup_start_date <= @time_now and ( seminar.signup_end_date.nil? or seminar.signup_end_date+1 >= @time_now )
|
||||
if !seminar.registration_status.blank? and (seminar.signup_start_date <= @time_now rescue false) and ( seminar.signup_end_date.nil? or seminar.signup_end_date+1 >= @time_now )
|
||||
sign_up = ('<a href="'+ OrbitHelper.url_to_show(seminar.to_param) + '" target="_blank">' + t('seminar.signup') + '</a>').html_safe
|
||||
elsif seminar.registration_status.blank?
|
||||
sign_up = t('seminar.sign_up_not_open')
|
||||
elsif seminar.signup_start_date > @time_now
|
||||
elsif (seminar.signup_start_date > @time_now rescue false)
|
||||
sign_up = t('seminar.sign_up_not_yet')
|
||||
else
|
||||
sign_up = t('seminar.sign_up_overdue')
|
||||
|
@ -42,7 +42,7 @@
|
|||
<%= sign_up %> <br />
|
||||
|
||||
<%=
|
||||
if !seminar.registration_status.blank? and seminar.registration_status.include?('C') and seminar.contribute_start_date <= @time_now and ( seminar.contribute_end_date.nil? or seminar.contribute_end_date+1 >= @time_now )
|
||||
if !seminar.registration_status.blank? and seminar.registration_status.include?('C') and (seminar.contribute_start_date <= @time_now rescue false) and ( seminar.contribute_end_date.nil? or (seminar.contribute_end_date+1 >= @time_now rescue false) )
|
||||
if !session[:seminar_signup_id].blank?
|
||||
if session[:seminar_main_id] == seminar.id
|
||||
('<a href="'+ OrbitHelper.url_to_show(seminar.to_param) + '?method=con_upload">' + t('seminar_signup.uploads') + '</a>').html_safe
|
||||
|
@ -59,5 +59,8 @@
|
|||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<% rescue => e
|
||||
puts [e,e.backtrace]
|
||||
end
|
||||
%>
|
||||
<%= create_pagination(@total_pages).html_safe if @total_pages > 1 %>
|
|
@ -36,53 +36,37 @@
|
|||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
<div>
|
||||
<div class="col-sm-12" style="text-align: center;"> *(<%= t('seminar.required') %>) </div>
|
||||
</div>
|
||||
<% if @seminar.seminar_signup_field_sets.count != 0 %>
|
||||
<% @seminar.seminar_signup_field_sets.each do |signup_field| %>
|
||||
<% if signup_field.field_name == 'name' %>
|
||||
<div>
|
||||
<div class="col-sm-12" style="text-align: center;"> *(<%= t('seminar.required') %>) </div>
|
||||
</div>
|
||||
<% end %>
|
||||
<% if !(signup_field.disabled) && signup_field.field_name != 'recaptcha' %>
|
||||
<div class="form-group<%= (@seminar.registration_status[0] == 'G' && signup_field.field_name == 'password') ? ' hide' : '' %>" id="<%= signup_field.field_name == 'password' ? 'registration_status' : '' %>">
|
||||
<label for="<%= signup_field['name'][I18n.locale] %>" class="col-sm-2 control-label">
|
||||
<% if !(['status','address','note'].include? signup_field.field_name) %>
|
||||
<% if !(['address','note'].include? signup_field.field_name) %>
|
||||
*
|
||||
<% end %>
|
||||
<%= signup_field['name'][I18n.locale] %>
|
||||
</label>
|
||||
<% if signup_field.field_name == 'status' %>
|
||||
|
||||
<% status_translations = ['G','C'].map{|c| [c, t("seminar.registration_status_#{c}")] }.to_h %>
|
||||
<% status_translations = {'G'=>'No','C'=>'Yes'} if (signup_field.name.values.select{|v| v.include?('?') || v.include?('是否')}.count != 0 rescue false) %>
|
||||
<div class="col-sm-10">
|
||||
<% if @seminar.registration_status.include?('G') %>
|
||||
<label class="radio-inline">
|
||||
<%= f.radio_button :status, 'G', :checked => true , :onclick => "$('#registration_status').addClass('hide');" %> <%= t('seminar.registration_status_G') %>
|
||||
<%= f.radio_button :status, 'G', :checked => true , :onclick => "$('#registration_status').addClass('hide');" %> <%= status_translations['G'] %>
|
||||
</label>
|
||||
<% end %>
|
||||
<% if @seminar.registration_status.include?('C') %>
|
||||
<label class="radio-inline">
|
||||
<%= f.radio_button :status, 'C', :onclick => "$('#registration_status').removeClass('hide');", :checked => (@seminar.registration_status.count == 1 and @seminar.registration_status.include?('C') ? true : false) %> <%= t('seminar.registration_status_C') %>
|
||||
<%= f.radio_button :status, 'C', :onclick => "$('#registration_status').removeClass('hide');", :checked => (@seminar.registration_status.count == 1 and @seminar.registration_status.include?('C') ? true : false) %> <%= status_translations['C'] %>
|
||||
</label>
|
||||
<% end %>
|
||||
</div>
|
||||
<% elsif signup_field.field_name == 'unit' %>
|
||||
<div class="col-sm-10">
|
||||
<div class="input-append">
|
||||
<div class="tab-content">
|
||||
<% @site_in_use_locales.each_with_index do |locale, i| %>
|
||||
<div class="tab-pane fade <%= ( i == 0 ) ? "active in" : '' %>" id="unit_<%= locale %>">
|
||||
<%= f.fields_for "unit_translations".to_sym do |f| %>
|
||||
<%= f.text_field locale, :class=>"input-medium form-control", :value => (@seminar_signup.send("unit_translations")[locale] rescue nil), :placeholder=> "#{signup_field.placeholder[I18n.locale]}", :required => true %>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="btn-group" data-toggle="buttons-radio">
|
||||
<% @site_in_use_locales.each_with_index do |locale, i| %>
|
||||
<a class="btn <%= ( i == 0 ) ? "active" : '' %>" href="#unit_<%= locale %>" data-toggle="tab"><%= t(locale.to_s) %></a>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
<%= f.text_field 'unit', :class=>"input-medium form-control", :value => (@seminar_signup.send("unit_translations")[locale] rescue nil), :placeholder=> "#{signup_field.placeholder[I18n.locale]}", :required => true %>
|
||||
</div>
|
||||
<% elsif signup_field.field_name == 'address' %>
|
||||
<div class="col-sm-10">
|
||||
|
@ -150,10 +134,6 @@
|
|||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="col-sm-12" style="text-align: center;"> *(<%= t('seminar.required') %>) </div>
|
||||
</div>
|
||||
|
||||
<!-- Name to Last Name -->
|
||||
<div class="form-group">
|
||||
|
@ -232,10 +212,10 @@
|
|||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10">
|
||||
<input type="hidden" name="referer_url" value="<%= request.original_url.split(request.env["HTTP_HOST"]).last %>">
|
||||
<input type="hidden" name="referer_url" value="<%= request.original_url.split(request.env["HTTP_HOST"]).last rescue "/" %>">
|
||||
<input type="hidden" name="seminar_signup[seminar_main_id]" value="<%= @seminar.id %>">
|
||||
<%= f.submit t('submit'), class: 'btn btn-primary', :id => 'button-mail' %>
|
||||
<%= f.button t('cancel'), type: 'reset', class: 'btn' %>
|
||||
<%= f.submit "Submit", class: 'btn btn-primary', :id => 'button-mail' %>
|
||||
<%= f.button "Delete", type: 'reset', class: 'btn' %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -245,6 +225,7 @@
|
|||
|
||||
<script type="text/javascript">
|
||||
(function(){
|
||||
$(".rucaptcha-image").siblings("input[type=\"text\"]").attr("placeholder","Verification");
|
||||
var validated = false,
|
||||
chks = false,
|
||||
pwd = $('#seminar_signup_password')
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
%>
|
||||
|
||||
<%= t('seminar_signup.success_message') %>
|
||||
<br>
|
||||
<%=t('seminar_signup.serial_number') %>: <%=data["serial_number"] rescue ""%>
|
||||
<% if !params['status'].nil? %>
|
||||
<br>
|
||||
<a href="<%= OrbitHelper.url_to_show(params[:slug]) %>?method=con_login">
|
||||
|
|
|
@ -5,10 +5,13 @@ en:
|
|||
label: ""
|
||||
|
||||
restful_actions:
|
||||
copy: Copy
|
||||
act_signup: Sign Up Info #報名資料
|
||||
seminar_submission_field: Seminar Submission Field
|
||||
seminar_signup_field: Seminar Signup Field
|
||||
seminar_signup: Signup Analyze
|
||||
enquiry_for_applicants: Enquiry for applicants
|
||||
reviewer_setting: Reviewer setting
|
||||
module_name:
|
||||
seminar: Seminar #研討會
|
||||
|
||||
|
@ -17,6 +20,25 @@ en:
|
|||
verification_failed: Verification Failed #驗證碼錯誤
|
||||
|
||||
seminar:
|
||||
copy_mode_on: Copy mode on
|
||||
clone_signups: Clone Signups
|
||||
copy: Copy
|
||||
select_session: Select %{session}
|
||||
unassigned_session_signups: Unassigned %{session} Signups
|
||||
submitter_without_reviewer: Submitter without reviewer
|
||||
are_you_want_to_remove: "Are you really want to remove?"
|
||||
add_assign_fields: Add assign fields
|
||||
assign_fields: Assign fields
|
||||
organizer: Organizer
|
||||
reviewer_setting: Reviewer setting
|
||||
select_reviewer: Select reviewer
|
||||
enquiry_for_applicants_display_fields_setting: Enquiry for applicants display fields setting
|
||||
enquiry_for_applicants: Enquiry for applicants
|
||||
field_display_setting: Field display setting
|
||||
table: Table
|
||||
session_dashboard: Session Dashboard
|
||||
dashboard: Dashboard
|
||||
display_field: Display field
|
||||
note: Note
|
||||
email_signup_success: Signup success
|
||||
email_submission_success: Submission registration success
|
||||
|
@ -101,6 +123,7 @@ en:
|
|||
content: Content #內容
|
||||
|
||||
seminar_signup:
|
||||
serial_number: Sign-up No.
|
||||
status: Attendee Role
|
||||
title: File Name
|
||||
description: Summary
|
||||
|
@ -123,10 +146,21 @@ en:
|
|||
recaptcha: Verification code
|
||||
signup_field: Sign Up Field #圈選項目
|
||||
uploads: Uploads #上傳檔案
|
||||
con_login: Contributor Login #投稿者登入
|
||||
con_login: Submission #投稿者登入
|
||||
file_name: File Name #稿件名稱
|
||||
file_note: Summary #摘要
|
||||
files: Files #檔案
|
||||
logout: Log Out #登出
|
||||
logouting: Logging Out #登出中
|
||||
success_message: 'Registration successful, thank you.'
|
||||
email_address: Email address
|
||||
_password: Password
|
||||
login: Login
|
||||
new_: 'Load abstract'
|
||||
load_file: load file
|
||||
enable_summary_choice: Enable summary choice
|
||||
summary_choice_type: Summary choice type
|
||||
select: Select box
|
||||
checkbox: Multiple choice
|
||||
radio: Single choice
|
||||
choices: Choices
|
|
@ -5,10 +5,13 @@ zh_tw:
|
|||
label: ""
|
||||
|
||||
restful_actions:
|
||||
copy: 複製
|
||||
act_signup: 報名資料
|
||||
seminar_submission_field: 上傳介面欄位
|
||||
seminar_signup_field: 報名欄位
|
||||
seminar_signup: 報名統計
|
||||
enquiry_for_applicants: 查詢報名人
|
||||
reviewer_setting: 審查委員設定
|
||||
module_name:
|
||||
seminar: 研討會
|
||||
|
||||
|
@ -17,6 +20,25 @@ zh_tw:
|
|||
verification_failed: 驗證碼錯誤
|
||||
|
||||
seminar:
|
||||
copy_mode_on: 啟用複製模式
|
||||
clone_signups: 複製報名人
|
||||
copy: 複製
|
||||
select_session: 選擇%{session}
|
||||
unassigned_session_signups: 未指派%{session}之報名人
|
||||
submitter_without_reviewer: 未分派審查委員報名者
|
||||
are_you_want_to_remove: 你確定要刪除?
|
||||
add_assign_fields: 新增分派欄位
|
||||
assign_fields: 分派欄位
|
||||
organizer: 主辦人
|
||||
reviewer_setting: 審查委員設定
|
||||
select_reviewer: 選擇審查委員
|
||||
enquiry_for_applicants_display_fields_setting: 查詢報名人顯示欄位設定
|
||||
enquiry_for_applicants: 查詢報名人
|
||||
field_display_setting: 欄位顯示設定
|
||||
table: 列表
|
||||
session_dashboard: 主題(Session)儀錶板
|
||||
dashboard: 儀錶板
|
||||
display_field: 顯示的欄位
|
||||
note: 附註
|
||||
email_signup_success: 報名成功
|
||||
email_submission_success: 投稿註冊成功
|
||||
|
@ -34,7 +56,7 @@ zh_tw:
|
|||
email_add_file: 新增上傳
|
||||
auto_send_email_set: 自動發信設定
|
||||
click_to_contribute: 按此登入投稿
|
||||
required: 必填
|
||||
required: '必填, necessary'
|
||||
already_used: 已存在
|
||||
please_enter_email: 請輸入Email
|
||||
available: 可使用
|
||||
|
@ -101,6 +123,7 @@ zh_tw:
|
|||
content: 內容
|
||||
|
||||
seminar_signup:
|
||||
serial_number: 註冊編號
|
||||
status: 報名身分
|
||||
title: 稿件名稱
|
||||
description: 摘要
|
||||
|
@ -118,15 +141,26 @@ zh_tw:
|
|||
note: 註解
|
||||
time: (開始/結束)時間
|
||||
place: 地點
|
||||
agree: 同意接受本站個資及隱私權保護宣告
|
||||
agree: 同意接受本站個資及隱私權保護宣告(Agree upon personal data protection declaration of this web)
|
||||
privacy_statement: '個資及隱私權保護宣告'
|
||||
recaptcha: 驗證碼
|
||||
signup_field: 圈選項目
|
||||
uploads: 上傳檔案
|
||||
con_login: 投稿者登入
|
||||
con_login: Submission
|
||||
file_name: 稿件名稱
|
||||
file_note: 摘要
|
||||
files: 檔案
|
||||
logout: 登出
|
||||
logout: Logout
|
||||
logouting: 登出中
|
||||
success_message: '您的報名已成功,感謝您的參與。'
|
||||
email_address: Email address
|
||||
_password: Password
|
||||
login: Login
|
||||
new_: '新增(load abstract)'
|
||||
load_file: load file
|
||||
enable_summary_choice: 開啟摘要選項
|
||||
summary_choice_type: 摘要選項類型
|
||||
select: 下拉選單
|
||||
checkbox: 多選
|
||||
radio: 單選
|
||||
choices: 選項
|
|
@ -6,14 +6,28 @@ Rails.application.routes.draw do
|
|||
namespace :admin do
|
||||
resources :seminars do
|
||||
member do
|
||||
get 'copy'
|
||||
get 'export'
|
||||
get 'set_write_off'
|
||||
get 'seminar_signup'
|
||||
get 'seminar_item_content'
|
||||
get 'seminar_signup_field'
|
||||
get 'seminar_submission_field'
|
||||
get 'seminar_signup_admin_setting'
|
||||
post 'update_seminar_signup_admin_setting'
|
||||
patch 'update_seminar_signup_admin_setting'
|
||||
get 'get_hide_reviewer'
|
||||
get 'get_hide_session'
|
||||
get 'get_reviewer_block'
|
||||
get 'get_session_block'
|
||||
get 'reviewer_setting'
|
||||
post 'update_reviewer_setting'
|
||||
patch 'update_reviewer_setting'
|
||||
post 'update_seminar_session'
|
||||
end
|
||||
end
|
||||
get 'seminar/enquiry_for_applicants' => "seminars#enquiry_for_applicants"
|
||||
post 'seminar/update_seminar_review' => "seminars#update_seminar_review"
|
||||
resources :seminar_items do
|
||||
collection do
|
||||
post 'delete_items'
|
||||
|
|
|
@ -11,7 +11,7 @@ module Seminar
|
|||
|
||||
side_bar do
|
||||
head_label_i18n 'seminar.seminar', icon_class: "icon-globe"
|
||||
available_for "managers"
|
||||
available_for "users"
|
||||
active_for_controllers (['admin/seminars'])
|
||||
head_link_path "admin_seminars_path"
|
||||
|
||||
|
@ -19,7 +19,7 @@ module Seminar
|
|||
:link_path=>"admin_seminars_path" ,
|
||||
:priority=>1,
|
||||
:active_for_action=>{'admin/seminars'=>'index'},
|
||||
:available_for => 'managers'
|
||||
:available_for => 'users'
|
||||
context_link 'new_',
|
||||
:link_path=>"new_admin_seminar_path" ,
|
||||
:priority=>2,
|
||||
|
@ -42,6 +42,11 @@ module Seminar
|
|||
:priority=>3,
|
||||
:active_for_action=>{'admin/seminars'=>'seminar_agreements'},
|
||||
:available_for => 'managers'
|
||||
context_link 'seminar.enquiry_for_applicants',
|
||||
:link_path=>"admin_seminar_enquiry_for_applicants_path" ,
|
||||
:priority=>3,
|
||||
:active_for_action=>{'admin/seminars'=>'enquiry_for_applicants'},
|
||||
:available_for => 'users'
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue