module PageletRails::Concerns::Controller
Public Instance Methods
layout_name()
click to toggle source
# File lib/pagelet_rails/concerns/controller.rb, line 29 def layout_name layout = params[:layout] || pagelet_options.layout "pagelet_rails/#{layout}" end
pagelet_request?()
click to toggle source
# File lib/pagelet_rails/concerns/controller.rb, line 35 def pagelet_request? request.headers['X-Pagelet'].present? || params[:target_container] end
Private Instance Methods
append_pagelet_view_paths()
click to toggle source
# File lib/pagelet_rails/concerns/controller.rb, line 41 def append_pagelet_view_paths # lookup_context.prefixes.clear view = "#{controller_name}/views" if lookup_context.prefixes.exclude?(view) lookup_context.prefixes.unshift view end # https://github.com/rails/actionpack-action_caching/issues/32 if lookup_context.formats.exclude?(:html) lookup_context.formats.unshift :html end end
merge_original_pagelet_options()
click to toggle source
# File lib/pagelet_rails/concerns/controller.rb, line 54 def merge_original_pagelet_options if params[:original_pagelet_options] opts = PageletRails::Encryptor.decode(params[:original_pagelet_options]) pagelet_options(opts) pagelet_options(original_options: opts) end end
pagelet_encoded_original_options(new_opts = {})
click to toggle source
# File lib/pagelet_rails/concerns/controller.rb, line 62 def pagelet_encoded_original_options new_opts = {} encode_data = pagelet_options.original_options.to_h .with_indifferent_access.except('remote').deep_merge(new_opts) PageletRails::Encryptor.encode(encode_data) end
pagelet_render_remotely?()
click to toggle source
# File lib/pagelet_rails/concerns/controller.rb, line 68 def pagelet_render_remotely? case pagelet_options.remote when :stream render_remotely = true when :turbolinks # render now if request coming from turbolinks is_turbolinks_request = request.headers['Turbolinks-Referrer'].present? render_remotely = !is_turbolinks_request when true, :ajax render_remotely = true when :ssi render_remotely = true else render_remotely = false end render_remotely end
redirect_to(*args)
click to toggle source
Calls superclass method
# File lib/pagelet_rails/concerns/controller.rb, line 87 def redirect_to *args begin redirect_url = url_for(*args) path_opts = Rails.application.routes.recognize_path(redirect_url) rescue ActionController::RoutingError return super end controller_class = path_opts[:controller].camelize.concat('Controller').safe_constantize is_pagelet = controller_class && controller_class.include?(PageletRails::Concerns::Controller) if is_pagelet options = args.extract_options! new_params = options.merge(original_pagelet_options: pagelet_encoded_original_options) render plain: pagelet(url_for(*args, new_params)) else super end end