Sha256: 0e700f9319b1fa3a4f7f98cdf4c6cde492843bf9f9022d2777e08c5e8699aa9a

Contents?: true

Size: 1.38 KB

Versions: 6

Compression:

Stored size: 1.38 KB

Contents

# encoding: UTF-8

module Spontaneous
  class PageLock < Sequel::Model(:spontaneous_page_lock)
    class InvalidPage < Spontaneous::Error; end

    plugin :timestamps

    def self.lock_field(field)
      create(field_attributes(field).merge(
        :description => field.page_lock_description
      ))
    rescue InvalidPage
      nil
    end

    def self.unlock_field(field)
      field_dataset(field).delete
    rescue InvalidPage
      nil
    end

    def self.field_dataset(field)
      filter(field_attributes(field))
    end

    def self.field_attributes(field)
      owner = field.owner
      raise InvalidPage.new(field.id) unless owner.page
      { :content_id => owner.content_instance.id,
        :page_id    => owner.page.id,
        :field_id   => field.id }
    end

    def field=(field)
      self.field_id = field.id
    end

    def field
      @field ||= Spontaneous::Field.find(content.model, field_id)
    end

    def field_name
      field.name
    end

    def location
      field, owner = self.field, self.field.owner
      model = owner.model.content_model
      case owner
      when model::Box
        "Field ‘#{field.name}’ of box ‘#{owner.box_name}’"
      when model::Page
        "Field ‘#{field.name}’"
      when model::Piece
        "Field ‘#{field.name}’ of entry #{owner.position + 1} in box ‘#{owner.container.box_name}’"
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
spontaneous-0.2.0.beta10 lib/spontaneous/page_lock.rb
spontaneous-0.2.0.beta9 lib/spontaneous/page_lock.rb
spontaneous-0.2.0.beta8 lib/spontaneous/page_lock.rb
spontaneous-0.2.0.beta7 lib/spontaneous/page_lock.rb
spontaneous-0.2.0.beta6 lib/spontaneous/page_lock.rb
spontaneous-0.2.0.beta5 lib/spontaneous/page_lock.rb