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
|
||||