cul_scv_hydra 0.22.9.1 → 0.22.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dae25c2c8e029c0f2233557738f5951e3ab2db40
4
- data.tar.gz: 66111b4cae205483895936114652fe2814825837
3
+ metadata.gz: 4dfef7d4cc06013efb54de0725d882d49b043d6b
4
+ data.tar.gz: 6fb3fcdb39e0ed72bd1c6002efa969bd7edaeb12
5
5
  SHA512:
6
- metadata.gz: e6e2d8640c9dcc3a6d5988d855a4742329be0dd8d280a95cc529896edc4b3b4983efb240da58fb5d49d93b1e9d8365bfdbdbda94ea2ac131bcf02ed4011f4221
7
- data.tar.gz: 9be6ec791c59129190a90d9b86e539e2e0203d9797bb6cc79bb5ce4d214ba2e4663623ffa98a060b0d101481359fc9f1c9a2de7c67b72f32458a91642d9f8cff
6
+ metadata.gz: efdfeea63e0d34298a29015048ee81ea86945d97f3dd1585e61f68376ec90cee6ddc70ed7af4b82d79bbf44b8cf5adfb38a21906fb0d305e7f7a5a244a620d38
7
+ data.tar.gz: fc309b63eb069ccdae2169b4bf4cd86c4898a3de41958a8780d4737d07bf96fc05e4d44ff3fc783943bed28df89268d5f1fb992ef9892d98c587f75272a5dbeb
@@ -21,6 +21,14 @@ module Cul::Hydra::Models::ImageResource
21
21
 
22
22
  DJATOKA_BASE_URL = "http://iris.cul.columbia.edu:8888/resolve"
23
23
 
24
+ EXIF_ORIENTATION_TO_DEGREES = {
25
+ 'top-left' => 0,
26
+ 'left-bottom' => 90,
27
+ 'bottom-right' => 180,
28
+ 'right-top' => 270
29
+ }
30
+ DEGREES_TO_EXIF_ORIENTATIONS = EXIF_ORIENTATION_TO_DEGREES.invert
31
+
24
32
  def long
25
33
  @long_side ||= max(width(), length())
26
34
  end
@@ -75,4 +83,24 @@ module Cul::Hydra::Models::ImageResource
75
83
  return {:asset=>"cul_scv_hydra/crystal/file.png",:mime=>'image/png'}
76
84
  end
77
85
  end
86
+
87
+ # The number of rotational degrees required to display this image as upright
88
+ def required_rotation_for_upright_display
89
+ required_rotation_orientation_in_degrees = (360 - self.orientation) % 360
90
+ return required_rotation_orientation_in_degrees
91
+ end
92
+
93
+ # Allowed degrees arg values: 0, 90, 180, 270
94
+ def orientation=(degrees)
95
+ degrees = degrees % 360
96
+ raise "Invalid value for degrees. Must be a right angle (0, 90, 180, etc.)" unless (degrees % 90 == 0)
97
+ self.clear_relationship(:orientation)
98
+ self.add_relationship(:orientation, DEGREES_TO_EXIF_ORIENTATIONS[degrees], true)
99
+ return degrees # Hide RDF backing structure and make this look like a simple setter method
100
+ end
101
+
102
+ def orientation
103
+ self.relationships(:orientation).present? ? EXIF_ORIENTATION_TO_DEGREES[self.relationships(:orientation).first.to_s] : 0
104
+ end
105
+
78
106
  end
@@ -142,24 +142,28 @@ class GenericResource < ::ActiveFedora::Base
142
142
  (zr = rels_int.relationships(datastreams['content'], :foaf_zooming) and not zr.first.blank?)
143
143
  end
144
144
 
145
- def with_content_resource(fedora_content_filesystem_mounted=false, &block)
145
+ def with_ds_resource(ds_id, fedora_content_filesystem_mounted=false, &block)
146
146
 
147
- content_ds = self.datastreams['content']
147
+ ds = self.datastreams[ds_id]
148
148
 
149
- if fedora_content_filesystem_mounted
150
- if content_ds.dsLocation =~ /^file:\//
151
- dsLocation = content_ds.dsLocation.sub(/^file:\/+/,'/')
149
+ puts 'dsLocation.start_with?(self.pid) : ' + ds.dsLocation.start_with?(self.pid).to_s
150
+
151
+ # If the dsLocation starts with the pid, that means that we're dealing with an internally-managed ds,
152
+ # so we can't reference the file directly even if we do have the fedora content filesystem mounted.
153
+ if ! ds.dsLocation.start_with?(self.pid) && fedora_content_filesystem_mounted
154
+ if ds.dsLocation =~ /^file:\//
155
+ dsLocation = ds.dsLocation.sub(/^file:\/+/,'/')
152
156
  path = URI.unescape(dsLocation)
153
157
  else
154
- path = content_ds.dsLocation
158
+ path = ds.dsLocation
155
159
  end
156
160
 
157
161
  yield(path)
158
162
  else
159
- internal_uri = "info:fedora/#{self.pid}/content"
163
+ internal_uri = "info:fedora/#{self.pid}/#{ds_id}"
160
164
  # No local fedora mount, need to download content over http[s]
161
165
 
162
- file_basename = File.basename(content_ds.dsLocation.gsub(/^file:/,''))
166
+ file_basename = File.basename(ds.dsLocation.gsub(/^file:/,''))
163
167
  file_extension = File.extname(file_basename)
164
168
 
165
169
  # In some cases, we actually do want to know the original extension of the file, so we'll preserve it in the temp file filename
@@ -1,6 +1,6 @@
1
1
  module Cul
2
2
  module Hydra
3
- VERSION = '0.22.9.1'
3
+ VERSION = '0.22.9.2'
4
4
  def self.version
5
5
  VERSION
6
6
  end
@@ -1,6 +1,6 @@
1
1
  module Cul
2
2
  module Hydra
3
- VERSION = '0.22.9'
3
+ VERSION = '0.22.9.1'
4
4
  def self.version
5
5
  VERSION
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cul_scv_hydra
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.22.9.1
4
+ version: 0.22.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benjamin Armintor
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-03-06 00:00:00.000000000 Z
12
+ date: 2015-03-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: blacklight
@@ -527,4 +527,3 @@ signing_key:
527
527
  specification_version: 4
528
528
  summary: ActiveFedora, OM, and Solrizer implementations for CUL repository apps
529
529
  test_files: []
530
- has_rdoc: