diff --git a/app/jobs/send_ask_notice_mail.rb b/app/jobs/send_ask_notice_mail.rb
new file mode 100644
index 000000000..9a82c7e38
--- /dev/null
+++ b/app/jobs/send_ask_notice_mail.rb
@@ -0,0 +1,10 @@
+class SendAskNoticeMail
+ @queue = :mail
+
+ def self.perform(ask_admin_id, ask_question_id)
+ ask_admin = AskAdmin.find(ask_admin_id)
+ ask_question = AskQuestion.find(ask_question_id)
+ AskMailer.notice(ask_admin, ask_question).deliver
+ end
+
+end
diff --git a/app/jobs/send_ask_reply_mail.rb b/app/jobs/send_ask_reply_mail.rb
new file mode 100644
index 000000000..9f892d525
--- /dev/null
+++ b/app/jobs/send_ask_reply_mail.rb
@@ -0,0 +1,9 @@
+class SendAskReplyMail
+ @queue = :mail
+
+ def self.perform(ask_question_id)
+ ask_question = AskQuestion.find(ask_question_id)
+ AskMailer.reply(ask_question).deliver
+ end
+
+end
diff --git a/vendor/built_in_modules/ask/app/controllers/panel/ask/back_end/ask_acknowledgements_controller.rb b/vendor/built_in_modules/ask/app/controllers/panel/ask/back_end/ask_acknowledgements_controller.rb
new file mode 100644
index 000000000..c894bb429
--- /dev/null
+++ b/vendor/built_in_modules/ask/app/controllers/panel/ask/back_end/ask_acknowledgements_controller.rb
@@ -0,0 +1,21 @@
+class Panel::Ask::BackEnd::AskAcknowledgementsController < OrbitBackendController
+ include AdminHelper
+ include OrbitControllerLib::DivisionForDisable
+
+ def initialize
+ super
+ @app_title = 'ask_acknowledgement'
+ end
+
+ def index
+ @ask_acknowledgement = AskAcknowledgement.first || AskAcknowledgement.create
+ @url = panel_ask_back_end_ask_acknowledgement_path(@ask_acknowledgement)
+ end
+
+ def update
+ @ask_acknowledgement = AskAcknowledgement.first
+ @ask_acknowledgement.update_attributes(params[:ask_acknowledgement])
+ redirect_to panel_ask_back_end_ask_acknowledgements_path, notice: t('ask.save_success')
+ end
+
+end
diff --git a/vendor/built_in_modules/ask/app/controllers/panel/ask/back_end/ask_admins_controller.rb b/vendor/built_in_modules/ask/app/controllers/panel/ask/back_end/ask_admins_controller.rb
new file mode 100644
index 000000000..5b79779df
--- /dev/null
+++ b/vendor/built_in_modules/ask/app/controllers/panel/ask/back_end/ask_admins_controller.rb
@@ -0,0 +1,54 @@
+class Panel::Ask::BackEnd::AskAdminsController < OrbitBackendController
+
+ include AdminHelper
+ include OrbitControllerLib::DivisionForDisable
+
+ def initialize
+ super
+ @app_title = 'ask_admins'
+ end
+
+ def index
+ @ask_admins = AskAdmin.all
+ @ask_admin = AskAdmin.new
+ @url = panel_ask_back_end_ask_admins_path
+ end
+
+ def create
+ @ask_admin = AskAdmin.new(params[:ask_admin])
+ @ask_admin.save
+
+ respond_to do |format|
+ format.js
+ end
+ end
+
+ def edit
+ @ask_admin = AskAdmin.find(params[:id])
+ @url = panel_ask_back_end_ask_admin_path(@ask_admin)
+
+ respond_to do |format|
+ format.js
+ end
+ end
+
+ def update
+ @ask_admin = AskAdmin.find(params[:id])
+ @url = panel_ask_back_end_ask_admin_path(@ask_admin)
+ @ask_admin.update_attributes(params[:ask_admin])
+
+ respond_to do |format|
+ format.js
+ end
+ end
+
+ def destroy
+ @ask_admin = AskAdmin.find(params[:id])
+ @ask_admin.destroy
+
+ respond_to do |format|
+ format.js
+ end
+ end
+
+end
diff --git a/vendor/built_in_modules/ask/app/controllers/panel/ask/back_end/ask_questions_controller.rb b/vendor/built_in_modules/ask/app/controllers/panel/ask/back_end/ask_questions_controller.rb
index 7cd5bb9b7..bb6b273ff 100644
--- a/vendor/built_in_modules/ask/app/controllers/panel/ask/back_end/ask_questions_controller.rb
+++ b/vendor/built_in_modules/ask/app/controllers/panel/ask/back_end/ask_questions_controller.rb
@@ -80,6 +80,6 @@ class Panel::Ask::BackEnd::AskQuestionsController < OrbitBackendController
ask_question.ask_reply.comment ]
end
end
- send_data csv, type: 'text/csv', filename: "#{t('ask.ask')}#{date_start}-#{date_end}.csv"
+ send_data csv.encode('Big5'), type: 'text/csv', filename: "Questions-#{date_start}-#{date_end}.csv"
end
end
diff --git a/vendor/built_in_modules/ask/app/controllers/panel/ask/back_end/ask_replies_controller.rb b/vendor/built_in_modules/ask/app/controllers/panel/ask/back_end/ask_replies_controller.rb
index 3d6582b36..2498669c6 100644
--- a/vendor/built_in_modules/ask/app/controllers/panel/ask/back_end/ask_replies_controller.rb
+++ b/vendor/built_in_modules/ask/app/controllers/panel/ask/back_end/ask_replies_controller.rb
@@ -1,5 +1,3 @@
-require File.expand_path('../../../../../mailers/ask_mailer', __FILE__)
-
class Panel::Ask::BackEnd::AskRepliesController < OrbitBackendController
include AdminHelper
@@ -16,19 +14,15 @@ class Panel::Ask::BackEnd::AskRepliesController < OrbitBackendController
if @ask_question.ask_reply.send_email?
::AskMailer.reply(@ask_question).deliver
end
- respond_to do |format|
- format.js
- end
+ redirect_to panel_ask_back_end_ask_questions_path, notice: t('ask.reply_success')
end
def update
@ask_reply = AskReply.find(params[:id])
@ask_reply.update_attributes(params[:ask_reply])
if @ask_reply.send_email?
- ::AskMailer.reply(@ask_reply.ask_question).deliver
- end
- respond_to do |format|
- format.js
+ Resque.enqueue(SendAskReplyMail, @reply.ask_question.id)
end
+ redirect_to panel_ask_back_end_ask_questions_path, notice: t('ask.reply_success')
end
end
diff --git a/vendor/built_in_modules/ask/app/controllers/panel/ask/front_end/ask_questions_controller.rb b/vendor/built_in_modules/ask/app/controllers/panel/ask/front_end/ask_questions_controller.rb
index 03fb9ae00..5b985a8da 100644
--- a/vendor/built_in_modules/ask/app/controllers/panel/ask/front_end/ask_questions_controller.rb
+++ b/vendor/built_in_modules/ask/app/controllers/panel/ask/front_end/ask_questions_controller.rb
@@ -14,7 +14,14 @@ class Panel::Ask::FrontEnd::AskQuestionsController < OrbitWidgetController
def create
@ask_question = AskQuestion.new(params[:ask_question])
if verify_recaptcha model: @ask_question, private_key: '6Lfl7OESAAAAAD4rl5S16-zjt5yiKNYJ6jsqdwmL'
+ @ask_acknowledgement = AskAcknowledgement.first
@ask_question.save
+ AskAdmin.all.each do |ask_admin|
+ Resque.enqueue(SendAskNoticeMail, ask_admin.id, @ask_question.id)
+ end
+ end
+ respond_to do |format|
+ format.js
end
end
diff --git a/vendor/built_in_modules/ask/app/mailers/ask_mailer.rb b/vendor/built_in_modules/ask/app/mailers/ask_mailer.rb
index 1868688f0..5f0ebb886 100644
--- a/vendor/built_in_modules/ask/app/mailers/ask_mailer.rb
+++ b/vendor/built_in_modules/ask/app/mailers/ask_mailer.rb
@@ -1,4 +1,3 @@
-# encoding: utf-8
class AskMailer < ActionMailer::Base
default from: 'orbit_test@rulingcom.com'
@@ -6,4 +5,10 @@ class AskMailer < ActionMailer::Base
@ask_question = ask_question
mail(:to => @ask_question.email, :subject => "#{t('ask.reply')}:#{@ask_question.title}")
end
+
+ def notice(ask_admin, ask_question)
+ @ask_admin = ask_admin
+ @ask_question = ask_question
+ mail(:to => @ask_admin.email, :subject => "#{t('ask.new_question')}:#{@ask_question.title}")
+ end
end
diff --git a/vendor/built_in_modules/ask/app/models/ask_acknowledgement.rb b/vendor/built_in_modules/ask/app/models/ask_acknowledgement.rb
new file mode 100644
index 000000000..6ba7f7bd2
--- /dev/null
+++ b/vendor/built_in_modules/ask/app/models/ask_acknowledgement.rb
@@ -0,0 +1,6 @@
+class AskAcknowledgement
+ include Mongoid::Document
+ include Mongoid::Timestamps
+
+ field :content, type: String
+end
diff --git a/vendor/built_in_modules/ask/app/models/ask_admin.rb b/vendor/built_in_modules/ask/app/models/ask_admin.rb
new file mode 100644
index 000000000..3d2b6fc5d
--- /dev/null
+++ b/vendor/built_in_modules/ask/app/models/ask_admin.rb
@@ -0,0 +1,6 @@
+class AskAdmin
+ include Mongoid::Document
+ include Mongoid::Timestamps
+
+ field :email, type: String
+end
diff --git a/vendor/built_in_modules/ask/app/views/ask_mailer/notice.html.erb b/vendor/built_in_modules/ask/app/views/ask_mailer/notice.html.erb
new file mode 100644
index 000000000..9ddcda5dc
--- /dev/null
+++ b/vendor/built_in_modules/ask/app/views/ask_mailer/notice.html.erb
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ <%= @ask_question.title %>
+
+
+ <%= AskQuestion.human_attribute_name(:name) %>: |
+ <%= @ask_question.name %> |
+
+
+ <%= AskQuestion.human_attribute_name(:identity) %>: |
+ <%= @ask_question.identity %> |
+
+
+ <%= AskQuestion.human_attribute_name(:email) %>: |
+ <%= @ask_question.email %> |
+
+
+ <%= AskQuestion.human_attribute_name(:phone) %>: |
+ <%= @ask_question.phone %> |
+
+
+ <%= AskQuestion.human_attribute_name(:tax) %>: |
+ <%= @ask_question.tax %> |
+
+
+ <%= AskQuestion.human_attribute_name(:content) %>: |
+ <%= @ask_question.content %> |
+
+
+
+
diff --git a/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_acknowledgements/index.html.erb b/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_acknowledgements/index.html.erb
new file mode 100644
index 000000000..e1583b340
--- /dev/null
+++ b/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_acknowledgements/index.html.erb
@@ -0,0 +1,14 @@
+
+ <%= form_for @ask_acknowledgement, url: @url, html: { class: 'form-horizontal' } do |f| %>
+
+ <%= f.label :content, t('ask.acknowledgement'), class: 'control-label' %>
+
+ <%= f.text_area :content, rows: 10 %>
+
+
+
+ <%= f.submit t('submit'), class: 'btn btn-primary' %>
+ <%= f.button t('cancel'), type: 'reset', class: 'btn' %>
+
+ <% end %>
+
diff --git a/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_admins/_ask_admin.html.erb b/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_admins/_ask_admin.html.erb
new file mode 100644
index 000000000..a0afbe7d0
--- /dev/null
+++ b/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_admins/_ask_admin.html.erb
@@ -0,0 +1,13 @@
+
+
+ <%= ask_admin.email %>
+ <%if at_least_module_manager %>
+
+
+ - <%= link_to t(:edit), edit_panel_ask_back_end_ask_admin_path(ask_admin), :remote => true %>
+ - <%= link_to t(:delete), panel_ask_back_end_ask_admin_path(ask_admin), :confirm => t(:sure?), :method => :delete, :remote => true ,:class=> "archive_toggle"%>
+
+
+ <% end -%>
+ |
+
diff --git a/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_admins/_form.html.erb b/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_admins/_form.html.erb
new file mode 100644
index 000000000..c2cea3fe2
--- /dev/null
+++ b/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_admins/_form.html.erb
@@ -0,0 +1,19 @@
+<%= form_for(@ask_admin, :remote => true, :url => @url) do |f| %>
+
+ <%= @ask_admin.new_record? ? t(:add) : t(:edit) %>
+
+
+
+
+ <%= f.submit t(:submit), class: 'btn btn-primary' %>
+
+
+<% end %>
+
diff --git a/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_admins/create.js.erb b/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_admins/create.js.erb
new file mode 100644
index 000000000..ff74c7338
--- /dev/null
+++ b/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_admins/create.js.erb
@@ -0,0 +1,2 @@
+$('<%= j render :partial => 'ask_admin', :collection => [@ask_admin] %>').appendTo('#ask-admins').hide().fadeIn();
+$("#new_ask_admin")[0].reset();
diff --git a/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_admins/destroy.js.erb b/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_admins/destroy.js.erb
new file mode 100644
index 000000000..338cc2fba
--- /dev/null
+++ b/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_admins/destroy.js.erb
@@ -0,0 +1 @@
+$("#<%= dom_id @ask_admin %>").fadeOut();
diff --git a/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_admins/edit.js.erb b/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_admins/edit.js.erb
new file mode 100644
index 000000000..40061b9fc
--- /dev/null
+++ b/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_admins/edit.js.erb
@@ -0,0 +1 @@
+$("#form > form").replaceWith("<%= j render "form" %>");
diff --git a/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_admins/index.html.erb b/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_admins/index.html.erb
new file mode 100644
index 000000000..c73aaea3d
--- /dev/null
+++ b/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_admins/index.html.erb
@@ -0,0 +1,23 @@
+<%= flash_messages %>
+
+
+
+
+ <%= render :partial => 'ask_admin', :collection => @ask_admins %>
+
+
+
+<%= render :partial => "form" if at_least_module_manager%>
+
diff --git a/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_admins/update.js.erb b/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_admins/update.js.erb
new file mode 100644
index 000000000..83abbfa31
--- /dev/null
+++ b/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_admins/update.js.erb
@@ -0,0 +1,4 @@
+$("#<%= dom_id @ask_admin %>").replaceWith("<%= j render :partial => 'ask_admin', :collection => [@ask_admin] %>");
+<% @ask_admin = AskAdmin.new(:display => 'List') # reset for new form %>
+$(".edit_ask_admin").replaceWith("<%= j render "form" %>")
+$(".new_ask_admin")[0].reset();
diff --git a/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_questions/edit.html.erb b/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_questions/edit.html.erb
index c962c166b..cf4fa408f 100644
--- a/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_questions/edit.html.erb
+++ b/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_questions/edit.html.erb
@@ -1,5 +1,5 @@
- <%= form_for @ask_question.ask_reply, url: @url, remote: true do |f| %>
+ <%= form_for @ask_question.ask_reply, url: @url do |f| %>
<%= AskQuestion.human_attribute_name(:name) %>:<%= @ask_question.name %> |
diff --git a/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_replies/create.js.erb b/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_replies/create.js.erb
deleted file mode 100644
index d9cd3d5ff..000000000
--- a/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_replies/create.js.erb
+++ /dev/null
@@ -1 +0,0 @@
-alert('<%= t('ask.reply_success') %>');
diff --git a/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_replies/update.js.erb b/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_replies/update.js.erb
deleted file mode 100644
index d9cd3d5ff..000000000
--- a/vendor/built_in_modules/ask/app/views/panel/ask/back_end/ask_replies/update.js.erb
+++ /dev/null
@@ -1 +0,0 @@
-alert('<%= t('ask.reply_success') %>');
diff --git a/vendor/built_in_modules/ask/app/views/panel/ask/front_end/ask_questions/create.html.erb b/vendor/built_in_modules/ask/app/views/panel/ask/front_end/ask_questions/create.html.erb
deleted file mode 100644
index a310ecce6..000000000
--- a/vendor/built_in_modules/ask/app/views/panel/ask/front_end/ask_questions/create.html.erb
+++ /dev/null
@@ -1,5 +0,0 @@
-<% if @ask_question.errors.empty? %>
- alert('<%= t('ask.ask_question_success') %>');
-<% else %>
- alert('<%= @ask_question.errors.full_messages.join('\n') %>');
-<% end %>
diff --git a/vendor/built_in_modules/ask/app/views/panel/ask/front_end/ask_questions/create.js.erb b/vendor/built_in_modules/ask/app/views/panel/ask/front_end/ask_questions/create.js.erb
new file mode 100644
index 000000000..57fcc5ac1
--- /dev/null
+++ b/vendor/built_in_modules/ask/app/views/panel/ask/front_end/ask_questions/create.js.erb
@@ -0,0 +1,7 @@
+<% if @ask_question.errors.empty? %>
+ $('#acknowledgement').html('<%= t('ask.save_success') %>!
<%= @ask_acknowledgement.content %>
');
+ $('html,body').scrollTop(0);
+<% else %>
+ alert('<%= @ask_question.errors.full_messages.join('\n') %>');
+ Recaptcha.reload()
+<% end %>
diff --git a/vendor/built_in_modules/ask/app/views/panel/ask/front_end/ask_questions/index.html.erb b/vendor/built_in_modules/ask/app/views/panel/ask/front_end/ask_questions/index.html.erb
index e38359fef..2a6cc8730 100644
--- a/vendor/built_in_modules/ask/app/views/panel/ask/front_end/ask_questions/index.html.erb
+++ b/vendor/built_in_modules/ask/app/views/panel/ask/front_end/ask_questions/index.html.erb
@@ -1,4 +1,11 @@
+
+
<%= form_for @ask_question, url: panel_ask_front_end_ask_questions_path(standalone: true), remote: true,
html: {class: 'form-horizontal'} do |f| %>
@@ -16,7 +23,11 @@
<%= f.label :identity, class: 'control-label required' %>
- <%= f.text_field :identity %>
+ <%= f.select :identity, options_for_select( [t('ask.teacher'),
+ t('ask.stuff'),
+ t('ask.student'),
+ t('ask.schoolfellow'),
+ t('ask.others')].map{|i| [i, i]} ) %>
@@ -67,10 +78,7 @@
});
$('#new-ask-question form') .submit(function() {
- $.post($(this).attr('action'), $(this).serializeArray(), function(response) {
- eval(response)
- Recaptcha.reload()
- });
+ $.post($(this).attr('action'), $(this).serializeArray());
return false;
});
});
diff --git a/vendor/built_in_modules/ask/config/locales/en.yml b/vendor/built_in_modules/ask/config/locales/en.yml
index faab29036..8ff7dc558 100644
--- a/vendor/built_in_modules/ask/config/locales/en.yml
+++ b/vendor/built_in_modules/ask/config/locales/en.yml
@@ -7,7 +7,15 @@ en:
to: To
widget:
index: Form
- ask_question_success: Successfully saved,jump back now
+ save_success: Successfully saved
+ teacher: Teacher
+ stuff: Stuff
+ student: Student
+ schoolfellow: Schoolfellow
+ others: Others
+ acknowledgement: Acknowledgement
+ admin: Administrator
+ new_question: New question
mongoid:
attributes:
ask_question:
diff --git a/vendor/built_in_modules/ask/config/locales/zh_tw.yml b/vendor/built_in_modules/ask/config/locales/zh_tw.yml
index c463cccd8..7d597233b 100644
--- a/vendor/built_in_modules/ask/config/locales/zh_tw.yml
+++ b/vendor/built_in_modules/ask/config/locales/zh_tw.yml
@@ -12,7 +12,15 @@ zh_tw:
no: 否
widget:
index: 表單
- ask_question_success: 儲存成功
+ save_success: 儲存成功
+ teacher: 教師
+ stuff: 職員
+ student: 學生
+ schoolfellow: 校友
+ others: 其他
+ acknowledgement: 感謝詞
+ admin: 管理者
+ new_question: 新的發問
mongoid:
attributes:
ask_question:
diff --git a/vendor/built_in_modules/ask/config/routes.rb b/vendor/built_in_modules/ask/config/routes.rb
index a6d2d3aad..6ba0ed45c 100644
--- a/vendor/built_in_modules/ask/config/routes.rb
+++ b/vendor/built_in_modules/ask/config/routes.rb
@@ -12,8 +12,9 @@ Rails.application.routes.draw do
resources :ask_replies
end
-
resources :ask_categories
+ resources :ask_acknowledgements
+ resources :ask_admins
end
namespace :front_end do
diff --git a/vendor/built_in_modules/ask/init.rb b/vendor/built_in_modules/ask/init.rb
index 8ef6526f1..0b20d5581 100644
--- a/vendor/built_in_modules/ask/init.rb
+++ b/vendor/built_in_modules/ask/init.rb
@@ -22,7 +22,7 @@ module Ask
end
side_bar do
- head_label_i18n 'ask.ask', icon_class: 'icons-text'
+ head_label_i18n 'ask.ask', icon_class: 'icons-light-bulb'
available_for [:admin,:manager,:sub_manager]
active_for_controllers({ private: ['ask_questions'] })
head_link_path "panel_ask_back_end_ask_questions_path"
@@ -32,6 +32,14 @@ module Ask
active_for_action: {:ask_categories=>:index},
available_for: [:all]
+ context_link 'ask.acknowledgement', link_path: 'panel_ask_back_end_ask_acknowledgements_path',
+ priority: 1,
+ available_for: [:all]
+
+ context_link 'ask.admin', link_path: 'panel_ask_back_end_ask_admins_path',
+ priority: 1,
+ available_for: [:all]
+
context_link 'ask.export', link_path: 'export_panel_ask_back_end_ask_questions_path',
priority: 1,
available_for: [:all]