256 lines
12 KiB
Ruby
256 lines
12 KiB
Ruby
module VideoProgramsHelper
|
|
def render_ad_banner(event_carousel_images,data)
|
|
("<div class=\"carousel_images\">
|
|
<div class=\"w-ba-banner ba-banner-widget-1\">
|
|
<div class=\"w-ba-banner__wrap cycle-slideshow\"
|
|
data-list=\"event_carousel_images\"
|
|
data-level=\"0\"
|
|
data-cycle-slides=\".video_program_carousel_slide\"
|
|
data-cycle-log=\"false\"
|
|
data-cycle-auto-height=\"0\"
|
|
data-cycle-speed=\"300\"
|
|
data-cycle-timeout=\"5000\"
|
|
data-cycle-fx=\"fade\"
|
|
data-pager-active-class=\"active-slide\"
|
|
data-cycle-swipe=true
|
|
data-cycle-swipe-fx=\"scrollHorz\"
|
|
>" +
|
|
event_carousel_images.collect do |e|
|
|
"<div class=\"w-ba-banner__slide video_program_carousel_slide\"
|
|
data-cycle-title=\"#{e['description_text']}\"
|
|
>
|
|
<img class=\"w-ba-banner__image banner-responsive\" src=\"#{e['src']}\" alt=\"#{e['description_text']}\" title=\"#{e['description_text']}\">
|
|
<div class=\"ad-overlay w-ad-banner__overlay event_carousel__overlay\">
|
|
<p><strong class=\"carousel__description\">#{e['description']}</strong></p>
|
|
</div>
|
|
<div class=\"transitionfade\"></div>
|
|
</div>"
|
|
end.join+
|
|
"</div>
|
|
<ul class=\"controlplay\"><a class=\"resume-slide\" title = \"#{data['resume_btn_title']}\"><i></i></a><a class=\"pause-slide\" title = \"#{data['pause_btn_title']}\"><i></i></a></ul>
|
|
<ul class=\"button-mid\">
|
|
<i class=\"fa fa-angle-left prev-button\" aria-hidden=\"true\" title = \"#{data['prev_btn_title']}\"></i>
|
|
<i class=\"fa fa-angle-right next-button\" aria-hidden=\"true\" title = \"#{data['next_btn_title']}\"></i>
|
|
</ul>
|
|
</div>
|
|
<div style=\"position: relative;\">
|
|
<h4><span class=\"active_slide\">1</span>/#{data['carousel_count']}</h4>
|
|
<ul class=\"carousel_images_slide w-video_program__list row list-unstyled\" data-level=\"0\" data-list=\"event_carousel_images\">" +
|
|
event_carousel_images.collect do |e|
|
|
"<li class=\"carousel_img_item col-md-3 col-sm-6\">
|
|
<div class=\"carousel_img-wrap\">
|
|
<img class=\"carousel_img\" src=\"#{e['src']}\" alt=\"#{e['description_text']}\" title=\"#{e['description_text']}\">
|
|
</div>
|
|
</li>"
|
|
end.join +
|
|
"</ul>
|
|
<ul class=\"button-mid\">
|
|
<i class=\"fa fa-angle-left prev-button prev_img\" aria-hidden=\"true\" title = \"#{data['prev_btn_title']}\"></i>
|
|
<i class=\"fa fa-angle-right next-button next_img\" aria-hidden=\"true\" title = \"#{data['next_btn_title']}\"></i>
|
|
</ul>
|
|
</div>
|
|
</div>").html_safe
|
|
end
|
|
def get_feed_annc(type,site_source,locale,categories=nil)
|
|
ma_key = 'video_programs'
|
|
if categories.nil?
|
|
if type == "index"
|
|
categories = Array(OrbitHelper.page_categories)
|
|
elsif type == "widget"
|
|
categories = Array(OrbitHelper.widget_categories)
|
|
else
|
|
categories = []
|
|
end
|
|
end
|
|
categories = ["all"] if categories.length==0
|
|
if categories.include?("all")
|
|
feeds = SiteFeedAnnc.where(:channel_key => ma_key)
|
|
else
|
|
feeds = SiteFeedAnnc.where(:channel_key => ma_key, :merge_with_category.in => categories)
|
|
end
|
|
if feeds.count > 0
|
|
temp_ids = []
|
|
data = feeds.collect do |feed|
|
|
feed.all_contents_for_feed(site_source,locale,type=='widget')
|
|
end.flatten.compact
|
|
else
|
|
data = []
|
|
end
|
|
data
|
|
end
|
|
def get_feed_video_programs(type,site_source=nil,categories=nil,max_len=nil)
|
|
locale = OrbitHelper.get_site_locale.to_s
|
|
if !(defined? SiteFeedAnnc).nil?
|
|
fans = get_feed_annc(type,site_source,locale,categories)
|
|
else
|
|
feed_anns = OrbitHelper.get_feed_for_module(type)
|
|
fans = []
|
|
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["event_news_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["event_news_links"].map{|link| { "link_url" => link["url"], "link_title" => (link["title_translations"][locale].blank? ? link["url"] : link["title_translations"][locale]) } } rescue []
|
|
event_time_formated = a.event_time_formated
|
|
s = DateTime.parse(fa["event_date"]) rescue nil
|
|
e = DateTime.parse(fa["event_end_date"]) rescue nil
|
|
date_parse_format = fa["all_day"] ? '%Y-%m-%d' : '%Y-%m-%d %H:%M'
|
|
if s.blank? && e.blank?
|
|
event_time_formated = ""
|
|
elsif s.blank?
|
|
event_time_formated = s.strftime(date_parse_format)
|
|
elsif e.blank?
|
|
event_time_formated = "~ " + e.strftime(date_parse_format)
|
|
else
|
|
if s.to_date == e.to_date
|
|
date_str = s.strftime('%Y-%m-%d')
|
|
s_time = s.strftime('%H:%M')
|
|
e_time = e.strftime('%H:%M')
|
|
event_time_formated = "#{date_str} #{s_time} ~ #{e_time}"
|
|
else
|
|
event_time_formated = s.strftime(date_parse_format) + " ~ " + e.strftime(date_parse_format)
|
|
end
|
|
end
|
|
x = {
|
|
"event_news_links" => links,
|
|
"event_news_files" => files,
|
|
"event_carousel_images" => fa["event_carousel_images"].to_a,
|
|
"title" => fa["title_translations"][locale],
|
|
"speaker-css" => (fa["speaker_translations"][locale].blank? ? "display: none;" : ""),
|
|
"host-css" => (fa["host_translations"][locale].blank? ? "display: none;" : ""),
|
|
"place-css" => (fa["place_translations"][locale].blank? ? "display: none;" : ""),
|
|
"event-time-css" => (event_time_formated.blank? ? "display: none;" : ""),
|
|
"notes-css" => (fa["notes_translations"][locale].blank? ? "display: none;" : ""),
|
|
"event-time-formated" => event_time_formated,
|
|
"speaker" => (fa["speaker_translations"][locale].to_s rescue ""),
|
|
"place" => (fa["place_translations"][locale].to_s rescue ""),
|
|
"host" => (fa["host_translations"][locale].to_s rescue ""),
|
|
"notes" => (fa["notes_translations"][locale].to_s rescue ""),
|
|
"subtitle" => fa["subtitle_translations"][locale],
|
|
"statuses" => [status],
|
|
"category" => fa["category"],
|
|
"postdate" => (DateTime.parse(fa["event_date"]) rescue DateTime.now),
|
|
"event_date" => (DateTime.parse(fa["event_date"]) rescue DateTime.now),
|
|
"author" => fa["author"],
|
|
"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/video_programs-default.jpg",
|
|
"img_description" => fa["image_description_translations"][locale],
|
|
"more" => t("video_programs.more"),
|
|
"view_count" => ""
|
|
}
|
|
if (!x["title"].empty? rescue false)
|
|
fans << x
|
|
end
|
|
end
|
|
end
|
|
fans
|
|
end
|
|
def filter_by_keywords(sorted,keywords,stime,etime)
|
|
kflag = keywords.blank?
|
|
sflag = stime.blank?
|
|
eflag = etime.blank?
|
|
stime = stime.to_s.split('/')
|
|
stime = Time.zone.local(*stime) rescue nil
|
|
etime = etime.to_s.split('/')
|
|
etime = Time.zone.local(*etime) rescue nil
|
|
if !kflag || !sflag || !eflag
|
|
sorted.select{|anns|
|
|
if kflag
|
|
flag = true
|
|
else
|
|
if anns["source-site"].present?
|
|
title = Nokogiri::HTML(anns["title"].to_s).text
|
|
else
|
|
title = Nokogiri::HTML(anns.title.to_s).text
|
|
end
|
|
flag = title.include?(keywords.to_s)
|
|
end
|
|
flag
|
|
}
|
|
else
|
|
sorted
|
|
end
|
|
end
|
|
def get_sorted_video_programs(data_count=nil)
|
|
params = OrbitHelper.params
|
|
locale = OrbitHelper.get_site_locale.to_s
|
|
page_number = OrbitHelper.page_number.to_i
|
|
page_number = 1 if page_number == 0
|
|
page_data_count = data_count || OrbitHelper.page_data_count.to_i
|
|
feeds_anns = []
|
|
page = OrbitHelper.page rescue nil
|
|
page = Page.where(url: params['url']).first if page.nil?
|
|
if @type == "show_widget"
|
|
tags = @tags
|
|
categories = @categories
|
|
else
|
|
tags = page.tags
|
|
tags = params[:tags] if params[:tags].present?
|
|
categories = params['category']=='all' ? (page.categories || []) : (Array(params['category']) rescue (page.categories || []))
|
|
if params['category'].present? && tags.blank?
|
|
tags = ["all"]
|
|
end
|
|
end
|
|
if params["source"].blank?
|
|
if @type == "show_widget"
|
|
if params[:uids].blank?
|
|
video_programs = VideoProgram.where(:title.nin => ["",nil],:is_preview.in=>[false,nil])
|
|
.can_display_and_sorted
|
|
.filter_by_categories(categories,false).filter_by_tags(tags).to_a
|
|
else
|
|
member_prfile = MemberProfile.any_in(:uid=>params[:uids])
|
|
user_ids = member_prfile.map{|m| m.user.id rescue nil}.select{|id| !id.nil?}
|
|
video_programs = VideoProgram.where(:title.nin => ["",nil],:is_preview.in=>[false,nil],:create_user_id.in=>user_ids)
|
|
.can_display_and_sorted
|
|
.filter_by_categories(categories,false).filter_by_tags(tags).to_a
|
|
end
|
|
else
|
|
video_programs = VideoProgram.where(:title.nin => ["",nil],:is_preview.in=>[false,nil])
|
|
.can_display_and_sorted
|
|
.filter_by_categories(categories,false).filter_by_tags(tags).to_a
|
|
end
|
|
if false #!(defined? SiteFeed).nil?
|
|
if @type != "show_widget"
|
|
feeds_anns = get_feed_video_programs("index",nil,nil,page_number*page_data_count)
|
|
else
|
|
feeds_anns = []
|
|
end
|
|
end
|
|
else
|
|
video_programs = []
|
|
if false # @type != "show_widget"
|
|
feeds_anns = get_feed_video_programs("index",params["source"],nil,page_number*page_data_count)
|
|
else
|
|
feeds_anns = []
|
|
end
|
|
end
|
|
if feeds_anns.present?
|
|
if video_programs.count != 0
|
|
top_anns = video_programs.select{|v| v.is_top} + feeds_anns.select{|v| v['is_top']}
|
|
rest_all_anns = feeds_anns.select{|v| v['is_top'] != true} + video_programs.select{|v| !v.is_top}
|
|
rest_anns = rest_all_anns.sort_by { |a| tmp=a["postdate"].blank?;[tmp ? 0 : 1, tmp ? nil : a["postdate"].to_time] }.reverse
|
|
all_sorted = top_anns.sort_by { |a| tmp=a["postdate"].blank?;[tmp ? 0 : 1, tmp ? nil : a["postdate"].to_time] }.reverse + rest_anns
|
|
else
|
|
all_sorted = feeds_anns.select{|v| v['is_top']}.sort_by { |a| tmp=a["postdate"].blank?;[tmp ? 0 : 1, tmp ? nil : a["postdate"].to_time] }.reverse + feeds_anns.select{|v| v['is_top'] != true}.sort_by { |a| tmp=a["postdate"].blank?;[tmp ? 0 : 1, tmp ? nil : a["postdate"].to_time] }.reverse
|
|
end
|
|
all_filter = filter_by_keywords(all_sorted,params[:keywords],params[:stime],params[:etime])
|
|
else
|
|
all_filter = filter_by_keywords(video_programs,params[:keywords],params[:stime],params[:etime])
|
|
end
|
|
if page_data_count != 0
|
|
sorted = all_filter[(page_number-1)*page_data_count...page_number*page_data_count]
|
|
else
|
|
sorted = all_filter
|
|
end
|
|
annc_count = all_filter.count
|
|
total_pages = page_data_count == 0 ? 1 : (annc_count.to_f / page_data_count).ceil
|
|
[sorted,total_pages]
|
|
end
|
|
end |