diff options
| author | Alban Peignier | 2015-05-21 16:59:01 +0200 |
|---|---|---|
| committer | Alban Peignier | 2015-05-21 16:59:49 +0200 |
| commit | f57f0901a314f5344c6bfe834bd73084423fa37f (patch) | |
| tree | 127ec24250ae4804bddcdc1426874578e0c707a8 /app/helpers/icon_helper.rb | |
| parent | 212ab1585477bf07bf4dac5b9abb957cc002b09c (diff) | |
| download | chouette-core-f57f0901a314f5344c6bfe834bd73084423fa37f.tar.bz2 | |
Add fontawesome icon helper (from font-awesome-rails)
Diffstat (limited to 'app/helpers/icon_helper.rb')
| -rw-r--r-- | app/helpers/icon_helper.rb | 45 |
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 |
