fix some error
This commit is contained in:
parent
96665aeb93
commit
716a1ca64a
|
@ -1,8 +1,8 @@
|
||||||
.bundle/
|
.bundle/
|
||||||
log/*.log
|
log/*.log
|
||||||
pkg/
|
pkg/
|
||||||
test/dummy/db/*.sqlite3
|
test/dummy/db/*.sqlite3
|
||||||
test/dummy/db/*.sqlite3-journal
|
test/dummy/db/*.sqlite3-journal
|
||||||
test/dummy/log/*.log
|
test/dummy/log/*.log
|
||||||
test/dummy/tmp/
|
test/dummy/tmp/
|
||||||
test/dummy/.sass-cache
|
test/dummy/.sass-cache
|
||||||
|
|
28
Gemfile
28
Gemfile
|
@ -1,14 +1,14 @@
|
||||||
source "https://rubygems.org"
|
source "https://rubygems.org"
|
||||||
|
|
||||||
# Declare your gem's dependencies in bulletin.gemspec.
|
# Declare your gem's dependencies in bulletin.gemspec.
|
||||||
# Bundler will treat runtime dependencies like base dependencies, and
|
# Bundler will treat runtime dependencies like base dependencies, and
|
||||||
# development dependencies will be added by default to the :development group.
|
# development dependencies will be added by default to the :development group.
|
||||||
gemspec
|
gemspec
|
||||||
|
|
||||||
# Declare any dependencies that are still in development here instead of in
|
# 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
|
# your gemspec. These might include edge Rails or gems from your path or
|
||||||
# Git. Remember to move these dependencies to your gemspec before releasing
|
# Git. Remember to move these dependencies to your gemspec before releasing
|
||||||
# your gem to rubygems.org.
|
# your gem to rubygems.org.
|
||||||
|
|
||||||
# To use debugger
|
# To use debugger
|
||||||
# gem 'debugger'
|
# gem 'debugger'
|
||||||
|
|
212
Gemfile.lock
212
Gemfile.lock
|
@ -1,106 +1,106 @@
|
||||||
PATH
|
PATH
|
||||||
remote: .
|
remote: .
|
||||||
specs:
|
specs:
|
||||||
announcement (0.0.1)
|
announcement (0.0.1)
|
||||||
mongoid (= 4.0.0.beta1)
|
mongoid (= 4.0.0.beta1)
|
||||||
rails (~> 4.1.0.rc2)
|
rails (~> 4.1.0.rc2)
|
||||||
|
|
||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
actionmailer (4.1.0.rc2)
|
actionmailer (4.1.0.rc2)
|
||||||
actionpack (= 4.1.0.rc2)
|
actionpack (= 4.1.0.rc2)
|
||||||
actionview (= 4.1.0.rc2)
|
actionview (= 4.1.0.rc2)
|
||||||
mail (~> 2.5.4)
|
mail (~> 2.5.4)
|
||||||
actionpack (4.1.0.rc2)
|
actionpack (4.1.0.rc2)
|
||||||
actionview (= 4.1.0.rc2)
|
actionview (= 4.1.0.rc2)
|
||||||
activesupport (= 4.1.0.rc2)
|
activesupport (= 4.1.0.rc2)
|
||||||
rack (~> 1.5.2)
|
rack (~> 1.5.2)
|
||||||
rack-test (~> 0.6.2)
|
rack-test (~> 0.6.2)
|
||||||
actionview (4.1.0.rc2)
|
actionview (4.1.0.rc2)
|
||||||
activesupport (= 4.1.0.rc2)
|
activesupport (= 4.1.0.rc2)
|
||||||
builder (~> 3.1)
|
builder (~> 3.1)
|
||||||
erubis (~> 2.7.0)
|
erubis (~> 2.7.0)
|
||||||
activemodel (4.1.0.rc2)
|
activemodel (4.1.0.rc2)
|
||||||
activesupport (= 4.1.0.rc2)
|
activesupport (= 4.1.0.rc2)
|
||||||
builder (~> 3.1)
|
builder (~> 3.1)
|
||||||
activerecord (4.1.0.rc2)
|
activerecord (4.1.0.rc2)
|
||||||
activemodel (= 4.1.0.rc2)
|
activemodel (= 4.1.0.rc2)
|
||||||
activesupport (= 4.1.0.rc2)
|
activesupport (= 4.1.0.rc2)
|
||||||
arel (~> 5.0.0)
|
arel (~> 5.0.0)
|
||||||
activesupport (4.1.0.rc2)
|
activesupport (4.1.0.rc2)
|
||||||
i18n (~> 0.6, >= 0.6.9)
|
i18n (~> 0.6, >= 0.6.9)
|
||||||
json (~> 1.7, >= 1.7.7)
|
json (~> 1.7, >= 1.7.7)
|
||||||
minitest (~> 5.1)
|
minitest (~> 5.1)
|
||||||
thread_safe (~> 0.1)
|
thread_safe (~> 0.1)
|
||||||
tzinfo (~> 1.1)
|
tzinfo (~> 1.1)
|
||||||
arel (5.0.0)
|
arel (5.0.0)
|
||||||
atomic (1.1.16)
|
atomic (1.1.16)
|
||||||
bson (2.2.1)
|
bson (2.2.1)
|
||||||
builder (3.2.2)
|
builder (3.2.2)
|
||||||
connection_pool (2.0.0)
|
connection_pool (2.0.0)
|
||||||
erubis (2.7.0)
|
erubis (2.7.0)
|
||||||
hike (1.2.3)
|
hike (1.2.3)
|
||||||
i18n (0.6.9)
|
i18n (0.6.9)
|
||||||
json (1.8.1)
|
json (1.8.1)
|
||||||
mail (2.5.4)
|
mail (2.5.4)
|
||||||
mime-types (~> 1.16)
|
mime-types (~> 1.16)
|
||||||
treetop (~> 1.4.8)
|
treetop (~> 1.4.8)
|
||||||
mime-types (1.25.1)
|
mime-types (1.25.1)
|
||||||
minitest (5.3.1)
|
minitest (5.3.1)
|
||||||
mongoid (4.0.0.beta1)
|
mongoid (4.0.0.beta1)
|
||||||
activemodel (>= 4.0.0)
|
activemodel (>= 4.0.0)
|
||||||
moped (~> 2.0.beta6)
|
moped (~> 2.0.beta6)
|
||||||
origin (~> 2.1)
|
origin (~> 2.1)
|
||||||
tzinfo (>= 0.3.37)
|
tzinfo (>= 0.3.37)
|
||||||
moped (2.0.0.rc1)
|
moped (2.0.0.rc1)
|
||||||
bson (~> 2.2)
|
bson (~> 2.2)
|
||||||
connection_pool (~> 2.0)
|
connection_pool (~> 2.0)
|
||||||
optionable (~> 0.2.0)
|
optionable (~> 0.2.0)
|
||||||
multi_json (1.9.2)
|
multi_json (1.9.2)
|
||||||
optionable (0.2.0)
|
optionable (0.2.0)
|
||||||
origin (2.1.1)
|
origin (2.1.1)
|
||||||
polyglot (0.3.4)
|
polyglot (0.3.4)
|
||||||
rack (1.5.2)
|
rack (1.5.2)
|
||||||
rack-test (0.6.2)
|
rack-test (0.6.2)
|
||||||
rack (>= 1.0)
|
rack (>= 1.0)
|
||||||
rails (4.1.0.rc2)
|
rails (4.1.0.rc2)
|
||||||
actionmailer (= 4.1.0.rc2)
|
actionmailer (= 4.1.0.rc2)
|
||||||
actionpack (= 4.1.0.rc2)
|
actionpack (= 4.1.0.rc2)
|
||||||
actionview (= 4.1.0.rc2)
|
actionview (= 4.1.0.rc2)
|
||||||
activemodel (= 4.1.0.rc2)
|
activemodel (= 4.1.0.rc2)
|
||||||
activerecord (= 4.1.0.rc2)
|
activerecord (= 4.1.0.rc2)
|
||||||
activesupport (= 4.1.0.rc2)
|
activesupport (= 4.1.0.rc2)
|
||||||
bundler (>= 1.3.0, < 2.0)
|
bundler (>= 1.3.0, < 2.0)
|
||||||
railties (= 4.1.0.rc2)
|
railties (= 4.1.0.rc2)
|
||||||
sprockets-rails (~> 2.0.0)
|
sprockets-rails (~> 2.0.0)
|
||||||
railties (4.1.0.rc2)
|
railties (4.1.0.rc2)
|
||||||
actionpack (= 4.1.0.rc2)
|
actionpack (= 4.1.0.rc2)
|
||||||
activesupport (= 4.1.0.rc2)
|
activesupport (= 4.1.0.rc2)
|
||||||
rake (>= 0.8.7)
|
rake (>= 0.8.7)
|
||||||
thor (>= 0.18.1, < 2.0)
|
thor (>= 0.18.1, < 2.0)
|
||||||
rake (10.2.2)
|
rake (10.2.2)
|
||||||
sprockets (2.12.0)
|
sprockets (2.12.0)
|
||||||
hike (~> 1.2)
|
hike (~> 1.2)
|
||||||
multi_json (~> 1.0)
|
multi_json (~> 1.0)
|
||||||
rack (~> 1.0)
|
rack (~> 1.0)
|
||||||
tilt (~> 1.1, != 1.3.0)
|
tilt (~> 1.1, != 1.3.0)
|
||||||
sprockets-rails (2.0.1)
|
sprockets-rails (2.0.1)
|
||||||
actionpack (>= 3.0)
|
actionpack (>= 3.0)
|
||||||
activesupport (>= 3.0)
|
activesupport (>= 3.0)
|
||||||
sprockets (~> 2.8)
|
sprockets (~> 2.8)
|
||||||
thor (0.19.1)
|
thor (0.19.1)
|
||||||
thread_safe (0.3.1)
|
thread_safe (0.3.1)
|
||||||
atomic (>= 1.1.7, < 2)
|
atomic (>= 1.1.7, < 2)
|
||||||
tilt (1.4.1)
|
tilt (1.4.1)
|
||||||
treetop (1.4.15)
|
treetop (1.4.15)
|
||||||
polyglot
|
polyglot
|
||||||
polyglot (>= 0.3.1)
|
polyglot (>= 0.3.1)
|
||||||
tzinfo (1.1.0)
|
tzinfo (1.1.0)
|
||||||
thread_safe (~> 0.1)
|
thread_safe (~> 0.1)
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
ruby
|
ruby
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
announcement!
|
announcement!
|
||||||
|
|
40
MIT-LICENSE
40
MIT-LICENSE
|
@ -1,20 +1,20 @@
|
||||||
Copyright 2014 YOURNAME
|
Copyright 2014 YOURNAME
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
a copy of this software and associated documentation files (the
|
a copy of this software and associated documentation files (the
|
||||||
"Software"), to deal in the Software without restriction, including
|
"Software"), to deal in the Software without restriction, including
|
||||||
without limitation the rights to use, copy, modify, merge, publish,
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
distribute, sublicense, and/or sell copies of the Software, and to
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
permit persons to whom the Software is furnished to do so, subject to
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
the following conditions:
|
the following conditions:
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be
|
The above copyright notice and this permission notice shall be
|
||||||
included in all copies or substantial portions of the Software.
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
= Event News
|
= Event News
|
||||||
|
|
||||||
This project rocks and uses MIT-LICENSE.
|
This project rocks and uses MIT-LICENSE.
|
64
Rakefile
64
Rakefile
|
@ -1,32 +1,32 @@
|
||||||
begin
|
begin
|
||||||
require 'bundler/setup'
|
require 'bundler/setup'
|
||||||
rescue LoadError
|
rescue LoadError
|
||||||
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
||||||
end
|
end
|
||||||
|
|
||||||
require 'rdoc/task'
|
require 'rdoc/task'
|
||||||
|
|
||||||
RDoc::Task.new(:rdoc) do |rdoc|
|
RDoc::Task.new(:rdoc) do |rdoc|
|
||||||
rdoc.rdoc_dir = 'rdoc'
|
rdoc.rdoc_dir = 'rdoc'
|
||||||
rdoc.title = 'Announcement'
|
rdoc.title = 'Announcement'
|
||||||
rdoc.options << '--line-numbers'
|
rdoc.options << '--line-numbers'
|
||||||
rdoc.rdoc_files.include('README.rdoc')
|
rdoc.rdoc_files.include('README.rdoc')
|
||||||
rdoc.rdoc_files.include('lib/**/*.rb')
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Bundler::GemHelper.install_tasks
|
Bundler::GemHelper.install_tasks
|
||||||
|
|
||||||
require 'rake/testtask'
|
require 'rake/testtask'
|
||||||
|
|
||||||
Rake::TestTask.new(:test) do |t|
|
Rake::TestTask.new(:test) do |t|
|
||||||
t.libs << 'lib'
|
t.libs << 'lib'
|
||||||
t.libs << 'test'
|
t.libs << 'test'
|
||||||
t.pattern = 'test/**/*_test.rb'
|
t.pattern = 'test/**/*_test.rb'
|
||||||
t.verbose = false
|
t.verbose = false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
task default: :test
|
task default: :test
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
// Place all the behaviors and hooks related to the matching controller here.
|
// Place all the behaviors and hooks related to the matching controller here.
|
||||||
// All this logic will automatically be available in application.js.
|
// All this logic will automatically be available in application.js.
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
|
@ -1,21 +1,21 @@
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
var config = {}
|
var config = {}
|
||||||
config.autoGrow_minHeight = 50;
|
config.autoGrow_minHeight = 50;
|
||||||
config.allowedContent = false;
|
config.allowedContent = false;
|
||||||
config.disallowedContent = 'img';
|
config.disallowedContent = 'img';
|
||||||
config.toolbar = [
|
config.toolbar = [
|
||||||
{ name: 'clipboard', items: [ 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo' ] },
|
{ name: 'clipboard', items: [ 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo' ] },
|
||||||
{ name: 'editing', items: [ 'Find', 'Replace', '-', 'SelectAll', '-', 'Scayt' ] },
|
{ name: 'editing', items: [ 'Find', 'Replace', '-', 'SelectAll', '-', 'Scayt' ] },
|
||||||
|
|
||||||
{ name: 'basicstyles', items: [ 'Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'CopyFormatting', 'RemoveFormat' ] },
|
{ name: 'basicstyles', items: [ 'Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'CopyFormatting', 'RemoveFormat' ] },
|
||||||
'/',
|
'/',
|
||||||
{ name: 'insert', items: [ 'SpecialChar'] },
|
{ name: 'insert', items: [ 'SpecialChar'] },
|
||||||
{ name: 'styles', items: [ 'Font' ] },
|
{ name: 'styles', items: [ 'Font' ] },
|
||||||
{ name: 'colors', items: [ 'TextColor', 'BGColor' ] }
|
{ name: 'colors', items: [ 'TextColor', 'BGColor' ] }
|
||||||
];
|
];
|
||||||
|
|
||||||
var ckeditor_reduce = $('.ckeditor_reduce')
|
var ckeditor_reduce = $('.ckeditor_reduce')
|
||||||
ckeditor_reduce.each(function(i,v){
|
ckeditor_reduce.each(function(i,v){
|
||||||
CKEDITOR.replace(v,config);
|
CKEDITOR.replace(v,config);
|
||||||
})
|
})
|
||||||
});
|
});
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
Place all the styles related to the matching controller here.
|
Place all the styles related to the matching controller here.
|
||||||
They will automatically be included in application.css.
|
They will automatically be included in application.css.
|
||||||
*/
|
*/
|
||||||
.table .expired{
|
.table .expired{
|
||||||
color: #BE2E2E;
|
color: #BE2E2E;
|
||||||
}
|
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -1,259 +1,259 @@
|
||||||
.widget-event-news-calendar-2.w-calendar{
|
.widget-event-news-calendar-2.w-calendar{
|
||||||
.w-calendar-table {
|
.w-calendar-table {
|
||||||
table-layout: fixed;
|
table-layout: fixed;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
.height100 {
|
.height100 {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
a.event-container-one{
|
a.event-container-one{
|
||||||
color: inherit;
|
color: inherit;
|
||||||
}
|
}
|
||||||
.close_box{
|
.close_box{
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
position: relative;
|
position: relative;
|
||||||
float: right;
|
float: right;
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
.close_box:hover{
|
.close_box:hover{
|
||||||
color: red;
|
color: red;
|
||||||
}
|
}
|
||||||
.event-bullet-event {
|
.event-bullet-event {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
}
|
}
|
||||||
.event-bullet-event {
|
.event-bullet-event {
|
||||||
width: 2em;
|
width: 2em;
|
||||||
height: 2em;
|
height: 2em;
|
||||||
border-radius: 1em;
|
border-radius: 1em;
|
||||||
}
|
}
|
||||||
.event-header{
|
.event-header{
|
||||||
width: 100%;
|
width: 100%;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: 1.7em;
|
font-size: 1.7em;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
padding: 0.35em 0;
|
padding: 0.35em 0;
|
||||||
}
|
}
|
||||||
.event-info{
|
.event-info{
|
||||||
padding-left: 15%;
|
padding-left: 15%;
|
||||||
}
|
}
|
||||||
.calendar-events{
|
.calendar-events{
|
||||||
position: relative;
|
position: relative;
|
||||||
background: #fbfbfb;
|
background: #fbfbfb;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
.month_template{
|
.month_template{
|
||||||
position: relative;
|
position: relative;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
margin-top: 2em;
|
margin-top: 2em;
|
||||||
margin-bottom: 1em;
|
margin-bottom: 1em;
|
||||||
.w-calendar-table td:hover {
|
.w-calendar-table td:hover {
|
||||||
background-color: #eaeaea;
|
background-color: #eaeaea;
|
||||||
color: #333;
|
color: #333;
|
||||||
}
|
}
|
||||||
.w-calendar-table td {
|
.w-calendar-table td {
|
||||||
background: inherit;
|
background: inherit;
|
||||||
color: inherit;
|
color: inherit;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
border: 0;
|
border: 0;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
.w-calendar-table td div{
|
.w-calendar-table td div{
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
padding: 10%;
|
padding: 10%;
|
||||||
line-height: 1.2;
|
line-height: 1.2;
|
||||||
}
|
}
|
||||||
.w-calendar-table th {
|
.w-calendar-table th {
|
||||||
background: unset;
|
background: unset;
|
||||||
color: unset;
|
color: unset;
|
||||||
border: 0;
|
border: 0;
|
||||||
padding: 1.5% 0.5%;
|
padding: 1.5% 0.5%;
|
||||||
}
|
}
|
||||||
.widget-title {
|
.widget-title {
|
||||||
padding: 0.2em;
|
padding: 0.2em;
|
||||||
font-size: 1.5em;
|
font-size: 1.5em;
|
||||||
}
|
}
|
||||||
table.w-calendar-table td.w-calendar-toggle div, table.w-calendar-table td.w-calendar-toggle div{
|
table.w-calendar-table td.w-calendar-toggle div, table.w-calendar-table td.w-calendar-toggle div{
|
||||||
background: #6f0007;
|
background: #6f0007;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
.w-calendar-table td.w-calendar-event div{
|
.w-calendar-table td.w-calendar-event div{
|
||||||
border: 1px #6f0007 solid;
|
border: 1px #6f0007 solid;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
background: #eee;
|
background: #eee;
|
||||||
}
|
}
|
||||||
.w-calendar-title{
|
.w-calendar-title{
|
||||||
background: rgb(146, 8, 17);
|
background: rgb(146, 8, 17);
|
||||||
color: rgb(255, 255, 255);
|
color: rgb(255, 255, 255);
|
||||||
padding: 0px 10%;
|
padding: 0px 10%;
|
||||||
display: flex;
|
display: flex;
|
||||||
line-height: 2em;
|
line-height: 2em;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
font-size: 1.85em;
|
font-size: 1.85em;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
.w-calendar-title span:last-child{
|
.w-calendar-title span:last-child{
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.w-calendar-title.center{
|
.w-calendar-title.center{
|
||||||
text-align: center;
|
text-align: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
.calendar-dialog div.ui-dialog-content {
|
.calendar-dialog div.ui-dialog-content {
|
||||||
max-height: 20em !important;
|
max-height: 20em !important;
|
||||||
overflow-wrap: break-word;
|
overflow-wrap: break-word;
|
||||||
}
|
}
|
||||||
table td.w-calendar-other-month {
|
table td.w-calendar-other-month {
|
||||||
color: #999797;
|
color: #999797;
|
||||||
}
|
}
|
||||||
.event-header{
|
.event-header{
|
||||||
display: flex;
|
display: flex;
|
||||||
background: #dadada;
|
background: #dadada;
|
||||||
cursor: default;
|
cursor: default;
|
||||||
}
|
}
|
||||||
.event-header .date{
|
.event-header .date{
|
||||||
width: 30%;
|
width: 30%;
|
||||||
}
|
}
|
||||||
.event.active .event-header .day{
|
.event.active .event-header .day{
|
||||||
color: #bf1f1f;
|
color: #bf1f1f;
|
||||||
}
|
}
|
||||||
.event.active .event-header .date{
|
.event.active .event-header .date{
|
||||||
color: #202427;
|
color: #202427;
|
||||||
}
|
}
|
||||||
.event .event-header .day{
|
.event .event-header .day{
|
||||||
font-size: 1.4em;
|
font-size: 1.4em;
|
||||||
}
|
}
|
||||||
.event .event-header .month{
|
.event .event-header .month{
|
||||||
font-size: 0.7em;
|
font-size: 0.7em;
|
||||||
}
|
}
|
||||||
.event .event-header .date{
|
.event .event-header .date{
|
||||||
color: #a08a70;
|
color: #a08a70;
|
||||||
}
|
}
|
||||||
.event-title{
|
.event-title{
|
||||||
width: 70%;
|
width: 70%;
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
.event-title .duration{
|
.event-title .duration{
|
||||||
font-size: 0.7em;
|
font-size: 0.7em;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
color: #a0a1a1;
|
color: #a0a1a1;
|
||||||
}
|
}
|
||||||
.duration_temp,.title_temp{
|
.duration_temp,.title_temp{
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.event-inner-title{
|
.event-inner-title{
|
||||||
line-height: 2em;
|
line-height: 2em;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
.event-containers{
|
.event-containers{
|
||||||
height: 0;
|
height: 0;
|
||||||
min-height: unset;
|
min-height: unset;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
position: relative;
|
position: relative;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
margin: 0 10%;
|
margin: 0 10%;
|
||||||
}
|
}
|
||||||
.event-container-one {
|
.event-container-one {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
display: flex;
|
display: flex;
|
||||||
width: calc(100% - 0.7em);;
|
width: calc(100% - 0.7em);;
|
||||||
height: calc(100% - 0.7em);
|
height: calc(100% - 0.7em);
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
margin-bottom: 1em;
|
margin-bottom: 1em;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
color: rgba(50, 50, 50, 0.45);
|
color: rgba(50, 50, 50, 0.45);
|
||||||
}
|
}
|
||||||
.event-container-one:hover {
|
.event-container-one:hover {
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
box-shadow: 0 0.1em 0.7em 0em;
|
box-shadow: 0 0.1em 0.7em 0em;
|
||||||
}
|
}
|
||||||
.event-container-one .event-content{
|
.event-container-one .event-content{
|
||||||
color: #000000;
|
color: #000000;
|
||||||
}
|
}
|
||||||
button.switch_button {
|
button.switch_button {
|
||||||
margin: 10%;
|
margin: 10%;
|
||||||
width: 2.5em;
|
width: 2.5em;
|
||||||
height: 2.5em;
|
height: 2.5em;
|
||||||
border-radius: 1.25em;
|
border-radius: 1.25em;
|
||||||
border: 0;
|
border: 0;
|
||||||
background: #96231a;
|
background: #96231a;
|
||||||
color: white;
|
color: white;
|
||||||
outline: 0;
|
outline: 0;
|
||||||
}
|
}
|
||||||
.switch_button:hover {
|
.switch_button:hover {
|
||||||
background: #c07b76;
|
background: #c07b76;
|
||||||
}
|
}
|
||||||
.switch_button_wraper{
|
.switch_button_wraper{
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 0%;
|
right: 0%;
|
||||||
margin-right: 2%;
|
margin-right: 2%;
|
||||||
width: 3em;
|
width: 3em;
|
||||||
margin-bottom: 2%;
|
margin-bottom: 2%;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
.event-wraper{
|
.event-wraper{
|
||||||
position: relative;
|
position: relative;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
.event-container-one:not(.active) {
|
.event-container-one:not(.active) {
|
||||||
right: -100%;
|
right: -100%;
|
||||||
}
|
}
|
||||||
.event.active .event-containers{
|
.event.active .event-containers{
|
||||||
min-height: 13em;
|
min-height: 13em;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
.calendar-events.width-100 .switch_button_wraper{
|
.calendar-events.width-100 .switch_button_wraper{
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
.calendar-events.width-100 .switch_button{
|
.calendar-events.width-100 .switch_button{
|
||||||
margin: 2%;
|
margin: 2%;
|
||||||
}
|
}
|
||||||
.calendar-events.width-100 .event-containers{
|
.calendar-events.width-100 .event-containers{
|
||||||
z-index: 3;
|
z-index: 3;
|
||||||
}
|
}
|
||||||
.month_template .widget-title {
|
.month_template .widget-title {
|
||||||
border: 0;
|
border: 0;
|
||||||
border-bottom: 0.0625em solid #ddd;
|
border-bottom: 0.0625em solid #ddd;
|
||||||
}
|
}
|
||||||
&>div:first-child {
|
&>div:first-child {
|
||||||
box-shadow: 0em 0.1em 0.3em 0em;
|
box-shadow: 0em 0.1em 0.3em 0em;
|
||||||
margin-bottom: 0.25em;
|
margin-bottom: 0.25em;
|
||||||
}
|
}
|
||||||
.event{
|
.event{
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,152 +1,152 @@
|
||||||
.full-size-img img {
|
.full-size-img img {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
.full-size-img {
|
.full-size-img {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
.s-annc__sub-img.pull-right {
|
.s-annc__sub-img.pull-right {
|
||||||
margin-left: 2em;
|
margin-left: 2em;
|
||||||
}
|
}
|
||||||
.s-annc__sub-img.pull-left {
|
.s-annc__sub-img.pull-left {
|
||||||
margin-right: 2em;
|
margin-right: 2em;
|
||||||
}
|
}
|
||||||
strong.carousel__description {
|
strong.carousel__description {
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
@media (max-width: 767px){
|
@media (max-width: 767px){
|
||||||
.carousel_images{
|
.carousel_images{
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.carousel_img_item{
|
.carousel_img_item{
|
||||||
display: none;
|
display: none;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
.controlplay {
|
.controlplay {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 1em;
|
right: 1em;
|
||||||
top: 3%;
|
top: 3%;
|
||||||
z-index: 200;
|
z-index: 200;
|
||||||
}
|
}
|
||||||
.controlplay a {
|
.controlplay a {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin-right: 0.25em;
|
margin-right: 0.25em;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
padding: 5px 10px;
|
padding: 5px 10px;
|
||||||
border: 1px solid rgba(255,255,255,0.5);
|
border: 1px solid rgba(255,255,255,0.5);
|
||||||
background: rgba(0,0,0,0.2);
|
background: rgba(0,0,0,0.2);
|
||||||
}
|
}
|
||||||
.controlplay a i {
|
.controlplay a i {
|
||||||
font-family: FontAwesome;
|
font-family: FontAwesome;
|
||||||
position: relative;
|
position: relative;
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
color: #FFF;
|
color: #FFF;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
font-style: unset;
|
font-style: unset;
|
||||||
}
|
}
|
||||||
.controlplay .resume-slide i::before {
|
.controlplay .resume-slide i::before {
|
||||||
content: "\f04b";
|
content: "\f04b";
|
||||||
}
|
}
|
||||||
.controlplay .pause-slide i::before {
|
.controlplay .pause-slide i::before {
|
||||||
content: "\f04c";
|
content: "\f04c";
|
||||||
}
|
}
|
||||||
ul.button-mid .prev-button {
|
ul.button-mid .prev-button {
|
||||||
transition: 0.4s;
|
transition: 0.4s;
|
||||||
position: relative;
|
position: relative;
|
||||||
float: left;
|
float: left;
|
||||||
left: 0.5rem;
|
left: 0.5rem;
|
||||||
width: 2.5rem;
|
width: 2.5rem;
|
||||||
height: 2.5rem;
|
height: 2.5rem;
|
||||||
font-size: 2.2rem;
|
font-size: 2.2rem;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
background: rgba(0,0,0,0.2);
|
background: rgba(0,0,0,0.2);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
line-height: 2.5rem;
|
line-height: 2.5rem;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
transform: translateY(-50%);
|
transform: translateY(-50%);
|
||||||
z-index: 999;
|
z-index: 999;
|
||||||
}
|
}
|
||||||
ul.button-mid .next-button {
|
ul.button-mid .next-button {
|
||||||
float: right;
|
float: right;
|
||||||
transition: 0.4s;
|
transition: 0.4s;
|
||||||
position: relative;
|
position: relative;
|
||||||
right: 0.5rem;
|
right: 0.5rem;
|
||||||
width: 2.5rem;
|
width: 2.5rem;
|
||||||
height: 2.5rem;
|
height: 2.5rem;
|
||||||
font-size: 2.2rem;
|
font-size: 2.2rem;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
background: rgba(0,0,0,0.2);
|
background: rgba(0,0,0,0.2);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
line-height: 2.5rem;
|
line-height: 2.5rem;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
transform: translateY(-50%);
|
transform: translateY(-50%);
|
||||||
z-index: 999;
|
z-index: 999;
|
||||||
}
|
}
|
||||||
.carousel_images_slide{
|
.carousel_images_slide{
|
||||||
padding: 3em;
|
padding: 3em;
|
||||||
}
|
}
|
||||||
.carousel_img_item img{
|
.carousel_img_item img{
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
@media (max-width: 479px){
|
@media (max-width: 479px){
|
||||||
.carousel_img_item:nth-child(-n+1){
|
.carousel_img_item:nth-child(-n+1){
|
||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
.carousel_img_item{
|
.carousel_img_item{
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@media (min-width: 480px){
|
@media (min-width: 480px){
|
||||||
.carousel_img_item:nth-child(-n+2){
|
.carousel_img_item:nth-child(-n+2){
|
||||||
display: block;
|
display: block;
|
||||||
width: 50%;
|
width: 50%;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
.carousel_img_item{
|
.carousel_img_item{
|
||||||
width: 50%;
|
width: 50%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@media (min-width: 768px){
|
@media (min-width: 768px){
|
||||||
.carousel_img_item:nth-child(-n+3){
|
.carousel_img_item:nth-child(-n+3){
|
||||||
display: block;
|
display: block;
|
||||||
width: 33%;
|
width: 33%;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
.carousel_img_item{
|
.carousel_img_item{
|
||||||
width: 33%;
|
width: 33%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@media (min-width: 1280px){
|
@media (min-width: 1280px){
|
||||||
.carousel_img_item:nth-child(-n+4){
|
.carousel_img_item:nth-child(-n+4){
|
||||||
display: block;
|
display: block;
|
||||||
width: 25%;
|
width: 25%;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
.carousel_img_item{
|
.carousel_img_item{
|
||||||
width: 25%;
|
width: 25%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.w-ba-banner .controlplay .resume-slide.active i{
|
.w-ba-banner .controlplay .resume-slide.active i{
|
||||||
color: #32D9C3;
|
color: #32D9C3;
|
||||||
}
|
}
|
||||||
.w-ba-banner .controlplay .pause-slide.active i{
|
.w-ba-banner .controlplay .pause-slide.active i{
|
||||||
color: #ff4500;
|
color: #ff4500;
|
||||||
}
|
}
|
||||||
.w-ba-banner .controlplay{
|
.w-ba-banner .controlplay{
|
||||||
width: auto;
|
width: auto;
|
||||||
}
|
}
|
||||||
.w-ba-banner .button-mid{
|
.w-ba-banner .button-mid{
|
||||||
position: absolute;
|
position: absolute;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
}
|
}
|
||||||
.next-button,.prev-button{
|
.next-button,.prev-button{
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,7 +1,7 @@
|
||||||
module ActionDispatch
|
module ActionDispatch
|
||||||
class Request
|
class Request
|
||||||
def original_url
|
def original_url
|
||||||
original_fullpath
|
original_fullpath
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
|
@ -1,499 +1,499 @@
|
||||||
# encoding: utf-8
|
# encoding: utf-8
|
||||||
require 'rubyXL'
|
require 'rubyXL'
|
||||||
class Admin::EventNewsController < OrbitAdminController
|
class Admin::EventNewsController < OrbitAdminController
|
||||||
include Admin::EventNewsHelper
|
include Admin::EventNewsHelper
|
||||||
before_action ->(module_app = @app_title) { set_variables module_app }
|
before_action ->(module_app = @app_title) { set_variables module_app }
|
||||||
before_action :set_event_news, only: [:edit, :destroy]
|
before_action :set_event_news, only: [:edit, :destroy]
|
||||||
before_action :load_access_level, :load_settings
|
before_action :load_access_level, :load_settings
|
||||||
|
|
||||||
def initialize
|
def initialize
|
||||||
super
|
super
|
||||||
@app_title = "event_news"
|
@app_title = "event_news"
|
||||||
end
|
end
|
||||||
|
|
||||||
def index
|
def index
|
||||||
EventNews.remove_expired_status
|
EventNews.remove_expired_status
|
||||||
@tags = @module_app.tags
|
@tags = @module_app.tags
|
||||||
@table_fields = [:status, :category, :title, "event_news.event_date", "event_news.start_date", "event_news.end_date", :last_modified]
|
@table_fields = [:status, :category, :title, "event_news.event_date", "event_news.start_date", "event_news.end_date", :last_modified]
|
||||||
@current_user = current_user
|
@current_user = current_user
|
||||||
if params[:sort].blank?
|
if params[:sort].blank?
|
||||||
params[:sort] = 'event_date'
|
params[:sort] = 'event_date'
|
||||||
params[:order] = 'desc'
|
params[:order] = 'desc'
|
||||||
end
|
end
|
||||||
if EventNewsSetting.first.is_display_edit_only && !current_user.is_admin? && !current_user.is_manager?(@module_app)
|
if EventNewsSetting.first.is_display_edit_only && !current_user.is_admin? && !current_user.is_manager?(@module_app)
|
||||||
current_user_is_sub_manager = !current_user.is_manager?(@module_app) && (current_user.is_sub_manager?(@module_app) || current_user.is_sub_manager_with_role?(@module_app)) rescue false
|
current_user_is_sub_manager = !current_user.is_manager?(@module_app) && (current_user.is_sub_manager?(@module_app) || current_user.is_sub_manager_with_role?(@module_app)) rescue false
|
||||||
if current_user_is_sub_manager
|
if current_user_is_sub_manager
|
||||||
@categories = current_user.approved_categories.select{|c| c.module_app_id == @module_app.id} rescue []
|
@categories = current_user.approved_categories.select{|c| c.module_app_id == @module_app.id} rescue []
|
||||||
@filter_fields = filter_fields(@categories, @tags)
|
@filter_fields = filter_fields(@categories, @tags)
|
||||||
@event_news = EventNews.where(:category_id.ne=>nil, :create_user_id=>current_user.id,:is_preview.in=>[false,nil])
|
@event_news = EventNews.where(:category_id.ne=>nil, :create_user_id=>current_user.id,:is_preview.in=>[false,nil])
|
||||||
.order_by(sort)
|
.order_by(sort)
|
||||||
.with_categories(filters("category"))
|
.with_categories(filters("category"))
|
||||||
.with_tags(filters("tag"))
|
.with_tags(filters("tag"))
|
||||||
.with_status(filters("status"))
|
.with_status(filters("status"))
|
||||||
else
|
else
|
||||||
@event_news = EventNews.where(:category_id.ne=>nil, :uid=>nil).order_by(sort)
|
@event_news = EventNews.where(:category_id.ne=>nil, :uid=>nil).order_by(sort)
|
||||||
@categories = @module_app.categories.enabled
|
@categories = @module_app.categories.enabled
|
||||||
@filter_fields = filter_fields(@categories, @tags)
|
@filter_fields = filter_fields(@categories, @tags)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@categories = @module_app.categories.enabled
|
@categories = @module_app.categories.enabled
|
||||||
@filter_fields = filter_fields(@categories, @tags)
|
@filter_fields = filter_fields(@categories, @tags)
|
||||||
@event_news = EventNews.where(:category_id.ne=>nil, :is_preview.in=>[false,nil])
|
@event_news = EventNews.where(:category_id.ne=>nil, :is_preview.in=>[false,nil])
|
||||||
.order_by(sort)
|
.order_by(sort)
|
||||||
.with_categories(filters("category"))
|
.with_categories(filters("category"))
|
||||||
.with_tags(filters("tag"))
|
.with_tags(filters("tag"))
|
||||||
.with_status(filters("status"))
|
.with_status(filters("status"))
|
||||||
end
|
end
|
||||||
@event_news = search_data(@event_news,[:title]).page(params[:page]).per(10)
|
@event_news = search_data(@event_news,[:title]).page(params[:page]).per(10)
|
||||||
|
|
||||||
if request.xhr?
|
if request.xhr?
|
||||||
render :partial => "index"
|
render :partial => "index"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def feed
|
def feed
|
||||||
@table_feed_fields = ["event_news.feed_name", :tags, :categories, "event_news.rssfeed", "event_news.jsonfeed"]
|
@table_feed_fields = ["event_news.feed_name", :tags, :categories, "event_news.rssfeed", "event_news.jsonfeed"]
|
||||||
@feeds = EventNewsFeed.all.asc(:created_at)
|
@feeds = EventNewsFeed.all.asc(:created_at)
|
||||||
|
|
||||||
end
|
end
|
||||||
def generate_iframe_url
|
def generate_iframe_url
|
||||||
iframe_params = params.require(:iframe).permit!
|
iframe_params = params.require(:iframe).permit!
|
||||||
uids = iframe_params['member_ids'].to_a.map{|m_id| MemberProfile.find(m_id).uid rescue nil}.select{|uid| !uid.nil?}
|
uids = iframe_params['member_ids'].to_a.map{|m_id| MemberProfile.find(m_id).uid rescue nil}.select{|uid| !uid.nil?}
|
||||||
url_params = iframe_params.except(:member_ids)
|
url_params = iframe_params.except(:member_ids)
|
||||||
url_params['uids'] = uids if uids != []
|
url_params['uids'] = uids if uids != []
|
||||||
render :text => '/xhr/panel/event_news/widget/sync_data?'+url_params.to_param
|
render :text => '/xhr/panel/event_news/widget/sync_data?'+url_params.to_param
|
||||||
end
|
end
|
||||||
def settings
|
def settings
|
||||||
@setting = @event_news_setting
|
@setting = @event_news_setting
|
||||||
roles = Role.all
|
roles = Role.all
|
||||||
@sorted_members = roles.inject({}) do |members,role|
|
@sorted_members = roles.inject({}) do |members,role|
|
||||||
members_for_role = role.member_profiles.select{|m| (m.user.nil? ? false : m.user.approved)}
|
members_for_role = role.member_profiles.select{|m| (m.user.nil? ? false : m.user.approved)}
|
||||||
members[role] = members_for_role
|
members[role] = members_for_role
|
||||||
members
|
members
|
||||||
end
|
end
|
||||||
@sorted_members['no_role'] = MemberProfile.any_in(:role_ids=>[nil,[]]).select{|m| (m.user.nil? ? false : m.user.approved)}
|
@sorted_members['no_role'] = MemberProfile.any_in(:role_ids=>[nil,[]]).select{|m| (m.user.nil? ? false : m.user.approved)}
|
||||||
@unapproved_members = User.where(:approved => false).map{|u| u.member_profile}
|
@unapproved_members = User.where(:approved => false).map{|u| u.member_profile}
|
||||||
end
|
end
|
||||||
|
|
||||||
def import
|
def import
|
||||||
end
|
end
|
||||||
|
|
||||||
def excel_format
|
def excel_format
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.xlsx {
|
format.xlsx {
|
||||||
response.headers['Content-Disposition'] = 'attachment; filename="event_news_import_format.xlsx"'
|
response.headers['Content-Disposition'] = 'attachment; filename="event_news_import_format.xlsx"'
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def export_excel
|
def export_excel
|
||||||
@event_news = EventNews.where(:category_id.ne=>nil).desc(:created_at)
|
@event_news = EventNews.where(:category_id.ne=>nil).desc(:created_at)
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.xlsx {
|
format.xlsx {
|
||||||
response.headers['Content-Disposition'] = 'attachment; filename="event_news_export.xlsx"'
|
response.headers['Content-Disposition'] = 'attachment; filename="event_news_export.xlsx"'
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def import_from_xml
|
def import_from_xml
|
||||||
download_tmp_xml params["import_xml"]
|
download_tmp_xml params["import_xml"]
|
||||||
import_from_tmp_xml File.read(File.join(Rails.root, "tmp", "ann_cc_ntu.xml"))
|
import_from_tmp_xml File.read(File.join(Rails.root, "tmp", "ann_cc_ntu.xml"))
|
||||||
redirect_to admin_event_news_index_path
|
redirect_to admin_event_news_index_path
|
||||||
end
|
end
|
||||||
|
|
||||||
def import
|
def import
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def import_from_wp
|
def import_from_wp
|
||||||
import_from_wordpress params["import_xml"].tempfile
|
import_from_wordpress params["import_xml"].tempfile
|
||||||
redirect_to admin_event_news_index_path
|
redirect_to admin_event_news_index_path
|
||||||
end
|
end
|
||||||
|
|
||||||
def importanns
|
def importanns
|
||||||
workbook = RubyXL::Parser.parse(params["import_file"].tempfile)
|
workbook = RubyXL::Parser.parse(params["import_file"].tempfile)
|
||||||
categories = @module_app.categories.asc(:created_at).to_a
|
categories = @module_app.categories.asc(:created_at).to_a
|
||||||
tags = @module_app.tags.asc(:created_at).to_a
|
tags = @module_app.tags.asc(:created_at).to_a
|
||||||
sheet = workbook[0]
|
sheet = workbook[0]
|
||||||
if sheet.count <= 503
|
if sheet.count <= 503
|
||||||
sheet.each_with_index do |row, i|
|
sheet.each_with_index do |row, i|
|
||||||
next if i < 3
|
next if i < 3
|
||||||
v = row.cells.first.value rescue nil
|
v = row.cells.first.value rescue nil
|
||||||
next if v == "" || v.nil?
|
next if v == "" || v.nil?
|
||||||
import_this_event_news(row, categories, tags)
|
import_this_event_news(row, categories, tags)
|
||||||
end
|
end
|
||||||
redirect_to admin_event_news_index_path
|
redirect_to admin_event_news_index_path
|
||||||
else
|
else
|
||||||
redirect_to admin_event_news_index_path(:error => "1")
|
redirect_to admin_event_news_index_path(:error => "1")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def createsettings
|
def createsettings
|
||||||
setting = EventNewsSetting.new(settings_params)
|
setting = EventNewsSetting.new(settings_params)
|
||||||
setting.save
|
setting.save
|
||||||
redirect_to admin_event_news_settings_path
|
redirect_to admin_event_news_settings_path
|
||||||
end
|
end
|
||||||
|
|
||||||
def updatesettings
|
def updatesettings
|
||||||
setting = @event_news_setting
|
setting = @event_news_setting
|
||||||
ids = params['event_news_setting']['anns_status_settings'].to_a.collect do |i,v|
|
ids = params['event_news_setting']['anns_status_settings'].to_a.collect do |i,v|
|
||||||
v['_id']
|
v['_id']
|
||||||
end.compact
|
end.compact
|
||||||
AnnsStatusSetting.where(:id.nin=>ids).destroy
|
AnnsStatusSetting.where(:id.nin=>ids).destroy
|
||||||
setting.update_attributes(settings_params)
|
setting.update_attributes(settings_params)
|
||||||
setting.save
|
setting.save
|
||||||
redirect_to admin_event_news_settings_path
|
redirect_to admin_event_news_settings_path
|
||||||
end
|
end
|
||||||
|
|
||||||
def feedform
|
def feedform
|
||||||
if params[:type] == "new"
|
if params[:type] == "new"
|
||||||
@event_news_feed = EventNewsFeed.new
|
@event_news_feed = EventNewsFeed.new
|
||||||
render :partial => "feed_form"
|
render :partial => "feed_form"
|
||||||
else params[:type] == "edit"
|
else params[:type] == "edit"
|
||||||
@event_news_feed = EventNewsFeed.find(params[:id])
|
@event_news_feed = EventNewsFeed.find(params[:id])
|
||||||
render :partial => "edit_feed_form"
|
render :partial => "edit_feed_form"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def createfeed
|
def createfeed
|
||||||
event_news_feed = EventNewsFeed.new(feed_params)
|
event_news_feed = EventNewsFeed.new(feed_params)
|
||||||
event_news_feed.save
|
event_news_feed.save
|
||||||
feeds = EventNewsFeed.all.asc(:created_at)
|
feeds = EventNewsFeed.all.asc(:created_at)
|
||||||
render :partial => "feed", :collection => feeds
|
render :partial => "feed", :collection => feeds
|
||||||
end
|
end
|
||||||
|
|
||||||
def updatefeed
|
def updatefeed
|
||||||
ann_feed = EventNewsFeed.find(params[:id])
|
ann_feed = EventNewsFeed.find(params[:id])
|
||||||
ann_feed.update_attributes(feed_params)
|
ann_feed.update_attributes(feed_params)
|
||||||
ann_feed.save
|
ann_feed.save
|
||||||
feeds = EventNewsFeed.all.asc(:created_at)
|
feeds = EventNewsFeed.all.asc(:created_at)
|
||||||
render :partial => "feed", :collection => feeds
|
render :partial => "feed", :collection => feeds
|
||||||
end
|
end
|
||||||
|
|
||||||
def deletefeed
|
def deletefeed
|
||||||
ann_feed = EventNewsFeed.find(params[:id])
|
ann_feed = EventNewsFeed.find(params[:id])
|
||||||
ann_feed.destroy
|
ann_feed.destroy
|
||||||
feeds = EventNewsFeed.all.asc(:created_at)
|
feeds = EventNewsFeed.all.asc(:created_at)
|
||||||
render :partial => "feed", :collection => feeds
|
render :partial => "feed", :collection => feeds
|
||||||
end
|
end
|
||||||
|
|
||||||
def new
|
def new
|
||||||
@tags = @module_app.tags
|
@tags = @module_app.tags
|
||||||
@statuses = []
|
@statuses = []
|
||||||
@event_news = EventNews.new
|
@event_news = EventNews.new
|
||||||
@event_news.email_sentdate = Time.now
|
@event_news.email_sentdate = Time.now
|
||||||
@reach_limit = @event_news.check_status_limit(current_user,true)
|
@reach_limit = @event_news.check_status_limit(current_user,true)
|
||||||
if defined? Calendar
|
if defined? Calendar
|
||||||
categories = user_authenticated_categories rescue ['all']
|
categories = user_authenticated_categories rescue ['all']
|
||||||
if categories.first == "all"
|
if categories.first == "all"
|
||||||
@calendar_categories = CalendarType.all
|
@calendar_categories = CalendarType.all
|
||||||
else
|
else
|
||||||
@calendar_categories = CalendarType.where(:category_id.in => categories) rescue []
|
@calendar_categories = CalendarType.where(:category_id.in => categories) rescue []
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
bps = event_news_params
|
bps = event_news_params
|
||||||
event_news = EventNews.new(bps)
|
event_news = EventNews.new(bps)
|
||||||
if !bps['event_news_links_attributes'].nil?
|
if !bps['event_news_links_attributes'].nil?
|
||||||
bps['event_news_links_attributes'].each do |idx,link|
|
bps['event_news_links_attributes'].each do |idx,link|
|
||||||
bps['event_news_links_attributes'].delete(idx.to_s) if link['url'].blank?
|
bps['event_news_links_attributes'].delete(idx.to_s) if link['url'].blank?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if((!EventNewsSetting.first.only_manager_can_edit_status) || (EventNewsSetting.first.only_manager_can_edit_status && (@current_user.is_admin? || @current_user.is_manager?(@module_app))) )
|
if((!EventNewsSetting.first.only_manager_can_edit_status) || (EventNewsSetting.first.only_manager_can_edit_status && (@current_user.is_admin? || @current_user.is_manager?(@module_app))) )
|
||||||
if bps[:is_top] == "1" && !EventNewsSetting.check_limit_for_user(event_news.create_user_id, event_news.id)
|
if bps[:is_top] == "1" && !EventNewsSetting.check_limit_for_user(event_news.create_user_id, event_news.id)
|
||||||
bps[:is_top] = "0"
|
bps[:is_top] = "0"
|
||||||
bps[:top_end_date] = nil
|
bps[:top_end_date] = nil
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
bps[:is_top] = false
|
bps[:is_top] = false
|
||||||
bps[:is_hot] = false
|
bps[:is_hot] = false
|
||||||
bps[:is_hidden] = false
|
bps[:is_hidden] = false
|
||||||
end
|
end
|
||||||
|
|
||||||
# if !defined?(Calendar).nil?
|
# if !defined?(Calendar).nil?
|
||||||
# if bps[:add_to_calendar] == '0' && !bps[:event_id].blank?
|
# if bps[:add_to_calendar] == '0' && !bps[:event_id].blank?
|
||||||
# Event.find(bps[:event_id]).destroy rescue nil
|
# Event.find(bps[:event_id]).destroy rescue nil
|
||||||
# bps[:event_id] = nil
|
# bps[:event_id] = nil
|
||||||
# elsif bps[:add_to_calendar] == '1'
|
# elsif bps[:add_to_calendar] == '1'
|
||||||
# event = Event.find(bps[:event_id]) rescue Event.new(create_user_id: current_user.id)
|
# event = Event.find(bps[:event_id]) rescue Event.new(create_user_id: current_user.id)
|
||||||
# e_start = bps[:calendar_start_date].blank? ? bps[:postdate] : bps[:calendar_start_date]
|
# e_start = bps[:calendar_start_date].blank? ? bps[:postdate] : bps[:calendar_start_date]
|
||||||
# e_start = Time.now.to_datetime if e_start.blank?
|
# e_start = Time.now.to_datetime if e_start.blank?
|
||||||
# e_end = bps[:calendar_end_date].blank? ? bps[:deadline] : bps[:calendar_end_date]
|
# e_end = bps[:calendar_end_date].blank? ? bps[:deadline] : bps[:calendar_end_date]
|
||||||
# e_end = Time.now.to_datetime + 1.year if e_end.blank?
|
# e_end = Time.now.to_datetime + 1.year if e_end.blank?
|
||||||
# event.update_attributes(event_news_id: event_news.id,start: e_start,end: e_end,update_user_id: current_user.id,all_day: bps[:calendar_all_day],calendar_type_id: bps[:calendar_type_id],title: bps[:title_translations][I18n.locale],note: bps[:subtitle_translations][I18n.locale])
|
# event.update_attributes(event_news_id: event_news.id,start: e_start,end: e_end,update_user_id: current_user.id,all_day: bps[:calendar_all_day],calendar_type_id: bps[:calendar_type_id],title: bps[:title_translations][I18n.locale],note: bps[:subtitle_translations][I18n.locale])
|
||||||
# bps[:event_id] = event.id
|
# bps[:event_id] = event.id
|
||||||
# end
|
# end
|
||||||
# end
|
# end
|
||||||
event_news.create_user_id = current_user.id
|
event_news.create_user_id = current_user.id
|
||||||
event_news.update_user_id = current_user.id
|
event_news.update_user_id = current_user.id
|
||||||
if EventNewsSetting.is_pro?
|
if EventNewsSetting.is_pro?
|
||||||
if user_can_approve?
|
if user_can_approve?
|
||||||
event_news.approved = true
|
event_news.approved = true
|
||||||
else
|
else
|
||||||
send_notification_mail_to_managers(event_news,"approval",I18n.locale)
|
send_notification_mail_to_managers(event_news,"approval",I18n.locale)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
event_news.approved = true
|
event_news.approved = true
|
||||||
end
|
end
|
||||||
|
|
||||||
event_news.save
|
event_news.save
|
||||||
build_email(event_news,I18n.locale)
|
build_email(event_news,I18n.locale)
|
||||||
redirect_to params['referer_url']
|
redirect_to params['referer_url']
|
||||||
end
|
end
|
||||||
|
|
||||||
def approve_event_news
|
def approve_event_news
|
||||||
id = params[:id]
|
id = params[:id]
|
||||||
event_news = EventNews.find(id)
|
event_news = EventNews.find(id)
|
||||||
if params["approved"] == "true"
|
if params["approved"] == "true"
|
||||||
event_news.approved = true
|
event_news.approved = true
|
||||||
event_news.rejected = false
|
event_news.rejected = false
|
||||||
event_news.reapproval = false
|
event_news.reapproval = false
|
||||||
else
|
else
|
||||||
event_news.rejected = true
|
event_news.rejected = true
|
||||||
event_news.reapproval = false
|
event_news.reapproval = false
|
||||||
event_news.rejection_reason = params["reason"]
|
event_news.rejection_reason = params["reason"]
|
||||||
send_rejection_email(event_news,I18n.locale)
|
send_rejection_email(event_news,I18n.locale)
|
||||||
end
|
end
|
||||||
event_news.save
|
event_news.save
|
||||||
redirect_to admin_event_news_index_path
|
redirect_to admin_event_news_index_path
|
||||||
end
|
end
|
||||||
|
|
||||||
def edit
|
def edit
|
||||||
if can_edit_or_delete?(@event_news)
|
if can_edit_or_delete?(@event_news)
|
||||||
@reach_limit = @event_news.check_status_limit(current_user,true)
|
@reach_limit = @event_news.check_status_limit(current_user,true)
|
||||||
@tags = @module_app.tags
|
@tags = @module_app.tags
|
||||||
@categories = @module_app.categories.enabled
|
@categories = @module_app.categories.enabled
|
||||||
if defined? Calendar
|
if defined? Calendar
|
||||||
categories = user_authenticated_categories rescue ['all']
|
categories = user_authenticated_categories rescue ['all']
|
||||||
if categories.first == "all"
|
if categories.first == "all"
|
||||||
@calendar_categories = CalendarType.all
|
@calendar_categories = CalendarType.all
|
||||||
else
|
else
|
||||||
@calendar_categories = CalendarType.where(:category_id.in => categories) rescue []
|
@calendar_categories = CalendarType.where(:category_id.in => categories) rescue []
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@statuses = []
|
@statuses = []
|
||||||
@event_news.email_sentdate = Time.now if @event_news.email_sent == false
|
@event_news.email_sentdate = Time.now if @event_news.email_sent == false
|
||||||
else
|
else
|
||||||
render_401
|
render_401
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
uid = params[:id].split('-').last
|
uid = params[:id].split('-').last
|
||||||
event_news = EventNews.find_by(:uid=>uid)
|
event_news = EventNews.find_by(:uid=>uid)
|
||||||
bps = event_news_params
|
bps = event_news_params
|
||||||
bps[:tags] = bps[:tags].blank? ? [] : bps[:tags]
|
bps[:tags] = bps[:tags].blank? ? [] : bps[:tags]
|
||||||
bps[:email_member_ids] = bps[:email_member_ids].blank? ? [] : bps[:email_member_ids]
|
bps[:email_member_ids] = bps[:email_member_ids].blank? ? [] : bps[:email_member_ids]
|
||||||
|
|
||||||
if !bps['event_news_links_attributes'].nil?
|
if !bps['event_news_links_attributes'].nil?
|
||||||
bps['event_news_links_attributes'].each do |idx,link|
|
bps['event_news_links_attributes'].each do |idx,link|
|
||||||
bps['event_news_links_attributes'].delete(idx.to_s) if link['url'].blank?
|
bps['event_news_links_attributes'].delete(idx.to_s) if link['url'].blank?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if((!EventNewsSetting.first.only_manager_can_edit_status) || (EventNewsSetting.first.only_manager_can_edit_status && (@current_user.is_admin? || @current_user.is_manager?(@module_app))) )
|
if((!EventNewsSetting.first.only_manager_can_edit_status) || (EventNewsSetting.first.only_manager_can_edit_status && (@current_user.is_admin? || @current_user.is_manager?(@module_app))) )
|
||||||
if bps[:is_top] == "1" && !EventNewsSetting.check_limit_for_user(event_news.create_user_id, event_news.id)
|
if bps[:is_top] == "1" && !EventNewsSetting.check_limit_for_user(event_news.create_user_id, event_news.id)
|
||||||
bps[:is_top] = "0"
|
bps[:is_top] = "0"
|
||||||
bps[:top_end_date] = nil
|
bps[:top_end_date] = nil
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
bps[:is_top] = event_news.is_top
|
bps[:is_top] = event_news.is_top
|
||||||
bps[:is_hot] = event_news.is_hot
|
bps[:is_hot] = event_news.is_hot
|
||||||
bps[:is_hidden] = event_news.is_hidden
|
bps[:is_hidden] = event_news.is_hidden
|
||||||
end
|
end
|
||||||
# if !defined?(Calendar).nil?
|
# if !defined?(Calendar).nil?
|
||||||
# if bps[:add_to_calendar] == '0' && !bps[:event_id].blank?
|
# if bps[:add_to_calendar] == '0' && !bps[:event_id].blank?
|
||||||
# Event.find(bps[:event_id]).destroy rescue nil
|
# Event.find(bps[:event_id]).destroy rescue nil
|
||||||
# bps[:event_id] = nil
|
# bps[:event_id] = nil
|
||||||
# elsif bps[:add_to_calendar] == '1'
|
# elsif bps[:add_to_calendar] == '1'
|
||||||
# event = Event.find(bps[:event_id]) rescue Event.new(create_user_id: current_user.id)
|
# event = Event.find(bps[:event_id]) rescue Event.new(create_user_id: current_user.id)
|
||||||
# e_start = bps[:calendar_start_date].blank? ? bps[:postdate] : bps[:calendar_start_date]
|
# e_start = bps[:calendar_start_date].blank? ? bps[:postdate] : bps[:calendar_start_date]
|
||||||
# e_start = Time.now.to_datetime if e_start.blank?
|
# e_start = Time.now.to_datetime if e_start.blank?
|
||||||
# e_end = bps[:calendar_end_date].blank? ? bps[:deadline] : bps[:calendar_end_date]
|
# e_end = bps[:calendar_end_date].blank? ? bps[:deadline] : bps[:calendar_end_date]
|
||||||
# e_end = Time.now.to_datetime + 1.year if e_end.blank?
|
# e_end = Time.now.to_datetime + 1.year if e_end.blank?
|
||||||
# event.update_attributes(event_news_id: event_news.id,start: e_start,end: e_end,update_user_id: current_user.id,all_day: bps[:calendar_all_day],calendar_type_id: bps[:calendar_type_id],title: bps[:title_translations][I18n.locale],note: bps[:subtitle_translations][I18n.locale])
|
# event.update_attributes(event_news_id: event_news.id,start: e_start,end: e_end,update_user_id: current_user.id,all_day: bps[:calendar_all_day],calendar_type_id: bps[:calendar_type_id],title: bps[:title_translations][I18n.locale],note: bps[:subtitle_translations][I18n.locale])
|
||||||
# bps[:event_id] = event.id
|
# bps[:event_id] = event.id
|
||||||
# end
|
# end
|
||||||
# end
|
# end
|
||||||
event_news.update_attributes(bps)
|
event_news.update_attributes(bps)
|
||||||
event_news.update_user_id = current_user.id
|
event_news.update_user_id = current_user.id
|
||||||
if event_news.rejected
|
if event_news.rejected
|
||||||
event_news.reapproval = true
|
event_news.reapproval = true
|
||||||
event_news.save
|
event_news.save
|
||||||
send_notification_mail_to_managers(event_news,"reapproval",I18n.locale)
|
send_notification_mail_to_managers(event_news,"reapproval",I18n.locale)
|
||||||
else
|
else
|
||||||
event_news.save
|
event_news.save
|
||||||
end
|
end
|
||||||
build_email(event_news,I18n.locale)
|
build_email(event_news,I18n.locale)
|
||||||
now_event_news_page = EventNews.where(:title.ne => "",:is_preview.in=>[false,nil])
|
now_event_news_page = EventNews.where(:title.ne => "",:is_preview.in=>[false,nil])
|
||||||
.order_by(sort).map(&:id).map.with_index.select{|v,i| v==event_news.id}[0][1] rescue nil
|
.order_by(sort).map(&:id).map.with_index.select{|v,i| v==event_news.id}[0][1] rescue nil
|
||||||
now_event_news_page = now_event_news_page.nil? ? 0 : ((now_event_news_page+1).to_f/10).ceil
|
now_event_news_page = now_event_news_page.nil? ? 0 : ((now_event_news_page+1).to_f/10).ceil
|
||||||
redirect_to admin_event_news_index_path(:page=>now_event_news_page)
|
redirect_to admin_event_news_index_path(:page=>now_event_news_page)
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
@event_news.destroy
|
@event_news.destroy
|
||||||
redirect_to "/admin/event_news"
|
redirect_to "/admin/event_news"
|
||||||
end
|
end
|
||||||
|
|
||||||
def delete
|
def delete
|
||||||
if params[:ids]
|
if params[:ids]
|
||||||
EventNews.any_in(:uid => params[:ids]).destroy_all
|
EventNews.any_in(:uid => params[:ids]).destroy_all
|
||||||
end
|
end
|
||||||
redirect_to "/admin/event_news"
|
redirect_to "/admin/event_news"
|
||||||
end
|
end
|
||||||
|
|
||||||
def preview
|
def preview
|
||||||
if params['preview_type'].eql?('edit')
|
if params['preview_type'].eql?('edit')
|
||||||
event_news_data = event_news_params
|
event_news_data = event_news_params
|
||||||
org_event_news = EventNews.find(params['event_news_id'])
|
org_event_news = EventNews.find(params['event_news_id'])
|
||||||
event_news = org_event_news.clone
|
event_news = org_event_news.clone
|
||||||
event_news.generate_uid
|
event_news.generate_uid
|
||||||
event_news.event_news_files = []
|
event_news.event_news_files = []
|
||||||
event_news.event_news_links = []
|
event_news.event_news_links = []
|
||||||
if event_news_data['image'].blank?
|
if event_news_data['image'].blank?
|
||||||
event_news.image = org_event_news.image
|
event_news.image = org_event_news.image
|
||||||
end
|
end
|
||||||
|
|
||||||
if !event_news_data['event_news_files_attributes'].blank?
|
if !event_news_data['event_news_files_attributes'].blank?
|
||||||
event_news_data['event_news_files_attributes'].each do |key, event_news_file|
|
event_news_data['event_news_files_attributes'].each do |key, event_news_file|
|
||||||
next if !event_news_file['_destroy'].blank?
|
next if !event_news_file['_destroy'].blank?
|
||||||
file = nil
|
file = nil
|
||||||
if event_news_file['id'].blank?
|
if event_news_file['id'].blank?
|
||||||
file = EventNewsFile.new(event_news_file)
|
file = EventNewsFile.new(event_news_file)
|
||||||
file.event_news_id = event_news.id
|
file.event_news_id = event_news.id
|
||||||
file.save
|
file.save
|
||||||
else
|
else
|
||||||
org_file = EventNewsFile.find(event_news_file['id'])
|
org_file = EventNewsFile.find(event_news_file['id'])
|
||||||
file = org_file.clone
|
file = org_file.clone
|
||||||
file.event_news_id = event_news.id
|
file.event_news_id = event_news.id
|
||||||
file.file = org_file.file
|
file.file = org_file.file
|
||||||
event_news_file.delete('id')
|
event_news_file.delete('id')
|
||||||
event_news_file.delete('_destroy')
|
event_news_file.delete('_destroy')
|
||||||
file.update_attributes(event_news_file)
|
file.update_attributes(event_news_file)
|
||||||
end
|
end
|
||||||
|
|
||||||
file.save
|
file.save
|
||||||
event_news.event_news_files << file
|
event_news.event_news_files << file
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if !event_news_data['event_news_links_attributes'].blank?
|
if !event_news_data['event_news_links_attributes'].blank?
|
||||||
event_news_data['event_news_links_attributes'].each do |key, event_news_link|
|
event_news_data['event_news_links_attributes'].each do |key, event_news_link|
|
||||||
next if !event_news_link['_destroy'].blank?
|
next if !event_news_link['_destroy'].blank?
|
||||||
|
|
||||||
if event_news_link['id'].blank?
|
if event_news_link['id'].blank?
|
||||||
link = EventNewsLink.new(event_news_link)
|
link = EventNewsLink.new(event_news_link)
|
||||||
link.event_news_id = event_news.id
|
link.event_news_id = event_news.id
|
||||||
else
|
else
|
||||||
link = EventNewsLink.find(event_news_link['id']).clone
|
link = EventNewsLink.find(event_news_link['id']).clone
|
||||||
link.event_news_id = event_news.id
|
link.event_news_id = event_news.id
|
||||||
event_news_link.delete('id')
|
event_news_link.delete('id')
|
||||||
event_news_link.delete('_destroy')
|
event_news_link.delete('_destroy')
|
||||||
link.update_attributes(event_news_link)
|
link.update_attributes(event_news_link)
|
||||||
end
|
end
|
||||||
|
|
||||||
link.save
|
link.save
|
||||||
event_news.event_news_links << link
|
event_news.event_news_links << link
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
event_news_data.delete('event_news_files_attributes')
|
event_news_data.delete('event_news_files_attributes')
|
||||||
event_news_data.delete('event_news_links_attributes')
|
event_news_data.delete('event_news_links_attributes')
|
||||||
event_news.update_attributes(event_news_data)
|
event_news.update_attributes(event_news_data)
|
||||||
else
|
else
|
||||||
event_news = EventNews.new(event_news_params)
|
event_news = EventNews.new(event_news_params)
|
||||||
end
|
end
|
||||||
|
|
||||||
event_news.is_preview = true
|
event_news.is_preview = true
|
||||||
event_news.save
|
event_news.save
|
||||||
render :text=>page_for_event_news(event_news) + "?preview=true"
|
render :text=>page_for_event_news(event_news) + "?preview=true"
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy_preview
|
def destroy_preview
|
||||||
event_news = EventNews.find_by(:uid=>params['uid'])
|
event_news = EventNews.find_by(:uid=>params['uid'])
|
||||||
if event_news.is_preview
|
if event_news.is_preview
|
||||||
event_news.destroy
|
event_news.destroy
|
||||||
end
|
end
|
||||||
render :json=>{'destroy'=>event_news.id.to_s}
|
render :json=>{'destroy'=>event_news.id.to_s}
|
||||||
end
|
end
|
||||||
|
|
||||||
def build_email(event_news,locale)
|
def build_email(event_news,locale)
|
||||||
if event_news.email_sent and !event_news.email_addresses.blank?
|
if event_news.email_sent and !event_news.email_addresses.blank?
|
||||||
if event_news.email.nil?
|
if event_news.email.nil?
|
||||||
email = Email.new
|
email = Email.new
|
||||||
email.save
|
email.save
|
||||||
email.deliver rescue nil
|
email.deliver rescue nil
|
||||||
event_news.email_id = email.id
|
event_news.email_id = email.id
|
||||||
event_news.save
|
event_news.save
|
||||||
end
|
end
|
||||||
|
|
||||||
is_sent = event_news.email.is_sent
|
is_sent = event_news.email.is_sent
|
||||||
is_sent = !params[:resend_mail].eql?("true") if !params[:resend_mail].blank?
|
is_sent = !params[:resend_mail].eql?("true") if !params[:resend_mail].blank?
|
||||||
doc = Nokogiri::HTML(event_news.title_translations[locale])
|
doc = Nokogiri::HTML(event_news.title_translations[locale])
|
||||||
title = doc.text.empty? ? 'no content' : doc.text
|
title = doc.text.empty? ? 'no content' : doc.text
|
||||||
|
|
||||||
event_news.email.update_attributes(
|
event_news.email.update_attributes(
|
||||||
:create_user=>current_user,
|
:create_user=>current_user,
|
||||||
:mail_sentdate=>event_news.email_sentdate,
|
:mail_sentdate=>event_news.email_sentdate,
|
||||||
:module_app=>@module_app,
|
:module_app=>@module_app,
|
||||||
:mail_lang => locale,
|
:mail_lang => locale,
|
||||||
:mail_to=>event_news.email_addresses,
|
:mail_to=>event_news.email_addresses,
|
||||||
:mail_subject=>title,
|
:mail_subject=>title,
|
||||||
:template=>'event_news/email',
|
:template=>'event_news/email',
|
||||||
:template_data=>{
|
:template_data=>{
|
||||||
"host" => request.host_with_port,
|
"host" => request.host_with_port,
|
||||||
"title" => title,
|
"title" => title,
|
||||||
"url" => page_for_event_news(event_news)
|
"url" => page_for_event_news(event_news)
|
||||||
},
|
},
|
||||||
:is_sent=>is_sent
|
:is_sent=>is_sent
|
||||||
)
|
)
|
||||||
event_news.email.deliver
|
event_news.email.deliver
|
||||||
else
|
else
|
||||||
event_news.email.destroy if !event_news.email.nil?
|
event_news.email.destroy if !event_news.email.nil?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def custom_fields_title
|
def custom_fields_title
|
||||||
@event_news_custom_titles = EventNewsCustomTitle.get_map
|
@event_news_custom_titles = EventNewsCustomTitle.get_map
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_custom_title
|
def update_custom_title
|
||||||
event_news_custom_title_params = params.require(:event_news_custom_title).permit!
|
event_news_custom_title_params = params.require(:event_news_custom_title).permit!
|
||||||
event_news_custom_title_params.each do |k,event_news_custom_title_param|
|
event_news_custom_title_params.each do |k,event_news_custom_title_param|
|
||||||
EventNewsCustomTitle.find(event_news_custom_title_param['id']).update_attributes(event_news_custom_title_param)
|
EventNewsCustomTitle.find(event_news_custom_title_param['id']).update_attributes(event_news_custom_title_param)
|
||||||
end
|
end
|
||||||
Thread.new do
|
Thread.new do
|
||||||
content = "UNICORN_PID=\"`fuser tmp/pids/unicorn.sock tmp/sockets/unicorn.sock tmp/unicorn.sock` `cat tmp/pids/unicorn.pid `\" && kill -s USR2 $UNICORN_PID ; n=20; while (kill -0 $UNICORN_PID > /dev/null 2>&1) && test $n -ge 0; do printf '.' && sleep 1 && n=$(( $n - 1 )); done ; if test $n -lt 0; then kill -s TERM $UNICORN_PID; sleep 3; bundle exec unicorn_rails -c config/unicorn.rb -D -E #{Rails.env}; else kill -s QUIT $UNICORN_PID; fi"
|
content = "UNICORN_PID=\"`fuser tmp/pids/unicorn.sock tmp/sockets/unicorn.sock tmp/unicorn.sock` `cat tmp/pids/unicorn.pid `\" && kill -s USR2 $UNICORN_PID ; n=20; while (kill -0 $UNICORN_PID > /dev/null 2>&1) && test $n -ge 0; do printf '.' && sleep 1 && n=$(( $n - 1 )); done ; if test $n -lt 0; then kill -s TERM $UNICORN_PID; sleep 3; bundle exec unicorn_rails -c config/unicorn.rb -D -E #{Rails.env}; else kill -s QUIT $UNICORN_PID; fi"
|
||||||
system(content)
|
system(content)
|
||||||
end
|
end
|
||||||
redirect_to action: :index
|
redirect_to action: :index
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def load_settings
|
def load_settings
|
||||||
@event_news_setting = EventNewsSetting.first rescue nil
|
@event_news_setting = EventNewsSetting.first rescue nil
|
||||||
if @event_news_setting.nil?
|
if @event_news_setting.nil?
|
||||||
@event_news_setting = EventNewsSetting.create
|
@event_news_setting = EventNewsSetting.create
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_event_news
|
def set_event_news
|
||||||
@event_news = EventNews.find(params[:id])
|
@event_news = EventNews.find(params[:id])
|
||||||
end
|
end
|
||||||
|
|
||||||
def event_news_params
|
def event_news_params
|
||||||
params[:event_news][:email_sent] = params[:event_news][:email_sent].nil? ? 0 : params[:event_news][:email_sent]
|
params[:event_news][:email_sent] = params[:event_news][:email_sent].nil? ? 0 : params[:event_news][:email_sent]
|
||||||
params.require(:event_news).permit!
|
params.require(:event_news).permit!
|
||||||
end
|
end
|
||||||
|
|
||||||
def feed_params
|
def feed_params
|
||||||
params.require(:event_news_feed).permit!
|
params.require(:event_news_feed).permit!
|
||||||
end
|
end
|
||||||
|
|
||||||
def settings_params
|
def settings_params
|
||||||
params.require(:event_news_setting).permit!
|
params.require(:event_news_setting).permit!
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -21,10 +21,7 @@ class EventNewsController < ApplicationController
|
||||||
target = a.is_external_link ? "_blank" : "_self"
|
target = a.is_external_link ? "_blank" : "_self"
|
||||||
doc = Nokogiri::HTML(a.title)
|
doc = Nokogiri::HTML(a.title)
|
||||||
title = doc.text.empty? ? 'no content' : doc.text
|
title = doc.text.empty? ? 'no content' : doc.text
|
||||||
event_time = (a.event_date.strftime(a.date_parse_format) rescue "")
|
event_time = a.event_time_formated_for_frontend
|
||||||
if a.event_end_date
|
|
||||||
event_time = "<span class=\"start_date\">#{event_time.split(" ")[0]}</span> ~ <span class=\"end_date\">#{a.event_end_date.strftime('%Y-%m-%d')}</span>"
|
|
||||||
end
|
|
||||||
event_time_formated = a.event_time_formated
|
event_time_formated = a.event_time_formated
|
||||||
{
|
{
|
||||||
"department" => author,
|
"department" => author,
|
||||||
|
@ -53,7 +50,7 @@ class EventNewsController < ApplicationController
|
||||||
"target" => target,
|
"target" => target,
|
||||||
"img_src" => a.image.thumb.url || "/assets/event_news-default.jpg",
|
"img_src" => a.image.thumb.url || "/assets/event_news-default.jpg",
|
||||||
"img_description" => desc,
|
"img_description" => desc,
|
||||||
"more" => t(:more_plus),
|
"more" => t("event_news.more"),
|
||||||
"view_count" => a.view_count
|
"view_count" => a.view_count
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -72,11 +69,11 @@ class EventNewsController < ApplicationController
|
||||||
"event_news" => event_news,
|
"event_news" => event_news,
|
||||||
"extras" => {
|
"extras" => {
|
||||||
"widget-title" =>t('event_news.event_news'),
|
"widget-title" =>t('event_news.event_news'),
|
||||||
"title-head" => t('event_news.title'),
|
"title-head" => EventNewsCustomTitle.get_trans('title'),
|
||||||
"speaker-head" => EventNewsCustomTitle.get_trans('speaker'),
|
"speaker-head" => EventNewsCustomTitle.get_trans('speaker'),
|
||||||
"place-head" => EventNewsCustomTitle.get_trans('place'),
|
"place-head" => EventNewsCustomTitle.get_trans('place'),
|
||||||
"host-head" => EventNewsCustomTitle.get_trans('host'),
|
"host-head" => EventNewsCustomTitle.get_trans('host'),
|
||||||
"notes-head" => t('event_news.notes'),
|
"notes-head" => EventNewsCustomTitle.get_trans('notes'),
|
||||||
"event_date-head" => EventNewsCustomTitle.get_trans('event_date'),
|
"event_date-head" => EventNewsCustomTitle.get_trans('event_date'),
|
||||||
"date-head" => EventNewsCustomTitle.get_trans('event_date'),
|
"date-head" => EventNewsCustomTitle.get_trans('event_date'),
|
||||||
"status-head" => t('event_news.table.status'),
|
"status-head" => t('event_news.table.status'),
|
||||||
|
@ -379,12 +376,13 @@ class EventNewsController < ApplicationController
|
||||||
"more_url"=>OrbitHelper.widget_more_url,
|
"more_url"=>OrbitHelper.widget_more_url,
|
||||||
"main_picture" => mp,
|
"main_picture" => mp,
|
||||||
"main_picture_description" => mpd,
|
"main_picture_description" => mpd,
|
||||||
"title-head" => t('event_news.title'),
|
"title-head" => EventNewsCustomTitle.get_trans('title'),
|
||||||
"speaker-head" => EventNewsCustomTitle.get_trans('speaker'),
|
"speaker-head" => EventNewsCustomTitle.get_trans('speaker'),
|
||||||
"place-head" => EventNewsCustomTitle.get_trans('place'),
|
"place-head" => EventNewsCustomTitle.get_trans('place'),
|
||||||
"host-head" => EventNewsCustomTitle.get_trans('host'),
|
"host-head" => EventNewsCustomTitle.get_trans('host'),
|
||||||
"notes-head" => t('event_news.notes'),
|
"notes-head" => EventNewsCustomTitle.get_trans('notes'),
|
||||||
"event_date-head" => EventNewsCustomTitle.get_trans('event_date'),
|
"event_date-head" => EventNewsCustomTitle.get_trans('event_date'),
|
||||||
|
"date-head" => EventNewsCustomTitle.get_trans('event_date'),
|
||||||
"date-head" => t('event_news.table.date'),
|
"date-head" => t('event_news.table.date'),
|
||||||
"author-head" => t('event_news.table.author'),
|
"author-head" => t('event_news.table.author'),
|
||||||
"status-head" => t('event_news.table.status'),
|
"status-head" => t('event_news.table.status'),
|
||||||
|
@ -532,7 +530,6 @@ class EventNewsController < ApplicationController
|
||||||
event_news = top_event_news + rest_event_news
|
event_news = top_event_news + rest_event_news
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
event_news.each{|a| a["postdate"] = a["postdate"].in_time_zone(Time.zone.utc_offset / 3600).strftime((a['all_day'] ? '%Y-%m-%d' : '%Y-%m-%d %H:%M')) rescue nil }
|
|
||||||
event_news
|
event_news
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -623,20 +620,26 @@ class EventNewsController < ApplicationController
|
||||||
pause_btn_title = (I18n.locale.to_s =="zh_tw") ? "暫停播放" : "pause"
|
pause_btn_title = (I18n.locale.to_s =="zh_tw") ? "暫停播放" : "pause"
|
||||||
prev_btn_title = (I18n.locale.to_s =="zh_tw") ? "上一張" : "prev"
|
prev_btn_title = (I18n.locale.to_s =="zh_tw") ? "上一張" : "prev"
|
||||||
next_btn_title = (I18n.locale.to_s =="zh_tw") ? "下一張" : "next"
|
next_btn_title = (I18n.locale.to_s =="zh_tw") ? "下一張" : "next"
|
||||||
event_time = (event_news.event_date.strftime(event_news.date_parse_format) rescue "")
|
begin
|
||||||
if event_news.event_end_date
|
event_time = event_news.event_time_formated_for_frontend
|
||||||
event_time = "<span class=\"start_date\">#{event_time.split(" ")[0]}</span> ~ <span class=\"end_date\">#{event_news.event_end_date.strftime('%Y-%m-%d')}</span>"
|
rescue => e
|
||||||
|
puts e.to_s
|
||||||
|
event_time = ""
|
||||||
end
|
end
|
||||||
|
|
||||||
{
|
{
|
||||||
"tags" => tags,
|
"tags" => tags,
|
||||||
"event_news_files" => files,
|
"event_news_files" => files,
|
||||||
"event_news_links" => links,
|
"event_news_links" => links,
|
||||||
"event_carousel_images" => event_carousel_images,
|
"event_carousel_images" => event_carousel_images,
|
||||||
"data" => {
|
"data" => {
|
||||||
|
"title-head" => EventNewsCustomTitle.get_trans('title'),
|
||||||
"speaker-head" => EventNewsCustomTitle.get_trans('speaker'),
|
"speaker-head" => EventNewsCustomTitle.get_trans('speaker'),
|
||||||
|
"place-head" => EventNewsCustomTitle.get_trans('place'),
|
||||||
"host-head" => EventNewsCustomTitle.get_trans('host'),
|
"host-head" => EventNewsCustomTitle.get_trans('host'),
|
||||||
"notes-head" => t('event_news.notes'),
|
"notes-head" => EventNewsCustomTitle.get_trans('notes'),
|
||||||
|
"event_date-head" => EventNewsCustomTitle.get_trans('event_date'),
|
||||||
|
"date-head" => EventNewsCustomTitle.get_trans('event_date'),
|
||||||
|
"event-time-css" => (event_time.blank? ? "display: none;" : ""),
|
||||||
"speaker-css" => (event_news.speaker.blank? ? "display: none;" : ""),
|
"speaker-css" => (event_news.speaker.blank? ? "display: none;" : ""),
|
||||||
"host-css" => (event_news.host.blank? ? "display: none;" : ""),
|
"host-css" => (event_news.host.blank? ? "display: none;" : ""),
|
||||||
"speaker" => event_news.speaker,
|
"speaker" => event_news.speaker,
|
||||||
|
@ -713,10 +716,7 @@ class EventNewsController < ApplicationController
|
||||||
|
|
||||||
event_date = DateTime.parse(event_news["event_date"].to_s) rescue nil
|
event_date = DateTime.parse(event_news["event_date"].to_s) rescue nil
|
||||||
event_end_date = DateTime.parse(event_news["event_end_date"].to_s) rescue nil
|
event_end_date = DateTime.parse(event_news["event_end_date"].to_s) rescue nil
|
||||||
event_time = (event_date.strftime(event_news.date_parse_format) rescue "")
|
event_time = EventNewsSetting.event_time_formated_for_frontend(event_news["event_date"],event_news["event_end_date"])
|
||||||
if event_end_date
|
|
||||||
event_time = "<span class=\"start_date\">#{event_time.split(" ")[0]}</span> ~ <span class=\"end_date\">#{event_end_date.strftime('%Y-%m-%d')}</span>"
|
|
||||||
end
|
|
||||||
event_carousel_images = Array(event_news["event_carousel_images"])
|
event_carousel_images = Array(event_news["event_carousel_images"])
|
||||||
resume_btn_title = (I18n.locale.to_s =="zh_tw") ? "繼續播放" : "resume"
|
resume_btn_title = (I18n.locale.to_s =="zh_tw") ? "繼續播放" : "resume"
|
||||||
pause_btn_title = (I18n.locale.to_s =="zh_tw") ? "暫停播放" : "pause"
|
pause_btn_title = (I18n.locale.to_s =="zh_tw") ? "暫停播放" : "pause"
|
||||||
|
@ -735,10 +735,14 @@ class EventNewsController < ApplicationController
|
||||||
"update_user" => update_user,
|
"update_user" => update_user,
|
||||||
"updated_at" => event_time,
|
"updated_at" => event_time,
|
||||||
"body" => event_news["text_translations"][locale],
|
"body" => event_news["text_translations"][locale],
|
||||||
|
"title-head" => EventNewsCustomTitle.get_trans('title'),
|
||||||
"speaker-head" => EventNewsCustomTitle.get_trans('speaker'),
|
"speaker-head" => EventNewsCustomTitle.get_trans('speaker'),
|
||||||
|
"place-head" => EventNewsCustomTitle.get_trans('place'),
|
||||||
"host-head" => EventNewsCustomTitle.get_trans('host'),
|
"host-head" => EventNewsCustomTitle.get_trans('host'),
|
||||||
"notes-head" => t('event_news.notes'),
|
"notes-head" => EventNewsCustomTitle.get_trans('notes'),
|
||||||
"event_date-head" => EventNewsCustomTitle.get_trans('event_date'),
|
"event_date-head" => EventNewsCustomTitle.get_trans('event_date'),
|
||||||
|
"date-head" => EventNewsCustomTitle.get_trans('event_date'),
|
||||||
|
"event-time-css" => (event_time.blank? ? "display: none;" : ""),
|
||||||
"speaker-css" => (speaker.blank? ? "display: none;" : ""),
|
"speaker-css" => (speaker.blank? ? "display: none;" : ""),
|
||||||
"host-css" => (host.blank? ? "display: none;" : ""),
|
"host-css" => (host.blank? ? "display: none;" : ""),
|
||||||
"speaker" => speaker,
|
"speaker" => speaker,
|
||||||
|
@ -809,10 +813,7 @@ class EventNewsController < ApplicationController
|
||||||
target = a.is_external_link ? "_blank" : "_self"
|
target = a.is_external_link ? "_blank" : "_self"
|
||||||
doc = Nokogiri::HTML(a.title)
|
doc = Nokogiri::HTML(a.title)
|
||||||
title = doc.text.empty? ? 'no content' : doc.text
|
title = doc.text.empty? ? 'no content' : doc.text
|
||||||
event_time = (a.event_date.strftime(a.date_parse_format) rescue "")
|
event_time = a.event_time_formated_for_frontend
|
||||||
if a.event_end_date
|
|
||||||
event_time = "<span class=\"start_date\">#{event_time.split(" ")[0]}</span> ~ <span class=\"end_date\">#{a.event_end_date.strftime('%Y-%m-%d')}</span>"
|
|
||||||
end
|
|
||||||
event_time_formated = a.event_time_formated
|
event_time_formated = a.event_time_formated
|
||||||
{
|
{
|
||||||
"department" => author,
|
"department" => author,
|
||||||
|
@ -824,6 +825,8 @@ class EventNewsController < ApplicationController
|
||||||
"place-css" => (a.place.blank? ? "display: none;" : ""),
|
"place-css" => (a.place.blank? ? "display: none;" : ""),
|
||||||
"event-time-formated" => event_time_formated,
|
"event-time-formated" => event_time_formated,
|
||||||
"event-time-css" => (event_time_formated.blank? ? "display: none;" : ""),
|
"event-time-css" => (event_time_formated.blank? ? "display: none;" : ""),
|
||||||
|
"speaker-css" => (a.speaker.blank? ? "display: none;" : ""),
|
||||||
|
"host-css" => (a.host.blank? ? "display: none;" : ""),
|
||||||
"speaker" => a.speaker,
|
"speaker" => a.speaker,
|
||||||
"place" => a.place,
|
"place" => a.place,
|
||||||
"host" => a.host,
|
"host" => a.host,
|
||||||
|
@ -841,7 +844,7 @@ class EventNewsController < ApplicationController
|
||||||
"target" => target,
|
"target" => target,
|
||||||
"img_src" => a.image.thumb.url || "/assets/event_news-default.jpg",
|
"img_src" => a.image.thumb.url || "/assets/event_news-default.jpg",
|
||||||
"img_description" => desc,
|
"img_description" => desc,
|
||||||
"more" => t(:more_plus),
|
"more" => t("event_news.more"),
|
||||||
"view_count" => a.view_count
|
"view_count" => a.view_count
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -860,11 +863,13 @@ class EventNewsController < ApplicationController
|
||||||
"event_news" => event_news,
|
"event_news" => event_news,
|
||||||
"extras" => {
|
"extras" => {
|
||||||
"widget-title" =>t('event_news.event_news'),
|
"widget-title" =>t('event_news.event_news'),
|
||||||
"title-head" => t('event_news.title'),
|
"title-head" => EventNewsCustomTitle.get_trans('title'),
|
||||||
"speaker-head" => EventNewsCustomTitle.get_trans('speaker'),
|
"speaker-head" => EventNewsCustomTitle.get_trans('speaker'),
|
||||||
|
"place-head" => EventNewsCustomTitle.get_trans('place'),
|
||||||
"host-head" => EventNewsCustomTitle.get_trans('host'),
|
"host-head" => EventNewsCustomTitle.get_trans('host'),
|
||||||
"notes-head" => t('event_news.notes'),
|
"notes-head" => EventNewsCustomTitle.get_trans('notes'),
|
||||||
"event_date-head" => EventNewsCustomTitle.get_trans('event_date'),
|
"event_date-head" => EventNewsCustomTitle.get_trans('event_date'),
|
||||||
|
"date-head" => EventNewsCustomTitle.get_trans('event_date'),
|
||||||
"date-head" => t('event_news.table.date'),
|
"date-head" => t('event_news.table.date'),
|
||||||
"status-head" => t('event_news.table.status'),
|
"status-head" => t('event_news.table.status'),
|
||||||
"author-head" => t('event_news.table.author'),
|
"author-head" => t('event_news.table.author'),
|
||||||
|
|
|
@ -1,187 +1,187 @@
|
||||||
require "rss"
|
require "rss"
|
||||||
class EventNewsFeedsController < ApplicationController
|
class EventNewsFeedsController < ApplicationController
|
||||||
include Admin::EventNewsHelper
|
include Admin::EventNewsHelper
|
||||||
def feed
|
def feed
|
||||||
uid = params[:uid]
|
uid = params[:uid]
|
||||||
anns = get_event_news(uid)
|
anns = get_event_news(uid)
|
||||||
render :json => anns.to_json
|
render :json => anns.to_json
|
||||||
end
|
end
|
||||||
|
|
||||||
def rssfeed
|
def rssfeed
|
||||||
uid = params[:uid]
|
uid = params[:uid]
|
||||||
@bf = EventNewsFeed.find_by(:uid => uid) rescue nil
|
@bf = EventNewsFeed.find_by(:uid => uid) rescue nil
|
||||||
if !@bf.nil?
|
if !@bf.nil?
|
||||||
tags = @bf.tag_ids
|
tags = @bf.tag_ids
|
||||||
if !tags.empty?
|
if !tags.empty?
|
||||||
@event_news = EventNews.can_display_and_sorted.is_approved.filter_by_tags(tags)
|
@event_news = EventNews.can_display_and_sorted.is_approved.filter_by_tags(tags)
|
||||||
end
|
end
|
||||||
categories = @bf.category_ids
|
categories = @bf.category_ids
|
||||||
if !categories.empty?
|
if !categories.empty?
|
||||||
@event_news = @event_news.filter_by_categories(categories)
|
@event_news = @event_news.filter_by_categories(categories)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@event_news = []
|
@event_news = []
|
||||||
end
|
end
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html {redirect_to "/xhr/event_news/rssfeed/#{@bf.uid}.rss"}
|
format.html {redirect_to "/xhr/event_news/rssfeed/#{@bf.uid}.rss"}
|
||||||
format.rss
|
format.rss
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def feeds
|
def feeds
|
||||||
feeds = []
|
feeds = []
|
||||||
EventNewsFeed.all.each do |bf|
|
EventNewsFeed.all.each do |bf|
|
||||||
feed = {}
|
feed = {}
|
||||||
feed["title_translations"] = bf.title_translations
|
feed["title_translations"] = bf.title_translations
|
||||||
feed["uid"] = bf.uid
|
feed["uid"] = bf.uid
|
||||||
feed["url"] = "#{request.base_url}/xhr/event_news/feed/#{bf.uid}"
|
feed["url"] = "#{request.base_url}/xhr/event_news/feed/#{bf.uid}"
|
||||||
feed["xml_url"] = "#{request.base_url}/xhr/event_news/rssfeed/#{bf.uid}.rss"
|
feed["xml_url"] = "#{request.base_url}/xhr/event_news/rssfeed/#{bf.uid}.rss"
|
||||||
feed["tags"] = []
|
feed["tags"] = []
|
||||||
bf.tag_ids.each do |t|
|
bf.tag_ids.each do |t|
|
||||||
tag = Tag.find(t)
|
tag = Tag.find(t)
|
||||||
d = {}
|
d = {}
|
||||||
d["name_translations"] = tag.name_translations
|
d["name_translations"] = tag.name_translations
|
||||||
feed["tags"] << d
|
feed["tags"] << d
|
||||||
end
|
end
|
||||||
feeds << feed
|
feeds << feed
|
||||||
end
|
end
|
||||||
render :json => {"feeds" => feeds}.to_json
|
render :json => {"feeds" => feeds}.to_json
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def smart_convertor(text)
|
def smart_convertor(text)
|
||||||
html_string = text
|
html_string = text
|
||||||
links = html_string.scan(/img.*?src="(.*?)"/i)
|
links = html_string.scan(/img.*?src="(.*?)"/i)
|
||||||
links = links + html_string.scan(/a.*?href="(.*?)"/i)
|
links = links + html_string.scan(/a.*?href="(.*?)"/i)
|
||||||
links.uniq!
|
links.uniq!
|
||||||
links.each do |link|
|
links.each do |link|
|
||||||
l = link.first
|
l = link.first
|
||||||
new_link = nil
|
new_link = nil
|
||||||
if l.starts_with?("/")
|
if l.starts_with?("/")
|
||||||
new_link = request.protocol + request.host_with_port + l
|
new_link = request.protocol + request.host_with_port + l
|
||||||
elsif l.starts_with?("..")
|
elsif l.starts_with?("..")
|
||||||
l1 = l.gsub("../","")
|
l1 = l.gsub("../","")
|
||||||
new_link = request.protocol + request.host_with_port + "/" + l1
|
new_link = request.protocol + request.host_with_port + "/" + l1
|
||||||
end
|
end
|
||||||
html_string = html_string.gsub(l,new_link) if !new_link.nil?
|
html_string = html_string.gsub(l,new_link) if !new_link.nil?
|
||||||
end
|
end
|
||||||
return html_string
|
return html_string
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_event_news(uid)
|
def get_event_news(uid)
|
||||||
bf = EventNewsFeed.find_by(:uid => uid) rescue nil
|
bf = EventNewsFeed.find_by(:uid => uid) rescue nil
|
||||||
startdt = params[:start]
|
startdt = params[:start]
|
||||||
enddt = params[:end]
|
enddt = params[:end]
|
||||||
dt = params[:date]
|
dt = params[:date]
|
||||||
if !bf.nil?
|
if !bf.nil?
|
||||||
tags = bf.tag_ids
|
tags = bf.tag_ids
|
||||||
categories = bf.category_ids
|
categories = bf.category_ids
|
||||||
if !(categories.empty? && tags.empty?)
|
if !(categories.empty? && tags.empty?)
|
||||||
if !dt.nil?
|
if !dt.nil?
|
||||||
dt = DateTime.parse(dt)
|
dt = DateTime.parse(dt)
|
||||||
dtt = dt + 1.day
|
dtt = dt + 1.day
|
||||||
event_news = EventNews.where(:postdate.gt => dt, :postdate.lt => dtt).can_display_and_sorted.is_approved
|
event_news = EventNews.where(:postdate.gt => dt, :postdate.lt => dtt).can_display_and_sorted.is_approved
|
||||||
elsif !startdt.nil? && enddt.nil?
|
elsif !startdt.nil? && enddt.nil?
|
||||||
startdt = DateTime.parse(startdt)
|
startdt = DateTime.parse(startdt)
|
||||||
enddt = DateTime.now
|
enddt = DateTime.now
|
||||||
event_news = EventNews.where(:postdate.gt => startdt, :postdate.lt => enddt).can_display_and_sorted.is_approved
|
event_news = EventNews.where(:postdate.gt => startdt, :postdate.lt => enddt).can_display_and_sorted.is_approved
|
||||||
elsif !startdt.nil? && !enddt.nil?
|
elsif !startdt.nil? && !enddt.nil?
|
||||||
startdt = DateTime.parse(startdt)
|
startdt = DateTime.parse(startdt)
|
||||||
enddt = DateTime.parse(enddt) + 1.day
|
enddt = DateTime.parse(enddt) + 1.day
|
||||||
event_news = EventNews.where(:postdate.gt => startdt, :postdate.lt => enddt).can_display_and_sorted.is_approved
|
event_news = EventNews.where(:postdate.gt => startdt, :postdate.lt => enddt).can_display_and_sorted.is_approved
|
||||||
else
|
else
|
||||||
event_news = EventNews.all.can_display_and_sorted.is_approved
|
event_news = EventNews.all.can_display_and_sorted.is_approved
|
||||||
end
|
end
|
||||||
if !tags.empty?
|
if !tags.empty?
|
||||||
event_news = event_news.filter_by_tags(tags)
|
event_news = event_news.filter_by_tags(tags)
|
||||||
end
|
end
|
||||||
if !categories.empty?
|
if !categories.empty?
|
||||||
event_news = event_news.filter_by_categories(categories)
|
event_news = event_news.filter_by_categories(categories)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
event_news = []
|
event_news = []
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
all_anns = []
|
all_anns = []
|
||||||
tag_names = []
|
tag_names = []
|
||||||
category_titles = []
|
category_titles = []
|
||||||
tag_ids = []
|
tag_ids = []
|
||||||
category_ids = []
|
category_ids = []
|
||||||
event_news.each do |anns|
|
event_news.each do |anns|
|
||||||
user = User.find(anns.create_user_id) rescue nil
|
user = User.find(anns.create_user_id) rescue nil
|
||||||
if !user.nil?
|
if !user.nil?
|
||||||
author = user.member_profile && user.member_profile.name == "" ? user.user_name : user.member_profile.name
|
author = user.member_profile && user.member_profile.name == "" ? user.user_name : user.member_profile.name
|
||||||
else
|
else
|
||||||
author = ""
|
author = ""
|
||||||
end
|
end
|
||||||
a = {}
|
a = {}
|
||||||
a["id"] = anns.uid
|
a["id"] = anns.uid
|
||||||
translations_fields = ["title","subtitle","speaker","place","host","notes"]
|
translations_fields = ["title","subtitle","speaker","place","host","notes"]
|
||||||
translations_fields.each do |translations_field|
|
translations_fields.each do |translations_field|
|
||||||
a[translations_field+"_translations"] = anns.send(translations_field+"_translations") rescue {}
|
a[translations_field+"_translations"] = anns.send(translations_field+"_translations") rescue {}
|
||||||
end
|
end
|
||||||
a["text_translations"] = {}
|
a["text_translations"] = {}
|
||||||
a["text_translations"]["en"] = smart_convertor(anns.text_translations["en"]) if !anns.text_translations["en"].blank?
|
a["text_translations"]["en"] = smart_convertor(anns.text_translations["en"]) if !anns.text_translations["en"].blank?
|
||||||
a["text_translations"]["zh_tw"] = smart_convertor(anns.text_translations["zh_tw"]) if !anns.text_translations["zh_tw"].blank?
|
a["text_translations"]["zh_tw"] = smart_convertor(anns.text_translations["zh_tw"]) if !anns.text_translations["zh_tw"].blank?
|
||||||
a["event_date"] = anns.event_date
|
a["event_date"] = anns.event_date
|
||||||
a["event_end_date"] = anns.event_end_date
|
a["event_end_date"] = anns.event_end_date
|
||||||
a["postdate"] = anns.event_date#anns.postdate
|
a["postdate"] = anns.event_date#anns.postdate
|
||||||
a["image_description_translations"] = anns.image_description_translations
|
a["image_description_translations"] = anns.image_description_translations
|
||||||
a["image"] = {}
|
a["image"] = {}
|
||||||
a["image"]["original"] = ("#{request.base_url}" + anns.image.url rescue "")
|
a["image"]["original"] = ("#{request.base_url}" + anns.image.url rescue "")
|
||||||
a["image"]["thumb"] = ("#{request.base_url}" + anns.image.thumb.url rescue "")
|
a["image"]["thumb"] = ("#{request.base_url}" + anns.image.thumb.url rescue "")
|
||||||
a["image"]["mobile"] = ("#{request.base_url}" + anns.image.mobile.url rescue "")
|
a["image"]["mobile"] = ("#{request.base_url}" + anns.image.mobile.url rescue "")
|
||||||
a["img_src"] = a["image"]["thumb"] || "/assets/announcement-default.jpg"
|
a["img_src"] = a["image"]["thumb"] || "/assets/announcement-default.jpg"
|
||||||
a["tags"] = []
|
a["tags"] = []
|
||||||
a["category"] = {}
|
a["category"] = {}
|
||||||
a["author"] = author
|
a["author"] = author
|
||||||
a["params"] = anns.to_param
|
a["params"] = anns.to_param
|
||||||
a["event_news_links"] = []
|
a["event_news_links"] = []
|
||||||
a["event_news_files"] = []
|
a["event_news_files"] = []
|
||||||
a["event_carousel_images"] = anns.event_carousel_images.map{|image| {"src"=>"#{request.base_url}" + image.file.url,"description"=>image.description.to_s,"description_text"=>image.description_text }}
|
a["event_carousel_images"] = anns.event_carousel_images.map{|image| {"src"=>"#{request.base_url}" + image.file.url,"description"=>image.description.to_s,"description_text"=>image.description_text }}
|
||||||
anns.tags.each do |tag|
|
anns.tags.each do |tag|
|
||||||
if !tag_ids.include?(tag.id.to_s)
|
if !tag_ids.include?(tag.id.to_s)
|
||||||
tag_ids << tag.id.to_s
|
tag_ids << tag.id.to_s
|
||||||
tag_names << {"name_translations" => tag.name_translations}
|
tag_names << {"name_translations" => tag.name_translations}
|
||||||
end
|
end
|
||||||
a["tags"] << {"name_translations" => tag.name_translations}
|
a["tags"] << {"name_translations" => tag.name_translations}
|
||||||
end
|
end
|
||||||
cat = anns.category
|
cat = anns.category
|
||||||
if (!category_ids.include?(cat.id.to_s) rescue false)
|
if (!category_ids.include?(cat.id.to_s) rescue false)
|
||||||
category_ids << cat.id.to_s
|
category_ids << cat.id.to_s
|
||||||
category_titles << {"title_translations" => cat.title_translations}
|
category_titles << {"title_translations" => cat.title_translations}
|
||||||
end
|
end
|
||||||
a["category"] = {"title_translations" => (cat.title_translations rescue {})}
|
a["category"] = {"title_translations" => (cat.title_translations rescue {})}
|
||||||
anns.event_news_links.each do |bl|
|
anns.event_news_links.each do |bl|
|
||||||
b = {}
|
b = {}
|
||||||
b["url"] = bl.url
|
b["url"] = bl.url
|
||||||
b["title_translations"] = bl.title_translations
|
b["title_translations"] = bl.title_translations
|
||||||
b["link_url"] = b["url"]
|
b["link_url"] = b["url"]
|
||||||
b["link_title_translations"] = bl.title_translations.map{|k,v| [k,(v.blank? ? File.basename(b["url"]) : v rescue '')]}.to_h
|
b["link_title_translations"] = bl.title_translations.map{|k,v| [k,(v.blank? ? File.basename(b["url"]) : v rescue '')]}.to_h
|
||||||
a["event_news_links"] << b
|
a["event_news_links"] << b
|
||||||
end
|
end
|
||||||
anns.event_news_files.each do |bf|
|
anns.event_news_files.each do |bf|
|
||||||
b = {}
|
b = {}
|
||||||
b["description_translations"] = bf.description_translations
|
b["description_translations"] = bf.description_translations
|
||||||
b["title_translations"] = bf.title_translations
|
b["title_translations"] = bf.title_translations
|
||||||
b["url"] = ("#{request.base_url}" + bf.file.url rescue "")
|
b["url"] = ("#{request.base_url}" + bf.file.url rescue "")
|
||||||
b["file_url"] = b["url"]
|
b["file_url"] = b["url"]
|
||||||
b["file_title_translations"] = bf.title_translations.map{|k,v| [k,(v.blank? ? File.basename(b["url"]) : v rescue '')]}.to_h
|
b["file_title_translations"] = bf.title_translations.map{|k,v| [k,(v.blank? ? File.basename(b["url"]) : v rescue '')]}.to_h
|
||||||
a["event_news_files"] << b
|
a["event_news_files"] << b
|
||||||
end
|
end
|
||||||
all_anns << a
|
all_anns << a
|
||||||
end
|
end
|
||||||
{
|
{
|
||||||
"event_news" => all_anns,
|
"event_news" => all_anns,
|
||||||
"tags" => tag_names,
|
"tags" => tag_names,
|
||||||
"categories" => category_titles
|
"categories" => category_titles
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,129 +1,129 @@
|
||||||
# encoding: utf-8
|
# encoding: utf-8
|
||||||
class EventNewsModuleController < ApplicationController
|
class EventNewsModuleController < ApplicationController
|
||||||
before_filter :set_I18n
|
before_filter :set_I18n
|
||||||
|
|
||||||
def get_event_news
|
def get_event_news
|
||||||
page = Page.where(:module => "event_news").first rescue nil
|
page = Page.where(:module => "event_news").first rescue nil
|
||||||
|
|
||||||
# 頁次
|
# 頁次
|
||||||
page_num = params[:page_num].blank? ? 0 : params[:page_num].to_i
|
page_num = params[:page_num].blank? ? 0 : params[:page_num].to_i
|
||||||
# 每頁顯示的則數
|
# 每頁顯示的則數
|
||||||
per_page = params[:per_page].blank? ? 10 : params[:per_page].to_i
|
per_page = params[:per_page].blank? ? 10 : params[:per_page].to_i
|
||||||
per_page = per_page > 0 ? per_page : 10
|
per_page = per_page > 0 ? per_page : 10
|
||||||
|
|
||||||
I18n.locale = :zh_tw
|
I18n.locale = :zh_tw
|
||||||
if !params[:keyword].blank?
|
if !params[:keyword].blank?
|
||||||
keyword = Regexp.new(".*"+params[:keyword]+".*")
|
keyword = Regexp.new(".*"+params[:keyword]+".*")
|
||||||
event_news = EventNews.any_of({:title=>keyword},{:subtitle=>keyword},{:text=>keyword})
|
event_news = EventNews.any_of({:title=>keyword},{:subtitle=>keyword},{:text=>keyword})
|
||||||
else
|
else
|
||||||
event_news = EventNews.all
|
event_news = EventNews.all
|
||||||
end
|
end
|
||||||
|
|
||||||
if !params[:category].blank?
|
if !params[:category].blank?
|
||||||
module_id = ModuleApp.where(:key=>"event_news").first.id
|
module_id = ModuleApp.where(:key=>"event_news").first.id
|
||||||
category = Regexp.new(".*"+params[:category]+".*")
|
category = Regexp.new(".*"+params[:category]+".*")
|
||||||
category_id = Category.where(:title => category, :module_app_id => module_id).first.id
|
category_id = Category.where(:title => category, :module_app_id => module_id).first.id
|
||||||
event_news = event_news.where(:category_id => category_id)
|
event_news = event_news.where(:category_id => category_id)
|
||||||
else
|
else
|
||||||
event_news = event_news
|
event_news = event_news
|
||||||
end
|
end
|
||||||
|
|
||||||
event_news = event_news.where(:is_preview.in=>[false,nil])
|
event_news = event_news.where(:is_preview.in=>[false,nil])
|
||||||
event_news = event_news.where(:approved.ne => false , :rejected.ne => true)
|
event_news = event_news.where(:approved.ne => false , :rejected.ne => true)
|
||||||
event_news = event_news.where(:postdate.lt=>Time.now)
|
event_news = event_news.where(:postdate.lt=>Time.now)
|
||||||
event_news = event_news.desc( :is_top, :postdate).page(page_num).per(per_page)
|
event_news = event_news.desc( :is_top, :postdate).page(page_num).per(per_page)
|
||||||
|
|
||||||
event_news = event_news.collect do |b|
|
event_news = event_news.collect do |b|
|
||||||
image = request.protocol + request.host_with_port + b.image.url rescue nil
|
image = request.protocol + request.host_with_port + b.image.url rescue nil
|
||||||
|
|
||||||
links = b.event_news_links.collect do |bl|
|
links = b.event_news_links.collect do |bl|
|
||||||
{
|
{
|
||||||
"title" => bl.title_translations,
|
"title" => bl.title_translations,
|
||||||
"url" => bl.url
|
"url" => bl.url
|
||||||
}
|
}
|
||||||
end rescue nil
|
end rescue nil
|
||||||
|
|
||||||
files = b.event_news_files.collect do |bf|
|
files = b.event_news_files.collect do |bf|
|
||||||
file = request.protocol + request.host_with_port + bf.file.url rescue nil
|
file = request.protocol + request.host_with_port + bf.file.url rescue nil
|
||||||
{
|
{
|
||||||
"title" => bf.title_translations,
|
"title" => bf.title_translations,
|
||||||
"description" => bf.description_translations,
|
"description" => bf.description_translations,
|
||||||
"file" => file
|
"file" => file
|
||||||
}
|
}
|
||||||
end rescue nil
|
end rescue nil
|
||||||
|
|
||||||
ts = b.tags.collect do |t|
|
ts = b.tags.collect do |t|
|
||||||
{
|
{
|
||||||
"name" => t.name_translations
|
"name" => t.name_translations
|
||||||
}
|
}
|
||||||
end rescue nil
|
end rescue nil
|
||||||
|
|
||||||
text = {"en" => "", "zh_tw" => ""}
|
text = {"en" => "", "zh_tw" => ""}
|
||||||
text["en"] = (b.text_translations["en"].nil? ? "" :smart_convertor(b.text_translations["en"]))
|
text["en"] = (b.text_translations["en"].nil? ? "" :smart_convertor(b.text_translations["en"]))
|
||||||
text["zh_tw"] = (b.text_translations["zh_tw"].nil? ? "" : smart_convertor(b.text_translations["zh_tw"]))
|
text["zh_tw"] = (b.text_translations["zh_tw"].nil? ? "" : smart_convertor(b.text_translations["zh_tw"]))
|
||||||
|
|
||||||
author = User.find(b.create_user_id).member_profile.name rescue ""
|
author = User.find(b.create_user_id).member_profile.name rescue ""
|
||||||
|
|
||||||
{
|
{
|
||||||
"id" => b.id.to_s,
|
"id" => b.id.to_s,
|
||||||
"title" => b.title_translations,
|
"title" => b.title_translations,
|
||||||
"subtitle" => b.subtitle_translations,
|
"subtitle" => b.subtitle_translations,
|
||||||
"text" => text,
|
"text" => text,
|
||||||
"postdate" => b.postdate,
|
"postdate" => b.postdate,
|
||||||
"deadline" => b.deadline,
|
"deadline" => b.deadline,
|
||||||
"category" => b.category.title_translations,
|
"category" => b.category.title_translations,
|
||||||
"tags" => ts,
|
"tags" => ts,
|
||||||
"image" => image,
|
"image" => image,
|
||||||
"links" => links,
|
"links" => links,
|
||||||
"files" => files,
|
"files" => files,
|
||||||
"author" => author,
|
"author" => author,
|
||||||
"url" => "/#{I18n.locale.to_s + page.url}/#{b.to_param}"
|
"url" => "/#{I18n.locale.to_s + page.url}/#{b.to_param}"
|
||||||
}
|
}
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# 計算總筆數 Start
|
# 計算總筆數 Start
|
||||||
if !params[:keyword].blank?
|
if !params[:keyword].blank?
|
||||||
keyword = Regexp.new(".*"+params[:keyword]+".*")
|
keyword = Regexp.new(".*"+params[:keyword]+".*")
|
||||||
event_news = EventNews.any_of({:title=>keyword},{:subtitle=>keyword},{:text=>keyword})
|
event_news = EventNews.any_of({:title=>keyword},{:subtitle=>keyword},{:text=>keyword})
|
||||||
else
|
else
|
||||||
event_news = EventNews.all
|
event_news = EventNews.all
|
||||||
end
|
end
|
||||||
event_news = event_news.where(:is_preview.in=>[false,nil])
|
event_news = event_news.where(:is_preview.in=>[false,nil])
|
||||||
event_news = event_news.where(:approved.ne => false , :rejected.ne => true)
|
event_news = event_news.where(:approved.ne => false , :rejected.ne => true)
|
||||||
event_news = event_news.where(:postdate.lt=>Time.now)
|
event_news = event_news.where(:postdate.lt=>Time.now)
|
||||||
total_pages = event_news.count
|
total_pages = event_news.count
|
||||||
# End
|
# End
|
||||||
|
|
||||||
render :json => {
|
render :json => {
|
||||||
"event_news" => event_news,
|
"event_news" => event_news,
|
||||||
"event_news_count" => event_news.count,
|
"event_news_count" => event_news.count,
|
||||||
"page_num" => page_num,
|
"page_num" => page_num,
|
||||||
"total_pages" => total_pages,
|
"total_pages" => total_pages,
|
||||||
}.to_json
|
}.to_json
|
||||||
end
|
end
|
||||||
|
|
||||||
def smart_convertor(text)
|
def smart_convertor(text)
|
||||||
html_string = text
|
html_string = text
|
||||||
links = html_string.scan(/img.*?src="(.*?)"/i)
|
links = html_string.scan(/img.*?src="(.*?)"/i)
|
||||||
links.each do |link|
|
links.each do |link|
|
||||||
l = link.first
|
l = link.first
|
||||||
new_link = nil
|
new_link = nil
|
||||||
if l.starts_with?("/")
|
if l.starts_with?("/")
|
||||||
new_link = request.protocol + request.host_with_port + l
|
new_link = request.protocol + request.host_with_port + l
|
||||||
elsif l.starts_with?("..")
|
elsif l.starts_with?("..")
|
||||||
l1 = l.gsub("../","")
|
l1 = l.gsub("../","")
|
||||||
new_link = request.protocol + request.host_with_port + "/" + l1
|
new_link = request.protocol + request.host_with_port + "/" + l1
|
||||||
end
|
end
|
||||||
html_string = html_string.sub(l,new_link) if !new_link.nil?
|
html_string = html_string.sub(l,new_link) if !new_link.nil?
|
||||||
end
|
end
|
||||||
return html_string
|
return html_string
|
||||||
end
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def set_I18n
|
def set_I18n
|
||||||
I18n.locale = params[:lang] if params[:lang].present?
|
I18n.locale = params[:lang] if params[:lang].present?
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,424 +1,424 @@
|
||||||
require "net/http"
|
require "net/http"
|
||||||
require "uri"
|
require "uri"
|
||||||
require 'json'
|
require 'json'
|
||||||
|
|
||||||
module Admin::EventNewsHelper
|
module Admin::EventNewsHelper
|
||||||
module FormHelper
|
module FormHelper
|
||||||
extend self
|
extend self
|
||||||
extend ActionView::Helpers::FormTagHelper
|
extend ActionView::Helpers::FormTagHelper
|
||||||
extend ActionView::Helpers::FormOptionsHelper
|
extend ActionView::Helpers::FormOptionsHelper
|
||||||
extend ActionView::Helpers::DateHelper
|
extend ActionView::Helpers::DateHelper
|
||||||
extend ActionView::Helpers::TagHelper
|
extend ActionView::Helpers::TagHelper
|
||||||
extend ActionView::Helpers::RenderingHelper
|
extend ActionView::Helpers::RenderingHelper
|
||||||
extend ActionView::Context
|
extend ActionView::Context
|
||||||
extend OrbitBasis::RenderAnywhere
|
extend OrbitBasis::RenderAnywhere
|
||||||
extend ActionView::Helpers::UrlHelper
|
extend ActionView::Helpers::UrlHelper
|
||||||
extend OrbitFormHelper
|
extend OrbitFormHelper
|
||||||
extend Ckeditor::Helpers::FormHelper
|
extend Ckeditor::Helpers::FormHelper
|
||||||
def available_locales
|
def available_locales
|
||||||
@available_locales = @available_locales || Site.first.in_use_locales || I18n.available_locales
|
@available_locales = @available_locales || Site.first.in_use_locales || I18n.available_locales
|
||||||
end
|
end
|
||||||
def set_input_name(input_name)
|
def set_input_name(input_name)
|
||||||
@input_name = input_name
|
@input_name = input_name
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_input_name
|
def get_input_name
|
||||||
@input_name.to_s
|
@input_name.to_s
|
||||||
end
|
end
|
||||||
def create_lang_panel(field)
|
def create_lang_panel(field)
|
||||||
tmp2 = content_tag(:div,:class => 'btn-group', :data=>{:toggle=>"buttons-radio"}) do
|
tmp2 = content_tag(:div,:class => 'btn-group', :data=>{:toggle=>"buttons-radio"}) do
|
||||||
available_locales.collect do |key|
|
available_locales.collect do |key|
|
||||||
link_entry_ary = ["##{field}","_#{key}"]
|
link_entry_ary = ["##{field}","_#{key}"]
|
||||||
link_entry = link_entry_ary.join
|
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)
|
link_to(I18n.t(key),link_entry,:data=>{:toggle=>"tab"},:class=>"btn #{(key == I18n.locale ? "active" : nil)}",:for=>key)
|
||||||
end.join.html_safe
|
end.join.html_safe
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
def multiple_lang_tag(index1,type_of_tag,field,value=nil,custom_options={},combine_element='',exteral_options={},sortable=false)
|
def multiple_lang_tag(index1,type_of_tag,field,value=nil,custom_options={},combine_element='',exteral_options={},sortable=false)
|
||||||
if !index1.nil?
|
if !index1.nil?
|
||||||
all_field = (get_input_name + "[#{index1}][#{field}][parant]").gsub(/\[/,'_').gsub(/\]/,'')
|
all_field = (get_input_name + "[#{index1}][#{field}][parant]").gsub(/\[/,'_').gsub(/\]/,'')
|
||||||
else
|
else
|
||||||
all_field = (get_input_name + "[#{field}][parant]").gsub(/\[/,'_').gsub(/\]/,'')
|
all_field = (get_input_name + "[#{field}][parant]").gsub(/\[/,'_').gsub(/\]/,'')
|
||||||
end
|
end
|
||||||
tmp = (available_locales.collect do |locale|
|
tmp = (available_locales.collect do |locale|
|
||||||
active_flag = ((locale == I18n.locale) ? ' in active' : '')
|
active_flag = ((locale == I18n.locale) ? ' in active' : '')
|
||||||
content_tag(:div,:class => "tab-content fade#{active_flag}",:id=>"#{all_field}_#{locale}") do
|
content_tag(:div,:class => "tab-content fade#{active_flag}",:id=>"#{all_field}_#{locale}") do
|
||||||
value_locale = value[locale.to_s] rescue nil
|
value_locale = value[locale.to_s] rescue nil
|
||||||
if !index1.nil?
|
if !index1.nil?
|
||||||
self.__send__("#{type_of_tag}_tag","#{get_input_name}[#{index1}][#{field}][#{locale}]",value_locale,custom_options)
|
self.__send__("#{type_of_tag}_tag","#{get_input_name}[#{index1}][#{field}][#{locale}]",value_locale,custom_options)
|
||||||
else
|
else
|
||||||
self.__send__("#{type_of_tag}_tag","#{get_input_name}[#{field}][#{locale}]",value_locale,custom_options)
|
self.__send__("#{type_of_tag}_tag","#{get_input_name}[#{field}][#{locale}]",value_locale,custom_options)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end.join + create_lang_panel(all_field)).html_safe + combine_element
|
end.join + create_lang_panel(all_field)).html_safe + combine_element
|
||||||
|
|
||||||
if sortable
|
if sortable
|
||||||
if exteral_options['style'].nil?
|
if exteral_options['style'].nil?
|
||||||
exteral_options['style'] = 'display: flex;align-items: center;flex-wrap: nowrap;'
|
exteral_options['style'] = 'display: flex;align-items: center;flex-wrap: nowrap;'
|
||||||
else
|
else
|
||||||
exteral_options['style'] = exteral_options['style'] + 'display: flex;align-items: center;flex-wrap: nowrap;'
|
exteral_options['style'] = exteral_options['style'] + 'display: flex;align-items: center;flex-wrap: nowrap;'
|
||||||
end
|
end
|
||||||
content_tag(:div,{:class => "tab-panel border"}.merge(exteral_options)) do
|
content_tag(:div,{:class => "tab-panel border"}.merge(exteral_options)) do
|
||||||
("<i class=\"icons-list-2\" style=\"cursor: grab;font-size: x-large;\"></i>" +content_tag(:div) do
|
("<i class=\"icons-list-2\" style=\"cursor: grab;font-size: x-large;\"></i>" +content_tag(:div) do
|
||||||
tmp
|
tmp
|
||||||
end).html_safe
|
end).html_safe
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
content_tag(:div,{:class => "tab-panel"}.merge(exteral_options)) do
|
content_tag(:div,{:class => "tab-panel"}.merge(exteral_options)) do
|
||||||
tmp
|
tmp
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.thead(field,center=false,enable_sort=true)
|
def self.thead(field,center=false,enable_sort=true)
|
||||||
sort = field.to_s.include?('.') ? field.to_s.split('.')[1] : field.to_s
|
sort = field.to_s.include?('.') ? field.to_s.split('.')[1] : field.to_s
|
||||||
active = OrbitHelper.params[:sort].eql? sort
|
active = OrbitHelper.params[:sort].eql? sort
|
||||||
order = active ? (["asc", "desc"]-[OrbitHelper.params[:order]]).first : "asc"
|
order = active ? (["asc", "desc"]-[OrbitHelper.params[:order]]).first : "asc"
|
||||||
arrow = (order.eql? "desc") ? "<b class='icons-arrow-up-3'></b>" : "<b class='icons-arrow-down-4'></b>"
|
arrow = (order.eql? "desc") ? "<b class='icons-arrow-up-3'></b>" : "<b class='icons-arrow-down-4'></b>"
|
||||||
klass = field.eql?(:title) ? "span5" : "span2"
|
klass = field.eql?(:title) ? "span5" : "span2"
|
||||||
th_data = (sort=="preview" || !enable_sort) ? EventNewsCustomTitle.get_trans(field) : "<a href='?sort=#{sort}&order=#{order}'>#{EventNewsCustomTitle.get_trans(field)} #{active ? arrow : ""}</a>"
|
th_data = (sort=="preview" || !enable_sort) ? EventNewsCustomTitle.get_trans(field) : "<a href='?sort=#{sort}&order=#{order}'>#{EventNewsCustomTitle.get_trans(field)} #{active ? arrow : ""}</a>"
|
||||||
"<th class='#{klass} #{active ? "active" : ""}' style='#{center ? "text-align:center" : ""}'>#{th_data}</th>".html_safe
|
"<th class='#{klass} #{active ? "active" : ""}' style='#{center ? "text-align:center" : ""}'>#{th_data}</th>".html_safe
|
||||||
end
|
end
|
||||||
|
|
||||||
def page_for_event_news(event_news)
|
def page_for_event_news(event_news)
|
||||||
ann_page = nil
|
ann_page = nil
|
||||||
pages = Page.where(:module=>'event_news')
|
pages = Page.where(:module=>'event_news')
|
||||||
|
|
||||||
pages.each do |page|
|
pages.each do |page|
|
||||||
if page.categories.count ==1
|
if page.categories.count ==1
|
||||||
if page.categories.include?(event_news.category.id.to_s)
|
if page.categories.include?(event_news.category.id.to_s)
|
||||||
ann_page = page
|
ann_page = page
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
break if !ann_page.nil?
|
break if !ann_page.nil?
|
||||||
end
|
end
|
||||||
|
|
||||||
if ann_page.nil?
|
if ann_page.nil?
|
||||||
pages.each do |page|
|
pages.each do |page|
|
||||||
if page.categories.include?(event_news.category.id.to_s)
|
if page.categories.include?(event_news.category.id.to_s)
|
||||||
ann_page = page
|
ann_page = page
|
||||||
end
|
end
|
||||||
break if !ann_page.nil?
|
break if !ann_page.nil?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
ann_page = pages.first if ann_page.nil?
|
ann_page = pages.first if ann_page.nil?
|
||||||
request.protocol+(request.host_with_port+ann_page.url+'/'+event_news.to_param).gsub('//','/') rescue "/"
|
request.protocol+(request.host_with_port+ann_page.url+'/'+event_news.to_param).gsub('//','/') rescue "/"
|
||||||
end
|
end
|
||||||
|
|
||||||
def import_this_event_news(row,categories,tags)
|
def import_this_event_news(row,categories,tags)
|
||||||
value = {}
|
value = {}
|
||||||
anns = EventNews.new
|
anns = EventNews.new
|
||||||
row.cells.each_with_index do |cell,index|
|
row.cells.each_with_index do |cell,index|
|
||||||
val = cell.nil? ? nil : cell.value
|
val = cell.nil? ? nil : cell.value
|
||||||
next if val.nil? || val == ""
|
next if val.nil? || val == ""
|
||||||
case index
|
case index
|
||||||
when 0
|
when 0
|
||||||
anns.category = categories[val.to_i]
|
anns.category = categories[val.to_i]
|
||||||
when 1
|
when 1
|
||||||
new_tags = []
|
new_tags = []
|
||||||
if (val.include?(",") rescue false)
|
if (val.include?(",") rescue false)
|
||||||
ts = val.split(",")
|
ts = val.split(",")
|
||||||
ts.each do |t|
|
ts.each do |t|
|
||||||
new_tags << tags[t.to_i]
|
new_tags << tags[t.to_i]
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
new_tags << tags[val.to_i]
|
new_tags << tags[val.to_i]
|
||||||
end
|
end
|
||||||
anns.tags=new_tags
|
anns.tags=new_tags
|
||||||
when 2
|
when 2
|
||||||
anns.event_date = val
|
anns.event_date = val
|
||||||
when 3
|
when 3
|
||||||
anns.postdate = val
|
anns.postdate = val
|
||||||
when 4
|
when 4
|
||||||
anns.deadline = val
|
anns.deadline = val
|
||||||
when 5
|
when 5
|
||||||
anns.is_top = (val.to_i == 1 ? true : false)
|
anns.is_top = (val.to_i == 1 ? true : false)
|
||||||
when 6
|
when 6
|
||||||
anns.is_hot = (val.to_i == 1 ? true : false)
|
anns.is_hot = (val.to_i == 1 ? true : false)
|
||||||
when 7
|
when 7
|
||||||
anns.is_hidden = (val.to_i == 1 ? true : false)
|
anns.is_hidden = (val.to_i == 1 ? true : false)
|
||||||
when 8
|
when 8
|
||||||
anns.remote_image_url = val
|
anns.remote_image_url = val
|
||||||
when 9
|
when 9
|
||||||
value["en"] = val
|
value["en"] = val
|
||||||
anns.image_description_translations = value.clone
|
anns.image_description_translations = value.clone
|
||||||
when 10
|
when 10
|
||||||
value["zh_tw"] = val
|
value["zh_tw"] = val
|
||||||
anns.image_description_translations = value.clone
|
anns.image_description_translations = value.clone
|
||||||
value = {}
|
value = {}
|
||||||
when 11
|
when 11
|
||||||
value["en"] = val
|
value["en"] = val
|
||||||
anns.title_translations = value.clone
|
anns.title_translations = value.clone
|
||||||
when 12
|
when 12
|
||||||
value["zh_tw"] = val
|
value["zh_tw"] = val
|
||||||
anns.title_translations = value.clone
|
anns.title_translations = value.clone
|
||||||
value = {}
|
value = {}
|
||||||
when 13
|
when 13
|
||||||
value["en"] = val
|
value["en"] = val
|
||||||
anns.speaker_translations = value.clone
|
anns.speaker_translations = value.clone
|
||||||
when 14
|
when 14
|
||||||
value["zh_tw"] = val
|
value["zh_tw"] = val
|
||||||
anns.speaker_translations = value.clone
|
anns.speaker_translations = value.clone
|
||||||
value = {}
|
value = {}
|
||||||
when 15
|
when 15
|
||||||
value["en"] = val
|
value["en"] = val
|
||||||
anns.host_translations = value.clone
|
anns.host_translations = value.clone
|
||||||
when 16
|
when 16
|
||||||
value["zh_tw"] = val
|
value["zh_tw"] = val
|
||||||
anns.host_translations = value.clone
|
anns.host_translations = value.clone
|
||||||
value = {}
|
value = {}
|
||||||
when 17
|
when 17
|
||||||
value["en"] = val
|
value["en"] = val
|
||||||
anns.subtitle_translations = value.clone
|
anns.subtitle_translations = value.clone
|
||||||
when 18
|
when 18
|
||||||
value["zh_tw"] = val
|
value["zh_tw"] = val
|
||||||
anns.subtitle_translations = value.clone
|
anns.subtitle_translations = value.clone
|
||||||
value = {}
|
value = {}
|
||||||
when 19
|
when 19
|
||||||
value["en"] = val
|
value["en"] = val
|
||||||
anns.text_translations = value.clone
|
anns.text_translations = value.clone
|
||||||
when 20
|
when 20
|
||||||
value["zh_tw"] = val
|
value["zh_tw"] = val
|
||||||
anns.text_translations = value.clone
|
anns.text_translations = value.clone
|
||||||
value = {}
|
value = {}
|
||||||
when 21
|
when 21
|
||||||
value["en"] = val
|
value["en"] = val
|
||||||
anns.notes_translations = value.clone
|
anns.notes_translations = value.clone
|
||||||
when 22
|
when 22
|
||||||
value["zh_tw"] = val
|
value["zh_tw"] = val
|
||||||
anns.notes_translations = value.clone
|
anns.notes_translations = value.clone
|
||||||
value = {}
|
value = {}
|
||||||
when 23
|
when 23
|
||||||
links = val.split(";") rescue []
|
links = val.split(";") rescue []
|
||||||
desc_en = row.cells[24].value.split(";") rescue []
|
desc_en = row.cells[24].value.split(";") rescue []
|
||||||
desc_zh_tw = row.cells[25].value.split(";") rescue []
|
desc_zh_tw = row.cells[25].value.split(";") rescue []
|
||||||
links.each_with_index do |link,i|
|
links.each_with_index do |link,i|
|
||||||
bl = EventNewsLink.new
|
bl = EventNewsLink.new
|
||||||
bl.url = link.strip
|
bl.url = link.strip
|
||||||
bl.title_translations = {"en" => desc_en[i], "zh_tw" => desc_zh_tw[i]}
|
bl.title_translations = {"en" => desc_en[i], "zh_tw" => desc_zh_tw[i]}
|
||||||
bl.event_news_id = anns.id
|
bl.event_news_id = anns.id
|
||||||
bl.save
|
bl.save
|
||||||
end
|
end
|
||||||
when 26
|
when 26
|
||||||
files = val.split(";") rescue []
|
files = val.split(";") rescue []
|
||||||
desc_en = row.cells[27].value.split(";") rescue []
|
desc_en = row.cells[27].value.split(";") rescue []
|
||||||
desc_zh_tw = row.cells[28].value.split(";") rescue []
|
desc_zh_tw = row.cells[28].value.split(";") rescue []
|
||||||
alt_en = row.cells[29].value.split(";") rescue []
|
alt_en = row.cells[29].value.split(";") rescue []
|
||||||
alt_zh_tw = row.cells[30].value.split(";") rescue []
|
alt_zh_tw = row.cells[30].value.split(";") rescue []
|
||||||
files.each_with_index do |file, i|
|
files.each_with_index do |file, i|
|
||||||
bf = EventNewsFile.new
|
bf = EventNewsFile.new
|
||||||
bf.remote_file_url = file.strip rescue nil
|
bf.remote_file_url = file.strip rescue nil
|
||||||
bf.title_translations = {"en" => (alt_en[i] rescue ""), "zh_tw" => (alt_zh_tw[i] rescue "")}
|
bf.title_translations = {"en" => (alt_en[i] rescue ""), "zh_tw" => (alt_zh_tw[i] rescue "")}
|
||||||
bf.description_translations = {"en" => (desc_en[i] rescue ""), "zh_tw" => (desc_zh_tw[i] rescue "")}
|
bf.description_translations = {"en" => (desc_en[i] rescue ""), "zh_tw" => (desc_zh_tw[i] rescue "")}
|
||||||
bf.event_news_id = anns.id
|
bf.event_news_id = anns.id
|
||||||
bf.save
|
bf.save
|
||||||
end
|
end
|
||||||
when 31
|
when 31
|
||||||
value["en"] = val
|
value["en"] = val
|
||||||
anns.place_translations = value.clone
|
anns.place_translations = value.clone
|
||||||
when 32
|
when 32
|
||||||
value["zh_tw"] = val
|
value["zh_tw"] = val
|
||||||
anns.place_translations = value.clone
|
anns.place_translations = value.clone
|
||||||
value = {}
|
value = {}
|
||||||
when 33
|
when 33
|
||||||
anns.event_end_date = val
|
anns.event_end_date = val
|
||||||
when 34
|
when 34
|
||||||
carousel_images = val.split(";") rescue []
|
carousel_images = val.split(";") rescue []
|
||||||
desc_en = row.cells[35].value.split(";") rescue []
|
desc_en = row.cells[35].value.split(";") rescue []
|
||||||
desc_zh_tw = row.cells[36].value.split(";") rescue []
|
desc_zh_tw = row.cells[36].value.split(";") rescue []
|
||||||
carousel_images.each_with_index do |image, i|
|
carousel_images.each_with_index do |image, i|
|
||||||
bc = EventCarouselImage.new
|
bc = EventCarouselImage.new
|
||||||
bc.remote_file_url = image.strip rescue nil
|
bc.remote_file_url = image.strip rescue nil
|
||||||
bc.description_translations = {"en" => (desc_en[i] rescue ""), "zh_tw" => (desc_zh_tw[i] rescue "")}
|
bc.description_translations = {"en" => (desc_en[i] rescue ""), "zh_tw" => (desc_zh_tw[i] rescue "")}
|
||||||
bc.event_news_id = anns.id
|
bc.event_news_id = anns.id
|
||||||
bc.save
|
bc.save
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
anns.create_user_id = current_user.id.to_s
|
anns.create_user_id = current_user.id.to_s
|
||||||
anns.update_user_id = current_user.id.to_s
|
anns.update_user_id = current_user.id.to_s
|
||||||
anns.approved = true
|
anns.approved = true
|
||||||
anns.save
|
anns.save
|
||||||
end
|
end
|
||||||
|
|
||||||
def send_rejection_email(event_news,locale)
|
def send_rejection_email(event_news,locale)
|
||||||
user = User.find(event_news.create_user_id) rescue nil
|
user = User.find(event_news.create_user_id) rescue nil
|
||||||
if !user.nil?
|
if !user.nil?
|
||||||
email = user.member_profile.email
|
email = user.member_profile.email
|
||||||
if !email.nil? && email != ""
|
if !email.nil? && email != ""
|
||||||
url = "http://#{request.host_with_port}/admin/event_news/#{event_news.id}/edit"
|
url = "http://#{request.host_with_port}/admin/event_news/#{event_news.id}/edit"
|
||||||
datatosend = "<h3>Hello #{user.name},</h3><p>#{current_user.name} #{t("event_news.rejected_event_news")} : #{event_news.rejection_reason} <a href='#{url}'> #{t("event_news.click_here_to_see")}</a></p>"
|
datatosend = "<h3>Hello #{user.name},</h3><p>#{current_user.name} #{t("event_news.rejected_event_news")} : #{event_news.rejection_reason} <a href='#{url}'> #{t("event_news.click_here_to_see")}</a></p>"
|
||||||
mail = Email.new(:mail_to => email, :mail_subject => "EventNews rejected公告未通過 : #{event_news.title_translations[locale]}.", :template => "email/event_news_email.html.erb", :template_data => {"html" => datatosend})
|
mail = Email.new(:mail_to => email, :mail_subject => "EventNews rejected公告未通過 : #{event_news.title_translations[locale]}.", :template => "email/event_news_email.html.erb", :template_data => {"html" => datatosend})
|
||||||
mail.save
|
mail.save
|
||||||
mail.deliver rescue nil
|
mail.deliver rescue nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def send_notification_mail_to_managers(event_news, type, locale)
|
def send_notification_mail_to_managers(event_news, type, locale)
|
||||||
users = []
|
users = []
|
||||||
if @event_news_setting.email_to.include?("managers")
|
if @event_news_setting.email_to.include?("managers")
|
||||||
authorizations = Authorization.where(:module_app_id => @module_app.id)
|
authorizations = Authorization.where(:module_app_id => @module_app.id)
|
||||||
users = authorizations.collect do |auth|
|
users = authorizations.collect do |auth|
|
||||||
auth.user
|
auth.user
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if @event_news_setting.email_to.include?("admins")
|
if @event_news_setting.email_to.include?("admins")
|
||||||
wg = Workgroup.where(:key => "admin").first
|
wg = Workgroup.where(:key => "admin").first
|
||||||
admins = User.where(:workgroup_id => wg.id)
|
admins = User.where(:workgroup_id => wg.id)
|
||||||
users.delete(nil)
|
users.delete(nil)
|
||||||
users = users.concat(admins.to_a)
|
users = users.concat(admins.to_a)
|
||||||
end
|
end
|
||||||
if @event_news_setting.email_to.include?("approvers")
|
if @event_news_setting.email_to.include?("approvers")
|
||||||
approvers = User.find(@event_news_setting.approvers).to_a rescue []
|
approvers = User.find(@event_news_setting.approvers).to_a rescue []
|
||||||
auths = Authorization.where(:category_id => event_news.category_id).collect{|a| a.user}
|
auths = Authorization.where(:category_id => event_news.category_id).collect{|a| a.user}
|
||||||
users = users.concat(approvers & auths)
|
users = users.concat(approvers & auths)
|
||||||
end
|
end
|
||||||
users.each do |user|
|
users.each do |user|
|
||||||
email = user.member_profile.email
|
email = user.member_profile.email
|
||||||
if !email.nil? && email != ""
|
if !email.nil? && email != ""
|
||||||
send_email(user.name, email, event_news, type, locale)
|
send_email(user.name, email, event_news, type, locale)
|
||||||
# sleep(1)
|
# sleep(1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def send_email(name, useremail, event_news, type, locale)
|
def send_email(name, useremail, event_news, type, locale)
|
||||||
url = "http://#{request.host_with_port}/admin/event_news?url=#{page_for_event_news(event_news).sub("http://" + request.host_with_port, "")}&id=#{event_news.id}"
|
url = "http://#{request.host_with_port}/admin/event_news?url=#{page_for_event_news(event_news).sub("http://" + request.host_with_port, "")}&id=#{event_news.id}"
|
||||||
|
|
||||||
case type
|
case type
|
||||||
when "approval"
|
when "approval"
|
||||||
datatosend = "<h3>#{t("event_news.approval_mail_hi", :name => name)},</h3><p>#{t("event_news.submitted_new_event_news", :poster => current_user.name)}<br /><br />#{t("event_news.approval_event_news_title")} : #{event_news.title_translations[locale]} <br /> #{t("event_news.click_here_to_see")} : <a href='#{url}'> #{url} </a></p>"
|
datatosend = "<h3>#{t("event_news.approval_mail_hi", :name => name)},</h3><p>#{t("event_news.submitted_new_event_news", :poster => current_user.name)}<br /><br />#{t("event_news.approval_event_news_title")} : #{event_news.title_translations[locale]} <br /> #{t("event_news.click_here_to_see")} : <a href='#{url}'> #{url} </a></p>"
|
||||||
when "reapproval"
|
when "reapproval"
|
||||||
datatosend = "<h3>#{t("event_news.approval_mail_hi", :name => name)},</h3><p>#{t("event_news.updated_event_news", :poster => current_user.name)}<br /><br />#{t("event_news.approval_event_news_title")} : #{event_news.title_translations[locale]} <br /> #{t("event_news.click_here_to_see")} : <a href='#{url}'> #{url} </a></p>"
|
datatosend = "<h3>#{t("event_news.approval_mail_hi", :name => name)},</h3><p>#{t("event_news.updated_event_news", :poster => current_user.name)}<br /><br />#{t("event_news.approval_event_news_title")} : #{event_news.title_translations[locale]} <br /> #{t("event_news.click_here_to_see")} : <a href='#{url}'> #{url} </a></p>"
|
||||||
end
|
end
|
||||||
email = Email.new(:mail_to => useremail, :mail_subject => " #{t("event_news.event_news_subject")} : #{event_news.title_translations[locale]}.", :template => "email/event_news_email.html.erb", :template_data => {"html" => datatosend})
|
email = Email.new(:mail_to => useremail, :mail_subject => " #{t("event_news.event_news_subject")} : #{event_news.title_translations[locale]}.", :template => "email/event_news_email.html.erb", :template_data => {"html" => datatosend})
|
||||||
email.save
|
email.save
|
||||||
email.deliver rescue nil
|
email.deliver rescue nil
|
||||||
end
|
end
|
||||||
|
|
||||||
def download_tmp_xml(url)
|
def download_tmp_xml(url)
|
||||||
xml = File.join(Rails.root, "tmp", "ann_cc_ntu.xml")
|
xml = File.join(Rails.root, "tmp", "ann_cc_ntu.xml")
|
||||||
open(xml, 'wb') do |fo|
|
open(xml, 'wb') do |fo|
|
||||||
fo.print open(url).read
|
fo.print open(url).read
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def import_from_tmp_xml(file)
|
def import_from_tmp_xml(file)
|
||||||
xml = Nokogiri::XML(file)
|
xml = Nokogiri::XML(file)
|
||||||
return if xml.nil?
|
return if xml.nil?
|
||||||
event_news = []
|
event_news = []
|
||||||
xml.xpath("//channel").xpath("//item").each do |anns|
|
xml.xpath("//channel").xpath("//item").each do |anns|
|
||||||
event_news << {
|
event_news << {
|
||||||
:title => (anns>"title").text,
|
:title => (anns>"title").text,
|
||||||
:category => (anns>"category").text,
|
:category => (anns>"category").text,
|
||||||
:postdate => (anns>"pubDate").text,
|
:postdate => (anns>"pubDate").text,
|
||||||
:text => (anns>"description").text,
|
:text => (anns>"description").text,
|
||||||
:rss2_sn => (anns>"link").text.split("=").last
|
:rss2_sn => (anns>"link").text.split("=").last
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
event_news.each do |anns|
|
event_news.each do |anns|
|
||||||
ma = ModuleApp.where(:key => "event_news").first
|
ma = ModuleApp.where(:key => "event_news").first
|
||||||
cat = Category.where(:title => anns[:category]).first rescue nil
|
cat = Category.where(:title => anns[:category]).first rescue nil
|
||||||
if cat.nil?
|
if cat.nil?
|
||||||
cat = Category.create(:title_translations => {"en" => anns[:category], "zh_tw" => anns[:category]}, :module_app_id => ma.id)
|
cat = Category.create(:title_translations => {"en" => anns[:category], "zh_tw" => anns[:category]}, :module_app_id => ma.id)
|
||||||
end
|
end
|
||||||
ann = EventNews.where(:rss2_sn => anns[:rss2_sn]).first rescue nil
|
ann = EventNews.where(:rss2_sn => anns[:rss2_sn]).first rescue nil
|
||||||
if ann.nil?
|
if ann.nil?
|
||||||
ann = EventNews.new(:title_translations => {"en" => "", "zh_tw" => anns[:title]}, :postdate => anns[:postdate], :subtitle_translations => {"en" => "", "zh_tw" => anns[:title]}, :text_translations => {"en" => "", "zh_tw" => anns[:text]}, :rss2_sn => anns[:rss2_sn], :category_id => cat.id, :approved => true, :create_user_id => current_user.id)
|
ann = EventNews.new(:title_translations => {"en" => "", "zh_tw" => anns[:title]}, :postdate => anns[:postdate], :subtitle_translations => {"en" => "", "zh_tw" => anns[:title]}, :text_translations => {"en" => "", "zh_tw" => anns[:text]}, :rss2_sn => anns[:rss2_sn], :category_id => cat.id, :approved => true, :create_user_id => current_user.id)
|
||||||
else
|
else
|
||||||
ann.update_attributes(:title_translations => {"en" => "", "zh_tw" => anns[:title]}, :postdate => anns[:postdate], :subtitle_translations => {"en" => "", "zh_tw" => anns[:title]}, :text_translations => {"en" => "", "zh_tw" => anns[:text]})
|
ann.update_attributes(:title_translations => {"en" => "", "zh_tw" => anns[:title]}, :postdate => anns[:postdate], :subtitle_translations => {"en" => "", "zh_tw" => anns[:title]}, :text_translations => {"en" => "", "zh_tw" => anns[:text]})
|
||||||
end
|
end
|
||||||
ann.save
|
ann.save
|
||||||
end
|
end
|
||||||
File.delete(file)
|
File.delete(file)
|
||||||
end
|
end
|
||||||
|
|
||||||
def import_from_wordpress(xmlfile)
|
def import_from_wordpress(xmlfile)
|
||||||
xml_file = File.read(xmlfile)
|
xml_file = File.read(xmlfile)
|
||||||
doc = Nokogiri::XML.parse(xml_file)
|
doc = Nokogiri::XML.parse(xml_file)
|
||||||
|
|
||||||
doc.xpath("//channel").each do|channel_data|
|
doc.xpath("//channel").each do|channel_data|
|
||||||
channel_data.xpath('//item').each do|itme|
|
channel_data.xpath('//item').each do|itme|
|
||||||
|
|
||||||
bu = EventNews.where(:rss2_sn => itme.xpath('wp:post_id').text ).first rescue nil
|
bu = EventNews.where(:rss2_sn => itme.xpath('wp:post_id').text ).first rescue nil
|
||||||
if bu.nil?
|
if bu.nil?
|
||||||
bu = EventNews.new
|
bu = EventNews.new
|
||||||
bu.approved = true
|
bu.approved = true
|
||||||
bu.rss2_sn = itme.xpath('wp:post_id').text
|
bu.rss2_sn = itme.xpath('wp:post_id').text
|
||||||
bu.title_translations = {"en" => itme.xpath('title').text, "zh_tw" => itme.xpath('title').text}
|
bu.title_translations = {"en" => itme.xpath('title').text, "zh_tw" => itme.xpath('title').text}
|
||||||
bu.text_translations = {"en" => itme.xpath('content:encoded').text, "zh_tw" => itme.xpath('content:encoded').text}
|
bu.text_translations = {"en" => itme.xpath('content:encoded').text, "zh_tw" => itme.xpath('content:encoded').text}
|
||||||
bu.postdate = itme.xpath('wp:post_date').text
|
bu.postdate = itme.xpath('wp:post_date').text
|
||||||
|
|
||||||
itme.xpath('category').each do |i_cate|
|
itme.xpath('category').each do |i_cate|
|
||||||
if i_cate["domain"].to_s == "category"
|
if i_cate["domain"].to_s == "category"
|
||||||
|
|
||||||
cat = @module_app.categories.where(:title => i_cate.text.to_s).first rescue nil
|
cat = @module_app.categories.where(:title => i_cate.text.to_s).first rescue nil
|
||||||
if cat.nil?
|
if cat.nil?
|
||||||
cat = Category.new
|
cat = Category.new
|
||||||
cat.module_app = @module_app
|
cat.module_app = @module_app
|
||||||
cat.title_translations = {"en" => i_cate.text.to_s, "zh_tw" => i_cate.text.to_s}
|
cat.title_translations = {"en" => i_cate.text.to_s, "zh_tw" => i_cate.text.to_s}
|
||||||
cat.save
|
cat.save
|
||||||
end
|
end
|
||||||
bu.category = cat
|
bu.category = cat
|
||||||
|
|
||||||
elsif i_cate["domain"].to_s == "post_tag"
|
elsif i_cate["domain"].to_s == "post_tag"
|
||||||
|
|
||||||
tag = Tag.where(:name => i_cate.text.to_s ).first rescue nil
|
tag = Tag.where(:name => i_cate.text.to_s ).first rescue nil
|
||||||
if tag.nil?
|
if tag.nil?
|
||||||
tag = Tag.new
|
tag = Tag.new
|
||||||
tag.name_translations = {"en" => i_cate.text.to_s, "zh_tw" => i_cate.text.to_s}
|
tag.name_translations = {"en" => i_cate.text.to_s, "zh_tw" => i_cate.text.to_s}
|
||||||
tag.module_app_ids << @module_app.id
|
tag.module_app_ids << @module_app.id
|
||||||
tag.save
|
tag.save
|
||||||
end
|
end
|
||||||
|
|
||||||
bu.tags = tag
|
bu.tags = tag
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
bu.save
|
bu.save
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
File.delete(xmlfile)
|
File.delete(xmlfile)
|
||||||
end
|
end
|
||||||
|
|
||||||
def load_access_level
|
def load_access_level
|
||||||
if (current_user.is_admin? rescue false)
|
if (current_user.is_admin? rescue false)
|
||||||
@access_level = "admin"
|
@access_level = "admin"
|
||||||
elsif (current_user.is_manager?(@module_app) rescue false)
|
elsif (current_user.is_manager?(@module_app) rescue false)
|
||||||
@access_level = "manager"
|
@access_level = "manager"
|
||||||
else
|
else
|
||||||
@access_level = "users"
|
@access_level = "users"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def user_can_approve?(anns=nil)
|
def user_can_approve?(anns=nil)
|
||||||
can_approve = false
|
can_approve = false
|
||||||
setting = EventNewsSetting.first
|
setting = EventNewsSetting.first
|
||||||
case @access_level
|
case @access_level
|
||||||
when "admin"
|
when "admin"
|
||||||
can_approve = true
|
can_approve = true
|
||||||
when "manager"
|
when "manager"
|
||||||
can_approve = true
|
can_approve = true
|
||||||
else
|
else
|
||||||
can_approve = false
|
can_approve = false
|
||||||
end
|
end
|
||||||
if !can_approve
|
if !can_approve
|
||||||
if !anns.nil?
|
if !anns.nil?
|
||||||
if setting.approvers.include?(current_user.id.to_s)
|
if setting.approvers.include?(current_user.id.to_s)
|
||||||
if (current_user.approved_categories_for_module(@module_app).include?(anns.category) rescue false)
|
if (current_user.approved_categories_for_module(@module_app).include?(anns.category) rescue false)
|
||||||
can_approve = true
|
can_approve = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
can_approve = setting.approvers.include?(current_user.id.to_s)
|
can_approve = setting.approvers.include?(current_user.id.to_s)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
can_approve
|
can_approve
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -50,8 +50,9 @@ module EventNewsHelper
|
||||||
"speaker-css" => (a.speaker.blank? ? "display: none;" : ""),
|
"speaker-css" => (a.speaker.blank? ? "display: none;" : ""),
|
||||||
"host-css" => (a.host.blank? ? "display: none;" : ""),
|
"host-css" => (a.host.blank? ? "display: none;" : ""),
|
||||||
"place-css" => (a.place.blank? ? "display: none;" : ""),
|
"place-css" => (a.place.blank? ? "display: none;" : ""),
|
||||||
"event-time-formated" => event_time_formated,
|
|
||||||
"event-time-css" => (event_time_formated.blank? ? "display: none;" : ""),
|
"event-time-css" => (event_time_formated.blank? ? "display: none;" : ""),
|
||||||
|
"notes-css" => (a.notes.blank? ? "display: none;" : ""),
|
||||||
|
"event-time-formated" => event_time_formated,
|
||||||
"speaker" => a.speaker,
|
"speaker" => a.speaker,
|
||||||
"place" => a.place,
|
"place" => a.place,
|
||||||
"host" => a.host,
|
"host" => a.host,
|
||||||
|
@ -63,8 +64,8 @@ module EventNewsHelper
|
||||||
"statuses" => statuses,
|
"statuses" => statuses,
|
||||||
"category" => (a.category.title rescue ""),
|
"category" => (a.category.title rescue ""),
|
||||||
"tag_ids" => (set_tag_ids.nil? ? (a.tag_ids.map{|id| id.to_s}.to_s.gsub('"',"'") rescue '[]') : set_tag_ids),
|
"tag_ids" => (set_tag_ids.nil? ? (a.tag_ids.map{|id| id.to_s}.to_s.gsub('"',"'") rescue '[]') : set_tag_ids),
|
||||||
"postdate" => a.event_date,
|
"postdate" => event_time_formated,
|
||||||
"event_date" => a.event_date,
|
"event_date" => event_time_formated,
|
||||||
"author" => author,
|
"author" => author,
|
||||||
"link_to_show" => link_to_show,
|
"link_to_show" => link_to_show,
|
||||||
"target" => target,
|
"target" => target,
|
||||||
|
@ -143,8 +144,9 @@ module EventNewsHelper
|
||||||
"speaker-css" => (fa["speaker_translations"][locale].blank? ? "display: none;" : ""),
|
"speaker-css" => (fa["speaker_translations"][locale].blank? ? "display: none;" : ""),
|
||||||
"host-css" => (fa["host_translations"][locale].blank? ? "display: none;" : ""),
|
"host-css" => (fa["host_translations"][locale].blank? ? "display: none;" : ""),
|
||||||
"place-css" => (fa["place_translations"][locale].blank? ? "display: none;" : ""),
|
"place-css" => (fa["place_translations"][locale].blank? ? "display: none;" : ""),
|
||||||
"event-time-formated" => event_time_formated,
|
|
||||||
"event-time-css" => (event_time_formated.blank? ? "display: none;" : ""),
|
"event-time-css" => (event_time_formated.blank? ? "display: none;" : ""),
|
||||||
|
"notes-css" => (fa["notes_translations"][locale].blank? ? "display: none;" : ""),
|
||||||
|
"event-time-formated" => event_time_formated,
|
||||||
"speaker" => (fa["speaker_translations"][locale].to_s rescue ""),
|
"speaker" => (fa["speaker_translations"][locale].to_s rescue ""),
|
||||||
"place" => (fa["place_translations"][locale].to_s rescue ""),
|
"place" => (fa["place_translations"][locale].to_s rescue ""),
|
||||||
"host" => (fa["host_translations"][locale].to_s rescue ""),
|
"host" => (fa["host_translations"][locale].to_s rescue ""),
|
||||||
|
@ -162,7 +164,7 @@ module EventNewsHelper
|
||||||
"target" => "_self",
|
"target" => "_self",
|
||||||
"img_src" => fa["image"]["thumb"] || "/assets/event_news-default.jpg",
|
"img_src" => fa["image"]["thumb"] || "/assets/event_news-default.jpg",
|
||||||
"img_description" => fa["image_description_translations"][locale],
|
"img_description" => fa["image_description_translations"][locale],
|
||||||
"more" => t(:more_plus),
|
"more" => t("event_news.more"),
|
||||||
"view_count" => ""
|
"view_count" => ""
|
||||||
}
|
}
|
||||||
if (!x["title"].empty? rescue false)
|
if (!x["title"].empty? rescue false)
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
# encoding: utf-8
|
# encoding: utf-8
|
||||||
class EventCarouselImage
|
class EventCarouselImage
|
||||||
|
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
mount_uploader :file, AssetUploader
|
mount_uploader :file, AssetUploader
|
||||||
|
|
||||||
field :description, localize: true
|
field :description, localize: true
|
||||||
|
|
||||||
belongs_to :event_news
|
belongs_to :event_news
|
||||||
def description_text
|
def description_text
|
||||||
Nokogiri::HTML(self.description.to_s).css("body").text() rescue ""
|
Nokogiri::HTML(self.description.to_s).css("body").text() rescue ""
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,283 +1,338 @@
|
||||||
class EventNews
|
class EventNews
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
include OrbitModel::Status
|
include OrbitModel::Status
|
||||||
include OrbitModel::Impression
|
include OrbitModel::Impression
|
||||||
# encoding: utf-8
|
# encoding: utf-8
|
||||||
include OrbitTag::Taggable
|
include OrbitTag::Taggable
|
||||||
include OrbitCategory::Categorizable
|
include OrbitCategory::Categorizable
|
||||||
include Slug
|
include Slug
|
||||||
require 'event_news_model/cache'
|
require 'event_news_model/cache'
|
||||||
include EventNewsModel::Cache
|
include EventNewsModel::Cache
|
||||||
attr_accessor :org_tag_ids
|
attr_accessor :org_tag_ids
|
||||||
def tags=(ids)
|
def tags=(ids)
|
||||||
self.org_tag_ids = self.tag_ids
|
self.org_tag_ids = self.tag_ids
|
||||||
super(ids)
|
super(ids)
|
||||||
end
|
end
|
||||||
def []=(index,value)
|
def []=(index,value)
|
||||||
if index.to_s=='tags'
|
if index.to_s=='tags'
|
||||||
self.org_tag_ids = self.tag_ids
|
self.org_tag_ids = self.tag_ids
|
||||||
end
|
end
|
||||||
super(index,value)
|
super(index,value)
|
||||||
end
|
end
|
||||||
SubPart.class_eval { include EventNewsModel::Cache }
|
SubPart.class_eval { include EventNewsModel::Cache }
|
||||||
Page.class_eval { include EventNewsModel::Cache }
|
Page.class_eval { include EventNewsModel::Cache }
|
||||||
before_destroy do
|
before_destroy do
|
||||||
EventNewsCache.all.destroy
|
EventNewsCache.all.destroy
|
||||||
end
|
end
|
||||||
field :is_edit, type: Boolean, default: false #use to check whether the preview record changed
|
Week_day_trans = {:en=>["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],
|
||||||
field :copy_id
|
:zh_tw=>["(日)","(一)","(二)","(三)","(四)","(五)","(六)"]}
|
||||||
field :custom_carousel_image_width, type: String, default: ""
|
field :event_date_use_default_setting, type: Boolean, default: true
|
||||||
field :image_display_class, type: String, default: "full-size-img" #3 choices: full-size-img , pull-left , pull-right
|
field :including_day_of_the_week, type: Boolean, default: true
|
||||||
field :add_to_calendar,type: Boolean,default: false
|
field :including_time, type: Boolean, default: true
|
||||||
field :calendar_start_date, :type => DateTime
|
field :hour_clock_24, type: Boolean, default: true
|
||||||
field :calendar_end_date, :type => DateTime
|
field :is_edit, type: Boolean, default: false #use to check whether the preview record changed
|
||||||
field :calendar_all_day,type: Boolean,default: false
|
field :copy_id
|
||||||
field :all_day,type: Boolean,default: false
|
field :custom_carousel_image_width, type: String, default: ""
|
||||||
field :calendar_type_id
|
field :image_display_class, type: String, default: "full-size-img" #3 choices: full-size-img , pull-left , pull-right
|
||||||
field :event_id
|
field :add_to_calendar,type: Boolean,default: false
|
||||||
field :place, type: String, localize: true
|
field :calendar_start_date, :type => DateTime
|
||||||
field :title, as: :slug_title, type: String, localize: true
|
field :calendar_end_date, :type => DateTime
|
||||||
field :speaker, type: String, localize: true
|
field :calendar_all_day,type: Boolean,default: false
|
||||||
field :host, type: String, localize: true
|
field :all_day,type: Boolean,default: false #old field
|
||||||
field :subtitle, localize: true
|
field :calendar_type_id
|
||||||
field :text, localize: true, default: ''
|
field :event_id
|
||||||
field :notes, localize: true
|
field :place, type: String, localize: true
|
||||||
field :create_user_id
|
field :title, as: :slug_title, type: String, localize: true
|
||||||
field :update_user_id
|
field :speaker, type: String, localize: true
|
||||||
field :public, :type => Boolean, :default => true
|
field :host, type: String, localize: true
|
||||||
field :event_date , :type => DateTime, :default => Time.now
|
field :subtitle, localize: true
|
||||||
field :event_end_date , :type => DateTime
|
field :text, localize: true, default: ''
|
||||||
field :postdate , :type => DateTime, :default => Time.now
|
field :notes, localize: true
|
||||||
field :deadline , :type => DateTime
|
field :create_user_id
|
||||||
field :rss2_sn
|
field :update_user_id
|
||||||
field :approved, :type => Boolean, :default => false
|
field :public, :type => Boolean, :default => true
|
||||||
field :is_preview, :type => Boolean, :default => false
|
field :event_date , :type => DateTime, :default => Time.now
|
||||||
field :expirable_created_at, type: DateTime
|
field :event_end_date , :type => DateTime
|
||||||
field :rejected, :type => Boolean, :default => false
|
field :postdate , :type => DateTime, :default => Time.now
|
||||||
field :reapproval, :type => Boolean, :default => false
|
field :deadline , :type => DateTime
|
||||||
field :rejection_reason
|
field :rss2_sn
|
||||||
field :is_external_link, :type => Boolean, :default => false
|
field :approved, :type => Boolean, :default => false
|
||||||
field :external_link
|
field :is_preview, :type => Boolean, :default => false
|
||||||
field :display_subtitle, :type => Boolean, :default => false
|
field :expirable_created_at, type: DateTime
|
||||||
field :display_img, :type => Boolean, :default => false
|
field :rejected, :type => Boolean, :default => false
|
||||||
|
field :reapproval, :type => Boolean, :default => false
|
||||||
field :email_id
|
field :rejection_reason
|
||||||
field :email_sent, :type => Boolean, :default => false
|
field :is_external_link, :type => Boolean, :default => false
|
||||||
field :email_sentdate , :type => DateTime
|
field :external_link
|
||||||
field :email_member_ids
|
field :display_subtitle, :type => Boolean, :default => false
|
||||||
field :other_mailaddress
|
field :display_img, :type => Boolean, :default => false
|
||||||
field :image_description, localize: true
|
|
||||||
field :top_end_date, :type => DateTime
|
field :email_id
|
||||||
|
field :email_sent, :type => Boolean, :default => false
|
||||||
mount_uploader :image, ImageUploader
|
field :email_sentdate , :type => DateTime
|
||||||
|
field :email_member_ids
|
||||||
has_many :event_news_links, :autosave => true, :dependent => :destroy
|
field :other_mailaddress
|
||||||
has_many :event_news_files, :autosave => true, :dependent => :destroy
|
field :image_description, localize: true
|
||||||
has_many :event_carousel_images, :autosave => true, :dependent => :destroy
|
field :top_end_date, :type => DateTime
|
||||||
accepts_nested_attributes_for :event_news_files, :allow_destroy => true
|
|
||||||
accepts_nested_attributes_for :event_news_links, :allow_destroy => true
|
mount_uploader :image, ImageUploader
|
||||||
accepts_nested_attributes_for :event_carousel_images, :allow_destroy => true
|
|
||||||
before_destroy :destroy_email
|
has_many :event_news_links, :autosave => true, :dependent => :destroy
|
||||||
|
has_many :event_news_files, :autosave => true, :dependent => :destroy
|
||||||
scope :open_in_future, ->{where(:is_hidden.ne=>true,:is_preview.ne => true,:postdate.gt=>Time.now).order(postdate: :asc)}
|
has_many :event_carousel_images, :autosave => true, :dependent => :destroy
|
||||||
scope :can_display_and_sorted, ->{where(:is_hidden.ne=>true,:is_preview.ne => true).any_of({:postdate.lte=>Time.now, :deadline.gte=>Time.now},{:postdate.lte=>Time.now, :deadline=>nil},{:postdate=>nil}).order(is_top: :desc, event_date: :desc,postdate: :desc,id: :desc)}
|
accepts_nested_attributes_for :event_news_files, :allow_destroy => true
|
||||||
scope :can_display_and_sorted_according_today, ->{where(:is_hidden.ne=>true,:is_preview.ne => true).any_of({:postdate.lte=>Time.now, :deadline.gte=>Time.now},{:postdate.lte=>Time.now, :deadline=>nil},{:postdate=>nil}).order(is_top: :desc, event_date: :asc,postdate: :desc,id: :desc).where(:event_date.gte => Date.today.to_time)}
|
accepts_nested_attributes_for :event_news_links, :allow_destroy => true
|
||||||
scope :is_approved, ->{where(:approved => true)}
|
accepts_nested_attributes_for :event_carousel_images, :allow_destroy => true
|
||||||
scope :is_approved_and_show, ->{where(:approved => true,:is_hidden.ne=>true,:is_preview.ne => true)}
|
before_destroy :destroy_email
|
||||||
scope :filter_cats_and_tags, ->(cats,tags) {filter_by_widget_categories(cats,false).filter_by_tags(tags)}
|
|
||||||
before_create :set_expire
|
scope :open_in_future, ->{where(:is_hidden.ne=>true,:is_preview.ne => true,:postdate.gt=>Time.now).order(postdate: :asc)}
|
||||||
before_save :check_limit
|
scope :can_display_and_sorted, ->{where(:is_hidden.ne=>true,:is_preview.ne => true).any_of({:postdate.lte=>Time.now, :deadline.gte=>Time.now},{:postdate.lte=>Time.now, :deadline=>nil},{:postdate=>nil}).order(is_top: :desc, event_date: :desc,postdate: :desc,id: :desc)}
|
||||||
index({postdate: 1}, { unique: false, background: true })
|
scope :can_display_and_sorted_according_today, ->{where(:is_hidden.ne=>true,:is_preview.ne => true).any_of({:postdate.lte=>Time.now, :deadline.gte=>Time.now},{:postdate.lte=>Time.now, :deadline=>nil},{:postdate=>nil}).order(is_top: :desc, event_date: :asc,postdate: :desc,id: :desc).where(:event_date.gte => Date.today.to_time)}
|
||||||
index({is_top: -1, postdate: -1, event_date: -1, _id: -1}, { unique: false, background: true })
|
scope :is_approved, ->{where(:approved => true)}
|
||||||
index({is_top: -1, event_date: 1, postdate: -1, _id: -1}, { unique: false, background: true })
|
scope :is_approved_and_show, ->{where(:approved => true,:is_hidden.ne=>true,:is_preview.ne => true)}
|
||||||
def get_org_model
|
scope :filter_cats_and_tags, ->(cats,tags) {filter_by_widget_categories(cats,false).filter_by_tags(tags)}
|
||||||
if self.is_preview
|
before_create :set_expire
|
||||||
org_model = nil
|
before_save :check_limit
|
||||||
if self.copy_id
|
index({postdate: 1}, { unique: false, background: true })
|
||||||
org_model = self.class.find(self.copy_id) rescue nil
|
index({is_top: -1, postdate: -1, event_date: -1, _id: -1}, { unique: false, background: true })
|
||||||
else
|
index({is_top: -1, event_date: 1, postdate: -1, _id: -1}, { unique: false, background: true })
|
||||||
org_model = self.class.where(:title=>self.title,:is_preview.ne=>true).desc(:updated_at).first
|
def get_org_model
|
||||||
end
|
if self.is_preview
|
||||||
org_model.nil? ? self : org_model
|
org_model = nil
|
||||||
else
|
if self.copy_id
|
||||||
self
|
org_model = self.class.find(self.copy_id) rescue nil
|
||||||
end
|
else
|
||||||
end
|
org_model = self.class.where(:title=>self.title,:is_preview.ne=>true).desc(:updated_at).first
|
||||||
def date_parse_format
|
end
|
||||||
all_day ? '%Y-%m-%d' : '%Y-%m-%d %H:%M'
|
org_model.nil? ? self : org_model
|
||||||
end
|
else
|
||||||
|
self
|
||||||
def event_time_formated
|
end
|
||||||
s = self.event_date
|
end
|
||||||
e = self.event_end_date
|
def date_parse_format
|
||||||
if s.blank? && e.blank?
|
#all_day ? '%Y-%m-%d' : '%Y-%m-%d %H:%M'
|
||||||
""
|
event_date_format
|
||||||
elsif e.blank?
|
end
|
||||||
s.strftime(self.date_parse_format)
|
def get_weekday(w)
|
||||||
elsif s.blank?
|
trans = self.class::Week_day_trans
|
||||||
"~ " + e.strftime(self.date_parse_format)
|
if trans.keys.include?(I18n.locale)
|
||||||
else
|
trans[I18n.locale][w]
|
||||||
if s.to_date == e.to_date
|
else
|
||||||
date_str = s.strftime('%Y-%m-%d')
|
trans[:en][w]
|
||||||
s_time = s.strftime('%H:%M')
|
end
|
||||||
e_time = e.strftime('%H:%M')
|
end
|
||||||
"#{date_str} #{s_time} ~ #{e_time}"
|
def event_date_format
|
||||||
else
|
@event_date_format ||= (self.event_date_use_default_setting ? EventNewsSetting.event_date_default_format : self.event_date_custom_format)
|
||||||
s.strftime(self.date_parse_format) + " ~ " + e.strftime(self.date_parse_format)
|
end
|
||||||
end
|
def event_date_custom_format
|
||||||
end
|
datetime_format = "%Y-%m-%d"
|
||||||
end
|
if self.including_day_of_the_week
|
||||||
def to_calendar_param
|
datetime_format += " %a"
|
||||||
self.to_param
|
end
|
||||||
end
|
if self.including_time
|
||||||
def calendar_type
|
if self.hour_clock_24
|
||||||
CalendarType.where(:category_id.in => self.calendar_type_id)
|
datetime_format += " %H:%M"
|
||||||
end
|
else
|
||||||
def event
|
datetime_format += " %I:%M %P"
|
||||||
if !self.event_id.nil?
|
end
|
||||||
Event.where(:id => self.event_id).first
|
end
|
||||||
else
|
datetime_format
|
||||||
nil
|
end
|
||||||
end
|
def custom_strftime(dt, datetime_format)
|
||||||
end
|
if dt
|
||||||
def check_limit
|
dt.strftime(datetime_format.sub("%a","%%a")).sub("%a",get_weekday(dt.wday))
|
||||||
check_status_limit(update_user)
|
else
|
||||||
end
|
""
|
||||||
def check_status_limit(user,check_only=false)
|
end
|
||||||
role_ids = user.member_profile.roles.map(&:id) rescue []
|
end
|
||||||
status_settings = (role_ids.collect do |role_id|
|
def event_time_formated_for_frontend
|
||||||
EventNewsSetting.first.event_news_status_settings.select{|v| v.role_id.to_s == role_id.to_s}
|
st,ed = self.event_time_formated.split("~")
|
||||||
end.flatten rescue [])
|
if st.nil?
|
||||||
reach_limit = []
|
st = ""
|
||||||
if status_settings.count != 0
|
else
|
||||||
reach_limit = status_settings.collect do |status_setting|
|
st = "<span class=\"start_date\">#{st}</span>"
|
||||||
status = status_setting.status
|
end
|
||||||
if status_setting.top_limit.to_i <= self.class.where(:is_preview.ne=>true,:update_user_id.in => Role.find(status_setting.role_id).member_profiles.collect(&:user).flatten.uniq.map{|v| v.id},status => true).count
|
if ed.nil?
|
||||||
if !check_only
|
st
|
||||||
if self[status] && !self.class.where(id:self.id).first[status]
|
else
|
||||||
self[status] = false
|
ed = "<span class=\"start_date\">#{ed}</span>"
|
||||||
nil
|
"#{st} ~ #{ed}"
|
||||||
end
|
end
|
||||||
else
|
end
|
||||||
status
|
def event_time_formated
|
||||||
end
|
s = self.event_date.in_time_zone(Time.zone.utc_offset / 3600) rescue nil
|
||||||
else
|
e = self.event_end_date.in_time_zone(Time.zone.utc_offset / 3600) rescue nil
|
||||||
nil
|
if s.blank? && e.blank?
|
||||||
end
|
""
|
||||||
end.compact
|
elsif e.blank?
|
||||||
reach_limit = reach_limit.group_by{|v| v}.collect do |k,v|
|
custom_strftime(s, self.date_parse_format)
|
||||||
if v.count >= user.member_profile.roles.count
|
elsif s.blank?
|
||||||
k
|
"~ " + custom_strftime(e, self.date_parse_format)
|
||||||
else
|
else
|
||||||
nil
|
parse_format = self.date_parse_format
|
||||||
end
|
if s.to_date == e.to_date
|
||||||
end.compact
|
parse_format_arr = parse_format.split(/(%d %a|%d) /)
|
||||||
end
|
parse_format_arr = parse_format_arr[0..-2].join(""), parse_format_arr[-1]
|
||||||
reach_limit
|
date_str = custom_strftime(s, parse_format_arr[0])
|
||||||
end
|
s_time = s.strftime(parse_format_arr[1])
|
||||||
def set_expire
|
e_time = e.strftime(parse_format_arr[1])
|
||||||
self.expirable_created_at = Time.now if self.is_preview
|
"#{date_str} #{s_time} ~ #{e_time}"
|
||||||
return true
|
else
|
||||||
end
|
custom_strftime(s, self.date_parse_format) + " ~ " + custom_strftime(e, self.date_parse_format)
|
||||||
|
end
|
||||||
def update_user
|
end
|
||||||
User.find(update_user_id) rescue nil
|
end
|
||||||
end
|
def to_calendar_param
|
||||||
|
self.to_param
|
||||||
def update_user=(user)
|
end
|
||||||
self.update_user_id = user.id
|
def calendar_type
|
||||||
end
|
CalendarType.where(:category_id.in => self.calendar_type_id)
|
||||||
|
end
|
||||||
def email_members
|
def event
|
||||||
MemberProfile.find(self.email_member_ids) rescue []
|
if !self.event_id.nil?
|
||||||
end
|
Event.where(:id => self.event_id).first
|
||||||
|
else
|
||||||
def email_addresses
|
nil
|
||||||
addresses = self.email_members.collect{|member| member.email} rescue []
|
end
|
||||||
addresses = addresses +[self.other_mailaddress] if !self.other_mailaddress.blank?
|
end
|
||||||
addresses.flatten
|
def check_limit
|
||||||
end
|
check_status_limit(update_user)
|
||||||
|
end
|
||||||
def email
|
def check_status_limit(user,check_only=false)
|
||||||
mail = Email.find(self.email_id) rescue nil
|
role_ids = user.member_profile.roles.map(&:id) rescue []
|
||||||
end
|
status_settings = (role_ids.collect do |role_id|
|
||||||
|
EventNewsSetting.first.event_news_status_settings.select{|v| v.role_id.to_s == role_id.to_s}
|
||||||
def expired?
|
end.flatten rescue [])
|
||||||
(self.deadline < Time.now) rescue false
|
reach_limit = []
|
||||||
end
|
if status_settings.count != 0
|
||||||
|
reach_limit = status_settings.collect do |status_setting|
|
||||||
def destroy_email
|
status = status_setting.status
|
||||||
mail = Email.find(self.email_id) rescue nil
|
if status_setting.top_limit.to_i <= self.class.where(:is_preview.ne=>true,:update_user_id.in => Role.find(status_setting.role_id).member_profiles.collect(&:user).flatten.uniq.map{|v| v.id},status => true).count
|
||||||
mail.destroy if !mail.nil?
|
if !check_only
|
||||||
end
|
if self[status] && !self.class.where(id:self.id).first[status]
|
||||||
|
self[status] = false
|
||||||
def self.remove_expired_status
|
nil
|
||||||
self.where(:is_top => true, :top_end_date.ne => nil, :top_end_date.lt => Time.now).each do |b|
|
end
|
||||||
b.is_top = false
|
else
|
||||||
b.top_end_date = nil
|
status
|
||||||
b.save
|
end
|
||||||
end
|
else
|
||||||
end
|
nil
|
||||||
|
end
|
||||||
def display_subtitle?
|
end.compact
|
||||||
self.display_subtitle rescue false
|
reach_limit = reach_limit.group_by{|v| v}.collect do |k,v|
|
||||||
end
|
if v.count >= user.member_profile.roles.count
|
||||||
|
k
|
||||||
def display_img?
|
else
|
||||||
self.display_img rescue false
|
nil
|
||||||
end
|
end
|
||||||
def statuses
|
end.compact
|
||||||
statuses = []
|
end
|
||||||
statuses << top_text if is_top?
|
reach_limit
|
||||||
statuses << hot_text if is_hot?
|
end
|
||||||
statuses << hidden_text if is_hidden?
|
def set_expire
|
||||||
statuses
|
self.expirable_created_at = Time.now if self.is_preview
|
||||||
end
|
return true
|
||||||
def statuses_with_classname
|
end
|
||||||
statuses = []
|
|
||||||
statuses << {"name" => top_text, "classname" => "top"} if is_top?
|
def update_user
|
||||||
statuses << {"name" => hot_text, "classname" => "hot"} if is_hot?
|
User.find(update_user_id) rescue nil
|
||||||
statuses << {"name" => hidden_text, "classname" => "hidden"} if is_hidden?
|
end
|
||||||
statuses
|
|
||||||
end
|
def update_user=(user)
|
||||||
def status_for_table
|
self.update_user_id = user.id
|
||||||
status = ""
|
end
|
||||||
status << "<span class='label label-success'>#{top_text}</span> " if self.is_top
|
|
||||||
status << "<span class='label label-important'>#{hot_text}</span> " if self.is_hot
|
def email_members
|
||||||
status << "<span class='label'>#{hidden_text}</span>"if self.is_hidden
|
MemberProfile.find(self.email_member_ids) rescue []
|
||||||
status.html_safe
|
end
|
||||||
end
|
|
||||||
def top_text
|
def email_addresses
|
||||||
I18n.t("announcement.status.top")
|
addresses = self.email_members.collect{|member| member.email} rescue []
|
||||||
end
|
addresses = addresses +[self.other_mailaddress] if !self.other_mailaddress.blank?
|
||||||
def hot_text
|
addresses.flatten
|
||||||
I18n.t("announcement.status.hot")
|
end
|
||||||
end
|
|
||||||
def hidden_text
|
def email
|
||||||
I18n.t("announcement.status.hidden")
|
mail = Email.find(self.email_id) rescue nil
|
||||||
end
|
end
|
||||||
def carousel_image_width
|
|
||||||
(self.custom_carousel_image_width.blank? ? AnnouncementSetting.last.carousel_image_width : self.custom_carousel_image_width)
|
def expired?
|
||||||
end
|
(self.deadline < Time.now) rescue false
|
||||||
|
end
|
||||||
def self.agenda_events(agenda_start, agenda_end,read_more_url)
|
|
||||||
events = self.monthly_event(agenda_start, agenda_end).convert_front(read_more_url)
|
def destroy_email
|
||||||
end
|
mail = Email.find(self.email_id) rescue nil
|
||||||
def self.monthly_event(start_date,end_date)
|
mail.destroy if !mail.nil?
|
||||||
self.any_of({:event_date.lte => start_date,:event_end_date.gte => start_date},{:event_date.gte => start_date,:event_end_date.lte => end_date},{:event_date.lte => end_date,:event_end_date.gte => end_date}).asc(:event_date)
|
end
|
||||||
end
|
|
||||||
def self.convert_front(read_more_url)
|
def self.remove_expired_status
|
||||||
self.all.collect do |re|
|
self.where(:is_top => true, :top_end_date.ne => nil, :top_end_date.lt => Time.now).each do |b|
|
||||||
{:id => re.id.to_s,
|
b.is_top = false
|
||||||
:title=>re.title,
|
b.top_end_date = nil
|
||||||
:note=>re.subtitle || "",
|
b.save
|
||||||
:allDay => false,
|
end
|
||||||
:color => nil,
|
end
|
||||||
:url_linked => (re.is_external_link ? re.external_link : "#{read_more_url}/#{re.to_param}" rescue ""),
|
|
||||||
:start => re.event_date,
|
def display_subtitle?
|
||||||
:end => re.event_end_date}
|
self.display_subtitle rescue false
|
||||||
end
|
end
|
||||||
end
|
|
||||||
end
|
def display_img?
|
||||||
|
self.display_img rescue false
|
||||||
|
end
|
||||||
|
def statuses
|
||||||
|
statuses = []
|
||||||
|
statuses << top_text if is_top?
|
||||||
|
statuses << hot_text if is_hot?
|
||||||
|
statuses << hidden_text if is_hidden?
|
||||||
|
statuses
|
||||||
|
end
|
||||||
|
def statuses_with_classname
|
||||||
|
statuses = []
|
||||||
|
statuses << {"name" => top_text, "classname" => "top"} if is_top?
|
||||||
|
statuses << {"name" => hot_text, "classname" => "hot"} if is_hot?
|
||||||
|
statuses << {"name" => hidden_text, "classname" => "hidden"} if is_hidden?
|
||||||
|
statuses
|
||||||
|
end
|
||||||
|
def status_for_table
|
||||||
|
status = ""
|
||||||
|
status << "<span class='label label-success'>#{top_text}</span> " if self.is_top
|
||||||
|
status << "<span class='label label-important'>#{hot_text}</span> " if self.is_hot
|
||||||
|
status << "<span class='label'>#{hidden_text}</span>"if self.is_hidden
|
||||||
|
status.html_safe
|
||||||
|
end
|
||||||
|
def top_text
|
||||||
|
I18n.t("announcement.status.top")
|
||||||
|
end
|
||||||
|
def hot_text
|
||||||
|
I18n.t("announcement.status.hot")
|
||||||
|
end
|
||||||
|
def hidden_text
|
||||||
|
I18n.t("announcement.status.hidden")
|
||||||
|
end
|
||||||
|
def carousel_image_width
|
||||||
|
(self.custom_carousel_image_width.blank? ? AnnouncementSetting.last.carousel_image_width : self.custom_carousel_image_width)
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.agenda_events(agenda_start, agenda_end,read_more_url)
|
||||||
|
events = self.monthly_event(agenda_start, agenda_end).convert_front(read_more_url)
|
||||||
|
end
|
||||||
|
def self.monthly_event(start_date,end_date)
|
||||||
|
self.any_of({:event_date.lte => start_date,:event_end_date.gte => start_date},{:event_date.gte => start_date,:event_end_date.lte => end_date},{:event_date.lte => end_date,:event_end_date.gte => end_date}).asc(:event_date)
|
||||||
|
end
|
||||||
|
def self.convert_front(read_more_url)
|
||||||
|
self.all.collect do |re|
|
||||||
|
{:id => re.id.to_s,
|
||||||
|
:title=>re.title,
|
||||||
|
:note=>re.subtitle || "",
|
||||||
|
:allDay => false,
|
||||||
|
:color => nil,
|
||||||
|
:url_linked => (re.is_external_link ? re.external_link : "#{read_more_url}/#{re.to_param}" rescue ""),
|
||||||
|
:start => re.event_date,
|
||||||
|
:end => re.event_end_date}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
class EventNewsCache
|
class EventNewsCache
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
field :parent_id
|
field :parent_id
|
||||||
field :filter_result
|
field :filter_result
|
||||||
field :locale,type: String,default: 'zh_tw'
|
field :locale,type: String,default: 'zh_tw'
|
||||||
field :invalid_date, type: DateTime
|
field :invalid_date, type: DateTime
|
||||||
end
|
end
|
|
@ -1,24 +1,24 @@
|
||||||
class EventNewsCustomTitle
|
class EventNewsCustomTitle
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
field :key
|
field :key
|
||||||
field :title, type: String, localize: true
|
field :title, type: String, localize: true
|
||||||
KEYS = ['title','event_date','speaker','place','host']
|
KEYS = ['title','speaker','host','event_date','place','notes']
|
||||||
def self.get_map
|
def self.get_map
|
||||||
KEYS.map do |k|
|
KEYS.map do |k|
|
||||||
s = self.where(key: k).first || self.create(key: k,title_translations: I18n.available_locales.map{|l| [l,I18n.with_locale(l){I18n.t("event_news.#{k}")}]}.to_h)
|
s = self.where(key: k).first || self.create(key: k,title_translations: I18n.available_locales.map{|l| [l,I18n.with_locale(l){I18n.t("event_news.#{k}")}]}.to_h)
|
||||||
if s.title_translations.select{|k,v| v.include?("translation missing")}.length>0
|
if s.title_translations.select{|k,v| v.include?("translation missing")}.length>0
|
||||||
s.update_attributes(title_translations: I18n.available_locales.map{|l| [l,I18n.with_locale(l){I18n.t("event_news.#{k}")}]}.to_h)
|
s.update_attributes(title_translations: I18n.available_locales.map{|l| [l,I18n.with_locale(l){I18n.t("event_news.#{k}")}]}.to_h)
|
||||||
end
|
end
|
||||||
s
|
s
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
def default_title
|
def default_title
|
||||||
I18n.t("event_news.#{self.key}")
|
I18n.t("event_news.#{self.key}")
|
||||||
end
|
end
|
||||||
def self.get_trans(key)
|
def self.get_trans(key)
|
||||||
tmp = TitleMap[key][I18n.locale] rescue I18n.t("event_news.#{key}")
|
tmp = TitleMap[key][I18n.locale] rescue I18n.t("event_news.#{key}")
|
||||||
tmp.blank? ? I18n.t("event_news.#{key}") : tmp
|
tmp.blank? ? I18n.t("event_news.#{key}") : tmp
|
||||||
end
|
end
|
||||||
TitleMap = self.get_map.map{|v| [v.key,v.title_translations]}.to_h
|
TitleMap = self.get_map.map{|v| [v.key,v.title_translations]}.to_h
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,171 +1,171 @@
|
||||||
class EventNewsFeed
|
class EventNewsFeed
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
include Slug
|
include Slug
|
||||||
|
|
||||||
field :title, as: :slug_title, type: String, localize: true
|
field :title, as: :slug_title, type: String, localize: true
|
||||||
field :tag_ids, type: Array, default: []
|
field :tag_ids, type: Array, default: []
|
||||||
field :category_ids, type: Array, default: []
|
field :category_ids, type: Array, default: []
|
||||||
before_save do
|
before_save do
|
||||||
EventNewsCache.where(uid: self.uid).each do |cache|
|
EventNewsCache.where(uid: self.uid).each do |cache|
|
||||||
cache.regenerate
|
cache.regenerate
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
def self.create_feed_cache(bulletin=nil,bulletin_feed=nil)
|
def self.create_feed_cache(bulletin=nil,bulletin_feed=nil)
|
||||||
Thread.new do
|
Thread.new do
|
||||||
if !bulletin.nil?
|
if !bulletin.nil?
|
||||||
self.where(:tag_ids.in => Array(bulletin.tag_ids).collect{|v| v.to_s}).each do |bulletin_feed|
|
self.where(:tag_ids.in => Array(bulletin.tag_ids).collect{|v| v.to_s}).each do |bulletin_feed|
|
||||||
uid = bulletin_feed.uid
|
uid = bulletin_feed.uid
|
||||||
EventNewsCache.where(:uid => uid).each do |cache|
|
EventNewsCache.where(:uid => uid).each do |cache|
|
||||||
cache.regenerate
|
cache.regenerate
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
elsif !bulletin_feed.nil?
|
elsif !bulletin_feed.nil?
|
||||||
uid = bulletin_feed.uid
|
uid = bulletin_feed.uid
|
||||||
EventNewsCache.where(:uid => uid).each do |cache|
|
EventNewsCache.where(:uid => uid).each do |cache|
|
||||||
cache.regenerate
|
cache.regenerate
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
def generate_one_cache_timeout(startdt: nil,enddt: nil,dt: nil, base_url: nil, timeout: nil)
|
def generate_one_cache_timeout(startdt: nil,enddt: nil,dt: nil, base_url: nil, timeout: nil)
|
||||||
timeout = 100000 if timeout.nil?
|
timeout = 100000 if timeout.nil?
|
||||||
begin
|
begin
|
||||||
Timeout::timeout(timeout) {
|
Timeout::timeout(timeout) {
|
||||||
feed_cache = nil
|
feed_cache = nil
|
||||||
Thread.new do
|
Thread.new do
|
||||||
feed_cache = self.generate_one_cache(startdt: startdt,enddt: enddt,dt: dt,base_url: base_url)
|
feed_cache = self.generate_one_cache(startdt: startdt,enddt: enddt,dt: dt,base_url: base_url)
|
||||||
end
|
end
|
||||||
(1..(timeout.to_i+1)).each do
|
(1..(timeout.to_i+1)).each do
|
||||||
sleep(1)
|
sleep(1)
|
||||||
break if !feed_cache.nil?
|
break if !feed_cache.nil?
|
||||||
end
|
end
|
||||||
feed_cache.content
|
feed_cache.content
|
||||||
}
|
}
|
||||||
rescue=> e
|
rescue=> e
|
||||||
puts [e,e.backtrace]
|
puts [e,e.backtrace]
|
||||||
""
|
""
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
def generate_one_cache(startdt: nil,enddt: nil,dt: nil, base_url: nil)
|
def generate_one_cache(startdt: nil,enddt: nil,dt: nil, base_url: nil)
|
||||||
base_url = Site.first.root_url if base_url.nil?
|
base_url = Site.first.root_url if base_url.nil?
|
||||||
uid = self.uid
|
uid = self.uid
|
||||||
bf = self
|
bf = self
|
||||||
if !bf.nil?
|
if !bf.nil?
|
||||||
tags = bf.tag_ids
|
tags = bf.tag_ids
|
||||||
categories = bf.category_ids
|
categories = bf.category_ids
|
||||||
if !(categories.empty? && tags.empty?)
|
if !(categories.empty? && tags.empty?)
|
||||||
anns_before_filter = EventNews.any_of(I18n.available_locales.map{|v| {"title.#{v}"=>{"$nin"=>["", nil]}}}).is_approved_and_show
|
anns_before_filter = EventNews.any_of(I18n.available_locales.map{|v| {"title.#{v}"=>{"$nin"=>["", nil]}}}).is_approved_and_show
|
||||||
if !dt.nil?
|
if !dt.nil?
|
||||||
dt = DateTime.parse(dt)
|
dt = DateTime.parse(dt)
|
||||||
dtt = dt + 1.day
|
dtt = dt + 1.day
|
||||||
anns_before_filter = anns_before_filter.where(:postdate.gt => dt, :postdate.lt => dtt)
|
anns_before_filter = anns_before_filter.where(:postdate.gt => dt, :postdate.lt => dtt)
|
||||||
elsif !startdt.blank? && enddt.blank?
|
elsif !startdt.blank? && enddt.blank?
|
||||||
startdt = DateTime.parse(startdt)
|
startdt = DateTime.parse(startdt)
|
||||||
enddt = DateTime.now
|
enddt = DateTime.now
|
||||||
anns_before_filter = anns_before_filter.where(:postdate.gt => startdt, :postdate.lt => enddt)
|
anns_before_filter = anns_before_filter.where(:postdate.gt => startdt, :postdate.lt => enddt)
|
||||||
elsif !startdt.blank? && !enddt.blank?
|
elsif !startdt.blank? && !enddt.blank?
|
||||||
startdt = DateTime.parse(startdt)
|
startdt = DateTime.parse(startdt)
|
||||||
enddt = DateTime.parse(enddt) + 1.day
|
enddt = DateTime.parse(enddt) + 1.day
|
||||||
anns_before_filter = anns_before_filter.where(:postdate.gt => startdt, :postdate.lt => enddt)
|
anns_before_filter = anns_before_filter.where(:postdate.gt => startdt, :postdate.lt => enddt)
|
||||||
end
|
end
|
||||||
anns_before_filter = anns_before_filter.can_display_and_sorted
|
anns_before_filter = anns_before_filter.can_display_and_sorted
|
||||||
if !tags.empty?
|
if !tags.empty?
|
||||||
anns_before_filter = anns_before_filter.filter_by_tags(tags)
|
anns_before_filter = anns_before_filter.filter_by_tags(tags)
|
||||||
end
|
end
|
||||||
if !categories.empty?
|
if !categories.empty?
|
||||||
anns_before_filter = anns_before_filter.filter_by_categories(categories)
|
anns_before_filter = anns_before_filter.filter_by_categories(categories)
|
||||||
end
|
end
|
||||||
announcements = anns_before_filter.can_display_and_sorted
|
announcements = anns_before_filter.can_display_and_sorted
|
||||||
else
|
else
|
||||||
announcements = []
|
announcements = []
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
all_anns = []
|
all_anns = []
|
||||||
tag_names = []
|
tag_names = []
|
||||||
category_titles = []
|
category_titles = []
|
||||||
tag_ids = []
|
tag_ids = []
|
||||||
category_ids = []
|
category_ids = []
|
||||||
|
|
||||||
first_postdate = anns_before_filter.open_in_future.limit(1).pluck(:postdate)[0]
|
first_postdate = anns_before_filter.open_in_future.limit(1).pluck(:postdate)[0]
|
||||||
first_deadline = nil
|
first_deadline = nil
|
||||||
|
|
||||||
announcements.each do |anns|
|
announcements.each do |anns|
|
||||||
deadline = anns.deadline
|
deadline = anns.deadline
|
||||||
if !deadline.blank?
|
if !deadline.blank?
|
||||||
if first_deadline.nil? || first_deadline>deadline
|
if first_deadline.nil? || first_deadline>deadline
|
||||||
first_deadline = deadline
|
first_deadline = deadline
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
user = User.find(anns.create_user_id) rescue nil
|
user = User.find(anns.create_user_id) rescue nil
|
||||||
if !user.nil?
|
if !user.nil?
|
||||||
author = user.member_profile && user.member_profile.name == "" ? user.user_name : user.member_profile.name
|
author = user.member_profile && user.member_profile.name == "" ? user.user_name : user.member_profile.name
|
||||||
else
|
else
|
||||||
author = ""
|
author = ""
|
||||||
end
|
end
|
||||||
a = {}
|
a = {}
|
||||||
a["id"] = anns.uid
|
a["id"] = anns.uid
|
||||||
a["title_translations"] = anns.title_translations
|
a["title_translations"] = anns.title_translations
|
||||||
a["subtitle_translations"] = anns.subtitle_translations
|
a["subtitle_translations"] = anns.subtitle_translations
|
||||||
a["text_translations"] = {}
|
a["text_translations"] = {}
|
||||||
a["text_translations"]["en"] = self.class.smart_convertor(anns.text_translations["en"],base_url) if !anns.text_translations["en"].blank?
|
a["text_translations"]["en"] = self.class.smart_convertor(anns.text_translations["en"],base_url) if !anns.text_translations["en"].blank?
|
||||||
a["text_translations"]["zh_tw"] = self.class.smart_convertor(anns.text_translations["zh_tw"],base_url) if !anns.text_translations["zh_tw"].blank?
|
a["text_translations"]["zh_tw"] = self.class.smart_convertor(anns.text_translations["zh_tw"],base_url) if !anns.text_translations["zh_tw"].blank?
|
||||||
a["postdate"] = anns.postdate
|
a["postdate"] = anns.postdate
|
||||||
a["image_description_translations"] = anns.image_description_translations
|
a["image_description_translations"] = anns.image_description_translations
|
||||||
a["image"] = {}
|
a["image"] = {}
|
||||||
a["display_img"] = anns.display_img
|
a["display_img"] = anns.display_img
|
||||||
a["image"]["original"] = ("#{base_url}" + anns.image.url rescue "")
|
a["image"]["original"] = ("#{base_url}" + anns.image.url rescue "")
|
||||||
a["image"]["thumb"] = ("#{base_url}" + anns.image.thumb.url rescue "")
|
a["image"]["thumb"] = ("#{base_url}" + anns.image.thumb.url rescue "")
|
||||||
a["image"]["mobile"] = ("#{base_url}" + anns.image.mobile.url rescue "")
|
a["image"]["mobile"] = ("#{base_url}" + anns.image.mobile.url rescue "")
|
||||||
a["tags"] = []
|
a["tags"] = []
|
||||||
a["category"] = {}
|
a["category"] = {}
|
||||||
a["author"] = author
|
a["author"] = author
|
||||||
a["params"] = anns.to_param
|
a["params"] = anns.to_param
|
||||||
a["subtitle_ann"] = anns.subtitle if anns.display_subtitle?
|
a["subtitle_ann"] = anns.subtitle if anns.display_subtitle?
|
||||||
a["bulletin_links"] = []
|
a["bulletin_links"] = []
|
||||||
a["bulletin_files"] = []
|
a["bulletin_files"] = []
|
||||||
a["bulletin_carousel_images"] = anns.bulletin_carousel_images.map{|image| {"src"=>"#{base_url}" + image.file.url,"description"=>image.description.to_s,"description_text"=>image.description_text }}
|
a["bulletin_carousel_images"] = anns.bulletin_carousel_images.map{|image| {"src"=>"#{base_url}" + image.file.url,"description"=>image.description.to_s,"description_text"=>image.description_text }}
|
||||||
a["external_link"] = anns["is_external_link"] ? anns.external_link : nil
|
a["external_link"] = anns["is_external_link"] ? anns.external_link : nil
|
||||||
anns.tags.each do |tag|
|
anns.tags.each do |tag|
|
||||||
if !tag_ids.include?(tag.id.to_s)
|
if !tag_ids.include?(tag.id.to_s)
|
||||||
tag_ids << tag.id.to_s
|
tag_ids << tag.id.to_s
|
||||||
tag_names << {"name_translations" => tag.name_translations}
|
tag_names << {"name_translations" => tag.name_translations}
|
||||||
end
|
end
|
||||||
a["tags"] << {"name_translations" => tag.name_translations}
|
a["tags"] << {"name_translations" => tag.name_translations}
|
||||||
end
|
end
|
||||||
cat = anns.category
|
cat = anns.category
|
||||||
if (!category_ids.include?(cat.id.to_s) rescue false)
|
if (!category_ids.include?(cat.id.to_s) rescue false)
|
||||||
category_ids << cat.id.to_s
|
category_ids << cat.id.to_s
|
||||||
category_titles << {"title_translations" => cat.title_translations}
|
category_titles << {"title_translations" => cat.title_translations}
|
||||||
end
|
end
|
||||||
a["category"] = {"title_translations" => (cat.title_translations rescue {})}
|
a["category"] = {"title_translations" => (cat.title_translations rescue {})}
|
||||||
anns.bulletin_links.each do |bl|
|
anns.bulletin_links.each do |bl|
|
||||||
b = {}
|
b = {}
|
||||||
b["url"] = bl.url
|
b["url"] = bl.url
|
||||||
b["title_translations"] = bl.title_translations
|
b["title_translations"] = bl.title_translations
|
||||||
a["bulletin_links"] << b
|
a["bulletin_links"] << b
|
||||||
end
|
end
|
||||||
anns.bulletin_files.each do |bf|
|
anns.bulletin_files.each do |bf|
|
||||||
b = {}
|
b = {}
|
||||||
b["description_translations"] = bf.description_translations
|
b["description_translations"] = bf.description_translations
|
||||||
b["title_translations"] = bf.title_translations
|
b["title_translations"] = bf.title_translations
|
||||||
b["url"] = ("#{base_url}" + bf.file.url rescue "")
|
b["url"] = ("#{base_url}" + bf.file.url rescue "")
|
||||||
a["bulletin_files"] << b
|
a["bulletin_files"] << b
|
||||||
end
|
end
|
||||||
all_anns << a
|
all_anns << a
|
||||||
end
|
end
|
||||||
invalid_date = [first_postdate,first_deadline].compact.sort[0]
|
invalid_date = [first_postdate,first_deadline].compact.sort[0]
|
||||||
anns = {
|
anns = {
|
||||||
"announcements" => all_anns,
|
"announcements" => all_anns,
|
||||||
"tags" => tag_names,
|
"tags" => tag_names,
|
||||||
"categories" => category_titles
|
"categories" => category_titles
|
||||||
}.to_json
|
}.to_json
|
||||||
feed_cache = EventNewsFeedCache.create(uid: uid,content: anns,start: startdt,end: enddt,date: dt,invalid_date: invalid_date)
|
feed_cache = EventNewsFeedCache.create(uid: uid,content: anns,start: startdt,end: enddt,date: dt,invalid_date: invalid_date)
|
||||||
end
|
end
|
||||||
def self.smart_convertor(text,url)
|
def self.smart_convertor(text,url)
|
||||||
html_string = text
|
html_string = text
|
||||||
html_string = html_string.gsub(/img.*?src="(?=\/)(.*?)|a.*?href="(?=\/)(.*?)/i){|w| w+url}
|
html_string = html_string.gsub(/img.*?src="(?=\/)(.*?)|a.*?href="(?=\/)(.*?)/i){|w| w+url}
|
||||||
html_string = html_string.gsub(/img.*?src="\.\.(?=\/)(.*?)|a.*?href="\.\.(?=\/)(.*?)/i){|w| w[0...-2]+url}
|
html_string = html_string.gsub(/img.*?src="\.\.(?=\/)(.*?)|a.*?href="\.\.(?=\/)(.*?)/i){|w| w[0...-2]+url}
|
||||||
return html_string
|
return html_string
|
||||||
end
|
end
|
||||||
end
|
end
|
|
@ -1,29 +1,29 @@
|
||||||
class EventNewsFeedCache
|
class EventNewsFeedCache
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
field :content, type: String, default: ''
|
field :content, type: String, default: ''
|
||||||
field :uid
|
field :uid
|
||||||
field :start
|
field :start
|
||||||
field :end
|
field :end
|
||||||
field :date
|
field :date
|
||||||
field :invalid_date, type: DateTime
|
field :invalid_date, type: DateTime
|
||||||
def self.regenerate_all
|
def self.regenerate_all
|
||||||
caches = self.all.to_a
|
caches = self.all.to_a
|
||||||
caches.each do |cache|
|
caches.each do |cache|
|
||||||
cache.regenerate
|
cache.regenerate
|
||||||
end
|
end
|
||||||
uids = EventNewsFeed.all.pluck(:uid) - caches.collect(&:uid)
|
uids = EventNewsFeed.all.pluck(:uid) - caches.collect(&:uid)
|
||||||
EventNewsFeed.where(:uid.in=> uids).each do |feed|
|
EventNewsFeed.where(:uid.in=> uids).each do |feed|
|
||||||
feed.generate_one_cache()
|
feed.generate_one_cache()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
def regenerate
|
def regenerate
|
||||||
st = self.start
|
st = self.start
|
||||||
et = self.end
|
et = self.end
|
||||||
dt = self.date
|
dt = self.date
|
||||||
uid = self.uid
|
uid = self.uid
|
||||||
EventNewsFeed.where(uid: uid).first.generate_one_cache(startdt: st,enddt: et,dt: dt) rescue nil
|
EventNewsFeed.where(uid: uid).first.generate_one_cache(startdt: st,enddt: et,dt: dt) rescue nil
|
||||||
self.destroy
|
self.destroy
|
||||||
end
|
end
|
||||||
end
|
end
|
|
@ -1,47 +1,47 @@
|
||||||
# encoding: utf-8
|
# encoding: utf-8
|
||||||
class EventNewsFile
|
class EventNewsFile
|
||||||
|
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
mount_uploader :file, AssetUploader
|
mount_uploader :file, AssetUploader
|
||||||
|
|
||||||
field :description, localize: true
|
field :description, localize: true
|
||||||
field :title, localize: true
|
field :title, localize: true
|
||||||
field :choose_lang, :type => Array, :default => ["en","zh_tw"]
|
field :choose_lang, :type => Array, :default => ["en","zh_tw"]
|
||||||
field :privacy_type, type: String, default: 'public'
|
field :privacy_type, type: String, default: 'public'
|
||||||
belongs_to :event_news
|
belongs_to :event_news
|
||||||
def self.to_fronted(locale=I18n.locale)
|
def self.to_fronted(locale=I18n.locale)
|
||||||
self.all.map{|file| file.to_fronted(locale)}.compact rescue []
|
self.all.map{|file| file.to_fronted(locale)}.compact rescue []
|
||||||
end
|
end
|
||||||
def to_fronted(locale=I18n.locale)
|
def to_fronted(locale=I18n.locale)
|
||||||
file = self
|
file = self
|
||||||
(file.enabled_for?(locale) && !file[:file].blank?) ? { "file_url" => "/xhr/event_news/file/#{file.id}/#{file['file']}" + "\" title=\"#{file.file_title}",
|
(file.enabled_for?(locale) && !file[:file].blank?) ? { "file_url" => "/xhr/event_news/file/#{file.id}/#{file['file']}" + "\" title=\"#{file.file_title}",
|
||||||
"file_title" => (file.title.blank? ? URI.unescape(File.basename(file.file.path)) : file.title rescue '')
|
"file_title" => (file.title.blank? ? URI.unescape(File.basename(file.file.path)) : file.title rescue '')
|
||||||
} : nil rescue nil
|
} : nil rescue nil
|
||||||
end
|
end
|
||||||
|
|
||||||
def file_title
|
def file_title
|
||||||
if self.description.present?
|
if self.description.present?
|
||||||
return self.description
|
return self.description
|
||||||
elsif self.title.present?
|
elsif self.title.present?
|
||||||
return self.title
|
return self.title
|
||||||
else
|
else
|
||||||
return File.basename(self.file.path)
|
return File.basename(self.file.path)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
def enabled_for?(lang)
|
def enabled_for?(lang)
|
||||||
if lang.nil?
|
if lang.nil?
|
||||||
return true
|
return true
|
||||||
else
|
else
|
||||||
return self.choose_lang.include?(lang)
|
return self.choose_lang.include?(lang)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
def can_access?(user)
|
def can_access?(user)
|
||||||
if user.nil? && self.privacy_type == 'logged_in'
|
if user.nil? && self.privacy_type == 'logged_in'
|
||||||
return false
|
return false
|
||||||
else
|
else
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,25 +1,25 @@
|
||||||
# encoding: utf-8
|
# encoding: utf-8
|
||||||
require 'uri'
|
require 'uri'
|
||||||
|
|
||||||
class EventNewsLink
|
class EventNewsLink
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
field :url
|
field :url
|
||||||
field :title, localize: true
|
field :title, localize: true
|
||||||
|
|
||||||
belongs_to :event_news
|
belongs_to :event_news
|
||||||
|
|
||||||
before_validation :add_http
|
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
|
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
|
protected
|
||||||
|
|
||||||
def add_http
|
def add_http
|
||||||
unless self.url[/^http:\/\//] || self.url[/^https:\/\//]
|
unless self.url[/^http:\/\//] || self.url[/^https:\/\//]
|
||||||
self.url = 'http://' + self.url
|
self.url = 'http://' + self.url
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
|
@ -1,23 +1,90 @@
|
||||||
class EventNewsSetting
|
class EventNewsSetting
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
field :carousel_image_width, type: String, :default => "75%"
|
field :carousel_image_width, type: String, :default => "75%"
|
||||||
field :top_limit, type: Integer, :default => 0
|
field :top_limit, type: Integer, :default => 0
|
||||||
field :pro_enabled, type: Boolean, :default => false
|
field :pro_enabled, type: Boolean, :default => false
|
||||||
field :approvers, type: Array, :default => []
|
field :approvers, type: Array, :default => []
|
||||||
field :email_to, type: Array, :default => ["admins","managers","approvers"]
|
field :email_to, type: Array, :default => ["admins","managers","approvers"]
|
||||||
field :is_display_edit_only, type: Boolean, :default => false
|
field :is_display_edit_only, type: Boolean, :default => false
|
||||||
field :only_manager_can_edit_status, type: Boolean, :default => false
|
field :only_manager_can_edit_status, type: Boolean, :default => false
|
||||||
has_many :event_news_status_settings, :autosave => true, :dependent => :destroy
|
field :including_day_of_the_week, type: Boolean, default: true
|
||||||
accepts_nested_attributes_for :event_news_status_settings, :allow_destroy => true
|
field :including_time, type: Boolean, default: true
|
||||||
def self.check_limit_for_user(user_id, b_id = nil)
|
field :hour_clock_24, type: Boolean, default: true
|
||||||
limit = self.first.top_limit rescue 0
|
has_many :event_news_status_settings, :autosave => true, :dependent => :destroy
|
||||||
return true if limit == 0
|
accepts_nested_attributes_for :event_news_status_settings, :allow_destroy => true
|
||||||
count = Bulletin.where(:is_top => true, :create_user_id => user_id, :id.ne => b_id).count
|
after_save do
|
||||||
return count < limit
|
if self.including_day_of_the_week_changed? || self.including_time_changed? || self.hour_clock_24_changed?
|
||||||
end
|
EventNewsCache.all.destroy
|
||||||
|
end
|
||||||
def self.is_pro?
|
end
|
||||||
self.first.pro_enabled rescue false
|
def self.check_limit_for_user(user_id, b_id = nil)
|
||||||
end
|
limit = self.first.top_limit rescue 0
|
||||||
|
return true if limit == 0
|
||||||
|
count = Bulletin.where(:is_top => true, :create_user_id => user_id, :id.ne => b_id).count
|
||||||
|
return count < limit
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.is_pro?
|
||||||
|
self.first.pro_enabled rescue false
|
||||||
|
end
|
||||||
|
def self.event_date_default_format
|
||||||
|
setting = self.first
|
||||||
|
setting.event_date_default_format
|
||||||
|
end
|
||||||
|
def event_date_default_format
|
||||||
|
datetime_format = "%Y-%m-%d"
|
||||||
|
if self.including_day_of_the_week
|
||||||
|
datetime_format += " %a"
|
||||||
|
end
|
||||||
|
if self.including_time
|
||||||
|
if self.hour_clock_24
|
||||||
|
datetime_format += " %H:%M"
|
||||||
|
else
|
||||||
|
datetime_format += " %I:%M %P"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
datetime_format
|
||||||
|
end
|
||||||
|
def event_date_format
|
||||||
|
@event_date_format ||= self.event_date_default_format
|
||||||
|
end
|
||||||
|
def self.event_time_formated_for_frontend(st,ed)
|
||||||
|
self.first.event_time_formated_for_frontend(st,ed)
|
||||||
|
end
|
||||||
|
def event_time_formated_for_frontend(st,ed)
|
||||||
|
st,ed = self.event_time_formated(st,ed).split("~")
|
||||||
|
if st.blank?
|
||||||
|
st = "<span class=\"start_date\">#{st}</span>"
|
||||||
|
end
|
||||||
|
if ed.nil?
|
||||||
|
st
|
||||||
|
else
|
||||||
|
ed = "<span class=\"start_date\">#{ed}</span>"
|
||||||
|
"#{st} ~ #{ed}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
def event_time_formated(st,ed)
|
||||||
|
s = st
|
||||||
|
e = ed
|
||||||
|
if s.blank? && e.blank?
|
||||||
|
""
|
||||||
|
elsif e.blank?
|
||||||
|
custom_strftime(s, self.event_date_format)
|
||||||
|
elsif s.blank?
|
||||||
|
"~ " + custom_strftime(e, self.event_date_format)
|
||||||
|
else
|
||||||
|
parse_format = self.event_date_format
|
||||||
|
if s.to_date == e.to_date
|
||||||
|
parse_format_arr = parse_format.split(/(%d %a|%d) /)
|
||||||
|
parse_format_arr = parse_format_arr[0..-2].join(""), parse_format_arr[-1]
|
||||||
|
date_str = custom_strftime(s, parse_format_arr[0])
|
||||||
|
s_time = s.strftime(parse_format_arr[1])
|
||||||
|
e_time = e.strftime(parse_format_arr[1])
|
||||||
|
"#{date_str} #{s_time} ~ #{e_time}"
|
||||||
|
else
|
||||||
|
custom_strftime(s, self.event_date_format) + " ~ " + custom_strftime(e, self.event_date_format)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
|
@ -1,7 +1,7 @@
|
||||||
class EventNewsStatusSetting
|
class EventNewsStatusSetting
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
field :role_id
|
field :role_id
|
||||||
field :status
|
field :status
|
||||||
field :top_limit
|
field :top_limit
|
||||||
belongs_to :event_news_setting
|
belongs_to :event_news_setting
|
||||||
end
|
end
|
|
@ -1,122 +1,122 @@
|
||||||
<style>
|
<style>
|
||||||
#approvalModal {
|
#approvalModal {
|
||||||
width: 90%;
|
width: 90%;
|
||||||
height: 600px;
|
height: 600px;
|
||||||
top: 0;
|
top: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
}
|
}
|
||||||
#approvalModal .preview-iframe {
|
#approvalModal .preview-iframe {
|
||||||
border: 0;
|
border: 0;
|
||||||
outline: none;
|
outline: none;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
#approvalModal .modal-body {
|
#approvalModal .modal-body {
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
max-height: none;
|
max-height: none;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
#approvalModal .modal-left {
|
#approvalModal .modal-left {
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
float: left;
|
float: left;
|
||||||
width: 19.8%;
|
width: 19.8%;
|
||||||
border-right: 1px solid #DFDFDF;
|
border-right: 1px solid #DFDFDF;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
padding: 1em;
|
padding: 1em;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
-webkit-box-sizing: border-box;
|
-webkit-box-sizing: border-box;
|
||||||
-moz-box-sizing: border-box;
|
-moz-box-sizing: border-box;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
#approvalModal .modal-right {
|
#approvalModal .modal-right {
|
||||||
float: right;
|
float: right;
|
||||||
width: 80%;
|
width: 80%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
.approvalModal__form {
|
.approvalModal__form {
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
label.approvalModal__radio {
|
label.approvalModal__radio {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
label.control-label {
|
label.control-label {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.approvalModal__controls {
|
.approvalModal__controls {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
.approvalModal__group {
|
.approvalModal__group {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
label.approvalModal__label {
|
label.approvalModal__label {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin: 0 4px 0 7px;
|
margin: 0 4px 0 7px;
|
||||||
position: relative;
|
position: relative;
|
||||||
top: -1px;
|
top: -1px;
|
||||||
}
|
}
|
||||||
.approvalModal__controls .approvalModal__privacy {
|
.approvalModal__controls .approvalModal__privacy {
|
||||||
margin: 0 5px;
|
margin: 0 5px;
|
||||||
}
|
}
|
||||||
.approvalModal__controls .approvalModal__large {
|
.approvalModal__controls .approvalModal__large {
|
||||||
}
|
}
|
||||||
#approvalModal .modal-footer {
|
#approvalModal .modal-footer {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
padding: 15px 10px 10px;
|
padding: 15px 10px 10px;
|
||||||
}
|
}
|
||||||
.approvalModal__group.confirm {
|
.approvalModal__group.confirm {
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<div id="approvalModal" class="modal hide fade" role="dialog">
|
<div id="approvalModal" class="modal hide fade" role="dialog">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<a class="close" data-dismiss="modal">×</a>
|
<a class="close" data-dismiss="modal">×</a>
|
||||||
<h3>預覽</h3>
|
<h3>預覽</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body clearfix">
|
<div class="modal-body clearfix">
|
||||||
<div class="modal-left">
|
<div class="modal-left">
|
||||||
<label for="____">寄送對象</label>
|
<label for="____">寄送對象</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-right">
|
<div class="modal-right">
|
||||||
<iframe class="preview-iframe"></iframe>
|
<iframe class="preview-iframe"></iframe>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<%= form_tag "/admin/event_news/approve_event_news", :class=>"approvalModal__form" do %>
|
<%= form_tag "/admin/event_news/approve_event_news", :class=>"approvalModal__form" do %>
|
||||||
<div class="approvalModal__group">
|
<div class="approvalModal__group">
|
||||||
<label class="control-label" for="event_news_approval_stat">審核狀態</label>
|
<label class="control-label" for="event_news_approval_stat">審核狀態</label>
|
||||||
<div class="approvalModal__controls">
|
<div class="approvalModal__controls">
|
||||||
<label class="approvalModal__radio">
|
<label class="approvalModal__radio">
|
||||||
<input class="approvalModal__privacy" id="event_news_is_checked_true" name="approved" type="radio" value="true">已認可
|
<input class="approvalModal__privacy" id="event_news_is_checked_true" name="approved" type="radio" value="true">已認可
|
||||||
</label>
|
</label>
|
||||||
<label class="approvalModal__radio">
|
<label class="approvalModal__radio">
|
||||||
<input checked="checked" class="approvalModal__privacy" id="event_news_approved_false" name="approved" type="radio" value="false">拒絕
|
<input checked="checked" class="approvalModal__privacy" id="event_news_approved_false" name="approved" type="radio" value="false">拒絕
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="approvalModal__group group--reject">
|
<div class="approvalModal__group group--reject">
|
||||||
<label class="approvalModal__label" for="is_checked_false_拒絕原因">拒絕原因</label>
|
<label class="approvalModal__label" for="is_checked_false_拒絕原因">拒絕原因</label>
|
||||||
<div class="approvalModal__controls">
|
<div class="approvalModal__controls">
|
||||||
<input class="approvalModal__large" id="event_news_not_checked_reason" name="reason" size="30" type="text">
|
<input class="approvalModal__large" id="event_news_not_checked_reason" name="reason" size="30" type="text">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="approvalModal__group confirm">
|
<div class="approvalModal__group confirm">
|
||||||
<input class="approvalModal__btn btn btn-primary" name="commit" type="submit" value="送出">
|
<input class="approvalModal__btn btn btn-primary" name="commit" type="submit" value="送出">
|
||||||
<input type="hidden" id="object_id" name="id" />
|
<input type="hidden" id="object_id" name="id" />
|
||||||
<button class="approvalModal__btn btn" data-dismiss="modal" aria-hidden="true">關閉</button>
|
<button class="approvalModal__btn btn" data-dismiss="modal" aria-hidden="true">關閉</button>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
|
@ -1,61 +1,61 @@
|
||||||
<%= form_for @event_news_feed, url: admin_event_news_updatefeed_path(:id => @event_news_feed.id), html: {class: "form-horizontal main-forms"} do |f| %>
|
<%= form_for @event_news_feed, url: admin_event_news_updatefeed_path(:id => @event_news_feed.id), html: {class: "form-horizontal main-forms"} do |f| %>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<% @site_in_use_locales.each do |locale| %>
|
<% @site_in_use_locales.each do |locale| %>
|
||||||
<%= f.fields_for :title_translations do |f| %>
|
<%= f.fields_for :title_translations do |f| %>
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<label class="control-label muted" for="event_news_feed_title_translations_<%= locale.to_s %>"><%= t(:title) + " (#{t(locale.to_s)})" %></label>
|
<label class="control-label muted" for="event_news_feed_title_translations_<%= locale.to_s %>"><%= t(:title) + " (#{t(locale.to_s)})" %></label>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<%= f.text_field locale, data: {"fv-validation" => "required;","fv-messages" => "Cannot be empty.;"}, value: (@event_news_feed.title_translations[locale.to_s] rescue nil) %>
|
<%= f.text_field locale, data: {"fv-validation" => "required;","fv-messages" => "Cannot be empty.;"}, value: (@event_news_feed.title_translations[locale.to_s] rescue nil) %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<hr />
|
<hr />
|
||||||
<div class="tags">
|
<div class="tags">
|
||||||
<h4><%=t(:tags)%></h4>
|
<h4><%=t(:tags)%></h4>
|
||||||
<div id="tags-list">
|
<div id="tags-list">
|
||||||
<div class="tags-groups checkbox-card module-tags">
|
<div class="tags-groups checkbox-card module-tags">
|
||||||
<% @module_app.tags.each do |tag| %>
|
<% @module_app.tags.each do |tag| %>
|
||||||
<label class="filter-item module <%= @event_news_feed.tag_ids.include?(tag.id.to_s) ? "active" : "" %>">
|
<label class="filter-item module <%= @event_news_feed.tag_ids.include?(tag.id.to_s) ? "active" : "" %>">
|
||||||
<p class='card pull-left <%= @event_news_feed.tag_ids.include?(tag.id.to_s) ? "active" : "" %>'>
|
<p class='card pull-left <%= @event_news_feed.tag_ids.include?(tag.id.to_s) ? "active" : "" %>'>
|
||||||
<input type="checkbox" <%= @event_news_feed.tag_ids.include?(tag.id.to_s) ? "checked=checked" : "" %> class="tag-checkbox" value="<%= tag.id.to_s %>" name="event_news_feed[tag_ids][]">
|
<input type="checkbox" <%= @event_news_feed.tag_ids.include?(tag.id.to_s) ? "checked=checked" : "" %> class="tag-checkbox" value="<%= tag.id.to_s %>" name="event_news_feed[tag_ids][]">
|
||||||
</p>
|
</p>
|
||||||
<div>
|
<div>
|
||||||
<% @site_in_use_locales.each_with_index do |locale,index| %>
|
<% @site_in_use_locales.each_with_index do |locale,index| %>
|
||||||
<span class="tag"><%= tag.name_translations[locale] %></span>
|
<span class="tag"><%= tag.name_translations[locale] %></span>
|
||||||
<% if index < (@site_in_use_locales.count - 1) %>
|
<% if index < (@site_in_use_locales.count - 1) %>
|
||||||
/
|
/
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="categories">
|
<div class="categories">
|
||||||
<h4><%=t(:category)%></h4>
|
<h4><%=t(:category)%></h4>
|
||||||
<div id="categories-list">
|
<div id="categories-list">
|
||||||
<div class="tags-groups checkbox-card module-categories">
|
<div class="tags-groups checkbox-card module-categories">
|
||||||
<% @module_app.categories.each do |category| %>
|
<% @module_app.categories.each do |category| %>
|
||||||
<label class="filter-item module <%= @event_news_feed.category_ids.include?(category.id.to_s) ? "active" : "" %>">
|
<label class="filter-item module <%= @event_news_feed.category_ids.include?(category.id.to_s) ? "active" : "" %>">
|
||||||
<p class="card pull-left <%= @event_news_feed.category_ids.include?(category.id.to_s) ? "active" : "" %>">
|
<p class="card pull-left <%= @event_news_feed.category_ids.include?(category.id.to_s) ? "active" : "" %>">
|
||||||
<input type="checkbox" class="tag-checkbox" <%= @event_news_feed.category_ids.include?(category.id.to_s) ? "checked=checked" : "" %> value="<%= category.id.to_s %>" name="event_news_feed[category_ids][]">
|
<input type="checkbox" class="tag-checkbox" <%= @event_news_feed.category_ids.include?(category.id.to_s) ? "checked=checked" : "" %> value="<%= category.id.to_s %>" name="event_news_feed[category_ids][]">
|
||||||
</p>
|
</p>
|
||||||
<div>
|
<div>
|
||||||
<% @site_in_use_locales.each_with_index do |locale,index| %>
|
<% @site_in_use_locales.each_with_index do |locale,index| %>
|
||||||
<span class="tag"><%= category.title_translations[locale] %></span>
|
<span class="tag"><%= category.title_translations[locale] %></span>
|
||||||
<% if index < (@site_in_use_locales.count - 1) %>
|
<% if index < (@site_in_use_locales.count - 1) %>
|
||||||
/
|
/
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
|
|
|
@ -1,83 +1,83 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<%= feed.title %>
|
<%= feed.title %>
|
||||||
<div class="quick-edit">
|
<div class="quick-edit">
|
||||||
<ul class="nav nav-pills">
|
<ul class="nav nav-pills">
|
||||||
<% if can_edit_or_delete?(feed) %>
|
<% if can_edit_or_delete?(feed) %>
|
||||||
<li><a href="#" class="edit-feed" data-feed-id="<%= feed.id.to_s %>"><%= t(:edit) %></a></li>
|
<li><a href="#" class="edit-feed" data-feed-id="<%= feed.id.to_s %>"><%= t(:edit) %></a></li>
|
||||||
<li><a href="/admin/event_news/deletefeed?id=<%= feed.id.to_s %>" class="delete-feed text-error" ><%= t(:delete_) %></a></li>
|
<li><a href="/admin/event_news/deletefeed?id=<%= feed.id.to_s %>" class="delete-feed text-error" ><%= t(:delete_) %></a></li>
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="tags">
|
<div class="tags">
|
||||||
<div id="tags-list">
|
<div id="tags-list">
|
||||||
<ul class="tags-groups checkbox-card module-tags">
|
<ul class="tags-groups checkbox-card module-tags">
|
||||||
<% tags_to_remove = [] %>
|
<% tags_to_remove = [] %>
|
||||||
<% feed.tag_ids.each do |t| %>
|
<% feed.tag_ids.each do |t| %>
|
||||||
<% tag = Tag.find(t) rescue nil %>
|
<% tag = Tag.find(t) rescue nil %>
|
||||||
<% if !tag.nil? %>
|
<% if !tag.nil? %>
|
||||||
<li class="filter-item module">
|
<li class="filter-item module">
|
||||||
<a href="#" onclick="return false;">
|
<a href="#" onclick="return false;">
|
||||||
<% @site_in_use_locales.each_with_index do |locale,index| %>
|
<% @site_in_use_locales.each_with_index do |locale,index| %>
|
||||||
<span class="tag"><%= tag.name_translations[locale] %></span>
|
<span class="tag"><%= tag.name_translations[locale] %></span>
|
||||||
<% if index < (@site_in_use_locales.count - 1) %>
|
<% if index < (@site_in_use_locales.count - 1) %>
|
||||||
/
|
/
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<% else %>
|
<% else %>
|
||||||
<% tags_to_remove << t %>
|
<% tags_to_remove << t %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if !tags_to_remove.blank?
|
<% if !tags_to_remove.blank?
|
||||||
tags_to_remove.each do |t|
|
tags_to_remove.each do |t|
|
||||||
feed.tag_ids.delete(t)
|
feed.tag_ids.delete(t)
|
||||||
end
|
end
|
||||||
feed.save
|
feed.save
|
||||||
end %>
|
end %>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="categories">
|
<div class="categories">
|
||||||
<div id="categories-list">
|
<div id="categories-list">
|
||||||
<ul class="tags-groups checkbox-card module-categories">
|
<ul class="tags-groups checkbox-card module-categories">
|
||||||
<% categories_to_remove = [] %>
|
<% categories_to_remove = [] %>
|
||||||
<% feed.category_ids.each do |c| %>
|
<% feed.category_ids.each do |c| %>
|
||||||
<% category = Category.find(c) rescue nil %>
|
<% category = Category.find(c) rescue nil %>
|
||||||
<% if !category.nil? %>
|
<% if !category.nil? %>
|
||||||
<li class="filter-item module">
|
<li class="filter-item module">
|
||||||
<a href="#" onclick="return false;">
|
<a href="#" onclick="return false;">
|
||||||
<% @site_in_use_locales.each_with_index do |locale,index| %>
|
<% @site_in_use_locales.each_with_index do |locale,index| %>
|
||||||
<span class="tag"><%= category.title_translations[locale] %></span>
|
<span class="tag"><%= category.title_translations[locale] %></span>
|
||||||
<% if index < (@site_in_use_locales.count - 1) %>
|
<% if index < (@site_in_use_locales.count - 1) %>
|
||||||
/
|
/
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<% else %>
|
<% else %>
|
||||||
<% categories_to_remove << c %>
|
<% categories_to_remove << c %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if !categories_to_remove.blank?
|
<% if !categories_to_remove.blank?
|
||||||
categories_to_remove.each do |c|
|
categories_to_remove.each do |c|
|
||||||
feed.category_ids.delete(c)
|
feed.category_ids.delete(c)
|
||||||
end
|
end
|
||||||
feed.save
|
feed.save
|
||||||
end %>
|
end %>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="/xhr/event_news/rssfeed/<%= feed.uid %>.rss" target="_blank">RSS Feed</a>
|
<a href="/xhr/event_news/rssfeed/<%= feed.uid %>.rss" target="_blank">RSS Feed</a>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="/xhr/event_news/feed/<%= feed.uid %>.json" target="_blank">JSON Feed</a>
|
<a href="/xhr/event_news/feed/<%= feed.uid %>.json" target="_blank">JSON Feed</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
|
@ -1,61 +1,61 @@
|
||||||
<%= form_for @event_news_feed, url: admin_event_news_createfeed_path, html: {class: "form-horizontal main-forms"} do |f| %>
|
<%= form_for @event_news_feed, url: admin_event_news_createfeed_path, html: {class: "form-horizontal main-forms"} do |f| %>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<% @site_in_use_locales.each do |locale| %>
|
<% @site_in_use_locales.each do |locale| %>
|
||||||
<%= f.fields_for :title_translations do |f| %>
|
<%= f.fields_for :title_translations do |f| %>
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<label class="control-label muted" for="event_news_feed_title_translations_<%= locale.to_s %>"><%= t(:title) + " (#{t(locale.to_s)})" %></label>
|
<label class="control-label muted" for="event_news_feed_title_translations_<%= locale.to_s %>"><%= t(:title) + " (#{t(locale.to_s)})" %></label>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<%= f.text_field locale, data: {"fv-validation" => "required;","fv-messages" => "Cannot be empty.;"}, value: (@event_news_feed.title_translations[locale.to_s] rescue nil) %>
|
<%= f.text_field locale, data: {"fv-validation" => "required;","fv-messages" => "Cannot be empty.;"}, value: (@event_news_feed.title_translations[locale.to_s] rescue nil) %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<hr />
|
<hr />
|
||||||
<div class="tags">
|
<div class="tags">
|
||||||
<h4><%=t(:tags)%></h4>
|
<h4><%=t(:tags)%></h4>
|
||||||
<div id="tags-list">
|
<div id="tags-list">
|
||||||
<div class="tags-groups checkbox-card module-tags">
|
<div class="tags-groups checkbox-card module-tags">
|
||||||
<% @module_app.tags.each do |tag| %>
|
<% @module_app.tags.each do |tag| %>
|
||||||
<label class="filter-item module">
|
<label class="filter-item module">
|
||||||
<p class="card pull-left">
|
<p class="card pull-left">
|
||||||
<input type="checkbox" class="tag-checkbox" value="<%= tag.id.to_s %>" name="event_news_feed[tag_ids][]">
|
<input type="checkbox" class="tag-checkbox" value="<%= tag.id.to_s %>" name="event_news_feed[tag_ids][]">
|
||||||
</p>
|
</p>
|
||||||
<div>
|
<div>
|
||||||
<% @site_in_use_locales.each_with_index do |locale,index| %>
|
<% @site_in_use_locales.each_with_index do |locale,index| %>
|
||||||
<span class="tag"><%= tag.name_translations[locale] %></span>
|
<span class="tag"><%= tag.name_translations[locale] %></span>
|
||||||
<% if index < (@site_in_use_locales.count - 1) %>
|
<% if index < (@site_in_use_locales.count - 1) %>
|
||||||
/
|
/
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="categories">
|
<div class="categories">
|
||||||
<h4><%=t(:category)%></h4>
|
<h4><%=t(:category)%></h4>
|
||||||
<div id="categories-list">
|
<div id="categories-list">
|
||||||
<div class="tags-groups checkbox-card module-categories">
|
<div class="tags-groups checkbox-card module-categories">
|
||||||
<% @module_app.categories.each do |category| %>
|
<% @module_app.categories.each do |category| %>
|
||||||
<label class="filter-item module">
|
<label class="filter-item module">
|
||||||
<p class="card pull-left">
|
<p class="card pull-left">
|
||||||
<input type="checkbox" class="tag-checkbox" value="<%= category.id.to_s %>" name="event_news_feed[category_ids][]">
|
<input type="checkbox" class="tag-checkbox" value="<%= category.id.to_s %>" name="event_news_feed[category_ids][]">
|
||||||
</p>
|
</p>
|
||||||
<div>
|
<div>
|
||||||
<% @site_in_use_locales.each_with_index do |locale,index| %>
|
<% @site_in_use_locales.each_with_index do |locale,index| %>
|
||||||
<span class="tag"><%= category.title_translations[locale] %></span>
|
<span class="tag"><%= category.title_translations[locale] %></span>
|
||||||
<% if index < (@site_in_use_locales.count - 1) %>
|
<% if index < (@site_in_use_locales.count - 1) %>
|
||||||
/
|
/
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,69 +1,69 @@
|
||||||
<% if form_file.new_record? %>
|
<% if form_file.new_record? %>
|
||||||
<div class="fileupload fileupload-new start-line" data-provides="fileupload">
|
<div class="fileupload fileupload-new start-line" data-provides="fileupload">
|
||||||
<% else %>
|
<% else %>
|
||||||
<div class="fileupload fileupload-exists start-line" data-provides="fileupload">
|
<div class="fileupload fileupload-exists start-line" data-provides="fileupload">
|
||||||
<% if form_file.file.blank? %>
|
<% if form_file.file.blank? %>
|
||||||
<%= t(:no_file) %>
|
<%= t(:no_file) %>
|
||||||
<% else %>
|
<% 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} %>
|
<%= 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 %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<div class="input-prepend input-append">
|
<div class="input-prepend input-append">
|
||||||
<label>
|
<label>
|
||||||
<span class="add-on btn btn-file" title='<%= t(:file_) %>'>
|
<span class="add-on btn btn-file" title='<%= t(:file_) %>'>
|
||||||
<i class="icons-paperclip"></i>
|
<i class="icons-paperclip"></i>
|
||||||
<%= f.file_field :file %>
|
<%= f.file_field :file %>
|
||||||
</span>
|
</span>
|
||||||
<div class="uneditable-input input-medium">
|
<div class="uneditable-input input-medium">
|
||||||
<i class="icon-file fileupload-exists"></i>
|
<i class="icon-file fileupload-exists"></i>
|
||||||
<span class="fileupload-preview"><%= (form_file.new_record? || form_file.file.blank?) ? t(:select_file) : t(:change_file) %></span>
|
<span class="fileupload-preview"><%= (form_file.new_record? || form_file.file.blank?) ? t(:select_file) : t(:change_file) %></span>
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
<span class="add-on icons-pencil" title='<%= t(:alternative) %>'></span>
|
<span class="add-on icons-pencil" title='<%= t(:alternative) %>'></span>
|
||||||
<span class="tab-content">
|
<span class="tab-content">
|
||||||
<% @site_in_use_locales.each_with_index do |locale, i| %>
|
<% @site_in_use_locales.each_with_index do |locale, i| %>
|
||||||
<span class="tab-pane fade <%= ( i == 0 ) ? "in active" : '' %> <%= locale %>">
|
<span class="tab-pane fade <%= ( i == 0 ) ? "in active" : '' %> <%= locale %>">
|
||||||
<%= f.fields_for :title_translations do |f| %>
|
<%= 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) %>
|
<%= f.text_field locale, :class => "input-medium", placeholder: t(:alternative), :value => (form_file.title_translations[locale] rescue nil) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</span>
|
</span>
|
||||||
<% end %>
|
<% end %>
|
||||||
</span>
|
</span>
|
||||||
<span class="add-on icons-pencil" title='<%= t(:description) %>'></span>
|
<span class="add-on icons-pencil" title='<%= t(:description) %>'></span>
|
||||||
<span class="tab-content">
|
<span class="tab-content">
|
||||||
<% @site_in_use_locales.each_with_index do |locale, i| %>
|
<% @site_in_use_locales.each_with_index do |locale, i| %>
|
||||||
<span class="tab-pane fade <%= ( i == 0 ) ? "in active" : '' %> <%= locale %>">
|
<span class="tab-pane fade <%= ( i == 0 ) ? "in active" : '' %> <%= locale %>">
|
||||||
<%= f.fields_for :description_translations do |f| %>
|
<%= 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) %>
|
<%= f.text_field locale, :class => "input-medium", placeholder: t(:description), :value => (form_file.description_translations[locale] rescue nil) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</span>
|
</span>
|
||||||
<% end %>
|
<% end %>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
<span class="add-on btn-group btn" title="<%= t('archive.show_lang') %>">
|
<span class="add-on btn-group btn" title="<%= t('archive.show_lang') %>">
|
||||||
<i class="icons-earth"></i> <span class="caret"></span>
|
<i class="icons-earth"></i> <span class="caret"></span>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
<% @site_in_use_locales.each do |locale| %>
|
<% @site_in_use_locales.each do |locale| %>
|
||||||
<li>
|
<li>
|
||||||
<label class="checkbox">
|
<label class="checkbox">
|
||||||
<%= check_box_tag "event_news[event_news_files_attributes][#{( form_file.new_record? ? 'new_event_news_files' : "#{i}" )}][choose_lang][]", locale, form_file.choose_lang.include?(locale.to_s) %>
|
<%= check_box_tag "event_news[event_news_files_attributes][#{( form_file.new_record? ? 'new_event_news_files' : "#{i}" )}][choose_lang][]", locale, form_file.choose_lang.include?(locale.to_s) %>
|
||||||
<%= t(locale.to_s) %>
|
<%= t(locale.to_s) %>
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
<%= hidden_field_tag "event_news[event_news_files_attributes][#{( form_file.new_record? ? 'new_event_news_files' : "#{i}" )}][choose_lang][]", '' %>
|
<%= hidden_field_tag "event_news[event_news_files_attributes][#{( form_file.new_record? ? 'new_event_news_files' : "#{i}" )}][choose_lang][]", '' %>
|
||||||
</span>
|
</span>
|
||||||
<% if form_file.new_record? %>
|
<% if form_file.new_record? %>
|
||||||
<span class="delete_file add-on btn" title="<%= t(:delete_) %>">
|
<span class="delete_file add-on btn" title="<%= t(:delete_) %>">
|
||||||
<a class="icon-trash"></a>
|
<a class="icon-trash"></a>
|
||||||
</span>
|
</span>
|
||||||
<% else %>
|
<% else %>
|
||||||
<span class="remove_existing_record add-on btn" title="<%= t(:remove) %>">
|
<span class="remove_existing_record add-on btn" title="<%= t(:remove) %>">
|
||||||
<%= f.hidden_field :id %>
|
<%= f.hidden_field :id %>
|
||||||
<a class="icon-remove"></a>
|
<a class="icon-remove"></a>
|
||||||
<%= f.hidden_field :_destroy, :value => nil, :class => 'should_destroy' %>
|
<%= f.hidden_field :_destroy, :value => nil, :class => 'should_destroy' %>
|
||||||
</span>
|
</span>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,49 +1,49 @@
|
||||||
<!-- Images Upload -->
|
<!-- Images Upload -->
|
||||||
<div class="image_group">
|
<div class="image_group">
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<label class="control-label muted"><%= t(:image) %></label>
|
<label class="control-label muted"><%= t(:image) %></label>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<div class="fileupload fileupload-new clearfix <%= 'fileupload-edit' if form_image.file.present? %>" data-provides="fileupload">
|
<div class="fileupload fileupload-new clearfix <%= 'fileupload-edit' if form_image.file.present? %>" data-provides="fileupload">
|
||||||
<div class="fileupload-new thumbnail pull-left">
|
<div class="fileupload-new thumbnail pull-left">
|
||||||
<% if form_image.file.file %>
|
<% if form_image.file.file %>
|
||||||
<%= image_tag form_image.file %>
|
<%= image_tag form_image.file %>
|
||||||
<% else %>
|
<% else %>
|
||||||
<img src="http://www.placehold.it/50x50/EFEFEF/AAAAAA" />
|
<img src="http://www.placehold.it/50x50/EFEFEF/AAAAAA" />
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<div class="fileupload-preview fileupload-exists thumbnail pull-left"></div>
|
<div class="fileupload-preview fileupload-exists thumbnail pull-left"></div>
|
||||||
<span class="btn btn-file">
|
<span class="btn btn-file">
|
||||||
<span class="fileupload-new"><%= t(:select_image) %></span>
|
<span class="fileupload-new"><%= t(:select_image) %></span>
|
||||||
<span class="fileupload-exists"><%= t(:change) %></span>
|
<span class="fileupload-exists"><%= t(:change) %></span>
|
||||||
<%= f.file_field :file %>
|
<%= f.file_field :file %>
|
||||||
</span>
|
</span>
|
||||||
<a href="#" class="btn fileupload-exists" data-dismiss="fileupload"><%= t(:cancel) %></a>
|
<a href="#" class="btn fileupload-exists" data-dismiss="fileupload"><%= t(:cancel) %></a>
|
||||||
<div class="controls" data-toggle="buttons-checkbox">
|
<div class="controls" data-toggle="buttons-checkbox">
|
||||||
<label class="checkbox inline btn btn-danger fileupload-remove">
|
<label class="checkbox inline btn btn-danger fileupload-remove">
|
||||||
<% if form_image.new_record? %>
|
<% if form_image.new_record? %>
|
||||||
<span class="delete_file delete_image add-on" title="<%= t(:delete_) %>">
|
<span class="delete_file delete_image add-on" title="<%= t(:delete_) %>">
|
||||||
<%= t(:delete_) %>
|
<%= t(:delete_) %>
|
||||||
</span>
|
</span>
|
||||||
<% else %>
|
<% else %>
|
||||||
<span class="remove_existing_record add-on" title="<%= t(:remove) %>">
|
<span class="remove_existing_record add-on" title="<%= t(:remove) %>">
|
||||||
<%= f.hidden_field :id %>
|
<%= f.hidden_field :id %>
|
||||||
<%= f.hidden_field :_destroy, :value => nil, :class => 'should_destroy' %>
|
<%= f.hidden_field :_destroy, :value => nil, :class => 'should_destroy' %>
|
||||||
<%= t(:remove) %>
|
<%= t(:remove) %>
|
||||||
</span>
|
</span>
|
||||||
<% end %>
|
<% end %>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% @site_in_use_locales.each do |locale| %>
|
<% @site_in_use_locales.each do |locale| %>
|
||||||
<%= f.fields_for :description_translations do |f| %>
|
<%= f.fields_for :description_translations do |f| %>
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<label class="control-label muted" for="image_description_<%= locale.to_s %>"><%= t(:description) + " (#{t(locale.to_s)})" %></label>
|
<label class="control-label muted" for="image_description_<%= locale.to_s %>"><%= t(:description) + " (#{t(locale.to_s)})" %></label>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<%= f.text_field locale, value: (form_image.description_translations[locale.to_s] rescue nil) %>
|
<%= f.text_field locale, value: (form_image.description_translations[locale.to_s] rescue nil) %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
|
@ -1,26 +1,26 @@
|
||||||
<div class="input-prepend input-append start-line">
|
<div class="input-prepend input-append start-line">
|
||||||
<span class="add-on icons-link" title="<%= t(:url) %>"></span>
|
<span class="add-on icons-link" title="<%= t(:url) %>"></span>
|
||||||
<%= f.text_field :url, class: "input-large", placeholder: t(:url) %>
|
<%= f.text_field :url, class: "input-large", placeholder: t(:url) %>
|
||||||
<span class="add-on icons-pencil" title="<%= t(:url_alt) %>"></span>
|
<span class="add-on icons-pencil" title="<%= t(:url_alt) %>"></span>
|
||||||
<span class="tab-content">
|
<span class="tab-content">
|
||||||
<% @site_in_use_locales.each_with_index do |locale, i| %>
|
<% @site_in_use_locales.each_with_index do |locale, i| %>
|
||||||
<span class="tab-pane fade <%= ( i == 0 ) ? "in active" : '' %> <%= locale %>">
|
<span class="tab-pane fade <%= ( i == 0 ) ? "in active" : '' %> <%= locale %>">
|
||||||
<%= f.fields_for :title_translations do |f| %>
|
<%= 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) %>
|
<%= f.text_field locale, :class => "input-large", placeholder: t(:url_alt), :value => (form_link.title_translations[locale] rescue nil) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</span>
|
</span>
|
||||||
<% end %>
|
<% end %>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<% if form_link.new_record? %>
|
<% if form_link.new_record? %>
|
||||||
<span class="delete_link add-on btn" title="<%= t(:delete_) %>">
|
<span class="delete_link add-on btn" title="<%= t(:delete_) %>">
|
||||||
<a class="icon-trash"></a>
|
<a class="icon-trash"></a>
|
||||||
</span>
|
</span>
|
||||||
<% else %>
|
<% else %>
|
||||||
<span class="remove_existing_record add-on btn" title="<%= t(:remove) %>">
|
<span class="remove_existing_record add-on btn" title="<%= t(:remove) %>">
|
||||||
<%= f.hidden_field :id %>
|
<%= f.hidden_field :id %>
|
||||||
<a class="icon-remove"></a>
|
<a class="icon-remove"></a>
|
||||||
<%= f.hidden_field :_destroy, :value => nil, :class => 'should_destroy' %>
|
<%= f.hidden_field :_destroy, :value => nil, :class => 'should_destroy' %>
|
||||||
</span>
|
</span>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,99 +1,99 @@
|
||||||
<script>
|
<script>
|
||||||
if(document.querySelectorAll("#orbit-bar").length==0) location.reload();
|
if(document.querySelectorAll("#orbit-bar").length==0) location.reload();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<table class="table main-list">
|
<table class="table main-list">
|
||||||
<thead>
|
<thead>
|
||||||
<tr class="sort-header">
|
<tr class="sort-header">
|
||||||
<% @table_fields.each do |f| %>
|
<% @table_fields.each do |f| %>
|
||||||
<%= tmp = f.to_s.split('.')[-1]; EventNewsCustomTitle::KEYS.include?(tmp) ? Admin::EventNewsHelper.thead(tmp): thead(f) %>
|
<%= tmp = f.to_s.split('.')[-1]; EventNewsCustomTitle::KEYS.include?(tmp) ? Admin::EventNewsHelper.thead(tmp): thead(f) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<% @event_news.each do |b| %>
|
<% @event_news.each do |b| %>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<%= b.status_for_table %>
|
<%= b.status_for_table %>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<%= b.category.title rescue "" %>
|
<%= b.category.title rescue "" %>
|
||||||
<% if (b.category.disable rescue false) %>
|
<% if (b.category.disable rescue false) %>
|
||||||
<span class='label'><%= t(:disabled) %></span>
|
<span class='label'><%= t(:disabled) %></span>
|
||||||
<% end %>
|
<% end %>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<% if b.expired? || (b.category.disable rescue false)%>
|
<% if b.expired? || (b.category.disable rescue false)%>
|
||||||
<%= b.title.to_s.html_safe %>
|
<%= b.title.to_s.html_safe %>
|
||||||
<% else %>
|
<% else %>
|
||||||
<a href="<%= page_for_event_news(b) %>" target="_blank"><%= b.title.to_s.html_safe %></a>
|
<a href="<%= page_for_event_news(b) %>" target="_blank"><%= b.title.to_s.html_safe %></a>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% if b.expired? %>
|
<% if b.expired? %>
|
||||||
<span class='label'><%= t(:expired) %></span>
|
<span class='label'><%= t(:expired) %></span>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% if b.reapproval %>
|
<% if b.reapproval %>
|
||||||
<span class='label'><%= t("event_news.reapproval") + " " + t(:pending) %></span>
|
<span class='label'><%= t("event_news.reapproval") + " " + t(:pending) %></span>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if b.rejected %>
|
<% if b.rejected %>
|
||||||
<span class='label'><%= t(:rejected) %> : <%= b.rejection_reason rescue "" %></span>
|
<span class='label'><%= t(:rejected) %> : <%= b.rejection_reason rescue "" %></span>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if !b.approved? && !b.rejected %>
|
<% if !b.approved? && !b.rejected %>
|
||||||
<span class='label'><%= t(:pending) %></span>
|
<span class='label'><%= t(:pending) %></span>
|
||||||
<% end %>
|
<% end %>
|
||||||
<div class="quick-edit">
|
<div class="quick-edit">
|
||||||
<ul class="nav nav-pills">
|
<ul class="nav nav-pills">
|
||||||
<li><a href="#" class="detail-row" onclick="$('#<%= "#{b.id.to_s}-detail" %>').slideToggle(300); return false;"><%= t(:detail) %></a></li>
|
<li><a href="#" class="detail-row" onclick="$('#<%= "#{b.id.to_s}-detail" %>').slideToggle(300); return false;"><%= t(:detail) %></a></li>
|
||||||
<% if can_edit_or_delete?(b) %>
|
<% if can_edit_or_delete?(b) %>
|
||||||
<li><a href="/admin/event_news/<%=b.id.to_s%>/edit"><%= t(:edit) %></a></li>
|
<li><a href="/admin/event_news/<%=b.id.to_s%>/edit"><%= t(:edit) %></a></li>
|
||||||
<li><a href="#" class="delete text-error" rel="/admin/event_news/<%=b.id.to_s%>"><%= t(:delete_) %></a></li>
|
<li><a href="#" class="delete text-error" rel="/admin/event_news/<%=b.id.to_s%>"><%= t(:delete_) %></a></li>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if ((!b.approved && !b.rejected && !b.reapproval) || (b.rejected && b.reapproval)) && user_can_approve?(b) %>
|
<% if ((!b.approved && !b.rejected && !b.reapproval) || (b.rejected && b.reapproval)) && user_can_approve?(b) %>
|
||||||
<li><a href="<%= page_for_event_news(b) %>" class="approval_button" data-id="<%= b.id.to_s %>" ><%= t("event_news.approval_waiting") %></a></li>
|
<li><a href="<%= page_for_event_news(b) %>" class="approval_button" data-id="<%= b.id.to_s %>" ><%= t("event_news.approval_waiting") %></a></li>
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td><%= format_value b.event_date %></td>
|
<td><%= format_value b.event_date %></td>
|
||||||
<td><%= format_value b.postdate %></td>
|
<td><%= format_value b.postdate %></td>
|
||||||
<td class="<%= b.expired? ? "expired" : "" %>"><%= format_value b.deadline %></td>
|
<td class="<%= b.expired? ? "expired" : "" %>"><%= format_value b.deadline %></td>
|
||||||
<td><%= b.update_user.user_name rescue ""%></td>
|
<td><%= b.update_user.user_name rescue ""%></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="footable-row-detail">
|
<tr class="footable-row-detail">
|
||||||
<td class="footable-cell-detail" colspan="6">
|
<td class="footable-cell-detail" colspan="6">
|
||||||
<div id="<%= "#{b.id.to_s}-detail" %>" class="footable-row-detail-inner" style="display: none;">
|
<div id="<%= "#{b.id.to_s}-detail" %>" class="footable-row-detail-inner" style="display: none;">
|
||||||
<div>
|
<div>
|
||||||
<strong><%= t(:view_count) %></strong> :
|
<strong><%= t(:view_count) %></strong> :
|
||||||
<span class="label label-info"><%= b.view_count %></span>
|
<span class="label label-info"><%= b.view_count %></span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<strong><%= t(:tags) %></strong> :
|
<strong><%= t(:tags) %></strong> :
|
||||||
<% b.tags.each do |tag| %>
|
<% b.tags.each do |tag| %>
|
||||||
<span class="label label-warning"><%= tag.name %></span>
|
<span class="label label-warning"><%= tag.name %></span>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<strong><%= t("event_news.email_to") %></strong> :
|
<strong><%= t("event_news.email_to") %></strong> :
|
||||||
<% b.email_members.each do |member| %>
|
<% b.email_members.each do |member| %>
|
||||||
<span class="label"><%= member.name %></span>
|
<span class="label"><%= member.name %></span>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% unless b.other_mailaddress.nil? %>
|
<% unless b.other_mailaddress.nil? %>
|
||||||
<% b.other_mailaddress.split(',').each do |mailaddress| %>
|
<% b.other_mailaddress.split(',').each do |mailaddress| %>
|
||||||
<span class="label"><%= mailaddress %></span>
|
<span class="label"><%= mailaddress %></span>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<% end %>
|
<% end %>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<%=
|
<%=
|
||||||
content_tag :div, class: "bottomnav clearfix" do
|
content_tag :div, class: "bottomnav clearfix" do
|
||||||
content_tag(:div, paginate(@event_news), class: "pagination pagination-centered") +
|
content_tag(:div, paginate(@event_news), class: "pagination pagination-centered") +
|
||||||
content_tag(:div, link_to(t(:new_),new_admin_event_news_path, :class=>"btn btn-primary"), class: "pull-right")
|
content_tag(:div, link_to(t(:new_),new_admin_event_news_path, :class=>"btn btn-primary"), class: "pull-right")
|
||||||
end
|
end
|
||||||
%>
|
%>
|
||||||
|
|
|
@ -1,26 +1,26 @@
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
.tab-panel .tab-content{
|
.tab-panel .tab-content{
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.tab-panel .tab-content.active{
|
.tab-panel .tab-content.active{
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
.tab-panel .tab-content,.tab-panel .btn-group{
|
.tab-panel .tab-content,.tab-panel .btn-group{
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<%= form_tag({action: 'update_custom_title',method: 'post'}, {class: "form-horizontal main-forms previewable"}) do %>
|
<%= form_tag({action: 'update_custom_title',method: 'post'}, {class: "form-horizontal main-forms previewable"}) do %>
|
||||||
<% Admin::EventNewsHelper::FormHelper.set_input_name("event_news_custom_title") %>
|
<% Admin::EventNewsHelper::FormHelper.set_input_name("event_news_custom_title") %>
|
||||||
<% @event_news_custom_titles.each_with_index do |v,i| %>
|
<% @event_news_custom_titles.each_with_index do |v,i| %>
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<%= label_tag :title , v.default_title, :class=>"control-label muted" %>
|
<%= label_tag :title , v.default_title, :class=>"control-label muted" %>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<%= hidden_field_tag "event_news_custom_title[#{i}][id]", v.id %>
|
<%= hidden_field_tag "event_news_custom_title[#{i}][id]", v.id %>
|
||||||
<%= Admin::EventNewsHelper::FormHelper.multiple_lang_tag(i,'text_field','title_translations',v.title_translations,{placeholder: v.default_title}) %>
|
<%= Admin::EventNewsHelper::FormHelper.multiple_lang_tag(i,'text_field','title_translations',v.title_translations,{placeholder: v.default_title}) %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<div class="form-actions">
|
<div class="form-actions">
|
||||||
<%= submit_tag t(:submit),class: 'btn btn-primary' %>
|
<%= submit_tag t(:submit),class: 'btn btn-primary' %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
|
@ -1,5 +1,5 @@
|
||||||
<%= form_for @event_news, url: admin_event_news_path(@event_news), html: {class: "form-horizontal main-forms previewable"} do |f| %>
|
<%= form_for @event_news, url: admin_event_news_path(@event_news), html: {class: "form-horizontal main-forms previewable"} do |f| %>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<%= render :partial => 'form', locals: {f: f} %>
|
<%= render :partial => 'form', locals: {f: f} %>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<% end %>
|
<% end %>
|
|
@ -1,167 +1,167 @@
|
||||||
# encoding: utf-8
|
# encoding: utf-8
|
||||||
|
|
||||||
wb = xlsx_package.workbook
|
wb = xlsx_package.workbook
|
||||||
|
|
||||||
wb.add_worksheet(name: "EventNewsModule") do |sheet|
|
wb.add_worksheet(name: "EventNewsModule") do |sheet|
|
||||||
|
|
||||||
heading = sheet.styles.add_style(:b => true, :locked => true)
|
heading = sheet.styles.add_style(:b => true, :locked => true)
|
||||||
example = sheet.styles.add_style(:i => true)
|
example = sheet.styles.add_style(:i => true)
|
||||||
row = []
|
row = []
|
||||||
row1 = []
|
row1 = []
|
||||||
row2 = []
|
row2 = []
|
||||||
|
|
||||||
row << t("category")
|
row << t("category")
|
||||||
row1 << "select"
|
row1 << "select"
|
||||||
t = ""
|
t = ""
|
||||||
@module_app.categories.asc(:created_at).each_with_index do |cat,i|
|
@module_app.categories.asc(:created_at).each_with_index do |cat,i|
|
||||||
t = t + "#{i}" + " -> " + cat.title + ", "
|
t = t + "#{i}" + " -> " + cat.title + ", "
|
||||||
end
|
end
|
||||||
if @module_app.categories.count > 0
|
if @module_app.categories.count > 0
|
||||||
t = t + " Example : 0"
|
t = t + " Example : 0"
|
||||||
else
|
else
|
||||||
t = "Leave this field blank"
|
t = "Leave this field blank"
|
||||||
end
|
end
|
||||||
row2 << t
|
row2 << t
|
||||||
|
|
||||||
row << t("tags")
|
row << t("tags")
|
||||||
row1 << "select"
|
row1 << "select"
|
||||||
t = ""
|
t = ""
|
||||||
@module_app.tags.asc(:created_at).each_with_index do |tag,i|
|
@module_app.tags.asc(:created_at).each_with_index do |tag,i|
|
||||||
t = t + "#{i}" + " -> " + tag.name + ", "
|
t = t + "#{i}" + " -> " + tag.name + ", "
|
||||||
end
|
end
|
||||||
if @module_app.tags.count > 0
|
if @module_app.tags.count > 0
|
||||||
t = t + " Example : 0,1,2"
|
t = t + " Example : 0,1,2"
|
||||||
else
|
else
|
||||||
t = "Leave this field blank"
|
t = "Leave this field blank"
|
||||||
end
|
end
|
||||||
row2 << t
|
row2 << t
|
||||||
|
|
||||||
row << t("event_news.event_date")
|
row << t("event_news.event_date")
|
||||||
row1 << "datetime"
|
row1 << "datetime"
|
||||||
row2 << "Format: YYYY/MM/DD HH:mm, Example: 2015/12/10 15:20"
|
row2 << "Format: YYYY/MM/DD HH:mm, Example: 2015/12/10 15:20"
|
||||||
|
|
||||||
row << t("event_news.start_date")
|
row << t("event_news.start_date")
|
||||||
row1 << "datetime"
|
row1 << "datetime"
|
||||||
row2 << "Format: YYYY/MM/DD HH:mm, Example: 2015/12/10 15:30"
|
row2 << "Format: YYYY/MM/DD HH:mm, Example: 2015/12/10 15:30"
|
||||||
|
|
||||||
row << t("event_news.end_date")
|
row << t("event_news.end_date")
|
||||||
row1 << "datetime"
|
row1 << "datetime"
|
||||||
row2 << "Format: YYYY/MM/DD HH:mm, Example: 2015/12/12 17:30"
|
row2 << "Format: YYYY/MM/DD HH:mm, Example: 2015/12/12 17:30"
|
||||||
|
|
||||||
row << t("top")
|
row << t("top")
|
||||||
row1 << "boolean"
|
row1 << "boolean"
|
||||||
row2 << "0 for false, 1 for true"
|
row2 << "0 for false, 1 for true"
|
||||||
|
|
||||||
row << t("hot")
|
row << t("hot")
|
||||||
row1 << "boolean"
|
row1 << "boolean"
|
||||||
row2 << "0 for false, 1 for true"
|
row2 << "0 for false, 1 for true"
|
||||||
|
|
||||||
row << t("hide")
|
row << t("hide")
|
||||||
row1 << "boolean"
|
row1 << "boolean"
|
||||||
row2 << "0 for false, 1 for true "
|
row2 << "0 for false, 1 for true "
|
||||||
|
|
||||||
row << t("image")
|
row << t("image")
|
||||||
row1 << "url"
|
row1 << "url"
|
||||||
row2 << "http://www.example.com/images/example.png"
|
row2 << "http://www.example.com/images/example.png"
|
||||||
|
|
||||||
row << t("image") + " " + t("description") + " - " + t("en")
|
row << t("image") + " " + t("description") + " - " + t("en")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
row << t("image") + " " + t("description") + " - " + t("zh_tw")
|
row << t("image") + " " + t("description") + " - " + t("zh_tw")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
|
|
||||||
row << t("title") + " - " + t("en")
|
row << t("title") + " - " + t("en")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
row << t("title") + " - " + t("zh_tw")
|
row << t("title") + " - " + t("zh_tw")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
|
|
||||||
row << t("event_news.speaker") + " - " + t("en")
|
row << t("event_news.speaker") + " - " + t("en")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
row << t("event_news.speaker") + " - " + t("zh_tw")
|
row << t("event_news.speaker") + " - " + t("zh_tw")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
|
|
||||||
row << t("event_news.host") + " - " + t("en")
|
row << t("event_news.host") + " - " + t("en")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
row << t("event_news.host") + " - " + t("zh_tw")
|
row << t("event_news.host") + " - " + t("zh_tw")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
|
|
||||||
row << t("subtitle") + " - " + t("en")
|
row << t("subtitle") + " - " + t("en")
|
||||||
row1 << "textarea"
|
row1 << "textarea"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
row << t("subtitle") + " - " + t("zh_tw")
|
row << t("subtitle") + " - " + t("zh_tw")
|
||||||
row1 << "textarea"
|
row1 << "textarea"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
|
|
||||||
row << t("content") + " - " + t("en")
|
row << t("content") + " - " + t("en")
|
||||||
row1 << "editor"
|
row1 << "editor"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
row << t("content") + " - " + t("zh_tw")
|
row << t("content") + " - " + t("zh_tw")
|
||||||
row1 << "editor"
|
row1 << "editor"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
|
|
||||||
row << t("event_news.notes") + " - " + t("en")
|
row << t("event_news.notes") + " - " + t("en")
|
||||||
row1 << "editor"
|
row1 << "editor"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
row << t("event_news.notes") + " - " + t("zh_tw")
|
row << t("event_news.notes") + " - " + t("zh_tw")
|
||||||
row1 << "editor"
|
row1 << "editor"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
|
|
||||||
row << t("link")
|
row << t("link")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << "Seperate with ';'. Example: http://rulingcom.com; http://google.com"
|
row2 << "Seperate with ';'. Example: http://rulingcom.com; http://google.com"
|
||||||
|
|
||||||
row << t("link") + " " + t("url_alt") + " - " + t("en")
|
row << t("link") + " " + t("url_alt") + " - " + t("en")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << "Seperate with ';' with respective to the links in the link columns. Example : Rulingcom official site; Google search engine"
|
row2 << "Seperate with ';' with respective to the links in the link columns. Example : Rulingcom official site; Google search engine"
|
||||||
row << t("link") + " " + t("url_alt") + " - " + t("zh_tw")
|
row << t("link") + " " + t("url_alt") + " - " + t("zh_tw")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << "Seperate with ';' with respective to the links in the link columns. Example : Rulingcom official site; Google search engine"
|
row2 << "Seperate with ';' with respective to the links in the link columns. Example : Rulingcom official site; Google search engine"
|
||||||
|
|
||||||
row << t("file_")
|
row << t("file_")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << "Seperate with ';'. Example: http://www.example.com/images/example.png; http://www.example.com/images/example2.png"
|
row2 << "Seperate with ';'. Example: http://www.example.com/images/example.png; http://www.example.com/images/example2.png"
|
||||||
|
|
||||||
row << t("file_") + " " + t("description") + " - " + t("en")
|
row << t("file_") + " " + t("description") + " - " + t("en")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << "Seperate with ';' with respective to the links in the link columns. Example : Great view; Nice potrait"
|
row2 << "Seperate with ';' with respective to the links in the link columns. Example : Great view; Nice potrait"
|
||||||
row << t("file_") + " " + t("description") + " - " + t("zh_tw")
|
row << t("file_") + " " + t("description") + " - " + t("zh_tw")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << "Seperate with ';' with respective to the links in the link columns. Example : Great view; Nice potrait"
|
row2 << "Seperate with ';' with respective to the links in the link columns. Example : Great view; Nice potrait"
|
||||||
|
|
||||||
row << t("file_") + " " + t("alternative") + " - " + t("en")
|
row << t("file_") + " " + t("alternative") + " - " + t("en")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << "Seperate with ';' with respective to the links in the link columns. Example : example1; example2"
|
row2 << "Seperate with ';' with respective to the links in the link columns. Example : example1; example2"
|
||||||
row << t("file_") + " " + t("alternative") + " - " + t("zh_tw")
|
row << t("file_") + " " + t("alternative") + " - " + t("zh_tw")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << "Seperate with ';' with respective to the links in the link columns. Example : example1; example2"
|
row2 << "Seperate with ';' with respective to the links in the link columns. Example : example1; example2"
|
||||||
|
|
||||||
row << t("event_news.place") + "-" + t("en")
|
row << t("event_news.place") + "-" + t("en")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
row << t("event_news.place") + "-" + t("zh_tw")
|
row << t("event_news.place") + "-" + t("zh_tw")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
row << t("event_news.event_end_date")
|
row << t("event_news.event_end_date")
|
||||||
row1 << "datetime"
|
row1 << "datetime"
|
||||||
row2 << "Format: YYYY/MM/DD HH:mm, Example: 2015/12/10 15:20"
|
row2 << "Format: YYYY/MM/DD HH:mm, Example: 2015/12/10 15:20"
|
||||||
row << t("event_news.carousel_image") + "-" + t("image")
|
row << t("event_news.carousel_image") + "-" + t("image")
|
||||||
row1 << "url"
|
row1 << "url"
|
||||||
row2 << "Seperate with ';'. Example: http://www.example.com/images/example.png; http://www.example.com/images/example2.png"
|
row2 << "Seperate with ';'. Example: http://www.example.com/images/example.png; http://www.example.com/images/example2.png"
|
||||||
row << t("event_news.carousel_image") + "-" + t("description") + " - " + t("en")
|
row << t("event_news.carousel_image") + "-" + t("description") + " - " + t("en")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << "Seperate with ';' with respective to the links in the link columns. Example : Great view; Nice potrait"
|
row2 << "Seperate with ';' with respective to the links in the link columns. Example : Great view; Nice potrait"
|
||||||
row << t("event_news.carousel_image") + "-" + t("description") + " - " + t("zh_tw")
|
row << t("event_news.carousel_image") + "-" + t("description") + " - " + t("zh_tw")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << "Seperate with ';' with respective to the links in the link columns. Example : Great view; Nice potrait"
|
row2 << "Seperate with ';' with respective to the links in the link columns. Example : Great view; Nice potrait"
|
||||||
sheet.add_row row, :style => heading
|
sheet.add_row row, :style => heading
|
||||||
sheet.add_row row1
|
sheet.add_row row1
|
||||||
sheet.add_row row2, :style => example
|
sheet.add_row row2, :style => example
|
||||||
|
|
||||||
end
|
end
|
|
@ -1,239 +1,239 @@
|
||||||
# encoding: utf-8
|
# encoding: utf-8
|
||||||
|
|
||||||
wb = xlsx_package.workbook
|
wb = xlsx_package.workbook
|
||||||
|
|
||||||
wb.add_worksheet(name: "EventNewsModule") do |sheet|
|
wb.add_worksheet(name: "EventNewsModule") do |sheet|
|
||||||
|
|
||||||
heading = sheet.styles.add_style(:b => true, :locked => true)
|
heading = sheet.styles.add_style(:b => true, :locked => true)
|
||||||
example = sheet.styles.add_style(:i => true)
|
example = sheet.styles.add_style(:i => true)
|
||||||
row = []
|
row = []
|
||||||
row1 = []
|
row1 = []
|
||||||
row2 = []
|
row2 = []
|
||||||
|
|
||||||
row << t("category")
|
row << t("category")
|
||||||
row1 << "select"
|
row1 << "select"
|
||||||
t = ""
|
t = ""
|
||||||
categories = @module_app.categories.asc(:created_at)
|
categories = @module_app.categories.asc(:created_at)
|
||||||
categories.each_with_index do |cat,i|
|
categories.each_with_index do |cat,i|
|
||||||
t = t + "#{i}" + " -> " + cat.title + ", "
|
t = t + "#{i}" + " -> " + cat.title + ", "
|
||||||
end
|
end
|
||||||
if categories.count > 0
|
if categories.count > 0
|
||||||
t = t + " Example : 0"
|
t = t + " Example : 0"
|
||||||
else
|
else
|
||||||
t = "Leave this field blank"
|
t = "Leave this field blank"
|
||||||
end
|
end
|
||||||
row2 << t
|
row2 << t
|
||||||
|
|
||||||
row << t("tags")
|
row << t("tags")
|
||||||
row1 << "select"
|
row1 << "select"
|
||||||
t = ""
|
t = ""
|
||||||
tags = @module_app.tags.asc(:created_at)
|
tags = @module_app.tags.asc(:created_at)
|
||||||
tags.each_with_index do |tag,i|
|
tags.each_with_index do |tag,i|
|
||||||
t = t + "#{i}" + " -> " + tag.name + ", "
|
t = t + "#{i}" + " -> " + tag.name + ", "
|
||||||
end
|
end
|
||||||
if tags.count > 0
|
if tags.count > 0
|
||||||
t = t + " Example : 0,1,2"
|
t = t + " Example : 0,1,2"
|
||||||
else
|
else
|
||||||
t = "Leave this field blank"
|
t = "Leave this field blank"
|
||||||
end
|
end
|
||||||
row2 << t
|
row2 << t
|
||||||
|
|
||||||
row << t("event_news.event_date")
|
row << t("event_news.event_date")
|
||||||
row1 << "datetime"
|
row1 << "datetime"
|
||||||
row2 << "Format: YYYY/MM/DD HH:mm, Example: 2015/12/10 15:20"
|
row2 << "Format: YYYY/MM/DD HH:mm, Example: 2015/12/10 15:20"
|
||||||
|
|
||||||
row << t("event_news.start_date")
|
row << t("event_news.start_date")
|
||||||
row1 << "datetime"
|
row1 << "datetime"
|
||||||
row2 << "Format: YYYY/MM/DD HH:mm, Example: 2015/12/10 15:30"
|
row2 << "Format: YYYY/MM/DD HH:mm, Example: 2015/12/10 15:30"
|
||||||
|
|
||||||
row << t("event_news.end_date")
|
row << t("event_news.end_date")
|
||||||
row1 << "datetime"
|
row1 << "datetime"
|
||||||
row2 << "Format: YYYY/MM/DD HH:mm, Example: 2015/12/12 17:30"
|
row2 << "Format: YYYY/MM/DD HH:mm, Example: 2015/12/12 17:30"
|
||||||
|
|
||||||
row << t("top")
|
row << t("top")
|
||||||
row1 << "boolean"
|
row1 << "boolean"
|
||||||
row2 << "0 for false, 1 for true"
|
row2 << "0 for false, 1 for true"
|
||||||
|
|
||||||
row << t("hot")
|
row << t("hot")
|
||||||
row1 << "boolean"
|
row1 << "boolean"
|
||||||
row2 << "0 for false, 1 for true"
|
row2 << "0 for false, 1 for true"
|
||||||
|
|
||||||
row << t("hide")
|
row << t("hide")
|
||||||
row1 << "boolean"
|
row1 << "boolean"
|
||||||
row2 << "0 for false, 1 for true "
|
row2 << "0 for false, 1 for true "
|
||||||
|
|
||||||
row << t("image")
|
row << t("image")
|
||||||
row1 << "url"
|
row1 << "url"
|
||||||
row2 << "http://www.example.com/images/example.png"
|
row2 << "http://www.example.com/images/example.png"
|
||||||
|
|
||||||
row << t("image") + " " + t("description") + " - " + t("en")
|
row << t("image") + " " + t("description") + " - " + t("en")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
row << t("image") + " " + t("description") + " - " + t("zh_tw")
|
row << t("image") + " " + t("description") + " - " + t("zh_tw")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
|
|
||||||
row << t("title") + " - " + t("en")
|
row << t("title") + " - " + t("en")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
row << t("title") + " - " + t("zh_tw")
|
row << t("title") + " - " + t("zh_tw")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
|
|
||||||
row << t("event_news.speaker") + " - " + t("en")
|
row << t("event_news.speaker") + " - " + t("en")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
row << t("event_news.speaker") + " - " + t("zh_tw")
|
row << t("event_news.speaker") + " - " + t("zh_tw")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
|
|
||||||
row << t("event_news.host") + " - " + t("en")
|
row << t("event_news.host") + " - " + t("en")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
row << t("event_news.host") + " - " + t("zh_tw")
|
row << t("event_news.host") + " - " + t("zh_tw")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
|
|
||||||
row << t("subtitle") + " - " + t("en")
|
row << t("subtitle") + " - " + t("en")
|
||||||
row1 << "textarea"
|
row1 << "textarea"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
row << t("subtitle") + " - " + t("zh_tw")
|
row << t("subtitle") + " - " + t("zh_tw")
|
||||||
row1 << "textarea"
|
row1 << "textarea"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
|
|
||||||
row << t("content") + " - " + t("en")
|
row << t("content") + " - " + t("en")
|
||||||
row1 << "editor"
|
row1 << "editor"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
row << t("content") + " - " + t("zh_tw")
|
row << t("content") + " - " + t("zh_tw")
|
||||||
row1 << "editor"
|
row1 << "editor"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
|
|
||||||
row << t("event_news.notes") + " - " + t("en")
|
row << t("event_news.notes") + " - " + t("en")
|
||||||
row1 << "editor"
|
row1 << "editor"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
row << t("event_news.notes") + " - " + t("zh_tw")
|
row << t("event_news.notes") + " - " + t("zh_tw")
|
||||||
row1 << "editor"
|
row1 << "editor"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
|
|
||||||
row << t("link")
|
row << t("link")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << "Seperate with ';'. Example: http://rulingcom.com; http://google.com"
|
row2 << "Seperate with ';'. Example: http://rulingcom.com; http://google.com"
|
||||||
|
|
||||||
row << t("link") + " " + t("url_alt") + " - " + t("en")
|
row << t("link") + " " + t("url_alt") + " - " + t("en")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << "Seperate with ';' with respective to the links in the link columns. Example : Rulingcom official site; Google search engine"
|
row2 << "Seperate with ';' with respective to the links in the link columns. Example : Rulingcom official site; Google search engine"
|
||||||
row << t("link") + " " + t("url_alt") + " - " + t("zh_tw")
|
row << t("link") + " " + t("url_alt") + " - " + t("zh_tw")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << "Seperate with ';' with respective to the links in the link columns. Example : Rulingcom official site; Google search engine"
|
row2 << "Seperate with ';' with respective to the links in the link columns. Example : Rulingcom official site; Google search engine"
|
||||||
|
|
||||||
row << t("file_")
|
row << t("file_")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << "Seperate with ';'. Example: http://www.example.com/images/example.png; http://www.example.com/images/example2.png"
|
row2 << "Seperate with ';'. Example: http://www.example.com/images/example.png; http://www.example.com/images/example2.png"
|
||||||
|
|
||||||
row << t("file_") + " " + t("description") + " - " + t("en")
|
row << t("file_") + " " + t("description") + " - " + t("en")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << "Seperate with ';' with respective to the links in the link columns. Example : Great view; Nice potrait"
|
row2 << "Seperate with ';' with respective to the links in the link columns. Example : Great view; Nice potrait"
|
||||||
row << t("file_") + " " + t("description") + " - " + t("zh_tw")
|
row << t("file_") + " " + t("description") + " - " + t("zh_tw")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << "Seperate with ';' with respective to the links in the link columns. Example : Great view; Nice potrait"
|
row2 << "Seperate with ';' with respective to the links in the link columns. Example : Great view; Nice potrait"
|
||||||
|
|
||||||
row << t("file_") + " " + t("alternative") + " - " + t("en")
|
row << t("file_") + " " + t("alternative") + " - " + t("en")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << "Seperate with ';' with respective to the links in the link columns. Example : example1; example2"
|
row2 << "Seperate with ';' with respective to the links in the link columns. Example : example1; example2"
|
||||||
row << t("file_") + " " + t("alternative") + " - " + t("zh_tw")
|
row << t("file_") + " " + t("alternative") + " - " + t("zh_tw")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << "Seperate with ';' with respective to the links in the link columns. Example : example1; example2"
|
row2 << "Seperate with ';' with respective to the links in the link columns. Example : example1; example2"
|
||||||
|
|
||||||
row << t("event_news.place") + "-" + t("en")
|
row << t("event_news.place") + "-" + t("en")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
row << t("event_news.place") + "-" + t("zh_tw")
|
row << t("event_news.place") + "-" + t("zh_tw")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << ""
|
row2 << ""
|
||||||
row << t("event_news.event_end_date")
|
row << t("event_news.event_end_date")
|
||||||
row1 << "datetime"
|
row1 << "datetime"
|
||||||
row2 << "Format: YYYY/MM/DD HH:mm, Example: 2015/12/10 15:20"
|
row2 << "Format: YYYY/MM/DD HH:mm, Example: 2015/12/10 15:20"
|
||||||
row << t("event_news.carousel_image") + "-" + t("image")
|
row << t("event_news.carousel_image") + "-" + t("image")
|
||||||
row1 << "url"
|
row1 << "url"
|
||||||
row2 << "Seperate with ';'. Example: http://www.example.com/images/example.png; http://www.example.com/images/example2.png"
|
row2 << "Seperate with ';'. Example: http://www.example.com/images/example.png; http://www.example.com/images/example2.png"
|
||||||
row << t("event_news.carousel_image") + "-" + t("description") + " - " + t("en")
|
row << t("event_news.carousel_image") + "-" + t("description") + " - " + t("en")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << "Seperate with ';' with respective to the links in the link columns. Example : Great view; Nice potrait"
|
row2 << "Seperate with ';' with respective to the links in the link columns. Example : Great view; Nice potrait"
|
||||||
row << t("event_news.carousel_image") + "-" + t("description") + " - " + t("zh_tw")
|
row << t("event_news.carousel_image") + "-" + t("description") + " - " + t("zh_tw")
|
||||||
row1 << "textfield"
|
row1 << "textfield"
|
||||||
row2 << "Seperate with ';' with respective to the links in the link columns. Example : Great view; Nice potrait"
|
row2 << "Seperate with ';' with respective to the links in the link columns. Example : Great view; Nice potrait"
|
||||||
sheet.add_row row, :style => heading
|
sheet.add_row row, :style => heading
|
||||||
sheet.add_row row1
|
sheet.add_row row1
|
||||||
sheet.add_row row2, :style => example
|
sheet.add_row row2, :style => example
|
||||||
|
|
||||||
@event_news.each do |anns|
|
@event_news.each do |anns|
|
||||||
row = []
|
row = []
|
||||||
row << categories.to_a.index(anns.category)
|
row << categories.to_a.index(anns.category)
|
||||||
t = []
|
t = []
|
||||||
anns.tags.each do |tag|
|
anns.tags.each do |tag|
|
||||||
t << tags.to_a.index(tag)
|
t << tags.to_a.index(tag)
|
||||||
end
|
end
|
||||||
row << t.join(",")
|
row << t.join(",")
|
||||||
row << (anns.event_date.strftime("%Y/%m/%d %H:%M") rescue "")
|
row << (anns.event_date.strftime("%Y/%m/%d %H:%M") rescue "")
|
||||||
row << (anns.postdate.strftime("%Y/%m/%d %H:%M") rescue "")
|
row << (anns.postdate.strftime("%Y/%m/%d %H:%M") rescue "")
|
||||||
row << (anns.deadline.strftime("%Y/%m/%d %H:%M") rescue "")
|
row << (anns.deadline.strftime("%Y/%m/%d %H:%M") rescue "")
|
||||||
row << (anns.is_top? ? 1 : 0)
|
row << (anns.is_top? ? 1 : 0)
|
||||||
row << (anns.is_hot? ? 1 : 0)
|
row << (anns.is_hot? ? 1 : 0)
|
||||||
row << (anns.is_hidden? ? 1 : 0)
|
row << (anns.is_hidden? ? 1 : 0)
|
||||||
row << ("http://" + request.host_with_port + anns.image.url rescue "")
|
row << ("http://" + request.host_with_port + anns.image.url rescue "")
|
||||||
row << anns.image_description_translations["en"]
|
row << anns.image_description_translations["en"]
|
||||||
row << anns.image_description_translations["zh_tw"]
|
row << anns.image_description_translations["zh_tw"]
|
||||||
row << anns.title_translations["en"]
|
row << anns.title_translations["en"]
|
||||||
row << anns.title_translations["zh_tw"]
|
row << anns.title_translations["zh_tw"]
|
||||||
row << anns.speaker_translations["en"]
|
row << anns.speaker_translations["en"]
|
||||||
row << anns.speaker_translations["zh_tw"]
|
row << anns.speaker_translations["zh_tw"]
|
||||||
row << anns.host_translations["en"]
|
row << anns.host_translations["en"]
|
||||||
row << anns.host_translations["zh_tw"]
|
row << anns.host_translations["zh_tw"]
|
||||||
row << anns.subtitle_translations["en"]
|
row << anns.subtitle_translations["en"]
|
||||||
row << anns.subtitle_translations["zh_tw"]
|
row << anns.subtitle_translations["zh_tw"]
|
||||||
row << anns.text_translations["en"]
|
row << anns.text_translations["en"]
|
||||||
row << anns.text_translations["zh_tw"]
|
row << anns.text_translations["zh_tw"]
|
||||||
row << anns.notes_translations["en"]
|
row << anns.notes_translations["en"]
|
||||||
row << anns.notes_translations["zh_tw"]
|
row << anns.notes_translations["zh_tw"]
|
||||||
|
|
||||||
links = anns.event_news_links.asc(:created_at)
|
links = anns.event_news_links.asc(:created_at)
|
||||||
t = links.collect{|l|l.url}
|
t = links.collect{|l|l.url}
|
||||||
row << t.join(";")
|
row << t.join(";")
|
||||||
t = links.collect{|l|l.title_translations["en"]}
|
t = links.collect{|l|l.title_translations["en"]}
|
||||||
row << t.join(";")
|
row << t.join(";")
|
||||||
t = links.collect{|l|l.title_translations["zh_tw"]}
|
t = links.collect{|l|l.title_translations["zh_tw"]}
|
||||||
row << t.join(";")
|
row << t.join(";")
|
||||||
|
|
||||||
files = anns.event_news_files.asc(:created_at)
|
files = anns.event_news_files.asc(:created_at)
|
||||||
t = files.collect{|f|("http://" + request.host_with_port + f.file.url rescue nil)}
|
t = files.collect{|f|("http://" + request.host_with_port + f.file.url rescue nil)}
|
||||||
t.delete(nil)
|
t.delete(nil)
|
||||||
row << t.join(";")
|
row << t.join(";")
|
||||||
t = files.collect{|l|l.description_translations["en"]}
|
t = files.collect{|l|l.description_translations["en"]}
|
||||||
row << t.join(";")
|
row << t.join(";")
|
||||||
t = files.collect{|l|l.description_translations["zh_tw"]}
|
t = files.collect{|l|l.description_translations["zh_tw"]}
|
||||||
row << t.join(";")
|
row << t.join(";")
|
||||||
t = files.collect{|l|l.title_translations["en"]}
|
t = files.collect{|l|l.title_translations["en"]}
|
||||||
row << t.join(";")
|
row << t.join(";")
|
||||||
t = files.collect{|l|l.title_translations["zh_tw"]}
|
t = files.collect{|l|l.title_translations["zh_tw"]}
|
||||||
row << t.join(";")
|
row << t.join(";")
|
||||||
row << anns.place_translations["en"]
|
row << anns.place_translations["en"]
|
||||||
row << anns.place_translations["zh_tw"]
|
row << anns.place_translations["zh_tw"]
|
||||||
|
|
||||||
row << (anns.event_end_date.strftime("%Y/%m/%d %H:%M") rescue "")
|
row << (anns.event_end_date.strftime("%Y/%m/%d %H:%M") rescue "")
|
||||||
|
|
||||||
carousel_images = anns.event_carousel_images.asc(:created_at)
|
carousel_images = anns.event_carousel_images.asc(:created_at)
|
||||||
t = carousel_images.collect{|f|("http://" + request.host_with_port + f.file.url rescue nil)}
|
t = carousel_images.collect{|f|("http://" + request.host_with_port + f.file.url rescue nil)}
|
||||||
t.delete(nil)
|
t.delete(nil)
|
||||||
row << t.join(";")
|
row << t.join(";")
|
||||||
t = carousel_images.collect{|l|l.description_translations["en"]}
|
t = carousel_images.collect{|l|l.description_translations["en"]}
|
||||||
row << t.join(";")
|
row << t.join(";")
|
||||||
t = carousel_images.collect{|l|l.description_translations["zh_tw"]}
|
t = carousel_images.collect{|l|l.description_translations["zh_tw"]}
|
||||||
row << t.join(";")
|
row << t.join(";")
|
||||||
sheet.add_row row
|
sheet.add_row row
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
|
@ -1,124 +1,124 @@
|
||||||
<% content_for :page_specific_css do %>
|
<% content_for :page_specific_css do %>
|
||||||
<%= stylesheet_link_tag("admin/tags") %>
|
<%= stylesheet_link_tag("admin/tags") %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% content_for :page_specific_javascript do %>
|
<% content_for :page_specific_javascript do %>
|
||||||
<%= javascript_include_tag "validator" %>
|
<%= javascript_include_tag "validator" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<table class="table main-list">
|
<table class="table main-list">
|
||||||
<thead>
|
<thead>
|
||||||
<tr class="sort-header">
|
<tr class="sort-header">
|
||||||
<% @table_feed_fields.each do |f| %>
|
<% @table_feed_fields.each do |f| %>
|
||||||
<%= thead(f) %>
|
<%= thead(f) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<%= render :partial => "feed", :collection => @feeds %>
|
<%= render :partial => "feed", :collection => @feeds %>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<% if current_user.is_admin? or current_user.is_manager?(@module_app) %>
|
<% if current_user.is_admin? or current_user.is_manager?(@module_app) %>
|
||||||
|
|
||||||
<div class="bottomnav clearfix" style="left: 81px;">
|
<div class="bottomnav clearfix" style="left: 81px;">
|
||||||
<div class="action pull-right">
|
<div class="action pull-right">
|
||||||
<a class="btn btn-primary new-feed" href="#">
|
<a class="btn btn-primary new-feed" href="#">
|
||||||
<i class="icon-plus"></i> <%= t(:new_) %>
|
<i class="icon-plus"></i> <%= t(:new_) %>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="pagination pagination-centered"></div>
|
<div class="pagination pagination-centered"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="newFeedModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="newFeedModalLabel" aria-hidden="true">
|
<div id="newFeedModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="newFeedModalLabel" aria-hidden="true">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
<h3 id="newFeedModalLabel">Create New Feed</h3>
|
<h3 id="newFeedModalLabel">Create New Feed</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<%#= render :partial => "feed_form" %>
|
<%#= render :partial => "feed_form" %>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button class="btn btn-primary" id="save_new_feed">Save changes</button>
|
<button class="btn btn-primary" id="save_new_feed">Save changes</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
$(".new-feed").on("click",function(){
|
$(".new-feed").on("click",function(){
|
||||||
var modal = $("#newFeedModal");
|
var modal = $("#newFeedModal");
|
||||||
modal.find("#newFeedModalLabel").text("Create New Feed");
|
modal.find("#newFeedModalLabel").text("Create New Feed");
|
||||||
modal.modal("show");
|
modal.modal("show");
|
||||||
openFeedModal("new",null);
|
openFeedModal("new",null);
|
||||||
})
|
})
|
||||||
|
|
||||||
var bindEditButtons = function(){
|
var bindEditButtons = function(){
|
||||||
$(".edit-feed").on("click",function(){
|
$(".edit-feed").on("click",function(){
|
||||||
var modal = $("#newFeedModal");
|
var modal = $("#newFeedModal");
|
||||||
modal.find("#newFeedModalLabel").text("Edit Feed");
|
modal.find("#newFeedModalLabel").text("Edit Feed");
|
||||||
modal.modal("show");
|
modal.modal("show");
|
||||||
openFeedModal("edit",$(this).data("feed-id"));
|
openFeedModal("edit",$(this).data("feed-id"));
|
||||||
return false;
|
return false;
|
||||||
})
|
})
|
||||||
$(".delete-feed").on("click",function(){
|
$(".delete-feed").on("click",function(){
|
||||||
if(confirm("Are you sure?")){
|
if(confirm("Are you sure?")){
|
||||||
var el = $(this);
|
var el = $(this);
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url : el.attr("href"),
|
url : el.attr("href"),
|
||||||
type : "delete",
|
type : "delete",
|
||||||
dataType : "html"
|
dataType : "html"
|
||||||
}).done(function(data){
|
}).done(function(data){
|
||||||
$("table.main-list tbody").html(data);
|
$("table.main-list tbody").html(data);
|
||||||
bindEditButtons();
|
bindEditButtons();
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
bindEditButtons();
|
bindEditButtons();
|
||||||
var openFeedModal = function(type,feed_id){
|
var openFeedModal = function(type,feed_id){
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url : "/admin/event_news/feedform",
|
url : "/admin/event_news/feedform",
|
||||||
type : "get",
|
type : "get",
|
||||||
data : {"type" : type, "id" : feed_id},
|
data : {"type" : type, "id" : feed_id},
|
||||||
dataType : "html"
|
dataType : "html"
|
||||||
}).done(function(form){
|
}).done(function(form){
|
||||||
$("#newFeedModal .modal-body").html(form);
|
$("#newFeedModal .modal-body").html(form);
|
||||||
bindHandlers();
|
bindHandlers();
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
var bindHandlers = function(){
|
var bindHandlers = function(){
|
||||||
$(".tag-checkbox").on("click",function(){
|
$(".tag-checkbox").on("click",function(){
|
||||||
if($(this).is(":checked")){
|
if($(this).is(":checked")){
|
||||||
$(this).parent().addClass("active");
|
$(this).parent().addClass("active");
|
||||||
}else{
|
}else{
|
||||||
$(this).parent().removeClass("active");
|
$(this).parent().removeClass("active");
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
var fv = new FormValidator($("#newFeedModal form"));
|
var fv = new FormValidator($("#newFeedModal form"));
|
||||||
fv.form.on("submit",function(){
|
fv.form.on("submit",function(){
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url : fv.form.attr("action"),
|
url : fv.form.attr("action"),
|
||||||
data : fv.form.serializeArray(),
|
data : fv.form.serializeArray(),
|
||||||
type : "post",
|
type : "post",
|
||||||
dataType : "html"
|
dataType : "html"
|
||||||
}).done(function(data){
|
}).done(function(data){
|
||||||
$("table.main-list tbody").html(data);
|
$("table.main-list tbody").html(data);
|
||||||
bindEditButtons();
|
bindEditButtons();
|
||||||
$("#newFeedModal").modal("hide");
|
$("#newFeedModal").modal("hide");
|
||||||
fv.form.resetForm();
|
fv.form.resetForm();
|
||||||
fv.form.find("ul.tags-groups p.active").removeClass("active");
|
fv.form.find("ul.tags-groups p.active").removeClass("active");
|
||||||
})
|
})
|
||||||
return false;
|
return false;
|
||||||
})
|
})
|
||||||
$("#save_new_feed").on("click",function(){
|
$("#save_new_feed").on("click",function(){
|
||||||
if(fv.isFormValidated()){
|
if(fv.isFormValidated()){
|
||||||
fv.form.submit();
|
fv.form.submit();
|
||||||
}else{
|
}else{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
</br>
|
</br>
|
|
@ -1,87 +1,87 @@
|
||||||
<% content_for :page_specific_javascript do %>
|
<% content_for :page_specific_javascript do %>
|
||||||
<script type="text/javascript" src="/assets/validator.js"></script>
|
<script type="text/javascript" src="/assets/validator.js"></script>
|
||||||
<% end %>
|
<% end %>
|
||||||
<form action="<%= admin_event_news_importanns_path %>" method="post" class="form-horizontal main-forms" id="import-anns-xls" enctype="multipart/form-data">
|
<form action="<%= admin_event_news_importanns_path %>" method="post" class="form-horizontal main-forms" id="import-anns-xls" enctype="multipart/form-data">
|
||||||
<h3 style="padding-left: 30px;"><%= t("event_news.export_to_excel") %></h3>
|
<h3 style="padding-left: 30px;"><%= t("event_news.export_to_excel") %></h3>
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<a href="<%= admin_event_news_export_excel_path(:format => "xlsx") %>"><%= t("event_news.export_all_anns") %></a>
|
<a href="<%= admin_event_news_export_excel_path(:format => "xlsx") %>"><%= t("event_news.export_all_anns") %></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<h3 style="padding-left: 30px;"><%= t("event_news.import_from_excel") %></h3>
|
<h3 style="padding-left: 30px;"><%= t("event_news.import_from_excel") %></h3>
|
||||||
<%= hidden_field_tag :authenticity_token, form_authenticity_token %>
|
<%= hidden_field_tag :authenticity_token, form_authenticity_token %>
|
||||||
<div class="input-area">
|
<div class="input-area">
|
||||||
<% if @module_app.categories.count > 0 %>
|
<% if @module_app.categories.count > 0 %>
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<a href="<%= admin_event_news_excel_format_path(:format => "xlsx") %>"><%= t("event_news.download_example_sheet_here") %></a>
|
<a href="<%= admin_event_news_excel_format_path(:format => "xlsx") %>"><%= t("event_news.download_example_sheet_here") %></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<label for="import-anns" class="control-label muted"><%= t("upload") %></label>
|
<label for="import-anns" class="control-label muted"><%= t("upload") %></label>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<input type="file" id="import-anns" name="import_file" data-fv-validation="required;mustbexls;" data-fv-messages="Cannot be empty; Must be an excel file.;" />
|
<input type="file" id="import-anns" name="import_file" data-fv-validation="required;mustbexls;" data-fv-messages="Cannot be empty; Must be an excel file.;" />
|
||||||
<span class="help-block"><%= t("event_news.please_create_tags_cats") %></span>
|
<span class="help-block"><%= t("event_news.please_create_tags_cats") %></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% else %>
|
<% else %>
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<h4><%= t("event_news.create_atleast_one_cat") %></h4>
|
<h4><%= t("event_news.create_atleast_one_cat") %></h4>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<% if @module_app.categories.count > 0 %>
|
<% if @module_app.categories.count > 0 %>
|
||||||
<div class="form-actions">
|
<div class="form-actions">
|
||||||
<input type="submit" value="<%= t("restful_actions.import") %>" class="btn btn-primary">
|
<input type="submit" value="<%= t("restful_actions.import") %>" class="btn btn-primary">
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|
||||||
<!-- import from wp xml -->
|
<!-- import from wp xml -->
|
||||||
<form action="<%= admin_event_news_import_from_wp_path %>" method="post" class="form-horizontal main-forms" id="import-anns-wp-xml" enctype="multipart/form-data">
|
<form action="<%= admin_event_news_import_from_wp_path %>" method="post" class="form-horizontal main-forms" id="import-anns-wp-xml" enctype="multipart/form-data">
|
||||||
<h3 style="padding-left: 30px;"><%= t("event_news.import_from_wp_xml") %></h3>
|
<h3 style="padding-left: 30px;"><%= t("event_news.import_from_wp_xml") %></h3>
|
||||||
<%= hidden_field_tag :authenticity_token, form_authenticity_token %>
|
<%= hidden_field_tag :authenticity_token, form_authenticity_token %>
|
||||||
<div class="input-area">
|
<div class="input-area">
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<label for="import-anns-wp-xml" class="control-label muted"><%= t("upload") %></label>
|
<label for="import-anns-wp-xml" class="control-label muted"><%= t("upload") %></label>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<input type="file" id="import-anns-wp-xml" name="import_xml" data-fv-validation="required;mustbexml;" data-fv-messages="Cannot be empty; Must be an XML file.;" />
|
<input type="file" id="import-anns-wp-xml" name="import_xml" data-fv-validation="required;mustbexml;" data-fv-messages="Cannot be empty; Must be an XML file.;" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-actions">
|
<div class="form-actions">
|
||||||
<input type="submit" value="<%= t("restful_actions.import") %>" class="btn btn-primary">
|
<input type="submit" value="<%= t("restful_actions.import") %>" class="btn btn-primary">
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<!-- <form action="<%#= admin_event_news_import_from_xml_path %>" method="post" class="form-horizontal main-forms" id="import-anns-xml" enctype="multipart/form-data">
|
<!-- <form action="<%#= admin_event_news_import_from_xml_path %>" method="post" class="form-horizontal main-forms" id="import-anns-xml" enctype="multipart/form-data">
|
||||||
<h3 style="padding-left: 30px;">Import from XML</h3>
|
<h3 style="padding-left: 30px;">Import from XML</h3>
|
||||||
<%#= hidden_field_tag :authenticity_token, form_authenticity_token %>
|
<%#= hidden_field_tag :authenticity_token, form_authenticity_token %>
|
||||||
<div class="input-area">
|
<div class="input-area">
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<label for="import-anns" class="control-label muted">URL :</label>
|
<label for="import-anns" class="control-label muted">URL :</label>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<input type="text" id="import-anns" name="import_xml" data-fv-validation="required;url;" data-fv-messages="Cannot be empty; Must be an URL.;" />
|
<input type="text" id="import-anns" name="import_xml" data-fv-validation="required;url;" data-fv-messages="Cannot be empty; Must be an URL.;" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-actions">
|
<div class="form-actions">
|
||||||
<input type="submit" value="Import" class="btn btn-primary">
|
<input type="submit" value="Import" class="btn btn-primary">
|
||||||
</div>
|
</div>
|
||||||
</form> -->
|
</form> -->
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var form = new FormValidator($("#import-anns-xls"));
|
var form = new FormValidator($("#import-anns-xls"));
|
||||||
form.validate_functions.mustbexls = function(val){
|
form.validate_functions.mustbexls = function(val){
|
||||||
var t = val.split("."),
|
var t = val.split("."),
|
||||||
ext = t[t.length - 1];
|
ext = t[t.length - 1];
|
||||||
return (ext == "xls" || ext == "xlsx")
|
return (ext == "xls" || ext == "xlsx")
|
||||||
}
|
}
|
||||||
var form = new FormValidator($("#import-anns-wp-xml"));
|
var form = new FormValidator($("#import-anns-wp-xml"));
|
||||||
form.validate_functions.mustbexml = function(val){
|
form.validate_functions.mustbexml = function(val){
|
||||||
var t = val.split("."),
|
var t = val.split("."),
|
||||||
ext = t[t.length - 1];
|
ext = t[t.length - 1];
|
||||||
return (ext == "xml")
|
return (ext == "xml")
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
|
@ -1,34 +1,34 @@
|
||||||
<%= render_filter @filter_fields, "index_table" %>
|
<%= render_filter @filter_fields, "index_table" %>
|
||||||
<span id="index_table">
|
<span id="index_table">
|
||||||
<%= render 'index'%>
|
<%= render 'index'%>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<%= render 'layouts/delete_modal', delete_options: @delete_options %>
|
<%= render 'layouts/delete_modal', delete_options: @delete_options %>
|
||||||
|
|
||||||
<% if user_can_approve? %>
|
<% if user_can_approve? %>
|
||||||
<%= render :partial=> "approval_modal" %>
|
<%= render :partial=> "approval_modal" %>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$(function(){
|
$(function(){
|
||||||
var modal = $("#approvalModal");
|
var modal = $("#approvalModal");
|
||||||
$(document).on("click", ".approval_button",function(){
|
$(document).on("click", ".approval_button",function(){
|
||||||
var url = $(this).attr("href");
|
var url = $(this).attr("href");
|
||||||
if(window.location.protocol === "https:"){
|
if(window.location.protocol === "https:"){
|
||||||
url = url.replace("http:","https:");
|
url = url.replace("http:","https:");
|
||||||
}
|
}
|
||||||
modal.find("iframe").attr("src", url);
|
modal.find("iframe").attr("src", url);
|
||||||
modal.find("#object_id").val($(this).data("id"));
|
modal.find("#object_id").val($(this).data("id"));
|
||||||
modal.modal("show");
|
modal.modal("show");
|
||||||
return false;
|
return false;
|
||||||
})
|
})
|
||||||
|
|
||||||
var params = getUrlVars();
|
var params = getUrlVars();
|
||||||
console.log(params["url"])
|
console.log(params["url"])
|
||||||
if(typeof params["url"] != "undefined"){
|
if(typeof params["url"] != "undefined"){
|
||||||
modal.find("iframe").attr("src", params["url"]);
|
modal.find("iframe").attr("src", params["url"]);
|
||||||
modal.find("#object_id").val(params["id"]);
|
modal.find("#object_id").val(params["id"]);
|
||||||
modal.modal("show");
|
modal.modal("show");
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
<% end %>
|
<% end %>
|
|
@ -1,5 +1,5 @@
|
||||||
<%= form_for @event_news, url: admin_event_news_index_path, html: {class: "form-horizontal main-forms previewable"} do |f| %>
|
<%= form_for @event_news, url: admin_event_news_index_path, html: {class: "form-horizontal main-forms previewable"} do |f| %>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<%= render :partial => 'form', locals: {f: f} %>
|
<%= render :partial => 'form', locals: {f: f} %>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<% end %>
|
<% end %>
|
|
@ -1,394 +1,415 @@
|
||||||
<%= stylesheet_link_tag "select2/select2" %>
|
<%= stylesheet_link_tag "select2/select2" %>
|
||||||
<%= javascript_include_tag 'validator' %>
|
<%= javascript_include_tag 'validator' %>
|
||||||
<%= javascript_include_tag "select2/select2.min" %>
|
<%= javascript_include_tag "select2/select2.min" %>
|
||||||
<% content_for :page_specific_css do %>
|
<% content_for :page_specific_css do %>
|
||||||
<%= stylesheet_link_tag "lib/main-forms" %>
|
<%= stylesheet_link_tag "lib/main-forms" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
#notification{
|
#notification{
|
||||||
background-color: #ececec;
|
background-color: #ececec;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
left: 40%;
|
left: 40%;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
top: 40px;
|
top: 40px;
|
||||||
width: auto;
|
width: auto;
|
||||||
z-index: 1200;
|
z-index: 1200;
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.badge-info{
|
.badge-info{
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
#approver-list{
|
#approver-list{
|
||||||
list-style: none;
|
list-style: none;
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
}
|
}
|
||||||
#approver-list li {
|
#approver-list li {
|
||||||
border-bottom: 1px solid #efefef;
|
border-bottom: 1px solid #efefef;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
padding-bottom: 10px;
|
padding-bottom: 10px;
|
||||||
}
|
}
|
||||||
#approver-list .approver-avatar{
|
#approver-list .approver-avatar{
|
||||||
width: 60px;
|
width: 60px;
|
||||||
height: 60px;
|
height: 60px;
|
||||||
border-radius: 50px;
|
border-radius: 50px;
|
||||||
margin-right: 20px;
|
margin-right: 20px;
|
||||||
}
|
}
|
||||||
#approver-list .approver-check{
|
#approver-list .approver-check{
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
margin-top: 25px;
|
margin-top: 25px;
|
||||||
}
|
}
|
||||||
#approver-list .approver-check input{
|
#approver-list .approver-check input{
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
#approver-list .approver-check label{
|
#approver-list .approver-check label{
|
||||||
display: inline;
|
display: inline;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
#approver-list .approver-title{
|
#approver-list .approver-title{
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
.table{
|
.table{
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
.table-row,.role_limit_tr,.role_limit_add {
|
.table-row,.role_limit_tr,.role_limit_add {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-bottom: 0.5em;
|
margin-bottom: 0.5em;
|
||||||
}
|
}
|
||||||
.td{
|
.td{
|
||||||
width: 30%;
|
width: 30%;
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
.table{
|
.table{
|
||||||
border: #2d4cd0 0.1em solid;
|
border: #2d4cd0 0.1em solid;
|
||||||
}
|
}
|
||||||
.td-3{
|
.td-3{
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
.td>*{
|
.td>*{
|
||||||
max-width: 95%;
|
max-width: 95%;
|
||||||
}
|
}
|
||||||
.td-delete{
|
.td-delete{
|
||||||
width: 10%;
|
width: 10%;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<%
|
<%
|
||||||
sub_managers = @module_app.sub_managers
|
sub_managers = @module_app.sub_managers
|
||||||
sub_managers.delete(nil)
|
sub_managers.delete(nil)
|
||||||
all_statuses = [[t('top'),'is_top'],[t('hot'),'is_hot']]
|
all_statuses = [[t('top'),'is_top'],[t('hot'),'is_hot']]
|
||||||
tp1 = select_tag("event_news_setting[anns_status_settings][-1][status]",options_for_select(all_statuses))
|
tp1 = select_tag("event_news_setting[anns_status_settings][-1][status]",options_for_select(all_statuses))
|
||||||
tp2 = select_tag("event_news_setting[anns_status_settings][-1][role_id]",options_for_select(Role.all.map{|r| [r.title,r.id]}))
|
tp2 = select_tag("event_news_setting[anns_status_settings][-1][role_id]",options_for_select(Role.all.map{|r| [r.title,r.id]}))
|
||||||
tp3 = number_field_tag("event_news_setting[anns_status_settings][-1][top_limit]",nil, min: 0,required: true)
|
tp3 = number_field_tag("event_news_setting[anns_status_settings][-1][top_limit]",nil, min: 0,required: true)
|
||||||
tp4 = "<button type='button' onclick='delete_limit_role(this)'' class='btn'>#{t('delete_')}</button>"
|
tp4 = "<button type='button' onclick='delete_limit_role(this)'' class='btn'>#{t('delete_')}</button>"
|
||||||
all_tp = "<div class='role_limit_tr'><div class='td'>#{tp1}</div><div class='td'>#{tp2}</div><div class='td'>#{tp3}</div><div class='td-delete'>#{tp4}</div></div>"
|
all_tp = "<div class='role_limit_tr'><div class='td'>#{tp1}</div><div class='td'>#{tp2}</div><div class='td'>#{tp3}</div><div class='td-delete'>#{tp4}</div></div>"
|
||||||
%>
|
%>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function add_limit_role(){
|
function add_limit_role(){
|
||||||
var role_limit_l = $('.role_limit_tr').length
|
var role_limit_l = $('.role_limit_tr').length
|
||||||
var role_limit_tp = '<%= all_tp.inspect %>'
|
var role_limit_tp = '<%= all_tp.inspect %>'
|
||||||
role_limit_tp = role_limit_tp.replace(/-1/g,role_limit_l)
|
role_limit_tp = role_limit_tp.replace(/-1/g,role_limit_l)
|
||||||
$('.role_limit_add').before($('<div/>').html(role_limit_tp).text().slice(1,-2))
|
$('.role_limit_add').before($('<div/>').html(role_limit_tp).text().slice(1,-2))
|
||||||
}
|
}
|
||||||
function delete_limit_role(ele){
|
function delete_limit_role(ele){
|
||||||
var now_index = $(ele).parents('.role_limit_tr').index('.role_limit_tr')
|
var now_index = $(ele).parents('.role_limit_tr').index('.role_limit_tr')
|
||||||
console.log(now_index)
|
console.log(now_index)
|
||||||
$(ele).parents('.role_limit_tr').remove()
|
$(ele).parents('.role_limit_tr').remove()
|
||||||
$('.role_limit_tr').each(function(i,v){
|
$('.role_limit_tr').each(function(i,v){
|
||||||
if (i >= now_index){
|
if (i >= now_index){
|
||||||
$(v).find('[name^="event_news_setting[anns_status_settings]"]').each(function(i1,v1){
|
$(v).find('[name^="event_news_setting[anns_status_settings]"]').each(function(i1,v1){
|
||||||
console.log($(v1).attr('name'))
|
console.log($(v1).attr('name'))
|
||||||
$(v1).attr('name',$(v1).attr('name').replace(/\d+/g,i.toString()))
|
$(v1).attr('name',$(v1).attr('name').replace(/\d+/g,i.toString()))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
var approverList = $(".hidden-approver-list");
|
var approverList = $(".hidden-approver-list");
|
||||||
$(".approver-check input").on("click",function(){
|
$(".approver-check input").on("click",function(){
|
||||||
var el = $(this);
|
var el = $(this);
|
||||||
if(el.is(":checked")){
|
if(el.is(":checked")){
|
||||||
var t = $("<input type='hidden'>");
|
var t = $("<input type='hidden'>");
|
||||||
t.val(el.val());
|
t.val(el.val());
|
||||||
t.attr("name", "event_news_setting[approvers][]");
|
t.attr("name", "event_news_setting[approvers][]");
|
||||||
t.attr("id", "check_" + el.val());
|
t.attr("id", "check_" + el.val());
|
||||||
approverList.append(t);
|
approverList.append(t);
|
||||||
}else{
|
}else{
|
||||||
approverList.find("#check_" + el.val()).remove();
|
approverList.find("#check_" + el.val()).remove();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
<div id="notification"><%= t("event_news.click_on_submit") %></div>
|
<div id="notification"><%= t("event_news.click_on_submit") %></div>
|
||||||
<%= form_for @setting, url: (@setting.new_record? ? admin_event_news_createsettings_path : admin_event_news_updatesettings_path), html: {class: "form-horizontal main-forms"} do |f| %>
|
<%= form_for @setting, url: (@setting.new_record? ? admin_event_news_createsettings_path : admin_event_news_updatesettings_path), html: {class: "form-horizontal main-forms"} do |f| %>
|
||||||
<div class="input-area">
|
<div class="input-area">
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<%= f.label :carousel_image_width, t("event_news.default_carousel_image_width"), :class => "control-label muted" %>
|
<%= f.label :carousel_image_width, t("event_news.default_carousel_image_width"), :class => "control-label muted" %>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<%= f.text_field :carousel_image_width %>
|
<%= f.text_field :carousel_image_width %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="control-group">
|
<fieldset id="event_date_setting">
|
||||||
<%= f.label :only_manager_can_edit_status, t("event_news.only_manager_can_edit_status"), :class => "control-label muted" %>
|
<legend><%=t("event_news.event_date_setting")%></legend>
|
||||||
<div class="controls">
|
<div class="control-group">
|
||||||
<%= f.check_box :only_manager_can_edit_status %>
|
<label class="control-label muted"><%= I18n.t("event_news.including_day_of_the_week") %></label>
|
||||||
</div>
|
<div class="controls">
|
||||||
</div>
|
<%= f.check_box :including_day_of_the_week %>
|
||||||
<div class="control-group">
|
</div>
|
||||||
<%= f.label :is_display_edit_only, t("event_news.is_display_edit_only"), :class => "control-label muted" %>
|
</div>
|
||||||
<div class="controls">
|
<div class="control-group">
|
||||||
<%= f.check_box :is_display_edit_only %>
|
<label class="control-label muted"><%= I18n.t("event_news.including_time") %></label>
|
||||||
</div>
|
<div class="controls">
|
||||||
</div>
|
<%= f.check_box :including_time, :id=>"including_time" %>
|
||||||
<div class="control-group">
|
</div>
|
||||||
<%= f.label :top_limit, t("event_news.top_limit"), :class => "control-label muted" %>
|
</div>
|
||||||
<div class="controls">
|
<div class="hour_clock_24_block control-group <%= 'hide' if !(f.object.including_time) %>">
|
||||||
<%= f.number_field :top_limit, :min => "0" %>
|
<label class="control-label muted"><%= I18n.t("event_news.hour_clock_24") %></label>
|
||||||
<span class="help-block"><%= t("event_news.for_unlimited") %></span>
|
<div class="controls">
|
||||||
</div>
|
<%= f.check_box :hour_clock_24 %>
|
||||||
</div>
|
</div>
|
||||||
<div class="control-group">
|
</div>
|
||||||
<div class="table">
|
</fieldset>
|
||||||
<div class="table-row">
|
<div class="control-group">
|
||||||
<div class="td">
|
<%= f.label :only_manager_can_edit_status, t("event_news.only_manager_can_edit_status"), :class => "control-label muted" %>
|
||||||
<%= t('status') %>
|
<div class="controls">
|
||||||
</div>
|
<%= f.check_box :only_manager_can_edit_status %>
|
||||||
<div class="td">
|
</div>
|
||||||
<%= t('role') %>
|
</div>
|
||||||
</div>
|
<div class="control-group">
|
||||||
<div class="td">
|
<%= f.label :is_display_edit_only, t("event_news.is_display_edit_only"), :class => "control-label muted" %>
|
||||||
<%= t('event_news.top_limit') %>
|
<div class="controls">
|
||||||
</div>
|
<%= f.check_box :is_display_edit_only %>
|
||||||
</div>
|
</div>
|
||||||
<% (EventNewsSetting.first.anns_status_settings rescue []).each_with_index do |v,i| %>
|
</div>
|
||||||
<div class="role_limit_tr">
|
<div class="control-group">
|
||||||
<%= hidden_field_tag("event_news_setting[anns_status_settings][#{i}][_id]",v.id) %>
|
<%= f.label :top_limit, t("event_news.top_limit"), :class => "control-label muted" %>
|
||||||
<div class="td">
|
<div class="controls">
|
||||||
<%= select_tag("event_news_setting[anns_status_settings][#{i}][status]",options_for_select(all_statuses,:selected => v['status'])) %>
|
<%= f.number_field :top_limit, :min => "0" %>
|
||||||
</div>
|
<span class="help-block"><%= t("event_news.for_unlimited") %></span>
|
||||||
<div class="td">
|
</div>
|
||||||
<%= select_tag("event_news_setting[anns_status_settings][#{i}][role_id]",options_for_select(Role.all.map{|r| [r.title,r.id]},:selected => v['role_id'])) %>
|
</div>
|
||||||
</div>
|
<div class="control-group">
|
||||||
<div class="td">
|
<div class="table">
|
||||||
<%= number_field_tag("event_news_setting[anns_status_settings][#{i}][top_limit]",v['top_limit'], min: 0,required: true) %>
|
<div class="table-row">
|
||||||
</div>
|
<div class="td">
|
||||||
<div class="td-delete">
|
<%= t('status') %>
|
||||||
<button type="button" onclick="delete_limit_role(this)" class="btn">
|
</div>
|
||||||
<%= t('delete_') %>
|
<div class="td">
|
||||||
</button>
|
<%= t('role') %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="td">
|
||||||
<% end %>
|
<%= t('event_news.top_limit') %>
|
||||||
<div class="role_limit_add">
|
</div>
|
||||||
<div class="td-3">
|
</div>
|
||||||
<button type="button" onclick="add_limit_role()" class="btn">
|
<% (EventNewsSetting.first.anns_status_settings rescue []).each_with_index do |v,i| %>
|
||||||
<%= t('add') %>
|
<div class="role_limit_tr">
|
||||||
</button>
|
<%= hidden_field_tag("event_news_setting[anns_status_settings][#{i}][_id]",v.id) %>
|
||||||
</div>
|
<div class="td">
|
||||||
</div>
|
<%= select_tag("event_news_setting[anns_status_settings][#{i}][status]",options_for_select(all_statuses,:selected => v['status'])) %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="td">
|
||||||
<% if EventNewsSetting.is_pro? %>
|
<%= select_tag("event_news_setting[anns_status_settings][#{i}][role_id]",options_for_select(Role.all.map{|r| [r.title,r.id]},:selected => v['role_id'])) %>
|
||||||
<% if !sub_managers.blank? %>
|
</div>
|
||||||
<div class="control-group">
|
<div class="td">
|
||||||
<%= f.label "Approver Setting", :class => "control-label muted" %>
|
<%= number_field_tag("event_news_setting[anns_status_settings][#{i}][top_limit]",v['top_limit'], min: 0,required: true) %>
|
||||||
<div class="controls">
|
</div>
|
||||||
<a href="#approverModal" role="button" class="btn" data-toggle="modal"><%= t("event_news.approvers_list") %></a>
|
<div class="td-delete">
|
||||||
<span class="badge badge-info"><%= @setting.approvers.count %></span>
|
<button type="button" onclick="delete_limit_role(this)" class="btn">
|
||||||
</div>
|
<%= t('delete_') %>
|
||||||
</div>
|
</button>
|
||||||
<% else %>
|
</div>
|
||||||
<div class="control-group">
|
</div>
|
||||||
<a href="/admin/authorizations/event_news"><%= t("event_news.click_set_sub_manager") %></a>
|
<% end %>
|
||||||
</div>
|
<div class="role_limit_add">
|
||||||
<% end %>
|
<div class="td-3">
|
||||||
<div class="control-group">
|
<button type="button" onclick="add_limit_role()" class="btn">
|
||||||
<%= f.label "Send emails to", :class => "control-label muted" %>
|
<%= t('add') %>
|
||||||
<div class="controls">
|
</button>
|
||||||
<input type="checkbox" name="event_news_setting[email_to][]" value="admins" <%= @setting.email_to.include?("admins") ? "checked=checked" : "" %>> <%= t("admin") %>
|
</div>
|
||||||
<input type="checkbox" name="event_news_setting[email_to][]" value="managers" <%= @setting.email_to.include?("managers") ? "checked=checked" : "" %>> <%= t("manager") %>
|
</div>
|
||||||
<input type="checkbox" name="event_news_setting[email_to][]" value="approvers" <%= @setting.email_to.include?("approvers") ? "checked=checked" : "" %>> <%= t("event_news.approver") %>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<% if EventNewsSetting.is_pro? %>
|
||||||
</div>
|
<% if !sub_managers.blank? %>
|
||||||
<div class="hidden-approver-list">
|
<div class="control-group">
|
||||||
<% sub_managers.each do |sm| %>
|
<%= f.label "Approver Setting", :class => "control-label muted" %>
|
||||||
<% if @setting.approvers.include?(sm.id.to_s) %>
|
<div class="controls">
|
||||||
<input type="hidden" id="check_<%= sm.id.to_s %>" value="<%= sm.id.to_s %>" name="event_news_setting[approvers][]">
|
<a href="#approverModal" role="button" class="btn" data-toggle="modal"><%= t("event_news.approvers_list") %></a>
|
||||||
<% end %>
|
<span class="badge badge-info"><%= @setting.approvers.count %></span>
|
||||||
<% end %>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% else %>
|
||||||
<div class="form-actions">
|
<div class="control-group">
|
||||||
<%= f.submit t('submit'), class: 'btn btn-primary' %>
|
<a href="/admin/authorizations/event_news"><%= t("event_news.click_set_sub_manager") %></a>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
<div class="control-group">
|
||||||
<% if EventNewsSetting.is_pro? %>
|
<%= f.label "Send emails to", :class => "control-label muted" %>
|
||||||
<div id="approverModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="approverModalLabel" aria-hidden="true">
|
<div class="controls">
|
||||||
<div class="modal-header">
|
<input type="checkbox" name="event_news_setting[email_to][]" value="admins" <%= @setting.email_to.include?("admins") ? "checked=checked" : "" %>> <%= t("admin") %>
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
<input type="checkbox" name="event_news_setting[email_to][]" value="managers" <%= @setting.email_to.include?("managers") ? "checked=checked" : "" %>> <%= t("manager") %>
|
||||||
<h3 id="approverModalLabel"><%= t("sub_manager") %></h3>
|
<input type="checkbox" name="event_news_setting[email_to][]" value="approvers" <%= @setting.email_to.include?("approvers") ? "checked=checked" : "" %>> <%= t("event_news.approver") %>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
</div>
|
||||||
<ul id="approver-list">
|
</div>
|
||||||
<% sub_managers.each do |sm| %>
|
<div class="hidden-approver-list">
|
||||||
<li>
|
<% sub_managers.each do |sm| %>
|
||||||
<%= image_tag sm.member_profile.avatar.thumb, :class => "approver-avatar" %>
|
<% if @setting.approvers.include?(sm.id.to_s) %>
|
||||||
<span class="approver-title"><%= sm.name %></span>
|
<input type="hidden" id="check_<%= sm.id.to_s %>" value="<%= sm.id.to_s %>" name="event_news_setting[approvers][]">
|
||||||
<span class="pull-right approver-check">
|
<% end %>
|
||||||
<input id="checkbox_<%= sm.id %>" type="checkbox" value="<%= sm.id %>" <%= @setting.approvers.include?(sm.id.to_s) ? "checked=checked" : "" %>>
|
<% end %>
|
||||||
<label for="checkbox_<%= sm.id %>"><%= t("event_news.approver") %></label>
|
</div>
|
||||||
</span>
|
<% end %>
|
||||||
</li>
|
<div class="form-actions">
|
||||||
<% end %>
|
<%= f.submit t('submit'), class: 'btn btn-primary' %>
|
||||||
</ul>
|
</div>
|
||||||
</div>
|
<% end %>
|
||||||
<div class="modal-footer">
|
</div>
|
||||||
<button class="btn btn-primary" data-dismiss="modal" aria-hidden="true">Ok</button>
|
<% if EventNewsSetting.is_pro? %>
|
||||||
</div>
|
<div id="approverModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="approverModalLabel" aria-hidden="true">
|
||||||
</div>
|
<div class="modal-header">
|
||||||
<script type="text/javascript">
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
$("#approverModal").on("hidden",function(){
|
<h3 id="approverModalLabel"><%= t("sub_manager") %></h3>
|
||||||
$("#notification").slideDown();
|
</div>
|
||||||
$(".badge-info").text($(".hidden-approver-list input").length);
|
<div class="modal-body">
|
||||||
})
|
<ul id="approver-list">
|
||||||
</script>
|
<% sub_managers.each do |sm| %>
|
||||||
<% end %>
|
<li>
|
||||||
<%= fields_for :iframe do |f| %>
|
<%= image_tag sm.member_profile.avatar.thumb, :class => "approver-avatar" %>
|
||||||
<div class="form-horizontal input-area">
|
<span class="approver-title"><%= sm.name %></span>
|
||||||
<fieldset id="iframe_settings">
|
<span class="pull-right approver-check">
|
||||||
<legend><%=t('event_news.event_news_setting_for_iframe')%></legend>
|
<input id="checkbox_<%= sm.id %>" type="checkbox" value="<%= sm.id %>" <%= @setting.approvers.include?(sm.id.to_s) ? "checked=checked" : "" %>>
|
||||||
<div class="control-group">
|
<label for="checkbox_<%= sm.id %>"><%= t("event_news.approver") %></label>
|
||||||
<%= f.label :layout_type, t("event_news.layout_type"), :class => "control-label muted" %>
|
</span>
|
||||||
<div class="controls">
|
</li>
|
||||||
<% @layout_types = get_layouts(@module_app.key) %>
|
<% end %>
|
||||||
<% if @layout_types.first.kind_of?(Hash) %>
|
</ul>
|
||||||
<select name="iframe[layout_type]" id="page_layout" class="select2">
|
</div>
|
||||||
<% @layout_types.each do |lt| %>
|
<div class="modal-footer">
|
||||||
<option value="<%= lt["filename"] %>" data-image="<%= lt["thumbnail"] %>"><%= (lt["name"].kind_of?(Hash) ? (lt["name"][I18n.locale.to_s] || lt["name"]['en']) : lt["name"]) %></option>
|
<button class="btn btn-primary" data-dismiss="modal" aria-hidden="true">Ok</button>
|
||||||
<% end %>
|
</div>
|
||||||
</select>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$("select.select2").select2({
|
$("#approverModal").on("hidden",function(){
|
||||||
formatResult: function(el){
|
$("#notification").slideDown();
|
||||||
var $element = $(el.element),
|
$(".badge-info").text($(".hidden-approver-list input").length);
|
||||||
image = $element.data("image");
|
})
|
||||||
return "<img class='thumbnail' src='" + image + "'/><span class='thumbnail-text'>" + el.text + "</span>";
|
</script>
|
||||||
},
|
<% end %>
|
||||||
minimumResultsForSearch: -1,
|
<%= fields_for :iframe do |f| %>
|
||||||
width : 250
|
<div class="form-horizontal input-area">
|
||||||
});
|
<fieldset id="iframe_settings">
|
||||||
</script>
|
<legend><%=t('event_news.event_news_setting_for_iframe')%></legend>
|
||||||
<% else %>
|
<div class="control-group">
|
||||||
<%= f.select(:layout, @layout_types) %>
|
<%= f.label :layout_type, t("event_news.layout_type"), :class => "control-label muted" %>
|
||||||
<% end %>
|
<div class="controls">
|
||||||
</div>
|
<% @layout_types = get_layouts(@module_app.key) %>
|
||||||
</div>
|
<% if @layout_types.first.kind_of?(Hash) %>
|
||||||
<div class="control-group">
|
<select name="iframe[layout_type]" id="page_layout" class="select2">
|
||||||
<%= f.label :tags, t(:tags), :class => "control-label muted" %>
|
<% @layout_types.each do |lt| %>
|
||||||
<div class="controls">
|
<option value="<%= lt["filename"] %>" data-image="<%= lt["thumbnail"] %>"><%= (lt["name"].kind_of?(Hash) ? (lt["name"][I18n.locale.to_s] || lt["name"]['en']) : lt["name"]) %></option>
|
||||||
<% @module_app.tags.each_with_index do |t,index| %>
|
<% end %>
|
||||||
<label class="checkbox inline btn" for="<%="tags_#{index}"%>">
|
</select>
|
||||||
<input id="<%="tags_#{index}"%>" name="iframe[tags][]" type="checkbox" value="<%=t.id%>" style="opacity: 0;">
|
<script type="text/javascript">
|
||||||
<%=t.name%>
|
$("select.select2").select2({
|
||||||
</label>
|
formatResult: function(el){
|
||||||
<% end %>
|
var $element = $(el.element),
|
||||||
</div>
|
image = $element.data("image");
|
||||||
</div>
|
return "<img class='thumbnail' src='" + image + "'/><span class='thumbnail-text'>" + el.text + "</span>";
|
||||||
<div class="control-group">
|
},
|
||||||
<label class="control-label muted" ><%=t(:categories)%></label>
|
minimumResultsForSearch: -1,
|
||||||
<div class="controls">
|
width : 250
|
||||||
<% @module_app.categories.each_with_index do |c,index| %>
|
});
|
||||||
<label class="checkbox inline btn" for="<%="categories_#{index}"%>">
|
</script>
|
||||||
<input id="<%="categories_#{index}"%>" name="iframe[categories][]" type="checkbox" value="<%=c.id%>" style="opacity: 0;">
|
<% else %>
|
||||||
<%=c.title%>
|
<%= f.select(:layout, @layout_types) %>
|
||||||
</label>
|
<% end %>
|
||||||
<% end %>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="control-group">
|
||||||
<div class="control-group">
|
<%= f.label :tags, t(:tags), :class => "control-label muted" %>
|
||||||
<%= f.label :authors, t('event_news.table.author'), :class => "control-label muted" %>
|
<div class="controls">
|
||||||
<div class="controls">
|
<% @module_app.tags.each_with_index do |t,index| %>
|
||||||
<%= render partial: 'admin/members/generate_modal_select' , locals: { :@sorted_members => @sorted_members ,:member_form_id => "card-list-members",:member_field_name=>"iframe[member_ids][]" } %>
|
<label class="checkbox inline btn" for="<%="tags_#{index}"%>">
|
||||||
</div>
|
<input id="<%="tags_#{index}"%>" name="iframe[tags][]" type="checkbox" value="<%=t.id%>" style="opacity: 0;">
|
||||||
</div>
|
<%=t.name%>
|
||||||
<div class="control-group">
|
</label>
|
||||||
<%= f.label :show_page, t('event_news.show_page'), :class => "control-label muted" %>
|
<% end %>
|
||||||
<div class="controls">
|
</div>
|
||||||
<%=f.check_box :show_page ,{:checked=>'checked'},'true','false'%>
|
</div>
|
||||||
</div>
|
<div class="control-group">
|
||||||
</div>
|
<label class="control-label muted" ><%=t(:categories)%></label>
|
||||||
<div class="control-group">
|
<div class="controls">
|
||||||
<%= f.label :data_count, t(:data_count), :class => "control-label muted" %>
|
<% @module_app.categories.each_with_index do |c,index| %>
|
||||||
<div class="controls">
|
<label class="checkbox inline btn" for="<%="categories_#{index}"%>">
|
||||||
<%=f.number_field :data_count, {min: 0,:value=> 10} %>
|
<input id="<%="categories_#{index}"%>" name="iframe[categories][]" type="checkbox" value="<%=c.id%>" style="opacity: 0;">
|
||||||
</div>
|
<%=c.title%>
|
||||||
</div>
|
</label>
|
||||||
<div class="control-group">
|
<% end %>
|
||||||
<div class="controls">
|
</div>
|
||||||
<a class="btn btn-primary" title="<%= t("event_news.url_generate") %>" id="url_generate"><%= t("event_news.url_generate") %></a>
|
</div>
|
||||||
</div>
|
<div class="control-group">
|
||||||
</div>
|
<%= f.label :authors, t('event_news.table.author'), :class => "control-label muted" %>
|
||||||
</fieldset>
|
<div class="controls">
|
||||||
</div>
|
<%= render partial: 'admin/members/generate_modal_select' , locals: { :@sorted_members => @sorted_members ,:member_form_id => "card-list-members",:member_field_name=>"iframe[member_ids][]" } %>
|
||||||
<% end %>
|
</div>
|
||||||
<script type="text/javascript">
|
</div>
|
||||||
function getparams(id){
|
<div class="control-group">
|
||||||
var params_array = $("#"+id).serializeArray();
|
<%= f.label :show_page, t('event_news.show_page'), :class => "control-label muted" %>
|
||||||
var params = {};
|
<div class="controls">
|
||||||
params_array.forEach(function(dict){
|
<%=f.check_box :show_page ,{:checked=>'checked'},'true','false'%>
|
||||||
if(params[dict.name] == undefined)
|
</div>
|
||||||
if(dict.name.substr(dict.name.length-2,2) == "[]")
|
</div>
|
||||||
params[dict.name] = [dict.value]
|
<div class="control-group">
|
||||||
else
|
<%= f.label :data_count, t(:data_count), :class => "control-label muted" %>
|
||||||
params[dict.name] = dict.value
|
<div class="controls">
|
||||||
else
|
<%=f.number_field :data_count, {min: 0,:value=> 10} %>
|
||||||
if(dict.name.substr(dict.name.length-2,2) == "[]")
|
</div>
|
||||||
params[dict.name].push(dict.value)
|
</div>
|
||||||
else
|
<div class="control-group">
|
||||||
params[dict.name] = dict.value
|
<div class="controls">
|
||||||
})
|
<a class="btn btn-primary" title="<%= t("event_news.url_generate") %>" id="url_generate"><%= t("event_news.url_generate") %></a>
|
||||||
return params;
|
</div>
|
||||||
}
|
</div>
|
||||||
$(document).ready(function(){
|
</fieldset>
|
||||||
$('label.checkbox input').click(function(){
|
</div>
|
||||||
if($(this).parent().hasClass('active'))
|
<% end %>
|
||||||
$(this).parent().removeClass('active');
|
<script type="text/javascript">
|
||||||
else
|
function getparams(id){
|
||||||
$(this).parent().addClass('active');
|
var params_array = $("#"+id).serializeArray();
|
||||||
})
|
var params = {};
|
||||||
$('#url_generate').off('click').on('click',function(){
|
params_array.forEach(function(dict){
|
||||||
var params = getparams('iframe_settings');
|
if(params[dict.name] == undefined)
|
||||||
$.post("<%=admin_event_news_generate_iframe_url_path%>",params).done(function(url){
|
if(dict.name.substr(dict.name.length-2,2) == "[]")
|
||||||
var real_url = '/annc_url?url='+window.location.href.split('/')[0]+"//"+window.location.host+url;
|
params[dict.name] = [dict.value]
|
||||||
if($("#dialog-confirm").length == 0){
|
else
|
||||||
$("#url_generate").before("<div id='dialog-confirm' title='<%="iframe "+t('event_news.URL')%>'>"+
|
params[dict.name] = dict.value
|
||||||
"<div style='clear:both;'></div><div id='info_texts'>"+"<label style='float:left;margin-right: 0.2em; line-height: 2em;' for='iframe_url'><%="iframe "+t('event_news.URL') %>:</label><input id= 'iframe_url' style='float:left;cursor:text;' type='text' readyonly value='"+real_url+"'><a class='btn btn-primary copy_text' style='color: white;'><%=t('event_news.copy')%></a>"+"</div>"+
|
else
|
||||||
"</div>");
|
if(dict.name.substr(dict.name.length-2,2) == "[]")
|
||||||
}
|
params[dict.name].push(dict.value)
|
||||||
$( "#dialog-confirm" ).dialog({
|
else
|
||||||
resizable: true,
|
params[dict.name] = dict.value
|
||||||
minHeight: 100,
|
})
|
||||||
maxHeight: 400,
|
return params;
|
||||||
width: '80%',
|
}
|
||||||
modal: true,
|
$(document).ready(function(){
|
||||||
buttons: {
|
$('label.checkbox input').click(function(){
|
||||||
"<%= t(:close) %>": function(){$( this ).dialog( "close" );}
|
if($(this).parent().hasClass('active'))
|
||||||
}
|
$(this).parent().removeClass('active');
|
||||||
});
|
else
|
||||||
$('.copy_text').off('click').on('click',function(){
|
$(this).parent().addClass('active');
|
||||||
var copyText = document.getElementById("iframe_url");
|
})
|
||||||
copyText.select();
|
$('#url_generate').off('click').on('click',function(){
|
||||||
copyText.setSelectionRange(0, 99999);
|
var params = getparams('iframe_settings');
|
||||||
document.execCommand("copy");
|
$.post("<%=admin_event_news_generate_iframe_url_path%>",params).done(function(url){
|
||||||
})
|
var real_url = '/annc_url?url='+window.location.href.split('/')[0]+"//"+window.location.host+url;
|
||||||
});
|
if($("#dialog-confirm").length == 0){
|
||||||
});
|
$("#url_generate").before("<div id='dialog-confirm' title='<%="iframe "+t('event_news.URL')%>'>"+
|
||||||
})
|
"<div style='clear:both;'></div><div id='info_texts'>"+"<label style='float:left;margin-right: 0.2em; line-height: 2em;' for='iframe_url'><%="iframe "+t('event_news.URL') %>:</label><input id= 'iframe_url' style='float:left;cursor:text;' type='text' readyonly value='"+real_url+"'><a class='btn btn-primary copy_text' style='color: white;'><%=t('event_news.copy')%></a>"+"</div>"+
|
||||||
|
"</div>");
|
||||||
|
}
|
||||||
|
$( "#dialog-confirm" ).dialog({
|
||||||
|
resizable: true,
|
||||||
|
minHeight: 100,
|
||||||
|
maxHeight: 400,
|
||||||
|
width: '80%',
|
||||||
|
modal: true,
|
||||||
|
buttons: {
|
||||||
|
"<%= t(:close) %>": function(){$( this ).dialog( "close" );}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('.copy_text').off('click').on('click',function(){
|
||||||
|
var copyText = document.getElementById("iframe_url");
|
||||||
|
copyText.select();
|
||||||
|
copyText.setSelectionRange(0, 99999);
|
||||||
|
document.execCommand("copy");
|
||||||
|
})
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})
|
||||||
</script>
|
</script>
|
|
@ -1,3 +1,3 @@
|
||||||
<h3>Hello <%= @data["name"] %>,</h3>
|
<h3>Hello <%= @data["name"] %>,</h3>
|
||||||
<p><%= @data["submitter"] %> <%= t("event_news.updated_annoucement") %>
|
<p><%= @data["submitter"] %> <%= t("event_news.updated_annoucement") %>
|
||||||
<a href="<%= @data['url'] %>" ><%= t("event_news.click_here_to_see") %></a>
|
<a href="<%= @data['url'] %>" ><%= t("event_news.click_here_to_see") %></a>
|
|
@ -1,3 +1,3 @@
|
||||||
<h3>Hello <%= @data["name"] %>,</h3>
|
<h3>Hello <%= @data["name"] %>,</h3>
|
||||||
<p><%= @data["rejector"] %> <%= t("event_news.rejected_event_news") %> : <%= @data["reason"].nil? || @data["reason"] == "" ? "" : "#{@data["reason"]}" %></p>
|
<p><%= @data["rejector"] %> <%= t("event_news.rejected_event_news") %> : <%= @data["reason"].nil? || @data["reason"] == "" ? "" : "#{@data["reason"]}" %></p>
|
||||||
<a href="<%= @data['url'] %>" ><%= t("event_news.click_here_to_see") %></a>
|
<a href="<%= @data['url'] %>" ><%= t("event_news.click_here_to_see") %></a>
|
|
@ -1,19 +1,19 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
||||||
</head>
|
</head>
|
||||||
<body bgcolor="#FFFFFF">
|
<body bgcolor="#FFFFFF">
|
||||||
<div style="text-ident:20px"></div>
|
<div style="text-ident:20px"></div>
|
||||||
|
|
||||||
<%= t('event_news.mail_hi') %> <br /><br />
|
<%= t('event_news.mail_hi') %> <br /><br />
|
||||||
<%= t('event_news.mail_url_view') %> <br /><br />
|
<%= t('event_news.mail_url_view') %> <br /><br />
|
||||||
<a href="<%= @data["url"] %>" target="_blank"> <%= @data["title"] %> </a> <br /><br />
|
<a href="<%= @data["url"] %>" target="_blank"> <%= @data["title"] %> </a> <br /><br />
|
||||||
|
|
||||||
<span style="color:#555">--<br />
|
<span style="color:#555">--<br />
|
||||||
<%= t('event_news.mail_source') %> :<a href="http://<%= @data["host"] %>" target="_blank"> <%= Site.first.title %> </a><br />
|
<%= t('event_news.mail_source') %> :<a href="http://<%= @data["host"] %>" target="_blank"> <%= Site.first.title %> </a><br />
|
||||||
<%= t('event_news.mail_time') %> <%= DateTime.now %>
|
<%= t('event_news.mail_time') %> <%= DateTime.now %>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
|
@ -1,85 +1,85 @@
|
||||||
<% params = OrbitHelper.params
|
<% params = OrbitHelper.params
|
||||||
page = Page.where(url:params['url']).first
|
page = Page.where(url:params['url']).first
|
||||||
enable_search_flag = false
|
enable_search_flag = false
|
||||||
if page.methods.include? 'select_option_items'.to_sym
|
if page.methods.include? 'select_option_items'.to_sym
|
||||||
ModuleApp.all.select{|tmp| tmp.key.to_s=='event_news'}.each do |modile_app|
|
ModuleApp.all.select{|tmp| tmp.key.to_s=='event_news'}.each do |modile_app|
|
||||||
@show_option_items = modile_app.show_option_items rescue nil
|
@show_option_items = modile_app.show_option_items rescue nil
|
||||||
end
|
end
|
||||||
page.select_option_items.each do |select_option_item|
|
page.select_option_items.each do |select_option_item|
|
||||||
if !(@show_option_items.nil?) && select_option_item.field_name == @show_option_items.keys[1].to_s
|
if !(@show_option_items.nil?) && select_option_item.field_name == @show_option_items.keys[1].to_s
|
||||||
value = YAML.load(select_option_item.value)
|
value = YAML.load(select_option_item.value)
|
||||||
if value[I18n.locale] == t('event_news.yes')
|
if value[I18n.locale] == t('event_news.yes')
|
||||||
enable_search_flag = true
|
enable_search_flag = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
%>
|
%>
|
||||||
<% if enable_search_flag %>
|
<% if enable_search_flag %>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
#category_select_box{
|
#category_select_box{
|
||||||
margin: 0;
|
margin: 0;
|
||||||
background: linear-gradient(0deg, #515fff, #ff3e3e);
|
background: linear-gradient(0deg, #515fff, #ff3e3e);
|
||||||
color: white;
|
color: white;
|
||||||
outline: 0;
|
outline: 0;
|
||||||
border-radius: 0.9em;
|
border-radius: 0.9em;
|
||||||
}
|
}
|
||||||
#category_select_box>option{
|
#category_select_box>option{
|
||||||
background: #5640dd;
|
background: #5640dd;
|
||||||
}
|
}
|
||||||
input.search_box{
|
input.search_box{
|
||||||
margin: 0;
|
margin: 0;
|
||||||
background: #a2c3df;
|
background: #a2c3df;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
color: #00008b;
|
color: #00008b;
|
||||||
border-radius: 0.7em;
|
border-radius: 0.7em;
|
||||||
outline: 0;
|
outline: 0;
|
||||||
}
|
}
|
||||||
input.search_box[type='submit']:hover{
|
input.search_box[type='submit']:hover{
|
||||||
background: #9100ff;
|
background: #9100ff;
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
input.search_box[type='submit']:active{
|
input.search_box[type='submit']:active{
|
||||||
background: #7201ff;
|
background: #7201ff;
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
input.search_box::-webkit-input-placeholder {
|
input.search_box::-webkit-input-placeholder {
|
||||||
color: #aa58e8;
|
color: #aa58e8;
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
input.search_box:-moz-placeholder {
|
input.search_box:-moz-placeholder {
|
||||||
color: #aa58e8;
|
color: #aa58e8;
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
input.search_box::-moz-placeholder {
|
input.search_box::-moz-placeholder {
|
||||||
color: #aa58e8;
|
color: #aa58e8;
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<form>
|
<form>
|
||||||
<% cats = Array(page.categories)
|
<% cats = Array(page.categories)
|
||||||
if cats.include? 'all'
|
if cats.include? 'all'
|
||||||
cats = ModuleApp.where(key: 'event_news').first.categories
|
cats = ModuleApp.where(key: 'event_news').first.categories
|
||||||
else
|
else
|
||||||
cats = cats.map{|v| Category.where(id: v).first}.compact
|
cats = cats.map{|v| Category.where(id: v).first}.compact
|
||||||
end
|
end
|
||||||
all_cat = [[t('event_news.all'),'all']]
|
all_cat = [[t('event_news.all'),'all']]
|
||||||
%>
|
%>
|
||||||
<div class="search_widget" style="display: flex;flex-wrap: wrap;font-size: 1.1em;">
|
<div class="search_widget" style="display: flex;flex-wrap: wrap;font-size: 1.1em;">
|
||||||
<%= select_tag('category',options_for_select(all_cat.concat(cats.map{|v| [v.title,v.id.to_s]}),:selected => params['category'].to_s),:id=>"category_select_box",:prompt => t('event_news.select_prompt')) %>
|
<%= select_tag('category',options_for_select(all_cat.concat(cats.map{|v| [v.title,v.id.to_s]}),:selected => params['category'].to_s),:id=>"category_select_box",:prompt => t('event_news.select_prompt')) %>
|
||||||
<input class="search_box" type="text" name="keywords" value="<%= params['keywords'].to_s.gsub(/\"/,'') %>" placeholder="<%= t('event_news.keywords') %>">
|
<input class="search_box" type="text" name="keywords" value="<%= params['keywords'].to_s.gsub(/\"/,'') %>" placeholder="<%= t('event_news.keywords') %>">
|
||||||
<div style="display: flex;flex-wrap: wrap;">
|
<div style="display: flex;flex-wrap: wrap;">
|
||||||
<div class="default_picker">
|
<div class="default_picker">
|
||||||
<input class="search_box" type="text" name="stime" value="<%= params['stime'].to_s.gsub(/\"/,'') %>" placeholder="<%= t('event_news.stime') %>" data-format="yyyy/mm/dd">
|
<input class="search_box" type="text" name="stime" value="<%= params['stime'].to_s.gsub(/\"/,'') %>" placeholder="<%= t('event_news.stime') %>" data-format="yyyy/mm/dd">
|
||||||
</div>
|
</div>
|
||||||
~
|
~
|
||||||
<div class="default_picker">
|
<div class="default_picker">
|
||||||
<input class="search_box" type="text" name="etime" value="<%= params['etime'].to_s.gsub(/\"/,'') %>" placeholder="<%= t('event_news.etime') %>" data-format="yyyy/mm/dd">
|
<input class="search_box" type="text" name="etime" value="<%= params['etime'].to_s.gsub(/\"/,'') %>" placeholder="<%= t('event_news.etime') %>" data-format="yyyy/mm/dd">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<input type="hidden" name="authenticity_token" value="<%= (0...46).map { ('a'..'z').to_a[rand(26)] }.join %>">
|
<input type="hidden" name="authenticity_token" value="<%= (0...46).map { ('a'..'z').to_a[rand(26)] }.join %>">
|
||||||
<input class="search_box" type="submit" value="<%= t('event_news.search') %>">
|
<input class="search_box" type="submit" value="<%= t('event_news.search') %>">
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<% end %>
|
<% end %>
|
||||||
<%= render_view %>
|
<%= render_view %>
|
|
@ -1,237 +1,237 @@
|
||||||
<%
|
<%
|
||||||
require 'event_news_helper'
|
require 'event_news_helper'
|
||||||
data = action_data
|
data = action_data
|
||||||
params = OrbitHelper.params
|
params = OrbitHelper.params
|
||||||
page = Page.where(url:params['url']).first
|
page = Page.where(url:params['url']).first
|
||||||
@ad_banner_location = 2
|
@ad_banner_location = 2
|
||||||
@show_back_and_next_flag = 0
|
@show_back_and_next_flag = 0
|
||||||
if page.methods.include? 'select_option_items'.to_sym
|
if page.methods.include? 'select_option_items'.to_sym
|
||||||
ModuleApp.all.select{|tmp| tmp.key.to_s=='event_news'}.each do |module_app|
|
ModuleApp.all.select{|tmp| tmp.key.to_s=='event_news'}.each do |module_app|
|
||||||
@show_option_items = module_app.show_option_items rescue nil
|
@show_option_items = module_app.show_option_items rescue nil
|
||||||
end
|
end
|
||||||
page.select_option_items.each do |select_option_item|
|
page.select_option_items.each do |select_option_item|
|
||||||
if !(@show_option_items.nil?)
|
if !(@show_option_items.nil?)
|
||||||
if select_option_item.field_name == @show_option_items.keys.first.to_s
|
if select_option_item.field_name == @show_option_items.keys.first.to_s
|
||||||
value = YAML.load(select_option_item.value)
|
value = YAML.load(select_option_item.value)
|
||||||
tmp = value[:en]
|
tmp = value[:en]
|
||||||
I18n.with_locale(:en) do
|
I18n.with_locale(:en) do
|
||||||
if tmp == t('event_news.not_show')
|
if tmp == t('event_news.not_show')
|
||||||
@show_back_and_next_flag = 0
|
@show_back_and_next_flag = 0
|
||||||
elsif tmp == t('event_news.show_top')
|
elsif tmp == t('event_news.show_top')
|
||||||
@show_back_and_next_flag = 1
|
@show_back_and_next_flag = 1
|
||||||
elsif tmp == t('event_news.show_bottom')
|
elsif tmp == t('event_news.show_bottom')
|
||||||
@show_back_and_next_flag = 2
|
@show_back_and_next_flag = 2
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
elsif select_option_item.field_name == @show_option_items.keys[2].to_s
|
elsif select_option_item.field_name == @show_option_items.keys[2].to_s
|
||||||
value = YAML.load(select_option_item.value)
|
value = YAML.load(select_option_item.value)
|
||||||
tmp = value[:en]
|
tmp = value[:en]
|
||||||
I18n.with_locale(:en) do
|
I18n.with_locale(:en) do
|
||||||
if tmp == t('event_news.show_top')
|
if tmp == t('event_news.show_top')
|
||||||
@ad_banner_location = 1
|
@ad_banner_location = 1
|
||||||
elsif tmp == t('event_news.show_bottom')
|
elsif tmp == t('event_news.show_bottom')
|
||||||
@ad_banner_location = 2
|
@ad_banner_location = 2
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if @show_back_and_next_flag != 0
|
if @show_back_and_next_flag != 0
|
||||||
uid = params['uid']
|
uid = params['uid']
|
||||||
sorted,total_pages = get_sorted_annc(0)
|
sorted,total_pages = get_sorted_annc(0)
|
||||||
now_index = sorted.to_enum.with_index.select{|v| v[0].uid==uid}[0][1] rescue nil
|
now_index = sorted.to_enum.with_index.select{|v| v[0].uid==uid}[0][1] rescue nil
|
||||||
if !now_index.nil?
|
if !now_index.nil?
|
||||||
if now_index != 0
|
if now_index != 0
|
||||||
prev_result = sorted[now_index-1]
|
prev_result = sorted[now_index-1]
|
||||||
prev_url = params['url'] + '/' + prev_result.to_param
|
prev_url = params['url'] + '/' + prev_result.to_param
|
||||||
prev_content = "<a href='#{prev_url}' title='#{t('event_news.prev')}' class='prev'><b>#{t('event_news.prev')}</b><p>#{prev_result['title'][I18n.locale]}</p></a>"
|
prev_content = "<a href='#{prev_url}' title='#{t('event_news.prev')}' class='prev'><b>#{t('event_news.prev')}</b><p>#{prev_result['title'][I18n.locale]}</p></a>"
|
||||||
end
|
end
|
||||||
if now_index != sorted.length-1
|
if now_index != sorted.length-1
|
||||||
next_result = sorted[now_index+1]
|
next_result = sorted[now_index+1]
|
||||||
next_url = params['url'] + '/' + next_result.to_param
|
next_url = params['url'] + '/' + next_result.to_param
|
||||||
next_content = "<a href='#{next_url}' title='#{t('event_news.next')}' class='next'><b>#{t('event_news.next')}</b><p>#{next_result['title'][I18n.locale]}</p></a>"
|
next_content = "<a href='#{next_url}' title='#{t('event_news.next')}' class='next'><b>#{t('event_news.next')}</b><p>#{next_result['title'][I18n.locale]}</p></a>"
|
||||||
end
|
end
|
||||||
content = "<div class='see_more_boxTitle'>#{prev_content}#{next_content}</div>".html_safe
|
content = "<div class='see_more_boxTitle'>#{prev_content}#{next_content}</div>".html_safe
|
||||||
else
|
else
|
||||||
content = ''
|
content = ''
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
ad_banner_content = render_ad_banner(data['event_carousel_images'],data['data'])
|
ad_banner_content = render_ad_banner(data['event_carousel_images'],data['data'])
|
||||||
%>
|
%>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
.carousel_images{
|
.carousel_images{
|
||||||
<%= data['data']['carousel_display_style'] %>
|
<%= data['data']['carousel_display_style'] %>
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<%= stylesheet_link_tag 'event_news_front.css' %>
|
<%= stylesheet_link_tag 'event_news_front.css' %>
|
||||||
<% if @show_back_and_next_flag!=0 %>
|
<% if @show_back_and_next_flag!=0 %>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
.see_more_boxTitle{
|
.see_more_boxTitle{
|
||||||
display: flex;
|
display: flex;
|
||||||
margin: 1em 0em;
|
margin: 1em 0em;
|
||||||
padding: 1em;
|
padding: 1em;
|
||||||
border: 0.2em solid;
|
border: 0.2em solid;
|
||||||
}
|
}
|
||||||
a.prev, a.next{
|
a.prev, a.next{
|
||||||
width: 50%;
|
width: 50%;
|
||||||
border: 0.2em solid;
|
border: 0.2em solid;
|
||||||
padding: 1em;
|
padding: 1em;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
a.next{
|
a.next{
|
||||||
margin-left: 1em;
|
margin-left: 1em;
|
||||||
}
|
}
|
||||||
a.prev{
|
a.prev{
|
||||||
margin-right: 1em;
|
margin-right: 1em;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% if @show_back_and_next_flag==1 %>
|
<% if @show_back_and_next_flag==1 %>
|
||||||
<%= content %>
|
<%= content %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% if @ad_banner_location==1 %>
|
<% if @ad_banner_location==1 %>
|
||||||
<%= ad_banner_content %>
|
<%= ad_banner_content %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<%= render_view %>
|
<%= render_view %>
|
||||||
|
|
||||||
<% if @ad_banner_location==2 %>
|
<% if @ad_banner_location==2 %>
|
||||||
<%= ad_banner_content %>
|
<%= ad_banner_content %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% if @show_back_and_next_flag==2 %>
|
<% if @show_back_and_next_flag==2 %>
|
||||||
<%= content %>
|
<%= content %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
(function($) {
|
(function($) {
|
||||||
|
|
||||||
function hideEmptyEl(el, elParent) {
|
function hideEmptyEl(el, elParent) {
|
||||||
if( el.length === 0) {
|
if( el.length === 0) {
|
||||||
elParent.addClass('hide');
|
elParent.addClass('hide');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hiding parent element when children elements are not present
|
// Hiding parent element when children elements are not present
|
||||||
// Tags
|
// Tags
|
||||||
hideEmptyEl($('.s-annc__tag'), $('.s-annc__tag-wrap'));
|
hideEmptyEl($('.s-annc__tag'), $('.s-annc__tag-wrap'));
|
||||||
|
|
||||||
// Attachments
|
// Attachments
|
||||||
hideEmptyEl($('.s-annc__flie-title'), $('.s-annc__related-file'));
|
hideEmptyEl($('.s-annc__flie-title'), $('.s-annc__related-file'));
|
||||||
|
|
||||||
// Links
|
// Links
|
||||||
hideEmptyEl($('.s-annc__link-title'), $('.s-annc__related-link'));
|
hideEmptyEl($('.s-annc__link-title'), $('.s-annc__related-link'));
|
||||||
$("img[src='']").remove();
|
$("img[src='']").remove();
|
||||||
$('.pause-slide').click(function(){
|
$('.pause-slide').click(function(){
|
||||||
$(this).parent("ul").parent('.w-ba-banner').find(".cycle-slideshow").cycle('pause');
|
$(this).parent("ul").parent('.w-ba-banner').find(".cycle-slideshow").cycle('pause');
|
||||||
$(this).addClass('active');
|
$(this).addClass('active');
|
||||||
$(this).parents('.carousel_images').find('.resume-slide').removeClass('active');
|
$(this).parents('.carousel_images').find('.resume-slide').removeClass('active');
|
||||||
});
|
});
|
||||||
$('.resume-slide').click(function(){
|
$('.resume-slide').click(function(){
|
||||||
$(this).parent("ul").parent('.w-ba-banner').find(".cycle-slideshow").cycle('resume');
|
$(this).parent("ul").parent('.w-ba-banner').find(".cycle-slideshow").cycle('resume');
|
||||||
$(this).addClass('active');
|
$(this).addClass('active');
|
||||||
$(this).parents('.carousel_images').find('.pause-slide').removeClass('active');
|
$(this).parents('.carousel_images').find('.pause-slide').removeClass('active');
|
||||||
});
|
});
|
||||||
$('.next-button').off('click').on('click',function(){
|
$('.next-button').off('click').on('click',function(){
|
||||||
$(this).parent("ul").parent('.w-ba-banner').find(".cycle-slideshow").cycle("next");
|
$(this).parent("ul").parent('.w-ba-banner').find(".cycle-slideshow").cycle("next");
|
||||||
})
|
})
|
||||||
$('.prev-button').off('click').on('click',function(){
|
$('.prev-button').off('click').on('click',function(){
|
||||||
$(this).parent("ul").parent('.w-ba-banner').find(".cycle-slideshow").cycle("prev");
|
$(this).parent("ul").parent('.w-ba-banner').find(".cycle-slideshow").cycle("prev");
|
||||||
})
|
})
|
||||||
window.active_slide = 0;
|
window.active_slide = 0;
|
||||||
$('.prev_img').off('click').on('click',function(){
|
$('.prev_img').off('click').on('click',function(){
|
||||||
var carousel_images_slide = $('.carousel_images_slide');
|
var carousel_images_slide = $('.carousel_images_slide');
|
||||||
var carousel_images_slide_first_child = carousel_images_slide.find(">li").eq(active_slide);
|
var carousel_images_slide_first_child = carousel_images_slide.find(">li").eq(active_slide);
|
||||||
if(carousel_images_slide_first_child.length > 0){
|
if(carousel_images_slide_first_child.length > 0){
|
||||||
var content_size = Math.floor((carousel_images_slide.outerWidth() - Number.parseInt(carousel_images_slide.css('font-size')) * 3) / carousel_images_slide_first_child.outerWidth(true));
|
var content_size = Math.floor((carousel_images_slide.outerWidth() - Number.parseInt(carousel_images_slide.css('font-size')) * 3) / carousel_images_slide_first_child.outerWidth(true));
|
||||||
content_size = Math.max(content_size,1);
|
content_size = Math.max(content_size,1);
|
||||||
if(carousel_images_slide.find(">li").length > content_size && active_slide > 0){
|
if(carousel_images_slide.find(">li").length > content_size && active_slide > 0){
|
||||||
active_slide -= content_size;
|
active_slide -= content_size;
|
||||||
carousel_images_slide.find(">li").css("display","none");
|
carousel_images_slide.find(">li").css("display","none");
|
||||||
for(var i = active_slide; i < active_slide + content_size;i++){
|
for(var i = active_slide; i < active_slide + content_size;i++){
|
||||||
carousel_images_slide.find(">li").eq(i).css("display","block");
|
carousel_images_slide.find(">li").eq(i).css("display","block");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
$('.next_img').off('click').on('click',function(){
|
$('.next_img').off('click').on('click',function(){
|
||||||
var carousel_images_slide = $('.carousel_images_slide');
|
var carousel_images_slide = $('.carousel_images_slide');
|
||||||
var carousel_images_slide_first_child = carousel_images_slide.find(">li").eq(active_slide);
|
var carousel_images_slide_first_child = carousel_images_slide.find(">li").eq(active_slide);
|
||||||
if(carousel_images_slide_first_child.length > 0){
|
if(carousel_images_slide_first_child.length > 0){
|
||||||
var content_size = Math.floor((carousel_images_slide.outerWidth() - Number.parseInt(carousel_images_slide.css('font-size')) * 3) / carousel_images_slide_first_child.outerWidth(true));
|
var content_size = Math.floor((carousel_images_slide.outerWidth() - Number.parseInt(carousel_images_slide.css('font-size')) * 3) / carousel_images_slide_first_child.outerWidth(true));
|
||||||
content_size = Math.max(content_size,1);
|
content_size = Math.max(content_size,1);
|
||||||
var li_length = carousel_images_slide.find(">li").length;
|
var li_length = carousel_images_slide.find(">li").length;
|
||||||
if(li_length > content_size){
|
if(li_length > content_size){
|
||||||
active_slide += content_size;
|
active_slide += content_size;
|
||||||
active_slide = Math.min(active_slide,li_length - 1);
|
active_slide = Math.min(active_slide,li_length - 1);
|
||||||
carousel_images_slide.find(">li").css("display","none");
|
carousel_images_slide.find(">li").css("display","none");
|
||||||
for(var i = active_slide; i < active_slide + content_size;i++){
|
for(var i = active_slide; i < active_slide + content_size;i++){
|
||||||
carousel_images_slide.find(">li").eq(i).css("display","block");
|
carousel_images_slide.find(">li").eq(i).css("display","block");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
$(".carousel_img_item img").off("click").on("click",function(){
|
$(".carousel_img_item img").off("click").on("click",function(){
|
||||||
$(".carousel_images .cycle-slideshow").cycle($(this).index(".carousel_img_item img"));
|
$(".carousel_images .cycle-slideshow").cycle($(this).index(".carousel_img_item img"));
|
||||||
})
|
})
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
$(".carousel_images .cycle-slideshow").cycle('pause');
|
$(".carousel_images .cycle-slideshow").cycle('pause');
|
||||||
var carousel_image_block_width = $('.carousel_images').width();
|
var carousel_image_block_width = $('.carousel_images').width();
|
||||||
var heights = $(".event_carousel_slide").map(function(i,v){
|
var heights = $(".event_carousel_slide").map(function(i,v){
|
||||||
return $(v).height() * carousel_image_block_width / $(v).width();
|
return $(v).height() * carousel_image_block_width / $(v).width();
|
||||||
})
|
})
|
||||||
var max_height = Math.max.apply(null,heights);
|
var max_height = Math.max.apply(null,heights);
|
||||||
$(".event_carousel_slide").each(function(i,v){
|
$(".event_carousel_slide").each(function(i,v){
|
||||||
$(v).height(max_height);
|
$(v).height(max_height);
|
||||||
})
|
})
|
||||||
$(".carousel_images .cycle-slideshow").cycle('resume');
|
$(".carousel_images .cycle-slideshow").cycle('resume');
|
||||||
$('.carousel_images .resume-slide').addClass('active');
|
$('.carousel_images .resume-slide').addClass('active');
|
||||||
$('.cycle-slideshow').on('cycle-after',function(){
|
$('.cycle-slideshow').on('cycle-after',function(){
|
||||||
$(".active_slide").text($('.event_carousel_slide.cycle-slide-active').index());
|
$(".active_slide").text($('.event_carousel_slide.cycle-slide-active').index());
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
$(window).on("load",function(){
|
$(window).on("load",function(){
|
||||||
$(".carousel_images .cycle-slideshow").cycle('pause');
|
$(".carousel_images .cycle-slideshow").cycle('pause');
|
||||||
var carousel_image_block_width = $('.carousel_images').width();
|
var carousel_image_block_width = $('.carousel_images').width();
|
||||||
var heights = $(".event_carousel_slide").map(function(i,v){
|
var heights = $(".event_carousel_slide").map(function(i,v){
|
||||||
return $(v).height() * carousel_image_block_width / $(v).width();
|
return $(v).height() * carousel_image_block_width / $(v).width();
|
||||||
})
|
})
|
||||||
var max_height = Math.max.apply(null,heights);
|
var max_height = Math.max.apply(null,heights);
|
||||||
$(".event_carousel_slide").each(function(i,v){
|
$(".event_carousel_slide").each(function(i,v){
|
||||||
$(v).height(max_height);
|
$(v).height(max_height);
|
||||||
})
|
})
|
||||||
$(".carousel_images .cycle-slideshow").cycle('resume');
|
$(".carousel_images .cycle-slideshow").cycle('resume');
|
||||||
})
|
})
|
||||||
$(window).resize(function(){
|
$(window).resize(function(){
|
||||||
var carousel_images_slide = $('.carousel_images_slide');
|
var carousel_images_slide = $('.carousel_images_slide');
|
||||||
var carousel_images_slide_first_child = carousel_images_slide.find(">li").eq(active_slide);
|
var carousel_images_slide_first_child = carousel_images_slide.find(">li").eq(active_slide);
|
||||||
if(carousel_images_slide_first_child.length > 0){
|
if(carousel_images_slide_first_child.length > 0){
|
||||||
var content_size = Math.floor((carousel_images_slide.outerWidth() - Number.parseInt(carousel_images_slide.css('font-size')) * 3) / carousel_images_slide_first_child.outerWidth(true));
|
var content_size = Math.floor((carousel_images_slide.outerWidth() - Number.parseInt(carousel_images_slide.css('font-size')) * 3) / carousel_images_slide_first_child.outerWidth(true));
|
||||||
content_size = Math.max(content_size,1);
|
content_size = Math.max(content_size,1);
|
||||||
carousel_images_slide.find(">li").css("display","none");
|
carousel_images_slide.find(">li").css("display","none");
|
||||||
var active_count = carousel_images_slide.find(">li").length - active_slide;
|
var active_count = carousel_images_slide.find(">li").length - active_slide;
|
||||||
if(active_count < content_size){
|
if(active_count < content_size){
|
||||||
active_slide -= (content_size - active_count);
|
active_slide -= (content_size - active_count);
|
||||||
}
|
}
|
||||||
active_slide = Math.max(active_slide,0);
|
active_slide = Math.max(active_slide,0);
|
||||||
console.log(content_size)
|
console.log(content_size)
|
||||||
for(var i = active_slide; i < active_slide + content_size;i++){
|
for(var i = active_slide; i < active_slide + content_size;i++){
|
||||||
carousel_images_slide.find(">li").eq(i).css("display","block");
|
carousel_images_slide.find(">li").eq(i).css("display","block");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var carousel_image_block_width = $('.carousel_images').width();
|
var carousel_image_block_width = $('.carousel_images').width();
|
||||||
$(".event_carousel_slide").css("height",'');
|
$(".event_carousel_slide").css("height",'');
|
||||||
var heights = $(".event_carousel_slide").map(function(i,v){
|
var heights = $(".event_carousel_slide").map(function(i,v){
|
||||||
return $(v).height() * carousel_image_block_width / $(v).width();
|
return $(v).height() * carousel_image_block_width / $(v).width();
|
||||||
})
|
})
|
||||||
var max_height = Math.max.apply(null,heights);
|
var max_height = Math.max.apply(null,heights);
|
||||||
$(".event_carousel_slide").each(function(i,v){
|
$(".event_carousel_slide").each(function(i,v){
|
||||||
$(v).height(max_height);
|
$(v).height(max_height);
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}(jQuery));
|
}(jQuery));
|
||||||
</script>
|
</script>
|
|
@ -1,15 +1,15 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title><%= render_site_title %></title>
|
<title><%= render_site_title %></title>
|
||||||
<%= stylesheet_link_tag "//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css"%>
|
<%= stylesheet_link_tag "//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css"%>
|
||||||
<%= stylesheet_link_tag "event_news/bootstrap/bootstrap.min.css"%>
|
<%= stylesheet_link_tag "event_news/bootstrap/bootstrap.min.css"%>
|
||||||
<%= stylesheet_link_tag "template/template"%>
|
<%= stylesheet_link_tag "template/template"%>
|
||||||
<%= javascript_include_tag "jquery.min"%>
|
<%= javascript_include_tag "jquery.min"%>
|
||||||
<%= javascript_include_tag "bootstrap.min"%>
|
<%= javascript_include_tag "bootstrap.min"%>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<% @target_action = "show_widget" %>
|
<% @target_action = "show_widget" %>
|
||||||
<%=render_view_for_event_news((!params[:layout_type].blank? ? params[:layout_type] : 'event_news_index1'))%>
|
<%=render_view_for_event_news((!params[:layout_type].blank? ? params[:layout_type] : 'event_news_index1'))%>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
|
@ -1,16 +1,16 @@
|
||||||
xml.instruct! :xml, :version => "1.0"
|
xml.instruct! :xml, :version => "1.0"
|
||||||
xml.rss :version => "2.0" do
|
xml.rss :version => "2.0" do
|
||||||
xml.channel do
|
xml.channel do
|
||||||
xml.title @bf.title
|
xml.title @bf.title
|
||||||
xml.link "/xhr/event_news/rssfeed/#{params[:uid]}.rss"
|
xml.link "/xhr/event_news/rssfeed/#{params[:uid]}.rss"
|
||||||
|
|
||||||
for e in @event_news
|
for e in @event_news
|
||||||
xml.item do
|
xml.item do
|
||||||
xml.title e.title
|
xml.title e.title
|
||||||
xml.description e.subtitle
|
xml.description e.subtitle
|
||||||
xml.pubDate e.created_at.to_s(:rfc822)
|
xml.pubDate e.created_at.to_s(:rfc822)
|
||||||
xml.link page_for_event_news(e)
|
xml.link page_for_event_news(e)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
36
bin/rails
36
bin/rails
|
@ -1,18 +1,18 @@
|
||||||
#!/usr/bin/env ruby
|
#!/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.
|
# 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_ROOT = File.expand_path('../..', __FILE__)
|
||||||
ENGINE_PATH = File.expand_path('../../lib/announcement/engine', __FILE__)
|
ENGINE_PATH = File.expand_path('../../lib/announcement/engine', __FILE__)
|
||||||
|
|
||||||
# Set up gems listed in the Gemfile.
|
# Set up gems listed in the Gemfile.
|
||||||
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
|
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
|
||||||
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
||||||
|
|
||||||
# require 'rails/all'
|
# require 'rails/all'
|
||||||
# require 'rails/engine/commands'
|
# require 'rails/engine/commands'
|
||||||
require "action_controller/railtie"
|
require "action_controller/railtie"
|
||||||
require "action_mailer/railtie"
|
require "action_mailer/railtie"
|
||||||
require "sprockets/railtie"
|
require "sprockets/railtie"
|
||||||
require "rails/test_unit/railtie"
|
require "rails/test_unit/railtie"
|
||||||
require 'rails/engine/commands'
|
require 'rails/engine/commands'
|
||||||
require "mongoid/railtie"
|
require "mongoid/railtie"
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
require 'rufus-scheduler'
|
require 'rufus-scheduler'
|
||||||
|
|
||||||
scheduler = Rufus::Scheduler.new
|
scheduler = Rufus::Scheduler.new
|
||||||
|
|
||||||
#return if defined?(Rails::Console) || Rails.env.test? || File.split($0).last == 'rake'
|
#return if defined?(Rails::Console) || Rails.env.test? || File.split($0).last == 'rake'
|
||||||
|
|
||||||
scheduler.cron '43 2 * * *' do
|
scheduler.cron '43 2 * * *' do
|
||||||
system('bundle exec rake event_news:remove_preview_event_news')
|
system('bundle exec rake event_news:remove_preview_event_news')
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,178 +1,183 @@
|
||||||
en:
|
en:
|
||||||
module_name:
|
module_name:
|
||||||
event_news: Event News
|
event_news: Event News
|
||||||
event_news:
|
event_news:
|
||||||
title: Title
|
event_date_setting: "Event date setting"
|
||||||
all_day: All Day
|
event_date_use_default_setting: "Event date use default setting"
|
||||||
show_today_data_first: Show today data first
|
including_day_of_the_week: "Including day of the week"
|
||||||
custom_fields_title: Custom Fields Title
|
including_time: "Including time"
|
||||||
custom_carousel_image_width_hint: "If blank, width will be default value."
|
hour_clock_24: "24 hour clock"
|
||||||
carousel_image_width: Carousel Image Width
|
title: Title
|
||||||
default_carousel_image_width: Default Carousel Image Width
|
all_day: All Day
|
||||||
place: Place
|
show_today_data_first: Show today data first
|
||||||
cover_image_display_setting: Cover Image display setting
|
custom_fields_title: Custom Fields Title
|
||||||
full_width: Full width
|
custom_carousel_image_width_hint: "If blank, width will be default value."
|
||||||
up_left_corner: Up-left corner
|
carousel_image_width: Carousel Image Width
|
||||||
up_right_corner: Up-right corner
|
default_carousel_image_width: Default Carousel Image Width
|
||||||
all_tabs_setting: '"All" tab setting'
|
place: Place
|
||||||
the_same_as_data_count: The same as data count
|
cover_image_display_setting: Cover Image display setting
|
||||||
display_all_in_other_tabs: Display all contents in other tabs
|
full_width: Full width
|
||||||
read_more_position_options: '"read more" button position'
|
up_left_corner: Up-left corner
|
||||||
default: Default
|
up_right_corner: Up-right corner
|
||||||
upper_left: Upper left
|
all_tabs_setting: '"All" tab setting'
|
||||||
lower_left: Lower left
|
the_same_as_data_count: The same as data count
|
||||||
upper_right: Upper right
|
display_all_in_other_tabs: Display all contents in other tabs
|
||||||
lower_right: Lower right
|
read_more_position_options: '"read more" button position'
|
||||||
tabs_options: Tabs options
|
default: Default
|
||||||
not_enable_tabs: Not enable tabs
|
upper_left: Upper left
|
||||||
enable_tabs_with_categories_include_all: Enable tabs with categories(include all)
|
lower_left: Lower left
|
||||||
enable_tabs_with_categories: Enable tabs with categories
|
upper_right: Upper right
|
||||||
notes: Notes
|
lower_right: Lower right
|
||||||
speaker: Speaker
|
tabs_options: Tabs options
|
||||||
host: Host
|
not_enable_tabs: Not enable tabs
|
||||||
event_date: Event Date
|
enable_tabs_with_categories_include_all: Enable tabs with categories(include all)
|
||||||
event_end_date: Event End Date
|
enable_tabs_with_categories: Enable tabs with categories
|
||||||
start_date: Start date
|
notes: Notes
|
||||||
end_date: End date
|
speaker: Speaker
|
||||||
add_to_calendar: Add to calendar
|
host: Host
|
||||||
blank_to_set: (blank to use event news setting)
|
event_date: Event Date
|
||||||
stime: start time
|
event_end_date: Event End Date
|
||||||
etime: end time
|
start_date: Start date
|
||||||
select_prompt: --select category--
|
end_date: End date
|
||||||
all: All
|
add_to_calendar: Add to calendar
|
||||||
keywords: Keywords
|
blank_to_set: (blank to use event news setting)
|
||||||
enable_search: Enable search feature
|
stime: start time
|
||||||
'yes': 'Yes'
|
etime: end time
|
||||||
'no': 'No'
|
select_prompt: --select category--
|
||||||
image: Cover Image
|
all: All
|
||||||
carousel_image: Carousel Image
|
keywords: Keywords
|
||||||
carousel_image_title: Carousel Image(display at the bottom of show page)
|
enable_search: Enable search feature
|
||||||
picture_showing_size: Picture Showing Size
|
'yes': 'Yes'
|
||||||
orignal_size: Original Size
|
'no': 'No'
|
||||||
small_size: Small Size
|
image: Cover Image
|
||||||
medium_size: Medium Size
|
carousel_image: Carousel Image
|
||||||
showing_back_and_next: Show back and next
|
carousel_image_title: Carousel Image(display at the bottom of show page)
|
||||||
not_show: Not show
|
picture_showing_size: Picture Showing Size
|
||||||
show_top: Show at top
|
orignal_size: Original Size
|
||||||
show_bottom: Show at bottom
|
small_size: Small Size
|
||||||
prev: previous
|
medium_size: Medium Size
|
||||||
next: next
|
showing_back_and_next: Show back and next
|
||||||
table:
|
not_show: Not show
|
||||||
title : Title
|
show_top: Show at top
|
||||||
date : Date
|
show_bottom: Show at bottom
|
||||||
status : Status
|
prev: previous
|
||||||
sub_title: Sub Title
|
next: next
|
||||||
category: Category
|
table:
|
||||||
author: Author
|
title : Title
|
||||||
link: Link
|
date : Date
|
||||||
file: File
|
status : Status
|
||||||
view_count: View Count
|
sub_title: Sub Title
|
||||||
department: Department
|
category: Category
|
||||||
add_new: Add New
|
author: Author
|
||||||
export_to_excel: Export to Excel
|
link: Link
|
||||||
export_all_anns: Export all Event News
|
file: File
|
||||||
import_from_excel: Import from Excel
|
view_count: View Count
|
||||||
download_example_sheet_here: Download example sheet here
|
department: Department
|
||||||
please_create_tags_cats: Please create all the tags and categories before hand. Only excel file is allowed
|
add_new: Add New
|
||||||
create_atleast_one_cat: Please create atleast one category before importing.
|
export_to_excel: Export to Excel
|
||||||
import_from_wp_xml: Import from WordPress XML
|
export_all_anns: Export all Event News
|
||||||
click_on_submit: Click on Submit to save the changes
|
import_from_excel: Import from Excel
|
||||||
approvers_list: Approvers List
|
download_example_sheet_here: Download example sheet here
|
||||||
click_set_sub_manager: Click here to set Sub Managers for this module
|
please_create_tags_cats: Please create all the tags and categories before hand. Only excel file is allowed
|
||||||
approver: Approver
|
create_atleast_one_cat: Please create atleast one category before importing.
|
||||||
top_limit: Top Limit
|
import_from_wp_xml: Import from WordPress XML
|
||||||
for_unlimited: Put 0 for unlimited
|
click_on_submit: Click on Submit to save the changes
|
||||||
feed_name: Feed Name
|
approvers_list: Approvers List
|
||||||
rssfeed: RSS Feed Link
|
click_set_sub_manager: Click here to set Sub Managers for this module
|
||||||
jsonfeed: JSON Feed Link
|
approver: Approver
|
||||||
feed_list: Feed List
|
top_limit: Top Limit
|
||||||
approve: Approve
|
for_unlimited: Put 0 for unlimited
|
||||||
all_articles: All Articles
|
feed_name: Feed Name
|
||||||
settings: Settings
|
rssfeed: RSS Feed Link
|
||||||
import: Import / Export
|
jsonfeed: JSON Feed Link
|
||||||
event_news_module: Event News
|
feed_list: Feed List
|
||||||
approval_setting: Approval Setting
|
approve: Approve
|
||||||
approve_event_news_fail: Approval Fail
|
all_articles: All Articles
|
||||||
approve_event_news_success: Approve Successfully
|
settings: Settings
|
||||||
approval_waiting: Approval
|
import: Import / Export
|
||||||
submitted_new_event_news: "%{poster} submitted a new event news waiting for your approval."
|
event_news_module: Event News
|
||||||
click_here_to_see: Please click the link below to view the event news.
|
approval_setting: Approval Setting
|
||||||
rejected_annoucement: has rejected your event news, because
|
approve_event_news_fail: Approval Fail
|
||||||
updated_annoucement: "%{poster} updated the rejected event news."
|
approve_event_news_success: Approve Successfully
|
||||||
event_news_subject: New event news waiting for approval
|
approval_waiting: Approval
|
||||||
approval_site: Site
|
submitted_new_event_news: "%{poster} submitted a new event news waiting for your approval."
|
||||||
approval_mail_hi: Hello %{name},
|
click_here_to_see: Please click the link below to view the event news.
|
||||||
approval_event_news_title: Event News Title
|
rejected_annoucement: has rejected your event news, because
|
||||||
event_news: Event News
|
updated_annoucement: "%{poster} updated the rejected event news."
|
||||||
categories: Categories
|
event_news_subject: New event news waiting for approval
|
||||||
create_event_news_success: Create Bulletin Successfully
|
approval_site: Site
|
||||||
create_event_news_category_success: Create Category Successfully
|
approval_mail_hi: Hello %{name},
|
||||||
date: Event News Date
|
approval_event_news_title: Event News Title
|
||||||
default_widget:
|
event_news: Event News
|
||||||
event_news_category_with_title: Bulletin Category with Title
|
categories: Categories
|
||||||
postdate: Post Date
|
create_event_news_success: Create Bulletin Successfully
|
||||||
subtitle: Subtitle
|
create_event_news_category_success: Create Category Successfully
|
||||||
title: Title
|
date: Event News Date
|
||||||
editing_event_news: Edit event news
|
default_widget:
|
||||||
editing_event_news_category: Edit Category
|
event_news_category_with_title: Bulletin Category with Title
|
||||||
file: Attachment
|
postdate: Post Date
|
||||||
file_description: File Description
|
subtitle: Subtitle
|
||||||
file_name: File Name
|
title: Title
|
||||||
frontend:
|
editing_event_news: Edit event news
|
||||||
event_news: Event News front-end
|
editing_event_news_category: Edit Category
|
||||||
search_result: Search result
|
file: Attachment
|
||||||
link_name: Link Name
|
file_description: File Description
|
||||||
new_event_news_category: New Bulletin Category
|
file_name: File Name
|
||||||
picture: Cover Picture
|
frontend:
|
||||||
search: Search
|
event_news: Event News front-end
|
||||||
selected_file: Select File
|
search_result: Search result
|
||||||
update_event_news_category_success: Update Category Successfully
|
link_name: Link Name
|
||||||
url: URL
|
new_event_news_category: New Bulletin Category
|
||||||
widget:
|
picture: Cover Picture
|
||||||
event_news_and_web_links: Differential Nav.
|
search: Search
|
||||||
index: Index
|
selected_file: Select File
|
||||||
search: Search
|
update_event_news_category_success: Update Category Successfully
|
||||||
more_: "More "
|
url: URL
|
||||||
more: More
|
widget:
|
||||||
email_reminder: Email Reminder
|
event_news_and_web_links: Differential Nav.
|
||||||
activate_email_reminder: Activate Email Reminder
|
index: Index
|
||||||
email_sentdate: Email Time
|
search: Search
|
||||||
email_to: Email To
|
more_: "More "
|
||||||
mail_subject: this is an event news reminder from【%{site_title}】
|
more: More
|
||||||
view_count: View Counts
|
email_reminder: Email Reminder
|
||||||
other_mailaddress: Other Email
|
activate_email_reminder: Activate Email Reminder
|
||||||
other_mailaddress_note: Divide different email accounts with ","
|
email_sentdate: Email Time
|
||||||
mail_hi: Hi
|
email_to: Email To
|
||||||
mail_url_view: This email is the reminder of an event news, please click the link for the details
|
mail_subject: this is an event news reminder from【%{site_title}】
|
||||||
mail_source: Source
|
view_count: View Counts
|
||||||
mail_time: Time
|
other_mailaddress: Other Email
|
||||||
image_upload_size_note: The following recommendations %{image_upload_size} upload size
|
other_mailaddress_note: Divide different email accounts with ","
|
||||||
resend_mail: Re-send Email
|
mail_hi: Hi
|
||||||
is_external_link: Enable External Link
|
mail_url_view: This email is the reminder of an event news, please click the link for the details
|
||||||
external_link: External Link
|
mail_source: Source
|
||||||
external_link_hint: "Make sure URL starts with http://"
|
mail_time: Time
|
||||||
display_subtitle: Display Subtitle in Content Page
|
image_upload_size_note: The following recommendations %{image_upload_size} upload size
|
||||||
display_img: Display Cover Image in Content Page
|
resend_mail: Re-send Email
|
||||||
is_display_edit_only: Only display editable event news
|
is_external_link: Enable External Link
|
||||||
only_manager_can_edit_status: Only manager can edit status of event news
|
external_link: External Link
|
||||||
layout_type: Layout type
|
external_link_hint: "Make sure URL starts with http://"
|
||||||
event_news_setting_for_iframe: Event News settings for iframe
|
display_subtitle: Display Subtitle in Content Page
|
||||||
url_generate: Url Generate
|
display_img: Display Cover Image in Content Page
|
||||||
show_page: Show pagination
|
is_display_edit_only: Only display editable event news
|
||||||
URL: URL
|
only_manager_can_edit_status: Only manager can edit status of event news
|
||||||
copy: Copy
|
layout_type: Layout type
|
||||||
month_name:
|
event_news_setting_for_iframe: Event News settings for iframe
|
||||||
'1': 'January'
|
url_generate: Url Generate
|
||||||
'2': 'February'
|
show_page: Show pagination
|
||||||
'3': 'March'
|
URL: URL
|
||||||
'4': 'April'
|
copy: Copy
|
||||||
'5': 'May'
|
month_name:
|
||||||
'6': 'June'
|
'1': 'January'
|
||||||
'7': 'July'
|
'2': 'February'
|
||||||
'8': 'August'
|
'3': 'March'
|
||||||
'9': 'September'
|
'4': 'April'
|
||||||
'10': 'October'
|
'5': 'May'
|
||||||
'11': 'November'
|
'6': 'June'
|
||||||
'12': 'December'
|
'7': 'July'
|
||||||
calendar_title: "%{month} %{year}"
|
'8': 'August'
|
||||||
ad_banner_location: Ad Banner Location(Need to Upload in Edit Page)
|
'9': 'September'
|
||||||
|
'10': 'October'
|
||||||
|
'11': 'November'
|
||||||
|
'12': 'December'
|
||||||
|
calendar_title: "%{month} %{year}"
|
||||||
|
ad_banner_location: Ad Banner Location(Need to Upload in Edit Page)
|
||||||
|
|
|
@ -2,6 +2,11 @@ zh_tw:
|
||||||
module_name:
|
module_name:
|
||||||
event_news: 活動公告
|
event_news: 活動公告
|
||||||
event_news:
|
event_news:
|
||||||
|
event_date_setting: "事件日期設定"
|
||||||
|
event_date_use_default_setting: "使用預設的事件日期設定"
|
||||||
|
including_day_of_the_week: "包含星期幾"
|
||||||
|
including_time: "包含時間"
|
||||||
|
hour_clock_24: "24小時制"
|
||||||
title: 講題
|
title: 講題
|
||||||
all_day: 全天
|
all_day: 全天
|
||||||
show_today_data_first: 優先顯示當日資料
|
show_today_data_first: 優先顯示當日資料
|
||||||
|
@ -135,7 +140,7 @@ zh_tw:
|
||||||
event_news_and_web_links: 分眾頁籤
|
event_news_and_web_links: 分眾頁籤
|
||||||
index: 索引
|
index: 索引
|
||||||
search: 搜尋
|
search: 搜尋
|
||||||
more: 更多+
|
more: 更多→
|
||||||
more_: 更多
|
more_: 更多
|
||||||
email_reminder: 寄送提醒
|
email_reminder: 寄送提醒
|
||||||
activate_email_reminder: 開啟寄送提醒
|
activate_email_reminder: 開啟寄送提醒
|
||||||
|
|
104
config/routes.rb
104
config/routes.rb
|
@ -1,52 +1,52 @@
|
||||||
Rails.application.routes.draw do
|
Rails.application.routes.draw do
|
||||||
if ENV['worker_num']=='0' && File.basename($0) != 'rake' && !Rails.const_defined?('Console')
|
if ENV['worker_num']=='0' && File.basename($0) != 'rake' && !Rails.const_defined?('Console')
|
||||||
Thread.new do
|
Thread.new do
|
||||||
EventNewsFeedCache.regenerate_all
|
EventNewsFeedCache.regenerate_all
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
locales = Site.first.in_use_locales rescue I18n.available_locales
|
locales = Site.first.in_use_locales rescue I18n.available_locales
|
||||||
|
|
||||||
scope "(:locale)", locale: Regexp.new(locales.join("|")) do
|
scope "(:locale)", locale: Regexp.new(locales.join("|")) do
|
||||||
namespace :admin do
|
namespace :admin do
|
||||||
post 'event_news/preview', to: 'event_news#preview'
|
post 'event_news/preview', to: 'event_news#preview'
|
||||||
post 'event_news/createfeed', to: 'event_news#createfeed'
|
post 'event_news/createfeed', to: 'event_news#createfeed'
|
||||||
post 'event_news/importanns', to: 'event_news#importanns'
|
post 'event_news/importanns', to: 'event_news#importanns'
|
||||||
post 'event_news/import_from_xml', to: 'event_news#import_from_xml'
|
post 'event_news/import_from_xml', to: 'event_news#import_from_xml'
|
||||||
get 'event_news/excel_format', to: 'event_news#excel_format'
|
get 'event_news/excel_format', to: 'event_news#excel_format'
|
||||||
get 'event_news/export_excel', to: 'event_news#export_excel'
|
get 'event_news/export_excel', to: 'event_news#export_excel'
|
||||||
patch 'event_news/updatefeed', to: 'event_news#updatefeed'
|
patch 'event_news/updatefeed', to: 'event_news#updatefeed'
|
||||||
delete 'event_news/deletefeed', to: 'event_news#deletefeed'
|
delete 'event_news/deletefeed', to: 'event_news#deletefeed'
|
||||||
get 'event_news/destroy_preview/:slug_title-:uid', to: 'event_news#destroy_preview'
|
get 'event_news/destroy_preview/:slug_title-:uid', to: 'event_news#destroy_preview'
|
||||||
post 'event_news/approve_event_news', to: 'event_news#approve_event_news'
|
post 'event_news/approve_event_news', to: 'event_news#approve_event_news'
|
||||||
get 'event_news/feed', to: 'event_news#feed'
|
get 'event_news/feed', to: 'event_news#feed'
|
||||||
get 'event_news/feedform', to: 'event_news#feedform'
|
get 'event_news/feedform', to: 'event_news#feedform'
|
||||||
get 'event_news/settings', to: 'event_news#settings'
|
get 'event_news/settings', to: 'event_news#settings'
|
||||||
get 'event_news/import', to: 'event_news#import'
|
get 'event_news/import', to: 'event_news#import'
|
||||||
post 'event_news/createsettings', to: 'event_news#createsettings'
|
post 'event_news/createsettings', to: 'event_news#createsettings'
|
||||||
patch 'event_news/updatesettings', to: 'event_news#updatesettings'
|
patch 'event_news/updatesettings', to: 'event_news#updatesettings'
|
||||||
post 'event_news/import_from_wp', to: 'event_news#import_from_wp'
|
post 'event_news/import_from_wp', to: 'event_news#import_from_wp'
|
||||||
post 'event_news/generate_iframe_url' => 'event_news#generate_iframe_url'
|
post 'event_news/generate_iframe_url' => 'event_news#generate_iframe_url'
|
||||||
resources :event_news do
|
resources :event_news do
|
||||||
collection do
|
collection do
|
||||||
get 'custom_fields_title'
|
get 'custom_fields_title'
|
||||||
post 'update_custom_title'
|
post 'update_custom_title'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
resources :event_news do
|
resources :event_news do
|
||||||
collection do
|
collection do
|
||||||
get ':slug_title-:uid', to: 'event_news#show', as: :display
|
get ':slug_title-:uid', to: 'event_news#show', as: :display
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
get '/xhr/event_news/agenda' => 'event_news#agenda'
|
get '/xhr/event_news/agenda' => 'event_news#agenda'
|
||||||
get "/xhr/event_news/feed/:uid" => "event_news_feeds#feed"
|
get "/xhr/event_news/feed/:uid" => "event_news_feeds#feed"
|
||||||
get "/xhr/event_news/rssfeed/:uid" => "event_news_feeds#rssfeed"
|
get "/xhr/event_news/rssfeed/:uid" => "event_news_feeds#rssfeed"
|
||||||
get "/xhr/event_news/feeds" => "event_news_feeds#feeds"
|
get "/xhr/event_news/feeds" => "event_news_feeds#feeds"
|
||||||
get '/xhr/event_news/event_news.json', to: 'event_news_module#get_event_news'
|
get '/xhr/event_news/event_news.json', to: 'event_news_module#get_event_news'
|
||||||
get '/xhr/panel/event_news/widget/sync_data' => 'event_news#show_widget'
|
get '/xhr/panel/event_news/widget/sync_data' => 'event_news#show_widget'
|
||||||
get '/xhr/event_news/file/:id/*f_name', to: 'event_news#get_file', format: false
|
get '/xhr/event_news/file/:id/*f_name', to: 'event_news#get_file', format: false
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,103 +1,104 @@
|
||||||
# encoding: UTF-8
|
# encoding: UTF-8
|
||||||
$:.push File.expand_path("../lib", __FILE__)
|
$:.push File.expand_path("../lib", __FILE__)
|
||||||
|
|
||||||
# Maintain your gem's version:
|
# Maintain your gem's version:
|
||||||
require "event_news_mod/version"
|
require "event_news_mod/version"
|
||||||
bundle_update_flag = ARGV[0]=='update' || ARGV[0]=='install'
|
bundle_update_flag = ARGV[0]=='update' || ARGV[0]=='install'
|
||||||
if bundle_update_flag
|
if bundle_update_flag
|
||||||
require File.expand_path("../update_event_news", __FILE__)
|
require File.expand_path("../update_event_news", __FILE__)
|
||||||
env_pwd = ENV['PWD']
|
env_pwd = ENV['PWD']
|
||||||
app_path = File.expand_path(__dir__)
|
app_path = File.expand_path(__dir__)
|
||||||
template_path = env_pwd + '/app/templates'
|
template_path = env_pwd + '/app/templates'
|
||||||
all_template = Dir.glob(template_path+'/*/')
|
all_template = Dir.glob(template_path+'/*/')
|
||||||
default_event_news_widget_info = JSON.parse(File.read("#{app_path}/modules/event_news/info.json"))["widgets"].sort_by{|h| h["filename"].to_i} rescue []
|
default_event_news_widget_info = JSON.parse(File.read("#{app_path}/modules/event_news/info.json"))["widgets"].sort_by{|h| h["filename"].to_i} rescue []
|
||||||
all_template.each do |folder|
|
all_template.each do |folder|
|
||||||
if !folder.include?('mobile')
|
if !folder.include?('mobile')
|
||||||
info_json_file = "#{folder}modules/event_news/info.json"
|
info_json_file = "#{folder}modules/event_news/info.json"
|
||||||
if File.exist?(info_json_file)
|
if File.exist?(info_json_file)
|
||||||
Bundler.with_clean_env{system ('cp -f '+ app_path + '/modules/event_news/show.html.erb ' + "#{folder}modules/event_news/.")}
|
Bundler.with_clean_env{system ('cp -f '+ app_path + '/modules/event_news/show.html.erb ' + "#{folder}modules/event_news/.")}
|
||||||
update_event_news_template(folder)
|
update_event_news_template(folder)
|
||||||
begin
|
begin
|
||||||
file_text = File.read(info_json_file) rescue ""
|
file_text = File.read(info_json_file) rescue ""
|
||||||
encode_file_text = file_text.encode("UTF-8", "UTF-8", invalid: :replace, replace: "???")
|
encode_file_text = file_text.encode("UTF-8", "UTF-8", invalid: :replace, replace: "???")
|
||||||
next if (encode_file_text.include?("???") rescue true)
|
next if (encode_file_text.include?("???") rescue true)
|
||||||
info = JSON.parse(encode_file_text) rescue {}
|
info = JSON.parse(encode_file_text) rescue {}
|
||||||
flag = (info.count != 0 rescue false)
|
flag = (info.count != 0 rescue false)
|
||||||
if flag
|
if flag
|
||||||
puts "Checking event_news widgets"
|
puts "Checking event_news widgets"
|
||||||
widget_info = info["widgets"].sort_by{|h| h["filename"].to_i} rescue []
|
widget_info = info["widgets"].sort_by{|h| h["filename"].to_i} rescue []
|
||||||
update_flag = false
|
update_flag = false
|
||||||
last_index = widget_info.collect{|v| v["filename"].to_s.scan(/\d+/).collect{|v1| v1.to_i}}.flatten.sort[-1] rescue nil
|
last_index = widget_info.collect{|v| v["filename"].to_s.scan(/\d+/).collect{|v1| v1.to_i}}.flatten.sort[-1] rescue nil
|
||||||
if !last_index.nil?
|
if !last_index.nil?
|
||||||
idx_regex = /^(\d+[\. \t]*)|[ \t]+$/
|
idx_regex = /^(\d+[\. \t]*)|[ \t]+$/
|
||||||
default_event_news_widget_info.each do |h|
|
default_event_news_widget_info.each do |h|
|
||||||
name_without_index = h["name"]["zh_tw"].gsub(idx_regex,'')
|
name_without_index = h["name"]["zh_tw"].gsub(idx_regex,'')
|
||||||
widget_info_index = (widget_info.index{|hh| hh["name"]["zh_tw"].gsub(idx_regex,'') == name_without_index}||-1 rescue -1)
|
widget_info_index = (widget_info.index{|hh| hh["name"]["zh_tw"].gsub(idx_regex,'') == name_without_index}||-1 rescue -1)
|
||||||
if widget_info_index == -1
|
if widget_info_index == -1
|
||||||
update_flag = true
|
update_flag = true
|
||||||
copy_h = h.dup
|
copy_h = h.dup
|
||||||
h.delete("force_cover")
|
h.delete("force_cover")
|
||||||
last_index = last_index + 1
|
last_index = last_index + 1
|
||||||
copy_h["filename"] = copy_h["filename"].sub(/\d+/){|ff| last_index.to_s}
|
copy_h["filename"] = copy_h["filename"].sub(/\d+/){|ff| last_index.to_s}
|
||||||
copy_h["name"].keys.each do |locale|
|
copy_h["name"].keys.each do |locale|
|
||||||
copy_h["name"][locale] = copy_h["name"][locale].sub(/\d+/){|ff| last_index.to_s}
|
copy_h["name"][locale] = copy_h["name"][locale].sub(/\d+/){|ff| last_index.to_s}
|
||||||
end
|
end
|
||||||
widget_info << copy_h
|
widget_info << copy_h
|
||||||
Bundler.with_clean_env{%x[cp -f #{app_path}/modules/event_news/_#{h["filename"]}.html.erb #{folder}modules/event_news/_#{copy_h["filename"]}.html.erb]}
|
Bundler.with_clean_env{%x[cp -f #{app_path}/modules/event_news/_#{h["filename"]}.html.erb #{folder}modules/event_news/_#{copy_h["filename"]}.html.erb]}
|
||||||
elsif h["force_cover"] == "true"
|
elsif h["force_cover"] == "true"
|
||||||
Bundler.with_clean_env{%x[cp -f #{app_path}/modules/event_news/_#{h["filename"]}.html.erb #{folder}modules/event_news/_#{widget_info[widget_info_index]["filename"]}.html.erb]}
|
puts "fffffffffffffff"
|
||||||
end
|
Bundler.with_clean_env{%x[cp -f #{app_path}/modules/event_news/_#{h["filename"]}.html.erb #{folder}modules/event_news/_#{widget_info[widget_info_index]["filename"]}.html.erb]}
|
||||||
end
|
end
|
||||||
if update_flag
|
end
|
||||||
info["widgets"] = widget_info
|
if update_flag
|
||||||
puts "Writing json #{info["widgets"].count} in #{info_json_file}"
|
info["widgets"] = widget_info
|
||||||
begin
|
puts "Writing json #{info["widgets"].count} in #{info_json_file}"
|
||||||
info_json = JSON.pretty_generate(info).gsub(":[",":[\n").gsub(":{",":{\n")
|
begin
|
||||||
rescue
|
info_json = JSON.pretty_generate(info).gsub(":[",":[\n").gsub(":{",":{\n")
|
||||||
info_json = info.to_s.gsub("=>",": \n")
|
rescue
|
||||||
end
|
info_json = info.to_s.gsub("=>",": \n")
|
||||||
File.open(info_json_file,"w+"){|f| f.write(info_json)}
|
end
|
||||||
end
|
File.open(info_json_file,"w+"){|f| f.write(info_json)}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
rescue => e
|
end
|
||||||
puts e
|
rescue => e
|
||||||
puts "There has some error when checking event_news widgets"
|
puts e
|
||||||
end
|
puts "There has some error when checking event_news widgets"
|
||||||
else
|
end
|
||||||
if !Dir.exist?(File.dirname(info_json_file)) && Dir.exist?(File.dirname(File.dirname(info_json_file)))
|
else
|
||||||
Bundler.with_clean_env{system ('cp -r '+ app_path + '/modules/ ' + folder)}
|
if !Dir.exist?(File.dirname(info_json_file)) && Dir.exist?(File.dirname(File.dirname(info_json_file)))
|
||||||
end
|
Bundler.with_clean_env{system ('cp -r '+ app_path + '/modules/ ' + folder)}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
# all_template.each do |folder|
|
|
||||||
# if !folder.include?('mobile')
|
# all_template.each do |folder|
|
||||||
# moudle_path = "#{folder}modules/universal_table/"
|
# if !folder.include?('mobile')
|
||||||
# begin
|
# moudle_path = "#{folder}modules/universal_table/"
|
||||||
# if Dir.exist?(File.dirname(moudle_path))
|
# begin
|
||||||
# Bundler.with_clean_env{system ('cp -r '+ app_path + '/modules/ ' + folder)}
|
# if Dir.exist?(File.dirname(moudle_path))
|
||||||
# end
|
# Bundler.with_clean_env{system ('cp -r '+ app_path + '/modules/ ' + folder)}
|
||||||
# rescue => e
|
# end
|
||||||
# puts "There was some error when updating event_news widget."
|
# rescue => e
|
||||||
# end
|
# puts "There was some error when updating event_news widget."
|
||||||
# end
|
# end
|
||||||
# end
|
# end
|
||||||
end
|
# end
|
||||||
# Describe your gem and declare its dependencies:
|
end
|
||||||
Gem::Specification.new do |s|
|
# Describe your gem and declare its dependencies:
|
||||||
s.name = "event_news_mod"
|
Gem::Specification.new do |s|
|
||||||
s.version = EventNewsMod::VERSION
|
s.name = "event_news_mod"
|
||||||
s.authors = ["RulingDigital"]
|
s.version = EventNewsMod::VERSION
|
||||||
s.email = ["orbit@rulingcom.com"]
|
s.authors = ["RulingDigital"]
|
||||||
s.homepage = "http://www.rulingcom.com"
|
s.email = ["orbit@rulingcom.com"]
|
||||||
s.summary = "EventNews for Orbit"
|
s.homepage = "http://www.rulingcom.com"
|
||||||
s.description = "EventNews for Orbit"
|
s.summary = "EventNews for Orbit"
|
||||||
s.license = "MIT"
|
s.description = "EventNews for Orbit"
|
||||||
|
s.license = "MIT"
|
||||||
s.files = Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.rdoc"]
|
|
||||||
s.test_files = Dir["test/**/*"]
|
s.files = Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.rdoc"]
|
||||||
|
s.test_files = Dir["test/**/*"]
|
||||||
s.add_dependency "rufus-scheduler", "~> 3.6.0"
|
|
||||||
end
|
s.add_dependency "rufus-scheduler", "~> 3.6.0"
|
||||||
|
end
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
require "event_news_mod/engine"
|
require "event_news_mod/engine"
|
||||||
module EventNewsMod
|
module EventNewsMod
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,172 +1,172 @@
|
||||||
require "yaml"
|
require "yaml"
|
||||||
module EventNewsMod
|
module EventNewsMod
|
||||||
class Engine < ::Rails::Engine
|
class Engine < ::Rails::Engine
|
||||||
initializer "event_news" do
|
initializer "event_news" do
|
||||||
begin
|
begin
|
||||||
translate_data = Dir["#{EventNewsMod::Engine.root}/config/locales/*.yml"] .map{|yaml_file| YAML.load(File.read(yaml_file))}
|
translate_data = Dir["#{EventNewsMod::Engine.root}/config/locales/*.yml"] .map{|yaml_file| YAML.load(File.read(yaml_file))}
|
||||||
data = {}
|
data = {}
|
||||||
key1 = {}
|
key1 = {}
|
||||||
key2 = {}
|
key2 = {}
|
||||||
key3 = {}
|
key3 = {}
|
||||||
key4 = {}
|
key4 = {}
|
||||||
key5 = {}
|
key5 = {}
|
||||||
key1_attr = []
|
key1_attr = []
|
||||||
key2_attr = []
|
key2_attr = []
|
||||||
key3_attr = []
|
key3_attr = []
|
||||||
key4_attr = []
|
key4_attr = []
|
||||||
data_item = {}
|
data_item = {}
|
||||||
key_item1 = {}
|
key_item1 = {}
|
||||||
key_item2 = {}
|
key_item2 = {}
|
||||||
key_item3 = {}
|
key_item3 = {}
|
||||||
value_item1 = {}
|
value_item1 = {}
|
||||||
value_item2 = {}
|
value_item2 = {}
|
||||||
value_item3 = {}
|
value_item3 = {}
|
||||||
value2_item1 = {}
|
value2_item1 = {}
|
||||||
value2_item2 = {}
|
value2_item2 = {}
|
||||||
key1_options = ['small_size','medium_size','orignal_size']
|
key1_options = ['small_size','medium_size','orignal_size']
|
||||||
key2_options = ['not_enable_tabs','enable_tabs_with_categories_include_all','enable_tabs_with_categories']
|
key2_options = ['not_enable_tabs','enable_tabs_with_categories_include_all','enable_tabs_with_categories']
|
||||||
key3_options = ['default','upper_left','lower_left','upper_right','lower_right']
|
key3_options = ['default','upper_left','lower_left','upper_right','lower_right']
|
||||||
key4_options = ['the_same_as_data_count','display_all_in_other_tabs']
|
key4_options = ['the_same_as_data_count','display_all_in_other_tabs']
|
||||||
#After fix I18n.load_path, translation can work there
|
#After fix I18n.load_path, translation can work there
|
||||||
key5_attr = ['no_','yes_'].map{|v| I18n.available_locales.map{|k| I18n.with_locale(k){[k,I18n.t(v)]}}.to_h}
|
key5_attr = ['no_','yes_'].map{|v| I18n.available_locales.map{|k| I18n.with_locale(k){[k,I18n.t(v)]}}.to_h}
|
||||||
key1_options.each_with_index do |k,i|
|
key1_options.each_with_index do |k,i|
|
||||||
key1_attr[i] = {}
|
key1_attr[i] = {}
|
||||||
end
|
end
|
||||||
key2_options.each_with_index do |k,i|
|
key2_options.each_with_index do |k,i|
|
||||||
key2_attr[i] = {}
|
key2_attr[i] = {}
|
||||||
end
|
end
|
||||||
key3_options.each_with_index do |k,i|
|
key3_options.each_with_index do |k,i|
|
||||||
key3_attr[i] = {}
|
key3_attr[i] = {}
|
||||||
end
|
end
|
||||||
key4_options.each_with_index do |k,i|
|
key4_options.each_with_index do |k,i|
|
||||||
key4_attr[i] = {}
|
key4_attr[i] = {}
|
||||||
end
|
end
|
||||||
translate_data.each do |t_data|
|
translate_data.each do |t_data|
|
||||||
v = t_data.values
|
v = t_data.values
|
||||||
k = t_data.keys[0]
|
k = t_data.keys[0]
|
||||||
key1[k] = v[0]['event_news']['picture_showing_size']
|
key1[k] = v[0]['event_news']['picture_showing_size']
|
||||||
key2[k] = v[0]['event_news']['tabs_options']
|
key2[k] = v[0]['event_news']['tabs_options']
|
||||||
key3[k] = v[0]['event_news']['read_more_position_options']
|
key3[k] = v[0]['event_news']['read_more_position_options']
|
||||||
key4[k] = v[0]['event_news']['all_tabs_setting']
|
key4[k] = v[0]['event_news']['all_tabs_setting']
|
||||||
key5[k] = v[0]['event_news']['show_today_data_first']
|
key5[k] = v[0]['event_news']['show_today_data_first']
|
||||||
key1_options.each_with_index do |kk,i|
|
key1_options.each_with_index do |kk,i|
|
||||||
key1_attr[i][k] = v[0]['event_news'][kk]
|
key1_attr[i][k] = v[0]['event_news'][kk]
|
||||||
end
|
end
|
||||||
key2_options.each_with_index do |kk,i|
|
key2_options.each_with_index do |kk,i|
|
||||||
key2_attr[i][k] = v[0]['event_news'][kk]
|
key2_attr[i][k] = v[0]['event_news'][kk]
|
||||||
end
|
end
|
||||||
key3_options.each_with_index do |kk,i|
|
key3_options.each_with_index do |kk,i|
|
||||||
key3_attr[i][k] = v[0]['event_news'][kk]
|
key3_attr[i][k] = v[0]['event_news'][kk]
|
||||||
end
|
end
|
||||||
key4_options.each_with_index do |kk,i|
|
key4_options.each_with_index do |kk,i|
|
||||||
key4_attr[i][k] = v[0]['event_news'][kk]
|
key4_attr[i][k] = v[0]['event_news'][kk]
|
||||||
end
|
end
|
||||||
key_item1[k] = v[0]['event_news']['showing_back_and_next']
|
key_item1[k] = v[0]['event_news']['showing_back_and_next']
|
||||||
key_item2[k] = v[0]['event_news']['enable_search']
|
key_item2[k] = v[0]['event_news']['enable_search']
|
||||||
key_item3[k] = v[0]['event_news']['ad_banner_location']
|
key_item3[k] = v[0]['event_news']['ad_banner_location']
|
||||||
value_item1[k] = v[0]['event_news']['not_show']
|
value_item1[k] = v[0]['event_news']['not_show']
|
||||||
value_item2[k] = v[0]['event_news']['show_bottom']
|
value_item2[k] = v[0]['event_news']['show_bottom']
|
||||||
value_item3[k] = v[0]['event_news']['show_top']
|
value_item3[k] = v[0]['event_news']['show_top']
|
||||||
value2_item1[k] = v[0]['event_news']['no']
|
value2_item1[k] = v[0]['event_news']['no']
|
||||||
value2_item2[k] = v[0]['event_news']['yes']
|
value2_item2[k] = v[0]['event_news']['yes']
|
||||||
end
|
end
|
||||||
data[key1] = key1_attr
|
data[key1] = key1_attr
|
||||||
data[key2] = key2_attr
|
data[key2] = key2_attr
|
||||||
data[key3] = key3_attr
|
data[key3] = key3_attr
|
||||||
data[key4] = key4_attr
|
data[key4] = key4_attr
|
||||||
data[key5] = key5_attr
|
data[key5] = key5_attr
|
||||||
data_item[key_item1] = [value_item1,value_item2,value_item3]
|
data_item[key_item1] = [value_item1,value_item2,value_item3]
|
||||||
data_item[key_item2] = [value2_item1,value2_item2]
|
data_item[key_item2] = [value2_item1,value2_item2]
|
||||||
data_item[key_item3] = [value_item2,value_item3]
|
data_item[key_item3] = [value_item2,value_item3]
|
||||||
if ENV['worker_num']=='0' && File.basename($0) != 'rake' && !Rails.const_defined?('Console')
|
if ENV['worker_num']=='0' && File.basename($0) != 'rake' && !Rails.const_defined?('Console')
|
||||||
require File.expand_path('../../../app/models/event_news_cache', __FILE__)
|
require File.expand_path('../../../app/models/event_news_cache', __FILE__)
|
||||||
if defined?(EventNewsCache)
|
if defined?(EventNewsCache)
|
||||||
EventNewsCache.destroy_all
|
EventNewsCache.destroy_all
|
||||||
end
|
end
|
||||||
require File.expand_path('../../../app/models/event_news_custom_title', __FILE__)
|
require File.expand_path('../../../app/models/event_news_custom_title', __FILE__)
|
||||||
if defined? EventNewsCustomTitle
|
if defined? EventNewsCustomTitle
|
||||||
EventNewsCustomTitle.get_map
|
EventNewsCustomTitle.get_map
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
rescue => e
|
rescue => e
|
||||||
puts ['error in event_news',e,e.backtrace]
|
puts ['error in event_news',e,e.backtrace]
|
||||||
end
|
end
|
||||||
OrbitApp.registration "event_news", :type => "ModuleApp" do
|
OrbitApp.registration "event_news", :type => "ModuleApp" do
|
||||||
module_label "event_news.event_news"
|
module_label "event_news.event_news"
|
||||||
base_url File.expand_path File.dirname(__FILE__)
|
base_url File.expand_path File.dirname(__FILE__)
|
||||||
widget_methods ["widget","random_event_news_widget", "tag_cloud"]
|
widget_methods ["widget","random_event_news_widget", "tag_cloud"]
|
||||||
widget_settings [{"data_count"=>30}]
|
widget_settings [{"data_count"=>30}]
|
||||||
taggable "EventNews"
|
taggable "EventNews"
|
||||||
categorizable
|
categorizable
|
||||||
authorizable
|
authorizable
|
||||||
frontend_enabled
|
frontend_enabled
|
||||||
feeds_url "/xhr/event_news/feeds"
|
feeds_url "/xhr/event_news/feeds"
|
||||||
data_count 1..30
|
data_count 1..30
|
||||||
begin
|
begin
|
||||||
show_options data
|
show_options data
|
||||||
show_option_items data_item
|
show_option_items data_item
|
||||||
rescue => e
|
rescue => e
|
||||||
puts ['there_was_no_show_option_method',e]
|
puts ['there_was_no_show_option_method',e]
|
||||||
end
|
end
|
||||||
side_bar do
|
side_bar do
|
||||||
head_label_i18n 'event_news.event_news', icon_class: "icons-megaphone"
|
head_label_i18n 'event_news.event_news', icon_class: "icons-megaphone"
|
||||||
available_for "users"
|
available_for "users"
|
||||||
active_for_controllers (['admin/event_news'])
|
active_for_controllers (['admin/event_news'])
|
||||||
head_link_path "admin_event_news_index_path"
|
head_link_path "admin_event_news_index_path"
|
||||||
|
|
||||||
context_link 'event_news.all_articles',
|
context_link 'event_news.all_articles',
|
||||||
:link_path=>"admin_event_news_index_path" ,
|
:link_path=>"admin_event_news_index_path" ,
|
||||||
:priority=>1,
|
:priority=>1,
|
||||||
:active_for_action=>{'admin/event_news'=>'index'},
|
:active_for_action=>{'admin/event_news'=>'index'},
|
||||||
:available_for => 'users'
|
:available_for => 'users'
|
||||||
context_link 'new_',
|
context_link 'new_',
|
||||||
:link_path=>"new_admin_event_news_path" ,
|
:link_path=>"new_admin_event_news_path" ,
|
||||||
:priority=>2,
|
:priority=>2,
|
||||||
:active_for_action=>{'admin/event_news'=>'new'},
|
:active_for_action=>{'admin/event_news'=>'new'},
|
||||||
:available_for => 'sub_managers'
|
:available_for => 'sub_managers'
|
||||||
context_link 'categories',
|
context_link 'categories',
|
||||||
:link_path=>"admin_module_app_categories_path" ,
|
:link_path=>"admin_module_app_categories_path" ,
|
||||||
:link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'event_news').id}",
|
:link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'event_news').id}",
|
||||||
:priority=>3,
|
:priority=>3,
|
||||||
:active_for_action=>{'admin/event_news'=>'categories'},
|
:active_for_action=>{'admin/event_news'=>'categories'},
|
||||||
:active_for_category => 'EventNewsModule',
|
:active_for_category => 'EventNewsModule',
|
||||||
:available_for => 'managers'
|
:available_for => 'managers'
|
||||||
context_link 'tags',
|
context_link 'tags',
|
||||||
:link_path=>"admin_module_app_tags_path" ,
|
:link_path=>"admin_module_app_tags_path" ,
|
||||||
:link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'event_news').id}",
|
:link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'event_news').id}",
|
||||||
:priority=>4,
|
:priority=>4,
|
||||||
:active_for_action=>{'admin/event_news'=>'tags'},
|
:active_for_action=>{'admin/event_news'=>'tags'},
|
||||||
:active_for_tag => 'EventNewsModule',
|
:active_for_tag => 'EventNewsModule',
|
||||||
:available_for => 'managers'
|
:available_for => 'managers'
|
||||||
context_link 'event_news.custom_fields_title',
|
context_link 'event_news.custom_fields_title',
|
||||||
:link_path=>"custom_fields_title_admin_event_news_index_path" ,
|
:link_path=>"custom_fields_title_admin_event_news_index_path" ,
|
||||||
:priority=>5,
|
:priority=>5,
|
||||||
:active_for_action=>{'admin/event_news'=>'custom_fields_title'},
|
:active_for_action=>{'admin/event_news'=>'custom_fields_title'},
|
||||||
:available_for => 'managers'
|
:available_for => 'managers'
|
||||||
|
|
||||||
context_link 'event_news.feed_list',
|
context_link 'event_news.feed_list',
|
||||||
:link_path=>"admin_event_news_feed_path" ,
|
:link_path=>"admin_event_news_feed_path" ,
|
||||||
:priority=>6,
|
:priority=>6,
|
||||||
:active_for_action=>{'admin/event_news'=>'feed'},
|
:active_for_action=>{'admin/event_news'=>'feed'},
|
||||||
:available_for => 'managers'
|
:available_for => 'managers'
|
||||||
context_link 'event_news.import',
|
context_link 'event_news.import',
|
||||||
:link_path=>"admin_event_news_import_path" ,
|
:link_path=>"admin_event_news_import_path" ,
|
||||||
:priority=>7,
|
:priority=>7,
|
||||||
:active_for_action=>{'admin/event_news'=>'import'},
|
:active_for_action=>{'admin/event_news'=>'import'},
|
||||||
:available_for => 'managers'
|
:available_for => 'managers'
|
||||||
context_link 'event_news.settings',
|
context_link 'event_news.settings',
|
||||||
:link_path=>"admin_event_news_settings_path" ,
|
:link_path=>"admin_event_news_settings_path" ,
|
||||||
:priority=>8,
|
:priority=>8,
|
||||||
:active_for_action=>{'admin/event_news'=>'settings'},
|
:active_for_action=>{'admin/event_news'=>'settings'},
|
||||||
:available_for => 'managers'
|
:available_for => 'managers'
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
# temp = YAML.load_file(File.join(Rails.root,"config","mongoid.yml"))
|
# temp = YAML.load_file(File.join(Rails.root,"config","mongoid.yml"))
|
||||||
# dbsettings = temp["production"]["sessions"]["default"]
|
# dbsettings = temp["production"]["sessions"]["default"]
|
||||||
# s = Moped::Session.new(dbsettings["hosts"])
|
# s = Moped::Session.new(dbsettings["hosts"])
|
||||||
# s.use dbsettings["database"]
|
# s.use dbsettings["database"]
|
||||||
# s[:bulletins].indexes.create({expirable_created_at: 1},{ expireAfterSeconds: 180 })
|
# s[:bulletins].indexes.create({expirable_created_at: 1},{ expireAfterSeconds: 180 })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
|
@ -1,3 +1,3 @@
|
||||||
module EventNewsMod
|
module EventNewsMod
|
||||||
VERSION = "0.0.1"
|
VERSION = "0.0.1"
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,24 +1,24 @@
|
||||||
module EventNewsModel
|
module EventNewsModel
|
||||||
module Cache
|
module Cache
|
||||||
require 'active_support/concern'
|
require 'active_support/concern'
|
||||||
extend ActiveSupport::Concern
|
extend ActiveSupport::Concern
|
||||||
included do
|
included do
|
||||||
before_save :do_before_save
|
before_save :do_before_save
|
||||||
end
|
end
|
||||||
def do_before_save
|
def do_before_save
|
||||||
if self.class == SubPart
|
if self.class == SubPart
|
||||||
EventNewsCache.where(parent_id:self.id).destroy
|
EventNewsCache.where(parent_id:self.id).destroy
|
||||||
elsif self.class == EventNews || (self.class == Page && self.module == "event_news")
|
elsif self.class == EventNews || (self.class == Page && self.module == "event_news")
|
||||||
if self.class == EventNews
|
if self.class == EventNews
|
||||||
tmp_tag_ids = (Array(self.tag_ids) + Array(self.org_tag_ids)).uniq
|
tmp_tag_ids = (Array(self.tag_ids) + Array(self.org_tag_ids)).uniq
|
||||||
Thread.new do
|
Thread.new do
|
||||||
EventNewsCache.where(:uid.in => EventNewsFeed.where(:tag_ids.in => tmp_tag_ids.collect{|v| v.to_s}).pluck(:uid)).each do |cache|
|
EventNewsCache.where(:uid.in => EventNewsFeed.where(:tag_ids.in => tmp_tag_ids.collect{|v| v.to_s}).pluck(:uid)).each do |cache|
|
||||||
cache.regenerate
|
cache.regenerate
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
EventNewsCache.all.destroy
|
EventNewsCache.all.destroy
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
|
@ -1,8 +1,8 @@
|
||||||
desc 'Remove duplicated EventNews created by preview'
|
desc 'Remove duplicated EventNews created by preview'
|
||||||
|
|
||||||
namespace :event_news do
|
namespace :event_news do
|
||||||
task :remove_preview_event_news => [:environment] do
|
task :remove_preview_event_news => [:environment] do
|
||||||
event_news = EventNews.where(is_preview: true)
|
event_news = EventNews.where(is_preview: true)
|
||||||
event_news.destroy_all
|
event_news.destroy_all
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,34 +1,34 @@
|
||||||
<div class="w-annc widget-announcement-1">
|
<div class="w-annc widget-announcement-1">
|
||||||
<h3 class="w-annc__widget-title">
|
<h3 class="w-annc__widget-title">
|
||||||
<span>{{widget-title}}</span>
|
<span>{{widget-title}}</span>
|
||||||
</h3>
|
</h3>
|
||||||
<ul class="w-annc__list" data-level="0" data-list="event_news">
|
<ul class="w-annc__list" data-level="0" data-list="event_news">
|
||||||
<li class="w-annc__item">
|
<li class="w-annc__item">
|
||||||
<div class="w-annc__img-wrap bullseye">
|
<div class="w-annc__img-wrap bullseye">
|
||||||
<img class="w-annc__img" src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}">
|
<img class="w-annc__img" src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}">
|
||||||
</div>
|
</div>
|
||||||
<div class="w-annc__meta">
|
<div class="w-annc__meta">
|
||||||
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<span class="w-annc__postdate-wrap" date-format="%Y-%m-%d">
|
<span class="w-annc__postdate-wrap" date-format="%Y-%m-%d">
|
||||||
<i class="fa fa-calendar-o"></i>
|
<i class="fa fa-calendar-o"></i>
|
||||||
<span class="w-annc__postdate">{{postdate}}</span>
|
<span class="w-annc__postdate">{{postdate}}</span>
|
||||||
</span>
|
</span>
|
||||||
<span class="w-annc__category-wrap">
|
<span class="w-annc__category-wrap">
|
||||||
<i class="fa fa-tasks"></i>
|
<i class="fa fa-tasks"></i>
|
||||||
<span class="w-annc__category">{{category}}</span>
|
<span class="w-annc__category">{{category}}</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<h4 class="w-annc__entry-title">
|
<h4 class="w-annc__entry-title">
|
||||||
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</h4>
|
</h4>
|
||||||
<div class="w-annc__subtitle">{{subtitle}}</div>
|
<div class="w-annc__subtitle">{{subtitle}}</div>
|
||||||
<div class="w-annc__speaker" style="{{speaker-css}}">【{{speaker-head}}】 {{speaker}}</div>
|
<div class="w-annc__speaker" style="{{speaker-css}}">【{{speaker-head}}】 {{speaker}}</div>
|
||||||
<div class="w-annc__host" style="{{host-css}}">【{{host-head}}】 {{host}}</div>
|
<div class="w-annc__host" style="{{host-css}}">【{{host-head}}】 {{host}}</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="w-annc__more-wrap clearfix">
|
<div class="w-annc__more-wrap clearfix">
|
||||||
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,22 +1,22 @@
|
||||||
<div class="w-annc widget-announcement-10">
|
<div class="w-annc widget-announcement-10">
|
||||||
<h3 class="w-annc__widget-title">
|
<h3 class="w-annc__widget-title">
|
||||||
<span>{{widget-title}}</span>
|
<span>{{widget-title}}</span>
|
||||||
</h3>
|
</h3>
|
||||||
<ul class="w-annc__list" data-level="0" data-list="event_news">
|
<ul class="w-annc__list" data-level="0" data-list="event_news">
|
||||||
<li class="w-annc__item row">
|
<li class="w-annc__item row">
|
||||||
<h4 class="w-annc__entry-title col-sm-9">
|
<h4 class="w-annc__entry-title col-sm-9">
|
||||||
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</h4>
|
</h4>
|
||||||
<span class="w-annc__postdate-wrap col-sm-3" date-format="%Y-%m-%d">
|
<span class="w-annc__postdate-wrap col-sm-3" date-format="%Y-%m-%d">
|
||||||
<i class="fa fa-calendar-o"></i>
|
<i class="fa fa-calendar-o"></i>
|
||||||
<span class="w-annc__postdate">{{postdate}}</span>
|
<span class="w-annc__postdate">{{postdate}}</span>
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="w-annc__more-wrap clearfix">
|
<div class="w-annc__more-wrap clearfix">
|
||||||
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,22 +1,22 @@
|
||||||
<div class="w-annc widget-announcement-11">
|
<div class="w-annc widget-announcement-11">
|
||||||
<h3 class="w-annc__widget-title">
|
<h3 class="w-annc__widget-title">
|
||||||
<span>{{widget-title}}</span>
|
<span>{{widget-title}}</span>
|
||||||
</h3>
|
</h3>
|
||||||
<ul class="w-annc__list" data-level="0" data-list="event_news">
|
<ul class="w-annc__list" data-level="0" data-list="event_news">
|
||||||
<li class="w-annc__item row">
|
<li class="w-annc__item row">
|
||||||
<span class="w-annc__postdate-wrap col-sm-3" date-format="%Y-%m-%d">
|
<span class="w-annc__postdate-wrap col-sm-3" date-format="%Y-%m-%d">
|
||||||
<i class="fa fa-calendar-o"></i>
|
<i class="fa fa-calendar-o"></i>
|
||||||
<span class="w-annc__postdate">{{postdate}}</span>
|
<span class="w-annc__postdate">{{postdate}}</span>
|
||||||
</span>
|
</span>
|
||||||
<h4 class="w-annc__entry-title col-sm-9">
|
<h4 class="w-annc__entry-title col-sm-9">
|
||||||
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</h4>
|
</h4>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="w-annc__more-wrap clearfix">
|
<div class="w-annc__more-wrap clearfix">
|
||||||
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,27 +1,27 @@
|
||||||
<div class="w-annc widget-announcement-12">
|
<div class="w-annc widget-announcement-12">
|
||||||
<h3 class="w-annc__widget-title">
|
<h3 class="w-annc__widget-title">
|
||||||
<span>{{widget-title}}</span>
|
<span>{{widget-title}}</span>
|
||||||
</h3>
|
</h3>
|
||||||
<table class="w-annc__table table">
|
<table class="w-annc__table table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="w-annc__th w-annc__th--title">{{title-head}}</th>
|
<th class="w-annc__th w-annc__th--title">{{title-head}}</th>
|
||||||
<th class="w-annc__th w-annc__th--date">{{date-head}}</th>
|
<th class="w-annc__th w-annc__th--date">{{date-head}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody data-level="0" data-list="event_news">
|
<tbody data-level="0" data-list="event_news">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="w-annc_content">
|
<td class="w-annc_content">
|
||||||
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</td>
|
</td>
|
||||||
<td class="w-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
|
<td class="w-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<div class="w-annc__more-wrap clearfix">
|
<div class="w-annc__more-wrap clearfix">
|
||||||
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
|
@ -1,27 +1,27 @@
|
||||||
<div class="w-annc widget-announcement-13">
|
<div class="w-annc widget-announcement-13">
|
||||||
<h3 class="w-annc__widget-title">
|
<h3 class="w-annc__widget-title">
|
||||||
<span>{{widget-title}}</span>
|
<span>{{widget-title}}</span>
|
||||||
</h3>
|
</h3>
|
||||||
<table class="w-annc__table table">
|
<table class="w-annc__table table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="w-annc__th w-annc__th--date">{{date-head}}</th>
|
<th class="w-annc__th w-annc__th--date">{{date-head}}</th>
|
||||||
<th class="w-annc__th w-annc__th--title">{{title-head}}</th>
|
<th class="w-annc__th w-annc__th--title">{{title-head}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody data-level="0" data-list="event_news">
|
<tbody data-level="0" data-list="event_news">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="w-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
|
<td class="w-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
|
||||||
<td class="w-annc_content">
|
<td class="w-annc_content">
|
||||||
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<div class="w-annc__more-wrap clearfix">
|
<div class="w-annc__more-wrap clearfix">
|
||||||
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
|
@ -1,29 +1,29 @@
|
||||||
<div class="w-annc widget-announcement-14">
|
<div class="w-annc widget-announcement-14">
|
||||||
<h3 class="w-annc__widget-title">
|
<h3 class="w-annc__widget-title">
|
||||||
<span>{{widget-title}}</span>
|
<span>{{widget-title}}</span>
|
||||||
</h3>
|
</h3>
|
||||||
<div class="w-annc__inner row">
|
<div class="w-annc__inner row">
|
||||||
<div class="w-annc__img-wrap col-xs-4 bullseye">
|
<div class="w-annc__img-wrap col-xs-4 bullseye">
|
||||||
<img class="w-annc__img" src="{{main_picture}}" alt="{{main_picture_description}}" title="{{main_picture_description}}">
|
<img class="w-annc__img" src="{{main_picture}}" alt="{{main_picture_description}}" title="{{main_picture_description}}">
|
||||||
</div>
|
</div>
|
||||||
<ul class="w-annc__list col-xs-8" data-level="0" data-list="event_news">
|
<ul class="w-annc__list col-xs-8" data-level="0" data-list="event_news">
|
||||||
<li class="w-annc__item">
|
<li class="w-annc__item">
|
||||||
<div class="w-annc__content row">
|
<div class="w-annc__content row">
|
||||||
<h4 class="w-annc__entry-title col-xs-9">
|
<h4 class="w-annc__entry-title col-xs-9">
|
||||||
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="w-annc__status label {{status-class}}">{{status}}</span>
|
<span class="w-annc__status label {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</h4>
|
</h4>
|
||||||
<span class="w-annc__postdate-wrap col-xs-3" date-format="%Y-%m-%d">
|
<span class="w-annc__postdate-wrap col-xs-3" date-format="%Y-%m-%d">
|
||||||
<i class="fa fa-calendar-o"></i>
|
<i class="fa fa-calendar-o"></i>
|
||||||
<span class="w-annc__postdate">{{postdate}}</span>
|
<span class="w-annc__postdate">{{postdate}}</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="w-annc__more-wrap clearfix">
|
<div class="w-annc__more-wrap clearfix">
|
||||||
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,162 +1,162 @@
|
||||||
<div class="w-annc widget-announcement-4 w-annc widget-announcement-15" style="position:relative;">
|
<div class="w-annc widget-announcement-4 w-annc widget-announcement-15" style="position:relative;">
|
||||||
<div class="w-annc__more-wrap clearfix">
|
<div class="w-annc__more-wrap clearfix">
|
||||||
<h2 class="w-annc__widget-title">
|
<h2 class="w-annc__widget-title">
|
||||||
<span>{{widget-title}}</span>
|
<span>{{widget-title}}</span>
|
||||||
</h2>
|
</h2>
|
||||||
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
||||||
</div>
|
</div>
|
||||||
<div style="position: absolute;top: 50%;bottom: 50%;width:100%;">
|
<div style="position: absolute;top: 50%;bottom: 50%;width:100%;">
|
||||||
<button class="btn-left" title = "<%= (I18n.locale.to_s =="zh_tw") ? "上一張" : "prev" %>" style="float: left;height: 2.5em; width: 2.5em;background: url(/assets/left-01.png) no-repeat;border: 0;background-size: contain;position: absolute;transition:.3s; left: 0.6%;"></button>
|
<button class="btn-left" title = "<%= (I18n.locale.to_s =="zh_tw") ? "上一張" : "prev" %>" style="float: left;height: 2.5em; width: 2.5em;background: url(/assets/left-01.png) no-repeat;border: 0;background-size: contain;position: absolute;transition:.3s; left: 0.6%;"></button>
|
||||||
<button class="btn-right" title = "<%= (I18n.locale.to_s =="zh_tw") ? "下一張" : "next" %>" style="float: right;;height: 2.5em; width: 2.5em;background: url(/assets/right-01.png) no-repeat;background-size: contain;border: 0;position: absolute;transition:.3s;right: 0.6%;"></button>
|
<button class="btn-right" title = "<%= (I18n.locale.to_s =="zh_tw") ? "下一張" : "next" %>" style="float: right;;height: 2.5em; width: 2.5em;background: url(/assets/right-01.png) no-repeat;background-size: contain;border: 0;position: absolute;transition:.3s;right: 0.6%;"></button>
|
||||||
</div>
|
</div>
|
||||||
<ul class="w-annc__list row" data-level="0" data-list="event_news">
|
<ul class="w-annc__list row" data-level="0" data-list="event_news">
|
||||||
<li class="w-annc__item col-md-4">
|
<li class="w-annc__item col-md-4">
|
||||||
<div class="w-annc__img-wrap bullseye">
|
<div class="w-annc__img-wrap bullseye">
|
||||||
<img class="w-annc__img" src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}">
|
<img class="w-annc__img" src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}">
|
||||||
</div>
|
</div>
|
||||||
<div class="w-annc__content-wrap">
|
<div class="w-annc__content-wrap">
|
||||||
<div class="w-annc__meta">
|
<div class="w-annc__meta">
|
||||||
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="w-annc__status label {{status-class}}">{{status}}</span>
|
<span class="w-annc__status label {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<span class="w-annc__postdate-wrap" date-format="%Y-%m-%d">
|
<span class="w-annc__postdate-wrap" date-format="%Y-%m-%d">
|
||||||
<i class="fa fa-calendar-o"></i>
|
<i class="fa fa-calendar-o"></i>
|
||||||
<span class="w-annc__postdate">{{postdate}}</span>
|
<span class="w-annc__postdate">{{postdate}}</span>
|
||||||
</span>
|
</span>
|
||||||
<span class="w-annc__category-wrap">
|
<span class="w-annc__category-wrap">
|
||||||
<i class="fa fa-tasks"></i>
|
<i class="fa fa-tasks"></i>
|
||||||
<span class="w-annc__category">{{category}}</span>
|
<span class="w-annc__category">{{category}}</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<h4 class="w-annc__entry-title">
|
<h4 class="w-annc__entry-title">
|
||||||
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</h4>
|
</h4>
|
||||||
<p class="w-annc__subtitle">{{subtitle}}</p>
|
<p class="w-annc__subtitle">{{subtitle}}</p>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<script src="//code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
|
<script src="//code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
|
||||||
<script>
|
<script>
|
||||||
function combineul_{{subpart-id}}(){
|
function combineul_{{subpart-id}}(){
|
||||||
var parents = $('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list').parent();
|
var parents = $('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list').parent();
|
||||||
parents.each(function(i,v){
|
parents.each(function(i,v){
|
||||||
for(var i=1;i<$(v).find('ul.w-annc__list').length;i++)
|
for(var i=1;i<$(v).find('ul.w-annc__list').length;i++)
|
||||||
$(v).find('ul.w-annc__list').eq(0).find('>li').eq(-1).after($(v).find('ul.w-annc__list').eq(i).html());
|
$(v).find('ul.w-annc__list').eq(0).find('>li').eq(-1).after($(v).find('ul.w-annc__list').eq(i).html());
|
||||||
var ullength = $(v).find('ul.w-annc__list').length;
|
var ullength = $(v).find('ul.w-annc__list').length;
|
||||||
for(var i = 1;i < ullength;i++)
|
for(var i = 1;i < ullength;i++)
|
||||||
$(v).find('ul.w-annc__list').eq(-1).remove();
|
$(v).find('ul.w-annc__list').eq(-1).remove();
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
var num;
|
var num;
|
||||||
var lilength = $('[data-subpart-id=\"{{subpart-id}}\"] li.w-annc__item').length;
|
var lilength = $('[data-subpart-id=\"{{subpart-id}}\"] li.w-annc__item').length;
|
||||||
function reorganize_{{subpart-id}}(num){
|
function reorganize_{{subpart-id}}(num){
|
||||||
var uls = $('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list').toArray();
|
var uls = $('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list').toArray();
|
||||||
var currentul = uls.findIndex(function(v){
|
var currentul = uls.findIndex(function(v){
|
||||||
return $(v).hasClass("active") && !$(v).hasClass("hidden_item");
|
return $(v).hasClass("active") && !$(v).hasClass("hidden_item");
|
||||||
})
|
})
|
||||||
if(currentul == -1)
|
if(currentul == -1)
|
||||||
currentul = 0;
|
currentul = 0;
|
||||||
var li_active_idx = 0;
|
var li_active_idx = 0;
|
||||||
if(currentul != 0)
|
if(currentul != 0)
|
||||||
li_active_idx = $(uls[currentul]).find("li.w-annc__item").eq(0).index("li.w-annc__item");
|
li_active_idx = $(uls[currentul]).find("li.w-annc__item").eq(0).index("li.w-annc__item");
|
||||||
combineul_{{subpart-id}}();
|
combineul_{{subpart-id}}();
|
||||||
var parents = $('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list').parent();
|
var parents = $('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list').parent();
|
||||||
parents.each(function(i,v){
|
parents.each(function(i,v){
|
||||||
var lilength = $(v).find('li.w-annc__item').length;
|
var lilength = $(v).find('li.w-annc__item').length;
|
||||||
var ul_length = Math.ceil(lilength/num);
|
var ul_length = Math.ceil(lilength/num);
|
||||||
for(var ii=1;ii< ul_length;ii++){
|
for(var ii=1;ii< ul_length;ii++){
|
||||||
var clone_ul = $(v).find('ul.w-annc__list').eq(-1).clone();
|
var clone_ul = $(v).find('ul.w-annc__list').eq(-1).clone();
|
||||||
clone_ul.empty();
|
clone_ul.empty();
|
||||||
clone_ul.removeClass("active");
|
clone_ul.removeClass("active");
|
||||||
clone_ul.css("display","");
|
clone_ul.css("display","");
|
||||||
$(v).find('ul.w-annc__list').eq(-1).after(clone_ul.prop("outerHTML"));
|
$(v).find('ul.w-annc__list').eq(-1).after(clone_ul.prop("outerHTML"));
|
||||||
var lihtml="";
|
var lihtml="";
|
||||||
if(ii != (ul_length-1)){
|
if(ii != (ul_length-1)){
|
||||||
for(var j=0;j<num;j++){
|
for(var j=0;j<num;j++){
|
||||||
lihtml += $(v).find('li.w-annc__item').eq(ii*num+j).prop("outerHTML");
|
lihtml += $(v).find('li.w-annc__item').eq(ii*num+j).prop("outerHTML");
|
||||||
};
|
};
|
||||||
}else{
|
}else{
|
||||||
for(var j=0;j< lilength - num *(ul_length-1) ;j++){
|
for(var j=0;j< lilength - num *(ul_length-1) ;j++){
|
||||||
lihtml += $(v).find('li.w-annc__item').eq(ii*num+j).prop("outerHTML");
|
lihtml += $(v).find('li.w-annc__item').eq(ii*num+j).prop("outerHTML");
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
$(v).find('ul.w-annc__list').eq(-1).html(lihtml);
|
$(v).find('ul.w-annc__list').eq(-1).html(lihtml);
|
||||||
}
|
}
|
||||||
if(ul_length != 1 )
|
if(ul_length != 1 )
|
||||||
for(var i=0;i< lilength -num ; i++)
|
for(var i=0;i< lilength -num ; i++)
|
||||||
$(v).find('ul.w-annc__list').eq(0).find("li.w-annc__item").eq(num).remove();
|
$(v).find('ul.w-annc__list').eq(0).find("li.w-annc__item").eq(num).remove();
|
||||||
})
|
})
|
||||||
$('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list').css("display","none");
|
$('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list').css("display","none");
|
||||||
$('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list').css('padding','0 1.125em');
|
$('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list').css('padding','0 1.125em');
|
||||||
$('[data-subpart-id=\"{{subpart-id}}\"] button').css('z-index','10');
|
$('[data-subpart-id=\"{{subpart-id}}\"] button').css('z-index','10');
|
||||||
$('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list >li').css('width','calc('+100/num+'% - '+20/16+'em)'); //20px=>li的margin
|
$('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list >li').css('width','calc('+100/num+'% - '+20/16+'em)'); //20px=>li的margin
|
||||||
$('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list >li').css('float','left');
|
$('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list >li').css('float','left');
|
||||||
var active_ul = $("[data-subpart-id=\"{{subpart-id}}\"] li.w-annc__item").eq(li_active_idx).parents("ul.w-annc__list");
|
var active_ul = $("[data-subpart-id=\"{{subpart-id}}\"] li.w-annc__item").eq(li_active_idx).parents("ul.w-annc__list");
|
||||||
active_ul.addClass("active");
|
active_ul.addClass("active");
|
||||||
active_ul.removeClass("hidden_item");
|
active_ul.removeClass("hidden_item");
|
||||||
active_ul.css("display","");
|
active_ul.css("display","");
|
||||||
};
|
};
|
||||||
$(window).resize(function(){
|
$(window).resize(function(){
|
||||||
if($(window).width()>1024){
|
if($(window).width()>1024){
|
||||||
reorganize_{{subpart-id}}(3);
|
reorganize_{{subpart-id}}(3);
|
||||||
num=3;
|
num=3;
|
||||||
}else if($(window).width()>576){
|
}else if($(window).width()>576){
|
||||||
reorganize_{{subpart-id}}(2);
|
reorganize_{{subpart-id}}(2);
|
||||||
num=2;
|
num=2;
|
||||||
}else{
|
}else{
|
||||||
reorganize_{{subpart-id}}(1);
|
reorganize_{{subpart-id}}(1);
|
||||||
num=1;
|
num=1;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
if($(window).width()>1024){
|
if($(window).width()>1024){
|
||||||
reorganize_{{subpart-id}}(3);
|
reorganize_{{subpart-id}}(3);
|
||||||
num=3;
|
num=3;
|
||||||
}else if($(window).width()>576){
|
}else if($(window).width()>576){
|
||||||
reorganize_{{subpart-id}}(2);
|
reorganize_{{subpart-id}}(2);
|
||||||
num=2;
|
num=2;
|
||||||
}else{
|
}else{
|
||||||
reorganize_{{subpart-id}}(1);
|
reorganize_{{subpart-id}}(1);
|
||||||
num=1;
|
num=1;
|
||||||
}
|
}
|
||||||
var flag=false;
|
var flag=false;
|
||||||
$('.btn-left').click(function(){
|
$('.btn-left').click(function(){
|
||||||
if(!flag){
|
if(!flag){
|
||||||
var uls = $('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list:not(.hidden_item)').toArray();
|
var uls = $('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list:not(.hidden_item)').toArray();
|
||||||
var ul_length = uls.length;
|
var ul_length = uls.length;
|
||||||
var currentul = uls.findIndex(function(v){
|
var currentul = uls.findIndex(function(v){
|
||||||
return $(v).hasClass("active");
|
return $(v).hasClass("active");
|
||||||
})
|
})
|
||||||
$('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list').css('display','none');
|
$('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list').css('display','none');
|
||||||
if(currentul - 1 < 0)
|
if(currentul - 1 < 0)
|
||||||
currentul += ul_length;
|
currentul += ul_length;
|
||||||
$('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list:not(.hidden_item)').removeClass("active");
|
$('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list:not(.hidden_item)').removeClass("active");
|
||||||
var active_item = $(uls[currentul-1]);
|
var active_item = $(uls[currentul-1]);
|
||||||
active_item.addClass("active");
|
active_item.addClass("active");
|
||||||
active_item.find("li").css("display","block");
|
active_item.find("li").css("display","block");
|
||||||
flag=true;
|
flag=true;
|
||||||
$('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list.active').eq(0).effect("slide", { direction: "left", mode: 'show', duration: 500},function(){flag=false;});
|
$('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list.active').eq(0).effect("slide", { direction: "left", mode: 'show', duration: 500},function(){flag=false;});
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
$('.btn-right').click(function(){
|
$('.btn-right').click(function(){
|
||||||
var lilength = $('[data-subpart-id=\"{{subpart-id}}\"] li.w-annc__item').length;
|
var lilength = $('[data-subpart-id=\"{{subpart-id}}\"] li.w-annc__item').length;
|
||||||
if(!flag){
|
if(!flag){
|
||||||
var uls = $('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list:not(.hidden_item)').toArray();
|
var uls = $('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list:not(.hidden_item)').toArray();
|
||||||
var ul_length = uls.length;
|
var ul_length = uls.length;
|
||||||
var currentul = uls.findIndex(function(v){
|
var currentul = uls.findIndex(function(v){
|
||||||
return $(v).hasClass("active");
|
return $(v).hasClass("active");
|
||||||
})
|
})
|
||||||
$('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list').css('display','none');
|
$('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list').css('display','none');
|
||||||
if(currentul + 1 > ul_length - 1)
|
if(currentul + 1 > ul_length - 1)
|
||||||
currentul -= ul_length;
|
currentul -= ul_length;
|
||||||
$('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list:not(.hidden_item)').removeClass("active");
|
$('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list:not(.hidden_item)').removeClass("active");
|
||||||
var active_item = $(uls[currentul+1]);
|
var active_item = $(uls[currentul+1]);
|
||||||
active_item.addClass("active");
|
active_item.addClass("active");
|
||||||
active_item.find("li").css("display","block");
|
active_item.find("li").css("display","block");
|
||||||
flag=true;
|
flag=true;
|
||||||
$('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list.active').eq(0).effect("slide", { direction: "left", mode: 'show', duration: 500},function(){flag=false;});
|
$('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list.active').eq(0).effect("slide", { direction: "left", mode: 'show', duration: 500},function(){flag=false;});
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -1,32 +1,32 @@
|
||||||
<div class="w-annc widget-announcement-13">
|
<div class="w-annc widget-announcement-13">
|
||||||
<table class="w-annc__table table">
|
<table class="w-annc__table table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="w-annc__th w-annc__th--date">{{event_date-head}}</th>
|
<th class="w-annc__th w-annc__th--date">{{event_date-head}}</th>
|
||||||
<th class="w-annc__th w-annc__th--date">{{speaker-head}}</th>
|
<th class="w-annc__th w-annc__th--date">{{speaker-head}}</th>
|
||||||
<th class="w-annc__th w-annc__th--title">{{title-head}}</th>
|
<th class="w-annc__th w-annc__th--title">{{title-head}}</th>
|
||||||
<th class="w-annc__th w-annc__th--title">{{subtitle-head}}</th>
|
<th class="w-annc__th w-annc__th--title">{{subtitle-head}}</th>
|
||||||
<th class="w-annc__th w-annc__th--title">{{host-head}}</th>
|
<th class="w-annc__th w-annc__th--title">{{host-head}}</th>
|
||||||
<th class="w-annc__th w-annc__th--title">{{notes-head}}</th>
|
<th class="w-annc__th w-annc__th--title">{{notes-head}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody data-level="0" data-list="event_news">
|
<tbody data-level="0" data-list="event_news">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="w-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
|
<td class="w-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
|
||||||
<td class="w-annc__speaker">{{speaker}}</td>
|
<td class="w-annc__speaker">{{speaker}}</td>
|
||||||
<td class="w-annc_content">
|
<td class="w-annc_content">
|
||||||
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</td>
|
</td>
|
||||||
<td class="w-annc_subtitle">{{subtitle}}</td>
|
<td class="w-annc_subtitle">{{subtitle}}</td>
|
||||||
<td class="w-annc__host">{{host}}</td>
|
<td class="w-annc__host">{{host}}</td>
|
||||||
<td class="w-annc__notes">{{notes}}</td>
|
<td class="w-annc__notes">{{notes}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<div class="w-annc__more-wrap clearfix">
|
<div class="w-annc__more-wrap clearfix">
|
||||||
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
|
@ -3,30 +3,22 @@
|
||||||
<span>{{widget-title}}</span>
|
<span>{{widget-title}}</span>
|
||||||
</h3>
|
</h3>
|
||||||
<table class="w-annc__table table">
|
<table class="w-annc__table table">
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th class="w-annc__th w-annc__th--date">{{event_date-head}}</th>
|
|
||||||
<th class="w-annc__th w-annc__th--title">{{title-head}}</th>
|
|
||||||
<th class="w-annc__th w-annc__th--title">{{subtitle-head}}</th>
|
|
||||||
<th class="w-annc__th w-annc__th--date">{{speaker-head}}</th>
|
|
||||||
<th class="w-annc__th w-annc__th--title">{{host-head}}</th>
|
|
||||||
<th class="w-annc__th w-annc__th--title">{{notes-head}}</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody data-level="0" data-list="event_news">
|
<tbody data-level="0" data-list="event_news">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="w-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
|
<td class="w-annc__postdate">{{postdate}}</td>
|
||||||
<td class="w-annc_content">
|
<td class="w-annc_content">
|
||||||
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<a class="w-annc__title" href="{{link_to_show}}">【{{title-head}}】{{title}}</a>
|
<a class="w-annc__title" href="{{link_to_show}}">{{title-head}}{{title}}</a>
|
||||||
</td>
|
</td>
|
||||||
<td class="w-annc__speaker">【{{speaker-head}}】{{speaker}}</td>
|
<td style="{{speaker-css}}" class="w-annc__speaker">{{speaker-head}}{{speaker}}</td>
|
||||||
<td class="w-annc__host">{{host}}</td>
|
<td style="{{host-css}}" class="w-annc__host">{{host-head}}{{host}}</td>
|
||||||
<td class="w-annc__subtitle">{{subtitle}}</td>
|
<td style="{{place-css}}" class="w-annc__host">{{place-head}}{{place}}</td>
|
||||||
<td class="w-annc__notes">【{{notes-head}}】{{notes}}</td>
|
<td style="{{event-time-css}}" class="w-annc__host">{{event_date-head}}{{event-time-formated}}</td>
|
||||||
</tr>
|
<td class="w-annc__subtitle">{{subtitle}}</td>
|
||||||
|
<td style="{{notes-css}}" class="w-annc__notes">{{notes-head}}{{notes}}</td>
|
||||||
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<div class="w-annc__more-wrap clearfix">
|
<div class="w-annc__more-wrap clearfix">
|
||||||
|
|
|
@ -1,83 +1,83 @@
|
||||||
<div class="w-calendar widget-calendar-2 widget-event-news-calendar-2" data-module="event_news">
|
<div class="w-calendar widget-calendar-2 widget-event-news-calendar-2" data-module="event_news">
|
||||||
<div class="w-calendar-title {{widget_title_class}}">
|
<div class="w-calendar-title {{widget_title_class}}">
|
||||||
<span>{{calendar_title}}</span>
|
<span>{{calendar_title}}</span>
|
||||||
<span>{{widget_title}}</span>
|
<span>{{widget_title}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class='month_template'>
|
<div class='month_template'>
|
||||||
<h4 class="widget-title ">
|
<h4 class="widget-title ">
|
||||||
<span class="text"><span style="display: none;">placeholder</span></span>
|
<span class="text"><span style="display: none;">placeholder</span></span>
|
||||||
<i class="fa fa-circle-o-notch fa-spin fa-fw loading hide"></i>
|
<i class="fa fa-circle-o-notch fa-spin fa-fw loading hide"></i>
|
||||||
</h4>
|
</h4>
|
||||||
<div class="w-calendar-nav">
|
<div class="w-calendar-nav">
|
||||||
<a href="#" class="w-calendar-nav-prev">
|
<a href="#" class="w-calendar-nav-prev">
|
||||||
<i class="fa fa-chevron-left"></i>
|
<i class="fa fa-chevron-left"></i>
|
||||||
<span class="w-calendar-nav-prev-text hide">Prev</span>
|
<span class="w-calendar-nav-prev-text hide">Prev</span>
|
||||||
</a>
|
</a>
|
||||||
<a href="#" class="w-calendar-nav-next">
|
<a href="#" class="w-calendar-nav-next">
|
||||||
<i class="fa fa-chevron-right"></i>
|
<i class="fa fa-chevron-right"></i>
|
||||||
<span class="w-calendar-nav-next-text hide">Next</span>
|
<span class="w-calendar-nav-next-text hide">Next</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<table class="table table-condensed w-calendar-table">
|
<table class="table table-condensed w-calendar-table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Sun</th>
|
<th>Sun</th>
|
||||||
<th>Mon</th>
|
<th>Mon</th>
|
||||||
<th>Tue</th>
|
<th>Tue</th>
|
||||||
<th>Wed</th>
|
<th>Wed</th>
|
||||||
<th>Thu</th>
|
<th>Thu</th>
|
||||||
<th>Fri</th>
|
<th>Fri</th>
|
||||||
<th>Sat</th>
|
<th>Sat</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody></tbody>
|
<tbody></tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div class="calendar-events" style="display: none;">
|
<div class="calendar-events" style="display: none;">
|
||||||
<div class="event">
|
<div class="event">
|
||||||
<div class="event-header">
|
<div class="event-header">
|
||||||
<div class="date">
|
<div class="date">
|
||||||
<div class="day"></div>
|
<div class="day"></div>
|
||||||
<div class="month"></div>
|
<div class="month"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="event-title">
|
<div class="event-title">
|
||||||
<div class="event-inner-title"></div>
|
<div class="event-inner-title"></div>
|
||||||
<div class="duration"></div>
|
<div class="duration"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="event-wraper">
|
<div class="event-wraper">
|
||||||
<div class="event-containers">
|
<div class="event-containers">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<%= stylesheet_link_tag "event_news_calendar_widget2" %>
|
<%= stylesheet_link_tag "event_news_calendar_widget2" %>
|
||||||
<script>
|
<script>
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
if(document.getElementById("event-news-calendar-widget_module2") == null){
|
if(document.getElementById("event-news-calendar-widget_module2") == null){
|
||||||
var tag = document.createElement('script');
|
var tag = document.createElement('script');
|
||||||
tag.setAttribute("id", "event-news-calendar-widget_module2");
|
tag.setAttribute("id", "event-news-calendar-widget_module2");
|
||||||
tag.src = "<%= asset_path('event_news_calendar_widget2.js') %>";
|
tag.src = "<%= asset_path('event_news_calendar_widget2.js') %>";
|
||||||
tag.onload = function(){
|
tag.onload = function(){
|
||||||
$("div.widget-calendar-2[data-module=event_news]").each(function(index){
|
$("div.widget-calendar-2[data-module=event_news]").each(function(index){
|
||||||
var calendar = $(this),
|
var calendar = $(this),
|
||||||
cmi = new EventCalendarModuleMonth2(new Date(), calendar,calendar.data("subpart-id"),"{{more_url}}",false);
|
cmi = new EventCalendarModuleMonth2(new Date(), calendar,calendar.data("subpart-id"),"{{more_url}}",false);
|
||||||
cmi.currentMonth();
|
cmi.currentMonth();
|
||||||
calendar.find("div.w-calendar-nav a").on("click",function(){
|
calendar.find("div.w-calendar-nav a").on("click",function(){
|
||||||
var el = $(this);
|
var el = $(this);
|
||||||
if(el.hasClass("w-calendar-nav-prev")){
|
if(el.hasClass("w-calendar-nav-prev")){
|
||||||
cmi.prevMonth();
|
cmi.prevMonth();
|
||||||
}else if(el.hasClass("w-calendar-nav-next")){
|
}else if(el.hasClass("w-calendar-nav-next")){
|
||||||
cmi.nextMonth();
|
cmi.nextMonth();
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
var head = document.getElementsByTagName("head");
|
var head = document.getElementsByTagName("head");
|
||||||
head[0].appendChild(tag);
|
head[0].appendChild(tag);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
|
@ -1,34 +1,34 @@
|
||||||
<div class="w-annc widget-announcement-2">
|
<div class="w-annc widget-announcement-2">
|
||||||
<h3 class="w-annc__widget-title">
|
<h3 class="w-annc__widget-title">
|
||||||
<span>{{widget-title}}</span>
|
<span>{{widget-title}}</span>
|
||||||
</h3>
|
</h3>
|
||||||
<ul class="w-annc__list" data-level="0" data-list="event_news">
|
<ul class="w-annc__list" data-level="0" data-list="event_news">
|
||||||
<li class="w-annc__item row">
|
<li class="w-annc__item row">
|
||||||
<div class="w-annc__img-wrap col-sm-4 bullseye">
|
<div class="w-annc__img-wrap col-sm-4 bullseye">
|
||||||
<img class="w-annc__img" src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}">
|
<img class="w-annc__img" src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}">
|
||||||
</div>
|
</div>
|
||||||
<div class="w-annc__content-wrap col-sm-8">
|
<div class="w-annc__content-wrap col-sm-8">
|
||||||
<div class="w-annc__meta">
|
<div class="w-annc__meta">
|
||||||
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<span class="w-annc__postdate-wrap" date-format="%Y-%m-%d">
|
<span class="w-annc__postdate-wrap" date-format="%Y-%m-%d">
|
||||||
<i class="fa fa-calendar-o"></i>
|
<i class="fa fa-calendar-o"></i>
|
||||||
<span class="w-annc__postdate">{{postdate}}</span>
|
<span class="w-annc__postdate">{{postdate}}</span>
|
||||||
</span>
|
</span>
|
||||||
<span class="w-annc__category-wrap">
|
<span class="w-annc__category-wrap">
|
||||||
<i class="fa fa-tasks"></i>
|
<i class="fa fa-tasks"></i>
|
||||||
<span class="w-annc__category">{{category}}</span>
|
<span class="w-annc__category">{{category}}</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<h4 class="w-annc__entry-title">
|
<h4 class="w-annc__entry-title">
|
||||||
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</h4>
|
</h4>
|
||||||
<p class="w-annc__subtitle">{{subtitle}}</p>
|
<p class="w-annc__subtitle">{{subtitle}}</p>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="w-annc__more-wrap clearfix">
|
<div class="w-annc__more-wrap clearfix">
|
||||||
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,34 +1,34 @@
|
||||||
<div class="w-annc widget-announcement-3">
|
<div class="w-annc widget-announcement-3">
|
||||||
<h3 class="w-annc__widget-title">
|
<h3 class="w-annc__widget-title">
|
||||||
<span>{{widget-title}}</span>
|
<span>{{widget-title}}</span>
|
||||||
</h3>
|
</h3>
|
||||||
<ul class="w-annc__list" data-level="0" data-list="event_news">
|
<ul class="w-annc__list" data-level="0" data-list="event_news">
|
||||||
<li class="w-annc__item row">
|
<li class="w-annc__item row">
|
||||||
<div class="w-annc__content-wrap col-sm-8">
|
<div class="w-annc__content-wrap col-sm-8">
|
||||||
<div class="w-annc__meta">
|
<div class="w-annc__meta">
|
||||||
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<span class="w-annc__postdate-wrap" date-format="%Y-%m-%d">
|
<span class="w-annc__postdate-wrap" date-format="%Y-%m-%d">
|
||||||
<i class="fa fa-calendar-o"></i>
|
<i class="fa fa-calendar-o"></i>
|
||||||
<span class="w-annc__postdate">{{postdate}}</span>
|
<span class="w-annc__postdate">{{postdate}}</span>
|
||||||
</span>
|
</span>
|
||||||
<span class="w-annc__category-wrap">
|
<span class="w-annc__category-wrap">
|
||||||
<i class="fa fa-tasks"></i>
|
<i class="fa fa-tasks"></i>
|
||||||
<span class="w-annc__category">{{category}}</span>
|
<span class="w-annc__category">{{category}}</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<h4 class="w-annc__entry-title">
|
<h4 class="w-annc__entry-title">
|
||||||
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</h4>
|
</h4>
|
||||||
<p class="w-annc__subtitle">{{subtitle}}</p>
|
<p class="w-annc__subtitle">{{subtitle}}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="w-annc__img-wrap col-sm-4 bullseye">
|
<div class="w-annc__img-wrap col-sm-4 bullseye">
|
||||||
<img class="w-annc__img" src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}">
|
<img class="w-annc__img" src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}">
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="w-annc__more-wrap clearfix">
|
<div class="w-annc__more-wrap clearfix">
|
||||||
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,108 +1,108 @@
|
||||||
<div class="w-annc widget-announcement-4">
|
<div class="w-annc widget-announcement-4">
|
||||||
<div class="w-annc__more-wrap clearfix">
|
<div class="w-annc__more-wrap clearfix">
|
||||||
<h2 class="w-annc__widget-title">
|
<h2 class="w-annc__widget-title">
|
||||||
<span>{{widget-title}}</span>
|
<span>{{widget-title}}</span>
|
||||||
</h2>
|
</h2>
|
||||||
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
||||||
</div>
|
</div>
|
||||||
<ul class="w-annc__list row" data-level="0" data-list="event_news">
|
<ul class="w-annc__list row" data-level="0" data-list="event_news">
|
||||||
<li class="w-annc__item col-md-4">
|
<li class="w-annc__item col-md-4">
|
||||||
<div class="w-annc__img-wrap bullseye">
|
<div class="w-annc__img-wrap bullseye">
|
||||||
<img class="w-annc__img" src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}">
|
<img class="w-annc__img" src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}">
|
||||||
</div>
|
</div>
|
||||||
<div class="w-annc__content-wrap">
|
<div class="w-annc__content-wrap">
|
||||||
<div class="w-annc__meta">
|
<div class="w-annc__meta">
|
||||||
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="w-annc__status label {{status-class}}">{{status}}</span>
|
<span class="w-annc__status label {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<span class="w-annc__postdate-wrap" date-format="%Y-%m-%d">
|
<span class="w-annc__postdate-wrap" date-format="%Y-%m-%d">
|
||||||
<i class="fa fa-calendar-o"></i>
|
<i class="fa fa-calendar-o"></i>
|
||||||
<span class="w-annc__postdate">{{postdate}}</span>
|
<span class="w-annc__postdate">{{postdate}}</span>
|
||||||
</span>
|
</span>
|
||||||
<span class="w-annc__category-wrap">
|
<span class="w-annc__category-wrap">
|
||||||
<i class="fa fa-tasks"></i>
|
<i class="fa fa-tasks"></i>
|
||||||
<span class="w-annc__category">{{category}}</span>
|
<span class="w-annc__category">{{category}}</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<h4 class="w-annc__entry-title">
|
<h4 class="w-annc__entry-title">
|
||||||
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</h4>
|
</h4>
|
||||||
<p class="w-annc__subtitle">{{subtitle}}</p>
|
<p class="w-annc__subtitle">{{subtitle}}</p>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
[data-subpart-id="{{subpart-id}}"] .bullseye{
|
[data-subpart-id="{{subpart-id}}"] .bullseye{
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<script>
|
<script>
|
||||||
function combineul_{{subpart-id}}(){
|
function combineul_{{subpart-id}}(){
|
||||||
var parents = $('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list').parent();
|
var parents = $('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list').parent();
|
||||||
parents.each(function(i,v){
|
parents.each(function(i,v){
|
||||||
for(var i=1;i<$(v).find('ul.w-annc__list').length;i++)
|
for(var i=1;i<$(v).find('ul.w-annc__list').length;i++)
|
||||||
$(v).find('ul.w-annc__list').eq(0).find('>li').eq(-1).after($(v).find('ul.w-annc__list').eq(i).html());
|
$(v).find('ul.w-annc__list').eq(0).find('>li').eq(-1).after($(v).find('ul.w-annc__list').eq(i).html());
|
||||||
var ullength = $(v).find('ul.w-annc__list').length;
|
var ullength = $(v).find('ul.w-annc__list').length;
|
||||||
for(var i = 1;i < ullength;i++)
|
for(var i = 1;i < ullength;i++)
|
||||||
$(v).find('ul.w-annc__list').eq(-1).remove();
|
$(v).find('ul.w-annc__list').eq(-1).remove();
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
var num;
|
var num;
|
||||||
var lilength = $('[data-subpart-id=\"{{subpart-id}}\"] li.w-annc__item').length;
|
var lilength = $('[data-subpart-id=\"{{subpart-id}}\"] li.w-annc__item').length;
|
||||||
function reorganize_{{subpart-id}}(num){
|
function reorganize_{{subpart-id}}(num){
|
||||||
combineul_{{subpart-id}}();
|
combineul_{{subpart-id}}();
|
||||||
var parents = $('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list').parent();
|
var parents = $('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list').parent();
|
||||||
parents.each(function(i,v){
|
parents.each(function(i,v){
|
||||||
var lilength = $(v).find('li.w-annc__item').length;
|
var lilength = $(v).find('li.w-annc__item').length;
|
||||||
var ul_length = Math.ceil(lilength/num);
|
var ul_length = Math.ceil(lilength/num);
|
||||||
for(var ii=1;ii< ul_length;ii++){
|
for(var ii=1;ii< ul_length;ii++){
|
||||||
var clone_ul = $(v).find('ul.w-annc__list').eq(-1).clone();
|
var clone_ul = $(v).find('ul.w-annc__list').eq(-1).clone();
|
||||||
clone_ul.empty();
|
clone_ul.empty();
|
||||||
clone_ul.removeClass("active");
|
clone_ul.removeClass("active");
|
||||||
clone_ul.css("display","");
|
clone_ul.css("display","");
|
||||||
$(v).find('ul.w-annc__list').eq(-1).after(clone_ul.prop("outerHTML"));
|
$(v).find('ul.w-annc__list').eq(-1).after(clone_ul.prop("outerHTML"));
|
||||||
var lihtml="";
|
var lihtml="";
|
||||||
if(ii != (ul_length-1)){
|
if(ii != (ul_length-1)){
|
||||||
for(var j=0;j<num;j++){
|
for(var j=0;j<num;j++){
|
||||||
lihtml += $(v).find('li.w-annc__item').eq(ii*num+j).prop("outerHTML");
|
lihtml += $(v).find('li.w-annc__item').eq(ii*num+j).prop("outerHTML");
|
||||||
};
|
};
|
||||||
}else{
|
}else{
|
||||||
for(var j=0;j< lilength - num *(ul_length-1) ;j++){
|
for(var j=0;j< lilength - num *(ul_length-1) ;j++){
|
||||||
lihtml += $(v).find('li.w-annc__item').eq(ii*num+j).prop("outerHTML");
|
lihtml += $(v).find('li.w-annc__item').eq(ii*num+j).prop("outerHTML");
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
$(v).find('ul.w-annc__list').eq(-1).html(lihtml);
|
$(v).find('ul.w-annc__list').eq(-1).html(lihtml);
|
||||||
}
|
}
|
||||||
if(ul_length != 1 )
|
if(ul_length != 1 )
|
||||||
for(var i=0;i< lilength -num ; i++)
|
for(var i=0;i< lilength -num ; i++)
|
||||||
$(v).find('ul.w-annc__list').eq(0).find("li.w-annc__item").eq(num).remove();
|
$(v).find('ul.w-annc__list').eq(0).find("li.w-annc__item").eq(num).remove();
|
||||||
})
|
})
|
||||||
$('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list >li').css('width','calc('+100/num+'% - '+20/16+'em)'); //20px=>li的margin
|
$('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list >li').css('width','calc('+100/num+'% - '+20/16+'em)'); //20px=>li的margin
|
||||||
$('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list >li').css('float','left');
|
$('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list >li').css('float','left');
|
||||||
};
|
};
|
||||||
$(window).resize(function(){
|
$(window).resize(function(){
|
||||||
if($(window).width()>1024){
|
if($(window).width()>1024){
|
||||||
reorganize_{{subpart-id}}(3);
|
reorganize_{{subpart-id}}(3);
|
||||||
num=3;
|
num=3;
|
||||||
}else if($(window).width()>576){
|
}else if($(window).width()>576){
|
||||||
reorganize_{{subpart-id}}(2);
|
reorganize_{{subpart-id}}(2);
|
||||||
num=2;
|
num=2;
|
||||||
}else{
|
}else{
|
||||||
reorganize_{{subpart-id}}(1);
|
reorganize_{{subpart-id}}(1);
|
||||||
num=1;
|
num=1;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
if($(window).width()>1024){
|
if($(window).width()>1024){
|
||||||
reorganize_{{subpart-id}}(3);
|
reorganize_{{subpart-id}}(3);
|
||||||
num=3;
|
num=3;
|
||||||
}else if($(window).width()>576){
|
}else if($(window).width()>576){
|
||||||
reorganize_{{subpart-id}}(2);
|
reorganize_{{subpart-id}}(2);
|
||||||
num=2;
|
num=2;
|
||||||
}else{
|
}else{
|
||||||
reorganize_{{subpart-id}}(1);
|
reorganize_{{subpart-id}}(1);
|
||||||
num=1;
|
num=1;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -1,31 +1,31 @@
|
||||||
<div class="w-annc widget-announcement-5">
|
<div class="w-annc widget-announcement-5">
|
||||||
<h3 class="w-annc__widget-title">
|
<h3 class="w-annc__widget-title">
|
||||||
<span>{{widget-title}}</span>
|
<span>{{widget-title}}</span>
|
||||||
</h3>
|
</h3>
|
||||||
<ul class="w-annc__list row" data-level="0" data-list="event_news">
|
<ul class="w-annc__list row" data-level="0" data-list="event_news">
|
||||||
<li class="w-annc__item">
|
<li class="w-annc__item">
|
||||||
<div class="w-annc__content-wrap">
|
<div class="w-annc__content-wrap">
|
||||||
<div class="w-annc__meta">
|
<div class="w-annc__meta">
|
||||||
<span class="w-annc__postdate-wrap" date-format="%Y-%m-%d">
|
<span class="w-annc__postdate-wrap" date-format="%Y-%m-%d">
|
||||||
<i class="fa fa-calendar-o"></i>
|
<i class="fa fa-calendar-o"></i>
|
||||||
<span class="w-annc__postdate">{{postdate}}</span>
|
<span class="w-annc__postdate">{{postdate}}</span>
|
||||||
</span>
|
</span>
|
||||||
<span class="w-annc__category-wrap">
|
<span class="w-annc__category-wrap">
|
||||||
<i class="fa fa-tasks"></i>
|
<i class="fa fa-tasks"></i>
|
||||||
<span class="w-annc__category">{{category}}</span>
|
<span class="w-annc__category">{{category}}</span>
|
||||||
</span>
|
</span>
|
||||||
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<h4 class="w-annc__entry-title">
|
<h4 class="w-annc__entry-title">
|
||||||
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</h4>
|
</h4>
|
||||||
<p class="w-annc__subtitle">{{subtitle}}</p>
|
<p class="w-annc__subtitle">{{subtitle}}</p>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="w-annc__more-wrap clearfix">
|
<div class="w-annc__more-wrap clearfix">
|
||||||
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,26 +1,26 @@
|
||||||
<div class="w-annc widget-announcement-6">
|
<div class="w-annc widget-announcement-6">
|
||||||
<h3 class="w-annc__widget-title">
|
<h3 class="w-annc__widget-title">
|
||||||
<span>{{widget-title}}</span>
|
<span>{{widget-title}}</span>
|
||||||
</h3>
|
</h3>
|
||||||
<ul class="w-annc__list" data-level="0" data-list="event_news">
|
<ul class="w-annc__list" data-level="0" data-list="event_news">
|
||||||
<li class="w-annc__item row">
|
<li class="w-annc__item row">
|
||||||
<span class="w-annc__category-wrap col-sm-2">
|
<span class="w-annc__category-wrap col-sm-2">
|
||||||
<i class="fa fa-tasks"></i>
|
<i class="fa fa-tasks"></i>
|
||||||
<span class="w-annc__category">{{category}}</span>
|
<span class="w-annc__category">{{category}}</span>
|
||||||
</span>
|
</span>
|
||||||
<h4 class="w-annc__entry-title col-sm-8">
|
<h4 class="w-annc__entry-title col-sm-8">
|
||||||
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</h4>
|
</h4>
|
||||||
<span class="w-annc__postdate-wrap col-sm-2" date-format="%Y-%m-%d">
|
<span class="w-annc__postdate-wrap col-sm-2" date-format="%Y-%m-%d">
|
||||||
<i class="fa fa-calendar-o"></i>
|
<i class="fa fa-calendar-o"></i>
|
||||||
<span class="w-annc__postdate">{{postdate}}</span>
|
<span class="w-annc__postdate">{{postdate}}</span>
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="w-annc__more-wrap clearfix">
|
<div class="w-annc__more-wrap clearfix">
|
||||||
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,26 +1,26 @@
|
||||||
<div class="w-annc widget-announcement-7">
|
<div class="w-annc widget-announcement-7">
|
||||||
<h3 class="w-annc__widget-title">
|
<h3 class="w-annc__widget-title">
|
||||||
<span>{{widget-title}}</span>
|
<span>{{widget-title}}</span>
|
||||||
</h3>
|
</h3>
|
||||||
<ul class="w-annc__list" data-level="0" data-list="event_news">
|
<ul class="w-annc__list" data-level="0" data-list="event_news">
|
||||||
<li class="w-annc__item row">
|
<li class="w-annc__item row">
|
||||||
<span class="w-annc__postdate-wrap col-sm-2" date-format="%Y-%m-%d">
|
<span class="w-annc__postdate-wrap col-sm-2" date-format="%Y-%m-%d">
|
||||||
<i class="fa fa-calendar-o"></i>
|
<i class="fa fa-calendar-o"></i>
|
||||||
<span class="w-annc__postdate">{{postdate}}</span>
|
<span class="w-annc__postdate">{{postdate}}</span>
|
||||||
</span>
|
</span>
|
||||||
<h4 class="w-annc__entry-title col-sm-8">
|
<h4 class="w-annc__entry-title col-sm-8">
|
||||||
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</h4>
|
</h4>
|
||||||
<span class="w-annc__category-wrap col-sm-2">
|
<span class="w-annc__category-wrap col-sm-2">
|
||||||
<i class="fa fa-tasks"></i>
|
<i class="fa fa-tasks"></i>
|
||||||
<span class="w-annc__category">{{category}}</span>
|
<span class="w-annc__category">{{category}}</span>
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="w-annc__more-wrap clearfix">
|
<div class="w-annc__more-wrap clearfix">
|
||||||
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,29 +1,29 @@
|
||||||
<div class="w-annc widget-announcement-8">
|
<div class="w-annc widget-announcement-8">
|
||||||
<h3 class="w-annc__widget-title">
|
<h3 class="w-annc__widget-title">
|
||||||
<span>{{widget-title}}</span>
|
<span>{{widget-title}}</span>
|
||||||
</h3>
|
</h3>
|
||||||
<table class="w-annc__table table">
|
<table class="w-annc__table table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="w-annc__th w-annc__th--category">{{category-head}}</th>
|
<th class="w-annc__th w-annc__th--category">{{category-head}}</th>
|
||||||
<th class="w-annc__th w-annc__th--title">{{title-head}}</th>
|
<th class="w-annc__th w-annc__th--title">{{title-head}}</th>
|
||||||
<th class="w-annc__th w-annc__th--date">{{date-head}}</th>
|
<th class="w-annc__th w-annc__th--date">{{date-head}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody data-level="0" data-list="event_news">
|
<tbody data-level="0" data-list="event_news">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="w-annc__category">{{category}}</td>
|
<td class="w-annc__category">{{category}}</td>
|
||||||
<td class="w-annc_content">
|
<td class="w-annc_content">
|
||||||
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</td>
|
</td>
|
||||||
<td class="w-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
|
<td class="w-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<div class="w-annc__more-wrap clearfix">
|
<div class="w-annc__more-wrap clearfix">
|
||||||
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
|
@ -1,29 +1,29 @@
|
||||||
<div class="w-annc widget-announcement-9">
|
<div class="w-annc widget-announcement-9">
|
||||||
<h3 class="w-annc__widget-title">
|
<h3 class="w-annc__widget-title">
|
||||||
<span>{{widget-title}}</span>
|
<span>{{widget-title}}</span>
|
||||||
</h3>
|
</h3>
|
||||||
<table class="w-annc__table table">
|
<table class="w-annc__table table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="w-annc__th w-annc__th--date">{{date-head}}</th>
|
<th class="w-annc__th w-annc__th--date">{{date-head}}</th>
|
||||||
<th class="w-annc__th w-annc__th--title">{{title-head}}</th>
|
<th class="w-annc__th w-annc__th--title">{{title-head}}</th>
|
||||||
<th class="w-annc__th w-annc__th--category">{{category-head}}</th>
|
<th class="w-annc__th w-annc__th--category">{{category-head}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody data-level="0" data-list="event_news">
|
<tbody data-level="0" data-list="event_news">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="w-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
|
<td class="w-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
|
||||||
<td class="w-annc_content">
|
<td class="w-annc_content">
|
||||||
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</td>
|
</td>
|
||||||
<td class="w-annc__category">{{category}}</td>
|
<td class="w-annc__category">{{category}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<div class="w-annc__more-wrap clearfix">
|
<div class="w-annc__more-wrap clearfix">
|
||||||
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
|
@ -1,25 +1,25 @@
|
||||||
<div class="i-annc index-announcement-1 {{display}}">
|
<div class="i-annc index-announcement-1 {{display}}">
|
||||||
<h1 class="i-annc__page-title">{{page-title}}</h1>
|
<h1 class="i-annc__page-title">{{page-title}}</h1>
|
||||||
<table class="i-annc__table table table-striped">
|
<table class="i-annc__table table table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="i-annc__th i-annc__th--category">{{category-head}}</th>
|
<th class="i-annc__th i-annc__th--category">{{category-head}}</th>
|
||||||
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
|
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
|
||||||
<th class="i-annc__th i-annc__th--date">{{date-head}}</th>
|
<th class="i-annc__th i-annc__th--date">{{date-head}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody data-level="0" data-list="event_news">
|
<tbody data-level="0" data-list="event_news">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="i-annc__category">{{category}}</td>
|
<td class="i-annc__category">{{category}}</td>
|
||||||
<td class="i-annc__content">
|
<td class="i-annc__content">
|
||||||
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</td>
|
</td>
|
||||||
<td class="i-annc__postdate"><span class="i-annc__postdate-content" date-format="%Y-%m-%d">{{postdate}}</span></td>
|
<td class="i-annc__postdate"><span class="i-annc__postdate-content" date-format="%Y-%m-%d">{{postdate}}</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
{{pagination_goes_here}}
|
{{pagination_goes_here}}
|
||||||
|
|
|
@ -1,22 +1,22 @@
|
||||||
<div class="i-annc index-announcement-10">
|
<div class="i-annc index-announcement-10">
|
||||||
<h1 class="i-annc__page-title">{{page-title}}</h1>
|
<h1 class="i-annc__page-title">{{page-title}}</h1>
|
||||||
<ul class="i-annc__list" data-level="0" data-list="event_news">
|
<ul class="i-annc__list" data-level="0" data-list="event_news">
|
||||||
<li class="i-annc__item row">
|
<li class="i-annc__item row">
|
||||||
<span class="i-annc__postdate-wrap col-sm-2" date-format="%Y-%m-%d">
|
<span class="i-annc__postdate-wrap col-sm-2" date-format="%Y-%m-%d">
|
||||||
<i class="fa fa-calendar-o"></i>
|
<i class="fa fa-calendar-o"></i>
|
||||||
<span class="i-annc__postdate">{{postdate}}</span>
|
<span class="i-annc__postdate">{{postdate}}</span>
|
||||||
</span>
|
</span>
|
||||||
<h4 class="i-annc__entry-title col-sm-8">
|
<h4 class="i-annc__entry-title col-sm-8">
|
||||||
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</h4>
|
</h4>
|
||||||
<span class="i-annc__category-wrap col-sm-2">
|
<span class="i-annc__category-wrap col-sm-2">
|
||||||
<i class="fa fa-tasks"></i>
|
<i class="fa fa-tasks"></i>
|
||||||
<span class="i-annc__category">{{category}}</span>
|
<span class="i-annc__category">{{category}}</span>
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
</ul>>
|
</ul>>
|
||||||
</div>
|
</div>
|
||||||
{{pagination_goes_here}}
|
{{pagination_goes_here}}
|
|
@ -1,18 +1,18 @@
|
||||||
<div class="i-annc index-announcement-11">
|
<div class="i-annc index-announcement-11">
|
||||||
<h1 class="i-annc__page-title">{{page-title}}</h1>
|
<h1 class="i-annc__page-title">{{page-title}}</h1>
|
||||||
<ul class="i-annc__list" data-level="0" data-list="event_news">
|
<ul class="i-annc__list" data-level="0" data-list="event_news">
|
||||||
<li class="i-annc__item row">
|
<li class="i-annc__item row">
|
||||||
<h4 class="i-annc__entry-title col-sm-9">
|
<h4 class="i-annc__entry-title col-sm-9">
|
||||||
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</h4>
|
</h4>
|
||||||
<span class="i-annc__postdate-wrap col-sm-3" date-format="%Y-%m-%d">
|
<span class="i-annc__postdate-wrap col-sm-3" date-format="%Y-%m-%d">
|
||||||
<i class="fa fa-calendar-o"></i>
|
<i class="fa fa-calendar-o"></i>
|
||||||
<span class="i-annc__postdate">{{postdate}}</span>
|
<span class="i-annc__postdate">{{postdate}}</span>
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
{{pagination_goes_here}}
|
{{pagination_goes_here}}
|
|
@ -1,18 +1,18 @@
|
||||||
<div class="i-annc index-announcement-12">
|
<div class="i-annc index-announcement-12">
|
||||||
<h1 class="i-annc__page-title">{{page-title}}</h1>
|
<h1 class="i-annc__page-title">{{page-title}}</h1>
|
||||||
<ul class="i-annc__list" data-level="0" data-list="event_news">
|
<ul class="i-annc__list" data-level="0" data-list="event_news">
|
||||||
<li class="i-annc__item row">
|
<li class="i-annc__item row">
|
||||||
<span class="i-annc__postdate-wrap col-sm-3" date-format="%Y-%m-%d">
|
<span class="i-annc__postdate-wrap col-sm-3" date-format="%Y-%m-%d">
|
||||||
<i class="fa fa-calendar-o"></i>
|
<i class="fa fa-calendar-o"></i>
|
||||||
<span class="i-annc__postdate">{{postdate}}</span>
|
<span class="i-annc__postdate">{{postdate}}</span>
|
||||||
</span>
|
</span>
|
||||||
<h4 class="i-annc__entry-title col-sm-9">
|
<h4 class="i-annc__entry-title col-sm-9">
|
||||||
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</h4>
|
</h4>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
{{pagination_goes_here}}
|
{{pagination_goes_here}}
|
|
@ -1,23 +1,23 @@
|
||||||
<div class="i-annc index-announcement-13 {{display}}">
|
<div class="i-annc index-announcement-13 {{display}}">
|
||||||
<h1 class="i-annc__page-title">{{page-title}}</h1>
|
<h1 class="i-annc__page-title">{{page-title}}</h1>
|
||||||
<table class="i-annc__table table table-striped">
|
<table class="i-annc__table table table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
|
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
|
||||||
<th class="i-annc__th i-annc__th--date">{{date-head}}</th>
|
<th class="i-annc__th i-annc__th--date">{{date-head}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody data-level="0" data-list="event_news">
|
<tbody data-level="0" data-list="event_news">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="i-annc__content">
|
<td class="i-annc__content">
|
||||||
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</td>
|
</td>
|
||||||
<td class="i-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
|
<td class="i-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
{{pagination_goes_here}}
|
{{pagination_goes_here}}
|
||||||
|
|
|
@ -1,23 +1,23 @@
|
||||||
<div class="i-annc index-announcement-14 {{display}}">
|
<div class="i-annc index-announcement-14 {{display}}">
|
||||||
<h1 class="i-annc__page-title">{{page-title}}</h1>
|
<h1 class="i-annc__page-title">{{page-title}}</h1>
|
||||||
<table class="i-annc__table table table-striped">
|
<table class="i-annc__table table table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="i-annc__th i-annc__th--date">{{date-head}}</th>
|
<th class="i-annc__th i-annc__th--date">{{date-head}}</th>
|
||||||
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
|
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody data-level="0" data-list="event_news">
|
<tbody data-level="0" data-list="event_news">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="i-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
|
<td class="i-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
|
||||||
<td class="i-annc__content">
|
<td class="i-annc__content">
|
||||||
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
{{pagination_goes_here}}
|
{{pagination_goes_here}}
|
||||||
|
|
|
@ -1,25 +1,25 @@
|
||||||
<div class="i-annc index-announcement-15 {{display}}">
|
<div class="i-annc index-announcement-15 {{display}}">
|
||||||
<h1 class="i-annc__page-title">{{page-title}}</h1>
|
<h1 class="i-annc__page-title">{{page-title}}</h1>
|
||||||
<table class="i-annc__table table table-striped">
|
<table class="i-annc__table table table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="i-annc__th i-annc__th--date">{{date-head}}</th>
|
<th class="i-annc__th i-annc__th--date">{{date-head}}</th>
|
||||||
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
|
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
|
||||||
<th class="i-annc__th i-annc__th--category">{{view-count-head}}</th>
|
<th class="i-annc__th i-annc__th--category">{{view-count-head}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody data-level="0" data-list="event_news">
|
<tbody data-level="0" data-list="event_news">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="i-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
|
<td class="i-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
|
||||||
<td class="i-annc__content">
|
<td class="i-annc__content">
|
||||||
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</td>
|
</td>
|
||||||
<td class="i-annc__view-count">{{view_count}}</td>
|
<td class="i-annc__view-count">{{view_count}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
{{pagination_goes_here}}
|
{{pagination_goes_here}}
|
||||||
|
|
|
@ -1,39 +1,39 @@
|
||||||
<div class="i-annc index-announcement-16 {{display}}">
|
<div class="i-annc index-announcement-16 {{display}}">
|
||||||
<h1 class="i-annc__page-title">{{page-title}}</h1>
|
<h1 class="i-annc__page-title">{{page-title}}</h1>
|
||||||
<table class="i-annc__table table table-striped">
|
<table class="i-annc__table table table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="i-annc__th i-annc__th--date">{{date-head}}</th>
|
<th class="i-annc__th i-annc__th--date">{{date-head}}</th>
|
||||||
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
|
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
|
||||||
<th class="i-annc__th i-annc__th--title">{{link-head}}</th>
|
<th class="i-annc__th i-annc__th--title">{{link-head}}</th>
|
||||||
<th class="i-annc__th i-annc__th--title">{{file-head}}</th>
|
<th class="i-annc__th i-annc__th--title">{{file-head}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody data-level="0" data-list="event_news">
|
<tbody data-level="0" data-list="event_news">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="i-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
|
<td class="i-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
|
||||||
<td class="i-annc__content">
|
<td class="i-annc__content">
|
||||||
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</td>
|
</td>
|
||||||
<td class="i-annc__links">
|
<td class="i-annc__links">
|
||||||
<ul data-list="event_news_links" data-level="1">
|
<ul data-list="event_news_links" data-level="1">
|
||||||
<li>
|
<li>
|
||||||
<a class="i-annc__title" href="{{link_url}}">{{link_title}}</a>
|
<a class="i-annc__title" href="{{link_url}}">{{link_title}}</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</td>
|
</td>
|
||||||
<td class="i-annc__files">
|
<td class="i-annc__files">
|
||||||
<ul data-list="event_news_files" data-level="1">
|
<ul data-list="event_news_files" data-level="1">
|
||||||
<li>
|
<li>
|
||||||
<a class="i-annc__title" href="{{file_url}}">{{file_title}}</a>
|
<a class="i-annc__title" href="{{file_url}}">{{file_title}}</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
{{pagination_goes_here}}
|
{{pagination_goes_here}}
|
||||||
|
|
|
@ -1,27 +1,27 @@
|
||||||
<div class="i-annc index-announcement-1 {{display}}">
|
<div class="i-annc index-announcement-1 {{display}}">
|
||||||
<h1 class="i-annc__page-title">{{page-title}}</h1>
|
<h1 class="i-annc__page-title">{{page-title}}</h1>
|
||||||
<table class="i-annc__table table table-striped">
|
<table class="i-annc__table table table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="i-annc__th i-annc__th--category">{{category-head}}</th>
|
<th class="i-annc__th i-annc__th--category">{{category-head}}</th>
|
||||||
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
|
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
|
||||||
<th class="i-annc__th i-annc__th--date">{{date-head}}</th>
|
<th class="i-annc__th i-annc__th--date">{{date-head}}</th>
|
||||||
<th class="i-annc__th i-annc__th--department">{{department-head}}</th>
|
<th class="i-annc__th i-annc__th--department">{{department-head}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody data-level="0" data-list="event_news">
|
<tbody data-level="0" data-list="event_news">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="i-annc__category">{{category}}</td>
|
<td class="i-annc__category">{{category}}</td>
|
||||||
<td class="i-annc__content">
|
<td class="i-annc__content">
|
||||||
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</td>
|
</td>
|
||||||
<td class="i-annc__postdate"><span class="i-annc__postdate-content" date-format="%Y-%m-%d">{{postdate}}</span></td>
|
<td class="i-annc__postdate"><span class="i-annc__postdate-content" date-format="%Y-%m-%d">{{postdate}}</span></td>
|
||||||
<td class="i-annc__department"><span class="i-annc__department-content">{{department}}</span></td>
|
<td class="i-annc__department"><span class="i-annc__department-content">{{department}}</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
{{pagination_goes_here}}
|
{{pagination_goes_here}}
|
||||||
|
|
|
@ -1,29 +1,29 @@
|
||||||
<div class="i-annc index-announcement-1 {{display}}">
|
<div class="i-annc index-announcement-1 {{display}}">
|
||||||
<h1 class="i-annc__page-title">{{page-title}}</h1>
|
<h1 class="i-annc__page-title">{{page-title}}</h1>
|
||||||
<table class="i-annc__table table table-striped">
|
<table class="i-annc__table table table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="i-annc__th i-annc__th--event_date">{{event_date-head}}</th>
|
<th class="i-annc__th i-annc__th--event_date">{{event_date-head}}</th>
|
||||||
<th class="i-annc__th i-annc__th--speaker">{{speaker-head}}</th>
|
<th class="i-annc__th i-annc__th--speaker">{{speaker-head}}</th>
|
||||||
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
|
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
|
||||||
<th class="i-annc__th i-annc__th--host">{{host-head}}</th>
|
<th class="i-annc__th i-annc__th--host">{{host-head}}</th>
|
||||||
<th class="i-annc__th i-annc__th--notes">{{notes-head}}</th>
|
<th class="i-annc__th i-annc__th--notes">{{notes-head}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody data-level="0" data-list="event_news">
|
<tbody data-level="0" data-list="event_news">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="i-annc__postdate"><span class="i-annc__postdate-content" date-format="%Y-%m-%d">{{postdate}}</span></td>
|
<td class="i-annc__postdate"><span class="i-annc__postdate-content" date-format="%Y-%m-%d">{{postdate}}</span></td>
|
||||||
<td class="i-annc__speaker">{{speaker}}</td>
|
<td class="i-annc__speaker">{{speaker}}</td>
|
||||||
<td class="i-annc__content">
|
<td class="i-annc__content">
|
||||||
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</td>
|
</td>
|
||||||
<td class="i-annc__host">{{host}}</td>
|
<td class="i-annc__host">{{host}}</td>
|
||||||
<td class="i-annc__notes">{{notes}}</td>
|
<td class="i-annc__notes">{{notes}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
{{pagination_goes_here}}
|
{{pagination_goes_here}}
|
||||||
|
|
|
@ -1,27 +1,27 @@
|
||||||
<div class="i-annc index-announcement-2 {{display}}">
|
<div class="i-annc index-announcement-2 {{display}}">
|
||||||
<h1 class="i-annc__page-title">{{page-title}}</h1>
|
<h1 class="i-annc__page-title">{{page-title}}</h1>
|
||||||
<table class="i-annc__table table table-striped">
|
<table class="i-annc__table table table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="i-annc__th i-annc__th--category">{{category-head}}</th>
|
<th class="i-annc__th i-annc__th--category">{{category-head}}</th>
|
||||||
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
|
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
|
||||||
<th class="i-annc__th i-annc__th--date">{{date-head}}</th>
|
<th class="i-annc__th i-annc__th--date">{{date-head}}</th>
|
||||||
<th class="i-annc__th i-annc__th--category">{{view-count-head}}</th>
|
<th class="i-annc__th i-annc__th--category">{{view-count-head}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody data-level="0" data-list="event_news">
|
<tbody data-level="0" data-list="event_news">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="i-annc__category">{{category}}</td>
|
<td class="i-annc__category">{{category}}</td>
|
||||||
<td class="i-annc__content">
|
<td class="i-annc__content">
|
||||||
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
|
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
|
||||||
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
|
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
|
||||||
</span>
|
</span>
|
||||||
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
|
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
|
||||||
</td>
|
</td>
|
||||||
<td class="i-annc__postdate"><span class="i-annc__postdate-content" date-format="%Y-%m-%d">{{postdate}}</span></td>
|
<td class="i-annc__postdate"><span class="i-annc__postdate-content" date-format="%Y-%m-%d">{{postdate}}</span></td>
|
||||||
<td class="i-annc__view-count">{{view_count}}</td>
|
<td class="i-annc__view-count">{{view_count}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
{{pagination_goes_here}}
|
{{pagination_goes_here}}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue