hermitage 0.0.2.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,33 +6,120 @@ root = exports ? this
6
6
 
7
7
  # Hermitage options
8
8
  root.hermitage =
9
+ looped: true
10
+
9
11
  # Image viewer z-index property
10
- zIndex: 10
12
+ default:
13
+ styles:
14
+ zIndex: 10
15
+ position: 'fixed'
16
+ top: 0
17
+ left: 0
18
+ width: '100%'
19
+ height: '100%'
11
20
 
12
21
  # Darkening properties
13
22
  darkening:
14
- opacity: 0.75 # 0 if you don't want darkening
15
- color: '#000'
23
+ default:
24
+ attributes:
25
+ id: 'overlay'
26
+ styles:
27
+ position: 'absolute'
28
+ top: 0
29
+ left: 0
30
+ width: '100%'
31
+ height: '100%'
32
+ backgroundColor: '#000'
33
+
34
+ opacity: 0.85 # 0 if you don't want darkening
35
+ styles: {}
16
36
 
17
37
  # Navigation buttons' properties
18
- navigationButton:
38
+ navigationButtons:
39
+ default:
40
+ styles:
41
+ position: 'absolute'
42
+ width: '50px'
43
+ height: '100%'
44
+ top: 0
45
+ cursor: 'pointer'
46
+ color: '#FAFAFA'
47
+ fontSize: '30px'
48
+ fontFamily: 'Tahoma,Arial,Helvetica,sans-serif'
49
+ textAlign: 'center'
50
+ verticalAlign: 'middle'
51
+
19
52
  enabled: true
20
- color: '#777'
21
- width: 50 # px
22
- borderRadius: 7 # px
23
- margin: 10 # Distance between navigation buttons and image, px
53
+ styles: {}
54
+
55
+ next:
56
+ default:
57
+ attributes:
58
+ id: 'navigation-right'
59
+ styles:
60
+ right: 0
61
+ styles: {}
62
+ text: '▶'
63
+
64
+ previous:
65
+ default:
66
+ attributes:
67
+ id: 'navigation-left'
68
+ styles:
69
+ left: 0
70
+ styles: {}
71
+ text: '◀'
24
72
 
25
73
  # Close button properties
26
74
  closeButton:
75
+ default:
76
+ attributes:
77
+ id: 'close-button'
78
+ styles:
79
+ position: 'absolute'
80
+ top: 0
81
+ right: 0
82
+ color: '#FFF'
83
+ fontSize: '30px'
84
+ fontFamily: 'Tahoma,Arial,Helvetica,sans-serif'
85
+ whiteSpace: 'nowrap'
86
+ cursor: 'pointer'
87
+
27
88
  enabled: true
28
89
  text: '×'
29
- color: '#FFF'
30
- fontSize: 30 # px
90
+ styles: {}
91
+
92
+ # Current image properties
93
+ image:
94
+ default:
95
+ attributes:
96
+ class: 'current'
97
+ styles:
98
+ cursor: 'pointer'
99
+ maxWidth: 'none' # Fix the conflict with Twitter Bootstrap
100
+ styles: {}
31
101
 
32
- # Minimum distance between window borders and image, px
33
- windowPadding:
34
- x: 50
35
- y: 50
102
+ # Bottom panel (for text or anything else)
103
+ bottomPanel:
104
+ default:
105
+ attributes:
106
+ class: 'bottom-panel'
107
+ styles:
108
+ position: 'absolute'
109
+ bottom: 0
110
+ height: '70px'
111
+ styles: {}
112
+
113
+ text:
114
+ default:
115
+ attributes:
116
+ class: 'text'
117
+ styles:
118
+ width: '100%'
119
+ height: '100%'
120
+ textAlign: 'center'
121
+ color: '#FAFAFA'
122
+ styles: {}
36
123
 
37
124
  # Minimum size of scaled image, px
38
125
  minimumSize:
@@ -45,21 +132,33 @@ root.hermitage =
45
132
  # Array of images of current gallery
46
133
  images: []
47
134
 
135
+ # Array of texts for current gallery
136
+ texts: []
137
+
138
+ # Timeout before adjustig elements after window resize
139
+ resizeTimeout: 100
140
+
141
+ # Timer for resizing
142
+ resizeTimer: undefined
143
+
48
144
  # Initializes the gallery on this page
49
145
  init: ->
50
146
  # Create Hermitage layer if it doesn't exist
51
147
  if $('#hermitage').length is 0
52
- layer = $('<div>', {id: 'hermitage'})
53
- layer.css('position', 'fixed')
54
- layer.hide()
55
- $('body').append(layer)
148
+ $('<div>')
149
+ .attr('id', 'hermitage')
150
+ .css(hermitage.default.styles)
151
+ .hide()
152
+ .appendTo($('body'))
56
153
 
57
- # Clear old images array
154
+ # Clear old images and texts array
58
155
  hermitage.images.length = 0
156
+ hermitage.texts.length = 0
59
157
 
60
- # Create new images array
158
+ # Create new images and texts array
61
159
  $.each $('a[rel="hermitage"]'), ->
62
160
  hermitage.images.push($(this).attr('href'))
161
+ hermitage.texts.push($(this).attr('title'))
63
162
 
64
163
  # Set on click handlers to all elements that
65
164
  # have 'hermitage' rel attribute
@@ -67,145 +166,142 @@ root.hermitage =
67
166
  openGallery(this)
68
167
  event.preventDefault()
69
168
 
169
+ # Set event on window resize
170
+ $(window).resize ->
171
+ clearTimeout(hermitage.resizeTimer) if hermitage.resizeTimer
172
+ hermitage.resizeTimer = setTimeout \
173
+ -> adjustImage(true),
174
+ hermitage.resizeTimeout
175
+
70
176
  #
71
177
  # Helpers
72
178
  #
73
179
 
74
180
  # Place element at the center of screen
75
- center = (element) ->
76
- element.css('position', 'fixed')
77
- element.css('top', "#{Math.max(0, ($(window).height() - $(element).outerHeight()) / 2)}px")
78
- element.css('left', "#{Math.max(0, ($(window).width() - $(element).outerWidth()) / 2)}px")
79
- element
80
-
81
- #
82
- # Hermitage logic
83
- #
84
-
85
- # Creates overlay layer, shows it and sets its click handler
86
- createOverlay = ->
87
- overlay = $('<div>', {id: 'overlay'})
88
- $('#hermitage').append(overlay)
181
+ $.fn.center = (withAnimation = false, width = 0, height = 0, offsetX = 0, offsetY = 0) ->
182
+ this.css('position', 'absolute')
89
183
 
90
- overlay.css('position', 'fixed')
91
- overlay.css('top', '0')
92
- overlay.css('left', '0')
93
- overlay.css('background', hermitage.darkening.color)
94
- overlay.css('display', 'block')
95
- overlay.css('opacity', hermitage.darkening.opacity)
96
- overlay.css('filter', "alpha(opacity='#{hermitage.darkening.opacity * 100}')")
97
- overlay.css('width', '100%')
98
- overlay.css('height', '100%')
184
+ width = $(this).outerWidth() if width is 0
185
+ height = $(this).outerWidth() if height is 0
99
186
 
100
- overlay.hide()
101
- overlay.fadeIn()
187
+ param =
188
+ top: "#{Math.max(0, ($(window).height() - height) / 2 + offsetY)}px"
189
+ left: "#{Math.max(0, ($(window).width() - width) / 2 + offsetX)}px"
102
190
 
103
- overlay.click(closeGallery)
191
+ if withAnimation
192
+ this.animate(param, { duration: hermitage.animationDuration, queue: false })
193
+ else
194
+ this.css(param)
104
195
 
105
- overlay
196
+ $.fn.setSize = (width, height, withAnimation = false) ->
197
+ params = { width: width, height: height}
106
198
 
107
- # Creates base navigation button and returns it
108
- createNavigationButton = ->
109
- button = $('<div>')
110
- $('#hermitage').append(button)
111
-
112
- button.css('position', 'fixed')
113
- button.css('width', "#{hermitage.navigationButton.width}px")
114
- button.css('display', 'block')
115
- button.css('cursor', 'pointer')
199
+ if withAnimation
200
+ this.animate(params, { duration: hermitage.animationDuration, queue: false })
201
+ else
202
+ this.css(params)
116
203
 
117
- button.css('border-width', '1px')
118
- button.css('border-style', 'solid')
119
- button.css('border-color', hermitage.navigationButton.color)
120
- button.css('display', 'block')
121
- button.css('border-radius', "#{hermitage.navigationButton.borderRadius}px")
122
- button.css('-webkit-border-radius', "#{hermitage.navigationButton.borderRadius}px")
123
- button.css('-moz-border-radius', "#{hermitage.navigationButton.borderRadius}px")
204
+ $.fn.maximizeLineHeight = (withAnimation = false) ->
205
+ param = { lineHeight: "#{this.outerHeight()}px" }
206
+
207
+ if withAnimation
208
+ this.animate(param, { duration: hermitage.animationDuration, queue: false })
209
+ else
210
+ this.css(param)
124
211
 
125
- button.css('color', hermitage.navigationButton.color)
126
- button.css('text-align', 'center')
127
- button.css('vertical-align', 'middle')
128
- button.css('font', '30px Tahoma,Arial,Helvetica,sans-serif')
212
+ #
213
+ # Hermitage logic
214
+ #
129
215
 
130
- button.hide()
216
+ # Creates darkening overlay, shows it and sets its click handler
217
+ createDarkening = ->
218
+ $('<div>')
219
+ .attr(hermitage.darkening.default.attributes)
220
+ .css(hermitage.darkening.default.styles)
221
+ .css('opacity', hermitage.darkening.opacity)
222
+ .css('filter', "alpha(opacity='#{hermitage.darkening.opacity * 100}')")
223
+ .css(hermitage.darkening.styles)
224
+ .appendTo($('#hermitage'))
225
+ .hide()
226
+ .fadeIn()
227
+ .click(closeGallery)
131
228
 
132
- button
229
+ # Creates base navigation button and returns it
230
+ createNavigationButton = ->
231
+ $('<div>')
232
+ .appendTo($('#hermitage'))
233
+ .hide()
234
+ .css(hermitage.navigationButtons.default.styles)
235
+ .maximizeLineHeight()
236
+ .css(hermitage.navigationButtons.styles)
133
237
 
134
238
  # Creates right navigation button and returns it
135
239
  createRightNavigationButton = ->
136
- button = createNavigationButton()
137
- button.attr('id', 'navigation-right')
138
- button.css('border-top-left-radius', '0')
139
- button.css('-webkit-border-top-left-radius', '0')
140
- button.css('-moz-border-top-left-radius', '0')
141
- button.css('border-bottom-left-radius', '0')
142
- button.css('-webkit-border-bottom-left-radius', '0')
143
- button.css('-moz-border-bottom-left-radius', '0')
144
- button.append('>')
145
-
146
- button.click(showNextImage)
147
-
148
- button
240
+ createNavigationButton()
241
+ .attr(hermitage.navigationButtons.next.default.attributes)
242
+ .css(hermitage.navigationButtons.next.default.styles)
243
+ .css(hermitage.navigationButtons.next.styles)
244
+ .text(hermitage.navigationButtons.next.text)
245
+ .click(showNextImage)
149
246
 
150
247
  # Create left navigation button and returns it
151
248
  createLeftNavigationButton = ->
152
- button = createNavigationButton()
153
- button.attr('id', 'navigation-left')
154
- button.css('border-top-right-radius', '0')
155
- button.css('-webkit-border-top-right-radius', '0')
156
- button.css('-moz-border-top-right-radius', '0')
157
- button.css('border-bottom-right-radius', '0')
158
- button.css('-webkit-border-bottom-right-radius', '0')
159
- button.css('-moz-border-bottom-right-radius', '0')
160
- button.append('<')
161
-
162
- button.click(showPreviousImage)
163
-
164
- button
249
+ createNavigationButton()
250
+ .attr(hermitage.navigationButtons.previous.default.attributes)
251
+ .css(hermitage.navigationButtons.previous.default.styles)
252
+ .css(hermitage.navigationButtons.previous.styles)
253
+ .text(hermitage.navigationButtons.previous.text)
254
+ .click(showPreviousImage)
165
255
 
166
256
  # Creates close button
167
257
  createCloseButton = ->
168
- button = $('<div>', {id: 'close-button'})
169
- $('#hermitage').append(button)
170
-
171
- button.hide()
172
-
173
- button.text(hermitage.closeButton.text)
174
- button.css('position', 'fixed')
175
- button.css('color', hermitage.closeButton.color)
176
- button.css('font-size', "#{hermitage.closeButton.fontSize}px")
177
- button.css('white-space', 'nowrap')
178
- button.css('cursor', 'pointer')
179
-
180
- button.click(closeGallery)
181
-
182
- button
183
-
184
- # Shows full size image of the chosen one
258
+ $('<div>')
259
+ .appendTo($('#hermitage'))
260
+ .hide()
261
+ .attr(hermitage.closeButton.default.attributes)
262
+ .css(hermitage.closeButton.default.styles)
263
+ .text(hermitage.closeButton.text)
264
+ .css(hermitage.closeButton.styles)
265
+ .click(closeGallery)
266
+
267
+ createBotomPanel = ->
268
+ bottomPanel = $('<div>')
269
+ .appendTo($('#hermitage'))
270
+ .hide()
271
+ .attr(hermitage.bottomPanel.default.attributes)
272
+ .css(hermitage.bottomPanel.default.styles)
273
+ .css(hermitage.bottomPanel.styles)
274
+
275
+ text = $('<div>')
276
+ .appendTo(bottomPanel)
277
+ .attr(hermitage.bottomPanel.text.default.attributes)
278
+ .css(hermitage.bottomPanel.text.default.styles)
279
+ .css(hermitage.bottomPanel.text.styles)
280
+
281
+ # Shows original image of the chosen one
185
282
  openGallery = (image) ->
186
- $('#hermitage').css('z-index', hermitage.zIndex)
187
- $('#hermitage').empty()
188
- $('#hermitage').show()
283
+ $('#hermitage')
284
+ .css('z-index', hermitage.zIndex)
285
+ .empty()
286
+ .show()
189
287
 
190
- createOverlay()
288
+ createDarkening()
191
289
  createRightNavigationButton()
192
290
  createLeftNavigationButton()
193
291
  createCloseButton()
292
+ createBotomPanel()
194
293
 
195
- showImage(hermitage.images.indexOf($(image).attr('href')))
294
+ showImage(indexOfImage(image))
196
295
 
197
-
198
296
  # Shows image with specified index from images array
199
297
  showImage = (index) ->
200
- # Create full size image at the center of screen
201
298
  img = $('<img />')
202
- img.attr('src', hermitage.images[index])
203
- img.attr('class', 'current')
204
- img.css('cursor', 'pointer')
205
- img.css('max-width', 'none') # fix the conflict with Twitter Bootstrap
206
- img.hide()
207
-
208
- $('#hermitage').append(img)
299
+ .attr(hermitage.image.default.attributes)
300
+ .css(hermitage.image.default.styles)
301
+ .attr('src', hermitage.images[index])
302
+ .css(hermitage.image.styles)
303
+ .hide()
304
+ .appendTo($('#hermitage'))
209
305
 
210
306
  img.click (event) ->
211
307
  if event.pageX >= $(window).width() / 2
@@ -213,38 +309,14 @@ showImage = (index) ->
213
309
  else
214
310
  showPreviousImage()
215
311
 
216
- # When image will be loaded set correct size,
217
- # center element and show it
218
- $('<img />').attr('src', hermitage.images[index]).load ->
219
- maxWidth = $(window).width() - (hermitage.windowPadding.x + $('#navigation-left').outerWidth() + hermitage.navigationButton.margin) * 2
220
- maxHeight = $(window).height() - hermitage.windowPadding.y * 2
221
-
222
- scale = 1.0
223
-
224
- if maxWidth <= hermitage.minimumSize.width or maxHeight <= hermitage.minimumSize.height
225
- if maxWidth < maxHeight
226
- maxWidth = hermitage.minimumSize.width
227
- maxHeight = maxWidth * (this.height / this.width)
228
- else
229
- maxHeight = hermitage.minimumSize.height
230
- maxWidth = maxHeight * (this.width / this.height)
231
-
232
- if this.width > maxWidth or this.height > maxHeight
233
- scale = Math.min(maxWidth / this.width, maxHeight / this.height)
234
-
235
- img.width(this.width * scale)
236
- img.height(this.height * scale)
237
-
238
- center(img)
239
- img.fadeIn(hermitage.animationDuration)
240
- adjustNavigationButtons(img)
241
- adjustCloseButton(img)
312
+ adjustImage(false, img)
242
313
 
243
314
  # Shows next image
244
315
  showNextImage = ->
245
316
  current = $('img.current')
246
317
  if current.length is 1
247
- index = hermitage.images.indexOf(current.attr('src'))
318
+ index = indexOfImage(current)
319
+ return unless canShowNextAfter(index)
248
320
  hideCurrentImage()
249
321
  if index < hermitage.images.length - 1
250
322
  showImage(index + 1)
@@ -255,7 +327,8 @@ showNextImage = ->
255
327
  showPreviousImage = ->
256
328
  current = $('img.current')
257
329
  if current.length is 1
258
- index = hermitage.images.indexOf(current.attr('src'))
330
+ index = indexOfImage(current)
331
+ return unless canShowPreviousBefore(index)
259
332
  hideCurrentImage()
260
333
  if index > 0
261
334
  showImage(index - 1)
@@ -274,49 +347,126 @@ closeGallery = ->
274
347
  $('#hermitage :not(#overlay)').fadeOut()
275
348
  $('#overlay').fadeOut hermitage.animationDuration, ->
276
349
  $('#hermitage').hide()
277
- $('#hermitage').empty()
350
+ .empty()
351
+
352
+
353
+ # Moves image to correct position and sets correct size.
354
+ # Then it calls adjusting methods for navigation and close buttons.
355
+ # Attributes:
356
+ # * `withAnimation` - boolean value determines if adjusting should be animated
357
+ # * `image` - currently opened image. It is optional argument and can be evaluated by the method itself.
358
+ adjustImage = (withAnimation = false, image = undefined) ->
359
+
360
+ if image is undefined
361
+ image = $('#hermitage img.current')
362
+ return unless image.length is 1
363
+
364
+ index = indexOfImage(image)
278
365
 
366
+ # Wait until source image is loaded
367
+ $('<img />').attr('src', hermitage.images[index]).load ->
368
+
369
+ # Offset for image position
370
+ offsetY = 0
371
+
372
+ maxWidth = $(window).width() - $('#navigation-left').outerWidth() - $('#navigation-right').outerWidth()
373
+ maxHeight = $(window).height()
374
+
375
+ text = hermitage.texts[index]
376
+
377
+ if text
378
+ offsetY = - $('#hermitage .bottom-panel').outerHeight() / 2
379
+ maxHeight -= $('#hermitage .bottom-panel').outerHeight()
380
+
381
+ $('#hermitage .bottom-panel .text').text(text or '')
382
+
383
+ if maxWidth <= hermitage.minimumSize.width or maxHeight <= hermitage.minimumSize.height
384
+ if maxWidth < maxHeight
385
+ maxWidth = hermitage.minimumSize.width
386
+ maxHeight = maxWidth * (this.height / this.width)
387
+ else
388
+ maxHeight = hermitage.minimumSize.height
389
+ maxWidth = maxHeight * (this.width / this.height)
390
+
391
+ scale = 1.0
392
+
393
+ if this.width > maxWidth or this.height > maxHeight
394
+ scale = Math.min(maxWidth / this.width, maxHeight / this.height)
395
+
396
+ image
397
+ .setSize(this.width * scale, this.height * scale, withAnimation)
398
+ .center(withAnimation, this.width * scale, this.height * scale, 0, offsetY)
399
+ .fadeIn(hermitage.animationDuration)
400
+
401
+ adjustNavigationButtons(withAnimation, image)
402
+ adjustCloseButton(withAnimation, image)
403
+ adjustBottomPanel(withAnimation)
279
404
 
280
405
  # Moves navigation buttons to proper positions
281
- adjustNavigationButtons = (current) ->
282
- return unless hermitage.navigationButton.enabled
406
+ adjustNavigationButtons = (withAnimation, current) ->
407
+ return unless hermitage.navigationButtons.enabled
283
408
 
284
- previous = $('#navigation-left')
285
- next = $('#navigation-right')
409
+ previous = $('#hermitage #navigation-left')
410
+ next = $('#hermitage #navigation-right')
286
411
 
287
- newPrevious =
288
- top: current.position().top
289
- left: current.position().left - previous.outerWidth() - hermitage.navigationButton.margin
290
- height: current.outerHeight()
412
+ # Set correct styles
413
+ previous.maximizeLineHeight(withAnimation)
414
+ next.maximizeLineHeight(withAnimation)
291
415
 
292
- newNext =
293
- top: current.position().top
294
- left: current.position().left + current.outerWidth() + hermitage.navigationButton.margin
295
- height: current.outerHeight()
416
+ # Show or hide buttons
296
417
 
297
- move = (button, dimensions) ->
298
- button.animate({ height: "#{dimensions.height}px", 'line-height': "#{dimensions.height}px", left: "#{dimensions.left}px", top: "#{dimensions.top}px"}, hermitage.animationDuration)
299
- button.fadeIn(hermitage.animationDuration) if button.css('display') is 'none'
418
+ currentIndex = indexOfImage(current)
419
+
420
+ duration = hermitage.animationDuration
421
+
422
+ if canShowPreviousBefore(currentIndex)
423
+ previous.fadeIn(duration)
424
+ else
425
+ previous.fadeOut(duration)
300
426
 
301
- move previous, newPrevious
302
- move next, newNext
427
+ if canShowNextAfter(currentIndex)
428
+ next.fadeIn(duration)
429
+ else
430
+ next.fadeOut(duration)
303
431
 
304
432
  # Moves close button to proper position
305
- adjustCloseButton = (current) ->
433
+ adjustCloseButton = (withAnimation, current) ->
306
434
  return unless hermitage.closeButton.enabled
435
+ button = $('#hermitage #close-button')
436
+ if button.css('display') is 'none'
437
+ button.fadeIn(hermitage.animationDuration)
307
438
 
308
- button = $('#close-button')
439
+ adjustBottomPanel = (withAnimation) ->
440
+ panel = $('#hermitage .bottom-panel')
441
+ if panel.text() is ''
442
+ panel.fadeOut(hermitage.animationDuration)
443
+ else
444
+ params =
445
+ width: "#{$(window).width() - $('#navigation-left').outerWidth() - $('#navigation-right').outerWidth()}px"
446
+ left: "#{$('#navigation-left').position().left + $('#navigation-left').outerWidth()}px"
447
+
448
+ if withAnimation
449
+ panel.animate(params, { duration: hermitage.animationDuration, queue: false })
450
+ else
451
+ panel.css(params)
309
452
 
310
- top = current.position().top - button.outerHeight()
311
- left = current.position().left + current.outerWidth() - button.outerWidth()
453
+ panel.fadeIn(hermitage.animationDuration)
312
454
 
313
- if button.css('display') is 'none'
314
- button.css('top', top)
315
- button.css('left', left)
316
- button.fadeIn(hermitage.animationDuration)
455
+ indexOfImage = (image) ->
456
+ href = if $(image).prop('tagName') is 'IMG' then $(image).attr('src') else $(image).attr('href')
457
+ hermitage.images.indexOf(href)
317
458
 
318
- button.animate({ top: "#{top}px", left: "#{left}px" }, hermitage.animationDuration)
319
-
459
+ canShowNextAfter = (index) ->
460
+ if index < hermitage.images.length - 1
461
+ true
462
+ else
463
+ hermitage.looped
464
+
465
+ canShowPreviousBefore = (index) ->
466
+ if index > 0
467
+ true
468
+ else
469
+ hermitage.looped
320
470
 
321
471
  # Initialize gallery on page load
322
472
  $(document).ready(hermitage.init)
data/hermitage.gemspec CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.version = Hermitage::VERSION
9
9
  spec.authors = ['Alexander Borovykh']
10
10
  spec.email = ['immaculate.pine@gmail.com']
11
- spec.description = %q{Ruby library for generation of image galleries.}
12
- spec.summary = %q{Ruby library for generation of image galleries (thumbnails and full size images viewer).}
11
+ spec.description = %q{Ruby library for image galleries generation.}
12
+ spec.summary = %q{Ruby library for image galleries generation (thumbnails and original images viewer).}
13
13
  spec.homepage = 'https://github.com/ImmaculatePine/hermitage'
14
14
  spec.license = 'MIT'
15
15
 
@@ -4,8 +4,8 @@
4
4
  # You can configure any of its options and they will be applied for every rendering.
5
5
  #
6
6
  # Hermitage.configs[:default].merge!({
7
- # attribute_full_size: 'file.url',
8
- # attribute_thumbnail: 'file.url(:thumbnail)',
7
+ # original: 'file.url',
8
+ # thumbnail: 'file.url(:thumbnail)',
9
9
  # list_tag: :ul,
10
10
  # item_tag: :li,
11
11
  # list_class: 'thumbnails',
@@ -1,10 +1,13 @@
1
1
  module Hermitage
2
2
  module Defaults
3
- # Model's attribute (or method) that returns the path to the full size image
4
- ATTRIBUTE_FULL_SIZE = 'file.url'
3
+ # Model's attribute (or method) that returns the path to the original image
4
+ ORIGINAL = 'file.url'
5
5
 
6
6
  # Model's attribute (or method) that returns the path to the image's thumbnail
7
- ATTRIBUTE_THUMBNAIL = 'file.url(:thumbnail)'
7
+ THUMBNAIL = 'file.url(:thumbnail)'
8
+
9
+ # Model's attribute (or method) that returns title or description of image
10
+ TITLE = nil
8
11
 
9
12
  # Wrapper for the whole gallery
10
13
  LIST_TAG = :ul
@@ -1,3 +1,3 @@
1
1
  module Hermitage
2
- VERSION = '0.0.2.1'
2
+ VERSION = '0.0.3'
3
3
  end