module QuietPrototype::QuietPrototypeHelper

The helper module - methods for use within views.

Public Instance Methods

include_prototype_if_used( line_prefix = '' ) click to toggle source

Include Prototype only if used for the current view, according to the Controller. Invoke using “<%= include_quiet_prototype_if_used -%>” from within the HEAD section of an XHTML view. If you want your HTML output to be nice and tidy in terms of indentation :-) then pass a string in the optional parameter - it will be inserted before each “<script>” tag in the returned HTML fragment.

Note that a trailing newline is output so you can call the helper with the “-%>” closing ERB tag (as shown in the previous paragraph) to avoid inserting a single blank line into your output in the event that the plugin is not used by the current view.

# File lib/quiet_prototype/quiet_prototype.rb, line 52
def include_prototype_if_used( line_prefix = '' )
  if using_quiet_prototype?

    # 2013-07-18 (ADH): Even with appropriate configuration data in
    # "config/application.rb" for the ":defaults" expansion, using it
    # here results in "assets/defaults.js" being generated. Doh. Since
    # code here is evaluated before the application starts, presumably
    # the expansion isn't defined in time. Instead we have to do it
    # the hard way.

    data          = javascript_include_tag( 'prototype/prototype' )
    data << "\n" << javascript_include_tag( 'prototype_ujs/rails' )
    data << "\n" << javascript_include_tag( 'scriptaculous/effects' )
    data << "\n" << javascript_include_tag( 'scriptaculous/dragdrop' )
    data << "\n" << javascript_include_tag( 'scriptaculous/controls' )

    return ( data.gsub( /^/, line_prefix ) + "\n" ).html_safe()
using_quiet_prototype?() click to toggle source

Returns ‘true’ if configured to use the Prototype library for the view related to the current request. See the “uses_prototype” class method for more information.

# File lib/quiet_prototype/quiet_prototype.rb, line 76
def using_quiet_prototype?
  ! @uses_prototype.nil?