Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f9485c1f86 |
No files matched your search
@@ -29,9 +29,6 @@ gem 'mongoid-tree', :require => 'mongoid/tree'
|
||||
gem "mongo_session_store-rails3", '3.0.6'
|
||||
gem 'nokogiri'
|
||||
|
||||
# import csv
|
||||
gem 'roo'
|
||||
|
||||
gem 'fb_graph'
|
||||
gem 'rack-gridfs'
|
||||
gem 'radius'
|
||||
|
||||
@@ -2,6 +2,14 @@
|
||||
* {
|
||||
outline: none;
|
||||
}
|
||||
@font-face{
|
||||
font-family: 'WebSymbolsRegular';
|
||||
src: url(<%= asset_path 'websymbols-regular-webfont.eot' %>);
|
||||
src: url(<%= asset_path 'websymbols-regular-webfont.eot?#iefix' %>) format('embedded-opentype'),
|
||||
url(<%= asset_path 'websymbols-regular-webfont.woff' %>) format('woff'),
|
||||
url(<%= asset_path 'websymbols-regular-webfont.ttf' %>) format('truetype'),
|
||||
url(<%= asset_path 'websymbols-regular-webfont.svg#WebSymbolsRegular' %>) format('svg');
|
||||
}
|
||||
.login-logo {
|
||||
text-indent: -9999px;
|
||||
background: url(<%= asset_path 'sign-in-logo.png' %>) no-repeat center 40px;
|
||||
@@ -706,4 +714,4 @@
|
||||
|
||||
#category_id, #module_app_id {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
@@ -21,6 +21,8 @@ class SamlLoginsController < ApplicationController
|
||||
@main_public_key = LIST[:sites][@wctx]['key']
|
||||
|
||||
@doc = REXML::Document.new @wresult
|
||||
|
||||
@main_public_key = "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzKawlFWAMzA/uV/kcewd\nmtj8PcqxosmnSh7ZzJ0DumG2ieeP9oDBicqbqIEaeJVvrRzYJD2a+u8x5KKMKB8J\nHbMUpCBFlIpkDMjU/oZVMcYT9pcH51QWNvCgHG7prVykSGFz1JRvjSP6cwuZKBFd\nFFneOViETqoMIO1DbRLXsGfPvMOJY9C1xDwv1dLv0Wbj7M9N6eNz06a50bu3I4gl\nMumxWnZUabXL3G62S/Si4NM7J2jOUnkEOxJWOhcAX/iiqS9T8AHu84um2+mLQpfB\nJJFFIWCIAtU78VnIN5JSWwjFU5TsiSyCFYpGXKxUFD25cFmt3SfG0gwmrFis5Pdn\nhwIDAQAB\n-----END PUBLIC KEY-----\n"
|
||||
|
||||
public_key = OpenSSL::PKey::RSA.new(@main_public_key)
|
||||
encrypted_data = public_key.public_encrypt(@doc.elements["//saml:AttributeValue"].text)
|
||||
|
||||
@@ -15,13 +15,8 @@ class ObjectAuth < PrototypeAuth
|
||||
end
|
||||
|
||||
def check_user_has_can_access_app
|
||||
if auth_obj["_type"] == "PageContext"
|
||||
module_app = ModuleApp.where(:key=>'page_content').first
|
||||
sub_managing_users = module_app.sub_managing_users rescue []
|
||||
else
|
||||
sub_managing_users = auth_obj.module_app.sub_managing_users rescue []
|
||||
module_app = auth_obj.module_app
|
||||
end
|
||||
sub_managing_users = auth_obj.module_app.sub_managing_users rescue []
|
||||
module_app = auth_obj.module_app
|
||||
self.auth_users.each do |auth_user|
|
||||
if !sub_managing_users.include? auth_user && !auth_user.admin?
|
||||
module_app.assign_sub_manager(auth_user,User.current)
|
||||
|
||||
@@ -55,16 +55,6 @@ class PrototypeAuth
|
||||
if (self.send item).include? obj.id
|
||||
(self.send item).delete obj.id
|
||||
self.save!
|
||||
|
||||
if auth_obj["_type"] == "PageContext"
|
||||
module_app = ModuleApp.where(:key=>'page_content').first
|
||||
else
|
||||
module_app = auth_obj.module_app
|
||||
end
|
||||
|
||||
module_app.remove_sub_manager(obj)
|
||||
module_app.save
|
||||
|
||||
else
|
||||
false #should put error message for user not existed in list
|
||||
end
|
||||
|
||||
@@ -5,5 +5,3 @@
|
||||
# Mime::Type.register_alias "text/html", :iphone
|
||||
|
||||
Mime::Type.register_alias "text/html", :mobile
|
||||
|
||||
Mime::Type.register 'application/vnd.ms-excel',:xls
|
||||
@@ -79,48 +79,3 @@ default_widget_style:
|
||||
- style3
|
||||
- style4
|
||||
- style5
|
||||
|
||||
sites:
|
||||
www:
|
||||
url: www.ga.ntu.edu.tw
|
||||
key: "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx3fDAM40XvEiM5oG7YbA\nKnhc5Dyv/ZhVDzyrg95QB0ylBPtSs6g5xgkSSQMnIpAUCzdVIMrUd/A6DuH6f+T5\nccshgh3aDj3wISfgYZc9e7WY1csOItq9lOr6YG4HEABSyjVCcX/RrB8kCuuIGcvR\nRnvu/4fFb93vsVYHwGuivTYRJ+8VM8fOtIFCvbCxZsFj6r5cMl4qI4g4vaIn3xf2\ndXUCICebvdIBfMAdW29yaCScEap1oawEfdXtKCD5vYvAaRZ85jLY/FV5dYhbe1dz\n9G7+B1HI7VBm5bKV0MI1ZH2MTRczaqjLGf6ZF0FbMmcMYLx8iEGL1z0/hgOTcNT6\nrQIDAQAB\n-----END PUBLIC KEY-----\n"
|
||||
ga:
|
||||
url: www.ga.ntu.edu.tw
|
||||
key: "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx3fDAM40XvEiM5oG7YbA\nKnhc5Dyv/ZhVDzyrg95QB0ylBPtSs6g5xgkSSQMnIpAUCzdVIMrUd/A6DuH6f+T5\nccshgh3aDj3wISfgYZc9e7WY1csOItq9lOr6YG4HEABSyjVCcX/RrB8kCuuIGcvR\nRnvu/4fFb93vsVYHwGuivTYRJ+8VM8fOtIFCvbCxZsFj6r5cMl4qI4g4vaIn3xf2\ndXUCICebvdIBfMAdW29yaCScEap1oawEfdXtKCD5vYvAaRZ85jLY/FV5dYhbe1dz\n9G7+B1HI7VBm5bKV0MI1ZH2MTRczaqjLGf6ZF0FbMmcMYLx8iEGL1z0/hgOTcNT6\nrQIDAQAB\n-----END PUBLIC KEY-----\n"
|
||||
doc:
|
||||
url: doc.ga.ntu.edu.tw
|
||||
key: "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4aE7R0/49UBf5v4rbNiA\nnaXjPZ9rio9fjkaAZeow62yaZtoGurqf44BVj/cjQVUmLnMU4WDcZMI0osLa15+H\ndXSGCP8Upmvi+eA2UqhhBZts1IQ33rPMAjePAbpSGbNRxous0VpH7cc9BxMffQwh\nsygcbghUCEE3dVWdTFGokvgxkBzaKKTNbiqhmbuc8QIuzOvFFGkZHgqlxFHcaNYZ\n7KZJxqvuKSXsJcxIsQKzDiAPI11J3zgRdIf/CFVQv5g15gl1ieQgFdGc3jplsBcd\nrdLApPZ39+BWr9a/Gj9lgP6Ll5G/cM4Uq18a7TCWJIC9PNGw8bBDJTjnUEqmOu3R\nZQIDAQAB\n-----END PUBLIC KEY-----\n"
|
||||
cashier:
|
||||
url: cashier.ga.ntu.edu.tw
|
||||
key: "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9wliL8gFsRn0DVZusd2h\nSoj6aQWkKq1UU6fj3vzcrb1adMy8RnKogTW6z1W9wxrcrI/GfyRz9Wop0+9+XNYx\nDH+QQ+/1po/O/MkPBGZ6WxXpH2BSCncdJdYZ9qLvlJHHRhFtczcSQki693MCDUCy\nMrMDvmL4YOowHExD7A5qrCIaYnbNcUCYMKluSLxR52AUeAuYjCwZbkgEwIQRdZ+M\n3JMgTD/9GFsvZ4c5x6n1cUnKCJNyyUIvI8jThtOnySCU8ZN17nWfKb1Cxavt17Vp\nGSdyIIL2SO9+rjOFW3PrAyX5P3xEgPYoDxA1QsYLYbj189qA0sT17xf9H7KcNzyP\n7wIDAQAB\n-----END PUBLIC KEY-----\n"
|
||||
general:
|
||||
url: general.ga.ntu.edu.tw
|
||||
key: "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvyFUUFyaEJgsR+bYhTXx\nOA60kw82ohyHCDzkoHDT/k2xS520RZR0AzxT449qD3XfRr0+7F0c6rMx/2pBG7hS\nlHjgrTX7eQ70wV8H4OApriDIp1UDemm4+fKxcPZ6vhWqzp+3ijPdhJXe7OC9D89I\n9QKdlHPBxKFnUrBJiqn3cHGLpRrYTsKpI/Nl7VW4UJJh0k7R7P1Jqry0e+HalOLB\nBu5kl5z6iYBPy1gJ4psDHWuoNboxIgIsVR1SSLM7Mooebwx2qjm3W4VQuc7eQk0g\nh7KH4B8CrK4bC+K6lAS3ZzmTlA6M1WZPtIKv3XqEYCkyomMnkdTNZQYKbCKKlLBo\ntQIDAQAB\n-----END PUBLIC KEY-----\n"
|
||||
social:
|
||||
url: social.ga.ntu.edu.tw
|
||||
key: "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqB8htGdGzDPs3GA76REG\nyjM0eEYdXV6ugi4hPZEViCOBg3POC5RZslA5oTCYYWfTVui8jHC2CPD3AYQLG67Z\n79g2miLHEEyDzG7dp//dc85qp0FYR2JII1y26fJutMVCgn0hth6OpfjPB2QhkgZf\nat+Ico5ppDYIx+4jX8xQr4qqRlUIAmECMAE5ATiAUqfv117GJG/fR3AsKZPYm2U1\nFhSpKT2mvC0AiqstZzxYEm4srl1ZjpJPJ7uU+ewvi/EhRyLWFGPmygP6fvg4IaKS\nG00dx7FGedyLVcSaxJCoCX5Z98hIYEStanCSzuR3FQEL0JaB8ZKKWY8dsB+U1v46\nQwIDAQAB\n-----END PUBLIC KEY-----\n"
|
||||
property:
|
||||
url: property.ga.ntu.edu.tw
|
||||
key: "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1bmnJSRmxcehehuKBwSQ\nXiuYhAxzUOmptIk0sgciB1hK8++anXMaHXf3QA6UiXWjNyU+g2ZL1nVfVl0Qd3Ps\nxM2+hSeZRus2sw0g7CQea7NkAqLGQrpicnZ8Fgcb+0qwgClk0RVBXwJzfTDu6V+5\nL9lLEKWnSdHmoGkxkZTPMAtJpXYx9SMLtljPYGkMWKY2C1cBqPdMOl/rKTUZ9dYp\n2eJ13NTXDJJgDJOhDFHevzK/I6kwxdJbetNo4IO1dhQdbPionR5SNkkCNZvfy3k3\n68+xopPKH3xECCIuxorcePx0hyoeXS8vdmJ09VKHVUz08LBYGq2S/36V5LIc1P/6\nSQIDAQAB\n-----END PUBLIC KEY-----\n"
|
||||
procurement:
|
||||
url: procurement.ga.ntu.edu.tw
|
||||
key: "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAze/Yr3vrpRBpeu7ohyEP\nboPvZ476dtANbvW+rMuDyKeGD5FfoZYwzF+AbMIK6KfleWizObnMM8ABC0LdBuag\nQ0Brk4FMxyKz0aXlSgG3OZiZXJaaWm2/+gqghgpBLpAPMRFnEmK2y11b/EgCxurV\nl+RZ/MgrIviRGipnU7GXfG4O7Ai21oD4lzKt3WbvuWgBdgtEsYpZMIyddWrhkUki\noM39Vm72mCyKPkysCVYCnYaMwDXVx/SKuTRHiVQZ4GNIv74rwp7BOCkfDZ8HrNLH\nr3ObCB8X0Bh9GqUUj7gYu3cFmx8lXer7qkGtGUq2wNUM0CBc01EODVO9e9RQnulA\n3wIDAQAB\n-----END PUBLIC KEY-----\n"
|
||||
fss:
|
||||
url: fss.ga.ntu.edu.tw
|
||||
key: "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzsvi4FfIQokfP2QmiRTs\nzuxjPg7oPK7pLHNQC/AyY35H0vmkXGTc74pVvLbfSuaprLO10WVzE4bGGQmhmls1\nDqeY7EyHg1vs7GHQm1932n+Va+qDToSx7S+Zs1ZOglYAdEzBI3dyhefIcDtNUfty\n0i64RGiEzDH4yV5lecilXo5Q4/7W/HNdtw8Oe//LopOZ2Mj+Eq7Tk70WkGFDV73Z\n/jIBLBn51g2P9nrsid63OLe1X8u0l9+xSGff0fR1VlqbElBRACCrAmPvs9ceOW7H\n+yLw71elR4nMDm+/dx/zimeYUj0WaY2A3/O8xucPhSP22YCRiO1jEsAEvMXkCU9p\n8wIDAQAB\n-----END PUBLIC KEY-----\n"
|
||||
medicine:
|
||||
url: medicine.ga.ntu.edu.tw
|
||||
key: "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwx7zQLnde6Azy/03bIxg\nkp5rM0DsKKkBbX8C5vhUADxaC2zVmVJuF0NnTGCWutNSSYsKWRKzFwEoZdzJ+8XS\nr8f9kRdEB0yu3Akv+EhZyHA7yVGyFvNAhPGVuekSmpDlpFFKanAqlhBzrhByku5A\nTqp2fXi3zHMoP6WX8QXb6SpG/y4CBpjXCI1qLCAJRw0Fkt7yMXkJnjO2q7zCKAnU\nnv6DVz5yDuBiZPfYlW09KHVWxSehgk5fvLu9Jb/s1XklPwEw1m5BPhIA1YG0QelR\nXk9Pdvwb7aM59LZx1xQZYcku0KGSqLo9rCDTD8YT47226v921yeM36Az8t8e4egU\nzwIDAQAB\n-----END PUBLIC KEY-----\n"
|
||||
police:
|
||||
url: police.ga.ntu.edu.tw
|
||||
key: "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzKawlFWAMzA/uV/kcewd\nmtj8PcqxosmnSh7ZzJ0DumG2ieeP9oDBicqbqIEaeJVvrRzYJD2a+u8x5KKMKB8J\nHbMUpCBFlIpkDMjU/oZVMcYT9pcH51QWNvCgHG7prVykSGFz1JRvjSP6cwuZKBFd\nFFneOViETqoMIO1DbRLXsGfPvMOJY9C1xDwv1dLv0Wbj7M9N6eNz06a50bu3I4gl\nMumxWnZUabXL3G62S/Si4NM7J2jOUnkEOxJWOhcAX/iiqS9T8AHu84um2+mLQpfB\nJJFFIWCIAtU78VnIN5JSWwjFU5TsiSyCFYpGXKxUFD25cFmt3SfG0gwmrFis5Pdn\nhwIDAQAB\n-----END PUBLIC KEY-----\n"
|
||||
construction:
|
||||
url: construction.ga.ntu.edu.tw
|
||||
key: "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvxJcKnPUDaNNyhdGpedL\n+h2OI9RDDZUTkHcvX1UvBNvlX2+dvok6sHQh2AhZoNyCUFZTbp2CRSNfIM5jXigD\nfHA3KzpN7cmGG7W7nIdBBkZU/ly4HFvkD7mGoEymB0JYgZkz59CXBx+3Zg6KLSYY\nZDoOw6wikrl643So2zFZvwHJpDkRkmX5oWWYqXOZxaZnkgbhvA3KdcH9+C1aEBYY\npY2K2MJt86k0ahW/CJfVRDb9CWSxAGir1RAPu9bRV9y9WWKKGWekH0/IqhhJPT8q\nl3v6PB1Oc6ltbOyYkS2xHbmvRxjORzGen0Xcbjzo4N8HBEoPe0Uc5iP0Y50GDjEL\nEQIDAQAB\n-----END PUBLIC KEY-----\n"
|
||||
sec:
|
||||
url: sec.ga.ntu.edu.tw
|
||||
key: "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApsVKJ8Cvr/A0dmHR+vDS\nAYjVzGqMNJ/4pO7GwMzUZMNSkpq3b9CIjrIGg/QKj7woTHnKM39vczu5gxPXJGYN\nIo+PnWsibMDjcz2Vm8s11XXIPho/Ce+hQkWpWGzxpaH7Z/qLKSwiwHdHhlgN3fWw\njR8jYhreQYfohkRGR70h8A9TTU4YkFY/+8yIdwGns61+5tK981kMbVkm+pcgL0cP\nMN08I7MM+c87COY6IO27jVb/ALPAYpo+QUdAfEp5hlI7BQW95nB7LHOnxAm7lLTD\nhbdETUssieQUicwgDpGa2aD769nH+V3UCp0nA4yPDWyJJyKEWsD5EEK24VAcotql\nkwIDAQAB\n-----END PUBLIC KEY-----\n"
|
||||
info:
|
||||
url: info.ga.ntu.edu.tw
|
||||
key: "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5MLcsMcedzVWjw7pd/lr\nf8GdrzV6rubsJgEBJbC2OdrloHc+7uxEwWiYNTfg4j46nY/zCuTqzV/Wcfni5pY8\n0yuOmZdH9LjK0PW5BgXYJwe/bZkQmQcIQhkoSPghR8o+kZlI0a3+3gs4eAkpxB21\nPR5Rg2fvzDkaO3WcHf13HymayIk9wn4i0NdLUXgKSWcz5XNJtVBh6jtMkDq7ioOH\nQZT9OAODFw5CW/TvXBJaAvSEdDHsCNTE4vgJO1h6qowC27mErgjilA7TM81JFp40\nwexOW/gXHc4gCsj9BY39tDTqa56QIbJjKdqx7iyHUr1jMFmII1osS1ZVATco9RrM\naQIDAQAB\n-----END PUBLIC KEY-----\n"
|
||||
|
||||
+2
-1
@@ -12,6 +12,7 @@ development:
|
||||
test:
|
||||
<<: *defaults
|
||||
database: test_site
|
||||
|
||||
# set these environment variables on your prod server
|
||||
production:
|
||||
# host: <%= ENV['MONGOID_HOST'] %>
|
||||
@@ -20,4 +21,4 @@ production:
|
||||
# password: <%= ENV['MONGOID_PASSWORD'] %>
|
||||
# database: <%= ENV['MONGOID_DATABASE'] %>
|
||||
<<: *defaults
|
||||
database: production_8
|
||||
database: test_site
|
||||
@@ -1,71 +0,0 @@
|
||||
# encoding: utf-8
|
||||
|
||||
# =================================================================
|
||||
# move archives from main site to other sites depending on category
|
||||
# =================================================================
|
||||
|
||||
|
||||
require 'mongo'
|
||||
include Mongo
|
||||
|
||||
DB_BASE_NAME = "production"
|
||||
|
||||
CATEGORIES = { 'TNR' => 3, 'DOC' => 1, 'PROPERTY' => 5, 'CASHIER' => 2, 'CON' => 10 }
|
||||
|
||||
main_db = MongoClient.new("localhost", 27017).db("#{DB_BASE_NAME}_#{0}")
|
||||
main_categories = main_db["archive_file_categories"]
|
||||
main_archive_files = main_db["archive_files"]
|
||||
main_archive_file_multiples = main_db["archive_file_multiples"]
|
||||
|
||||
CATEGORIES.each do |key, number|
|
||||
# set the target DB
|
||||
target_db = MongoClient.new("localhost", 27017).db("#{DB_BASE_NAME}_#{number}")
|
||||
target_categories = target_db["archive_file_categories"]
|
||||
target_archive_files = target_db["archive_files"]
|
||||
target_archive_file_multiples = target_db["archive_file_multiples"]
|
||||
|
||||
if main_cat = main_categories.find_one(key: key)
|
||||
# get or create category
|
||||
category_id = \
|
||||
if cat = target_categories.find_one(key: main_cat['key'])
|
||||
cat['_id']
|
||||
else
|
||||
copy_category = main_cat.clone
|
||||
copy_category['_id'] = BSON::ObjectId.new
|
||||
copy_category['create_user_id'] = nil
|
||||
copy_category['update_user_id'] = nil
|
||||
target_categories.save copy_category
|
||||
end
|
||||
|
||||
main_archive_files.find(archive_file_category_id: main_cat['_id']).each do |archive_file|
|
||||
# copy archive_file
|
||||
copy_archive_file = archive_file.clone
|
||||
copy_archive_file['_id'] = BSON::ObjectId.new
|
||||
copy_archive_file['create_user_id'] = nil
|
||||
copy_archive_file['update_user_id'] = nil
|
||||
copy_archive_file['tagged_ids'] = []
|
||||
copy_archive_file['user_ids'] = nil
|
||||
copy_archive_file['archive_file_category_id'] = category_id
|
||||
target_archive_files.save copy_archive_file
|
||||
|
||||
main_archive_file_multiples.find(archive_file_id: archive_file['_id']).each do |archive_file_multiple|
|
||||
# copy archive_file_multiples
|
||||
copy_archive_file_multiple = archive_file_multiple.clone
|
||||
copy_archive_file_multiple['_id'] = BSON::ObjectId.new
|
||||
copy_archive_file_multiple['create_user_id'] = nil
|
||||
copy_archive_file_multiple['update_user_id'] = nil
|
||||
copy_archive_file_multiple['archive_file_id'] = copy_archive_file['_id']
|
||||
|
||||
# copy gridfs file
|
||||
main_grid = Mongo::GridFileSystem.new(main_db)
|
||||
file = main_grid.open("assets/archive_file_multiple/file/#{archive_file_multiple['_id']}/#{archive_file_multiple['file']}", 'r')
|
||||
target_grid = Mongo::GridFileSystem.new(target_db)
|
||||
target_grid.open("assets/archive_file_multiple/file/#{copy_archive_file_multiple['_id']}/#{copy_archive_file_multiple['file']}", 'w') do |f|
|
||||
f.write file
|
||||
end
|
||||
|
||||
target_archive_file_multiples.save copy_archive_file_multiple
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
File renamed without changes.
Vendored
+10
-3
@@ -44,8 +44,15 @@
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<% unless @bulletin.user_ids.blank? %>
|
||||
<div class="promoter">
|
||||
<div>
|
||||
<p><%= t(:promoter) %>:</p>
|
||||
<span><%= @bulletin.get_users.map{|u| "<span>#{u.name}</span>"}.join(', ').html_safe %></span>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<%= share_links(@bulletin, 'announcement') %>
|
||||
|
||||
<% unless @bulletin.user_ids.blank? %>
|
||||
<%= render partial: 'admin/member_selects/promoter_front', locals: {users: @bulletin.get_users} %>
|
||||
<% end %>
|
||||
<%= render partial: 'admin/member_selects/promoter_front', locals: {users: @bulletin.get_users} %>
|
||||
Vendored
+9
-20
@@ -31,29 +31,18 @@ class Panel::Archive::FrontEnd::ArchiveFilesController < OrbitWidgetController
|
||||
@archive_file_categorys = ArchiveFileCategory.all
|
||||
# @archive_files = ArchiveFile.where( :is_hidden => false ).desc(:is_top).page(params[:page]).per(@page_num)
|
||||
|
||||
# if !params[:category_id].blank? && !params[:tag_id].blank?
|
||||
# @archive_files = @archive_files.default_sort(params[:sort]).can_display.where(:archive_file_category_id.in => params[:category_id], :tagged_ids.in => params[:tag_id]).desc( :is_top ).page( params[:page_main] ).per(@page_num)
|
||||
|
||||
# @current_category = ArchiveFileCategory.from_id(params[:category_id]) rescue nil
|
||||
|
||||
# elsif !params[:category_id].blank?
|
||||
# @archive_files = ArchiveFile.default_sort(params[:sort]).can_display.where(:archive_file_category_id.in => params[:category_id]).desc( :is_top ).page( params[:page_main] ).per(@page_num)
|
||||
# @current_category = ArchiveFileCategory.from_id(params[:category_id]) rescue nil
|
||||
# elsif !params[:tag_id].blank?
|
||||
# @archive_files = ArchiveFile.default_sort(params[:sort]).can_display.where(:tagged_ids.in => params[:tag_id]).desc( :is_top ).page( params[:page_main] ).per(@page_num)
|
||||
# else
|
||||
# @archive_files = ArchiveFile.default_sort(params[:sort]).can_display.desc( :is_top ).page( params[:page_main] ).per(@page_num)
|
||||
# end
|
||||
if !params[:category_id].blank? && !params[:tag_id].blank?
|
||||
@archive_files = ArchiveFile.default_sort(params[:sort]).all.can_display.where(:tagged_ids.in => params[:tag_id]).any_in(:archive_file_category_id => params[:category_id]).merge(ArchiveFileCategory.excludes('disable' => true)).desc( :is_top ).page( params[:page_main] ).per(@page_num)
|
||||
@current_category = ArchiveFileCategory.any_in(:_id => params[:category_id]).excludes('disable' => true)
|
||||
elsif !params[:category_id].blank?
|
||||
@archive_files = ArchiveFile.default_sort(params[:sort]).all.can_display.any_in(:archive_file_category_id => params[:category_id]).merge(ArchiveFileCategory.excludes('disable' => true)).desc( :is_top ).page( params[:page_main] ).per(@page_num)
|
||||
@current_category = ArchiveFileCategory.any_in(:_id => params[:category_id]).excludes('disable' => true)
|
||||
@archive_files = @archive_files.default_sort(params[:sort]).can_display.where(:archive_file_category_id.in => params[:category_id], :tagged_ids.in => params[:tag_id]).desc( :is_top ).page( params[:page_main] ).per(@page_num)
|
||||
|
||||
@current_category = ArchiveFileCategory.from_id(params[:category_id]) rescue nil
|
||||
|
||||
elsif !params[:category_id].blank?
|
||||
@archive_files = ArchiveFile.default_sort(params[:sort]).can_display.where(:archive_file_category_id.in => params[:category_id]).desc( :is_top ).page( params[:page_main] ).per(@page_num)
|
||||
@current_category = ArchiveFileCategory.from_id(params[:category_id]) rescue nil
|
||||
elsif !params[:tag_id].blank?
|
||||
@archive_files = ArchiveFile.default_sort(params[:sort]).all.can_display.any_in(:tagged_ids => params[:tag_id]).merge(ArchiveFileCategory.excludes('disable' => true)).desc( :is_top ).page( params[:page_main] ).per(@page_num)
|
||||
@archive_files = ArchiveFile.default_sort(params[:sort]).can_display.where(:tagged_ids.in => params[:tag_id]).desc( :is_top ).page( params[:page_main] ).per(@page_num)
|
||||
else
|
||||
@archive_files = ArchiveFile.default_sort(params[:sort]).all.can_display.merge(ArchiveFileCategory.excludes('disable' => true)).desc( :is_top).page( params[:page_main] ).per(@page_num)
|
||||
@archive_files = ArchiveFile.default_sort(params[:sort]).can_display.desc( :is_top ).page( params[:page_main] ).per(@page_num)
|
||||
end
|
||||
|
||||
|
||||
|
||||
Vendored
+2
-4
@@ -27,10 +27,8 @@ class Panel::Archive::Widget::ArchiveFilesController < OrbitWidgetController
|
||||
@category_id = @part.category
|
||||
|
||||
date_now = Time.now
|
||||
if !params[:category_id].blank? && !params[:tag_id].blank?
|
||||
@archive_files = ArchiveFile.default_sort(params[:sort]).all.can_display.where(:tagged_ids.in => params[:tag_id]).any_in(:archive_file_category_id => params[:category_id]).merge(ArchiveFileCategory.excludes('disable' => true)).desc( :is_top ).page( params[:page_main] ).per(@page_num)
|
||||
@archive_file_categorys = ArchiveFileCategory.any_in(:_id => params[:category_id]).excludes('disable' => true)
|
||||
elsif !params[:category_id].blank?
|
||||
|
||||
if !params[:category_id].blank?
|
||||
@archive_files = ArchiveFile.default_sort(params[:sort]).all.can_display.any_in(:archive_file_category_id => params[:category_id]).merge(ArchiveFileCategory.excludes('disable' => true)).desc( :is_top ).page( params[:page_main] ).per(@page_num)
|
||||
@archive_file_categorys = ArchiveFileCategory.any_in(:_id => params[:category_id]).excludes('disable' => true)
|
||||
elsif !params[:tag_id].blank?
|
||||
|
||||
Vendored
+4
-4
@@ -8,15 +8,15 @@
|
||||
<tr>
|
||||
<th class="column-ctrl col-title"><%= sortable(:title, t("archive.Title"))%></th>
|
||||
<th class="column-ctrl col-file"><%= t("archive.Files")%></th>
|
||||
<th class="column-ctrl col-promoter"><%= t(:promoter)%></th>
|
||||
<th class="column-ctrl col-file"><%= t(:promoter)%></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<% @archive_files.each_with_index do |post,i| %>
|
||||
<tr <% if ( (i + 1) % 2 ) == 0 %> class="even" <% end %>>
|
||||
<td class="col-title"><div class="o-archives-title"><%= post.title %></div></td>
|
||||
<td class="col-file">
|
||||
<td><div class="o-archives-title"><%= post.title %></div></td>
|
||||
<td>
|
||||
<div class="o-archives-list-item">
|
||||
<% if !post.archive_file_multiples.blank? %>
|
||||
<ol>
|
||||
@@ -32,7 +32,7 @@
|
||||
<% end %>
|
||||
</div>
|
||||
</td>
|
||||
<td class="col-promoter">
|
||||
<td>
|
||||
<% unless post.get_users.blank? %>
|
||||
<div class="promoter-block">
|
||||
<ul>
|
||||
|
||||
Vendored
-15
@@ -1,15 +0,0 @@
|
||||
class Panel::Ask::BackEnd::AskCoordinationsController < OrbitWidgetController
|
||||
|
||||
include AdminHelper
|
||||
include OrbitControllerLib::DivisionForDisable
|
||||
|
||||
before_filter :for_app_manager
|
||||
|
||||
def initialize
|
||||
super
|
||||
@app_title = 'ask_coordinations'
|
||||
end
|
||||
|
||||
def index
|
||||
end
|
||||
end
|
||||
Vendored
+1
-103
@@ -1,5 +1,5 @@
|
||||
# encoding: utf-8
|
||||
class Panel::Ask::BackEnd::AskRepliesController < OrbitBackendController
|
||||
|
||||
include AdminHelper
|
||||
include OrbitControllerLib::DivisionForDisable
|
||||
|
||||
@@ -13,121 +13,19 @@ 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[:school][:depts].each do |dns|
|
||||
begin
|
||||
status_stack << send_request(dns, @ask_question, @ask_reply)
|
||||
rescue
|
||||
status_stack << "fail"
|
||||
end
|
||||
end unless params[:school].nil?
|
||||
|
||||
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_question = AskQuestion.find(params[:ask_question_id])
|
||||
@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[:school][:depts].each do |dns|
|
||||
begin
|
||||
status_stack << send_request(dns, @ask_question, @ask_reply)
|
||||
rescue
|
||||
status_stack << "fail"
|
||||
end
|
||||
end unless params[:school].nil?
|
||||
|
||||
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 send_request(dep_dns, current_question, current_reply)
|
||||
require 'net/http'
|
||||
require 'uri'
|
||||
require 'json'
|
||||
|
||||
uri_path = "/panel/ask/back_end/ask_requests/transfer_request"
|
||||
http = Net::HTTP.new(dep_dns,80)
|
||||
request = Net::HTTP::Post.new(uri_path)
|
||||
|
||||
body = {
|
||||
# 'auth_token' => '3kjlfksjDFJ',
|
||||
'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,
|
||||
}
|
||||
#binding.pry
|
||||
status = ""
|
||||
3.times do
|
||||
request.set_form_data(body)
|
||||
request.add_field 'X-Auth-Token', '3kjlfksjDFJ'
|
||||
response = http.request(request)
|
||||
|
||||
if response.code == "200"
|
||||
status = "success"
|
||||
break
|
||||
else
|
||||
status = "fail"
|
||||
end
|
||||
end
|
||||
|
||||
return status
|
||||
# puts "Response #{response.code} #{response.message}: #{response.body}"
|
||||
# flash[:notice] = response.body
|
||||
# flash[:notice] = "Response #{response.code} #{response.message}: #{response.body}"
|
||||
end
|
||||
|
||||
end
|
||||
Vendored
-38
@@ -1,38 +0,0 @@
|
||||
# encoding: utf-8
|
||||
class Panel::Ask::BackEnd::AskRequestsController < OrbitBackendController
|
||||
include AdminHelper
|
||||
include OrbitControllerLib::DivisionForDisable
|
||||
skip_before_filter :verify_authenticity_token
|
||||
|
||||
def transfer_request
|
||||
|
||||
if request.headers["HTTP_X_AUTH_TOKEN"] == '3kjlfksjDFJ'
|
||||
if !AskCategory.where(key: "transferred_question").any?
|
||||
@ask_category = AskCategory.new(key: "transferred_question")
|
||||
@ask_category.name_translations = { "zh_tw" => "轉介的問題", "en" => "Transferred Question" }
|
||||
@ask_category.save!
|
||||
end
|
||||
|
||||
category = AskCategory.where(key: "transferred_question")
|
||||
|
||||
@transfered_question = AskQuestion.new(
|
||||
name: params['name'],
|
||||
identity: params['identity'],
|
||||
email: params['email'],
|
||||
phone: params['phone'],
|
||||
tax: params['tax'],
|
||||
title: params['title'],
|
||||
content: params['content'],
|
||||
ask_category_id: category.first.id)
|
||||
|
||||
@transfered_question.ask_reply = AskReply.new
|
||||
@transfered_question.ask_reply.update_attributes(status: "待處理 (轉)")
|
||||
@transfered_question.save
|
||||
|
||||
render :nothing => true
|
||||
else
|
||||
render :status => 500
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
Vendored
+5
-12
@@ -14,22 +14,18 @@ class Panel::Ask::FrontEnd::AskQuestionsController < OrbitWidgetController
|
||||
def create
|
||||
@ask_question = AskQuestion.new(params[:ask_question])
|
||||
if gotcha_valid? && @ask_question.save
|
||||
@acknowledgement = AskAcknowledgement.last
|
||||
@acknowledgement = AskAcknowledgement.last
|
||||
@ask_acknowledgement = AskAcknowledgement.first || AskAcknowlegement.new
|
||||
|
||||
#@ask_question.save
|
||||
redirect_to root_path
|
||||
AskAdmin.all.each do |ask_admin|
|
||||
AskMailer.notice(ask_admin, @ask_question).deliver
|
||||
Resque.enqueue(SendAskNoticeMail, ask_admin.id, @ask_question.id)
|
||||
end
|
||||
|
||||
# Render to create.js.erb
|
||||
# redirect_to panel_ask_front_end_thank_you_path
|
||||
respond_to do |format|
|
||||
format.js
|
||||
end
|
||||
else
|
||||
# Render to index.js.erb
|
||||
respond_to do |format|
|
||||
format.js { render :index }
|
||||
# format.js { render :thank_you, notice: 'Your question has been successfully sent.' }
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -47,7 +43,4 @@ class Panel::Ask::FrontEnd::AskQuestionsController < OrbitWidgetController
|
||||
end
|
||||
@item = Page.find(params[:page_id]) rescue nil
|
||||
end
|
||||
|
||||
def sorry
|
||||
end
|
||||
end
|
||||
-70
@@ -1,50 +1,3 @@
|
||||
<script type="text/javascript">
|
||||
|
||||
var local_host = "<%= request.host %>";
|
||||
if (local_host[0] == "g" && local_host[1] == "a") {
|
||||
local_host = "www." + local_host;
|
||||
}
|
||||
|
||||
function hide_current_host_name(localhost) {
|
||||
$('input[type=checkbox]').each(function() {
|
||||
if ($(this).val() == local_host) {
|
||||
$(this).addClass("hide");
|
||||
$(this).next().addClass("hide");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
if ($("#ask_reply_status").val() == '轉介其他單位') {
|
||||
|
||||
hide_current_host_name(local_host);
|
||||
|
||||
$('.dept_options').show();
|
||||
}
|
||||
|
||||
$("#ask_reply_status").change(function() {
|
||||
|
||||
hide_current_host_name(local_host);
|
||||
|
||||
$('.dept_options').slideUp();
|
||||
if ($(this).find('option:selected').attr('value') == '轉介其他單位') {
|
||||
$('.dept_options').slideDown();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<style type="text/css">
|
||||
.dept_options {
|
||||
display: none;
|
||||
}
|
||||
.hide {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="ask_question_reply">
|
||||
<%= form_for @ask_reply, url: @url, method: @method do |f| %>
|
||||
<table class="table">
|
||||
@@ -78,30 +31,7 @@ $(document).ready(function() {
|
||||
['已處理', '已處理'],
|
||||
['轉介其他單位', '轉介其他單位']
|
||||
] %></td>
|
||||
<td id="XXX"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="5" class="dept_options">
|
||||
<div class="dept_options">
|
||||
<!-- Example <%= check_box("school", "depts", {:multiple => true}, 'ntu_ga_test_p.tp.rulingcom.com', nil) %><%= label_tag("ntu_ga_test_p.tp.rulingcom.com", "測試站總務處 (ntu_ga_test_p)") %>
|
||||
<%= check_box("school", "depts", {:multiple => true}, 'ntu_ga_test.tp.rulingcom.com', nil) %><%= label_tag("ntu_ga_test.tp.rulingcom.com", "測試站總務處經管組 (ntu_ga_test)") %> -->
|
||||
<!-- <%= check_box("school", "depts", {:multiple => true}, (request.host + ":3000"), nil) %><%= label_tag((request.host + ":3000"), "測試站3000") %>
|
||||
<%= check_box("school", "depts", {:multiple => true}, (request.host + ":4000"), nil) %><%= label_tag((request.host + ":4000"), "測試站4000") %> -->
|
||||
<%= check_box("school", "depts", {:multiple => true}, "www.ga.ntu.edu.tw", nil) %><%= label_tag("www.ga.ntu.edu.tw", "總務處") %>
|
||||
<%= check_box("school", "depts", {:multiple => true}, "sec.ga.ntu.edu.tw", nil) %><%= label_tag("sec.ga.ntu.edu.tw", "總務長室暨總務處秘書室") %>
|
||||
<%= check_box("school", "depts", {:multiple => true}, "doc.ga.ntu.edu.tw", nil) %><%= label_tag("doc.ga.ntu.edu.tw", "文書組") %>
|
||||
<%= check_box("school", "depts", {:multiple => true}, "general.ga.ntu.edu.tw", nil) %><%= label_tag("general.ga.ntu.edu.tw", "事務組") %>
|
||||
<%= check_box("school", "depts", {:multiple => true}, "property.ga.ntu.edu.tw", nil) %><%= label_tag("property.ga.ntu.edu.tw", "保管組") %>
|
||||
<%= check_box("school", "depts", {:multiple => true}, "construction.ga.ntu.edu.tw", nil) %><%= label_tag("construction.ga.ntu.edu.tw", "營繕組") %>
|
||||
<%= check_box("school", "depts", {:multiple => true}, "cashier.ga.ntu.edu.tw", nil) %><%= label_tag("cashier.ga.ntu.edu.tw", "出納組") %>
|
||||
<%= check_box("school", "depts", {:multiple => true}, "procurement.ga.ntu.edu.tw", nil) %><%= label_tag("procurement.ga.ntu.edu.tw", "採購組") %>
|
||||
<%= check_box("school", "depts", {:multiple => true}, "fss.ga.ntu.edu.tw", nil) %><%= label_tag("fss.ga.ntu.edu.tw", "經營管理組") %>
|
||||
<%= check_box("school", "depts", {:multiple => true}, "police.ga.ntu.edu.tw", nil) %><%= label_tag("police.ga.ntu.edu.tw", "駐警隊") %>
|
||||
<%= check_box("school", "depts", {:multiple => true}, "social.ga.ntu.edu.tw", nil) %><%= label_tag("social.ga.ntu.edu.tw", "社科院總務分處") %>
|
||||
<%= check_box("school", "depts", {:multiple => true}, "medicine.ga.ntu.edu.tw", nil) %><%= label_tag("medicine.ga.ntu.edu.tw", "醫學院總務分處") %>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="5">
|
||||
<%= f.label :send_email %><%= f.radio_button :send_email, 1, checked: @ask_reply.send_email? %><%= t('ask.yes') %>
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
window.location.href = "<%= panel_ask_front_end_thank_you_path %>";
|
||||
window.location.href= "<%= panel_ask_front_end_thank_you_path %>"
|
||||
+4
-6
@@ -21,9 +21,9 @@ $(document).ready(function(){
|
||||
$(this).hide();
|
||||
}).bind("ajaxError", function() {
|
||||
$(this).hide();
|
||||
// window.location.href = "<%= panel_ask_front_end_thank_you_path %>";
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
<div id="spinner" class="spinner" style="display:none;">
|
||||
@@ -31,11 +31,11 @@ $(document).ready(function(){
|
||||
</div>
|
||||
<div id="new-ask-question" class="ask-question">
|
||||
<div id="acknowledgement"></div>
|
||||
<%= form_for @ask_question, url: panel_ask_front_end_ask_questions_path(standalone: true), html: {class: 'form-horizontal'}, method: :post do |f| %>
|
||||
<%= form_for @ask_question, url: panel_ask_front_end_ask_questions_path(standalone: true), html: {class: 'form-horizontal'} do |f| %>
|
||||
<div class="control-group">
|
||||
<%= f.label :ask_category_id, class: 'control-label required' %>
|
||||
<div class="controls">
|
||||
<%= f.collection_select :ask_category_id, AskCategory.all.select { |c| c.key != 'transferred_question' }, :id, :name %>
|
||||
<%= f.collection_select :ask_category_id, AskCategory.all, :id, :name %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
@@ -85,9 +85,7 @@ $(document).ready(function(){
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<%= f.label t('ask.validate_code'), class: 'control-label required' %>
|
||||
<div class="controls">
|
||||
<label><%= t('ask.validate_code_note') %></label>
|
||||
<%= gotcha_error %>
|
||||
<%= gotcha%>
|
||||
</div>
|
||||
|
||||
-1
@@ -1 +0,0 @@
|
||||
window.location.href = "<%= panel_ask_front_end_sorry_path %>";
|
||||
-1
@@ -1 +0,0 @@
|
||||
<h3><%= t(:ask_fail, :scope => :ask) %> !</h3>
|
||||
@@ -1,6 +1,5 @@
|
||||
en:
|
||||
ask:
|
||||
ask_fail: Something went wrong
|
||||
ask: Ask
|
||||
export: Export
|
||||
reply: Reply
|
||||
@@ -18,8 +17,6 @@ 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:
|
||||
|
||||
@@ -3,7 +3,6 @@ zh_tw:
|
||||
errors:
|
||||
verification_failed: 驗證碼錯誤
|
||||
ask:
|
||||
ask_fail: 寄送失敗
|
||||
ask: 發問
|
||||
export: 匯出
|
||||
reply: 回覆
|
||||
@@ -23,8 +22,6 @@ zh_tw:
|
||||
admin: 管理者
|
||||
new_question: 新的發問
|
||||
pending: 待處理
|
||||
validate_code: 驗證碼
|
||||
validate_code_note: 請回答下列驗證問句。
|
||||
mongoid:
|
||||
attributes:
|
||||
ask_question:
|
||||
|
||||
+1
-5
@@ -11,18 +11,14 @@ Rails.application.routes.draw do
|
||||
end
|
||||
resources :ask_replies
|
||||
end
|
||||
|
||||
|
||||
resources :ask_categories
|
||||
resources :ask_acknowledgements
|
||||
resources :ask_admins
|
||||
|
||||
match "ask_requests/auth_request" => "ask_requests#auth_request", :as => 'auth_request'
|
||||
match "ask_requests/transfer_request" => "ask_requests#transfer_request", :as => 'transfer_request'
|
||||
end
|
||||
|
||||
namespace :front_end do
|
||||
match "ask_questions/thank_you" => "ask_questions#thank_you", :as => 'thank_you'
|
||||
match "ask_questions/sorry" => "ask_questions#sorry", :as => 'sorry'
|
||||
resources :ask_questions
|
||||
end
|
||||
end
|
||||
|
||||
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
Vendored
Whitespace-only changes.
Vendored
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
+1
-1
@@ -17,6 +17,6 @@
|
||||
<div class="form-actions form-fixed pagination-right">
|
||||
<%= link_to content_tag(:i, nil, :class => 'icon-plus icon-white') + t(:add), new_panel_faq_back_end_qa_path, :class => 'btn btn-primary pull-right' if (is_manager? rescue nil) %>
|
||||
<div id="qa_pagination" class="paginationFixed">
|
||||
<%= paginate @qas, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} rescue nil %>
|
||||
<%= paginate @qas, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>
|
||||
</div>
|
||||
</div>
|
||||
+1
-1
@@ -2,7 +2,7 @@ class Panel::PageContent::BackEnd::PageContextsController < OrbitBackendControll
|
||||
before_filter :force_order_for_visitor,:only=>[:index]
|
||||
before_filter :force_order_for_user,:except => [:index]
|
||||
|
||||
# before_filter :for_app_manager,:except => [:index]
|
||||
before_filter :for_app_manager,:except => [:index]
|
||||
before_filter :for_app_sub_manager,:except => [:index]
|
||||
|
||||
#before_filter :is_admin?
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
<%= page_context.page.title %>
|
||||
<div class="quick-edit">
|
||||
<ul class="nav nav-pills hide">
|
||||
<%if is_manager? || is_admin? || page_context.authed_users("Edit").include?(current_user)%>
|
||||
<%if is_manager? || is_admin? || page_context.authed_users(:edit).include?(current_user)%>
|
||||
<li><%= link_to t(:edit), edit_panel_page_content_back_end_page_context_path(page_context, page: params[:page], sort: params[:sort], direction: params[:direction], sort_options: params[:sort_options]) %></li>
|
||||
<%if (is_manager? || is_admin?) %>
|
||||
<li><%=show_page_context_edit_auth_link page_context%></li>
|
||||
|
||||
+6
-156
@@ -1,8 +1,4 @@
|
||||
require 'csv'
|
||||
require 'iconv'
|
||||
require 'roo'
|
||||
|
||||
# encoding: UTF-8
|
||||
|
||||
class Panel::Survey::BackEnd::SurveysController < OrbitBackendController
|
||||
|
||||
@@ -89,152 +85,11 @@ class Panel::Survey::BackEnd::SurveysController < OrbitBackendController
|
||||
redirect_to panel_survey_back_end_surveys_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
|
||||
end
|
||||
|
||||
def set_import
|
||||
@survey = ::Survey.find(params[:id])
|
||||
end
|
||||
|
||||
def import
|
||||
@survey = ::Survey.find(params[:id])
|
||||
@chart_data, @survey_questions, @survey_answers = @survey.generate_chart_data
|
||||
@file = params[:file]
|
||||
|
||||
case File.extname(@file.original_filename)
|
||||
when ".csv" then @spreadsheet = Roo::CSV.new(@file.path, csv_options: {encoding: Encoding::Big5})
|
||||
# when ".xls" then Excel.new(file.path, nil, :ignore)
|
||||
# when ".xlsx" then Excelx.new(file.path, nil, :ignore)
|
||||
else raise "Unknown file type: #{file.original_filename}"
|
||||
end
|
||||
|
||||
# Modify titles if changed
|
||||
titles = @spreadsheet.row(1) - [" "]
|
||||
@survey_questions.each_with_index do |question, index|
|
||||
question.update_attributes(title: titles[index])
|
||||
end
|
||||
|
||||
@survey_answers.destroy
|
||||
|
||||
# Start and end of speadsheet
|
||||
@end_row = @spreadsheet.count
|
||||
|
||||
@max_row_start = 0
|
||||
@survey_questions.each do |question|
|
||||
case question.type
|
||||
when ::SurveyQuestion::Radio, ::SurveyQuestion::Select, ::SurveyQuestion::Check
|
||||
if question.survey_question_options.count > @max_row_start
|
||||
@max_row_start = question.survey_question_options.count
|
||||
end
|
||||
when ::SurveyQuestion::Radiogroup
|
||||
if question.survey_question_options.count * question.survey_question_radiogroups.count > @max_row_start
|
||||
@max_row_start = question.survey_question_options.count * question.survey_question_radiogroups.count
|
||||
end
|
||||
end
|
||||
end
|
||||
@start_row = @max_row_start + 2
|
||||
|
||||
# Modify multiline options if changed
|
||||
(@start_row..@end_row).each do |row|
|
||||
@answer_model = @survey.survey_answers.new
|
||||
@survey_questions.each_with_index do |question, index|
|
||||
case question.type
|
||||
|
||||
when ::SurveyQuestion::Oneline, ::SurveyQuestion::Multiline
|
||||
@answer_model[question.id.to_s] = @spreadsheet.row(row)[index * 2]
|
||||
|
||||
when ::SurveyQuestion::Radio, ::SurveyQuestion::Select
|
||||
if !@spreadsheet.row(row)[index*2].nil? && @spreadsheet.row(row)[index*2] != " "
|
||||
@answer_model[question.id.to_s] = @spreadsheet.row(row)[index*2]
|
||||
end
|
||||
|
||||
when ::SurveyQuestion::Check
|
||||
if !@spreadsheet.row(row)[index*2].nil? && @spreadsheet.row(row)[index*2] != " "
|
||||
@answer_model[question.id.to_s] = @spreadsheet.row(row)[index*2].split("\"").select.each_with_index { |str, i| i.odd? }
|
||||
end
|
||||
|
||||
when ::SurveyQuestion::Radiogroup
|
||||
radio_groups = []
|
||||
spreadsheet_radiogroups_lines =
|
||||
question.survey_question_options.count * question.survey_question_radiogroups.count + 2
|
||||
|
||||
# Grab each radiogroups line for update
|
||||
(2...spreadsheet_radiogroups_lines).each do |line|
|
||||
radio_groups << @spreadsheet.row(line)[index * 2]
|
||||
end
|
||||
|
||||
# Grab answers info
|
||||
answers = []
|
||||
if not @spreadsheet.row(row)[index * 2].blank?
|
||||
answers << eval(@spreadsheet.row(row)[index * 2])
|
||||
end
|
||||
|
||||
# Save the answers
|
||||
answers.each do |answer|
|
||||
options = Hash[question.survey_question_options.collect { |o| [ o.id.to_s, o.name ] }]
|
||||
# @answer_model = @survey.survey_answers.new
|
||||
@answer_model[question.id.to_s] = {}
|
||||
|
||||
answer.each do |option, value|
|
||||
@answer_model[question.id.to_s][options.invert[option]] = value
|
||||
end
|
||||
|
||||
# @answer_model.save!
|
||||
end
|
||||
|
||||
# Parse the needed info in the array
|
||||
radio_titles = []
|
||||
radio_options = []
|
||||
radio_groups.each do |group|
|
||||
option_with_radio = group.split(' - ')
|
||||
radio_titles << option_with_radio[0]
|
||||
radio_options << option_with_radio[1]
|
||||
end
|
||||
|
||||
# Update the spreadsheet info to the DB
|
||||
groups_of_options = []
|
||||
groups_of_radios = []
|
||||
radio_titles.each_slice(question.survey_question_radiogroups.count) do |options|
|
||||
groups_of_options << options
|
||||
end
|
||||
|
||||
radio_options.each_slice(question.survey_question_radiogroups.count) do |options|
|
||||
groups_of_radios << options
|
||||
end
|
||||
|
||||
# Update option names
|
||||
question.survey_question_options.each_with_index do |option, index|
|
||||
groups_of_options[index].each do |modified_option|
|
||||
if option.name_translations["zh_tw"] != modified_option
|
||||
option.update_attributes(name: modified_option)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Update radio names
|
||||
question.survey_question_radiogroups.each_with_index do |option, index|
|
||||
groups_of_radios.each do |radios|
|
||||
if radios[index] != option.name_translations["zh_tw"]
|
||||
option.update_attributes(name: radios[index])
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@answer_model.save!
|
||||
|
||||
end #end row
|
||||
|
||||
redirect_to panel_survey_back_end_surveys_url, :notice => :success
|
||||
end
|
||||
|
||||
def export
|
||||
@survey = ::Survey.find(params[:id])
|
||||
@chart_data, @survey_questions, @survey_answers = @survey.generate_chart_data
|
||||
|
||||
head = 'EF BB BF'.split(' ').map{|a|a.hex.chr}.join()
|
||||
|
||||
csv = CSV.generate(csv = head) do |csv|
|
||||
csv = CSV.generate do |csv|
|
||||
row = []
|
||||
@survey_questions.each do |question|
|
||||
row << question.title
|
||||
@@ -279,7 +134,7 @@ class Panel::Survey::BackEnd::SurveysController < OrbitBackendController
|
||||
@survey_questions.each do |question|
|
||||
if question.type == ::SurveyQuestion::Radiogroup
|
||||
options = Hash[question.survey_question_options.collect{|o| [ o.id.to_s, o.name ] }]
|
||||
row << Hash[answer[question.id.to_s].map {|o, g| [options[o], g]}] if !answer[question.id.to_s].blank?
|
||||
row << Hash[answer[question.id.to_s].map {|o, g| [options[o], g]}]
|
||||
else
|
||||
row << answer[question.id.to_s]
|
||||
end
|
||||
@@ -291,16 +146,11 @@ class Panel::Survey::BackEnd::SurveysController < OrbitBackendController
|
||||
end
|
||||
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.csv { send_data csv }
|
||||
format.csv do
|
||||
response.headers["Content-Type"] = "text/csv; charset=big5"
|
||||
render :text => csv.encode('Big5')
|
||||
end
|
||||
end
|
||||
|
||||
# respond_to do |format|
|
||||
# format.csv do
|
||||
# response.headers["Content-Type"] = "text/csv; charset=big5"
|
||||
# render :text => csv.encode('Big5')
|
||||
# end
|
||||
# end
|
||||
end
|
||||
|
||||
def set_answers
|
||||
|
||||
Vendored
-6
@@ -110,10 +110,4 @@ class Panel::Survey::FrontEnd::SurveysController < OrbitWidgetController
|
||||
end
|
||||
end
|
||||
|
||||
def info
|
||||
redirect_standalone result_panel_survey_front_end_survey_path(params[:id], :standalone => 'true') do
|
||||
@survey = ::Survey.find params[:id]
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
@@ -41,16 +41,6 @@ class Survey
|
||||
|
||||
before_save :check_deadline, :update_avliable_language
|
||||
|
||||
def topic
|
||||
unless self.deadline && Time.now > self.deadline
|
||||
('<a target="_blank" href="' + Rails.application.routes
|
||||
.url_helpers.panel_survey_front_end_survey_path(self, :standalone => true) + '">' + self.title + '</a>').html_safe
|
||||
else
|
||||
('<a target="_blank" href="' + Rails.application.routes
|
||||
.url_helpers.info_panel_survey_front_end_survey_path(self, :standalone => true) + '">' + self.title + '</a>').html_safe
|
||||
end
|
||||
end
|
||||
|
||||
def time_range
|
||||
r = "#{self.postdate.to_date}"
|
||||
r += "- #{self.deadline.to_date}" if self.deadline
|
||||
|
||||
@@ -44,4 +44,5 @@ class SurveyQuestion
|
||||
def get_jump_tos
|
||||
Hash[survey_question_options.select{ |o| !o.jump_to.blank? }.collect{ |o| [o.id.to_s, o.jump_to] }]
|
||||
end
|
||||
|
||||
end
|
||||
-1
@@ -14,7 +14,6 @@
|
||||
<li><%= link_to t('survey.jump'), jump_panel_survey_back_end_survey_path(survey, :page => params[:page]) %></li>
|
||||
<li><%= link_to t('survey.set_answers'), set_answers_panel_survey_back_end_survey_path(survey, :page => params[:page]) %></li>
|
||||
<li><%= link_to t('survey.export_csv'), export_panel_survey_back_end_survey_path(survey, :format => :csv), :target => '_blank' %></li>
|
||||
<li><%= link_to t('survey.import_csv'), set_import_panel_survey_back_end_survey_path(survey), :target => '_blank' %></li>
|
||||
<li><%= link_to t('survey.chart'), result_panel_survey_front_end_survey_path(survey, :force_chart => true, :standalone => true), :target => '_blank' %></li>
|
||||
<li><%= link_to t(:delete_), panel_survey_back_end_survey_path(survey), :confirm => t('sure?'), :method => :delete, :remote => true %></li>
|
||||
<% end -%>
|
||||
|
||||
-18
@@ -1,18 +0,0 @@
|
||||
<%= form_tag import_panel_survey_back_end_survey_path(@survey), multipart: true do %>
|
||||
<table class="table main-list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="span2"><%= t('survey.import.title') %></th>
|
||||
<th class="span2"><%= t('survey.import.description') %></th>
|
||||
<th class="span2"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="tbody_surveys" class="sort-holder">
|
||||
<tr>
|
||||
<td><%= @survey.title %></td>
|
||||
<td><%= file_field_tag :file %></td>
|
||||
<td><%= submit_tag t("survey.import_csv"), :class => 'btn' %></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<% end %>
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
<h3>問卷已結束!感謝您的參與!</h3>
|
||||
|
||||
<table class="table">
|
||||
<tr>
|
||||
<th>問卷標題</th>
|
||||
<th>問卷說明</th>
|
||||
<th>開始期間</th>
|
||||
<th>結束期間</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%= @survey.title %></td>
|
||||
<td><%= truncate(@survey.description, to: 40) %></td>
|
||||
<td><%= @survey.postdate.to_date %></td>
|
||||
<td><%= @survey.deadline.to_date %></td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -23,13 +23,6 @@ en:
|
||||
|
||||
answers_list: Answers List
|
||||
export_csv: Export CSV
|
||||
|
||||
import_csv: Import CSV
|
||||
|
||||
import:
|
||||
title: Imported Survey
|
||||
description: Choose the Modified Exported File According to this Survey
|
||||
|
||||
chart: Chart
|
||||
set_answers: Set Answers
|
||||
duplicate_it: Duplicate It
|
||||
@@ -53,7 +46,6 @@ en:
|
||||
title: Title
|
||||
time_range: Date Range
|
||||
result: Result
|
||||
topic: Title
|
||||
|
||||
frontend:
|
||||
survey: Survey Frontend
|
||||
|
||||
@@ -24,13 +24,6 @@ zh_tw:
|
||||
|
||||
answers_list: 結果清單
|
||||
export_csv: 匯出CSV
|
||||
|
||||
import_csv: 匯入CSV
|
||||
|
||||
import:
|
||||
title: 匯入的問卷
|
||||
description: 選擇根據此問卷所修改的匯出檔案
|
||||
|
||||
chart: 結果圖表
|
||||
set_answers: 設定結果
|
||||
duplicate_it: 複製問卷
|
||||
@@ -55,7 +48,6 @@ zh_tw:
|
||||
time_range: 問卷期間
|
||||
write: 填問卷
|
||||
result: 結果
|
||||
topic: 問卷標題
|
||||
|
||||
frontend:
|
||||
survey: 問卷調查前台
|
||||
|
||||
@@ -9,8 +9,6 @@ Rails.application.routes.draw do
|
||||
end
|
||||
member do
|
||||
get 'export'
|
||||
get 'set_import'
|
||||
post 'import'
|
||||
get 'set_answers'
|
||||
get 'jump'
|
||||
get 'duplicate_it'
|
||||
@@ -26,7 +24,6 @@ Rails.application.routes.draw do
|
||||
resources :surveys do
|
||||
member do
|
||||
get 'result'
|
||||
get 'info'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
+1
-4
@@ -20,12 +20,9 @@ module Faq
|
||||
|
||||
widgets do
|
||||
default_widget do
|
||||
sorting 'desc(:postdate)'
|
||||
enable ["typeA"]
|
||||
query 'Survey.any_of( {:postdate.lte => Time.now} )'
|
||||
# link_field :title, {:method => 'panel_survey_front_end_survey_path',:args=>:self}
|
||||
# field :title
|
||||
field :topic
|
||||
link_field :title, {:method => 'panel_survey_front_end_survey_path',:args=>:self}
|
||||
field :time_range
|
||||
field :write
|
||||
field :result
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
.bundle/
|
||||
log/*.log
|
||||
pkg/
|
||||
test/dummy/db/*.sqlite3
|
||||
test/dummy/log/*.log
|
||||
test/dummy/tmp/
|
||||
test/dummy/.sass-cache
|
||||
-17
@@ -1,17 +0,0 @@
|
||||
source "http://rubygems.org"
|
||||
|
||||
# Declare your gem's dependencies in survey_b.gemspec.
|
||||
# Bundler will treat runtime dependencies like base dependencies, and
|
||||
# development dependencies will be added by default to the :development group.
|
||||
gemspec
|
||||
|
||||
# jquery-rails is used by the dummy application
|
||||
gem "jquery-rails"
|
||||
|
||||
# Declare any dependencies that are still in development here instead of in
|
||||
# your gemspec. These might include edge Rails or gems from your path or
|
||||
# Git. Remember to move these dependencies to your gemspec before releasing
|
||||
# your gem to rubygems.org.
|
||||
|
||||
# To use debugger
|
||||
# gem 'debugger'
|
||||
-20
@@ -1,20 +0,0 @@
|
||||
Copyright 2013 YOURNAME
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
@@ -1,3 +0,0 @@
|
||||
= SurveyB
|
||||
|
||||
This project rocks and uses MIT-LICENSE.
|
||||
-38
@@ -1,38 +0,0 @@
|
||||
#!/usr/bin/env rake
|
||||
begin
|
||||
require 'bundler/setup'
|
||||
rescue LoadError
|
||||
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
||||
end
|
||||
begin
|
||||
require 'rdoc/task'
|
||||
rescue LoadError
|
||||
require 'rdoc/rdoc'
|
||||
require 'rake/rdoctask'
|
||||
RDoc::Task = Rake::RDocTask
|
||||
end
|
||||
|
||||
RDoc::Task.new(:rdoc) do |rdoc|
|
||||
rdoc.rdoc_dir = 'rdoc'
|
||||
rdoc.title = 'SurveyB'
|
||||
rdoc.options << '--line-numbers'
|
||||
rdoc.rdoc_files.include('README.rdoc')
|
||||
rdoc.rdoc_files.include('lib/**/*.rb')
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
Bundler::GemHelper.install_tasks
|
||||
|
||||
require 'rake/testtask'
|
||||
|
||||
Rake::TestTask.new(:test) do |t|
|
||||
t.libs << 'lib'
|
||||
t.libs << 'test'
|
||||
t.pattern = 'test/**/*_test.rb'
|
||||
t.verbose = false
|
||||
end
|
||||
|
||||
|
||||
task :default => :test
|
||||
@@ -1,23 +0,0 @@
|
||||
class ApplicationController < ActionController::Base
|
||||
protect_from_forgery
|
||||
before_filter :set_locale
|
||||
|
||||
# Set I18n.locale
|
||||
def set_locale
|
||||
# update session if passed
|
||||
session[:locale] = params[:locale] if params[:locale]
|
||||
|
||||
# set locale based on session or default
|
||||
begin
|
||||
# check if locale is valid for non site pages
|
||||
if !VALID_LOCALES.include?(session[:locale])
|
||||
I18n.locale = I18n.default_locale
|
||||
else
|
||||
I18n.locale = session[:locale]
|
||||
end
|
||||
rescue
|
||||
I18n.locale = I18n.default_locale
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
Vendored
-79
@@ -1,79 +0,0 @@
|
||||
class Panel::SurveyB::BackEnd::PeriodsController < OrbitBackendController
|
||||
|
||||
include AdminHelper
|
||||
include OrbitControllerLib::DivisionForDisable
|
||||
|
||||
before_filter :for_app_manager
|
||||
|
||||
def initialize
|
||||
super
|
||||
@app_title = 'survey_b'
|
||||
end
|
||||
|
||||
|
||||
# before_filter :force_order_for_user,:only => :index
|
||||
# before_filter :for_app_sub_manager,:except => :index
|
||||
|
||||
|
||||
def index
|
||||
@periods = SurveyBPeriod.page params[:page]
|
||||
respond_to do |format|
|
||||
format.html # index.html.erb
|
||||
format.xml { render :xml => @periods }
|
||||
format.js
|
||||
end
|
||||
end
|
||||
|
||||
def new
|
||||
@period = SurveyBPeriod.new
|
||||
|
||||
respond_to do |format|
|
||||
format.html # new.html.erb
|
||||
format.xml { render :xml => @period }
|
||||
end
|
||||
end
|
||||
|
||||
def create
|
||||
@period = SurveyBPeriod.new params[:survey_b_period]
|
||||
|
||||
respond_to do |format|
|
||||
if @period.save
|
||||
format.html { redirect_to(panel_survey_b_back_end_periods_url) }
|
||||
format.xml { render :xml => @period, :status => :created, :location => @period }
|
||||
else
|
||||
format.html { render :action => "new" }
|
||||
format.xml { render :xml => @period.errors, :status => :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def edit
|
||||
@period = SurveyBPeriod.find(params[:id])
|
||||
end
|
||||
|
||||
def update
|
||||
@period = SurveyBPeriod.find(params[:id])
|
||||
|
||||
respond_to do |format|
|
||||
if @period.update_attributes(params[:survey_b_period])
|
||||
format.html { redirect_to(panel_survey_b_back_end_periods_url(:page => params[:page])) }
|
||||
format.xml { head :ok }
|
||||
else
|
||||
format.html { render :action => "edit" }
|
||||
format.xml { render :xml => @period.errors, :status => :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
@period = SurveyBPeriod.find(params[:id])
|
||||
|
||||
respond_to do |format|
|
||||
if @period.destroy
|
||||
format.html { redirect_to(panel_survey_b_back_end_periods_url(:page => params[:page])) }
|
||||
format.xml { head :ok }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
Vendored
-36
@@ -1,36 +0,0 @@
|
||||
class Panel::SurveyB::BackEnd::SettingsController < OrbitBackendController
|
||||
|
||||
include AdminHelper
|
||||
include OrbitControllerLib::DivisionForDisable
|
||||
|
||||
before_filter :for_app_manager
|
||||
|
||||
def initialize
|
||||
super
|
||||
@app_title = 'survey_b'
|
||||
end
|
||||
|
||||
def show
|
||||
redirect_to edit_panel_survey_b_back_end_setting_path
|
||||
end
|
||||
|
||||
def edit
|
||||
@setting = SurveyBSetting.first_or_create
|
||||
end
|
||||
|
||||
def update
|
||||
@setting = SurveyBSetting.first_or_create
|
||||
|
||||
respond_to do |format|
|
||||
if @setting.update_attributes(params[:survey_b_setting])
|
||||
format.html { redirect_to(panel_survey_b_back_end_periods_url) }
|
||||
format.xml { head :ok }
|
||||
else
|
||||
format.html { render :action => "edit" }
|
||||
format.xml { render :xml => @setting.errors, :status => :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
Vendored
-152
@@ -1,152 +0,0 @@
|
||||
class Panel::SurveyB::BackEnd::SurveyBController < OrbitBackendController
|
||||
include AdminHelper
|
||||
include OrbitControllerLib::DivisionForDisable
|
||||
|
||||
before_filter :for_app_manager
|
||||
#before_filter :force_order_for_user,:only => :index
|
||||
#before_filter :for_app_sub_manager,:except => :index
|
||||
|
||||
|
||||
def initialize
|
||||
super
|
||||
@app_title = 'survey_b'
|
||||
end
|
||||
|
||||
def index
|
||||
if params[:period] && @period = SurveyBPeriod.find(params[:period])
|
||||
@answers = ::SurveyBAnswer.where(:created_at.gte => @period.start_date, :created_at.lte => @period.end_date)
|
||||
else
|
||||
@answers = ::SurveyBAnswer.all
|
||||
end
|
||||
if params[:sort]
|
||||
options = params[:sort_options]
|
||||
options = [options] if !options.class.eql?(Array)
|
||||
options.each do |option|
|
||||
@answers = @answers.order_by(option, params[:direction])
|
||||
end
|
||||
end
|
||||
@answers = @answers.page(params[:page]).per(10)
|
||||
respond_to do |format|
|
||||
format.html # index.html.erb
|
||||
format.xml { render :xml => @answers }
|
||||
format.js
|
||||
end
|
||||
end
|
||||
|
||||
def delete
|
||||
if params[:ids]
|
||||
answers = SurveyBAnswer.any_in(:_id => params[:ids]).destroy_all
|
||||
end
|
||||
redirect_to panel_survey_b_back_end_survey_b_index_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
|
||||
end
|
||||
|
||||
def result
|
||||
if params[:period] && @period = SurveyBPeriod.find(params[:period])
|
||||
@answers = ::SurveyBAnswer.where(:created_at.gte => @period.start_date, :created_at.lte => @period.end_date)
|
||||
else
|
||||
@answers = ::SurveyBAnswer.all
|
||||
end
|
||||
@results = Hash[(t('survey_b.institutions').keys + [ 'all' ]).map do |i_key|
|
||||
[i_key, Hash[(t('survey_b.questions').keys + ['count', 'sum', 'sum7'] ).map{|q_key| [q_key, 0] }].merge({ 'count' => 0, 'sum' => 0, 'sum7' => 0 })]
|
||||
end]
|
||||
[:good_institutions, :bad_institutions].each do |item|
|
||||
@results[item] = Hash[t('survey_b.institutions').map{|k, i| [k, 0] }]
|
||||
end
|
||||
[:person_question, :rate_question, :quality_question].each do |item|
|
||||
@results[item] = t("survey_b.#{item}_options").map{|o| 0 }
|
||||
end
|
||||
@answers.each do |answer|
|
||||
t('survey_b.institutions').each do |i_key, institution|
|
||||
if answer[i_key.to_s]
|
||||
@results[i_key]['count'] += 1
|
||||
t('survey_b.questions').keys.each do |q_key|
|
||||
point = 10 - ( answer[i_key.to_s][q_key.to_s].to_i * 2 )
|
||||
@results[i_key][q_key] += point
|
||||
@results[i_key]['sum'] += point
|
||||
if q_key != :question6
|
||||
@results[i_key]['sum7'] += point
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
[:good_institutions, :bad_institutions].each do |item|
|
||||
if answer[item.to_s]
|
||||
answer[item.to_s].each do |institution|
|
||||
@results[item][institution] += 1
|
||||
end
|
||||
end
|
||||
end
|
||||
[:person_question, :rate_question, :quality_question].each do |item|
|
||||
if answer[item.to_s]
|
||||
@results[item][answer[item.to_s].to_i] += 1
|
||||
end
|
||||
end
|
||||
end
|
||||
t('survey_b.institutions').each do |i_key, institution|
|
||||
(t('survey_b.questions').keys + ['count', 'sum', 'sum7'] ).each do |q_key|
|
||||
@results['all'][q_key] += @results[i_key][q_key]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def export
|
||||
|
||||
if params[:period] && @period = SurveyBPeriod.find(params[:period])
|
||||
@answers = ::SurveyBAnswer.where(:created_at.gte => @period.start_date, :created_at.lte => @period.end_date)
|
||||
@comment_question = ::SurveyBAnswer.where(:created_at.gte => @period.start_date, :created_at.lte => @period.end_date, :comment_question.nin => [''])
|
||||
else
|
||||
@answers = ::SurveyBAnswer.all
|
||||
@comment_question = ::SurveyBAnswer.where(:comment_question.nin => [''])
|
||||
end
|
||||
@results = Hash[(t('survey_b.institutions').keys + [ 'all' ]).map do |i_key|
|
||||
[i_key, Hash[(t('survey_b.questions').keys + ['count', 'sum', 'sum7'] ).map{|q_key| [q_key, 0] }].merge({ 'count' => 0, 'sum' => 0, 'sum7' => 0 })]
|
||||
end]
|
||||
[:good_institutions, :bad_institutions].each do |item|
|
||||
@results[item] = Hash[t('survey_b.institutions').map{|k, i| [k, 0] }]
|
||||
end
|
||||
[:person_question, :rate_question, :quality_question].each do |item|
|
||||
@results[item] = t("survey_b.#{item}_options").map{|o| 0 }
|
||||
end
|
||||
@answers.each do |answer|
|
||||
t('survey_b.institutions').each do |i_key, institution|
|
||||
if answer[i_key.to_s]
|
||||
@results[i_key]['count'] += 1
|
||||
t('survey_b.questions').keys.each do |q_key|
|
||||
point = 10 - ( answer[i_key.to_s][q_key.to_s].to_i * 2 )
|
||||
@results[i_key][q_key] += point
|
||||
@results[i_key]['sum'] += point
|
||||
if q_key != :question6
|
||||
@results[i_key]['sum7'] += point
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
[:good_institutions, :bad_institutions].each do |item|
|
||||
if answer[item.to_s]
|
||||
answer[item.to_s].each do |institution|
|
||||
@results[item][institution] += 1
|
||||
end
|
||||
end
|
||||
end
|
||||
[:person_question, :rate_question, :quality_question].each do |item|
|
||||
if answer[item.to_s]
|
||||
@results[item][answer[item.to_s].to_i] += 1
|
||||
end
|
||||
end
|
||||
end
|
||||
t('survey_b.institutions').each do |i_key, institution|
|
||||
(t('survey_b.questions').keys + ['count', 'sum', 'sum7'] ).each do |q_key|
|
||||
@results['all'][q_key] += @results[i_key][q_key]
|
||||
end
|
||||
end
|
||||
|
||||
@setting = SurveyBSetting.first
|
||||
|
||||
headers['Content-Type'] = "application/vnd.ms-excel"
|
||||
headers['Content-Disposition'] = "attachment; filename=#{@period.title}.xls"
|
||||
headers['Cache-Control'] = ''
|
||||
|
||||
render :layout => false
|
||||
end
|
||||
|
||||
end
|
||||
Vendored
-88
@@ -1,88 +0,0 @@
|
||||
class Panel::SurveyB::FrontEnd::SurveyBController < OrbitWidgetController
|
||||
helper ApplicationHelper
|
||||
|
||||
def index
|
||||
if params[:period].nil?
|
||||
@period = SurveyBPeriod.get_current_survey()
|
||||
else
|
||||
@period = SurveyBPeriod.find(params[:period])
|
||||
end
|
||||
|
||||
redirect_standalone panel_survey_b_front_end_survey_b_index_path( :standalone => 'true') do
|
||||
@setting = SurveyBSetting.first_or_create
|
||||
if params[:agree] == '1'
|
||||
# @period = SurveyBPeriod.first
|
||||
render :index, :layout => 'standalone'
|
||||
else
|
||||
# Escape from error when announcement is empty
|
||||
if @setting.announcement.nil?
|
||||
@setting.announcement = " "
|
||||
end
|
||||
render :announcement, :layout => 'standalone'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def create
|
||||
answer = params[:answer]
|
||||
@answer_model = ::SurveyBAnswer.new
|
||||
not_answered = true
|
||||
[:contact_name, :contact_phone, :contact_e_mail, :person_question, :rate_question, :quality_question].each do |item|
|
||||
if answer[item].blank?
|
||||
@answer_model.errors.add t("survey_b.#{item.to_s}_label"), t('survey_b.not_answered')
|
||||
else
|
||||
@answer_model[item] = answer[item]
|
||||
end
|
||||
end
|
||||
@answer_model[:comment_question] = answer[:comment_question]
|
||||
[:good_institutions, :bad_institutions].each do |item|
|
||||
t('survey_b.institutions').each do |i_key, institution|
|
||||
if answer[item][i_key] == '1'
|
||||
@answer_model[item] ||= []
|
||||
@answer_model[item].push i_key
|
||||
end
|
||||
end
|
||||
end
|
||||
t('survey_b.institutions').each do |i_key, institution|
|
||||
if answer["institution_check"][i_key] == '1'
|
||||
not_answered = false
|
||||
@answer_model[i_key] ||= {}
|
||||
t('survey_b.questions').each do |q_key, question|
|
||||
if answer[i_key] && answer[i_key][q_key]
|
||||
@answer_model[i_key][q_key] = answer[i_key][q_key]
|
||||
else
|
||||
@answer_model.errors.add institution + question, t('survey_b.not_answered')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if not_answered
|
||||
@answer_model.errors.add t('survey_b.institution_check_label'), t('survey_b.not_answered')
|
||||
end
|
||||
if @answer_model.errors.empty?
|
||||
@answer_model.save!
|
||||
render :answer_success
|
||||
else
|
||||
@answer_error = @answer_model.errors.full_messages.join(',')
|
||||
render :answer_error
|
||||
end
|
||||
end
|
||||
|
||||
def redirect_standalone url
|
||||
unless params[:standalone] == 'true'
|
||||
@redirect_url = url
|
||||
render :redirect_standalone
|
||||
else
|
||||
module_app = ModuleApp.first(:conditions => {:key => 'survey_b'})
|
||||
@item = Item.where(module_app_id: module_app.id).first
|
||||
|
||||
if @period
|
||||
yield
|
||||
else
|
||||
# render :no_survey
|
||||
# render :json => "No Survey"
|
||||
render :no_survey, :layout => 'standalone'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,5 +0,0 @@
|
||||
class SurveyBAnswer
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
|
||||
end
|
||||
@@ -1,41 +0,0 @@
|
||||
class SurveyBPeriod
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
|
||||
field :title, :type => String
|
||||
field :start_date, :type => DateTime
|
||||
field :end_date, :type => DateTime
|
||||
|
||||
validates :start_date, :end_date, :presence => true
|
||||
|
||||
def self.get_current_survey
|
||||
self.where(:start_date.lte => Time.now, :end_date.gte => Time.now).first
|
||||
end
|
||||
|
||||
def isAvailable?
|
||||
if start_date <= Time.now and end_date >= Time.now
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
def get_status_type
|
||||
# status type
|
||||
# reference to config/locales/en.yml and zh-tw.yml
|
||||
# status_types:
|
||||
# type1: 調查中
|
||||
# type2: 未開始
|
||||
# type3: 已結束
|
||||
|
||||
if start_date <= Time.now and end_date >= Time.now
|
||||
return "type1"
|
||||
end
|
||||
if start_date > Time.now
|
||||
return "type2"
|
||||
end
|
||||
if end_date < Time.now
|
||||
return "type3"
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,17 +0,0 @@
|
||||
class SurveyBSetting
|
||||
|
||||
include Mongoid::Document
|
||||
|
||||
field :description, :localize => true
|
||||
field :announcement, :localize => true
|
||||
|
||||
def self.first_or_create
|
||||
setting = self.first
|
||||
unless setting
|
||||
setting = self.new
|
||||
setting.save
|
||||
end
|
||||
setting
|
||||
end
|
||||
|
||||
end
|
||||
-43
@@ -1,43 +0,0 @@
|
||||
<div id= "poststuff">
|
||||
<div id="post-body">
|
||||
<%= @period.errors.full_messages.join ', ' %>
|
||||
|
||||
<div id="sub-wiget" style="float: none;">
|
||||
|
||||
<div id="widget-title" class="widget-box widget-size-300">
|
||||
<div class="widget-action clear tip" title="問卷標題">
|
||||
<a href="#" class="action"><i class="icon-exclamation-sign icon-white"></i></a>
|
||||
</div>
|
||||
<h3 class="widget-title"><i class="icons-calendar"></i><%= t('survey_b.period_title') %></h3>
|
||||
<div class="widget-content clear">
|
||||
<div class="control-group">
|
||||
<%= f.text_field :title %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
<div id="widget-date" class="widget-box widget-size-300">
|
||||
<div class="widget-action clear tip" title="<%= t('survey_b.period') %>">
|
||||
<a href="#" class="action"><i class="icon-exclamation-sign icon-white"></i></a>
|
||||
</div>
|
||||
<h3 class="widget-title"><i class="icons-calendar"></i><%= t('survey_b.period') %></h3>
|
||||
<div class="widget-content clear">
|
||||
<div class="control-group">
|
||||
<%= f.datetime_picker :start_date, :picker_type => 'separated', :label => t('survey.postdate') %>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<%= f.datetime_picker :end_date, :picker_type => 'separated', :label => t('survey.deadline') %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="form-actions">
|
||||
<%= hidden_field_tag 'page', params[:page] if !params[:page].blank? %>
|
||||
<%= f.submit t('submit'), :class=>'btn btn-primary' %>
|
||||
<%= link_to t('cancel'), get_go_back, :class=>"btn" %>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
Vendored
-33
@@ -1,33 +0,0 @@
|
||||
<tr class="with_action">
|
||||
<td>
|
||||
<%= link_to period.title, panel_survey_b_front_end_survey_b_index_path(:period => period, :standalone => true), :target=>"_blank" %>
|
||||
</td>
|
||||
<td>
|
||||
<a href="<%= result_panel_survey_b_back_end_survey_b_index_path(:period => period.id)%>">
|
||||
<%= display_date_time period.start_date %>
|
||||
-
|
||||
<%= display_date_time period.end_date %>
|
||||
</a>
|
||||
<div class="quick-edit">
|
||||
<ul class="nav nav-pills hide">
|
||||
<li><%= link_to t('survey_b.result'), result_panel_survey_b_back_end_survey_b_index_path(:period => period, :page => params[:page]) %></li>
|
||||
<li><%= link_to t(:list_), panel_survey_b_back_end_survey_b_index_path(:period => period, :page => params[:page]) %></li>
|
||||
<li><%= link_to t('edit'), edit_panel_survey_b_back_end_period_path(period, :page => params[:page]) %></li>
|
||||
<li><%= link_to t(:delete_), panel_survey_b_back_end_period_path(period), :confirm => t('sure?'), :method => :delete %></li>
|
||||
<li><%= link_to t('survey_b.export'), export_panel_survey_b_back_end_survey_b_index_path(:period => period, :page => params[:page]) %></li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<% status_type = t('survey_b.status_types') %>
|
||||
<% if period.start_date > Time.now %>
|
||||
<span class="label label-info"><%= status_type[:type2] %></span>
|
||||
<% end %>
|
||||
<% if period.start_date <= Time.now and period.end_date >= Time.now %>
|
||||
<span class="label label-success"><%= status_type[:type1] %></span>
|
||||
<% end %>
|
||||
<% if period.end_date < Time.now %>
|
||||
<span class="label"><%= status_type[:type3] %></span>
|
||||
<% end %>
|
||||
</td>
|
||||
</tr>
|
||||
-4
@@ -1,4 +0,0 @@
|
||||
<h1><%= t(:edit) + t('survey_b.period') %></h1>
|
||||
<%= form_for @period, :url => panel_survey_b_back_end_period_path(@period), :html => {:class => 'clear'} do |f| %>
|
||||
<%= render :partial => 'form', :locals => {:f => f} %>
|
||||
<% end %>
|
||||
-19
@@ -1,19 +0,0 @@
|
||||
<table class="table main-list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="20%"><%= t('survey_b.period_title') %></th>
|
||||
<th width="20%"><%= t('survey_b.period') %></th>
|
||||
<th><%= t('survey_b.status') %></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="tbody_survey_periods" class="sort-holder">
|
||||
<%= render :partial => 'period', :collection => @periods %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="form-actions form-fixed pagination-right">
|
||||
<%= link_to t(:add) + t('survey_b.period'), new_panel_survey_b_back_end_period_path, :class => 'btn btn-primary pull-right' %>
|
||||
<div id="survey_periods_pagination" class="paginationFixed">
|
||||
<%= paginate @periods %>
|
||||
</div>
|
||||
</div>
|
||||
-2
@@ -1,2 +0,0 @@
|
||||
$("#tbody_survey_periods").html("<%= j render :partial => 'answer', :collection => @periods %>");
|
||||
$("#survey_periods_pagination").html("<%= j paginate @periods %>");
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
<%= flash_messages %>
|
||||
<div id="poststuff">
|
||||
<h1><%=t(:add) + t('survey_b.period') %></h1>
|
||||
<%= form_for @period, :url => panel_survey_b_back_end_periods_path, :html => {:class => 'clear'} do |f| %>
|
||||
<%= render :partial => 'form', :locals => {:f => f} %>
|
||||
<% end %>
|
||||
</div>
|
||||
-47
@@ -1,47 +0,0 @@
|
||||
<% # encoding: utf-8 %>
|
||||
<div id= "poststuff">
|
||||
<%= f.error_messages %>
|
||||
|
||||
<div id="post-body">
|
||||
<div id="post-body-content" class="clear">
|
||||
<ul class="nav nav-tabs">
|
||||
<% @site_valid_locales.each_with_index do |locale, i| %>
|
||||
<li <%= ( i == 0 ) ? "class=active" : '' %>><a data-toggle="tab" href=".<%= locale %>"><%= I18nVariable.from_locale(locale) %></a></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
|
||||
<% @site_valid_locales.each_with_index do |locale, i| %>
|
||||
|
||||
<div class="<%= locale %> fade tab-pane <%= ( i == 0 ) ? "in active" : '' %>">
|
||||
|
||||
<div class="description">
|
||||
<%= f.label :description ,t('survey_b.description') %>
|
||||
<%= f.fields_for :description_translations do |f| %>
|
||||
<%= I18nVariable.from_locale(locale) %>
|
||||
<%= f.text_area locale, :rows => 7, :style=>"width:98%;", :value => (@setting.description_translations[locale] rescue nil) %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<div class="announcement">
|
||||
<%= f.label :announcement ,t('survey_b.announcement') %>
|
||||
<%= f.fields_for :announcement_translations do |f| %>
|
||||
<%= I18nVariable.from_locale(locale) %>
|
||||
<%= f.text_area locale, :rows => 7, :style=>"width:98%;", :value => (@setting.announcement_translations[locale] rescue nil) %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<% end %>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-actions">
|
||||
<%= f.submit t('submit'), :class=>'btn btn-primary' %>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
<h1><%= t('survey_b.setting') %></h1>
|
||||
|
||||
<%= form_for @setting, :url => panel_survey_b_back_end_setting_path, :html => {:class => 'clear'} do |f| %>
|
||||
<%= render :partial => 'form', :locals => {:f => f} %>
|
||||
<% end %>
|
||||
Vendored
-13
@@ -1,13 +0,0 @@
|
||||
<tr id="<%= dom_id answer %>" class="with_action">
|
||||
<td>
|
||||
<%= check_box_tag 'to_delete[]', answer.id, false, :class => "checkbox_in_list" %>
|
||||
</td>
|
||||
<% [:contact_name, :contact_phone, :contact_e_mail, :comment_question].each do |question| %>
|
||||
<td>
|
||||
<%= answer[question] %>
|
||||
</td>
|
||||
<% end %>
|
||||
<td>
|
||||
<%= answer.created_at %>
|
||||
</td>
|
||||
</tr>
|
||||
Vendored
-11
@@ -1,11 +0,0 @@
|
||||
<div id='filter' class="subnav">
|
||||
<div class="filters accordion-group">
|
||||
<div id="sort_headers" class="table-label">
|
||||
<%= render 'sort_headers' %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<% content_for :page_specific_javascript do %>
|
||||
<%= javascript_include_tag "sort_header" %>
|
||||
<% end %>
|
||||
Vendored
-7
@@ -1,7 +0,0 @@
|
||||
<% _sort_args = [] %>
|
||||
<% [:contact_name, :contact_phone, :contact_e_mail, :comment_question].each do |question| %>
|
||||
<% _sort_args.push [question.to_s, question.to_s, 'span1', t("survey_b.#{question}_label")] %>
|
||||
<% end %>
|
||||
<% _sort_args.push ['created_at', 'created_at','span1', 'created_at'] %>
|
||||
<%= render_sort_bar(true, delete_panel_survey_b_back_end_survey_b_index_path(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]),
|
||||
*_sort_args).html_safe %>
|
||||
Vendored
-257
@@ -1,257 +0,0 @@
|
||||
<table border="1">
|
||||
<tr>
|
||||
<td>標題</td>
|
||||
<td><%= @period.title rescue '' %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>問卷前言</td>
|
||||
<td><%= @setting.description rescue '' %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>填答人數</td>
|
||||
<td><%= @answers.count rescue '' %></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br /><br />
|
||||
|
||||
一 、 顧客滿意填表人身分分析
|
||||
<table border="1">
|
||||
<tr>
|
||||
<td>身份</td>
|
||||
<% @results[:person_question].each_with_index do |count, option| %>
|
||||
<td><%= t("survey_b.person_question_options")[option] %></td>
|
||||
<% end %>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>填答人數</td>
|
||||
<% @results[:person_question].each_with_index do |count, option| %>
|
||||
<td><%= count %></td>
|
||||
<% end %>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>比例</td>
|
||||
<% @results[:person_question].each_with_index do |count, option| %>
|
||||
<% @pcount = count.to_f / @answers.count %>
|
||||
<td><%= @pcount == 0 ? "0" : sprintf("%.2f", @pcount * 100 ) %>%</td>
|
||||
<% end %>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br /><br />
|
||||
|
||||
二、 整體行政品質表現比較分析
|
||||
|
||||
<br /><br />
|
||||
對於總務處這一、二年之行政品質表現,您感覺是
|
||||
<table border="1">
|
||||
<tr>
|
||||
<td>行政品質表現</td>
|
||||
<% @results[:quality_question].each_with_index do |count, option| %>
|
||||
<td><%= t("survey_b.quality_question_options")[option] %></td>
|
||||
<% end %>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>填答人數</td>
|
||||
<% @qcount = 0 %>
|
||||
<% @results[:quality_question].each_with_index do |count, option| %>
|
||||
<td><%= count %></td>
|
||||
<% @qcount = @qcount + count %>
|
||||
<% end %>
|
||||
<td><%= @qcount %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>比例</td>
|
||||
<% @tqcount = 0 %>
|
||||
<% @results[:quality_question].each_with_index do |count, option| %>
|
||||
<% @pcount = count.to_f / @qcount %>
|
||||
<td><%= @pcount == 0 ? "0" : sprintf("%.2f", @pcount * 100 ) %>%</td>
|
||||
<% @tqcount = @tqcount + @pcount %>
|
||||
<% end %>
|
||||
<td><%= @tqcount %></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br />
|
||||
對本處整體行政品質表現給予評鑑分數
|
||||
<table border="1">
|
||||
<tr>
|
||||
<td>行政品質表現</td>
|
||||
<% @results[:rate_question].each_with_index do |count, option| %>
|
||||
<td><%= t("survey_b.rate_question_options")[option] %></td>
|
||||
<% end %>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>填答人數</td>
|
||||
<% @rcount = 0 %>
|
||||
<% @results[:rate_question].each_with_index do |count, option| %>
|
||||
<td><%= count %></td>
|
||||
<% @rcount = @rcount + count %>
|
||||
<% end %>
|
||||
<td><%= @rcount %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>比例</td>
|
||||
<% @tqcount = 0 %>
|
||||
<% @results[:rate_question].each_with_index do |count, option| %>
|
||||
<% @pcount = count.to_f / @rcount %>
|
||||
<td><%= @pcount == 0 ? "0" : sprintf("%.2f", @pcount * 100 ) %>%</td>
|
||||
<% @tqcount = @tqcount + @pcount %>
|
||||
<% end %>
|
||||
<td><%= @tqcount %></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br />
|
||||
以您與總務處各單位接觸之經驗,您覺得以下哪一組的服務品質較優。 (可複選)
|
||||
<table border="1">
|
||||
<tr>
|
||||
<td>組別</td>
|
||||
<% @results[:good_institutions].each do |institution, count| %>
|
||||
<td><%= t("survey_b.institutions.#{institution}") %></td>
|
||||
<% end %>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>人數</td>
|
||||
<% @gcount = 0 %>
|
||||
<% @results[:good_institutions].each do |institution, count| %>
|
||||
<td><%= count %></td>
|
||||
<% @gcount = @gcount + count %>
|
||||
<% end %>
|
||||
<td><%= @gcount %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>比例</td>
|
||||
<% @tqcount = 0 %>
|
||||
<% @results[:good_institutions].each do |institution, count| %>
|
||||
<% @pcount = count.to_f / @gcount %>
|
||||
<td><%= @pcount == 0 ? "0" : sprintf("%.2f", @pcount * 100 ) %>%</td>
|
||||
<% @tqcount = @tqcount + @pcount %>
|
||||
<% end %>
|
||||
<td><%= @tqcount %></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br />
|
||||
以您與總務處各單位接觸之經驗,您覺得以下哪一組的服務品質尚待改進。 (可複選)
|
||||
<table border="1">
|
||||
<tr>
|
||||
<td>組別</td>
|
||||
<% @results[:bad_institutions].each do |institution, count| %>
|
||||
<td><%= t("survey_b.institutions.#{institution}") %></td>
|
||||
<% end %>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>人數</td>
|
||||
<% @bcount = 0 %>
|
||||
<% @results[:bad_institutions].each do |institution, count| %>
|
||||
<td><%= count %></td>
|
||||
<% @bcount = @bcount + count %>
|
||||
<% end %>
|
||||
<td><%= @bcount %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>比例</td>
|
||||
<% @tqcount = 0 %>
|
||||
<% @results[:bad_institutions].each do |institution, count| %>
|
||||
<% @pcount = count.to_f / @bcount %>
|
||||
<td><%= @pcount == 0 ? "0" : sprintf("%.2f", @pcount * 100 ) %>%</td>
|
||||
<% @tqcount = @tqcount + @pcount %>
|
||||
<% end %>
|
||||
<td><%= @tqcount %></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br /><br />
|
||||
三、 各單位顧客滿意度調查分析
|
||||
<table border="1">
|
||||
<tr>
|
||||
<td>組別</td>
|
||||
<% @results[:bad_institutions].each do |institution, count| %>
|
||||
<td><%= t("survey_b.institutions.#{institution}") %></td>
|
||||
<% end %>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<% @tcount = 0 %>
|
||||
<td><%= t('survey_b.answered_sum') %></td>
|
||||
<% t('survey_b.institutions').each do |i_key, institution| %>
|
||||
<% if @results[i_key]['count'] == 0 %>
|
||||
<td><%= t('survey_b.no_data') %></td>
|
||||
<% @tcount = @tcount + @results[i_key]['count'] %>
|
||||
<% else %>
|
||||
<td><%= sprintf("%.2f", ( @results[i_key]['sum'].to_f / t('survey_b.questions').count.to_f ) / @results[i_key]['count'].to_f ) %></td>
|
||||
<% @tcount = @tcount + (( @results[i_key]['sum'].to_f / t('survey_b.questions').count.to_f ) / @results[i_key]['count'].to_f ) %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<td><%= @tcount %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<% @tcount = 0 %>
|
||||
<td><%= t('survey_b.answered_sum7') %></td>
|
||||
<% t('survey_b.institutions').each do |i_key, institution| %>
|
||||
<% if @results[i_key]['count'] == 0 %>
|
||||
<td><%= t('survey_b.no_data') %></td>
|
||||
<% @tcount = @tcount + @results[i_key]['count'] %>
|
||||
<% else %>
|
||||
<td><%= sprintf("%.2f", ( @results[i_key]['sum7'].to_f / 7.0 ) / @results[i_key]['count'].to_f ) %></td>
|
||||
<% @tcount = @tcount + ( ( @results[i_key]['sum7'].to_f / 7.0 ) / @results[i_key]['count'].to_f ) %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<td><%= @tcount %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<% @tcount = 0 %>
|
||||
<td><%= t('survey_b.answered_count') %></td>
|
||||
<% t('survey_b.institutions').each do |i_key, institution| %>
|
||||
<td><%= @results[i_key]['count'] %></td>
|
||||
<% @tcount = @tcount + @results[i_key]['count'] %>
|
||||
<% end %>
|
||||
<td><%= @tcount %></td>
|
||||
</tr>
|
||||
<% t('survey_b.questions').each do |q_key, question| %>
|
||||
<% @tcount = 0 %>
|
||||
<tr>
|
||||
<td><%= question.sub /\d\./, '' %></td>
|
||||
|
||||
<% t('survey_b.institutions').each do |i_key, institution| %>
|
||||
<% if @results[i_key]['count'] == 0 %>
|
||||
<td><%= t('survey_b.no_data') %></td>
|
||||
<% @tcount = @tcount + @results[i_key]['count'] %>
|
||||
<% else %>
|
||||
<td><%= sprintf("%.2f", ( @results[i_key][q_key].to_f / @results[i_key]['count'].to_f )) %></td>
|
||||
<% @tcount = @tcount + ( @results[i_key][q_key].to_f / @results[i_key]['count'].to_f ) %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<td><%= @tcount %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</table>
|
||||
|
||||
|
||||
<br /><br />
|
||||
您覺得本處之行政品質有那些地方尚待改進嗎?
|
||||
<table border="1">
|
||||
<tr>
|
||||
<td>填答人數</td>
|
||||
<td><%= @comment_question.count %></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<br /><br />
|
||||
<table border="0">
|
||||
<tr>
|
||||
<td>發佈日期</td>
|
||||
<td><%= display_date_time @period.start_date %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>截止日期</td>
|
||||
<td><%= display_date_time @period.end_date %></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
-23
@@ -1,23 +0,0 @@
|
||||
<%= render 'filter' %>
|
||||
|
||||
<table class="table main-list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="span1"></th>
|
||||
<% [:contact_name, :contact_phone, :contact_e_mail, :comment_question].each do |question| %>
|
||||
<th class="span1"></th>
|
||||
<% end %>
|
||||
<th class="span1"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="tbody_survey_answers" class="sort-holder">
|
||||
<%= render :partial => 'answer', :collection => @answers %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="form-actions form-fixed pagination-right">
|
||||
<%= link_to t(:back) + t('survey_b.survey_b'), panel_survey_b_back_end_periods_path, :class => 'btn btn-primary pull-right' %>
|
||||
<div id="survey_answers_pagination" class="paginationFixed">
|
||||
<%= paginate @answers %>
|
||||
</div>
|
||||
</div>
|
||||
-4
@@ -1,4 +0,0 @@
|
||||
$("#delete_all").attr("action", "<%= delete_panel_survey_b_back_end_survey_b_index_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_survey_answers").html("<%= j render :partial => 'answer', :collection => @answers %>");
|
||||
$("#survey_answers_pagination").html("<%= j paginate @answers %>");
|
||||
Vendored
-134
@@ -1,134 +0,0 @@
|
||||
<% if @period %>
|
||||
<h1><%= @period.title %></h1>
|
||||
<h4>
|
||||
<%= t('survey_b.period') %>:
|
||||
<%= display_date_time @period.start_date %>
|
||||
-
|
||||
<%= display_date_time @period.end_date %>
|
||||
</h4>
|
||||
<% end %>
|
||||
|
||||
<table class="table main-list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th><%= t('survey_b.answered_sum') %></th>
|
||||
<th><%= t('survey_b.answered_sum7') %></th>
|
||||
<th><%= t('survey_b.answered_count') %></th>
|
||||
<% t('survey_b.questions').each do |q_key, question| %>
|
||||
<th>
|
||||
<%= question.sub /\d\./, '' %>
|
||||
</th>
|
||||
<% end %>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% (t('survey_b.institutions').merge({ 'all' => t('survey_b.answered_sum') })).each do |i_key, institution| %>
|
||||
<tr>
|
||||
<td><%= institution %></td>
|
||||
<td>
|
||||
<% if @results[i_key]['count'] == 0 %>
|
||||
<%= t('survey_b.no_data') %>
|
||||
<% else %>
|
||||
<%= sprintf("%.2f", ( @results[i_key]['sum'].to_f / t('survey_b.questions').count.to_f ) / @results[i_key]['count'].to_f ) %>
|
||||
<%#= ( ( @results[i_key]['sum'].to_f / t('survey_b.questions').count.to_f ) / @results[i_key]['count'].to_f ).round(2) %>
|
||||
<% end %>
|
||||
</td>
|
||||
<td>
|
||||
<% if @results[i_key]['count'] == 0 %>
|
||||
<%= t('survey_b.no_data') %>
|
||||
<% else %>
|
||||
<%= sprintf("%.2f", ( @results[i_key]['sum7'].to_f / 7.0 ) / @results[i_key]['count'].to_f ) %>
|
||||
<%#= ( ( @results[i_key]['sum7'].to_f / 7.0 ) / @results[i_key]['count'].to_f ).round(2) %>
|
||||
<% end %>
|
||||
</td>
|
||||
<td>
|
||||
<%= @results[i_key]['count'] %>
|
||||
</td>
|
||||
<% t('survey_b.questions').each do |q_key, question| %>
|
||||
<td>
|
||||
<% if @results[i_key]['count'] == 0 %>
|
||||
<%= t('survey_b.no_data') %>
|
||||
<% else %>
|
||||
<%= sprintf("%.2f", ( @results[i_key][q_key].to_f / @results[i_key]['count'].to_f )) %>
|
||||
<%#= ( @results[i_key][q_key].to_f / @results[i_key]['count'].to_f ).round(2) %>
|
||||
<% end %>
|
||||
</td>
|
||||
<% end %>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<ul>
|
||||
<% [:good_institutions, :bad_institutions, :person_question, :rate_question, :quality_question].each do |item| %>
|
||||
<li>
|
||||
<table>
|
||||
<tr>
|
||||
<td><div id="<%= item.to_s %>_chart" style="width: 600px; height: 300px;"></div>
|
||||
</td>
|
||||
<td><div id="<%= item.to_s %>_bar_chart" style="width: 600px; height: 300px;"></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
|
||||
<script type="text/javascript">
|
||||
window.google.load("visualization", "1", {packages: ["columnchart"]});
|
||||
window.google.load("visualization", "1", {packages:["corechart"]});
|
||||
window.google.setOnLoadCallback(function(){
|
||||
<% [:good_institutions, :bad_institutions].each do |item| %>
|
||||
|
||||
<% @tcount = 0 %>
|
||||
var data_<%= item %> = google.visualization.arrayToDataTable([
|
||||
['<%= t("survey_b.#{item}_label") %>', ''],
|
||||
<% @results[item].each do |institution, count| %>
|
||||
['<%= t("survey_b.institutions.#{institution}") %>', <%= count %>],
|
||||
<% @tcount = @tcount + count %>
|
||||
<% end %>
|
||||
]);
|
||||
var chart_<%= item %> = new google.visualization.PieChart(document.getElementById('<%= item.to_s %>_chart'));
|
||||
chart_<%= item %>.draw(data_<%= item %>, {title: '<%= t("survey_b.#{item}_label") %>'});
|
||||
|
||||
//bar
|
||||
|
||||
var data_bar_<%= item %> = google.visualization.arrayToDataTable([
|
||||
['<%= t("survey_b.#{item}_label") %>', '%'],
|
||||
<% @results[item].each do |institution, count| %>
|
||||
['<%= t("survey_b.institutions.#{institution}") %>', <%= count == 0 ? "0" : sprintf("%.2f", (count.to_f / @tcount ) * 100 ) %>],
|
||||
<% end %>
|
||||
]);
|
||||
var bar_chart_<%= item %> = new google.visualization.ColumnChart(document.getElementById("<%= item.to_s %>_bar_chart"));
|
||||
bar_chart_<%= item %>.draw(data_bar_<%= item %>, {title: '<%= t("survey_b.#{item}_label") %>'});
|
||||
<% end %>
|
||||
|
||||
<% [:person_question, :rate_question, :quality_question].each do |item| %>
|
||||
|
||||
<% @tcount = 0 %>
|
||||
var data_<%= item %> = google.visualization.arrayToDataTable([
|
||||
['<%= t("survey_b.#{item}_label") %>', ''],
|
||||
<% @results[item].each_with_index do |count, option| %>
|
||||
['<%= t("survey_b.#{item}_options")[option] %>', <%= count %>],
|
||||
<% @tcount = @tcount + count %>
|
||||
<% end %>
|
||||
]);
|
||||
var chart_<%= item %> = new google.visualization.PieChart(document.getElementById('<%= item.to_s %>_chart'));
|
||||
chart_<%= item %>.draw(data_<%= item %>, {title: '<%= t("survey_b.#{item}_label") %>'});
|
||||
|
||||
//bar
|
||||
|
||||
var data_bar_<%= item %> = google.visualization.arrayToDataTable([
|
||||
['<%= t("survey_b.#{item}_label") %>', '%'],
|
||||
<% @results[item].each_with_index do |count, option| %>
|
||||
['<%= t("survey_b.#{item}_options")[option] %>', <%= count == 0 ? "0" : sprintf("%.2f", (count.to_f / @tcount ) * 100 ) %>],
|
||||
<% end %>
|
||||
]);
|
||||
|
||||
var bar_chart_<%= item %> = new google.visualization.ColumnChart(document.getElementById("<%= item.to_s %>_bar_chart"));
|
||||
bar_chart_<%= item %>.draw(data_bar_<%= item %>, {title: '<%= t("survey_b.#{item}_label") %>'});
|
||||
<% end %>
|
||||
});
|
||||
</script>
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
alert("<%= @answer_error %>");
|
||||
-2
@@ -1,2 +0,0 @@
|
||||
alert("<%= t('survey.answer_success')%>");
|
||||
window.location.href = "<%= root_path %>";
|
||||
Vendored
-32
@@ -1,32 +0,0 @@
|
||||
<h1><%= @period.title %></h1>
|
||||
|
||||
<div>
|
||||
<section>
|
||||
<div class="o-question">
|
||||
<% if @period.isAvailable? %>
|
||||
<%= form_for :answer, :url => panel_survey_b_front_end_survey_b_index_path, :method => :get, :html => {:class => 'survey_b clear'} do |f| %>
|
||||
<%= f.hidden_field :standalone, :value => true, :name => :standalone %>
|
||||
<%= f.hidden_field :period_id, :value => @period.id, :name => :period %>
|
||||
<p>
|
||||
<%= p @setting.announcement.gsub("\n", '<br />').html_safe %>
|
||||
</p>
|
||||
<br />
|
||||
<p>
|
||||
<%= f.check_box :agree, :name => :agree %>
|
||||
<%= f.label :agree, t('survey_b.agree_check'), :style => "display:inline" %>
|
||||
</p>
|
||||
|
||||
<div class="o-question-action">
|
||||
<%= f.submit t('submit'), :class => 'survey-submit' %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<% status_type = t('survey_b.status_types') %>
|
||||
<p class="text-warning"><h4><%= t('survey_b.survey_b') + status_type[@period.get_status_type.to_sym] %></h4></p>
|
||||
<% end %>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<% content_for :page_stylesheets do %>
|
||||
<link href='/assets/questionnaire.css' rel='stylesheet' type='text/css' />
|
||||
<% end %>
|
||||
Vendored
-4
@@ -1,4 +0,0 @@
|
||||
<script type="text/javascript">
|
||||
<%= render 'answer_error' %>
|
||||
window.history.back();
|
||||
</script>
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
<%= render 'answer_error' %>
|
||||
vendor/built_in_modules/survey_b/app/views/panel/survey_b/front_end/survey_b/answer_success.html.erb
Vendored
-3
@@ -1,3 +0,0 @@
|
||||
<script type="text/javascript">
|
||||
<%= render 'answer_success' %>
|
||||
</script>
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
<%= render 'answer_success' %>
|
||||
Vendored
-145
@@ -1,145 +0,0 @@
|
||||
<% # encoding: utf-8 %>
|
||||
<% institutions = t('survey_b.institutions') %>
|
||||
<h1><%= @period.title %></h1>
|
||||
<div>
|
||||
<section>
|
||||
<div class="o-question">
|
||||
<%= form_for :answer, :url => panel_survey_b_front_end_survey_b_index_path(:standalone => true), :html => {:class => 'survey_b clear'} do |f| %>
|
||||
<div class="o-question-description">
|
||||
<%= @setting.description.gsub("\n", '<br />').html_safe %>
|
||||
</div>
|
||||
<ol class="o-question-list">
|
||||
<li class="question-item institution_check">
|
||||
<%= f.label :institution_check, t('survey_b.institution_check_label'), :class => "o-question-title" %>
|
||||
<%= f.fields_for :institution_check do |cf| %>
|
||||
<% institutions.each do |key, institution_name| %>
|
||||
<div style="display: inline; margin-right: 60px;">
|
||||
<%= cf.check_box key, :'data-institution' => key %>
|
||||
<%= cf.label key, institution_name, :style => "display:inline" %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</li>
|
||||
<% institutions.each do |key, institution_name| %>
|
||||
<li class="question-item <%= key%>_group_wrapper hide">
|
||||
<%= f.label "#{key}_group", t('survey_b.institution_group_label', :institution => institution_name), :class => "o-question-title" %>
|
||||
<%= f.fields_for key do |rgf| %>
|
||||
<table class="o-question-group view-grid">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<% t('survey_b.degrees').each do |degree| %>
|
||||
<th>
|
||||
<%= degree %>
|
||||
</th>
|
||||
<% end %>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% j = 0 %>
|
||||
<% t('survey_b.questions').each do |q_key, question| %>
|
||||
<tr<%= (' class="odd"').html_safe if (j % 2 == 0) %>>
|
||||
<th class="o-question-title" style="text-align: right;">
|
||||
<%= question %>
|
||||
</th>
|
||||
<% t('survey_b.degrees').each_with_index do |degree, d| %>
|
||||
<td>
|
||||
<%= rgf.radio_button q_key, d %>
|
||||
</td>
|
||||
<% end %>
|
||||
</tr>
|
||||
<% j += 1 %>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
<% end %>
|
||||
</li>
|
||||
<% end %>
|
||||
<li class"question-item">
|
||||
<%= f.label :quality_question, t('survey_b.quality_question_label'), :class => "o-question-title" %>
|
||||
<ul class="o-question-group view-list">
|
||||
<% t('survey_b.quality_question_options').each_with_index do |option, i| %>
|
||||
<li>
|
||||
<%= f.radio_button :quality_question, i %>
|
||||
<%= f.label "quality_question_#{i}", option, :class => 'o-question-option' %>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</li>
|
||||
<% [:good_institutions, :bad_institutions].each do |item| %>
|
||||
<li class"question-item">
|
||||
<%= f.label item, t("survey_b.#{item.to_s}_label"), :class => "o-question-title" %>
|
||||
<%= f.fields_for item do |cf| %>
|
||||
<% institutions.each do |key, institution_name| %>
|
||||
<div style="display: inline; margin-right: 60px;">
|
||||
<%= cf.check_box key, :'data-institution' => key %>
|
||||
<%= cf.label key, institution_name, :style => "display:inline" %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</li>
|
||||
<% end %>
|
||||
<li class"question-item">
|
||||
<%= f.label :rate_question, t('survey_b.rate_question_label'), :class => "o-question-title" %>
|
||||
<ul class="o-question-group view-list">
|
||||
<% t('survey_b.rate_question_options').each_with_index do |option, i| %>
|
||||
<li>
|
||||
<%= f.radio_button :rate_question, i %>
|
||||
<%= f.label "quality_question_#{i}", option, :class => 'o-question-option' %>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</li>
|
||||
<li class"question-item">
|
||||
<%= f.label :person_question, t('survey_b.person_question_label'), :class => "o-question-title" %>
|
||||
<ul class="o-question-group view-list">
|
||||
<% t('survey_b.person_question_options').each_with_index do |option, i| %>
|
||||
<li>
|
||||
<%= f.radio_button :person_question, i %>
|
||||
<%= f.label "quality_question_#{i}", option, :class => 'o-question-option' %>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</li>
|
||||
<li class"question-item">
|
||||
<p><%= t('survey_b.comment_question_notice') %></p>
|
||||
<%= f.label :comment_question, t('survey_b.comment_question_label'), :class => "o-question-title" %>
|
||||
<%= f.text_area :comment_question, :rows => 5 %>
|
||||
</li>
|
||||
<li class"question-item">
|
||||
<p><%== t('survey_b.contact_notice') %></p>
|
||||
<% [:contact_name, :contact_phone, :contact_e_mail].each do |item| %>
|
||||
<%= f.label :item, t("survey_b.#{item.to_s}_label"), :class => "o-question-title" %>
|
||||
<%= f.text_field item %>
|
||||
<% end %>
|
||||
</li>
|
||||
</ol>
|
||||
<div class="o-question-action">
|
||||
<%= f.submit t('submit'), :class => 'survey-submit' %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<% content_for :page_stylesheets do %>
|
||||
<link href='/assets/questionnaire.css' rel='stylesheet' type='text/css' />
|
||||
<% end %>
|
||||
<script type="text/javascript" src="/assets/jquery.form.js"></script>
|
||||
<script type="text/javascript">
|
||||
$('form.survey_b').ajaxForm({
|
||||
beforeSubmit: function(a,f,o) {
|
||||
o.dataType = 'script';
|
||||
},
|
||||
success: function(data) {
|
||||
}
|
||||
});
|
||||
$('.institution_check input[type=checkbox]').on('click', function(){
|
||||
$institution_group_wrapper = $('.' + $(this).attr('data-institution') + '_group_wrapper');
|
||||
if ( $(this).attr('checked') ) {
|
||||
$institution_group_wrapper.show();
|
||||
} else {
|
||||
$institution_group_wrapper.hide();
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
Vendored
-6
@@ -1,6 +0,0 @@
|
||||
<h1><%= t('survey_b.no_survey') %></h1>
|
||||
<script type="text/javascript">
|
||||
$(document).ready().delay(2000).queue(function() {
|
||||
window.location.href = "<%= root_path %>";
|
||||
});
|
||||
</script>
|
||||
-3
@@ -1,3 +0,0 @@
|
||||
<script type="text/javascript">
|
||||
window.location.href = "<%= @redirect_url %>";
|
||||
</script>
|
||||
@@ -1,103 +0,0 @@
|
||||
en:
|
||||
|
||||
survey_b:
|
||||
survey_b: 滿意度調查
|
||||
result: 結果
|
||||
export: 匯出
|
||||
|
||||
setting: 設定
|
||||
description: 前言
|
||||
announcement: 個資宣告
|
||||
agree_check: 同意
|
||||
|
||||
institution_check_label: 您與本處有業務接觸之單位為:(請點選)
|
||||
institution_group_label: "您對 %{institution} 所提供之"
|
||||
|
||||
not_answered: 沒有回答
|
||||
|
||||
period: 調查期間
|
||||
period_title: 問卷標題
|
||||
no_survey: 尚無滿意度調查
|
||||
|
||||
status: 狀態
|
||||
status_types:
|
||||
type1: 調查中
|
||||
type2: 未開始
|
||||
type3: 已結束
|
||||
|
||||
no_data: 沒有數據
|
||||
answered_count: 答題人數
|
||||
answered_sum: 整體平均
|
||||
answered_sum7: 七項平均
|
||||
|
||||
institutions:
|
||||
institution1: 文書組
|
||||
institution2: 事務組
|
||||
institution3: 保管組
|
||||
institution4: 營繕組
|
||||
institution5: 出納組
|
||||
institution6: 採購組
|
||||
institution7: 經營管理組
|
||||
institution8: 駐警隊
|
||||
institution9: 社科院總務分處
|
||||
institution10: 醫學院總務分處
|
||||
# institution11: 總務處秘書室
|
||||
|
||||
degrees:
|
||||
- 很滿意
|
||||
- 滿意
|
||||
- 尚可
|
||||
- 不滿意
|
||||
- 非常不滿意
|
||||
|
||||
questions:
|
||||
question1: 1.服務態度
|
||||
question2: 2.主動服務之精神
|
||||
question3: 3.電話禮貌
|
||||
question4: 4.電話接聽速度
|
||||
question5: 5.承辦人專業態度
|
||||
question6: 6.辦公室環境
|
||||
question7: 7.業務辦理效率
|
||||
question8: 8.電腦化作業
|
||||
|
||||
quality_question_column: 行政品質
|
||||
quality_question_label: 對於總務處這一、二年之行政品質表現,您感覺是
|
||||
quality_question_options:
|
||||
- 有顯著改善
|
||||
- 有些改善
|
||||
- 沒有改善
|
||||
- 降低
|
||||
|
||||
good_institutions_column: 品質較優
|
||||
good_institutions_label: 以您與總務處各單位接觸之經驗,您覺得那一組的服務品質較優。(可複選,可不選)
|
||||
bad_institutions_column: 尚待改進
|
||||
bad_institutions_label: 以您與總務處各單位接觸之經驗,您覺得那一組的服務品質尚待改進。(可複選,可不選)
|
||||
|
||||
rate_question_column: 評鑑分數
|
||||
rate_question_label: 若請您對本處整體行政品質表現給予評鑑分數,您會給幾分?
|
||||
rate_question_options:
|
||||
- 90分以上(極優)
|
||||
- 80分至90分(優良)
|
||||
- 70分至80分(尚可)
|
||||
- 60至70分(待提昇)
|
||||
- 60分以下(亟待改善)
|
||||
|
||||
person_question_column: 身分
|
||||
person_question_label: 您的身分是
|
||||
person_question_options:
|
||||
- 教師
|
||||
- 職工
|
||||
- 學生
|
||||
- 廠商
|
||||
- 其他
|
||||
|
||||
comment_question_notice: 您覺得本處之行政品質有那些地方尚有待改進嗎?(歡迎您將反應意見具體描述,以供我們檢討改進,謝謝您的指教!)
|
||||
comment_question_label: 意見欄:
|
||||
|
||||
contact_notice: 請您填寫以下個人資料,這些資訊僅供調查結束後辦理抽獎活動,及加速處理回覆您的建議事項之用。您的個人資料絕不會外流,請放心填寫!總務處感謝您的支持與愛護。
|
||||
contact_name_label: 填表人
|
||||
contact_phone_label: 聯絡電話
|
||||
contact_e_mail_label: e-mail
|
||||
|
||||
frontend:
|
||||
survey_b: 滿意度調查前台
|
||||
@@ -1,103 +0,0 @@
|
||||
zh_tw:
|
||||
|
||||
survey_b:
|
||||
survey_b: 滿意度調查
|
||||
result: 結果
|
||||
export: 匯出
|
||||
|
||||
setting: 設定
|
||||
description: 前言
|
||||
announcement: 個資宣告
|
||||
agree_check: 同意
|
||||
|
||||
institution_check_label: 您與本處有業務接觸之單位為:(請點選)
|
||||
institution_group_label: "您對 %{institution} 所提供之"
|
||||
|
||||
not_answered: 沒有回答
|
||||
|
||||
period: 調查期間
|
||||
period_title: 問卷標題
|
||||
no_survey: 尚無滿意度調查
|
||||
|
||||
status: 狀態
|
||||
status_types:
|
||||
type1: 調查中
|
||||
type2: 未開始
|
||||
type3: 已結束
|
||||
|
||||
no_data: 沒有數據
|
||||
answered_count: 答題人數
|
||||
answered_sum: 整體平均
|
||||
answered_sum7: 七項平均
|
||||
|
||||
institutions:
|
||||
institution1: 文書組
|
||||
institution2: 事務組
|
||||
institution3: 保管組
|
||||
institution4: 營繕組
|
||||
institution5: 出納組
|
||||
institution6: 採購組
|
||||
institution7: 經營管理組
|
||||
institution8: 駐警隊
|
||||
institution9: 社科院總務分處
|
||||
institution10: 醫學院總務分處
|
||||
# institution11: 總務處秘書室
|
||||
|
||||
degrees:
|
||||
- 很滿意
|
||||
- 滿意
|
||||
- 尚可
|
||||
- 不滿意
|
||||
- 非常不滿意
|
||||
|
||||
questions:
|
||||
question1: 1.服務態度
|
||||
question2: 2.主動服務之精神
|
||||
question3: 3.電話禮貌
|
||||
question4: 4.電話接聽速度
|
||||
question5: 5.承辦人專業態度
|
||||
question6: 6.辦公室環境
|
||||
question7: 7.業務辦理效率
|
||||
question8: 8.電腦化作業
|
||||
|
||||
quality_question_column: 行政品質
|
||||
quality_question_label: 對於總務處這一、二年之行政品質表現,您感覺是
|
||||
quality_question_options:
|
||||
- 有顯著改善
|
||||
- 有些改善
|
||||
- 沒有改善
|
||||
- 降低
|
||||
|
||||
good_institutions_column: 品質較優
|
||||
good_institutions_label: 以您與總務處各單位接觸之經驗,您覺得那一組的服務品質較優。(可複選,可不選)
|
||||
bad_institutions_column: 尚待改進
|
||||
bad_institutions_label: 以您與總務處各單位接觸之經驗,您覺得那一組的服務品質尚待改進。(可複選,可不選)
|
||||
|
||||
rate_question_column: 評鑑分數
|
||||
rate_question_label: 若請您對本處整體行政品質表現給予評鑑分數,您會給幾分?
|
||||
rate_question_options:
|
||||
- 90分以上(極優)
|
||||
- 80分至90分(優良)
|
||||
- 70分至80分(尚可)
|
||||
- 60至70分(待提昇)
|
||||
- 60分以下(亟待改善)
|
||||
|
||||
person_question_column: 身分
|
||||
person_question_label: 您的身分是
|
||||
person_question_options:
|
||||
- 教師
|
||||
- 職工
|
||||
- 學生
|
||||
- 廠商
|
||||
- 其他
|
||||
|
||||
comment_question_notice: 您覺得本處之行政品質有那些地方尚有待改進嗎?(歡迎您將反應意見具體描述,以供我們檢討改進,謝謝您的指教!)
|
||||
comment_question_label: 意見欄:
|
||||
|
||||
contact_notice: 請您填寫以下個人資料,這些資訊僅供調查結束後辦理抽獎活動,及加速處理回覆您的建議事項之用。您的個人資料絕不會外流,請放心填寫!總務處感謝您的支持與愛護。
|
||||
contact_name_label: 填表人
|
||||
contact_phone_label: 聯絡電話
|
||||
contact_e_mail_label: e-mail
|
||||
|
||||
frontend:
|
||||
survey_b: 滿意度調查前台
|
||||
@@ -1,24 +0,0 @@
|
||||
Rails.application.routes.draw do
|
||||
|
||||
namespace :panel do
|
||||
namespace :survey_b do
|
||||
namespace :back_end do
|
||||
resources :survey_b do
|
||||
collection do
|
||||
get 'result'
|
||||
get 'delete'
|
||||
get 'export'
|
||||
end
|
||||
end
|
||||
resources :periods
|
||||
resource :setting
|
||||
end
|
||||
namespace :front_end do
|
||||
resources :survey_b do
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
match "/appfront/*path" => redirect("/panel/*path")
|
||||
end
|
||||
-59
@@ -1,59 +0,0 @@
|
||||
module SurveyB
|
||||
OrbitApp.registration "SurveyB",:type=> 'ModuleApp' do
|
||||
module_label 'survey_b.survey_b'
|
||||
base_url File.expand_path File.dirname(__FILE__)
|
||||
|
||||
version "0.1"
|
||||
organization "Rulingcom"
|
||||
author "RD dep"
|
||||
intro "I am intro"
|
||||
update_info 'some update_info'
|
||||
|
||||
front_end do
|
||||
app_page 'survey_b' do
|
||||
frontend_i18n "survey_b.frontend.survey_b"
|
||||
end
|
||||
end
|
||||
|
||||
widgets do
|
||||
customize_widget "widget1" do
|
||||
widget_i18n "survey_b.widget.widget1"
|
||||
style []
|
||||
end
|
||||
end
|
||||
|
||||
side_bar do
|
||||
head_label_i18n 'survey_b.survey_b',:icon_class=>"icons-bars"
|
||||
available_for [:admin,:manager,:sub_manager]
|
||||
active_for_controllers ({:private=>['survey_b', 'periods', 'settings']})
|
||||
|
||||
head_link_path "panel_survey_b_back_end_periods_path"
|
||||
|
||||
# context_link 'survey_b.result',
|
||||
# :link_path=>"result_panel_survey_b_back_end_survey_b_index_path" ,
|
||||
# :priority=>1,
|
||||
# :active_for_action=>{:survey_b=>:result},
|
||||
# :available_for => [:manager]
|
||||
|
||||
# context_link 'list_',
|
||||
# :link_path=>"panel_survey_b_back_end_survey_b_index_path" ,
|
||||
# :priority=>1,
|
||||
# :active_for_action=>{:survey_b=>:index},
|
||||
# :available_for => [:manager]
|
||||
|
||||
# context_link 'survey_b.period',
|
||||
# :link_path=>"panel_survey_b_back_end_periods_path" ,
|
||||
# :priority=>1,
|
||||
# :active_for_action=>{:periods=>:index},
|
||||
# :available_for => [:manager]
|
||||
|
||||
context_link 'survey_b.setting',
|
||||
:link_path=>"edit_panel_survey_b_back_end_setting_path" ,
|
||||
:priority=>1,
|
||||
:active_for_action=>{:settings=>[:edit, :update]},
|
||||
:available_for => [:manager]
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
Loaded 100 of 139 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user