fix json & search word
This commit is contained in:
parent
872b4a377f
commit
c6cce8eb3e
|
@ -0,0 +1,119 @@
|
|||
# encoding: utf-8
|
||||
class Admin::NewsbulletinsController < ApplicationController
|
||||
before_filter :set_I18n
|
||||
|
||||
def get_bulletins
|
||||
page = Page.where(:module => "news").first rescue nil
|
||||
|
||||
# 頁次
|
||||
page_num = params[:page_num].blank? ? 0 : params[:page_num].to_i
|
||||
# 每頁顯示的則數
|
||||
per_page = params[:per_page].blank? ? 10 : params[:per_page].to_i
|
||||
per_page = per_page > 0 ? per_page : 10
|
||||
|
||||
if !params[:keyword].blank?
|
||||
keyword = Regexp.new(".*"+params[:keyword]+".*")
|
||||
bulletins = NewsBulletin.any_of({:title=>keyword},{:subtitle=>keyword},{:text=>keyword})
|
||||
else
|
||||
bulletins = NewsBulletin.all
|
||||
end
|
||||
|
||||
bulletins = bulletins.where(:is_hot => params[:is_hot]) if !params[:is_hot].blank?
|
||||
bulletins = bulletins.where(:category_id.in => params[:categories]) if !params[:categories].blank?
|
||||
bulletins = bulletins.where(:tagged_ids.in => params[:tags]) if !params[:tags].blank?
|
||||
bulletins = bulletins.where(:is_preview.in=>[false,nil])
|
||||
|
||||
bulletins = bulletins.desc( :is_top, :postdate).page(page_num).per(per_page)
|
||||
|
||||
bulletins = bulletins.collect do |b|
|
||||
image = request.protocol + request.host_with_port + b.image.url rescue nil
|
||||
|
||||
links = b.bulletin_links.collect do |bl|
|
||||
{
|
||||
"title" => bl.title_translations,
|
||||
"url" => bl.url
|
||||
}
|
||||
end rescue nil
|
||||
|
||||
files = b.bulletin_files.collect do |bf|
|
||||
file = request.protocol + request.host_with_port + bf.file.url rescue nil
|
||||
{
|
||||
"title" => bf.title_translations,
|
||||
"description" => bf.description_translations,
|
||||
"file" => file
|
||||
}
|
||||
end rescue nil
|
||||
|
||||
ts = b.tags.collect do |t|
|
||||
{
|
||||
"name" => t.name_translations
|
||||
}
|
||||
end rescue nil
|
||||
|
||||
text = {"en" => "", "zh_tw" => ""}
|
||||
text["en"] = (b.text_translations["en"].nil? ? "" :smart_convertor(b.text_translations["en"]))
|
||||
text["zh_tw"] = (b.text_translations["zh_tw"].nil? ? "" : smart_convertor(b.text_translations["zh_tw"]))
|
||||
|
||||
author = User.find(b.create_user_id).member_profile.name rescue ""
|
||||
|
||||
{
|
||||
"id" => b.id.to_s,
|
||||
"title" => b.title_translations,
|
||||
"subtitle" => b.subtitle_translations,
|
||||
"text" => text,
|
||||
"postdate" => b.postdate,
|
||||
"deadline" => b.deadline,
|
||||
"category" => b.category.title_translations,
|
||||
"tags" => ts,
|
||||
"image" => image,
|
||||
"links" => links,
|
||||
"files" => files,
|
||||
"author" => author,
|
||||
"url" => "/#{I18n.locale.to_s + page.url}/#{b.to_param}"
|
||||
}
|
||||
|
||||
end
|
||||
|
||||
# 計算總筆數 Start
|
||||
if !params[:keyword].blank?
|
||||
keyword = Regexp.new(".*"+params[:keyword]+".*")
|
||||
bulletin_count = NewsBulletin.any_of({:title=>keyword},{:subtitle=>keyword},{:text=>keyword})
|
||||
else
|
||||
bulletin_count = NewsBulletin.all
|
||||
end
|
||||
bulletin_count = bulletin_count.where(:is_preview.in=>[false,nil])
|
||||
total_pages = bulletin_count.count
|
||||
# End
|
||||
|
||||
render :json => {
|
||||
"bulletins" => bulletins,
|
||||
"bulletins_count" => bulletins.count,
|
||||
"page_num" => page_num,
|
||||
"total_pages" => total_pages,
|
||||
}.to_json
|
||||
end
|
||||
|
||||
def smart_convertor(text)
|
||||
html_string = text
|
||||
links = html_string.scan(/img.*?src="(.*?)"/i)
|
||||
links.each do |link|
|
||||
l = link.first
|
||||
new_link = nil
|
||||
if l.starts_with?("/")
|
||||
new_link = request.protocol + request.host_with_port + l
|
||||
elsif l.starts_with?("..")
|
||||
l1 = l.gsub("../","")
|
||||
new_link = request.protocol + request.host_with_port + "/" + l1
|
||||
end
|
||||
html_string = html_string.sub(l,new_link) if !new_link.nil?
|
||||
end
|
||||
return html_string
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def set_I18n
|
||||
I18n.locale = params[:lang] if params[:lang].present?
|
||||
end
|
||||
|
||||
end
|
|
@ -7,13 +7,13 @@ class NewsController < ApplicationController
|
|||
if params[:keywords]
|
||||
!params[:sort].blank? ? sort = {params[:sort].to_sym=>params[:order]} : sort = {:is_top=>"desc",:postdate=>"desc"}
|
||||
news = NewsBulletin.where(:title.ne => "").any_of(:title => /#{params[:keywords].to_s}/i).can_display_postdate.is_approved.order_by(sort).filter_by_categories(["all"]).per(15) if !params[:keywords].nil?
|
||||
news_count = ",共有" + news.count.to_s + "筆資料"
|
||||
news_count = ",共搜尋到" + news.count.to_s + "筆資料"
|
||||
keyword = "搜尋標題有關 ' " + params[:keywords] + " '"
|
||||
elsif params[:department]
|
||||
!params[:sort].blank? ? sort = {params[:sort].to_sym=>params[:order]} : sort = {:is_top=>"desc",:postdate=>"desc"}
|
||||
dept = Department.find_by(:uid => params["department"].split("-").last) rescue nil
|
||||
news = NewsBulletin.where(:title.ne => "" ,:department => dept).can_display_postdate.is_approved.order_by(sort).filter_by_categories(["all"]) if !dept.nil?
|
||||
news_count = ",共有" + news.count.to_s + "筆資料"
|
||||
news_count = ",共搜尋到" + news.count.to_s + "筆資料"
|
||||
|
||||
keywords = params[:department].split("-")
|
||||
keywords.delete(keywords.last)
|
||||
|
@ -27,7 +27,7 @@ class NewsController < ApplicationController
|
|||
unit = Unit.find_by(:uid => params["unit"].split("-").last) rescue nil
|
||||
!params[:sort].blank? ? sort = {params[:sort].to_sym=>params[:order]} : sort = {:is_top=>"desc",:postdate=>"desc"}
|
||||
news = NewsBulletin.where(:title.ne => "" ,:unit => unit).can_display_postdate.is_approved.order_by(sort).filter_by_categories(["all"]) if !unit.nil?
|
||||
news_count = ",共有" + news.count.to_s + "筆資料"
|
||||
news_count = ",共搜尋到" + news.count.to_s + "筆資料"
|
||||
|
||||
keywords = params[:unit].split("-")
|
||||
keywords.delete(keywords.last)
|
||||
|
@ -40,7 +40,7 @@ class NewsController < ApplicationController
|
|||
!params[:sort].blank? ? sort = {params[:sort].to_sym=>params[:order]} : sort = {:is_top=>"desc",:postdate=>"desc"}
|
||||
category = Category.find_by(:uid => params["category"].split("-").last) rescue nil
|
||||
news = NewsBulletin.all.where(:title.ne => "").can_display_postdate.is_approved.order_by(sort).filter_by_categories([category.id.to_s]) if !category.nil?
|
||||
news_count = ",共有" + news.count.to_s + "筆資料"
|
||||
news_count = ",共搜尋到" + news.count.to_s + "筆資料"
|
||||
|
||||
keywords = params[:category].split("-")
|
||||
keywords.delete(keywords.last)
|
||||
|
|
Loading…
Reference in New Issue