From f0f6e809af52be84e8bf559cf648c6d70f628f3b Mon Sep 17 00:00:00 2001 From: rulingcom Date: Thu, 23 Jan 2014 12:28:31 +0800 Subject: [PATCH] ntu ga change to new ui --- Gemfile | 1 + app/assets/images/social-share-button.png | Bin 0 -> 7549 bytes .../lib/social-share-button.coffee | 33 +++ app/assets/javascripts/member-selection.js | 7 +- app/assets/javascripts/orbit-bar-search.js | 10 + app/assets/stylesheets/member_select.css | 230 ++++++++++++++++++ .../stylesheets/social-share-button.css | 90 +++++++ app/controllers/sessions_controller.rb | 40 +++ app/helpers/application_helper.rb | 9 +- app/helpers/orbit_backend_helper.rb | 4 +- .../member_selects/_modal_select.html.erb | 2 + .../member_selects/_promoter_front.html.erb | 14 ++ .../member_selects/_selection_box.html.erb | 16 ++ app/views/devise/sessions/new.html.erb | 7 +- app/views/layouts/_right_menu.html.erb | 18 +- config/locales/en.yml | 1 + config/locales/ntu.en.yml | 17 ++ config/locales/ntu.zh_tw.yml | 17 ++ config/locales/zh_tw.yml | 1 + config/routes.rb | 5 + .../back_end/bulletins_controller.rb | 1 + .../announcement/app/models/bulletin.rb | 6 + .../back_end/bulletins/_form.html.erb | 8 + .../front_end/bulletins/show.html.erb | 15 ++ .../back_end/archive_files_controller.rb | 1 + .../archive/app/models/archive_file.rb | 6 + .../back_end/archive_files/_form.html.erb | 8 + .../front_end/archive_files/_index.html.erb | 24 +- .../ask/back_end/asK_requests_controller.rb | 45 ++++ .../ask_acknowledgements_controller.rb | 15 +- .../ask/back_end/ask_admins_controller.rb | 15 +- .../ask/back_end/ask_questions_controller.rb | 21 +- .../ask/back_end/ask_replies_controller.rb | 104 ++++++++ .../ask/app/models/ask_reply.rb | 1 + .../ask/back_end/ask_questions/edit.html.erb | 62 +++++ .../front_end/ask_questions/index.html.erb | 3 + .../ask/config/locales/en.yml | 2 + .../ask/config/locales/zh_tw.yml | 2 + vendor/built_in_modules/ask/config/routes.rb | 2 + .../member_staff_lists/index.html.erb | 29 +++ .../back_end/page_contexts_controller.rb | 1 + .../page_content/app/models/page_context.rb | 5 + .../back_end/page_contexts/_form.html.erb | 27 ++ .../front_end/page_contexts/index.html.erb | 2 +- .../survey/back_end/surveys_controller.rb | 145 ++++++++++- .../survey/back_end/surveys/_survey.html.erb | 3 +- .../back_end/surveys/set_import.html.erb | 18 ++ .../survey/config/locales/en.yml | 1 + .../survey/config/locales/zh_tw.yml | 3 +- .../built_in_modules/survey/config/routes.rb | 4 +- 50 files changed, 1057 insertions(+), 44 deletions(-) create mode 100644 app/assets/images/social-share-button.png create mode 100644 app/assets/javascripts/lib/social-share-button.coffee create mode 100644 app/assets/javascripts/orbit-bar-search.js create mode 100644 app/assets/stylesheets/member_select.css create mode 100644 app/assets/stylesheets/social-share-button.css create mode 100644 app/controllers/sessions_controller.rb create mode 100644 app/views/admin/member_selects/_promoter_front.html.erb create mode 100644 app/views/admin/member_selects/_selection_box.html.erb create mode 100644 config/locales/ntu.en.yml create mode 100644 config/locales/ntu.zh_tw.yml create mode 100644 vendor/built_in_modules/ask/app/controllers/panel/ask/back_end/asK_requests_controller.rb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/set_import.html.erb diff --git a/Gemfile b/Gemfile index 80d2db1c..82d572a9 100644 --- a/Gemfile +++ b/Gemfile @@ -43,6 +43,7 @@ gem 'resque', :require => 'resque/server' # background jobs gem 'resque-scheduler' # job scheduling gem 'resque-restriction' #gem 'rb-readline' +gem 'roo' # gem 'ruby-debug19' gem 'rubyzip', '< 1.0.0' diff --git a/app/assets/images/social-share-button.png b/app/assets/images/social-share-button.png new file mode 100644 index 0000000000000000000000000000000000000000..3507161c70537db2d5dc99583d1a4992f7d5ecbd GIT binary patch literal 7549 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 literal 0 HcmV?d00001 diff --git a/app/assets/javascripts/lib/social-share-button.coffee b/app/assets/javascripts/lib/social-share-button.coffee new file mode 100644 index 00000000..cec9fcbc --- /dev/null +++ b/app/assets/javascripts/lib/social-share-button.coffee @@ -0,0 +1,33 @@ +window.SocialShareButton = + openUrl : (url) -> + window.open(url) + false + + share : (el) -> + site = $(el).data('site') + title = encodeURIComponent($(el).parent().data('title')) + img = encodeURIComponent($(el).parent().data("img")) + fb_url = encodeURIComponent($(el).parent().data("fb_url")) + url = encodeURIComponent(location.href) + switch site + when "weibo" + SocialShareButton.openUrl("http://v.t.sina.com.cn/share/share.php?url=#{url}&pic=#{img}&title=#{title}&content=utf-8") + when "twitter" + SocialShareButton.openUrl("https://twitter.com/home?status=#{title}: #{url}") + when "douban" + SocialShareButton.openUrl("http://www.douban.com/recommend/?url=#{url}&title=#{title}&image=#{img}") + when "facebook" + SocialShareButton.openUrl("http://www.facebook.com/sharer.php?t=#{title}&u=#{fb_url}") + when "qq" + SocialShareButton.openUrl("http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=#{url}&title=#{title}&pics=#{img}") + when "tqq" + SocialShareButton.openUrl("http://share.v.t.qq.com/index.php?c=share&a=index&url=#{url}&title=#{title}&pic=#{img}") + when "baidu" + SocialShareButton.openUrl("http://apps.hi.baidu.com/share/?url=#{url}&title=#{title}&content=") + when "kaixin001" + SocialShareButton.openUrl("http://www.kaixin001.com/rest/records.php?url=#{url}&content=#{title}&style=11&pic=#{img}") + when "renren" + SocialShareButton.openUrl("http://widget.renren.com/dialog/share?resourceUrl=#{url}&title=#{title}&description=") + when "google_plus" + SocialShareButton.openUrl("https://plus.google.com/share?url=#{url}&t=#{title}") + false \ No newline at end of file diff --git a/app/assets/javascripts/member-selection.js b/app/assets/javascripts/member-selection.js index 276b48b2..cf783d0a 100644 --- a/app/assets/javascripts/member-selection.js +++ b/app/assets/javascripts/member-selection.js @@ -10,7 +10,7 @@ $(document).ready(function() { type: 'GET', url: $(this).attr("rel"), dataType: 'script', - data: {ids: ids}, + data: {field: $(this).attr("field"), ids: ids}, success: function (msg) { $("#member-filter").modal('show'); }, error: function(){ @@ -20,6 +20,11 @@ $(document).ready(function() { }); return false; }); + + $(document).on('click', ".remove_user", function(){ + $(this).parent().remove(); + }); + $("#remove_users").on('click', function(){ var ids = []; var users = $('.selected_user input[type="checkbox"]:checked'); diff --git a/app/assets/javascripts/orbit-bar-search.js b/app/assets/javascripts/orbit-bar-search.js new file mode 100644 index 00000000..e0d9bf97 --- /dev/null +++ b/app/assets/javascripts/orbit-bar-search.js @@ -0,0 +1,10 @@ +$(document).ajaxStop(function() { + $('.nav').find('.dropdown').on({ + mouseleave: function() { + $(this).removeClass("open"); + }, + mouseenter: function() { + $(this).addClass("open") + } + }); +}); \ No newline at end of file diff --git a/app/assets/stylesheets/member_select.css b/app/assets/stylesheets/member_select.css new file mode 100644 index 00000000..891a4f33 --- /dev/null +++ b/app/assets/stylesheets/member_select.css @@ -0,0 +1,230 @@ +/* Member Filter */ +#select_user #select_user_modal.modal { + width: 80%; + margin-left: -40%; +} +#select_user #select_user_modal .modal-body { + max-height: 425px; +} +#select_user #select_user_modal .modal-body form { + margin-bottom: 0px; +} +#select_user #select_user_modal .modal-body form fieldset { + min-height: 360px; +} +#select_user #select_user_modal .modal-body .radio.inline, +#select_user #select_user_modal .modal-body .checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; + min-width: 100px; + margin-left: 0; +} +#select_user #select_user_modal .modal-body .form-actions { + margin: 20px 0 0; + padding: 10px 0 0; + background-color: transparent; + text-align: right; +} +#select_user #select_user_modal .modal-body .tabs-left > .nano { + width: 160px; + min-height: 425px; + float: left; +} +#select_user #select_user_modal .modal-body .tabs-left > .nano .pane { + right: 6px; +} +#select_user #select_user_modal .modal-body .tabs-left > .nano > .content > .nav-tabs { + width: 140px; + float: left; + margin-bottom: 0; + margin-right: 0; + border-right: 1px solid #ddd; + border-bottom: none; +} +#select_user #select_user_modal .modal-body .tabs-left > .nano > .content > .nav-tabs > li { + float: none; +} +#select_user #select_user_modal .modal-body .tabs-left > .nano > .content > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} +#select_user #select_user_modal .modal-body .tabs-left > .nano > .content > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} +#select_user #select_user_modal .modal-body .tabs-left > .nano > .content > .nav-tabs > li > a:hover { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} +#select_user #select_user_modal .modal-body .tabs-left > .nano > .content > .nav-tabs .active > a, +#select_user #select_user_modal .modal-body .tabs-left > .nano > .content > .nav-tabs .active > a:hover { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} +#select_user #select_user_modal .member-filter-options { + float: left; + display: inline-block; + width: 175px; + min-height: 425px; + margin-right: 10px; + padding: 0 10px 0 0; +} +#select_user #select_user_modal .member-filter-options select { + width: 165px; +} +#select_user #select_user_modal .member-filter-options .btn { + display: block; +} +#select_user #select_user_modal .member-filter-result { + padding-left: 15px; + min-height: 360px; + width: auto; +} + + +/* Check Box Card */ +.checkbox-card { + margin: 0; +} +.checkbox-card li { + position: relative; + list-style: none; + color: #FFFFFF; + width: 180px; + height: 40px; + margin: 0 10px 10px 0; + float: left; + display: inline-block; + background-color: #cccccc; + overflow: hidden; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-transition: all .2s linear; + -moz-transition: all .2s linear; + -o-transition: all .2s linear; + transition: all .2s linear; +} +.checkbox-card li.mark { + width: 0; + height: 0; + padding: 0; + margin: 0; + -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + opacity: 0; + visibility: hidden; +} +.checkbox-card li:hover { + background-color: #0088cc; +} +.checkbox-card li:after { + content: ""; + display: block; + clear: both; + height: 0; + visibility: hidden; +} +.checkbox-card li.active:before { + -webkit-text-size-adjust : none; + font-family: FontAwesome; + font-weight: normal; + font-style: normal; + color: #FFF; + text-decoration: inherit; + content: "\f00c"; + position: absolute; + right: 0px; + top: 0px; + line-height: 14px; + text-indent: 10px; + font-size: 10px; + width: 0px; + height: 0px; + border-style: solid; + border-width: 0 22px 22px 0; + border-color: transparent #51a351 transparent transparent; +} +.checkbox-card li.active label { +} +.checkbox-card li label { + margin-bottom: 0px; + overflow: hidden; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.checkbox-card li input { + opacity: 0; + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; + margin: 0; + z-index: 10; +} +.checkbox-card li label span { + -webkit-text-size-adjust : none; + font-size: 10px; + display: block; + width: 130px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + color: #666666; + margin-top: -3px; +} +.checkbox-card li:hover label span, +.checkbox-card li:hover label span.user-name { + color: #FFFFFF; +} +.checkbox-card li label span.user-name { + font-size: 12px; + color: #363636; + padding: 2px 0 0; + margin-top: 0; +} +.checkbox-card li .user-pic { + float: left; + margin-right: 5px; + width: 40px; + height: 40px; +} +#selected_users .selected_user { + display: block; + margin-bottom: 5px; +} +#selected_users .selected_user .remove_user { + font-size: 15px; +} +/* +.promoter { + border-color: #CCCCCC; + border-style: solid; + border-width: 0 1px; + padding: 0 10px 5px 10px; +} +.promoter > div { + border-bottom: 1px solid #CCCCCC; +} +.promoter > div:after { + content: ""; + clear: both; + display: block; + visibility: hidden; +} +.promoter > div > span { + display: block; + margin-left: 70px; + padding-bottom: 5px; +} +.promoter p { + width: 70px; + float: left; + text-align:right; +}*/ \ No newline at end of file diff --git a/app/assets/stylesheets/social-share-button.css b/app/assets/stylesheets/social-share-button.css new file mode 100644 index 00000000..1acc138e --- /dev/null +++ b/app/assets/stylesheets/social-share-button.css @@ -0,0 +1,90 @@ +.social-share-button-baidu { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") 0px 0px no-repeat; +} +.social-share-button-delicious { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") -16px 0px no-repeat; +} +.social-share-button-douban { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") 0px -16px no-repeat; +} +.social-share-button-email { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") -16px -16px no-repeat; +} +.social-share-button-facebook { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") -32px 0px no-repeat; +} +.social-share-button-flickr { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") -32px -16px no-repeat; +} +.social-share-button-google { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") 0px -32px no-repeat; +} +.social-share-button-google_plus { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") -16px -32px no-repeat; +} +.social-share-button-kaixin001 { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") -32px -32px no-repeat; +} +.social-share-button-qq { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") -48px 0px no-repeat; +} +.social-share-button-renren { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") -48px -16px no-repeat; +} +.social-share-button-tqq { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") -48px -32px no-repeat; +} +.social-share-button-twitter { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") 0px -48px no-repeat; +} +.social-share-button-weibo { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") -16px -48px no-repeat; +} +.social-share-button-rss { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") -32px -48px no-repeat; +} \ No newline at end of file diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb new file mode 100644 index 00000000..927719bc --- /dev/null +++ b/app/controllers/sessions_controller.rb @@ -0,0 +1,40 @@ +# encoding: utf-8 + +class SessionsController < Devise::SessionsController + prepend_before_filter :require_no_authentication, :only => [ :new, :create ] + + + def create + @site = Site.first + + private_key = OpenSSL::PKey::RSA.new(@site.private_key) + wresult = private_key.private_decrypt(request.params['wresult']) + + @ids = wresult.split("@") + + login_uid = @ids[0] + + resource = User.first(conditions:{user_id: login_uid}) + + if !resource.blank? + resource_name = resource.class.to_s.downcase + sign_in(resource_name, resource) + session[:user_id_type] = "myntu" + 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 + + def destroy + @user_id_type = session[:user_id_type] + sign_out + if @user_id_type == "myntu" + redirect_to "https://adfs.ntu.edu.tw/adfs/ls/?wa=wsignout1.0&wreply=https://galogin.ntu.edu.tw" + else + redirect_to root_path + end + end + +end \ No newline at end of file diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index a1a81c4b..d31cd5fa 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -194,7 +194,8 @@ module ApplicationHelper stylesheets << "\n" stylesheets << "\n" if page.design.css_reset # stylesheets << "\n" - # stylesheets << "\n" + # stylesheets << "\n" + stylesheets << "\n" stylesheets << "\n" if page.design.css_default theme = page.design.themes.detect{ |d| d.id == page.theme_id } stylesheets << "\n" if theme @@ -203,8 +204,12 @@ module ApplicationHelper def page_javascripts(page, edit=nil) javascripts = '' + unless edit + javascripts << "\n" + end # javascripts << "\n" # javascripts << "\n" + javascripts << "\n" page.design.javascripts.each do |js| javascripts << "" end @@ -301,7 +306,7 @@ module ApplicationHelper # NTU link def get_link(site_number) - "http://#{request.host}:2#{site_number}00" + "http://#{site_number}.#{request.domain(3)}" end def sortable(column, title = nil, options = {}) diff --git a/app/helpers/orbit_backend_helper.rb b/app/helpers/orbit_backend_helper.rb index f9256fbb..04d36d93 100644 --- a/app/helpers/orbit_backend_helper.rb +++ b/app/helpers/orbit_backend_helper.rb @@ -345,7 +345,7 @@ module OrbitBackendHelper if object.is_a?(klass.constantize) autorized ||= object.user_can_sub_manage?(current_user) else - autorized ||= object.send(klass.underscore).user_can_sub_manage?(current_user) + autorized ||= object.send(klass.underscore).user_can_sub_manage?(current_user) rescue nil end autorized end @@ -444,4 +444,4 @@ module OrbitBackendHelper res.html_safe end -end \ No newline at end of file +end diff --git a/app/views/admin/member_selects/_modal_select.html.erb b/app/views/admin/member_selects/_modal_select.html.erb index becc1993..99f4f02a 100644 --- a/app/views/admin/member_selects/_modal_select.html.erb +++ b/app/views/admin/member_selects/_modal_select.html.erb @@ -28,6 +28,7 @@
<%= submit_tag t(:submit), class: "btn btn-primary" %> + <%= hidden_field_tag field, @field %>
<% end %> @@ -53,6 +54,7 @@
<%= submit_tag t(:submit), class: "btn btn-primary" %> + <%= hidden_field_tag field, @field %>
<% end %> diff --git a/app/views/admin/member_selects/_promoter_front.html.erb b/app/views/admin/member_selects/_promoter_front.html.erb new file mode 100644 index 00000000..f8bec0fb --- /dev/null +++ b/app/views/admin/member_selects/_promoter_front.html.erb @@ -0,0 +1,14 @@ +<% unless users.blank? %> +
+

<%= t(:promoter) %>:

+
    + <% users.each do |user| %> +
  • +

    + <%= link_to user.name, "mailto:#{user.email}", class: "promoter-name" %> / <%= user.office_tel %> +

    +
  • + <% end %> +
+
+<% end %> \ No newline at end of file diff --git a/app/views/admin/member_selects/_selection_box.html.erb b/app/views/admin/member_selects/_selection_box.html.erb new file mode 100644 index 00000000..c54929aa --- /dev/null +++ b/app/views/admin/member_selects/_selection_box.html.erb @@ -0,0 +1,16 @@ +<% content_for :page_specific_javascript do -%> + <%= javascript_include_tag "member-selection" %> + <%= javascript_include_tag "lib/jquery.nanoscroller" %> + <%= javascript_include_tag "lib/checkbox.card" %> +<% end -%> +<% content_for :page_specific_css do -%> + <%= stylesheet_link_tag "member_select" %> +<% end %> + +
+
+ <%= render partial: 'admin/member_selects/user', collection: users, locals: {field: field} %> + <%= hidden_field_tag field %> +
+ <%= link_to t(:add), '#', class: 'btn btn-primary btn-small select_user_modal', rel: select_members_admin_member_selects_path, field: field %> +
\ No newline at end of file diff --git a/app/views/devise/sessions/new.html.erb b/app/views/devise/sessions/new.html.erb index 1b77fce2..476b61fa 100644 --- a/app/views/devise/sessions/new.html.erb +++ b/app/views/devise/sessions/new.html.erb @@ -12,10 +12,11 @@ - +
diff --git a/app/views/layouts/_right_menu.html.erb b/app/views/layouts/_right_menu.html.erb index b4efb307..89ca7ad2 100644 --- a/app/views/layouts/_right_menu.html.erb +++ b/app/views/layouts/_right_menu.html.erb @@ -13,6 +13,16 @@
+ + +
  • <%= link_to content_tag(:i, nil, class: 'icons-screen') + ' ' + t(:desktop), desktop_path, tabindex: '-1' %>
  • <% end %> -
  • <%= link_to content_tag(:i, nil, class: 'icons-logout') + ' ' + t(:logout), destroy_user_session_path, tabindex: '-1' %>
  • +
  • <%= link_to content_tag(:i, nil, class: 'icons-logout') + ' ' + t(:logout), user_logout_path, tabindex: '-1' %>
  • <%= t(:help) %>
  • @@ -56,6 +66,12 @@
    + + +
    + +
    + <%= render partial: 'admin/member_selects/selection_box', locals: {field: 'bulletin[user_ids][]', users: @users} %> +
    +
    diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/front_end/bulletins/show.html.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/front_end/bulletins/show.html.erb index 0f60d98e..3b09c4e5 100644 --- a/vendor/built_in_modules/announcement/app/views/panel/announcement/front_end/bulletins/show.html.erb +++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/front_end/bulletins/show.html.erb @@ -36,6 +36,21 @@ <% end %> + <% unless @bulletin.rss_link.blank? %> +
    + <%= link_to t('ntu.rss_origin'), @bulletin.rss_link %> +
    + <% end %> +<% unless @bulletin.user_ids.blank? %> +
    +
    + <%= render partial: 'admin/member_selects/promoter_front', locals: {users: @bulletin.get_users} %> +
    +
    +<% end %> + <%= share_links(@bulletin, 'announcement') %> + + diff --git a/vendor/built_in_modules/archive/app/controllers/panel/archive/back_end/archive_files_controller.rb b/vendor/built_in_modules/archive/app/controllers/panel/archive/back_end/archive_files_controller.rb index 5cf588f5..f196e847 100644 --- a/vendor/built_in_modules/archive/app/controllers/panel/archive/back_end/archive_files_controller.rb +++ b/vendor/built_in_modules/archive/app/controllers/panel/archive/back_end/archive_files_controller.rb @@ -87,6 +87,7 @@ class Panel::Archive::BackEnd::ArchiveFilesController < OrbitBackendController # GET /archive_files/1/edit def edit @archive_file = ArchiveFile.find(params[:id]) + @users = @archive_file.get_users if !current_user.admin? redirect_to :action => :index else diff --git a/vendor/built_in_modules/archive/app/models/archive_file.rb b/vendor/built_in_modules/archive/app/models/archive_file.rb index db5ad635..3ea6bfab 100644 --- a/vendor/built_in_modules/archive/app/models/archive_file.rb +++ b/vendor/built_in_modules/archive/app/models/archive_file.rb @@ -22,6 +22,8 @@ class ArchiveFile field :title, localize: true field :create_user_id field :update_user_id, :class_name => "User" + field :user_ids + scope :can_display,where(is_hidden: false) @@ -73,6 +75,10 @@ class ArchiveFile end + def get_users + User.find(self.user_ids) rescue [] + end + def get_file_icon( file_data ) file_icon = "#{file_data.split('.')[-1]}".html_safe diff --git a/vendor/built_in_modules/archive/app/views/panel/archive/back_end/archive_files/_form.html.erb b/vendor/built_in_modules/archive/app/views/panel/archive/back_end/archive_files/_form.html.erb index 1583a0be..a19ce99a 100644 --- a/vendor/built_in_modules/archive/app/views/panel/archive/back_end/archive_files/_form.html.erb +++ b/vendor/built_in_modules/archive/app/views/panel/archive/back_end/archive_files/_form.html.erb @@ -54,6 +54,14 @@ + +
    + +
    + <%= render partial: 'admin/member_selects/selection_box', locals: {field: 'archive_file[user_ids][]', users: @users} %> +
    +
    + diff --git a/vendor/built_in_modules/archive/app/views/panel/archive/front_end/archive_files/_index.html.erb b/vendor/built_in_modules/archive/app/views/panel/archive/front_end/archive_files/_index.html.erb index 149ee2f3..428ee8c6 100644 --- a/vendor/built_in_modules/archive/app/views/panel/archive/front_end/archive_files/_index.html.erb +++ b/vendor/built_in_modules/archive/app/views/panel/archive/front_end/archive_files/_index.html.erb @@ -9,19 +9,19 @@ <%= sortable(:title, t("archive.Title"))%> <%= t("archive.Files")%> - <%= sortable(:archive_file_category, t("archive.Category"))%> + <%= t(:promoter)%> <% @archive_files.each_with_index do |post,i| %> class="even" <% end %>> - +
    <%= post.title %> <% if !post.is_hot.blank? %><%= t('hot')%><% end %>
    - +
    <% if !post.archive_file_multiples.blank? %>
      @@ -37,9 +37,21 @@ <% end %>
    -
    - <%= post.category.title if !post.category.blank? %> -
    + + <% unless post.get_users.blank? %> +
    +
      + <% post.get_users.each do |user| %> +
    • +

      + <%= link_to user.name, "mailto:#{user.email}", class: "promoter-name" %> / <%= user.office_tel %> +

      +
    • + <% end %> +
    +
    + <% end %> + <% end %> diff --git a/vendor/built_in_modules/ask/app/controllers/panel/ask/back_end/asK_requests_controller.rb b/vendor/built_in_modules/ask/app/controllers/panel/ask/back_end/asK_requests_controller.rb new file mode 100644 index 00000000..5f7d3a4f --- /dev/null +++ b/vendor/built_in_modules/ask/app/controllers/panel/ask/back_end/asK_requests_controller.rb @@ -0,0 +1,45 @@ +# encoding: utf-8 + +class Panel::Ask::BackEnd::AskRequestsController < OrbitBackendController + include AdminHelper + #include OrbitControllerLib::DivisionForDisable + + #before_filter :for_app_manager + skip_before_filter :verify_authenticity_token + open_for_visitor :only => [:transferred_request] + + def transferred_request + app_title = request.fullpath.split('/')[2] + module_app ||= ModuleApp.first(conditions: {:key => app_title} ) + + if request.headers["HTTP_X_AUTH_TOKEN"] == '3kjlfksjDFJ' + if !module_app.categories.where("title.en" => "Transferred Question").any? + ask_category = module_app.categories.build + ask_category.title_translations = { "zh_tw" => "轉介的問題", "en" => "Transferred Question" } + ask_category.save! + end + + module_app.categories.enabled + category = module_app.categories.where("title.en" => "Transferred Question").first + + @transferred_question = AskQuestion.new( + name: params['name'], + identity: params['identity'], + email: params['email'], + phone: params['phone'], + tax: params['tax'], + title: params['title'], + content: params['content'], + category_id: category.id) + + @transferred_question.ask_reply = AskReply.new + @transferred_question.ask_reply.update_attributes(status: "待處理 (轉)") + @transferred_question.save + + render :nothing => true + else + render :status => 500 + end + 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 index 58f2ef47..8debc5e7 100644 --- 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 @@ -1,13 +1,14 @@ class Panel::Ask::BackEnd::AskAcknowledgementsController < OrbitBackendController - include AdminHelper - include OrbitControllerLib::DivisionForDisable + #include AdminHelper + #include OrbitControllerLib::DivisionForDisable - before_filter :for_app_manager + #before_filter :for_app_manager + open_for_manager - def initialize - super - @app_title = 'ask_acknowledgement' - end + #def initialize + # super + # @app_title = 'ask_acknowledgement' + #end def index @ask_acknowledgement = AskAcknowledgement.first || AskAcknowledgement.create 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 index b6994da0..8a657d4a 100644 --- 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 @@ -1,14 +1,15 @@ class Panel::Ask::BackEnd::AskAdminsController < OrbitBackendController - include AdminHelper - include OrbitControllerLib::DivisionForDisable + #include AdminHelper + #include OrbitControllerLib::DivisionForDisable - before_filter :for_app_manager + #before_filter :for_app_manager + open_for_manager - def initialize - super - @app_title = 'ask_admins' - end + #def initialize + # super + # @app_title = 'ask_admins' + #end def index @ask_admins = AskAdmin.all 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 cf8180c3..f15731ef 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 @@ -1,11 +1,11 @@ -require 'csv' - class Panel::Ask::BackEnd::AskQuestionsController < OrbitBackendController + + require 'csv' - def initialize - super - @app_title = 'ask_questions' - end + # def initialize + # super + # @app_title = 'ask_questions' + # end def index @ask_questions = AskQuestion.all @@ -53,10 +53,12 @@ class Panel::Ask::BackEnd::AskQuestionsController < OrbitBackendController Rails.application.config.mongoid.use_activesupport_time_zone = true date_start = "#{params[:export]['start(1i)']}-#{params[:export]['start(2i)']}-#{params[:export]['start(3i)']}" date_end = "#{params[:export]['end(1i)']}-#{params[:export]['end(2i)']}-#{params[:export]['end(3i)']}" - @ask_questions = AskQuestion.includes(:ask_category).includes(:ask_reply).where(:created_at.gte => date_start, :created_at.lte => date_end) + #@ask_questions = AskQuestion.includes(:ask_category).includes(:ask_reply).where(:created_at.gte => date_start, :created_at.lte => date_end) + @ask_questions = AskQuestion.where(:created_at.gte => date_start, :created_at.lte => date_end) csv = CSV.generate do |csv| - csv << [ t('category'), + csv << [ t('status'), + t('category'), AskQuestion.human_attribute_name(:name), AskQuestion.human_attribute_name(:identity), AskQuestion.human_attribute_name(:email), @@ -68,7 +70,8 @@ class Panel::Ask::BackEnd::AskQuestionsController < OrbitBackendController AskReply.human_attribute_name(:comment)] @ask_questions.each do |ask_question| ask_question.ask_reply ||= AskReply.new - csv << [ ask_question.ask_category.name, + csv << [ ask_question.ask_reply.status, + ask_question.category.title, ask_question.name, ask_question.identity, ask_question.email, 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 86219b7a..d392fd90 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,3 +1,4 @@ +# encoding: utf-8 class Panel::Ask::BackEnd::AskRepliesController < OrbitBackendController include AdminHelper @@ -13,19 +14,122 @@ class Panel::Ask::BackEnd::AskRepliesController < OrbitBackendController def create @ask_question = AskQuestion.find(params[:ask_question_id]) @ask_question.ask_reply = AskReply.new(params[:ask_reply]) + @ask_reply = @ask_question.ask_reply @ask_question.save + if @ask_question.ask_reply.send_email? Resque.enqueue(SendAskReplyMail, @ask_reply.ask_question.id) end + + status_stack = [] + new_status = "" + params[:ask_reply][:depts].each do |dns| + # host = dns.split(":").first # local test + + begin + status_stack << send_request(dns, @ask_reply.ask_question, @ask_reply) # local test, switch host to dns if on server + rescue + status_stack << "fail" + end + end if params[:ask_reply][:status] == "轉介其他單位" + + success_count = status_stack.count("success") + failed_count = status_stack.count("fail") + + if failed_count == 0 && success_count > 0 + new_status = "轉介其他單位" + elsif failed_count > 0 && success_count > 0 + new_status = "部份轉介失敗" + elsif failed_count > 0 && success_count == 0 + new_status = "轉介失敗" + elsif failed_count == 0 && success_count == 0 && @ask_reply.status == "待處理" + new_status = "待處理" + elsif failed_count == 0 && success_count == 0 && @ask_reply.status == "已處理" + new_status = "已處理" + elsif failed_count == 0 && success_count == 0 && @ask_reply.status == "轉介其他單位" + new_status = "轉介失敗" + end + + @ask_reply.update_attributes(status: new_status) + 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? Resque.enqueue(SendAskReplyMail, @ask_reply.ask_question.id) end + + status_stack = [] + new_status = "" + params[:ask_reply][:depts].each do |dns| + # host = dns.split(":").first # local test + + begin + status_stack << send_request(dns, @ask_reply.ask_question, @ask_reply) # local test, switch host to dns if on server + rescue + status_stack << "fail" + end + end if params[:ask_reply][:status] == "轉介其他單位" + + success_count = status_stack.count("success") + failed_count = status_stack.count("fail") + + if failed_count == 0 && success_count > 0 + new_status = "轉介其他單位" + elsif failed_count > 0 && success_count > 0 + new_status = "部份轉介失敗" + elsif failed_count > 0 && success_count == 0 + new_status = "轉介失敗" + elsif failed_count == 0 && success_count == 0 && @ask_reply.status == "待處理" + new_status = "待處理" + elsif failed_count == 0 && success_count == 0 && @ask_reply.status == "已處理" + new_status = "已處理" + elsif failed_count == 0 && success_count == 0 && @ask_reply.status == "轉介其他單位" + new_status = "轉介失敗" + end + + @ask_reply.update_attributes(status: new_status) + redirect_to panel_ask_back_end_ask_questions_path, notice: t('ask.reply_success') end + + private + + def send_request(dep_dns, current_question, current_reply) + require 'net/http' + require 'uri' + require 'json' + + uri_path = "/panel/ask/back_end/ask_requests/transferred_request" + http = Net::HTTP.new(dep_dns, 80) # port 4000 for local test, switch to port 80 for deployment + req = Net::HTTP::Post.new(uri_path) + + body = { + 'name' => current_question.name, + 'title' => current_question.title, + 'identity' => current_question.identity, + 'email' => current_question.email, + 'phone' => current_question.phone, + 'tax' => current_question.tax, + 'content' => current_question.content + } + + status = "" + req.set_form_data(body) + req.add_field 'X-Auth-Token', '3kjlfksjDFJ' + response = http.request(req) + + if response.code == "200" + status = "success" + else + status = "fail" + end + + return status + end end diff --git a/vendor/built_in_modules/ask/app/models/ask_reply.rb b/vendor/built_in_modules/ask/app/models/ask_reply.rb index 54112aac..a5fe2358 100644 --- a/vendor/built_in_modules/ask/app/models/ask_reply.rb +++ b/vendor/built_in_modules/ask/app/models/ask_reply.rb @@ -6,6 +6,7 @@ class AskReply field :comment, type: String field :status, type: String field :send_email, type: Boolean, detault: false + field :depts, :type => Array belongs_to :ask_question end 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 7225f69a..2a14fd32 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,3 +1,45 @@ + +
    <%= form_for @ask_reply, url: @url, method: @method do |f| %> @@ -32,6 +74,26 @@ ['轉介其他單位', '轉介其他單位'] ] %> + + + + @@ -181,6 +201,15 @@ <% end %> + <% end %> diff --git a/vendor/built_in_modules/page_content/app/controllers/panel/page_content/back_end/page_contexts_controller.rb b/vendor/built_in_modules/page_content/app/controllers/panel/page_content/back_end/page_contexts_controller.rb index 644c5dbd..fee4caa4 100644 --- a/vendor/built_in_modules/page_content/app/controllers/panel/page_content/back_end/page_contexts_controller.rb +++ b/vendor/built_in_modules/page_content/app/controllers/panel/page_content/back_end/page_contexts_controller.rb @@ -48,6 +48,7 @@ class Panel::PageContent::BackEnd::PageContextsController < OrbitBackendControll # GET /page_contexts/1/edit def edit @page_context = PageContext.find(params[:id]) + @users = @page_context.get_users end # POST /page_contexts diff --git a/vendor/built_in_modules/page_content/app/models/page_context.rb b/vendor/built_in_modules/page_content/app/models/page_context.rb index 78b572fb..80919b13 100644 --- a/vendor/built_in_modules/page_content/app/models/page_context.rb +++ b/vendor/built_in_modules/page_content/app/models/page_context.rb @@ -15,6 +15,7 @@ class PageContext field :update_user_id field :version, :type => Integer , :default => 0 field :view_count, :type => Integer, :default => 0 + field :user_ids field :archived, :type => Boolean, :default => false # field :current, :type => Boolean, :default => false @@ -36,5 +37,9 @@ class PageContext def title self.page.title end + + def get_users + User.find(self.user_ids) rescue [] + end end \ No newline at end of file diff --git a/vendor/built_in_modules/page_content/app/views/panel/page_content/back_end/page_contexts/_form.html.erb b/vendor/built_in_modules/page_content/app/views/panel/page_content/back_end/page_contexts/_form.html.erb index da3856ba..5a5ddb4c 100644 --- a/vendor/built_in_modules/page_content/app/views/panel/page_content/back_end/page_contexts/_form.html.erb +++ b/vendor/built_in_modules/page_content/app/views/panel/page_content/back_end/page_contexts/_form.html.erb @@ -4,6 +4,33 @@
    + + + + + + +
    + + +
    + + +
    + +
    + <%= render partial: 'admin/member_selects/selection_box', locals: {field: 'page_context[user_ids][]', users: @users} %> +
    +
    + +
    + +
    +
    +
    + + <%= check_box("ask_reply", "depts", {:multiple => true}, "www.ga.ntu.edu.tw", nil) %><%= label_tag("www.ga.ntu.edu.tw", "總務處") %> + <%= check_box("ask_reply", "depts", {:multiple => true}, "sec.ga.ntu.edu.tw", nil) %><%= label_tag("sec.ga.ntu.edu.tw", "總務長室暨總務處秘書室") %> + <%= check_box("ask_reply", "depts", {:multiple => true}, "doc.ga.ntu.edu.tw", nil) %><%= label_tag("doc.ga.ntu.edu.tw", "文書組") %> + <%= check_box("ask_reply", "depts", {:multiple => true}, "general.ga.ntu.edu.tw", nil) %><%= label_tag("general.ga.ntu.edu.tw", "事務組") %> + <%= check_box("ask_reply", "depts", {:multiple => true}, "property.ga.ntu.edu.tw", nil) %><%= label_tag("property.ga.ntu.edu.tw", "保管組") %> + <%= check_box("ask_reply", "depts", {:multiple => true}, "construction.ga.ntu.edu.tw", nil) %><%= label_tag("construction.ga.ntu.edu.tw", "營繕組") %> + <%= check_box("ask_reply", "depts", {:multiple => true}, "cashier.ga.ntu.edu.tw", nil) %><%= label_tag("cashier.ga.ntu.edu.tw", "出納組") %> + <%= check_box("ask_reply", "depts", {:multiple => true}, "procurement.ga.ntu.edu.tw", nil) %><%= label_tag("procurement.ga.ntu.edu.tw", "採購組") %> + <%= check_box("ask_reply", "depts", {:multiple => true}, "fss.ga.ntu.edu.tw", nil) %><%= label_tag("fss.ga.ntu.edu.tw", "經營管理組") %> + <%= check_box("ask_reply", "depts", {:multiple => true}, "police.ga.ntu.edu.tw", nil) %><%= label_tag("police.ga.ntu.edu.tw", "駐警隊") %> + <%= check_box("ask_reply", "depts", {:multiple => true}, "social.ga.ntu.edu.tw", nil) %><%= label_tag("social.ga.ntu.edu.tw", "社科院總務分處") %> + <%= check_box("ask_reply", "depts", {:multiple => true}, "medicine.ga.ntu.edu.tw", nil) %><%= label_tag("medicine.ga.ntu.edu.tw", "醫學院總務分處") %> +
    +
    <%= f.label :send_email %><%= f.radio_button :send_email, 1, checked: @ask_reply.send_email? %><%= t('ask.yes') %> 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 30ea643d..fd928b25 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 @@ -84,8 +84,11 @@ $(document).ready(function(){ <%= f.text_area :content, rows: 8, class: 'input-xlarge' %> +
    + <%= f.label t('ask.validate_code'), class: 'control-label required' %>
    + <%= gotcha_error %> <%= gotcha%>
    diff --git a/vendor/built_in_modules/ask/config/locales/en.yml b/vendor/built_in_modules/ask/config/locales/en.yml index a4aeacae..7efeb897 100644 --- a/vendor/built_in_modules/ask/config/locales/en.yml +++ b/vendor/built_in_modules/ask/config/locales/en.yml @@ -17,6 +17,8 @@ en: admin: Administrator new_question: New question pending: Pending + validate_code: Verification code + validate_code_note: Please answer the following verification questions. 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 0b8109b1..d4fd7163 100644 --- a/vendor/built_in_modules/ask/config/locales/zh_tw.yml +++ b/vendor/built_in_modules/ask/config/locales/zh_tw.yml @@ -22,6 +22,8 @@ zh_tw: admin: 管理者 new_question: 新的發問 pending: 待處理 + validate_code: 驗證碼 + validate_code_note: 請回答下列驗證問句。 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 df2ffe95..bc33409c 100644 --- a/vendor/built_in_modules/ask/config/routes.rb +++ b/vendor/built_in_modules/ask/config/routes.rb @@ -15,6 +15,8 @@ Rails.application.routes.draw do resources :ask_categories resources :ask_acknowledgements resources :ask_admins + + match "ask_requests/transferred_request" => "ask_requests#transferred_request", :as => 'transferred_request', :via => :post end namespace :front_end do diff --git a/vendor/built_in_modules/member_staff/app/views/panel/member_staff/front_end/member_staff_lists/index.html.erb b/vendor/built_in_modules/member_staff/app/views/panel/member_staff/front_end/member_staff_lists/index.html.erb index b8e699e9..744e66c6 100644 --- a/vendor/built_in_modules/member_staff/app/views/panel/member_staff/front_end/member_staff_lists/index.html.erb +++ b/vendor/built_in_modules/member_staff/app/views/panel/member_staff/front_end/member_staff_lists/index.html.erb @@ -4,6 +4,7 @@ <% @job_title_field = @member_lists.get_member_list_attribute_field("staff","job_title") %> <% @job_business_field = @member_lists.get_member_list_attribute_field("staff","business") %> +<% @job_agent_field = @member_lists.get_member_list_attribute_field("staff","agent") %> <% if @item.frontend_style == 'Single' or @item.frontend_style == 'Two' %> @@ -58,6 +59,15 @@ <%= @job_business %> <% end %> + + <% @job_agent = @member_lists.get_member_list_attribute_value(member.id,@job_agent_field.id).get_value_by_locale(I18n.locale) + if @job_agent != 'NoData' and !@job_agent.blank? + %> +
  • + <%= @job_agent_field.title %> + <%= @job_agent %> +
  • + <% end %> @@ -110,6 +120,15 @@ <%= @job_business %> <% end %> + + <% @job_agent = @member_lists.get_member_list_attribute_value(member.id,@job_agent_field.id).get_value_by_locale(I18n.locale) + if @job_agent != 'NoData' and !@job_agent.blank? + %> +
  • + <%= @job_agent_field.title %> + <%= @job_agent %> +
  • + <% end %> @@ -153,6 +172,7 @@
    <%= t("users.name")%> <%= t("users.office_tel")%> <%= @job_business_field.title %><%= @job_agent_field.title %>
    + + <% @job_agent = @member_lists.get_member_list_attribute_value(member.id,@job_agent_field.id).get_value_by_locale(I18n.locale) + if @job_agent != 'NoData' and !@job_agent.blank? + %> + <%= @job_agent %> + <% end %> + +
    + + + + + + + + + + + + + + +
    <%= t('survey.title') %>
    <%= @survey.title %><%= file_field_tag :file %><%= submit_tag t("survey.import_csv"), :class => 'btn' %>
    +<% end %> diff --git a/vendor/built_in_modules/survey/config/locales/en.yml b/vendor/built_in_modules/survey/config/locales/en.yml index 94e49ecf..895cf625 100644 --- a/vendor/built_in_modules/survey/config/locales/en.yml +++ b/vendor/built_in_modules/survey/config/locales/en.yml @@ -24,6 +24,7 @@ en: answer_error: Unsuccessful answer answers_list: Answers List + import_csv: Import CSV export_csv: Export CSV chart: Chart set_answers: Set Answers diff --git a/vendor/built_in_modules/survey/config/locales/zh_tw.yml b/vendor/built_in_modules/survey/config/locales/zh_tw.yml index 337012db..d545b981 100644 --- a/vendor/built_in_modules/survey/config/locales/zh_tw.yml +++ b/vendor/built_in_modules/survey/config/locales/zh_tw.yml @@ -25,6 +25,7 @@ zh_tw: answer_error: 問卷填寫錯誤 answers_list: 結果清單 + import_csv: 匯入CSV export_csv: 匯出CSV chart: 結果圖表 set_answers: 設定結果 @@ -80,4 +81,4 @@ zh_tw: have_not_chart: 此種類型問題不含結果圖表 move_up: 上移 - move_down: 下移 \ No newline at end of file + move_down: 下移 diff --git a/vendor/built_in_modules/survey/config/routes.rb b/vendor/built_in_modules/survey/config/routes.rb index c33b3633..79d601dd 100644 --- a/vendor/built_in_modules/survey/config/routes.rb +++ b/vendor/built_in_modules/survey/config/routes.rb @@ -9,6 +9,8 @@ Rails.application.routes.draw do end member do get 'export' + get 'set_import' + post 'import' get 'set_answers' get 'jump' get 'duplicate_it' @@ -30,4 +32,4 @@ Rails.application.routes.draw do end end match "/appfront/*path" => redirect("/panel/*path") -end \ No newline at end of file +end