docbrown/app/helpers/application_helper.rb
rhymes e588fa7ece Code cleanups (#659)
* Initial automatic cleanup with rubocop

* Fix syntax error introduced by rubocop

* Cleanup seeds file

* Cleanup lib folder

* Exclude bin folder because it contains auto generated files

* Make Rubocop a little bit more chatty

* Block length should not include comments in the count

* Cleanup config folder

* Cleanup specs

* Updated Rubocop version and generated a todo file

* Fix broken ArticlesApi spec

* Fix tests

* Restored rubocop pre-commit hook
2018-08-07 11:00:13 -04:00

178 lines
5.2 KiB
Ruby

module ApplicationHelper
def user_logged_in_status
user_signed_in? ? "logged-in" : "logged-out"
end
def current_page
"#{controller_name}-#{controller.action_name}"
end
def view_class
"#{controller_name} #{controller_name}-#{controller.action_name}"
end
def core_pages?
controller_name == "articles" ||
controller_name == "podcast_episodes" ||
controller_name == "events" ||
controller_name == "tags" ||
controller_name == "registrations" ||
controller_name == "users" ||
controller_name == "pages" ||
controller_name == "chat_channels" ||
controller_name == "dashboards" ||
controller_name == "moderations" ||
controller_name == "videos" ||
controller_name == "badges" ||
controller_name == "stories" ||
controller_name == "comments" ||
controller_name == "notifications" ||
controller_name == "reading_list_items"
end
def render_js?
!((controller_name == "articles" && (controller.action_name == "index" || controller.action_name == "show")) || controller_name == "pulses")
end
def title(page_title)
derived_title = if page_title.include?("DEV")
page_title
else
page_title + " - DEV Community 👩‍💻👨‍💻"
end
content_for(:title) { derived_title }
derived_title
end
def icon(name, pixels = "20")
image_tag icon_url(name), alt: name, class: "icon-img", height: pixels, width: pixels
end
def icon_url(name)
prefix = "https://res.cloudinary.com/practicaldev/image/upload/"
case name
when "twitter"
prefix + "v1456342401/twitter-logo-silhouette_1_letrqc.png"
when "github"
prefix + "v1456342401/github-logo_m841aq.png"
when "link"
prefix + "v1456342401/link-symbol_apfbll.png"
when "volume"
prefix + "v1461589297/technology_1_aefet2.png"
when "volume-mute"
prefix + "v1461589297/technology_jiugwb.png"
else
prefix + "v1456342953/star-in-black-of-five-points-shape_sor40l.png"
end
end
def cloudinary(url, width = nil, _quality = 80, _format = "jpg")
if Rails.env.development? && (url.blank? || !url.include?("http"))
return url
end
if url&.size&.positive?
if width
"https://res.cloudinary.com/practicaldev/image/fetch/c_scale,fl_progressive,q_auto,w_#{width}/f_auto/#{url}"
else
"https://res.cloudinary.com/practicaldev/image/fetch/c_scale,fl_progressive,q_auto/f_auto/#{url}"
end
else
"https://res.cloudinary.com/practicaldev/image/fetch/c_scale,fl_progressive,q_1/f_auto/https://pbs.twimg.com/profile_images/481625927911092224/iAVNQXjn_normal.jpeg"
end
end
def cloud_cover_url(url)
return nil unless url.present?
return asset_path("triple-unicorn") if Rails.env.test?
return url if Rails.env.development?
width = 1000
height = 420
quality = "auto"
cl_image_path(url,
type: "fetch",
width: width,
height: height,
crop: "imagga_scale",
quality: quality,
flags: "progressive",
fetch_format: "auto",
sign_url: true)
end
def cloud_social_image(article)
Rails.cache.
fetch("article-social-img-#{article}-#{article.updated_at}-#{article.comments_count}",
expires_in: 1.hour) do
src = GeneratedImage.new(article).social_image
return src if src.include? "res.cloudinary"
cl_image_path(src,
type: "fetch",
width: "1000",
height: "500",
crop: "imagga_scale",
quality: "auto",
flags: "progressive",
fetch_format: "auto",
sign_url: true)
end
end
def tag_colors(tag)
Rails.cache.fetch("view-helper-#{tag}/tag_colors", expires_in: 5.hours) do
if found_tag = Tag.find_by_name(tag)
{ background: found_tag.bg_color_hex, color: found_tag.text_color_hex }
else
{ background: "#d6d9e0", color: "#606570" }
end
end
end
def beautified_url(url)
url.sub(/^((http[s]?|ftp):\/)?\//, "").sub(/\?.*/, "").chomp("/")
rescue StandardError
url
end
def org_bg_or_white(org)
org&.bg_color_hex ? org.bg_color_hex : "#ffffff"
end
def sanitize_rendered_markdown(processed_html)
ActionController::Base.helpers.sanitize processed_html.html_safe,
scrubber: RenderedMarkdownScrubber.new
end
def sanitized_sidebar(text)
ActionController::Base.helpers.sanitize simple_format(text),
tags: %w(p b i em strike strong u br)
end
def track_split_version(url, version)
"trackOutboundLink('#{url}','#{version}'); return false;"
end
def follow_button(followable, style = "full")
"<button class='cta follow-action-button' data-info='{\"id\":#{followable.id},\"className\":\"#{followable.class.name}\",\"style\":\"#{style}\"}' data-follow-action-button>&nbsp;</button>".html_safe
end
def user_colors_style(user)
"border: 2px solid #{user.decorate.darker_color}; box-shadow: 5px 6px 0px #{user.decorate.darker_color}"
end
def user_colors(user)
user.decorate.enriched_colors
end
def timeframe_check(given_timeframe)
params[:timeframe] == given_timeframe
end
def list_path
if params[:tag].present?
"/t/#{params[:tag]}"
else
""
end
end
end