1.Remove category column when category is specified
2.Showing category if not in category browsing 3.Redirect to home and show error if app page is not available for user language 4.Showing no context to display if object has no language for it. 5.Browse new and announcement by unit is now applicable.
This commit is contained in:
parent
80887ace3c
commit
cbf7ccc13b
|
@ -179,6 +179,7 @@ GEM
|
|||
chinese_pinyin (>= 0.3.0)
|
||||
redis (>= 2.1.1)
|
||||
redis-namespace (~> 1.0.2)
|
||||
remotipart (1.0.2)
|
||||
resque (1.20.0)
|
||||
multi_json (~> 1.0)
|
||||
redis-namespace (~> 1.0.2)
|
||||
|
@ -320,6 +321,7 @@ DEPENDENCIES
|
|||
redis (>= 2.1.1)
|
||||
redis-namespace (~> 1.0.2)
|
||||
redis-search (= 0.7.1)
|
||||
remotipart
|
||||
resque
|
||||
resque-restriction
|
||||
resque-scheduler
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
class PagesController < ApplicationController
|
||||
|
||||
include ApplicationHelper
|
||||
|
||||
before_filter :get_item, :only => [:index_from_link, :show_from_link]
|
||||
|
||||
# caches_page :index
|
||||
|
||||
def index
|
||||
|
@ -19,14 +16,15 @@ class PagesController < ApplicationController
|
|||
|
||||
def show
|
||||
#begin
|
||||
|
||||
@item = Item.first(:conditions => {:path => params[:page_name]})
|
||||
if @item && @item.is_published && (@item.enabled_for.nil? ? true : @item.enabled_for.include?(I18n.locale.to_s))
|
||||
if @item && @item.is_published #&& (@item.enabled_for.nil? ? true : @item.enabled_for.include?(I18n.locale.to_s))
|
||||
impressionist(@item)
|
||||
case @item.class.to_s
|
||||
when 'Page'
|
||||
render_page
|
||||
render_page unless save_from_no_lang_for_page
|
||||
when 'Link'
|
||||
redirect_to @item[:url]
|
||||
redirect_to(@item[:url]) unless save_from_no_lang_for_page
|
||||
end
|
||||
else
|
||||
render :file => "#{Rails.root}/public/404.html", :status => :not_found
|
||||
|
@ -43,15 +41,17 @@ class PagesController < ApplicationController
|
|||
options << "#{options.blank? ? '?' : '&'}category_id=#{params[:category_id]}" unless params[:category_id].blank?
|
||||
options << "#{options.blank? ? '?' : '&'}tag_id=#{params[:tag_id]}" unless params[:tag_id].blank?
|
||||
options << "#{options.blank? ? '?' : '&'}search_query=#{params[:search_query]}" unless params[:search_query].blank?
|
||||
options << "#{options.blank? ? '?' : '&'}name=#{params[:name]}" unless params[:name].blank?
|
||||
uri = URI::escape(url + options)
|
||||
redirect_to uri
|
||||
#uri = URI::escape("#{url}?" + params.collect{|k,v| "#{k}=#{v}"}.join('&'))
|
||||
redirect_to(uri)unless save_from_no_lang_for_page
|
||||
end
|
||||
|
||||
def show_from_link
|
||||
url = "/#{@item.path}?id=#{params[:id]}"
|
||||
options = ''
|
||||
options << "&preview=#{params[:preview]}" unless params[:preview].blank?
|
||||
redirect_to url + options
|
||||
redirect_to(url + options) unless save_from_no_lang_for_page
|
||||
end
|
||||
|
||||
def load_orbit_bar
|
||||
|
@ -66,12 +66,22 @@ class PagesController < ApplicationController
|
|||
@item = Item.first(:conditions => {:module_app_id => module_app.id, :app_frontend_url => params[:app_action], :category => params[:category_id], :tag => params[:tag_id]})
|
||||
@item = Item.first(:conditions => {:module_app_id => module_app.id, :app_frontend_url => params[:app_action], :category => params[:category_id], :tag => ''}) unless @item
|
||||
elsif !params[:category_id].blank?
|
||||
@item = Item.first(:conditions => {:module_app_id => module_app.id, :app_frontend_url => params[:app_action], :category => params[:category_id], :tag => ''})
|
||||
@item = Item.where(module_app_id: module_app.id,app_frontend_url:params[:app_action],category: params[:category_id]).any_in(tag: [nil,'']).first
|
||||
elsif !params[:tag_id].blank?
|
||||
@item = Item.first(:conditions => {:module_app_id => module_app.id, :app_frontend_url => params[:app_action], :category => '', :tag => params[:tag_id]})
|
||||
@item = Item.where(module_app_id: module_app.id,app_frontend_url:params[:app_action],tag: params[:tag_id]).any_in(category: [nil,'']).first
|
||||
end
|
||||
@item = Item.first(:conditions => {:module_app_id => module_app.id, :app_frontend_url => params[:app_action], :category => '', :tag => ''}) unless @item
|
||||
@item = Item.where(module_app_id: module_app.id,app_frontend_url:params[:app_action]).all_of("tag" => {"$in" => [nil,'']},"category" => { "$in" => [nil,'']}).first unless @item
|
||||
#TODO 需要做 error handler 處理沒有新增該模組頁面導致錯誤的可能性
|
||||
end
|
||||
|
||||
protected
|
||||
def save_from_no_lang_for_page
|
||||
if @item.nil? or !@item.enabled_for_lang(I18n.locale.to_s)
|
||||
flash[:notice] = t('sys.module_page_lang_not_support')
|
||||
redirect_to '/'
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -23,6 +23,9 @@ class Item
|
|||
before_destroy :destroy_children
|
||||
after_rearrange :rebuild_path, :if => "parent_id_changed?"
|
||||
|
||||
def enabled_for_lang(lang)
|
||||
enabled_for.include?(lang)
|
||||
end
|
||||
|
||||
def self.find_by_name(item_name)
|
||||
Item.first(:conditions => { :name => item_name, :is_published => true })
|
||||
|
|
|
@ -6,8 +6,8 @@ class Page < Item
|
|||
field :content
|
||||
field :app_frontend_url
|
||||
field :theme_id, :type => BSON::ObjectId, :default => nil
|
||||
field :category
|
||||
field :tag
|
||||
field :category, :default => ''
|
||||
field :tag, :default => ''
|
||||
field :view_count, :type => Integer, :default => 0
|
||||
field :page_title, localize: true
|
||||
|
||||
|
|
|
@ -31,12 +31,7 @@ class User
|
|||
|
||||
VALID_LOCALES.each do |loc|
|
||||
locale = loc.to_sym
|
||||
# debugger
|
||||
# if(self.cache_dept.nil?)
|
||||
# self.build_cache_dept key: "dept_cache_user_#{self.id}"
|
||||
# end
|
||||
dept_hash[locale] = sub_roles.collect{|sr| sr.title}.join(',')
|
||||
# self.cache_dept[locale] = sub_roles.collect{|sr| sr.title}.join(',')
|
||||
end
|
||||
self.cache_dept = dept_hash
|
||||
self.save!
|
||||
|
|
|
@ -12,6 +12,17 @@
|
|||
<%= page_javascripts(@item).html_safe %>
|
||||
</head>
|
||||
<body>
|
||||
<%= yield %>
|
||||
<%= yield %>
|
||||
<% if !flash.empty? %>
|
||||
<div class="modal alert alert-error hide" id="myModal">
|
||||
<p type="button" class="close" data-dismiss="modal">×</p>
|
||||
<% flash.each do |key, msg| %>
|
||||
<%= "<strong>#{msg}</strong><br/>".html_safe%>
|
||||
<% end%>
|
||||
</div>
|
||||
<script>
|
||||
$('#myModal').modal('show')
|
||||
</script>
|
||||
<% end -%>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -298,7 +298,8 @@ en:
|
|||
sys:
|
||||
not_previewable: "Preview not support"
|
||||
limit_of_upload_file_size: "Upload file must be less than: %{best_size}"
|
||||
|
||||
can_not_display_due_to_no_context: "Can not display due to no context for English"
|
||||
module_page_lang_not_support: "We are sorry, this page is not available for English"
|
||||
search:
|
||||
not_found: "NOT FOUND"
|
||||
domains: Google Search Domains
|
||||
|
@ -306,3 +307,4 @@ en:
|
|||
sitesearch: Google Site Search
|
||||
site_setting_help: Please Enter the search argument for Google search.
|
||||
result_get: "Searched about ' %{search_word} ' Found %{item_num} items"
|
||||
unit_get: "Listed items created by :%{unit_name} Found %{item_num} items"
|
||||
|
|
|
@ -443,6 +443,7 @@ zh_tw:
|
|||
sitesearch: Google Site Search
|
||||
site_setting_help: 請輸入送交Google搜尋的參數
|
||||
result_get: "搜尋標題有關 ' %{search_word} ' 共搜尋到%{item_num}筆資料"
|
||||
unit_get: "列出由:%{unit_name}發佈的資料,共有%{item_num}筆"
|
||||
activerecord:
|
||||
errors:
|
||||
template: # ~ 2.3.5 backward compatible
|
||||
|
@ -524,7 +525,8 @@ zh_tw:
|
|||
sys:
|
||||
not_previewable: "不支援預覽"
|
||||
limit_of_upload_file_size: "上傳檔案大小限制: %{best_size}"
|
||||
|
||||
can_not_display_due_to_no_context: "因為沒有中文版本,所以無法顯示"
|
||||
module_page_lang_not_support: "很抱歉,本頁沒有開放中文版本"
|
||||
object_disable:
|
||||
change_to_true: "設為停用"
|
||||
change_to_false: "重新啓用"
|
|
@ -8,7 +8,7 @@ defaults: &defaults
|
|||
|
||||
development:
|
||||
<<: *defaults
|
||||
database: prototype_r4_ldap0229
|
||||
database: i18n_var
|
||||
|
||||
test:
|
||||
<<: *defaults
|
||||
|
|
|
@ -180,7 +180,7 @@ module ParserCommon
|
|||
if (content["main"] == "true" && !page.module_app.nil?)
|
||||
ret << "<div id='appfrontend' class='dymanic_load' path='/panel/#{page.module_app.key}/front_end/#{page.app_frontend_url}"
|
||||
ret << "/#{params[:id]}" if params[:id] && !params[:id].eql?(page.id.to_s)
|
||||
ret << "?inner=true&page_id=#{page.id}&category_id=#{category}&tag_id=#{tag}&preview=#{params[:preview]}&page_main=#{params[:page_main]}&search_query=#{params[:search_query]}"
|
||||
ret << "?inner=true&page_id=#{page.id}&category_id=#{category}&tag_id=#{tag}&preview=#{params[:preview]}&page_main=#{params[:page_main]}&search_query=#{params[:search_query]}&name=#{params[:name]}"
|
||||
ret << "'></div>"
|
||||
else
|
||||
part = page.page_parts.detect{ |p| p.name.to_s == content['name'].to_s } rescue nil
|
||||
|
|
|
@ -83,4 +83,17 @@ namespace :data_migration do
|
|||
puts("#{'='*10}Finished#{'='*10}")
|
||||
end
|
||||
|
||||
task :make_bulletin_save_dept_data => :environment do
|
||||
Bulletin.all.each{|bt| bt.save!}
|
||||
end
|
||||
|
||||
task :extend_exsisted_app_module_for_dept_search => :environment do
|
||||
app = ModuleApp.first({:conditions=>{:title => 'news'}})
|
||||
app.app_pages << "index_by_unit" if !app.widgets.include?("index_by_unit")
|
||||
app.save!
|
||||
app = ModuleApp.first({:conditions=>{:title => 'Announcement'}})
|
||||
app.app_pages << "index_by_unit" if !app.widgets.include?("index_by_unit")
|
||||
app.save!
|
||||
end
|
||||
|
||||
end
|
|
@ -7,6 +7,11 @@ class Panel::Announcement::FrontEnd::BulletinsController < OrbitWidgetController
|
|||
|
||||
# GET /bulletins
|
||||
# GET /bulletins.xml
|
||||
def index_bulletins_by_unit
|
||||
@page = Page.find(params[:page_id])
|
||||
@bulletins=Bulletin.all.available_for_lang(I18n.locale).can_display.where("cache_dept.#{I18n.locale.to_s.downcase}"=>params[:name]).page( params[:page_main]).per(15)
|
||||
render :index
|
||||
end
|
||||
|
||||
def index
|
||||
@page = Page.find(params[:page_id])
|
||||
|
@ -44,10 +49,14 @@ class Panel::Announcement::FrontEnd::BulletinsController < OrbitWidgetController
|
|||
if params[:preview] == "true"
|
||||
preview_content
|
||||
else
|
||||
@bulletin = Bulletin.all.available_for_lang(I18n.locale).can_display.where(_id: params[:id]).first
|
||||
unless @bulletin.disable?
|
||||
impressionist(@bulletin)
|
||||
get_categorys
|
||||
@bulletin = Bulletin.all.can_display.where(_id: params[:id]).first
|
||||
if !@bulletin.disable?
|
||||
if @bulletin.enabled_for_lang(I18n.locale.to_s)
|
||||
impressionist(@bulletin)
|
||||
get_categorys
|
||||
else
|
||||
render :text => "<div class='alert alert-error'>#{t('sys.can_not_display_due_to_no_context')}</div>".html_safe
|
||||
end
|
||||
else
|
||||
render :nothing => true, :status => 403
|
||||
end
|
||||
|
|
|
@ -25,6 +25,8 @@ class Bulletin
|
|||
field :postdate , :type => DateTime
|
||||
field :deadline , :type => DateTime
|
||||
# field :url
|
||||
field :cache_dept,type: Hash
|
||||
|
||||
field :create_user_id
|
||||
field :update_user_id, :class_name => "User"
|
||||
|
||||
|
@ -62,6 +64,7 @@ class Bulletin
|
|||
|
||||
before_save :check_deadline,:update_status,:update_avliable_language
|
||||
|
||||
before_save :fetch_dept
|
||||
after_save :save_bulletin_links
|
||||
after_save :save_bulletin_files
|
||||
|
||||
|
@ -94,26 +97,14 @@ class Bulletin
|
|||
self.title_was["en"]
|
||||
end
|
||||
|
||||
# def s_text_en
|
||||
# Nokogiri::HTML(self.text.en).text
|
||||
# end
|
||||
# def s_text_zh_tw
|
||||
# Nokogiri::HTML(self.text.zh_tw).text
|
||||
# end
|
||||
|
||||
# scope :currently_available, lambda { |category, limit|
|
||||
# # limit ||= 5
|
||||
# # {
|
||||
# # debugger
|
||||
# # a=1
|
||||
# :where => {:bulletin_category_id => bulletin_category_id, :disable => false}#,
|
||||
# # :limit => limit
|
||||
# # }
|
||||
# }
|
||||
def de_pending
|
||||
self.is_pending = false
|
||||
end
|
||||
|
||||
def enabled_for_lang(lang)
|
||||
eval("self.available_for_#{lang}")
|
||||
end
|
||||
|
||||
def publish_month
|
||||
published_at.strftime("%B %Y")
|
||||
end
|
||||
|
@ -240,4 +231,8 @@ class Bulletin
|
|||
end
|
||||
end
|
||||
|
||||
def fetch_dept
|
||||
self.cache_dept = (User.current.cache_dept rescue nil) || (User.find(self.create_user_id).cache_dept rescue nil)
|
||||
end
|
||||
|
||||
end
|
|
@ -7,10 +7,16 @@
|
|||
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th><%= t('announcement.bulletin.category') %></th>
|
||||
<%= content_tag (:th) do %>
|
||||
<%= t('announcement.bulletin.category') %>
|
||||
<% end if (!params[:search_query].blank? or params[:category_id].blank?)-%>
|
||||
<th><%= t('announcement.bulletin.title') %></th>
|
||||
<th><%= t('announcement.bulletin.postdate') %></th>
|
||||
</tr>
|
||||
<% if !params[:name].blank?%>
|
||||
<%= t("search.unit_get",:unit_name => params[:name],:item_num=>@bulletins.count) %>
|
||||
<% end %>
|
||||
|
||||
<% if @bulletins.blank? and !params[:search_query].blank? %>
|
||||
<%=render :partial => 'shared/search_not_found' %>
|
||||
<% elsif !params[:search_query].blank? %>
|
||||
|
@ -18,7 +24,9 @@
|
|||
<% end %>
|
||||
<% @bulletins.each do |post| %>
|
||||
<tr class=<%= cycle('odd', '') %>>
|
||||
<td><%= (post.bulletin_category.title rescue nil ) if !params[:search_query].blank? %></td>
|
||||
<%= content_tag(:th) do%>
|
||||
<td><%= (post.bulletin_category.title rescue nil ) %></td>
|
||||
<% end if(!params[:search_query].blank? or params[:category_id].blank?) %>
|
||||
<td><%= link_to post.title, panel_announcement_front_end_bulletin_path(post, :category_id => post.bulletin_category_id) %>
|
||||
<%#= link_to post.title, panel_announcement_back_end_bulletin_path(post) %>
|
||||
</td>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<div class="info1">
|
||||
<span class="pull-right"><%= dislpay_view_count(@bulletin) %></span>
|
||||
<span class="date"><%= display_date_time(@bulletin.postdate) %></span>
|
||||
<span><%= User.find(@bulletin.create_user_id).cache_dept[I18n.locale.to_s] rescue nil %></span>
|
||||
<span><%= link_to @bulletin.cache_dept[I18n.locale.to_s],panel_announcement_front_end_index_bulletins_by_unit_path(:name=>@bulletin.cache_dept[I18n.locale.to_s]) rescue nil %></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="news_image">
|
||||
|
|
|
@ -34,6 +34,7 @@ Rails.application.routes.draw do
|
|||
resources :tags
|
||||
end
|
||||
namespace :front_end do
|
||||
match "index_by_unit" => "bulletins#index_bulletins_by_unit",:as => :index_bulletins_by_unit
|
||||
resources :bulletins # do
|
||||
# match "preview" => "bulletins#preview_content",:as => :get_preview_content
|
||||
# end
|
||||
|
|
|
@ -8,6 +8,12 @@ class Panel::News::FrontEnd::NewsBulletinsController < OrbitWidgetController
|
|||
# GET /news_bulletins
|
||||
# GET /news_bulletins.xml
|
||||
|
||||
def index_news_bulletins_by_unit
|
||||
@page = Page.find(params[:page_id])
|
||||
@news_bulletins=NewsBulletin.all.available_for_lang(I18n.locale).can_display.where("unit_list_for_anc_id"=>params[:name]).page( params[:page_main]).per(15).page( params[:page_main]).per(10)
|
||||
render :index
|
||||
end
|
||||
|
||||
def index
|
||||
@page = Page.find(params[:page_id])
|
||||
if !params[:search_query].blank?
|
||||
|
@ -42,10 +48,14 @@ class Panel::News::FrontEnd::NewsBulletinsController < OrbitWidgetController
|
|||
preview_content
|
||||
else
|
||||
''
|
||||
@news_bulletin = NewsBulletin.all.available_for_lang(I18n.locale).can_display.where(_id: params[:id]).first
|
||||
unless @news_bulletin.disable?
|
||||
impressionist(@news_bulletin)
|
||||
get_categorys
|
||||
@news_bulletin = NewsBulletin.all.can_display.where(_id: params[:id]).first
|
||||
if !@news_bulletin.disable?
|
||||
if @news_bulletin.enabled_for_lang(I18n.locale.to_s)
|
||||
impressionist(@news_bulletin)
|
||||
get_categorys
|
||||
else
|
||||
render :text => "<div class='alert alert-error'>#{t('sys.can_not_display_due_to_no_context')}</div>".html_safe
|
||||
end
|
||||
else
|
||||
render :nothing => true, :status => 403
|
||||
end
|
||||
|
|
|
@ -140,6 +140,10 @@ class NewsBulletin
|
|||
|
||||
end
|
||||
|
||||
def enabled_for_lang(lang)
|
||||
eval("self.available_for_#{lang}")
|
||||
end
|
||||
|
||||
def de_pending
|
||||
self.is_pending = false
|
||||
end
|
||||
|
|
|
@ -4,6 +4,10 @@
|
|||
|
||||
<h1 class="h1"><%= @page.title %></h1>
|
||||
|
||||
<% if !params[:name].blank?%>
|
||||
<%= t("search.unit_get",:unit_name => UnitListForAnc.find(params[:name]).title,:item_num=>@news_bulletins.count) %>
|
||||
<% end %>
|
||||
|
||||
<% if @news_bulletins.blank? and !params[:search_query].blank? %>
|
||||
<%=render :partial => 'shared/search_not_found' %>
|
||||
<% elsif !params[:search_query].blank? %>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<span class="date"><%= display_date(@news_bulletin.postdate) %></span>
|
||||
<% unit = @news_bulletin.unit_list_for_anc.title rescue nil %>
|
||||
<%= " | " if unit %>
|
||||
<a href="" class="unit"><%= unit %></a>
|
||||
<%= link_to unit, panel_news_front_end_index_news_bulletins_by_unit_path(:name=>@news_bulletin.unit_list_for_anc_id)%>
|
||||
</div>
|
||||
</div>
|
||||
<div class="news_image">
|
||||
|
|
|
@ -34,6 +34,7 @@ Rails.application.routes.draw do
|
|||
resources :tags
|
||||
end
|
||||
namespace :front_end do
|
||||
match "index_by_unit" => "news_bulletins#index_news_bulletins_by_unit",:as => :index_news_bulletins_by_unit
|
||||
resources :news_bulletins # do
|
||||
# match "preview" => "news_bulletins#preview_content",:as => :get_preview_content
|
||||
# end
|
||||
|
|
Loading…
Reference in New Issue