module Dibbler::Models::HierarchicalSlugGenerator

Public Instance Methods

compose_slug_translation(locale) click to toggle source
# File lib/dibbler/models/hierarchical_slug_generator.rb, line 116
def compose_slug_translation(locale)
  self._compose_slug_translation(locale)
end
destroy_slugs_after(options = {}) click to toggle source
# File lib/dibbler/models/hierarchical_slug_generator.rb, line 97
def destroy_slugs_after(options = {})

  # Propagate to other models
  if options[:disable_propagation] != true

    # Propagate to parent
    self.parent.generate_slugs(disable_propagation: true) if self.parent

  end

end
destroy_slugs_before(options = {}) click to toggle source
# File lib/dibbler/models/hierarchical_slug_generator.rb, line 76
def destroy_slugs_before(options = {})

  # Destroy slug of this model
  unless Dibbler.slug_model.nil?
    I18n.available_locales.each do |locale|
      self._destroy_slug(Dibbler.slug_model, locale)
    end
  end

  # Propagate to other models
  if options[:disable_propagation] != true

    # Propagate to descendants
    self.descendants.each do |descendant|
      descendant.destroy_slugs_before(disable_propagation: true)
    end

  end

end
disable_slug_generator() click to toggle source
# File lib/dibbler/models/hierarchical_slug_generator.rb, line 35
def disable_slug_generator
  @disable_slug_generator = true
end
enable_slug_generator() click to toggle source
# File lib/dibbler/models/hierarchical_slug_generator.rb, line 39
def enable_slug_generator
  @disable_slug_generator = false
end
generate_slugs(options = {}) click to toggle source

************************************************************* Hooks *************************************************************

# File lib/dibbler/models/hierarchical_slug_generator.rb, line 47
def generate_slugs(options = {})
  return if @disable_slug_generator
  ActiveRecord::Base.transaction do

    # Generate slug in this model
    unless Dibbler.slug_model.nil?
      I18n.available_locales.each do |locale|
        self._destroy_slug_was(Dibbler.slug_model, locale)
        self._generate_slug(Dibbler.slug_model, locale)
      end
    end

  end

  # Propagate to other models
  if options[:disable_propagation] != true

    # Propagate to parent
    self.parent.generate_slugs(disable_propagation: true) if self.parent

    # Propagate to descendants
    self.descendants.each do |descendant|
      descendant.generate_slugs(disable_propagation: true)
    end

  end

end
url_original() click to toggle source
# File lib/dibbler/models/hierarchical_slug_generator.rb, line 109
def url_original
  if @url_original.nil?
    @url_original = self._url_original
  end
  @url_original
end

Protected Instance Methods

_compose_slug_translation(locale) click to toggle source
# File lib/dibbler/models/hierarchical_slug_generator.rb, line 130
def _compose_slug_translation(locale)
  raise "To be defined in application."
end
_destroy_slug(slug_model, locale) click to toggle source
# File lib/dibbler/models/hierarchical_slug_generator.rb, line 138
def _destroy_slug(slug_model, locale)
  raise "To be defined in application."
end
_destroy_slug_was(slug_model, locale) click to toggle source
# File lib/dibbler/models/hierarchical_slug_generator.rb, line 142
def _destroy_slug_was(slug_model, locale)
  raise "To be defined in application."
end
_generate_slug(slug_model, locale) click to toggle source
# File lib/dibbler/models/hierarchical_slug_generator.rb, line 134
def _generate_slug(slug_model, locale)
  raise "To be defined in application."
end
_url_original() click to toggle source

************************************************************* Callbacks to be defined in application *************************************************************

# File lib/dibbler/models/hierarchical_slug_generator.rb, line 126
def _url_original
  raise "To be defined in application."
end