Compare commits
82
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
40b9448a0e | ||
|
|
849cfa2076 | ||
|
|
3cce5ef8e5 | ||
|
|
813fbc64cd | ||
|
|
d07b8f4c09 | ||
|
|
9d3ee5b963 | ||
|
|
a93cb71d86 | ||
|
|
9de2778869 | ||
|
|
cb78427866 | ||
|
|
9933db4fb5 | ||
|
|
3445cb8e69 | ||
|
|
c807d8a290 | ||
|
|
2677e0a6a5 | ||
|
|
2663b6f45f | ||
|
|
e6b10fbfbd | ||
|
|
d73f1ac565 | ||
|
|
e6257a95a4 | ||
|
|
4666057748 | ||
|
|
d10b647661 | ||
|
|
22b95d4b22 | ||
|
|
6d6650042e | ||
|
|
b68a413574 | ||
|
|
d1fd2b6984 | ||
|
|
8f25dc2871 | ||
|
|
82988a2029 | ||
|
|
e5fccb33bf | ||
|
|
d832f4c4b1 | ||
|
|
59af75e50a | ||
|
|
67cd34ab27 | ||
|
|
4a736cc92c | ||
|
|
9b96f2eeb0 | ||
|
|
74b89f1fac | ||
|
|
62e9acdbb8 | ||
|
|
4a897b68cf | ||
|
|
d3fc6e5956 | ||
|
|
71acee200c | ||
|
|
63156c7a95 | ||
|
|
5156701094 | ||
|
|
1266cd1384 | ||
|
|
f3f4dc842c | ||
|
|
13144f62fb | ||
|
|
6d951f8d9c | ||
|
|
d0364c788b | ||
|
|
e2ec8f134e | ||
|
|
83a8433e52 | ||
|
|
8f65da0a04 | ||
|
|
ad8bb72b07 | ||
|
|
06a8b9073e | ||
|
|
f9485c1f86 | ||
|
|
627425b72e | ||
|
|
9cb2a5b211 | ||
|
|
75f5404b7a | ||
|
|
bd3a922073 | ||
|
|
9fbb2917b1 | ||
|
|
bd6d94a143 | ||
|
|
8684388ab9 | ||
|
|
5e05f5d02b | ||
|
|
6607f6b66e | ||
|
|
63fab74a25 | ||
|
|
48969b70b5 | ||
|
|
88c8ca68d0 | ||
|
|
3eeda5410c | ||
|
|
660960f316 | ||
|
|
696134aa18 | ||
|
|
2777b92589 | ||
|
|
5432238816 | ||
|
|
4e12c0bb5b | ||
|
|
d68f324ca3 | ||
|
|
50f5d12da3 | ||
|
|
d635c892cf | ||
|
|
26bc837c76 | ||
|
|
8247f077df | ||
|
|
70de1cea9d | ||
|
|
0f18cdfe8e | ||
|
|
0d1426cab8 | ||
|
|
b57b899dba | ||
|
|
1305b9f1ef | ||
|
|
21009961ef | ||
|
|
1edc134691 | ||
|
|
e89615a6f3 | ||
|
|
0c29701f9b | ||
|
|
580be0b34b |
No files matched your search
@@ -29,6 +29,9 @@ 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'
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
class GetAnnouncementFromNtuGaRss
|
||||
@queue = :high
|
||||
|
||||
def self.perform()
|
||||
%x(ruby "#{Rails.root}/vendor/built_in_modules/announcement/lib/rss_ntu_ga_aggregate.rb")
|
||||
end
|
||||
end
|
||||
@@ -15,8 +15,13 @@ class ObjectAuth < PrototypeAuth
|
||||
end
|
||||
|
||||
def check_user_has_can_access_app
|
||||
sub_managing_users = auth_obj.module_app.sub_managing_users rescue []
|
||||
module_app = auth_obj.module_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
|
||||
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,6 +55,16 @@ 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
|
||||
|
||||
+3
-4
@@ -8,11 +8,10 @@ defaults: &defaults
|
||||
|
||||
development:
|
||||
<<: *defaults
|
||||
database: test_site
|
||||
database: production_0
|
||||
test:
|
||||
<<: *defaults
|
||||
database: test_site
|
||||
|
||||
database: production_0
|
||||
# set these environment variables on your prod server
|
||||
production:
|
||||
# host: <%= ENV['MONGOID_HOST'] %>
|
||||
@@ -21,4 +20,4 @@ production:
|
||||
# password: <%= ENV['MONGOID_PASSWORD'] %>
|
||||
# database: <%= ENV['MONGOID_DATABASE'] %>
|
||||
<<: *defaults
|
||||
database: test_site
|
||||
database: production_8
|
||||
@@ -20,16 +20,22 @@ generate_system_summary:
|
||||
cron: 0 0 12 * * *
|
||||
class: GenerateSystemSummary
|
||||
args:
|
||||
description: Generate the system status such as disk free space,package version list for showing at site tab
|
||||
description: "Generate the system status such as disk free space, package version list for showing at site tab"
|
||||
|
||||
email_cron:
|
||||
cron: 0 0 [10,16,22] * * *
|
||||
cron: "0 0 10,16,22 * * *"
|
||||
class: EmailCron
|
||||
args:
|
||||
description: EmailCron
|
||||
|
||||
get_announcement_from_rss:
|
||||
cron: 0 0 [2,12] * * *
|
||||
cron: "0 0 2,12 * * *"
|
||||
class: GetAnnouncementFromRss
|
||||
args:
|
||||
description: Loop through the announcement RSS until 24h ago
|
||||
|
||||
get_announcement_from_ntu_ga_rss:
|
||||
cron: "30 * * * * *"
|
||||
class: GetAnnouncementFromNtuGaRss
|
||||
args:
|
||||
description: "Update announcement RSS to primary NTU_GA site"
|
||||
+1
-1
@@ -67,7 +67,7 @@ class Panel::Announcement::FrontEnd::BulletinsController < OrbitWidgetController
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
def show
|
||||
|
||||
@@ -42,6 +42,7 @@ class Bulletin
|
||||
|
||||
field :public, :type => Boolean, :default => true
|
||||
field :rss_link
|
||||
field :rss_source
|
||||
|
||||
scope :can_display, where(is_checked: true, is_rejected: false, is_pending: false)
|
||||
scope :available_for_lang, ->(locale){ where("available_for_#{locale}".to_sym => true) }
|
||||
|
||||
+1
@@ -11,6 +11,7 @@ xml.rss :version => "2.0" do
|
||||
for bulletin in @bulletins
|
||||
xml.item do
|
||||
xml.title bulletin.title_translations[I18n.locale.to_s]
|
||||
xml.category bulletin.bulletin_category.title
|
||||
xml.pubDate bulletin.postdate.to_s(:rfc822)
|
||||
xml.description bulletin.text_translations[I18n.locale.to_s]
|
||||
xml.link url_for(:action=>"show", :controller=>"panel/announcement/front_end/bulletins", :id=>bulletin ,:only_path=>false)
|
||||
|
||||
Vendored
+5
-1
@@ -39,7 +39,11 @@
|
||||
<% end %>
|
||||
<% unless @bulletin.rss_link.blank? %>
|
||||
<div>
|
||||
<%= link_to t('ntu.rss_origin'), @bulletin.rss_link %>
|
||||
<%= link_to t('announcement.rss_origin'), @bulletin.rss_link %>
|
||||
<% unless @bulletin.rss_source.blank? %>
|
||||
<br />
|
||||
<%= t('announcement.source') %>: <%= @bulletin.rss_source %>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
zh_tw:
|
||||
|
||||
announcement:
|
||||
rss_origin: 回臺大校園公告
|
||||
source: 單位來源
|
||||
add_new: 新建
|
||||
all_articles: 文章列表
|
||||
announcement: 公告
|
||||
|
||||
+2
-2
@@ -29,8 +29,8 @@ module Announcement
|
||||
|
||||
widgets do
|
||||
default_widget do
|
||||
sorting 'desc(:postdate)'
|
||||
query 'Bulletin.available_for_lang(I18n.locale).any_of( {deadline: nil,:postdate.lte => Time.now} , {:deadline.gte => Time.now,:postdate.lte => Time.now} )'
|
||||
sorting 'desc(:is_top, :postdate)'
|
||||
query 'Bulletin.can_display.available_for_lang(I18n.locale).any_of( {deadline: nil,:postdate.lte => Time.now} , {:deadline.gte => Time.now,:postdate.lte => Time.now} )'
|
||||
enable ["typeA","typeB_style3","typeC"]
|
||||
image :image
|
||||
field :postdate
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
# encoding: utf-8
|
||||
|
||||
require 'rss'
|
||||
require 'mongo'
|
||||
|
||||
SITES = { "總務長室暨總務處秘書室" => "sec.ga.ntu.edu.tw",
|
||||
"總務處文書組" => "doc.ga.ntu.edu.tw",
|
||||
"總務處事務組" => "general.ga.ntu.edu.tw",
|
||||
"總務處保管組" => "property.ga.ntu.edu.tw",
|
||||
"總務處營繕組" => "construction.ga.ntu.edu.tw",
|
||||
"總務處出納組" => "cashier.ga.ntu.edu.tw",
|
||||
"總務處採購組" => "procurement.ga.ntu.edu.tw",
|
||||
"總務處經營管理組" => "fss.ga.ntu.edu.tw",
|
||||
"總務處駐衛警察隊" => "police.ga.ntu.edu.tw",
|
||||
"社會科學院總務分處" => "social.ga.ntu.edu.tw",
|
||||
"醫學院總務分處" => "medicine.ga.ntu.edu.tw" }
|
||||
DB_BASE_NAME = "production_0"
|
||||
|
||||
yesterday = Time.now - 86400
|
||||
two_weeks_ago = Time.new - 60 * 60 * 24 * 14
|
||||
|
||||
recent_feed = {}
|
||||
|
||||
SITES.each do |name, url|
|
||||
open("http://#{url}/panel/announcement/front_end/bulletins.rss?inner=true") do |rss|
|
||||
|
||||
# Giving false parameter is for skipping irregular format of the RSS
|
||||
feed = RSS::Parser.parse(rss, false)
|
||||
|
||||
feed.items.each do |item|
|
||||
category = item.category.to_s.gsub(/\<(\/)*category\>/, '')
|
||||
|
||||
if item.pubDate > yesterday
|
||||
recent_feed[item.title.strip] = { date: item.pubDate, description: item.description.gsub("\r\n", '<br/>').strip,
|
||||
link: item.link, category: category, source: name }
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def get_category_id(category, categories, coll_cat)
|
||||
if categories.keys.include? "rss_#{category}"
|
||||
[categories["rss_#{category}"], categories]
|
||||
else
|
||||
cat = {
|
||||
_type: "BulletinCategory",
|
||||
key: "rss_#{category}",
|
||||
disable: false,
|
||||
title: {:zh_tw => category},
|
||||
created_at: Time.now,
|
||||
updated_at: Time.now
|
||||
}
|
||||
categories["rss_#{category}"] = result = coll_cat.save(cat)
|
||||
[result, categories]
|
||||
end
|
||||
end
|
||||
|
||||
def get_mongo_and_categories
|
||||
db = Mongo::Connection.new("localhost", 27017).db("#{DB_BASE_NAME}")
|
||||
coll_bulletin = db["bulletins"]
|
||||
coll_cat = db["bulletin_categories"]
|
||||
|
||||
categories = coll_cat.find().to_a.inject({}) do |categories, category|
|
||||
categories[category['key']] = category['_id']
|
||||
categories
|
||||
end
|
||||
|
||||
[categories, coll_bulletin, coll_cat]
|
||||
end
|
||||
|
||||
recent_feed.each do |title, bulletin|
|
||||
|
||||
categories, coll_bulletin, coll_cat = get_mongo_and_categories
|
||||
category_id, categories = get_category_id(bulletin[:category], categories, coll_cat)
|
||||
|
||||
unless coll_bulletin.find_one(rss_link: bulletin[:link])
|
||||
bulletin = { _type: "Bulletin",
|
||||
postdate: bulletin[:date],
|
||||
created_at: bulletin[:date],
|
||||
updated_at: bulletin[:date],
|
||||
is_checked: true,
|
||||
is_pending: false,
|
||||
is_rejected: false,
|
||||
bulletin_category_id: category_id,
|
||||
title: {:zh_tw => title},
|
||||
text: {:zh_tw => bulletin[:description]},
|
||||
available_for_zh_tw: true,
|
||||
rss_link: bulletin[:link],
|
||||
rss_source: bulletin[:source],
|
||||
is_top: false,
|
||||
is_hot: false,
|
||||
is_hidden: false }
|
||||
|
||||
coll_bulletin.save(bulletin)
|
||||
end
|
||||
end
|
||||
Vendored
+20
-9
@@ -31,18 +31,29 @@ 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 = @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
|
||||
@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)
|
||||
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)
|
||||
@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)
|
||||
else
|
||||
@archive_files = ArchiveFile.default_sort(params[:sort]).can_display.desc( :is_top ).page( params[:page_main] ).per(@page_num)
|
||||
@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)
|
||||
end
|
||||
|
||||
|
||||
|
||||
Vendored
+4
-2
@@ -27,8 +27,10 @@ class Panel::Archive::Widget::ArchiveFilesController < OrbitWidgetController
|
||||
@category_id = @part.category
|
||||
|
||||
date_now = Time.now
|
||||
|
||||
if !params[:category_id].blank?
|
||||
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?
|
||||
@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
+15
@@ -0,0 +1,15 @@
|
||||
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
+81
-35
@@ -13,10 +13,41 @@ 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
|
||||
|
||||
@@ -28,58 +59,73 @@ class Panel::Ask::BackEnd::AskRepliesController < OrbitBackendController
|
||||
Resque.enqueue(SendAskReplyMail, @ask_reply.ask_question.id)
|
||||
end
|
||||
|
||||
status_stack = []
|
||||
new_status = ""
|
||||
params[:school][:depts].each do |dns|
|
||||
send_request(dns, @ask_question, @ask_reply)
|
||||
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/auth_request"
|
||||
uri = URI.parse("http://" + dep_dns + uri_path)
|
||||
|
||||
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'
|
||||
# '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,
|
||||
}
|
||||
|
||||
http = Net::HTTP.new(uri.host, uri.port)
|
||||
request = Net::HTTP::Post.new(uri.request_uri)
|
||||
request.set_form_data(body)
|
||||
response = http.request(request)
|
||||
puts "Response #{response.code} #{response.message}: #{response.body}"
|
||||
|
||||
if response.code == "200"
|
||||
uri_path = "/panel/ask/back_end/ask_requests/transfer_request"
|
||||
uri = URI.parse("http://" + dep_dns + uri_path)
|
||||
http = Net::HTTP.new(uri.host, uri.port)
|
||||
request = Net::HTTP::Post.new(uri.request_uri)
|
||||
body = {
|
||||
'name' => current_question.name,
|
||||
'title' => current_question.title,
|
||||
'identity' => current_question.identity,
|
||||
'email' => current_question.email,
|
||||
'phone' => current_question.phone,
|
||||
'tax' => current_question.tax,
|
||||
'content' => current_question.content,
|
||||
}
|
||||
#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"
|
||||
new_status = "轉介其他單位" + "(" + response.code + ")"
|
||||
current_reply.update_attributes(status: new_status)
|
||||
if response.code == "200"
|
||||
status = "success"
|
||||
break
|
||||
else
|
||||
new_status = "轉介其他單位" + "(" + "success!" + ")"
|
||||
current_reply.update_attributes(status: new_status)
|
||||
end
|
||||
status = "fail"
|
||||
end
|
||||
end
|
||||
|
||||
puts "Response #{response.code} #{response.message}: #{response.body}"
|
||||
|
||||
return status
|
||||
# puts "Response #{response.code} #{response.message}: #{response.body}"
|
||||
# flash[:notice] = response.body
|
||||
# flash[:notice] = "Response #{response.code} #{response.message}: #{response.body}"
|
||||
end
|
||||
|
||||
Vendored
+28
-25
@@ -1,35 +1,38 @@
|
||||
# encoding: utf-8
|
||||
class Panel::Ask::BackEnd::AskRequestsController < OrbitBackendController
|
||||
|
||||
include AdminHelper
|
||||
include OrbitControllerLib::DivisionForDisable
|
||||
|
||||
def auth_request
|
||||
render :json => "#{params}"
|
||||
end
|
||||
|
||||
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
|
||||
|
||||
if !AskCategory.where(key: "transfered_question").any?
|
||||
@ask_category = AskCategory.new(name: "transfered_question", key: "transfered_question")
|
||||
@ask_category.save!
|
||||
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
|
||||
category = AskCategory.where(key: "transfered_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 :json => "#{params}"
|
||||
end
|
||||
|
||||
end
|
||||
Vendored
+12
-5
@@ -14,18 +14,22 @@ 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
|
||||
# redirect_to panel_ask_front_end_thank_you_path
|
||||
|
||||
# Render to create.js.erb
|
||||
respond_to do |format|
|
||||
format.js
|
||||
# format.js { render :thank_you, notice: 'Your question has been successfully sent.' }
|
||||
end
|
||||
else
|
||||
# Render to index.js.erb
|
||||
respond_to do |format|
|
||||
format.js { render :index }
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -43,4 +47,7 @@ class Panel::Ask::FrontEnd::AskQuestionsController < OrbitWidgetController
|
||||
end
|
||||
@item = Page.find(params[:page_id]) rescue nil
|
||||
end
|
||||
|
||||
def sorry
|
||||
end
|
||||
end
|
||||
+38
-20
@@ -1,18 +1,31 @@
|
||||
<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() == '轉介其他單位') { $('.dept_options').show(); }
|
||||
|
||||
if ($("#ask_reply_status").val() == '轉介其他單位') {
|
||||
|
||||
hide_current_host_name(local_host);
|
||||
|
||||
$('.dept_options').show();
|
||||
}
|
||||
|
||||
$("#ask_reply_status").change(function() {
|
||||
|
||||
var local_host = "<%= request.host %>:<%= request.port %>";
|
||||
|
||||
$('input[type=checkbox]').each(function() {
|
||||
if ($(this).val() == local_host) {
|
||||
$(this).addClass("hide");
|
||||
$(this).next().addClass("hide");
|
||||
}
|
||||
});
|
||||
hide_current_host_name(local_host);
|
||||
|
||||
$('.dept_options').slideUp();
|
||||
if ($(this).find('option:selected').attr('value') == '轉介其他單位') {
|
||||
@@ -70,17 +83,22 @@ $(document).ready(function() {
|
||||
<tr>
|
||||
<td colspan="5" class="dept_options">
|
||||
<div class="dept_options">
|
||||
<%= check_box("school", "depts", {:multiple => true}, "localhost:3000", nil) %><%= label_tag("localhost:3000", "總務長室暨總務處秘書室") %>
|
||||
<%= check_box("school", "depts", {:multiple => true}, "localhost:4000", nil) %><%= label_tag("localhost:4000", "文書組") %>
|
||||
<%= check_box("school", "depts", {:multiple => true}, "事務組", nil) %><%= label_tag(:dep3, "事務組") %>
|
||||
<%= check_box("school", "depts", {:multiple => true}, "保管組", nil) %><%= label_tag(:dep4, "保管組") %>
|
||||
<%= check_box("school", "depts", {:multiple => true}, "營繕組", nil) %><%= label_tag(:dep5, "營繕組") %>
|
||||
<%= check_box("school", "depts", {:multiple => true}, "出納組", nil) %><%= label_tag(:dep6, "出納組") %>
|
||||
<%= check_box("school", "depts", {:multiple => true}, "採購組", nil) %><%= label_tag(:dep7, "採購組") %>
|
||||
<%= check_box("school", "depts", {:multiple => true}, "經營管理組", nil) %><%= label_tag(:dep8, "經營管理組") %>
|
||||
<%= check_box("school", "depts", {:multiple => true}, "駐警隊", nil) %><%= label_tag(:dep9, "駐警隊") %>
|
||||
<%= check_box("school", "depts", {:multiple => true}, "社科院總務分處", nil) %><%= label_tag(:dep10, "社科院總務分處") %>
|
||||
<%= check_box("school", "depts", {:multiple => true}, "醫學院總務分處", nil) %><%= label_tag(:dep11, "醫學院總務分處") %>
|
||||
<!-- 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>
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
window.location.href= "<%= panel_ask_front_end_thank_you_path %>"
|
||||
window.location.href = "<%= panel_ask_front_end_thank_you_path %>";
|
||||
+6
-4
@@ -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'} do |f| %>
|
||||
<%= form_for @ask_question, url: panel_ask_front_end_ask_questions_path(standalone: true), html: {class: 'form-horizontal'}, method: :post 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 != 'transfered_question' }, :id, :name %>
|
||||
<%= f.collection_select :ask_category_id, AskCategory.all.select { |c| c.key != 'transferred_question' }, :id, :name %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
@@ -85,7 +85,9 @@ $(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
@@ -0,0 +1 @@
|
||||
window.location.href = "<%= panel_ask_front_end_sorry_path %>";
|
||||
+1
@@ -0,0 +1 @@
|
||||
<h3><%= t(:ask_fail, :scope => :ask) %> !</h3>
|
||||
@@ -1,5 +1,6 @@
|
||||
en:
|
||||
ask:
|
||||
ask_fail: Something went wrong
|
||||
ask: Ask
|
||||
export: Export
|
||||
reply: Reply
|
||||
@@ -17,6 +18,8 @@ en:
|
||||
admin: Administrator
|
||||
new_question: New question
|
||||
pending: Pending
|
||||
validate_code: Verification code
|
||||
validate_code_note: Please answer the following verification questions.
|
||||
mongoid:
|
||||
attributes:
|
||||
ask_question:
|
||||
|
||||
@@ -3,6 +3,7 @@ zh_tw:
|
||||
errors:
|
||||
verification_failed: 驗證碼錯誤
|
||||
ask:
|
||||
ask_fail: 寄送失敗
|
||||
ask: 發問
|
||||
export: 匯出
|
||||
reply: 回覆
|
||||
@@ -22,6 +23,8 @@ zh_tw:
|
||||
admin: 管理者
|
||||
new_question: 新的發問
|
||||
pending: 待處理
|
||||
validate_code: 驗證碼
|
||||
validate_code_note: 請回答下列驗證問句。
|
||||
mongoid:
|
||||
attributes:
|
||||
ask_question:
|
||||
|
||||
@@ -22,6 +22,7 @@ Rails.application.routes.draw do
|
||||
|
||||
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
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
.bundle/
|
||||
log/*.log
|
||||
pkg/
|
||||
test/dummy/db/*.sqlite3
|
||||
test/dummy/log/*.log
|
||||
test/dummy/tmp/
|
||||
Vendored
+17
@@ -0,0 +1,17 @@
|
||||
source "http://rubygems.org"
|
||||
|
||||
# Declare your gem's dependencies in location.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 'ruby-debug19', :require => 'ruby-debug'
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
Copyright 2012 YOURNAME
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
= Location
|
||||
|
||||
This project rocks and uses MIT-LICENSE.
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
#!/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 = 'Location'
|
||||
rdoc.options << '--line-numbers'
|
||||
rdoc.rdoc_files.include('README.rdoc')
|
||||
rdoc.rdoc_files.include('lib/**/*.rb')
|
||||
end
|
||||
|
||||
APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
|
||||
load 'rails/tasks/engine.rake'
|
||||
|
||||
|
||||
Bundler::GemHelper.install_tasks
|
||||
|
||||
require 'rake/testtask'
|
||||
|
||||
Rake::TestTask.new(:test) do |t|
|
||||
t.libs << 'lib'
|
||||
t.libs << 'test'
|
||||
t.pattern = 'test/**/*_test.rb'
|
||||
t.verbose = false
|
||||
end
|
||||
|
||||
|
||||
task :default => :test
|
||||
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
+2
@@ -0,0 +1,2 @@
|
||||
// Place all the behaviors and hooks related to the matching controller here.
|
||||
// All this logic will automatically be available in application.js.
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
// Place all the behaviors and hooks related to the matching controller here.
|
||||
// All this logic will automatically be available in application.js.
|
||||
Whitespace-only changes.
Whitespace-only changes.
+4
@@ -0,0 +1,4 @@
|
||||
/*
|
||||
Place all the styles related to the matching controller here.
|
||||
They will automatically be included in application.css.
|
||||
*/
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
/*
|
||||
Place all the styles related to the matching controller here.
|
||||
They will automatically be included in application.css.
|
||||
*/
|
||||
Whitespace-only changes.
+49
@@ -0,0 +1,49 @@
|
||||
class Panel::Feed::BackEnd::FeedsController < OrbitBackendController
|
||||
before_filter :force_order_for_visitor,:only => [:index, :new, :edit, :delete]
|
||||
before_filter :force_order_for_user,:except => [:index]
|
||||
|
||||
def index
|
||||
@feeds = AnnouncementFeed.all
|
||||
|
||||
respond_to do |format|
|
||||
format.html
|
||||
end
|
||||
end
|
||||
|
||||
def new
|
||||
@feed = AnnouncementFeed.new
|
||||
end
|
||||
|
||||
def edit
|
||||
@feed = AnnouncementFeed.find(params[:id])
|
||||
@categories = @feed.categories
|
||||
end
|
||||
|
||||
def create
|
||||
@feed = AnnouncementFeed.new(params[:announcement_feed])
|
||||
|
||||
if @feed.save
|
||||
redirect_to panel_feed_back_end_feeds_url
|
||||
else
|
||||
render 'new'
|
||||
end
|
||||
end
|
||||
|
||||
def update
|
||||
@feed = AnnouncementFeed.find(params[:id])
|
||||
|
||||
if @feed.update_attributes(params[:announcement_feed])
|
||||
redirect_to panel_feed_back_end_feeds_url
|
||||
else
|
||||
render 'edit'
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
@feed = AnnouncementFeed.find(params[:id])
|
||||
@feed.destroy
|
||||
|
||||
redirect_to panel_feed_back_end_feeds_url
|
||||
end
|
||||
|
||||
end
|
||||
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
@@ -0,0 +1,8 @@
|
||||
class AnnouncementFeed
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
|
||||
field :link, type: String
|
||||
field :name, type: String
|
||||
|
||||
end
|
||||
@@ -0,0 +1,61 @@
|
||||
class LocationsUploader < CarrierWave::Uploader::Base
|
||||
|
||||
# Include RMagick or ImageScience support:
|
||||
# include CarrierWave::RMagick
|
||||
# include CarrierWave::ImageScience
|
||||
include CarrierWave::MiniMagick
|
||||
|
||||
# Choose what kind of storage to use for this uploader:
|
||||
# storage :file
|
||||
# storage :s3
|
||||
|
||||
# Override the directory where uploaded files will be stored.
|
||||
# This is a sensible default for uploaders that are meant to be mounted:
|
||||
def store_dir
|
||||
"location/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
|
||||
end
|
||||
|
||||
# Provide a default URL as a default if there hasn't been a file uploaded:
|
||||
# def default_url
|
||||
# "/images/fallback/" + [version_name, "default.png"].compact.join('_')
|
||||
# end
|
||||
|
||||
# Process files as they are uploaded:
|
||||
# process :scale => [200, 300]
|
||||
#
|
||||
# def scale(width, height)
|
||||
# # do something
|
||||
# end
|
||||
|
||||
# Create different versions of your uploaded files:
|
||||
# version :thumb do
|
||||
# process :scale => [50, 50]
|
||||
# end
|
||||
|
||||
version :thumb do
|
||||
process :resize_to_fill => [150, 120]
|
||||
end
|
||||
|
||||
# Add a white list of extensions which are allowed to be uploaded.
|
||||
# For images you might use something like this:
|
||||
# def extension_white_list
|
||||
# %w(jpg jpeg gif png)
|
||||
# end
|
||||
|
||||
# Override the filename of the uploaded files:
|
||||
# def filename
|
||||
# "something.jpg" if original_filename
|
||||
# end
|
||||
|
||||
# def manipulate!
|
||||
# raise current_path.inspect
|
||||
# image = ::MiniMagick::Image.open(current_path)
|
||||
# image = yield(image)
|
||||
# image.write(current_path)
|
||||
# ::MiniMagick::Image.open(current_path)
|
||||
# rescue ::MiniMagick::Error, ::MiniMagick::Invalid => e
|
||||
# raise CarrierWave::ProcessingError.new("Failed to manipulate with MiniMagick, maybe it is not an image? Original Error: #{e}")
|
||||
# end
|
||||
|
||||
end
|
||||
|
||||
Whitespace-only changes.
+84
@@ -0,0 +1,84 @@
|
||||
<legend><h3 style="margin-left: 10px;"><%= t('feed.channel') %></h3></legend>
|
||||
<fieldset style="margin-left: -25px;">
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="inputName"><%= t('feed.enter') + " RSS " + t('feed.name')%>:</label>
|
||||
<div class="controls">
|
||||
<%= f.text_field :name, :class => 'span4', :placeholder => 'RSS ' + t('feed.name'), :id => "inputName" %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="inputURL"><%= t('feed.enter') + " RSS URL" %>:</label>
|
||||
<div class="controls">
|
||||
<%= f.text_field :link, :class => 'span4', :placeholder => 'RSS URL', :id => "inputURL" %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="inputURL"><%= t('feed.choose') %>:</label>
|
||||
<div class="controls">
|
||||
<%= content_tag :label,:class => "checkbox inline" do -%>
|
||||
<%= check_box("announcement_feed", "categories", {:multiple => true}, "全部", nil) %>
|
||||
<%= label_tag "全部" %>
|
||||
<% end -%>
|
||||
<%= content_tag :label,:class => "checkbox inline" do -%>
|
||||
<%= check_box("announcement_feed", "categories", {:multiple => true}, "緊急", nil) %>
|
||||
<%= label_tag "緊急" %>
|
||||
<% end -%>
|
||||
<%= content_tag :label,:class => "checkbox inline" do -%>
|
||||
<%= check_box("announcement_feed", "categories", {:multiple => true}, "一般", nil) %>
|
||||
<%= label_tag "一般" %>
|
||||
<% end -%>
|
||||
<%= content_tag :label,:class => "checkbox inline" do -%>
|
||||
<%= check_box("announcement_feed", "categories", {:multiple => true}, "研討會", nil) %>
|
||||
<%= label_tag "研討會" %>
|
||||
<% end -%>
|
||||
<%= content_tag :label,:class => "checkbox inline" do -%>
|
||||
<%= check_box("announcement_feed", "categories", {:multiple => true}, "演講", nil) %>
|
||||
<%= label_tag "演講" %>
|
||||
<% end -%>
|
||||
<%= content_tag :label,:class => "checkbox inline" do -%>
|
||||
<%= check_box("announcement_feed", "categories", {:multiple => true}, "活動", nil) %>
|
||||
<%= label_tag "活動" %>
|
||||
<% end -%>
|
||||
<%= content_tag :label,:class => "checkbox inline" do -%>
|
||||
<%= check_box("announcement_feed", "categories", {:multiple => true}, "徵才", nil) %>
|
||||
<%= label_tag "徵才" %>
|
||||
<% end -%>
|
||||
<%= content_tag :label,:class => "checkbox inline" do -%>
|
||||
<%= check_box("announcement_feed", "categories", {:multiple => true}, "招標", nil) %>
|
||||
<%= label_tag "招標" %>
|
||||
<% end -%>
|
||||
<%= content_tag :label,:class => "checkbox inline" do -%>
|
||||
<%= check_box("announcement_feed", "categories", {:multiple => true}, "拖吊", nil) %>
|
||||
<%= label_tag "拖吊" %>
|
||||
<% end -%>
|
||||
<%= content_tag :label,:class => "checkbox inline" do -%>
|
||||
<%= check_box("announcement_feed", "categories", {:multiple => true}, "校外", nil) %>
|
||||
<%= label_tag "校外" %>
|
||||
<% end -%>
|
||||
<%= content_tag :label,:class => "checkbox inline" do -%>
|
||||
<%= check_box("announcement_feed", "categories", {:multiple => true}, "過期", nil) %>
|
||||
<%= label_tag "過期" %>
|
||||
<% end -%>
|
||||
<%= content_tag :label,:class => "checkbox inline" do -%>
|
||||
<%= check_box("announcement_feed", "categories", {:multiple => true}, "H1N1", nil) %>
|
||||
<%= label_tag "H1N1" %>
|
||||
<% end -%>
|
||||
<%= content_tag :label,:class => "checkbox inline" do -%>
|
||||
<%= check_box("announcement_feed", "categories", {:multiple => true}, "失物招領", nil) %>
|
||||
<%= label_tag "失物招領" %>
|
||||
<% end -%>
|
||||
<%= content_tag :label,:class => "checkbox inline" do -%>
|
||||
<%= check_box("announcement_feed", "categories", {:multiple => true}, "近期", nil) %>
|
||||
<%= label_tag "近期" %>
|
||||
<% end -%>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<%= f.submit t("submit"), :class => "btn btn-primary" %>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
<%= form_for @feed, :url => panel_feed_back_end_feed_path, :method => :put, :html => {:class => "form-horizontal"} do |f| %>
|
||||
<%= render :partial => 'form', :locals => {:f => f} %>
|
||||
<% end %>
|
||||
<script type="text/javascript">
|
||||
|
||||
var $checkboxes = $('.checkbox input');
|
||||
|
||||
$(document).ready(function() {
|
||||
var categories = <%= @categories.to_json.html_safe %>;
|
||||
|
||||
for (var i = 0; i < $checkboxes.length; i++) {
|
||||
|
||||
if ($.inArray($checkboxes[i].value, categories) != -1) {
|
||||
$checkboxes[i].checked = true;
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
$('#announcement_feed_categories_').on('click', function() {
|
||||
if ($checkboxes[0].checked == true) {
|
||||
for (var i = 1; i < $checkboxes.length; i++) {
|
||||
$checkboxes[i].checked = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$checkboxes.on('click', function() {
|
||||
for (var i = 1; i < $checkboxes.length; i++) {
|
||||
if ($checkboxes[i].checked == true) {
|
||||
$checkboxes[0].checked = false
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
<table class="table main-list">
|
||||
<thead>
|
||||
<tr><th><h3><%= t('feed.channel') %></h3></th></tr>
|
||||
<tr>
|
||||
<th class="span4"><%= t('RSS') %></th>
|
||||
<%if is_manager? %>
|
||||
<th class="span4"><%= t('feed.edit') %></th>
|
||||
<th class="span4"><%= t('feed.delete') %></th>
|
||||
<% end %>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="tbody_locations" class="sort-holder">
|
||||
<% @feeds.each do |feed| %>
|
||||
<tr class="with_action">
|
||||
<td><%= feed.name %></td>
|
||||
<%if is_manager? %>
|
||||
<td><%= link_to t('feed.edit'), edit_panel_feed_back_end_feed_path(feed) %></td>
|
||||
<td><%= link_to t('feed.cancel'), panel_feed_back_end_feed_path(feed), method: :delete, confirm: t(:sure?) %></td>
|
||||
<% end %>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
<%if is_manager? %>
|
||||
<br />
|
||||
<%= link_to t('feed.new'), new_panel_feed_back_end_feed_path, :class => "btn btn-primary pull-right", :id => "create_event_btn", :ref => "add-btn" %>
|
||||
<% end %>
|
||||
@@ -0,0 +1,3 @@
|
||||
<%= form_for @feed, :url => panel_feed_back_end_feeds_path, :html => { :class=>"form-horizontal"} do |f| %>
|
||||
<%= render :partial => 'form', :locals => {:f => f} %>
|
||||
<% end %>
|
||||
Whitespace-only changes.
@@ -0,0 +1,12 @@
|
||||
en:
|
||||
feed:
|
||||
all: All
|
||||
choose: Choose a Category
|
||||
feed: RSS
|
||||
channel: Announcement Rss
|
||||
new: New
|
||||
edit: Edit
|
||||
delete: Delete
|
||||
cancel: Cancel RSS
|
||||
enter: Enter
|
||||
name: Name
|
||||
@@ -0,0 +1,12 @@
|
||||
zh_tw:
|
||||
feed:
|
||||
all: 全部
|
||||
choose: 選擇訂閱類別
|
||||
feed: RSS
|
||||
channel: 公告RSS訂閱
|
||||
new: 新增
|
||||
edit: 編輯
|
||||
delete: 刪除
|
||||
cancel: 取消訂閱
|
||||
enter: 輸入
|
||||
name: 名稱
|
||||
@@ -0,0 +1,9 @@
|
||||
Rails.application.routes.draw do
|
||||
namespace :panel do
|
||||
namespace :feed do
|
||||
namespace :back_end do
|
||||
resources :feeds
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
$:.push File.expand_path("../lib", __FILE__)
|
||||
|
||||
# Maintain your gem's version:
|
||||
require "location/version"
|
||||
|
||||
# Describe your gem and declare its dependencies:
|
||||
Gem::Specification.new do |s|
|
||||
s.name = "location"
|
||||
s.version = Location::VERSION
|
||||
s.authors = ["TODO: Your name"]
|
||||
s.email = ["TODO: Your email"]
|
||||
s.homepage = "TODO"
|
||||
s.summary = "TODO: Summary of Location."
|
||||
s.description = "TODO: Description of Location."
|
||||
|
||||
s.files = Dir["{app,config,db,lib}/**/*"] + ["MIT-LICENSE", "Rakefile", "README.rdoc"]
|
||||
s.test_files = Dir["test/**/*"]
|
||||
|
||||
s.add_dependency "rails", "~> 3.1.8"
|
||||
# s.add_dependency "jquery-rails"
|
||||
|
||||
s.add_development_dependency "sqlite3"
|
||||
end
|
||||
Vendored
+24
@@ -0,0 +1,24 @@
|
||||
module Feeds
|
||||
OrbitApp.registration "Feed",:type=> 'ModuleApp' do
|
||||
module_label 'feed.feed'
|
||||
base_url File.expand_path File.dirname(__FILE__)
|
||||
# personal_plugin :enable => true,:path=>"panel/location/plugin/profile",:i18n=>'admin.location'
|
||||
|
||||
version "0.1"
|
||||
organization "Rulingcom"
|
||||
author "RD dep"
|
||||
intro "I am intro"
|
||||
update_info 'some update_info'
|
||||
#enable_frontend true
|
||||
|
||||
|
||||
side_bar do
|
||||
head_label_i18n 'feed.channel', :icon_class=>"icon-plus"
|
||||
available_for [:admin,:guest,:manager,:sub_manager]
|
||||
active_for_controllers ({:private=>['feeds']})
|
||||
|
||||
head_link_path "panel_feed_back_end_feeds_path"
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
# encoding: utf-8
|
||||
require 'rss'
|
||||
require 'mongo'
|
||||
|
||||
# Change this according to local DB
|
||||
DB_NAME = "production_0"
|
||||
|
||||
# Create a hash rss site list from mongodb
|
||||
db = Mongo::Connection.new("localhost", 27017).db("#{DB_NAME}")
|
||||
SITES = Hash[ db["announcement_feeds"].find().entries.collect {|f| [ f["name"], f["link"] ] } ]
|
||||
CATEGORIES = Array(db["announcement_feeds"].find().entries.collect {|f| f["categories"] })
|
||||
|
||||
yesterday = Time.now - 86400
|
||||
two_weeks_ago = Time.new - 60 * 60 * 24 * 14
|
||||
|
||||
recent_feed = {}
|
||||
|
||||
SITES.each_with_index do |(name, url), i|
|
||||
open("http://#{url}/panel/announcement/front_end/bulletins.rss?inner=true") do |rss|
|
||||
|
||||
# Giving 'false' parameter is for skipping irregular format of the RSS
|
||||
feed = RSS::Parser.parse(rss, false)
|
||||
|
||||
feed.items.each do |item|
|
||||
category = item.category.to_s.gsub(/\<(\/)*category\>/, '')
|
||||
|
||||
if item.pubDate > yesterday && CATEGORIES[i].include?(category)
|
||||
recent_feed[item.title.strip] = { date: item.pubDate, description: item.description.gsub("\r\n", '<br/>').strip,
|
||||
link: item.link, category: category, source: name }
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def get_category_id(category, categories, coll_cat)
|
||||
if categories.keys.include? "rss_#{category}"
|
||||
[categories["rss_#{category}"], categories]
|
||||
else
|
||||
cat = {
|
||||
_type: "BulletinCategory",
|
||||
key: "rss_#{category}",
|
||||
disable: false,
|
||||
title: {:zh_tw => category},
|
||||
created_at: Time.now,
|
||||
updated_at: Time.now
|
||||
}
|
||||
categories["rss_#{category}"] = result = coll_cat.save(cat)
|
||||
[result, categories]
|
||||
end
|
||||
end
|
||||
|
||||
def get_mongo_and_categories
|
||||
db = Mongo::Connection.new("localhost", 27017).db("#{DB_NAME}")
|
||||
coll_bulletin = db["bulletins"]
|
||||
coll_cat = db["bulletin_categories"]
|
||||
|
||||
categories = coll_cat.find().to_a.inject({}) do |categories, category|
|
||||
categories[category['key']] = category['_id']
|
||||
categories
|
||||
end
|
||||
|
||||
[categories, coll_bulletin, coll_cat]
|
||||
end
|
||||
|
||||
recent_feed.each do |title, bulletin|
|
||||
|
||||
categories, coll_bulletin, coll_cat = get_mongo_and_categories
|
||||
category_id, categories = get_category_id(bulletin[:category], categories, coll_cat)
|
||||
|
||||
unless coll_bulletin.find_one(rss_link: bulletin[:link])
|
||||
bulletin = { _type: "Bulletin",
|
||||
postdate: bulletin[:date],
|
||||
created_at: bulletin[:date],
|
||||
updated_at: bulletin[:date],
|
||||
is_checked: true,
|
||||
is_pending: false,
|
||||
is_rejected: false,
|
||||
bulletin_category_id: category_id,
|
||||
title: {:zh_tw => title},
|
||||
text: {:zh_tw => bulletin[:description]},
|
||||
available_for_zh_tw: true,
|
||||
rss_link: bulletin[:link],
|
||||
rss_source: bulletin[:source],
|
||||
is_top: false,
|
||||
is_hot: false,
|
||||
is_hidden: false }
|
||||
|
||||
coll_bulletin.save(bulletin)
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,4 @@
|
||||
# desc "Explaining what the task does"
|
||||
# task :location do
|
||||
# # Task goes here
|
||||
# end
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env ruby
|
||||
#!/usr/bin/env ruby
|
||||
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
||||
|
||||
ENGINE_PATH = File.expand_path('../..', __FILE__)
|
||||
load File.expand_path('../../test/dummy/script/rails', __FILE__)
|
||||
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env rake
|
||||
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
||||
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
||||
|
||||
require File.expand_path('../config/application', __FILE__)
|
||||
|
||||
Dummy::Application.load_tasks
|
||||
@@ -0,0 +1,9 @@
|
||||
// This is a manifest file that'll be compiled into including all the files listed below.
|
||||
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
|
||||
// be included in the compiled file accessible from http://example.com/assets/application.js
|
||||
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
||||
// the compiled file.
|
||||
//
|
||||
//= require jquery
|
||||
//= require jquery_ujs
|
||||
//= require_tree .
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
/*
|
||||
* This is a manifest file that'll automatically include all the stylesheets available in this directory
|
||||
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
|
||||
* the top of the compiled file, but it's generally better to create a new file per style scope.
|
||||
*= require_self
|
||||
*= require_tree .
|
||||
*/
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
class ApplicationController < ActionController::Base
|
||||
protect_from_forgery
|
||||
end
|
||||
@@ -0,0 +1,2 @@
|
||||
module ApplicationHelper
|
||||
end
|
||||
Whitespace-only changes.
Whitespace-only changes.
+14
@@ -0,0 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Dummy</title>
|
||||
<%= stylesheet_link_tag "application" %>
|
||||
<%= javascript_include_tag "application" %>
|
||||
<%= csrf_meta_tags %>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<%= yield %>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,4 @@
|
||||
# This file is used by Rack-based servers to start the application.
|
||||
|
||||
require ::File.expand_path('../config/environment', __FILE__)
|
||||
run Dummy::Application
|
||||
@@ -0,0 +1,45 @@
|
||||
require File.expand_path('../boot', __FILE__)
|
||||
|
||||
require 'rails/all'
|
||||
|
||||
Bundler.require
|
||||
require "location"
|
||||
|
||||
module Dummy
|
||||
class Application < Rails::Application
|
||||
# Settings in config/environments/* take precedence over those specified here.
|
||||
# Application configuration should go into files in config/initializers
|
||||
# -- all .rb files in that directory are automatically loaded.
|
||||
|
||||
# Custom directories with classes and modules you want to be autoloadable.
|
||||
# config.autoload_paths += %W(#{config.root}/extras)
|
||||
|
||||
# Only load the plugins named here, in the order given (default is alphabetical).
|
||||
# :all can be used as a placeholder for all plugins not explicitly named.
|
||||
# config.plugins = [ :exception_notification, :ssl_requirement, :all ]
|
||||
|
||||
# Activate observers that should always be running.
|
||||
# config.active_record.observers = :cacher, :garbage_collector, :forum_observer
|
||||
|
||||
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
|
||||
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
|
||||
# config.time_zone = 'Central Time (US & Canada)'
|
||||
|
||||
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
||||
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
||||
# config.i18n.default_locale = :de
|
||||
|
||||
# Configure the default encoding used in templates for Ruby 1.9.
|
||||
config.encoding = "utf-8"
|
||||
|
||||
# Configure sensitive parameters which will be filtered from the log file.
|
||||
config.filter_parameters += [:password]
|
||||
|
||||
# Enable the asset pipeline
|
||||
config.assets.enabled = true
|
||||
|
||||
# Version of your assets, change this if you want to expire all your assets
|
||||
config.assets.version = '1.0'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
require 'rubygems'
|
||||
gemfile = File.expand_path('../../../../Gemfile', __FILE__)
|
||||
|
||||
if File.exist?(gemfile)
|
||||
ENV['BUNDLE_GEMFILE'] = gemfile
|
||||
require 'bundler'
|
||||
Bundler.setup
|
||||
end
|
||||
|
||||
$:.unshift File.expand_path('../../../../lib', __FILE__)
|
||||
@@ -0,0 +1,25 @@
|
||||
# SQLite version 3.x
|
||||
# gem install sqlite3
|
||||
#
|
||||
# Ensure the SQLite 3 gem is defined in your Gemfile
|
||||
# gem 'sqlite3'
|
||||
development:
|
||||
adapter: sqlite3
|
||||
database: db/development.sqlite3
|
||||
pool: 5
|
||||
timeout: 5000
|
||||
|
||||
# Warning: The database defined as "test" will be erased and
|
||||
# re-generated from your development database when you run "rake".
|
||||
# Do not set this db to the same as development or production.
|
||||
test:
|
||||
adapter: sqlite3
|
||||
database: db/test.sqlite3
|
||||
pool: 5
|
||||
timeout: 5000
|
||||
|
||||
production:
|
||||
adapter: sqlite3
|
||||
database: db/production.sqlite3
|
||||
pool: 5
|
||||
timeout: 5000
|
||||
@@ -0,0 +1,5 @@
|
||||
# Load the rails application
|
||||
require File.expand_path('../application', __FILE__)
|
||||
|
||||
# Initialize the rails application
|
||||
Dummy::Application.initialize!
|
||||
@@ -0,0 +1,30 @@
|
||||
Dummy::Application.configure do
|
||||
# Settings specified here will take precedence over those in config/application.rb
|
||||
|
||||
# In the development environment your application's code is reloaded on
|
||||
# every request. This slows down response time but is perfect for development
|
||||
# since you don't have to restart the web server when you make code changes.
|
||||
config.cache_classes = false
|
||||
|
||||
# Log error messages when you accidentally call methods on nil.
|
||||
config.whiny_nils = true
|
||||
|
||||
# Show full error reports and disable caching
|
||||
config.consider_all_requests_local = true
|
||||
config.action_controller.perform_caching = false
|
||||
|
||||
# Don't care if the mailer can't send
|
||||
config.action_mailer.raise_delivery_errors = false
|
||||
|
||||
# Print deprecation notices to the Rails logger
|
||||
config.active_support.deprecation = :log
|
||||
|
||||
# Only use best-standards-support built into browsers
|
||||
config.action_dispatch.best_standards_support = :builtin
|
||||
|
||||
# Do not compress assets
|
||||
config.assets.compress = false
|
||||
|
||||
# Expands the lines which load the assets
|
||||
config.assets.debug = true
|
||||
end
|
||||
@@ -0,0 +1,60 @@
|
||||
Dummy::Application.configure do
|
||||
# Settings specified here will take precedence over those in config/application.rb
|
||||
|
||||
# Code is not reloaded between requests
|
||||
config.cache_classes = true
|
||||
|
||||
# Full error reports are disabled and caching is turned on
|
||||
config.consider_all_requests_local = false
|
||||
config.action_controller.perform_caching = true
|
||||
|
||||
# Disable Rails's static asset server (Apache or nginx will already do this)
|
||||
config.serve_static_assets = false
|
||||
|
||||
# Compress JavaScripts and CSS
|
||||
config.assets.compress = true
|
||||
|
||||
# Don't fallback to assets pipeline if a precompiled asset is missed
|
||||
config.assets.compile = false
|
||||
|
||||
# Generate digests for assets URLs
|
||||
config.assets.digest = true
|
||||
|
||||
# Defaults to Rails.root.join("public/assets")
|
||||
# config.assets.manifest = YOUR_PATH
|
||||
|
||||
# Specifies the header that your server uses for sending files
|
||||
# config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
|
||||
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
|
||||
|
||||
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
|
||||
# config.force_ssl = true
|
||||
|
||||
# See everything in the log (default is :info)
|
||||
# config.log_level = :debug
|
||||
|
||||
# Use a different logger for distributed setups
|
||||
# config.logger = SyslogLogger.new
|
||||
|
||||
# Use a different cache store in production
|
||||
# config.cache_store = :mem_cache_store
|
||||
|
||||
# Enable serving of images, stylesheets, and JavaScripts from an asset server
|
||||
# config.action_controller.asset_host = "http://assets.example.com"
|
||||
|
||||
# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
|
||||
# config.assets.precompile += %w( search.js )
|
||||
|
||||
# Disable delivery errors, bad email addresses will be ignored
|
||||
# config.action_mailer.raise_delivery_errors = false
|
||||
|
||||
# Enable threaded mode
|
||||
# config.threadsafe!
|
||||
|
||||
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
||||
# the I18n.default_locale when a translation can not be found)
|
||||
config.i18n.fallbacks = true
|
||||
|
||||
# Send deprecation notices to registered listeners
|
||||
config.active_support.deprecation = :notify
|
||||
end
|
||||
@@ -0,0 +1,39 @@
|
||||
Dummy::Application.configure do
|
||||
# Settings specified here will take precedence over those in config/application.rb
|
||||
|
||||
# The test environment is used exclusively to run your application's
|
||||
# test suite. You never need to work with it otherwise. Remember that
|
||||
# your test database is "scratch space" for the test suite and is wiped
|
||||
# and recreated between test runs. Don't rely on the data there!
|
||||
config.cache_classes = true
|
||||
|
||||
# Configure static asset server for tests with Cache-Control for performance
|
||||
config.serve_static_assets = true
|
||||
config.static_cache_control = "public, max-age=3600"
|
||||
|
||||
# Log error messages when you accidentally call methods on nil
|
||||
config.whiny_nils = true
|
||||
|
||||
# Show full error reports and disable caching
|
||||
config.consider_all_requests_local = true
|
||||
config.action_controller.perform_caching = false
|
||||
|
||||
# Raise exceptions instead of rendering exception templates
|
||||
config.action_dispatch.show_exceptions = false
|
||||
|
||||
# Disable request forgery protection in test environment
|
||||
config.action_controller.allow_forgery_protection = false
|
||||
|
||||
# Tell Action Mailer not to deliver emails to the real world.
|
||||
# The :test delivery method accumulates sent emails in the
|
||||
# ActionMailer::Base.deliveries array.
|
||||
config.action_mailer.delivery_method = :test
|
||||
|
||||
# Use SQL instead of Active Record's schema dumper when creating the test database.
|
||||
# This is necessary if your schema can't be completely dumped by the schema dumper,
|
||||
# like if you have constraints or database-specific column types
|
||||
# config.active_record.schema_format = :sql
|
||||
|
||||
# Print deprecation notices to the stderr
|
||||
config.active_support.deprecation = :stderr
|
||||
end
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
|
||||
# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
|
||||
|
||||
# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
|
||||
# Rails.backtrace_cleaner.remove_silencers!
|
||||
@@ -0,0 +1,10 @@
|
||||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
# Add new inflection rules using the following format
|
||||
# (all these examples are active by default):
|
||||
# ActiveSupport::Inflector.inflections do |inflect|
|
||||
# inflect.plural /^(ox)$/i, '\1en'
|
||||
# inflect.singular /^(ox)en/i, '\1'
|
||||
# inflect.irregular 'person', 'people'
|
||||
# inflect.uncountable %w( fish sheep )
|
||||
# end
|
||||
@@ -0,0 +1,5 @@
|
||||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
# Add new mime types for use in respond_to blocks:
|
||||
# Mime::Type.register "text/richtext", :rtf
|
||||
# Mime::Type.register_alias "text/html", :iphone
|
||||
@@ -0,0 +1,7 @@
|
||||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
# Your secret key for verifying the integrity of signed cookies.
|
||||
# If you change this key, all old signed cookies will become invalid!
|
||||
# Make sure the secret is at least 30 characters and all random,
|
||||
# no regular words or you'll be exposed to dictionary attacks.
|
||||
Dummy::Application.config.secret_token = '181584334acb820e1d0e0e53b71c0985251f4e5bfd188a962d5f9acfeeb0e46dfd6ca68784528cab00d8e6e8da087cce2bf7d060fe2b2c742a814c23689ff6af'
|
||||
@@ -0,0 +1,8 @@
|
||||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
Dummy::Application.config.session_store :cookie_store, key: '_dummy_session'
|
||||
|
||||
# Use the database for sessions instead of the cookie-based default,
|
||||
# which shouldn't be used to store highly confidential information
|
||||
# (create the session table with "rails generate session_migration")
|
||||
# Dummy::Application.config.session_store :active_record_store
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
# Be sure to restart your server when you modify this file.
|
||||
#
|
||||
# This file contains settings for ActionController::ParamsWrapper which
|
||||
# is enabled by default.
|
||||
|
||||
# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
|
||||
ActiveSupport.on_load(:action_controller) do
|
||||
wrap_parameters format: [:json]
|
||||
end
|
||||
|
||||
# Disable root element in JSON by default.
|
||||
ActiveSupport.on_load(:active_record) do
|
||||
self.include_root_in_json = false
|
||||
end
|
||||
@@ -0,0 +1,5 @@
|
||||
# Sample localization file for English. Add more files in this directory for other locales.
|
||||
# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
|
||||
|
||||
en:
|
||||
hello: "Hello world"
|
||||
@@ -0,0 +1,58 @@
|
||||
Dummy::Application.routes.draw do
|
||||
# The priority is based upon order of creation:
|
||||
# first created -> highest priority.
|
||||
|
||||
# Sample of regular route:
|
||||
# match 'products/:id' => 'catalog#view'
|
||||
# Keep in mind you can assign values other than :controller and :action
|
||||
|
||||
# Sample of named route:
|
||||
# match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
|
||||
# This route can be invoked with purchase_url(:id => product.id)
|
||||
|
||||
# Sample resource route (maps HTTP verbs to controller actions automatically):
|
||||
# resources :products
|
||||
|
||||
# Sample resource route with options:
|
||||
# resources :products do
|
||||
# member do
|
||||
# get 'short'
|
||||
# post 'toggle'
|
||||
# end
|
||||
#
|
||||
# collection do
|
||||
# get 'sold'
|
||||
# end
|
||||
# end
|
||||
|
||||
# Sample resource route with sub-resources:
|
||||
# resources :products do
|
||||
# resources :comments, :sales
|
||||
# resource :seller
|
||||
# end
|
||||
|
||||
# Sample resource route with more complex sub-resources
|
||||
# resources :products do
|
||||
# resources :comments
|
||||
# resources :sales do
|
||||
# get 'recent', :on => :collection
|
||||
# end
|
||||
# end
|
||||
|
||||
# Sample resource route within a namespace:
|
||||
# namespace :admin do
|
||||
# # Directs /admin/products/* to Admin::ProductsController
|
||||
# # (app/controllers/admin/products_controller.rb)
|
||||
# resources :products
|
||||
# end
|
||||
|
||||
# You can have the root of your site routed with "root"
|
||||
# just remember to delete public/index.html.
|
||||
# root :to => 'welcome#index'
|
||||
|
||||
# See how all your routes lay out with "rake routes"
|
||||
|
||||
# This is a legacy wild controller route that's not recommended for RESTful applications.
|
||||
# Note: This route will make all actions in every controller accessible via GET requests.
|
||||
# match ':controller(/:action(/:id(.:format)))'
|
||||
end
|
||||
Whitespace-only changes.
Whitespace-only changes.
@@ -0,0 +1,26 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>The page you were looking for doesn't exist (404)</title>
|
||||
<style type="text/css">
|
||||
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
||||
div.dialog {
|
||||
width: 25em;
|
||||
padding: 0 4em;
|
||||
margin: 4em auto 0 auto;
|
||||
border: 1px solid #ccc;
|
||||
border-right-color: #999;
|
||||
border-bottom-color: #999;
|
||||
}
|
||||
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- This file lives in public/404.html -->
|
||||
<div class="dialog">
|
||||
<h1>The page you were looking for doesn't exist.</h1>
|
||||
<p>You may have mistyped the address or the page may have moved.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,26 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>The change you wanted was rejected (422)</title>
|
||||
<style type="text/css">
|
||||
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
||||
div.dialog {
|
||||
width: 25em;
|
||||
padding: 0 4em;
|
||||
margin: 4em auto 0 auto;
|
||||
border: 1px solid #ccc;
|
||||
border-right-color: #999;
|
||||
border-bottom-color: #999;
|
||||
}
|
||||
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- This file lives in public/422.html -->
|
||||
<div class="dialog">
|
||||
<h1>The change you wanted was rejected.</h1>
|
||||
<p>Maybe you tried to change something you didn't have access to.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,26 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>We're sorry, but something went wrong (500)</title>
|
||||
<style type="text/css">
|
||||
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
||||
div.dialog {
|
||||
width: 25em;
|
||||
padding: 0 4em;
|
||||
margin: 4em auto 0 auto;
|
||||
border: 1px solid #ccc;
|
||||
border-right-color: #999;
|
||||
border-bottom-color: #999;
|
||||
}
|
||||
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- This file lives in public/500.html -->
|
||||
<div class="dialog">
|
||||
<h1>We're sorry, but something went wrong.</h1>
|
||||
<p>We've been notified about this issue and we'll take a look at it shortly.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Whitespace-only changes.
+6
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env ruby
|
||||
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
||||
|
||||
APP_PATH = File.expand_path('../../config/application', __FILE__)
|
||||
require File.expand_path('../../config/boot', __FILE__)
|
||||
require 'rails/commands'
|
||||
Vendored
+14
@@ -0,0 +1,14 @@
|
||||
require 'test_helper'
|
||||
|
||||
class Panel::Location::BackEnd::LocationsControllerTest < ActionController::TestCase
|
||||
test "should get index" do
|
||||
get :index
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should get edit" do
|
||||
get :edit
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
end
|
||||
Vendored
+14
@@ -0,0 +1,14 @@
|
||||
require 'test_helper'
|
||||
|
||||
class Panel::Location::BackEnd::LocationsControllerTest < ActionController::TestCase
|
||||
test "should get index" do
|
||||
get :index
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should get edit" do
|
||||
get :edit
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
end
|
||||
@@ -0,0 +1,10 @@
|
||||
require 'test_helper'
|
||||
|
||||
class NavigationTest < ActionDispatch::IntegrationTest
|
||||
fixtures :all
|
||||
|
||||
# test "the truth" do
|
||||
# assert true
|
||||
# end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
require 'test_helper'
|
||||
|
||||
class LocationTest < ActiveSupport::TestCase
|
||||
test "truth" do
|
||||
assert_kind_of Module, Location
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,10 @@
|
||||
# Configure Rails Environment
|
||||
ENV["RAILS_ENV"] = "test"
|
||||
|
||||
require File.expand_path("../dummy/config/environment.rb", __FILE__)
|
||||
require "rails/test_help"
|
||||
|
||||
Rails.backtrace_cleaner.remove_silencers!
|
||||
|
||||
# Load support files
|
||||
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
||||
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
require 'test_helper'
|
||||
|
||||
class Panel::Location::BackEnd::LocationsHelperTest < ActionView::TestCase
|
||||
end
|
||||
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
require 'test_helper'
|
||||
|
||||
class Panel::Location::BackEnd::LocationsHelperTest < ActionView::TestCase
|
||||
end
|
||||
Loaded 100 of 113 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user