aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlban Peignier2015-05-21 16:59:01 +0200
committerAlban Peignier2015-05-21 16:59:49 +0200
commitf57f0901a314f5344c6bfe834bd73084423fa37f (patch)
tree127ec24250ae4804bddcdc1426874578e0c707a8
parent212ab1585477bf07bf4dac5b9abb957cc002b09c (diff)
downloadchouette-core-f57f0901a314f5344c6bfe834bd73084423fa37f.tar.bz2
Add fontawesome icon helper (from font-awesome-rails)
-rw-r--r--app/helpers/icon_helper.rb45
1 files changed, 45 insertions, 0 deletions
diff --git a/app/helpers/icon_helper.rb b/app/helpers/icon_helper.rb
new file mode 100644
index 000000000..6737c23d1
--- /dev/null
+++ b/app/helpers/icon_helper.rb
@@ -0,0 +1,45 @@
+module IconHelper
+
+ def fa_icon(names = "flag", options = {})
+ classes = ["fa"]
+ classes.concat Private.icon_names(names)
+ classes.concat Array(options.delete(:class))
+ text = options.delete(:text)
+ right_icon = options.delete(:right)
+ icon = content_tag(:i, nil, options.merge(:class => classes))
+ Private.icon_join(icon, text, right_icon)
+ end
+
+ def fa_stacked_icon(names = "flag", options = {})
+ classes = Private.icon_names("stack").concat(Array(options.delete(:class)))
+ base_names = Private.array_value(options.delete(:base) || "square-o").push("stack-2x")
+ names = Private.array_value(names).push("stack-1x")
+ base = fa_icon(base_names, options.delete(:base_options) || {})
+ icon = fa_icon(names, options.delete(:icon_options) || {})
+ icons = [base, icon]
+ icons.reverse! if options.delete(:reverse)
+ text = options.delete(:text)
+ right_icon = options.delete(:right)
+ stacked_icon = content_tag(:span, safe_join(icons), options.merge(:class => classes))
+ Private.icon_join(stacked_icon, text, right_icon)
+ end
+
+ module Private
+ extend ActionView::Helpers::OutputSafetyHelper
+
+ def self.icon_join(icon, text, reverse_order = false)
+ return icon if text.blank?
+ elements = [icon, ERB::Util.html_escape(text)]
+ elements.reverse! if reverse_order
+ safe_join(elements, " ")
+ end
+
+ def self.icon_names(names = [])
+ array_value(names).map { |n| "fa-#{n}" }
+ end
+
+ def self.array_value(value = [])
+ value.is_a?(Array) ? value : value.to_s.split(/\s+/)
+ end
+ end
+end