lib/resourcelogic/context.rb in resourcelogic-0.9.0 vs lib/resourcelogic/context.rb in resourcelogic-0.10.0

- old
+ new

@@ -2,87 +2,50 @@ # module Resourcelogic module Context def self.included(klass) klass.class_eval do - extend Config add_acts_as_resource_module(Methods) end end - module Config - def contextual_views(value = nil) - config(:contextual_views, value) - end - - def contextual_views? - !contextual_views.blank? - end - end - module Methods def self.included(klass) - klass.helper_method :context, :contexts, :contextual_views, :contextual_views?, :context_template_name + klass.helper_method :context, :contexts, :contexts_url_parts + klass.hide_action :context, :contexts end - private - def context - @context ||= (parent? && (parent_alias || parent_model_name)) || (contexts.last && (contexts.last.is_a?(Array) ? contexts.last.first : contexts.last)) + def context + @context ||= contexts.last + end + + def contexts + return @contexts if defined?(@contexts) + path_parts = request.path.split("/") + path_parts.shift + @contexts = [] + path_parts.each_with_index do |part, index| + break if model_name_from_path_part(part.split(".").first) == model_name + @contexts << (part.to_i > 0 ? @contexts.pop.to_s.singularize.to_sym : part.underscore.to_sym) end + @contexts + end - # Returns all of the current namespaces of the current controller, symbolized, in array form. - def contexts - return @contexts if @contexts + private + def contexts_url_parts + return @contexts_url_parts if @contexts_url_parts path_parts = request.path.split("/") path_parts.shift - @contexts = [] + @contexts_url_parts = [] path_parts.each_with_index do |part, index| - part = part.split(".").first if (index + 1) == path_parts.size # for formats: blah.html or blah.js - break if [(parent_alias || parent_model_name).to_s.pluralize, (parent_alias || parent_model_name).to_s, route_name.to_s.pluralize].include?(part.underscore) + break if model_name_from_path_part(part.split(".").first) == model_name if part.to_i > 0 - @contexts << [@contexts.pop.to_s.singularize.to_sym, part] + @contexts_url_parts << [route_name_from_path_part(@contexts_url_parts.pop), part.to_i] else - @contexts << part.underscore.to_sym + @contexts_url_parts << part.underscore.to_sym end end - @contexts + @contexts_url_parts end - alias_method :namespaces, :contexts - - def contextual_views? - self.class.contextual_views? - end - - def contextual_views - self.class.contextual_views - end - - def context_template_name(name) - sub_folder = contextual_views.is_a?(Hash) && contextual_views.key?(context) ? contextual_views[context] : context - sub_folder ||= "root" - "#{controller_name}/#{sub_folder}/#{name}" - end - - def default_template_name(action_name = self.action_name) - if contextual_views? - context_template_name(action_name) - else - super - end - end end - - module Partials - def _pick_partial_template(partial_path) - partial_path = context_template_name(partial_path) if respond_to?(:contextual_views?) && contextual_views? && !partial_path.include?("/") - super - end - end - end -end - - -module ActionView - class Base - include Resourcelogic::Context::Partials end end \ No newline at end of file