Sha256: 26c7c0c5bc04200ad033776ed43b7098cd58e57c3b7b5b879a532d0083cb094c

Contents?: true

Size: 1.17 KB

Versions: 70

Compression:

Stored size: 1.17 KB

Contents

module Rubydora
  ##
  # Provide access to registered content models
  # FIXME: Ruby 1.9 provides instance_exec, which should make it
  # possible to subsume this into Rubydora::RelationshipsMixin
  module ModelsMixin
 
    # Provides an accessor to the object content models
    # @param [Hash] args
    # @option args [Array] :values if nil, will query the resource index for related objects
    # @return [ArrayWithCallback<Rubydora::DigitalObject>] an array that will call the #relationship_changed callback when values are modified 
    def models args = {}
      @models = nil if args.delete(:refetch)
      @models ||= relationship('info:fedora/fedora-system:def/model#hasModel', :values => args[:values] || profile['objModels'] || [])
    end

    # provides a setter that behaves as does #models
    def models= arr
      arr &&= [arr] unless arr.is_a? Array
      old = models.dup || []
      arr = @models = relationship('info:fedora/fedora-system:def/model#hasModel', :values => arr.flatten)
      relationship_changed('info:fedora/fedora-system:def/model#hasModel', {:+ => arr - old, :- => old - arr }, @models)

      @models
    end
    alias_method :model=, :models=
  end
end

Version data entries

70 entries across 70 versions & 1 rubygems

Version Path
rubydora-1.8.1 lib/rubydora/models_mixin.rb
rubydora-1.8.0 lib/rubydora/models_mixin.rb
rubydora-1.7.5 lib/rubydora/models_mixin.rb
rubydora-1.7.4 lib/rubydora/models_mixin.rb
rubydora-1.7.3 lib/rubydora/models_mixin.rb
rubydora-1.7.1 lib/rubydora/models_mixin.rb
rubydora-1.7.0 lib/rubydora/models_mixin.rb
rubydora-1.7.0.pre1 lib/rubydora/models_mixin.rb
rubydora-1.6.5 lib/rubydora/models_mixin.rb
rubydora-1.6.4 lib/rubydora/models_mixin.rb
rubydora-1.6.3 lib/rubydora/models_mixin.rb
rubydora-1.6.2 lib/rubydora/models_mixin.rb
rubydora-1.6.1 lib/rubydora/models_mixin.rb
rubydora-1.6.0 lib/rubydora/models_mixin.rb
rubydora-1.5.1 lib/rubydora/models_mixin.rb
rubydora-1.5.0 lib/rubydora/models_mixin.rb
rubydora-1.4.2 lib/rubydora/models_mixin.rb
rubydora-1.4.1 lib/rubydora/models_mixin.rb
rubydora-1.4.0 lib/rubydora/models_mixin.rb
rubydora-1.3.0 lib/rubydora/models_mixin.rb