links/app/controllers/web_resources_controller.rb

84 lines
2.5 KiB
Ruby

class WebResourcesController < ApplicationController
require 'nokogiri'
def index
OrbitHelper.render_css_in_head(["web_resources_front"])
links = WebLink.where(:title.ne => "").can_display.filter_by_categories
web_link = links.collect do |link|
statuses = link.statuses_with_classname.collect do |status|
{
"status" => status["name"],
"status-class" => "status-#{status['classname']}"
}
end
if link.link_open == "new_window"
target = "_blank"
elsif link.link_open == "local"
target = "_self"
end
doc = Nokogiri::HTML(link.title.to_s)
text = doc.css("body")[0].text rescue ""
if text.blank? && doc.css("img").count != 0
text = doc.css("img").map{|img| img.attr("alt") rescue ""}.select{|t| t.present?}.first
end
desc = link.image_description
desc = (desc.blank? ? "web resource image" : desc)
{
"title" => link.title,
"title_text" => text,
"img_src" => link.image.thumb.url || "/assets/announcement-default.jpg",
"img_description" => desc,
"context" => nl2br(link.context.to_s),
"statuses" => statuses,
"category" => link.category.title,
"link_to_show" => link.url,
"target" => target
}
end
{
"web_link" => web_link,
"extras" => {
"widget-title"=>t(:web_resource)
},
"total_pages" => links.total_pages
}
end
def widget
links = WebLink.where(:title.ne => "").can_display.filter_by_widget_categories
web_link = links.collect do |link|
statuses = link.statuses_with_classname.collect do |status|
{
"status" => status["name"],
"status-class" => "status-#{status['classname']}"
}
end
if link.link_open == "new_window"
target = "_blank"
elsif link.link_open == "local"
target = "_self"
end
doc = Nokogiri::HTML(link.title.to_s)
text = doc.css("body")[0].text rescue ""
if text.blank? && doc.css("img").count != 0
text = doc.css("img").map{|img| img.attr("alt") rescue ""}.select{|t| t.present?}.first
end
{
"title" => link.title,
"title_text" => text,
"context" => nl2br(link.context.to_s),
"statuses" => statuses,
"link_to_show" => link.url,
"target" => target
}
end
{
"web_link" => web_link,
"extras" => {"widget-title"=>t(:web_resource),"more_url" => OrbitHelper.widget_more_url}
}
end
def nl2br(val)
val.gsub(/\r\n/, '<br />').html_safe
end
end