Compare commits
37
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7a3c061ed3 | ||
|
|
01a0384128 | ||
|
|
6dbfb239c3 | ||
|
|
276d085a2c | ||
|
|
ee416dec58 | ||
|
|
47301de00d | ||
|
|
02bb6ad5ee | ||
|
|
be47fd78a3 | ||
|
|
078876788a | ||
|
|
bc38e24259 | ||
|
|
ab29dd4335 | ||
|
|
28a8880862 | ||
|
|
749bb8d184 | ||
|
|
52e393a2df | ||
|
|
481f04c07b | ||
|
|
6ed89ea9af | ||
|
|
9625aa0f8b | ||
|
|
f94e675ca0 | ||
|
|
000fcdd48f | ||
|
|
ca6b70660d | ||
|
|
31ee2d2be2 | ||
|
|
1086037b2b | ||
|
|
6dcebe0d31 | ||
|
|
667b7f2bd5 | ||
|
|
8a94eeeee8 | ||
|
|
0eb4bf5b37 | ||
|
|
6e2725d279 | ||
|
|
3f87914e46 | ||
|
|
b51e10eb9d | ||
|
|
a7e1819e69 | ||
|
|
14b19d814f | ||
|
|
f1ec3406f8 | ||
|
|
dcca1db6bd | ||
|
|
5a51063bed | ||
|
|
cab4614a8f | ||
|
|
2fdfdeafa2 | ||
|
|
5d8b65d625 |
No files matched your search
@@ -1,8 +1,6 @@
|
||||
source 'http://rubygems.org'
|
||||
gem 'rails', "~> 3.2.9"
|
||||
|
||||
gem 'savon', '~> 2.2.0'
|
||||
|
||||
gem "brakeman"
|
||||
gem 'mime-types'
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ class FrontController < ApplicationController
|
||||
res << " active" if (current_page.id.eql?(page.id) || current_page.descendant_of?(page))
|
||||
res << "'>"
|
||||
root = "/"
|
||||
res << "<a href='#{(page.class.to_s.eql?('Page') ? root + page.path : page.url)}' target=#{(page.class.to_s.eql?('Page') ? '_self' : '_blank')} ><span>#{page.title}</span></a>"
|
||||
res << "<a href='#{(page.class.to_s.eql?('Page') ? root + page.path : page.url)}'><span>#{page.title}</span></a>"
|
||||
if page.visible_children.size > 0 && current < menu.levels
|
||||
res << "<span class='dot'></span>"
|
||||
res << menu_level(page, current_page, current + 1, menu)
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
# encoding: utf-8
|
||||
|
||||
class SessionsController < Devise::SessionsController
|
||||
prepend_before_filter :require_no_authentication, :only => [ :new, :create ]
|
||||
|
||||
require 'savon'
|
||||
|
||||
def create
|
||||
|
||||
@sys_id = params["sys_id"]
|
||||
|
||||
client = Savon.client(wsdl: 'http://sso.ntue.edu.tw/soap/soapserver.php?wsdl')
|
||||
|
||||
client.operations
|
||||
|
||||
response = client.call(:chkidno, message: { sys_id: @sys_id })
|
||||
|
||||
@id = response.body[:chkidno_response][:return][:id]
|
||||
|
||||
login_uid = @id
|
||||
|
||||
resource = User.first(conditions:{user_id: login_uid})
|
||||
|
||||
if !resource.blank?
|
||||
resource_name = resource.class.to_s.downcase
|
||||
sign_in(resource_name, resource)
|
||||
redirect_to after_sign_in_path_for(resource)
|
||||
else
|
||||
flash[:error] = "很抱歉,您無此權限或帳號登入本站,請洽本站管理員<br />Sorry, you don't have the account or authority to login. Please contact the website administrator."
|
||||
redirect_to :root
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
@@ -5,6 +5,6 @@
|
||||
<% end -%>
|
||||
<%end -%>
|
||||
<div class="paginationFixed" id="user_pagination">
|
||||
<%= paginate @users, :params => {:inner => false}%>
|
||||
<%= paginate @users, :params => {:inner => false} rescue nil %>
|
||||
</div>
|
||||
</div>
|
||||
@@ -3,9 +3,5 @@
|
||||
<% end %>
|
||||
|
||||
<ul>
|
||||
<li>總機電話:<a href="tel:+886229393091">02-29393091</a></li>
|
||||
<li>傳真:02-29379611</li>
|
||||
<li>緊急重大事件通聯窗口:校內分機 66119、66110</li>
|
||||
<li>總值日室:<a href="tel:+88229387132">02-29387132</a></li>
|
||||
<li>駐警衛室:<a href="tel:+88229387129">02-29387129</a></li>
|
||||
<li>電話:<a href="tel:+88652721001">05-2721001</a></li>
|
||||
</ul>
|
||||
@@ -5,6 +5,6 @@
|
||||
<div id='map_canvas'></div>
|
||||
|
||||
<script type='text/javascript'>
|
||||
var $map_center = "24.987449, 121.576117"
|
||||
var $map_center = "23.568993,120.493893"
|
||||
var $map_zoom = 17
|
||||
</script>
|
||||
@@ -34,15 +34,15 @@ Orbit::Application.configure do
|
||||
# :sender_address => %{"notifier" <redmine@rulingcom.com>},
|
||||
# :exception_recipients => %w{chris@rulingcom.com}
|
||||
|
||||
# config.action_mailer.delivery_method = :smtp
|
||||
# config.action_mailer.smtp_settings = {
|
||||
# :enable_starttls_auto => true,
|
||||
# :address => "smtp.gmail.com",
|
||||
# :port => '587',
|
||||
# :domain => "smtp.gmail.com",
|
||||
# :authentication => "plain",
|
||||
# :user_name => "redmine@rulingcom.com",
|
||||
# :password => "rulingredmine" }
|
||||
config.action_mailer.delivery_method = :smtp
|
||||
config.action_mailer.smtp_settings = {
|
||||
:enable_starttls_auto => true,
|
||||
:address => "smtp.gmail.com",
|
||||
:port => '587',
|
||||
:domain => "smtp.gmail.com",
|
||||
:authentication => "plain",
|
||||
:user_name => "redmine@rulingcom.com",
|
||||
:password => "rulingredmine" }
|
||||
|
||||
end
|
||||
|
||||
@@ -7,11 +7,6 @@ Orbit::Application.routes.draw do
|
||||
match "/users_passwd" => "desktop/registrations#update", :as => :users_passwd, :via => :put
|
||||
end
|
||||
|
||||
devise_scope :user do
|
||||
get 'soap_login' => 'sessions#create'
|
||||
end
|
||||
|
||||
|
||||
mount Resque::Server, :at => "/admin/resque"
|
||||
mount Rack::GridFS::Endpoint.new(:db => Mongoid.database,:lookup=>:path), :at => "gridfs"
|
||||
|
||||
|
||||
+15
-1
@@ -59,12 +59,26 @@
|
||||
<!-- *** This fieldType is used by Sunspot! *** -->
|
||||
<fieldType name="rand" class="solr.RandomSortField" omitNorms="true"/>
|
||||
<!-- *** This fieldType is used by Sunspot! *** -->
|
||||
<fieldType name="text" class="solr.TextField" omitNorms="false">
|
||||
<!-- <fieldType name="text" class="solr.TextField" omitNorms="false">
|
||||
<analyzer>
|
||||
<tokenizer class="solr.CJKTokenizerFactory"/>
|
||||
<filter class="solr.StandardFilterFactory"/>
|
||||
<filter class="solr.LowerCaseFilterFactory"/>
|
||||
</analyzer>
|
||||
</fieldType> -->
|
||||
<fieldType name="text" class="solr.TextField" omitNorms="false">
|
||||
<analyzer>
|
||||
<tokenizer class="solr.StandardTokenizerFactory"/>
|
||||
<filter class="solr.StandardFilterFactory"/>
|
||||
<filter class="solr.LowerCaseFilterFactory"/>
|
||||
<filter class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="15"/>
|
||||
</analyzer>
|
||||
|
||||
<analyzer type="query">
|
||||
<tokenizer class="solr.StandardTokenizerFactory"/>
|
||||
<filter class="solr.StandardFilterFactory"/>
|
||||
<filter class="solr.LowerCaseFilterFactory"/>
|
||||
</analyzer>
|
||||
</fieldType>
|
||||
<!-- *** This fieldType is used by Sunspot! *** -->
|
||||
<fieldType name="boolean" class="solr.BoolField" omitNorms="true"/>
|
||||
|
||||
-73
@@ -1,4 +1,3 @@
|
||||
# encoding: utf-8
|
||||
class Panel::Announcement::BackEnd::ApprovalsController < OrbitBackendController
|
||||
before_filter :authenticate_user!
|
||||
before_filter :is_admin?
|
||||
@@ -7,7 +6,6 @@ class Panel::Announcement::BackEnd::ApprovalsController < OrbitBackendControlle
|
||||
|
||||
|
||||
def preview_and_approve
|
||||
email_group_data
|
||||
@bulletin = Bulletin.find params[:bulletin_id]
|
||||
end
|
||||
|
||||
@@ -17,14 +15,6 @@ class Panel::Announcement::BackEnd::ApprovalsController < OrbitBackendControlle
|
||||
@bulletin.proc_check(params[:bulletin][:is_checked],params[:bulletin][:not_checked_reason])
|
||||
@bulletin.de_pending
|
||||
if @bulletin.save
|
||||
|
||||
if @bulletin.email_sent == true && @bulletin.is_checked == true && !@bulletin.is_rejected
|
||||
send_email_data(@bulletin)
|
||||
|
||||
@bulletin.email_sent = false
|
||||
@bulletin.save
|
||||
end
|
||||
|
||||
notice = t('announcement.approve_bulletin_success')
|
||||
else
|
||||
notice = t('announcement.approve_bulletin_fail')
|
||||
@@ -71,69 +61,6 @@ class Panel::Announcement::BackEnd::ApprovalsController < OrbitBackendControlle
|
||||
object_auth.privilege_users = privilege_users
|
||||
object_auth
|
||||
end
|
||||
|
||||
def send_email_data(bulletin)
|
||||
|
||||
@site = Site.first
|
||||
@user = User.find(bulletin.create_user_id)
|
||||
@host = request.host_with_port
|
||||
|
||||
email_group_data
|
||||
|
||||
@group_mail = Array.new
|
||||
|
||||
bulletin.email_group.each do |egroup|
|
||||
|
||||
if @email_group_data.include?(egroup) and (egroup == '0' or egroup == '1' or egroup == '2' or egroup == '3')
|
||||
|
||||
@group_mail << @email_group_data[egroup]["email"]
|
||||
|
||||
elsif @email_group_data.include?(egroup) and egroup == '4'
|
||||
|
||||
@group_mail << bulletin.other_mailaddress
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
if !@group_mail.join.blank?
|
||||
|
||||
@mail_content = {
|
||||
"host" => @host,
|
||||
"site_title" => @site.title,
|
||||
"title" => bulletin.title,
|
||||
"template" => 'announcement_mailer/cron_mail',
|
||||
"url" => "http://#{@host}#{panel_announcement_front_end_bulletin_path(bulletin, :category_id => bulletin.bulletin_category.id)}"
|
||||
}
|
||||
|
||||
@mail_cron = {
|
||||
:mail_from_app => 'announcement',
|
||||
:mail_from => @user.email,
|
||||
:mail_reply_to => @user.email,
|
||||
:mail_subject => "#{t("announcement.mail_subject",:site_title => @site.title)}:#{bulletin.title}",
|
||||
:mail_to => @group_mail.join(','),
|
||||
:mail_content => @mail_content ,
|
||||
# :mail_sentdate => bulletin.email_sentdate,
|
||||
:mail_sentdate => DateTime.now,
|
||||
:create_user_id => bulletin.create_user_id,
|
||||
:update_user_id => bulletin.create_user_id
|
||||
}
|
||||
|
||||
@mail_cron = MailCron.new(@mail_cron)
|
||||
|
||||
@mail_cron.save
|
||||
|
||||
MailCron.send_mail_now(@mail_cron.id)
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def email_group_data
|
||||
|
||||
@email_group_data = Bulletin.email_group_data
|
||||
|
||||
end
|
||||
|
||||
# def get_categorys(id = nil)
|
||||
# @bulletin_categorys = []
|
||||
|
||||
+3
-22
@@ -9,12 +9,12 @@ class Panel::Announcement::BackEnd::BulletinCategorysController < OrbitBackendCo
|
||||
# @module_app = ModuleApp.where(:title=>'Announcement').first
|
||||
# end
|
||||
# =======
|
||||
before_filter :for_app_manager,:except => [:index,:get_categorys_json,:get_bulletins_json, :get_bulletin_categories]
|
||||
before_filter :for_app_manager,:except => [:index,:get_categorys_json,:get_bulletins_json]
|
||||
|
||||
|
||||
before_filter :force_order_for_visitor,:only=>[:index,:get_categorys_json,:get_bulletins_json]
|
||||
before_filter :force_order_for_user,:except => [:index,:get_categorys_json,:get_bulletins_json, :get_bulletin_categories]
|
||||
before_filter :for_app_sub_manager,:except => [:index,:get_categorys_json,:get_bulletins_json, :get_bulletin_categories]
|
||||
before_filter :force_order_for_user,:except => [:index,:get_categorys_json,:get_bulletins_json]
|
||||
before_filter :for_app_sub_manager,:except => [:index,:get_categorys_json,:get_bulletins_json]
|
||||
|
||||
def index
|
||||
@bulletin_categorys = get_categories_for_index("BulletinCategory")
|
||||
@@ -53,25 +53,6 @@ class Panel::Announcement::BackEnd::BulletinCategorysController < OrbitBackendCo
|
||||
render :json => JSON.pretty_generate(data)
|
||||
end
|
||||
|
||||
def get_bulletin_categories
|
||||
I18n.locale = params[:locale] || :zh_tw
|
||||
@categories = BulletinCategory.all.order_by(:title, :asc)
|
||||
respond_to do |format|
|
||||
format.json {
|
||||
custom_categories = @categories.inject([]) do |data, category|
|
||||
data << {
|
||||
title: category.title,
|
||||
link_html: "#{request.protocol}#{request.host_with_port}#{panel_announcement_front_end_bulletins_path(category_id: category.id, locale: I18n.locale)}",
|
||||
link_json: "#{request.protocol}#{request.host_with_port}#{get_bulletins_panel_announcement_back_end_bulletins_path(category_id: category.id, locale: I18n.locale, format: 'json')}",
|
||||
link_rss: "#{request.protocol}#{request.host_with_port}#{get_bulletins_panel_announcement_back_end_bulletins_path(category_id: category.id, locale: I18n.locale, format: 'rss')}"
|
||||
}
|
||||
end
|
||||
render json: JSON.pretty_generate(custom_categories)
|
||||
}
|
||||
format.rss {}
|
||||
end
|
||||
end
|
||||
|
||||
def get_bulletins_json
|
||||
bulletin = BulletinCategory.find(params[:bulletin_category_id]).bulletins
|
||||
p bulletin
|
||||
|
||||
+2
-129
@@ -1,4 +1,3 @@
|
||||
# encoding: utf-8
|
||||
class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
|
||||
include OrbitControllerLib::DivisionForDisable
|
||||
|
||||
@@ -7,8 +6,8 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
|
||||
# before_filter :for_admin_only,:only => [:]
|
||||
# before_filter :for_app_manager,:only => [:index,:show,]
|
||||
before_filter :force_order_for_visitor,:only=>[:index,:show,:get_sorted_and_filtered_bulletins]
|
||||
before_filter :force_order_for_user,:except => [:index,:show,:get_sorted_and_filtered_bulletins, :get_bulletins]
|
||||
before_filter :for_app_sub_manager,:except => [:index,:show,:get_sorted_and_filtered_bulletins, :get_bulletins]
|
||||
before_filter :force_order_for_user,:except => [:index,:show,:get_sorted_and_filtered_bulletins]
|
||||
before_filter :for_app_sub_manager,:except => [:index,:show,:get_sorted_and_filtered_bulletins]
|
||||
|
||||
before_filter :only => [ :new,:create,:edit,:update,:create] do |controller|
|
||||
controller.get_categorys('BulletinCategory')
|
||||
@@ -78,9 +77,6 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
|
||||
# GET /bulletins/new
|
||||
# GET /bulletins/new.xml
|
||||
def new
|
||||
|
||||
email_group_data
|
||||
|
||||
if(session[:in_validate_object].blank?)
|
||||
@bulletin = Bulletin.new(:postdate => DateTime.now)
|
||||
else
|
||||
@@ -98,9 +94,6 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
|
||||
|
||||
# GET /bulletins/1/edit
|
||||
def edit
|
||||
|
||||
email_group_data
|
||||
|
||||
@bulletin = Bulletin.find(params[:id])
|
||||
if !current_user.admin? && (@bulletin.is_rejected? || @bulletin.is_checked?)
|
||||
redirect_to :action => :index
|
||||
@@ -153,13 +146,6 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
|
||||
respond_to do |format|
|
||||
if @bulletin.save
|
||||
|
||||
# if @bulletin.email_sent == true && @bulletin.is_checked == true && !@bulletin.is_rejected
|
||||
# send_email_data(@bulletin)
|
||||
|
||||
# @bulletin.email_sent = false
|
||||
# @bulletin.save
|
||||
# end
|
||||
|
||||
format.html { redirect_to(panel_announcement_back_end_bulletins_url, :notice => t('announcement.create_bulletin_success')) }
|
||||
format.xml { render :xml => @bulletin, :status => :created, :location => @bulletin }
|
||||
# format.js
|
||||
@@ -240,14 +226,6 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
|
||||
@bulletin.is_rejected = false
|
||||
@bulletin.de_pending!
|
||||
end
|
||||
|
||||
# if @bulletin.email_sent == true && @bulletin.is_checked == true && !@bulletin.is_rejected
|
||||
# send_email_data(@bulletin)
|
||||
|
||||
# @bulletin.email_sent = false
|
||||
# @bulletin.save
|
||||
# end
|
||||
|
||||
# if (params[:bulletin][:is_checked] == "false")
|
||||
# @bulletin.is_rejected = true
|
||||
# @bulletin.save!
|
||||
@@ -312,114 +290,9 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
|
||||
redirect_to panel_announcement_back_end_bulletins_url(:filter => params[:filter], :direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
|
||||
end
|
||||
|
||||
# ================================================================
|
||||
# language:
|
||||
# - default: zh_tw
|
||||
# - specify language: locale=[string]
|
||||
# category:
|
||||
# - default: no category
|
||||
# - specify: category_id=[ID]
|
||||
# pagination:
|
||||
# - default: 10
|
||||
# - specify the number of results: per=[number]
|
||||
# - specify the page: page=[number]
|
||||
# ================================================================
|
||||
def get_bulletins
|
||||
I18n.locale = params[:locale] || :zh_tw
|
||||
bulletins = params[:category_id] ? Bulletin.where(bulletin_category_id: params[:category_id]).order_by(:created_at, :desc) : Bulletin.all.order_by(:created_at, :desc)
|
||||
bulletins = bulletins.reject{|b| b.title_translations[I18n.locale.to_s].blank?}
|
||||
@bulletins = Kaminari.paginate_array(bulletins).page(params[:page]).per(params[:per] || 10)
|
||||
|
||||
respond_to do |format|
|
||||
format.json {
|
||||
custom_bulletins = @bulletins.inject([]) do |data, bulletin|
|
||||
deadline = bulletin.deadline.nil? ? t(:no_deadline) : display_date_time(bulletin.deadline)
|
||||
image_url = "#{'/' unless bulletin.image.url.start_with?('/')}#{bulletin.image.url}"
|
||||
data << {
|
||||
title: bulletin.title,
|
||||
link: "#{request.protocol}#{request.host_with_port}#{panel_announcement_front_end_bulletin_path(bulletin, category_id: bulletin.bulletin_category.id, locale: I18n.locale)}",
|
||||
image: "#{request.protocol}#{request.host_with_port}#{image_url}",
|
||||
category: bulletin.bulletin_category.title,
|
||||
description: bulletin.subtitle,
|
||||
postdate: display_date_time(bulletin.postdate),
|
||||
deadline: deadline,
|
||||
tag: bulletin.sorted_tags.map{|tag| tag.name}
|
||||
}
|
||||
end
|
||||
render json: JSON.pretty_generate(custom_bulletins)
|
||||
}
|
||||
format.rss {
|
||||
@category = BulletinCategory.find(params[:category_id]) rescue nil
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
protected
|
||||
|
||||
def send_email_data(bulletin)
|
||||
|
||||
@site = Site.first
|
||||
@user = User.find(bulletin.create_user_id)
|
||||
@host = request.host_with_port
|
||||
|
||||
email_group_data
|
||||
|
||||
@group_mail = Array.new
|
||||
|
||||
bulletin.email_group.each do |egroup|
|
||||
|
||||
if @email_group_data.include?(egroup) and (egroup == '0' or egroup == '1' or egroup == '2' or egroup == '3')
|
||||
|
||||
@group_mail << @email_group_data[egroup]["email"]
|
||||
|
||||
elsif @email_group_data.include?(egroup) and egroup == '4'
|
||||
|
||||
@group_mail << bulletin.other_mailaddress
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
if !@group_mail.join.blank?
|
||||
|
||||
@mail_content = {
|
||||
"host" => @host,
|
||||
"site_title" => @site.title,
|
||||
"title" => bulletin.title,
|
||||
"template" => 'announcement_mailer/cron_mail',
|
||||
"url" => "http://#{@host}#{panel_announcement_front_end_bulletin_path(bulletin, :category_id => bulletin.bulletin_category.id)}"
|
||||
}
|
||||
|
||||
@mail_cron = {
|
||||
:mail_from_app => 'announcement',
|
||||
:mail_from => @user.email,
|
||||
:mail_reply_to => @user.email,
|
||||
:mail_subject => "#{t("announcement.mail_subject",:site_title => @site.title)}:#{bulletin.title}",
|
||||
:mail_to => @group_mail.join(','),
|
||||
:mail_content => @mail_content ,
|
||||
# :mail_sentdate => bulletin.email_sentdate,
|
||||
:mail_sentdate => DateTime.now,
|
||||
:create_user_id => bulletin.create_user_id,
|
||||
:update_user_id => bulletin.create_user_id
|
||||
}
|
||||
|
||||
@mail_cron = MailCron.new(@mail_cron)
|
||||
|
||||
@mail_cron.save
|
||||
|
||||
MailCron.send_mail_now(@mail_cron.id)
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def email_group_data
|
||||
|
||||
@email_group_data = Bulletin.email_group_data
|
||||
|
||||
end
|
||||
|
||||
def delete_out_invalid_date_from_params
|
||||
if((params[:bulletin]["deadline(1i)"] && params[:bulletin]["deadline(1i)"].blank?) or (params[:bulletin]["deadline(2i)"] && params[:bulletin]["deadline(2i)"].blank?) or (params[:bulletin]["deadline(3i)"] && params[:bulletin]["deadline(3i)"].blank?))
|
||||
params[:bulletin].delete("deadline(1i)")
|
||||
|
||||
@@ -40,12 +40,6 @@ class Bulletin
|
||||
field :not_checked_reason
|
||||
|
||||
field :public, :type => Boolean, :default => true
|
||||
|
||||
|
||||
field :email_sent, :type => Boolean, :default => false
|
||||
field :email_sentdate , :type => DateTime
|
||||
field :email_group, :type => Array
|
||||
field :other_mailaddress
|
||||
|
||||
scope :can_display, where(is_checked: true, is_rejected: false, is_pending: false)
|
||||
scope :available_for_lang, ->(locale){ where("available_for_#{locale}".to_sym => true) }
|
||||
@@ -89,10 +83,6 @@ class Bulletin
|
||||
def bulletin_category_with_title
|
||||
self.bulletin_category.title
|
||||
end
|
||||
|
||||
def bulletin_create_dept
|
||||
User.get_member_list_attribute_value(self.create_user_id,"staff","Unit").get_value_by_locale(I18n.locale)
|
||||
end
|
||||
|
||||
def share_item
|
||||
Item.first(conditions:{name: 'announcement'})
|
||||
@@ -225,46 +215,8 @@ class Bulletin
|
||||
preview_object
|
||||
end
|
||||
|
||||
def get_email_group_data(email_group_data)
|
||||
|
||||
group_mail = Array.new
|
||||
|
||||
self.email_group.each do |egroup|
|
||||
|
||||
if email_group_data.include?(egroup) and (egroup == '0' or egroup == '1' or egroup == '2' or egroup == '3')
|
||||
|
||||
group_mail << "#{email_group_data[egroup]["email"]}(#{email_group_data[egroup]["name"]})"
|
||||
|
||||
elsif email_group_data.include?(egroup) and egroup == '4'
|
||||
|
||||
self.other_mailaddress.split(",").each do |otmail|
|
||||
|
||||
group_mail << "#{otmail}(#{email_group_data[egroup]["name"]})"
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
group_mail.join("<br />").html_safe
|
||||
|
||||
end
|
||||
|
||||
|
||||
protected
|
||||
|
||||
def self.email_group_data
|
||||
|
||||
@email_group_data = {
|
||||
'0'=> {"name"=>I18n.t('announcement.email_group_data_0'), "email"=>"alluser@tea.ntue.edu.tw"},
|
||||
'1'=> {"name"=>I18n.t('announcement.email_group_data_1'), "email"=>"allstu@tea.ntue.edu.tw"},
|
||||
'2'=> {"name"=>I18n.t('announcement.email_group_data_2'), "email"=>"allgrad@tea.ntue.edu.tw"},
|
||||
'3'=> {"name"=>I18n.t('announcement.email_group_data_3'), "email"=>"allad@tea.ntue.edu.tw"},
|
||||
'4'=> {"name"=>I18n.t('announcement.email_group_data_4')}
|
||||
}
|
||||
|
||||
end
|
||||
|
||||
def check_deadline
|
||||
if(!self.deadline.nil? and (self.deadline < self.postdate ))
|
||||
|
||||
-29
@@ -1,29 +0,0 @@
|
||||
<% # encoding: utf-8 %>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
<div style="text-ident:20px">
|
||||
</div>
|
||||
|
||||
<%= t('announcement.mail_hi') %> <br /><br />
|
||||
<%= t('announcement.mail_url_view') %> <br /><br />
|
||||
<a href="<%= @data.mail_content["url"] %>" target="_blank"> <%= @data.mail_content["title"] %> </a> <br /><br />
|
||||
</div>
|
||||
<span style="color:#555">--<br />
|
||||
<%= t('announcement.mail_source') %> :<a href="http://<%= @data.mail_content["host"] %>" target="_blank"> <%= @data.mail_content["site_title"] %> </a><br />
|
||||
<%= t('announcement.mail_time') %> <%= DateTime.now %>
|
||||
</span>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-6
@@ -14,12 +14,6 @@
|
||||
<%# preview_block_ad_images_helper(bulletin).each do |ad_image| -%>
|
||||
<%#= image_tag ad_image.file,:alt => (ad_image.title[locale] || " "),:time_to_next => bulletin.transition_msec,:link_open=> ad_image.link_open, :link_url =>((ad_image.out_link || bulletin.context || " ")) %>
|
||||
<%# end -%>
|
||||
|
||||
<% if !@bulletin.email_group.blank? %>
|
||||
<%= label_tag 'group_mail' %>
|
||||
<%= @bulletin.get_email_group_data(@email_group_data) %>
|
||||
<% end %>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
xml.instruct! :xml, :version => "1.0"
|
||||
xml.rss :version => "2.0" do
|
||||
xml.channel do
|
||||
xml.title t('announcement.announcement') + ' ' + t('announcement.categories')
|
||||
xml.link "#{request.protocol}#{request.host_with_port}#{get_bulletin_categories_panel_announcement_back_end_bulletin_categorys_path(format: 'rss')}"
|
||||
|
||||
@categories.each do |category|
|
||||
xml.item do
|
||||
xml.title category.title
|
||||
xml.pubDate category.created_at.to_s(:rfc822)
|
||||
xml.link "#{request.protocol}#{request.host_with_port}#{get_bulletins_panel_announcement_back_end_bulletins_path(category_id: category.id, locale: I18n.locale, format: 'rss')}"
|
||||
xml.guid "#{request.protocol}#{request.host_with_port}#{panel_announcement_front_end_bulletins_path(category_id: category.id)}"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Vendored
-49
@@ -265,50 +265,6 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="widget" class="widget-box">
|
||||
<div class="widget-action clear">
|
||||
<a class="action"><i title="Added to the file" class="icon-exclamation-sign icon-white tip"></i></a>
|
||||
</div>
|
||||
<h3 class="widget-title"><i class="icons-bell"></i><%= t('announcement.email_eminder')%></h3>
|
||||
<div class="widget-content">
|
||||
<div class="controls">
|
||||
<label class="checkbox inline"><input id="remind-check" type="checkbox" value="1" name="bulletin[email_sent]"><%= t('announcement.activate_email_eminder')%></label>
|
||||
<div id="content-box">
|
||||
<hr />
|
||||
|
||||
<%#= f.datetime_picker :email_sentdate, :picker_type => 'separated', :label => t("announcement.email_sentdate") %>
|
||||
|
||||
<br />
|
||||
|
||||
<%= f.label :email_group ,t("announcement.email_group")%>
|
||||
<div class="form-inline">
|
||||
<ul class="nav nav-pills">
|
||||
<% @email_group_data.collect do |k,v| %>
|
||||
<li class="pull-left">
|
||||
<%= check_box_tag 'bulletin[email_group][]', k, (@bulletin.email_group.nil? ? false : @bulletin.email_group.include?(k)), :id => "field-#{k}" %>
|
||||
<label for="field-<%= k %>"><%= v["name"] %></label>
|
||||
<%= hidden_field_tag 'bulletin[email_group][]', '' %>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<%= f.label :other_mailaddress ,"#{t("announcement.other_mailaddress")}(#{t("announcement.other_mailaddress_note")})"%>
|
||||
<%= f.text_area :other_mailaddress, :class=>"span12", :cols=>"25", :rows=>"10" %>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -344,11 +300,6 @@
|
||||
$(this).parents('table').append(("<%= escape_javascript(add_attribute 'form_bulletin_file', f, :bulletin_files) %>").replace(old_id, new_id));
|
||||
});
|
||||
$('.for_preview').popover({ html : true });
|
||||
|
||||
$('#remind-check').prop('checked') ? '':$('#content-box').addClass('hide')
|
||||
$('#remind-check').on('change', function() {
|
||||
$(this).prop('checked') ? $('#content-box').removeClass('hide'):$('#content-box').addClass('hide')
|
||||
})
|
||||
});
|
||||
</script>
|
||||
<% end %>
|
||||
-21
@@ -1,21 +0,0 @@
|
||||
xml.instruct! :xml, :version => "1.0"
|
||||
xml.rss :version => "2.0" do
|
||||
xml.channel do
|
||||
if @category
|
||||
xml.title @category.title
|
||||
else
|
||||
xml.title t('announcement.announcement')
|
||||
end
|
||||
xml.link "#{request.protocol}#{request.host_with_port}#{get_bulletins_panel_announcement_back_end_bulletins_path(bulletin_category_id: @category.try(:id), format: 'rss')}"
|
||||
|
||||
@bulletins.each do |bulletin|
|
||||
xml.item do
|
||||
xml.title bulletin.title
|
||||
xml.pubDate bulletin.postdate.to_s(:rfc822)
|
||||
xml.description bulletin.subtitle
|
||||
xml.link "#{request.protocol}#{request.host_with_port}#{panel_announcement_front_end_bulletin_path(bulletin, category_id: bulletin.bulletin_category.id, locale: I18n.locale)}"
|
||||
xml.guid "#{request.protocol}#{request.host_with_port}#{panel_announcement_front_end_bulletin_path(bulletin)}"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Vendored
+2
-2
@@ -4,8 +4,8 @@
|
||||
<div class="info1">
|
||||
<span class="pull-right"><%= dislpay_view_count(@bulletin) %></span>
|
||||
<span class="date"><%= display_date_time(@bulletin.postdate) %></span>
|
||||
<% unit = User.get_member_list_attribute_value(@bulletin.create_user_id,"staff","Unit").get_value_by_locale(I18n.locale) rescue nil %>
|
||||
<span><%= t('announcement.default_widget.bulletin_create_dept') + ": " + unit unless unit.blank? %></span>
|
||||
<% unit = @bulletin.cache_dept[I18n.locale.to_s] rescue nil %>
|
||||
<span><%= link_to unit,panel_announcement_front_end_index_bulletins_by_unit_path(:name=>unit) unless unit.blank? %></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="news_image">
|
||||
|
||||
+1
-19
@@ -17,7 +17,6 @@ en:
|
||||
postdate: Post Date
|
||||
title: Title
|
||||
subtitle: SubTitle
|
||||
bulletin_create_dept: Unit
|
||||
editing_announcement: Edit Announcement
|
||||
editing_announcement_category: Edit Category
|
||||
error:
|
||||
@@ -38,21 +37,4 @@ en:
|
||||
widget:
|
||||
bulletins_and_web_links: Differential Nav.
|
||||
index: Index
|
||||
search: Search
|
||||
email_eminder: Email Reminder
|
||||
activate_email_eminder: Activate Email Reminder
|
||||
email_sentdate: Email Time
|
||||
email_group: Email Group
|
||||
email_group_data_0: All Faculty
|
||||
email_group_data_1: Undergraduates
|
||||
email_group_data_2: Postgraduates
|
||||
email_group_data_3: Continuing Ed. Postgraduates
|
||||
email_group_data_4: Other
|
||||
mail_subject: this is an announcement reminder from【%{site_title}】
|
||||
other_mailaddress: Other Email
|
||||
other_mailaddress_note: Divide different email accounts with ","
|
||||
mail_hi: Hi
|
||||
mail_url_view: This email is the reminder of an announcement, please click the link for the details
|
||||
mail_source: Source
|
||||
mail_time: Time
|
||||
|
||||
search: Search
|
||||
@@ -17,7 +17,6 @@ zh_tw:
|
||||
postdate: 張貼日期
|
||||
title: 標題
|
||||
subtitle: 副標題
|
||||
bulletin_create_dept: 單位
|
||||
editing_announcement: 編輯類別
|
||||
editing_announcement_category: 編輯類別
|
||||
error:
|
||||
@@ -38,22 +37,4 @@ zh_tw:
|
||||
widget:
|
||||
bulletins_and_web_links: 分眾頁籤
|
||||
index: 索引
|
||||
search: 搜尋
|
||||
email_eminder: 寄送提醒
|
||||
activate_email_eminder: 開啟寄送提醒
|
||||
email_sentdate: 寄送時間
|
||||
email_group: 寄送群組
|
||||
other_mailaddress: 其他Mail
|
||||
other_mailaddress_note: 輸入多組mail時,請用","逗號隔開
|
||||
email_group_data_0: 全校教職員
|
||||
email_group_data_1: 大學部學生
|
||||
email_group_data_2: 日間部研究生
|
||||
email_group_data_3: 進修部研究生
|
||||
email_group_data_4: 其他
|
||||
mail_subject: 來自【%{site_title}】的公告事件提醒
|
||||
mail_hi: 您好
|
||||
mail_url_view: 此封信件為公告事件提醒,請點選以下連結詳細觀看
|
||||
mail_source: 來源
|
||||
mail_time: 時間
|
||||
|
||||
|
||||
search: 搜尋
|
||||
@@ -17,7 +17,6 @@ Rails.application.routes.draw do
|
||||
get 'load_quick_edit'
|
||||
end
|
||||
collection do
|
||||
get "get_bulletins"
|
||||
post "preview"
|
||||
put "preview"
|
||||
get 'delete'
|
||||
@@ -28,7 +27,6 @@ Rails.application.routes.draw do
|
||||
|
||||
resources :bulletin_categorys do
|
||||
collection do
|
||||
get "get_bulletin_categories"
|
||||
get 'get_categorys_json'
|
||||
end
|
||||
# if want to use json
|
||||
|
||||
@@ -37,7 +37,6 @@ module Announcement
|
||||
link_field :title,{:method => 'panel_announcement_front_end_bulletin_path',:args=>:self,:preview=>true}
|
||||
link_field :bulletin_category_with_title,{:method => 'panel_announcement_front_end_bulletins_path',:args=>{:category_id => [:bulletin_category,:id]}}
|
||||
field :subtitle
|
||||
field :bulletin_create_dept
|
||||
link_to_more 'panel_announcement_front_end_bulletins_path',:title_i18n=> 'more_plus'
|
||||
end
|
||||
|
||||
|
||||
+1
-2
@@ -3,5 +3,4 @@ log/*.log
|
||||
pkg/
|
||||
test/dummy/db/*.sqlite3
|
||||
test/dummy/log/*.log
|
||||
test/dummy/tmp/
|
||||
test/dummy/.sass-cache
|
||||
test/dummy/tmp/
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
source "http://rubygems.org"
|
||||
|
||||
# Declare your gem's dependencies in er_email.gemspec.
|
||||
# Declare your gem's dependencies in archive.gemspec.
|
||||
# Bundler will treat runtime dependencies like base dependencies, and
|
||||
# development dependencies will be added by default to the :development group.
|
||||
gemspec
|
||||
@@ -14,4 +14,4 @@ gem "jquery-rails"
|
||||
# your gem to rubygems.org.
|
||||
|
||||
# To use debugger
|
||||
# gem 'debugger'
|
||||
# gem 'ruby-debug19', :require => 'ruby-debug'
|
||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
Copyright 2013 YOURNAME
|
||||
Copyright 2012 YOURNAME
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
Vendored
+1
-1
@@ -1,3 +1,3 @@
|
||||
= ErEmail
|
||||
= Archive
|
||||
|
||||
This project rocks and uses MIT-LICENSE.
|
||||
+1
-2
@@ -14,7 +14,7 @@ end
|
||||
|
||||
RDoc::Task.new(:rdoc) do |rdoc|
|
||||
rdoc.rdoc_dir = 'rdoc'
|
||||
rdoc.title = 'ErEmail'
|
||||
rdoc.title = 'Archive'
|
||||
rdoc.options << '--line-numbers'
|
||||
rdoc.rdoc_files.include('README.rdoc')
|
||||
rdoc.rdoc_files.include('lib/**/*.rb')
|
||||
@@ -24,7 +24,6 @@ APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
|
||||
load 'rails/tasks/engine.rake'
|
||||
|
||||
|
||||
|
||||
Bundler::GemHelper.install_tasks
|
||||
|
||||
require 'rake/testtask'
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+144
@@ -0,0 +1,144 @@
|
||||
class Panel::Dictionary::BackEnd::DictionaryVocabCategorysController < OrbitBackendController
|
||||
include OrbitControllerLib::DivisionForDisable
|
||||
|
||||
before_filter :for_app_manager,:except => [:index,:get_categorys_json,:get_dictionary_vocabs_json]
|
||||
|
||||
before_filter :force_order_for_visitor,:only=>[:index,:get_categorys_json,:get_dictionary_vocabs_json]
|
||||
before_filter :force_order_for_user,:except => [:index,:get_categorys_json,:get_dictionary_vocabs_json]
|
||||
before_filter :for_app_sub_manager,:except => [:index,:get_categorys_json,:get_dictionary_vocabs_json]
|
||||
|
||||
def index
|
||||
@dictionary_vocab_categorys = get_categories_for_index("DictionaryVocabCategory")
|
||||
@dictionary_vocab_category = DictionaryVocabCategory.new(:display => 'List')
|
||||
|
||||
@url = panel_dictionary_back_end_dictionary_vocab_categorys_path
|
||||
|
||||
respond_to do |format|
|
||||
format.html # index.html.erb
|
||||
format.js
|
||||
end
|
||||
end
|
||||
|
||||
def show
|
||||
@dictionary_vocab_category = DictionaryVocabCategory.find(params[:id])
|
||||
|
||||
respond_to do |format|
|
||||
format.html # show.html.erb
|
||||
format.js
|
||||
end
|
||||
end
|
||||
|
||||
# GET /dictionary_vocabs/new
|
||||
# GET /dictionary_vocabs/new.xml
|
||||
def new
|
||||
@dictionary_vocab_category = DictionaryVocabCategory.new(:display => 'List')
|
||||
|
||||
respond_to do |format|
|
||||
format.html # new.html.erb
|
||||
format.js
|
||||
end
|
||||
end
|
||||
|
||||
# GET /dictionary_vocabs/1/edit
|
||||
def edit
|
||||
@dictionary_vocab_category = DictionaryVocabCategory.find(params[:id])
|
||||
|
||||
@url = panel_dictionary_back_end_dictionary_vocab_category_path(@dictionary_vocab_category)
|
||||
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.js
|
||||
end
|
||||
end
|
||||
|
||||
# POST /dictionary_vocabs
|
||||
# POST /dictionary_vocabs.xml
|
||||
def create
|
||||
@dictionary_vocab_category = DictionaryVocabCategory.new(params[:dictionary_vocab_category])
|
||||
|
||||
respond_to do |format|
|
||||
if @dictionary_vocab_category.save
|
||||
format.html { redirect_to(panel_dictionary_back_end_dictionary_vocab_categorys_url, :notice => t('dictionary_vocab_category.create_dictionary_vocab_category_success')) }
|
||||
format.js
|
||||
else
|
||||
format.html { render :action => "new" }
|
||||
format.js { render action: "new" }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# PUT /dictionary_vocabs/1
|
||||
# PUT /dictionary_vocabs/1.xml
|
||||
def update
|
||||
@dictionary_vocab_category = DictionaryVocabCategory.find(params[:id])
|
||||
|
||||
@url = panel_dictionary_back_end_dictionary_vocab_category_path(@dictionary_vocab_category)
|
||||
|
||||
respond_to do |format|
|
||||
if @dictionary_vocab_category.update_attributes(params[:dictionary_vocab_category])
|
||||
format.html { redirect_to(panel_dictionary_back_end_dictionary_vocab_categorys_url, :notice => t('dictionary_vocab_category.update_dictionary_vocab_category_success')) }
|
||||
# format.xml { head :ok }
|
||||
format.js
|
||||
else
|
||||
format.html { render :action => "edit" }
|
||||
format.js { render :action => "edit" }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# DELETE /dictionary_vocabs/1
|
||||
# DELETE /dictionary_vocabs/1.xml
|
||||
def destroy
|
||||
@dictionary_vocab_category = DictionaryVocabCategory.find(params[:id])
|
||||
@dictionary_vocab_category.disable = @dictionary_vocab_category.disable ? false : true
|
||||
|
||||
if @dictionary_vocab_category.save!
|
||||
respond_to do |format|
|
||||
flash[:notice] = t("update.success_")
|
||||
# flash[:error] += @dictionary_vocab_category.disable ? t(:enable) : t(disable)
|
||||
format.html { redirect_to(panel_archive_back_end_dictionary_vocab_categorys_url) }
|
||||
# format.xml { head :ok }
|
||||
format.js
|
||||
end
|
||||
else
|
||||
flash[:error] = t("update.fail")
|
||||
format.html { render :action => "index" }
|
||||
end
|
||||
end
|
||||
|
||||
def get_categorys_json
|
||||
categorys = DictionaryVocabCategory.all
|
||||
data = Array.new
|
||||
|
||||
categorys.each do |c|
|
||||
data << {
|
||||
category: c.title,
|
||||
link: "#{url_for( :action => "index",
|
||||
:controller => "panel/dictionary/front_end/dictionary_vocabs",
|
||||
:format => :rss,
|
||||
:only_path => false,
|
||||
:inner=>true,
|
||||
:category_id => c )}"
|
||||
}
|
||||
end
|
||||
|
||||
render :json => JSON.pretty_generate(data)
|
||||
end
|
||||
|
||||
def get_dictionary_vocabs_json
|
||||
dictionary_vocab = DictionaryVocabCategory.find(params[:dictionary_vocab_category_id]).dictionary_vocabs
|
||||
p dictionary_vocab
|
||||
data = Array.new
|
||||
|
||||
dictionary_vocab.each do |b|
|
||||
|
||||
data << {
|
||||
title: b.title,
|
||||
link: "http://#{request.host_with_port}#{panel_dictionary_front_end_dictionary_vocab_path(b, :category_id => b.dictionary_vocab_category.id)}",
|
||||
tag: b.sorted_tags.to_a,
|
||||
}
|
||||
end
|
||||
|
||||
render :json => JSON.pretty_generate(data)
|
||||
end
|
||||
end
|
||||
+72
@@ -0,0 +1,72 @@
|
||||
class Panel::Dictionary::BackEnd::DictionaryVocabsController < OrbitBackendController
|
||||
# before_filter :for_app_manager,:except => [:index,:show]
|
||||
include OrbitControllerLib::DivisionForDisable
|
||||
|
||||
before_filter :force_order_for_visitor,:only=>[:index]
|
||||
before_filter :force_order_for_user,:except => [:index]
|
||||
|
||||
before_filter :for_app_sub_manager,:except => [:index]
|
||||
before_filter :only => [ :new,:edit,:update,:create] do |controller|
|
||||
controller.get_categorys('DictionaryVocabCategory')
|
||||
end
|
||||
|
||||
def index
|
||||
@vocabs = DictionaryVocab.all
|
||||
end
|
||||
|
||||
def show
|
||||
@vocab = DictionaryVocab.find(params[:id])
|
||||
# @comment = @market_item.comments.build
|
||||
respond_to do |format|
|
||||
format.html # show.html.erb
|
||||
format.xml { render :xml => @vocab }
|
||||
end
|
||||
end
|
||||
|
||||
def new
|
||||
@vocab = DictionaryVocab.new
|
||||
@categories = get_categories_for_index("DictionaryVocabCategory").where(disable: false)
|
||||
|
||||
respond_to do |format|
|
||||
format.html # new.html.erb
|
||||
format.xml { render xml: @vocab}
|
||||
end
|
||||
end
|
||||
|
||||
def create
|
||||
@vocab = DictionaryVocab.new(params[:dictionary_vocab])
|
||||
@vocab.create_user_id = current_user.id
|
||||
@vocab.update_user_id = current_user.id
|
||||
@categories = get_categories_for_index("DictionaryVocabCategory")
|
||||
|
||||
if @vocab.save
|
||||
flash[:success] = "Success!"
|
||||
redirect_to :action => :index
|
||||
else
|
||||
render 'new'
|
||||
end
|
||||
end
|
||||
|
||||
def edit
|
||||
@vocab = DictionaryVocab.find(params[:id])
|
||||
@categories = DictionaryVocabCategory.all
|
||||
end
|
||||
|
||||
def update
|
||||
@vocab = DictionaryVocab.find(params[:id])
|
||||
@vocab.update_attributes(params[:dictionary_vocab])
|
||||
|
||||
redirect_to :action => :index
|
||||
end
|
||||
|
||||
def destroy
|
||||
@vocab = DictionaryVocab.find(params[:id])
|
||||
@vocab.destroy
|
||||
# @market_item.save
|
||||
respond_to do |format|
|
||||
format.html { redirect_to(panel_dictionary_back_end_dictionary_vocabs_url) }
|
||||
format.js
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
+99
@@ -0,0 +1,99 @@
|
||||
class Panel::Dictionary::FrontEnd::DictionaryVocabsController < OrbitWidgetController
|
||||
include AdminHelper
|
||||
|
||||
def initialize
|
||||
super
|
||||
@app_title = 'dictionary_vocabs'
|
||||
end
|
||||
|
||||
def index
|
||||
@item = Page.find(params[:page_id])
|
||||
@title = @item.title
|
||||
if !@item.frontend_data_count.blank?
|
||||
@page_num = @item.frontend_data_count
|
||||
else
|
||||
@page_num = 10
|
||||
end
|
||||
|
||||
if params[:search_query].empty?
|
||||
@vocabs = DictionaryVocab.desc(:created_at).page(params[:page_main]).per(@page_num)
|
||||
else
|
||||
@vocabs = DictionaryVocab.solr_search do
|
||||
fulltext params[:search_query]
|
||||
end.results
|
||||
end
|
||||
|
||||
if !params[:category_id].blank?
|
||||
@vocabs = DictionaryVocab.default_sort(params[:sort]).can_display.where(:dictionary_vocab_category_id.in => params[:category_id]).desc( :is_top ).page( params[:page_main] ).per(@page_num)
|
||||
@current_category = DictionaryVocabCategory.from_id(params[:category_id]) rescue nil
|
||||
end
|
||||
|
||||
if params[:sort]
|
||||
@vocabs = get_sorted_and_filtered('dictionary_vocab', nil, @vocabs)
|
||||
end
|
||||
# @item = Page.find(params[:page_id])
|
||||
# @title = @item.title
|
||||
# if !@item.frontend_data_count.blank?
|
||||
# @page_num = @item.frontend_data_count
|
||||
# else
|
||||
# @page_num = 10
|
||||
# end
|
||||
|
||||
# date_now = Time.now
|
||||
# @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
|
||||
|
||||
# get_categorys
|
||||
|
||||
# if params[:sort]
|
||||
# @archive_files = get_sorted_and_filtered('archive_file', nil, @archive_files)
|
||||
# end
|
||||
end
|
||||
|
||||
def show
|
||||
@vocab = DictionaryVocab.find(params[:id])
|
||||
end
|
||||
|
||||
# protected
|
||||
|
||||
# def reload_archive_files
|
||||
# @item = Page.find(params[:page_id])
|
||||
# @title = @item.title
|
||||
# if @item.frontend_data_count
|
||||
# @page_num = @item.frontend_data_count
|
||||
# else
|
||||
# @page_num = 0
|
||||
# end
|
||||
# date_now = Time.now
|
||||
# @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?
|
||||
# @archive_files = ArchiveFile.can_display.where(:archive_file_category_id => 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.can_display.where(:tagged_ids => params[:tag_id]).desc( :is_top ).page( params[:page_main] ).per(@page_num)
|
||||
# else
|
||||
# @archive_files = ArchiveFile.can_display.desc( :is_top ).page( params[:page_main] ).per(@page_num)
|
||||
# end
|
||||
# get_categorys
|
||||
# end
|
||||
|
||||
# def get_categorys
|
||||
# @archive_file_categorys = ArchiveFileCategory.excludes('disabled' => true)
|
||||
# end
|
||||
end
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
class Panel::Dictionary::Widget::DictionaryVocabsController < OrbitWidgetController
|
||||
include AdminHelper
|
||||
|
||||
def initialize
|
||||
super
|
||||
@app_title = 'dictionary_vocabs'
|
||||
end
|
||||
|
||||
def get_categorys
|
||||
@dictionary_vocab_categorys = DictionaryVocabCategory.excludes('disable' => true)
|
||||
end
|
||||
|
||||
def dictionary_search_block
|
||||
end
|
||||
end
|
||||
File renamed without changes.
+20
@@ -0,0 +1,20 @@
|
||||
module Panel::Dictionary::BackEnd::DictionaryVocabCategorysHelper
|
||||
include ActionView::Helpers::UrlHelper
|
||||
|
||||
|
||||
def show_anc_cate_permission_link(dictionary_vocab_category)
|
||||
type = 'submit'
|
||||
oa = dictionary_vocab_category.get_object_auth_by_title(type)
|
||||
if oa.nil?
|
||||
dictionary_vocab_category.object_auths.new(title: type ).save
|
||||
oa = dictionary_vocab_category.get_object_auth_by_title(type)
|
||||
end
|
||||
link_to t(:category_auth),admin_object_auth_ob_auth_path(oa)
|
||||
end
|
||||
|
||||
def show_toggle_dictionary_btn(dictionary_vocab_category)
|
||||
trans_path = "dictionary.backend"
|
||||
return dictionary_vocab_category.disable ? t("#{trans_path}.close") : t("#{trans_path}.open")
|
||||
end
|
||||
|
||||
end
|
||||
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,73 @@
|
||||
# encoding: utf-8
|
||||
class DictionaryVocab
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
include Mongoid::MultiParameterAttributes
|
||||
include Mongoid::Sortable
|
||||
include Sunspot::Mongo
|
||||
|
||||
BelongsToCategory = :dictionary_vocab_category
|
||||
include OrbitCoreLib::BelongsToCategoryMayDisable
|
||||
|
||||
# PAYMENT_TYPES = @site_valid_locales
|
||||
|
||||
# include OrbitTag::Taggable
|
||||
# taggable
|
||||
|
||||
field :word, :type => String
|
||||
field :definition, :type => String
|
||||
|
||||
field :create_user_id
|
||||
field :update_user_id
|
||||
|
||||
# field :is_top, :type => Boolean, :default => false
|
||||
# field :is_hot, :type => Boolean, :default => false
|
||||
field :is_hidden, :type => Boolean, :default => false
|
||||
|
||||
scope :can_display, where(is_hidden: false)
|
||||
|
||||
searchable do
|
||||
text :word
|
||||
end
|
||||
|
||||
belongs_to :dictionary_vocab_category
|
||||
|
||||
# has_many :archive_file_multiples, :autosave => true, :dependent => :destroy
|
||||
|
||||
# accepts_nested_attributes_for :archive_file_multiples, :allow_destroy => true
|
||||
|
||||
# after_save :save_archive_file_multiples
|
||||
|
||||
searchable do
|
||||
text :word, :definition
|
||||
|
||||
boolean :frontend_search do
|
||||
!is_hidden
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
# def self.widget_datas
|
||||
|
||||
# where( :is_hidden => false ).desc(:is_top, :title)
|
||||
|
||||
# end
|
||||
|
||||
# def is_top?
|
||||
# self.is_top
|
||||
# end
|
||||
|
||||
|
||||
# def get_file_icon( file_data )
|
||||
# file_icon = "<span class=\"o-archives-file-type\">#{file_data.split('.')[-1]}</span>".html_safe
|
||||
# end
|
||||
|
||||
# def save_archive_file_multiples
|
||||
# self.archive_file_multiples.each do |t|
|
||||
# if t.should_destroy
|
||||
# t.destroy
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
|
||||
end
|
||||
@@ -0,0 +1,42 @@
|
||||
# encoding: utf-8
|
||||
class DictionaryVocabCategory
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
include OrbitCoreLib::ObjectAuthable
|
||||
include OrbitCoreLib::ObjectDisable
|
||||
include Sunspot::Mongo
|
||||
include Mongoid::MultiParameterAttributes
|
||||
APP_NAME = 'Dictionary'
|
||||
ObjectAuthTitlesOptions = %W{submit_new fact_check}
|
||||
AfterObjectAuthUrl = '/panel/dictionary/back_end/dictionary_vocab_categorys'
|
||||
|
||||
field :disable, type: Boolean, :default => false
|
||||
field :display
|
||||
field :key
|
||||
field :title, localize: true
|
||||
|
||||
has_many :dictionary_vocabs
|
||||
|
||||
# searchable do
|
||||
# text :titles do
|
||||
# title_translations.to_a.collect{|t| t[1]}
|
||||
# end
|
||||
|
||||
# boolean :frontend_search do
|
||||
# !disable
|
||||
# end
|
||||
|
||||
# text :files do
|
||||
# archive_files.can_display.collect{|t| t.title_translations.to_a.collect{|t| t[1]}}
|
||||
# end
|
||||
|
||||
# end
|
||||
def pp_object
|
||||
title
|
||||
end
|
||||
|
||||
def self.from_id(id)
|
||||
DictionaryVocabCategory.find(id) rescue nil
|
||||
end
|
||||
|
||||
end
|
||||
File renamed without changes.
+19
@@ -0,0 +1,19 @@
|
||||
<tr id="<%= dom_id dictionary_vocab_category %>" class="with_action">
|
||||
<td>
|
||||
<%= dictionary_vocab_category.key %>
|
||||
<div class="quick-edit">
|
||||
<ul class="nav nav-pills hide">
|
||||
<% if is_admin?%>
|
||||
<li><%= link_to t(:edit), edit_panel_dictionary_back_end_dictionary_vocab_category_path(dictionary_vocab_category), :remote => true %></li>
|
||||
<li><%= link_to show_toggle_dictionary_btn(dictionary_vocab_category) , panel_dictionary_back_end_dictionary_vocab_category_path(dictionary_vocab_category), :confirm => t(:sure?), :method => :delete, :remote => true, :class=> "dictionary_toggle" %></li>
|
||||
<% end %>
|
||||
<%if is_manager? || is_admin? %>
|
||||
<li><%= show_anc_cate_permission_link(dictionary_vocab_category) %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
<% @site_valid_locales.each do |locale| %>
|
||||
<td><%= dictionary_vocab_category.title_translations[locale] rescue nil %></td>
|
||||
<% end %>
|
||||
</tr>
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
<% # encoding: utf-8 %>
|
||||
|
||||
<%= form_for(@dictionary_vocab_category, :remote => true, :url => @url) do |f| %>
|
||||
|
||||
<h2><%= (@dictionary_vocab_category.new_record? ? t(:new, scope: :dictionary) : t(:edit, scope: :dictionary)) %></h2>
|
||||
|
||||
<div id="widget-title">
|
||||
<%= f.label t(:key, scope: :dictionary) %>
|
||||
<%= f.text_field :key %>
|
||||
</div>
|
||||
|
||||
<div id="widget-title">
|
||||
<%= f.fields_for :title_translations do |f| %>
|
||||
<% @site_valid_locales.each do |locale| %>
|
||||
<div class="control-group">
|
||||
<%= label_tag "name-#{locale}", "#{t(:name)} - #{I18nVariable.from_locale(locale)}", :class => 'control-label' %>
|
||||
<div class="controls">
|
||||
<%= f.text_field locale, :class =>' input-xxlarge', :value => (@dictionary_vocab_category.title_translations[locale] rescue nil) %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<div class="form-actions">
|
||||
<%= f.submit 'Submit/送出', :class=>'btn btn-primary' %>
|
||||
</div>
|
||||
|
||||
<% end %>
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
$('<%= j render :partial => 'dictionary_vocab_category', :collection => [@dictionary_vocab_category] %>').appendTo('#dictionary_vocab_categorys').hide().fadeIn();
|
||||
$("#new_dictionary_file_category")[0].reset();
|
||||
+1
@@ -0,0 +1 @@
|
||||
$("#<%= dom_id @dictionary_vocab_category %>").find(".dictionary_toggle").text("<%= show_toggle_archive_btn(@dictionary_vocab_category) %>");
|
||||
File renamed without changes.
+19
@@ -0,0 +1,19 @@
|
||||
<%= flash_messages %>
|
||||
|
||||
<table id="dictionary_vocab_categorys" class="table main-list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="span1-2"><%= t(:key, scope: :dictionary) %></th>
|
||||
<% @site_valid_locales.each do |locale| %>
|
||||
<th class="span1-2"><%= I18nVariable.first(:conditions => { :key => locale })[I18n.locale] %></th>
|
||||
<% end %>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<%= render :partial => 'dictionary_vocab_category', :collection => @dictionary_vocab_categorys %>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div id="form"><%= render :partial => "form" %></div>
|
||||
+1
@@ -0,0 +1 @@
|
||||
$("#form > form").replaceWith("<%= j render "form" %>");
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
$("#<%= dom_id @dictionary_vocab_category %>").replaceWith("<%= j render :partial => 'dictionary_vocab_category', :collection => [@dictionary_vocab_category] %>");
|
||||
<% @dictionary_vocab_category = DictionaryVocabCategory.new(:display => 'List') # reset for new form %>
|
||||
$(".edit_dictionary_vocab_category").replaceWith("<%= j render "form" %>")
|
||||
$(".new_dictionary_vocab_category")[0].reset();
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
<br />
|
||||
<div class="site-map">
|
||||
<h4><%= t :category, :scope => :dictionary %></h4>
|
||||
<%= f.collection_select :dictionary_vocab_category_id, @categories, :id, :title %>
|
||||
</div>
|
||||
<div class="site-map">
|
||||
<h4><%= t :word, :scope => :dictionary %></h4>
|
||||
<%= f.text_field :word %>
|
||||
</div>
|
||||
<div class="site-map">
|
||||
<h4><%= t :definition, :scope => :dictionary %></h4>
|
||||
<%= f.text_field :definition %>
|
||||
</div>
|
||||
<br />
|
||||
<div class="site-map">
|
||||
<%= f.submit t('submit'), class: 'btn btn-primary'%>
|
||||
</div>
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
<%= form_for @vocab, url: panel_dictionary_back_end_dictionary_vocab_path(@vocab) do |f| %>
|
||||
<%= render 'form', f: f %>
|
||||
<% end %>
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
<% flash.each do |key, value| %>
|
||||
<div class="alert alert-<%= key %>"><%= value %></div>
|
||||
<% end %>
|
||||
<table class="table table-striped">
|
||||
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="span2"><%= t :category, :scope => :dictionary %></th>
|
||||
<th class="span2"><%= t :word, :scope => :dictionary %></th>
|
||||
<th class="span2"><%= t :time, :scope => :dictionary %></th>
|
||||
<th class="span2"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<% @vocabs.each do |vocab| %>
|
||||
<tr>
|
||||
<td><%= vocab.dictionary_vocab_category.title %></td>
|
||||
<td><%= link_to truncate(vocab.word,length: 25), panel_dictionary_back_end_dictionary_vocab_path(vocab) %></td>
|
||||
<td><% if vocab.created_at > Time.now.beginning_of_day %>
|
||||
<%="#{time_ago_in_words(vocab.created_at)}"%>
|
||||
<%=t :ago,:scope => :dictionary%>
|
||||
<% else %>
|
||||
<%= vocab.created_at.strftime("%Y/%m/%d") %>
|
||||
<% end %></td>
|
||||
<td><%= link_to t(:edit), edit_panel_dictionary_back_end_dictionary_vocab_path(vocab) %> |
|
||||
<%= link_to t(:delete), panel_dictionary_back_end_dictionary_vocab_path(vocab), method: :delete , :data => { :confirm => 'Are you sure?'} %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
<% if @vocab.errors.any? %>
|
||||
<div id="error_explanation">
|
||||
<div class="alert alert-error">
|
||||
此表單包含了 <%= @vocab.errors.count.to_s + "個錯誤" %>.
|
||||
</div>
|
||||
<ul>
|
||||
<% @vocab.errors.full_messages.each do |msg| %>
|
||||
<li>* <%= msg %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
<% end %>
|
||||
<%= form_for @vocab, url: panel_dictionary_back_end_dictionary_vocabs_path do |f| %>
|
||||
<%= render 'form', f: f %>
|
||||
<% end %>
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
<table class="table" align ="center">
|
||||
<tr>
|
||||
<td ><%= t :category, :scope => :dictionary %></td>
|
||||
<td><%= @vocab.dictionary_vocab_category.key %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td ><%= t :word, :scope => :dictionary %></td>
|
||||
<td><%= @vocab.word %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td ><%= t :definition, :scope => :dictionary %></td>
|
||||
<td><pre><%= @vocab.definition %></pre></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%= t :time, :scope => :dictionary %></td>
|
||||
<td><% if @vocab.created_at > Time.now.beginning_of_day %>
|
||||
<%="#{time_ago_in_words(@vocab.created_at)}"%>
|
||||
<%=t :ago,:scope => :dictionary%>
|
||||
<% else %>
|
||||
<%= @vocab.created_at.strftime("%Y/%m/%d") %>
|
||||
<% end %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td ></td>
|
||||
<td><%= link_to t(:edit),edit_panel_dictionary_back_end_dictionary_vocab_path(@vocab) %> |
|
||||
<%= link_to t(:delete), panel_dictionary_back_end_dictionary_vocab_path(@vocab), method: :delete , :data => { :confirm => 'Are you sure?'} %> |
|
||||
<%= link_to t(:back), panel_dictionary_back_end_dictionary_vocabs_path%></td>
|
||||
</tr>
|
||||
</table>
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
<div class="row">
|
||||
<div class="span8">
|
||||
<table class="table">
|
||||
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="span2"><%= sortable(:category, t("dictionary.category"))%></th>
|
||||
<th class="span2"><%= t :word, :scope => :dictionary %></th>
|
||||
<th class="span2"><%= t :definition, :scope => :dictionary %></th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<% @vocabs.each do |vocab| %>
|
||||
<tr>
|
||||
<td><%= vocab.dictionary_vocab_category.title %></td>
|
||||
<td><%= link_to truncate(vocab.word,length: 25), panel_dictionary_front_end_dictionary_vocab_path(vocab) %></td>
|
||||
<td><%= link_to truncate(vocab.definition,length: 25), panel_dictionary_front_end_dictionary_vocab_path(vocab) %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<%= paginate(@vocabs, :param_name => :page_main, :params => {:inner => 'false'} ) rescue nil %>
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
<div class="row">
|
||||
<div class="span8">
|
||||
<table class="table" align ="center">
|
||||
<tr>
|
||||
<td ><%= t :category, :scope => :dictionary %></td>
|
||||
<td><%= @vocab.dictionary_vocab_category.title %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td ><%= t :word, :scope => :dictionary %></td>
|
||||
<td><%= @vocab.word %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td ><%= t :definition, :scope => :dictionary %></td>
|
||||
<td><pre><%= @vocab.definition %></pre></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%= t :time, :scope => :dictionary %></td>
|
||||
<td><% if @vocab.created_at > Time.now.beginning_of_day %>
|
||||
<%="#{time_ago_in_words(@vocab.created_at)}"%>
|
||||
<%=t :ago,:scope => :dictionary%>
|
||||
<% else %>
|
||||
<%= @vocab.created_at.strftime("%Y/%m/%d") %>
|
||||
<% end %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td ></td>
|
||||
<td><%= link_to t(:back), panel_dictionary_front_end_dictionary_vocabs_path%></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
<%= form_tag panel_dictionary_front_end_dictionary_vocabs_path, method: :get do %>
|
||||
<p>
|
||||
<%= text_field_tag :search_query, params[:search_query],{ value: (params[:search_query].blank? ? '' : params[:search_query]), placeholder: t("dictionary.widget.search") }%>
|
||||
<%= submit_tag t("dictionary.widget.search"), name: nil %>
|
||||
</p>
|
||||
<% end %>
|
||||
@@ -0,0 +1,15 @@
|
||||
en:
|
||||
dictionary:
|
||||
backend:
|
||||
close: Close
|
||||
open: Open
|
||||
frontend:
|
||||
dictionary: Dictionary Front-end
|
||||
dictionary: Dictionary
|
||||
category: Category
|
||||
word: Word
|
||||
definition: Definition
|
||||
time: Created time
|
||||
ago: ago
|
||||
widget:
|
||||
search: Search
|
||||
@@ -0,0 +1,18 @@
|
||||
zh_tw:
|
||||
dictionary:
|
||||
backend:
|
||||
close: 關閉
|
||||
open: 開啟
|
||||
frontend:
|
||||
dictionary: 字典前台
|
||||
dictionary: 字彙辭典
|
||||
category: 類別
|
||||
word: 字彙中文
|
||||
definition: 英文定義
|
||||
time: 建立時間
|
||||
ago: 前
|
||||
new: 新增
|
||||
edit: 修改
|
||||
key: 索引值
|
||||
widget:
|
||||
search: 搜尋
|
||||
@@ -0,0 +1,27 @@
|
||||
Rails.application.routes.draw do
|
||||
namespace :panel do
|
||||
namespace :dictionary do
|
||||
namespace :back_end do
|
||||
resources :dictionary_vocabs do
|
||||
collection do
|
||||
get 'delete'
|
||||
end
|
||||
end
|
||||
resources :dictionary_vocab_categorys
|
||||
resources :tags
|
||||
end
|
||||
|
||||
namespace :front_end do
|
||||
match "dictionary_vocabs", to: "dictionary_vocabs#index"
|
||||
resources :dictionary_vocabs
|
||||
end
|
||||
|
||||
namespace :widget do
|
||||
match "dictionary_search_block", to: "dictionary_vocabs#dictionary_search_block"
|
||||
match "dictionary_vocabs", to: "dictionary_vocabs#index"
|
||||
resources :dictionary_vocabs
|
||||
end
|
||||
end
|
||||
end
|
||||
match "/appfront/*path" => redirect("/panel/*path")
|
||||
end
|
||||
+6
-6
@@ -1,22 +1,22 @@
|
||||
$:.push File.expand_path("../lib", __FILE__)
|
||||
|
||||
# Maintain your gem's version:
|
||||
require "er_email/version"
|
||||
require "dictionary/version"
|
||||
|
||||
# Describe your gem and declare its dependencies:
|
||||
Gem::Specification.new do |s|
|
||||
s.name = "er_email"
|
||||
s.version = ErEmail::VERSION
|
||||
s.name = "dictionary"
|
||||
s.version = Archive::VERSION
|
||||
s.authors = ["TODO: Your name"]
|
||||
s.email = ["TODO: Your email"]
|
||||
s.homepage = "TODO"
|
||||
s.summary = "TODO: Summary of ErEmail."
|
||||
s.description = "TODO: Description of ErEmail."
|
||||
s.summary = "TODO: Summary of Dictionary."
|
||||
s.description = "TODO: Description of Dictionary."
|
||||
|
||||
s.files = Dir["{app,config,db,lib}/**/*"] + ["MIT-LICENSE", "Rakefile", "README.rdoc"]
|
||||
s.test_files = Dir["test/**/*"]
|
||||
|
||||
s.add_dependency "rails", "~> 3.2.12"
|
||||
s.add_dependency "rails", "~> 3.1.4"
|
||||
# s.add_dependency "jquery-rails"
|
||||
|
||||
s.add_development_dependency "sqlite3"
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"title": "dictionary",
|
||||
"version": "0.1",
|
||||
"organization": "Rulingcom",
|
||||
"author": "RD dep",
|
||||
"intro": "Archive",
|
||||
"update_info": "Some info",
|
||||
"create_date": "11-11-2011",
|
||||
"app_pages": ["dictionary_vocabs"],
|
||||
"widgets": {"dictionary_vocabs":[]},
|
||||
"enable_frontend": true
|
||||
}
|
||||
+88
@@ -0,0 +1,88 @@
|
||||
module Dictionary
|
||||
OrbitApp.registration "Dictionary",:type=> 'ModuleApp' do
|
||||
module_label 'dictionary.dictionary'
|
||||
base_url File.expand_path File.dirname(__FILE__)
|
||||
|
||||
# personal_plugin :enable => true,:path=>"panel/archive/plugin/profile",:i18n=>'archive.archive'
|
||||
|
||||
version "0.1"
|
||||
organization "Rulingcom"
|
||||
author "RD dep"
|
||||
intro "I am intro"
|
||||
update_info 'some update_info'
|
||||
|
||||
front_end do
|
||||
app_page 'dictionary_vocabs' do
|
||||
frontend_i18n "dictionary.frontend.dictionary"
|
||||
end
|
||||
end
|
||||
|
||||
category ["DictionaryVocabCategory"]
|
||||
|
||||
taggable
|
||||
|
||||
widgets do
|
||||
# default_widget do
|
||||
# query 'ArchiveFile.all'
|
||||
# field :category
|
||||
# link_field :title,{:method => 'panel_archive_front_end_archive_file_path',:args=>:self}
|
||||
# link_field :archive_file_category_with_title,{:method => 'panel_archive_front_end_archive_files_path',:args=>{:category_id => [:archive_file_category,:id]}}
|
||||
# end
|
||||
|
||||
categories_query 'DictionaryVocabCategory.all'
|
||||
# tags_query 'ArchiveTag.all'
|
||||
|
||||
# customize_widget "index" do
|
||||
# widget_i18n "archive.widget.index"
|
||||
# style ["1"]
|
||||
# end
|
||||
|
||||
customize_widget "dictionary_search_block" do
|
||||
widget_i18n "dictionary.widget.search"
|
||||
end
|
||||
|
||||
# item "index","announcement.widget.index",:default_template=>true,:fields=>["title","category","postdate"]
|
||||
# item "bulletins_and_web_links","announcement.widget.bulletins_and_web_links"
|
||||
end
|
||||
|
||||
|
||||
side_bar do
|
||||
head_label_i18n 'dictionary.dictionary',:icon_class=>"icons-book"
|
||||
available_for [:admin,:guest,:manager,:sub_manager]
|
||||
active_for_controllers ({ :private => ['dictionary_vocab_categorys', 'dictionary_vocabs'] })
|
||||
active_for_object_auth ['DictionaryVocabCategory']
|
||||
|
||||
head_link_path "panel_dictionary_back_end_dictionary_vocabs_path"
|
||||
|
||||
context_link 'all',
|
||||
:link_path=>"panel_dictionary_back_end_dictionary_vocabs_path" ,
|
||||
:priority=>1,
|
||||
:active_for_action=>{:dictionary_vocabs=>:index},
|
||||
:available_for => [:all]
|
||||
|
||||
context_link 'add',
|
||||
:link_path => "new_panel_dictionary_back_end_dictionary_vocab_path",
|
||||
:priority => 2,
|
||||
:active_for_action => { :dictionary_vocabs => :new },
|
||||
:available_for => [:sub_manager]
|
||||
|
||||
context_link 'categories',
|
||||
:link_path => "panel_dictionary_back_end_dictionary_vocab_categorys_path" ,
|
||||
:priority => 3,
|
||||
:active_for_action => { :dictionary_vocab_categorys => :index },
|
||||
:available_for => [:manager]
|
||||
|
||||
# context_link 'tags',
|
||||
# :link_path=>"admin_tags_path(:module_app_id => ModuleApp.first(conditions: {title: 'Archive'}))" ,
|
||||
# :priority=>4,
|
||||
# # :active_for_action=>{:bulletin_categorys=>:index},
|
||||
# :available_for => [:manager]
|
||||
|
||||
context_link 'module_authorization',
|
||||
:link_path => "admin_module_app_manager_auth_proc_path(ModuleApp.first(conditions: {title: 'Dictionary'}))",
|
||||
:priority => 6,
|
||||
:active_for_app_auth => 'Dictionary'
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,4 @@
|
||||
require "dictionary/engine"
|
||||
|
||||
module Dictionary
|
||||
end
|
||||
@@ -0,0 +1,4 @@
|
||||
module Dictionary
|
||||
class Engine < Rails::Engine
|
||||
end
|
||||
end
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
module ErEmail
|
||||
module Dictionary
|
||||
VERSION = "0.0.1"
|
||||
end
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
# desc "Explaining what the task does"
|
||||
# task :er_email do
|
||||
# task :dictionary do
|
||||
# # Task goes here
|
||||
# end
|
||||
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env ruby.exe
|
||||
#!/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 @@
|
||||
require 'test_helper'
|
||||
|
||||
class ArchiveTest < ActiveSupport::TestCase
|
||||
test "truth" do
|
||||
assert_kind_of Module, Archive
|
||||
end
|
||||
end
|
||||
File renamed without changes.
+9
@@ -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 .
|
||||
*/
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+1
-1
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Dummy</title>
|
||||
<%= stylesheet_link_tag "application", :media => "all" %>
|
||||
<%= stylesheet_link_tag "application" %>
|
||||
<%= javascript_include_tag "application" %>
|
||||
<%= csrf_meta_tags %>
|
||||
</head>
|
||||
File renamed without changes.
+1
-15
@@ -3,7 +3,7 @@ require File.expand_path('../boot', __FILE__)
|
||||
require 'rails/all'
|
||||
|
||||
Bundler.require
|
||||
require "er_email"
|
||||
require "archive"
|
||||
|
||||
module Dummy
|
||||
class Application < Rails::Application
|
||||
@@ -35,20 +35,6 @@ module Dummy
|
||||
# Configure sensitive parameters which will be filtered from the log file.
|
||||
config.filter_parameters += [:password]
|
||||
|
||||
# Enable escaping HTML in JSON.
|
||||
config.active_support.escape_html_entities_in_json = true
|
||||
|
||||
# Use SQL instead of Active Record's schema dumper when creating the database.
|
||||
# This is necessary if your schema can't be completely dumped by the schema dumper,
|
||||
# like if you have constraints or database-specific column types
|
||||
# config.active_record.schema_format = :sql
|
||||
|
||||
# Enforce whitelist mode for mass assignment.
|
||||
# This will create an empty whitelist of attributes available for mass-assignment for all models
|
||||
# in your app. As such, your models will need to explicitly whitelist or blacklist accessible
|
||||
# parameters by using an attr_accessible or attr_protected declaration.
|
||||
config.active_record.whitelist_attributes = true
|
||||
|
||||
# Enable the asset pipeline
|
||||
config.assets.enabled = true
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
+1
-8
@@ -2,7 +2,7 @@ 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
|
||||
# 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
|
||||
|
||||
@@ -22,13 +22,6 @@ Dummy::Application.configure do
|
||||
# Only use best-standards-support built into browsers
|
||||
config.action_dispatch.best_standards_support = :builtin
|
||||
|
||||
# Raise exception on mass assignment protection for Active Record models
|
||||
config.active_record.mass_assignment_sanitizer = :strict
|
||||
|
||||
# Log the query plan for queries taking more than this (works
|
||||
# with SQLite, MySQL, and PostgreSQL)
|
||||
config.active_record.auto_explain_threshold_in_seconds = 0.5
|
||||
|
||||
# Do not compress assets
|
||||
config.assets.compress = false
|
||||
|
||||
+2
-9
@@ -20,7 +20,7 @@ Dummy::Application.configure do
|
||||
# Generate digests for assets URLs
|
||||
config.assets.digest = true
|
||||
|
||||
# Defaults to nil and saved in location specified by config.assets.prefix
|
||||
# Defaults to Rails.root.join("public/assets")
|
||||
# config.assets.manifest = YOUR_PATH
|
||||
|
||||
# Specifies the header that your server uses for sending files
|
||||
@@ -33,11 +33,8 @@ Dummy::Application.configure do
|
||||
# See everything in the log (default is :info)
|
||||
# config.log_level = :debug
|
||||
|
||||
# Prepend all log lines with the following tags
|
||||
# config.log_tags = [ :subdomain, :uuid ]
|
||||
|
||||
# Use a different logger for distributed setups
|
||||
# config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
|
||||
# config.logger = SyslogLogger.new
|
||||
|
||||
# Use a different cache store in production
|
||||
# config.cache_store = :mem_cache_store
|
||||
@@ -60,8 +57,4 @@ Dummy::Application.configure do
|
||||
|
||||
# Send deprecation notices to registered listeners
|
||||
config.active_support.deprecation = :notify
|
||||
|
||||
# Log the query plan for queries taking more than this (works
|
||||
# with SQLite, MySQL, and PostgreSQL)
|
||||
# config.active_record.auto_explain_threshold_in_seconds = 0.5
|
||||
end
|
||||
+6
-4
@@ -2,9 +2,9 @@ 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
|
||||
# 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!
|
||||
# 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
|
||||
@@ -29,8 +29,10 @@ Dummy::Application.configure do
|
||||
# ActionMailer::Base.deliveries array.
|
||||
config.action_mailer.delivery_method = :test
|
||||
|
||||
# Raise exception on mass assignment protection for Active Record models
|
||||
config.active_record.mass_assignment_sanitizer = :strict
|
||||
# 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
|
||||
File renamed without changes.
-5
@@ -8,8 +8,3 @@
|
||||
# inflect.irregular 'person', 'people'
|
||||
# inflect.uncountable %w( fish sheep )
|
||||
# end
|
||||
#
|
||||
# These inflection rules are supported but not enabled by default:
|
||||
# ActiveSupport::Inflector.inflections do |inflect|
|
||||
# inflect.acronym 'RESTful'
|
||||
# end
|
||||
File renamed without changes.
+1
-1
@@ -4,4 +4,4 @@
|
||||
# If you change this key, all old signed cookies will become invalid!
|
||||
# Make sure the secret is at least 30 characters and all random,
|
||||
# no regular words or you'll be exposed to dictionary attacks.
|
||||
Dummy::Application.config.secret_token = 'ac15a913a22acfd8176f22613d574d3173e7396f613dd8c6932d0b097db26c33d6b93d43249b4bf5433c70aaf59f73c9f3a9058e2482309d770f18b3a7f82eb2'
|
||||
Dummy::Application.config.secret_token = 'aec42790c63fdc0784df1572e74631a6f9c9d16729b813ecbd5f086eaab251cdf0bcba044a78b706d1f45d43c4ec5af5df5cc5ffd2ff7ca64953a5806ce49618'
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
+1
-1
@@ -54,5 +54,5 @@ Dummy::Application.routes.draw do
|
||||
|
||||
# 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)'
|
||||
# match ':controller(/:action(/:id(.:format)))'
|
||||
end
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loaded 100 of 156 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user