Noosfero/noosfero

View on GitHub
app/controllers/concerns/custom_design.rb

Summary

Maintainability
A
0 mins
Test Coverage
module CustomDesign
  extend ActiveSupport::Concern

  included do
    extend ClassMethods
    include InstanceMethods
    before_action :load_custom_design if self.respond_to? :before_action
  end

  module ClassMethods
    def no_design_blocks
      @no_design_blocks = true
    end

    def use_custom_design(options = {})
      @custom_design = options
    end

    def custom_design
      @custom_design ||= {}
    end

    def uses_design_blocks?
      !@no_design_blocks
    end
  end

  module InstanceMethods
    protected

      def uses_design_blocks?
        !@no_design_blocks && self.class.uses_design_blocks?
      end

      def load_custom_design
        # see also: LayoutHelper#body_classes
        @layout_template = self.class.custom_design[:layout_template]
      end

      def custom_design
        @custom_design || self.class.custom_design
      end
  end
end