Module: Spyro::ActionViewExtension::ApplicationHelper

Includes:
CollectionForHelper, D3Helper, EtecHelper, FeatureHelper, ForumHelper, PageTitle, ProjectsHelper, ReleaseHelper, WidgetsHelper
Included in:
Spyro::ActionViewExtension
Defined in:
lib/spyro/helpers/action_view_extension.rb,
lib/spyro/helpers/action_view_extension.rb,
lib/spyro/helpers/action_view_extension.rb,
lib/spyro/helpers/action_view_extension.rb

Instance Method Summary collapse

Methods included from PageTitle

#page_title

Methods included from EtecHelper

#estimated_accel_from_xp, #estimated_end_date_from_xp, #user_accel_eta, #user_eta

Methods included from FeatureHelper

#feature

Methods included from ForumHelper

#url_for_message

Methods included from ReleaseHelper

#release_at

Methods included from ProjectsHelper

#get_project_status, #get_project_status_icon, #get_project_status_text, #get_uncached_project_status, #get_uncached_project_status_text, #project_progress_percentage

Methods included from D3Helper

#d3bar, #d3line, #d3pie

Methods included from CollectionForHelper

#collection_for, #sortable_header

Methods included from ProgressBarHelper

#progress

Methods included from ContainerHelper

#box

Methods included from HeadersHelper

#box_header, #header, #page_header

Methods included from TabsHelper

#tab, #tabs

Methods included from BasicWidgetsHelper

#alert, #button, #group, #mini_button

Methods included from BreadCrumbHelper

#breadcrumb, #format_class

Instance Method Details

#app_nameObject



483
484
485
# File 'lib/spyro/helpers/action_view_extension.rb', line 483

def app_name
  @cache_app_name ||= Rails.application.class.parent_name.underscore
end

#associations(klass, macro) ⇒ Object



316
317
318
319
320
# File 'lib/spyro/helpers/action_view_extension.rb', line 316

def associations klass, macro
  klass = klass.to_s.classify.constantize if Symbol === klass

  klass.reflections.select { |s, r| s and r.macro == macro }
end

#basic_paramsObject



240
241
242
# File 'lib/spyro/helpers/action_view_extension.rb', line 240

def basic_params
  params.dup.keep_if {|k, _| [:action, :controller, /_id$/].any? {|elem| elem === k }}
end

#download_mime_type_btns(controller = nil, &block) ⇒ Object



259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
# File 'lib/spyro/helpers/action_view_extension.rb', line 259

def download_mime_type_btns controller = nil, &block
  if download_mime_types(controller).size == 1
    if block_given?
      link = block.call(download_mime_types(controller).first) rescue nil
    else
      link = collection_url(format: download_mime_types(controller).first) rescue nil
    end

    button "Download as #{download_mime_types(controller).first}", link if link
  elsif download_mime_types(controller).size > 1
    res = link_to "#", :class => 'btn btn-default dropdown-toggle', :'data-toggle' => 'dropdown' do
      ("Download " + (:span, "", :class => "caret")).html_safe
    end
    res + (:ul, :class => "dropdown-menu") do
      download_mime_types(controller).map do |mime|
        if block_given?
          link = block.call(mime) rescue nil
        else
          link = collection_url(format: mime) rescue nil
        end
         :li, (link_to "as #{mime}", link) if link
      end.join('').html_safe
    end
  end
end

#download_mime_types(controller) ⇒ Object



285
286
287
288
289
# File 'lib/spyro/helpers/action_view_extension.rb', line 285

def download_mime_types(controller)
  @mimes = {}
  @mimes[controller] ||= mime_types(controller)
  @mimes[controller] & [:csv, :xls]
end


244
245
246
247
248
249
# File 'lib/spyro/helpers/action_view_extension.rb', line 244

def menu
  params_dup = Hash[*params.keys.keep_if { |key| key.ends_with? "_id" }.map { |elem| [elem, nil] }.flatten]
  (ActiveRecord::Base.connection.tables - ["schema_migrations"]).sort.map do |name|
    url_for(params_dup.merge(:controller => name.pluralize, :action => :index)) rescue nil if can? :index, name.classify.constantize rescue nil
  end.compact.map { |name|  :li, (link_to (name.split('/').last || "Root").humanize, name) }.join.html_safe
end

#mime_types(controller) ⇒ Object



251
252
253
254
255
256
257
# File 'lib/spyro/helpers/action_view_extension.rb', line 251

def mime_types controller
  mimes = []
  (controller || "#{params[:controller].pluralize}_controller".classify.constantize).mimes_for_respond_to.each do |key, values|
    mimes << key if (values[:only] == nil or values[:only].include? params[:action]) and (values[:expect] == nil or !values[:expect].include? params[:action])
  end
  mimes
end

#parentsObject



236
237
238
# File 'lib/spyro/helpers/action_view_extension.rb', line 236

def parents
  [*(respond_to?(:association_chain) ? (association_chain) : ([]))]
end

#sorted_header(table, args = [], options = {}) ⇒ Object



291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
# File 'lib/spyro/helpers/action_view_extension.rb', line 291

def sorted_header table, args = [], options = {}
  table.header args, options do |header, text|
    if @order_attributes and header.to_s.in? @order_attributes
      params_dup = params.dup
      params_dup[:order] = header
      if params_dup[:desc]
        params_dup.delete :desc
      else
        params_dup[:desc] = true if params[:order] == header.to_s
      end
      link_to text, url_for(params_dup)
    else
      text
    end
  end
end

#vertical_form_for(record, options = {}, &block) ⇒ Object



308
309
310
311
312
313
314
# File 'lib/spyro/helpers/action_view_extension.rb', line 308

def vertical_form_for(record, options={}, &block)
  backup = SimpleForm.form_class
  SimpleForm.form_class = options[:form_class]
  result = simple_form_for(record, options, &block)
  SimpleForm.form_class = backup
  result
end