
Since both projects are developed together and by the same team, we also want to have the same code structure and utility methods available in both projects. Therefore, this commit changes many files, but without a functional change.
85 lines
1.8 KiB
Ruby
85 lines
1.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module ApplicationHelper
|
|
APPLICATION_NAME = 'CodeOcean'
|
|
|
|
def application_name
|
|
APPLICATION_NAME
|
|
end
|
|
|
|
def code_tag(code, language = nil)
|
|
if code.present?
|
|
tag.pre do
|
|
tag.code(code, class: "language-#{language}")
|
|
end
|
|
else
|
|
empty
|
|
end
|
|
end
|
|
|
|
def empty
|
|
tag.i(nil, class: 'empty fa-solid fa-minus')
|
|
end
|
|
|
|
def label_column(label)
|
|
tag.div(class: 'col-md-3') do
|
|
tag.strong do
|
|
I18n.exists?("activerecord.attributes.#{label}") ? t("activerecord.attributes.#{label}") : t(label)
|
|
end
|
|
end
|
|
end
|
|
private :label_column
|
|
|
|
def no
|
|
tag.i(nil, class: 'fa-solid fa-xmark')
|
|
end
|
|
|
|
def per_page_param
|
|
if params[:per_page]
|
|
[params[:per_page].to_i, 100].min
|
|
else
|
|
WillPaginate.per_page
|
|
end
|
|
end
|
|
|
|
def progress_bar(value)
|
|
tag.div(class: value ? 'progress' : 'disabled progress') do
|
|
tag.div(value ? "#{value}%" : '', 'aria-valuemax': 100, 'aria-valuemin': 0,
|
|
'aria-valuenow': value, class: 'progress-bar progress-bar-striped', role: 'progressbar', style: "width: #{[value || 0, 100].min}%;")
|
|
end
|
|
end
|
|
|
|
def render_markdown(markdown)
|
|
ActionController::Base.helpers.sanitize Kramdown::Document.new(markdown).to_html.strip
|
|
end
|
|
|
|
def row(options = {}, &)
|
|
tag.div(class: 'attribute-row row') do
|
|
label_column(options[:label]) + value_column(options[:value], &)
|
|
end
|
|
end
|
|
|
|
def symbol_for(value)
|
|
if value.is_a?(FalseClass)
|
|
no
|
|
elsif value.is_a?(TrueClass)
|
|
yes
|
|
elsif value.blank?
|
|
empty
|
|
else
|
|
value.to_s
|
|
end
|
|
end
|
|
|
|
def value_column(value)
|
|
tag.div(class: 'col-md-9') do
|
|
block_given? ? yield : symbol_for(value)
|
|
end
|
|
end
|
|
private :value_column
|
|
|
|
def yes
|
|
tag.i(nil, class: 'fa-solid fa-check')
|
|
end
|
|
end
|