end
def manifest
- Keep::Manifest.new(manifest_text || "")
+ if @manifest.nil? or manifest_text_changed?
+ @manifest = Keep::Manifest.new(manifest_text || "")
+ end
+ @manifest
end
def files
# This method provides backwards compatibility for code that relied on
# the old files field in API results. New code should use manifest
# methods directly.
- if @files.nil? or manifest_text_changed?
- @files = manifest.each_file.to_a
- end
- @files
+ manifest.files
end
def content_summary
- ApplicationController.helpers.human_readable_bytes_html(total_bytes) + " " + super
+ if total_bytes > 0
+ ApplicationController.helpers.human_readable_bytes_html(total_bytes) + " " + super
+ else
+ super + " modified at " + modified_at.to_s
+ end
end
def total_bytes
- manifest.each_file.inject(0) { |sum, filespec| sum + filespec.last }
+ manifest.files.inject(0) { |sum, filespec| sum + filespec.last }
end
def files_tree
- tree = manifest.each_file.group_by do |file_spec|
+ tree = manifest.files.group_by do |file_spec|
File.split(file_spec.first)
end
return [] if tree.empty?
dir_to_tree.call('.')
end
- def attribute_editable? attr, *args
- if %w(name description manifest_text).include? attr.to_s
- true
- else
- super
- end
- end
-
- def self.creatable?
- false
+ def editable_attributes
+ %w(name description manifest_text)
end
def provenance
end
end
- def portable_data_hash
- if self[:portable_data_hash].nil?
- return self[:uuid]
- else
- super
- end
+ def friendly_link_name lookup=nil
+ name || portable_data_hash
end
- def friendly_link_name
- if self.respond_to? :name
- self.name
- else
- self.portable_data_hash
- end
+ def textile_attributes
+ [ 'description' ]
end
end