Merge branch 'master' into 'master'
add new feature: let user can choose whether to show next and prev option See merge request !10
This commit is contained in:
commit
3c3b7160a2
|
@ -1,68 +1,8 @@
|
|||
class AnnouncementsController < ApplicationController
|
||||
|
||||
include AnnouncementsHelper
|
||||
def index
|
||||
Bulletin.remove_expired_status
|
||||
params = OrbitHelper.params
|
||||
locale = OrbitHelper.get_site_locale.to_s
|
||||
feeds_anns = []
|
||||
top_anns = []
|
||||
if !params['tags'].blank?
|
||||
announcements = Bulletin.where(:title.ne => "",:is_preview.in=>[false,nil]).and(:title.ne => nil).can_display.is_approved.filter_by_tags(params['tags']).page(OrbitHelper.page_number).per(OrbitHelper.page_data_count).to_a
|
||||
else
|
||||
if !params["source"].present?
|
||||
announcements = Bulletin.where(:title.ne => "",:is_preview.in=>[false,nil]).and(:title.ne => nil, :is_top.ne => true).can_display.is_approved.filter_by_categories([],false).filter_by_tags.to_a
|
||||
feeds_anns = get_feed_announcements("index")
|
||||
else
|
||||
announcements = []
|
||||
feeds_anns = get_feed_announcements("index",params["source"])
|
||||
end
|
||||
end
|
||||
# (OrbitHelper.page_number == 1 or OrbitHelper.page_number.nil?) &&
|
||||
if !params["source"].present?
|
||||
if !params['tags'].blank?
|
||||
top_anns = Bulletin.where(:title.ne => "",:is_preview.in=>[false,nil], :is_top => true).and(:title.ne => nil).can_display.filter_by_categories([],false).filter_by_tags(params['tags']).to_a
|
||||
else
|
||||
top_anns = Bulletin.where(:title.ne => "",:is_preview.in=>[false,nil], :is_top => true).and(:title.ne => nil).can_display.filter_by_categories([],false).filter_by_tags.to_a
|
||||
end
|
||||
end
|
||||
|
||||
if !feeds_anns.blank?
|
||||
announcements = announcements.concat(feeds_anns)
|
||||
sorted = announcements.sort{ |k,v| v["postdate"] <=> k["postdate"] }
|
||||
sorted = top_anns + sorted
|
||||
if params["keywords"].present?
|
||||
sorted = sorted.find_all{|anns|
|
||||
if anns["source-site"].present?
|
||||
/#{params[:keywords].to_s}/i.match anns["title"]
|
||||
else
|
||||
/#{params[:keywords].to_s}/i.match anns.title
|
||||
end
|
||||
}
|
||||
end
|
||||
if params["postdate"].present?
|
||||
sorted = sorted.find_all{|anns|
|
||||
if anns["source-site"].present?
|
||||
/#{params[:postdate].to_s}/i.match anns["postdate"].strftime("%Y-%m") if !anns["postdate"].nil?
|
||||
else
|
||||
/#{params[:postdate].to_s}/i.match anns.postdate.strftime("%Y-%m") if !anns.postdate.nil?
|
||||
end
|
||||
}
|
||||
end
|
||||
sorted = Kaminari.paginate_array(sorted).page(OrbitHelper.page_number).per(OrbitHelper.page_data_count) rescue []
|
||||
else
|
||||
announcements = top_anns + announcements
|
||||
if params["keywords"].present?
|
||||
announcements = announcements.find_all{|anns| /#{params[:keywords].to_s}/i.match anns.title}
|
||||
end
|
||||
if params["postdate"].present?
|
||||
announcements = announcements.find_all{|anns|
|
||||
if !anns.postdate.nil?
|
||||
/#{params[:postdate].to_s}/i.match anns.postdate.strftime("%Y-%m")
|
||||
end
|
||||
}
|
||||
end
|
||||
sorted = Kaminari.paginate_array(announcements).page(OrbitHelper.page_number).per(OrbitHelper.page_data_count) rescue []
|
||||
end
|
||||
announcements,sorted = get_sorted_annc
|
||||
total_pages = sorted.total_pages
|
||||
|
||||
anns = []
|
||||
|
@ -134,47 +74,6 @@ class AnnouncementsController < ApplicationController
|
|||
|
||||
end
|
||||
|
||||
def get_feed_announcements(type,site_source=nil)
|
||||
feed_anns = OrbitHelper.get_feed_for_module(type)
|
||||
fans = []
|
||||
locale = OrbitHelper.get_site_locale.to_s
|
||||
feed_anns.each do |fa|
|
||||
next if !site_source.nil? && site_source != fa["source-site-title"]
|
||||
status = {
|
||||
"status" => "<a href='#{fa["source-site"]}' target='_blank' class='feed-source'>#{fa["source-site-title"]}</a>",
|
||||
"status-class" => "status-source"
|
||||
}
|
||||
|
||||
files = fa["bulletin_files"].collect{|bf| { "file_url" => bf["url"], "file_title" => (fa["title_translations"][locale].blank? ? File.basename(fa["url"]) : fa["title_translations"][locale] rescue '') }} rescue []
|
||||
links = fa["bulletin_links"].map{|link| { "link_url" => link["url"], "link_title" => (link["title_translations"][locale].blank? ? link["url"] : link["title_translations"][locale]) } } rescue []
|
||||
|
||||
x = {
|
||||
"bulletin_links" => links,
|
||||
"bulletin_files" => files,
|
||||
"title" => fa["title_translations"][locale],
|
||||
"subtitle" => fa["subtitle_translations"][locale],
|
||||
"statuses" => [status],
|
||||
"category" => fa["category"],
|
||||
"postdate" => fa["postdate"],
|
||||
"author" => fa["author"],
|
||||
"is_top" => 0,
|
||||
"source-site" => "<a href='#{fa["source-site"]}' target='_blank' class='feed-source'>#{fa["source-site-title"]}</a>",
|
||||
"source-site-title" => fa["source-site-title"],
|
||||
"source-site-link" => fa["source-site"],
|
||||
"link_to_show" => OrbitHelper.url_to_show(fa["params"]),
|
||||
"target" => "_self",
|
||||
"img_src" => fa["image"]["thumb"] || "/assets/announcement-default.jpg",
|
||||
"img_description" => fa["image_description_translations"][locale],
|
||||
"more" => t(:more_plus),
|
||||
"view_count" => ""
|
||||
}
|
||||
if (!x["title"].empty? rescue false)
|
||||
fans << x
|
||||
end
|
||||
end
|
||||
fans
|
||||
end
|
||||
|
||||
def random_announcement_widget
|
||||
uid = OrbitHelper.params[:uid] rescue ""
|
||||
tags = OrbitHelper.widget_tags
|
||||
|
|
|
@ -0,0 +1,111 @@
|
|||
module AnnouncementsHelper
|
||||
def get_feed_announcements(type,site_source=nil)
|
||||
feed_anns = OrbitHelper.get_feed_for_module(type)
|
||||
fans = []
|
||||
locale = OrbitHelper.get_site_locale.to_s
|
||||
feed_anns.each do |fa|
|
||||
next if !site_source.nil? && site_source != fa["source-site-title"]
|
||||
status = {
|
||||
"status" => "<a href='#{fa["source-site"]}' target='_blank' class='feed-source'>#{fa["source-site-title"]}</a>",
|
||||
"status-class" => "status-source"
|
||||
}
|
||||
|
||||
files = fa["bulletin_files"].collect{|bf| { "file_url" => bf["url"], "file_title" => (fa["title_translations"][locale].blank? ? File.basename(fa["url"]) : fa["title_translations"][locale] rescue '') }} rescue []
|
||||
links = fa["bulletin_links"].map{|link| { "link_url" => link["url"], "link_title" => (link["title_translations"][locale].blank? ? link["url"] : link["title_translations"][locale]) } } rescue []
|
||||
|
||||
x = {
|
||||
"bulletin_links" => links,
|
||||
"bulletin_files" => files,
|
||||
"title" => fa["title_translations"][locale],
|
||||
"subtitle" => fa["subtitle_translations"][locale],
|
||||
"statuses" => [status],
|
||||
"category" => fa["category"],
|
||||
"postdate" => fa["postdate"],
|
||||
"author" => fa["author"],
|
||||
"is_top" => 0,
|
||||
"source-site" => "<a href='#{fa["source-site"]}' target='_blank' class='feed-source'>#{fa["source-site-title"]}</a>",
|
||||
"source-site-title" => fa["source-site-title"],
|
||||
"source-site-link" => fa["source-site"],
|
||||
"link_to_show" => OrbitHelper.url_to_show(fa["params"]),
|
||||
"target" => "_self",
|
||||
"img_src" => fa["image"]["thumb"] || "/assets/announcement-default.jpg",
|
||||
"img_description" => fa["image_description_translations"][locale],
|
||||
"more" => t(:more_plus),
|
||||
"view_count" => ""
|
||||
}
|
||||
if (!x["title"].empty? rescue false)
|
||||
fans << x
|
||||
end
|
||||
end
|
||||
fans
|
||||
end
|
||||
def test
|
||||
123
|
||||
end
|
||||
def get_sorted_annc
|
||||
params = OrbitHelper.params
|
||||
locale = OrbitHelper.get_site_locale.to_s
|
||||
page = Page.where(url:params['url']).first
|
||||
feeds_anns = []
|
||||
top_anns = []
|
||||
tags = page.tags
|
||||
if !tags.blank?
|
||||
announcements = Bulletin.where(:title.ne => "",:is_preview.in=>[false,nil]).and(:title.ne => nil).can_display.is_approved.filter_by_tags(tags).page(OrbitHelper.page_number).per(OrbitHelper.page_data_count).to_a
|
||||
else
|
||||
if !params["source"].present?
|
||||
announcements = Bulletin.where(:title.ne => "",:is_preview.in=>[false,nil]).and(:title.ne => nil, :is_top.ne => true).can_display.is_approved.filter_by_categories([],false).filter_by_tags.to_a
|
||||
feeds_anns = get_feed_announcements("index")
|
||||
else
|
||||
announcements = []
|
||||
feeds_anns = get_feed_announcements("index",params["source"])
|
||||
end
|
||||
end
|
||||
# (OrbitHelper.page_number == 1 or OrbitHelper.page_number.nil?) &&
|
||||
if !params["source"].present?
|
||||
if !tags.blank?
|
||||
top_anns = Bulletin.where(:title.ne => "",:is_preview.in=>[false,nil], :is_top => true).and(:title.ne => nil).can_display.filter_by_categories([],false).filter_by_tags(tags).to_a
|
||||
else
|
||||
top_anns = Bulletin.where(:title.ne => "",:is_preview.in=>[false,nil], :is_top => true).and(:title.ne => nil).can_display.filter_by_categories([],false).filter_by_tags.to_a
|
||||
end
|
||||
end
|
||||
|
||||
if !feeds_anns.blank?
|
||||
announcements = announcements.concat(feeds_anns)
|
||||
sorted = announcements.sort{ |k,v| v["postdate"] <=> k["postdate"] }
|
||||
sorted = top_anns + sorted
|
||||
if params["keywords"].present?
|
||||
sorted = sorted.find_all{|anns|
|
||||
if anns["source-site"].present?
|
||||
/#{params[:keywords].to_s}/i.match anns["title"]
|
||||
else
|
||||
/#{params[:keywords].to_s}/i.match anns.title
|
||||
end
|
||||
}
|
||||
end
|
||||
if params["postdate"].present?
|
||||
sorted = sorted.find_all{|anns|
|
||||
if anns["source-site"].present?
|
||||
/#{params[:postdate].to_s}/i.match anns["postdate"].strftime("%Y-%m") if !anns["postdate"].nil?
|
||||
else
|
||||
/#{params[:postdate].to_s}/i.match anns.postdate.strftime("%Y-%m") if !anns.postdate.nil?
|
||||
end
|
||||
}
|
||||
end
|
||||
sorted = Kaminari.paginate_array(sorted).page(OrbitHelper.page_number).per(OrbitHelper.page_data_count) rescue []
|
||||
else
|
||||
announcements = top_anns + announcements
|
||||
if params["keywords"].present?
|
||||
announcements = announcements.find_all{|anns| /#{params[:keywords].to_s}/i.match anns.title}
|
||||
end
|
||||
if params["postdate"].present?
|
||||
announcements = announcements.find_all{|anns|
|
||||
if !anns.postdate.nil?
|
||||
/#{params[:postdate].to_s}/i.match anns.postdate.strftime("%Y-%m")
|
||||
end
|
||||
}
|
||||
end
|
||||
sorted = Kaminari.paginate_array(announcements).page(OrbitHelper.page_number).per(OrbitHelper.page_data_count) rescue []
|
||||
end
|
||||
[announcements,sorted]
|
||||
end
|
||||
end
|
|
@ -1 +1,69 @@
|
|||
<%
|
||||
require 'announcements_helper'
|
||||
params = OrbitHelper.params
|
||||
page = Page.where(url:params['url']).first
|
||||
@show_back_and_next_flag = 0
|
||||
if page.methods.include? 'select_option_items'.to_sym
|
||||
ModuleApp.all.select{|tmp| tmp.key.to_s=='announcement'}.each do |modile_app|
|
||||
@show_option_items = modile_app.show_option_items rescue nil
|
||||
end
|
||||
page.select_option_items.each do |select_option_item|
|
||||
if !(@show_option_items.nil?) && select_option_item.field_name == @show_option_items.keys.first.to_s
|
||||
value = YAML.load(select_option_item.value)
|
||||
if value[I18n.locale] == t('announcement.not_show')
|
||||
@show_back_and_next_flag = 0
|
||||
elsif value[I18n.locale] == t('announcement.show_top')
|
||||
@show_back_and_next_flag = 1
|
||||
elsif value[I18n.locale] == t('announcement.show_bottom')
|
||||
@show_back_and_next_flag = 2
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if @show_back_and_next_flag != 0
|
||||
uid = params['uid']
|
||||
announcements,sorted = get_sorted_annc
|
||||
now_index = sorted.to_enum.with_index.select{|v| v[0].uid==uid}[0][1]
|
||||
if now_index != 0
|
||||
prev_result = sorted[now_index-1]
|
||||
prev_url = params['url'] + '/' + prev_result.to_param
|
||||
prev_content = "<a href='#{prev_url}' class='prev'><b>#{t('announcement.prev')}</b><p>#{prev_result['title'][I18n.locale]}</p></a>"
|
||||
end
|
||||
if now_index != sorted.length-1
|
||||
next_result = sorted[now_index+1]
|
||||
next_url = params['url'] + '/' + next_result.to_param
|
||||
next_content = "<a href='#{next_url}' class='next'><b>#{t('announcement.next')}</b><p>#{next_result['title'][I18n.locale]}</p></a>"
|
||||
end
|
||||
content = "<div class='see_more_boxTitle'>#{prev_content}#{next_content}</div>".html_safe
|
||||
end
|
||||
%>
|
||||
<% if @show_back_and_next_flag!=0 %>
|
||||
<style type="text/css">
|
||||
.see_more_boxTitle{
|
||||
display: flex;
|
||||
margin: 1em 0em;
|
||||
padding: 1em;
|
||||
border: 0.2em solid;
|
||||
}
|
||||
a.prev, a.next{
|
||||
width: 50%;
|
||||
border: 0.2em solid;
|
||||
padding: 1em;
|
||||
flex: 1;
|
||||
}
|
||||
a.next{
|
||||
margin-left: 1em;
|
||||
}
|
||||
a.prev{
|
||||
margin-right: 1em;
|
||||
}
|
||||
</style>
|
||||
<% end %>
|
||||
|
||||
<% if @show_back_and_next_flag==1 %>
|
||||
<%= content %>
|
||||
<% end %>
|
||||
<%= render_view %>
|
||||
<% if @show_back_and_next_flag==2 %>
|
||||
<%= content %>
|
||||
<% end %>
|
|
@ -7,6 +7,12 @@ en:
|
|||
orignal_size: Original Size
|
||||
small_size: Small Size
|
||||
medium_size: Medium Size
|
||||
showing_back_and_next: Show back and next
|
||||
not_show: Not show
|
||||
show_top: Show at top
|
||||
show_bottom: Show at bottom
|
||||
prev: previous
|
||||
next: next
|
||||
table:
|
||||
title : Title
|
||||
date : Date
|
||||
|
|
|
@ -7,6 +7,12 @@ zh_tw:
|
|||
orignal_size: 原圖大小
|
||||
small_size: 小張縮圖
|
||||
medium_size: 中等縮圖
|
||||
showing_back_and_next: 顯示上下則
|
||||
not_show: 不顯示
|
||||
show_top: 顯示在最上面
|
||||
show_bottom: 顯示在最下面
|
||||
prev: 上一則
|
||||
next: 下一則
|
||||
table:
|
||||
title : 標題
|
||||
date : 張貼日期
|
||||
|
|
|
@ -15,6 +15,18 @@ module Announcement
|
|||
value3[t_data.keys[0]] = t_data.values[0]['announcement']['orignal_size']
|
||||
end
|
||||
data[key1] = [value1,value2,value3]
|
||||
data_item = {}
|
||||
key_item1 = {}
|
||||
value_item1 = {}
|
||||
value_item2 = {}
|
||||
value_item3 = {}
|
||||
translate_data.each do |t_data|
|
||||
key_item1[t_data.keys[0]] = t_data.values[0]['announcement']['showing_back_and_next']
|
||||
value_item1[t_data.keys[0]] = t_data.values[0]['announcement']['not_show']
|
||||
value_item2[t_data.keys[0]] = t_data.values[0]['announcement']['show_bottom']
|
||||
value_item3[t_data.keys[0]] = t_data.values[0]['announcement']['show_top']
|
||||
end
|
||||
data_item[key_item1] = [value_item1,value_item2,value_item3]
|
||||
OrbitApp.registration "Announcement", :type => "ModuleApp" do
|
||||
module_label "announcement.announcement"
|
||||
base_url File.expand_path File.dirname(__FILE__)
|
||||
|
@ -28,6 +40,7 @@ module Announcement
|
|||
data_count 1..30
|
||||
begin
|
||||
show_options data
|
||||
show_option_items data_item
|
||||
rescue => e
|
||||
puts ['there_was_no_show_option_method',e]
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue