Module: EffectiveLoggingHelper

Included in:
Effective::Datatables::Logs
Defined in:
app/helpers/effective_logging_helper.rb

Constant Summary collapse

ALLOWED_TAGS =
ActionView::Base.sanitized_allowed_tags.to_a + ['table', 'thead', 'tbody', 'tfoot', 'tr', 'td', 'th']
ALLOWED_ATTRIBUTES =
ActionView::Base.sanitized_allowed_attributes.to_a + ['colspan', 'rowspan']

Instance Method Summary collapse

Instance Method Details

#bootstrap_class_for_status(status) ⇒ Object



5
6
7
8
9
10
11
12
13
# File 'app/helpers/effective_logging_helper.rb', line 5

def bootstrap_class_for_status(status)
  case status
    when 'success'  ; 'success'
    when 'info'     ; 'info'
    when 'warning'  ; 'warning'
    when 'error'    ; 'danger'
    else 'primary'
  end
end

This is called on the Logs#show Admin page, and is intended for override by the application



49
50
51
52
53
54
55
56
57
58
59
# File 'app/helpers/effective_logging_helper.rb', line 49

def effective_logging_object_link_to(obj, action = :show)
  if obj.kind_of?(User)
    return (
      if action == :show && defined?(admin_user_path)
        link_to('View', admin_user_path(obj))
      elsif action == :edit && defined?(edit_admin_user_path)
        link_to('Edit', edit_admin_user_path(obj))
      end
    )
  end
end

#format_log_details_value(value) ⇒ Object



61
62
63
64
65
66
67
68
69
# File 'app/helpers/effective_logging_helper.rb', line 61

def format_log_details_value(value)
  if value.kind_of?(Hash)
    tableize_hash(value, :class => 'table', :style => 'width: 50%', :th => true)
  elsif value.kind_of?(Array)
    value.map { |value| simple_format(sanitize(value.to_s, :tags => ALLOWED_TAGS, :attributes => ALLOWED_ATTRIBUTES), {}, :sanitize => false) }.join('').html_safe
  else
    simple_format(sanitize(value.to_s, :tags => ALLOWED_TAGS, :attributes => ALLOWED_ATTRIBUTES), {}, :sanitize => false)
  end
end

#parents_of_log(log) ⇒ Object



19
20
21
22
23
# File 'app/helpers/effective_logging_helper.rb', line 19

def parents_of_log(log)
  parents = [log.parent]
  parents << parents.last.parent while(parents.last.try(:parent_id).present?)
  parents.compact.reverse
end

#render_log(log) ⇒ Object



15
16
17
# File 'app/helpers/effective_logging_helper.rb', line 15

def render_log(log)
  render(:partial => 'effective/logs/log', :locals => {:log => log})
end

#tableize_hash(hash, options = {}) ⇒ Object

Call me with :th => true, :sub_th => false Any other options are sent to the table tag



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'app/helpers/effective_logging_helper.rb', line 27

def tableize_hash(hash, options = {})
  if hash.present?
    (:table, options) do
      hash.map do |k, v|
        (:tr) do
          ((options[:th] ? :th : :td), k) +
          (:td) do
            if v.kind_of?(Hash)
              tableize_hash(v, options.merge({:class => 'table table-bordered', :th => (options.key?(:sub_th) ? options[:sub_th] : options[:th])}))
            elsif v.kind_of?(Array)
              '[' + v.join(', ') + ']'
            else
              v
            end
          end
        end
      end.join('').html_safe
    end.html_safe
  end
end