From 1a9a4d0112d3f8bd41ecf87cef24b88212a4da0b Mon Sep 17 00:00:00 2001
From: chris
Date: Fri, 19 Jul 2013 16:03:14 +0800
Subject: [PATCH] Changes for ntue (mail app)
---
Gemfile | 2 +
app/controllers/sessions_controller.rb | 35 ++
config/environments/development.rb | 18 +-
config/routes.rb | 5 +
.../back_end/approvals_controller.rb | 73 ++++
.../back_end/bulletins_controller.rb | 85 +++++
.../announcement/app/models/bulletin.rb | 44 +++
.../announcement_mailer/cron_mail.html.erb | 29 ++
.../approvals/_modal_approve.html.erb | 6 +
.../back_end/bulletins/_form.html.erb | 49 +++
.../announcement/config/locales/en.yml | 19 +-
.../announcement/config/locales/zh_tw.yml | 20 +-
vendor/built_in_modules/er_email/.gitignore | 7 +
vendor/built_in_modules/er_email/Gemfile | 17 +
vendor/built_in_modules/er_email/MIT-LICENSE | 20 ++
vendor/built_in_modules/er_email/README.rdoc | 3 +
vendor/built_in_modules/er_email/Rakefile | 40 +++
.../app/assets/images/er_email/.gitkeep | 0
.../app/assets/javascripts/er_email/.gitkeep | 0
.../app/assets/stylesheets/er_email/.gitkeep | 0
.../er_email/app/controllers/.gitkeep | 0
.../app/controllers/application_controller.rb | 23 ++
.../er_email/back_end/approvals_controller.rb | 145 ++++++++
.../back_end/email_er_categorys_controller.rb | 128 +++++++
.../er_email/back_end/email_ers_controller.rb | 318 ++++++++++++++++++
.../er_email/app/helpers/.gitkeep | 0
.../back_end/email_er_categorys_helper.rb | 16 +
.../er_email/back_end/email_ers_helper.rb | 58 ++++
.../er_email/app/mailers/.gitkeep | 0
.../er_email/app/models/.gitkeep | 0
.../er_email/app/models/email_er.rb | 123 +++++++
.../er_email/app/models/email_er_category.rb | 47 +++
.../er_email/app/models/email_er_file.rb | 23 ++
.../er_email/app/views/.gitkeep | 0
.../approvals/_modal_approve.html.erb | 68 ++++
.../back_end/approvals/_modal_list.html.erb | 44 +++
.../approvals/preview_and_approve.js.erb | 5 +
.../back_end/approvals/setting.html.erb | 53 +++
.../back_end/approvals/setting.js.erb | 2 +
.../back_end/approvals/update_setting.js.erb | 1 +
.../back_end/approvals/user_list.js.erb | 2 +
.../_email_er_category.html.erb | 19 ++
.../email_er_categorys/_form.html.erb | 30 ++
.../back_end/email_er_categorys/create.js.erb | 2 +
.../email_er_categorys/destroy.js.erb | 1 +
.../back_end/email_er_categorys/edit.js.erb | 1 +
.../email_er_categorys/index.html.erb | 23 ++
.../back_end/email_er_categorys/new.js.erb | 1 +
.../back_end/email_er_categorys/update.js.erb | 4 +
.../email_ers/_clear_filters.html.erb | 3 +
.../back_end/email_ers/_email_er.html.erb | 61 ++++
.../back_end/email_ers/_filter.html.erb | 11 +
.../back_end/email_ers/_form.html.erb | 115 +++++++
.../back_end/email_ers/_form_file.html.erb | 37 ++
.../back_end/email_ers/_sort_headers.html.erb | 5 +
.../back_end/email_ers/destroy.js.erb | 1 +
.../er_email/back_end/email_ers/edit.html.erb | 6 +
.../back_end/email_ers/index.html.erb | 28 ++
.../er_email/back_end/email_ers/index.js.erb | 4 +
.../er_email/back_end/email_ers/new.html.erb | 6 +
.../email_ers/realtime_preview.js.erb | 2 +
.../er_email/back_end/email_ers/show.html.erb | 1 +
.../fact_checks/_privilege_user.html.erb | 25 ++
.../er_email/config/locales/en.yml | 27 ++
.../er_email/config/locales/zh_tw.yml | 27 ++
.../er_email/config/routes.rb | 36 ++
.../er_email/er_email.gemspec | 23 ++
vendor/built_in_modules/er_email/init.rb | 55 +++
.../built_in_modules/er_email/lib/er_email.rb | 4 +
.../er_email/lib/er_email/engine.rb | 4 +
.../er_email/lib/er_email/version.rb | 3 +
.../er_email/lib/tasks/er_email_tasks.rake | 4 +
vendor/built_in_modules/er_email/script/rails | 8 +
.../er_email/test/dummy/README.rdoc | 261 ++++++++++++++
.../er_email/test/dummy/Rakefile | 7 +
.../app/assets/javascripts/application.js | 15 +
.../app/assets/stylesheets/application.css | 13 +
.../app/controllers/application_controller.rb | 3 +
.../dummy/app/helpers/application_helper.rb | 2 +
.../er_email/test/dummy/app/mailers/.gitkeep | 0
.../er_email/test/dummy/app/models/.gitkeep | 0
.../app/views/layouts/application.html.erb | 14 +
.../er_email/test/dummy/config.ru | 4 +
.../er_email/test/dummy/config/application.rb | 59 ++++
.../er_email/test/dummy/config/boot.rb | 10 +
.../er_email/test/dummy/config/database.yml | 25 ++
.../er_email/test/dummy/config/environment.rb | 5 +
.../dummy/config/environments/development.rb | 37 ++
.../dummy/config/environments/production.rb | 67 ++++
.../test/dummy/config/environments/test.rb | 37 ++
.../initializers/backtrace_silencers.rb | 7 +
.../dummy/config/initializers/inflections.rb | 15 +
.../dummy/config/initializers/mime_types.rb | 5 +
.../dummy/config/initializers/secret_token.rb | 7 +
.../config/initializers/session_store.rb | 8 +
.../config/initializers/wrap_parameters.rb | 14 +
.../er_email/test/dummy/config/locales/en.yml | 5 +
.../er_email/test/dummy/config/routes.rb | 58 ++++
.../er_email/test/dummy/lib/assets/.gitkeep | 0
.../er_email/test/dummy/log/.gitkeep | 0
.../er_email/test/dummy/public/404.html | 26 ++
.../er_email/test/dummy/public/422.html | 26 ++
.../er_email/test/dummy/public/500.html | 25 ++
.../er_email/test/dummy/public/favicon.ico | 0
.../er_email/test/dummy/script/rails | 6 +
.../er_email/test/er_email_test.rb | 7 +
.../test/integration/navigation_test.rb | 10 +
.../er_email/test/test_helper.rb | 15 +
108 files changed, 2887 insertions(+), 11 deletions(-)
create mode 100644 app/controllers/sessions_controller.rb
create mode 100644 vendor/built_in_modules/announcement/app/views/announcement_mailer/cron_mail.html.erb
create mode 100644 vendor/built_in_modules/er_email/.gitignore
create mode 100644 vendor/built_in_modules/er_email/Gemfile
create mode 100644 vendor/built_in_modules/er_email/MIT-LICENSE
create mode 100644 vendor/built_in_modules/er_email/README.rdoc
create mode 100644 vendor/built_in_modules/er_email/Rakefile
create mode 100644 vendor/built_in_modules/er_email/app/assets/images/er_email/.gitkeep
create mode 100644 vendor/built_in_modules/er_email/app/assets/javascripts/er_email/.gitkeep
create mode 100644 vendor/built_in_modules/er_email/app/assets/stylesheets/er_email/.gitkeep
create mode 100644 vendor/built_in_modules/er_email/app/controllers/.gitkeep
create mode 100644 vendor/built_in_modules/er_email/app/controllers/application_controller.rb
create mode 100644 vendor/built_in_modules/er_email/app/controllers/panel/er_email/back_end/approvals_controller.rb
create mode 100644 vendor/built_in_modules/er_email/app/controllers/panel/er_email/back_end/email_er_categorys_controller.rb
create mode 100644 vendor/built_in_modules/er_email/app/controllers/panel/er_email/back_end/email_ers_controller.rb
create mode 100644 vendor/built_in_modules/er_email/app/helpers/.gitkeep
create mode 100644 vendor/built_in_modules/er_email/app/helpers/panel/er_email/back_end/email_er_categorys_helper.rb
create mode 100644 vendor/built_in_modules/er_email/app/helpers/panel/er_email/back_end/email_ers_helper.rb
create mode 100644 vendor/built_in_modules/er_email/app/mailers/.gitkeep
create mode 100644 vendor/built_in_modules/er_email/app/models/.gitkeep
create mode 100644 vendor/built_in_modules/er_email/app/models/email_er.rb
create mode 100644 vendor/built_in_modules/er_email/app/models/email_er_category.rb
create mode 100644 vendor/built_in_modules/er_email/app/models/email_er_file.rb
create mode 100644 vendor/built_in_modules/er_email/app/views/.gitkeep
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/approvals/_modal_approve.html.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/approvals/_modal_list.html.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/approvals/preview_and_approve.js.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/approvals/setting.html.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/approvals/setting.js.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/approvals/update_setting.js.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/approvals/user_list.js.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/_email_er_category.html.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/_form.html.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/create.js.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/destroy.js.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/edit.js.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/index.html.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/new.js.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/update.js.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/_clear_filters.html.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/_email_er.html.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/_filter.html.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/_form.html.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/_form_file.html.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/_sort_headers.html.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/destroy.js.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/edit.html.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/index.html.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/index.js.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/new.html.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/realtime_preview.js.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/show.html.erb
create mode 100644 vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/fact_checks/_privilege_user.html.erb
create mode 100644 vendor/built_in_modules/er_email/config/locales/en.yml
create mode 100644 vendor/built_in_modules/er_email/config/locales/zh_tw.yml
create mode 100644 vendor/built_in_modules/er_email/config/routes.rb
create mode 100644 vendor/built_in_modules/er_email/er_email.gemspec
create mode 100644 vendor/built_in_modules/er_email/init.rb
create mode 100644 vendor/built_in_modules/er_email/lib/er_email.rb
create mode 100644 vendor/built_in_modules/er_email/lib/er_email/engine.rb
create mode 100644 vendor/built_in_modules/er_email/lib/er_email/version.rb
create mode 100644 vendor/built_in_modules/er_email/lib/tasks/er_email_tasks.rake
create mode 100755 vendor/built_in_modules/er_email/script/rails
create mode 100644 vendor/built_in_modules/er_email/test/dummy/README.rdoc
create mode 100644 vendor/built_in_modules/er_email/test/dummy/Rakefile
create mode 100644 vendor/built_in_modules/er_email/test/dummy/app/assets/javascripts/application.js
create mode 100644 vendor/built_in_modules/er_email/test/dummy/app/assets/stylesheets/application.css
create mode 100644 vendor/built_in_modules/er_email/test/dummy/app/controllers/application_controller.rb
create mode 100644 vendor/built_in_modules/er_email/test/dummy/app/helpers/application_helper.rb
create mode 100644 vendor/built_in_modules/er_email/test/dummy/app/mailers/.gitkeep
create mode 100644 vendor/built_in_modules/er_email/test/dummy/app/models/.gitkeep
create mode 100644 vendor/built_in_modules/er_email/test/dummy/app/views/layouts/application.html.erb
create mode 100644 vendor/built_in_modules/er_email/test/dummy/config.ru
create mode 100644 vendor/built_in_modules/er_email/test/dummy/config/application.rb
create mode 100644 vendor/built_in_modules/er_email/test/dummy/config/boot.rb
create mode 100644 vendor/built_in_modules/er_email/test/dummy/config/database.yml
create mode 100644 vendor/built_in_modules/er_email/test/dummy/config/environment.rb
create mode 100644 vendor/built_in_modules/er_email/test/dummy/config/environments/development.rb
create mode 100644 vendor/built_in_modules/er_email/test/dummy/config/environments/production.rb
create mode 100644 vendor/built_in_modules/er_email/test/dummy/config/environments/test.rb
create mode 100644 vendor/built_in_modules/er_email/test/dummy/config/initializers/backtrace_silencers.rb
create mode 100644 vendor/built_in_modules/er_email/test/dummy/config/initializers/inflections.rb
create mode 100644 vendor/built_in_modules/er_email/test/dummy/config/initializers/mime_types.rb
create mode 100644 vendor/built_in_modules/er_email/test/dummy/config/initializers/secret_token.rb
create mode 100644 vendor/built_in_modules/er_email/test/dummy/config/initializers/session_store.rb
create mode 100644 vendor/built_in_modules/er_email/test/dummy/config/initializers/wrap_parameters.rb
create mode 100644 vendor/built_in_modules/er_email/test/dummy/config/locales/en.yml
create mode 100644 vendor/built_in_modules/er_email/test/dummy/config/routes.rb
create mode 100644 vendor/built_in_modules/er_email/test/dummy/lib/assets/.gitkeep
create mode 100644 vendor/built_in_modules/er_email/test/dummy/log/.gitkeep
create mode 100644 vendor/built_in_modules/er_email/test/dummy/public/404.html
create mode 100644 vendor/built_in_modules/er_email/test/dummy/public/422.html
create mode 100644 vendor/built_in_modules/er_email/test/dummy/public/500.html
create mode 100644 vendor/built_in_modules/er_email/test/dummy/public/favicon.ico
create mode 100755 vendor/built_in_modules/er_email/test/dummy/script/rails
create mode 100644 vendor/built_in_modules/er_email/test/er_email_test.rb
create mode 100644 vendor/built_in_modules/er_email/test/integration/navigation_test.rb
create mode 100644 vendor/built_in_modules/er_email/test/test_helper.rb
diff --git a/Gemfile b/Gemfile
index 16c820c9a..b5b5a9912 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,6 +1,8 @@
source 'http://rubygems.org'
gem 'rails', "~> 3.2.9"
+gem 'savon', '~> 2.2.0'
+
gem "brakeman"
gem 'mime-types'
diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb
new file mode 100644
index 000000000..c1a027d17
--- /dev/null
+++ b/app/controllers/sessions_controller.rb
@@ -0,0 +1,35 @@
+# 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] = "很抱歉,您無此權限或帳號登入本站,請洽本站管理員
Sorry, you don't have the account or authority to login. Please contact the website administrator."
+ redirect_to :root
+ end
+
+ end
+
+end
\ No newline at end of file
diff --git a/config/environments/development.rb b/config/environments/development.rb
index 7daa02fc8..ba4f6fd1f 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -34,15 +34,15 @@ Orbit::Application.configure do
# :sender_address => %{"notifier" },
# :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
diff --git a/config/routes.rb b/config/routes.rb
index 716918775..25e488432 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -7,6 +7,11 @@ 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"
diff --git a/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/approvals_controller.rb b/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/approvals_controller.rb
index cb8da5db1..d2320fb02 100644
--- a/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/approvals_controller.rb
+++ b/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/approvals_controller.rb
@@ -1,3 +1,4 @@
+# encoding: utf-8
class Panel::Announcement::BackEnd::ApprovalsController < OrbitBackendController
before_filter :authenticate_user!
before_filter :is_admin?
@@ -6,6 +7,7 @@ class Panel::Announcement::BackEnd::ApprovalsController < OrbitBackendControlle
def preview_and_approve
+ email_group_data
@bulletin = Bulletin.find params[:bulletin_id]
end
@@ -15,6 +17,14 @@ 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')
@@ -61,6 +71,69 @@ 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 = []
diff --git a/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/bulletins_controller.rb b/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/bulletins_controller.rb
index e45ced1d6..edc7c012b 100644
--- a/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/bulletins_controller.rb
+++ b/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/bulletins_controller.rb
@@ -1,3 +1,4 @@
+# encoding: utf-8
class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
include OrbitControllerLib::DivisionForDisable
@@ -77,6 +78,9 @@ 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
@@ -94,6 +98,9 @@ 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
@@ -146,6 +153,13 @@ 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
@@ -226,6 +240,14 @@ 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!
@@ -293,6 +315,69 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
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)")
diff --git a/vendor/built_in_modules/announcement/app/models/bulletin.rb b/vendor/built_in_modules/announcement/app/models/bulletin.rb
index 1771e2a69..5259a8d2e 100644
--- a/vendor/built_in_modules/announcement/app/models/bulletin.rb
+++ b/vendor/built_in_modules/announcement/app/models/bulletin.rb
@@ -40,6 +40,12 @@ 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
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) }
@@ -215,8 +221,46 @@ 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("
").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 ))
diff --git a/vendor/built_in_modules/announcement/app/views/announcement_mailer/cron_mail.html.erb b/vendor/built_in_modules/announcement/app/views/announcement_mailer/cron_mail.html.erb
new file mode 100644
index 000000000..fbf7e0b1c
--- /dev/null
+++ b/vendor/built_in_modules/announcement/app/views/announcement_mailer/cron_mail.html.erb
@@ -0,0 +1,29 @@
+<% # encoding: utf-8 %>
+
+
+
+
+
+
+
+
+
+ <%= t('announcement.mail_hi') %>
+ <%= t('announcement.mail_url_view') %>
+ " target="_blank"> <%= @data.mail_content["title"] %>
+
+ --
+ <%= t('announcement.mail_source') %> :" target="_blank"> <%= @data.mail_content["site_title"] %>
+ <%= t('announcement.mail_time') %> <%= DateTime.now %>
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/approvals/_modal_approve.html.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/approvals/_modal_approve.html.erb
index 797757a58..bed04d202 100644
--- a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/approvals/_modal_approve.html.erb
+++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/approvals/_modal_approve.html.erb
@@ -14,6 +14,12 @@
<%# 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 %>
+
+
+
+
+
+
+
+ <% email_er_category.get_object_auth_by_title('fact_check').auth_users.each do |user| %>
+
+
+ <% if user.avatar? %>
+ <%= image_tag(user.avatar.thumb.url,:class => "member-img") %>
+ <% else %>
+ <%= image_tag "person.png",:class => "member-img" %>
+ <% end %>
+
+ <%= label_tag "lab-user-#{user.id}", (user.name rescue ''),:class=>"member-name",:id=>nil -%>
+
+ <% end -%>
+
+
+
+
+
+
+
+
+
+
+
+<% end -%>
\ No newline at end of file
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/approvals/preview_and_approve.js.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/approvals/preview_and_approve.js.erb
new file mode 100644
index 000000000..40c37fff0
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/approvals/preview_and_approve.js.erb
@@ -0,0 +1,5 @@
+$('#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");
\ No newline at end of file
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/approvals/setting.html.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/approvals/setting.html.erb
new file mode 100644
index 000000000..8ef074e8e
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/approvals/setting.html.erb
@@ -0,0 +1,53 @@
+<% 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") %>
+
+
+ -
+
+ <%= label_tag :category, t(:category) %>
+ <%= select "category",'id',@options_from_collection_for_select_email_er_categorys %>
+ <%= search_field_tag 'user_filter' %>
+
+
+
+ <%= link_to t("approval.user_list"), panel_er_email_back_end_approval_user_list_path , :class=>'preview_trigger btn btn-success pull-right'%>
+
+<%#= label_tag :role, t(:roles) %>
+
+<%= content_tag :div do -%>
+ <% form_tag panel_er_email_back_end_approval_setting_path do %>
+ <%= render :partial => "layouts/users_checkbox_ary" %>
+
+ <% end -%>
+<% end -%>
+
+
+
\ No newline at end of file
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/approvals/setting.js.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/approvals/setting.js.erb
new file mode 100644
index 000000000..7eb41c72a
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/approvals/setting.js.erb
@@ -0,0 +1,2 @@
+$("#users_checkbox_ary").replaceWith('<%= escape_javascript(render :partial=> "layouts/users_checkbox_ary" )%>');
+permissionCheckbox();
\ No newline at end of file
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/approvals/update_setting.js.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/approvals/update_setting.js.erb
new file mode 100644
index 000000000..7486000a2
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/approvals/update_setting.js.erb
@@ -0,0 +1 @@
+alert( "<% flash.each do |key, msg| %><%= msg %><% end%>");
\ No newline at end of file
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/approvals/user_list.js.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/approvals/user_list.js.erb
new file mode 100644
index 000000000..c685e0715
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/approvals/user_list.js.erb
@@ -0,0 +1,2 @@
+$('#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%>"
\ No newline at end of file
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/_email_er_category.html.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/_email_er_category.html.erb
new file mode 100644
index 000000000..553e77108
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/_email_er_category.html.erb
@@ -0,0 +1,19 @@
+
+
+
+
+ <%= email_er_category.key %>
+
+
+ - <%= link_to t(:edit), edit_panel_er_email_back_end_email_er_category_path(email_er_category), :remote => true %>
+ - <%= 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" %>
+ <%if is_manager? || is_admin? %>
+ - <%= show_anc_cate_permission_link(email_er_category) %>
+ <% end %>
+
+
+ |
+ <% @site_valid_locales.each do |locale| %>
+ <%= email_er_category.title_translations[locale] rescue nil %> |
+ <% end %>
+
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/_form.html.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/_form.html.erb
new file mode 100644
index 000000000..e1cc47d71
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/_form.html.erb
@@ -0,0 +1,30 @@
+<% # encoding: utf-8 %>
+
+<%= form_for(@email_er_category, :remote => true, :url => @url) do |f| %>
+
+
<%= (@email_er_category.new_record? ? 'Add' : 'Edit') %>
+
+
+ <%= f.label :key %>
+ <%= f.text_field :key %>
+
+
+
+
+
+ <%= f.submit 'Submit/送出', :class=>'btn btn-primary' %>
+
+
+<% end %>
+
\ No newline at end of file
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/create.js.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/create.js.erb
new file mode 100644
index 000000000..19d0cb80c
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/create.js.erb
@@ -0,0 +1,2 @@
+$('<%= j render :partial => 'email_er_category', :collection => [@email_er_category] %>').appendTo('#email_er_categorys').hide().fadeIn();
+$("#new_email_er_category")[0].reset();
\ No newline at end of file
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/destroy.js.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/destroy.js.erb
new file mode 100644
index 000000000..83dfda02b
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/destroy.js.erb
@@ -0,0 +1 @@
+$("#<%= dom_id @email_er_category %>").find(".archive_toggle").text("<%= show_toggle_archive_btn(@email_er_category) %> ");
\ No newline at end of file
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/edit.js.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/edit.js.erb
new file mode 100644
index 000000000..eaff01fa3
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/edit.js.erb
@@ -0,0 +1 @@
+$("#form > form").replaceWith("<%= j render "form" %>");
\ No newline at end of file
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/index.html.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/index.html.erb
new file mode 100644
index 000000000..4d247ca94
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/index.html.erb
@@ -0,0 +1,23 @@
+
+
+<%= flash_messages %>
+
+
+
+
+ <%= t('email_er_category.key') %> |
+ <% @site_valid_locales.each do |locale| %>
+ <%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %> |
+ <% end %>
+
+
+
+
+ <%= render :partial => 'email_er_category', :collection => @email_er_categorys %>
+
+
+
+
+
<%= render :partial => "form" %>
+
+
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/new.js.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/new.js.erb
new file mode 100644
index 000000000..40061b9fc
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/new.js.erb
@@ -0,0 +1 @@
+$("#form > form").replaceWith("<%= j render "form" %>");
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/update.js.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/update.js.erb
new file mode 100644
index 000000000..3f7aeac16
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_er_categorys/update.js.erb
@@ -0,0 +1,4 @@
+$("#<%= 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();
\ No newline at end of file
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/_clear_filters.html.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/_clear_filters.html.erb
new file mode 100644
index 000000000..a15f7993d
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/_clear_filters.html.erb
@@ -0,0 +1,3 @@
+
+ <%= 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" %>
+
\ No newline at end of file
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/_email_er.html.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/_email_er.html.erb
new file mode 100644
index 000000000..ddb7363d2
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/_email_er.html.erb
@@ -0,0 +1,61 @@
+
+
+ <% 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 -%>
+ |
+
+
+
+ <% if email_er.is_pending? %>
+ <%= t(:pending) %>
+ <% end %>
+ <% if email_er.is_checked? %>
+ <%= t(:passed) %>
+ <% end %>
+ <% if email_er.is_rejected? %>
+ <%= t(:rejected) %>
+ <% end %>
+
+
+ |
+
+ <%= email_er.email_er_category.title %>
+ |
+
+ <%= email_er.mail_subject %>
+
+
+ <%#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?) %>
+
+ - <%= link_to t(:edit), edit_panel_er_email_back_end_email_er_path(email_er, :page => params[:page], :filter => @filter) %>
+
+ <% if email_er.is_pending %>
+ - <%= 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" %>
+ <% end %>
+
+ <% end %>
+ - <%= link_to t(:delete_), panel_er_email_back_end_email_er_path(email_er), :confirm => t('sure?'), :method => :delete, :remote => true %>
+
+ <% if email_er.is_checked and !email_er.is_rejected %>
+ - <%= 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" %>
+ <% end %>
+
+ <% end -%>
+
+ <% if show_approval_link(email_er) %>
+ - <%= link_to t(:approval_), panel_er_email_back_end_email_er_approval_preview_path(email_er),:class => 'preview_trigger' %>
<%#= #TODO add ancher so user can quick access into that part %>
+ <% end %>
+ <% if show_reject_reason(email_er)%>
+ - <%= 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' %>
+ <% end %>
+
+
+ |
+
+ <%= email_er.get_email_group_data(@email_group_data) %>
+ |
+
\ No newline at end of file
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/_filter.html.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/_filter.html.erb
new file mode 100644
index 000000000..63882b8f0
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/_filter.html.erb
@@ -0,0 +1,11 @@
+
+
+<% content_for :page_specific_javascript do %>
+ <%= javascript_include_tag "sort_header" %>
+<% end %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/_form.html.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/_form.html.erb
new file mode 100644
index 000000000..cd07d2ba4
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/_form.html.erb
@@ -0,0 +1,115 @@
+<% # encoding: utf-8 %>
+
+ <% content_for :page_specific_javascript do -%>
+ <%= javascript_include_tag "inc/modal-preview" %>
+ <% end -%>
+
+ <%= f.error_messages %>
+
+
+
+
+
+
+ <%= 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")%>
+
+
+
+ <%= 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" %>
+
+
+
+
+ <%= f.label :mail_content ,t("er_email.mail_content")%>
+ <%= f.text_area :mail_content, :style=>"width:100%", :class => 'tinymce_textarea' %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ File |
+ File Name |
+ |
+
+
+
+
+
+
+ |
+
+
+
+
+
+ <% @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 %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <%= 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" %>
+
+
+
+<% content_for :page_specific_javascript do %>
+ <%= javascript_include_tag "archive_plugin_form" %>
+ <%= javascript_include_tag "inc/jquery.imagesloaded.js" %>
+
+<% end %>
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/_form_file.html.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/_form_file.html.erb
new file mode 100644
index 000000000..6f3def50a
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/_form_file.html.erb
@@ -0,0 +1,37 @@
+<% # encoding: utf-8 %>
+
+<%= f.error_messages %>
+
+
" class='list_item'>
+
+
+
+ <%= f.file_field :file %>
+ <%= form_file.file.file ? ( link_to t(:view), form_file.file.url, {:class => 'btn', :target => '_blank', :title => t(:view)} ) : '' %>
+
+
+ |
+
+
+
+
+ <%= f.text_field :title %>
+
+
+
+ |
+
+
+
+ <% if form_file.new_record? %>
+
+ <% else %>
+ <%= f.hidden_field :id %>
+
+ <%= f.hidden_field :_destroy, :value => nil, :class => 'should_destroy' %>
+ <% end %>
+
+
+ |
+
+
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/_sort_headers.html.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/_sort_headers.html.erb
new file mode 100644
index 000000000..39932f7fc
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/_sort_headers.html.erb
@@ -0,0 +1,5 @@
+<%= 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 %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/destroy.js.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/destroy.js.erb
new file mode 100644
index 000000000..670413d8e
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/destroy.js.erb
@@ -0,0 +1 @@
+$("#<%= dom_id @email_er %>").remove();
\ No newline at end of file
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/edit.html.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/edit.html.erb
new file mode 100644
index 000000000..9a8c9bd2c
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/edit.html.erb
@@ -0,0 +1,6 @@
+
+
+<%= 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 %>
+
\ No newline at end of file
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/index.html.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/index.html.erb
new file mode 100644
index 000000000..375577b85
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/index.html.erb
@@ -0,0 +1,28 @@
+<%= render 'filter' %>
+
+
+
+
+ |
+ |
+ |
+ |
+ |
+
+
+
+ <%= render :partial => 'email_er', :collection => @email_ers %>
+
+
+
+
+
+<% content_for :page_specific_javascript do %>
+ <%= javascript_include_tag "/static/jquery.cycle.all.latest.js" %>
+ <%= javascript_include_tag "inc/modal-preview" %>
+<% end %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/index.js.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/index.js.erb
new file mode 100644
index 000000000..e45c20f58
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/index.js.erb
@@ -0,0 +1,4 @@
+$("#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} %>");
\ No newline at end of file
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/new.html.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/new.html.erb
new file mode 100644
index 000000000..8a56a278d
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/new.html.erb
@@ -0,0 +1,6 @@
+
+<%= 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 %>
+
+
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/realtime_preview.js.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/realtime_preview.js.erb
new file mode 100644
index 000000000..5358b8563
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/realtime_preview.js.erb
@@ -0,0 +1,2 @@
+$('#show_preview').html("<%= escape_javascript(render(:partial => 'modal_preview',:locals => {:email_er => @email_er})) %>");
+var start_modal_with_id = "email_er-<%=@email_er.id%>"
\ No newline at end of file
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/show.html.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/show.html.erb
new file mode 100644
index 000000000..307b39233
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/email_ers/show.html.erb
@@ -0,0 +1 @@
+ <%= @email_er.mail_content.html_safe %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/fact_checks/_privilege_user.html.erb b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/fact_checks/_privilege_user.html.erb
new file mode 100644
index 000000000..97d50933d
--- /dev/null
+++ b/vendor/built_in_modules/er_email/app/views/panel/er_email/back_end/fact_checks/_privilege_user.html.erb
@@ -0,0 +1,25 @@
+<%= content_tag :div ,:id => "users_checkbox_ary",:class => 'clear' do -%>
+<% sys_users = User.all.not_guest_user -%>
+ <% sys_users.each do |user| -%>
+
+
+ <% user.sub_roles.each do |sr| %>
+
<%= sr.key %>
+ <% 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 %>
+
+
+
+ <% if user.avatar? %>
+ <%= image_tag(user.avatar.thumb.url,:class => "member-img") %>
+ <% else %>
+ <%= image_tag "person.png",:class => "member-img" %>
+ <% end %>
+
+ <%= 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 -%>
+
+
+ <% end -%>
+<% end -%>
diff --git a/vendor/built_in_modules/er_email/config/locales/en.yml b/vendor/built_in_modules/er_email/config/locales/en.yml
new file mode 100644
index 000000000..a44d4f084
--- /dev/null
+++ b/vendor/built_in_modules/er_email/config/locales/en.yml
@@ -0,0 +1,27 @@
+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
\ No newline at end of file
diff --git a/vendor/built_in_modules/er_email/config/locales/zh_tw.yml b/vendor/built_in_modules/er_email/config/locales/zh_tw.yml
new file mode 100644
index 000000000..1553eeb4b
--- /dev/null
+++ b/vendor/built_in_modules/er_email/config/locales/zh_tw.yml
@@ -0,0 +1,27 @@
+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
\ No newline at end of file
diff --git a/vendor/built_in_modules/er_email/config/routes.rb b/vendor/built_in_modules/er_email/config/routes.rb
new file mode 100644
index 000000000..1fe6ae9f7
--- /dev/null
+++ b/vendor/built_in_modules/er_email/config/routes.rb
@@ -0,0 +1,36 @@
+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
diff --git a/vendor/built_in_modules/er_email/er_email.gemspec b/vendor/built_in_modules/er_email/er_email.gemspec
new file mode 100644
index 000000000..40628f546
--- /dev/null
+++ b/vendor/built_in_modules/er_email/er_email.gemspec
@@ -0,0 +1,23 @@
+$:.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
diff --git a/vendor/built_in_modules/er_email/init.rb b/vendor/built_in_modules/er_email/init.rb
new file mode 100644
index 000000000..d9a928b22
--- /dev/null
+++ b/vendor/built_in_modules/er_email/init.rb
@@ -0,0 +1,55 @@
+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
diff --git a/vendor/built_in_modules/er_email/lib/er_email.rb b/vendor/built_in_modules/er_email/lib/er_email.rb
new file mode 100644
index 000000000..0647b8f7e
--- /dev/null
+++ b/vendor/built_in_modules/er_email/lib/er_email.rb
@@ -0,0 +1,4 @@
+require "er_email/engine"
+
+module ErEmail
+end
diff --git a/vendor/built_in_modules/er_email/lib/er_email/engine.rb b/vendor/built_in_modules/er_email/lib/er_email/engine.rb
new file mode 100644
index 000000000..04d86130c
--- /dev/null
+++ b/vendor/built_in_modules/er_email/lib/er_email/engine.rb
@@ -0,0 +1,4 @@
+module ErEmail
+ class Engine < ::Rails::Engine
+ end
+end
diff --git a/vendor/built_in_modules/er_email/lib/er_email/version.rb b/vendor/built_in_modules/er_email/lib/er_email/version.rb
new file mode 100644
index 000000000..9893c44ae
--- /dev/null
+++ b/vendor/built_in_modules/er_email/lib/er_email/version.rb
@@ -0,0 +1,3 @@
+module ErEmail
+ VERSION = "0.0.1"
+end
diff --git a/vendor/built_in_modules/er_email/lib/tasks/er_email_tasks.rake b/vendor/built_in_modules/er_email/lib/tasks/er_email_tasks.rake
new file mode 100644
index 000000000..ece048450
--- /dev/null
+++ b/vendor/built_in_modules/er_email/lib/tasks/er_email_tasks.rake
@@ -0,0 +1,4 @@
+# desc "Explaining what the task does"
+# task :er_email do
+# # Task goes here
+# end
diff --git a/vendor/built_in_modules/er_email/script/rails b/vendor/built_in_modules/er_email/script/rails
new file mode 100755
index 000000000..7dcd15d4b
--- /dev/null
+++ b/vendor/built_in_modules/er_email/script/rails
@@ -0,0 +1,8 @@
+#!/usr/bin/env ruby
+# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
+
+ENGINE_ROOT = File.expand_path('../..', __FILE__)
+ENGINE_PATH = File.expand_path('../../lib/er_email/engine', __FILE__)
+
+require 'rails/all'
+require 'rails/engine/commands'
diff --git a/vendor/built_in_modules/er_email/test/dummy/README.rdoc b/vendor/built_in_modules/er_email/test/dummy/README.rdoc
new file mode 100644
index 000000000..7c36f2356
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/README.rdoc
@@ -0,0 +1,261 @@
+== Welcome to Rails
+
+Rails is a web-application framework that includes everything needed to create
+database-backed web applications according to the Model-View-Control pattern.
+
+This pattern splits the view (also called the presentation) into "dumb"
+templates that are primarily responsible for inserting pre-built data in between
+HTML tags. The model contains the "smart" domain objects (such as Account,
+Product, Person, Post) that holds all the business logic and knows how to
+persist themselves to a database. The controller handles the incoming requests
+(such as Save New Account, Update Product, Show Post) by manipulating the model
+and directing data to the view.
+
+In Rails, the model is handled by what's called an object-relational mapping
+layer entitled Active Record. This layer allows you to present the data from
+database rows as objects and embellish these data objects with business logic
+methods. You can read more about Active Record in
+link:files/vendor/rails/activerecord/README.html.
+
+The controller and view are handled by the Action Pack, which handles both
+layers by its two parts: Action View and Action Controller. These two layers
+are bundled in a single package due to their heavy interdependence. This is
+unlike the relationship between the Active Record and Action Pack that is much
+more separate. Each of these packages can be used independently outside of
+Rails. You can read more about Action Pack in
+link:files/vendor/rails/actionpack/README.html.
+
+
+== Getting Started
+
+1. At the command prompt, create a new Rails application:
+
rails new myapp (where
myapp is the application name)
+
+2. Change directory to
myapp and start the web server:
+
cd myapp; rails server (run with --help for options)
+
+3. Go to http://localhost:3000/ and you'll see:
+ "Welcome aboard: You're riding Ruby on Rails!"
+
+4. Follow the guidelines to start developing your application. You can find
+the following resources handy:
+
+* The Getting Started Guide: http://guides.rubyonrails.org/getting_started.html
+* Ruby on Rails Tutorial Book: http://www.railstutorial.org/
+
+
+== Debugging Rails
+
+Sometimes your application goes wrong. Fortunately there are a lot of tools that
+will help you debug it and get it back on the rails.
+
+First area to check is the application log files. Have "tail -f" commands
+running on the server.log and development.log. Rails will automatically display
+debugging and runtime information to these files. Debugging info will also be
+shown in the browser on requests from 127.0.0.1.
+
+You can also log your own messages directly into the log file from your code
+using the Ruby logger class from inside your controllers. Example:
+
+ class WeblogController < ActionController::Base
+ def destroy
+ @weblog = Weblog.find(params[:id])
+ @weblog.destroy
+ logger.info("#{Time.now} Destroyed Weblog ID ##{@weblog.id}!")
+ end
+ end
+
+The result will be a message in your log file along the lines of:
+
+ Mon Oct 08 14:22:29 +1000 2007 Destroyed Weblog ID #1!
+
+More information on how to use the logger is at http://www.ruby-doc.org/core/
+
+Also, Ruby documentation can be found at http://www.ruby-lang.org/. There are
+several books available online as well:
+
+* Programming Ruby: http://www.ruby-doc.org/docs/ProgrammingRuby/ (Pickaxe)
+* Learn to Program: http://pine.fm/LearnToProgram/ (a beginners guide)
+
+These two books will bring you up to speed on the Ruby language and also on
+programming in general.
+
+
+== Debugger
+
+Debugger support is available through the debugger command when you start your
+Mongrel or WEBrick server with --debugger. This means that you can break out of
+execution at any point in the code, investigate and change the model, and then,
+resume execution! You need to install ruby-debug to run the server in debugging
+mode. With gems, use
sudo gem install ruby-debug. Example:
+
+ class WeblogController < ActionController::Base
+ def index
+ @posts = Post.all
+ debugger
+ end
+ end
+
+So the controller will accept the action, run the first line, then present you
+with a IRB prompt in the server window. Here you can do things like:
+
+ >> @posts.inspect
+ => "[#
nil, "body"=>nil, "id"=>"1"}>,
+ #"Rails", "body"=>"Only ten..", "id"=>"2"}>]"
+ >> @posts.first.title = "hello from a debugger"
+ => "hello from a debugger"
+
+...and even better, you can examine how your runtime objects actually work:
+
+ >> f = @posts.first
+ => #nil, "body"=>nil, "id"=>"1"}>
+ >> f.
+ Display all 152 possibilities? (y or n)
+
+Finally, when you're ready to resume execution, you can enter "cont".
+
+
+== Console
+
+The console is a Ruby shell, which allows you to interact with your
+application's domain model. Here you'll have all parts of the application
+configured, just like it is when the application is running. You can inspect
+domain models, change values, and save to the database. Starting the script
+without arguments will launch it in the development environment.
+
+To start the console, run rails console from the application
+directory.
+
+Options:
+
+* Passing the -s, --sandbox argument will rollback any modifications
+ made to the database.
+* Passing an environment name as an argument will load the corresponding
+ environment. Example: rails console production.
+
+To reload your controllers and models after launching the console run
+reload!
+
+More information about irb can be found at:
+link:http://www.rubycentral.org/pickaxe/irb.html
+
+
+== dbconsole
+
+You can go to the command line of your database directly through rails
+dbconsole. You would be connected to the database with the credentials
+defined in database.yml. Starting the script without arguments will connect you
+to the development database. Passing an argument will connect you to a different
+database, like rails dbconsole production. Currently works for MySQL,
+PostgreSQL and SQLite 3.
+
+== Description of Contents
+
+The default directory structure of a generated Ruby on Rails application:
+
+ |-- app
+ | |-- assets
+ | |-- images
+ | |-- javascripts
+ | `-- stylesheets
+ | |-- controllers
+ | |-- helpers
+ | |-- mailers
+ | |-- models
+ | `-- views
+ | `-- layouts
+ |-- config
+ | |-- environments
+ | |-- initializers
+ | `-- locales
+ |-- db
+ |-- doc
+ |-- lib
+ | `-- tasks
+ |-- log
+ |-- public
+ |-- script
+ |-- test
+ | |-- fixtures
+ | |-- functional
+ | |-- integration
+ | |-- performance
+ | `-- unit
+ |-- tmp
+ | |-- cache
+ | |-- pids
+ | |-- sessions
+ | `-- sockets
+ `-- vendor
+ |-- assets
+ `-- stylesheets
+ `-- plugins
+
+app
+ Holds all the code that's specific to this particular application.
+
+app/assets
+ Contains subdirectories for images, stylesheets, and JavaScript files.
+
+app/controllers
+ Holds controllers that should be named like weblogs_controller.rb for
+ automated URL mapping. All controllers should descend from
+ ApplicationController which itself descends from ActionController::Base.
+
+app/models
+ Holds models that should be named like post.rb. Models descend from
+ ActiveRecord::Base by default.
+
+app/views
+ Holds the template files for the view that should be named like
+ weblogs/index.html.erb for the WeblogsController#index action. All views use
+ eRuby syntax by default.
+
+app/views/layouts
+ Holds the template files for layouts to be used with views. This models the
+ common header/footer method of wrapping views. In your views, define a layout
+ using the layout :default and create a file named default.html.erb.
+ Inside default.html.erb, call <% yield %> to render the view using this
+ layout.
+
+app/helpers
+ Holds view helpers that should be named like weblogs_helper.rb. These are
+ generated for you automatically when using generators for controllers.
+ Helpers can be used to wrap functionality for your views into methods.
+
+config
+ Configuration files for the Rails environment, the routing map, the database,
+ and other dependencies.
+
+db
+ Contains the database schema in schema.rb. db/migrate contains all the
+ sequence of Migrations for your schema.
+
+doc
+ This directory is where your application documentation will be stored when
+ generated using rake doc:app
+
+lib
+ Application specific libraries. Basically, any kind of custom code that
+ doesn't belong under controllers, models, or helpers. This directory is in
+ the load path.
+
+public
+ The directory available for the web server. Also contains the dispatchers and the
+ default HTML files. This should be set as the DOCUMENT_ROOT of your web
+ server.
+
+script
+ Helper scripts for automation and generation.
+
+test
+ Unit and functional tests along with fixtures. When using the rails generate
+ command, template test files will be generated for you and placed in this
+ directory.
+
+vendor
+ External libraries that the application depends on. Also includes the plugins
+ subdirectory. If the app has frozen rails, those gems also go here, under
+ vendor/rails/. This directory is in the load path.
diff --git a/vendor/built_in_modules/er_email/test/dummy/Rakefile b/vendor/built_in_modules/er_email/test/dummy/Rakefile
new file mode 100644
index 000000000..36458522c
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/Rakefile
@@ -0,0 +1,7 @@
+#!/usr/bin/env rake
+# Add your own tasks in files placed in lib/tasks ending in .rake,
+# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
+
+require File.expand_path('../config/application', __FILE__)
+
+Dummy::Application.load_tasks
diff --git a/vendor/built_in_modules/er_email/test/dummy/app/assets/javascripts/application.js b/vendor/built_in_modules/er_email/test/dummy/app/assets/javascripts/application.js
new file mode 100644
index 000000000..9097d830e
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/app/assets/javascripts/application.js
@@ -0,0 +1,15 @@
+// This is a manifest file that'll be compiled into application.js, which will include all the files
+// listed below.
+//
+// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
+// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
+//
+// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
+// the compiled file.
+//
+// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
+// GO AFTER THE REQUIRES BELOW.
+//
+//= require jquery
+//= require jquery_ujs
+//= require_tree .
diff --git a/vendor/built_in_modules/er_email/test/dummy/app/assets/stylesheets/application.css b/vendor/built_in_modules/er_email/test/dummy/app/assets/stylesheets/application.css
new file mode 100644
index 000000000..3192ec897
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/app/assets/stylesheets/application.css
@@ -0,0 +1,13 @@
+/*
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
+ * listed below.
+ *
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
+ * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
+ *
+ * You're free to add application-wide styles to this file and they'll appear at the top of the
+ * compiled file, but it's generally better to create a new file per style scope.
+ *
+ *= require_self
+ *= require_tree .
+ */
diff --git a/vendor/built_in_modules/er_email/test/dummy/app/controllers/application_controller.rb b/vendor/built_in_modules/er_email/test/dummy/app/controllers/application_controller.rb
new file mode 100644
index 000000000..e8065d950
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/app/controllers/application_controller.rb
@@ -0,0 +1,3 @@
+class ApplicationController < ActionController::Base
+ protect_from_forgery
+end
diff --git a/vendor/built_in_modules/er_email/test/dummy/app/helpers/application_helper.rb b/vendor/built_in_modules/er_email/test/dummy/app/helpers/application_helper.rb
new file mode 100644
index 000000000..de6be7945
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/app/helpers/application_helper.rb
@@ -0,0 +1,2 @@
+module ApplicationHelper
+end
diff --git a/vendor/built_in_modules/er_email/test/dummy/app/mailers/.gitkeep b/vendor/built_in_modules/er_email/test/dummy/app/mailers/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/vendor/built_in_modules/er_email/test/dummy/app/models/.gitkeep b/vendor/built_in_modules/er_email/test/dummy/app/models/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/vendor/built_in_modules/er_email/test/dummy/app/views/layouts/application.html.erb b/vendor/built_in_modules/er_email/test/dummy/app/views/layouts/application.html.erb
new file mode 100644
index 000000000..4cab26846
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/app/views/layouts/application.html.erb
@@ -0,0 +1,14 @@
+
+
+
+ Dummy
+ <%= stylesheet_link_tag "application", :media => "all" %>
+ <%= javascript_include_tag "application" %>
+ <%= csrf_meta_tags %>
+
+
+
+<%= yield %>
+
+
+
diff --git a/vendor/built_in_modules/er_email/test/dummy/config.ru b/vendor/built_in_modules/er_email/test/dummy/config.ru
new file mode 100644
index 000000000..1989ed8d0
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/config.ru
@@ -0,0 +1,4 @@
+# This file is used by Rack-based servers to start the application.
+
+require ::File.expand_path('../config/environment', __FILE__)
+run Dummy::Application
diff --git a/vendor/built_in_modules/er_email/test/dummy/config/application.rb b/vendor/built_in_modules/er_email/test/dummy/config/application.rb
new file mode 100644
index 000000000..c620eb9ff
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/config/application.rb
@@ -0,0 +1,59 @@
+require File.expand_path('../boot', __FILE__)
+
+require 'rails/all'
+
+Bundler.require
+require "er_email"
+
+module Dummy
+ class Application < Rails::Application
+ # Settings in config/environments/* take precedence over those specified here.
+ # Application configuration should go into files in config/initializers
+ # -- all .rb files in that directory are automatically loaded.
+
+ # Custom directories with classes and modules you want to be autoloadable.
+ # config.autoload_paths += %W(#{config.root}/extras)
+
+ # Only load the plugins named here, in the order given (default is alphabetical).
+ # :all can be used as a placeholder for all plugins not explicitly named.
+ # config.plugins = [ :exception_notification, :ssl_requirement, :all ]
+
+ # Activate observers that should always be running.
+ # config.active_record.observers = :cacher, :garbage_collector, :forum_observer
+
+ # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
+ # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
+ # config.time_zone = 'Central Time (US & Canada)'
+
+ # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
+ # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
+ # config.i18n.default_locale = :de
+
+ # Configure the default encoding used in templates for Ruby 1.9.
+ config.encoding = "utf-8"
+
+ # Configure sensitive parameters which will be filtered from the log file.
+ config.filter_parameters += [:password]
+
+ # Enable escaping HTML in JSON.
+ config.active_support.escape_html_entities_in_json = true
+
+ # Use SQL instead of Active Record's schema dumper when creating the database.
+ # This is necessary if your schema can't be completely dumped by the schema dumper,
+ # like if you have constraints or database-specific column types
+ # config.active_record.schema_format = :sql
+
+ # Enforce whitelist mode for mass assignment.
+ # This will create an empty whitelist of attributes available for mass-assignment for all models
+ # in your app. As such, your models will need to explicitly whitelist or blacklist accessible
+ # parameters by using an attr_accessible or attr_protected declaration.
+ config.active_record.whitelist_attributes = true
+
+ # Enable the asset pipeline
+ config.assets.enabled = true
+
+ # Version of your assets, change this if you want to expire all your assets
+ config.assets.version = '1.0'
+ end
+end
+
diff --git a/vendor/built_in_modules/er_email/test/dummy/config/boot.rb b/vendor/built_in_modules/er_email/test/dummy/config/boot.rb
new file mode 100644
index 000000000..eba068137
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/config/boot.rb
@@ -0,0 +1,10 @@
+require 'rubygems'
+gemfile = File.expand_path('../../../../Gemfile', __FILE__)
+
+if File.exist?(gemfile)
+ ENV['BUNDLE_GEMFILE'] = gemfile
+ require 'bundler'
+ Bundler.setup
+end
+
+$:.unshift File.expand_path('../../../../lib', __FILE__)
\ No newline at end of file
diff --git a/vendor/built_in_modules/er_email/test/dummy/config/database.yml b/vendor/built_in_modules/er_email/test/dummy/config/database.yml
new file mode 100644
index 000000000..51a4dd459
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/config/database.yml
@@ -0,0 +1,25 @@
+# SQLite version 3.x
+# gem install sqlite3
+#
+# Ensure the SQLite 3 gem is defined in your Gemfile
+# gem 'sqlite3'
+development:
+ adapter: sqlite3
+ database: db/development.sqlite3
+ pool: 5
+ timeout: 5000
+
+# Warning: The database defined as "test" will be erased and
+# re-generated from your development database when you run "rake".
+# Do not set this db to the same as development or production.
+test:
+ adapter: sqlite3
+ database: db/test.sqlite3
+ pool: 5
+ timeout: 5000
+
+production:
+ adapter: sqlite3
+ database: db/production.sqlite3
+ pool: 5
+ timeout: 5000
diff --git a/vendor/built_in_modules/er_email/test/dummy/config/environment.rb b/vendor/built_in_modules/er_email/test/dummy/config/environment.rb
new file mode 100644
index 000000000..3da5eb91d
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/config/environment.rb
@@ -0,0 +1,5 @@
+# Load the rails application
+require File.expand_path('../application', __FILE__)
+
+# Initialize the rails application
+Dummy::Application.initialize!
diff --git a/vendor/built_in_modules/er_email/test/dummy/config/environments/development.rb b/vendor/built_in_modules/er_email/test/dummy/config/environments/development.rb
new file mode 100644
index 000000000..82c74d154
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/config/environments/development.rb
@@ -0,0 +1,37 @@
+Dummy::Application.configure do
+ # Settings specified here will take precedence over those in config/application.rb
+
+ # In the development environment your application's code is reloaded on
+ # every request. This slows down response time but is perfect for development
+ # since you don't have to restart the web server when you make code changes.
+ config.cache_classes = false
+
+ # Log error messages when you accidentally call methods on nil.
+ config.whiny_nils = true
+
+ # Show full error reports and disable caching
+ config.consider_all_requests_local = true
+ config.action_controller.perform_caching = false
+
+ # Don't care if the mailer can't send
+ config.action_mailer.raise_delivery_errors = false
+
+ # Print deprecation notices to the Rails logger
+ config.active_support.deprecation = :log
+
+ # Only use best-standards-support built into browsers
+ config.action_dispatch.best_standards_support = :builtin
+
+ # Raise exception on mass assignment protection for Active Record models
+ config.active_record.mass_assignment_sanitizer = :strict
+
+ # Log the query plan for queries taking more than this (works
+ # with SQLite, MySQL, and PostgreSQL)
+ config.active_record.auto_explain_threshold_in_seconds = 0.5
+
+ # Do not compress assets
+ config.assets.compress = false
+
+ # Expands the lines which load the assets
+ config.assets.debug = true
+end
diff --git a/vendor/built_in_modules/er_email/test/dummy/config/environments/production.rb b/vendor/built_in_modules/er_email/test/dummy/config/environments/production.rb
new file mode 100644
index 000000000..bdac56a71
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/config/environments/production.rb
@@ -0,0 +1,67 @@
+Dummy::Application.configure do
+ # Settings specified here will take precedence over those in config/application.rb
+
+ # Code is not reloaded between requests
+ config.cache_classes = true
+
+ # Full error reports are disabled and caching is turned on
+ config.consider_all_requests_local = false
+ config.action_controller.perform_caching = true
+
+ # Disable Rails's static asset server (Apache or nginx will already do this)
+ config.serve_static_assets = false
+
+ # Compress JavaScripts and CSS
+ config.assets.compress = true
+
+ # Don't fallback to assets pipeline if a precompiled asset is missed
+ config.assets.compile = false
+
+ # Generate digests for assets URLs
+ config.assets.digest = true
+
+ # Defaults to nil and saved in location specified by config.assets.prefix
+ # config.assets.manifest = YOUR_PATH
+
+ # Specifies the header that your server uses for sending files
+ # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
+ # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
+
+ # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
+ # config.force_ssl = true
+
+ # See everything in the log (default is :info)
+ # config.log_level = :debug
+
+ # Prepend all log lines with the following tags
+ # config.log_tags = [ :subdomain, :uuid ]
+
+ # Use a different logger for distributed setups
+ # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
+
+ # Use a different cache store in production
+ # config.cache_store = :mem_cache_store
+
+ # Enable serving of images, stylesheets, and JavaScripts from an asset server
+ # config.action_controller.asset_host = "http://assets.example.com"
+
+ # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
+ # config.assets.precompile += %w( search.js )
+
+ # Disable delivery errors, bad email addresses will be ignored
+ # config.action_mailer.raise_delivery_errors = false
+
+ # Enable threaded mode
+ # config.threadsafe!
+
+ # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
+ # the I18n.default_locale when a translation can not be found)
+ config.i18n.fallbacks = true
+
+ # Send deprecation notices to registered listeners
+ config.active_support.deprecation = :notify
+
+ # Log the query plan for queries taking more than this (works
+ # with SQLite, MySQL, and PostgreSQL)
+ # config.active_record.auto_explain_threshold_in_seconds = 0.5
+end
diff --git a/vendor/built_in_modules/er_email/test/dummy/config/environments/test.rb b/vendor/built_in_modules/er_email/test/dummy/config/environments/test.rb
new file mode 100644
index 000000000..f1a481417
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/config/environments/test.rb
@@ -0,0 +1,37 @@
+Dummy::Application.configure do
+ # Settings specified here will take precedence over those in config/application.rb
+
+ # The test environment is used exclusively to run your application's
+ # test suite. You never need to work with it otherwise. Remember that
+ # your test database is "scratch space" for the test suite and is wiped
+ # and recreated between test runs. Don't rely on the data there!
+ config.cache_classes = true
+
+ # Configure static asset server for tests with Cache-Control for performance
+ config.serve_static_assets = true
+ config.static_cache_control = "public, max-age=3600"
+
+ # Log error messages when you accidentally call methods on nil
+ config.whiny_nils = true
+
+ # Show full error reports and disable caching
+ config.consider_all_requests_local = true
+ config.action_controller.perform_caching = false
+
+ # Raise exceptions instead of rendering exception templates
+ config.action_dispatch.show_exceptions = false
+
+ # Disable request forgery protection in test environment
+ config.action_controller.allow_forgery_protection = false
+
+ # Tell Action Mailer not to deliver emails to the real world.
+ # The :test delivery method accumulates sent emails in the
+ # ActionMailer::Base.deliveries array.
+ config.action_mailer.delivery_method = :test
+
+ # Raise exception on mass assignment protection for Active Record models
+ config.active_record.mass_assignment_sanitizer = :strict
+
+ # Print deprecation notices to the stderr
+ config.active_support.deprecation = :stderr
+end
diff --git a/vendor/built_in_modules/er_email/test/dummy/config/initializers/backtrace_silencers.rb b/vendor/built_in_modules/er_email/test/dummy/config/initializers/backtrace_silencers.rb
new file mode 100644
index 000000000..59385cdf3
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/config/initializers/backtrace_silencers.rb
@@ -0,0 +1,7 @@
+# Be sure to restart your server when you modify this file.
+
+# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
+# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
+
+# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
+# Rails.backtrace_cleaner.remove_silencers!
diff --git a/vendor/built_in_modules/er_email/test/dummy/config/initializers/inflections.rb b/vendor/built_in_modules/er_email/test/dummy/config/initializers/inflections.rb
new file mode 100644
index 000000000..5d8d9be23
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/config/initializers/inflections.rb
@@ -0,0 +1,15 @@
+# Be sure to restart your server when you modify this file.
+
+# Add new inflection rules using the following format
+# (all these examples are active by default):
+# ActiveSupport::Inflector.inflections do |inflect|
+# inflect.plural /^(ox)$/i, '\1en'
+# inflect.singular /^(ox)en/i, '\1'
+# inflect.irregular 'person', 'people'
+# inflect.uncountable %w( fish sheep )
+# end
+#
+# These inflection rules are supported but not enabled by default:
+# ActiveSupport::Inflector.inflections do |inflect|
+# inflect.acronym 'RESTful'
+# end
diff --git a/vendor/built_in_modules/er_email/test/dummy/config/initializers/mime_types.rb b/vendor/built_in_modules/er_email/test/dummy/config/initializers/mime_types.rb
new file mode 100644
index 000000000..72aca7e44
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/config/initializers/mime_types.rb
@@ -0,0 +1,5 @@
+# Be sure to restart your server when you modify this file.
+
+# Add new mime types for use in respond_to blocks:
+# Mime::Type.register "text/richtext", :rtf
+# Mime::Type.register_alias "text/html", :iphone
diff --git a/vendor/built_in_modules/er_email/test/dummy/config/initializers/secret_token.rb b/vendor/built_in_modules/er_email/test/dummy/config/initializers/secret_token.rb
new file mode 100644
index 000000000..530ccd6c0
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/config/initializers/secret_token.rb
@@ -0,0 +1,7 @@
+# Be sure to restart your server when you modify this file.
+
+# Your secret key for verifying the integrity of signed cookies.
+# If you change this key, all old signed cookies will become invalid!
+# Make sure the secret is at least 30 characters and all random,
+# no regular words or you'll be exposed to dictionary attacks.
+Dummy::Application.config.secret_token = 'ac15a913a22acfd8176f22613d574d3173e7396f613dd8c6932d0b097db26c33d6b93d43249b4bf5433c70aaf59f73c9f3a9058e2482309d770f18b3a7f82eb2'
diff --git a/vendor/built_in_modules/er_email/test/dummy/config/initializers/session_store.rb b/vendor/built_in_modules/er_email/test/dummy/config/initializers/session_store.rb
new file mode 100644
index 000000000..952473ff9
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/config/initializers/session_store.rb
@@ -0,0 +1,8 @@
+# Be sure to restart your server when you modify this file.
+
+Dummy::Application.config.session_store :cookie_store, key: '_dummy_session'
+
+# Use the database for sessions instead of the cookie-based default,
+# which shouldn't be used to store highly confidential information
+# (create the session table with "rails generate session_migration")
+# Dummy::Application.config.session_store :active_record_store
diff --git a/vendor/built_in_modules/er_email/test/dummy/config/initializers/wrap_parameters.rb b/vendor/built_in_modules/er_email/test/dummy/config/initializers/wrap_parameters.rb
new file mode 100644
index 000000000..999df2018
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/config/initializers/wrap_parameters.rb
@@ -0,0 +1,14 @@
+# Be sure to restart your server when you modify this file.
+#
+# This file contains settings for ActionController::ParamsWrapper which
+# is enabled by default.
+
+# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
+ActiveSupport.on_load(:action_controller) do
+ wrap_parameters format: [:json]
+end
+
+# Disable root element in JSON by default.
+ActiveSupport.on_load(:active_record) do
+ self.include_root_in_json = false
+end
diff --git a/vendor/built_in_modules/er_email/test/dummy/config/locales/en.yml b/vendor/built_in_modules/er_email/test/dummy/config/locales/en.yml
new file mode 100644
index 000000000..179c14ca5
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/config/locales/en.yml
@@ -0,0 +1,5 @@
+# Sample localization file for English. Add more files in this directory for other locales.
+# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
+
+en:
+ hello: "Hello world"
diff --git a/vendor/built_in_modules/er_email/test/dummy/config/routes.rb b/vendor/built_in_modules/er_email/test/dummy/config/routes.rb
new file mode 100644
index 000000000..eb8579be8
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/config/routes.rb
@@ -0,0 +1,58 @@
+Dummy::Application.routes.draw do
+ # The priority is based upon order of creation:
+ # first created -> highest priority.
+
+ # Sample of regular route:
+ # match 'products/:id' => 'catalog#view'
+ # Keep in mind you can assign values other than :controller and :action
+
+ # Sample of named route:
+ # match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
+ # This route can be invoked with purchase_url(:id => product.id)
+
+ # Sample resource route (maps HTTP verbs to controller actions automatically):
+ # resources :products
+
+ # Sample resource route with options:
+ # resources :products do
+ # member do
+ # get 'short'
+ # post 'toggle'
+ # end
+ #
+ # collection do
+ # get 'sold'
+ # end
+ # end
+
+ # Sample resource route with sub-resources:
+ # resources :products do
+ # resources :comments, :sales
+ # resource :seller
+ # end
+
+ # Sample resource route with more complex sub-resources
+ # resources :products do
+ # resources :comments
+ # resources :sales do
+ # get 'recent', :on => :collection
+ # end
+ # end
+
+ # Sample resource route within a namespace:
+ # namespace :admin do
+ # # Directs /admin/products/* to Admin::ProductsController
+ # # (app/controllers/admin/products_controller.rb)
+ # resources :products
+ # end
+
+ # You can have the root of your site routed with "root"
+ # just remember to delete public/index.html.
+ # root :to => 'welcome#index'
+
+ # See how all your routes lay out with "rake routes"
+
+ # This is a legacy wild controller route that's not recommended for RESTful applications.
+ # Note: This route will make all actions in every controller accessible via GET requests.
+ # match ':controller(/:action(/:id))(.:format)'
+end
diff --git a/vendor/built_in_modules/er_email/test/dummy/lib/assets/.gitkeep b/vendor/built_in_modules/er_email/test/dummy/lib/assets/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/vendor/built_in_modules/er_email/test/dummy/log/.gitkeep b/vendor/built_in_modules/er_email/test/dummy/log/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/vendor/built_in_modules/er_email/test/dummy/public/404.html b/vendor/built_in_modules/er_email/test/dummy/public/404.html
new file mode 100644
index 000000000..9a48320a5
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/public/404.html
@@ -0,0 +1,26 @@
+
+
+
+ The page you were looking for doesn't exist (404)
+
+
+
+
+
+
+
The page you were looking for doesn't exist.
+
You may have mistyped the address or the page may have moved.
+
+
+
diff --git a/vendor/built_in_modules/er_email/test/dummy/public/422.html b/vendor/built_in_modules/er_email/test/dummy/public/422.html
new file mode 100644
index 000000000..83660ab18
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/public/422.html
@@ -0,0 +1,26 @@
+
+
+
+ The change you wanted was rejected (422)
+
+
+
+
+
+
+
The change you wanted was rejected.
+
Maybe you tried to change something you didn't have access to.
+
+
+
diff --git a/vendor/built_in_modules/er_email/test/dummy/public/500.html b/vendor/built_in_modules/er_email/test/dummy/public/500.html
new file mode 100644
index 000000000..f3648a0db
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/public/500.html
@@ -0,0 +1,25 @@
+
+
+
+ We're sorry, but something went wrong (500)
+
+
+
+
+
+
+
We're sorry, but something went wrong.
+
+
+
diff --git a/vendor/built_in_modules/er_email/test/dummy/public/favicon.ico b/vendor/built_in_modules/er_email/test/dummy/public/favicon.ico
new file mode 100644
index 000000000..e69de29bb
diff --git a/vendor/built_in_modules/er_email/test/dummy/script/rails b/vendor/built_in_modules/er_email/test/dummy/script/rails
new file mode 100755
index 000000000..f8da2cffd
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/dummy/script/rails
@@ -0,0 +1,6 @@
+#!/usr/bin/env ruby
+# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
+
+APP_PATH = File.expand_path('../../config/application', __FILE__)
+require File.expand_path('../../config/boot', __FILE__)
+require 'rails/commands'
diff --git a/vendor/built_in_modules/er_email/test/er_email_test.rb b/vendor/built_in_modules/er_email/test/er_email_test.rb
new file mode 100644
index 000000000..971b4b3e5
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/er_email_test.rb
@@ -0,0 +1,7 @@
+require 'test_helper'
+
+class ErEmailTest < ActiveSupport::TestCase
+ test "truth" do
+ assert_kind_of Module, ErEmail
+ end
+end
diff --git a/vendor/built_in_modules/er_email/test/integration/navigation_test.rb b/vendor/built_in_modules/er_email/test/integration/navigation_test.rb
new file mode 100644
index 000000000..97a94c9bb
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/integration/navigation_test.rb
@@ -0,0 +1,10 @@
+require 'test_helper'
+
+class NavigationTest < ActionDispatch::IntegrationTest
+ fixtures :all
+
+ # test "the truth" do
+ # assert true
+ # end
+end
+
diff --git a/vendor/built_in_modules/er_email/test/test_helper.rb b/vendor/built_in_modules/er_email/test/test_helper.rb
new file mode 100644
index 000000000..1e26a313c
--- /dev/null
+++ b/vendor/built_in_modules/er_email/test/test_helper.rb
@@ -0,0 +1,15 @@
+# Configure Rails Environment
+ENV["RAILS_ENV"] = "test"
+
+require File.expand_path("../dummy/config/environment.rb", __FILE__)
+require "rails/test_help"
+
+Rails.backtrace_cleaner.remove_silencers!
+
+# Load support files
+Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
+
+# Load fixtures from the engine
+if ActiveSupport::TestCase.method_defined?(:fixture_path=)
+ ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
+end