gallery/app/controllers/galleries_controller.rb

293 lines
11 KiB
Ruby
Raw Normal View History

class GalleriesController < ApplicationController
2021-04-04 05:03:24 +00:00
find_tag = Tag.all.select{|value| value.name==I18n.t('gallery.not_show_desc')}
if find_tag.length==0
module_app_id = ModuleApp.where(:key=>"gallery").first[:_id]
tags = ModuleApp.where(:key=>"gallery").first.tags
tag0 = Tag.new(is_default: false,module_app_ids: [module_app_id])
tag1 = Tag.new(is_default: false,module_app_ids: [module_app_id])
nowlocale = I18n.locale
I18n.available_locales.each do |locale|
I18n.locale = locale
tag0.name = I18n.t('gallery.show_desc')
tag1.name = I18n.t('gallery.not_show_desc')
end
I18n.locale = nowlocale
tag0.save
tag1.save
tags << tag0
tags << tag1
elsif find_tag.length>1
show_tags = Tag.all.select{|value| value.name==I18n.t('gallery.show_desc')}
show_tags.each_with_index do |show_tag,index1|
if index1>0
if show_tag.taggings.count==0
show_tag.delete
end
end
end
find_tag.each_with_index do |not_show_tag,index1|
if index1>0
if not_show_tag.taggings.count==0
not_show_tag.delete
end
end
end
end
2019-11-05 06:07:59 +00:00
def index
2023-02-18 13:53:48 +00:00
set_image_version
2021-04-04 05:03:24 +00:00
@album_setting = AlbumSetting.first
2022-12-03 16:26:47 +00:00
page_no = OrbitHelper.page_number
data_count = OrbitHelper.page_data_count
albums = Album.filter_by_categories.filter_by_tags.asc(:order).page(page_no).per(data_count)
album_color_map = AlbumColor.where(:album_id.in=> albums.pluck(:id)).pluck(:album_id,:color,:album_card_background_color,:album_card_text_color).map{|v| [v[0],v[1..-1]]}.to_h
galleries = albums.collect do |a|
doc = Nokogiri::HTML(a.description.to_s)
alt_text = doc.text.empty? ? 'gallery image' : doc.text
2021-11-27 08:50:46 +00:00
colors = album_color_map[a.id] || []
thumb_src = a.cover_path(@image_version)
if thumb_src
thumb_srcs = thumb_src.split('/')
2023-05-04 13:06:02 +00:00
thumb_srcs[-1] = thumb_srcs[-1].sub(/^(?:(?!_).)*_/,"")
thumb_path = thumb_srcs[0..-2].join('/')
thumb_path_name = thumb_srcs[-1]
src = "#{thumb_path}/#{thumb_path_name}"
thumb_large_src = "#{thumb_path}/thumb_large_#{thumb_path_name}"
mobile_src = "#{thumb_path}/mobile_#{thumb_path_name}"
theater_src = "#{thumb_path}/theater_#{thumb_path_name}"
else
src = thumb_src = thumb_large_src = mobile_src = theater_src = "/assets/gallery/default.jpg"
end
{
"album-name" => a.name,
"album-description" => a.description,
"alt_title" => alt_text,
"link_to_show" => OrbitHelper.url_to_show(a.to_param),
2022-01-17 12:05:10 +00:00
"thumb-src" => thumb_src,
"src" => src,
"thumb-large-src" => thumb_large_src,
"mobile-src" => mobile_src,
"theater-src" => theater_src,
2021-04-04 05:03:24 +00:00
"album_color" => iterate_data(colors[1],colors[0],@album_setting.album_card_background_color,'transparent'),
"album_card_text_color" => iterate_data(colors[2],@album_setting.album_card_text_color)
}
end
{
2014-06-18 11:56:12 +00:00
"albums" => galleries,
2014-06-18 10:17:32 +00:00
"extras" => {"widget-title"=>"Gallery"},
2022-12-03 16:26:47 +00:00
"total_pages" => albums.total_pages
}
end
def show
2023-02-18 13:53:48 +00:00
set_image_version
2021-04-04 05:03:24 +00:00
@album_setting = AlbumSetting.first
params = OrbitHelper.params
2022-10-24 08:25:33 +00:00
album = Album.find_by_param(params[:uid].to_s)
flag = show_desc?
2021-11-27 08:50:46 +00:00
colors = (AlbumColor.where(:album_id=> album.id).pluck(:color,:album_card_background_color,:album_card_text_color)[0])||[] rescue []
images = album.album_images.asc(:order).collect do |a|
2023-02-18 13:53:48 +00:00
src = a.file.url
thumb_large_src = a.file.thumb_large.url
mobile_src = a.file.mobile.url
theater_src = a.file.theater.url
case @image_version
when 'thumb'
thumb_src = a.file.thumb.url
when 'thumb_large'
thumb_src = thumb_large_src
when 'mobile'
thumb_src = mobile_src
end
2021-04-04 05:03:24 +00:00
alt_text = (a.description.blank? ? "gallery image" : Nokogiri::HTML(a.description.to_s).text())
{
"image-description" => (flag ? a.description : ''),
2021-04-04 05:03:24 +00:00
"image_short_description" => a.title,
2015-05-28 09:48:35 +00:00
"alt_title" => alt_text,
2020-03-27 08:50:29 +00:00
"link_to_show" => "#" + a.id.to_s,
2022-04-06 05:46:38 +00:00
"src" => a.file.url,
2023-02-18 13:53:48 +00:00
"thumb-src" => thumb_src,
"thumb-large-src" => thumb_large_src,
"mobile-src" => mobile_src,
"theater-src" => theater_src,
2021-04-04 05:03:24 +00:00
"album_color" => iterate_data(colors[1],colors[0],@album_setting.album_card_background_color,'transparent'),
"album_card_text_color" => iterate_data(colors[2],@album_setting.album_card_text_color)
}
end
{
"images" => images,
"data" => {"album-title"=>album.name,
"album-description" => (flag ? "<p><span>#{album.description}</span></p>" : "")}
}
2014-05-23 06:04:26 +00:00
end
2021-04-04 05:03:24 +00:00
def iterate_data(*args)
tmp = nil
args.each do |arg|
if !arg.blank? && arg != 'transparent'
tmp = arg
break
end
end
tmp
end
2021-05-18 01:45:52 +00:00
def album_widget
@album_setting = AlbumSetting.first
params = OrbitHelper.params
tags = OrbitHelper.widget_tags.empty? ? ["all"] : OrbitHelper.widget_tags
2022-12-03 16:26:47 +00:00
albums = Album.filter_by_widget_categories(OrbitHelper.widget_categories,false).filter_by_tags(tags)
album_color_map = AlbumColor.where(:album_id.in=> albums.pluck(:id)).pluck(:album_id,:color,:album_card_background_color,:album_card_text_color).map{|v| [v[0],v[1..-1]]}.to_h
2021-05-18 01:45:52 +00:00
galleries = albums.collect.with_index do |a,i|
doc = Nokogiri::HTML(a.description.to_s)
2021-05-20 03:25:16 +00:00
alt_text = doc.text.empty? ? 'gallery image' : doc.text.strip
2021-11-27 08:50:46 +00:00
colors = album_color_map[a.id] || []
2021-05-18 01:45:52 +00:00
thumb_src = a.cover_path || "/assets/gallery/default.jpg"
cover_image = AlbumImage.find(a.cover) rescue a.album_images.first
image_description = a.description
image_short_description = a.name
{
2021-05-20 03:25:16 +00:00
"link_text" => a.name,
2021-05-18 01:45:52 +00:00
"album-name" => a.name,
"album-description" => a.description,
"alt_title" => alt_text,
2021-05-24 07:43:40 +00:00
"link_to_show" => OrbitHelper.widget_more_url + "/" + a.to_param + "#" + (cover_image.id.to_s rescue ""),
2022-01-17 12:05:10 +00:00
"src" => thumb_src.sub("thumb_",""),
2021-05-18 01:45:52 +00:00
"thumb-src" => thumb_src,
2022-01-17 12:05:10 +00:00
"thumb-large-src" => thumb_src.sub("thumb_","thumb_large_"),
"mobile-src" => thumb_src.sub("thumb_","mobile_"),
"theater-src" => thumb_src.sub("thumb_","theater_"),
2021-05-18 01:45:52 +00:00
"image_description" => image_description,
"image_short_description" => image_short_description,
"album_color" => iterate_data(colors[1],colors[0],@album_setting.album_card_background_color,'transparent'),
"album_card_text_color" => iterate_data(colors[2],@album_setting.album_card_text_color),
"i" => i
}
end
{
"images" => galleries,
"extras" => {"widget-title"=>"Gallery","more_url" => OrbitHelper.widget_more_url}
}
end
2014-05-23 06:04:26 +00:00
def widget
2021-04-04 05:03:24 +00:00
@album_setting = AlbumSetting.first
2016-01-15 08:01:39 +00:00
tags = OrbitHelper.widget_tags.empty? ? ["all"] : OrbitHelper.widget_tags
2021-11-08 15:11:18 +00:00
albums = Album.filter_by_widget_categories(OrbitHelper.widget_categories,false).filter_by_tags(tags).to_a
album_ids = []
albums_map = {}
albums.each do |ab|
album_ids << ab.id
albums_map[ab.id] = ab
end
2021-04-04 05:03:24 +00:00
album_color_map = AlbumColor.where(:album_id.in=> album_ids).pluck(:album_id,:color,:album_card_background_color,:album_card_text_color).map{|v| [v[0],v[1..-1]]}.to_h
2014-05-23 06:04:26 +00:00
params = OrbitHelper.params
2015-02-06 09:04:39 +00:00
counts = OrbitHelper.widget_data_count
2022-12-03 16:26:47 +00:00
images = AlbumImage.where(:album_id.in=>album_ids).desc(:id).limit(counts *5).sample(counts)
2021-04-10 12:53:00 +00:00
images = images.each_with_index.collect do |a,i|
2021-11-27 08:50:46 +00:00
colors = album_color_map[a.album_id] || []
2021-05-20 03:25:16 +00:00
alt_text = (a.description.blank? ? "gallery image" : Nokogiri::HTML(a.description).text().strip)
2021-11-08 15:11:18 +00:00
f = a.file
ab = albums_map[a.album_id]
2014-05-23 06:04:26 +00:00
{
2021-05-20 03:25:16 +00:00
"link_text" => "",
2021-11-08 15:11:18 +00:00
"link_to_show" => OrbitHelper.widget_more_url + "/" + ab.to_param + "#" + a.id.to_s,
2015-05-28 09:48:35 +00:00
"alt_title" => alt_text,
2021-11-08 15:11:18 +00:00
"src" => f.url,
"thumb-src" => f.thumb.url,
"thumb-large-src" => f.thumb_large.url,
2016-12-20 11:43:54 +00:00
"image_description" => a.description,
2021-04-04 05:03:24 +00:00
"image_short_description" => a.title,
2021-11-08 15:11:18 +00:00
"mobile-src" => f.mobile.url,
"theater-src" => f.theater.url,
"album-name" => ab.name_translations[I18n.locale],
2021-04-04 05:03:24 +00:00
"album_color" => iterate_data(colors[1],colors[0],@album_setting.album_card_background_color,'transparent'),
2021-04-10 12:53:00 +00:00
"album_card_text_color" => iterate_data(colors[2],@album_setting.album_card_text_color),
"i" => i
2014-05-23 06:04:26 +00:00
}
end
{
"images" => images,
2014-05-24 11:38:25 +00:00
"extras" => {"widget-title"=>"Gallery","more_url" => OrbitHelper.widget_more_url}
}
2014-05-23 06:04:26 +00:00
end
def imgs(album_id)
album = Album.find(album_id)
2015-04-16 12:07:54 +00:00
images = album.album_images.asc(:order)
output = Array.new
images.each do |values|
alt_text = (values.description.nil? || values.description == "" ? "gallery image" : values.description)
output << { _id: values.id.to_s,
description: values.description,
title: values.title,
alt_title: alt_text,
url: values.file.url,
2024-04-09 04:50:00 +00:00
file: values.file.as_json,
gallery_album_id: values.album_id,
tags: values.tags}
end
return output
end
def theater
2021-04-04 05:03:24 +00:00
if params[:id].include?('page=')
album = Album.where(uid: params[:id].sub('page=','')).first
albumid = album.id
image = album.album_images.first
else
image = AlbumImage.find(params[:id])
albumid = image.album_id
album = Album.find(albumid)
end
2015-04-16 12:07:54 +00:00
images = album.album_images.asc(:order)
data = {
2015-07-16 11:27:14 +00:00
"album" => album,
"image" => image.id.to_s,
"images" => imgs(albumid)
}
render :json => {"data" => data}.to_json
end
2019-11-05 06:07:59 +00:00
private
2019-11-05 06:07:59 +00:00
def show_desc?
tags = OrbitHelper.page_tags if tags.blank?
tags = [tags].flatten.uniq
flag = true
tag_temp = Tag.all.select{|value| tags.include? value.id.to_s}
tag_temp_length = 0
tag_temp.each do |value|
if value.name==I18n.t('gallery.show_desc')
flag = true
elsif value.name==I18n.t('gallery.not_show_desc')
flag = false
end
end
flag
end
2023-02-18 13:53:48 +00:00
def set_image_version
page = OrbitHelper.page
@image_version = 'thumb'
ModuleApp.all.select{|tmp| tmp.key.to_s=='gallery'}.each do |modile_app|
@show_option_items = modile_app.show_option_items rescue nil
end
if !(@show_option_items.nil?)
I18n.with_locale(:en) do
page.select_option_items.each do |select_option_item|
case select_option_item.field_name
when @show_option_items.keys[1].to_s
value = YAML.load(select_option_item.value)
tmp = value[:en]
if tmp == t('gallery.small_size')
@image_version = 'thumb'
elsif tmp == t('gallery.medium_size')
@image_version = 'thumb_large'
elsif tmp == t('gallery.large_size')
@image_version = 'mobile'
end
end
end
end
end
end
2021-11-08 15:11:18 +00:00
end