forked from spen/seminar
first commit for seminar
This commit is contained in:
commit
52d3581130
|
@ -0,0 +1,14 @@
|
||||||
|
source "https://rubygems.org"
|
||||||
|
|
||||||
|
# Declare your gem's dependencies in seminar.gemspec.
|
||||||
|
# Bundler will treat runtime dependencies like base dependencies, and
|
||||||
|
# development dependencies will be added by default to the :development group.
|
||||||
|
gemspec
|
||||||
|
|
||||||
|
# Declare any dependencies that are still in development here instead of in
|
||||||
|
# your gemspec. These might include edge Rails or gems from your path or
|
||||||
|
# Git. Remember to move these dependencies to your gemspec before releasing
|
||||||
|
# your gem to rubygems.org.
|
||||||
|
|
||||||
|
# To use debugger
|
||||||
|
# gem 'debugger'
|
|
@ -0,0 +1,87 @@
|
||||||
|
PATH
|
||||||
|
remote: .
|
||||||
|
specs:
|
||||||
|
seminar (0.0.1)
|
||||||
|
rails (~> 4.1.9)
|
||||||
|
|
||||||
|
GEM
|
||||||
|
remote: https://rubygems.org/
|
||||||
|
specs:
|
||||||
|
actionmailer (4.1.9)
|
||||||
|
actionpack (= 4.1.9)
|
||||||
|
actionview (= 4.1.9)
|
||||||
|
mail (~> 2.5, >= 2.5.4)
|
||||||
|
actionpack (4.1.9)
|
||||||
|
actionview (= 4.1.9)
|
||||||
|
activesupport (= 4.1.9)
|
||||||
|
rack (~> 1.5.2)
|
||||||
|
rack-test (~> 0.6.2)
|
||||||
|
actionview (4.1.9)
|
||||||
|
activesupport (= 4.1.9)
|
||||||
|
builder (~> 3.1)
|
||||||
|
erubis (~> 2.7.0)
|
||||||
|
activemodel (4.1.9)
|
||||||
|
activesupport (= 4.1.9)
|
||||||
|
builder (~> 3.1)
|
||||||
|
activerecord (4.1.9)
|
||||||
|
activemodel (= 4.1.9)
|
||||||
|
activesupport (= 4.1.9)
|
||||||
|
arel (~> 5.0.0)
|
||||||
|
activesupport (4.1.9)
|
||||||
|
i18n (~> 0.6, >= 0.6.9)
|
||||||
|
json (~> 1.7, >= 1.7.7)
|
||||||
|
minitest (~> 5.1)
|
||||||
|
thread_safe (~> 0.1)
|
||||||
|
tzinfo (~> 1.1)
|
||||||
|
arel (5.0.1.20140414130214)
|
||||||
|
builder (3.2.2)
|
||||||
|
erubis (2.7.0)
|
||||||
|
hike (1.2.3)
|
||||||
|
i18n (0.7.0)
|
||||||
|
json (1.8.2)
|
||||||
|
mail (2.6.3)
|
||||||
|
mime-types (>= 1.16, < 3)
|
||||||
|
mime-types (2.4.3)
|
||||||
|
minitest (5.5.1)
|
||||||
|
multi_json (1.10.1)
|
||||||
|
rack (1.5.2)
|
||||||
|
rack-test (0.6.3)
|
||||||
|
rack (>= 1.0)
|
||||||
|
rails (4.1.9)
|
||||||
|
actionmailer (= 4.1.9)
|
||||||
|
actionpack (= 4.1.9)
|
||||||
|
actionview (= 4.1.9)
|
||||||
|
activemodel (= 4.1.9)
|
||||||
|
activerecord (= 4.1.9)
|
||||||
|
activesupport (= 4.1.9)
|
||||||
|
bundler (>= 1.3.0, < 2.0)
|
||||||
|
railties (= 4.1.9)
|
||||||
|
sprockets-rails (~> 2.0)
|
||||||
|
railties (4.1.9)
|
||||||
|
actionpack (= 4.1.9)
|
||||||
|
activesupport (= 4.1.9)
|
||||||
|
rake (>= 0.8.7)
|
||||||
|
thor (>= 0.18.1, < 2.0)
|
||||||
|
rake (10.4.2)
|
||||||
|
sprockets (2.12.3)
|
||||||
|
hike (~> 1.2)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
rack (~> 1.0)
|
||||||
|
tilt (~> 1.1, != 1.3.0)
|
||||||
|
sprockets-rails (2.2.4)
|
||||||
|
actionpack (>= 3.0)
|
||||||
|
activesupport (>= 3.0)
|
||||||
|
sprockets (>= 2.8, < 4.0)
|
||||||
|
sqlite3 (1.3.10)
|
||||||
|
thor (0.19.1)
|
||||||
|
thread_safe (0.3.4)
|
||||||
|
tilt (1.4.1)
|
||||||
|
tzinfo (1.2.2)
|
||||||
|
thread_safe (~> 0.1)
|
||||||
|
|
||||||
|
PLATFORMS
|
||||||
|
ruby
|
||||||
|
|
||||||
|
DEPENDENCIES
|
||||||
|
seminar!
|
||||||
|
sqlite3
|
|
@ -0,0 +1,20 @@
|
||||||
|
Copyright 2015 YOURNAME
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@ -0,0 +1,3 @@
|
||||||
|
= Seminar
|
||||||
|
|
||||||
|
This project rocks and uses MIT-LICENSE.
|
|
@ -0,0 +1,32 @@
|
||||||
|
begin
|
||||||
|
require 'bundler/setup'
|
||||||
|
rescue LoadError
|
||||||
|
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
||||||
|
end
|
||||||
|
|
||||||
|
require 'rdoc/task'
|
||||||
|
|
||||||
|
RDoc::Task.new(:rdoc) do |rdoc|
|
||||||
|
rdoc.rdoc_dir = 'rdoc'
|
||||||
|
rdoc.title = 'Seminar'
|
||||||
|
rdoc.options << '--line-numbers'
|
||||||
|
rdoc.rdoc_files.include('README.rdoc')
|
||||||
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Bundler::GemHelper.install_tasks
|
||||||
|
|
||||||
|
require 'rake/testtask'
|
||||||
|
|
||||||
|
Rake::TestTask.new(:test) do |t|
|
||||||
|
t.libs << 'lib'
|
||||||
|
t.libs << 'test'
|
||||||
|
t.pattern = 'test/**/*_test.rb'
|
||||||
|
t.verbose = false
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
task default: :test
|
|
@ -0,0 +1,78 @@
|
||||||
|
function checkTagsQuantity() {
|
||||||
|
var $tagLead = $('.tag-lead'),
|
||||||
|
$tagsGroups = $('.tags-groups');
|
||||||
|
|
||||||
|
$tagsGroups.each(function(i) {
|
||||||
|
var $children = $(this).children().length;
|
||||||
|
$tagLead.eq(i).children('.badge').text($children);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkedLength() {
|
||||||
|
var $tagsList = $('#tags-list'),
|
||||||
|
$defaultTags,
|
||||||
|
ids;
|
||||||
|
function reload_links() {
|
||||||
|
var _checked = 0;
|
||||||
|
ids = [];
|
||||||
|
$defaultTags = $('li.default input[type="checkbox"]');
|
||||||
|
$defaultTags.each(function(index, el) {
|
||||||
|
if($(el).prop('checked')) {
|
||||||
|
_checked ++;
|
||||||
|
ids.push($(el).val())
|
||||||
|
}
|
||||||
|
});
|
||||||
|
console.log(_checked,ids)
|
||||||
|
if(_checked > 0) {
|
||||||
|
$('#deselect').removeClass('hide');
|
||||||
|
$('#deselect').on('click', deselect);
|
||||||
|
$('#deleteItems').attr('rel', "<%= Rails.application.routes.url_helpers.delete_items_admin_seminar_items_path %>" + "?ids=" + ids);
|
||||||
|
$('#deleteItems').removeClass('hide');
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$('#deselect').addClass('hide');
|
||||||
|
$('#deleteItems').attr('rel', "");
|
||||||
|
$('#deleteItems').addClass('hide');
|
||||||
|
$('#deselect').off('click', deselect);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
$tagsList.on('click', '.card', function(event) {
|
||||||
|
reload_links();
|
||||||
|
});
|
||||||
|
$('#selectAllTags').on('click', function() {
|
||||||
|
$('.filter-item:not(".mark") input[type="checkbox"]').prop('checked', true);
|
||||||
|
$('.filter-item:not(".mark") .card').addClass('active');
|
||||||
|
reload_links();
|
||||||
|
});
|
||||||
|
$('#deleteItems').on('click', function() {
|
||||||
|
$('#delete_seminar_items .tags-groups').empty();
|
||||||
|
$('#delete_seminar_items a.delete-tags').attr("href", $(this).attr("rel"));
|
||||||
|
if(ids.length) {
|
||||||
|
$('.filter-item').children('.card.active').each(function(i, e) {
|
||||||
|
console.log($(e))
|
||||||
|
$(e).parents('.filter-item').clone().appendTo('#delete_seminar_items .tags-groups');
|
||||||
|
$('#delete_seminar_items .tags-groups .filter-item').addClass('def');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#delete_seminar_items').modal('show', cleanTagInputs());
|
||||||
|
function cleanTagInputs(){
|
||||||
|
var $tagsDelete = $('#delete_seminar_items'),
|
||||||
|
$filterItem = $tagsDelete.find('.filter-item');
|
||||||
|
$filterItem.find('.card, .amount').remove();
|
||||||
|
$filterItem.find('a').removeAttr('class');
|
||||||
|
$filterItem.find('a').removeAttr('href');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function deselect() {
|
||||||
|
$('.tags input[type="checkbox"]').prop('checked', false);
|
||||||
|
$('.card').removeClass('active');
|
||||||
|
$('.bottomnav .toggable').not('.open-slide').addClass('hide');
|
||||||
|
$('#deleteItems').attr('rel', "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$(function() {
|
||||||
|
checkedLength();
|
||||||
|
});
|
|
@ -0,0 +1,494 @@
|
||||||
|
// Retrieve the initial data
|
||||||
|
function temporary() {
|
||||||
|
attributesArray.length = 0;
|
||||||
|
$('.attributes').each(function() {
|
||||||
|
var attributesData = {},
|
||||||
|
$selectType = $('.dataType').data().type;
|
||||||
|
|
||||||
|
// Capture "attributes-body" within the input[type = "text"] val
|
||||||
|
$(this).find('.attributes-body').find('input[type="text"]').each(function(i) {
|
||||||
|
var $type = $(this).data().type;
|
||||||
|
attributesData[$type] = $(this).val();
|
||||||
|
});
|
||||||
|
|
||||||
|
// Capture "attributes-body" within the input[type = "radio"] checked
|
||||||
|
$(this).find('.attributes-body').find('input[type="radio"]').each(function(i) {
|
||||||
|
var $type = $(this).data().type;
|
||||||
|
attributesData[$type] = $(this).prop("checked");
|
||||||
|
});
|
||||||
|
|
||||||
|
// Capture "attributes-body" within the dataType selected
|
||||||
|
$(this).find('.attributes-body').find('.dataType').children("option:selected").each(function () {
|
||||||
|
attributesData[$selectType] = {};
|
||||||
|
attributesData[$selectType].index = $(this).index();
|
||||||
|
attributesData[$selectType].name = $(this).attr('ref');
|
||||||
|
if($(this).attr('ref') == 'typeB' || $(this).attr('ref') == 'typeE' || $(this).attr('ref') == 'typeF') {
|
||||||
|
attributesData[$selectType].option = [];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Capture "field-type" within the input[type = "text"] val
|
||||||
|
$(this).find('.field-type').find('input[type="text"]').each(function(i) {
|
||||||
|
var $type = $(this).data().type;
|
||||||
|
if(!$type.match('option_lang')) {
|
||||||
|
attributesData[$selectType][$type] = $(this).val();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$(this).find('.field-type .add-target').find('.input-append').each(function() {
|
||||||
|
var append = []
|
||||||
|
$(this).children('input[type="text"]').each(function() {
|
||||||
|
var val = $(this).val();
|
||||||
|
append.push(val);
|
||||||
|
});
|
||||||
|
attributesData[$selectType].option.push(append);
|
||||||
|
})
|
||||||
|
|
||||||
|
// Capture "field-type" within the input[type = "checkbox"] checked
|
||||||
|
$(this).find('.field-type').find('input[type="checkbox"]').each(function() {
|
||||||
|
var $type = $(this).data().type;
|
||||||
|
attributesData[$selectType][$type] = $(this).prop("checked");
|
||||||
|
});
|
||||||
|
|
||||||
|
// Capture "field-type" within the input[type = "radio"] checked
|
||||||
|
$(this).find('.field-type').find('input[type="radio"]').each(function() {
|
||||||
|
var $type = $(this).data().type;
|
||||||
|
attributesData[$selectType][$type] = $(this).prop("checked");
|
||||||
|
});
|
||||||
|
|
||||||
|
// Capture "field-type" within the dataType selected
|
||||||
|
$(this).find('.field-type').find('select').children("option:selected").each(function () {
|
||||||
|
attributesData[$selectType].dateFormat = $(this).index();
|
||||||
|
});
|
||||||
|
|
||||||
|
attributesArray.push(attributesData);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// Determine the Append input length
|
||||||
|
function inputAppendLength() {
|
||||||
|
$('.add-target').each(function(i) {
|
||||||
|
if($(this).children('.input-append:not(:hidden)').length == 1 || $(this).children('.input-append').length == 1) {
|
||||||
|
$(this).children('.input-append').each(function() {
|
||||||
|
if($(this).children('div').hasClass('tab-content')) {
|
||||||
|
var btnLength = $(this).children('.btn').length;
|
||||||
|
$(this).find('.btn').eq(btnLength-2).addClass('last');
|
||||||
|
$(this).find('.remove-input').addClass('hide');
|
||||||
|
} else {
|
||||||
|
var mediumLength = $(this).children('.input-medium').length;
|
||||||
|
$(this).children('.input-medium').eq(mediumLength-1).addClass('last');
|
||||||
|
$(this).children('.remove-input').addClass('hide');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$(this).children('.input-append').each(function() {
|
||||||
|
if($(this).children('div').hasClass('tab-content')) {
|
||||||
|
$(this).find('.btn').removeClass('last');
|
||||||
|
$(this).find('.remove-input').removeClass('hide');
|
||||||
|
} else {
|
||||||
|
$(this).children('.input-medium').removeClass('last');
|
||||||
|
$(this).children('.remove-input').removeClass('hide');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// Role Attribute Template Data
|
||||||
|
function setData(l, type, ol) {
|
||||||
|
var fields = $('#info').length ? "info[seminar_signup_fields]" : $('#sub_seminar_main').length ? "sub_seminar_main[seminar_signup_fields]" : "seminar_main[seminar_signup_fields]",
|
||||||
|
data = {
|
||||||
|
_add_more: ["add_more_" +l, fields+"["+l+"]["+type+"][add_more]"],
|
||||||
|
_calendar: ["calendar_" +l, fields+"["+l+"]["+type+"][calendar]"],
|
||||||
|
_cross_lang: ["cross_lang_" +l, fields+"["+l+"]["+type+"][cross_lang]"],
|
||||||
|
_disabled: ["disabled_" +l, fields+"["+l+"][disabled]"],
|
||||||
|
_format: ["format_" +l, fields+"["+l+"]["+type+"][format]"],
|
||||||
|
_initial: ["initial_" +l, fields+"["+l+"]["+type+"][initial]"],
|
||||||
|
_is_range: ["is_range_" +l, fields+"["+l+"]["+type+"][is_range]"],
|
||||||
|
_key: ["key_" +l, fields+"["+l+"][key]"],
|
||||||
|
_markup: fields+"["+l+"][markup]",
|
||||||
|
_option_list: ["option_list_"+l+"_"+ol, fields+"["+l+"]["+type+"][option_list]["+ol+"]", "option_list_"+ol],
|
||||||
|
_placeholder: ["placeholder_" +l, fields+"["+l+"]["+type+"][placeholder]"],
|
||||||
|
_title_translations: ["title_translations_" +l, fields+"["+l+"][title_translations]"],
|
||||||
|
_to_delete: ["to_delete_" +l, fields+"["+l+"][to_delete]"],
|
||||||
|
_to_require: ["to_require_" +l, fields+"["+l+"][to_require]"],
|
||||||
|
};
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get Default Address Form
|
||||||
|
function getAddressForm(trigger, element, decide) {
|
||||||
|
if(decide) {
|
||||||
|
addressVal.length = addressArray.length = 0;
|
||||||
|
var addressAllVal = [];
|
||||||
|
var inputNameArray = [];
|
||||||
|
trigger.closest('.input-append').find('.tab-pane').each(function() {
|
||||||
|
var adderssText = $(this).children('input[type="text"]').val(),
|
||||||
|
addersshidden = '',
|
||||||
|
addressData = {},
|
||||||
|
inputName = [];
|
||||||
|
$(this).children('input:not(:first)').each(function(j) {
|
||||||
|
var name = $(this).attr('name'),
|
||||||
|
val = $(this).val();
|
||||||
|
addersshidden += val;
|
||||||
|
addressData[name] = val;
|
||||||
|
inputName.push(name);
|
||||||
|
});
|
||||||
|
addressArray.push(addressData);
|
||||||
|
addressAllVal.push(adderssText);
|
||||||
|
inputNameArray.push(inputName);
|
||||||
|
if(adderssText != addersshidden) {
|
||||||
|
addressVal.push(false);
|
||||||
|
} else {
|
||||||
|
addressVal.push(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
element.find('.tab-pane').each(function(i) {
|
||||||
|
$(this).find('textarea, input[type="text"]').each(function(j) {
|
||||||
|
$(this).attr('name',inputNameArray[i][j]);
|
||||||
|
});
|
||||||
|
if(addressVal[i]) {
|
||||||
|
$(this).find('textarea, input[type="text"]').each(function(j) {
|
||||||
|
$(this).val(addressArray[i][$(this).attr('name')]);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$(this).find('textarea').val(addressAllVal[i]);
|
||||||
|
$(this).find('input[type="text"]').each(function(j) {
|
||||||
|
$(this).val('');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
element.off('show');
|
||||||
|
};
|
||||||
|
|
||||||
|
// Return Address Form
|
||||||
|
function returnAddressForm(element, decide) {
|
||||||
|
if(decide) {
|
||||||
|
addressArray.length = 0;
|
||||||
|
element.find('.tab-pane').each(function(i) {
|
||||||
|
var addressData = {};
|
||||||
|
$(this).find('textarea, input[type="text"]').each(function(j) {
|
||||||
|
var name = $(this).attr('name'),
|
||||||
|
val = $(this).val();
|
||||||
|
addressData[name] = val;
|
||||||
|
});
|
||||||
|
addressArray.push(addressData);
|
||||||
|
});
|
||||||
|
$.map(addressInputId, function(n, i) {
|
||||||
|
var v = '';
|
||||||
|
$('#'+n).find('input[type="hidden"]').each(function() {
|
||||||
|
$(this).val(addressArray[i][$(this).attr('name')]);
|
||||||
|
v += addressArray[i][$(this).attr('name')]
|
||||||
|
});
|
||||||
|
$('#'+n).find('input[type="text"]').each(function() {
|
||||||
|
$(this).val(v);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
returnDecide = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
$(function() {
|
||||||
|
appendIndex = null;
|
||||||
|
if($('#user-forms').length) {
|
||||||
|
addressVal = [];
|
||||||
|
addressArray = [];
|
||||||
|
addressInputId = [];
|
||||||
|
seminar_mainType = null;
|
||||||
|
returnDecide = false;
|
||||||
|
$('.attributes').each(function() {
|
||||||
|
if($(this).find('.toggle-check').attr('value') == "true") {
|
||||||
|
$(this).addClass('disabled').children('.attributes-body').hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('.returnDecide').on(clickEvent, function() {
|
||||||
|
returnDecide = true;
|
||||||
|
})
|
||||||
|
$('#address-field').on('hidden', function () {
|
||||||
|
$('.btn[data-toggle="modal"]').removeClass('active').blur();
|
||||||
|
$(this).find('.nav-tabs > li').removeClass('active').eq(0).addClass('active');
|
||||||
|
$(this).find('.tab-content > .tab-pane').removeClass('active in').eq(0).addClass('active in');
|
||||||
|
$(this).on('show', getAddressForm(null, $(this), false));
|
||||||
|
returnAddressForm($(this), returnDecide)
|
||||||
|
});
|
||||||
|
$('.control-group').delegate('.btn[data-toggle="modal"]', 'click', function() {
|
||||||
|
var $trigger = $(this);
|
||||||
|
addressInputId.length = 0;
|
||||||
|
$(this).closest('.input-append').find('.tab-pane').each(function() {
|
||||||
|
addressInputId.push($(this).attr('id'));
|
||||||
|
});
|
||||||
|
$('#address-field').on('show', getAddressForm($trigger, $('#address-field'), true));
|
||||||
|
});
|
||||||
|
$('#user-forms').delegate('.togglebox, .delete, .trigger, .remove-input', clickEvent, function(event) {
|
||||||
|
if($(this).hasClass('togglebox')) {
|
||||||
|
var seminar_main_staus = [];
|
||||||
|
if($(this).hasClass('disable')) {
|
||||||
|
$(this).find('.toggle-check')
|
||||||
|
.attr('value', 'false')
|
||||||
|
.closest('.attributes')
|
||||||
|
.removeClass('disabled')
|
||||||
|
.children('.attributes-body')
|
||||||
|
.fadeIn(300);
|
||||||
|
} else {
|
||||||
|
$(this).find('.toggle-check')
|
||||||
|
.attr('value', 'true')
|
||||||
|
.closest('.attributes')
|
||||||
|
.addClass('disabled')
|
||||||
|
.children('.attributes-body')
|
||||||
|
.fadeOut(300)
|
||||||
|
.find('.check')
|
||||||
|
.attr("checked",false)
|
||||||
|
.attr("value",seminar_main_staus);
|
||||||
|
}
|
||||||
|
$(this).toggleClass('disable');
|
||||||
|
};
|
||||||
|
if($(this).hasClass('remove-input')) {
|
||||||
|
$(this).closest('.input-append').fadeOut(300, function() {
|
||||||
|
$(this).remove();
|
||||||
|
inputAppendLength();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
if($(this).hasClass('trigger')) {
|
||||||
|
appendIndex = $(this).closest('.controls').find('.input-append').length;
|
||||||
|
nameNumber = $(this).closest('.controls').find('.input-append:eq(0)').find('input').eq(0).attr('name');
|
||||||
|
nameNumber = nameNumber.match(/[^[\D\]]+(?=])/g)[0];
|
||||||
|
seminar_mainType = $(this).data('seminar_mains')
|
||||||
|
if($(this).hasClass('textInput')) {
|
||||||
|
$("#template-text").tmpl().appendTo($(this).closest('.controls').find('.add-target'));
|
||||||
|
} else if ($(this).hasClass('textLengInput')) {
|
||||||
|
$("#template-text-language").tmpl().appendTo($(this).closest('.controls').find('.add-target'));
|
||||||
|
} else if ($(this).hasClass('address')) {
|
||||||
|
$("#template-address").tmpl().appendTo($(this).closest('.controls').find('.add-target'));
|
||||||
|
}
|
||||||
|
inputAppendLength();
|
||||||
|
};
|
||||||
|
event.preventDefault();
|
||||||
|
});
|
||||||
|
inputAppendLength();
|
||||||
|
} else {
|
||||||
|
attributesArray = [];
|
||||||
|
attributesHeaderLength = null;
|
||||||
|
templateType = null;
|
||||||
|
attributeIndex = null;
|
||||||
|
if($('.add-target').length) {
|
||||||
|
inputAppendLength();
|
||||||
|
}
|
||||||
|
if(!$('.attributes').length) {
|
||||||
|
$('#attributes-area').addClass('clickHere');
|
||||||
|
} else {
|
||||||
|
temporary();
|
||||||
|
};
|
||||||
|
|
||||||
|
$('.add-attributes').on(clickEvent, function() {
|
||||||
|
if($('#attributes-area').hasClass('clickHere')) {
|
||||||
|
$('#attributes-area').removeClass('clickHere');
|
||||||
|
};
|
||||||
|
attributesHeaderLength = $('.attributes:not(:hidden)').length+1;
|
||||||
|
attributesLength = $('#attributes-area .attributes').length;
|
||||||
|
$("#template-attributes").tmpl(setData(attributesLength, templateType, appendIndex)).appendTo( "#attributes-area" );
|
||||||
|
$('.toggle-check').togglebox();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$('.attributes.default').each(function(i) {
|
||||||
|
$(this).children('.field-type').not('.default').hide();
|
||||||
|
$(this).find('input[type="text"]').on('keyup', function() {
|
||||||
|
$(this).trigger("checking");
|
||||||
|
});
|
||||||
|
$(this).find('input[type="radio"], input[type="checkbox"], select').change(function() {
|
||||||
|
$(this).trigger("checking");
|
||||||
|
});
|
||||||
|
$(this).delegate('input[type="text"], input[type="radio"], input[type="checkbox"], select', 'checking', function(e) {
|
||||||
|
var e = e.target.type,
|
||||||
|
$data = $(this).data().type;
|
||||||
|
switch(e) {
|
||||||
|
case 'text':
|
||||||
|
var val = $(this).val();
|
||||||
|
if(!$(this).closest('.field-type').length) {
|
||||||
|
$data = attributesArray[i][$data];
|
||||||
|
} else if(!$(this).closest('.add-target').length) {
|
||||||
|
$data = attributesArray[i].select[$data];
|
||||||
|
} else {
|
||||||
|
appendIndex = $(this).parent('.input-append').index()
|
||||||
|
optionIndex = $(this).index()
|
||||||
|
$data = attributesArray[i].select.option[appendIndex][optionIndex];
|
||||||
|
}
|
||||||
|
if(val != $data) {
|
||||||
|
$(this).closest('.attributes').find('.reply').removeClass('hide');
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'radio':
|
||||||
|
var checked = $(this).prop("checked");
|
||||||
|
$data = attributesArray[i][$data];
|
||||||
|
if(checked != $data) {
|
||||||
|
$(this).closest('.attributes').find('.reply').removeClass('hide');
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'checkbox':
|
||||||
|
var checked = $(this).prop("checked");
|
||||||
|
$data = attributesArray[i].select[$data];
|
||||||
|
if(checked != $data) {
|
||||||
|
$(this).closest('.attributes').find('.reply').removeClass('hide');
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'select-one':
|
||||||
|
var ref,
|
||||||
|
$data = attributesArray[i].select.name;
|
||||||
|
$(this).children("option:selected").each(function() {
|
||||||
|
ref = $(this).attr('ref');
|
||||||
|
});
|
||||||
|
if(ref != $data) {
|
||||||
|
$(this).closest('.attributes').find('.reply').removeClass('hide');
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
$(this).delegate('.reply', clickEvent, function() {
|
||||||
|
var $bodyText = $(this).parent('.attributes-header').siblings('.attributes-body').find('input[type="text"]'),
|
||||||
|
$bodyRadio = $(this).parent('.attributes-header').siblings('.attributes-body').find('input[type="radio"]'),
|
||||||
|
$bodySelected = $(this).parent('.attributes-header').siblings('.attributes-body').find('.dataType').children("option"),
|
||||||
|
$fieldTypeO = $(this).parent('.attributes-header').siblings('.field-type.default'),
|
||||||
|
$fieldTypeN = $(this).parent('.attributes-header').siblings('.field-type').not('.default');
|
||||||
|
$bodyText.each(function() {
|
||||||
|
var $type = $(this).data().type;
|
||||||
|
$(this).val(attributesArray[i][$type]);
|
||||||
|
});
|
||||||
|
$bodyRadio.each(function() {
|
||||||
|
var $type = $(this).data().type;
|
||||||
|
$(this).prop("checked", attributesArray[i][$type])
|
||||||
|
});
|
||||||
|
$fieldTypeO.find('input[type="text"]').each(function() {
|
||||||
|
var $type = $(this).data().type;
|
||||||
|
if(!$type.match('option_lang')) {
|
||||||
|
$(this).val(attributesArray[i].select[$type]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$fieldTypeO.find('.add-target').find('.input-append').each(function(k) {
|
||||||
|
$(this).children('input[type="text"]').each(function(j) {
|
||||||
|
$(this).val(attributesArray[i].select.option[k][j]);
|
||||||
|
// var val = $(this).val();
|
||||||
|
// append.push(val);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
$fieldTypeO.find('input[type="checkbox"], input[type="radio"]').each(function() {
|
||||||
|
var $type = $(this).data().type;
|
||||||
|
$(this).prop("checked", attributesArray[i].select[$type]);
|
||||||
|
});
|
||||||
|
$fieldTypeO.find('select').children("option").eq(attributesArray[i].select.dateFormat).prop('selected',true);
|
||||||
|
$bodySelected.eq(attributesArray[i].select.index).prop('selected',true);
|
||||||
|
$fieldTypeO.show();
|
||||||
|
$fieldTypeN.empty().hide();
|
||||||
|
$(this).addClass('hide')
|
||||||
|
return false
|
||||||
|
})
|
||||||
|
});
|
||||||
|
$('#attributes-area').delegate('.togglebox, .delete, .trigger, .remove-input', clickEvent, function(event) {
|
||||||
|
if($(this).hasClass('togglebox')) {
|
||||||
|
if($(this).hasClass('disable')) {
|
||||||
|
$(this).find('.toggle-check')
|
||||||
|
.attr('value', 'false')
|
||||||
|
.closest('.attributes')
|
||||||
|
.removeClass('disabled')
|
||||||
|
.find('input, select')
|
||||||
|
.removeAttr('disabled')
|
||||||
|
.end('.attributes')
|
||||||
|
.find('.btn-group .btn')
|
||||||
|
.removeClass('disabled')
|
||||||
|
.end().find('.attribute_field_disabled').attr('value', 'false');
|
||||||
|
if($(this).closest('.attributes').find('.dataType').children("option:selected").attr('ref')) {
|
||||||
|
$(this).closest('.attributes').find('.field-type').addClass('in').find('.control-group').delay(150).fadeIn(300);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$(this).find('.toggle-check')
|
||||||
|
.attr('value', 'true')
|
||||||
|
.closest('.attributes')
|
||||||
|
.addClass('disabled')
|
||||||
|
.find('.attributes-body input, .attributes-body select')
|
||||||
|
.attr({'disabled': 'disabled'})
|
||||||
|
.end('.attributes')
|
||||||
|
.find('.btn-group .btn')
|
||||||
|
.addClass('disabled')
|
||||||
|
.end().find('.attribute_field_disabled').attr('value', 'true')
|
||||||
|
.end().find('.field-type .control-group').fadeOut(300, function() {
|
||||||
|
$(this).parent('.field-type').removeClass('in');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
$(this).toggleClass('disable');
|
||||||
|
};
|
||||||
|
if($(this).hasClass('delete')) {
|
||||||
|
$(this).closest('.attributes').fadeOut(300, function() {
|
||||||
|
$('.attributes:not(:hidden)').each(function(i) {
|
||||||
|
$(this).find('.attributes-header h4 span').text(i+1);
|
||||||
|
});
|
||||||
|
attributesHeaderLength = $('.attributes:not(:hidden)').length+1;
|
||||||
|
if(!$('.attributes:not(:hidden)').length) {
|
||||||
|
$('#attributes-area').addClass('clickHere');
|
||||||
|
};
|
||||||
|
}).find('.attribute_field_to_delete').attr('value', 'true');;
|
||||||
|
};
|
||||||
|
if($(this).hasClass('trigger')) {
|
||||||
|
// appendIndex = $(this).closest('.controls').find('.input-append').length;
|
||||||
|
appendIndex = $(this).closest('.controls').find('.input-append:last-child').children('input:first-child').attr('name');
|
||||||
|
// appendIndex = appendIndex.split("][");
|
||||||
|
// appendIndex = parseInt(appendIndex[appendIndex.length-2])+1;
|
||||||
|
appendIndex = parseInt(appendIndex.match(/[^[\D\]]+(?=])/g)[1])+1;
|
||||||
|
console.log(appendIndex)
|
||||||
|
attributeIndex = $(this).closest('.attributes').index();
|
||||||
|
templateType = $(this).closest('.attributes').find('.dataType').children("option:selected").attr('ref');
|
||||||
|
$("#template-input-append").tmpl(setData(attributeIndex, templateType, appendIndex)).appendTo($(this).closest('.controls').find('.add-target'));
|
||||||
|
inputAppendLength();
|
||||||
|
};
|
||||||
|
if($(this).hasClass('remove-input')) {
|
||||||
|
$(this).parent('.input-append').fadeOut(300, function() {
|
||||||
|
$(this).remove()
|
||||||
|
inputAppendLength();
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
event.preventDefault();
|
||||||
|
});
|
||||||
|
$('#attributes-area').delegate('.dataType', 'change', function() {
|
||||||
|
$(this).children("option:selected").each(function () {
|
||||||
|
var target = $(this).closest('.attributes').find('.field-type').not('.default');
|
||||||
|
attributeIndex = $(this).closest('.attributes').index();
|
||||||
|
appendIndex = 0
|
||||||
|
// $(this).closest('.attributes').find('.add-target').find('.input-append').length;
|
||||||
|
if($(this).closest('.attributes').hasClass('default')){
|
||||||
|
var i = $(this).closest('.attributes').index()
|
||||||
|
if($(this).attr('ref') == attributesArray[i].select.name) {
|
||||||
|
$(this).closest('.attributes').find('.field-type.default').show()
|
||||||
|
target.empty().hide();
|
||||||
|
} else {
|
||||||
|
$(this).closest('.attributes').find('.field-type.default').hide()
|
||||||
|
if($(this).attr('ref')) {
|
||||||
|
templateType = $(this).attr('ref');
|
||||||
|
target.removeAttr('class').addClass('field-type fade in ' + templateType).empty();
|
||||||
|
$("#template-type").tmpl(setData(attributeIndex, templateType, appendIndex)).appendTo(target);
|
||||||
|
if(templateType == 'typeB' || templateType == 'typeE' || templateType == 'typeF') {
|
||||||
|
inputAppendLength();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
target.removeAttr('class').addClass('field-type fade')
|
||||||
|
target.empty();
|
||||||
|
};
|
||||||
|
target.show();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if($(this).attr('ref')) {
|
||||||
|
templateType = $(this).attr('ref');
|
||||||
|
target.removeAttr('class').addClass('field-type fade in ' + templateType).empty();
|
||||||
|
$("#template-type").tmpl(setData(attributeIndex, templateType, appendIndex)).appendTo(target);
|
||||||
|
if(templateType == 'typeB' || templateType == 'typeE' || templateType == 'typeF') {
|
||||||
|
inputAppendLength();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
target.removeAttr('class').addClass('field-type fade')
|
||||||
|
target.empty();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Place all the behaviors and hooks related to the matching controller here.
|
||||||
|
# All this logic will automatically be available in application.js.
|
||||||
|
# You can use CoffeeScript in this file: http://coffeescript.org/
|
|
@ -0,0 +1,29 @@
|
||||||
|
$(function() {
|
||||||
|
|
||||||
|
$('a[data-toggle="tab"]').click(function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
$(this).tab('show');
|
||||||
|
});
|
||||||
|
|
||||||
|
$.pageslide.closeCallback(function(pageslide, item) {
|
||||||
|
$('.filter-item').removeClass("active");
|
||||||
|
});
|
||||||
|
|
||||||
|
$.pageslide.loadComplete(function(pageslide, item) {
|
||||||
|
|
||||||
|
$('.filter-item').removeClass("active");
|
||||||
|
|
||||||
|
item.closest('li').addClass('active');
|
||||||
|
|
||||||
|
if(item.data('id') == 'new') {
|
||||||
|
resetForm();
|
||||||
|
pageslide.find('form:eq(0)').attr('action', window.location.pathname);
|
||||||
|
pageslide.find('form:eq(0)').attr('method', 'post');
|
||||||
|
}else {
|
||||||
|
setForm(item.data('form'));
|
||||||
|
pageslide.find('form:eq(0)').attr('action', window.location.pathname + '/' + item.data('id'));
|
||||||
|
pageslide.find('form:eq(0)').attr('method', 'put');
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
})
|
|
@ -0,0 +1,3 @@
|
||||||
|
// Place all the styles related to the seminar controller here.
|
||||||
|
// They will automatically be included in application.css.
|
||||||
|
// You can use Sass (SCSS) here: http://sass-lang.com/
|
|
@ -0,0 +1,3 @@
|
||||||
|
/*
|
||||||
|
*= require lib/tags-groups
|
||||||
|
*/
|
|
@ -0,0 +1,20 @@
|
||||||
|
class Admin::SeminarAgreementsController < OrbitAdminController
|
||||||
|
|
||||||
|
def initialize
|
||||||
|
super
|
||||||
|
@app_title = 'seminar'
|
||||||
|
end
|
||||||
|
|
||||||
|
def index
|
||||||
|
@seminar_agreement = SeminarAgreement.first || SeminarAgreement.create
|
||||||
|
@url = admin_seminar_agreement_path(@seminar_agreement)
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
@seminar_agreement = SeminarAgreement.first
|
||||||
|
@seminar_agreement.update_attributes(params.require(:seminar_agreement).permit!)
|
||||||
|
|
||||||
|
redirect_to admin_seminar_agreements_path, notice: t('seminar.save_success')
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,70 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
class Admin::SeminarItemContentsController < OrbitAdminController
|
||||||
|
|
||||||
|
before_action ->(module_app = @app_title) { set_variables module_app }
|
||||||
|
|
||||||
|
def initialize
|
||||||
|
super
|
||||||
|
@app_title = "seminar"
|
||||||
|
end
|
||||||
|
|
||||||
|
def index
|
||||||
|
|
||||||
|
@seminar_item_contents = SeminarItemContent.where(:seminar_main_id => params[:seminar_main_id]).page(params[:page]).per(10)
|
||||||
|
@seminar = SeminarMain.find(params[:seminar_main_id])
|
||||||
|
|
||||||
|
@seminar_items = SeminarItem.where(:_id.nin=> SeminarItemContent.where(:seminar_main_id => params[:seminar_main_id]).collect{|t| t.seminar_item_id} ).collect{|a| [a.title,a.id]}
|
||||||
|
end
|
||||||
|
|
||||||
|
def new
|
||||||
|
|
||||||
|
@contents = SeminarItemContent.where(:seminar_main_id => params[:seminar_main_id]).collect{|t| t.seminar_item_id}
|
||||||
|
@seminar_item_content = SeminarItemContent.new
|
||||||
|
|
||||||
|
@seminar_items = SeminarItem.where(:_id.nin=> @contents).collect{|a| [a.title,a.id]}
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
|
||||||
|
seminar_item_content = SeminarItemContent.new(seminar_item_content_params)
|
||||||
|
|
||||||
|
seminar_item_content.create_user_id = current_user.id
|
||||||
|
seminar_item_content.update_user_id = current_user.id
|
||||||
|
|
||||||
|
seminar_item_content.save
|
||||||
|
|
||||||
|
redirect_to params['referer_url']+"?seminar_main_id="+seminar_item_content.seminar_main_id
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
|
||||||
|
@seminar_item_content = SeminarItemContent.find(params[:id])
|
||||||
|
@seminar = SeminarMain.find(@seminar_item_content.seminar_main_id)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
|
||||||
|
@seminar_item_content = SeminarItemContent.find(params[:id])
|
||||||
|
@seminar_item_content.update_attributes(seminar_item_content_params)
|
||||||
|
|
||||||
|
redirect_to "/admin/seminar_item_contents?seminar_main_id="+@seminar_item_content.seminar_main_id
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
@seminar_item_content = SeminarItemContent.find(params[:id])
|
||||||
|
|
||||||
|
@seminar_item_content.destroy
|
||||||
|
|
||||||
|
redirect_to "/admin/seminar_item_contents?seminar_main_id="+@seminar_item_content.seminar_main_id
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def seminar_item_content_params
|
||||||
|
params.require(:seminar_item_content).permit!
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,52 @@
|
||||||
|
class Admin::SeminarItemsController < OrbitAdminController
|
||||||
|
|
||||||
|
def initialize
|
||||||
|
super
|
||||||
|
@app_title = 'seminar'
|
||||||
|
end
|
||||||
|
|
||||||
|
def index
|
||||||
|
@seminar_items = SeminarItem.all
|
||||||
|
@url = admin_seminar_item_path(@seminar_items)
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
@seminar_item = SeminarItem.new(seminar_item_params)
|
||||||
|
@seminar_item.save
|
||||||
|
redirect_to request.referer, :status => 303
|
||||||
|
end
|
||||||
|
|
||||||
|
def create_in_form
|
||||||
|
@seminar_item = SeminarItem.new(seminar_item_params)
|
||||||
|
@seminar_item.saveseminar_item
|
||||||
|
render :json => {:id=>@seminar_item.id.to_s, :title=>@seminar_item.title}.to_json ,:layout => false
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
@seminar_item = SeminarItem.find(params[:id])
|
||||||
|
@seminar_item.update_attributes(seminar_item_params)
|
||||||
|
redirect_to request.referer, :status => 303
|
||||||
|
end
|
||||||
|
|
||||||
|
def toggle
|
||||||
|
@seminar_item = SeminarItem.find(params[:id])
|
||||||
|
@seminar_item.save!
|
||||||
|
redirect_to request.referer, :status => 303
|
||||||
|
end
|
||||||
|
|
||||||
|
def delete_items
|
||||||
|
items = SeminarItem.find(params[:ids].split(',')) rescue nil
|
||||||
|
if items
|
||||||
|
items.each(&:destroy)
|
||||||
|
end
|
||||||
|
redirect_to request.referer, :status => 303
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def seminar_item_params
|
||||||
|
params.require(:seminar_item).permit!
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,53 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
class Admin::SeminarSignupsController < OrbitAdminController
|
||||||
|
include Admin::SeminarsHelper
|
||||||
|
before_action ->(module_app = @app_title) { set_variables module_app }
|
||||||
|
|
||||||
|
def initialize
|
||||||
|
super
|
||||||
|
@app_title = "seminar"
|
||||||
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
|
||||||
|
params[:controller] = "admin/seminars"
|
||||||
|
|
||||||
|
@seminar_signup = SeminarSignup.find(params[:id])
|
||||||
|
@seminar = SeminarMain.find(@seminar_signup.seminar_main_id)
|
||||||
|
|
||||||
|
@form_index = 0
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
|
||||||
|
@seminar_signup = SeminarSignup.find(params[:id])
|
||||||
|
@seminar_signup.update_attributes(seminar_signup_params)
|
||||||
|
|
||||||
|
if !params[:seminar_signup_values].nil?
|
||||||
|
params[:seminar_signup_values].each_with_index do |r,i|
|
||||||
|
field_value = r.last[:id].present?
|
||||||
|
@custom_field_value = SeminarSignupValue.put_field_values(@seminar_signup, r.last, r.last[:id], field_value)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
redirect_to "/admin/seminars/#{@seminar_signup.seminar_main_id}/seminar_signup"
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
@seminar_signup = SeminarSignup.find(params[:id])
|
||||||
|
|
||||||
|
@seminar_main_id = @seminar_signup.seminar_main_id
|
||||||
|
|
||||||
|
@seminar_signup.destroy
|
||||||
|
|
||||||
|
redirect_to "/admin/seminars/#{@seminar_main_id}/seminar_signup"
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def seminar_signup_params
|
||||||
|
params.require(:seminar_signup).permit!
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,194 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
class Admin::SeminarsController < OrbitAdminController
|
||||||
|
|
||||||
|
require 'axlsx'
|
||||||
|
|
||||||
|
before_action ->(module_app = @app_title) { set_variables module_app }
|
||||||
|
before_action :set_seminar, only: [:edit, :set_write_off, :seminar_signup, :destroy]
|
||||||
|
|
||||||
|
def initialize
|
||||||
|
super
|
||||||
|
@app_title = "seminar"
|
||||||
|
end
|
||||||
|
|
||||||
|
def filter_fields(categories)
|
||||||
|
{
|
||||||
|
:category=>categories.map{|c| {:title=>(c.title.blank? ? " " : c.title), :id=>c.id}}
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
def index
|
||||||
|
@categories = @module_app.categories.enabled
|
||||||
|
@filter_fields = filter_fields(@categories)
|
||||||
|
@table_fields = [:category, 'seminar.title', 'seminar.event_during', 'seminar.signup_during', 'seminar.signup_count', 'seminar.export']
|
||||||
|
|
||||||
|
if !params[:sort].blank?
|
||||||
|
if params[:sort] == 'event_during'
|
||||||
|
sort = {:seminar_start_date.to_sym=>params[:order]}
|
||||||
|
elsif params[:sort] == 'signup_during'
|
||||||
|
sort = {:signup_start_date.to_sym=>params[:order]}
|
||||||
|
else
|
||||||
|
sort = {params[:sort].to_sym=>params[:order]}
|
||||||
|
end
|
||||||
|
else
|
||||||
|
sort = {:signup_start_date=>"desc"}
|
||||||
|
end
|
||||||
|
|
||||||
|
@seminars = SeminarMain.all.order_by(sort).with_categories(filters("category"))
|
||||||
|
|
||||||
|
@seminars = search_data(@seminars,[:title]).page(params[:page]).per(10)
|
||||||
|
|
||||||
|
if request.xhr?
|
||||||
|
render :partial => "index"
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def export
|
||||||
|
|
||||||
|
@seminar = SeminarMain.find(params[:id])
|
||||||
|
@seminar_signups = SeminarSignup.where(:seminar_main_id => params[:id])
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
format.xlsx {
|
||||||
|
response.headers['Content-Disposition'] = 'attachment; filename="export.xlsx"'
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def new
|
||||||
|
|
||||||
|
@seminar = SeminarMain.new
|
||||||
|
|
||||||
|
@seminar_items = SeminarItem.all
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
|
||||||
|
if !seminar_params['seminar_links_attributes'].nil?
|
||||||
|
seminar_params['seminar_links_attributes'].each do |idx,link|
|
||||||
|
seminar_params['seminar_links_attributes'].delete(idx.to_s) if link['url'].blank?
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
seminar = SeminarMain.new(seminar_params)
|
||||||
|
|
||||||
|
seminar.create_user_id = current_user.id
|
||||||
|
seminar.update_user_id = current_user.id
|
||||||
|
|
||||||
|
seminar.save
|
||||||
|
|
||||||
|
redirect_to params['referer_url']
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
|
||||||
|
@seminar_items = SeminarItem.all
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
if params[:seminar_main][:seminar_signup_fields]
|
||||||
|
seminar_params[:seminar_signup_fields].each do |a|
|
||||||
|
@field_name = 'seminar_main'
|
||||||
|
field_status = a.last[:id].present?
|
||||||
|
@attribute_field = SeminarSignupField.add_seminar_signup_field(@seminar, a.last, a.last[:id], field_status)
|
||||||
|
@attribute = @seminar
|
||||||
|
end
|
||||||
|
flash.now[:notice] = "Updated Fields"
|
||||||
|
@seminar.seminar_signup_fields.each{|t| t.destroy if t["to_delete"] == true}
|
||||||
|
|
||||||
|
redirect_to admin_seminars_path
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
if !seminar_params['seminar_links_attributes'].nil?
|
||||||
|
seminar_params['seminar_links_attributes'].each do |idx,link|
|
||||||
|
seminar_params['seminar_links_attributes'].delete(idx.to_s) if link['url'].blank?
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
@seminar.update_user_id = current_user.id
|
||||||
|
|
||||||
|
if @seminar.update_attributes(seminar_params)
|
||||||
|
@seminar.seminar_signup_fields.each{|t| t.destroy if t["to_delete"] == true}
|
||||||
|
redirect_to params['referer_url']
|
||||||
|
else
|
||||||
|
flash.now[:error] = t('update.error.category')
|
||||||
|
render action: :edit
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_write_off
|
||||||
|
|
||||||
|
@seminar.donation_write_off_status = true
|
||||||
|
@seminar.save
|
||||||
|
|
||||||
|
redirect_to "/admin/seminars?page=#{params['page']}"
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
|
||||||
|
@seminar.destroy
|
||||||
|
redirect_to "/admin/seminars"
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def seminar_signup_field
|
||||||
|
@field_name = 'seminar_main'
|
||||||
|
@attribute = SeminarMain.find(params[:id])
|
||||||
|
@attribute_type = 'seminar'
|
||||||
|
@class = 'seminars'
|
||||||
|
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)
|
||||||
|
else
|
||||||
|
@seminar_signups = SeminarSignup.where(:seminar_main_id => @seminar.id).page(params[:page]).per(10)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def edit_seminar_signup
|
||||||
|
@seminar_signup = SeminarSignup.find(params[:id])
|
||||||
|
@seminar = SeminarMain.find(@seminar_signup.seminar_main_id)
|
||||||
|
end
|
||||||
|
|
||||||
|
def delete_seminar_signup
|
||||||
|
|
||||||
|
@seminar_signup = SeminarSignup.find(params[:id])
|
||||||
|
|
||||||
|
@seminar_id = @seminar_signup.seminar_main_id
|
||||||
|
|
||||||
|
@seminar_signup.destroy
|
||||||
|
|
||||||
|
redirect_to "/admin/seminars/@seminar_id.to_s/seminar_signup"
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def set_seminar
|
||||||
|
@seminar = SeminarMain.find(params[:id])
|
||||||
|
end
|
||||||
|
|
||||||
|
def seminar_params
|
||||||
|
params.require(:seminar_main).permit!
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,317 @@
|
||||||
|
class SeminarsController < ApplicationController
|
||||||
|
|
||||||
|
helper MemberHelper
|
||||||
|
include Admin::SeminarsHelper
|
||||||
|
|
||||||
|
def index
|
||||||
|
|
||||||
|
time_now = Time.now
|
||||||
|
|
||||||
|
seminars = SeminarMain.filter_by_categories.desc(:signup_start_date).page(OrbitHelper.params[:page_no]).per(OrbitHelper.page_data_count)
|
||||||
|
|
||||||
|
{
|
||||||
|
"seminars" => seminars,
|
||||||
|
'time_now' => time_now,
|
||||||
|
"total_pages" => seminars.total_pages
|
||||||
|
}
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def show_privacy
|
||||||
|
|
||||||
|
params = OrbitHelper.params
|
||||||
|
|
||||||
|
seminar = SeminarMain.find_by(uid: params[:uid])
|
||||||
|
|
||||||
|
seminar_agreement = SeminarAgreement.first
|
||||||
|
|
||||||
|
{
|
||||||
|
'seminar' => seminar,
|
||||||
|
"seminar_agreement" => seminar_agreement
|
||||||
|
}
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def show_data
|
||||||
|
|
||||||
|
time_now = Time.now
|
||||||
|
|
||||||
|
session = OrbitHelper.get_session
|
||||||
|
|
||||||
|
params = OrbitHelper.params
|
||||||
|
|
||||||
|
seminar = SeminarMain.find_by(uid: params[:uid])
|
||||||
|
|
||||||
|
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 )
|
||||||
|
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
|
||||||
|
sign_up = t('seminar.sign_up_not_yet')
|
||||||
|
else
|
||||||
|
sign_up = t('seminar.sign_up_overdue')
|
||||||
|
end
|
||||||
|
|
||||||
|
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 !session[:seminar_signup_id].blank?
|
||||||
|
if session[:seminar_main_id] == seminar.id
|
||||||
|
contribute_action = ('<a href="'+ OrbitHelper.url_to_show(seminar.to_param) + '?method=con_upload">' + t('seminar_signup.uploads') + '</a>').html_safe
|
||||||
|
else
|
||||||
|
contribute_action = ('<a href="'+ OrbitHelper.url_to_show(seminar.to_param) + '?method=con_login">' + t('seminar_signup.con_login') + '</a>').html_safe
|
||||||
|
end
|
||||||
|
else
|
||||||
|
contribute_action = ('<a href="'+ OrbitHelper.url_to_show(seminar.to_param) + '?method=con_login">' + t('seminar_signup.con_login') + '</a>').html_safe
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
'seminar' => seminar,
|
||||||
|
'sign_up' => sign_up,
|
||||||
|
'contribute_action' => contribute_action,
|
||||||
|
'time_now' => time_now,
|
||||||
|
'contribute_time_range' => SeminarMain.time_range(seminar.contribute_start_date, seminar.contribute_end_date),
|
||||||
|
'sign_up_time_range' => SeminarMain.time_range(seminar.signup_start_date, seminar.signup_end_date),
|
||||||
|
'seminar_time_range' => SeminarMain.time_range(seminar.seminar_start_date, seminar.seminar_end_date)
|
||||||
|
}
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def show
|
||||||
|
|
||||||
|
params = OrbitHelper.params
|
||||||
|
|
||||||
|
module_app = ModuleApp.where(:key => "seminar").first
|
||||||
|
|
||||||
|
categories = module_app.categories
|
||||||
|
|
||||||
|
seminar = SeminarMain.find_by(uid: params[:uid])
|
||||||
|
|
||||||
|
seminar_signup = SeminarSignup.new
|
||||||
|
|
||||||
|
time_now = Time.now
|
||||||
|
|
||||||
|
{
|
||||||
|
"seminar" => seminar,
|
||||||
|
"seminar_signup" => seminar_signup,
|
||||||
|
"time_now" => time_now
|
||||||
|
}
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def check_email
|
||||||
|
|
||||||
|
params = OrbitHelper.params
|
||||||
|
|
||||||
|
if !params[:email].blank?
|
||||||
|
count = SeminarSignup.where(:email => params[:email], :seminar_main_id => params[:no]).count
|
||||||
|
|
||||||
|
result = count > 0 ? '已存在' : '可使用'
|
||||||
|
else
|
||||||
|
result = '請輸入email'
|
||||||
|
end
|
||||||
|
|
||||||
|
{
|
||||||
|
"result" => result
|
||||||
|
}
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def check_availability
|
||||||
|
|
||||||
|
params = OrbitHelper.params
|
||||||
|
|
||||||
|
response = {}
|
||||||
|
case params[:type]
|
||||||
|
when "seminar_signup_email"
|
||||||
|
|
||||||
|
response["success"] = SeminarSignup.where(:email => params[:value], :seminar_main_id => params[:no]).count > 0 ? false : true
|
||||||
|
end
|
||||||
|
render :json => response.to_json
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
|
||||||
|
@signup = SeminarSignup.where(email: params[:seminar_signup][:email], seminar_main_id: params[:seminar_signup][:seminar_main_id] ).first
|
||||||
|
|
||||||
|
@seminar_signup = SeminarSignup.new(seminar_signup_params)
|
||||||
|
|
||||||
|
if @signup.blank? && @seminar_signup.save
|
||||||
|
# if gotcha_valid? && @seminar_signup.save
|
||||||
|
|
||||||
|
if !params[:seminar_signup_values].nil?
|
||||||
|
params[:seminar_signup_values].each_with_index do |r,i|
|
||||||
|
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
|
||||||
|
end
|
||||||
|
|
||||||
|
redirect_to "#{params[:referer_url]}/?method=signup_ok"
|
||||||
|
else
|
||||||
|
if !@signup.blank?
|
||||||
|
redirect_to "#{params[:referer_url]}", :notice => 'mail已存在'
|
||||||
|
else
|
||||||
|
redirect_to "#{params[:referer_url]}", :notice => t('recaptcha.errors.verification_failed')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def signup_ok
|
||||||
|
end
|
||||||
|
|
||||||
|
def add_file_proc
|
||||||
|
|
||||||
|
@con = SeminarSignupContribute.new(seminar_signup_contribute_params)
|
||||||
|
|
||||||
|
if @con.save
|
||||||
|
|
||||||
|
redirect_to "#{params[:referer_url]}/?method=con_upload"
|
||||||
|
else
|
||||||
|
redirect_to "#{params[:referer_url]}", :notice => t('recaptcha.errors.verification_failed')
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
|
||||||
|
@con = SeminarSignupContribute.find(params[:seminar_signup_contribute][:id])
|
||||||
|
@con.update_attributes(seminar_signup_contribute_params)
|
||||||
|
|
||||||
|
if @con.save
|
||||||
|
|
||||||
|
redirect_to "#{params[:referer_url]}/?method=con_upload"
|
||||||
|
else
|
||||||
|
redirect_to "#{params[:referer_url]}", :notice => t('recaptcha.errors.verification_failed')
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def del_file
|
||||||
|
|
||||||
|
con = SeminarSignupContribute.find(params[:con_no])
|
||||||
|
|
||||||
|
# seminar_signup = SeminarSignup.find_by(_id: con.seminar_signup_id )
|
||||||
|
# seminar = SeminarMain.find_by(_id: seminar_signup.seminar_main_id )
|
||||||
|
|
||||||
|
con.destroy
|
||||||
|
|
||||||
|
redirect_to "#{params[:referer_url]}/?method=con_upload"
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def add_file
|
||||||
|
|
||||||
|
session = OrbitHelper.get_session
|
||||||
|
|
||||||
|
if !session[:seminar_main_id].blank?
|
||||||
|
|
||||||
|
seminar = SeminarMain.find_by(id: session[:seminar_main_id])
|
||||||
|
|
||||||
|
seminar_signup = SeminarSignup.find_by(_id: session[:seminar_signup_id], seminar_main_id: session[:seminar_main_id] )
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
seminar = {}
|
||||||
|
seminar_signup = {}
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
con = SeminarSignupContribute.new
|
||||||
|
|
||||||
|
{
|
||||||
|
'con' => con,
|
||||||
|
'seminar' => seminar,
|
||||||
|
'seminar_signup' => seminar_signup
|
||||||
|
}
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def edit_file
|
||||||
|
|
||||||
|
params = OrbitHelper.params
|
||||||
|
|
||||||
|
con = SeminarSignupContribute.find(params[:con_no])
|
||||||
|
|
||||||
|
{
|
||||||
|
'con' => con
|
||||||
|
}
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def con_upload
|
||||||
|
|
||||||
|
time_now = Time.now
|
||||||
|
|
||||||
|
session = OrbitHelper.get_session
|
||||||
|
|
||||||
|
if !session[:seminar_main_id].blank?
|
||||||
|
|
||||||
|
seminar = SeminarMain.find_by(id: session[:seminar_main_id])
|
||||||
|
|
||||||
|
seminar_signup = SeminarSignup.find_by(_id: session[:seminar_signup_id], seminar_main_id: session[:seminar_main_id] )
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
seminar = {}
|
||||||
|
seminar_signup = {}
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
{
|
||||||
|
'time_now' => time_now,
|
||||||
|
'seminar' => seminar,
|
||||||
|
'seminar_signup' => seminar_signup
|
||||||
|
}
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def con_logout
|
||||||
|
|
||||||
|
# redirect_to page_for_seminar_url
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def con_login
|
||||||
|
|
||||||
|
time_now = Time.now
|
||||||
|
|
||||||
|
params = OrbitHelper.params
|
||||||
|
|
||||||
|
seminar = SeminarMain.find_by(uid: params[:uid])
|
||||||
|
|
||||||
|
{
|
||||||
|
'seminar' => seminar,
|
||||||
|
'time_now' => time_now
|
||||||
|
}
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def con_login_proc
|
||||||
|
|
||||||
|
seminar = SeminarMain.find_by(id: params[:seminar_signup][:seminar_main_id])
|
||||||
|
|
||||||
|
@seminar_signup = SeminarSignup.where(:status=>'C', :email=> params[:user_name], :password => params[:password], :seminar_main_id => params[:seminar_signup][:seminar_main_id]).first
|
||||||
|
|
||||||
|
if !@seminar_signup.blank?
|
||||||
|
|
||||||
|
session[:seminar_signup_id] = @seminar_signup.id
|
||||||
|
session[:seminar_main_id] = @seminar_signup.seminar_main_id
|
||||||
|
|
||||||
|
redirect_to "#{params[:referer_url]}/?method=con_upload"
|
||||||
|
else
|
||||||
|
redirect_to "#{params[:referer_url]}/?method=con_login", :notice => '登入失敗'
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def seminar_signup_params
|
||||||
|
params.require(:seminar_signup).permit!
|
||||||
|
end
|
||||||
|
|
||||||
|
def seminar_signup_contribute_params
|
||||||
|
params.require(:seminar_signup_contribute).permit!
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,451 @@
|
||||||
|
module Admin::SeminarsFieldHelper
|
||||||
|
|
||||||
|
include ActionView::Helpers::FormTagHelper
|
||||||
|
include ActionView::Helpers::FormOptionsHelper
|
||||||
|
include ActionView::Helpers::DateHelper
|
||||||
|
include ActionView::Helpers::TagHelper
|
||||||
|
include ActionView::Helpers::RenderingHelper
|
||||||
|
include ActionView::Context
|
||||||
|
include OrbitBasis::RenderAnywhere
|
||||||
|
|
||||||
|
include OrbitFormHelper
|
||||||
|
|
||||||
|
def block_helper(member,index,disable = false,attribute_type=nil,signup=nil, to_require=true)
|
||||||
|
unless self.disabled
|
||||||
|
@index = index
|
||||||
|
@require = to_require
|
||||||
|
@markup_options = markup_options.merge(:disabled=>disable, :required => to_require)
|
||||||
|
@member = member
|
||||||
|
@attribute_value = @member.get_value_from_field_id(id,signup)
|
||||||
|
@attribute_type = attribute_type
|
||||||
|
@new_attribute = @attribute_value.nil?
|
||||||
|
@attribute_value = @attribute_value || signup.seminar_signup_values.build(seminar_signup_field_id: id)
|
||||||
|
@prefiled_value = @attribute_value.value rescue nil
|
||||||
|
return instance_eval("render_#{markup}") rescue ""
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def lang_tab(str,lang)
|
||||||
|
content_tag(:div,str,:class=>"tab-pane fade",:id=>(get_field_name_base+"tab_#{lang}"))
|
||||||
|
end
|
||||||
|
|
||||||
|
def render_address
|
||||||
|
control_group_wrapper do |key,value|
|
||||||
|
value = (can_muti_lang_input? ? @prefiled_value[key] : @prefiled_value) rescue nil
|
||||||
|
key_field = can_muti_lang_input? ? "[#{key}]" : ""
|
||||||
|
place_holder= @panel_setting["placeholder"][key] rescue ''
|
||||||
|
# result = text_area_tag(get_field_name_base + key_field, value,@markup_options.merge({:placeholder=>place_holder,:for=>key}))
|
||||||
|
result = text_field_tag(get_field_name_base + key_field, value,@markup_options.merge({:placeholder=>place_holder,:for=>key}))
|
||||||
|
|
||||||
|
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}")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def render_checkbox
|
||||||
|
@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=>"seminar_signup_values_#{self.id}"})+value[I18n.locale.to_s],@markup_options.merge(:class=>"checkbox inline"))
|
||||||
|
end.join rescue ""
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def render_date
|
||||||
|
d = DateTime.now()
|
||||||
|
|
||||||
|
if date_is_range?
|
||||||
|
# fill_from = @attribute_value.get_date(:from) rescue nil
|
||||||
|
# fill_to = @attribute_value.get_date(:to) rescue nil
|
||||||
|
control_group_wrapper do
|
||||||
|
|
||||||
|
case self.typeC['format']
|
||||||
|
when 'format1'
|
||||||
|
fill_from = (@prefiled_value && @prefiled_value["from"] ) ? @prefiled_value["from"] : d.strftime("%Y/%m/%d %H:%M")
|
||||||
|
fill_to = (@prefiled_value && @prefiled_value["to"] ) ? @prefiled_value["to"] : d.strftime("%Y/%m/%d %H:%M")
|
||||||
|
buf = datetime_picker(get_field_name_base+'[from]', fill_from, 'yyyy/MM/dd hh:mm', true)
|
||||||
|
buf << ' ~ '
|
||||||
|
buf << datetime_picker(get_field_name_base+'[to]', fill_to, 'yyyy/MM/dd hh:mm', true)
|
||||||
|
when 'format2'
|
||||||
|
fill_from = (@prefiled_value && @prefiled_value["from"] ) ? @prefiled_value["from"] : d.strftime("%Y/%m/%d")
|
||||||
|
fill_to = (@prefiled_value && @prefiled_value["to"] ) ? @prefiled_value["to"] : d.strftime("%Y/%m/%d")
|
||||||
|
buf = datetime_picker(get_field_name_base+'[from]', fill_from, 'yyyy/MM/dd')
|
||||||
|
buf << ' ~ '
|
||||||
|
buf << datetime_picker(get_field_name_base+'[to]', fill_to, 'yyyy/MM/dd')
|
||||||
|
when 'format3'
|
||||||
|
fill_from = (@prefiled_value && @prefiled_value["from"] ) ? @prefiled_value["from"] : d.strftime("%Y/%m")
|
||||||
|
fill_to = (@prefiled_value && @prefiled_value["to"] ) ? @prefiled_value["to"] : d.strftime("%Y/%m/")
|
||||||
|
buf = datetime_picker(get_field_name_base+'[from]', fill_from, 'yyyy/MM')
|
||||||
|
buf << ' ~ '
|
||||||
|
buf << datetime_picker(get_field_name_base+'[to]', fill_to, 'yyyy/MM')
|
||||||
|
when 'format4'
|
||||||
|
fill_from = (@prefiled_value && @prefiled_value["from"] ) ? @prefiled_value["from"] : d.strftime("%Y")
|
||||||
|
fill_to = (@prefiled_value && @prefiled_value["to"] ) ? @prefiled_value["to"] : d.strftime("%Y")
|
||||||
|
buf = datetime_picker(get_field_name_base+'[from]', fill_from, 'yyyy')
|
||||||
|
buf << ' ~ '
|
||||||
|
buf << datetime_picker(get_field_name_base+'[to]', fill_to, 'yyyy')
|
||||||
|
end
|
||||||
|
|
||||||
|
# buf = date_select(get_field_name_base+'[from]',nil,@markup_options.merge(:default=>fill_from),:class=>"input-small")
|
||||||
|
# buf << ' ~ '
|
||||||
|
# buf << date_select(get_field_name_base+'[to]',nil,@markup_options.merge(:default=>fill_to),:class=>"input-small")
|
||||||
|
buf
|
||||||
|
end
|
||||||
|
else
|
||||||
|
# @prefiled_value = @attribute_value.get_date
|
||||||
|
# @prefiled_value = @attribute_value.get_date
|
||||||
|
|
||||||
|
case self.typeC['format']
|
||||||
|
when 'format1'
|
||||||
|
tmp = datetime_picker(get_field_name_base, (@prefiled_value ? @prefiled_value : d.strftime("%Y/%m/%d %H:%M")), 'yyyy/MM/dd hh:mm', true)
|
||||||
|
when 'format2'
|
||||||
|
tmp = datetime_picker(get_field_name_base, (@prefiled_value ? @prefiled_value : d.strftime("%Y/%m/%d")), 'yyyy/MM/dd')
|
||||||
|
when 'format3'
|
||||||
|
tmp = datetime_picker(get_field_name_base, (@prefiled_value ? @prefiled_value : d.strftime("%Y/%m")), 'yyyy/MM')
|
||||||
|
when 'format4'
|
||||||
|
tmp = datetime_picker(get_field_name_base, (@prefiled_value ? @prefiled_value : d.strftime("%Y")), 'yyyy')
|
||||||
|
end
|
||||||
|
|
||||||
|
control_group_wrapper{tmp}
|
||||||
|
# control_group_wrapper{date_select(get_field_name_base,nil,@markup_options.merge(:default=>@prefiled_value),:class=>"input-small")}
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def seminar_datetime_picker(object_name, value, format, time=false)
|
||||||
|
content_tag :div, :class => "input-append datetimepick", "data-date-format"=>format, "data-picktime"=>"#{time}" do
|
||||||
|
concat text_field_tag(object_name, value, :placeholder=>format)
|
||||||
|
concat (content_tag :span, :class => 'add-on clearDate' do
|
||||||
|
content_tag :i, nil, :class => 'icons-cross-3'
|
||||||
|
end)
|
||||||
|
concat (content_tag :span, :class => 'add-on iconbtn' do
|
||||||
|
content_tag :i, nil, 'data-time-icon' => 'icons-clock', 'data-date-icon' => 'icons-calendar', :class=>"icons-calendar"
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def render_date_durnation #Need re-write low priority
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def render_radio_button
|
||||||
|
@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"))
|
||||||
|
end.join
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def render_select
|
||||||
|
prompt = @panel_setting["initial"][I18n.locale.to_s] rescue nil
|
||||||
|
@markup_options.merge!(:prompt => prompt) unless prompt.nil?
|
||||||
|
control_group_wrapper{select_tag( get_field_name_base,options_for_select(self.typeB["option_list"].collect{|p| [p[1][I18n.locale.to_s],p[0]]},@prefiled_value),@markup_options)} rescue ""
|
||||||
|
end
|
||||||
|
|
||||||
|
def render_text_area
|
||||||
|
control_group_wrapper do |key,value|
|
||||||
|
value = can_muti_lang_input? ? @prefiled_value[key] : @prefiled_value
|
||||||
|
key = can_muti_lang_input? ? "[#{key}]" : ""
|
||||||
|
place_holder= @panel_setting["placeholder"][I18n.locale.to_s] rescue ''
|
||||||
|
text_area_tag(get_field_name_base + key, value,@markup_options.merge(:placeholder=>place_holder))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def render_text_field
|
||||||
|
a = control_group_wrapper do |key,value|
|
||||||
|
add_more_blank = can_add_more ? "[]" : ""
|
||||||
|
key_field = can_muti_lang_input? ? "[#{key}]" : ""
|
||||||
|
place_holder= @panel_setting["placeholder"][key] rescue ''
|
||||||
|
text_field_tag([get_field_name_base,add_more_blank,key_field].join, value,@markup_options.merge(:placeholder=>place_holder))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def date_is_range?
|
||||||
|
is_range = "false"
|
||||||
|
data = get_data
|
||||||
|
if !data.nil?
|
||||||
|
is_range = data['is_range'] if data.has_key? "is_range"
|
||||||
|
end
|
||||||
|
is_range == "true"
|
||||||
|
end
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
def valid_locales
|
||||||
|
site = Site.first
|
||||||
|
[I18n.locale]+(site.valid_locales-[I18n.locale])
|
||||||
|
end
|
||||||
|
|
||||||
|
def lang_panel_tabbable_wrapper(add_more_params,&block)
|
||||||
|
add_more_counter = ''
|
||||||
|
|
||||||
|
if self.markup=='text_area' #or self.markup=='address'
|
||||||
|
|
||||||
|
tmp1 = valid_locales.collect do |key|
|
||||||
|
value = @prefiled_value[key] rescue nil
|
||||||
|
# div_class_ary = ["tab-pane" ,"fade","#{get_pairing_tab_class({})}_#{key}"]
|
||||||
|
div_class_ary = ["tab-pane" ,"fade"]
|
||||||
|
|
||||||
|
div_id = "#{get_pairing_tab_class({})}_#{key}"
|
||||||
|
|
||||||
|
if can_add_more
|
||||||
|
add_more_value = add_more_params[0][:value]
|
||||||
|
add_more_counter = add_more_params[0][:counter]
|
||||||
|
value = add_more_value[key] rescue nil
|
||||||
|
div_class_ary << "add_more_item_#{add_more_counter}"
|
||||||
|
end
|
||||||
|
|
||||||
|
div_class = div_class_ary.join(" ")
|
||||||
|
div_class << (key == I18n.locale ? " active in" : '')
|
||||||
|
content_tag(:div,yield(key,value), :id=>div_id,:class=>div_class)
|
||||||
|
end# of VALID_LOCALES.collect for tabed input
|
||||||
|
|
||||||
|
|
||||||
|
tmp2 = content_tag(:div,:class => 'btn-group', :data=>{:toggle=>"buttons-radio"}) do
|
||||||
|
buff2 = valid_locales.each.collect do |key|
|
||||||
|
# link_entry = self.add_more ? "#{add_more_tab(:tab_btn,loop_counter,key)}" : "#tab"+id.to_s+"_#{key}"
|
||||||
|
link_entry_ary = ["##{get_pairing_tab_class({})}","_#{key}"]
|
||||||
|
link_entry_ary << ".add_more_item_#{add_more_counter}" if can_add_more
|
||||||
|
link_entry = link_entry_ary.join
|
||||||
|
link_to(I18n.t(key),link_entry,:data=>{:toggle=>"tab"},:class=>"btn #{(key == I18n.locale ? "active" : nil)}",:for=>key)
|
||||||
|
end # of VALID_LOCALES.collect for tabs
|
||||||
|
|
||||||
|
buff2 << link_to((content_tag :i,'',:class=>'icon-edit'),"##{get_pairing_tab_class({})}_m_window", :role=>"button",:class=>'btn',:data=>{:toggle=>"modal"}) if self.markup == 'address'
|
||||||
|
buff2 << link_to((content_tag :i,'',:class=>'icon-trash'),"#",:class=>"btn remove-input") if self.add_more
|
||||||
|
buff2.join.html_safe
|
||||||
|
end # of content ul
|
||||||
|
|
||||||
|
|
||||||
|
tmp = content_tag :div,:class=> "tab-content textarea-lang" do
|
||||||
|
tmp2 << tmp1.join('').html_safe
|
||||||
|
end
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
# tmp = content_tag :div,:class=> (add_more || self.markup=='address') ? "input-append" : "tab-content" do
|
||||||
|
tmp1 =
|
||||||
|
content_tag :div,:class=> "tab-content" do
|
||||||
|
|
||||||
|
buff = valid_locales.collect do |key|
|
||||||
|
value = @prefiled_value[key] rescue nil
|
||||||
|
# div_class_ary = ["tab-pane" ,"fade","#{get_pairing_tab_class({})}_#{key}"]
|
||||||
|
div_class_ary = ["tab-pane" ,"fade"]
|
||||||
|
|
||||||
|
div_id = "#{get_pairing_tab_class({})}_#{key}"
|
||||||
|
|
||||||
|
|
||||||
|
if can_add_more
|
||||||
|
add_more_value = add_more_params[0][:value]
|
||||||
|
add_more_counter = add_more_params[0][:counter]
|
||||||
|
value = add_more_value[key] rescue nil
|
||||||
|
div_class_ary << "add_more_item_#{add_more_counter}"
|
||||||
|
end
|
||||||
|
|
||||||
|
div_class = div_class_ary.join(" ")
|
||||||
|
div_class << (key == I18n.locale ? " active in" : '')
|
||||||
|
content_tag(:div,yield(key,value), :id=>div_id,:class=>div_class)
|
||||||
|
end# of VALID_LOCALES.collect for tabed input
|
||||||
|
|
||||||
|
buff.join('').html_safe
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
tmp2 = content_tag(:div,:class => 'btn-group', :data=>{:toggle=>"buttons-radio"}) do
|
||||||
|
buff2 = valid_locales.each.collect do |key|
|
||||||
|
# link_entry = self.add_more ? "#{add_more_tab(:tab_btn,loop_counter,key)}" : "#tab"+id.to_s+"_#{key}"
|
||||||
|
link_entry_ary = ["##{get_pairing_tab_class({})}","_#{key}"]
|
||||||
|
link_entry_ary << ".add_more_item_#{add_more_counter}" if can_add_more
|
||||||
|
link_entry = link_entry_ary.join
|
||||||
|
link_to(I18n.t(key),link_entry,:data=>{:toggle=>"tab"},:class=>"btn #{(key == I18n.locale ? "active" : nil)}",:for=>key)
|
||||||
|
end # of VALID_LOCALES.collect for tabs
|
||||||
|
|
||||||
|
buff2 << link_to((content_tag :i,'',:class=>'icon-edit'),"#address-field", :role=>"button",:class=>'btn',:data=>{:toggle=>"modal"}) if self.markup == 'address'
|
||||||
|
buff2 << link_to((content_tag :i,'',:class=>'icon-trash'),"#",:class=>"btn remove-input") if self.add_more
|
||||||
|
buff2.join.html_safe
|
||||||
|
end # of content ul
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
tmp = content_tag :div,:class=> "input-append" do
|
||||||
|
tmp1 << tmp2
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
def controls_wrapper(*add_more_params,&block)
|
||||||
|
result = ''
|
||||||
|
add_more_counter = ""
|
||||||
|
|
||||||
|
if can_add_more
|
||||||
|
add_more_counter = add_more_params[0][:counter]
|
||||||
|
add_more_value = add_more_params[0][:value]
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if can_muti_lang_input?
|
||||||
|
result << lang_panel_tabbable_wrapper(add_more_params,&block)
|
||||||
|
result << gen_modal_dialog if self.markup == "address"
|
||||||
|
|
||||||
|
# result << add_more_unt if can_add_more
|
||||||
|
else #cross lang field
|
||||||
|
|
||||||
|
case can_add_more
|
||||||
|
when true
|
||||||
|
value = add_more_params[0][:value]
|
||||||
|
result << content_tag(:div,:class=>"input-append"){yield(nil,value) + link_to((content_tag :i,'',:class=>'icon-trash'),"#",:class=>"btn remove-input") }
|
||||||
|
# result << add_more_unt
|
||||||
|
else
|
||||||
|
value = @prefiled_value
|
||||||
|
result << yield(nil,value)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
result.html_safe
|
||||||
|
|
||||||
|
end # of def controls_wrapper(&block)
|
||||||
|
|
||||||
|
def control_group_wrapper(&block)
|
||||||
|
div_class = can_muti_lang_input? ? "col-sm-10 controls" : "col-sm-10 controls"
|
||||||
|
# div_class = can_muti_lang_input? ? "control-group language-swich" : "control-group"
|
||||||
|
result =""
|
||||||
|
|
||||||
|
case self.markup
|
||||||
|
|
||||||
|
when "text_field"
|
||||||
|
|
||||||
|
if can_add_more
|
||||||
|
|
||||||
|
multipleInputs =
|
||||||
|
content_tag(:div,:class=>"add-target") do
|
||||||
|
@attribute_value.add_more_counter.times.collect do |t|
|
||||||
|
controls_wrapper(:value=>(@prefiled_value[t] rescue nil),:counter=>t,&block)
|
||||||
|
end.join('').html_safe # of add_more fields
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
temp = content_tag(:div, multipleInputs + add_more_unt, :class=>'add-input')
|
||||||
|
|
||||||
|
result = form_label + content_tag(:div,temp,:class=>div_class)
|
||||||
|
|
||||||
|
# result = label + multipleInputs + add_more_unt
|
||||||
|
# result = label + 一堆的輸入框(要用 multipleInput editMore 包起來) + add_more btn + hidden_fields
|
||||||
|
else
|
||||||
|
result = form_label + content_tag(:div,controls_wrapper(&block),:class=>div_class)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
when "address"
|
||||||
|
|
||||||
|
# address = content_tag :div,:class=>"multipleInput editMore" do
|
||||||
|
address = content_tag :div,:class=>"col-sm-10" do
|
||||||
|
form_label + content_tag(:div, controls_wrapper(&block), :class=>'add-input')
|
||||||
|
end # of div multipleInput editMore
|
||||||
|
|
||||||
|
result = address
|
||||||
|
|
||||||
|
else
|
||||||
|
result = form_label + content_tag(:div,controls_wrapper(&block),:class=>div_class)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
result << end_block
|
||||||
|
result.html_safe
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
def add_more_unt
|
||||||
|
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
|
||||||
|
end # of div
|
||||||
|
# add_more = content_tag :div,:class=> 'controls' do
|
||||||
|
# content_tag :span,:class=> 'help-block' do
|
||||||
|
# content = link_to (content_tag :i,I18n.t(:add),:class=>"icon-plus-sign"),"#",:class=>'addinput'
|
||||||
|
# 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
|
||||||
|
# end # of span
|
||||||
|
# end # of div
|
||||||
|
end
|
||||||
|
|
||||||
|
def end_block
|
||||||
|
if @new_attribute
|
||||||
|
hidden_field_tag(get_basic_field_name_base+"[seminar_signup_field_id]",id,:for=>"field_#{@index}")
|
||||||
|
else
|
||||||
|
hidden_field_tag(get_basic_field_name_base+"[id]",@attribute_value.id,:for=>"field_#{@index}")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def add_more_tab(mode,counter,key)
|
||||||
|
case mode
|
||||||
|
when :input_field
|
||||||
|
get_pairing_tab_class(:suffix=>['','tab'+counter.to_s,key].join('-'))
|
||||||
|
when :tab_btn
|
||||||
|
".#{get_pairing_tab_class(:suffix=>['','tab'+counter.to_s,key].join('-'))}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_pairing_tab_class(opts)
|
||||||
|
prefix = opts[:prefix]
|
||||||
|
suffix = opts[:suffix]
|
||||||
|
str = get_basic_field_name_base.gsub("[","_").gsub("]",'')
|
||||||
|
str = prefix.nil? ? str : prefix+ str
|
||||||
|
suffix.nil? ? str : str + suffix
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_basic_field_name_base
|
||||||
|
"seminar_signup_values[#{@index}]"
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_field_name_base
|
||||||
|
get_basic_field_name_base + "[value]"
|
||||||
|
end
|
||||||
|
|
||||||
|
def form_label
|
||||||
|
label_tag(key,(!@require.blank? ? '*'+title : title),:class=>"col-sm-2 control-label muted")
|
||||||
|
end
|
||||||
|
|
||||||
|
def can_muti_lang_input?
|
||||||
|
if self.markup == "address"
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
LIST[:markups][markup]["muti_lang_input_supprt"] and !(get_data["cross_lang"] == "true")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def can_add_more
|
||||||
|
if self.markup == "address"
|
||||||
|
return false
|
||||||
|
else
|
||||||
|
add_more
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def gen_modal_dialog
|
||||||
|
render_anywhere("shared/attribute_field/address_modal_dialog",{
|
||||||
|
:field_name=>title,
|
||||||
|
:html_id=>"address-field",
|
||||||
|
:btn_class => "#{get_pairing_tab_class({})}",
|
||||||
|
:field_name_basic => get_basic_field_name_base
|
||||||
|
}
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,33 @@
|
||||||
|
module Admin::SeminarsHelper
|
||||||
|
def page_for_seminar(seminar)
|
||||||
|
ann_page = nil
|
||||||
|
pages = Page.where(:module=>'seminar')
|
||||||
|
|
||||||
|
pages.each do |page|
|
||||||
|
if page.categories.count ==1
|
||||||
|
if page.categories.include?(seminar.category.id.to_s)
|
||||||
|
ann_page = page
|
||||||
|
end
|
||||||
|
end
|
||||||
|
break if !ann_page.nil?
|
||||||
|
end
|
||||||
|
|
||||||
|
if ann_page.nil?
|
||||||
|
pages.each do |page|
|
||||||
|
if page.categories.include?(seminar.category.id.to_s)
|
||||||
|
ann_page = page
|
||||||
|
end
|
||||||
|
break if !ann_page.nil?
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
ann_page = pages.first if ann_page.nil?
|
||||||
|
request.protocol+(request.host_with_port+ann_page.url+'/'+seminar.to_param).gsub('//','/') rescue "/"
|
||||||
|
end
|
||||||
|
|
||||||
|
def page_for_seminar_url
|
||||||
|
page = Page.where(:module => 'seminar').first
|
||||||
|
return request.protocol+(request.host_with_port+"/#{I18n.locale}#{page.url}").gsub('//','/') rescue "/"
|
||||||
|
# return "/#{I18n.locale}#{page.url}/#{seminar.to_param}"
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,109 @@
|
||||||
|
module Admin::SeminarsValuesHelper
|
||||||
|
def show_west_calender(from_to=nil)
|
||||||
|
case from_to
|
||||||
|
when :to
|
||||||
|
date = get_date(:to)
|
||||||
|
when :from
|
||||||
|
date = get_date(:from)
|
||||||
|
when nil
|
||||||
|
date = get_date
|
||||||
|
end
|
||||||
|
|
||||||
|
# case self.member_profile_field["typeC"]["format"]
|
||||||
|
# when 'format1' # Y/M/D h:m
|
||||||
|
# date.strftime("%Y/%m/%d %H:%M")
|
||||||
|
# when 'format2' # Y/M/D
|
||||||
|
# date.strftime("%Y/%m/%d")
|
||||||
|
# when 'format3' # Y/M
|
||||||
|
# date.strftime("%Y/%m")
|
||||||
|
# when 'format4' # Y
|
||||||
|
# date.strftime("%Y")
|
||||||
|
# end # of case west cal format
|
||||||
|
end
|
||||||
|
|
||||||
|
def show_minguo_calendar(from_to=nil)
|
||||||
|
get_minguo
|
||||||
|
|
||||||
|
case from_to
|
||||||
|
when :to
|
||||||
|
date = get_date(:to)
|
||||||
|
when :from
|
||||||
|
date = get_date(:from)
|
||||||
|
when nil
|
||||||
|
date = get_date
|
||||||
|
end
|
||||||
|
|
||||||
|
@date = date.split('/')
|
||||||
|
date_year = @date[0].to_i
|
||||||
|
|
||||||
|
year_str = ""
|
||||||
|
unless date_year == 1912
|
||||||
|
m_year = (date_year - 1912).abs.to_s + I18n.t("date.minguo_calendar.year")
|
||||||
|
year_str = minguo_format_year(m_year)
|
||||||
|
end
|
||||||
|
get_minguo_year(from_to) + minguo_m_y_d_time(from_to)
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_minguo_year(from_to=nil)
|
||||||
|
case from_to
|
||||||
|
when :to
|
||||||
|
date = get_date(:to)
|
||||||
|
when :from
|
||||||
|
date = get_date(:from)
|
||||||
|
when nil
|
||||||
|
date = get_date
|
||||||
|
end
|
||||||
|
|
||||||
|
@date = date.split('/')
|
||||||
|
date_year = @date[0].to_i
|
||||||
|
|
||||||
|
m_year = (date_year - 1911).abs
|
||||||
|
year_end = I18n.t("date.minguo_calendar.year")
|
||||||
|
case
|
||||||
|
when date_year <1912
|
||||||
|
I18n.t("date.minguo_calendar.before") + (m_year+1).to_s + year_end
|
||||||
|
when date_year ==1912
|
||||||
|
I18n.t("date.minguo_calendar.first_year")
|
||||||
|
when date_year >1912
|
||||||
|
I18n.t("date.minguo_calendar.after")+ (m_year).to_s + year_end
|
||||||
|
end # of case tw_calendar year
|
||||||
|
end
|
||||||
|
|
||||||
|
def minguo_m_y_d_time(from_to=nil)
|
||||||
|
case from_to
|
||||||
|
when :to
|
||||||
|
date = get_date(:to)
|
||||||
|
when :from
|
||||||
|
date = get_date(:from)
|
||||||
|
when nil
|
||||||
|
date = get_date
|
||||||
|
end
|
||||||
|
@date = date.split('/')
|
||||||
|
|
||||||
|
case self.seminar_signup_field["typeC"]["format"]
|
||||||
|
when 'format1' # Y/M/D h:m
|
||||||
|
"/#{@date[1]}/#{@date[2]}"
|
||||||
|
when 'format2' # Y/M/D
|
||||||
|
"/#{@date[1]}/#{@date[2]}"
|
||||||
|
when 'format3' # Y/M
|
||||||
|
|
||||||
|
"/#{@date[1]}#{I18n.t("date.minguo_calendar.month")}"\
|
||||||
|
when 'format4' # Y
|
||||||
|
''
|
||||||
|
end # of case
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_date_by_format(from_to = nil)
|
||||||
|
case I18n.locale
|
||||||
|
when :zh_tw
|
||||||
|
case
|
||||||
|
when self.seminar_signup_field["typeC"]["calendar"] == "west_calendar"
|
||||||
|
show_west_calender(from_to)
|
||||||
|
when self.seminar_signup_field["typeC"]["calendar"] == "tw_calendar"
|
||||||
|
show_minguo_calendar(from_to)
|
||||||
|
end #case self.seminar_signup_field["typeC"]["calendar"]
|
||||||
|
when :en
|
||||||
|
show_west_calender(from_to)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,7 @@
|
||||||
|
class SeminarAgreement
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
|
field :content, localize: true
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,14 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
class SeminarFile
|
||||||
|
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
|
mount_uploader :file, AssetUploader
|
||||||
|
|
||||||
|
field :description, localize: true
|
||||||
|
field :title, localize: true
|
||||||
|
|
||||||
|
belongs_to :seminar_main
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,12 @@
|
||||||
|
class SeminarItem
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
|
field :title, localize: true
|
||||||
|
|
||||||
|
belongs_to :seminar_main
|
||||||
|
|
||||||
|
has_many :seminar_item_contents, :autosave => true, :dependent => :destroy
|
||||||
|
accepts_nested_attributes_for :seminar_item_contents, :allow_destroy => true
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,15 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
class SeminarItemContent
|
||||||
|
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
|
field :content, localize: true
|
||||||
|
|
||||||
|
field :create_user_id
|
||||||
|
field :update_user_id
|
||||||
|
|
||||||
|
belongs_to :seminar_item
|
||||||
|
belongs_to :seminar_main
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,25 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
require 'uri'
|
||||||
|
|
||||||
|
class SeminarLink
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
|
field :url
|
||||||
|
field :title, localize: true
|
||||||
|
|
||||||
|
belongs_to :seminar_main
|
||||||
|
|
||||||
|
before_validation :add_http
|
||||||
|
|
||||||
|
validates :url, :presence => true, :format => /\A(http|https):\/\/(([a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5})|((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))(:[0-9]{1,5})?(\/.*)?\Z/i
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
def add_http
|
||||||
|
unless self.url[/^http:\/\//] || self.url[/^https:\/\//]
|
||||||
|
self.url = 'http://' + self.url
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,79 @@
|
||||||
|
class SeminarMain
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
|
include OrbitModel::Impression
|
||||||
|
# encoding: utf-8
|
||||||
|
include OrbitCategory::Categorizable
|
||||||
|
include Slug
|
||||||
|
|
||||||
|
field :title, as: :slug_title, type: String, localize: true
|
||||||
|
field :speaker, localize: true
|
||||||
|
field :content, localize: true
|
||||||
|
field :act_place, localize: true
|
||||||
|
|
||||||
|
field :seminar_start_date, :type => Date, :default => Time.now
|
||||||
|
field :seminar_end_date, :type => Date, :default => Time.now
|
||||||
|
|
||||||
|
field :signup_start_date, :type => Date, :default => Time.now
|
||||||
|
field :signup_end_date, :type => Date, :default => Time.now
|
||||||
|
|
||||||
|
field :contribute_start_date, :type => Date
|
||||||
|
field :contribute_end_date, :type => Date
|
||||||
|
|
||||||
|
field :contribute_file_count, type: String
|
||||||
|
|
||||||
|
field :registration_status , :type => Array #C: 投稿者 G:一般
|
||||||
|
|
||||||
|
field :create_user_id
|
||||||
|
field :update_user_id
|
||||||
|
|
||||||
|
belongs_to :seminar_item
|
||||||
|
|
||||||
|
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
|
||||||
|
has_many :seminar_signups, :autosave => true, :dependent => :destroy
|
||||||
|
has_many :seminar_signup_fields, :autosave => true, :dependent => :destroy
|
||||||
|
|
||||||
|
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
|
||||||
|
accepts_nested_attributes_for :seminar_signups, :allow_destroy => true
|
||||||
|
accepts_nested_attributes_for :seminar_signup_fields, :allow_destroy => true
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def self.time_range(date1 = null, date2 = null)
|
||||||
|
|
||||||
|
if !date1.blank?
|
||||||
|
|
||||||
|
r = "#{date1.strftime('%Y-%m-%d')}"
|
||||||
|
|
||||||
|
if date2
|
||||||
|
r += " - #{date2.strftime('%Y-%m-%d')}"
|
||||||
|
else
|
||||||
|
r += " - #{I18n.t(:no_deadline)}"
|
||||||
|
end
|
||||||
|
|
||||||
|
r
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_attribute_value(attribute_field, signup_id)
|
||||||
|
SeminarSignupValue.find_by(seminar_signup_field_id: attribute_field.id, seminar_signup_id: signup_id)
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_attribute_values(attribute_type=nil)
|
||||||
|
@attribute_values = attribute_type.seminar_signup_values rescue nil
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_value_from_field_id(field_id,attribute_type=nil)
|
||||||
|
values = get_attribute_values(attribute_type)
|
||||||
|
value = values.detect {|value| value.seminar_signup_field_id == field_id} rescue nil
|
||||||
|
value ? value : nil
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,27 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
class SeminarSignup
|
||||||
|
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
|
field :status
|
||||||
|
field :name
|
||||||
|
field :unit, localize: true
|
||||||
|
field :tel, type: String
|
||||||
|
field :phone, type: String
|
||||||
|
field :fax, type: String
|
||||||
|
field :email, type: String
|
||||||
|
field :address, localize: true
|
||||||
|
field :password
|
||||||
|
field :note, localize: true
|
||||||
|
|
||||||
|
belongs_to :seminar_main
|
||||||
|
|
||||||
|
has_many :seminar_signup_values
|
||||||
|
has_many :seminar_signup_contributes
|
||||||
|
|
||||||
|
accepts_nested_attributes_for :seminar_signup_values, allow_destroy: true
|
||||||
|
accepts_nested_attributes_for :seminar_signup_contributes, allow_destroy: true
|
||||||
|
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,14 @@
|
||||||
|
class SeminarSignupContribute
|
||||||
|
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
|
mount_uploader :file, AssetUploader
|
||||||
|
|
||||||
|
field :description
|
||||||
|
field :title
|
||||||
|
|
||||||
|
|
||||||
|
belongs_to :seminar_signup
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,160 @@
|
||||||
|
class SeminarSignupField
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
include Mongoid::Attributes::Dynamic
|
||||||
|
include ::AttributeFieldsHelper
|
||||||
|
include ::Admin::SeminarsFieldHelper
|
||||||
|
|
||||||
|
field :key, type: String
|
||||||
|
field :af_count
|
||||||
|
field :title, type: String, localize: true
|
||||||
|
field :markup, default: "text_field"
|
||||||
|
field :option_list, type: Hash,default: {}
|
||||||
|
field :markup_options, type: Hash
|
||||||
|
field :built_in, type: Boolean, default: false
|
||||||
|
field :disabled, type: Boolean, default: false
|
||||||
|
field :to_delete, type: Boolean, default: false
|
||||||
|
|
||||||
|
field :to_require,type: Boolean, default: true
|
||||||
|
|
||||||
|
field :typeA, type: Hash, default: {cross_lang: false}
|
||||||
|
field :typeB, type: Hash, default: {}
|
||||||
|
field :typeC, type: Hash, default: {calendar: "west_calendar", format: "format3"}
|
||||||
|
field :typeD, type: Hash, default: {cross_lang: false}
|
||||||
|
field :typeE, type: Hash, default: {}
|
||||||
|
|
||||||
|
belongs_to :seminar_main
|
||||||
|
has_many :seminar_signup_values, autosave: true, dependent: :destroy
|
||||||
|
before_save :check_option_list
|
||||||
|
|
||||||
|
def markup_value
|
||||||
|
get_data["option_list"]
|
||||||
|
end
|
||||||
|
|
||||||
|
def add_more
|
||||||
|
(get_data["add_more"] == "true" ? true : false) rescue false
|
||||||
|
end
|
||||||
|
|
||||||
|
def locale
|
||||||
|
get_data["cross_lang"] == "true" ? false : true
|
||||||
|
end
|
||||||
|
|
||||||
|
def self_defined_markup_options?
|
||||||
|
(self.seminar.method(self[:key].pluralize.to_sym) && self.seminar.method(self[:key].pluralize+"_for_"+markup)) rescue false
|
||||||
|
end
|
||||||
|
|
||||||
|
def option_list
|
||||||
|
if self_defined_markup_options?
|
||||||
|
#Class need to have corresponding field and value agent
|
||||||
|
# Ex: For "status" the class must have field called "statuses" for the relation and "statuses_for_select" for the select function
|
||||||
|
method = self.seminar.method(self[:key].pluralize+"_for_"+markup)
|
||||||
|
return (method.call rescue {})
|
||||||
|
elsif self[:option_list].nil? || (self[:option_list].empty?)
|
||||||
|
return {}
|
||||||
|
else
|
||||||
|
return self[:option_list]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def markup_options=(var)
|
||||||
|
self[:markup_options] = (eval(var) rescue {})
|
||||||
|
end
|
||||||
|
|
||||||
|
def markup_options
|
||||||
|
if self[:markup_options].nil?
|
||||||
|
return {}
|
||||||
|
else
|
||||||
|
Hash[self[:markup_options].map{|key,val|[key.to_sym,val]}] rescue {}
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def panel
|
||||||
|
panel = LIST[:markups][self[:markup]]["panel"]
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_data
|
||||||
|
self[panel]
|
||||||
|
end
|
||||||
|
|
||||||
|
def typeA=(var)
|
||||||
|
check_add_more_convert(var)
|
||||||
|
check_cross_lang_convert(var,"typeA")
|
||||||
|
self["typeA"] = var
|
||||||
|
end
|
||||||
|
|
||||||
|
def typeD=(var)
|
||||||
|
check_cross_lang_convert(var,"typeD")
|
||||||
|
self["typeD"] = var
|
||||||
|
end
|
||||||
|
|
||||||
|
def is_built_in?
|
||||||
|
self.built_in
|
||||||
|
end
|
||||||
|
|
||||||
|
def is_disabled?
|
||||||
|
self.disabled
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.add_seminar_signup_field(seminar,seminar_param, seminar_signup_field_id=nil,field_status)
|
||||||
|
@field_name = 'seminar'
|
||||||
|
if field_status.eql?(true)
|
||||||
|
@seminar_signup_field_counter = seminar.seminar_signup_fields.count rescue nil
|
||||||
|
@seminar_signup_field = self.find(seminar_signup_field_id) rescue nil
|
||||||
|
old_key = @seminar_signup_field.key
|
||||||
|
@seminar_signup_field.update(seminar_param)
|
||||||
|
@seminar_signup_field.save
|
||||||
|
attribute_values = @seminar_signup_field.seminar_signup_values
|
||||||
|
if attribute_values.count > 0
|
||||||
|
attribute_values.each do |av|
|
||||||
|
av.key = seminar_param["key"]
|
||||||
|
av.save
|
||||||
|
end
|
||||||
|
end
|
||||||
|
@seminar_signup_field[:af_count] = @seminar_signup_field_counter
|
||||||
|
else
|
||||||
|
@seminar_signup_field_counter = seminar.seminar_signup_fields.count rescue nil
|
||||||
|
@seminar_signup_field = seminar.seminar_signup_fields.build(seminar_param) rescue nil
|
||||||
|
@seminar_signup_field.save
|
||||||
|
@seminar_signup_field[:af_count] = @seminar_signup_field_counter
|
||||||
|
end
|
||||||
|
return @seminar_signup_field
|
||||||
|
end
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
def check_cross_lang_convert(var,field)
|
||||||
|
if self[field]["cross_lang"] != var["cross_lang"]
|
||||||
|
case var["cross_lang"]
|
||||||
|
when "true" #from no-add_more to add_more
|
||||||
|
cross_lang_convert(:to_cross_lang)
|
||||||
|
else #from add_more to no-add_more
|
||||||
|
cross_lang_convert(:to_no_cross_lang)
|
||||||
|
end # of case
|
||||||
|
end # of if
|
||||||
|
end
|
||||||
|
|
||||||
|
def check_add_more_convert(var)
|
||||||
|
if self["typeA"]["add_more"] != var["add_more"]
|
||||||
|
case var["add_more"]
|
||||||
|
when "true" #from no-add_more to add_more
|
||||||
|
add_more_convert(:to_add_more)
|
||||||
|
else #from add_more to no-add_more
|
||||||
|
add_more_convert(:to_no_add_more)
|
||||||
|
end # of case
|
||||||
|
end # of if
|
||||||
|
end
|
||||||
|
|
||||||
|
def cross_lang_convert(opt)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def check_option_list
|
||||||
|
self[:option_list] = self[panel]["option_list"] rescue nil
|
||||||
|
end
|
||||||
|
|
||||||
|
def add_more_convert(opt)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,213 @@
|
||||||
|
class SeminarSignupValue
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
include Mongoid::Attributes::Dynamic
|
||||||
|
include ::AttributeValuesHelper
|
||||||
|
include ::Admin::SeminarsValuesHelper
|
||||||
|
|
||||||
|
field :key, type: String
|
||||||
|
|
||||||
|
belongs_to :seminar_signup_field
|
||||||
|
belongs_to :seminar_signup
|
||||||
|
|
||||||
|
before_save :check_key
|
||||||
|
before_save :data_proc
|
||||||
|
|
||||||
|
def add_more_counter
|
||||||
|
index_max = self["val"].count rescue 0
|
||||||
|
index_max == 0 ? 1 : index_max
|
||||||
|
end
|
||||||
|
|
||||||
|
def value(index = nil)
|
||||||
|
site = Site.first
|
||||||
|
result = case self.seminar_signup_field.markup
|
||||||
|
when 'text_field','text_area'
|
||||||
|
if self.seminar_signup_field.add_more and (self.seminar_signup_field.markup == "text_field")
|
||||||
|
index.nil? ? self["val"] : self["val"][index]
|
||||||
|
else
|
||||||
|
self.seminar_signup_field.get_data["cross_lang"] =="true" ? self["val"] : Hash[site.valid_locales.collect{|lang| [lang,self[lang.to_sym]]}]
|
||||||
|
end
|
||||||
|
when 'select','radio_button','address'
|
||||||
|
self["val"]
|
||||||
|
when 'date'
|
||||||
|
if !self["val"].blank? and !self["val"]['(1i)'].blank?
|
||||||
|
"#{self["val"]['(1i)']}/#{self["val"]['(2i)']}/#{self["val"]['(3i)']}"
|
||||||
|
else
|
||||||
|
self["val"]
|
||||||
|
end
|
||||||
|
when 'checkbox'
|
||||||
|
self["val"]
|
||||||
|
end #end of case self.seminar_signup_field.markup
|
||||||
|
end
|
||||||
|
|
||||||
|
def value=(value)
|
||||||
|
#save everything to temp_data waiting for futher process
|
||||||
|
self[:temp_data] = value
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_field_value
|
||||||
|
if (self.seminar_signup_field.markup.eql?("text_field") || self.seminar_signup_field.markup.eql?("text_area"))
|
||||||
|
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
|
||||||
|
|
||||||
|
field_value = (field_value =~ /\A#{URI::regexp(['http', 'https'])}\z/) ? "<a href='#{field_value}' target='blank'>#{field_value}</a>" : field_value
|
||||||
|
field_value = (field_value =~ /\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i) ? "<a href='mailto:#{field_value}'>#{field_value}</a>" : field_value
|
||||||
|
|
||||||
|
if !field_value.blank?
|
||||||
|
{
|
||||||
|
"key" => self.seminar_signup_field.key,
|
||||||
|
"title" => self.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,
|
||||||
|
"value" => "",
|
||||||
|
"val" => field_value = self.value
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_value_by_locale(locale,add_more_index=nil)
|
||||||
|
case self.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
|
||||||
|
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[self.value][locale.to_s] rescue 'NoData'
|
||||||
|
|
||||||
|
when "text_area"
|
||||||
|
self.seminar_signup_field.locale ? self[locale.to_s] : self.value
|
||||||
|
|
||||||
|
when "date"
|
||||||
|
if self.seminar_signup_field.date_is_range?
|
||||||
|
get_date_by_format(:from) + ' ~ ' + get_date_by_format(:to)
|
||||||
|
# self.value["from"] + ' ~ ' + self.value["to"]
|
||||||
|
else
|
||||||
|
get_date_by_format
|
||||||
|
# self.value
|
||||||
|
end
|
||||||
|
|
||||||
|
when "address"
|
||||||
|
self.value[locale.to_s]
|
||||||
|
|
||||||
|
when "radio_button"
|
||||||
|
markup_values = self.seminar_signup_field.markup_value
|
||||||
|
markup_values[self.value][locale.to_s]
|
||||||
|
|
||||||
|
when "checkbox"
|
||||||
|
markup_values = self.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
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_date(item = nil)
|
||||||
|
case item
|
||||||
|
when :from
|
||||||
|
# data = self[:val]["from"]
|
||||||
|
data = self.value["from"]
|
||||||
|
when :to
|
||||||
|
# data = self[:val]["to"]
|
||||||
|
data = self.value["to"]
|
||||||
|
when nil
|
||||||
|
# data = self[:val]
|
||||||
|
data = self.value
|
||||||
|
end
|
||||||
|
|
||||||
|
# Date.new(data["(1i)"].to_i,data["(2i)"].to_i,data["(3i)"].to_i) rescue nil
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.put_field_values(member, field_value_param, field_value_id=nil,field_value_status)
|
||||||
|
if field_value_status.eql?(true)
|
||||||
|
@seminar_signup_field_value = self.find(field_value_id) rescue nil
|
||||||
|
@seminar_signup_field_value.update(field_value_param) rescue nil
|
||||||
|
@seminar_signup_field_value.save rescue nil
|
||||||
|
else
|
||||||
|
@seminar_signup_field_value = member.seminar_signup_values.build(field_value_param) rescue nil
|
||||||
|
@seminar_signup_field_value.save
|
||||||
|
end
|
||||||
|
return @seminar_signup_field_value
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
def unset_all_lang_values
|
||||||
|
VALID_LOCALES.each{|t| self.unset t}
|
||||||
|
end
|
||||||
|
|
||||||
|
def data_proc
|
||||||
|
unless self[:temp_data].nil?
|
||||||
|
case self.seminar_signup_field.markup
|
||||||
|
when "address"
|
||||||
|
self["val"] = self["temp_data"]
|
||||||
|
when 'text_field','text_area'
|
||||||
|
if self.seminar_signup_field.add_more
|
||||||
|
self["val"] = self["temp_data"]
|
||||||
|
else # if not add_more
|
||||||
|
if self.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])
|
||||||
|
else
|
||||||
|
self["val"] = self[:temp_data]
|
||||||
|
end
|
||||||
|
end # of self.seminar_signup_field.add_more
|
||||||
|
|
||||||
|
when 'select','date','radio_button'
|
||||||
|
self["val"] = self[:temp_data]
|
||||||
|
when 'checkbox'
|
||||||
|
self["val"] = self[:temp_data].keys
|
||||||
|
end #end of case self.seminar_signup_field.markup
|
||||||
|
end # of self[:temp_data].nil?
|
||||||
|
self.unset('temp_data')
|
||||||
|
self.unset('temp')
|
||||||
|
end #of data_proc
|
||||||
|
|
||||||
|
def check_key
|
||||||
|
self.key = self.seminar_signup_field.key
|
||||||
|
end
|
||||||
|
|
||||||
|
def method_missing(*field)
|
||||||
|
if field.size < 1
|
||||||
|
self[field[0]]
|
||||||
|
else
|
||||||
|
self[(field[0].to_s.delete "=")] = field[1]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,63 @@
|
||||||
|
<% content_for :page_specific_css do %>
|
||||||
|
<%= stylesheet_link_tag "lib/main-forms" %>
|
||||||
|
<%= stylesheet_link_tag "lib/main-list" %>
|
||||||
|
<% end %>
|
||||||
|
<% content_for :page_specific_javascript do %>
|
||||||
|
<%= javascript_include_tag "lib/module-area" %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<h2><%= t('seminar.seminar') %></h2>
|
||||||
|
|
||||||
|
<%= form_for @seminar_agreement, url: @url, html: {class: "form-horizontal main-forms"} do |f| %>
|
||||||
|
<fieldset>
|
||||||
|
|
||||||
|
<!-- Input Area -->
|
||||||
|
<div class="input-area">
|
||||||
|
|
||||||
|
<!-- Language Tabs -->
|
||||||
|
<div class="nav-name"><strong><%= t(:language) %></strong></div>
|
||||||
|
<ul class="nav nav-pills language-nav">
|
||||||
|
<% @site_in_use_locales.each_with_index do |locale, i| %>
|
||||||
|
<li class="<%= 'active' if i == 0 %>">
|
||||||
|
<a data-toggle="tab" href=".<%= locale %>"><%= t(locale) %></a>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<!-- Language -->
|
||||||
|
<div class="tab-content language-area">
|
||||||
|
|
||||||
|
<% @site_in_use_locales.each_with_index do |locale, i| %>
|
||||||
|
|
||||||
|
<div class="<%= locale %> tab-pane fade <%= ( i == 0 ) ? "in active" : '' %>">
|
||||||
|
|
||||||
|
<div class="control-group input-content">
|
||||||
|
<label class="control-label muted"><%= t('seminar.seminar_agreements_content') %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<div class="textarea">
|
||||||
|
<%= f.fields_for :content_translations do |f| %>
|
||||||
|
<%= f.cktext_area locale, rows: 5, class: "input-block-level", :value => (@seminar_agreement.content_translations[locale] rescue nil) %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Form Actions -->
|
||||||
|
<div class="form-actions">
|
||||||
|
<%= get_referer_url[:action] rescue "" %>
|
||||||
|
<%= 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 %>
|
|
@ -0,0 +1,91 @@
|
||||||
|
|
||||||
|
<% 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 %>
|
||||||
|
|
||||||
|
<!-- Input Area -->
|
||||||
|
<div class="input-area">
|
||||||
|
|
||||||
|
<!-- Module Tabs -->
|
||||||
|
<div class="nav-name"><strong><%= t(:module) %></strong></div>
|
||||||
|
<ul class="nav nav-pills module-nav">
|
||||||
|
<li class="active"><a href="#basic" data-toggle="tab"><%= t(:basic) %></a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<!-- Module -->
|
||||||
|
<div class="tab-content module-area">
|
||||||
|
|
||||||
|
<!-- Basic Module -->
|
||||||
|
<div class="tab-pane fade in active" id="basic">
|
||||||
|
|
||||||
|
<!-- Item -->
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted"><%= t('seminar.set_seminar_items') %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<% if !@seminar_item_content.seminar_item_id.blank? %>
|
||||||
|
<%= @seminar_item_content.seminar_item.title %>
|
||||||
|
<% else %>
|
||||||
|
<%= select_tag "seminar_item_content[seminar_item_id]", options_for_select(@seminar_items) %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Language Tabs -->
|
||||||
|
<div class="nav-name"><strong><%= t(:language) %></strong></div>
|
||||||
|
<ul class="nav nav-pills language-nav">
|
||||||
|
<% @site_in_use_locales.each_with_index do |locale, i| %>
|
||||||
|
<li class="<%= 'active' if i == 0 %>">
|
||||||
|
<a data-toggle="tab" href=".<%= locale %>"><%= t(locale) %></a>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<!-- Language -->
|
||||||
|
<div class="tab-content language-area">
|
||||||
|
|
||||||
|
<% @site_in_use_locales.each_with_index do |locale, i| %>
|
||||||
|
|
||||||
|
<div class="<%= locale %> tab-pane fade <%= ( i == 0 ) ? "in active" : '' %>">
|
||||||
|
|
||||||
|
<!-- Content -->
|
||||||
|
<div class="control-group input-content">
|
||||||
|
<label class="control-label muted"><%= t('seminar_item_content.content') %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<div class="textarea">
|
||||||
|
<%= f.fields_for :content_translations do |f| %>
|
||||||
|
<%= f.cktext_area locale, rows: 5, class: "input-block-level", :value => (@seminar_item_content.content_translations[locale] rescue nil) %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Form Actions -->
|
||||||
|
<div class="form-actions">
|
||||||
|
<%= f.hidden_field :seminar_main_id, :value => (!params[:seminar_main_id].blank? ? params[:seminar_main_id] : @seminar_item_content.seminar_main_id) %>
|
||||||
|
<%= get_referer_url[:seminarion] rescue "" %>
|
||||||
|
<%= 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>
|
|
@ -0,0 +1,5 @@
|
||||||
|
<%= form_for @seminar_item_content, url: admin_seminar_item_content_path(@seminar_item_content), html: {class: "form-horizontal main-forms"} do |f| %>
|
||||||
|
<fieldset>
|
||||||
|
<%= render :partial => 'form', locals: {f: f} %>
|
||||||
|
</fieldset>
|
||||||
|
<% end %>
|
|
@ -0,0 +1,43 @@
|
||||||
|
|
||||||
|
<span id="index_table">
|
||||||
|
<script>
|
||||||
|
if(document.querySelectorAll("#orbit-bar").length==0) location.reload();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<h4><%= @seminar.title %></h4>
|
||||||
|
|
||||||
|
<table class="table main-list">
|
||||||
|
<thead>
|
||||||
|
<tr class="sort-header">
|
||||||
|
<th class='span2'><%= t(:item)%></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<% @seminar_item_contents.each do |seminar_item_content| %>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<%= seminar_item_content.seminar_item.title %>
|
||||||
|
<div class="quick-edit">
|
||||||
|
<ul class="nav nav-pills">
|
||||||
|
<% if can_edit_or_delete?(seminar_item_content) %>
|
||||||
|
<li><a href="/admin/seminar_item_contents/<%=seminar_item_content.id.to_s%>/edit"><%= t(:edit) %></a></li>
|
||||||
|
<li><a href="#" class="delete text-error" rel="/admin/seminar_item_contents/<%=seminar_item_content.id.to_s%>"><%= t(:delete_) %></a></li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<%= link_to content_tag(:i, nil, :class => 'icon-plus') +' '+ t('new_'), new_admin_seminar_item_content_path(:seminar_main_id=>params[:seminar_main_id]), :class => 'btn btn-primary' if @seminar_items.count > 0 %>
|
||||||
|
|
||||||
|
<%=
|
||||||
|
content_tag :div, class: "bottomnav clearfix" do
|
||||||
|
content_tag :div, paginate(@seminar_item_contents), class: "pagination pagination-centered"
|
||||||
|
end
|
||||||
|
%>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<%= render 'layouts/delete_modal', delete_options: @delete_options %>
|
|
@ -0,0 +1,5 @@
|
||||||
|
<%= form_for @seminar_item_content, url: admin_seminar_item_contents_path, html: {class: "form-horizontal main-forms"} do |f| %>
|
||||||
|
<fieldset>
|
||||||
|
<%= render :partial => 'form', locals: {f: f} %>
|
||||||
|
</fieldset>
|
||||||
|
<% end %>
|
|
@ -0,0 +1,16 @@
|
||||||
|
<div id="delete_seminar_items" class="modal hide" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-header">
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
|
<h3 id="myModalLabel"><%= t('seminar_item.del_item') %></h3>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body tags">
|
||||||
|
<span class="text-warning text-center"><%= t('tag.warning.delete') %></span>
|
||||||
|
<hr>
|
||||||
|
<ul class="tags-groups checkbox-card">
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button class="btn" data-dismiss="modal" aria-hidden="true"><%= t(:close) %></button>
|
||||||
|
<%= link_to t(:delete_), nil, class: "delete-tags btn btn-danger", method: :post, remote: true %>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<%= f.fields_for :title_translations do |f| %>
|
||||||
|
<% @site_in_use_locales.each do |locale| %>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label"><%= "#{t(:name)} (#{t(locale)})" %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<input class="input-large" id="<%=locale%>" name="seminar_item[title_translations][<%=locale%>]" placeholder="<%=t(:name)%>" type="text">
|
||||||
|
<span class="help-inline hide"><%= t('front_page.name_field_helper') %></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
|
@ -0,0 +1,27 @@
|
||||||
|
<!-- footer -->
|
||||||
|
<div class="bottomnav clearfix">
|
||||||
|
<div class="action pull-right">
|
||||||
|
<button id="selectAllTags" class="btn"><%= t(:select_all) %></button>
|
||||||
|
<button id="deselect" class="btn btn-inverse toggable hide"><%= t(:deselect_all) %></button>
|
||||||
|
<%= link_to t(:delete_), '#', id: "deleteItems", class: "btn btn-danger toggable hide", rel: '' %>
|
||||||
|
<%= link_to content_tag(:i, nil, class: "icons-plus") + " " + t(:add), '#', class: "btn btn-primary open-slide", data: {title: t('seminar_item.new_item'), id: 'new'} %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- footer:end -->
|
||||||
|
|
||||||
|
<!-- tags -->
|
||||||
|
<div class="tags">
|
||||||
|
<div id="tags-list">
|
||||||
|
<p class="tag-lead lead muted"><%= t('seminar_item.set_item') %></p>
|
||||||
|
<% if !@seminar_items.blank? %>
|
||||||
|
<ul class="tags-groups checkbox-card module-tags">
|
||||||
|
<%= render partial: "item", collection: @seminar_items, locals: {in_module: true} %>
|
||||||
|
</ul>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- tags:end -->
|
||||||
|
|
||||||
|
<!-- delete -->
|
||||||
|
<%= render 'delete_modal' %>
|
||||||
|
<!-- delete:end -->
|
|
@ -0,0 +1,8 @@
|
||||||
|
<li class="filter-item default">
|
||||||
|
<p class="card pull-left">
|
||||||
|
<input type="checkbox" value="<%= item.id %>">
|
||||||
|
</p>
|
||||||
|
<%= link_to '#', class: "open-slide", data: {title: t('seminar_item.edit_item'), id: item.id.to_s, form: item.title_translations} do %>
|
||||||
|
<%= item.title_translations.values.join(" / ") %>
|
||||||
|
<% end %>
|
||||||
|
</li>
|
|
@ -0,0 +1,81 @@
|
||||||
|
<div id="seminar_items_index">
|
||||||
|
<%= render 'index' %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- pageslide -->
|
||||||
|
<div id="pageslide">
|
||||||
|
<div class="page-title clearfix">
|
||||||
|
<a class="pull-right" href="javascript:$.pageslide.close()">
|
||||||
|
<i class="icons-arrow-left-2"></i>
|
||||||
|
</a>
|
||||||
|
<span></span>
|
||||||
|
</div>
|
||||||
|
<div class="view-page">
|
||||||
|
<div class="nano">
|
||||||
|
<div class="content">
|
||||||
|
<div id="add-tags">
|
||||||
|
|
||||||
|
<div class="tab-content">
|
||||||
|
|
||||||
|
<div class="set_new tab-pane fade active in">
|
||||||
|
<%= form_for :seminar_item, url: nil, remote: true do |f| %>
|
||||||
|
<fieldset>
|
||||||
|
<%= render :partial => "form", :locals => { :f => f } %>
|
||||||
|
<div class="form-actions">
|
||||||
|
<a href="javascript:$.pageslide.close()" class="btn btn-small"><%= t(:cancel) %></a>
|
||||||
|
<%= f.submit t(:submit), class: 'btn btn-primary btn-small', id: "tag_submit" %>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<% content_for :page_specific_css do %>
|
||||||
|
<%= stylesheet_link_tag "seminar_sets" %>
|
||||||
|
<% end %>
|
||||||
|
<% content_for :page_specific_javascript do %>
|
||||||
|
<%= javascript_include_tag "check_seminar_set_items.js" %>
|
||||||
|
<%= javascript_include_tag "seminar_sets.js" %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
var validate = function(dom){
|
||||||
|
var valid = true;
|
||||||
|
if($(dom).val()==""){
|
||||||
|
valid=false;
|
||||||
|
$(dom).parent().parent().addClass('error');
|
||||||
|
$(dom).next().removeClass('hide');
|
||||||
|
}else{
|
||||||
|
$(dom).parent().parent().removeClass('error');
|
||||||
|
$(dom).next().addClass('hide');
|
||||||
|
}
|
||||||
|
return valid;
|
||||||
|
}
|
||||||
|
|
||||||
|
$(function(){
|
||||||
|
$.each($('.set_new form input:text'),function(){
|
||||||
|
$(this).blur(function(){
|
||||||
|
validate($(this));
|
||||||
|
});
|
||||||
|
$(this).keyup(function(){
|
||||||
|
validate($(this));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#tag_submit").click(function(){
|
||||||
|
var valid = true;
|
||||||
|
$.each($(".set_new form input:text"),function(){
|
||||||
|
if(!validate($(this))) valid=false;
|
||||||
|
});
|
||||||
|
if(!valid) return false;
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<!-- pageslide:end -->
|
|
@ -0,0 +1,8 @@
|
||||||
|
$("#delete_seminar_items").modal('hide');
|
||||||
|
$("#seminar_items_index").html("<%= j render 'index' %>")
|
||||||
|
$.pageslide.close();
|
||||||
|
openSlide();
|
||||||
|
$('.card').cardCheck({
|
||||||
|
item: $('.card input[type="checkbox"]'),
|
||||||
|
});
|
||||||
|
checkedLength();
|
|
@ -0,0 +1,191 @@
|
||||||
|
<%= form_for @seminar_signup, url: admin_seminar_signup_path(@seminar_signup), html: {class: "form-horizontal main-forms"} do |f| %>
|
||||||
|
<fieldset>
|
||||||
|
|
||||||
|
<% 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/datetimepicker/date.time.picker.js" %>
|
||||||
|
<%= javascript_include_tag "lib/file-type" %>
|
||||||
|
<%= javascript_include_tag "lib/module-area" %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<!-- Input Area -->
|
||||||
|
<div class="input-area">
|
||||||
|
|
||||||
|
<!-- Language -->
|
||||||
|
<div class="tab-content">
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Title -->
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted"><%= t('seminar.title') %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<%= @seminar.title %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="control-group">
|
||||||
|
<label for="status" class="control-label muted"><%= t('seminar.registration_status') %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<label class="radio inline">
|
||||||
|
<%= f.radio_button :status, 'G', :checked => true , :onclick => "$('#registration_status').addClass('hide');" %> <%= t('seminar.registration_status_G') %>
|
||||||
|
</label>
|
||||||
|
<label class="radio inline">
|
||||||
|
<%= f.radio_button :status, 'C', :onclick => "$('#registration_status').removeClass('hide');" %> <%= t('seminar.registration_status_C') %>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Name -->
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted"><%= t('seminar_signup.name') %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<%= f.text_field :name, :class => "input-block-level", placeholder: t('seminar_signup.name') %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- unit -->
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted"><%= t('seminar_signup.unit') %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<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-block-level", :value => (@seminar_signup.send("unit_translations")[locale] rescue nil), :placeholder=> "#{t(locale.to_s)}", :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>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Tel -->
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted"><%= t('seminar_signup.tel') %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<%= f.text_field :tel, :class=>"input-block-level", :placeholder=> t('seminar_signup.tel'), :required => true %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Phone -->
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted"><%= t('seminar_signup.phone') %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<%= f.text_field :phone, :class=>"input-block-level", :placeholder=> t('seminar_signup.phone') %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Fax -->
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted"><%= t('seminar_signup.fax') %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<%= f.text_field :phone, :class=>"input-block-level", :placeholder=> t('seminar_signup.fax') %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- address -->
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted"><%= t("seminar_signup.address") %></label>
|
||||||
|
<div class="controls">
|
||||||
|
|
||||||
|
<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="address_<%= locale %>">
|
||||||
|
<%= f.fields_for "address_translations".to_sym do |f| %>
|
||||||
|
<%= f.text_field locale, :class=>"input-block-level", :value => (@seminar_signup.send("address_translations")[locale] rescue nil), :placeholder=> "#{t(locale.to_s)}" %>
|
||||||
|
<% 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="#address_<%= locale %>" data-toggle="tab"><%= t(locale.to_s) %></a>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Email -->
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted"><%= t(:email) %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<%= f.email_field :email, :class=>"input-block-level", :placeholder=> t(:email), :required => true %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- password -->
|
||||||
|
<div class="control-group <%= @seminar_signup.status == 'C' ? '' : 'hide' %>" id="registration_status">
|
||||||
|
<label class="control-label muted"><%= t('seminar_signup.password') %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<%= f.text_field :password, :class=>"input-block-level", :placeholder=> t('seminar_signup.password') %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Note -->
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted"><%= t('seminar_signup.note') %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<div class="tab-content textarea-lang">
|
||||||
|
<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="#note_<%= locale %>" for="<%= locale %>" data-toggle="tab"><%= t(locale.to_s) %></a>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<% @site_in_use_locales.each_with_index do |locale, i| %>
|
||||||
|
<div class="tab-pane fade <%= ( i == 0 ) ? "active in" : '' %>" id="note_<%= locale %>">
|
||||||
|
<%= f.fields_for "note_translations".to_sym do |f| %>
|
||||||
|
<%= f.text_area locale, rows: 5, :class=>"input-block-level", :value => (@seminar_signup.send("note_translations")[locale] rescue nil), :placeholder=> "#{t(locale.to_s)}" %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<% @seminar.seminar_signup_fields.asc(:_id).each do |rf| %>
|
||||||
|
|
||||||
|
<div class="control-group">
|
||||||
|
|
||||||
|
<%= rf.block_helper(@seminar,@form_index,false,"seminar_signup", @seminar_signup, rf.to_require) %>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<% @form_index = @form_index +1 %>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Form Actions -->
|
||||||
|
<div class="form-actions">
|
||||||
|
<%#= get_referer_url[:action] rescue "" %>
|
||||||
|
<%= f.submit t('submit'), class: 'btn btn-primary' %>
|
||||||
|
<%= link_to t('cancel'), "/admin/seminars/#{@seminar.id}/seminar_signup", :class=>"btn" %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</fieldset>
|
||||||
|
<% end %>
|
|
@ -0,0 +1,132 @@
|
||||||
|
<div class="attributes default <%= attribute_field.disabled ? 'disabled' : ''%>">
|
||||||
|
<%
|
||||||
|
attribute_field.af_count ? @af_counter = attribute_field_counter + attribute_field.af_count : @af_counter = attribute_field_counter
|
||||||
|
%>
|
||||||
|
<div class="attributes-header clearfix">
|
||||||
|
<div class="toggle-control" style="float: right;">
|
||||||
|
<div class="togglebox <%= attribute_field.disabled ? 'disabled' : ''%>">
|
||||||
|
<%= hidden_field "#{@field_name}[seminar_signup_fields][#{@af_counter}]","disabled",:value=>attribute_field.disabled,:class=>"toggle-check", :data=>{:deploy=>"right"} %>
|
||||||
|
<label><b></b></label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<a class="btn btn-mini pull-right btn-danger delete" href="#"><i class="icon-trash"></i> <%= t(:delete_)%></a>
|
||||||
|
<%= hidden_field "#{@field_name}[seminar_signup_fields][#{@af_counter}]","to_delete",:value=>false,:class=>"attribute_field_to_delete"%>
|
||||||
|
<a class="btn btn-mini pull-right btn-inverse reply hide" href="#"><i class="icons-reply"></i> Reset</a>
|
||||||
|
<h4>Field <span><%= @af_counter + 1 %></span></h4>
|
||||||
|
</div>
|
||||||
|
<div class="attributes-body">
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted" for="key_<%= @af_counter %>"><%= t(:key) %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<%= text_field "#{@field_name}[seminar_signup_fields][#{@af_counter}]","key",:value=>attribute_field.key, :data=>{:type=>"key"} %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<%= render :partial=>"shared/attribute_field/placeholder_block",:locals=>{:values=>attribute_field.title_translations,:class_ext=>"pull-left",:label_ext=>t(:name),:field_name=>"#{@field_name}[seminar_signup_fields][#{@af_counter}][title_translations]"}%>
|
||||||
|
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted" for=""><%= t('seminar.to_require') %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<label class="radio inline">
|
||||||
|
<%= radio_button("#{@field_name}[seminar_signup_fields][#{@af_counter}]", "to_require", "true",:checked => (attribute_field.to_require == true ? true : false), :data=>{:type=>"search_true"}) %><%= t(:yes_)%>
|
||||||
|
</label>
|
||||||
|
<label class="radio inline">
|
||||||
|
<%= radio_button("#{@field_name}[seminar_signup_fields][#{@af_counter}]", "to_require", "false",:checked => (attribute_field.to_require == false ? true : false), :data=>{:type=>"search_false"}) %><%= t(:no_)%>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted" for=""><%= t(:type)%></label>
|
||||||
|
<div class="controls">
|
||||||
|
<select class="dataType" data-type="select" name=<%= "#{@field_name}[seminar_signup_fields][#{@af_counter}][markup]"%>>
|
||||||
|
<%LIST[:markups].each do |key,val|%>
|
||||||
|
<% if key != 'address' %>
|
||||||
|
<option value="<%= key %>" <%= attribute_field.markup == key ? 'selected="selected"' : '' %> ref="<%=val["panel"]%>"><%=t("lists.markups."+key)%></option >
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="field-type fade"></div>
|
||||||
|
|
||||||
|
<%= content_tag :div,:class=>"field-type default fade in #{show_type_panel(attribute_field,"typeA")}" do%>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted"><%= t(:enabled_for)%></label>
|
||||||
|
<div class="controls">
|
||||||
|
<label class="checkbox inline">
|
||||||
|
<%= check_box_tag("#{@field_name}[seminar_signup_fields][#{@af_counter}][typeA][cross_lang]","true",attribute_field["typeA"]["cross_lang"],:data=>{:type=>"cross_lang"}) %>
|
||||||
|
<%= t(:cross_lang) %>
|
||||||
|
</label>
|
||||||
|
<label class="checkbox inline">
|
||||||
|
<%= check_box_tag("#{@field_name}[seminar_signup_fields][#{@af_counter}][typeA][add_more]","true",attribute_field["typeA"]["add_more"],:data=>{:type=>"add_more"}) %>
|
||||||
|
<%= t(:add_more)%>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<%= render :partial=>"shared/attribute_field/placeholder_block",:locals=>{:values=>attribute_field["typeA"]["placeholder"],:field_name=>"#{@field_name}[seminar_signup_fields][#{@af_counter}][typeA][placeholder]"}%>
|
||||||
|
<% end if show_type_panel(attribute_field,"typeA") != 'typeA hide' %>
|
||||||
|
|
||||||
|
<%= content_tag :div,:class=>"field-type default fade in #{show_type_panel(attribute_field,"typeB")}" do %>
|
||||||
|
<%= render :partial=>"shared/attribute_field/placeholder_block",:locals=>{:label_ext=>t(:initial),:values=>attribute_field["typeB"]["initial"],:field_name=>"#{@field_name}[seminar_signup_fields][#{@af_counter}][typeB][initial]"}%>
|
||||||
|
|
||||||
|
<% if attribute_field.self_defined_markup_options?%>
|
||||||
|
<%= render :partial=>"shared/attribute_field/list_block",:locals=>{:values=>attribute_field["option_list"],:field_name=> "#{@field_name}[seminar_signup_fields][#{@af_counter}][attribute][seminar][statuses]"} %>
|
||||||
|
<%else #normal list%>
|
||||||
|
<%= render :partial=>"shared/attribute_field/list_block",:locals=>{:values=>attribute_field["option_list"],:field_name=> "#{@field_name}[seminar_signup_fields][#{@af_counter}][typeB][option_list]"} %>
|
||||||
|
<% end #of self_defined_markup_options?%>
|
||||||
|
|
||||||
|
<% end if show_type_panel(attribute_field,"typeB") != 'typeB hide' %>
|
||||||
|
|
||||||
|
<%= content_tag :div,:class=>"field-type default fade in #{show_type_panel(attribute_field,"typeC")}" do %>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label"><%= t("date.format")%></label>
|
||||||
|
<div class="controls">
|
||||||
|
<%= select "#{@field_name}[seminar_signup_fields][#{@af_counter}][typeC]","format",Admin::AttributeValuesViewHelper::OPT,:class=>"dataType",:selected=>attribute_field["typeC"]["format"] %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label"><%= t("date.range")%></label>
|
||||||
|
<div class="controls">
|
||||||
|
<label class="radio inline">
|
||||||
|
<%= radio_button("#{@field_name}[seminar_signup_fields][#{@af_counter}][typeC]", "is_range", "false",:checked => (!attribute_field.date_is_range? ? true : false)) %><%= t(:yes_)%>
|
||||||
|
</label>
|
||||||
|
<label class="radio inline">
|
||||||
|
<%= radio_button("#{@field_name}[seminar_signup_fields][#{@af_counter}][typeC]", "is_range", "true",:checked => (attribute_field.date_is_range? ? true : false)) %><%= t(:no_)%>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label"><%= t("date.calendar")%></label>
|
||||||
|
<div class="controls">
|
||||||
|
<label class="radio inline">
|
||||||
|
<%= radio_button("#{@field_name}[seminar_signup_fields][#{@af_counter}][typeC]", "calendar", "west_calendar",:checked =>(attribute_field["typeC"]["calendar"]== "west_calendar" ? true : false)) %><%= t("date.west_calendar")%>
|
||||||
|
</label>
|
||||||
|
<label class="radio inline">
|
||||||
|
<%= radio_button("#{@field_name}[seminar_signup_fields][#{@af_counter}][typeC]", "calendar", "tw_calendar",:checked =>(attribute_field["typeC"]["calendar"]== "tw_calendar" ? true : false)) %><%= t("date.tw_calendar")%>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end if show_type_panel(attribute_field,"typeC") != 'typeC hide' %>
|
||||||
|
|
||||||
|
<%= content_tag :div,:class=>"field-type default fade in #{show_type_panel(attribute_field,"typeD")}" do%>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label"><%= t(:enabled_for)%></label>
|
||||||
|
<div class="controls">
|
||||||
|
<label class="checkbox inline">
|
||||||
|
<%= check_box_tag("#{@field_name}[seminar_signup_fields][#{@af_counter}][typeD][cross_lang]","true",attribute_field["typeD"]["cross_lang"]) %>
|
||||||
|
<%= t(:cross_lang)%>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<%= render :partial=>"shared/attribute_field/placeholder_block",:locals=>{:field_name=>"#{@field_name}[seminar_signup_fields][#{@af_counter}][typeD][placeholder]",:values=>attribute_field["typeD"]["placeholder"]} %>
|
||||||
|
<% end if show_type_panel(attribute_field,"typeD") != 'typeD hide' %>
|
||||||
|
|
||||||
|
<%= content_tag :div,:class=>"field-type default fade in #{show_type_panel(attribute_field,"typeE")}" do%>
|
||||||
|
<%= render :partial=>"shared/attribute_field/list_block",:locals=>{:field_name=>"#{@field_name}[seminar_signup_fields][#{@af_counter}][typeE][option_list]",:values=>attribute_field["typeE"]["option_list"]}%>
|
||||||
|
<% end if show_type_panel(attribute_field,"typeE") != 'typeE hide' %>
|
||||||
|
|
||||||
|
<%= hidden_field "#{@field_name}[seminar_signup_fields][#{@af_counter}]","id",:value=>attribute_field.id%>
|
||||||
|
|
||||||
|
</div>
|
|
@ -0,0 +1,287 @@
|
||||||
|
<% 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 %>
|
||||||
|
|
||||||
|
<!-- Input Area -->
|
||||||
|
<div class="input-area">
|
||||||
|
|
||||||
|
<!-- Module Tabs -->
|
||||||
|
<div class="nav-name"><strong><%= t(:module) %></strong></div>
|
||||||
|
<ul class="nav nav-pills module-nav">
|
||||||
|
<li class="active"><a href="#basic" data-toggle="tab"><%= t(:basic) %></a></li>
|
||||||
|
<li><a href="#signup" data-toggle="tab"><%= t('seminar.signup') %></a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<!-- Module -->
|
||||||
|
<div class="tab-content module-area">
|
||||||
|
|
||||||
|
<!-- Basic Module -->
|
||||||
|
<div class="tab-pane fade in active" id="basic">
|
||||||
|
|
||||||
|
<!-- Category -->
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted"><%= t(:category) %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<%= select_category(f, @module_app) %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Seminar Date Time Picker -->
|
||||||
|
<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" %>
|
||||||
|
</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" %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Sign up Module -->
|
||||||
|
<div class="tab-pane fade in " id="signup">
|
||||||
|
|
||||||
|
<!-- host -->
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted"><%= t("seminar.registration_status") %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<% ['G','C'].each do |t| %>
|
||||||
|
<label class="checkbox inline">
|
||||||
|
<input type="checkbox" name="seminar_main[registration_status][]" value="<%=t%>" <%=(!@seminar.registration_status.blank? and @seminar.registration_status.include?(t)) ? "checked" : "" %> ><%= t("seminar.registration_status_#{t}") %>
|
||||||
|
</label>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Sign up Date Time Picker -->
|
||||||
|
<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" %>
|
||||||
|
</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" %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Contribute Date Time Picker -->
|
||||||
|
<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" %>
|
||||||
|
</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" %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted"><%= t('seminar.contribute_file_count') %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<%= f.text_field :contribute_file_count %>
|
||||||
|
(空白無限制)
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Language Tabs -->
|
||||||
|
<div class="nav-name"><strong><%= t(:language) %></strong></div>
|
||||||
|
<ul class="nav nav-pills language-nav">
|
||||||
|
<% @site_in_use_locales.each_with_index do |locale, i| %>
|
||||||
|
<li class="<%= 'active' if i == 0 %>">
|
||||||
|
<a data-toggle="tab" href=".<%= locale %>"><%= t(locale) %></a>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<!-- Language -->
|
||||||
|
<div class="tab-content language-area">
|
||||||
|
|
||||||
|
<% @site_in_use_locales.each_with_index do |locale, i| %>
|
||||||
|
|
||||||
|
<div class="<%= locale %> tab-pane fade <%= ( i == 0 ) ? "in active" : '' %>">
|
||||||
|
|
||||||
|
<!-- Title-->
|
||||||
|
<div class="control-group input-title">
|
||||||
|
<label class="control-label muted"><%= t('seminar.title') %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<%= f.fields_for :title_translations do |f| %>
|
||||||
|
<%= f.text_field locale, class: "input-block-level", placeholder: t(:title), value: (@seminar.title_translations[locale] rescue nil) %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Speaker -->
|
||||||
|
<div class="control-group input-title">
|
||||||
|
<label class="control-label muted"><%= t('seminar.speaker') %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<%= f.fields_for :speaker_translations do |f| %>
|
||||||
|
<%= f.text_field locale, class: "input-block-level", placeholder: t('seminar.speaker'), value: (@seminar.speaker_translations[locale] rescue nil) %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Content -->
|
||||||
|
<div class="control-group input-content">
|
||||||
|
<label class="control-label muted"><%= t('seminar.content') %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<div class="textarea">
|
||||||
|
<%= f.fields_for :content_translations do |f| %>
|
||||||
|
<%= f.cktext_area locale, rows: 5, class: "input-block-level", :value => (@seminar.content_translations[locale] rescue nil) %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Place-->
|
||||||
|
<div class="control-group input-title">
|
||||||
|
<label class="control-label muted"><%= t('seminar.act_place') %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<%= f.fields_for :act_place_translations do |f| %>
|
||||||
|
<%= f.text_field locale, class: "input-block-level", placeholder: t('seminar.act_place'), value: (@seminar.act_place_translations[locale] rescue nil) %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<!-- Link -->
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted"><%= t(:link) %></label>
|
||||||
|
<div class="controls add-input">
|
||||||
|
|
||||||
|
<!-- Exist -->
|
||||||
|
<% if @seminar && !@seminar.seminar_links.blank? %>
|
||||||
|
<div class="exist">
|
||||||
|
<% @seminar.seminar_links.each_with_index do |seminar_link, i| %>
|
||||||
|
<%= f.fields_for :seminar_links, seminar_link do |f| %>
|
||||||
|
<%= render :partial => 'form_link', :object => seminar_link, :locals => {:f => f, :i => i} %>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
<hr>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<!-- Add -->
|
||||||
|
<div class="add-target">
|
||||||
|
</div>
|
||||||
|
<p class="add-btn">
|
||||||
|
<%= hidden_field_tag 'seminar_link_field_count', @seminar.seminar_links.count %>
|
||||||
|
<a id="add_link" class="trigger btn btn-small btn-primary"><i class="icons-plus"></i> <%= t(:add) %></a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- File -->
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted"><%= t(:file_) %></label>
|
||||||
|
<div class="controls">
|
||||||
|
|
||||||
|
<!-- Exist -->
|
||||||
|
<% if @seminar && !@seminar.seminar_files.blank? %>
|
||||||
|
<div class="exist">
|
||||||
|
<% @seminar.seminar_files.each_with_index do |seminar_file, i| %>
|
||||||
|
<%= f.fields_for :seminar_files, seminar_file do |f| %>
|
||||||
|
<%= render :partial => 'form_file', :object => seminar_file, :locals => {:f => f, :i => i} %>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
<hr>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<!-- Add -->
|
||||||
|
<div class="add-target">
|
||||||
|
</div>
|
||||||
|
<p class="add-btn">
|
||||||
|
<%= hidden_field_tag 'seminar_file_field_count', @seminar.seminar_files.count %>
|
||||||
|
<a id="add_file" class="trigger btn btn-small btn-primary"><i class="icons-plus"></i> <%= t(:add) %></a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Form Actions -->
|
||||||
|
<div class="form-actions">
|
||||||
|
<%= get_referer_url[:seminarion] rescue "" %>
|
||||||
|
<%= 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>
|
||||||
|
|
||||||
|
<% content_for :page_specific_javascript do %>
|
||||||
|
<script>
|
||||||
|
$(function() {
|
||||||
|
$("#main-wrap").after("");
|
||||||
|
|
||||||
|
$(document).on('click', '#add_link', function(){
|
||||||
|
var new_id = $(this).prev().attr('value');
|
||||||
|
var old_id = new RegExp("new_seminar_links", "g");
|
||||||
|
var on = $('.language-nav li.active').index();
|
||||||
|
var le = $(this).parent('.add-btn').prev('.add-target').children('.start-line').length;
|
||||||
|
$(this).prev().attr('value', parseInt(new_id) + 1);
|
||||||
|
$(this).parent().siblings('.add-target').append(("<%= escape_javascript(add_attribute 'form_link', f, :seminar_links) %>").replace(old_id, new_id));
|
||||||
|
$(this).parent('.add-btn').prev('.add-target').children('.start-line').eq(le).children('.tab-content').children('.tab-pane').eq(on).addClass('in active').siblings().removeClass('in active');
|
||||||
|
formTip();
|
||||||
|
});
|
||||||
|
$(document).on('click', '#add_file', function(){
|
||||||
|
var new_id = $(this).prev().attr('value');
|
||||||
|
var old_id = new RegExp("new_seminar_files", "g");
|
||||||
|
var on = $('.language-nav li.active').index();
|
||||||
|
var le = $(this).parent('.add-btn').prev('.add-target').children('.start-line').length;
|
||||||
|
$(this).prev().attr('value', parseInt(new_id) + 1);
|
||||||
|
$(this).parent().siblings('.add-target').append(("<%= escape_javascript(add_attribute 'form_file', f, :seminar_files) %>").replace(old_id, new_id));
|
||||||
|
$(this).parent('.add-btn').prev('.add-target').children('.start-line').eq(le).children('.input-append').find('.tab-content').each(function() {
|
||||||
|
$(this).children('.tab-pane').eq(on).addClass('in active').siblings().removeClass('in active');
|
||||||
|
});
|
||||||
|
formTip();
|
||||||
|
});
|
||||||
|
$(document).on('click', '.delete_link', function(){
|
||||||
|
$(this).parents('.input-prepend').remove();
|
||||||
|
});
|
||||||
|
$(document).on('click', '.delete_file', function(){
|
||||||
|
$(this).parents('.input-prepend').remove();
|
||||||
|
});
|
||||||
|
$(document).on('click', '.remove_existing_record', function(){
|
||||||
|
if(confirm("<%= I18n.t(:sure?)%>")){
|
||||||
|
$(this).children('.should_destroy').attr('value', 1);
|
||||||
|
$(this).parents('.start-line').hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<% end %>
|
|
@ -0,0 +1,55 @@
|
||||||
|
<% if form_file.new_record? %>
|
||||||
|
<div class="fileupload fileupload-new start-line" data-provides="fileupload">
|
||||||
|
<% else %>
|
||||||
|
<div class="fileupload fileupload-exist start-line" data-provides="fileupload">
|
||||||
|
<% if 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} %>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
<div class="input-prepend input-append">
|
||||||
|
<label>
|
||||||
|
<span class="add-on btn btn-file" title='<%= t(:file_) %>'>
|
||||||
|
<i class="icons-paperclip"></i>
|
||||||
|
<%= f.file_field :file %>
|
||||||
|
</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>
|
||||||
|
</div>
|
||||||
|
</label>
|
||||||
|
<span class="add-on icons-pencil" title='<%= t(:alternative) %>'></span>
|
||||||
|
<span class="tab-content">
|
||||||
|
<% @site_in_use_locales.each_with_index do |locale, i| %>
|
||||||
|
<span class="tab-pane fade <%= ( i == 0 ) ? "in active" : '' %> <%= locale %>">
|
||||||
|
<%= f.fields_for :title_translations do |f| %>
|
||||||
|
<%= f.text_field locale, :class => "input-medium", placeholder: t(:alternative), :value => (form_file.title_translations[locale] rescue nil) %>
|
||||||
|
<% end %>
|
||||||
|
</span>
|
||||||
|
<% end %>
|
||||||
|
</span>
|
||||||
|
<span class="add-on icons-pencil" title='<%= t(:description) %>'></span>
|
||||||
|
<span class="tab-content">
|
||||||
|
<% @site_in_use_locales.each_with_index do |locale, i| %>
|
||||||
|
<span class="tab-pane fade <%= ( i == 0 ) ? "in active" : '' %> <%= locale %>">
|
||||||
|
<%= f.fields_for :description_translations do |f| %>
|
||||||
|
<%= f.text_field locale, :class => "input-medium", placeholder: t(:description), :value => (form_file.description_translations[locale] rescue nil) %>
|
||||||
|
<% end %>
|
||||||
|
</span>
|
||||||
|
<% end %>
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
<% if form_file.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 %>
|
||||||
|
<a class="icon-remove"></a>
|
||||||
|
<%= f.hidden_field :_destroy, :value => nil, :class => 'should_destroy' %>
|
||||||
|
</span>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<div class="input-prepend input-append start-line">
|
||||||
|
<span class="add-on icons-link" title="<%= t(:url) %>"></span>
|
||||||
|
<%= f.text_field :url, class: "input-large", placeholder: t(:url) %>
|
||||||
|
<span class="add-on icons-pencil" title="<%= t(:url_alt) %>"></span>
|
||||||
|
<span class="tab-content">
|
||||||
|
<% @site_in_use_locales.each_with_index do |locale, i| %>
|
||||||
|
<span class="tab-pane fade <%= ( i == 0 ) ? "in active" : '' %> <%= locale %>">
|
||||||
|
<%= f.fields_for :title_translations do |f| %>
|
||||||
|
<%= f.text_field locale, :class => "input-large", placeholder: t(:url_alt), :value => (form_link.title_translations[locale] rescue nil) %>
|
||||||
|
<% end %>
|
||||||
|
</span>
|
||||||
|
<% end %>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<% if form_link.new_record? %>
|
||||||
|
<span class="delete_link 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 %>
|
||||||
|
<a class="icon-remove"></a>
|
||||||
|
<%= f.hidden_field :_destroy, :value => nil, :class => 'should_destroy' %>
|
||||||
|
</span>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
|
@ -0,0 +1,47 @@
|
||||||
|
<script>
|
||||||
|
if(document.querySelectorAll("#orbit-bar").length==0) location.reload();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<table class="table main-list">
|
||||||
|
<thead>
|
||||||
|
<tr class="sort-header">
|
||||||
|
<% @table_fields.each do |f| %>
|
||||||
|
<% if f == 'seminar.title' %>
|
||||||
|
<th class='span4'><%= t(f)%></th>
|
||||||
|
<% else %>
|
||||||
|
<%= thead(f) %>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<% @seminars.each do |seminar| %>
|
||||||
|
<tr>
|
||||||
|
<td><%= seminar.category.title %></td>
|
||||||
|
<td>
|
||||||
|
<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) %>
|
||||||
|
<li><a href="/admin/seminars/<%=seminar.id.to_s%>/edit"><%= t(:edit) %></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="#" class="delete text-error" rel="/admin/seminars/<%=seminar.id.to_s%>"><%= t(:delete_) %></a></li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</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>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<%=
|
||||||
|
content_tag :div, class: "bottomnav clearfix" do
|
||||||
|
content_tag :div, paginate(@seminars), class: "pagination pagination-centered"
|
||||||
|
end
|
||||||
|
%>
|
|
@ -0,0 +1,268 @@
|
||||||
|
<%#= encoding: utf-8 %>
|
||||||
|
|
||||||
|
<script id="template-attributes" type="text/x-tmpl">
|
||||||
|
<div class="attributes">
|
||||||
|
<div class="attributes-header clearfix">
|
||||||
|
<input class="toggle-check" data-deploy="right" id="${_disabled[0]}" name="${_disabled[1]}" type="hidden" value="false">
|
||||||
|
<a class="btn btn-mini pull-right btn-danger delete" href="#"><i class="icon-trash"></i> Delete</a>
|
||||||
|
<a class="btn btn-mini pull-right btn-inverse reply hide" href="#"><i class="icons-reply"></i> Reply</a>
|
||||||
|
<input class="attribute_field_to_delete" id="${_to_delete[0]}" name="${_to_delete[1]}" type="hidden" value="false">
|
||||||
|
<h4>Field <span>${attributesHeaderLength}</span></h4>
|
||||||
|
</div>
|
||||||
|
<div class="attributes-body">
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted" for="${_key[0]}"><%= t(:key) %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<input type="text" data-type="key" id="${_key[0]}" name="${_key[1]}" placeholder="<%= t(:key) %>">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted" for=""><%= t(:name) %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<div class="input-append">
|
||||||
|
<div class="tab-content">
|
||||||
|
<% @site_in_use_locales.each do |locale| %>
|
||||||
|
<% active = (locale == @site_in_use_locales.first ? "active" : "") %>
|
||||||
|
<div class="tab-pane <%= active %> fade in" id="${_title_translations[0]+'_<%= locale%>'}">
|
||||||
|
<input type="text" data-type="lang_<%= locale%>" name="${_title_translations[1]+'[<%= locale%>]'}" placeholder="<%= t(locale).to_s %>">
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<div class="btn-group" data-toggle="buttons-radio">
|
||||||
|
<% @site_in_use_locales.each do |locale| %>
|
||||||
|
<% active = (locale == @site_in_use_locales.first ? "active" : "") %>
|
||||||
|
<a class="btn <%= active %>" href="${'#'+_title_translations[0]+'_<%= locale%>'}" data-toggle="tab"><%= t(locale).to_s %></a>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted" for=""><%= t('seminar.to_require') %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<label class="radio inline">
|
||||||
|
<input type="radio" data-type="search_true" id="${_to_require[0]+'_true'}" name="${_to_require[1]}" value="true" checked=""> <%= t(:yes_)%>
|
||||||
|
</label>
|
||||||
|
<label class="radio inline">
|
||||||
|
<input type="radio" data-type="search_false" id="${_to_require[0]+'_false'}" name="${_to_require[1]}" value="false"> <%= t(:no_)%>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted" for=""><%= t(:type)%></label>
|
||||||
|
<div class="controls">
|
||||||
|
<select class="dataType" data-type="select" name="${_markup}">
|
||||||
|
<%LIST[:markups].each do |key,val|%>
|
||||||
|
<% if key != 'address' %>
|
||||||
|
<option value="<%= key %>" ref="<%=val["panel"]%>"><%=t("lists.markups."+key)%></option >
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="field-type fade in typeA">
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted"><%= t(:enabled_for)%></label>
|
||||||
|
<div class="controls">
|
||||||
|
<label class="checkbox inline">
|
||||||
|
<input type="checkbox" data-type="enable_monolingual" id="${_cross_lang[0]}" name="${_cross_lang[1]}" value="true">
|
||||||
|
<%= t(:cross_lang) %>
|
||||||
|
</label>
|
||||||
|
<label class="checkbox inline">
|
||||||
|
<input type="checkbox" data-type="extendable_field" id="${_add_more[0]}" name="${_add_more[1]}" value="true">
|
||||||
|
<%= t(:add_more)%>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted"><%= t(:placeholder) %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<div class="input-append">
|
||||||
|
<div class="tab-content">
|
||||||
|
|
||||||
|
<% @site_in_use_locales.each do |locale| %>
|
||||||
|
<% active = (locale == @site_in_use_locales.first ? "active" : "") %>
|
||||||
|
|
||||||
|
<div class="tab-pane <%= active %> fade in" id="${_placeholder[0]+'_<%= locale %>'}">
|
||||||
|
<input type="text" data-type="lang_<%= locale %>" placeholder="<%= t(locale).to_s %>" name="${_placeholder[1]+'[<%= locale %>]'}">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="btn-group" data-toggle="buttons-radio">
|
||||||
|
|
||||||
|
<% @site_in_use_locales.each do |locale| %>
|
||||||
|
<% active = (locale == @site_in_use_locales.first ? "active" : "") %>
|
||||||
|
|
||||||
|
<a class="btn <%= active %>" href="${'#'+_placeholder[0]+'_<%= locale %>'}" data-toggle="tab"><%= t(locale).to_s %></a>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<script id="template-type" type="text/x-tmpl">
|
||||||
|
{{if templateType == 'typeA' || templateType == 'typeD' || templateType == 'typeG'}}
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted"><%= t(:enabled_for)%></label>
|
||||||
|
<div class="controls">
|
||||||
|
{{if templateType == 'typeA' || templateType == 'typeD'}}
|
||||||
|
<label class="checkbox inline">
|
||||||
|
<input type="checkbox" data-type="enable_monolingual" id="${_cross_lang[0]}" name="${_cross_lang[1]}" value="true">
|
||||||
|
<%= t(:cross_lang) %>
|
||||||
|
</label>
|
||||||
|
{{/if}}
|
||||||
|
{{if templateType == 'typeA' || templateType == 'typeG'}}
|
||||||
|
<label class="checkbox inline">
|
||||||
|
<input type="checkbox" data-type="extendable_field" id="${_add_more[0]}" name="${_add_more[1]}" value="true">
|
||||||
|
<%= t(:add_more)%>
|
||||||
|
</label>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{if templateType == 'typeA' || templateType == 'typeB' || templateType == 'typeD'}}
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted">
|
||||||
|
{{if templateType == 'typeB'}}
|
||||||
|
<%= t(:initial) %>
|
||||||
|
{{else}}
|
||||||
|
<%= t(:placeholder) %>
|
||||||
|
{{/if}}
|
||||||
|
</label>
|
||||||
|
<div class="controls">
|
||||||
|
<div class="input-append">
|
||||||
|
<div class="tab-content">
|
||||||
|
|
||||||
|
<% @site_in_use_locales.each do |locale| %>
|
||||||
|
<% active = (locale == @site_in_use_locales.first ? "active" : "") %>
|
||||||
|
|
||||||
|
<div class="tab-pane <%= active %> fade in" id=
|
||||||
|
{{if templateType == 'typeB'}}
|
||||||
|
"${_initial[0]+'_<%= locale %>'}"
|
||||||
|
{{else}}
|
||||||
|
"${_placeholder[0]+'_<%= locale %>'}"
|
||||||
|
{{/if}}
|
||||||
|
>
|
||||||
|
<input type="text" data-type="lang_<%= locale %>" placeholder="<%= t(locale).to_s %>" name=
|
||||||
|
{{if templateType == 'typeB'}}
|
||||||
|
"${_initial[1]+'[<%= locale %>]' }"
|
||||||
|
{{else}}
|
||||||
|
"${_placeholder[1]+'[<%= locale %>]'}"
|
||||||
|
{{/if}}
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="btn-group" data-toggle="buttons-radio">
|
||||||
|
|
||||||
|
<% @site_in_use_locales.each do |locale| %>
|
||||||
|
<% active = (locale == @site_in_use_locales.first ? "active" : "") %>
|
||||||
|
|
||||||
|
<a class="btn <%= active %>" href=
|
||||||
|
{{if templateType == 'typeB'}}
|
||||||
|
"${'#'+_initial[0]+'_<%= locale %>'}"
|
||||||
|
{{else}}
|
||||||
|
"${'#'+_placeholder[0]+'_<%= locale %>'}"
|
||||||
|
{{/if}}
|
||||||
|
data-toggle="tab"><%= t(locale).to_s %></a>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{if templateType == 'typeB' || templateType == 'typeE' || templateType == 'typeF'}}
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted" for=""><%= t(:options)%></label>
|
||||||
|
<div class="controls add-input">
|
||||||
|
<div class="add-target single">
|
||||||
|
<%= content_tag :div,:class=>"input-append" do%>
|
||||||
|
<% @site_in_use_locales.each do |locale| %>
|
||||||
|
<% last = (locale == @site_in_use_locales.last ? true : false) %>
|
||||||
|
<input type="text" data-type="${_option_list[2]+'_<%= locale %>' }" id="${_option_list[0]+'_<%= locale %>'}" name="${_option_list[1]+'[<%= locale %>]'}" class="input-medium" placeholder="<%= t(locale).to_s %>">
|
||||||
|
<% if last %>
|
||||||
|
<a href="#" class="btn remove-input"> <i class="icon-trash"></i> </a>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<p class="add-btn">
|
||||||
|
<a href="#" class="${templateType+' trigger btn btn-mini btn-primary'}"><i class="icons-plus"></i> Add</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{if templateType == 'typeC'}}
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted" for=""><%= t("date.format")%></label>
|
||||||
|
<div class="controls">
|
||||||
|
<select data-type="date" id="${_format[0]}" name="${_format[1]}">
|
||||||
|
<option value="format1">YYYY / MM / DD hh : mm</option>
|
||||||
|
<option value="format2">YYYY / MM / DD</option>
|
||||||
|
<option value="format3">YYYY / MM</option>
|
||||||
|
<option value="format4">YYYY</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted" for=""><%= t("date.range")%></label>
|
||||||
|
<div class="controls">
|
||||||
|
<label class="radio inline">
|
||||||
|
<input type="radio" data-type="time_period_flase" id="${_is_range[0]+'_false'}" name="${_is_range[1]}" value="false" checked="checked"> <%= t(:yes_)%>
|
||||||
|
</label>
|
||||||
|
<label class="radio inline">
|
||||||
|
<input type="radio" data-type="time_period_true" id="${_is_range[0]+'_true'}" name="${_is_range[1]}" value="true"> <%= t(:no_)%>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label muted" for=""><%= t("date.calendar")%></label>
|
||||||
|
<div class="controls">
|
||||||
|
<label class="radio inline">
|
||||||
|
<input type="radio" data-type="calendar_ac" id="${_calendar[0]+'_west_calendar'}" name="${_calendar[1]}" value="west_calendar" checked="checked"> <%= t("date.west_calendar")%>
|
||||||
|
</label>
|
||||||
|
<label class="radio inline">
|
||||||
|
<input type="radio" data-type="calendar_roc" id="${_calendar[0]+'_tw_calendar'}" name="${_calendar[1]}" value="tw_calendar"> <%= t("date.tw_calendar")%>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<script id="template-input-append" type="text/x-tmpl">
|
||||||
|
<%= content_tag :div,:class=>"input-append" do%>
|
||||||
|
<% @site_in_use_locales.each do |locale| %>
|
||||||
|
<% last = (locale == @site_in_use_locales.last ? true : false) %>
|
||||||
|
<input type="text" data-type="${_option_list[2]+'_<%= locale %>' }" id="${_option_list[0]+'_<%= locale %>'}" name="${_option_list[1]+'[<%= locale %>]'}" class="input-medium" placeholder="<%= t(locale).to_s %>">
|
||||||
|
<% if last %>
|
||||||
|
<a href="#" class="btn remove-input"> <i class="icon-trash"></i> </a>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script id="template-text" type="text/x-tmpl">
|
||||||
|
<div class="input-append">
|
||||||
|
<input type="text" id="${'text'+_text[0]}" name="${_text[1]+'[text]'}" class="input-medium" placeholder="Text">
|
||||||
|
<a href="#" class="btn remove-input">
|
||||||
|
<i class="icon-trash"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</script>
|
|
@ -0,0 +1,5 @@
|
||||||
|
<%= form_for @seminar, url: admin_seminar_path(@seminar), html: {class: "form-horizontal main-forms"} do |f| %>
|
||||||
|
<fieldset>
|
||||||
|
<%= render :partial => 'form', locals: {f: f} %>
|
||||||
|
</fieldset>
|
||||||
|
<% end %>
|
|
@ -0,0 +1,54 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
|
||||||
|
wb = xlsx_package.workbook
|
||||||
|
|
||||||
|
wb.add_worksheet(name: @seminar.title) do |sheet|
|
||||||
|
|
||||||
|
row = [t('seminar_signup.signup_time')]
|
||||||
|
|
||||||
|
row << t('seminar_signup.name')
|
||||||
|
|
||||||
|
row << t('seminar_signup.unit')
|
||||||
|
|
||||||
|
row << t('seminar_signup.tel')
|
||||||
|
|
||||||
|
row << t('seminar_signup.phone')
|
||||||
|
|
||||||
|
row << t('seminar_signup.fax')
|
||||||
|
|
||||||
|
row << t('seminar_signup.address')
|
||||||
|
|
||||||
|
row << t(:email)
|
||||||
|
|
||||||
|
row << t('seminar_signup.note')
|
||||||
|
|
||||||
|
@seminar.seminar_signup_fields.asc(:_id).each do |rf|
|
||||||
|
row << rf.title
|
||||||
|
end
|
||||||
|
|
||||||
|
sheet.add_row row
|
||||||
|
|
||||||
|
@seminar.seminar_signups.each do |signup|
|
||||||
|
|
||||||
|
row2 = []
|
||||||
|
|
||||||
|
row2 << "#{signup.created_at} "
|
||||||
|
row2 << "#{signup[:name]} "
|
||||||
|
row2 << "#{signup.unit} "
|
||||||
|
row2 << "#{signup[:tel]} "
|
||||||
|
row2 << "#{signup[:phone]} "
|
||||||
|
row2 << "#{signup[:fax]} "
|
||||||
|
row2 << "#{signup.address} "
|
||||||
|
row2 << "#{signup[:email]} "
|
||||||
|
row2 << "#{signup.note} "
|
||||||
|
|
||||||
|
@seminar.seminar_signup_fields.asc(:_id).each do |rf|
|
||||||
|
row2 << nl2br(show_attribute_value(@seminar.get_attribute_value(rf,signup.id).get_value_by_locale(I18n.locale))) rescue ' '
|
||||||
|
end
|
||||||
|
|
||||||
|
sheet.add_row row2
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
<%= render_filter @filter_fields, "index_table" %>
|
||||||
|
<span id="index_table">
|
||||||
|
<%= render 'index'%>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<%= render 'layouts/delete_modal', delete_options: @delete_options %>
|
|
@ -0,0 +1,5 @@
|
||||||
|
<%= form_for @seminar, url: admin_seminars_path, html: {class: "form-horizontal main-forms"} do |f| %>
|
||||||
|
<fieldset>
|
||||||
|
<%= render :partial => 'form', locals: {f: f} %>
|
||||||
|
</fieldset>
|
||||||
|
<% end %>
|
|
@ -0,0 +1,44 @@
|
||||||
|
|
||||||
|
<span id="index_table">
|
||||||
|
<script>
|
||||||
|
if(document.querySelectorAll("#orbit-bar").length==0) location.reload();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<h4><%= @seminar.title %></h4>
|
||||||
|
|
||||||
|
<table class="table main-list">
|
||||||
|
<thead>
|
||||||
|
<tr class="sort-header">
|
||||||
|
<th class='span2'><%= t('seminar_item_content.name')%></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<% @seminar_item_contents.each do |seminar_item_content| %>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<%= seminar_item_content.content %>
|
||||||
|
<div class="quick-edit">
|
||||||
|
<ul class="nav nav-pills">
|
||||||
|
<% if can_edit_or_delete?(act_signup) %>
|
||||||
|
<li><a href="/admin/seminar_item_contents/<%=seminar_item_content.id.to_s%>/edit"><%= t(:edit) %></a></li>
|
||||||
|
<li><a href="#" class="delete text-error" rel="/admin/seminar_item_contents/<%=seminar_item_content.id.to_s%>"><%= t(:delete_) %></a></li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<%= link_to content_tag(:i, nil, :class => 'icon-plus') +' '+ t('new_'),
|
||||||
|
'/admin/seminar_item_contents/'+@member.to_param+'/journal_papers/new', :class => 'btn btn-primary' %>
|
||||||
|
|
||||||
|
<%=
|
||||||
|
content_tag :div, class: "bottomnav clearfix" do
|
||||||
|
content_tag :div, paginate(@seminar_item_contents), class: "pagination pagination-centered"
|
||||||
|
end
|
||||||
|
%>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<%= render 'layouts/delete_modal', delete_options: @delete_options %>
|
|
@ -0,0 +1,60 @@
|
||||||
|
|
||||||
|
<span id="index_table">
|
||||||
|
<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">
|
||||||
|
<th class='span2'><%= t('seminar_signup.name')%></th>
|
||||||
|
<th class='span2'><%= t('seminar.registration_status')%></th>
|
||||||
|
<th class='span2'><%= t('seminar_signup.uploads')%></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<% @seminar_signups.each do |seminar_signup| %>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<%= 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><%= t("seminar.registration_status_#{seminar_signup.status}") if !seminar_signup.status.blank? %></td>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
<% seminar_signup.seminar_signup_contributes.collect do |seminar_signup_contribute| %>
|
||||||
|
<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 => seminar_signup_contribute.description} if seminar_signup_contribute.file.file
|
||||||
|
%></li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<% 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 %>
|
|
@ -0,0 +1,37 @@
|
||||||
|
<% content_for :page_specific_css do -%>
|
||||||
|
<%= stylesheet_link_tag "lib/wrap-nav.css" %>
|
||||||
|
<%= stylesheet_link_tag "lib/pageslide.css" %>
|
||||||
|
<%= stylesheet_link_tag "lib/main-forms.css" %>
|
||||||
|
<%= stylesheet_link_tag "lib/togglebox.css" %>
|
||||||
|
<% end -%>
|
||||||
|
|
||||||
|
<% content_for :page_specific_javascript do -%>
|
||||||
|
<%= javascript_include_tag "lib/jquery.tmpl.min.js" %>
|
||||||
|
<%= javascript_include_tag "field-forms.js" %>
|
||||||
|
<% end -%>
|
||||||
|
|
||||||
|
<%= form_for @attribute,:url => admin_seminar_path(@attribute) , :html => { :class=> "form-horizontal main-forms" } do |f| %>
|
||||||
|
<% if flash.now[:notice].present? %>
|
||||||
|
<%= flash.now[:notice]%>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<h3><%= @attribute.title %></h3>
|
||||||
|
<fieldset>
|
||||||
|
|
||||||
|
<div id="attributes-area" class="input-area">
|
||||||
|
<%= render partial: "attribute_field",collection: @attribute.seminar_signup_fields.asc(:_id)%>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-actions">
|
||||||
|
<button type="button" class="btn btn-success add-attributes"><%= t(:add_attribute_field) %></button>
|
||||||
|
<%= hidden_field_tag 'id', params[:id] if !params[:id].blank? %>
|
||||||
|
<%= f.submit t(:submit),:class=>"btn btn-primary"%>
|
||||||
|
<%= link_to t('cancel'), get_go_back, :class=>"btn" %>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
|
||||||
|
<% content_for :page_specific_javascript do -%>
|
||||||
|
<%= render 'support_member_form_js' %>
|
||||||
|
<% end -%>
|
|
@ -0,0 +1,59 @@
|
||||||
|
<% # encoding: utf-8 %>
|
||||||
|
<%
|
||||||
|
data = action_data
|
||||||
|
@con = data["con"]
|
||||||
|
@seminar = data["seminar"]
|
||||||
|
@seminar_signup = data["seminar_signup"]
|
||||||
|
%>
|
||||||
|
<% if !session[:seminar_signup_id].blank? %>
|
||||||
|
|
||||||
|
<% 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>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="file_name" class="col-sm-2 control-label">*<%= t('seminar_signup.file_name') %></label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<%= f.text_field :title, :class=>"input-medium form-control", :id=>'name', :placeholder=> t('seminar_signup.file_name'), :required => true %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="note" class="col-sm-2 control-label"><%= t('seminar_signup.file_note') %></label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<%= f.text_area :description, rows: 5, :class=>"input-medium form-control", :placeholder=> t('seminar_signup.file_note') %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="file" class="col-sm-2 control-label"><%= t('seminar_signup.files') %></label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<%= f.file_field :file %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<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>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<% else %>
|
||||||
|
|
||||||
|
上傳檔案數已滿
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<% else %>
|
||||||
|
|
||||||
|
請先登入
|
||||||
|
<br />
|
||||||
|
<a href="<%= page_for_seminar_url %>">回列表頁</a>
|
||||||
|
|
||||||
|
<% end %>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<% # encoding: utf-8 %>
|
||||||
|
<%
|
||||||
|
data = action_data
|
||||||
|
%>
|
|
@ -0,0 +1,10 @@
|
||||||
|
<% # encoding: utf-8 %>
|
||||||
|
<%
|
||||||
|
data = action_data
|
||||||
|
result = data["result"]
|
||||||
|
%>
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<p><%= result %> </p>
|
||||||
|
<a onClick="window.close()">關閉視窗</a>
|
||||||
|
</center>
|
|
@ -0,0 +1,53 @@
|
||||||
|
<% # encoding: utf-8 %>
|
||||||
|
<%
|
||||||
|
data = action_data
|
||||||
|
@seminar = data["seminar"]
|
||||||
|
@time_now = data["time_now"]
|
||||||
|
%>
|
||||||
|
|
||||||
|
<% if @seminar.contribute_start_date <= @time_now and (@seminar.contribute_end_date.nil? or @seminar.contribute_end_date+1 >= @time_now ) %>
|
||||||
|
|
||||||
|
<section id="main-wrap">
|
||||||
|
<div class="sign-in have-other-sign-in">
|
||||||
|
<% flash.each do |key, msg| %>
|
||||||
|
<%= content_tag :p, msg, :class => [key, "alert alert-error in fade"] %>
|
||||||
|
<% end %>
|
||||||
|
<div class="form">
|
||||||
|
<h2><%= @seminar.title %></h2>
|
||||||
|
<h3 class="login-logo"><%= t('seminar_signup.con_login') %></h3>
|
||||||
|
<div>
|
||||||
|
<input name="utf8" type="hidden" value="" />
|
||||||
|
<input name="authenticity_token" type="hidden" value="" />
|
||||||
|
</div>
|
||||||
|
<div class="form-block">
|
||||||
|
<div class="form-list clearfix">
|
||||||
|
<%= form_tag con_login_proc_seminars_path, :class => 'content' do %>
|
||||||
|
<div class="control-group clear">
|
||||||
|
<label for="user_email">
|
||||||
|
<i class="icon-user"></i>
|
||||||
|
</label>
|
||||||
|
<%= text_field_tag :user_name, params[:user_name], :placeholder => t("users.user_id"), :id=>"user_email" %>
|
||||||
|
</div>
|
||||||
|
<div class="control-group clear">
|
||||||
|
<label for="user_password">
|
||||||
|
<i class="icon-lock"></i>
|
||||||
|
</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>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<% else %>
|
||||||
|
|
||||||
|
已截止
|
||||||
|
|
||||||
|
<% end %>
|
|
@ -0,0 +1,13 @@
|
||||||
|
<% # encoding: utf-8 %>
|
||||||
|
<%
|
||||||
|
# data = action_data
|
||||||
|
|
||||||
|
session[:seminar_signup_id] = nil
|
||||||
|
session[:seminar_main_id] = nil
|
||||||
|
|
||||||
|
|
||||||
|
%>
|
||||||
|
|
||||||
|
<%= t('seminar_signup.logouting') %>
|
||||||
|
|
||||||
|
<script>document.location.href="<%= page_for_seminar_url %>";</script>
|
|
@ -0,0 +1,71 @@
|
||||||
|
<% # encoding: utf-8 %>
|
||||||
|
<%
|
||||||
|
data = action_data
|
||||||
|
@seminar = data["seminar"]
|
||||||
|
@seminar_signup = data["seminar_signup"]
|
||||||
|
@time_now = data["time_now"]
|
||||||
|
%>
|
||||||
|
<% if @seminar.contribute_start_date <= @time_now and ( @seminar.contribute_end_date.nil? or @seminar.contribute_end_date+1 >= @time_now ) %>
|
||||||
|
|
||||||
|
<% if !session[:seminar_signup_id].blank? %>
|
||||||
|
|
||||||
|
<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">
|
||||||
|
<caption>
|
||||||
|
<h3><%= @seminar.title %></h3>
|
||||||
|
</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>
|
||||||
|
<th class="col-md-2"><%= t(:action) %></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<%
|
||||||
|
@seminar_signup.seminar_signup_contributes.each do |seminar_signup_contribute|
|
||||||
|
%>
|
||||||
|
<tr>
|
||||||
|
<td><%= seminar_signup_contribute.title %></td>
|
||||||
|
<td><%= seminar_signup_contribute.description %></td>
|
||||||
|
<td><%= 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 => seminar_signup_contribute.description} 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 %>">
|
||||||
|
<%= submit_tag t(:delete_), class: "btn btn-primary" %>
|
||||||
|
<input type="hidden" name="referer_url" value="<%= request.original_url.split(request.env["HTTP_HOST"]).last.split('?').first %>">
|
||||||
|
<input type="hidden" name="con_no" value="<%= seminar_signup_contribute.id %>">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<% 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' %>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
檔案上限: <%= @seminar.contribute_file_count.blank? ? '無' : @seminar.contribute_file_count %>
|
||||||
|
|
||||||
|
<% else %>
|
||||||
|
|
||||||
|
請先登入
|
||||||
|
<br />
|
||||||
|
<a href="<%= page_for_seminar_url %>">回列表頁</a>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<% else %>
|
||||||
|
|
||||||
|
已截止
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
<% # encoding: utf-8 %>
|
||||||
|
<%
|
||||||
|
data = action_data
|
||||||
|
@con = data["con"]
|
||||||
|
%>
|
||||||
|
<% 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>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="file_name" class="col-sm-2 control-label">*<%= t('seminar_signup.file_name') %></label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<%= f.text_field :title, :class=>"input-medium form-control", :id=>'name', :placeholder=> t('seminar_signup.file_name'), :required => true %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="note" class="col-sm-2 control-label"><%= t('seminar_signup.file_note') %></label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<%= f.text_area :description, rows: 5, :class=>"input-medium form-control", :placeholder=> t('seminar_signup.file_note') %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="file" class="col-sm-2 control-label"><%= t('seminar_signup.files') %></label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<%= f.file_field :file %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<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>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<% else %>
|
||||||
|
請登入
|
||||||
|
<% end %>
|
|
@ -0,0 +1,63 @@
|
||||||
|
<% # encoding: utf-8 %>
|
||||||
|
<%
|
||||||
|
data = action_data
|
||||||
|
@seminars = data["seminars"]
|
||||||
|
@total_pages = data["total_pages"]
|
||||||
|
@time_now = data["time_now"]
|
||||||
|
%>
|
||||||
|
|
||||||
|
<table class="table table-hover table-striped seminar-index">
|
||||||
|
<caption>
|
||||||
|
<h3><%= t('seminar.seminar') %></h3>
|
||||||
|
</caption>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th class="col-md-2"><%= t(:category) %></th>
|
||||||
|
<th class="col-md-3"><%= t('seminar.title') %></th>
|
||||||
|
<th class="col-md-2"><%= t('seminar_signup.time') %></th>
|
||||||
|
<th class="col-md-2"><%= t('seminar_signup.place') %></th>
|
||||||
|
<th class="col-md-2"><%= t('seminar.signup') %></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<%
|
||||||
|
@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 )
|
||||||
|
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
|
||||||
|
sign_up = t('seminar.sign_up_not_yet')
|
||||||
|
else
|
||||||
|
sign_up = t('seminar.sign_up_overdue')
|
||||||
|
end
|
||||||
|
%>
|
||||||
|
<tr>
|
||||||
|
<td><%= seminar.category.title %></td>
|
||||||
|
<td><%= ('<a href="'+ OrbitHelper.url_to_show(seminar.to_param) + '?method=show_data" target="_blank">' + seminar.title + '</a>').html_safe %></td>
|
||||||
|
<td><%= SeminarMain.time_range(seminar.seminar_start_date, seminar.seminar_end_date) %></td>
|
||||||
|
<td><%= seminar.act_place %></td>
|
||||||
|
<td>
|
||||||
|
<%= 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 !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
|
||||||
|
else
|
||||||
|
('<a href="'+ OrbitHelper.url_to_show(seminar.to_param) + '?method=con_login">' + t('seminar_signup.con_login') + '</a>').html_safe
|
||||||
|
end
|
||||||
|
else
|
||||||
|
('<a href="'+ OrbitHelper.url_to_show(seminar.to_param) + '?method=con_login">' + t('seminar_signup.con_login') + '</a>').html_safe
|
||||||
|
end
|
||||||
|
end
|
||||||
|
%>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<%= create_pagination(@total_pages).html_safe if @total_pages > 1 %>
|
|
@ -0,0 +1,312 @@
|
||||||
|
<% # encoding: utf-8 %>
|
||||||
|
<%
|
||||||
|
data = action_data
|
||||||
|
@seminar = data["seminar"]
|
||||||
|
@seminar_signup = data["seminar_signup"]
|
||||||
|
@time_now = data["time_now"]
|
||||||
|
@form_index = 0
|
||||||
|
%>
|
||||||
|
|
||||||
|
<% 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 ) %>
|
||||||
|
|
||||||
|
<%#= stylesheet_link_tag "lib/main-forms" %>
|
||||||
|
<%= stylesheet_link_tag "basic/bootstrap-datetimepicker" %>
|
||||||
|
<%= javascript_include_tag "lib/bootstrap-datetimepicker" %>
|
||||||
|
<%= javascript_include_tag "lib/datetimepicker/date.time.picker.js" %>
|
||||||
|
<%= javascript_include_tag "lib/datetimepicker/datetimepicker.js" %>
|
||||||
|
|
||||||
|
|
||||||
|
<% flash.each do |key, msg| %>
|
||||||
|
<%= content_tag :p, msg, :class => [key, "alert alert-error in fade"] %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<%= form_for @seminar_signup, url: seminars_path, html: {class: "content form-horizontal" , :id=>"new-seminar-signup"} do |f| %>
|
||||||
|
<fieldset>
|
||||||
|
|
||||||
|
<!-- Title -->
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="title" class="col-sm-2 control-label"><%= t('seminar.title') %></label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<%= @seminar.title %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="status" class="col-sm-2 control-label"><%= t('seminar.registration_status') %></label>
|
||||||
|
<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') %>
|
||||||
|
</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') %>
|
||||||
|
</label>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Name -->
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="name" class="col-sm-2 control-label">*<%= t('seminar_signup.name') %></label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<%= f.text_field :name, :class=>"input-medium form-control", :id=>'name', :placeholder=> t('seminar_signup.name'), :required => true %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- unit -->
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="unit" class="col-sm-2 control-label">*<%= t("seminar_signup.unit")%></label>
|
||||||
|
<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=> "#{t(locale.to_s)}", :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>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Tel -->
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="tel" class="col-sm-2 control-label">*<%= t('seminar_signup.tel') %></label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<%= f.text_field :tel, :class=>"input-medium form-control", :placeholder=> t('seminar_signup.tel'), :required => true %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Phone -->
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="phone" class="col-sm-2 control-label"><%= t('seminar_signup.phone') %></label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<%= f.text_field :phone, :class=>"input-medium form-control", :placeholder=> t('seminar_signup.phone') %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Fax -->
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="fax" class="col-sm-2 control-label"><%= t('seminar_signup.fax') %></label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<%= f.text_field :fax, :class=>"input-medium form-control", :placeholder=> t('seminar_signup.fax') %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- address -->
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="address" class="col-sm-2 control-label"><%= t("seminar_signup.address")%></label>
|
||||||
|
<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="address_<%= locale %>">
|
||||||
|
<%= f.fields_for "address_translations".to_sym do |f| %>
|
||||||
|
<%= f.text_field locale, :class=>"input-medium form-control", :value => (@seminar_signup.send("address_translations")[locale] rescue nil), :placeholder=> "#{t(locale.to_s)}" %>
|
||||||
|
<% 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="#address_<%= locale %>" data-toggle="tab"><%= t(locale.to_s) %></a>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Email -->
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="email" class="col-sm-2 control-label">*<%= t(:email) %></label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<%= f.email_field :email, :class=>"input-medium form-control availibility", :placeholder=> t(:email), :required => true %> <a href="#" onclick="window.open(' <%= OrbitHelper.url_to_show(@seminar.to_param) %>?method=check_email&no=<%=@seminar.id%>&layout=false&email='+ $('input[type=email]').val() , 'check mail', config='height=100,width=300');" class="btn btn-primary">check mail</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group <%= @seminar.registration_status[0] == 'C' ? '' : 'hide' %>" id="registration_status">
|
||||||
|
<label for="password" class="col-sm-2 control-label">*<%= t('seminar_signup.password') %></label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<%= f.text_field :password, :class=>"input-medium form-control", :placeholder=> t('seminar_signup.password') %>
|
||||||
|
( 此密碼為下次投稿上傳檔案時必須輸入的密碼。 )
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Note -->
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="note" class="col-sm-2 control-label"><%= t("seminar_signup.note")%></label>
|
||||||
|
<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="note_<%= locale %>">
|
||||||
|
<%= f.fields_for "note_translations".to_sym do |f| %>
|
||||||
|
<%= f.text_area locale, rows: 5, :class=>"input-medium form-control", :value => (@seminar_signup.send("note_translations")[locale] rescue nil), :placeholder=> "#{t(locale.to_s)}" %>
|
||||||
|
<% 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="#note_<%= locale %>" data-toggle="tab"><%= t(locale.to_s) %></a>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<% @seminar.seminar_signup_fields.asc(:_id).each do |rf| %>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
|
||||||
|
<%= rf.block_helper(@seminar,@form_index,false,"seminar_signup",@seminar_signup, rf.to_require) %>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<% @form_index = @form_index +1 %>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 驗證碼 -->
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="note" class="col-sm-2 control-label"><%= t('seminar_signup.recaptcha') %></label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<%= gotcha_error %>
|
||||||
|
<%= gotcha %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="note" class="col-sm-2 control-label"><%= t('nkuht_donate.recaptcha') %></label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<%= show_simple_captcha %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-sm-offset-2 col-sm-10">
|
||||||
|
<label>
|
||||||
|
<input id="agree" name="agree" value="1" type="checkbox" required="required">
|
||||||
|
<a href="<%= OrbitHelper.url_to_show(@seminar.to_param) %>?method=show_privacy" target="_blank"><%= t("seminar_signup.agree")%></a>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<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="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' %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</fieldset>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
(function(){
|
||||||
|
var validated = false,
|
||||||
|
chks = false,
|
||||||
|
pwd = $('#seminar_signup_password')
|
||||||
|
|
||||||
|
$("form.content").submit(function(event) {
|
||||||
|
|
||||||
|
|
||||||
|
if ($('#seminar_signup_status_c:checked').val() == 'C'){
|
||||||
|
if (pwd.val() == ''){
|
||||||
|
pwd.attr('required', true);
|
||||||
|
pwd.focus();
|
||||||
|
alert( '<%= t('seminar_signup.password') %>' + ' is required');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
<%
|
||||||
|
@seminar.seminar_signup_fields.asc(:_id).each do |rf|
|
||||||
|
|
||||||
|
if rf.markup == 'checkbox'
|
||||||
|
%>
|
||||||
|
|
||||||
|
var checkedCount = $("input[type=checkbox][id^=seminar_signup_values_<%= rf.id %>]:checked").length;
|
||||||
|
if (checkedCount == 0){
|
||||||
|
alert( '<%= rf.title %>' + ' is required');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
<%
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
%>
|
||||||
|
|
||||||
|
var form = $(this),
|
||||||
|
isChecked = $('#agree:checked').val()?true:false;
|
||||||
|
|
||||||
|
if(!isChecked){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
$(".availibility").blur(function(){
|
||||||
|
var type = $(this).attr("id"),
|
||||||
|
loader = $(this).parent().find('.loader'),
|
||||||
|
elem = $(this),
|
||||||
|
value = $(this).val() || null;
|
||||||
|
var checkAvailability = function(){
|
||||||
|
$.ajax({
|
||||||
|
url : "<%= "#{OrbitHelper.url_to_show(@seminar.to_param)}?method=check_availability&no=#{@seminar.id}" %>",
|
||||||
|
data : {"type" : type, "value" : value},
|
||||||
|
dataType : "json",
|
||||||
|
type : "get",
|
||||||
|
success : function(data){
|
||||||
|
if( data.success == true ){
|
||||||
|
|
||||||
|
alert("1tttt");
|
||||||
|
}else{
|
||||||
|
|
||||||
|
alert("1ssss2");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if( value ){
|
||||||
|
if(type == "seminar_signup_email"){
|
||||||
|
checkAvailability();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<% elsif @seminar.registration_status.blank? %>
|
||||||
|
|
||||||
|
<%= t('seminar.sign_up_not_open') %>
|
||||||
|
|
||||||
|
<% elsif @seminar.signup_start_date > @time_now %>
|
||||||
|
|
||||||
|
<%= t('seminar.sign_up_not_yet') %>
|
||||||
|
|
||||||
|
<% else %>
|
||||||
|
|
||||||
|
<%= t('seminar.sign_up_overdue') %>
|
||||||
|
|
||||||
|
<% end %>
|
|
@ -0,0 +1,91 @@
|
||||||
|
<% # encoding: utf-8 %>
|
||||||
|
|
||||||
|
<%
|
||||||
|
data = action_data
|
||||||
|
@seminar = data["seminar"]
|
||||||
|
@sign_up = data["sign_up"]
|
||||||
|
@sign_up_time_range = data["sign_up_time_range"]
|
||||||
|
@seminar_time_range = data["seminar_time_range"]
|
||||||
|
@contribute_time_range = data["contribute_time_range"]
|
||||||
|
@contribute_action = data["contribute_action"]
|
||||||
|
%>
|
||||||
|
|
||||||
|
|
||||||
|
<table class="table table-striped seminarive-show-table">
|
||||||
|
<tbody >
|
||||||
|
<tr>
|
||||||
|
<th class="seminarive-title-field"><%= t(:category) %></th>
|
||||||
|
<td class="seminarive-title-value"><%= @seminar.category.title %></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th class="seminarive-title-field"><i class="fa fa-calendar fa-fw"></i><%= t('seminar.event_during') %></th>
|
||||||
|
<td class="seminarive-title-value"><%= @seminar_time_range %></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th class="seminarive-title-field"><%= t('seminar.title') %></th>
|
||||||
|
<td class="seminarive-title-value"><%= @seminar.title %></td>
|
||||||
|
</tr>
|
||||||
|
<% if !@seminar.speaker.blank? %>
|
||||||
|
<tr>
|
||||||
|
<th class="seminarive-title-field"><%= t('seminar.speaker') %></th>
|
||||||
|
<td class="seminarive-title-value"><%= @seminar.speaker %></td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
<% if !@seminar.content.blank? %>
|
||||||
|
<tr>
|
||||||
|
<th class="seminarive-title-field"><%= t('seminar.content') %></th>
|
||||||
|
<td class="seminarive-title-value"><%= nl2br(@seminar.content) %></td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
<tr>
|
||||||
|
<th class="seminarive-title-field"><i class="fa fa-calendar fa-fw"></i><%= t('seminar.signup_during') %></th>
|
||||||
|
<td class="seminarive-title-value"><%= @sign_up_time_range %></td>
|
||||||
|
</tr>
|
||||||
|
<% if !@contribute_time_range.blank? %>
|
||||||
|
<tr>
|
||||||
|
<th class="seminarive-title-field"><i class="fa fa-calendar fa-fw"></i><%= t('seminar.contribute_during') %></th>
|
||||||
|
<td class="seminarive-title-value"><%= @contribute_time_range %></td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
<tr>
|
||||||
|
<th class="seminarive-title-field"><%= t('seminar.signup') %></th>
|
||||||
|
<td class="seminarive-title-value"><%= @sign_up %><br /><%= @contribute_action %></td>
|
||||||
|
</tr>
|
||||||
|
<% if !@seminar.act_place.blank? %>
|
||||||
|
<tr>
|
||||||
|
<th class="seminarive-title-field"><i class="icon-flag"></i><%= t('seminar.act_place') %></th>
|
||||||
|
<td class="seminarive-title-value"><%= @seminar.act_place %></td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
<% if !@seminar.seminar_files.blank? %>
|
||||||
|
<tr>
|
||||||
|
<th class="seminarive-title-field"><i class="fa fa-fw fa-paperclip"></i><%= t(:file_) %></th>
|
||||||
|
<td class="seminarive-title-value">
|
||||||
|
<% @seminar.seminar_files.map do |file| %>
|
||||||
|
<%= link_to (file.title.blank? ? File.basename(file.file.path) : file.title) , file.file.url, {:target => '_blank', :title => file.description} if file.file.file %>
|
||||||
|
<% end %>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
<% if !@seminar.seminar_links.blank? %>
|
||||||
|
<tr>
|
||||||
|
<th class="seminarive-title-field"><i class="fa fa-fw fa-link"></i><%= t(:link) %></th>
|
||||||
|
<td class="seminarive-title-value">
|
||||||
|
<% @seminar.seminar_links.map do |link| %>
|
||||||
|
<%= link_to (link.title.blank? ? link.url : link.title), link.url, :target => '_blank' %>
|
||||||
|
<% end %>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
<% @seminar.seminar_item_contents.asc(:_id).each do |item_content| %>
|
||||||
|
<tr>
|
||||||
|
<th class="seminarive-title-field"><%= item_content.seminar_item.title %></th>
|
||||||
|
<td class="seminarive-title-value"><%= item_content.content.html_safe %></td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<%= link_to t(:close), 'javascript:window.close();', :class => 'btn btn-primary' %>
|
|
@ -0,0 +1,28 @@
|
||||||
|
<% # encoding: utf-8 %>
|
||||||
|
|
||||||
|
<%
|
||||||
|
data = action_data
|
||||||
|
@seminar_agreement = data["seminar_agreement"]
|
||||||
|
%>
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
.highlight {
|
||||||
|
background-color: #f7f7f9;
|
||||||
|
border: 1px solid #e1e1e8;
|
||||||
|
border-radius: 4px;
|
||||||
|
margin-bottom: 14px;
|
||||||
|
padding: 9px 14px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<h3>個資及隱私權保護宣告</h3>
|
||||||
|
|
||||||
|
<div class="highlight seminar_privacy">
|
||||||
|
|
||||||
|
<%= @seminar_agreement.content.html_safe %>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<%= link_to t(:close), 'javascript:window.close();', :class => 'btn btn-primary' %>
|
|
@ -0,0 +1,6 @@
|
||||||
|
<% # encoding: utf-8 %>
|
||||||
|
<%
|
||||||
|
data = action_data
|
||||||
|
%>
|
||||||
|
|
||||||
|
您的報名已成功,感謝您的參與。
|
|
@ -0,0 +1,33 @@
|
||||||
|
<style type="text/css">
|
||||||
|
.simple_captcha{border: 1px solid #ccc; padding: 5px !important;}
|
||||||
|
.simple_captcha,
|
||||||
|
.simple_captcha div{display: table;}
|
||||||
|
.simple_captcha .simple_captcha_field,
|
||||||
|
.simple_captcha .simple_captcha_image{
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
margin: 0px 0px 2px 0px !important;
|
||||||
|
padding: 0px !important;
|
||||||
|
}
|
||||||
|
.simple_captcha .simple_captcha_image img{
|
||||||
|
margin: 0px !important;
|
||||||
|
padding: 0px !important;
|
||||||
|
width: 110px !important;
|
||||||
|
}
|
||||||
|
.simple_captcha .simple_captcha_label{font-size: 12px;}
|
||||||
|
.simple_captcha .simple_captcha_field input{
|
||||||
|
width: 150px !important;
|
||||||
|
font-size: 16px;
|
||||||
|
border: none;
|
||||||
|
background-color: #efefef;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class='simple_captcha'>
|
||||||
|
<div class='simple_captcha_image'>
|
||||||
|
<%= simple_captcha_options[:image] %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class='simple_captcha_field'>
|
||||||
|
<%= simple_captcha_options[:field] %>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,18 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
# This command will automatically be run when you run "rails" with Rails 4 gems installed from the root of your application.
|
||||||
|
|
||||||
|
ENGINE_ROOT = File.expand_path('../..', __FILE__)
|
||||||
|
ENGINE_PATH = File.expand_path('../../lib/nkuht_donate/engine', __FILE__)
|
||||||
|
|
||||||
|
# Set up gems listed in the Gemfile.
|
||||||
|
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
|
||||||
|
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
||||||
|
|
||||||
|
# require 'rails/all'
|
||||||
|
# require 'rails/engine/commands'
|
||||||
|
require "action_controller/railtie"
|
||||||
|
require "action_mailer/railtie"
|
||||||
|
require "sprockets/railtie"
|
||||||
|
require "rails/test_unit/railtie"
|
||||||
|
require 'rails/engine/commands'
|
||||||
|
require "mongoid/railtie"
|
|
@ -0,0 +1,86 @@
|
||||||
|
en:
|
||||||
|
|
||||||
|
simple_captcha:
|
||||||
|
placeholder: ""
|
||||||
|
label: ""
|
||||||
|
|
||||||
|
restful_actions:
|
||||||
|
act_signup: 報名資料
|
||||||
|
|
||||||
|
module_name:
|
||||||
|
seminar: 研討會
|
||||||
|
|
||||||
|
recaptcha:
|
||||||
|
errors:
|
||||||
|
verification_failed: 驗證碼錯誤
|
||||||
|
|
||||||
|
seminar:
|
||||||
|
export_csv: 匯出CSV
|
||||||
|
recaptcha: 驗證碼
|
||||||
|
yes_: 是
|
||||||
|
no_: 否
|
||||||
|
seminar: 研討會
|
||||||
|
title: 研討會名稱
|
||||||
|
speaker: 主講者
|
||||||
|
content: 內容說明
|
||||||
|
act_place: 活動地點
|
||||||
|
registration_status: 報名身分
|
||||||
|
registration_status_C: 投稿者
|
||||||
|
registration_status_G: 一般報名
|
||||||
|
seminar_start_date: 活動開始時間
|
||||||
|
seminar_end_date: 活動結束時間
|
||||||
|
signup_start_date: 報名開始時間
|
||||||
|
signup_end_date: 報名結束時間
|
||||||
|
contribute_start_date: 投稿開始時間
|
||||||
|
contribute_end_date: 投稿結束時間
|
||||||
|
event_during: 活動期間
|
||||||
|
contribute_during: 投稿期間
|
||||||
|
signup_during: 報名期間
|
||||||
|
signup_count: 報名人數
|
||||||
|
signup: 報名
|
||||||
|
export: 匯出
|
||||||
|
set_seminar_items: 項目
|
||||||
|
set_seminar_signup_field: 圈選設定
|
||||||
|
set_seminar_item_content: 項目設定
|
||||||
|
set_seminar_agreements: 個資宣告設定
|
||||||
|
seminar_agreements_content: 個資宣告內容
|
||||||
|
to_require: 是否必填
|
||||||
|
sign_up_not_yet: 報名時間未開始
|
||||||
|
sign_up_not_open: 未開放報名
|
||||||
|
sign_up_overdue: 報名時間已過
|
||||||
|
contribute_file_count: 投稿檔案數
|
||||||
|
|
||||||
|
frontend:
|
||||||
|
seminar: 研討會前台
|
||||||
|
|
||||||
|
seminar_item:
|
||||||
|
new_item: 新增項目
|
||||||
|
edit_item: 編輯項目
|
||||||
|
set_item: 設定項目
|
||||||
|
del_item: 刪除項目
|
||||||
|
|
||||||
|
seminar_item_content:
|
||||||
|
content: 內容
|
||||||
|
|
||||||
|
seminar_signup:
|
||||||
|
signup_time: 報名時間
|
||||||
|
name: Name
|
||||||
|
unit: 單位
|
||||||
|
tel: TEL
|
||||||
|
phone: Mobile telephone
|
||||||
|
fax: Fax
|
||||||
|
address: 地址
|
||||||
|
email: e-mail信箱
|
||||||
|
password: 密碼
|
||||||
|
note: 註解
|
||||||
|
time: (開始/結束)時間
|
||||||
|
place: 地點
|
||||||
|
agree: "Accept Privacy and Personal Information Protection Policy of the Site"
|
||||||
|
signup_field: 圈選項目
|
||||||
|
uploads: 上傳檔案
|
||||||
|
con_login: 投稿者登入
|
||||||
|
file_name: 稿件名稱
|
||||||
|
file_note: 摘要
|
||||||
|
files: 檔案
|
||||||
|
logout: 登出
|
||||||
|
logouting: 登出中
|
|
@ -0,0 +1,87 @@
|
||||||
|
zh_tw:
|
||||||
|
|
||||||
|
simple_captcha:
|
||||||
|
placeholder: ""
|
||||||
|
label: ""
|
||||||
|
|
||||||
|
restful_actions:
|
||||||
|
act_signup: 報名資料
|
||||||
|
|
||||||
|
module_name:
|
||||||
|
seminar: 研討會
|
||||||
|
|
||||||
|
recaptcha:
|
||||||
|
errors:
|
||||||
|
verification_failed: 驗證碼錯誤
|
||||||
|
|
||||||
|
seminar:
|
||||||
|
export_csv: 匯出CSV
|
||||||
|
recaptcha: 驗證碼
|
||||||
|
yes_: 是
|
||||||
|
no_: 否
|
||||||
|
seminar: 研討會
|
||||||
|
title: 研討會名稱
|
||||||
|
speaker: 主講者
|
||||||
|
content: 內容說明
|
||||||
|
act_place: 活動地點
|
||||||
|
registration_status: 報名身分
|
||||||
|
registration_status_C: 投稿者
|
||||||
|
registration_status_G: 一般報名
|
||||||
|
seminar_start_date: 活動開始時間
|
||||||
|
seminar_end_date: 活動結束時間
|
||||||
|
signup_start_date: 報名開始時間
|
||||||
|
signup_end_date: 報名結束時間
|
||||||
|
contribute_start_date: 投稿開始時間
|
||||||
|
contribute_end_date: 投稿結束時間
|
||||||
|
event_during: 活動期間
|
||||||
|
contribute_during: 投稿期間
|
||||||
|
signup_during: 報名期間
|
||||||
|
signup_count: 報名人數
|
||||||
|
signup: 報名
|
||||||
|
export: 匯出
|
||||||
|
set_seminar_items: 項目
|
||||||
|
set_seminar_signup_field: 圈選設定
|
||||||
|
set_seminar_item_content: 項目設定
|
||||||
|
set_seminar_agreements: 個資宣告設定
|
||||||
|
seminar_agreements_content: 個資宣告內容
|
||||||
|
to_require: 是否必填
|
||||||
|
sign_up_not_yet: 報名時間未開始
|
||||||
|
sign_up_not_open: 未開放報名
|
||||||
|
sign_up_overdue: 報名時間已過
|
||||||
|
contribute_file_count: 投稿檔案數
|
||||||
|
|
||||||
|
frontend:
|
||||||
|
seminar: 研討會前台
|
||||||
|
|
||||||
|
seminar_item:
|
||||||
|
new_item: 新增項目
|
||||||
|
edit_item: 編輯項目
|
||||||
|
set_item: 設定項目
|
||||||
|
del_item: 刪除項目
|
||||||
|
|
||||||
|
seminar_item_content:
|
||||||
|
content: 內容
|
||||||
|
|
||||||
|
seminar_signup:
|
||||||
|
signup_time: 報名時間
|
||||||
|
name: 姓名
|
||||||
|
unit: 單位
|
||||||
|
tel: 聯絡電話
|
||||||
|
phone: 行動電話
|
||||||
|
fax: 傳真
|
||||||
|
address: 地址
|
||||||
|
email: e-mail信箱
|
||||||
|
password: 密碼
|
||||||
|
note: 註解
|
||||||
|
time: (開始/結束)時間
|
||||||
|
place: 地點
|
||||||
|
agree: 同意接受本站個資及隱私權保護宣告
|
||||||
|
recaptcha: 驗證碼
|
||||||
|
signup_field: 圈選項目
|
||||||
|
uploads: 上傳檔案
|
||||||
|
con_login: 投稿者登入
|
||||||
|
file_name: 稿件名稱
|
||||||
|
file_note: 摘要
|
||||||
|
files: 檔案
|
||||||
|
logout: 登出
|
||||||
|
logouting: 登出中
|
|
@ -0,0 +1,39 @@
|
||||||
|
Rails.application.routes.draw do
|
||||||
|
|
||||||
|
locales = Site.first.in_use_locales rescue I18n.available_locales
|
||||||
|
|
||||||
|
scope "(:locale)", locale: Regexp.new(locales.join("|")) do
|
||||||
|
namespace :admin do
|
||||||
|
resources :seminars do
|
||||||
|
member do
|
||||||
|
get 'export'
|
||||||
|
get 'set_write_off'
|
||||||
|
get 'seminar_signup'
|
||||||
|
get 'seminar_item_content'
|
||||||
|
get 'seminar_signup_field'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
resources :seminar_items do
|
||||||
|
collection do
|
||||||
|
post 'delete_items'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
resources :seminar_agreements
|
||||||
|
resources :seminar_signups
|
||||||
|
resources :seminar_item_contents
|
||||||
|
end
|
||||||
|
|
||||||
|
resources :seminars do
|
||||||
|
collection do
|
||||||
|
get ':slug_title-:uid', to: 'seminars#show'
|
||||||
|
post 'con_login_proc', to: 'seminars#con_login_proc'
|
||||||
|
post 'con_logout_proc', to: 'seminars#con_logout_proc'
|
||||||
|
post 'add_file_proc', to: 'seminars#add_file_proc'
|
||||||
|
post 'edit_file_proc', to: 'seminars#edit_file_proc'
|
||||||
|
post 'del_file', to: 'seminars#del_file'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,4 @@
|
||||||
|
require "seminar/engine"
|
||||||
|
|
||||||
|
module Seminar
|
||||||
|
end
|
|
@ -0,0 +1,50 @@
|
||||||
|
module Seminar
|
||||||
|
class Engine < ::Rails::Engine
|
||||||
|
initializer "seminar" do
|
||||||
|
OrbitApp.registration "Seminar", :type => "ModuleApp" do
|
||||||
|
module_label "seminar.seminar"
|
||||||
|
base_url File.expand_path File.dirname(__FILE__)
|
||||||
|
authorizable
|
||||||
|
categorizable
|
||||||
|
frontend_enabled
|
||||||
|
data_count 1..20
|
||||||
|
|
||||||
|
side_bar do
|
||||||
|
head_label_i18n 'seminar.seminar', icon_class: "icon-globe"
|
||||||
|
available_for "managers"
|
||||||
|
active_for_controllers (['admin/seminars'])
|
||||||
|
head_link_path "admin_seminars_path"
|
||||||
|
|
||||||
|
context_link 'list_',
|
||||||
|
:link_path=>"admin_seminars_path" ,
|
||||||
|
:priority=>1,
|
||||||
|
:active_for_action=>{'admin/seminars'=>'index'},
|
||||||
|
:available_for => 'managers'
|
||||||
|
context_link 'new_',
|
||||||
|
:link_path=>"new_admin_seminar_path" ,
|
||||||
|
:priority=>2,
|
||||||
|
:active_for_action=>{'admin/seminars'=>'new'},
|
||||||
|
:available_for => 'managers'
|
||||||
|
context_link 'categories',
|
||||||
|
:link_path=>"admin_module_app_categories_path" ,
|
||||||
|
:link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'seminar').id}",
|
||||||
|
:priority=>3,
|
||||||
|
:active_for_action=>{'admin/seminars'=>'categories'},
|
||||||
|
:active_for_category => 'Seminar',
|
||||||
|
:available_for => 'managers'
|
||||||
|
context_link 'seminar.set_seminar_items',
|
||||||
|
:link_path=>"admin_seminar_items_path" ,
|
||||||
|
:priority=>3,
|
||||||
|
:active_for_action=>{'admin/seminars'=>'seminar_items'},
|
||||||
|
:available_for => 'managers'
|
||||||
|
context_link 'seminar.set_seminar_agreements',
|
||||||
|
:link_path=>"admin_seminar_agreements_path" ,
|
||||||
|
:priority=>3,
|
||||||
|
:active_for_action=>{'admin/seminars'=>'seminar_agreements'},
|
||||||
|
:available_for => 'managers'
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,3 @@
|
||||||
|
module Seminar
|
||||||
|
VERSION = "0.0.1"
|
||||||
|
end
|
|
@ -0,0 +1,4 @@
|
||||||
|
# desc "Explaining what the task does"
|
||||||
|
# task :seminar do
|
||||||
|
# # Task goes here
|
||||||
|
# end
|
|
@ -0,0 +1,23 @@
|
||||||
|
$:.push File.expand_path("../lib", __FILE__)
|
||||||
|
|
||||||
|
# Maintain your gem's version:
|
||||||
|
require "seminar/version"
|
||||||
|
|
||||||
|
# Describe your gem and declare its dependencies:
|
||||||
|
Gem::Specification.new do |s|
|
||||||
|
s.name = "seminar"
|
||||||
|
s.version = Seminar::VERSION
|
||||||
|
s.authors = ["TODO: Your name"]
|
||||||
|
s.email = ["TODO: Your email"]
|
||||||
|
s.homepage = "TODO"
|
||||||
|
s.summary = "TODO: Summary of Seminar."
|
||||||
|
s.description = "TODO: Description of Seminar."
|
||||||
|
s.license = "MIT"
|
||||||
|
|
||||||
|
s.files = Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.rdoc"]
|
||||||
|
s.test_files = Dir["test/**/*"]
|
||||||
|
|
||||||
|
s.add_dependency "rails", "~> 4.1.9"
|
||||||
|
|
||||||
|
s.add_development_dependency "sqlite3"
|
||||||
|
end
|
|
@ -0,0 +1,7 @@
|
||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class SeminarControllerTest < ActionController::TestCase
|
||||||
|
# test "the truth" do
|
||||||
|
# assert true
|
||||||
|
# end
|
||||||
|
end
|
|
@ -0,0 +1,28 @@
|
||||||
|
== README
|
||||||
|
|
||||||
|
This README would normally document whatever steps are necessary to get the
|
||||||
|
application up and running.
|
||||||
|
|
||||||
|
Things you may want to cover:
|
||||||
|
|
||||||
|
* Ruby version
|
||||||
|
|
||||||
|
* System dependencies
|
||||||
|
|
||||||
|
* Configuration
|
||||||
|
|
||||||
|
* Database creation
|
||||||
|
|
||||||
|
* Database initialization
|
||||||
|
|
||||||
|
* How to run the test suite
|
||||||
|
|
||||||
|
* Services (job queues, cache servers, search engines, etc.)
|
||||||
|
|
||||||
|
* Deployment instructions
|
||||||
|
|
||||||
|
* ...
|
||||||
|
|
||||||
|
|
||||||
|
Please feel free to use a different markup language if you do not plan to run
|
||||||
|
<tt>rake doc:app</tt>.
|
|
@ -0,0 +1,6 @@
|
||||||
|
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
||||||
|
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
||||||
|
|
||||||
|
require File.expand_path('../config/application', __FILE__)
|
||||||
|
|
||||||
|
Rails.application.load_tasks
|
|
@ -0,0 +1,13 @@
|
||||||
|
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
||||||
|
// listed below.
|
||||||
|
//
|
||||||
|
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
||||||
|
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
|
||||||
|
//
|
||||||
|
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
||||||
|
// compiled file.
|
||||||
|
//
|
||||||
|
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
|
||||||
|
// about supported directives.
|
||||||
|
//
|
||||||
|
//= require_tree .
|
|
@ -0,0 +1,15 @@
|
||||||
|
/*
|
||||||
|
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
||||||
|
* listed below.
|
||||||
|
*
|
||||||
|
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
||||||
|
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
|
||||||
|
*
|
||||||
|
* You're free to add application-wide styles to this file and they'll appear at the bottom of the
|
||||||
|
* compiled file so the styles you add here take precedence over styles defined in any styles
|
||||||
|
* defined in the other CSS/SCSS files in this directory. It is generally better to create a new
|
||||||
|
* file per style scope.
|
||||||
|
*
|
||||||
|
*= require_tree .
|
||||||
|
*= require_self
|
||||||
|
*/
|
|
@ -0,0 +1,5 @@
|
||||||
|
class ApplicationController < ActionController::Base
|
||||||
|
# Prevent CSRF attacks by raising an exception.
|
||||||
|
# For APIs, you may want to use :null_session instead.
|
||||||
|
protect_from_forgery with: :exception
|
||||||
|
end
|
|
@ -0,0 +1,2 @@
|
||||||
|
module ApplicationHelper
|
||||||
|
end
|
|
@ -0,0 +1,14 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Dummy</title>
|
||||||
|
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
|
||||||
|
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
|
||||||
|
<%= csrf_meta_tags %>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<%= yield %>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
|
||||||
|
load Gem.bin_path('bundler', 'bundle')
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
APP_PATH = File.expand_path('../../config/application', __FILE__)
|
||||||
|
require_relative '../config/boot'
|
||||||
|
require 'rails/commands'
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
require_relative '../config/boot'
|
||||||
|
require 'rake'
|
||||||
|
Rake.application.run
|
|
@ -0,0 +1,4 @@
|
||||||
|
# This file is used by Rack-based servers to start the application.
|
||||||
|
|
||||||
|
require ::File.expand_path('../config/environment', __FILE__)
|
||||||
|
run Rails.application
|
|
@ -0,0 +1,23 @@
|
||||||
|
require File.expand_path('../boot', __FILE__)
|
||||||
|
|
||||||
|
require 'rails/all'
|
||||||
|
|
||||||
|
Bundler.require(*Rails.groups)
|
||||||
|
require "seminar"
|
||||||
|
|
||||||
|
module Dummy
|
||||||
|
class Application < Rails::Application
|
||||||
|
# Settings in config/environments/* take precedence over those specified here.
|
||||||
|
# Application configuration should go into files in config/initializers
|
||||||
|
# -- all .rb files in that directory are automatically loaded.
|
||||||
|
|
||||||
|
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
|
||||||
|
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
|
||||||
|
# config.time_zone = 'Central Time (US & Canada)'
|
||||||
|
|
||||||
|
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
||||||
|
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
||||||
|
# config.i18n.default_locale = :de
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
# Set up gems listed in the Gemfile.
|
||||||
|
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../../Gemfile', __FILE__)
|
||||||
|
|
||||||
|
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
||||||
|
$LOAD_PATH.unshift File.expand_path('../../../../lib', __FILE__)
|
|
@ -0,0 +1,25 @@
|
||||||
|
# SQLite version 3.x
|
||||||
|
# gem install sqlite3
|
||||||
|
#
|
||||||
|
# Ensure the SQLite 3 gem is defined in your Gemfile
|
||||||
|
# gem 'sqlite3'
|
||||||
|
#
|
||||||
|
default: &default
|
||||||
|
adapter: sqlite3
|
||||||
|
pool: 5
|
||||||
|
timeout: 5000
|
||||||
|
|
||||||
|
development:
|
||||||
|
<<: *default
|
||||||
|
database: db/development.sqlite3
|
||||||
|
|
||||||
|
# Warning: The database defined as "test" will be erased and
|
||||||
|
# re-generated from your development database when you run "rake".
|
||||||
|
# Do not set this db to the same as development or production.
|
||||||
|
test:
|
||||||
|
<<: *default
|
||||||
|
database: db/test.sqlite3
|
||||||
|
|
||||||
|
production:
|
||||||
|
<<: *default
|
||||||
|
database: db/production.sqlite3
|
|
@ -0,0 +1,5 @@
|
||||||
|
# Load the Rails application.
|
||||||
|
require File.expand_path('../application', __FILE__)
|
||||||
|
|
||||||
|
# Initialize the Rails application.
|
||||||
|
Rails.application.initialize!
|
|
@ -0,0 +1,37 @@
|
||||||
|
Rails.application.configure do
|
||||||
|
# Settings specified here will take precedence over those in config/application.rb.
|
||||||
|
|
||||||
|
# In the development environment your application's code is reloaded on
|
||||||
|
# every request. This slows down response time but is perfect for development
|
||||||
|
# since you don't have to restart the web server when you make code changes.
|
||||||
|
config.cache_classes = false
|
||||||
|
|
||||||
|
# Do not eager load code on boot.
|
||||||
|
config.eager_load = false
|
||||||
|
|
||||||
|
# Show full error reports and disable caching.
|
||||||
|
config.consider_all_requests_local = true
|
||||||
|
config.action_controller.perform_caching = false
|
||||||
|
|
||||||
|
# Don't care if the mailer can't send.
|
||||||
|
config.action_mailer.raise_delivery_errors = false
|
||||||
|
|
||||||
|
# Print deprecation notices to the Rails logger.
|
||||||
|
config.active_support.deprecation = :log
|
||||||
|
|
||||||
|
# Raise an error on page load if there are pending migrations.
|
||||||
|
config.active_record.migration_error = :page_load
|
||||||
|
|
||||||
|
# Debug mode disables concatenation and preprocessing of assets.
|
||||||
|
# This option may cause significant delays in view rendering with a large
|
||||||
|
# number of complex assets.
|
||||||
|
config.assets.debug = true
|
||||||
|
|
||||||
|
# Adds additional error checking when serving assets at runtime.
|
||||||
|
# Checks for improperly declared sprockets dependencies.
|
||||||
|
# Raises helpful error messages.
|
||||||
|
config.assets.raise_runtime_errors = true
|
||||||
|
|
||||||
|
# Raises error for missing translations
|
||||||
|
# config.action_view.raise_on_missing_translations = true
|
||||||
|
end
|
|
@ -0,0 +1,78 @@
|
||||||
|
Rails.application.configure do
|
||||||
|
# Settings specified here will take precedence over those in config/application.rb.
|
||||||
|
|
||||||
|
# Code is not reloaded between requests.
|
||||||
|
config.cache_classes = true
|
||||||
|
|
||||||
|
# Eager load code on boot. This eager loads most of Rails and
|
||||||
|
# your application in memory, allowing both threaded web servers
|
||||||
|
# and those relying on copy on write to perform better.
|
||||||
|
# Rake tasks automatically ignore this option for performance.
|
||||||
|
config.eager_load = true
|
||||||
|
|
||||||
|
# Full error reports are disabled and caching is turned on.
|
||||||
|
config.consider_all_requests_local = false
|
||||||
|
config.action_controller.perform_caching = true
|
||||||
|
|
||||||
|
# Enable Rack::Cache to put a simple HTTP cache in front of your application
|
||||||
|
# Add `rack-cache` to your Gemfile before enabling this.
|
||||||
|
# For large-scale production use, consider using a caching reverse proxy like nginx, varnish or squid.
|
||||||
|
# config.action_dispatch.rack_cache = true
|
||||||
|
|
||||||
|
# Disable Rails's static asset server (Apache or nginx will already do this).
|
||||||
|
config.serve_static_assets = false
|
||||||
|
|
||||||
|
# Compress JavaScripts and CSS.
|
||||||
|
config.assets.js_compressor = :uglifier
|
||||||
|
# config.assets.css_compressor = :sass
|
||||||
|
|
||||||
|
# Do not fallback to assets pipeline if a precompiled asset is missed.
|
||||||
|
config.assets.compile = false
|
||||||
|
|
||||||
|
# Generate digests for assets URLs.
|
||||||
|
config.assets.digest = true
|
||||||
|
|
||||||
|
# `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb
|
||||||
|
|
||||||
|
# Specifies the header that your server uses for sending files.
|
||||||
|
# config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
|
||||||
|
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
|
||||||
|
|
||||||
|
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
|
||||||
|
# config.force_ssl = true
|
||||||
|
|
||||||
|
# Set to :debug to see everything in the log.
|
||||||
|
config.log_level = :info
|
||||||
|
|
||||||
|
# Prepend all log lines with the following tags.
|
||||||
|
# config.log_tags = [ :subdomain, :uuid ]
|
||||||
|
|
||||||
|
# Use a different logger for distributed setups.
|
||||||
|
# config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
|
||||||
|
|
||||||
|
# Use a different cache store in production.
|
||||||
|
# config.cache_store = :mem_cache_store
|
||||||
|
|
||||||
|
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
|
||||||
|
# config.action_controller.asset_host = "http://assets.example.com"
|
||||||
|
|
||||||
|
# Ignore bad email addresses and do not raise email delivery errors.
|
||||||
|
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
|
||||||
|
# config.action_mailer.raise_delivery_errors = false
|
||||||
|
|
||||||
|
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
||||||
|
# the I18n.default_locale when a translation cannot be found).
|
||||||
|
config.i18n.fallbacks = true
|
||||||
|
|
||||||
|
# Send deprecation notices to registered listeners.
|
||||||
|
config.active_support.deprecation = :notify
|
||||||
|
|
||||||
|
# Disable automatic flushing of the log to improve performance.
|
||||||
|
# config.autoflush_log = false
|
||||||
|
|
||||||
|
# Use default logging formatter so that PID and timestamp are not suppressed.
|
||||||
|
config.log_formatter = ::Logger::Formatter.new
|
||||||
|
|
||||||
|
# Do not dump schema after migrations.
|
||||||
|
config.active_record.dump_schema_after_migration = false
|
||||||
|
end
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue