module Growlyflash::ControllerAdditions

Public Class Methods

included(base) click to toggle source
# File lib/growlyflash/controller_additions.rb, line 3
def self.included(base)
  base.module_eval do
    extend ClassMethods
    if respond_to?(:helper_method)
      helper_method :growlyflash_static_notices, :growlyhash, :growlyflash_tag
    end
  end
end

Protected Instance Methods

flash_to_headers() click to toggle source

Dumps available messages to headers and discards them to prevent appear it again after refreshing a page

# File lib/growlyflash/controller_additions.rb, line 28
def flash_to_headers
  if request.xhr? && growlyhash(true).size > 0
    response.headers['X-Message'] = URI.escape(growlyhash.to_json)
    growlyhash.each_key { |k| flash.discard(k) }
  end
end
growlyflash_static_notices(js_var = 'window.flashes') click to toggle source

View helper method which renders flash messages to js variable if they weren't dumped to headers with XHR request

# File lib/growlyflash/controller_additions.rb, line 37
def growlyflash_static_notices(js_var = 'window.flashes')
  return if flash.empty?
  script = "#{js_var} = #{growlyhash.to_json.html_safe};".freeze
  view_context.javascript_tag(script, defer: 'defer')
end
growlyflash_tag() click to toggle source

View helper which render a tag with flashes messages in data attribute.

# File lib/growlyflash/controller_additions.rb, line 44
def growlyflash_tag
  return if flash.empty?
  view_context.tag(
    :div,
    id: 'growlyflash-tag',
    'data-flashes': growlyhash.to_json.html_safe
  )
end
growlyhash(force = false) click to toggle source

Hash with available growl flash messages which contains a string object.

# File lib/growlyflash/controller_additions.rb, line 54
def growlyhash(force = false)
  @growlyhash = nil if force
  @growlyhash ||= flash.to_hash.select { |k, v| v.is_a? String }
end