Compare commits

..
Author SHA1 Message Date
chris 18b36df573 Change colour for mobile sa 2013-09-13 15:10:46 +08:00
chris 09bb318d6a Changes for NTU Student Affairs 2013-09-13 15:10:33 +08:00
chris d766eea9f4 Changes for NTU common
Conflicts:
	lib/tasks/migrate.rake

Conflicts:
	lib/tasks/migrate.rake

Conflicts:
	config/resque_schedule.yml
	lib/tasks/migrate.rake
2013-09-13 15:10:10 +08:00
149 changed files with 529 additions and 3220 deletions

No files matched your search

+2
View File
@@ -4,6 +4,8 @@
.rvmrc
Gemfile.lock
Procfile
log/*
db/*.sqlite3
log/*.log
-2
View File
@@ -1,8 +1,6 @@
source 'http://rubygems.org'
gem 'rails', "~> 3.2.9"
gem 'savon', '~> 2.2.0'
gem "brakeman"
gem 'mime-types'
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

@@ -15,11 +15,6 @@ function load_tinymce() {
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : true,
// Domain Absolute URLs
relative_urls : false,
remove_script_host : false,
document_base_url: window.location.protocol + '//' + window.location.host,
// Skin options
skin : "o2k7",
skin_variant : "silver",
@@ -100,9 +100,8 @@ div[data-role="page"] {
padding: 0;
border: none;
z-index: 50;
/*background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#545b60), to(#191a1c));*/
background-image: -webkit-linear-gradient(top, #5282A6, #133757);
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.8), inset 0 1px 0 rgba(127, 149, 165, 1), 0 -1px 0 rgba(31, 32, 36, 1) inset;
background-image: -webkit-linear-gradient(top, #e35479, #cb2d56);
-webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.8),inset 0 1px 0 #7f95a5,0 -1px 0 #1f2024 inset;
}
.header h1.ui-title {
margin: 8px 30%;
@@ -115,14 +114,12 @@ div[data-role="page"] {
left: 50%;
margin-left: -15px;
font-size: 20px;
/*color: #727272;*/
color: #7CA6C5;
/*background-color: #252525;*/
background-color: #144366;
color: #ffc8e7;
background-color: #cb2d56;
border-radius: 0 0 5px 5px;
height: 15px;
line-height: 16px;
box-shadow: 1px 2px 2px rgba(0, 0, 0, .5);
box-shadow: 1px 2px 2px rgba(0,0,0,0.5);
}
.header .language .ui-btn-text {
left: 0;
@@ -135,14 +132,14 @@ div[data-role="page"] {
background-image: none;
}
.header .ui-btn-up-a {
border: 1px solid #133547;
background-color: #0C4C64;
background-image: -webkit-gradient(linear, left top, left bottom, from( #0D6691 ), to( #0E3A4B ));
background-image: -webkit-linear-gradient( #0D6691 , #0E3A4B );
background-image: -moz-linear-gradient( #0D6691 , #0E3A4B );
background-image: -ms-linear-gradient( #0D6691 , #0E3A4B );
background-image: -o-linear-gradient( #0D6691 , #0E3A4B );
background-image: linear-gradient( #0D6691 , #0E3A4B );
border: 1px solid #a21050;
background-color: #cb2d56;
background-image: -webkit-gradient(linear, left top, left bottom, from(#e35479), to(#cb2d56));
background-image: -webkit-linear-gradient(#e35479, #cb2d56);
background-image: -moz-linear-gradient(#e35479, #cb2d56);
background-image: -ms-linear-gradient(#e35479, #cb2d56);
background-image: -o-linear-gradient(#e35479, #cb2d56);
background-image: linear-gradient(#e35479, #cb2d56);
}
.header h1 img {
height: 30px;
+1 -1
View File
@@ -73,7 +73,7 @@ class FrontController < ApplicationController
res << " active" if (current_page.id.eql?(page.id) || current_page.descendant_of?(page))
res << "'>"
root = "/"
res << "<a href='#{(page.class.to_s.eql?('Page') ? root + page.path : page.url)}' target=#{(page.class.to_s.eql?('Page') ? '_self' : '_blank')} ><span>#{page.title}</span></a>"
res << "<a href='#{(page.class.to_s.eql?('Page') ? root + page.path : page.url)}'><span>#{page.title}</span></a>"
if page.visible_children.size > 0 && current < menu.levels
res << "<span class='dot'></span>"
res << menu_level(page, current_page, current + 1, menu)
-35
View File
@@ -1,35 +0,0 @@
# encoding: utf-8
class SessionsController < Devise::SessionsController
prepend_before_filter :require_no_authentication, :only => [ :new, :create ]
require 'savon'
def create
@sys_id = params["sys_id"]
client = Savon.client(wsdl: 'http://sso.ntue.edu.tw/soap/soapserver.php?wsdl')
client.operations
response = client.call(:chkidno, message: { sys_id: @sys_id })
@id = response.body[:chkidno_response][:return][:id]
login_uid = @id
resource = User.first(conditions:{user_id: login_uid})
if !resource.blank?
resource_name = resource.class.to_s.downcase
sign_in(resource_name, resource)
redirect_to after_sign_in_path_for(resource)
else
flash[:error] = "很抱歉,您無此權限或帳號登入本站,請洽本站管理員<br />Sorry, you don't have the account or authority to login. Please contact the website administrator."
redirect_to :root
end
end
end
+7
View File
@@ -0,0 +1,7 @@
class GetAnnouncementFromRss
@queue = :high
def self.perform()
%x(ruby "#{Rails.root}/lib/rss_ntu_job.rb")
end
end
@@ -17,4 +17,4 @@
<%= render :partial=> "widget_ext_options" %>
</div>
</div>
<% end %>
<% end %>
+17 -9
View File
@@ -1,4 +1,19 @@
<%= javascript_include_tag "lib/jquery.cycle.all.latest.js"%>
<script type='text/javascript' src='/static/jquery.cycle.all.latest.js'></script>
<script type='text/javascript'>
jQuery(function( $ ){
$('#slideshow-<%= @ad_banner.title.dehumanize %>').cycle({
delay: -1000,
fx: "<%= @ad_banner.ad_fx.nil? ? 'fade': @ad_banner.ad_fx %>",
timeoutFn: getTimeout,
pager: '.banner_nav-<%= @ad_banner.title.dehumanize %>',
pagerAnchorBuilder: function(idx, slide) {
return "<li><a href='#'></a></li>";
}
});
});
</script>
<div style='position:relative'>
<ul id='banner_nav' class='clear banner_nav-<%= @ad_banner.title.dehumanize %>'></ul>
<div id='slideshow-<%= @ad_banner.title.dehumanize %>' class='slideshow'>
@@ -8,11 +23,4 @@
<% end %>
<% end %>
</div>
</div>
<script type='text/javascript'>
var banner = {"banner_name":"#slideshow-<%= @ad_banner.title.dehumanize %>",
"banner_fx":"<%= @ad_banner.ad_fx.nil? ? 'fade': @ad_banner.ad_fx %>",
"banner_pager":".banner_nav-<%= @ad_banner.title.dehumanize %>"
};
banners.push(banner);
</script>
</div>
+1 -1
View File
@@ -4,7 +4,7 @@
<ul class='list'>
<% @menu_page.visible_children.each do |child| %>
<li class="<%= @page_id.eql?(child.id) ? 'active' : nil %>">
<a href="<%= (child.class.to_s.eql?('Page') ? '/' + child.path : child.url) %>" <%= "target=_blank" if child.class.to_s.eql?('Page').blank? %> ><%= child.title %></a>
<a href="<%= (child.class.to_s.eql?('Page') ? '/' + child.path : child.url) %>"><%= child.title %></a>
</li>
<% end %>
</ul>
+11
View File
@@ -1,6 +1,17 @@
<!DOCTYPE HTML>
<html class="<%= I18n.locale.to_s %>">
<head>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-39393439-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<meta charset="utf-8">
<%= page_title(@item).html_safe %>
<link rel="shortcut icon" href="<%= asset_path "ncculogo.ico" %>">
+2 -1
View File
@@ -3,5 +3,6 @@
<% end %>
<ul>
<li>電話:<a href="tel:+886227321104">+886-2-2732-1104</a> <a href="tel:+886266396688">+886-2-6639-6688</a></li>
<li>學務處電話:<a href="tel:+886-2-3366-2995~2997">+886-2-3366-2995~2997</a></li>
<li>學務處傳真:+886-2-2391-9095</li>
</ul>
+1 -1
View File
@@ -5,6 +5,6 @@
<div id='map_canvas'></div>
<script type='text/javascript'>
var $map_center = "25.024562,121.544611"
var $map_center = "25.015205, 121.535491"
var $map_zoom = 17
</script>
+9 -9
View File
@@ -34,15 +34,15 @@ Orbit::Application.configure do
# :sender_address => %{"notifier" <redmine@rulingcom.com>},
# :exception_recipients => %w{chris@rulingcom.com}
# config.action_mailer.delivery_method = :smtp
# config.action_mailer.smtp_settings = {
# :enable_starttls_auto => true,
# :address => "smtp.gmail.com",
# :port => '587',
# :domain => "smtp.gmail.com",
# :authentication => "plain",
# :user_name => "redmine@rulingcom.com",
# :password => "rulingredmine" }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:enable_starttls_auto => true,
:address => "smtp.gmail.com",
:port => '587',
:domain => "smtp.gmail.com",
:authentication => "plain",
:user_name => "redmine@rulingcom.com",
:password => "rulingredmine" }
end
+2 -2
View File
@@ -4,10 +4,10 @@ en:
bulletin: Bulletin
contact: Contact
copyright: Copyright
copyright_text: Thisi University © All RIGHTS RESERVED.
copyright_text: Copyright© 2008 National Taiwan University ALL RIGHTS RESERVED
copyright_orbit: Powered by RulingDigital
home: Home
language: Language
location: Location
location_description: '<h3>This University</h3>No.101,Sec. 2, Jiafeng S Road, Zhubei City, Hsinchu County 302, Taiwan'
location_description: '<h3>National Taiwan University</h3>No. 1, Sec. 4, Roosevelt Road, Taipei, 10617 Taiwan (R.O.C)'
page: Page
+2 -2
View File
@@ -4,10 +4,10 @@ zh_tw:
bulletin: 公告
contact: 聯絡資訊
copyright: 著作權宣告
copyright_text: 本網站著作權屬於本大學。
copyright_text: 本網站著作權屬於國立臺灣大學 學生事務處
copyright_orbit: 銳綸數位建置
home: 首頁
language: 語言
location: 地理位置
location_description: '<h3>本大學</h3>302新竹縣竹北市嘉豐南路二段101號'
location_description: '<h3>臺灣大學總務處 版權所有</h3>10617 臺北市大安區羅斯福路四段一號'
page: 頁面
+4
View File
@@ -0,0 +1,4 @@
en:
ntu:
rss_origin: Back to NTU Announcements
+4
View File
@@ -0,0 +1,4 @@
zh_tw:
ntu:
rss_origin: 回臺大校園公佈欄
+7 -1
View File
@@ -11,7 +11,7 @@ backup_server:
description: BackupServer and remove old backups
update_tag_cloud:
cron: 0 0 [0,12] * * *
cron: 0 30 2 * * *
class: UpdateTagCloud
args:
description: UpdateTagCloud
@@ -27,3 +27,9 @@ email_cron:
class: EmailCron
args:
description: EmailCron
get_announcement_from_rss:
cron: 0 0 [2,12] * * *
class: GetAnnouncementFromRss
args:
description: Loop through the announcement RSS until 24h ago
-5
View File
@@ -7,11 +7,6 @@ Orbit::Application.routes.draw do
match "/users_passwd" => "desktop/registrations#update", :as => :users_passwd, :via => :put
end
devise_scope :user do
get 'soap_login' => 'sessions#create'
end
mount Resque::Server, :at => "/admin/resque"
mount Rack::GridFS::Endpoint.new(:db => Mongoid.database,:lookup=>:path), :at => "gridfs"
+7 -1
View File
@@ -32,7 +32,13 @@ module ParserFrontEnd
ret = ''
part = PagePart.find(front['part_id']) if front['part_id']
ret << eval("\"#{front['path']}\"") rescue ''
ret << (ret.include?("?") ? "&#{args.to_param}" : "?#{args.to_param}") if args
args.each do |index,arg|
if index=="tag_id" || index=="category_id"
ret << (ret.include?("?") ? "&#{index}[]=#{arg}": "?#{index}[]=#{arg}" )
else
ret << (ret.include?("?") ? "&#{index}=#{arg}": "?#{index}=#{arg}" )
end
end if args
fragment = Nokogiri::HTML::DocumentFragment.new(body, "<div class='dymanic_load widget' path='#{ret}'></div>")
end
front.swap(fragment)
+99
View File
@@ -0,0 +1,99 @@
# encoding: utf-8
# encoding: utf-8
require 'rss'
require 'mongo'
AUTHORS = %w[ 學生事務處-學生住宿服務組
學生事務處-學生職業生涯發展中心
學生事務處-衛生保健及醫療中心
學生事務處-課外活動指導組
學生事務處-學生活動中心管理組
學生事務處-僑生及陸生輔導組
學生事務處-生活輔導組
學生事務處-軍訓組
學生事務處-學生心理輔導中心
學生事務處-學生事務處]
DB_BASE_NAME = "site"
all = []
continue = true
i = 1
yesterday = Time.now - 86400
while continue do
open("http://ann.cc.ntu.edu.tw/asp/rss.asp?page=#{i}") do |rss|
feed = RSS::Parser.parse(rss.read.encode('utf-8', 'big5', invalid: :replace, undef: :replace, replace: '').gsub('<pubDate>Wes,', '<pubDate>Wed,').gsub(/(encoding=\"big5\")/, 'encoding="utf-8"'))
feed.items.each do |item|
if item.pubDate > yesterday
if AUTHORS.include?(item.author)
author = item.author.strip
category = item.category.to_s.gsub(/\<(\/)*category\>/, '')
all << {title: item.title.strip, author: author, link: item.link.strip, date: item.pubDate, category: category, description: item.description.gsub("\r\n", '<br/>').strip}
end
else
continue = false
break
end
end
end
i += 1
end
# Get corresponding category_id or create a new one
def get_category_id(category, categories, coll_cat)
if categories.keys.include? "rss_#{category}"
[categories["rss_#{category}"], categories]
else
cat = {
_type: "BulletinCategory",
key: "rss_#{category}",
disable: false,
title: {:zh_tw => category},
created_at: Time.now,
updated_at: Time.now
}
categories["rss_#{category}"] = result = coll_cat.save(cat)
[result, categories]
end
end
# Get categories and id based on a given site number
def get_mongo_and_categories(site_number="0")
db = Mongo::Connection.new("localhost", 27017).db("#{DB_BASE_NAME}_#{site_number}")
coll_bulletin = db["bulletins"]
coll_cat = db["bulletin_categories"]
categories = coll_cat.find().to_a.inject({}) do |categories, category|
categories[category['key']] = category['_id']
categories
end
[categories, coll_bulletin, coll_cat]
end
# Get categories
categories, coll_bulletin, coll_cat = get_mongo_and_categories
all.each do |bul| # Loop through all the items
category_id, categories = get_category_id(bul[:category], categories, coll_cat)
unless coll_bulletin.find_one(rss_link: bul[:link])
bulletin = { _type: "Bulletin",
postdate: bul[:date],
created_at: bul[:date],
updated_at: bul[:date],
is_checked: true,
is_pending: false,
is_rejected: false,
bulletin_category_id: category_id,
title: {:zh_tw => bul[:title]},
text: {:zh_tw => bul[:description]},
available_for_zh_tw: true,
rss_link: bul[:link] }
coll_bulletin.save(bulletin)
end
end
+91
View File
@@ -0,0 +1,91 @@
# encoding: utf-8
require 'rss'
require 'mongo'
AUTHORS = %w[ 學生事務處-學生住宿服務組
學生事務處-學生職業生涯發展中心
學生事務處-衛生保健及醫療中心
學生事務處-課外活動指導組
學生事務處-學生活動中心管理組
學生事務處-僑生及陸生輔導組
學生事務處-生活輔導組
學生事務處-軍訓組
學生事務處-學生心理輔導中心
學生事務處-學生事務處]
DB_BASE_NAME = "site"
all = []
continue = true
i = 1
while continue do
open("http://ann.cc.ntu.edu.tw/asp/rss.asp?page=#{i}") do |rss|
feed = RSS::Parser.parse(rss.read.encode('utf-8', 'big5', invalid: :replace, undef: :replace, replace: '').gsub('<pubDate>Wes,', '<pubDate>Wed,').gsub(/(encoding=\"big5\")/, 'encoding="utf-8"'))
feed.items.size
feed.items.each do |item|
if AUTHORS.include?(item.author)
author = item.author.strip
category = item.category.to_s.gsub(/\<(\/)*category\>/, '')
all << {title: item.title.strip, author: author, link: item.link.strip, date: item.pubDate, category: category, description: item.description.gsub("\r\n", '<br/>').strip}
end
end
continue = false if feed.items.size < 100
end
i += 1
end
# Get corresponding category_id or create a new one
def get_category_id(category, categories, coll_cat)
if categories.keys.include? "rss_#{category}"
[categories["rss_#{category}"], categories]
else
cat = {
_type: "BulletinCategory",
key: "rss_#{category}",
disable: false,
title: {:zh_tw => category},
created_at: Time.now,
updated_at: Time.now
}
categories["rss_#{category}"] = result = coll_cat.save(cat)
[result, categories]
end
end
# Get categories and id based on a given site number
def get_mongo_and_categories(site_number="0")
db = Mongo::Connection.new("localhost", 27017).db("#{DB_BASE_NAME}_#{site_number}")
coll_bulletin = db["bulletins"]
coll_cat = db["bulletin_categories"]
categories = coll_cat.find().to_a.inject({}) do |categories, category|
categories[category['key']] = category['_id']
categories
end
[categories, coll_bulletin, coll_cat]
end
# Get categories
categories, coll_bulletin, coll_cat = get_mongo_and_categories
all.each do |bul| # Loop through all the items
category_id, categories = get_category_id(bul[:category], categories, coll_cat)
unless coll_bulletin.find_one(rss_link: bul[:link])
bulletin = { _type: "Bulletin",
postdate: bul[:date],
created_at: bul[:date],
updated_at: bul[:date],
is_checked: true,
is_pending: false,
is_rejected: false,
bulletin_category_id: category_id,
title: {:zh_tw => bul[:title]},
text: {:zh_tw => bul[:description]},
available_for_zh_tw: true,
rss_link: bul[:link] }
coll_bulletin.save(bulletin)
end
end
+28
View File
@@ -310,6 +310,34 @@ namespace :migrate do
Rake::Task["web_link_url:web_link_url_i18n"].execute
end
task :save_users => :environment do
User.where(:email.not => /guest/).each{|s|s.save}
end
task :fix_bulletin_rss_available_lang => :environment do
Bulletin.all.each do |bull|
if bull.create_user_id.nil?
bull.update_attribute(:available_for_zh_tw, true)
end
end
end
task :fix_imported_rss => :environment do
categories = BulletinCategory.where(key: /rss_/).entries
unless categories.blank?
categories.each do |category|
bulletins = category.bulletins
unless bulletins.blank?
bulletins.each do |bulletin|
bulletin.update_attribute(:is_top, false) unless bulletin.is_top?
bulletin.update_attribute(:is_hot, false) unless bulletin.is_hot?
bulletin.update_attribute(:is_hidden, false) unless bulletin.is_hidden?
end
end
end
end
end
task :fix_tagged_ids => :environment do
Tag.all.each do |tag|
tag.taggings.each do |tagging|
+168
View File
@@ -0,0 +1,168 @@
# encoding: utf-8
namespace :mongo_files do
MODELS = { 'ad_image' => 'file',
'archive_file_multiple' => 'file',
'asset' => 'data',
'bulletin' => 'image',
'bulletin_file' => 'file',
'design' => 'zip_file',
'design_file' => 'file',
'gallery_image' => 'file',
'image' => 'file',
'lab_file' => 'file',
'location_info' => 'file',
'preview_file' => 'file',
'project_file' => 'file',
'research_file' => 'file',
'site' => 'default_image',
'stylesheet' => 'file_orig',
'user' => 'avatar',
'writing_book_file' => 'file',
'writing_conference_file' => 'file',
'writing_journal_file' => 'file',
'writing_patent_file' => 'file' }
IMAGE_UPLOADER_MODELS = %w[ad_image bulletin image site]
task :clean => :environment do
@files = Mongoid.database['fs.files']
@chunks = Mongoid.database['fs.chunks']
clean_duplicates
clean_unused
remove_objects
end
# Remove unused files from db
def clean_unused
db_array = @files.find().inject([]) do |db_files, file|
db_files << file['filename']
db_files
end
p "# of files in db: #{db_array.size}"
name_array = MODELS.inject([]) do |model_files, (model, type)|
model.classify.constantize.all.each do |item|
url = item.send(type).url
thumb_url = item.send(type).thumb.url rescue nil
if url && !url.eql?('sign-in-logo.png')
url = url.gsub('/gridfs/', '')
model_files << url
end
if thumb_url && !thumb_url.eql?('sign-in-logo.png')
thumb_url = thumb_url.gsub('/gridfs/', '')
model_files << thumb_url
end
end
model_files
end
p "# of files from uploaders: #{name_array.size}"
useless_files = db_array - name_array
p "# of unmatched files: #{useless_files.size}"
useless_files.each do |file|
id = @files.find_one('filename' => file)['_id']
@files.remove('_id' => id)
@chunks.remove('files_id' => id)
end
# p files.remove('filename' => { "$in" => useless_files})
end
# Remove duplicate files from db
def clean_duplicates
p "# of files in db: #{@files.count}"
file_hash = @files.find().sort({uploadDate: -1}).inject({}) do |db_files, file|
name = file['filename']
if db_files[name]
db_files[name] += [file['_id']]
else
db_files[name] = [file['_id']]
end
db_files
end
file_array = file_hash.inject([]) do |files, (key, value)|
files += value.drop(1) if value.size > 1
files
end
p "# of duplicate ids to delete: #{file_array.size}"
file_array.each do |id|
@files.remove('_id' => id)
@chunks.remove('files_id' => id)
end
end
task :file_size => :environment do
files = Mongoid.database['fs.files']
size_array = files.find().inject([]) do |size, file|
# size << [file['length'], file['filename']]
size << [file['filename'], file['length']]
size
end
size_array.sort.each do |pair|
p "#{pair[0]} - #{pair[1]}"
end
p size_array.size
end
def remove_objects
# Destroy writing_journals and writing_journal_files
Mongoid.database['writing_journals'].remove()
Mongoid.database['writing_journal_files'].remove()
db_array = @files.find().inject([]) do |db_files, file|
db_files << file['filename'] if file['filename'] =~ /writing_journal_file|news_bulletin_file|image\/image/
db_files
end
p db_array.size
db_array.each do |file|
id = @files.find_one('filename' => file)['_id']
@files.remove('_id' => id)
@chunks.remove('files_id' => id)
end
end
def remove_unlinked
# name_array = AdBanner.all.inject([]) do |files, banner|
# banner.ad_images.inject(files) do |image_files, image|
# url = image.file.url
# thumb_url = image.file.thumb.url rescue nil
# if url && !url.eql?('sign-in-logo.png')
# url = url.gsub('/gridfs/', '')
# image_files << url
# end
# if thumb_url && !thumb_url.eql?('sign-in-logo.png')
# thumb_url = thumb_url.gsub('/gridfs/', '')
# image_files << thumb_url
# end
# image_files
# end
# files
# end
name_array = Design.all.inject([]) do |files, design|
files += design.images.inject(files) do |image_files, image|
p image_files += get_url_and_thumb(image.file)
image_files
end
files
end
p name_array.size
end
def get_url_and_thumb(file)
url = file.url
thumb_url = file.thumb.url rescue nil
files = [url, thumb_url].inject([]) do |urls, current|
urls << current.gsub('/gridfs/', '') if current && !current.eql?('sign-in-logo.png')
urls
end
files
end
task :delete_rss_ann => :environment do
Bulletin.where(create_user_id: nil).destroy
end
end
+10 -10
View File
@@ -9,17 +9,17 @@ namespace :web_link_url do
@weblinks.each do |wl|
if wl.url.nil?
if wl.url_translations.is_a?(String)
@wlurl = wl.url_translations
wl.url_translations = {}
wl.url_translations["zh_tw"] = @wlurl
wl.url_translations["en"] = @wlurl
@wlurl = wl.url_translations
wl.url_translations = {}
wl.url_translations["zh_tw"] = @wlurl
wl.url_translations["en"] = @wlurl
wl.save
wl.save
else
puts 'no data'
+12 -34
View File
@@ -1,45 +1,23 @@
var banners = [];
var banner_index = 0;
$(document).ready(function() {
$.each($(".dymanic_load"),function(){
if($(this).attr("path")==''){$(this).html("App setting Failed");}
if($(this).attr("path")!=''){
if($(this).attr("path").indexOf("show_banner")>0){
ajax_load_proc($(this),$(this).attr("path"),"true");
}else{
ajax_load_proc($(this),$(this).attr("path"),$(this).attr("path"));
ajax_load_proc($(this),$(this).attr("path"));
}
}
}});
);
$("#main_content").addClass("module");
});
function ajax_load_proc(wapper,url,isBanner){
$.get(encodeURI(url), {}, function(respText,textSta,XML){
if (textSta == 'success') {
if(isBanner=="true"){
wapper.html(respText);
setTimeout("BannerCycle()", 2500);
}else{
wapper.html(respText);
}
};
if(textSta == 'error')
wapper.html("Loading Failed<br/> <a href='"+$(this).attr('path')+"'>Go See</a>");
});
}
function BannerCycle(){
var banner = banners[banner_index];
banner_index++;
$(banner.banner_name).ready(function() {
$(banner.banner_name).cycle({
delay: -1000,
fx: banner.banner_fx,
timeoutFn: getTimeout,
pager: banner.banner_pager,
pagerAnchorBuilder: function(idx, slide) { return "<li><a href='#'></a></li>"; }
});
function ajax_load_proc(wapper,url){
$.get(encodeURI(url), {}, function(respText,textSta,XML){
if (textSta == 'success') {
wapper.html(respText);
};
if(textSta == 'error')
wapper.html("Loading Failed<br/> <a href='"+$(this).attr('path')+"'>Go See</a>");
});
}
@@ -1,4 +1,3 @@
# encoding: utf-8
class Panel::Announcement::BackEnd::ApprovalsController < OrbitBackendController
before_filter :authenticate_user!
before_filter :is_admin?
@@ -7,7 +6,6 @@ class Panel::Announcement::BackEnd::ApprovalsController < OrbitBackendControlle
def preview_and_approve
email_group_data
@bulletin = Bulletin.find params[:bulletin_id]
end
@@ -17,14 +15,6 @@ class Panel::Announcement::BackEnd::ApprovalsController < OrbitBackendControlle
@bulletin.proc_check(params[:bulletin][:is_checked],params[:bulletin][:not_checked_reason])
@bulletin.de_pending
if @bulletin.save
if @bulletin.email_sent == true && @bulletin.is_checked == true && !@bulletin.is_rejected
send_email_data(@bulletin)
@bulletin.email_sent = false
@bulletin.save
end
notice = t('announcement.approve_bulletin_success')
else
notice = t('announcement.approve_bulletin_fail')
@@ -71,69 +61,6 @@ class Panel::Announcement::BackEnd::ApprovalsController < OrbitBackendControlle
object_auth.privilege_users = privilege_users
object_auth
end
def send_email_data(bulletin)
@site = Site.first
@user = User.find(bulletin.create_user_id)
@host = request.host_with_port
email_group_data
@group_mail = Array.new
bulletin.email_group.each do |egroup|
if @email_group_data.include?(egroup) and (egroup == '0' or egroup == '1' or egroup == '2' or egroup == '3')
@group_mail << @email_group_data[egroup]["email"]
elsif @email_group_data.include?(egroup) and egroup == '4'
@group_mail << bulletin.other_mailaddress
end
end
if !@group_mail.join.blank?
@mail_content = {
"host" => @host,
"site_title" => @site.title,
"title" => bulletin.title,
"template" => 'announcement_mailer/cron_mail',
"url" => "http://#{@host}#{panel_announcement_front_end_bulletin_path(bulletin, :category_id => bulletin.bulletin_category.id)}"
}
@mail_cron = {
:mail_from_app => 'announcement',
:mail_from => @user.email,
:mail_reply_to => @user.email,
:mail_subject => "#{t("announcement.mail_subject",:site_title => @site.title)}:#{bulletin.title}",
:mail_to => @group_mail.join(','),
:mail_content => @mail_content ,
# :mail_sentdate => bulletin.email_sentdate,
:mail_sentdate => DateTime.now,
:create_user_id => bulletin.create_user_id,
:update_user_id => bulletin.create_user_id
}
@mail_cron = MailCron.new(@mail_cron)
@mail_cron.save
MailCron.send_mail_now(@mail_cron.id)
end
end
def email_group_data
@email_group_data = Bulletin.email_group_data
end
# def get_categorys(id = nil)
# @bulletin_categorys = []
@@ -9,12 +9,12 @@ class Panel::Announcement::BackEnd::BulletinCategorysController < OrbitBackendCo
# @module_app = ModuleApp.where(:title=>'Announcement').first
# end
# =======
before_filter :for_app_manager,:except => [:index,:get_categorys_json,:get_bulletins_json, :get_bulletin_categories]
before_filter :for_app_manager,:except => [:index,:get_categorys_json,:get_bulletins_json]
before_filter :force_order_for_visitor,:only=>[:index,:get_categorys_json,:get_bulletins_json]
before_filter :force_order_for_user,:except => [:index,:get_categorys_json,:get_bulletins_json, :get_bulletin_categories]
before_filter :for_app_sub_manager,:except => [:index,:get_categorys_json,:get_bulletins_json, :get_bulletin_categories]
before_filter :force_order_for_user,:except => [:index,:get_categorys_json,:get_bulletins_json]
before_filter :for_app_sub_manager,:except => [:index,:get_categorys_json,:get_bulletins_json]
def index
@bulletin_categorys = get_categories_for_index("BulletinCategory")
@@ -53,25 +53,6 @@ class Panel::Announcement::BackEnd::BulletinCategorysController < OrbitBackendCo
render :json => JSON.pretty_generate(data)
end
def get_bulletin_categories
I18n.locale = params[:locale] || :zh_tw
@categories = BulletinCategory.all.order_by(:title, :asc)
respond_to do |format|
format.json {
custom_categories = @categories.inject([]) do |data, category|
data << {
title: category.title,
link_html: "#{request.protocol}#{request.host_with_port}#{panel_announcement_front_end_bulletins_path(category_id: category.id, locale: I18n.locale)}",
link_json: "#{request.protocol}#{request.host_with_port}#{get_bulletins_panel_announcement_back_end_bulletins_path(category_id: category.id, locale: I18n.locale, format: 'json')}",
link_rss: "#{request.protocol}#{request.host_with_port}#{get_bulletins_panel_announcement_back_end_bulletins_path(category_id: category.id, locale: I18n.locale, format: 'rss')}"
}
end
render json: JSON.pretty_generate(custom_categories)
}
format.rss {}
end
end
def get_bulletins_json
bulletin = BulletinCategory.find(params[:bulletin_category_id]).bulletins
p bulletin
@@ -1,4 +1,3 @@
# encoding: utf-8
class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
include OrbitControllerLib::DivisionForDisable
@@ -7,8 +6,8 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
# before_filter :for_admin_only,:only => [:]
# before_filter :for_app_manager,:only => [:index,:show,]
before_filter :force_order_for_visitor,:only=>[:index,:show,:get_sorted_and_filtered_bulletins]
before_filter :force_order_for_user,:except => [:index,:show,:get_sorted_and_filtered_bulletins, :get_bulletins]
before_filter :for_app_sub_manager,:except => [:index,:show,:get_sorted_and_filtered_bulletins, :get_bulletins]
before_filter :force_order_for_user,:except => [:index,:show,:get_sorted_and_filtered_bulletins]
before_filter :for_app_sub_manager,:except => [:index,:show,:get_sorted_and_filtered_bulletins]
before_filter :only => [ :new,:create,:edit,:update,:create] do |controller|
controller.get_categorys('BulletinCategory')
@@ -78,9 +77,6 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
# GET /bulletins/new
# GET /bulletins/new.xml
def new
email_group_data
if(session[:in_validate_object].blank?)
@bulletin = Bulletin.new(:postdate => DateTime.now)
else
@@ -98,9 +94,6 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
# GET /bulletins/1/edit
def edit
email_group_data
@bulletin = Bulletin.find(params[:id])
if !current_user.admin? && (@bulletin.is_rejected? || @bulletin.is_checked?)
redirect_to :action => :index
@@ -153,13 +146,6 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
respond_to do |format|
if @bulletin.save
# if @bulletin.email_sent == true && @bulletin.is_checked == true && !@bulletin.is_rejected
# send_email_data(@bulletin)
# @bulletin.email_sent = false
# @bulletin.save
# end
format.html { redirect_to(panel_announcement_back_end_bulletins_url, :notice => t('announcement.create_bulletin_success')) }
format.xml { render :xml => @bulletin, :status => :created, :location => @bulletin }
# format.js
@@ -240,14 +226,6 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
@bulletin.is_rejected = false
@bulletin.de_pending!
end
# if @bulletin.email_sent == true && @bulletin.is_checked == true && !@bulletin.is_rejected
# send_email_data(@bulletin)
# @bulletin.email_sent = false
# @bulletin.save
# end
# if (params[:bulletin][:is_checked] == "false")
# @bulletin.is_rejected = true
# @bulletin.save!
@@ -312,114 +290,9 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
redirect_to panel_announcement_back_end_bulletins_url(:filter => params[:filter], :direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
end
# ================================================================
# language:
# - default: zh_tw
# - specify language: locale=[string]
# category:
# - default: no category
# - specify: category_id=[ID]
# pagination:
# - default: 10
# - specify the number of results: per=[number]
# - specify the page: page=[number]
# ================================================================
def get_bulletins
I18n.locale = params[:locale] || :zh_tw
bulletins = params[:category_id] ? Bulletin.where(bulletin_category_id: params[:category_id]).order_by(:created_at, :desc) : Bulletin.all.order_by(:created_at, :desc)
bulletins = bulletins.reject{|b| b.title_translations[I18n.locale.to_s].blank?}
@bulletins = Kaminari.paginate_array(bulletins).page(params[:page]).per(params[:per] || 10)
respond_to do |format|
format.json {
custom_bulletins = @bulletins.inject([]) do |data, bulletin|
deadline = bulletin.deadline.nil? ? t(:no_deadline) : display_date_time(bulletin.deadline)
image_url = "#{'/' unless bulletin.image.url.start_with?('/')}#{bulletin.image.url}"
data << {
title: bulletin.title,
link: "#{request.protocol}#{request.host_with_port}#{panel_announcement_front_end_bulletin_path(bulletin, category_id: bulletin.bulletin_category.id, locale: I18n.locale)}",
image: "#{request.protocol}#{request.host_with_port}#{image_url}",
category: bulletin.bulletin_category.title,
description: bulletin.subtitle,
postdate: display_date_time(bulletin.postdate),
deadline: deadline,
tag: bulletin.sorted_tags.map{|tag| tag.name}
}
end
render json: JSON.pretty_generate(custom_bulletins)
}
format.rss {
@category = BulletinCategory.find(params[:category_id]) rescue nil
}
end
end
protected
def send_email_data(bulletin)
@site = Site.first
@user = User.find(bulletin.create_user_id)
@host = request.host_with_port
email_group_data
@group_mail = Array.new
bulletin.email_group.each do |egroup|
if @email_group_data.include?(egroup) and (egroup == '0' or egroup == '1' or egroup == '2' or egroup == '3')
@group_mail << @email_group_data[egroup]["email"]
elsif @email_group_data.include?(egroup) and egroup == '4'
@group_mail << bulletin.other_mailaddress
end
end
if !@group_mail.join.blank?
@mail_content = {
"host" => @host,
"site_title" => @site.title,
"title" => bulletin.title,
"template" => 'announcement_mailer/cron_mail',
"url" => "http://#{@host}#{panel_announcement_front_end_bulletin_path(bulletin, :category_id => bulletin.bulletin_category.id)}"
}
@mail_cron = {
:mail_from_app => 'announcement',
:mail_from => @user.email,
:mail_reply_to => @user.email,
:mail_subject => "#{t("announcement.mail_subject",:site_title => @site.title)}:#{bulletin.title}",
:mail_to => @group_mail.join(','),
:mail_content => @mail_content ,
# :mail_sentdate => bulletin.email_sentdate,
:mail_sentdate => DateTime.now,
:create_user_id => bulletin.create_user_id,
:update_user_id => bulletin.create_user_id
}
@mail_cron = MailCron.new(@mail_cron)
@mail_cron.save
MailCron.send_mail_now(@mail_cron.id)
end
end
def email_group_data
@email_group_data = Bulletin.email_group_data
end
def delete_out_invalid_date_from_params
if((params[:bulletin]["deadline(1i)"] && params[:bulletin]["deadline(1i)"].blank?) or (params[:bulletin]["deadline(2i)"] && params[:bulletin]["deadline(2i)"].blank?) or (params[:bulletin]["deadline(3i)"] && params[:bulletin]["deadline(3i)"].blank?))
params[:bulletin].delete("deadline(1i)")
+1 -48
View File
@@ -40,12 +40,7 @@ class Bulletin
field :not_checked_reason
field :public, :type => Boolean, :default => true
field :email_sent, :type => Boolean, :default => false
field :email_sentdate , :type => DateTime
field :email_group, :type => Array
field :other_mailaddress
field :rss_link
scope :can_display, where(is_checked: true, is_rejected: false, is_pending: false)
scope :available_for_lang, ->(locale){ where("available_for_#{locale}".to_sym => true) }
@@ -89,10 +84,6 @@ class Bulletin
def bulletin_category_with_title
self.bulletin_category.title
end
def bulletin_create_dept
User.get_member_list_attribute_value(self.create_user_id,"staff","Unit").get_value_by_locale(I18n.locale)
end
def share_item
Item.first(conditions:{name: 'announcement'})
@@ -225,46 +216,8 @@ class Bulletin
preview_object
end
def get_email_group_data(email_group_data)
group_mail = Array.new
self.email_group.each do |egroup|
if email_group_data.include?(egroup) and (egroup == '0' or egroup == '1' or egroup == '2' or egroup == '3')
group_mail << "#{email_group_data[egroup]["email"]}(#{email_group_data[egroup]["name"]})"
elsif email_group_data.include?(egroup) and egroup == '4'
self.other_mailaddress.split(",").each do |otmail|
group_mail << "#{otmail}(#{email_group_data[egroup]["name"]})"
end
end
end
group_mail.join("<br />").html_safe
end
protected
def self.email_group_data
@email_group_data = {
'0'=> {"name"=>I18n.t('announcement.email_group_data_0'), "email"=>"alluser@tea.ntue.edu.tw"},
'1'=> {"name"=>I18n.t('announcement.email_group_data_1'), "email"=>"allstu@tea.ntue.edu.tw"},
'2'=> {"name"=>I18n.t('announcement.email_group_data_2'), "email"=>"allgrad@tea.ntue.edu.tw"},
'3'=> {"name"=>I18n.t('announcement.email_group_data_3'), "email"=>"allad@tea.ntue.edu.tw"},
'4'=> {"name"=>I18n.t('announcement.email_group_data_4')}
}
end
def check_deadline
if(!self.deadline.nil? and (self.deadline < self.postdate ))
@@ -1,29 +0,0 @@
<% # encoding: utf-8 %>
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
</head>
<body bgcolor="#FFFFFF">
<div style="text-ident:20px">
</div>
<%= t('announcement.mail_hi') %> <br /><br />
<%= t('announcement.mail_url_view') %> <br /><br />
<a href="<%= @data.mail_content["url"] %>" target="_blank"> <%= @data.mail_content["title"] %> </a> <br /><br />
</div>
<span style="color:#555">--<br />
<%= t('announcement.mail_source') %> :<a href="http://<%= @data.mail_content["host"] %>" target="_blank"> <%= @data.mail_content["site_title"] %> </a><br />
<%= t('announcement.mail_time') %> <%= DateTime.now %>
</span>
</body>
</html>
@@ -14,12 +14,6 @@
<%# preview_block_ad_images_helper(bulletin).each do |ad_image| -%>
<%#= image_tag ad_image.file,:alt => (ad_image.title[locale] || " "),:time_to_next => bulletin.transition_msec,:link_open=> ad_image.link_open, :link_url =>((ad_image.out_link || bulletin.context || " ")) %>
<%# end -%>
<% if !@bulletin.email_group.blank? %>
<%= label_tag 'group_mail' %>
<%= @bulletin.get_email_group_data(@email_group_data) %>
<% end %>
</p>
</div>
<div class="modal-footer">
@@ -1,16 +0,0 @@
xml.instruct! :xml, :version => "1.0"
xml.rss :version => "2.0" do
xml.channel do
xml.title t('announcement.announcement') + ' ' + t('announcement.categories')
xml.link "#{request.protocol}#{request.host_with_port}#{get_bulletin_categories_panel_announcement_back_end_bulletin_categorys_path(format: 'rss')}"
@categories.each do |category|
xml.item do
xml.title category.title
xml.pubDate category.created_at.to_s(:rfc822)
xml.link "#{request.protocol}#{request.host_with_port}#{get_bulletins_panel_announcement_back_end_bulletins_path(category_id: category.id, locale: I18n.locale, format: 'rss')}"
xml.guid "#{request.protocol}#{request.host_with_port}#{panel_announcement_front_end_bulletins_path(category_id: category.id)}"
end
end
end
end
@@ -265,50 +265,6 @@
</div>
</div>
<div id="widget" class="widget-box">
<div class="widget-action clear">
<a class="action"><i title="Added to the file" class="icon-exclamation-sign icon-white tip"></i></a>
</div>
<h3 class="widget-title"><i class="icons-bell"></i><%= t('announcement.email_eminder')%></h3>
<div class="widget-content">
<div class="controls">
<label class="checkbox inline"><input id="remind-check" type="checkbox" value="1" name="bulletin[email_sent]"><%= t('announcement.activate_email_eminder')%></label>
<div id="content-box">
<hr />
<%#= f.datetime_picker :email_sentdate, :picker_type => 'separated', :label => t("announcement.email_sentdate") %>
<br />
<%= f.label :email_group ,t("announcement.email_group")%>
<div class="form-inline">
<ul class="nav nav-pills">
<% @email_group_data.collect do |k,v| %>
<li class="pull-left">
<%= check_box_tag 'bulletin[email_group][]', k, (@bulletin.email_group.nil? ? false : @bulletin.email_group.include?(k)), :id => "field-#{k}" %>
<label for="field-<%= k %>"><%= v["name"] %></label>
<%= hidden_field_tag 'bulletin[email_group][]', '' %>
</li>
<% end %>
</ul>
</div>
<%= f.label :other_mailaddress ,"#{t("announcement.other_mailaddress")}(#{t("announcement.other_mailaddress_note")})"%>
<%= f.text_area :other_mailaddress, :class=>"span12", :cols=>"25", :rows=>"10" %>
</div>
</div>
</div>
</div>
</div>
</div>
@@ -344,11 +300,6 @@
$(this).parents('table').append(("<%= escape_javascript(add_attribute 'form_bulletin_file', f, :bulletin_files) %>").replace(old_id, new_id));
});
$('.for_preview').popover({ html : true });
$('#remind-check').prop('checked') ? '':$('#content-box').addClass('hide')
$('#remind-check').on('change', function() {
$(this).prop('checked') ? $('#content-box').removeClass('hide'):$('#content-box').addClass('hide')
})
});
</script>
<% end %>
@@ -1,21 +0,0 @@
xml.instruct! :xml, :version => "1.0"
xml.rss :version => "2.0" do
xml.channel do
if @category
xml.title @category.title
else
xml.title t('announcement.announcement')
end
xml.link "#{request.protocol}#{request.host_with_port}#{get_bulletins_panel_announcement_back_end_bulletins_path(bulletin_category_id: @category.try(:id), format: 'rss')}"
@bulletins.each do |bulletin|
xml.item do
xml.title bulletin.title
xml.pubDate bulletin.postdate.to_s(:rfc822)
xml.description bulletin.subtitle
xml.link "#{request.protocol}#{request.host_with_port}#{panel_announcement_front_end_bulletin_path(bulletin, category_id: bulletin.bulletin_category.id, locale: I18n.locale)}"
xml.guid "#{request.protocol}#{request.host_with_port}#{panel_announcement_front_end_bulletin_path(bulletin)}"
end
end
end
end
@@ -4,8 +4,8 @@
<div class="info1">
<span class="pull-right"><%= dislpay_view_count(@bulletin) %></span>
<span class="date"><%= display_date_time(@bulletin.postdate) %></span>
<% unit = User.get_member_list_attribute_value(@bulletin.create_user_id,"staff","Unit").get_value_by_locale(I18n.locale) rescue nil %>
<span><%= t('announcement.default_widget.bulletin_create_dept') + ": " + unit unless unit.blank? %></span>
<% unit = @bulletin.cache_dept[I18n.locale.to_s] rescue nil %>
<span><%= link_to unit,panel_announcement_front_end_index_bulletins_by_unit_path(:name=>unit) unless unit.blank? %></span>
</div>
</div>
<div class="news_image">
@@ -36,6 +36,11 @@
</div>
</div>
<% end %>
<% unless @bulletin.rss_link.blank? %>
<div>
<%= link_to t('ntu.rss_origin'), @bulletin.rss_link %>
</div>
<% end %>
</div>
<%= share_links(@bulletin, 'announcement') %>
+1 -19
View File
@@ -17,7 +17,6 @@ en:
postdate: Post Date
title: Title
subtitle: SubTitle
bulletin_create_dept: Unit
editing_announcement: Edit Announcement
editing_announcement_category: Edit Category
error:
@@ -38,21 +37,4 @@ en:
widget:
bulletins_and_web_links: Differential Nav.
index: Index
search: Search
email_eminder: Email Reminder
activate_email_eminder: Activate Email Reminder
email_sentdate: Email Time
email_group: Email Group
email_group_data_0: All Faculty
email_group_data_1: Undergraduates
email_group_data_2: Postgraduates
email_group_data_3: Continuing Ed. Postgraduates
email_group_data_4: Other
mail_subject: this is an announcement reminder from【%{site_title}】
other_mailaddress: Other Email
other_mailaddress_note: Divide different email accounts with ","
mail_hi: Hi
mail_url_view: This email is the reminder of an announcement, please click the link for the details
mail_source: Source
mail_time: Time
search: Search
@@ -17,7 +17,6 @@ zh_tw:
postdate: 張貼日期
title: 標題
subtitle: 副標題
bulletin_create_dept: 單位
editing_announcement: 編輯類別
editing_announcement_category: 編輯類別
error:
@@ -38,22 +37,4 @@ zh_tw:
widget:
bulletins_and_web_links: 分眾頁籤
index: 索引
search: 搜尋
email_eminder: 寄送提醒
activate_email_eminder: 開啟寄送提醒
email_sentdate: 寄送時間
email_group: 寄送群組
other_mailaddress: 其他Mail
other_mailaddress_note: 輸入多組mail時,請用","逗號隔開
email_group_data_0: 全校教職員
email_group_data_1: 大學部學生
email_group_data_2: 日間部研究生
email_group_data_3: 進修部研究生
email_group_data_4: 其他
mail_subject: 來自【%{site_title}】的公告事件提醒
mail_hi: 您好
mail_url_view: 此封信件為公告事件提醒,請點選以下連結詳細觀看
mail_source: 來源
mail_time: 時間
search: 搜尋
-2
View File
@@ -17,7 +17,6 @@ Rails.application.routes.draw do
get 'load_quick_edit'
end
collection do
get "get_bulletins"
post "preview"
put "preview"
get 'delete'
@@ -28,7 +27,6 @@ Rails.application.routes.draw do
resources :bulletin_categorys do
collection do
get "get_bulletin_categories"
get 'get_categorys_json'
end
# if want to use json
+2 -3
View File
@@ -30,14 +30,13 @@ module Announcement
widgets do
default_widget do
sorting 'desc(:postdate)'
query 'Bulletin.can_display.available_for_lang(I18n.locale).any_of( {deadline: nil,:postdate.lte => Time.now} , {:deadline.gte => Time.now,:postdate.lte => Time.now} )'
query 'Bulletin.available_for_lang(I18n.locale).any_of( {deadline: nil,:postdate.lte => Time.now} , {:deadline.gte => Time.now,:postdate.lte => Time.now} )'
enable ["typeA","typeB_style3","typeC"]
image :image
field :postdate
link_field :title,{:method => 'panel_announcement_front_end_bulletin_path',:args=>:self,:preview=>true}
link_field :bulletin_category_with_title,{:method => 'panel_announcement_front_end_bulletins_path',:args=>{:category_id => [:bulletin_category,:id]}}
link_field :subtitle,{:method => 'panel_announcement_front_end_bulletin_path',:args=>:self,:preview=>true}
field :bulletin_create_dept
field :subtitle
link_to_more 'panel_announcement_front_end_bulletins_path',:title_i18n=> 'more_plus'
end
@@ -1,7 +0,0 @@
.bundle/
log/*.log
pkg/
test/dummy/db/*.sqlite3
test/dummy/log/*.log
test/dummy/tmp/
test/dummy/.sass-cache
-17
View File
@@ -1,17 +0,0 @@
source "http://rubygems.org"
# Declare your gem's dependencies in er_email.gemspec.
# Bundler will treat runtime dependencies like base dependencies, and
# development dependencies will be added by default to the :development group.
gemspec
# jquery-rails is used by the dummy application
gem "jquery-rails"
# Declare any dependencies that are still in development here instead of in
# your gemspec. These might include edge Rails or gems from your path or
# Git. Remember to move these dependencies to your gemspec before releasing
# your gem to rubygems.org.
# To use debugger
# gem 'debugger'
-20
View File
@@ -1,20 +0,0 @@
Copyright 2013 YOURNAME
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-3
View File
@@ -1,3 +0,0 @@
= ErEmail
This project rocks and uses MIT-LICENSE.
-40
View File
@@ -1,40 +0,0 @@
#!/usr/bin/env rake
begin
require 'bundler/setup'
rescue LoadError
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
end
begin
require 'rdoc/task'
rescue LoadError
require 'rdoc/rdoc'
require 'rake/rdoctask'
RDoc::Task = Rake::RDocTask
end
RDoc::Task.new(:rdoc) do |rdoc|
rdoc.rdoc_dir = 'rdoc'
rdoc.title = 'ErEmail'
rdoc.options << '--line-numbers'
rdoc.rdoc_files.include('README.rdoc')
rdoc.rdoc_files.include('lib/**/*.rb')
end
APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
load 'rails/tasks/engine.rake'
Bundler::GemHelper.install_tasks
require 'rake/testtask'
Rake::TestTask.new(:test) do |t|
t.libs << 'lib'
t.libs << 'test'
t.pattern = 'test/**/*_test.rb'
t.verbose = false
end
task :default => :test
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
@@ -1,23 +0,0 @@
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :set_locale
# Set I18n.locale
def set_locale
# update session if passed
session[:locale] = params[:locale] if params[:locale]
# set locale based on session or default
begin
# check if locale is valid for non site pages
if !VALID_LOCALES.include?(session[:locale])
I18n.locale = I18n.default_locale
else
I18n.locale = session[:locale]
end
rescue
I18n.locale = I18n.default_locale
end
end
end
@@ -1,145 +0,0 @@
class Panel::ErEmail::BackEnd::ApprovalsController < OrbitBackendController
before_filter :authenticate_user!
before_filter :is_admin?
include AdminHelper
# layout 'admin'
def preview_and_approve
email_group_data
@email_er = EmailEr.find params[:email_er_id]
end
def approve
notice = ""
@email_er = EmailEr.find params[:email_er_id]
@email_er.proc_check(params[:email_er][:is_checked],params[:email_er][:not_checked_reason])
@email_er.de_pending
if @email_er.save
if @email_er.is_checked == true and !@email_er.is_rejected
send_email_data(@email_er)
end
notice = t('er_email.approve_email_er_success')
else
notice = t('er_email.approve_email_er_fail')
end
redirect_to(panel_er_email_back_end_email_ers_url,:notice => notice)
end
def setting
@sys_users = User.all(conditions: {admin: false}).includes(:avatar).not_guest_user
@email_er_categorys = EmailErCategory.all
@options_from_collection_for_select_email_er_categorys = @email_er_categorys.collect{|bc| [bc.title,bc.id] }
if params.has_key? :category
@email_er_category = EmailErCategory.find params[:category][:id]
else
@email_er_category = @email_er_categorys.first
end
preload_object_auth = @email_er_category.get_object_auth_by_title('fact_check')
@users_array = preload_object_auth.privilege_users rescue []
respond_to do |format|
format.html
format.js
end
end
def update_setting
object_auth = update_setting_by_params
if object_auth.save!
flash[:notice] = t('update.success_')
else
flash[:notice] = t('update.fail')
end
end
def user_list
@email_er_category = EmailErCategory.find params[:category][:id]
end
protected
def update_setting_by_params
category = EmailErCategory.find params[:category][:id]
privilege_users = params[:users].collect{|key,value| User.find key } rescue []
object_auth_ary = category.object_auths.where(title: 'fact_check') || (category.object_auths.create :title=> 'fact_check')
object_auth = object_auth_ary.first
object_auth.privilege_users = privilege_users
object_auth
end
def send_email_data(email_er)
@user = User.find(email_er.create_user_id)
email_group_data
@group_mail = Array.new
email_er.email_group.each do |egroup|
if @email_group_data.include?(egroup) and (egroup == '0' or egroup == '1' or egroup == '2' or egroup == '3')
@group_mail << @email_group_data[egroup]["email"]
elsif @email_group_data.include?(egroup) and egroup == '4'
@group_mail << email_er.other_mailaddress
end
end
if !@group_mail.join.blank?
@mail_content = {
"text" => email_er.mail_content
}
@mail_cron = {
:mail_from_app => 'er_email',
:mail_from => @user.email,
:mail_reply_to => @user.email,
:mail_subject => email_er.mail_subject,
:mail_to => @group_mail.join(','),
:mail_content => @mail_content ,
# :mail_sentdate => email_er.mail_sentdate,
:mail_sentdate => DateTime.now,
:create_user_id => email_er.create_user_id,
:update_user_id => email_er.create_user_id
}
@mail_cron = MailCron.new(@mail_cron)
email_er.email_er_files.each do | mrfile |
@mcfile = @mail_cron.mail_cron_files.build
tmp_file = File.new(mrfile.file_identifier, 'w+')
tmp_file.write(Mongo::GridFileSystem.new(Mongoid.database).open(mrfile.file.url.gsub("/gridfs/", ""), 'r').read.force_encoding("UTF-8"))
@mcfile.file = tmp_file
@mcfile.title = mrfile.title
# delete file
FileUtils.rm_f(tmp_file)
end
@mail_cron.save
MailCron.send_mail_now(@mail_cron.id)
end
end
def email_group_data
@email_group_data = EmailEr.email_group_data
end
end
@@ -1,128 +0,0 @@
class Panel::ErEmail::BackEnd::EmailErCategorysController < OrbitBackendController
include OrbitControllerLib::DivisionForDisable
before_filter :for_app_manager,:except => [:index,:get_categorys_json]
before_filter :force_order_for_visitor,:only=>[:index,:get_categorys_json]
before_filter :force_order_for_user,:except => [:index,:get_categorys_json]
before_filter :for_app_sub_manager,:except => [:index,:get_categorys_json]
def index
@email_er_categorys = get_categories_for_index("EmailErCategory")
@email_er_category = EmailErCategory.new(:display => 'List')
@url = panel_er_email_back_end_email_er_categorys_path
respond_to do |format|
format.html # index.html.erb
format.js
end
end
def get_categorys_json
categorys = EmailErCategory.all
data = Array.new
categorys.each do |c|
data << {
category: c.title,
link: "#{url_for( :action => "index",
:controller => "panel/er_email/back_end/email_ers",
:format => :rss,
:only_path => false,
:inner=>true,
:category_id => c )}"
}
end
render :json => JSON.pretty_generate(data)
end
# GET /email_ers/1
# GET /email_ers/1.xml
def show
@email_er_category = EmailErCategory.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.js
end
end
# GET /email_ers/new
# GET /email_ers/new.xml
def new
@email_er_category = EmailErCategory.new(:display => 'List')
respond_to do |format|
format.html # new.html.erb
format.js
end
end
# GET /email_ers/1/edit
def edit
@email_er_category = EmailErCategory.find(params[:id])
@url = panel_er_email_back_end_email_er_category_path(@email_er_category)
respond_to do |format|
format.html
format.js
end
end
# POST /email_ers
# POST /email_ers.xml
def create
@email_er_category = EmailErCategory.new(params[:email_er_category])
respond_to do |format|
if @email_er_category.save
format.html { redirect_to(panel_er_email_back_end_email_er_categorys_url, :notice => t('email_er_category.create_email_er_category_success')) }
format.js
else
format.html { render :action => "new" }
format.js { render action: "new" }
end
end
end
# PUT /email_ers/1
# PUT /email_ers/1.xml
def update
@email_er_category = EmailErCategory.find(params[:id])
@url = panel_er_email_back_end_email_er_category_path(@email_er_category)
respond_to do |format|
if @email_er_category.update_attributes(params[:email_er_category])
format.html { redirect_to(panel_er_email_back_end_email_er_categorys_url, :notice => t('email_er_category.update_email_er_category_success')) }
# format.xml { head :ok }
format.js
else
format.html { render :action => "edit" }
format.js { render :action => "edit" }
end
end
end
# DELETE /email_ers/1
# DELETE /email_ers/1.xml
def destroy
@email_er_category = EmailErCategory.find(params[:id])
@email_er_category.disable = @email_er_category.disable ? false : true
if @email_er_category.save!
respond_to do |format|
flash[:notice] = t("update.success_")
# flash[:error] += @email_er_category.disable ? t(:enable) : t(disable)
format.html { redirect_to(panel_er_email_back_end_email_er_categorys_url) }
# format.xml { head :ok }
format.js
end
else
flash[:error] = t("update.fail")
format.html { render :action => "index" }
end
end
end
@@ -1,318 +0,0 @@
class Panel::ErEmail::BackEnd::EmailErsController < OrbitBackendController
# before_filter :for_app_manager,:except => [:index,:show]
include OrbitControllerLib::DivisionForDisable
before_filter :force_order_for_user
before_filter :only => [ :new,:edit,:update,:create] do |controller|
controller.get_categorys('EmailErCategory')
end
def preview
email_er = EmailEr.new params
@preview_obj = email_er.to_preview
@preview_obj.save
render '/shared/preview/preview.html.erb',:layout=>false
end
def index
get_categorys("EmailErCategory",params[:email_er_category_id])
email_group_data
@filter = params[:filter]
new_filter = params[:new_filter]
if @filter && params[:clear]
@filter.delete(params[:type])
elsif @filter && new_filter
if @filter.has_key?(new_filter[:type]) && @filter[new_filter[:type]].include?(new_filter[:id].to_s)
@filter[new_filter[:type]].delete(new_filter[:id].to_s)
elsif @filter.has_key?(new_filter[:type])
@filter[new_filter[:type]] << new_filter[:id].to_s
else
@filter.merge!({new_filter[:type] => [new_filter[:id].to_s]})
end
elsif new_filter
@filter = {new_filter[:type] => [new_filter[:id].to_s]}
end
@email_er_categories = get_categories_for_index("EmailErCategory")
@email_er_category_ids = @email_er_categories.collect{|t| t.id.to_s} + [nil]
@email_ers = (params[:sort] || @filter) ? get_sorted_and_filtered("email_er",:email_er_category_id.in => @email_er_category_ids) : get_viewable("email_er",:email_er_category_id.in => @email_er_category_ids)
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @email_ers }
format.js
end
end
# GET /email_ers/1
# GET /email_ers/1.xml
def show
email_group_data
@item = Page.find(params[:page_id]) rescue nil
if params[:preview] == "true"
preview_content
else
@email_er = EmailEr.all.can_display.where(_id: params[:id]).first
if @email_er and !@email_er.disable? and !@email_er.is_rejected
if @email_er.enabled_for_lang(I18n.locale.to_s)
delayed_impressionist(@email_er)
# get_categorys
else
render :text => "<div class='alert alert-error'>#{t('sys.can_not_display_due_to_no_context')}</div>".html_safe
end
else
render :nothing => true, :status => 403
end
end
end
def preview_content
@email_er = EmailEr.find params[:id] rescue nil
@email_er = Preview.find(params[:id]).get_virtual_object if @email_er.nil?
# get_categorys
end
# GET /email_ers/new
# GET /email_ers/new.xml
def new
email_group_data
@email_er = EmailEr.new(:mail_sentdate => DateTime.now)
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @email_er }
end
end
# GET /email_ers/1/edit
def edit
email_group_data
@email_er = EmailEr.find(params[:id])
end
# POST /email_ers
# POST /email_ers.xml
def create
email_group_data
@email_er = EmailEr.new(params[:email_er])
@email_er.create_user_id = current_user.id
@email_er.update_user_id = current_user.id
if(is_manager? || is_admin?)
@email_er.is_checked = true
@email_er.is_rejected = false
@email_er.de_pending
end
respond_to do |format|
if @email_er.save
if @email_er.is_checked == true and !@email_er.is_rejected
send_email_data(@email_er)
end
format.html { redirect_to(panel_er_email_back_end_email_ers_url) }
format.xml { render :xml => @email_er, :status => :created, :location => @email_er }
# format.js
format.js {
@info = {"success"=>"true","redirect_url"=>panel_er_email_back_end_email_ers_url}
flash[:notice] = t('er_email.create_er_email_success')
render "/shared/preview/after_create.js.erb"
}
else
format.html { render :action => "new" }
format.xml { render :xml => @email_er.errors, :status => :unprocessable_entity }
format.js {
@info = {"success"=>"false","redirect_url"=>new_panel_er_email_back_end_email_er_url(:email_er => @email_er)}
session[:in_validate_object] = @email_er
render "/shared/preview/after_create.js.erb"
}
end
end
end
# PUT /email_ers/1
# PUT /email_ers/1.xml
def update
email_group_data
@email_er = EmailEr.find(params[:id])
@email_er.update_user_id = current_user.id
respond_to do |format|
if @email_er.update_attributes(params[:email_er])
if(is_manager? || is_admin?)
@email_er.is_checked = true
@email_er.is_rejected = false
@email_er.de_pending!
end
if @email_er.is_checked == true and !@email_er.is_rejected
send_email_data(@email_er)
end
format.html { redirect_to(panel_er_email_back_end_email_ers_url(:page => params[:page])) }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @email_er.errors, :status => :unprocessable_entity }
end
end
end
# DELETE /email_ers/1
# DELETE /email_ers/1.xml
def destroy
@email_er = EmailEr.find(params[:id])
@email_er.destroy
respond_to do |format|
format.html { redirect_to(panel_er_email_back_end_email_ers_url) }
# format.xml { head :ok }
format.js
end
end
def delete
if params[:ids]
# email_ers = EmailEr.any_in(:_id => params[:ids]).destroy_all
end
redirect_to panel_er_email_back_end_email_ers_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
end
def email_resend
if params[:id]
@email_er = EmailEr.find(params[:id])
@email_er.is_checked = false
@email_er.is_pending = true
@email_er.save
end
redirect_to panel_er_email_back_end_email_ers_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
end
def test_send_email
if params[:id]
@email_er = EmailEr.find(params[:id])
if (@email_er.create_user_id == current_or_guest_user.id) || is_manager?
if current_or_guest_user.admin? || (!@email_er.is_rejected? && !@email_er.is_checked?)
if @email_er.is_pending
send_email_data( @email_er , true )
end
end
end
end
redirect_to panel_er_email_back_end_email_ers_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
end
protected
def send_email_data(email_er , test_send = false)
@user = User.find(email_er.create_user_id)
if !test_send
email_group_data
@group_mail = Array.new
email_er.email_group.each do |egroup|
if @email_group_data.include?(egroup) and (egroup == '0' or egroup == '1' or egroup == '2' or egroup == '3')
@group_mail << @email_group_data[egroup]["email"]
elsif @email_group_data.include?(egroup) and egroup == '4'
@group_mail << email_er.other_mailaddress
end
end
else
# @group_mail = ["spen@rulingcom.com"]
@group_mail = [@user.email]
end
if !@group_mail.join.blank?
@mail_content = {
"text" => email_er.mail_content
}
@mail_cron = {
:mail_from_app => 'er_email',
:mail_from => @user.email,
:mail_reply_to => @user.email,
:mail_subject => email_er.mail_subject,
:mail_to => @group_mail.join(','),
:mail_content => @mail_content ,
# :mail_sentdate => email_er.mail_sentdate,
:mail_sentdate => DateTime.now,
:create_user_id => email_er.create_user_id,
:update_user_id => email_er.create_user_id
}
@mail_cron = MailCron.new(@mail_cron)
email_er.email_er_files.each do | mrfile |
@mcfile = @mail_cron.mail_cron_files.build
tmp_file = File.new(mrfile.file_identifier, 'w+')
tmp_file.write(Mongo::GridFileSystem.new(Mongoid.database).open(mrfile.file.url.gsub("/gridfs/", ""), 'r').read.force_encoding("UTF-8"))
@mcfile.file = tmp_file
@mcfile.title = mrfile.title
# delete file
FileUtils.rm_f(tmp_file)
end
@mail_cron.save
MailCron.send_mail_now(@mail_cron.id)
end
end
def email_group_data
@email_group_data = EmailEr.email_group_data
end
end
Whitespace-only changes.
@@ -1,16 +0,0 @@
module Panel::ErEmail::BackEnd::EmailErCategorysHelper
include ActionView::Helpers::UrlHelper
def show_anc_cate_permission_link(email_er_category)
type = 'submit'
oa = email_er_category.get_object_auth_by_title(type)
if oa.nil?
email_er_category.object_auths.new(title: type ).save
oa = email_er_category.get_object_auth_by_title(type)
end
# link_to t(:category_auth), edit_admin_object_auth_path(oa)
link_to t(:category_auth),admin_object_auth_ob_auth_path(oa)
end
end
@@ -1,58 +0,0 @@
module Panel::ErEmail::BackEnd::EmailErsHelper
def show_reject_reason(email_er)
by_email_er = email_er.is_rejected
by_user = (((email_er.create_user_id == current_user.id) rescue nil) or is_manager? or is_admin?)
by_email_er && by_user
end
def show_form_status_field(email_er)
#by_email_er = (!email_er.is_expired? and email_er.is_pending?)
by_user = ((email_er.email_er_category.authed_users('fact_check').include?(current_user) rescue nil) or is_manager? or is_admin?)
by_user
end
def show_approval_link(email_er)
by_email_er = (email_er.is_pending?)
by_user = ((email_er.email_er_category.authed_users('fact_check').include?(current_user) rescue nil) or is_manager? or is_admin?)
by_email_er and by_user
end
def show_delete_link(email_er)
if !current_user.nil?
by_email_er = (email_er.create_user_id == current_user.id )
by_user = (is_manager? or is_admin?)
by_email_er or by_user
else
false
end
end
def show_email_er_title_at_index (email_er)
if email_er.is_checked?
link_to email_er.title, panel_er_email_front_end_email_er_path(email_er, :category_id => email_er.email_er_category.id) rescue ''
else
email_er.title
end
end
def file_picture_preview_setting(file_path)
ext = File.extname(file_path)[1..-1].downcase
unless file_path.nil?
case ext
when "jpg","jpeg","png","gif"
{"data-content" => "#{image_tag file_path}" }
when "pdf", "zip", "rar"
{"data-content" => "#{image_tag("http://#{request.host_with_port}/assets/ft-icons/#{ext}/#{ext}-64_32.png")}"}
when "doc", "docx"
{"data-content" => "#{image_tag("http://#{request.host_with_port}/assets/ft-icons/docx_mac/docx_mac-64_32.png")}"}
when "xls", "xlsx"
{"data-content" => "#{image_tag("http://#{request.host_with_port}/assets/ft-icons/xlsx_mac/xlsx_mac-64_32.png")}"}
when "ppt", "pptx"
{"data-content" => "#{image_tag("http://#{request.host_with_port}/assets/ft-icons/pptx_mac/pptx_mac-64_32.png")}"}
else
{"data-content" => t("sys.not_previewable") }
end
end
end
end
Whitespace-only changes.
Whitespace-only changes.
-124
View File
@@ -1,124 +0,0 @@
# encoding: utf-8
class EmailEr
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::MultiParameterAttributes
include OrbitCoreLib::Preview
BelongsToCategory = :email_er_category
include OrbitCoreLib::BelongsToCategoryMayDisable
PAYMENT_TYPES = @site_valid_locales
field :mail_subject
field :mail_sentdate , :type => DateTime
field :mail_content
field :create_user_id
field :update_user_id
field :is_checked, :type => Boolean, :default => false
field :is_pending, :type => Boolean, :default => true
field :is_rejected, :type => Boolean, :default => false
field :not_checked_reason
field :email_group, :type => Array
field :other_mailaddress
scope :can_display,where(is_hidden: false)
has_many :email_er_files, :autosave => true, :dependent => :destroy
accepts_nested_attributes_for :email_er_files, :allow_destroy => true
validates :mail_subject,presence:{message:'blank is not allowed'}
validates :other_mailaddress,
:length => {:maximum => 1000, :message => I18n.t("er_email.other_mailaddress_note_limit")}
def proc_check(check,not_pass_info = "")
self.is_checked = true
if check =="true"
self.is_rejected = false
elsif check == "false"
self.is_rejected = true
self.not_checked_reason = not_pass_info
end
end
def de_pending
self.is_pending = false
end
def de_pending!
de_pending
self.save!
end
def is_checked?
!self.is_pending && self.is_checked && (self.is_rejected == false)
end
def is_pending?
self.is_pending
end
def is_rejected?
!self.is_pending && self.is_rejected && (self.is_rejected == true)
end
def get_email_group_data(email_group_data)
group_mail = Array.new
self.email_group.each do |egroup|
if email_group_data.include?(egroup) and (egroup == '0' or egroup == '1' or egroup == '2' or egroup == '3')
#group_mail << "#{email_group_data[egroup]["email"]}(#{email_group_data[egroup]["name"]})"
group_mail << "#{email_group_data[egroup]["name"]}"
elsif email_group_data.include?(egroup) and egroup == '4'
self.other_mailaddress.split(",").each do |otmail|
group_mail << "#{otmail}(#{email_group_data[egroup]["name"]})"
end
end
end
group_mail.join("<br />").html_safe
end
def to_preview
preview_object = Preview.new(:expired_at=>DateTime.now+30.minutes,:preview_at_link=>"panel_er_email_back_end_email_er_path",:object_class_type=>"EmailEr")
self.email_er["email_er_files_attributes"].each_with_index do |atr,idx|
preview_object.preview_files.build(:file=>self.email_er["email_er_files_attributes"][idx.to_s],:field_name_for_rebuild=>'email_er_files',:file_in_array=>true)
end unless self.email_er["email_er_files_attributes"].nil?
preview_object.object = self.email_er.except("email_er_files_attributes")
preview_object
end
protected
def self.email_group_data
@email_group_data = {
'0'=> {"name"=>I18n.t('er_email.email_group_data_0'), "email"=>"alluser@tea.ntue.edu.tw"},
'1'=> {"name"=>I18n.t('er_email.email_group_data_1'), "email"=>"allstu@tea.ntue.edu.tw"},
'2'=> {"name"=>I18n.t('er_email.email_group_data_2'), "email"=>"allgrad@tea.ntue.edu.tw"},
'3'=> {"name"=>I18n.t('er_email.email_group_data_3'), "email"=>"allad@tea.ntue.edu.tw"},
'4'=> {"name"=>I18n.t('er_email.email_group_data_4')}
}
end
end
@@ -1,47 +0,0 @@
# encoding: utf-8
class EmailErCategory
include Mongoid::Document
include Mongoid::Timestamps
include OrbitCoreLib::ObjectAuthable
include OrbitCoreLib::ObjectDisable
include Sunspot::Mongo
# include Mongoid::MultiParameterAttributes
APP_NAME = 'ErEmail'
ObjectAuthTitlesOptions = %W{submit_new fact_check}
AfterObjectAuthUrl = '/panel/er_email/back_end/email_er_categorys'
field :disable, type: Boolean, :default => false
field :display
field :key
field :title, localize: true
has_many :email_ers
validates :title, :at_least_one => true
searchable do
text :titles do
title_translations.to_a.collect{|t| t[1]}
end
boolean :frontend_search do
!disable
end
text :files do
email_ers.can_display.collect{|t| t.title_translations.to_a.collect{|t| t[1]}}
end
end
def pp_object
title
end
def self.from_id(id)
EmailErCategory.find(id) rescue nil
end
end
@@ -1,23 +0,0 @@
class EmailErFile
include Mongoid::Document
include Mongoid::Timestamps
mount_uploader :file, AssetUploader
field :should_destroy, :type => Boolean
field :title
belongs_to :email_er
validate :file_size
private
def file_size
if file.file.size > 10.megabytes
errors.add( :file, I18n.t("er_email.email_file_limit"))
end
end
end
Whitespace-only changes.
@@ -1,76 +0,0 @@
<% if email_er -%>
<div class="modal hide fade in banner-preview" id="email_er-<%=email_er.id%>">
<div class="modal-header">
<a class="close" data-dismiss="modal">×</a>
<h3><%= t(:preview) %></h3>
</div>
<div class="modal-body">
<p class="email_er_slideshow">
<iframe src=<%= panel_er_email_back_end_email_er_path(email_er, :category_id => email_er.email_er_category.id ,:preview=>true) %> style="width:1024px;height:300px" >
</iframe>
<% if @email_er.email_er_files.size > 0 %>
<%= label_tag t('file_')%>
<% @email_er.email_er_files.each do | efile | %>
<%= link_to (!efile.title.blank? ? efile.title : t('download')), efile.file.url, {:target => '_blank', :title => efile.title} if efile.file.file %>
<% end %>
<br />
<% end %>
<% if !@email_er.email_group.blank? %>
<%= label_tag 'group_mail' %>
<%= @email_er.get_email_group_data(@email_group_data) %>
<% end %>
</p>
</div>
<div class="modal-footer">
<%= form_for email_er, :url => panel_er_email_back_end_email_er_approve_path(email_er),:method => :post, :html => {:class => 'clear'} do |f| %>
<%= f.label :approval_stat, t('approval.stat') %>
<%= content_tag :label,:class => "radio inline" do -%>
<%= f.radio_button :is_checked, true , {:class => 'privacy'} %>
<%= t('approval.pass') %>
<% end -%>
<%= content_tag :label,:class => "radio inline" do -%>
<%= f.radio_button :is_checked, false, (!@email_er.is_checked ? {:checked => true, :class => 'privacy'} : {})%>
<%= t('approval.not_pass') %>
<% end -%>
<%= label :is_checked_false, t('approval.not_pass_reason') %>
<%= f.text_field :not_checked_reason %>
<%= f.submit t(:submit_approval),:class=>"btn"%>
<% end %>
<a href="#" class="btn" data-dismiss="modal"><%= t(:close) %></a>
</div>
<div>
<script type="text/javascript" src="/static/kernel.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$(".modal").on("hidden", function () {
$("#show_preview").remove();
});
$("iframe").load(function(){
// Get the body element
var frameBody = $("iframe").contents().find("body");
// Get all links inside the BODY tag
$('a', frameBody).click(function(e){
//Disable all default actions
e.preventDefault();
});
$('input', frameBody).attr("disabled", true);
});
});
</script>
</div>
</div>
<% end -%>
@@ -1,44 +0,0 @@
<% if email_er_category -%>
<div class="modal hide fade in" id="email_er_category-<%=email_er_category.id%>">
<div class="modal-header">
<a class="close" data-dismiss="modal">×</a>
<h3><%= t("approval.user_list") %></h3>
</div>
<div class="modal-body">
<div class="clear">
<% email_er_category.get_object_auth_by_title('fact_check').auth_users.each do |user| %>
<div class="checkbox clear checked">
<div class='member-avatar'>
<% if user.avatar? %>
<%= image_tag(user.avatar.thumb.url,:class => "member-img") %>
<% else %>
<%= image_tag "person.png",:class => "member-img" %>
<% end %>
</div>
<%= label_tag "lab-user-#{user.id}", (user.name rescue ''),:class=>"member-name",:id=>nil -%>
</div>
<% end -%>
<divl>
</div>
<div class="modal-footer">
<a href="#" class="btn" data-dismiss="modal"><%= t(:close) %></a>
</div>
<div>
<script type="text/javascript" src="/static/kernel.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#email_er_category-<%=email_er_category.id%>").on("show", function () {
});
$(".modal").on("hidden", function () {
$("#show_preview").remove();
});
});
</script>
</div>
</div>
<% end -%>
@@ -1,5 +0,0 @@
$('#show_preview').html("<%= escape_javascript(render(:partial => 'modal_approve',:locals => {:email_er => @email_er})) %>");
var start_modal_with_id = "email_er-<%=@email_er.id%>";
$("#"+start_modal_with_id).css("width","1050px");
$("#"+start_modal_with_id).css("height","768px");
$("#"+start_modal_with_id).css("margin","-270px 0 0 -550px");
@@ -1,53 +0,0 @@
<% content_for :page_specific_css do %>
<%= stylesheet_link_tag "inc/permission-checkbox" %>
<% end %>
<% content_for :page_specific_javascript do %>
<%= javascript_include_tag "inc/permission-checkbox" %>
<%= javascript_include_tag "inc/search" %>
<%= javascript_include_tag "inc/modal-preview" %>
<% end %>
<%= form_tag('', :remote => true,:class => "prevent_enter_submit_form") %>
<div class="subnav clear">
<ul class="nav nav-pills filter pull-left">
<li class="accordion-group">
<div class="form-search" style="margin: 5px 10px;">
<%= label_tag :category, t(:category) %>
<%= select "category",'id',@options_from_collection_for_select_email_er_categorys %>
<%= search_field_tag 'user_filter' %>
</div>
</li>
</ul>
<%= link_to t("approval.user_list"), panel_er_email_back_end_approval_user_list_path , :class=>'preview_trigger btn btn-success pull-right'%>
</div>
<%#= label_tag :role, t(:roles) %>
<div class="clear">
<%= content_tag :div do -%>
<% form_tag panel_er_email_back_end_approval_setting_path do %>
<%= render :partial => "layouts/users_checkbox_ary" %>
<div class="form-actions form-fixed pagination-right">
<%= submit_tag t(:update_), :class => 'btn btn-primary' %>
</div>
<% end -%>
<% end -%>
</div>
<script type="text/javascript" charset="utf-8">
var availableTags = [];
$(document).ready(function() {
$(".prevent_enter_submit_form").bind("keypress", function(e) {
if (e.keyCode == 13) {
return false;
}
});
$('#category_id').change(function() {
$.ajax({
type: 'GET',
dataType: "script",
url:$(this).parents("from").attr("href"),
data:$(this).parents("form").serialize()
});
});
});
</script>
@@ -1,2 +0,0 @@
$("#users_checkbox_ary").replaceWith('<%= escape_javascript(render :partial=> "layouts/users_checkbox_ary" )%>');
permissionCheckbox();
@@ -1 +0,0 @@
alert( "<% flash.each do |key, msg| %><%= msg %><% end%>");
@@ -1,2 +0,0 @@
$('#show_preview').html("<%= escape_javascript(render(:partial => 'modal_list',:locals => {:email_er_category => @email_er_category})) %>");
var start_modal_with_id = "email_er_category-<%=@email_er_category.id%>"
@@ -1,19 +0,0 @@
<tr id="<%= dom_id email_er_category %>" class="with_action">
<td>
<%= email_er_category.key %>
<div class="quick-edit">
<ul class="nav nav-pills hide">
<li><%= link_to t(:edit), edit_panel_er_email_back_end_email_er_category_path(email_er_category), :remote => true %></li>
<li><%= link_to show_toggle_archive_btn(email_er_category) , panel_er_email_back_end_email_er_category_path(email_er_category), :confirm => t(:sure?), :method => :delete, :remote => true,:class=> "archive_toggle" %></li>
<%if is_manager? || is_admin? %>
<li><%= show_anc_cate_permission_link(email_er_category) %></li>
<% end %>
</ul>
</div>
</td>
<% @site_valid_locales.each do |locale| %>
<td><%= email_er_category.title_translations[locale] rescue nil %></td>
<% end %>
</tr>
@@ -1,30 +0,0 @@
<% # encoding: utf-8 %>
<%= form_for(@email_er_category, :remote => true, :url => @url) do |f| %>
<h2><%= (@email_er_category.new_record? ? 'Add' : 'Edit') %></h2>
<div id="widget-title">
<%= f.label :key %>
<%= f.text_field :key %>
</div>
<div id="widget-title">
<%= f.fields_for :title_translations do |f| %>
<% @site_valid_locales.each do |locale| %>
<div class="control-group">
<%= label_tag "name-#{locale}", "Name-#{I18nVariable.from_locale(locale)}", :class => 'control-label' %>
<div class="controls">
<%= f.text_field locale, :class =>' input-xxlarge', :value => (@email_er_category.title_translations[locale] rescue nil) %>
</div>
</div>
<% end %>
<% end %>
</div>
<div class="form-actions">
<%= f.submit 'Submit/送出', :class=>'btn btn-primary' %>
</div>
<% end %>
@@ -1,2 +0,0 @@
$('<%= j render :partial => 'email_er_category', :collection => [@email_er_category] %>').appendTo('#email_er_categorys').hide().fadeIn();
$("#new_email_er_category")[0].reset();
@@ -1 +0,0 @@
$("#<%= dom_id @email_er_category %>").find(".archive_toggle").text("<%= show_toggle_archive_btn(@email_er_category) %> ");
@@ -1 +0,0 @@
$("#form > form").replaceWith("<%= j render "form" %>");
@@ -1,23 +0,0 @@
<%= flash_messages %>
<table id="email_er_categorys" class="table main-list">
<thead>
<tr>
<th class="span1-2"><%= t('email_er_category.key') %></th>
<% @site_valid_locales.each do |locale| %>
<th class="span1-2"><%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %></th>
<% end %>
</tr>
</thead>
<tbody>
<%= render :partial => 'email_er_category', :collection => @email_er_categorys %>
</tbody>
</table>
<div id="form"><%= render :partial => "form" %></div>
@@ -1 +0,0 @@
$("#form > form").replaceWith("<%= j render "form" %>");
@@ -1,4 +0,0 @@
$("#<%= dom_id @email_er_category %>").replaceWith("<%= j render :partial => 'email_er_category', :collection => [@email_er_category] %>");
<% @email_er_category = EmailErCategory.new(:display => 'List') # reset for new form %>
$(".edit_email_er_category").replaceWith("<%= j render "form" %>")
$(".new_email_er_category")[0].reset();
@@ -1,3 +0,0 @@
<div class="filter-clear">
<%= link_to content_tag(:i, nil, :class => 'icons-cycle') + t(:clear), panel_archive_back_end_archive_files_path(:filter => @filter, :sort => params[:sort], :direction => params[:direction], :clear => true, :type => type), :class => "btn btn-small js_history" %>
</div>
@@ -1,61 +0,0 @@
<tr id="<%= dom_id email_er %>" class="with_action">
<td>
<% if (email_er.create_user_id == current_or_guest_user.id) || is_manager? %>
<%= check_box_tag 'to_delete[]', email_er.id, false, :class => "checkbox_in_list" %>
<% end -%>
</td>
<td>
<div class="label-group">
<div class="label-td">
<% if email_er.is_pending? %>
<span class="label"><%= t(:pending) %></span>
<% end %>
<% if email_er.is_checked? %>
<span class="label"><%= t(:passed) %></span>
<% end %>
<% if email_er.is_rejected? %>
<span class="label"><%= t(:rejected) %></span>
<% end %>
</div>
</div>
</td>
<td>
<%= email_er.email_er_category.title %>
</td>
<td class="span1">
<%= email_er.mail_subject %>
<div class="quick-edit">
<ul class="nav nav-pills hide">
<%#if at_least_module_manager %>
<% if (email_er.create_user_id == current_or_guest_user.id) || is_manager? %>
<% if current_or_guest_user.admin? || (!email_er.is_rejected? && !email_er.is_checked?) %>
<li><%= link_to t(:edit), edit_panel_er_email_back_end_email_er_path(email_er, :page => params[:page], :filter => @filter) %></li>
<% if email_er.is_pending %>
<li><%= link_to t('er_email.test_send_email'), test_send_email_panel_er_email_back_end_email_ers_path(:id=>email_er.id), :confirm => t('sure?'), :controller => "email_er", :action => "test_send_email" %></li>
<% end %>
<% end %>
<li><%= link_to t(:delete_), panel_er_email_back_end_email_er_path(email_er), :confirm => t('sure?'), :method => :delete, :remote => true %></li>
<% if email_er.is_checked and !email_er.is_rejected %>
<li><%= link_to t('er_email.email_resend'), email_resend_panel_er_email_back_end_email_ers_path(:id=>email_er.id), :confirm => t('sure?'), :controller => "email_er", :action => "email_resend" %></li>
<% end %>
<% end -%>
<% if show_approval_link(email_er) %>
<li><%= link_to t(:approval_), panel_er_email_back_end_email_er_approval_preview_path(email_er),:class => 'preview_trigger' %></li><%#= #TODO add ancher so user can quick access into that part %>
<% end %>
<% if show_reject_reason(email_er)%>
<li><%= link_to t('rejected_reason')+truncate(email_er.not_checked_reason, :length => 10),'#',:rel=>"tooltip" ,'data-original-title'=> (wrap_string_with(email_er.not_checked_reason, :line_width => 24)),:class=>'reject_info' %></li>
<% end %>
</ul>
</div>
</td>
<td class="span2">
<%= email_er.get_email_group_data(@email_group_data) %>
</td>
</tr>
@@ -1,11 +0,0 @@
<div id="filter" class="subnav">
<div class="filters">
<div id="sort_headers" class="table-label">
<%= render 'sort_headers' %>
</div>
</div>
</div>
<% content_for :page_specific_javascript do %>
<%= javascript_include_tag "sort_header" %>
<% end %>
@@ -1,115 +0,0 @@
<% # encoding: utf-8 %>
<% content_for :page_specific_javascript do -%>
<%= javascript_include_tag "inc/modal-preview" %>
<% end -%>
<%= f.error_messages %>
<!--Post Start-->
<div id="post-body">
<div id="post-body-content" class="clear">
<%= f.label :category,t(:category)%>
<%= f.select :email_er_category_id, @email_er_categorys.collect{|t| [ t.title, t.id ]}, {}, :class => "input-medium" %>
<%= f.label :mail_subject ,t("er_email.mail_subject")%>
<%= f.text_field :mail_subject %>
<%= f.label :email_group ,t("er_email.email_group")%>
<div class="form-inline">
<ul class="nav nav-pills">
<% @email_group_data.collect do |k,v| %>
<li class="pull-left">
<%= check_box_tag 'email_er[email_group][]', k, (@email_er.email_group.nil? ? false : @email_er.email_group.include?(k)), :id => "field-#{k}" %>
<label for="field-<%= k %>"><%= v["name"] %></label>
<%= hidden_field_tag 'email_er[email_group][]', '' %>
</li>
<% end %>
</ul>
</div>
<%= f.label :other_mailaddress ,"#{t("er_email.other_mailaddress")}(#{t("er_email.other_mailaddress_note")})(#{t("er_email.other_mailaddress_note_limit")})"%>
<%= f.text_area :other_mailaddress, :class=>"span12", :rows=>"5" %>
<br />
<div class="editor">
<%= f.label :mail_content ,t("er_email.mail_content")%>
<%= f.text_area :mail_content, :style=>"width:100%", :class => 'tinymce_textarea' %>
</div>
</div>
<div>
<div id='plugin_files' class="plugin_files_block">
<table class="table table-condensed">
<thead>
<tr>
<th>File</th>
<th>File Name</th>
<th class="span1"></th>
</tr>
</thead>
<tfoot>
<tr>
<td style="text-align:center" colspan="3">
<div id='add_plugin_file' class="info_input plugin_files_block">
<%= hidden_field_tag 'plugin_file_field_count', @email_er.email_er_files.count %>
<a class="add"><span class="btn btn-primary btn-small"><i class="icon-plus icon-white"></i> ADD/新增</span></a>
<p><%= t("sys.limit_of_upload_file_size",:best_size => '10MB') %></p>
<p><%= t("sys.preview_only_for_img") %></p>
</div>
</td>
</tr>
</tfoot>
<tbody>
<% @email_er.email_er_files.each_with_index do |email_er_file, i| %>
<%= f.fields_for :email_er_files, email_er_file do |f| %>
<%= render :partial => 'form_file', :object => email_er_file, :locals => {:f => f, :i => i} %>
<% end %>
<% end %>
</tbody>
</table>
</div>
</div>
<!--Post End-->
</div>
<div class="form-actions">
<%= button_tag t("preview"), :id=>"button_for_preview", :name=>"commit",:class=>'btn post_preview two_btn',:type=>:button,:url=>preview_panel_er_email_back_end_email_ers_path %>
<%= f.submit t('submit'), :class=>'btn btn-primary' %>
<%= link_to t('cancel'), get_go_back, :class=>"btn" %>
</div>
<% content_for :page_specific_javascript do %>
<%= javascript_include_tag "archive_plugin_form" %>
<%= javascript_include_tag "inc/jquery.imagesloaded.js" %>
<script>
$(document).ready(function() {
$('#add_plugin_file a.add').live('click', function(){
var new_id = $(this).prev().attr('value');
var old_id = new RegExp("new_email_er_files", "g");
$(this).prev().attr('value', parseInt(new_id) + 1);
$(this).parents('table').append(("<%= escape_javascript(add_attribute 'form_file', f, :email_er_files) %>").replace(old_id, new_id));
});
$('.for_preview').popover({ html : true });
});
</script>
<% end %>
@@ -1,37 +0,0 @@
<% # encoding: utf-8 %>
<%= f.error_messages %>
<tr id="<%= "plugin_file_#{form_file.id}" if !form_file.new_record? %>" class='list_item'>
<td>
<div class="control-group">
<div class="controls">
<%= f.file_field :file %>
<%= form_file.file.file ? ( link_to t(:view), form_file.file.url, {:class => 'btn', :target => '_blank', :title => t(:view)} ) : '' %>
</div>
</div>
</td>
<td>
<div class="tab-content">
<%= f.text_field :title %>
</div>
</td>
<td>
<span class="action">
<% if form_file.new_record? %>
<a class="delete"><i class="icon-remove"></i></a>
<% else %>
<%= f.hidden_field :id %>
<a class="remove_existing_record"><i class="icon-remove"></i></a>
<%= f.hidden_field :_destroy, :value => nil, :class => 'should_destroy' %>
<% end %>
</span>
</td>
</tr>
@@ -1,5 +0,0 @@
<%= render_sort_bar(true, delete_panel_er_email_back_end_email_ers_path(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]),
['status', ['is_pending', 'is_checked', 'is_rejected'], 'span1', :status],
['category', 'email_er_category', 'span1', :category],
['subject', 'mail_subject','span2', 'er_email.mail_subject'] ,
['email_group', 'email_group','span2', 'er_email.email_group']).html_safe %>
@@ -1 +0,0 @@
$("#<%= dom_id @email_er %>").remove();
@@ -1,6 +0,0 @@
<div id="poststuff">
<%= form_for @email_er, :url => panel_er_email_back_end_email_er_path(@email_er), :html => {:class=>"clear nccu_ajax_form"} do |f| %>
<%= render :partial => 'form', :locals => {:f => f} %>
<% end %>
</div>
@@ -1,28 +0,0 @@
<%= render 'filter' %>
<table class="table main-list">
<thead>
<tr>
<th class="span1"></th>
<th class="span1"></th>
<th class="span1"></th>
<th class="span2"></th>
<th class="span2"></th>
</tr>
</thead>
<tbody id="tbody_email_ers">
<%= render :partial => 'email_er', :collection => @email_ers %>
</tbody>
</table>
<div class="form-actions form-fixed pagination-right">
<%= link_to content_tag(:i, nil, :class => 'icon-plus icon-white') + t(:add), new_panel_er_email_back_end_email_er_path, :class => 'btn btn-primary pull-right' if (is_manager? rescue nil) %>
<div id="email_er_pagination" class="paginationFixed">
<%= paginate @email_ers, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>
</div>
</div>
<% content_for :page_specific_javascript do %>
<%= javascript_include_tag "/static/jquery.cycle.all.latest.js" %>
<%= javascript_include_tag "inc/modal-preview" %>
<% end %>
@@ -1,4 +0,0 @@
$("#delete_all").attr("action", "<%= delete_panel_er_email_back_end_email_ers_path(:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil, :sort_options => params[:sort_options]) %>");
$("#sort_headers").html("<%= j render 'sort_headers' %>");
$("#tbody_email_ers").html("<%= j render :partial => 'email_er', :collection => @email_ers %>");
$("#email_er_pagination").html("<%= j paginate @email_ers, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>");
@@ -1,6 +0,0 @@
<div id="poststuff">
<%= form_for @email_er, :url => panel_er_email_back_end_email_ers_path, :html => {:class=>"nccu_ajax_form"} do |f| %>
<%= render :partial => 'form', :locals => {:f => f} %>
<% end %>
</div>
@@ -1,2 +0,0 @@
$('#show_preview').html("<%= escape_javascript(render(:partial => 'modal_preview',:locals => {:email_er => @email_er})) %>");
var start_modal_with_id = "email_er-<%=@email_er.id%>"
@@ -1,4 +0,0 @@
<ul>
<li><%= label_tag t("er_email.mail_subject") %><%= @email_er.mail_subject %></li>
<li><%= label_tag t("er_email.mail_content") %><%= @email_er.mail_content.html_safe %></li>
</ul>
@@ -1,25 +0,0 @@
<%= content_tag :div ,:id => "users_checkbox_ary",:class => 'clear' do -%>
<% sys_users = User.all.not_guest_user -%>
<% sys_users.each do |user| -%>
<div class="checkblock">
<% user.sub_roles.each do |sr| %>
<div class="for_unit" style="display:none;"> <%= sr.key %></div>
<% end %>
<%= content_tag :div,:data=>{'original-title'=>t('er_email.email_er.fact_check_setting_window_title'),:content => "#{user.sub_roles.collect{|sr| sr.key}.join(',')}"},:class=>"checkbox clear" do %>
<div class="check-icon">
</div>
<div class='member-avatar'>
<% if user.avatar? %>
<%= image_tag(user.avatar.thumb.url,:class => "member-img") %>
<% else %>
<%= image_tag "person.png",:class => "member-img" %>
<% end %>
</div>
<%= label_tag "lab-user-#{user.id}", (user.name rescue ''),:class=>"member-name",:id=>nil -%>
<%= check_box_tag "[users][#{user.id}]", 'true',users.include?(user),:class => "check" -%>
<%end -%>
</div>
<% end -%>
<% end -%>
-27
View File
@@ -1,27 +0,0 @@
en:
er_email:
er_email: Email_ER
Group: Group
Title: Title
Content: Content
Files: Files
approval_setting: Approval Setting
approve_email_er_fail: Approval Fail
approve_email_er_success: Approve Successfully
create_email_er_success: Create Successfully
email_resend: Resend
test_send_email: Test Send Email
mail_subject: Mail Subject
mail_content: Mail Content
mail_sentdate: Email Time
email_group: Email Group
email_group_data_0: All Faculty
email_group_data_1: Undergraduates
email_group_data_2: Postgraduates
email_group_data_3: Continuing Ed. Postgraduates
email_group_data_4: Other
other_mailaddress: Other Email
other_mailaddress_note: Divide different email accounts with ","
other_mailaddress_note_limit: maximum 1000 characters
email_file_limit: File upload size is limited to 1MB
@@ -1,27 +0,0 @@
zh_tw:
er_email:
er_email: 寄信群組
Group: 群組
Title: 主旨
Content: 內文
Files: 檔案
approval_setting: 審核設定
approve_email_er_fail: 審核失敗
approve_email_er_success: 審核成功
create_email_er_success: 建立資料成功
email_resend: 重新寄送
test_send_email: 測試寄信
mail_subject: 主旨
mail_content: 信件內容
mail_sentdate: 寄送時間
email_group: 寄送群組
other_mailaddress: 其他Mail
other_mailaddress_note: 輸入多組mail時,請用","逗號隔開
other_mailaddress_note_limit: 限制1000字元以內
email_group_data_0: 全校教職員
email_group_data_1: 大學部學生
email_group_data_2: 日間部研究生
email_group_data_3: 進修部研究生
email_group_data_4: 其他
email_file_limit: 檔案上傳容量限制為10MB
-36
View File
@@ -1,36 +0,0 @@
Rails.application.routes.draw do
namespace :panel do
namespace :er_email do
namespace :back_end do
match 'public' => "er_emails#public",:as => :public
match 'approval_setting' => "approvals#setting" ,:as => :approval_setting,:via => :get
match 'approval_setting' => "approvals#update_setting" ,:as => :approval_setting,:via => :post
match 'approval_setting' => "approvals#user_list" ,:as => :approval_user_list,:via => :put
resources :email_ers do
match "approve/:email_er_id" => "approvals#preview_and_approve",:as => :approval_preview,:via => :put
match "approve/:email_er_id" => "approvals#approve",:as => :approve,:via => :post
collection do
post "preview"
put "preview"
get 'delete'
get 'email_resend'
get 'test_send_email'
end
end
resources :email_er_categorys do
collection do
get 'get_categorys_json'
end
# if want to use json
# please uncommand below line
# match "get_email_ers_json/" => "email_er_categorys#get_email_ers_json", :as => :get_email_ers_json
end
end
end
end
end
-23
View File
@@ -1,23 +0,0 @@
$:.push File.expand_path("../lib", __FILE__)
# Maintain your gem's version:
require "er_email/version"
# Describe your gem and declare its dependencies:
Gem::Specification.new do |s|
s.name = "er_email"
s.version = ErEmail::VERSION
s.authors = ["TODO: Your name"]
s.email = ["TODO: Your email"]
s.homepage = "TODO"
s.summary = "TODO: Summary of ErEmail."
s.description = "TODO: Description of ErEmail."
s.files = Dir["{app,config,db,lib}/**/*"] + ["MIT-LICENSE", "Rakefile", "README.rdoc"]
s.test_files = Dir["test/**/*"]
s.add_dependency "rails", "~> 3.2.12"
# s.add_dependency "jquery-rails"
s.add_development_dependency "sqlite3"
end
-55
View File
@@ -1,55 +0,0 @@
module ErEmail
OrbitApp.registration "ErEmail",:type=> 'ModuleApp' do
module_label 'er_email.er_email'
base_url File.expand_path File.dirname(__FILE__)
# personal_plugin :enable => true,:path=>"panel/er_email/plugin/profile",:i18n=>'er_email.er_email'
version "0.1"
organization "Rulingcom"
author "RD dep"
intro "I am intro"
update_info 'some update_info'
side_bar do
head_label_i18n 'er_email.er_email',:icon_class=>"icons-paperplane"
available_for [:admin,:guest,:manager,:sub_manager]
active_for_controllers ({:private=>['email_er_categorys','email_ers', 'approvals']})
active_for_object_auth ['EmailErCategory']
head_link_path "panel_er_email_back_end_email_ers_path"
context_link 'all',
:link_path=>"panel_er_email_back_end_email_ers_path" ,
:priority=>1,
:active_for_action=>{:email_ers=>:index},
:available_for => [:all]
context_link 'add',
:link_path=>"new_panel_er_email_back_end_email_er_path" ,
:priority=>2,
:active_for_action=>{:email_ers=>:new},
:available_for => [:sub_manager]
context_link 'categories',
:link_path=>"panel_er_email_back_end_email_er_categorys_path" ,
:priority=>3,
:active_for_action=>{:email_er_categorys=>:index},
:available_for => [:manager]
context_link 'er_email.approval_setting',
:link_path=>"panel_er_email_back_end_approval_setting_path" ,
:priority=>5,
:active_for_action=>{:approvals=>:setting},
:active_for_object_auth => 'EmailErCategory',
:available_for => [:manager]
context_link 'module_authorization',
:link_path=>"admin_module_app_manager_auth_proc_path(ModuleApp.first(conditions: {title: 'ErEmail'}))",
:priority=>6,
:active_for_app_auth => 'ErEmail'
end
end
end
-4
View File
@@ -1,4 +0,0 @@
require "er_email/engine"
module ErEmail
end
@@ -1,4 +0,0 @@
module ErEmail
class Engine < ::Rails::Engine
end
end
Loaded 100 of 149 files, more files were not shown because too many files have changed in this diff. Show more