lato_media 2.1 → 2.1.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 +5 -5
- data/MIT-LICENSE +1 -1
- data/README.md +11 -5
- data/app/assets/javascripts/lato_media/application.js +2 -3
- data/app/assets/javascripts/lato_media/{interfaces/MediaSelector.js → modules/MediaPicker.js} +72 -5
- data/app/cells/lato_media/inputs/gallery/views/show.html.erb +1 -1
- data/app/cells/lato_media/inputs/media/views/show.html.erb +1 -1
- data/app/controllers/lato_media/back/media_selector_controller.rb +16 -0
- data/app/controllers/lato_media/back/medias_controller.rb +3 -2
- data/app/models/lato_media/media.rb +6 -1
- data/app/views/lato_media/back/media_selector/load_form.js.erb +3 -2
- data/app/views/lato_media/back/medias/edit.html.erb +18 -16
- data/app/views/lato_media/back/medias/index.html.erb +1 -1
- data/app/views/lato_media/back/medias/refresh_index.js.erb +5 -3
- data/app/views/lato_media/partials/media_selector/_modal.html.erb +1 -1
- data/app/views/lato_media/partials/media_selector/_modal_form.html.erb +1 -1
- data/config/routes/back.rb +2 -1
- data/lib/lato_media/engine.rb +1 -0
- data/lib/lato_media/version.rb +1 -1
- metadata +21 -8
- data/app/assets/javascripts/lato_media/initializers/Inputs.js +0 -62
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: fdec1c78649d43fde79735eea890260d8b7480c7517a21553bbfb4d8211af60a
|
4
|
+
data.tar.gz: 7e017a2081d22c2f18671bcae0070fdf5e335839d9142f53502176a0e9ca789d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6528d7f4d47d7cdb316ba44c22cabfcadc5945e368c0bb9ccc82f9211050d571f73f37bc53b3be756d979175b602de696f0be16ea397d2948ad67d6cb40607aa
|
7
|
+
data.tar.gz: 3857671f304d8e5cc65ff98bd17e6b53ec09e7723af0d0100fc643405c68c1b0625fe0e284ef45636f2ac5037371239906fd9541b303e769c16b23a2c9c0bc68
|
data/MIT-LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,27 +1,33 @@
|
|
1
1
|
# Lato Media
|
2
2
|
|
3
|
+
[](https://badge.fury.io/rb/lato_media)
|
4
|
+
|
5
|
+
Lato is a Rails engine used to develop modular admin panels. This is the module used to manage attachments and media files.
|
6
|
+
|
3
7
|
## Installation
|
4
8
|
|
5
|
-
|
9
|
+
Install [lato_core](https://github.com/ideonetwork/lato-core) gem as required dependency.
|
10
|
+
|
11
|
+
Add the lato_media gem on your Gemfile:
|
6
12
|
|
7
13
|
```ruby
|
8
14
|
gem 'lato_media'
|
9
15
|
```
|
10
16
|
|
11
|
-
Install the gem
|
17
|
+
Install the gem:
|
12
18
|
|
13
19
|
```console
|
14
20
|
bundle install
|
15
21
|
```
|
16
22
|
|
17
|
-
Copy the migrations
|
23
|
+
Copy the migrations:
|
18
24
|
|
19
25
|
```console
|
20
26
|
rails lato_media:install:migrations
|
21
27
|
```
|
22
28
|
|
23
|
-
Exec migrations
|
29
|
+
Exec migrations:
|
24
30
|
|
25
31
|
```console
|
26
32
|
bundle exec rake db:migrate
|
27
|
-
```
|
33
|
+
```
|
@@ -10,9 +10,8 @@
|
|
10
10
|
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
|
11
11
|
// about supported directives.
|
12
12
|
//
|
13
|
-
//= require_tree ./
|
14
|
-
//= require_tree ./interfaces
|
13
|
+
//= require_tree ./modules
|
15
14
|
|
16
15
|
$(window).load(function () {
|
17
|
-
|
16
|
+
MediaPicker.init()
|
18
17
|
})
|
data/app/assets/javascripts/lato_media/{interfaces/MediaSelector.js → modules/MediaPicker.js}
RENAMED
@@ -1,4 +1,38 @@
|
|
1
|
-
var
|
1
|
+
var MediaPicker = (function () {
|
2
|
+
|
3
|
+
function initializeMediaInput (media) {
|
4
|
+
var mediaInput = $(media).find('.inputs-media__input')
|
5
|
+
$(mediaInput).change(function () {
|
6
|
+
// get utils data
|
7
|
+
var id = $(this).attr('id')
|
8
|
+
var value = $(this).attr('value')
|
9
|
+
var action = $(media).find('.inputs-media__reload')
|
10
|
+
// generate new url
|
11
|
+
var url = action.attr('href')
|
12
|
+
url = _updateQueryStringParameter(url, 'id', id)
|
13
|
+
url = _updateQueryStringParameter(url, 'value', value)
|
14
|
+
// update url and send request
|
15
|
+
$(action).attr('href', url)
|
16
|
+
$(action).trigger('click')
|
17
|
+
})
|
18
|
+
}
|
19
|
+
|
20
|
+
function initializeGalleryInput (gallery) {
|
21
|
+
var galleryInput = $(gallery).find('.inputs-gallery__input')
|
22
|
+
$(galleryInput).change(function () {
|
23
|
+
// get utils data
|
24
|
+
var id = $(this).attr('id')
|
25
|
+
var value = $(this).attr('value')
|
26
|
+
var action = $(gallery).find('.inputs-gallery__reload')
|
27
|
+
// generate new url
|
28
|
+
var url = action.attr('href')
|
29
|
+
url = _updateQueryStringParameter(url, 'id', id)
|
30
|
+
url = _updateQueryStringParameter(url, 'value', value)
|
31
|
+
// update url and send request
|
32
|
+
$(action).attr('href', url)
|
33
|
+
$(action).trigger('click')
|
34
|
+
})
|
35
|
+
}
|
2
36
|
|
3
37
|
// This is the main function used to active the media selector.
|
4
38
|
// The inputId is the input used by the selector to save the selected data.
|
@@ -14,7 +48,7 @@ var MediaSelector = (function () {
|
|
14
48
|
// load index for media selector
|
15
49
|
_reloadIndex()
|
16
50
|
// open the modal
|
17
|
-
|
51
|
+
CoreModal.open('media__media_selector')
|
18
52
|
}
|
19
53
|
|
20
54
|
// This function closes the media selector and remove all event watcher on it.
|
@@ -24,7 +58,7 @@ var MediaSelector = (function () {
|
|
24
58
|
$('#media__media_selector').unbind('loadIndexAction')
|
25
59
|
$('#media__media_selector_cancel_button').unbind('click')
|
26
60
|
// close the modal
|
27
|
-
|
61
|
+
CoreModal.close('media__media_selector')
|
28
62
|
}
|
29
63
|
|
30
64
|
// This function reload the index list for the medias.
|
@@ -120,9 +154,42 @@ var MediaSelector = (function () {
|
|
120
154
|
})
|
121
155
|
}
|
122
156
|
|
157
|
+
// This function updates uri params.
|
158
|
+
function _updateQueryStringParameter (uri, key, value) {
|
159
|
+
var re = new RegExp('([?&])' + key + '=.*?(&|$)', 'i')
|
160
|
+
var separator = uri.indexOf('?') !== -1 ? '&' : '?'
|
161
|
+
if (uri.match(re)) {
|
162
|
+
return uri.replace(re, '$1' + key + '=' + value + '$2')
|
163
|
+
}
|
164
|
+
else {
|
165
|
+
return uri + separator + key + '=' + value
|
166
|
+
}
|
167
|
+
}
|
168
|
+
|
169
|
+
function _initMediaInput () {
|
170
|
+
$('.inputs-media').each(function () {
|
171
|
+
initializeMediaInput(this)
|
172
|
+
})
|
173
|
+
}
|
174
|
+
|
175
|
+
function _initGalleryInput () {
|
176
|
+
$('.inputs-gallery').each(function () {
|
177
|
+
initializeGalleryInput(this)
|
178
|
+
})
|
179
|
+
}
|
180
|
+
|
181
|
+
// Init:
|
182
|
+
function init () {
|
183
|
+
_initMediaInput()
|
184
|
+
_initGalleryInput()
|
185
|
+
}
|
186
|
+
|
123
187
|
return {
|
188
|
+
init: init,
|
124
189
|
open: open,
|
125
|
-
close: close
|
190
|
+
close: close,
|
191
|
+
initializeMediaInput: initializeMediaInput,
|
192
|
+
initializeGalleryInput: initializeGalleryInput
|
126
193
|
}
|
127
194
|
|
128
|
-
})()
|
195
|
+
})()
|
@@ -3,6 +3,8 @@ module LatoMedia
|
|
3
3
|
# This class contains actions used by media cells.
|
4
4
|
class Back::MediaSelectorController < Back::BackController
|
5
5
|
|
6
|
+
skip_before_action :verify_authenticity_token, only: [:add_media]
|
7
|
+
|
6
8
|
def load_index
|
7
9
|
medias = LatoMedia::Media.all
|
8
10
|
# set data for view
|
@@ -39,5 +41,19 @@ module LatoMedia
|
|
39
41
|
@id = params[:id]
|
40
42
|
end
|
41
43
|
|
44
|
+
def add_media
|
45
|
+
@media = LatoMedia::Media.new(attachment: params[:file])
|
46
|
+
|
47
|
+
unless @media.save
|
48
|
+
render json: { error: @media.errors.full_messages.to_sentence }, status: 400
|
49
|
+
return
|
50
|
+
end
|
51
|
+
|
52
|
+
render json: {}, status: 200
|
53
|
+
rescue => e
|
54
|
+
puts e
|
55
|
+
render json: { error: 'There was an internal error' }, status: 500
|
56
|
+
end
|
57
|
+
|
42
58
|
end
|
43
59
|
end
|
@@ -1,8 +1,6 @@
|
|
1
1
|
module LatoMedia
|
2
2
|
class Back::MediasController < Back::BackController
|
3
3
|
|
4
|
-
skip_before_action :verify_authenticity_token, only: [:create]
|
5
|
-
|
6
4
|
before_action do
|
7
5
|
core__set_menu_active_item('media_medias')
|
8
6
|
end
|
@@ -37,6 +35,9 @@ module LatoMedia
|
|
37
35
|
end
|
38
36
|
|
39
37
|
render json: {}, status: 200
|
38
|
+
rescue => e
|
39
|
+
puts e
|
40
|
+
render json: {error: 'There was an internal error'}, status: 500
|
40
41
|
end
|
41
42
|
|
42
43
|
def edit
|
@@ -7,13 +7,18 @@ module LatoMedia
|
|
7
7
|
thumb: "#{CONFIGS[:lato_media][:thumb_media_width]}x#{CONFIGS[:lato_media][:thumb_media_width]}>"
|
8
8
|
}
|
9
9
|
|
10
|
+
IMAGES_PROCESSORS = [:thumbnail, :paperclip_optimizer]
|
11
|
+
|
10
12
|
# Dependencies:
|
11
13
|
|
12
14
|
include Media::EntityHelpers
|
13
15
|
|
14
16
|
# Other settings:
|
15
17
|
|
16
|
-
has_attached_file :attachment,
|
18
|
+
has_attached_file :attachment,
|
19
|
+
styles: lambda { |a| a.content_type =~ /^image/ ? IMAGES_SIZES : {} },
|
20
|
+
processors: IMAGES_PROCESSORS
|
21
|
+
|
17
22
|
do_not_validate_attachment_file_type :attachment
|
18
23
|
|
19
24
|
# Callbacks:
|
@@ -5,5 +5,6 @@ $('#media__media_selector .partials__media-selector-index-container').html('<%=j
|
|
5
5
|
// trigger event of change
|
6
6
|
$('#media__media_selector').trigger('loadIndexAction')
|
7
7
|
|
8
|
-
// initialize
|
9
|
-
|
8
|
+
// initialize dropzone input
|
9
|
+
var dropzone = $('#media__media_selector').find('.inputs-dropzone')
|
10
|
+
CoreMediapicker.initializeDropzone(dropzone)
|
@@ -8,6 +8,24 @@
|
|
8
8
|
<!-- MAIN CONTAINER -->
|
9
9
|
<%=raw row.open %>
|
10
10
|
|
11
|
+
<!-- BIG SECTION CONTAINER -->
|
12
|
+
<%=raw container_block_big.open %>
|
13
|
+
|
14
|
+
<%=raw row.open %>
|
15
|
+
|
16
|
+
<%=raw block.open %>
|
17
|
+
|
18
|
+
<%=raw cell(:elements, :title).new(label: @media.title, size: 4) %>
|
19
|
+
|
20
|
+
<%= render 'lato_media/back/medias/shared/form', url: lato_media.media_path(@media.id), method: :put %>
|
21
|
+
|
22
|
+
<%=raw block.close %>
|
23
|
+
|
24
|
+
<%=raw row.close %>
|
25
|
+
|
26
|
+
<%=raw container_block_big.close %>
|
27
|
+
<!-- / BIG SECTION CONTAINER -->
|
28
|
+
|
11
29
|
<!-- SMALL SECTION CONTAINER -->
|
12
30
|
<%=raw container_block_small.open %>
|
13
31
|
|
@@ -31,21 +49,5 @@
|
|
31
49
|
<%=raw container_block_small.close %>
|
32
50
|
<!-- / SMALL SECTION CONTAINER -->
|
33
51
|
|
34
|
-
<!-- BIG SECTION CONTAINER -->
|
35
|
-
<%=raw container_block_big.open %>
|
36
|
-
|
37
|
-
<%=raw row.open %>
|
38
|
-
|
39
|
-
<%=raw block.open %>
|
40
|
-
|
41
|
-
<%= render 'lato_media/back/medias/shared/form', url: lato_media.media_path(@media.id), method: :put %>
|
42
|
-
|
43
|
-
<%=raw block.close %>
|
44
|
-
|
45
|
-
<%=raw row.close %>
|
46
|
-
|
47
|
-
<%=raw container_block_big.close %>
|
48
|
-
<!-- / BIG SECTION CONTAINER -->
|
49
|
-
|
50
52
|
<%=raw row.close %>
|
51
53
|
<!-- / MAIN CONTAINER -->
|
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
<div class="text-right">
|
12
12
|
<%=raw cell(:elements, :button).new(label: LANGUAGES[:lato_media][:mixed][:add_media], icon: 'plus',
|
13
|
-
onclick: "
|
13
|
+
onclick: "CoreModal.open('dropzone-modal', event);") %>
|
14
14
|
</div>
|
15
15
|
<br>
|
16
16
|
|
@@ -2,10 +2,12 @@
|
|
2
2
|
$('.medias__medias-index').replaceWith('<%=j render 'lato_media/back/medias/shared/index' %>')
|
3
3
|
|
4
4
|
// Close modal
|
5
|
-
|
5
|
+
CoreModal.close('dropzone-modal')
|
6
6
|
|
7
7
|
// Refresh modal content
|
8
|
-
$('
|
8
|
+
var dropzoneContainer = $('#dropzone-modal').find('.medias__dropzone-modal')
|
9
|
+
$(dropzoneContainer).replaceWith('<%=j render 'lato_media/back/medias/shared/dropzone_modal' %>')
|
9
10
|
|
10
11
|
// Re-initialize dropzone
|
11
|
-
|
12
|
+
var dropzone = $('#dropzone-modal').find('.inputs-dropzone')
|
13
|
+
CoreMediapicker.initializeDropzone(dropzone)
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<%=raw LatoCore::Elements::Button::Cell.new(url: '#', label: LANGUAGES[:lato_media][:mixed][:cancel],
|
11
11
|
style: 'danger', icon: 'ban', id: 'media__media_selector_cancel_button') %>
|
12
12
|
<%=raw LatoCore::Elements::Button::Cell.new(url: '#', label: LANGUAGES[:lato_media][:mixed][:confirm],
|
13
|
-
style: 'success', icon: 'check', onclick: '
|
13
|
+
style: 'success', icon: 'check', onclick: 'MediaPicker.close(event);') %>
|
14
14
|
</div>
|
15
15
|
|
16
16
|
</div>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<div class="partials__media-selector-form">
|
2
2
|
|
3
|
-
<%=raw cell(:inputs, :dropzone).new(url: lato_media.
|
3
|
+
<%=raw cell(:inputs, :dropzone).new(url: lato_media.media_selector_add_media_path, max_size: CONFIGS[:lato_media][:max_media_accepted_size],
|
4
4
|
label: LANGUAGES[:lato_media][:mixed][:load_media_files]) %>
|
5
5
|
|
6
6
|
</div>
|
data/config/routes/back.rb
CHANGED
@@ -6,4 +6,5 @@ get 'medias_extra/refresh_index', to: 'back/medias#refresh_index', as: 'medias_r
|
|
6
6
|
get 'media_selector/load_index', to: 'back/media_selector#load_index', as: 'media_selector_load_index'
|
7
7
|
get 'media_selector/load_form', to: 'back/media_selector#load_form', as: 'media_selector_load_form'
|
8
8
|
get 'media_selector/load_inputs_media', to: 'back/media_selector#load_inputs_media', as: 'media_selector_load_inputs_media'
|
9
|
-
get 'media_selector/load_inputs_gallery', to: 'back/media_selector#load_inputs_gallery', as: 'media_selector_load_inputs_gallery'
|
9
|
+
get 'media_selector/load_inputs_gallery', to: 'back/media_selector#load_inputs_gallery', as: 'media_selector_load_inputs_gallery'
|
10
|
+
post 'media_selector/add_media', to: 'back/media_selector#add_media', as: 'media_selector_add_media'
|
data/lib/lato_media/engine.rb
CHANGED
data/lib/lato_media/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lato_media
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ideonetwork
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-03-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -44,14 +44,28 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 5.
|
47
|
+
version: 5.2.1
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 5.
|
54
|
+
version: 5.2.1
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: paperclip-optimizer
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: sqlite3
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,8 +92,7 @@ files:
|
|
78
92
|
- Rakefile
|
79
93
|
- app/assets/config/lato_media_manifest.js
|
80
94
|
- app/assets/javascripts/lato_media/application.js
|
81
|
-
- app/assets/javascripts/lato_media/
|
82
|
-
- app/assets/javascripts/lato_media/interfaces/MediaSelector.js
|
95
|
+
- app/assets/javascripts/lato_media/modules/MediaPicker.js
|
83
96
|
- app/assets/stylesheets/lato_media/application.scss
|
84
97
|
- app/assets/stylesheets/lato_media/cells/_cells.scss
|
85
98
|
- app/assets/stylesheets/lato_media/cells/elements/_elements.scss
|
@@ -152,7 +165,7 @@ files:
|
|
152
165
|
- lib/lato_media/engine.rb
|
153
166
|
- lib/lato_media/version.rb
|
154
167
|
- lib/tasks/lato_media_tasks.rake
|
155
|
-
homepage: http://
|
168
|
+
homepage: http://ideonetwork.it/
|
156
169
|
licenses:
|
157
170
|
- MIT
|
158
171
|
metadata: {}
|
@@ -172,7 +185,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
172
185
|
version: '0'
|
173
186
|
requirements: []
|
174
187
|
rubyforge_project:
|
175
|
-
rubygems_version: 2.
|
188
|
+
rubygems_version: 2.7.3
|
176
189
|
signing_key:
|
177
190
|
specification_version: 4
|
178
191
|
summary: Lato media module
|
@@ -1,62 +0,0 @@
|
|
1
|
-
var MediaInputsInitializer = (function () {
|
2
|
-
|
3
|
-
function initializeMedia () {
|
4
|
-
$('.inputs-media .inputs-media__input').change(function () {
|
5
|
-
// get utils data
|
6
|
-
var id = $(this).attr('id')
|
7
|
-
var media = $('#inputs-media-' + id)
|
8
|
-
var input = $(media).find('.inputs-media__input')
|
9
|
-
var action = $(media).find('.inputs-media__reload')
|
10
|
-
var value = $(input).attr('value')
|
11
|
-
// generate new url
|
12
|
-
var url = action.attr('href')
|
13
|
-
url = _updateQueryStringParameter(url, 'id', id)
|
14
|
-
url = _updateQueryStringParameter(url, 'value', value)
|
15
|
-
// update url and send request
|
16
|
-
$(action).attr('href', url)
|
17
|
-
$(action).trigger('click')
|
18
|
-
})
|
19
|
-
}
|
20
|
-
|
21
|
-
function initializeGallery () {
|
22
|
-
$('.inputs-gallery .inputs-gallery__input').change(function () {
|
23
|
-
// get utils data
|
24
|
-
var id = $(this).attr('id')
|
25
|
-
var gallery = $('#inputs-gallery-' + id)
|
26
|
-
var input = $(gallery).find('.inputs-gallery__input')
|
27
|
-
var action = $(gallery).find('.inputs-gallery__reload')
|
28
|
-
var value = $(input).attr('value')
|
29
|
-
// generate new url
|
30
|
-
var url = action.attr('href')
|
31
|
-
url = _updateQueryStringParameter(url, 'id', id)
|
32
|
-
url = _updateQueryStringParameter(url, 'value', value)
|
33
|
-
// update url and send request
|
34
|
-
$(action).attr('href', url)
|
35
|
-
$(action).trigger('click')
|
36
|
-
})
|
37
|
-
}
|
38
|
-
|
39
|
-
// This function updates uri params.
|
40
|
-
function _updateQueryStringParameter(uri, key, value) {
|
41
|
-
var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
|
42
|
-
var separator = uri.indexOf('?') !== -1 ? "&" : "?";
|
43
|
-
if (uri.match(re)) {
|
44
|
-
return uri.replace(re, '$1' + key + "=" + value + '$2');
|
45
|
-
}
|
46
|
-
else {
|
47
|
-
return uri + separator + key + "=" + value;
|
48
|
-
}
|
49
|
-
}
|
50
|
-
|
51
|
-
// Init:
|
52
|
-
|
53
|
-
function init () {
|
54
|
-
initializeMedia()
|
55
|
-
initializeGallery()
|
56
|
-
}
|
57
|
-
|
58
|
-
return {
|
59
|
-
init: init
|
60
|
-
}
|
61
|
-
|
62
|
-
})()
|