Version Description
- FIX: Global Options Bugs
- FIX: Wizard Bugs
- FIX: Layout Bugs
- TWEAK: Unwanted Asterisks removed from Add Gallery Layout
Download this release
Release Info
Developer | contact-banker |
Plugin | Gallery Bank: WordPress Photo Gallery Plugin |
Version | 4.0.5 |
Comparing to | |
See all releases |
Code changes from version 4.0.4 to 4.0.5
- assets/admin/layout/css/layout.css +3 -2
- assets/global/plugins/modal/js/bootstrap-modal.js +304 -291
- assets/global/plugins/pluploader/css/jquery.ui.plupload.css +165 -165
- assets/global/plugins/pluploader/js/jquery.ui.plupload.js +1305 -1334
- assets/global/plugins/pluploader/js/plupload.full.min.js +17 -17
- assets/global/plugins/validation/jquery.validate.js +1564 -1565
- gallery-bank.php +8 -8
- includes/footer.php +3 -3
- includes/sidebar.php +5 -1
- includes/web-fonts.php +1 -0
- lib/action-library.php +11 -3
- license.txt +0 -674
- readme.txt +1837 -906
- user-views/includes/albums/style-sheet.php +21 -11
- user-views/includes/common-variables.php +1 -0
- user-views/includes/galleries/scripts-before.php +32 -33
- user-views/includes/galleries/style-sheet.php +59 -49
- user-views/lib/helper.php +26 -20
- views/albums/add-album.php +1 -1
- views/galleries/add-gallery.php +0 -13
- views/galleries/manage-galleries.php +16 -13
- views/tags/add-tag.php +1 -1
- views/wizard/wizard.php +2 -1
assets/admin/layout/css/layout.css
CHANGED
@@ -174,7 +174,7 @@
|
|
174 |
.page-sidebar-tech-banker .page-sidebar-menu-tech-banker li > a > .badge
|
175 |
{
|
176 |
float: right;
|
177 |
-
margin-top:
|
178 |
margin-right: 0px;
|
179 |
}
|
180 |
.page-sidebar-tech-banker .page-sidebar-menu-tech-banker li > a > .badge
|
@@ -183,7 +183,8 @@
|
|
183 |
margin-right: 0px;
|
184 |
color: #fff;
|
185 |
background-color: #ed6b75;
|
186 |
-
padding :
|
|
|
187 |
}
|
188 |
.page-sidebar-tech-banker .page-sidebar-menu-tech-banker .sub-menu
|
189 |
{
|
174 |
.page-sidebar-tech-banker .page-sidebar-menu-tech-banker li > a > .badge
|
175 |
{
|
176 |
float: right;
|
177 |
+
margin-top: 0px;
|
178 |
margin-right: 0px;
|
179 |
}
|
180 |
.page-sidebar-tech-banker .page-sidebar-menu-tech-banker li > a > .badge
|
183 |
margin-right: 0px;
|
184 |
color: #fff;
|
185 |
background-color: #ed6b75;
|
186 |
+
padding : 0px 4px;
|
187 |
+
font-size: 11px;
|
188 |
}
|
189 |
.page-sidebar-tech-banker .page-sidebar-menu-tech-banker .sub-menu
|
190 |
{
|
assets/global/plugins/modal/js/bootstrap-modal.js
CHANGED
@@ -1,328 +1,341 @@
|
|
1 |
+function ($) {
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
|
27 |
-
|
28 |
|
29 |
-
|
30 |
-
|
31 |
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
|
46 |
-
|
47 |
|
48 |
-
|
|
|
49 |
|
50 |
-
|
51 |
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
|
56 |
-
|
57 |
-
|
58 |
|
59 |
-
|
60 |
|
61 |
-
|
62 |
-
|
63 |
-
|
|
|
|
|
64 |
})
|
65 |
-
})
|
66 |
|
67 |
-
|
68 |
-
|
69 |
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
|
78 |
-
|
79 |
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
|
84 |
-
|
85 |
|
86 |
-
|
87 |
|
88 |
-
|
89 |
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
|
100 |
-
|
101 |
-
|
|
|
102 |
|
103 |
-
|
104 |
|
105 |
-
|
106 |
|
107 |
-
|
|
|
108 |
|
109 |
-
|
110 |
|
111 |
-
|
112 |
-
|
113 |
|
114 |
-
|
115 |
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
|
121 |
-
|
122 |
|
123 |
-
$.support.transition && this.$element.hasClass('fade') ?
|
124 |
-
this.$element
|
125 |
-
.one('bsTransitionEnd', $.proxy(this.hideModal, this))
|
126 |
-
.emulateTransitionEnd(Modal.TRANSITION_DURATION) :
|
127 |
-
this.hideModal()
|
128 |
-
}
|
129 |
-
|
130 |
-
Modal.prototype.enforceFocus = function () {
|
131 |
-
$(document)
|
132 |
-
.off('focusin.bs.modal') // guard against infinite focus loop
|
133 |
-
.on('focusin.bs.modal', $.proxy(function (e) {
|
134 |
-
if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
|
135 |
-
this.$element.trigger('focus')
|
136 |
-
}
|
137 |
-
}, this))
|
138 |
-
}
|
139 |
-
|
140 |
-
Modal.prototype.escape = function () {
|
141 |
-
if (this.isShown && this.options.keyboard) {
|
142 |
-
this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
|
143 |
-
e.which == 27 && this.hide()
|
144 |
-
}, this))
|
145 |
-
} else if (!this.isShown) {
|
146 |
-
this.$element.off('keydown.dismiss.bs.modal')
|
147 |
-
}
|
148 |
-
}
|
149 |
-
|
150 |
-
Modal.prototype.resize = function () {
|
151 |
-
if (this.isShown) {
|
152 |
-
$(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
|
153 |
-
} else {
|
154 |
-
$(window).off('resize.bs.modal')
|
155 |
-
}
|
156 |
-
}
|
157 |
-
|
158 |
-
Modal.prototype.hideModal = function () {
|
159 |
-
var that = this
|
160 |
-
this.$element.hide()
|
161 |
-
this.backdrop(function () {
|
162 |
-
that.$body.removeClass('modal-open')
|
163 |
-
that.resetAdjustments()
|
164 |
-
that.resetScrollbar()
|
165 |
-
that.$element.trigger('hidden.bs.modal')
|
166 |
-
})
|
167 |
-
}
|
168 |
-
|
169 |
-
Modal.prototype.removeBackdrop = function () {
|
170 |
-
this.$backdrop && this.$backdrop.remove()
|
171 |
-
this.$backdrop = null
|
172 |
-
}
|
173 |
-
|
174 |
-
Modal.prototype.backdrop = function (callback) {
|
175 |
-
var that = this
|
176 |
-
var animate = this.$element.hasClass('fade') ? 'fade' : ''
|
177 |
-
|
178 |
-
if (this.isShown && this.options.backdrop) {
|
179 |
-
var doAnimate = $.support.transition && animate
|
180 |
-
|
181 |
-
this.$backdrop = $(document.createElement('div'))
|
182 |
-
.addClass('modal-backdrop ' + animate)
|
183 |
-
.appendTo(this.$body)
|
184 |
-
|
185 |
-
this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
|
186 |
-
if (this.ignoreBackdropClick) {
|
187 |
-
this.ignoreBackdropClick = false
|
188 |
-
return
|
189 |
-
}
|
190 |
-
if (e.target !== e.currentTarget) return
|
191 |
-
this.options.backdrop == 'static'
|
192 |
-
? this.$element[0].focus()
|
193 |
-
: this.hide()
|
194 |
-
}, this))
|
195 |
-
|
196 |
-
if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
|
197 |
-
|
198 |
-
this.$backdrop.addClass('in')
|
199 |
-
|
200 |
-
if (!callback) return
|
201 |
-
|
202 |
-
doAnimate ?
|
203 |
-
this.$backdrop
|
204 |
-
.one('bsTransitionEnd', callback)
|
205 |
-
.emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
|
206 |
-
callback()
|
207 |
-
|
208 |
-
} else if (!this.isShown && this.$backdrop) {
|
209 |
-
this.$backdrop.removeClass('in')
|
210 |
-
|
211 |
-
var callbackRemove = function () {
|
212 |
-
that.removeBackdrop()
|
213 |
-
callback && callback()
|
214 |
-
}
|
215 |
$.support.transition && this.$element.hasClass('fade') ?
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
var
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
323 |
})
|
324 |
-
|
325 |
-
|
326 |
-
})
|
327 |
|
328 |
}(jQuery);
|
1 |
+function ($) {
|
2 |
+
'use strict';
|
3 |
+
|
4 |
+
// MODAL CLASS DEFINITION
|
5 |
+
// ======================
|
6 |
+
|
7 |
+
var Modal = function (element, options) {
|
8 |
+
this.options = options
|
9 |
+
this.$body = $(document.body)
|
10 |
+
this.$element = $(element)
|
11 |
+
this.$dialog = this.$element.find('.modal-dialog')
|
12 |
+
this.$backdrop = null
|
13 |
+
this.isShown = null
|
14 |
+
this.originalBodyPad = null
|
15 |
+
this.scrollbarWidth = 0
|
16 |
+
this.ignoreBackdropClick = false
|
17 |
+
|
18 |
+
if (this.options.remote) {
|
19 |
+
this.$element
|
20 |
+
.find('.modal-content')
|
21 |
+
.load(this.options.remote, $.proxy(function () {
|
22 |
+
this.$element.trigger('loaded.bs.modal')
|
23 |
+
}, this))
|
24 |
+
}
|
25 |
+
}
|
26 |
|
27 |
+
Modal.VERSION = '3.3.6'
|
28 |
|
29 |
+
Modal.TRANSITION_DURATION = 300
|
30 |
+
Modal.BACKDROP_TRANSITION_DURATION = 150
|
31 |
|
32 |
+
Modal.DEFAULTS = {
|
33 |
+
backdrop: true,
|
34 |
+
keyboard: true,
|
35 |
+
show: true
|
36 |
+
}
|
37 |
|
38 |
+
Modal.prototype.toggle = function (_relatedTarget) {
|
39 |
+
return this.isShown ? this.hide() : this.show(_relatedTarget)
|
40 |
+
}
|
41 |
|
42 |
+
Modal.prototype.show = function (_relatedTarget) {
|
43 |
+
var that = this
|
44 |
+
var e = $.Event('show.bs.modal', {relatedTarget: _relatedTarget})
|
45 |
|
46 |
+
this.$element.trigger(e)
|
47 |
|
48 |
+
if (this.isShown || e.isDefaultPrevented())
|
49 |
+
return
|
50 |
|
51 |
+
this.isShown = true
|
52 |
|
53 |
+
this.checkScrollbar()
|
54 |
+
this.setScrollbar()
|
55 |
+
this.$body.addClass('modal-open')
|
56 |
|
57 |
+
this.escape()
|
58 |
+
this.resize()
|
59 |
|
60 |
+
this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
|
61 |
|
62 |
+
this.$dialog.on('mousedown.dismiss.bs.modal', function () {
|
63 |
+
that.$element.one('mouseup.dismiss.bs.modal', function (e) {
|
64 |
+
if ($(e.target).is(that.$element))
|
65 |
+
that.ignoreBackdropClick = true
|
66 |
+
})
|
67 |
})
|
|
|
68 |
|
69 |
+
this.backdrop(function () {
|
70 |
+
var transition = $.support.transition && that.$element.hasClass('fade')
|
71 |
|
72 |
+
if (!that.$element.parent().length) {
|
73 |
+
that.$element.appendTo(that.$body) // don't move modals dom position
|
74 |
+
}
|
75 |
|
76 |
+
that.$element
|
77 |
+
.show()
|
78 |
+
.scrollTop(0)
|
79 |
|
80 |
+
that.adjustDialog()
|
81 |
|
82 |
+
if (transition) {
|
83 |
+
that.$element[0].offsetWidth // force reflow
|
84 |
+
}
|
85 |
|
86 |
+
that.$element.addClass('in')
|
87 |
|
88 |
+
that.enforceFocus()
|
89 |
|
90 |
+
var e = $.Event('shown.bs.modal', {relatedTarget: _relatedTarget})
|
91 |
|
92 |
+
transition ?
|
93 |
+
that.$dialog // wait for modal to slide in
|
94 |
+
.one('bsTransitionEnd', function () {
|
95 |
+
that.$element.trigger('focus').trigger(e)
|
96 |
+
})
|
97 |
+
.emulateTransitionEnd(Modal.TRANSITION_DURATION) :
|
98 |
+
that.$element.trigger('focus').trigger(e)
|
99 |
+
})
|
100 |
+
}
|
101 |
|
102 |
+
Modal.prototype.hide = function (e) {
|
103 |
+
if (e)
|
104 |
+
e.preventDefault()
|
105 |
|
106 |
+
e = $.Event('hide.bs.modal')
|
107 |
|
108 |
+
this.$element.trigger(e)
|
109 |
|
110 |
+
if (!this.isShown || e.isDefaultPrevented())
|
111 |
+
return
|
112 |
|
113 |
+
this.isShown = false
|
114 |
|
115 |
+
this.escape()
|
116 |
+
this.resize()
|
117 |
|
118 |
+
$(document).off('focusin.bs.modal')
|
119 |
|
120 |
+
this.$element
|
121 |
+
.removeClass('in')
|
122 |
+
.off('click.dismiss.bs.modal')
|
123 |
+
.off('mouseup.dismiss.bs.modal')
|
124 |
|
125 |
+
this.$dialog.off('mousedown.dismiss.bs.modal')
|
126 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
127 |
$.support.transition && this.$element.hasClass('fade') ?
|
128 |
+
this.$element
|
129 |
+
.one('bsTransitionEnd', $.proxy(this.hideModal, this))
|
130 |
+
.emulateTransitionEnd(Modal.TRANSITION_DURATION) :
|
131 |
+
this.hideModal()
|
132 |
+
}
|
133 |
+
|
134 |
+
Modal.prototype.enforceFocus = function () {
|
135 |
+
$(document)
|
136 |
+
.off('focusin.bs.modal') // guard against infinite focus loop
|
137 |
+
.on('focusin.bs.modal', $.proxy(function (e) {
|
138 |
+
if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
|
139 |
+
this.$element.trigger('focus')
|
140 |
+
}
|
141 |
+
}, this))
|
142 |
+
}
|
143 |
+
|
144 |
+
Modal.prototype.escape = function () {
|
145 |
+
if (this.isShown && this.options.keyboard) {
|
146 |
+
this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
|
147 |
+
e.which == 27 && this.hide()
|
148 |
+
}, this))
|
149 |
+
} else if (!this.isShown) {
|
150 |
+
this.$element.off('keydown.dismiss.bs.modal')
|
151 |
+
}
|
152 |
+
}
|
153 |
+
|
154 |
+
Modal.prototype.resize = function () {
|
155 |
+
if (this.isShown) {
|
156 |
+
$(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
|
157 |
+
} else {
|
158 |
+
$(window).off('resize.bs.modal')
|
159 |
+
}
|
160 |
+
}
|
161 |
+
|
162 |
+
Modal.prototype.hideModal = function () {
|
163 |
+
var that = this
|
164 |
+
this.$element.hide()
|
165 |
+
this.backdrop(function () {
|
166 |
+
that.$body.removeClass('modal-open')
|
167 |
+
that.resetAdjustments()
|
168 |
+
that.resetScrollbar()
|
169 |
+
that.$element.trigger('hidden.bs.modal')
|
170 |
+
})
|
171 |
+
}
|
172 |
+
|
173 |
+
Modal.prototype.removeBackdrop = function () {
|
174 |
+
this.$backdrop && this.$backdrop.remove()
|
175 |
+
this.$backdrop = null
|
176 |
+
}
|
177 |
+
|
178 |
+
Modal.prototype.backdrop = function (callback) {
|
179 |
+
var that = this
|
180 |
+
var animate = this.$element.hasClass('fade') ? 'fade' : ''
|
181 |
+
|
182 |
+
if (this.isShown && this.options.backdrop) {
|
183 |
+
var doAnimate = $.support.transition && animate
|
184 |
+
|
185 |
+
this.$backdrop = $(document.createElement('div'))
|
186 |
+
.addClass('modal-backdrop ' + animate)
|
187 |
+
.appendTo(this.$body)
|
188 |
+
|
189 |
+
this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
|
190 |
+
if (this.ignoreBackdropClick) {
|
191 |
+
this.ignoreBackdropClick = false
|
192 |
+
return
|
193 |
+
}
|
194 |
+
if (e.target !== e.currentTarget)
|
195 |
+
return
|
196 |
+
this.options.backdrop == 'static'
|
197 |
+
? this.$element[0].focus()
|
198 |
+
: this.hide()
|
199 |
+
}, this))
|
200 |
+
|
201 |
+
if (doAnimate)
|
202 |
+
this.$backdrop[0].offsetWidth // force reflow
|
203 |
+
|
204 |
+
this.$backdrop.addClass('in')
|
205 |
+
|
206 |
+
if (!callback)
|
207 |
+
return
|
208 |
+
|
209 |
+
doAnimate ?
|
210 |
+
this.$backdrop
|
211 |
+
.one('bsTransitionEnd', callback)
|
212 |
+
.emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
|
213 |
+
callback()
|
214 |
+
|
215 |
+
} else if (!this.isShown && this.$backdrop) {
|
216 |
+
this.$backdrop.removeClass('in')
|
217 |
+
|
218 |
+
var callbackRemove = function () {
|
219 |
+
that.removeBackdrop()
|
220 |
+
callback && callback()
|
221 |
+
}
|
222 |
+
$.support.transition && this.$element.hasClass('fade') ?
|
223 |
+
this.$backdrop
|
224 |
+
.one('bsTransitionEnd', callbackRemove)
|
225 |
+
.emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
|
226 |
+
callbackRemove()
|
227 |
+
|
228 |
+
} else if (callback) {
|
229 |
+
callback()
|
230 |
+
}
|
231 |
+
}
|
232 |
+
|
233 |
+
// these following methods are used to handle overflowing modals
|
234 |
+
|
235 |
+
Modal.prototype.handleUpdate = function () {
|
236 |
+
this.adjustDialog()
|
237 |
+
}
|
238 |
+
|
239 |
+
Modal.prototype.adjustDialog = function () {
|
240 |
+
var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
|
241 |
+
|
242 |
+
this.$element.css({
|
243 |
+
paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
|
244 |
+
paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
|
245 |
+
})
|
246 |
+
}
|
247 |
+
|
248 |
+
Modal.prototype.resetAdjustments = function () {
|
249 |
+
this.$element.css({
|
250 |
+
paddingLeft: '',
|
251 |
+
paddingRight: ''
|
252 |
+
})
|
253 |
+
}
|
254 |
+
|
255 |
+
Modal.prototype.checkScrollbar = function () {
|
256 |
+
var fullWindowWidth = window.innerWidth
|
257 |
+
if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
|
258 |
+
var documentElementRect = document.documentElement.getBoundingClientRect()
|
259 |
+
fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
|
260 |
+
}
|
261 |
+
this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
|
262 |
+
this.scrollbarWidth = this.measureScrollbar()
|
263 |
+
}
|
264 |
+
|
265 |
+
Modal.prototype.setScrollbar = function () {
|
266 |
+
var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
|
267 |
+
this.originalBodyPad = document.body.style.paddingRight || ''
|
268 |
+
if (this.bodyIsOverflowing)
|
269 |
+
this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
|
270 |
+
}
|
271 |
+
|
272 |
+
Modal.prototype.resetScrollbar = function () {
|
273 |
+
this.$body.css('padding-right', this.originalBodyPad)
|
274 |
+
}
|
275 |
+
|
276 |
+
Modal.prototype.measureScrollbar = function () { // thx walsh
|
277 |
+
var scrollDiv = document.createElement('div')
|
278 |
+
scrollDiv.className = 'modal-scrollbar-measure'
|
279 |
+
this.$body.append(scrollDiv)
|
280 |
+
var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
|
281 |
+
this.$body[0].removeChild(scrollDiv)
|
282 |
+
return scrollbarWidth
|
283 |
+
}
|
284 |
+
|
285 |
+
|
286 |
+
// MODAL PLUGIN DEFINITION
|
287 |
+
// =======================
|
288 |
+
|
289 |
+
function Plugin(option, _relatedTarget) {
|
290 |
+
return this.each(function () {
|
291 |
+
var $this = $(this)
|
292 |
+
var data = $this.data('bs.modal')
|
293 |
+
var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
|
294 |
+
|
295 |
+
if (!data)
|
296 |
+
$this.data('bs.modal', (data = new Modal(this, options)))
|
297 |
+
if (typeof option == 'string')
|
298 |
+
data[option](_relatedTarget)
|
299 |
+
else if (options.show)
|
300 |
+
data.show(_relatedTarget)
|
301 |
+
})
|
302 |
+
}
|
303 |
+
|
304 |
+
var old = $.fn.modal
|
305 |
+
|
306 |
+
$.fn.modal = Plugin
|
307 |
+
$.fn.modal.Constructor = Modal
|
308 |
+
|
309 |
+
|
310 |
+
// MODAL NO CONFLICT
|
311 |
+
// =================
|
312 |
+
|
313 |
+
$.fn.modal.noConflict = function () {
|
314 |
+
$.fn.modal = old
|
315 |
+
return this
|
316 |
+
}
|
317 |
+
|
318 |
+
|
319 |
+
// MODAL DATA-API
|
320 |
+
// ==============
|
321 |
+
|
322 |
+
$(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
|
323 |
+
var $this = $(this)
|
324 |
+
var href = $this.attr('href')
|
325 |
+
var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
|
326 |
+
var option = $target.data('bs.modal') ? 'toggle' : $.extend({remote: !/#/.test(href) && href}, $target.data(), $this.data())
|
327 |
+
|
328 |
+
if ($this.is('a'))
|
329 |
+
e.preventDefault()
|
330 |
+
|
331 |
+
$target.one('show.bs.modal', function (showEvent) {
|
332 |
+
if (showEvent.isDefaultPrevented())
|
333 |
+
return // only register focus restorer if modal will actually get shown
|
334 |
+
$target.one('hidden.bs.modal', function () {
|
335 |
+
$this.is(':visible') && $this.trigger('focus')
|
336 |
+
})
|
337 |
})
|
338 |
+
Plugin.call($target, option, this)
|
339 |
+
})
|
|
|
340 |
|
341 |
}(jQuery);
|
assets/global/plugins/pluploader/css/jquery.ui.plupload.css
CHANGED
@@ -3,25 +3,25 @@
|
|
3 |
------------------------------------------------------------------- */
|
4 |
|
5 |
.plupload_wrapper * {
|
6 |
-
|
7 |
}
|
8 |
|
9 |
.plupload_button {
|
10 |
-
|
11 |
-
|
12 |
}
|
13 |
|
14 |
.plupload_wrapper {
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
}
|
20 |
|
21 |
.plupload_container {
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
}
|
26 |
|
27 |
.plupload_filelist_footer {border-width: 1px 0 0 0}
|
@@ -31,266 +31,266 @@
|
|
31 |
.plupload_delete .ui-icon,
|
32 |
.plupload_done .ui-icon,
|
33 |
.plupload_failed .ui-icon {
|
34 |
-
|
35 |
}
|
36 |
|
37 |
.plupload_header_content {
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
}
|
42 |
|
43 |
.plupload_logo {
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
}
|
51 |
|
52 |
.plupload_header_content_bw .plupload_logo {
|
53 |
-
|
54 |
}
|
55 |
|
56 |
.plupload_header_title {
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
}
|
61 |
|
62 |
.plupload_header_text {
|
63 |
-
|
64 |
}
|
65 |
|
66 |
.plupload_view_switch {
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
}
|
73 |
|
74 |
.plupload_view_switch .ui-button {
|
75 |
-
|
76 |
}
|
77 |
|
78 |
.plupload_content {
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
}
|
87 |
|
88 |
.plupload_filelist {
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
}
|
99 |
|
100 |
.plupload_filelist_content {
|
101 |
-
|
102 |
-
|
103 |
}
|
104 |
|
105 |
.plupload_cell {padding: 8px 6px;}
|
106 |
|
107 |
.plupload_file {
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
}
|
114 |
|
115 |
.plupload_file_thumb {
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
}
|
120 |
|
121 |
.plupload_thumb_loading {
|
122 |
-
|
123 |
}
|
124 |
|
125 |
.plupload_thumb_loading .plupload_file_dummy,
|
126 |
.plupload_thumb_embedded .plupload_file_dummy {
|
127 |
-
|
128 |
}
|
129 |
|
130 |
.plupload_file_name {
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
}
|
135 |
|
136 |
.plupload_filelist_header {
|
137 |
-
|
138 |
}
|
139 |
|
140 |
.plupload_filelist_footer {
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
}
|
146 |
|
147 |
.plupload_buttons {
|
148 |
-
|
149 |
}
|
150 |
|
151 |
/* list view */
|
152 |
.plupload_view_list .plupload_file {
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
}
|
162 |
|
163 |
.plupload_view_list div.plupload_file_size,
|
164 |
.plupload_view_list div.plupload_file_status,
|
165 |
.plupload_view_list div.plupload_file_action {
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
}
|
171 |
|
172 |
.plupload_view_list div.plupload_file_name {
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
}
|
177 |
|
178 |
.plupload_view_list div.plupload_file_size {
|
179 |
-
|
180 |
}
|
181 |
|
182 |
.plupload_view_list div.plupload_file_status {
|
183 |
-
|
184 |
}
|
185 |
|
186 |
.plupload_view_list .plupload_file_rename {
|
187 |
-
|
188 |
}
|
189 |
|
190 |
.plupload_view_list .plupload_file_size,
|
191 |
.plupload_view_list .plupload_file_status,
|
192 |
.plupload_filelist_footer .plupload_file_size,
|
193 |
.plupload_filelist_footer .plupload_file_status {
|
194 |
-
|
195 |
-
|
196 |
}
|
197 |
|
198 |
.plupload_view_list .plupload_file_thumb {
|
199 |
-
|
200 |
-
|
201 |
}
|
202 |
|
203 |
.plupload_view_list .plupload_file_progress {
|
204 |
-
|
205 |
}
|
206 |
|
207 |
|
208 |
/* thumbs view */
|
209 |
.plupload_view_thumbs .plupload_content {
|
210 |
-
|
211 |
}
|
212 |
|
213 |
.plupload_view_thumbs .plupload_filelist_header {
|
214 |
-
|
215 |
}
|
216 |
|
217 |
.plupload_view_thumbs .plupload_file {
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
}
|
223 |
|
224 |
.plupload_view_thumbs .plupload_file_thumb,
|
225 |
.plupload_view_thumbs .plupload_file_dummy {
|
226 |
-
|
227 |
-
|
228 |
}
|
229 |
|
230 |
.plupload_view_thumbs .plupload_file_dummy {
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
}
|
242 |
|
243 |
.plupload_view_thumbs div.plupload_file_action {
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
}
|
248 |
|
249 |
.plupload_view_thumbs div.plupload_file_name {
|
250 |
-
|
251 |
-
|
252 |
}
|
253 |
|
254 |
.plupload_view_thumbs .plupload_file_rename {
|
255 |
-
|
256 |
-
|
257 |
}
|
258 |
|
259 |
.plupload_view_thumbs div.plupload_file_size {
|
260 |
-
|
261 |
-
|
262 |
}
|
263 |
|
264 |
.plupload_view_thumbs div.plupload_file_status {
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
}
|
271 |
|
272 |
.plupload_view_thumbs div.plupload_file_progress {
|
273 |
-
|
274 |
-
|
275 |
}
|
276 |
|
277 |
.plupload .ui-sortable-helper,
|
278 |
.plupload .ui-sortable .plupload_file {
|
279 |
-
|
280 |
}
|
281 |
|
282 |
.plupload_file_action {width: 16px;}
|
283 |
.plupload_file_name {
|
284 |
-
|
285 |
-
|
286 |
}
|
287 |
|
288 |
.plupload_file_rename {
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
}
|
295 |
|
296 |
.plupload_progress {width: 60px;}
|
@@ -303,9 +303,9 @@
|
|
303 |
.plupload_left {float: left;}
|
304 |
.plupload_clear,.plupload_clearer {clear: both;}
|
305 |
.plupload_clearer, .plupload_progress_bar {
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
}
|
310 |
.plupload_clearer {height: 0;}
|
311 |
|
@@ -313,63 +313,63 @@
|
|
313 |
.plupload_hidden {display: none !important;}
|
314 |
|
315 |
.plupload_droptext {
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
}
|
328 |
|
329 |
.plupload_dropbox .plupload_droptext {
|
330 |
-
|
331 |
}
|
332 |
|
333 |
.plupload_buttons, .plupload_upload_status {float: left}
|
334 |
|
335 |
.plupload_message {
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
}
|
342 |
|
343 |
.plupload_message p {
|
344 |
-
|
345 |
-
|
346 |
}
|
347 |
|
348 |
.plupload_message strong {
|
349 |
-
|
350 |
}
|
351 |
|
352 |
.plupload_message i {
|
353 |
-
|
354 |
}
|
355 |
|
356 |
.plupload_message p span.ui-icon {
|
357 |
-
|
358 |
-
|
359 |
}
|
360 |
|
361 |
.plupload_header_content .ui-state-error,
|
362 |
.plupload_header_content .ui-state-highlight {
|
363 |
-
|
364 |
}
|
365 |
|
366 |
.plupload_message_close {
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
}
|
372 |
|
373 |
.plupload .ui-sortable-placeholder {
|
374 |
-
|
375 |
}
|
3 |
------------------------------------------------------------------- */
|
4 |
|
5 |
.plupload_wrapper * {
|
6 |
+
box-sizing: content-box;
|
7 |
}
|
8 |
|
9 |
.plupload_button {
|
10 |
+
cursor: pointer;
|
11 |
+
outline: none;
|
12 |
}
|
13 |
|
14 |
.plupload_wrapper {
|
15 |
+
font: normal 11px Verdana,sans-serif;
|
16 |
+
width: 100%;
|
17 |
+
min-width: 520px;
|
18 |
+
line-height: 12px;
|
19 |
}
|
20 |
|
21 |
.plupload_container {
|
22 |
+
_height: 300px;
|
23 |
+
min-height: 300px;
|
24 |
+
position: relative;
|
25 |
}
|
26 |
|
27 |
.plupload_filelist_footer {border-width: 1px 0 0 0}
|
31 |
.plupload_delete .ui-icon,
|
32 |
.plupload_done .ui-icon,
|
33 |
.plupload_failed .ui-icon {
|
34 |
+
cursor:pointer;
|
35 |
}
|
36 |
|
37 |
.plupload_header_content {
|
38 |
+
height: 56px;
|
39 |
+
padding: 0 160px 0 60px;
|
40 |
+
position: relative;
|
41 |
}
|
42 |
|
43 |
.plupload_logo {
|
44 |
+
width: 40px;
|
45 |
+
height: 40px;
|
46 |
+
background: url('../img/plupload.png') no-repeat 0 0;
|
47 |
+
position: absolute;
|
48 |
+
top: 8px;
|
49 |
+
left: 8px;
|
50 |
}
|
51 |
|
52 |
.plupload_header_content_bw .plupload_logo {
|
53 |
+
background-position: -40px 0;
|
54 |
}
|
55 |
|
56 |
.plupload_header_title {
|
57 |
+
font: normal 18px sans-serif;
|
58 |
+
line-height: 19px;
|
59 |
+
padding: 6px 0 3px;
|
60 |
}
|
61 |
|
62 |
.plupload_header_text {
|
63 |
+
font: normal 12px sans-serif;
|
64 |
}
|
65 |
|
66 |
.plupload_view_switch {
|
67 |
+
position: absolute;
|
68 |
+
right: 16px;
|
69 |
+
bottom: 8px;
|
70 |
+
margin: 0;
|
71 |
+
display: none;
|
72 |
}
|
73 |
|
74 |
.plupload_view_switch .ui-button {
|
75 |
+
margin-right: -0.31em;
|
76 |
}
|
77 |
|
78 |
.plupload_content {
|
79 |
+
position: absolute;
|
80 |
+
top: 86px;
|
81 |
+
bottom: 44px;
|
82 |
+
left: 0;
|
83 |
+
right: 0;
|
84 |
+
overflow-y: auto;
|
85 |
+
width: 100%;
|
86 |
}
|
87 |
|
88 |
.plupload_filelist {
|
89 |
+
border-collapse: collapse;
|
90 |
+
border-left: none;
|
91 |
+
border-right: none;
|
92 |
+
margin: 0;
|
93 |
+
padding: 0;
|
94 |
+
width: 100%;
|
95 |
+
-moz-user-select: none;
|
96 |
+
-webkit-user-select: none;
|
97 |
+
user-select: none;
|
98 |
}
|
99 |
|
100 |
.plupload_filelist_content {
|
101 |
+
padding: 0;
|
102 |
+
margin: 0;
|
103 |
}
|
104 |
|
105 |
.plupload_cell {padding: 8px 6px;}
|
106 |
|
107 |
.plupload_file {
|
108 |
+
list-style: none;
|
109 |
+
display: block;
|
110 |
+
position: relative;
|
111 |
+
overflow: hidden;
|
112 |
+
line-height: 12px;
|
113 |
}
|
114 |
|
115 |
.plupload_file_thumb {
|
116 |
+
position: relative;
|
117 |
+
background-image: none;
|
118 |
+
background-color: #eee;
|
119 |
}
|
120 |
|
121 |
.plupload_thumb_loading {
|
122 |
+
background: #eee url(../img/loading.gif) center no-repeat;
|
123 |
}
|
124 |
|
125 |
.plupload_thumb_loading .plupload_file_dummy,
|
126 |
.plupload_thumb_embedded .plupload_file_dummy {
|
127 |
+
display: none;
|
128 |
}
|
129 |
|
130 |
.plupload_file_name {
|
131 |
+
overflow: hidden;
|
132 |
+
text-overflow: ellipsis;
|
133 |
+
white-space: nowrap;
|
134 |
}
|
135 |
|
136 |
.plupload_filelist_header {
|
137 |
+
border-top: none;
|
138 |
}
|
139 |
|
140 |
.plupload_filelist_footer {
|
141 |
+
position: absolute;
|
142 |
+
bottom: 0;
|
143 |
+
left: 0;
|
144 |
+
right: 0;
|
145 |
}
|
146 |
|
147 |
.plupload_buttons {
|
148 |
+
position: relative;
|
149 |
}
|
150 |
|
151 |
/* list view */
|
152 |
.plupload_view_list .plupload_file {
|
153 |
+
border-left: none;
|
154 |
+
border-right: none;
|
155 |
+
border-top: none;
|
156 |
+
height: 29px;
|
157 |
+
width: 100% !important;
|
158 |
+
/* fix IE6 vertical white-space bug */
|
159 |
+
_float: left;
|
160 |
+
_clear: left;
|
161 |
}
|
162 |
|
163 |
.plupload_view_list div.plupload_file_size,
|
164 |
.plupload_view_list div.plupload_file_status,
|
165 |
.plupload_view_list div.plupload_file_action {
|
166 |
+
padding: 8px 6px;
|
167 |
+
position: absolute;
|
168 |
+
top: 0;
|
169 |
+
right: 0;
|
170 |
}
|
171 |
|
172 |
.plupload_view_list div.plupload_file_name {
|
173 |
+
margin-right: 156px;
|
174 |
+
padding: 8px 6px;
|
175 |
+
_width: 75%;
|
176 |
}
|
177 |
|
178 |
.plupload_view_list div.plupload_file_size {
|
179 |
+
right: 28px;
|
180 |
}
|
181 |
|
182 |
.plupload_view_list div.plupload_file_status {
|
183 |
+
right: 82px;
|
184 |
}
|
185 |
|
186 |
.plupload_view_list .plupload_file_rename {
|
187 |
+
margin-left: -2px;
|
188 |
}
|
189 |
|
190 |
.plupload_view_list .plupload_file_size,
|
191 |
.plupload_view_list .plupload_file_status,
|
192 |
.plupload_filelist_footer .plupload_file_size,
|
193 |
.plupload_filelist_footer .plupload_file_status {
|
194 |
+
text-align: right;
|
195 |
+
width: 52px;
|
196 |
}
|
197 |
|
198 |
.plupload_view_list .plupload_file_thumb {
|
199 |
+
position: absolute;
|
200 |
+
top: -999px;
|
201 |
}
|
202 |
|
203 |
.plupload_view_list .plupload_file_progress {
|
204 |
+
display: none;
|
205 |
}
|
206 |
|
207 |
|
208 |
/* thumbs view */
|
209 |
.plupload_view_thumbs .plupload_content {
|
210 |
+
top: 57px;
|
211 |
}
|
212 |
|
213 |
.plupload_view_thumbs .plupload_filelist_header {
|
214 |
+
display: none;
|
215 |
}
|
216 |
|
217 |
.plupload_view_thumbs .plupload_file {
|
218 |
+
padding: 6px;
|
219 |
+
margin: 10px;
|
220 |
+
border: 1px solid #fff;
|
221 |
+
float: left;
|
222 |
}
|
223 |
|
224 |
.plupload_view_thumbs .plupload_file_thumb,
|
225 |
.plupload_view_thumbs .plupload_file_dummy {
|
226 |
+
text-align: center;
|
227 |
+
overflow: hidden;
|
228 |
}
|
229 |
|
230 |
.plupload_view_thumbs .plupload_file_dummy {
|
231 |
+
font-size: 21px;
|
232 |
+
font-weight: bold;
|
233 |
+
text-transform: lowercase;
|
234 |
+
overflow: hidden;
|
235 |
+
border: none;
|
236 |
+
position: absolute;
|
237 |
+
top: 0;
|
238 |
+
left: 0;
|
239 |
+
width: 100%;
|
240 |
+
height: 100%;
|
241 |
}
|
242 |
|
243 |
.plupload_view_thumbs div.plupload_file_action {
|
244 |
+
position: absolute;
|
245 |
+
top: 0;
|
246 |
+
right: 0;
|
247 |
}
|
248 |
|
249 |
.plupload_view_thumbs div.plupload_file_name {
|
250 |
+
padding: 0;
|
251 |
+
font-weight: bold;
|
252 |
}
|
253 |
|
254 |
.plupload_view_thumbs .plupload_file_rename {
|
255 |
+
padding: 1px 0;
|
256 |
+
width: 100% !important;
|
257 |
}
|
258 |
|
259 |
.plupload_view_thumbs div.plupload_file_size {
|
260 |
+
font-size: 0.8em;
|
261 |
+
font-weight: normal;
|
262 |
}
|
263 |
|
264 |
.plupload_view_thumbs div.plupload_file_status {
|
265 |
+
position: relative;
|
266 |
+
height: 3px;
|
267 |
+
overflow: hidden;
|
268 |
+
text-indent: -999px;
|
269 |
+
margin-bottom: 3px;
|
270 |
}
|
271 |
|
272 |
.plupload_view_thumbs div.plupload_file_progress {
|
273 |
+
border: none;
|
274 |
+
height: 100%;
|
275 |
}
|
276 |
|
277 |
.plupload .ui-sortable-helper,
|
278 |
.plupload .ui-sortable .plupload_file {
|
279 |
+
cursor:move;
|
280 |
}
|
281 |
|
282 |
.plupload_file_action {width: 16px;}
|
283 |
.plupload_file_name {
|
284 |
+
overflow: hidden;
|
285 |
+
padding-left: 10px;
|
286 |
}
|
287 |
|
288 |
.plupload_file_rename {
|
289 |
+
border: none;
|
290 |
+
font: normal 11px Verdana, sans-serif;
|
291 |
+
padding: 1px 2px;
|
292 |
+
line-height: 11px;
|
293 |
+
height: 11px;
|
294 |
}
|
295 |
|
296 |
.plupload_progress {width: 60px;}
|
303 |
.plupload_left {float: left;}
|
304 |
.plupload_clear,.plupload_clearer {clear: both;}
|
305 |
.plupload_clearer, .plupload_progress_bar {
|
306 |
+
display: block;
|
307 |
+
font-size: 0;
|
308 |
+
line-height: 0;
|
309 |
}
|
310 |
.plupload_clearer {height: 0;}
|
311 |
|
313 |
.plupload_hidden {display: none !important;}
|
314 |
|
315 |
.plupload_droptext {
|
316 |
+
position: absolute;
|
317 |
+
top: 0;
|
318 |
+
left: 0;
|
319 |
+
right: 0;
|
320 |
+
bottom: 0;
|
321 |
+
background: transparent;
|
322 |
+
text-align: center;
|
323 |
+
vertical-align: middle;
|
324 |
+
border: 0;
|
325 |
+
line-height: 160px;
|
326 |
+
display: none;
|
327 |
}
|
328 |
|
329 |
.plupload_dropbox .plupload_droptext {
|
330 |
+
display: block;
|
331 |
}
|
332 |
|
333 |
.plupload_buttons, .plupload_upload_status {float: left}
|
334 |
|
335 |
.plupload_message {
|
336 |
+
position: absolute;
|
337 |
+
top: -1px;
|
338 |
+
left: -1px;
|
339 |
+
height: 100%;
|
340 |
+
width: 100%;
|
341 |
}
|
342 |
|
343 |
.plupload_message p {
|
344 |
+
padding:0.7em;
|
345 |
+
margin:0;
|
346 |
}
|
347 |
|
348 |
.plupload_message strong {
|
349 |
+
font-weight: bold;
|
350 |
}
|
351 |
|
352 |
.plupload_message i {
|
353 |
+
font-style: italic;
|
354 |
}
|
355 |
|
356 |
.plupload_message p span.ui-icon {
|
357 |
+
float: left;
|
358 |
+
margin-right: 0.3em;
|
359 |
}
|
360 |
|
361 |
.plupload_header_content .ui-state-error,
|
362 |
.plupload_header_content .ui-state-highlight {
|
363 |
+
border:none;
|
364 |
}
|
365 |
|
366 |
.plupload_message_close {
|
367 |
+
position:absolute;
|
368 |
+
top:5px;
|
369 |
+
right:5px;
|
370 |
+
cursor:pointer;
|
371 |
}
|
372 |
|
373 |
.plupload .ui-sortable-placeholder {
|
374 |
+
height:35px;
|
375 |
}
|
assets/global/plugins/pluploader/js/jquery.ui.plupload.js
CHANGED
@@ -17,1339 +17,1310 @@
|
|
17 |
* jquery.ui.sortable.js
|
18 |
*/
|
19 |
|
20 |
-
|
21 |
|
22 |
/**
|
23 |
-
jQuery UI based implementation of the Plupload API - multi-runtime file uploading API.
|
24 |
-
|
25 |
-
To use the widget you must include _jQuery_ and _jQuery UI_ bundle (including `ui.core`, `ui.widget`, `ui.button`,
|
26 |
-
`ui.progressbar` and `ui.sortable`).
|
27 |
-
|
28 |
-
In general the widget is designed the way that you do not usually need to do anything to it after you instantiate it.
|
29 |
-
But! You still can intervenue, to some extent, in case you need to. Although, due to the fact that widget is based on
|
30 |
-
_jQuery UI_ widget factory, there are some specifics. See examples below for more details.
|
31 |
-
|
32 |
-
@example
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
@example
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
@example
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
@class UI.Plupload
|
73 |
-
@constructor
|
74 |
-
@param {Object} settings For detailed information about each option check documentation.
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
*/
|
116 |
-
;
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
@
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
@
|
130 |
-
@param {
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
@
|
138 |
-
@param {
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
@
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
@
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
@
|
160 |
-
@param {plupload.
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
@
|
171 |
-
@param {plupload.
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
@
|
180 |
-
@param {
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
@
|
188 |
-
@param {
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
@
|
196 |
-
@param {
|
197 |
-
@param {
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
-
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
|
853 |
-
|
854 |
-
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
|
865 |
-
|
866 |
-
|
867 |
-
|
868 |
-
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
-
|
875 |
-
|
876 |
-
|
877 |
-
|
878 |
-
|
879 |
-
|
880 |
-
|
881 |
-
|
882 |
-
|
883 |
-
|
884 |
-
|
885 |
-
|
886 |
-
|
887 |
-
|
888 |
-
|
889 |
-
|
890 |
-
|
891 |
-
|
892 |
-
|
893 |
-
|
894 |
-
|
895 |
-
|
896 |
-
|
897 |
-
|
898 |
-
|
899 |
-
|
900 |
-
|
901 |
-
|
902 |
-
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
-
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
912 |
-
|
913 |
-
|
914 |
-
|
915 |
-
|
916 |
-
|
917 |
-
|
918 |
-
|
919 |
-
|
920 |
-
|
921 |
-
|
922 |
-
|
923 |
-
|
924 |
-
|
925 |
-
|
926 |
-
|
927 |
-
|
928 |
-
|
929 |
-
|
930 |
-
|
931 |
-
|
932 |
-
|
933 |
-
|
934 |
-
|
935 |
-
|
936 |
-
|
937 |
-
|
938 |
-
|
939 |
-
|
940 |
-
|
941 |
-
|
942 |
-
|
943 |
-
|
944 |
-
|
945 |
-
|
946 |
-
|
947 |
-
|
948 |
-
|
949 |
-
|
950 |
-
|
951 |
-
|
952 |
-
|
953 |
-
|
954 |
-
|
955 |
-
|
956 |
-
|
957 |
-
|
958 |
-
|
959 |
-
|
960 |
-
|
961 |
-
|
962 |
-
|
963 |
-
|
964 |
-
|
965 |
-
|
966 |
-
|
967 |
-
|
968 |
-
|
969 |
-
|
970 |
-
|
971 |
-
|
972 |
-
|
973 |
-
|
974 |
-
|
975 |
-
|
976 |
-
|
977 |
-
|
978 |
-
|
979 |
-
|
980 |
-
|
981 |
-
|
982 |
-
|
983 |
-
|
984 |
-
|
985 |
-
|
986 |
-
|
987 |
-
|
988 |
-
|
989 |
-
|
990 |
-
|
991 |
-
|
992 |
-
|
993 |
-
|
994 |
-
|
995 |
-
|
996 |
-
|
997 |
-
|
998 |
-
|
999 |
-
|
1000 |
-
|
1001 |
-
|
1002 |
-
|
1003 |
-
|
1004 |
-
|
1005 |
-
|
1006 |
-
|
1007 |
-
|
1008 |
-
|
1009 |
-
|
1010 |
-
|
1011 |
-
|
1012 |
-
|
1013 |
-
|
1014 |
-
|
1015 |
-
|
1016 |
-
|
1017 |
-
|
1018 |
-
|
1019 |
-
|
1020 |
-
|
1021 |
-
|
1022 |
-
|
1023 |
-
|
1024 |
-
|
1025 |
-
|
1026 |
-
|
1027 |
-
|
1028 |
-
|
1029 |
-
|
1030 |
-
|
1031 |
-
|
1032 |
-
|
1033 |
-
|
1034 |
-
|
1035 |
-
|
1036 |
-
|
1037 |
-
|
1038 |
-
|
1039 |
-
|
1040 |
-
|
1041 |
-
|
1042 |
-
|
1043 |
-
|
1044 |
-
|
1045 |
-
|
1046 |
-
|
1047 |
-
|
1048 |
-
|
1049 |
-
|
1050 |
-
|
1051 |
-
|
1052 |
-
|
1053 |
-
|
1054 |
-
|
1055 |
-
|
1056 |
-
|
1057 |
-
|
1058 |
-
|
1059 |
-
|
1060 |
-
|
1061 |
-
|
1062 |
-
|
1063 |
-
|
1064 |
-
|
1065 |
-
|
1066 |
-
|
1067 |
-
|
1068 |
-
|
1069 |
-
|
1070 |
-
|
1071 |
-
|
1072 |
-
|
1073 |
-
|
1074 |
-
|
1075 |
-
|
1076 |
-
|
1077 |
-
|
1078 |
-
|
1079 |
-
|
1080 |
-
|
1081 |
-
|
1082 |
-
|
1083 |
-
|
1084 |
-
|
1085 |
-
|
1086 |
-
|
1087 |
-
|
1088 |
-
|
1089 |
-
|
1090 |
-
|
1091 |
-
|
1092 |
-
|
1093 |
-
|
1094 |
-
|
1095 |
-
|
1096 |
-
|
1097 |
-
|
1098 |
-
|
1099 |
-
|
1100 |
-
|
1101 |
-
|
1102 |
-
|
1103 |
-
|
1104 |
-
|
1105 |
-
|
1106 |
-
|
1107 |
-
|
1108 |
-
|
1109 |
-
|
1110 |
-
|
1111 |
-
|
1112 |
-
|
1113 |
-
|
1114 |
-
|
1115 |
-
|
1116 |
-
|
1117 |
-
|
1118 |
-
|
1119 |
-
|
1120 |
-
|
1121 |
-
|
1122 |
-
|
1123 |
-
|
1124 |
-
|
1125 |
-
|
1126 |
-
|
1127 |
-
|
1128 |
-
|
1129 |
-
|
1130 |
-
|
1131 |
-
|
1132 |
-
|
1133 |
-
|
1134 |
-
|
1135 |
-
|
1136 |
-
|
1137 |
-
|
1138 |
-
|
1139 |
-
|
1140 |
-
|
1141 |
-
|
1142 |
-
|
1143 |
-
|
1144 |
-
|
1145 |
-
|
1146 |
-
|
1147 |
-
|
1148 |
-
|
1149 |
-
|
1150 |
-
|
1151 |
-
|
1152 |
-
|
1153 |
-
|
1154 |
-
|
1155 |
-
|
1156 |
-
|
1157 |
-
|
1158 |
-
|
1159 |
-
|
1160 |
-
|
1161 |
-
|
1162 |
-
|
1163 |
-
|
1164 |
-
|
1165 |
-
|
1166 |
-
|
1167 |
-
|
1168 |
-
|
1169 |
-
|
1170 |
-
|
1171 |
-
|
1172 |
-
|
1173 |
-
|
1174 |
-
|
1175 |
-
|
1176 |
-
|
1177 |
-
|
1178 |
-
|
1179 |
-
|
1180 |
-
|
1181 |
-
|
1182 |
-
|
1183 |
-
|
1184 |
-
|
1185 |
-
|
1186 |
-
|
1187 |
-
|
1188 |
-
|
1189 |
-
|
1190 |
-
|
1191 |
-
|
1192 |
-
|
1193 |
-
|
1194 |
-
|
1195 |
-
|
1196 |
-
|
1197 |
-
|
1198 |
-
|
1199 |
-
|
1200 |
-
|
1201 |
-
|
1202 |
-
|
1203 |
-
|
1204 |
-
|
1205 |
-
|
1206 |
-
|
1207 |
-
|
1208 |
-
|
1209 |
-
|
1210 |
-
|
1211 |
-
|
1212 |
-
|
1213 |
-
|
1214 |
-
|
1215 |
-
|
1216 |
-
|
1217 |
-
|
1218 |
-
|
1219 |
-
|
1220 |
-
|
1221 |
-
|
1222 |
-
|
1223 |
-
|
1224 |
-
|
1225 |
-
|
1226 |
-
|
1227 |
-
|
1228 |
-
|
1229 |
-
|
1230 |
-
|
1231 |
-
|
1232 |
-
|
1233 |
-
|
1234 |
-
|
1235 |
-
|
1236 |
-
|
1237 |
-
|
1238 |
-
|
1239 |
-
|
1240 |
-
|
1241 |
-
|
1242 |
-
|
1243 |
-
|
1244 |
-
|
1245 |
-
|
1246 |
-
|
1247 |
-
|
1248 |
-
|
1249 |
-
|
1250 |
-
|
1251 |
-
|
1252 |
-
|
1253 |
-
|
1254 |
-
|
1255 |
-
|
1256 |
-
|
1257 |
-
|
1258 |
-
|
1259 |
-
|
1260 |
-
|
1261 |
-
|
1262 |
-
|
1263 |
-
|
1264 |
-
|
1265 |
-
|
1266 |
-
|
1267 |
-
|
1268 |
-
|
1269 |
-
|
1270 |
-
|
1271 |
-
|
1272 |
-
|
1273 |
-
|
1274 |
-
|
1275 |
-
|
1276 |
-
|
1277 |
-
|
1278 |
-
|
1279 |
-
|
1280 |
-
|
1281 |
-
|
1282 |
-
|
1283 |
-
|
1284 |
-
|
1285 |
-
|
1286 |
-
|
1287 |
-
|
1288 |
-
|
1289 |
-
|
1290 |
-
|
1291 |
-
|
1292 |
-
|
1293 |
-
|
1294 |
-
|
1295 |
-
|
1296 |
-
|
1297 |
-
|
1298 |
-
|
1299 |
-
|
1300 |
-
|
1301 |
-
|
1302 |
-
|
1303 |
-
|
1304 |
-
|
1305 |
-
|
1306 |
-
|
1307 |
-
|
1308 |
-
|
1309 |
-
|
1310 |
-
|
1311 |
-
|
1312 |
-
|
1313 |
-
|
1314 |
-
|
1315 |
-
|
1316 |
-
|
1317 |
-
|
1318 |
-
|
1319 |
-
|
1320 |
-
|
1321 |
-
|
1322 |
-
|
1323 |
-
|
1324 |
-
|
1325 |
-
|
1326 |
-
|
1327 |
-
}
|
1328 |
-
|
1329 |
-
// destroy sortable if enabled
|
1330 |
-
$('tbody', this.filelist).sortable('destroy');
|
1331 |
-
|
1332 |
-
// enable
|
1333 |
-
this.filelist.sortable({
|
1334 |
-
items: '.plupload_delete',
|
1335 |
-
|
1336 |
-
cancel: 'object, .plupload_clearer',
|
1337 |
-
|
1338 |
-
stop: function() {
|
1339 |
-
var files = [];
|
1340 |
-
|
1341 |
-
$.each($(this).sortable('toArray'), function(i, id) {
|
1342 |
-
files[files.length] = self.uploader.getFile(id);
|
1343 |
-
});
|
1344 |
-
|
1345 |
-
files.unshift(files.length);
|
1346 |
-
files.unshift(0);
|
1347 |
-
|
1348 |
-
// re-populate files array
|
1349 |
-
Array.prototype.splice.apply(self.uploader.files, files);
|
1350 |
-
}
|
1351 |
-
});
|
1352 |
-
}
|
1353 |
-
});
|
1354 |
-
|
1355 |
-
} (window, document, plupload, moxie, jQuery));
|
17 |
* jquery.ui.sortable.js
|
18 |
*/
|
19 |
|
20 |
+
/* global jQuery:true */
|
21 |
|
22 |
/**
|
23 |
+
jQuery UI based implementation of the Plupload API - multi-runtime file uploading API.
|
24 |
+
|
25 |
+
To use the widget you must include _jQuery_ and _jQuery UI_ bundle (including `ui.core`, `ui.widget`, `ui.button`,
|
26 |
+
`ui.progressbar` and `ui.sortable`).
|
27 |
+
|
28 |
+
In general the widget is designed the way that you do not usually need to do anything to it after you instantiate it.
|
29 |
+
But! You still can intervenue, to some extent, in case you need to. Although, due to the fact that widget is based on
|
30 |
+
_jQuery UI_ widget factory, there are some specifics. See examples below for more details.
|
31 |
+
|
32 |
+
@example
|
33 |
+
<!-- Instantiating: -->
|
34 |
+
<div id="uploader">
|
35 |
+
<p>Your browser doesn't have Flash, Silverlight or HTML5 support.</p>
|
36 |
+
</div>
|
37 |
+
|
38 |
+
<script>
|
39 |
+
$('#uploader').plupload({
|
40 |
+
url : '../upload.php',
|
41 |
+
filters : [
|
42 |
+
{title : "Image files", extensions : "jpg,gif,png"}
|
43 |
+
],
|
44 |
+
rename: true,
|
45 |
+
sortable: true,
|
46 |
+
flash_swf_url : '../../js/Moxie.swf',
|
47 |
+
silverlight_xap_url : '../../js/Moxie.xap',
|
48 |
+
});
|
49 |
+
</script>
|
50 |
+
|
51 |
+
@example
|
52 |
+
// Invoking methods:
|
53 |
+
$('#uploader').plupload(options);
|
54 |
+
|
55 |
+
// Display welcome message in the notification area
|
56 |
+
$('#uploader').plupload('notify', 'info', "This might be obvious, but you need to click 'Add Files' to add some files.");
|
57 |
+
|
58 |
+
@example
|
59 |
+
// Subscribing to the events...
|
60 |
+
// ... on initialization:
|
61 |
+
$('#uploader').plupload({
|
62 |
+
...
|
63 |
+
viewchanged: function(event, args) {
|
64 |
+
// stuff ...
|
65 |
+
}
|
66 |
+
});
|
67 |
+
// ... or after initialization
|
68 |
+
$('#uploader').on("viewchanged", function(event, args) {
|
69 |
+
// stuff ...
|
70 |
+
});
|
71 |
+
|
72 |
+
@class UI.Plupload
|
73 |
+
@constructor
|
74 |
+
@param {Object} settings For detailed information about each option check documentation.
|
75 |
+
@param {String} settings.url URL of the server-side upload handler.
|
76 |
+
@param {Number|String} [settings.chunk_size=0] Chunk size in bytes to slice the file into. Shorcuts with b, kb, mb, gb, tb suffixes also supported. `e.g. 204800 or "204800b" or "200kb"`. By default - disabled.
|
77 |
+
@param {String} [settings.file_data_name="file"] Name for the file field in Multipart formated message.
|
78 |
+
@param {Object} [settings.filters={}] Set of file type filters.
|
79 |
+
@param {Array} [settings.filters.mime_types=[]] List of file types to accept, each one defined by title and list of extensions. `e.g. {title : "Image files", extensions : "jpg,jpeg,gif,png"}`. Dispatches `plupload.FILE_EXTENSION_ERROR`
|
80 |
+
@param {String|Number} [settings.filters.max_file_size=0] Maximum file size that the user can pick, in bytes. Optionally supports b, kb, mb, gb, tb suffixes. `e.g. "10mb" or "1gb"`. By default - not set. Dispatches `plupload.FILE_SIZE_ERROR`.
|
81 |
+
@param {Boolean} [settings.filters.prevent_duplicates=false] Do not let duplicates into the queue. Dispatches `plupload.FILE_DUPLICATE_ERROR`.
|
82 |
+
@param {Number} [settings.filters.max_file_count=0] Limit the number of files that can reside in the queue at the same time (default is 0 - no limit).
|
83 |
+
@param {String} [settings.flash_swf_url] URL of the Flash swf.
|
84 |
+
@param {Object} [settings.headers] Custom headers to send with the upload. Hash of name/value pairs.
|
85 |
+
@param {Number|String} [settings.max_file_size] Maximum file size that the user can pick, in bytes. Optionally supports b, kb, mb, gb, tb suffixes. `e.g. "10mb" or "1gb"`. By default - not set. Dispatches `plupload.FILE_SIZE_ERROR`.
|
86 |
+
@param {Number} [settings.max_retries=0] How many times to retry the chunk or file, before triggering Error event.
|
87 |
+
@param {Boolean} [settings.multipart=true] Whether to send file and additional parameters as Multipart formated message.
|
88 |
+
@param {Object} [settings.multipart_params] Hash of key/value pairs to send with every file upload.
|
89 |
+
@param {Boolean} [settings.multi_selection=true] Enable ability to select multiple files at once in file dialog.
|
90 |
+
@param {Boolean} [settings.prevent_duplicates=false] Do not let duplicates into the queue. Dispatches `plupload.FILE_DUPLICATE_ERROR`.
|
91 |
+
@param {String|Object} [settings.required_features] Either comma-separated list or hash of required features that chosen runtime should absolutely possess.
|
92 |
+
@param {Object} [settings.resize] Enable resizng of images on client-side. Applies to `image/jpeg` and `image/png` only. `e.g. {width : 200, height : 200, quality : 90, crop: true}`
|
93 |
+
@param {Number} [settings.resize.width] If image is bigger, it will be resized.
|
94 |
+
@param {Number} [settings.resize.height] If image is bigger, it will be resized.
|
95 |
+
@param {Number} [settings.resize.quality=90] Compression quality for jpegs (1-100).
|
96 |
+
@param {Boolean} [settings.resize.crop=false] Whether to crop images to exact dimensions. By default they will be resized proportionally.
|
97 |
+
@param {String} [settings.runtimes="html5,flash,silverlight,html4"] Comma separated list of runtimes, that Plupload will try in turn, moving to the next if previous fails.
|
98 |
+
@param {String} [settings.silverlight_xap_url] URL of the Silverlight xap.
|
99 |
+
@param {Boolean} [settings.unique_names=false] If true will generate unique filenames for uploaded files.
|
100 |
+
|
101 |
+
@param {Boolean} [settings.autostart=false] Whether to auto start uploading right after file selection.
|
102 |
+
@param {Boolean} [settings.dragdrop=true] Enable ability to add file to the queue by drag'n'dropping them from the desktop.
|
103 |
+
@param {Boolean} [settings.rename=false] Enable ability to rename files in the queue.
|
104 |
+
@param {Boolean} [settings.sortable=false] Enable ability to sort files in the queue, changing their uploading priority.
|
105 |
+
@param {Object} [settings.buttons] Control the visibility of functional buttons.
|
106 |
+
@param {Boolean} [settings.buttons.browse=true] Display browse button.
|
107 |
+
@param {Boolean} [settings.buttons.start=true] Display start button.
|
108 |
+
@param {Boolean} [settings.buttons.stop=true] Display stop button.
|
109 |
+
@param {Object} [settings.views] Control various views of the file queue.
|
110 |
+
@param {Boolean} [settings.views.list=true] Enable list view.
|
111 |
+
@param {Boolean} [settings.views.thumbs=false] Enable thumbs view.
|
112 |
+
@param {String} [settings.views.default='list'] Default view.
|
113 |
+
@param {Boolean} [settings.views.remember=true] Whether to remember the current view (requires jQuery Cookie plugin).
|
114 |
+
@param {Boolean} [settings.multiple_queues=true] Re-activate the widget after each upload procedure.
|
115 |
+
*/
|
116 |
+
;
|
117 |
+
(function (window, document, plupload, o, $) {
|
118 |
+
|
119 |
+
/**
|
120 |
+
Dispatched when the widget is initialized and ready.
|
121 |
+
|
122 |
+
@event ready
|
123 |
+
@param {plupload.Uploader} uploader Uploader instance sending the event.
|
124 |
+
*/
|
125 |
+
|
126 |
+
/**
|
127 |
+
Dispatched when file dialog is closed.
|
128 |
+
|
129 |
+
@event selected
|
130 |
+
@param {plupload.Uploader} uploader Uploader instance sending the event.
|
131 |
+
@param {Array} files Array of selected files represented by plupload.File objects
|
132 |
+
*/
|
133 |
+
|
134 |
+
/**
|
135 |
+
Dispatched when file dialog is closed.
|
136 |
+
|
137 |
+
@event removed
|
138 |
+
@param {plupload.Uploader} uploader Uploader instance sending the event.
|
139 |
+
@param {Array} files Array of removed files represented by plupload.File objects
|
140 |
+
*/
|
141 |
+
|
142 |
+
/**
|
143 |
+
Dispatched when upload is started.
|
144 |
+
|
145 |
+
@event started
|
146 |
+
@param {plupload.Uploader} uploader Uploader instance sending the event.
|
147 |
+
*/
|
148 |
+
|
149 |
+
/**
|
150 |
+
Dispatched when upload is stopped.
|
151 |
+
|
152 |
+
@event stopped
|
153 |
+
@param {plupload.Uploader} uploader Uploader instance sending the event.
|
154 |
+
*/
|
155 |
+
|
156 |
+
/**
|
157 |
+
Dispatched during the upload process.
|
158 |
+
|
159 |
+
@event progress
|
160 |
+
@param {plupload.Uploader} uploader Uploader instance sending the event.
|
161 |
+
@param {plupload.File} file File that is being uploaded (includes loaded and percent properties among others).
|
162 |
+
@param {Number} size Total file size in bytes.
|
163 |
+
@param {Number} loaded Number of bytes uploaded of the files total size.
|
164 |
+
@param {Number} percent Number of percentage uploaded of the file.
|
165 |
+
*/
|
166 |
+
|
167 |
+
/**
|
168 |
+
Dispatched when file is uploaded.
|
169 |
+
|
170 |
+
@event uploaded
|
171 |
+
@param {plupload.Uploader} uploader Uploader instance sending the event.
|
172 |
+
@param {plupload.File} file File that was uploaded.
|
173 |
+
@param {Enum} status Status constant matching the plupload states QUEUED, UPLOADING, FAILED, DONE.
|
174 |
+
*/
|
175 |
+
|
176 |
+
/**
|
177 |
+
Dispatched when upload of the whole queue is complete.
|
178 |
+
|
179 |
+
@event complete
|
180 |
+
@param {plupload.Uploader} uploader Uploader instance sending the event.
|
181 |
+
@param {Array} files Array of uploaded files represented by plupload.File objects
|
182 |
+
*/
|
183 |
+
|
184 |
+
/**
|
185 |
+
Dispatched when the view is changed, e.g. from `list` to `thumbs` or vice versa.
|
186 |
+
|
187 |
+
@event viewchanged
|
188 |
+
@param {plupload.Uploader} uploader Uploader instance sending the event.
|
189 |
+
@param {String} type Current view type.
|
190 |
+
*/
|
191 |
+
|
192 |
+
/**
|
193 |
+
Dispatched when error of some kind is detected.
|
194 |
+
|
195 |
+
@event error
|
196 |
+
@param {plupload.Uploader} uploader Uploader instance sending the event.
|
197 |
+
@param {String} error Error message.
|
198 |
+
@param {plupload.File} file File that was uploaded.
|
199 |
+
@param {Enum} status Status constant matching the plupload states QUEUED, UPLOADING, FAILED, DONE.
|
200 |
+
*/
|
201 |
+
|
202 |
+
var uploaders = {};
|
203 |
+
|
204 |
+
function _(str) {
|
205 |
+
return plupload.translate(str) || str;
|
206 |
+
}
|
207 |
+
|
208 |
+
function renderUI(obj) {
|
209 |
+
obj.id = obj.attr('id');
|
210 |
+
|
211 |
+
obj.html(
|
212 |
+
'<div class="plupload_wrapper">' +
|
213 |
+
'<div class="ui-widget-content plupload_container">' +
|
214 |
+
'<div class="ui-state-default ui-widget-header plupload_header">' +
|
215 |
+
'<div class="plupload_header_content">' +
|
216 |
+
'<div class="plupload_logo"> </div>' +
|
217 |
+
'<div class="plupload_header_title">' + _("Select files") + '</div>' +
|
218 |
+
'<div class="plupload_header_text">' + _("Add files to the upload queue and click the start button.") + '</div>' +
|
219 |
+
'<div class="plupload_view_switch">' +
|
220 |
+
'<input type="radio" id="' + obj.id + '_view_list" name="view_mode_' + obj.id + '" checked="checked" /><label class="plupload_button" for="' + obj.id + '_view_list" data-view="list">' + _('List') + '</label>' +
|
221 |
+
'<input type="radio" id="' + obj.id + '_view_thumbs" name="view_mode_' + obj.id + '" /><label class="plupload_button" for="' + obj.id + '_view_thumbs" data-view="thumbs">' + _('Thumbnails') + '</label>' +
|
222 |
+
'</div>' +
|
223 |
+
'</div>' +
|
224 |
+
'</div>' +
|
225 |
+
'<table class="plupload_filelist plupload_filelist_header ui-widget-header">' +
|
226 |
+
'<tr>' +
|
227 |
+
'<td class="plupload_cell plupload_file_name">' + _('Filename') + '</td>' +
|
228 |
+
'<td class="plupload_cell plupload_file_status">' + _('Status') + '</td>' +
|
229 |
+
'<td class="plupload_cell plupload_file_size">' + _('Size') + '</td>' +
|
230 |
+
'<td class="plupload_cell plupload_file_action"> </td>' +
|
231 |
+
'</tr>' +
|
232 |
+
'</table>' +
|
233 |
+
'<div class="plupload_content">' +
|
234 |
+
'<div class="plupload_droptext">' + _("Drag files here.") + '</div>' +
|
235 |
+
'<ul class="plupload_filelist_content"> </ul>' +
|
236 |
+
'<div class="plupload_clearer"> </div>' +
|
237 |
+
'</div>' +
|
238 |
+
'<table class="plupload_filelist plupload_filelist_footer ui-widget-header">' +
|
239 |
+
'<tr>' +
|
240 |
+
'<td class="plupload_cell plupload_file_name">' +
|
241 |
+
'<div class="plupload_buttons"><!-- Visible -->' +
|
242 |
+
'<a class="plupload_button plupload_add">' + _("Add Files") + '</a> ' +
|
243 |
+
'<a class="plupload_button plupload_start">' + _("Start Upload") + '</a> ' +
|
244 |
+
'<a class="plupload_button plupload_stop plupload_hidden">' + _("Stop Upload") + '</a> ' +
|
245 |
+
'</div>' +
|
246 |
+
'<div class="plupload_started plupload_hidden"><!-- Hidden -->' +
|
247 |
+
'<div class="plupload_progress plupload_right">' +
|
248 |
+
'<div class="plupload_progress_container"></div>' +
|
249 |
+
'</div>' +
|
250 |
+
'<div class="plupload_cell plupload_upload_status"></div>' +
|
251 |
+
'<div class="plupload_clearer"> </div>' +
|
252 |
+
'</div>' +
|
253 |
+
'</td>' +
|
254 |
+
'<td class="plupload_file_status"><span class="plupload_total_status">0%</span></td>' +
|
255 |
+
'<td class="plupload_file_size"><span class="plupload_total_file_size">0 kb</span></td>' +
|
256 |
+
'<td class="plupload_file_action"></td>' +
|
257 |
+
'</tr>' +
|
258 |
+
'</table>' +
|
259 |
+
'</div>' +
|
260 |
+
'<input class="plupload_count" value="0" type="hidden">' +
|
261 |
+
'</div>'
|
262 |
+
);
|
263 |
+
}
|
264 |
+
|
265 |
+
|
266 |
+
$.widget("ui.plupload", {
|
267 |
+
|
268 |
+
widgetEventPrefix: '',
|
269 |
+
|
270 |
+
contents_bak: '',
|
271 |
+
|
272 |
+
options: {
|
273 |
+
browse_button_hover: 'ui-state-hover',
|
274 |
+
browse_button_active: 'ui-state-active',
|
275 |
+
|
276 |
+
filters: {},
|
277 |
+
|
278 |
+
// widget specific
|
279 |
+
buttons: {
|
280 |
+
browse: true,
|
281 |
+
start: true,
|
282 |
+
stop: true
|
283 |
+
},
|
284 |
+
|
285 |
+
views: {
|
286 |
+
list: true,
|
287 |
+
thumbs: false,
|
288 |
+
active: 'list',
|
289 |
+
remember: true // requires: https://github.com/carhartl/jquery-cookie, otherwise disabled even if set to true
|
290 |
+
},
|
291 |
+
|
292 |
+
thumb_width: 100,
|
293 |
+
thumb_height: 60,
|
294 |
+
|
295 |
+
multiple_queues: true, // re-use widget by default
|
296 |
+
dragdrop: true,
|
297 |
+
autostart: false,
|
298 |
+
sortable: false,
|
299 |
+
rename: false
|
300 |
+
},
|
301 |
+
|
302 |
+
FILE_COUNT_ERROR: -9001,
|
303 |
+
|
304 |
+
_create: function () {
|
305 |
+
var id = this.element.attr('id');
|
306 |
+
if (!id) {
|
307 |
+
id = plupload.guid();
|
308 |
+
this.element.attr('id', id);
|
309 |
+
}
|
310 |
+
this.id = id;
|
311 |
+
|
312 |
+
// backup the elements initial state
|
313 |
+
this.contents_bak = this.element.html();
|
314 |
+
renderUI(this.element);
|
315 |
+
|
316 |
+
// container, just in case
|
317 |
+
this.container = $('.plupload_container', this.element).attr('id', id + '_container');
|
318 |
+
|
319 |
+
this.content = $('.plupload_content', this.element);
|
320 |
+
|
321 |
+
if ($.fn.resizable) {
|
322 |
+
this.container.resizable({
|
323 |
+
handles: 's',
|
324 |
+
minHeight: 300
|
325 |
+
});
|
326 |
+
}
|
327 |
+
|
328 |
+
// list of files, may become sortable
|
329 |
+
this.filelist = $('.plupload_filelist_content', this.container)
|
330 |
+
.attr({
|
331 |
+
id: id + '_filelist',
|
332 |
+
unselectable: 'on'
|
333 |
+
});
|
334 |
+
|
335 |
+
|
336 |
+
// buttons
|
337 |
+
this.browse_button = $('.plupload_add', this.container).attr('id', id + '_browse');
|
338 |
+
this.start_button = $('.plupload_start', this.container).attr('id', id + '_start');
|
339 |
+
this.stop_button = $('.plupload_stop', this.container).attr('id', id + '_stop');
|
340 |
+
this.thumbs_switcher = $('#' + id + '_view_thumbs');
|
341 |
+
this.list_switcher = $('#' + id + '_view_list');
|
342 |
+
|
343 |
+
if ($.ui.button) {
|
344 |
+
this.browse_button.button({
|
345 |
+
icons: {primary: 'ui-icon-circle-plus'},
|
346 |
+
disabled: true
|
347 |
+
});
|
348 |
+
|
349 |
+
this.start_button.button({
|
350 |
+
icons: {primary: 'ui-icon-circle-arrow-e'},
|
351 |
+
disabled: true
|
352 |
+
});
|
353 |
+
|
354 |
+
this.stop_button.button({
|
355 |
+
icons: {primary: 'ui-icon-circle-close'}
|
356 |
+
});
|
357 |
+
|
358 |
+
this.list_switcher.button({
|
359 |
+
text: false,
|
360 |
+
icons: {secondary: "ui-icon-grip-dotted-horizontal"}
|
361 |
+
});
|
362 |
+
|
363 |
+
this.thumbs_switcher.button({
|
364 |
+
text: false,
|
365 |
+
icons: {secondary: "ui-icon-image"}
|
366 |
+
});
|
367 |
+
}
|
368 |
+
|
369 |
+
// progressbar
|
370 |
+
this.progressbar = $('.plupload_progress_container', this.container);
|
371 |
+
|
372 |
+
if ($.ui.progressbar) {
|
373 |
+
this.progressbar.progressbar();
|
374 |
+
}
|
375 |
+
|
376 |
+
// counter
|
377 |
+
this.counter = $('.plupload_count', this.element)
|
378 |
+
.attr({
|
379 |
+
id: id + '_count',
|
380 |
+
name: id + '_count'
|
381 |
+
});
|
382 |
+
|
383 |
+
// initialize uploader instance
|
384 |
+
this._initUploader();
|
385 |
+
},
|
386 |
+
|
387 |
+
_initUploader: function () {
|
388 |
+
var self = this
|
389 |
+
, id = this.id
|
390 |
+
, uploader
|
391 |
+
, options = {
|
392 |
+
container: id + '_buttons',
|
393 |
+
browse_button: id + '_browse'
|
394 |
+
}
|
395 |
+
;
|
396 |
+
|
397 |
+
$('.plupload_buttons', this.element).attr('id', id + '_buttons');
|
398 |
+
|
399 |
+
if (self.options.dragdrop) {
|
400 |
+
this.filelist.parent().attr('id', this.id + '_dropbox');
|
401 |
+
options.drop_element = this.id + '_dropbox';
|
402 |
+
}
|
403 |
+
|
404 |
+
this.filelist.on('click', function (e) {
|
405 |
+
var me = $(e.target), fileContainer;
|
406 |
+
if (me.hasClass('plupload_action_icon')) {
|
407 |
+
fileContainer = me.closest('.plupload_file');
|
408 |
+
if (fileContainer.hasClass('plupload_delete')) {
|
409 |
+
self.removeFile(fileContainer.attr('id'));
|
410 |
+
e.preventDefault();
|
411 |
+
}
|
412 |
+
}
|
413 |
+
});
|
414 |
+
|
415 |
+
uploader = this.uploader = uploaders[id] = new plupload.Uploader($.extend(this.options, options));
|
416 |
+
|
417 |
+
// retrieve full normalized set of options
|
418 |
+
this.options = uploader.getOption();
|
419 |
+
|
420 |
+
if (self.options.views.thumbs) {
|
421 |
+
uploader.settings.required_features.display_media = true;
|
422 |
+
}
|
423 |
+
|
424 |
+
// for backward compatibility
|
425 |
+
if (self.options.max_file_count) {
|
426 |
+
plupload.extend(uploader.getOption('filters'), {
|
427 |
+
max_file_count: self.options.max_file_count
|
428 |
+
});
|
429 |
+
}
|
430 |
+
|
431 |
+
plupload.addFileFilter('max_file_count', function (maxCount, file, cb) {
|
432 |
+
if (maxCount <= this.files.length - (this.total.uploaded + this.total.failed)) {
|
433 |
+
self.browse_button.button('disable');
|
434 |
+
this.disableBrowse();
|
435 |
+
|
436 |
+
this.trigger('Error', {
|
437 |
+
code: self.FILE_COUNT_ERROR,
|
438 |
+
message: _("File count error."),
|
439 |
+
file: file
|
440 |
+
});
|
441 |
+
cb(false);
|
442 |
+
} else {
|
443 |
+
cb(true);
|
444 |
+
}
|
445 |
+
});
|
446 |
+
|
447 |
+
|
448 |
+
uploader.bind('Error', function (up, err) {
|
449 |
+
var message, details = "";
|
450 |
+
|
451 |
+
message = '<strong>' + err.message + '</strong>';
|
452 |
+
|
453 |
+
switch (err.code) {
|
454 |
+
case plupload.FILE_EXTENSION_ERROR:
|
455 |
+
details = plupload.sprintf(_("File: %s"), err.file.name);
|
456 |
+
break;
|
457 |
+
|
458 |
+
case plupload.FILE_SIZE_ERROR:
|
459 |
+
details = plupload.sprintf(_("File: %s, size: %d, max file size: %d"), err.file.name, plupload.formatSize(err.file.size), plupload.formatSize(plupload.parseSize(up.getOption('filters').max_file_size)));
|
460 |
+
break;
|
461 |
+
|
462 |
+
case plupload.FILE_DUPLICATE_ERROR:
|
463 |
+
details = plupload.sprintf(_("%s already present in the queue."), err.file.name);
|
464 |
+
break;
|
465 |
+
|
466 |
+
case self.FILE_COUNT_ERROR:
|
467 |
+
details = plupload.sprintf(_("Upload element accepts only %d file(s) at a time. Extra files were stripped."), up.getOption('filters').max_file_count || 0);
|
468 |
+
break;
|
469 |
+
|
470 |
+
case plupload.IMAGE_FORMAT_ERROR :
|
471 |
+
details = _("Image format either wrong or not supported.");
|
472 |
+
break;
|
473 |
+
|
474 |
+
case plupload.IMAGE_MEMORY_ERROR :
|
475 |
+
details = _("Runtime ran out of available memory.");
|
476 |
+
break;
|
477 |
+
|
478 |
+
/* // This needs a review
|
479 |
+
case plupload.IMAGE_DIMENSIONS_ERROR :
|
480 |
+
details = plupload.sprintf(_('Resoultion out of boundaries! <b>%s</b> runtime supports images only up to %wx%hpx.'), up.runtime, up.features.maxWidth, up.features.maxHeight);
|
481 |
+
break; */
|
482 |
+
|
483 |
+
case plupload.HTTP_ERROR:
|
484 |
+
details = _("Upload URL might be wrong or doesn't exist.");
|
485 |
+
break;
|
486 |
+
}
|
487 |
+
|
488 |
+
message += " <br /><i>" + details + "</i>";
|
489 |
+
|
490 |
+
self._trigger('error', null, {up: up, error: err});
|
491 |
+
|
492 |
+
// do not show UI if no runtime can be initialized
|
493 |
+
if (err.code === plupload.INIT_ERROR) {
|
494 |
+
setTimeout(function () {
|
495 |
+
self.destroy();
|
496 |
+
}, 1);
|
497 |
+
} else {
|
498 |
+
self.notify('error', message);
|
499 |
+
}
|
500 |
+
});
|
501 |
+
|
502 |
+
|
503 |
+
uploader.bind('PostInit', function (up) {
|
504 |
+
// all buttons are optional, so they can be disabled and hidden
|
505 |
+
if (!self.options.buttons.browse) {
|
506 |
+
self.browse_button.button('disable').hide();
|
507 |
+
up.disableBrowse(true);
|
508 |
+
} else {
|
509 |
+
self.browse_button.button('enable');
|
510 |
+
}
|
511 |
+
|
512 |
+
if (!self.options.buttons.start) {
|
513 |
+
self.start_button.button('disable').hide();
|
514 |
+
}
|
515 |
+
|
516 |
+
if (!self.options.buttons.stop) {
|
517 |
+
self.stop_button.button('disable').hide();
|
518 |
+
}
|
519 |
+
|
520 |
+
if (!self.options.unique_names && self.options.rename) {
|
521 |
+
self._enableRenaming();
|
522 |
+
}
|
523 |
+
|
524 |
+
if (self.options.dragdrop && up.features.dragdrop) {
|
525 |
+
self.filelist.parent().addClass('plupload_dropbox');
|
526 |
+
}
|
527 |
+
|
528 |
+
self._enableViewSwitcher();
|
529 |
+
|
530 |
+
self.start_button.click(function (e) {
|
531 |
+
if (!$(this).button('option', 'disabled')) {
|
532 |
+
self.start();
|
533 |
+
}
|
534 |
+
e.preventDefault();
|
535 |
+
});
|
536 |
+
|
537 |
+
self.stop_button.click(function (e) {
|
538 |
+
self.stop();
|
539 |
+
e.preventDefault();
|
540 |
+
});
|
541 |
+
|
542 |
+
self._trigger('ready', null, {up: up});
|
543 |
+
});
|
544 |
+
|
545 |
+
// uploader internal events must run first
|
546 |
+
uploader.init();
|
547 |
+
|
548 |
+
uploader.bind('FileFiltered', function (up, file) {
|
549 |
+
self._addFiles(file);
|
550 |
+
});
|
551 |
+
|
552 |
+
uploader.bind('FilesAdded', function (up, files) {
|
553 |
+
self._trigger('selected', null, {up: up, files: files});
|
554 |
+
|
555 |
+
// re-enable sortable
|
556 |
+
if (self.options.sortable && $.ui.sortable) {
|
557 |
+
self._enableSortingList();
|
558 |
+
}
|
559 |
+
|
560 |
+
self._trigger('updatelist', null, {filelist: self.filelist});
|
561 |
+
|
562 |
+
if (self.options.autostart) {
|
563 |
+
// set a little delay to make sure that QueueChanged triggered by the core has time to complete
|
564 |
+
setTimeout(function () {
|
565 |
+
self.start();
|
566 |
+
}, 10);
|
567 |
+
}
|
568 |
+
});
|
569 |
+
|
570 |
+
uploader.bind('FilesRemoved', function (up, files) {
|
571 |
+
// destroy sortable if enabled
|
572 |
+
if ($.ui.sortable && self.options.sortable) {
|
573 |
+
$('tbody', self.filelist).sortable('destroy');
|
574 |
+
}
|
575 |
+
|
576 |
+
$.each(files, function (i, file) {
|
577 |
+
$('#' + file.id).toggle("highlight", function () {
|
578 |
+
$(this).remove();
|
579 |
+
});
|
580 |
+
});
|
581 |
+
|
582 |
+
if (up.files.length) {
|
583 |
+
// re-initialize sortable
|
584 |
+
if (self.options.sortable && $.ui.sortable) {
|
585 |
+
self._enableSortingList();
|
586 |
+
}
|
587 |
+
}
|
588 |
+
|
589 |
+
self._trigger('updatelist', null, {filelist: self.filelist});
|
590 |
+
self._trigger('removed', null, {up: up, files: files});
|
591 |
+
});
|
592 |
+
|
593 |
+
uploader.bind('QueueChanged', function () {
|
594 |
+
self._handleState();
|
595 |
+
});
|
596 |
+
|
597 |
+
uploader.bind('StateChanged', function (up) {
|
598 |
+
self._handleState();
|
599 |
+
if (plupload.STARTED === up.state) {
|
600 |
+
self._trigger('started', null, {up: this.uploader});
|
601 |
+
} else if (plupload.STOPPED === up.state) {
|
602 |
+
self._trigger('stopped', null, {up: this.uploader});
|
603 |
+
}
|
604 |
+
});
|
605 |
+
|
606 |
+
uploader.bind('UploadFile', function (up, file) {
|
607 |
+
self._handleFileStatus(file);
|
608 |
+
});
|
609 |
+
|
610 |
+
uploader.bind('FileUploaded', function (up, file, result) {
|
611 |
+
self._handleFileStatus(file);
|
612 |
+
self._trigger('uploaded', null, {up: up, file: file, result: result});
|
613 |
+
});
|
614 |
+
|
615 |
+
uploader.bind('UploadProgress', function (up, file) {
|
616 |
+
self._handleFileStatus(file);
|
617 |
+
self._updateTotalProgress();
|
618 |
+
self._trigger('progress', null, {up: up, file: file});
|
619 |
+
});
|
620 |
+
|
621 |
+
uploader.bind('UploadComplete', function (up, files) {
|
622 |
+
self._addFormFields();
|
623 |
+
self._trigger('complete', null, {up: up, files: files});
|
624 |
+
});
|
625 |
+
},
|
626 |
+
|
627 |
+
_setOption: function (key, value) {
|
628 |
+
var self = this;
|
629 |
+
|
630 |
+
if (key == 'buttons' && typeof (value) == 'object') {
|
631 |
+
value = $.extend(self.options.buttons, value);
|
632 |
+
|
633 |
+
if (!value.browse) {
|
634 |
+
self.browse_button.button('disable').hide();
|
635 |
+
self.uploader.disableBrowse(true);
|
636 |
+
} else {
|
637 |
+
self.browse_button.button('enable').show();
|
638 |
+
self.uploader.disableBrowse(false);
|
639 |
+
}
|
640 |
+
|
641 |
+
if (!value.start) {
|
642 |
+
self.start_button.button('disable').hide();
|
643 |
+
} else {
|
644 |
+
self.start_button.button('enable').show();
|
645 |
+
}
|
646 |
+
|
647 |
+
if (!value.stop) {
|
648 |
+
self.stop_button.button('disable').hide();
|
649 |
+
} else {
|
650 |
+
self.start_button.button('enable').show();
|
651 |
+
}
|
652 |
+
}
|
653 |
+
|
654 |
+
self.uploader.setOption(key, value);
|
655 |
+
},
|
656 |
+
|
657 |
+
/**
|
658 |
+
Start upload. Triggers `start` event.
|
659 |
+
|
660 |
+
@method start
|
661 |
+
*/
|
662 |
+
start: function () {
|
663 |
+
this.uploader.start();
|
664 |
+
},
|
665 |
+
|
666 |
+
/**
|
667 |
+
Stop upload. Triggers `stop` event.
|
668 |
+
|
669 |
+
@method stop
|
670 |
+
*/
|
671 |
+
stop: function () {
|
672 |
+
this.uploader.stop();
|
673 |
+
},
|
674 |
+
|
675 |
+
/**
|
676 |
+
Enable browse button.
|
677 |
+
|
678 |
+
@method enable
|
679 |
+
*/
|
680 |
+
enable: function () {
|
681 |
+
this.browse_button.button('enable');
|
682 |
+
this.uploader.disableBrowse(false);
|
683 |
+
},
|
684 |
+
|
685 |
+
/**
|
686 |
+
Disable browse button.
|
687 |
+
|
688 |
+
@method disable
|
689 |
+
*/
|
690 |
+
disable: function () {
|
691 |
+
this.browse_button.button('disable');
|
692 |
+
this.uploader.disableBrowse(true);
|
693 |
+
},
|
694 |
+
|
695 |
+
/**
|
696 |
+
Retrieve file by its unique id.
|
697 |
+
|
698 |
+
@method getFile
|
699 |
+
@param {String} id Unique id of the file
|
700 |
+
@return {plupload.File}
|
701 |
+
*/
|
702 |
+
getFile: function (id) {
|
703 |
+
var file;
|
704 |
+
|
705 |
+
if (typeof id === 'number') {
|
706 |
+
file = this.uploader.files[id];
|
707 |
+
} else {
|
708 |
+
file = this.uploader.getFile(id);
|
709 |
+
}
|
710 |
+
return file;
|
711 |
+
},
|
712 |
+
|
713 |
+
/**
|
714 |
+
Return array of files currently in the queue.
|
715 |
+
|
716 |
+
@method getFiles
|
717 |
+
@return {Array} Array of files in the queue represented by plupload.File objects
|
718 |
+
*/
|
719 |
+
getFiles: function () {
|
720 |
+
return this.uploader.files;
|
721 |
+
},
|
722 |
+
|
723 |
+
/**
|
724 |
+
Remove the file from the queue.
|
725 |
+
|
726 |
+
@method removeFile
|
727 |
+
@param {plupload.File|String} file File to remove, might be specified directly or by its unique id
|
728 |
+
*/
|
729 |
+
removeFile: function (file) {
|
730 |
+
if (plupload.typeOf(file) === 'string') {
|
731 |
+
file = this.getFile(file);
|
732 |
+
}
|
733 |
+
this.uploader.removeFile(file);
|
734 |
+
},
|
735 |
+
|
736 |
+
/**
|
737 |
+
Clear the file queue.
|
738 |
+
|
739 |
+
@method clearQueue
|
740 |
+
*/
|
741 |
+
clearQueue: function () {
|
742 |
+
this.uploader.splice();
|
743 |
+
},
|
744 |
+
|
745 |
+
/**
|
746 |
+
Retrieve internal plupload.Uploader object (usually not required).
|
747 |
+
|
748 |
+
@method getUploader
|
749 |
+
@return {plupload.Uploader}
|
750 |
+
*/
|
751 |
+
getUploader: function () {
|
752 |
+
return this.uploader;
|
753 |
+
},
|
754 |
+
|
755 |
+
/**
|
756 |
+
Trigger refresh procedure, specifically browse_button re-measure and re-position operations.
|
757 |
+
Might get handy, when UI Widget is placed within the popup, that is constantly hidden and shown
|
758 |
+
again - without calling this method after each show operation, dialog trigger might get displaced
|
759 |
+
and disfunctional.
|
760 |
+
|
761 |
+
@method refresh
|
762 |
+
*/
|
763 |
+
refresh: function () {
|
764 |
+
this.uploader.refresh();
|
765 |
+
},
|
766 |
+
|
767 |
+
/**
|
768 |
+
Display a message in notification area.
|
769 |
+
|
770 |
+
@method notify
|
771 |
+
@param {Enum} type Type of the message, either `error` or `info`
|
772 |
+
@param {String} message The text message to display.
|
773 |
+
*/
|
774 |
+
notify: function (type, message) {
|
775 |
+
var popup = $(
|
776 |
+
'<div class="plupload_message">' +
|
777 |
+
'<span class="plupload_message_close ui-icon ui-icon-circle-close" title="' + _('Close') + '"></span>' +
|
778 |
+
'<p><span class="ui-icon"></span>' + message + '</p>' +
|
779 |
+
'</div>'
|
780 |
+
);
|
781 |
+
|
782 |
+
popup
|
783 |
+
.addClass('ui-state-' + (type === 'error' ? 'error' : 'highlight'))
|
784 |
+
.find('p .ui-icon')
|
785 |
+
.addClass('ui-icon-' + (type === 'error' ? 'alert' : 'info'))
|
786 |
+
.end()
|
787 |
+
.find('.plupload_message_close')
|
788 |
+
.click(function () {
|
789 |
+
popup.remove();
|
790 |
+
})
|
791 |
+
.end();
|
792 |
+
|
793 |
+
$('.plupload_header', this.container).append(popup);
|
794 |
+
},
|
795 |
+
|
796 |
+
/**
|
797 |
+
Destroy the widget, the uploader, free associated resources and bring back original html.
|
798 |
+
|
799 |
+
@method destroy
|
800 |
+
*/
|
801 |
+
destroy: function () {
|
802 |
+
// destroy uploader instance
|
803 |
+
this.uploader.destroy();
|
804 |
+
|
805 |
+
// unbind all button events
|
806 |
+
$('.plupload_button', this.element).unbind();
|
807 |
+
|
808 |
+
// destroy buttons
|
809 |
+
if ($.ui.button) {
|
810 |
+
$('.plupload_add, .plupload_start, .plupload_stop', this.container)
|
811 |
+
.button('destroy');
|
812 |
+
}
|
813 |
+
|
814 |
+
// destroy progressbar
|
815 |
+
if ($.ui.progressbar) {
|
816 |
+
this.progressbar.progressbar('destroy');
|
817 |
+
}
|
818 |
+
|
819 |
+
// destroy sortable behavior
|
820 |
+
if ($.ui.sortable && this.options.sortable) {
|
821 |
+
$('tbody', this.filelist).sortable('destroy');
|
822 |
+
}
|
823 |
+
|
824 |
+
// restore the elements initial state
|
825 |
+
this.element
|
826 |
+
.empty()
|
827 |
+
.html(this.contents_bak);
|
828 |
+
this.contents_bak = '';
|
829 |
+
|
830 |
+
$.Widget.prototype.destroy.apply(this);
|
831 |
+
},
|
832 |
+
|
833 |
+
_handleState: function () {
|
834 |
+
var up = this.uploader
|
835 |
+
, filesPending = up.files.length - (up.total.uploaded + up.total.failed)
|
836 |
+
, maxCount = up.getOption('filters').max_file_count || 0
|
837 |
+
;
|
838 |
+
|
839 |
+
if (plupload.STARTED === up.state) {
|
840 |
+
$([])
|
841 |
+
.add(this.stop_button)
|
842 |
+
.add('.plupload_started')
|
843 |
+
.removeClass('plupload_hidden');
|
844 |
+
|
845 |
+
this.start_button.button('disable');
|
846 |
+
|
847 |
+
if (!this.options.multiple_queues) {
|
848 |
+
this.browse_button.button('disable');
|
849 |
+
up.disableBrowse();
|
850 |
+
}
|
851 |
+
|
852 |
+
$('.plupload_upload_status', this.element).html(plupload.sprintf(_('Uploaded %d/%d files'), up.total.uploaded, up.files.length));
|
853 |
+
$('.plupload_header_content', this.element).addClass('plupload_header_content_bw');
|
854 |
+
} else if (plupload.STOPPED === up.state) {
|
855 |
+
$([])
|
856 |
+
.add(this.stop_button)
|
857 |
+
.add('.plupload_started')
|
858 |
+
.addClass('plupload_hidden');
|
859 |
+
|
860 |
+
if (filesPending) {
|
861 |
+
this.start_button.button('enable');
|
862 |
+
} else {
|
863 |
+
this.start_button.button('disable');
|
864 |
+
}
|
865 |
+
|
866 |
+
if (this.options.multiple_queues) {
|
867 |
+
$('.plupload_header_content', this.element).removeClass('plupload_header_content_bw');
|
868 |
+
}
|
869 |
+
|
870 |
+
// if max_file_count defined, only that many files can be queued at once
|
871 |
+
if (this.options.multiple_queues && maxCount && maxCount > filesPending) {
|
872 |
+
this.browse_button.button('enable');
|
873 |
+
up.disableBrowse(false);
|
874 |
+
}
|
875 |
+
|
876 |
+
this._updateTotalProgress();
|
877 |
+
}
|
878 |
+
|
879 |
+
if (up.total.queued === 0) {
|
880 |
+
$('.ui-button-text', this.browse_button).html(_('Add Files'));
|
881 |
+
} else {
|
882 |
+
$('.ui-button-text', this.browse_button).html(plupload.sprintf(_('%d files queued'), up.total.queued));
|
883 |
+
}
|
884 |
+
|
885 |
+
up.refresh();
|
886 |
+
},
|
887 |
+
|
888 |
+
_handleFileStatus: function (file) {
|
889 |
+
var $file = $('#' + file.id), actionClass, iconClass;
|
890 |
+
|
891 |
+
// since this method might be called asynchronously, file row might not yet be rendered
|
892 |
+
if (!$file.length) {
|
893 |
+
return;
|
894 |
+
}
|
895 |
+
|
896 |
+
switch (file.status) {
|
897 |
+
case plupload.DONE:
|
898 |
+
actionClass = 'plupload_done';
|
899 |
+
iconClass = 'plupload_action_icon ui-icon ui-icon-circle-check';
|
900 |
+
break;
|
901 |
+
|
902 |
+
case plupload.FAILED:
|
903 |
+
actionClass = 'ui-state-error plupload_failed';
|
904 |
+
iconClass = 'plupload_action_icon ui-icon ui-icon-alert';
|
905 |
+
break;
|
906 |
+
|
907 |
+
case plupload.QUEUED:
|
908 |
+
actionClass = 'plupload_delete';
|
909 |
+
iconClass = 'plupload_action_icon ui-icon ui-icon-circle-minus';
|
910 |
+
break;
|
911 |
+
|
912 |
+
case plupload.UPLOADING:
|
913 |
+
actionClass = 'ui-state-highlight plupload_uploading';
|
914 |
+
iconClass = 'plupload_action_icon ui-icon ui-icon-circle-arrow-w';
|
915 |
+
|
916 |
+
// scroll uploading file into the view if its bottom boundary is out of it
|
917 |
+
var scroller = $('.plupload_scroll', this.container)
|
918 |
+
, scrollTop = scroller.scrollTop()
|
919 |
+
, scrollerHeight = scroller.height()
|
920 |
+
, rowOffset = $file.position().top + $file.height()
|
921 |
+
;
|
922 |
+
|
923 |
+
if (scrollerHeight < rowOffset) {
|
924 |
+
scroller.scrollTop(scrollTop + rowOffset - scrollerHeight);
|
925 |
+
}
|
926 |
+
|
927 |
+
// Set file specific progress
|
928 |
+
$file
|
929 |
+
.find('.plupload_file_percent')
|
930 |
+
.html(file.percent + '%')
|
931 |
+
.end()
|
932 |
+
.find('.plupload_file_progress')
|
933 |
+
.css('width', file.percent + '%')
|
934 |
+
.end()
|
935 |
+
.find('.plupload_file_size')
|
936 |
+
.html(plupload.formatSize(file.size));
|
937 |
+
break;
|
938 |
+
}
|
939 |
+
actionClass += ' ui-state-default plupload_file';
|
940 |
+
|
941 |
+
$file
|
942 |
+
.attr('class', actionClass)
|
943 |
+
.find('.plupload_action_icon')
|
944 |
+
.attr('class', iconClass);
|
945 |
+
},
|
946 |
+
|
947 |
+
_updateTotalProgress: function () {
|
948 |
+
var up = this.uploader;
|
949 |
+
|
950 |
+
// Scroll to end of file list
|
951 |
+
this.filelist[0].scrollTop = this.filelist[0].scrollHeight;
|
952 |
+
|
953 |
+
this.progressbar.progressbar('value', up.total.percent);
|
954 |
+
|
955 |
+
this.element
|
956 |
+
.find('.plupload_total_status')
|
957 |
+
.html(up.total.percent + '%')
|
958 |
+
.end()
|
959 |
+
.find('.plupload_total_file_size')
|
960 |
+
.html(plupload.formatSize(up.total.size))
|
961 |
+
.end()
|
962 |
+
.find('.plupload_upload_status')
|
963 |
+
.html(plupload.sprintf(_('Uploaded %d/%d files'), up.total.uploaded, up.files.length));
|
964 |
+
},
|
965 |
+
|
966 |
+
_displayThumbs: function () {
|
967 |
+
var self = this
|
968 |
+
, tw, th // thumb width/height
|
969 |
+
, cols
|
970 |
+
, num = 0 // number of simultaneously visible thumbs
|
971 |
+
, thumbs = [] // array of thumbs to preload at any given moment
|
972 |
+
, loading = false
|
973 |
+
;
|
974 |
+
|
975 |
+
if (!this.options.views.thumbs) {
|
976 |
+
return;
|
977 |
+
}
|
978 |
+
|
979 |
+
|
980 |
+
function onLast(el, eventName, cb) {
|
981 |
+
var timer;
|
982 |
+
|
983 |
+
el.on(eventName, function () {
|
984 |
+
clearTimeout(timer);
|
985 |
+
timer = setTimeout(function () {
|
986 |
+
clearTimeout(timer);
|
987 |
+
cb();
|
988 |
+
}, 300);
|
989 |
+
});
|
990 |
+
}
|
991 |
+
|
992 |
+
|
993 |
+
// calculate number of simultaneously visible thumbs
|
994 |
+
function measure() {
|
995 |
+
if (!tw || !th) {
|
996 |
+
var wrapper = $('.plupload_file:eq(0)', self.filelist);
|
997 |
+
tw = wrapper.outerWidth(true);
|
998 |
+
th = wrapper.outerHeight(true);
|
999 |
+
}
|
1000 |
+
|
1001 |
+
var aw = self.content.width(), ah = self.content.height();
|
1002 |
+
cols = Math.floor(aw / tw);
|
1003 |
+
num = cols * (Math.ceil(ah / th) + 1);
|
1004 |
+
}
|
1005 |
+
|
1006 |
+
|
1007 |
+
function pickThumbsToLoad() {
|
1008 |
+
// calculate index of virst visible thumb
|
1009 |
+
var startIdx = Math.floor(self.content.scrollTop() / th) * cols;
|
1010 |
+
// get potentially visible thumbs that are not yet visible
|
1011 |
+
thumbs = $('.plupload_file .plupload_file_thumb', self.filelist)
|
1012 |
+
.slice(startIdx, startIdx + num)
|
1013 |
+
.filter('.plupload_thumb_toload')
|
1014 |
+
.get();
|
1015 |
+
}
|
1016 |
+
|
1017 |
+
|
1018 |
+
function init() {
|
1019 |
+
function mpl() { // measure, pick, load
|
1020 |
+
if (self.view_mode !== 'thumbs') {
|
1021 |
+
return;
|
1022 |
+
}
|
1023 |
+
measure();
|
1024 |
+
pickThumbsToLoad();
|
1025 |
+
lazyLoad();
|
1026 |
+
}
|
1027 |
+
|
1028 |
+
if ($.fn.resizable) {
|
1029 |
+
onLast(self.container, 'resize', mpl);
|
1030 |
+
}
|
1031 |
+
|
1032 |
+
onLast(self.window, 'resize', mpl);
|
1033 |
+
onLast(self.content, 'scroll', mpl);
|
1034 |
+
|
1035 |
+
self.element.on('viewchanged selected', mpl);
|
1036 |
+
|
1037 |
+
mpl();
|
1038 |
+
}
|
1039 |
+
|
1040 |
+
|
1041 |
+
function preloadThumb(file, cb) {
|
1042 |
+
var img = new o.image.Image();
|
1043 |
+
var resolveUrl = o.core.utils.Url.resolveUrl;
|
1044 |
+
|
1045 |
+
img.onload = function () {
|
1046 |
+
var thumb = $('#' + file.id + ' .plupload_file_thumb', self.filelist);
|
1047 |
+
this.embed(thumb[0], {
|
1048 |
+
width: self.options.thumb_width,
|
1049 |
+
height: self.options.thumb_height,
|
1050 |
+
crop: true,
|
1051 |
+
fit: true,
|
1052 |
+
preserveHeaders: false,
|
1053 |
+
swf_url: resolveUrl(self.options.flash_swf_url),
|
1054 |
+
xap_url: resolveUrl(self.options.silverlight_xap_url)
|
1055 |
+
});
|
1056 |
+
};
|
1057 |
+
|
1058 |
+
img.bind("embedded error", function (e) {
|
1059 |
+
$('#' + file.id, self.filelist)
|
1060 |
+
.find('.plupload_file_thumb')
|
1061 |
+
.removeClass('plupload_thumb_loading')
|
1062 |
+
.addClass('plupload_thumb_' + e.type)
|
1063 |
+
;
|
1064 |
+
this.destroy();
|
1065 |
+
setTimeout(cb, 1); // detach, otherwise ui might hang (in SilverLight for example)
|
1066 |
+
});
|
1067 |
+
|
1068 |
+
$('#' + file.id, self.filelist)
|
1069 |
+
.find('.plupload_file_thumb')
|
1070 |
+
.removeClass('plupload_thumb_toload')
|
1071 |
+
.addClass('plupload_thumb_loading')
|
1072 |
+
;
|
1073 |
+
img.load(file.getSource());
|
1074 |
+
}
|
1075 |
+
|
1076 |
+
|
1077 |
+
function lazyLoad() {
|
1078 |
+
if (self.view_mode !== 'thumbs' || loading) {
|
1079 |
+
return;
|
1080 |
+
}
|
1081 |
+
|
1082 |
+
pickThumbsToLoad();
|
1083 |
+
if (!thumbs.length) {
|
1084 |
+
return;
|
1085 |
+
}
|
1086 |
+
|
1087 |
+
loading = true;
|
1088 |
+
|
1089 |
+
preloadThumb(self.getFile($(thumbs.shift()).closest('.plupload_file').attr('id')), function () {
|
1090 |
+
loading = false;
|
1091 |
+
lazyLoad();
|
1092 |
+
});
|
1093 |
+
}
|
1094 |
+
|
1095 |
+
// this has to run only once to measure structures and bind listeners
|
1096 |
+
this.element.on('selected', function onselected() {
|
1097 |
+
self.element.off('selected', onselected);
|
1098 |
+
init();
|
1099 |
+
});
|
1100 |
+
},
|
1101 |
+
|
1102 |
+
_addFiles: function (files) {
|
1103 |
+
var self = this, file_html, html = '';
|
1104 |
+
|
1105 |
+
file_html = '<li class="plupload_file ui-state-default plupload_delete" id="{id}" style="width:{thumb_width}px;">' +
|
1106 |
+
'<div class="plupload_file_thumb plupload_thumb_toload" style="width: {thumb_width}px; height: {thumb_height}px;">' +
|
1107 |
+
'<div class="plupload_file_dummy ui-widget-content" style="line-height: {thumb_height}px;"><span class="ui-state-disabled">{ext} </span></div>' +
|
1108 |
+
'</div>' +
|
1109 |
+
'<div class="plupload_file_status">' +
|
1110 |
+
'<div class="plupload_file_progress ui-widget-header" style="width: 0%"> </div>' +
|
1111 |
+
'<span class="plupload_file_percent">{percent} </span>' +
|
1112 |
+
'</div>' +
|
1113 |
+
'<div class="plupload_file_name" title="{name}">' +
|
1114 |
+
'<span class="plupload_file_name_wrapper">{name} </span>' +
|
1115 |
+
'</div>' +
|
1116 |
+
'<div class="plupload_file_action">' +
|
1117 |
+
'<div class="plupload_action_icon ui-icon ui-icon-circle-minus"> </div>' +
|
1118 |
+
'</div>' +
|
1119 |
+
'<div class="plupload_file_size">{size} </div>' +
|
1120 |
+
'<div class="plupload_file_fields"> </div>' +
|
1121 |
+
'</li>';
|
1122 |
+
|
1123 |
+
if (plupload.typeOf(files) !== 'array') {
|
1124 |
+
files = [files];
|
1125 |
+
}
|
1126 |
+
|
1127 |
+
$.each(files, function (i, file) {
|
1128 |
+
var ext = o.core.utils.Mime.getFileExtension(file.name) || 'none';
|
1129 |
+
|
1130 |
+
html += file_html.replace(/\{(\w+)\}/g, function ($0, $1) {
|
1131 |
+
switch ($1) {
|
1132 |
+
case 'thumb_width':
|
1133 |
+
case 'thumb_height':
|
1134 |
+
return self.options[$1];
|
1135 |
+
|
1136 |
+
case 'size':
|
1137 |
+
return plupload.formatSize(file.size);
|
1138 |
+
|
1139 |
+
case 'ext':
|
1140 |
+
return ext;
|
1141 |
+
|
1142 |
+
default:
|
1143 |
+
return file[$1] || '';
|
1144 |
+
}
|
1145 |
+
});
|
1146 |
+
});
|
1147 |
+
|
1148 |
+
self.filelist.append(html);
|
1149 |
+
},
|
1150 |
+
|
1151 |
+
_addFormFields: function () {
|
1152 |
+
var self = this;
|
1153 |
+
|
1154 |
+
// re-add from fresh
|
1155 |
+
$('.plupload_file_fields', this.filelist).html('');
|
1156 |
+
|
1157 |
+
plupload.each(this.uploader.files, function (file, count) {
|
1158 |
+
var fields = ''
|
1159 |
+
, id = self.id + '_' + count
|
1160 |
+
;
|
1161 |
+
|
1162 |
+
if (file.target_name) {
|
1163 |
+
fields += '<input type="hidden" name="' + id + '_tmpname" value="' + plupload.xmlEncode(file.target_name) + '" />';
|
1164 |
+
}
|
1165 |
+
fields += '<input type="hidden" name="' + id + '_name" value="' + plupload.xmlEncode(file.name) + '" />';
|
1166 |
+
fields += '<input type="hidden" name="' + id + '_status" value="' + (file.status === plupload.DONE ? 'done' : 'failed') + '" />';
|
1167 |
+
|
1168 |
+
$('#' + file.id).find('.plupload_file_fields').html(fields);
|
1169 |
+
});
|
1170 |
+
|
1171 |
+
this.counter.val(this.uploader.files.length);
|
1172 |
+
},
|
1173 |
+
|
1174 |
+
_viewChanged: function (view) {
|
1175 |
+
// update or write a new cookie
|
1176 |
+
if (this.options.views.remember && $.cookie) {
|
1177 |
+
$.cookie('plupload_ui_view', view, {expires: 7, path: '/'});
|
1178 |
+
}
|
1179 |
+
|
1180 |
+
// ugly fix for IE6 - make content area stretchable
|
1181 |
+
if (plupload.ua.browser === 'IE' && plupload.ua.version < 7) {
|
1182 |
+
this.content.attr('style', 'height:expression(document.getElementById("' + this.id + '_container' + '").clientHeight - ' + (view === 'list' ? 132 : 102) + ')');
|
1183 |
+
}
|
1184 |
+
|
1185 |
+
this.container.removeClass('plupload_view_list plupload_view_thumbs').addClass('plupload_view_' + view);
|
1186 |
+
this.view_mode = view;
|
1187 |
+
this._trigger('viewchanged', null, {view: view});
|
1188 |
+
},
|
1189 |
+
|
1190 |
+
_enableViewSwitcher: function () {
|
1191 |
+
var self = this
|
1192 |
+
, view
|
1193 |
+
, switcher = $('.plupload_view_switch', this.container)
|
1194 |
+
, buttons
|
1195 |
+
, button
|
1196 |
+
;
|
1197 |
+
|
1198 |
+
plupload.each(['list', 'thumbs'], function (view) {
|
1199 |
+
if (!self.options.views[view]) {
|
1200 |
+
switcher.find('[for="' + self.id + '_view_' + view + '"], #' + self.id + '_view_' + view).remove();
|
1201 |
+
}
|
1202 |
+
});
|
1203 |
+
|
1204 |
+
// check if any visible left
|
1205 |
+
buttons = switcher.find('.plupload_button');
|
1206 |
+
|
1207 |
+
if (buttons.length === 1) {
|
1208 |
+
switcher.hide();
|
1209 |
+
view = buttons.eq(0).data('view');
|
1210 |
+
this._viewChanged(view);
|
1211 |
+
} else if ($.ui.button && buttons.length > 1) {
|
1212 |
+
if (this.options.views.remember && $.cookie) {
|
1213 |
+
view = $.cookie('plupload_ui_view');
|
1214 |
+
}
|
1215 |
+
|
1216 |
+
// if wierd case, bail out to default
|
1217 |
+
if (!~plupload.inArray(view, ['list', 'thumbs'])) {
|
1218 |
+
view = this.options.views.active;
|
1219 |
+
}
|
1220 |
+
|
1221 |
+
switcher
|
1222 |
+
.show()
|
1223 |
+
.buttonset()
|
1224 |
+
.find('.ui-button')
|
1225 |
+
.click(function (e) {
|
1226 |
+
view = $(this).data('view');
|
1227 |
+
self._viewChanged(view);
|
1228 |
+
e.preventDefault(); // avoid auto scrolling to widget in IE and FF (see #850)
|
1229 |
+
});
|
1230 |
+
|
1231 |
+
// if view not active - happens when switcher wasn't clicked manually
|
1232 |
+
button = switcher.find('[for="' + self.id + '_view_' + view + '"]');
|
1233 |
+
if (button.length) {
|
1234 |
+
button.trigger('click');
|
1235 |
+
}
|
1236 |
+
} else {
|
1237 |
+
switcher.show();
|
1238 |
+
this._viewChanged(this.options.views.active);
|
1239 |
+
}
|
1240 |
+
|
1241 |
+
// initialize thumb viewer if requested
|
1242 |
+
if (this.options.views.thumbs) {
|
1243 |
+
this._displayThumbs();
|
1244 |
+
}
|
1245 |
+
},
|
1246 |
+
|
1247 |
+
_enableRenaming: function () {
|
1248 |
+
var self = this;
|
1249 |
+
|
1250 |
+
this.filelist.dblclick(function (e) {
|
1251 |
+
var nameInput, fileContainer, file, parts, name, ext = "";
|
1252 |
+
var nameSpan = $(e.target);
|
1253 |
+
|
1254 |
+
if (!nameSpan.hasClass('plupload_file_name_wrapper')) {
|
1255 |
+
return;
|
1256 |
+
}
|
1257 |
+
|
1258 |
+
fileContainer = nameSpan.closest('.plupload_file');
|
1259 |
+
if (!fileContainer.hasClass('plupload_delete')) {
|
1260 |
+
return;
|
1261 |
+
}
|
1262 |
+
|
1263 |
+
// Get file name and split out name and extension
|
1264 |
+
file = self.uploader.getFile(fileContainer[0].id);
|
1265 |
+
name = file.name;
|
1266 |
+
parts = /^(.+)(\.[^.]+)$/.exec(name);
|
1267 |
+
if (parts) {
|
1268 |
+
name = parts[1];
|
1269 |
+
ext = parts[2];
|
1270 |
+
}
|
1271 |
+
|
1272 |
+
// Display input element
|
1273 |
+
nameInput = $('<input class="plupload_file_rename" type="text" />').width(nameSpan.width()).insertAfter(nameSpan.hide());
|
1274 |
+
nameInput.val(name).blur(function () {
|
1275 |
+
nameSpan.show().parent().scrollLeft(0).end().next().remove();
|
1276 |
+
}).keydown(function (e) {
|
1277 |
+
var nameInput = $(this);
|
1278 |
+
|
1279 |
+
if ($.inArray(e.keyCode, [13, 27]) !== -1) {
|
1280 |
+
e.preventDefault();
|
1281 |
+
|
1282 |
+
// Rename file and glue extension back on
|
1283 |
+
if (e.keyCode === 13) {
|
1284 |
+
file.name = nameInput.val() + ext;
|
1285 |
+
nameSpan.html(file.name);
|
1286 |
+
}
|
1287 |
+
nameInput.blur();
|
1288 |
+
}
|
1289 |
+
})[0].focus();
|
1290 |
+
});
|
1291 |
+
},
|
1292 |
+
|
1293 |
+
_enableSortingList: function () {
|
1294 |
+
var self = this;
|
1295 |
+
|
1296 |
+
if ($('.plupload_file', this.filelist).length < 2) {
|
1297 |
+
return;
|
1298 |
+
}
|
1299 |
+
|
1300 |
+
// destroy sortable if enabled
|
1301 |
+
$('tbody', this.filelist).sortable('destroy');
|
1302 |
+
|
1303 |
+
// enable
|
1304 |
+
this.filelist.sortable({
|
1305 |
+
items: '.plupload_delete',
|
1306 |
+
|
1307 |
+
cancel: 'object, .plupload_clearer',
|
1308 |
+
|
1309 |
+
stop: function () {
|
1310 |
+
var files = [];
|
1311 |
+
|
1312 |
+
$.each($(this).sortable('toArray'), function (i, id) {
|
1313 |
+
files[files.length] = self.uploader.getFile(id);
|
1314 |
+
});
|
1315 |
+
|
1316 |
+
files.unshift(files.length);
|
1317 |
+
files.unshift(0);
|
1318 |
+
|
1319 |
+
// re-populate files array
|
1320 |
+
Array.prototype.splice.apply(self.uploader.files, files);
|
1321 |
+
}
|
1322 |
+
});
|
1323 |
+
}
|
1324 |
+
});
|
1325 |
+
|
1326 |
+
}(window, document, plupload, moxie, jQuery));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/global/plugins/pluploader/js/plupload.full.min.js
CHANGED
@@ -10,20 +10,20 @@
|
|
10 |
*
|
11 |
* Date: 2017-02-02
|
12 |
*/
|
13 |
-
!function(e,t){var i=function(){var e={};return t.apply(e,arguments),e.moxie};"function"==typeof define&&define.amd?define("moxie",[],i):"object"==typeof module&&module.exports?module.exports=i():e.moxie=i()}(this||window,function(){!function(e,t){"use strict";function i(e,t){for(var i,n=[],r=0;r<e.length;++r){if(i=s[e[r]]||o(e[r]),!i)throw"module definition dependecy not found: "+e[r];n.push(i)}t.apply(null,n)}function n(e,n,r){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(n===t)throw"invalid module definition, dependencies must be specified";if(r===t)throw"invalid module definition, definition function must be specified";i(n,function(){s[e]=r.apply(null,arguments)})}function r(e){return!!s[e]}function o(t){for(var i=e,n=t.split(/[.\/]/),r=0;r<n.length;++r){if(!i[n[r]])return;i=i[n[r]]}return i}function a(i){for(var n=0;n<i.length;n++){for(var r=e,o=i[n],a=o.split(/[.\/]/),u=0;u<a.length-1;++u)r[a[u]]===t&&(r[a[u]]={}),r=r[a[u]];r[a[a.length-1]]=s[o]}}var s={};n("moxie/core/utils/Basic",[],function(){function e(e){var t;return e===t?"undefined":null===e?"null":e.nodeType?"node":{}.toString.call(e).match(/\s([a-z|A-Z]+)/)[1].toLowerCase()}function t(){return a(!1,!1,arguments)}function i(){return a(!0,!1,arguments)}function n(){return a(!1,!0,arguments)}function r(){return a(!0,!0,arguments)}function o(i){switch(e(i)){case"array":return Array.prototype.slice.call(i);case"object":return t({},i)}return i}function a(t,i,n){var r,s=n[0];return u(n,function(n,c){c>0&&u(n,function(n,u){var c=-1!==m(e(n),["array","object"]);return n===r||t&&s[u]===r?!0:(c&&i&&(n=o(n)),e(s[u])===e(n)&&c?a(t,i,[s[u],n]):s[u]=n,void 0)})}),s}function s(e,t){function i(){this.constructor=e}for(var n in t)({}).hasOwnProperty.call(t,n)&&(e[n]=t[n]);return i.prototype=t.prototype,e.prototype=new i,e.__parent__=t.prototype,e}function u(e,t){var i,n,r,o;if(e){try{i=e.length}catch(a){i=o}if(i===o||"number"!=typeof i){for(n in e)if(e.hasOwnProperty(n)&&t(e[n],n)===!1)return}else for(r=0;i>r;r++)if(t(e[r],r)===!1)return}}function c(t){var i;if(!t||"object"!==e(t))return!0;for(i in t)return!1;return!0}function l(t,i){function n(r){"function"===e(t[r])&&t[r](function(e){++r<o&&!e?n(r):i(e)})}var r=0,o=t.length;"function"!==e(i)&&(i=function(){}),t&&t.length||i(),n(r)}function d(e,t){var i=0,n=e.length,r=new Array(n);u(e,function(e,o){e(function(e){if(e)return t(e);var a=[].slice.call(arguments);a.shift(),r[o]=a,i++,i===n&&(r.unshift(null),t.apply(this,r))})})}function m(e,t){if(t){if(Array.prototype.indexOf)return Array.prototype.indexOf.call(t,e);for(var i=0,n=t.length;n>i;i++)if(t[i]===e)return i}return-1}function h(t,i){var n=[];"array"!==e(t)&&(t=[t]),"array"!==e(i)&&(i=[i]);for(var r in t)-1===m(t[r],i)&&n.push(t[r]);return n.length?n:!1}function f(e,t){var i=[];return u(e,function(e){-1!==m(e,t)&&i.push(e)}),i.length?i:null}function p(e){var t,i=[];for(t=0;t<e.length;t++)i[t]=e[t];return i}function g(e){return e?String.prototype.trim?String.prototype.trim.call(e):e.toString().replace(/^\s*/,"").replace(/\s*$/,""):e}function x(e){if("string"!=typeof e)return e;var t,i={t:1099511627776,g:1073741824,m:1048576,k:1024};return e=/^([0-9\.]+)([tmgk]?)$/.exec(e.toLowerCase().replace(/[^0-9\.tmkg]/g,"")),t=e[2],e=+e[1],i.hasOwnProperty(t)&&(e*=i[t]),Math.floor(e)}function v(t){var i=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=i.shift();return"undefined"!==e(t)?t:""})}function w(e,t){var i=this;setTimeout(function(){e.call(i)},t||1)}var y=function(){var e=0;return function(t){var i,n=(new Date).getTime().toString(32);for(i=0;5>i;i++)n+=Math.floor(65535*Math.random()).toString(32);return(t||"o_")+n+(e++).toString(32)}}();return{guid:y,typeOf:e,extend:t,extendIf:i,extendImmutable:n,extendImmutableIf:r,inherit:s,each:u,isEmptyObj:c,inSeries:l,inParallel:d,inArray:m,arrayDiff:h,arrayIntersect:f,toArray:p,trim:g,sprintf:v,parseSizeStr:x,delay:w}}),n("moxie/core/utils/Encode",[],function(){var e=function(e){return unescape(encodeURIComponent(e))},t=function(e){return decodeURIComponent(escape(e))},i=function(e,i){if("function"==typeof window.atob)return i?t(window.atob(e)):window.atob(e);var n,r,o,a,s,u,c,l,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",m=0,h=0,f="",p=[];if(!e)return e;e+="";do a=d.indexOf(e.charAt(m++)),s=d.indexOf(e.charAt(m++)),u=d.indexOf(e.charAt(m++)),c=d.indexOf(e.charAt(m++)),l=a<<18|s<<12|u<<6|c,n=255&l>>16,r=255&l>>8,o=255&l,p[h++]=64==u?String.fromCharCode(n):64==c?String.fromCharCode(n,r):String.fromCharCode(n,r,o);while(m<e.length);return f=p.join(""),i?t(f):f},n=function(t,i){if(i&&(t=e(t)),"function"==typeof window.btoa)return window.btoa(t);var n,r,o,a,s,u,c,l,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",m=0,h=0,f="",p=[];if(!t)return t;do n=t.charCodeAt(m++),r=t.charCodeAt(m++),o=t.charCodeAt(m++),l=n<<16|r<<8|o,a=63&l>>18,s=63&l>>12,u=63&l>>6,c=63&l,p[h++]=d.charAt(a)+d.charAt(s)+d.charAt(u)+d.charAt(c);while(m<t.length);f=p.join("");var g=t.length%3;return(g?f.slice(0,g-3):f)+"===".slice(g||3)};return{utf8_encode:e,utf8_decode:t,atob:i,btoa:n}}),n("moxie/core/utils/Env",["moxie/core/utils/Basic"],function(e){function t(e,t,i){var n=0,r=0,o=0,a={dev:-6,alpha:-5,a:-5,beta:-4,b:-4,RC:-3,rc:-3,"#":-2,p:1,pl:1},s=function(e){return e=(""+e).replace(/[_\-+]/g,"."),e=e.replace(/([^.\d]+)/g,".$1.").replace(/\.{2,}/g,"."),e.length?e.split("."):[-8]},u=function(e){return e?isNaN(e)?a[e]||-7:parseInt(e,10):0};for(e=s(e),t=s(t),r=Math.max(e.length,t.length),n=0;r>n;n++)if(e[n]!=t[n]){if(e[n]=u(e[n]),t[n]=u(t[n]),e[n]<t[n]){o=-1;break}if(e[n]>t[n]){o=1;break}}if(!i)return o;switch(i){case">":case"gt":return o>0;case">=":case"ge":return o>=0;case"<=":case"le":return 0>=o;case"==":case"=":case"eq":return 0===o;case"<>":case"!=":case"ne":return 0!==o;case"":case"<":case"lt":return 0>o;default:return null}}var i=function(e){var t="",i="?",n="function",r="undefined",o="object",a="name",s="version",u={has:function(e,t){return-1!==t.toLowerCase().indexOf(e.toLowerCase())},lowerize:function(e){return e.toLowerCase()}},c={rgx:function(){for(var t,i,a,s,u,c,l,d=0,m=arguments;d<m.length;d+=2){var h=m[d],f=m[d+1];if(typeof t===r){t={};for(s in f)u=f[s],typeof u===o?t[u[0]]=e:t[u]=e}for(i=a=0;i<h.length;i++)if(c=h[i].exec(this.getUA())){for(s=0;s<f.length;s++)l=c[++a],u=f[s],typeof u===o&&u.length>0?2==u.length?t[u[0]]=typeof u[1]==n?u[1].call(this,l):u[1]:3==u.length?t[u[0]]=typeof u[1]!==n||u[1].exec&&u[1].test?l?l.replace(u[1],u[2]):e:l?u[1].call(this,l,u[2]):e:4==u.length&&(t[u[0]]=l?u[3].call(this,l.replace(u[1],u[2])):e):t[u]=l?l:e;break}if(c)break}return t},str:function(t,n){for(var r in n)if(typeof n[r]===o&&n[r].length>0){for(var a=0;a<n[r].length;a++)if(u.has(n[r][a],t))return r===i?e:r}else if(u.has(n[r],t))return r===i?e:r;return t}},l={browser:{oldsafari:{major:{1:["/8","/1","/3"],2:"/4","?":"/"},version:{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}}},device:{sprint:{model:{"Evo Shift 4G":"7373KT"},vendor:{HTC:"APA",Sprint:"Sprint"}}},os:{windows:{version:{ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2000:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",RT:"ARM"}}}},d={browser:[[/(opera\smini)\/([\w\.-]+)/i,/(opera\s[mobiletab]+).+version\/([\w\.-]+)/i,/(opera).+version\/([\w\.]+)/i,/(opera)[\/\s]+([\w\.]+)/i],[a,s],[/\s(opr)\/([\w\.]+)/i],[[a,"Opera"],s],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]+)*/i,/(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?([\w\.]*)/i,/(?:ms|\()(ie)\s([\w\.]+)/i,/(rekonq)\/([\w\.]+)*/i,/(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi)\/([\w\.-]+)/i],[a,s],[/(trident).+rv[:\s]([\w\.]+).+like\sgecko/i],[[a,"IE"],s],[/(edge)\/((\d+)?[\w\.]+)/i],[a,s],[/(yabrowser)\/([\w\.]+)/i],[[a,"Yandex"],s],[/(comodo_dragon)\/([\w\.]+)/i],[[a,/_/g," "],s],[/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i,/(uc\s?browser|qqbrowser)[\/\s]?([\w\.]+)/i],[a,s],[/(dolfin)\/([\w\.]+)/i],[[a,"Dolphin"],s],[/((?:android.+)crmo|crios)\/([\w\.]+)/i],[[a,"Chrome"],s],[/XiaoMi\/MiuiBrowser\/([\w\.]+)/i],[s,[a,"MIUI Browser"]],[/android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)/i],[s,[a,"Android Browser"]],[/FBAV\/([\w\.]+);/i],[s,[a,"Facebook"]],[/version\/([\w\.]+).+?mobile\/\w+\s(safari)/i],[s,[a,"Mobile Safari"]],[/version\/([\w\.]+).+?(mobile\s?safari|safari)/i],[s,a],[/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i],[a,[s,c.str,l.browser.oldsafari.version]],[/(konqueror)\/([\w\.]+)/i,/(webkit|khtml)\/([\w\.]+)/i],[a,s],[/(navigator|netscape)\/([\w\.-]+)/i],[[a,"Netscape"],s],[/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i,/(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\/([\w\.-]+)/i,/(mozilla)\/([\w\.]+).+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf)[\/\s]?([\w\.]+)/i,/(links)\s\(([\w\.]+)/i,/(gobrowser)\/?([\w\.]+)*/i,/(ice\s?browser)\/v?([\w\._]+)/i,/(mosaic)[\/\s]([\w\.]+)/i],[a,s]],engine:[[/windows.+\sedge\/([\w\.]+)/i],[s,[a,"EdgeHTML"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i,/(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i,/(icab)[\/\s]([23]\.[\d\.]+)/i],[a,s],[/rv\:([\w\.]+).*(gecko)/i],[s,a]],os:[[/microsoft\s(windows)\s(vista|xp)/i],[a,s],[/(windows)\snt\s6\.2;\s(arm)/i,/(windows\sphone(?:\sos)*|windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i],[a,[s,c.str,l.os.windows.version]],[/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i],[[a,"Windows"],[s,c.str,l.os.windows.version]],[/\((bb)(10);/i],[[a,"BlackBerry"],s],[/(blackberry)\w*\/?([\w\.]+)*/i,/(tizen)[\/\s]([\w\.]+)/i,/(android|webos|palm\os|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]+)*/i,/linux;.+(sailfish);/i],[a,s],[/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]+)*/i],[[a,"Symbian"],s],[/\((series40);/i],[a],[/mozilla.+\(mobile;.+gecko.+firefox/i],[[a,"Firefox OS"],s],[/(nintendo|playstation)\s([wids3portablevu]+)/i,/(mint)[\/\s\(]?(\w+)*/i,/(mageia|vectorlinux)[;\s]/i,/(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?([\w\.-]+)*/i,/(hurd|linux)\s?([\w\.]+)*/i,/(gnu)\s?([\w\.]+)*/i],[a,s],[/(cros)\s[\w]+\s([\w\.]+\w)/i],[[a,"Chromium OS"],s],[/(sunos)\s?([\w\.]+\d)*/i],[[a,"Solaris"],s],[/\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]+)*/i],[a,s],[/(ip[honead]+)(?:.*os\s*([\w]+)*\slike\smac|;\sopera)/i],[[a,"iOS"],[s,/_/g,"."]],[/(mac\sos\sx)\s?([\w\s\.]+\w)*/i,/(macintosh|mac(?=_powerpc)\s)/i],[[a,"Mac OS"],[s,/_/g,"."]],[/((?:open)?solaris)[\/\s-]?([\w\.]+)*/i,/(haiku)\s(\w+)/i,/(aix)\s((\d)(?=\.|\)|\s)[\w\.]*)*/i,/(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms)/i,/(unix)\s?([\w\.]+)*/i],[a,s]]},m=function(e){var i=e||(window&&window.navigator&&window.navigator.userAgent?window.navigator.userAgent:t);this.getBrowser=function(){return c.rgx.apply(this,d.browser)},this.getEngine=function(){return c.rgx.apply(this,d.engine)},this.getOS=function(){return c.rgx.apply(this,d.os)},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS()}},this.getUA=function(){return i},this.setUA=function(e){return i=e,this},this.setUA(i)};return m}(),n=function(){var t={define_property:function(){return!1}(),create_canvas:function(){var e=document.createElement("canvas");return!(!e.getContext||!e.getContext("2d"))}(),return_response_type:function(t){try{if(-1!==e.inArray(t,["","text","document"]))return!0;if(window.XMLHttpRequest){var i=new XMLHttpRequest;if(i.open("get","/"),"responseType"in i)return i.responseType=t,i.responseType!==t?!1:!0}}catch(n){}return!1},use_data_uri:function(){var e=new Image;return e.onload=function(){t.use_data_uri=1===e.width&&1===e.height},setTimeout(function(){e.src="data:image/gif;base64,R0lGODlhAQABAIAAAP8AAAAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=="},1),!1}(),use_data_uri_over32kb:function(){return t.use_data_uri&&("IE"!==o.browser||o.version>=9)},use_data_uri_of:function(e){return t.use_data_uri&&33e3>e||t.use_data_uri_over32kb()},use_fileinput:function(){if(navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/))return!1;var e=document.createElement("input");return e.setAttribute("type","file"),!e.disabled}};return function(i){var n=[].slice.call(arguments);return n.shift(),"function"===e.typeOf(t[i])?t[i].apply(this,n):!!t[i]}}(),r=(new i).getResult(),o={can:n,uaParser:i,browser:r.browser.name,version:r.browser.version,os:r.os.name,osVersion:r.os.version,verComp:t,swf_url:"../flash/Moxie.swf",xap_url:"../silverlight/Moxie.xap",global_event_dispatcher:"moxie.core.EventTarget.instance.dispatchEvent"};return o.OS=o.os,o}),n("moxie/core/Exceptions",["moxie/core/utils/Basic"],function(e){function t(e,t){var i;for(i in e)if(e[i]===t)return i;return null}return{RuntimeError:function(){function i(e,i){this.code=e,this.name=t(n,e),this.message=this.name+(i||": RuntimeError "+this.code)}var n={NOT_INIT_ERR:1,EXCEPTION_ERR:3,NOT_SUPPORTED_ERR:9,JS_ERR:4};return e.extend(i,n),i.prototype=Error.prototype,i}(),OperationNotAllowedException:function(){function t(e){this.code=e,this.name="OperationNotAllowedException"}return e.extend(t,{NOT_ALLOWED_ERR:1}),t.prototype=Error.prototype,t}(),ImageError:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": ImageError "+this.code}var n={WRONG_FORMAT:1,MAX_RESOLUTION_ERR:2,INVALID_META_ERR:3};return e.extend(i,n),i.prototype=Error.prototype,i}(),FileException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": FileException "+this.code}var n={NOT_FOUND_ERR:1,SECURITY_ERR:2,ABORT_ERR:3,NOT_READABLE_ERR:4,ENCODING_ERR:5,NO_MODIFICATION_ALLOWED_ERR:6,INVALID_STATE_ERR:7,SYNTAX_ERR:8};return e.extend(i,n),i.prototype=Error.prototype,i}(),DOMException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": DOMException "+this.code}var n={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25};return e.extend(i,n),i.prototype=Error.prototype,i}(),EventException:function(){function t(e){this.code=e,this.name="EventException"}return e.extend(t,{UNSPECIFIED_EVENT_TYPE_ERR:0}),t.prototype=Error.prototype,t}()}}),n("moxie/core/utils/Dom",["moxie/core/utils/Env"],function(e){var t=function(e){return"string"!=typeof e?e:document.getElementById(e)},i=function(e,t){if(!e.className)return!1;var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");return i.test(e.className)},n=function(e,t){i(e,t)||(e.className=e.className?e.className.replace(/\s+$/,"")+" "+t:t)},r=function(e,t){if(e.className){var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");e.className=e.className.replace(i,function(e,t,i){return" "===t&&" "===i?" ":""})}},o=function(e,t){return e.currentStyle?e.currentStyle[t]:window.getComputedStyle?window.getComputedStyle(e,null)[t]:void 0},a=function(t,i){function n(e){var t,i,n=0,r=0;return e&&(i=e.getBoundingClientRect(),t="CSS1Compat"===c.compatMode?c.documentElement:c.body,n=i.left+t.scrollLeft,r=i.top+t.scrollTop),{x:n,y:r}}var r,o,a,s=0,u=0,c=document;if(t=t,i=i||c.body,t&&t.getBoundingClientRect&&"IE"===e.browser&&(!c.documentMode||c.documentMode<8))return o=n(t),a=n(i),{x:o.x-a.x,y:o.y-a.y};for(r=t;r&&r!=i&&r.nodeType;)s+=r.offsetLeft||0,u+=r.offsetTop||0,r=r.offsetParent;for(r=t.parentNode;r&&r!=i&&r.nodeType;)s-=r.scrollLeft||0,u-=r.scrollTop||0,r=r.parentNode;return{x:s,y:u}},s=function(e){return{w:e.offsetWidth||e.clientWidth,h:e.offsetHeight||e.clientHeight}};return{get:t,hasClass:i,addClass:n,removeClass:r,getStyle:o,getPos:a,getSize:s}}),n("moxie/core/EventTarget",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic"],function(e,t,i){function n(){this.uid=i.guid()}var r={};return i.extend(n.prototype,{init:function(){this.uid||(this.uid=i.guid("uid_"))},addEventListener:function(e,t,n,o){var a,s=this;return this.hasOwnProperty("uid")||(this.uid=i.guid("uid_")),e=i.trim(e),/\s/.test(e)?(i.each(e.split(/\s+/),function(e){s.addEventListener(e,t,n,o)}),void 0):(e=e.toLowerCase(),n=parseInt(n,10)||0,a=r[this.uid]&&r[this.uid][e]||[],a.push({fn:t,priority:n,scope:o||this}),r[this.uid]||(r[this.uid]={}),r[this.uid][e]=a,void 0)},hasEventListener:function(e){var t;return e?(e=e.toLowerCase(),t=r[this.uid]&&r[this.uid][e]):t=r[this.uid],t?t:!1},removeEventListener:function(e,t){var n,o,a=this;if(e=e.toLowerCase(),/\s/.test(e))return i.each(e.split(/\s+/),function(e){a.removeEventListener(e,t)}),void 0;if(n=r[this.uid]&&r[this.uid][e]){if(t){for(o=n.length-1;o>=0;o--)if(n[o].fn===t){n.splice(o,1);break}}else n=[];n.length||(delete r[this.uid][e],i.isEmptyObj(r[this.uid])&&delete r[this.uid])}},removeAllEventListeners:function(){r[this.uid]&&delete r[this.uid]},dispatchEvent:function(e){var n,o,a,s,u,c={},l=!0;if("string"!==i.typeOf(e)){if(s=e,"string"!==i.typeOf(s.type))throw new t.EventException(t.EventException.UNSPECIFIED_EVENT_TYPE_ERR);e=s.type,s.total!==u&&s.loaded!==u&&(c.total=s.total,c.loaded=s.loaded),c.async=s.async||!1}if(-1!==e.indexOf("::")?function(t){n=t[0],e=t[1]}(e.split("::")):n=this.uid,e=e.toLowerCase(),o=r[n]&&r[n][e]){o.sort(function(e,t){return t.priority-e.priority}),a=[].slice.call(arguments),a.shift(),c.type=e,a.unshift(c);var d=[];i.each(o,function(e){a[0].target=e.scope,c.async?d.push(function(t){setTimeout(function(){t(e.fn.apply(e.scope,a)===!1)},1)}):d.push(function(t){t(e.fn.apply(e.scope,a)===!1)})}),d.length&&i.inSeries(d,function(e){l=!e})}return l},bindOnce:function(e,t,i,n){var r=this;r.bind.call(this,e,function o(){return r.unbind(e,o),t.apply(this,arguments)},i,n)},bind:function(){this.addEventListener.apply(this,arguments)},unbind:function(){this.removeEventListener.apply(this,arguments)},unbindAll:function(){this.removeAllEventListeners.apply(this,arguments)},trigger:function(){return this.dispatchEvent.apply(this,arguments)},handleEventProps:function(e){var t=this;this.bind(e.join(" "),function(e){var t="on"+e.type.toLowerCase();"function"===i.typeOf(this[t])&&this[t].apply(this,arguments)}),i.each(e,function(e){e="on"+e.toLowerCase(e),"undefined"===i.typeOf(t[e])&&(t[e]=null)})}}),n.instance=new n,n}),n("moxie/runtime/Runtime",["moxie/core/utils/Env","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/EventTarget"],function(e,t,i,n){function r(e,n,o,s,u){var c,l=this,d=t.guid(n+"_"),m=u||"browser";e=e||{},a[d]=this,o=t.extend({access_binary:!1,access_image_binary:!1,display_media:!1,do_cors:!1,drag_and_drop:!1,filter_by_extension:!0,resize_image:!1,report_upload_progress:!1,return_response_headers:!1,return_response_type:!1,return_status_code:!0,send_custom_headers:!1,select_file:!1,select_folder:!1,select_multiple:!0,send_binary_string:!1,send_browser_cookies:!0,send_multipart:!0,slice_blob:!1,stream_upload:!1,summon_file_dialog:!1,upload_filesize:!0,use_http_method:!0},o),e.preferred_caps&&(m=r.getMode(s,e.preferred_caps,m)),c=function(){var e={};return{exec:function(t,i,n,r){return c[i]&&(e[t]||(e[t]={context:this,instance:new c[i]}),e[t].instance[n])?e[t].instance[n].apply(this,r):void 0},removeInstance:function(t){delete e[t]},removeAllInstances:function(){var i=this;t.each(e,function(e,n){"function"===t.typeOf(e.instance.destroy)&&e.instance.destroy.call(e.context),i.removeInstance(n)})}}}(),t.extend(this,{initialized:!1,uid:d,type:n,mode:r.getMode(s,e.required_caps,m),shimid:d+"_container",clients:0,options:e,can:function(e,i){var n=arguments[2]||o;if("string"===t.typeOf(e)&&"undefined"===t.typeOf(i)&&(e=r.parseCaps(e)),"object"===t.typeOf(e)){for(var a in e)if(!this.can(a,e[a],n))return!1;return!0}return"function"===t.typeOf(n[e])?n[e].call(this,i):i===n[e]},getShimContainer:function(){var e,n=i.get(this.shimid);return n||(e=i.get(this.options.container)||document.body,n=document.createElement("div"),n.id=this.shimid,n.className="moxie-shim moxie-shim-"+this.type,t.extend(n.style,{position:"absolute",top:"0px",left:"0px",width:"1px",height:"1px",overflow:"hidden"}),e.appendChild(n),e=null),n},getShim:function(){return c},shimExec:function(e,t){var i=[].slice.call(arguments,2);return l.getShim().exec.call(this,this.uid,e,t,i)},exec:function(e,t){var i=[].slice.call(arguments,2);return l[e]&&l[e][t]?l[e][t].apply(this,i):l.shimExec.apply(this,arguments)},destroy:function(){if(l){var e=i.get(this.shimid);e&&e.parentNode.removeChild(e),c&&c.removeAllInstances(),this.unbindAll(),delete a[this.uid],this.uid=null,d=l=c=e=null}}}),this.mode&&e.required_caps&&!this.can(e.required_caps)&&(this.mode=!1)}var o={},a={};return r.order="html5,flash,silverlight,html4",r.getRuntime=function(e){return a[e]?a[e]:!1},r.addConstructor=function(e,t){t.prototype=n.instance,o[e]=t},r.getConstructor=function(e){return o[e]||null},r.getInfo=function(e){var t=r.getRuntime(e);return t?{uid:t.uid,type:t.type,mode:t.mode,can:function(){return t.can.apply(t,arguments)}}:null},r.parseCaps=function(e){var i={};return"string"!==t.typeOf(e)?e||{}:(t.each(e.split(","),function(e){i[e]=!0}),i)},r.can=function(e,t){var i,n,o=r.getConstructor(e);return o?(i=new o({required_caps:t}),n=i.mode,i.destroy(),!!n):!1},r.thatCan=function(e,t){var i=(t||r.order).split(/\s*,\s*/);for(var n in i)if(r.can(i[n],e))return i[n];return null},r.getMode=function(e,i,n){var r=null;if("undefined"===t.typeOf(n)&&(n="browser"),i&&!t.isEmptyObj(e)){if(t.each(i,function(i,n){if(e.hasOwnProperty(n)){var o=e[n](i);if("string"==typeof o&&(o=[o]),r){if(!(r=t.arrayIntersect(r,o)))return r=!1}else r=o}}),r)return-1!==t.inArray(n,r)?n:r[0];if(r===!1)return!1}return n},r.capTrue=function(){return!0},r.capFalse=function(){return!1},r.capTest=function(e){return function(){return!!e}},r}),n("moxie/runtime/RuntimeClient",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/Runtime"],function(e,t,i,n){return function(){var e;i.extend(this,{connectRuntime:function(r){function o(i){var a,u;return i.length?(a=i.shift().toLowerCase(),(u=n.getConstructor(a))?(e=new u(r),e.bind("Init",function(){e.initialized=!0,setTimeout(function(){e.clients++,s.ruid=e.uid,s.trigger("RuntimeInit",e)},1)}),e.bind("Error",function(){e.destroy(),o(i)}),e.bind("Exception",function(e,i){var n=i.name+"(#"+i.code+")"+(i.message?", from: "+i.message:"");s.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.EXCEPTION_ERR,n))}),e.mode?(e.init(),void 0):(e.trigger("Error"),void 0)):(o(i),void 0)):(s.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)),e=null,void 0)}var a,s=this;if("string"===i.typeOf(r)?a=r:"string"===i.typeOf(r.ruid)&&(a=r.ruid),a){if(e=n.getRuntime(a))return s.ruid=a,e.clients++,e;throw new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)}o((r.runtime_order||n.order).split(/\s*,\s*/))},disconnectRuntime:function(){e&&--e.clients<=0&&e.destroy(),e=null},getRuntime:function(){return e&&e.uid?e:e=null},exec:function(){return e?e.exec.apply(this,arguments):null},can:function(t){return e?e.can(t):!1}})}}),n("moxie/file/Blob",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient"],function(e,t,i){function n(o,a){function s(t,i,o){var a,s=r[this.uid];return"string"===e.typeOf(s)&&s.length?(a=new n(null,{type:o,size:i-t}),a.detach(s.substr(t,a.size)),a):null}i.call(this),o&&this.connectRuntime(o),a?"string"===e.typeOf(a)&&(a={data:a}):a={},e.extend(this,{uid:a.uid||e.guid("uid_"),ruid:o,size:a.size||0,type:a.type||"",slice:function(e,t,i){return this.isDetached()?s.apply(this,arguments):this.getRuntime().exec.call(this,"Blob","slice",this.getSource(),e,t,i)},getSource:function(){return r[this.uid]?r[this.uid]:null},detach:function(e){if(this.ruid&&(this.getRuntime().exec.call(this,"Blob","destroy"),this.disconnectRuntime(),this.ruid=null),e=e||"","data:"==e.substr(0,5)){var i=e.indexOf(";base64,");this.type=e.substring(5,i),e=t.atob(e.substring(i+8))}this.size=e.length,r[this.uid]=e},isDetached:function(){return!this.ruid&&"string"===e.typeOf(r[this.uid])},destroy:function(){this.detach(),delete r[this.uid]}}),a.data?this.detach(a.data):r[this.uid]=a}var r={};return n}),n("moxie/core/I18n",["moxie/core/utils/Basic"],function(e){var t={};return{addI18n:function(i){return e.extend(t,i)},translate:function(e){return t[e]||e},_:function(e){return this.translate(e)},sprintf:function(t){var i=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=i.shift();return"undefined"!==e.typeOf(t)?t:""})}}}),n("moxie/core/utils/Mime",["moxie/core/utils/Basic","moxie/core/I18n"],function(e,t){var i="application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mp3 mpga mpega mp2,audio/x-wav,wav,audio/x-m4a,m4a,audio/ogg,oga ogg,audio/aiff,aiff aif,audio/flac,flac,audio/aac,aac,audio/ac3,ac3,audio/x-ms-wma,wma,image/bmp,bmp,image/gif,gif,image/jpeg,jpg jpeg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gpp 3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,video/ogg,ogv,video/x-matroska,mkv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe",n={mimes:{},extensions:{},addMimeType:function(e){var t,i,n,r=e.split(/,/);for(t=0;t<r.length;t+=2){for(n=r[t+1].split(/ /),i=0;i<n.length;i++)this.mimes[n[i]]=r[t];this.extensions[r[t]]=n}},extList2mimes:function(t,i){var n,r,o,a,s=this,u=[];for(r=0;r<t.length;r++)for(n=t[r].extensions.toLowerCase().split(/\s*,\s*/),o=0;o<n.length;o++){if("*"===n[o])return[];if(a=s.mimes[n[o]],i&&/^\w+$/.test(n[o]))u.push("."+n[o]);else if(a&&-1===e.inArray(a,u))u.push(a);else if(!a)return[]}return u},mimes2exts:function(t){var i=this,n=[];return e.each(t,function(t){if(t=t.toLowerCase(),"*"===t)return n=[],!1;var r=t.match(/^(\w+)\/(\*|\w+)$/);r&&("*"===r[2]?e.each(i.extensions,function(e,t){new RegExp("^"+r[1]+"/").test(t)&&[].push.apply(n,i.extensions[t])}):i.extensions[t]&&[].push.apply(n,i.extensions[t]))}),n},mimes2extList:function(i){var n=[],r=[];return"string"===e.typeOf(i)&&(i=e.trim(i).split(/\s*,\s*/)),r=this.mimes2exts(i),n.push({title:t.translate("Files"),extensions:r.length?r.join(","):"*"}),n.mimes=i,n},getFileExtension:function(e){var t=e&&e.match(/\.([^.]+)$/);return t?t[1].toLowerCase():""},getFileMime:function(e){return this.mimes[this.getFileExtension(e)]||""}};return n.addMimeType(i),n}),n("moxie/file/FileInput",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Mime","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/I18n","moxie/runtime/Runtime","moxie/runtime/RuntimeClient"],function(e,t,i,n,r,o,a,s,u){function c(t){var o,c,d;if(-1!==e.inArray(e.typeOf(t),["string","node"])&&(t={browse_button:t}),c=n.get(t.browse_button),!c)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR);d={accept:[{title:a.translate("All Files"),extensions:"*"}],multiple:!1,required_caps:!1,container:c.parentNode||document.body},t=e.extend({},d,t),"string"==typeof t.required_caps&&(t.required_caps=s.parseCaps(t.required_caps)),"string"==typeof t.accept&&(t.accept=i.mimes2extList(t.accept)),o=n.get(t.container),o||(o=document.body),"static"===n.getStyle(o,"position")&&(o.style.position="relative"),o=c=null,u.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,shimid:null,files:null,init:function(){var i=this;i.bind("RuntimeInit",function(r,o){i.ruid=o.uid,i.shimid=o.shimid,i.bind("Ready",function(){i.trigger("Refresh")},999),i.bind("Refresh",function(){var i,r,a,s,u;a=n.get(t.browse_button),s=n.get(o.shimid),a&&(i=n.getPos(a,n.get(t.container)),r=n.getSize(a),u=parseInt(n.getStyle(a,"z-index"),10)||0,s&&e.extend(s.style,{top:i.y+"px",left:i.x+"px",width:r.w+"px",height:r.h+"px",zIndex:u+1})),s=a=null}),o.exec.call(i,"FileInput","init",t)}),i.connectRuntime(e.extend({},t,{required_caps:{select_file:!0}}))},getOption:function(e){return t[e]},setOption:function(e,n){if(t.hasOwnProperty(e)){var o=t[e];switch(e){case"accept":"string"==typeof n&&(n=i.mimes2extList(n));break;case"container":case"required_caps":throw new r.FileException(r.FileException.NO_MODIFICATION_ALLOWED_ERR)}t[e]=n,this.exec("FileInput","setOption",e,n),this.trigger("OptionChanged",e,n,o)}},disable:function(t){var i=this.getRuntime();i&&this.exec("FileInput","disable","undefined"===e.typeOf(t)?!0:t)},refresh:function(){this.trigger("Refresh")},destroy:function(){var t=this.getRuntime();t&&(t.exec.call(this,"FileInput","destroy"),this.disconnectRuntime()),"array"===e.typeOf(this.files)&&e.each(this.files,function(e){e.destroy()}),this.files=null,this.unbindAll()}}),this.handleEventProps(l)}var l=["ready","change","cancel","mouseenter","mouseleave","mousedown","mouseup"];return c.prototype=o.instance,c}),n("moxie/file/File",["moxie/core/utils/Basic","moxie/core/utils/Mime","moxie/file/Blob"],function(e,t,i){function n(n,r){r||(r={}),i.apply(this,arguments),this.type||(this.type=t.getFileMime(r.name));var o;if(r.name)o=r.name.replace(/\\/g,"/"),o=o.substr(o.lastIndexOf("/")+1);else if(this.type){var a=this.type.split("/")[0];o=e.guid((""!==a?a:"file")+"_"),t.extensions[this.type]&&(o+="."+t.extensions[this.type][0])}e.extend(this,{name:o||e.guid("file_"),relativePath:"",lastModifiedDate:r.lastModifiedDate||(new Date).toLocaleString()})}return n.prototype=i.prototype,n}),n("moxie/file/FileDrop",["moxie/core/I18n","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/core/utils/Basic","moxie/core/utils/Env","moxie/file/File","moxie/runtime/RuntimeClient","moxie/core/EventTarget","moxie/core/utils/Mime"],function(e,t,i,n,r,o,a,s,u){function c(i){var r,o=this;"string"==typeof i&&(i={drop_zone:i}),r={accept:[{title:e.translate("All Files"),extensions:"*"}],required_caps:{drag_and_drop:!0}},i="object"==typeof i?n.extend({},r,i):r,i.container=t.get(i.drop_zone)||document.body,"static"===t.getStyle(i.container,"position")&&(i.container.style.position="relative"),"string"==typeof i.accept&&(i.accept=u.mimes2extList(i.accept)),a.call(o),n.extend(o,{uid:n.guid("uid_"),ruid:null,files:null,init:function(){o.bind("RuntimeInit",function(e,t){o.ruid=t.uid,t.exec.call(o,"FileDrop","init",i),o.dispatchEvent("ready")}),o.connectRuntime(i)},destroy:function(){var e=this.getRuntime();e&&(e.exec.call(this,"FileDrop","destroy"),this.disconnectRuntime()),this.files=null,this.unbindAll()}}),this.handleEventProps(l)}var l=["ready","dragenter","dragleave","drop","error"];return c.prototype=s.instance,c}),n("moxie/file/FileReader",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/core/Exceptions","moxie/core/EventTarget","moxie/file/Blob","moxie/runtime/RuntimeClient"],function(e,t,i,n,r,o){function a(){function n(e,n){if(this.trigger("loadstart"),this.readyState===a.LOADING)return this.trigger("error",new i.DOMException(i.DOMException.INVALID_STATE_ERR)),this.trigger("loadend"),void 0;
|
14 |
-
if(!(n instanceof r))return this.trigger("error",new i.DOMException(i.DOMException.NOT_FOUND_ERR)),this.trigger("loadend"),void 0;if(this.result=null,this.readyState=a.LOADING,n.isDetached()){var o=n.getSource();switch(e){case"readAsText":case"readAsBinaryString":this.result=o;break;case"readAsDataURL":this.result="data:"+n.type+";base64,"+t.btoa(o)}this.readyState=a.DONE,this.trigger("load"),this.trigger("loadend")}else this.connectRuntime(n.ruid),this.exec("FileReader","read",e,n)}o.call(this),e.extend(this,{uid:e.guid("uid_"),readyState:a.EMPTY,result:null,error:null,readAsBinaryString:function(e){n.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){n.call(this,"readAsDataURL",e)},readAsText:function(e){n.call(this,"readAsText",e)},abort:function(){this.result=null,-1===e.inArray(this.readyState,[a.EMPTY,a.DONE])&&(this.readyState===a.LOADING&&(this.readyState=a.DONE),this.exec("FileReader","abort"),this.trigger("abort"),this.trigger("loadend"))},destroy:function(){this.abort(),this.exec("FileReader","destroy"),this.disconnectRuntime(),this.unbindAll()}}),this.handleEventProps(s),this.bind("Error",function(e,t){this.readyState=a.DONE,this.error=t},999),this.bind("Load",function(){this.readyState=a.DONE},999)}var s=["loadstart","progress","load","abort","error","loadend"];return a.EMPTY=0,a.LOADING=1,a.DONE=2,a.prototype=n.instance,a}),n("moxie/core/utils/Url",["moxie/core/utils/Basic"],function(e){var t=function(i,n){var r,o=["source","scheme","authority","userInfo","user","pass","host","port","relative","path","directory","file","query","fragment"],a=o.length,s={http:80,https:443},u={},c=/^(?:([^:\/?#]+):)?(?:\/\/()(?:(?:()(?:([^:@\/]*):?([^:@\/]*))?@)?(\[[\da-fA-F:]+\]|[^:\/?#]*)(?::(\d*))?))?()(?:(()(?:(?:[^?#\/]*\/)*)()(?:[^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,l=c.exec(i||""),d=/^\/\/\w/.test(i);switch(e.typeOf(n)){case"undefined":n=t(document.location.href,!1);break;case"string":n=t(n,!1)}for(;a--;)l[a]&&(u[o[a]]=l[a]);if(r=!d&&!u.scheme,(d||r)&&(u.scheme=n.scheme),r){u.host=n.host,u.port=n.port;var m="";/^[^\/]/.test(u.path)&&(m=n.path,m=/\/[^\/]*\.[^\/]*$/.test(m)?m.replace(/\/[^\/]+$/,"/"):m.replace(/\/?$/,"/")),u.path=m+(u.path||"")}return u.port||(u.port=s[u.scheme]||80),u.port=parseInt(u.port,10),u.path||(u.path="/"),delete u.source,u},i=function(e){var i={http:80,https:443},n="object"==typeof e?e:t(e);return n.scheme+"://"+n.host+(n.port!==i[n.scheme]?":"+n.port:"")+n.path+(n.query?n.query:"")},n=function(e){function i(e){return[e.scheme,e.host,e.port].join("/")}return"string"==typeof e&&(e=t(e)),i(t())===i(e)};return{parseUrl:t,resolveUrl:i,hasSameOrigin:n}}),n("moxie/runtime/RuntimeTarget",["moxie/core/utils/Basic","moxie/runtime/RuntimeClient","moxie/core/EventTarget"],function(e,t,i){function n(){this.uid=e.guid("uid_"),t.call(this),this.destroy=function(){this.disconnectRuntime(),this.unbindAll()}}return n.prototype=i.instance,n}),n("moxie/file/FileReaderSync",["moxie/core/utils/Basic","moxie/runtime/RuntimeClient","moxie/core/utils/Encode"],function(e,t,i){return function(){function n(e,t){if(!t.isDetached()){var n=this.connectRuntime(t.ruid).exec.call(this,"FileReaderSync","read",e,t);return this.disconnectRuntime(),n}var r=t.getSource();switch(e){case"readAsBinaryString":return r;case"readAsDataURL":return"data:"+t.type+";base64,"+i.btoa(r);case"readAsText":for(var o="",a=0,s=r.length;s>a;a++)o+=String.fromCharCode(r[a]);return o}}t.call(this),e.extend(this,{uid:e.guid("uid_"),readAsBinaryString:function(e){return n.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){return n.call(this,"readAsDataURL",e)},readAsText:function(e){return n.call(this,"readAsText",e)}})}}),n("moxie/xhr/FormData",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/file/Blob"],function(e,t,i){function n(){var e,n=[];t.extend(this,{append:function(r,o){var a=this,s=t.typeOf(o);o instanceof i?e={name:r,value:o}:"array"===s?(r+="[]",t.each(o,function(e){a.append(r,e)})):"object"===s?t.each(o,function(e,t){a.append(r+"["+t+"]",e)}):"null"===s||"undefined"===s||"number"===s&&isNaN(o)?a.append(r,"false"):n.push({name:r,value:o.toString()})},hasBlob:function(){return!!this.getBlob()},getBlob:function(){return e&&e.value||null},getBlobName:function(){return e&&e.name||null},each:function(i){t.each(n,function(e){i(e.value,e.name)}),e&&i(e.value,e.name)},destroy:function(){e=null,n=[]}})}return n}),n("moxie/xhr/XMLHttpRequest",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/utils/Encode","moxie/core/utils/Url","moxie/runtime/Runtime","moxie/runtime/RuntimeTarget","moxie/file/Blob","moxie/file/FileReaderSync","moxie/xhr/FormData","moxie/core/utils/Env","moxie/core/utils/Mime"],function(e,t,i,n,r,o,a,s,u,c,l,d){function m(){this.uid=e.guid("uid_")}function h(){function i(e,t){return I.hasOwnProperty(e)?1===arguments.length?l.can("define_property")?I[e]:A[e]:(l.can("define_property")?I[e]=t:A[e]=t,void 0):void 0}function u(t){function n(){R&&(R.destroy(),R=null),s.dispatchEvent("loadend"),s=null}function r(r){R.bind("LoadStart",function(e){i("readyState",h.LOADING),s.dispatchEvent("readystatechange"),s.dispatchEvent(e),L&&s.upload.dispatchEvent(e)}),R.bind("Progress",function(e){i("readyState")!==h.LOADING&&(i("readyState",h.LOADING),s.dispatchEvent("readystatechange")),s.dispatchEvent(e)}),R.bind("UploadProgress",function(e){L&&s.upload.dispatchEvent({type:"progress",lengthComputable:!1,total:e.total,loaded:e.loaded})}),R.bind("Load",function(t){i("readyState",h.DONE),i("status",Number(r.exec.call(R,"XMLHttpRequest","getStatus")||0)),i("statusText",f[i("status")]||""),i("response",r.exec.call(R,"XMLHttpRequest","getResponse",i("responseType"))),~e.inArray(i("responseType"),["text",""])?i("responseText",i("response")):"document"===i("responseType")&&i("responseXML",i("response")),U=r.exec.call(R,"XMLHttpRequest","getAllResponseHeaders"),s.dispatchEvent("readystatechange"),i("status")>0?(L&&s.upload.dispatchEvent(t),s.dispatchEvent(t)):(F=!0,s.dispatchEvent("error")),n()}),R.bind("Abort",function(e){s.dispatchEvent(e),n()}),R.bind("Error",function(e){F=!0,i("readyState",h.DONE),s.dispatchEvent("readystatechange"),M=!0,s.dispatchEvent(e),n()}),r.exec.call(R,"XMLHttpRequest","send",{url:x,method:v,async:T,user:w,password:y,headers:S,mimeType:D,encoding:O,responseType:s.responseType,withCredentials:s.withCredentials,options:k},t)}var s=this;E=(new Date).getTime(),R=new a,"string"==typeof k.required_caps&&(k.required_caps=o.parseCaps(k.required_caps)),k.required_caps=e.extend({},k.required_caps,{return_response_type:s.responseType}),t instanceof c&&(k.required_caps.send_multipart=!0),e.isEmptyObj(S)||(k.required_caps.send_custom_headers=!0),B||(k.required_caps.do_cors=!0),k.ruid?r(R.connectRuntime(k)):(R.bind("RuntimeInit",function(e,t){r(t)}),R.bind("RuntimeError",function(e,t){s.dispatchEvent("RuntimeError",t)}),R.connectRuntime(k))}function g(){i("responseText",""),i("responseXML",null),i("response",null),i("status",0),i("statusText",""),E=b=null}var x,v,w,y,E,b,R,_,A=this,I={timeout:0,readyState:h.UNSENT,withCredentials:!1,status:0,statusText:"",responseType:"",responseXML:null,responseText:null,response:null},T=!0,S={},O=null,D=null,N=!1,C=!1,L=!1,M=!1,F=!1,B=!1,P=null,H=null,k={},U="";e.extend(this,I,{uid:e.guid("uid_"),upload:new m,open:function(o,a,s,u,c){var l;if(!o||!a)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(/[\u0100-\uffff]/.test(o)||n.utf8_encode(o)!==o)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(~e.inArray(o.toUpperCase(),["CONNECT","DELETE","GET","HEAD","OPTIONS","POST","PUT","TRACE","TRACK"])&&(v=o.toUpperCase()),~e.inArray(v,["CONNECT","TRACE","TRACK"]))throw new t.DOMException(t.DOMException.SECURITY_ERR);if(a=n.utf8_encode(a),l=r.parseUrl(a),B=r.hasSameOrigin(l),x=r.resolveUrl(a),(u||c)&&!B)throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);if(w=u||l.user,y=c||l.pass,T=s||!0,T===!1&&(i("timeout")||i("withCredentials")||""!==i("responseType")))throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);N=!T,C=!1,S={},g.call(this),i("readyState",h.OPENED),this.dispatchEvent("readystatechange")},setRequestHeader:function(r,o){var a=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","content-transfer-encoding","date","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"];if(i("readyState")!==h.OPENED||C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(/[\u0100-\uffff]/.test(r)||n.utf8_encode(r)!==r)throw new t.DOMException(t.DOMException.SYNTAX_ERR);return r=e.trim(r).toLowerCase(),~e.inArray(r,a)||/^(proxy\-|sec\-)/.test(r)?!1:(S[r]?S[r]+=", "+o:S[r]=o,!0)},hasRequestHeader:function(e){return e&&S[e.toLowerCase()]||!1},getAllResponseHeaders:function(){return U||""},getResponseHeader:function(t){return t=t.toLowerCase(),F||~e.inArray(t,["set-cookie","set-cookie2"])?null:U&&""!==U&&(_||(_={},e.each(U.split(/\r\n/),function(t){var i=t.split(/:\s+/);2===i.length&&(i[0]=e.trim(i[0]),_[i[0].toLowerCase()]={header:i[0],value:e.trim(i[1])})})),_.hasOwnProperty(t))?_[t].header+": "+_[t].value:null},overrideMimeType:function(n){var r,o;if(~e.inArray(i("readyState"),[h.LOADING,h.DONE]))throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(n=e.trim(n.toLowerCase()),/;/.test(n)&&(r=n.match(/^([^;]+)(?:;\scharset\=)?(.*)$/))&&(n=r[1],r[2]&&(o=r[2])),!d.mimes[n])throw new t.DOMException(t.DOMException.SYNTAX_ERR);P=n,H=o},send:function(i,r){if(k="string"===e.typeOf(r)?{ruid:r}:r?r:{},this.readyState!==h.OPENED||C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(i instanceof s)k.ruid=i.ruid,D=i.type||"application/octet-stream";else if(i instanceof c){if(i.hasBlob()){var o=i.getBlob();k.ruid=o.ruid,D=o.type||"application/octet-stream"}}else"string"==typeof i&&(O="UTF-8",D="text/plain;charset=UTF-8",i=n.utf8_encode(i));this.withCredentials||(this.withCredentials=k.required_caps&&k.required_caps.send_browser_cookies&&!B),L=!N&&this.upload.hasEventListener(),F=!1,M=!i,N||(C=!0),u.call(this,i)},abort:function(){if(F=!0,N=!1,~e.inArray(i("readyState"),[h.UNSENT,h.OPENED,h.DONE]))i("readyState",h.UNSENT);else{if(i("readyState",h.DONE),C=!1,!R)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);R.getRuntime().exec.call(R,"XMLHttpRequest","abort",M),M=!0}},destroy:function(){R&&("function"===e.typeOf(R.destroy)&&R.destroy(),R=null),this.unbindAll(),this.upload&&(this.upload.unbindAll(),this.upload=null)}}),this.handleEventProps(p.concat(["readystatechange"])),this.upload.handleEventProps(p)}var f={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",306:"Reserved",307:"Temporary Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",426:"Upgrade Required",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",510:"Not Extended"};m.prototype=i.instance;var p=["loadstart","progress","abort","error","load","timeout","loadend"];return h.UNSENT=0,h.OPENED=1,h.HEADERS_RECEIVED=2,h.LOADING=3,h.DONE=4,h.prototype=i.instance,h}),n("moxie/runtime/Transporter",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient","moxie/core/EventTarget"],function(e,t,i,n){function r(){function n(){l=d=0,c=this.result=null}function o(t,i){var n=this;u=i,n.bind("TransportingProgress",function(t){d=t.loaded,l>d&&-1===e.inArray(n.state,[r.IDLE,r.DONE])&&a.call(n)},999),n.bind("TransportingComplete",function(){d=l,n.state=r.DONE,c=null,n.result=u.exec.call(n,"Transporter","getAsBlob",t||"")},999),n.state=r.BUSY,n.trigger("TransportingStarted"),a.call(n)}function a(){var e,i=this,n=l-d;m>n&&(m=n),e=t.btoa(c.substr(d,m)),u.exec.call(i,"Transporter","receive",e,l)}var s,u,c,l,d,m;i.call(this),e.extend(this,{uid:e.guid("uid_"),state:r.IDLE,result:null,transport:function(t,i,r){var a=this;if(r=e.extend({chunk_size:204798},r),(s=r.chunk_size%3)&&(r.chunk_size+=3-s),m=r.chunk_size,n.call(this),c=t,l=t.length,"string"===e.typeOf(r)||r.ruid)o.call(a,i,this.connectRuntime(r));else{var u=function(e,t){a.unbind("RuntimeInit",u),o.call(a,i,t)};this.bind("RuntimeInit",u),this.connectRuntime(r)}},abort:function(){var e=this;e.state=r.IDLE,u&&(u.exec.call(e,"Transporter","clear"),e.trigger("TransportingAborted")),n.call(e)},destroy:function(){this.unbindAll(),u=null,this.disconnectRuntime(),n.call(this)}})}return r.IDLE=0,r.BUSY=1,r.DONE=2,r.prototype=n.instance,r}),n("moxie/image/Image",["moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/file/FileReaderSync","moxie/xhr/XMLHttpRequest","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/runtime/Transporter","moxie/core/utils/Env","moxie/core/EventTarget","moxie/file/Blob","moxie/file/File","moxie/core/utils/Encode"],function(e,t,i,n,r,o,a,s,u,c,l,d,m){function h(){function n(e){try{return e||(e=this.exec("Image","getInfo")),this.size=e.size,this.width=e.width,this.height=e.height,this.type=e.type,this.meta=e.meta,""===this.name&&(this.name=e.name),!0}catch(t){return this.trigger("error",t.code),!1}}function c(t){var n=e.typeOf(t);try{if(t instanceof h){if(!t.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);p.apply(this,arguments)}else if(t instanceof l){if(!~e.inArray(t.type,["image/jpeg","image/png"]))throw new i.ImageError(i.ImageError.WRONG_FORMAT);g.apply(this,arguments)}else if(-1!==e.inArray(n,["blob","file"]))c.call(this,new d(null,t),arguments[1]);else if("string"===n)"data:"===t.substr(0,5)?c.call(this,new l(null,{data:t}),arguments[1]):x.apply(this,arguments);else{if("node"!==n||"img"!==t.nodeName.toLowerCase())throw new i.DOMException(i.DOMException.TYPE_MISMATCH_ERR);c.call(this,t.src,arguments[1])}}catch(r){this.trigger("error",r.code)}}function p(t,i){var n=this.connectRuntime(t.ruid);this.ruid=n.uid,n.exec.call(this,"Image","loadFromImage",t,"undefined"===e.typeOf(i)?!0:i)}function g(t,i){function n(e){r.ruid=e.uid,e.exec.call(r,"Image","loadFromBlob",t)}var r=this;r.name=t.name||"",t.isDetached()?(this.bind("RuntimeInit",function(e,t){n(t)}),i&&"string"==typeof i.required_caps&&(i.required_caps=o.parseCaps(i.required_caps)),this.connectRuntime(e.extend({required_caps:{access_image_binary:!0,resize_image:!0}},i))):n(this.connectRuntime(t.ruid))}function x(e,t){var i,n=this;i=new r,i.open("get",e),i.responseType="blob",i.onprogress=function(e){n.trigger(e)},i.onload=function(){g.call(n,i.response,!0)},i.onerror=function(e){n.trigger(e)},i.onloadend=function(){i.destroy()},i.bind("RuntimeError",function(e,t){n.trigger("RuntimeError",t)}),i.send(null,t)}a.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,name:"",size:0,width:0,height:0,type:"",meta:{},clone:function(){this.load.apply(this,arguments)},load:function(){c.apply(this,arguments)},resize:function(t){var n,r,o=this,a={x:0,y:0,width:o.width,height:o.height},s=e.extendIf({width:o.width,height:o.height,type:o.type||"image/jpeg",quality:90,crop:!1,fit:!0,preserveHeaders:!0,resample:"default",multipass:!0},t);try{if(!o.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);if(o.width>h.MAX_RESIZE_WIDTH||o.height>h.MAX_RESIZE_HEIGHT)throw new i.ImageError(i.ImageError.MAX_RESOLUTION_ERR);if(n=o.meta&&o.meta.tiff&&o.meta.tiff.Orientation||1,-1!==e.inArray(n,[5,6,7,8])){var u=s.width;s.width=s.height,s.height=u}if(s.crop){switch(r=Math.max(s.width/o.width,s.height/o.height),t.fit?(a.width=Math.min(Math.ceil(s.width/r),o.width),a.height=Math.min(Math.ceil(s.height/r),o.height),r=s.width/a.width):(a.width=Math.min(s.width,o.width),a.height=Math.min(s.height,o.height),r=1),"boolean"==typeof s.crop&&(s.crop="cc"),s.crop.toLowerCase().replace(/_/,"-")){case"rb":case"right-bottom":a.x=o.width-a.width,a.y=o.height-a.height;break;case"cb":case"center-bottom":a.x=Math.floor((o.width-a.width)/2),a.y=o.height-a.height;break;case"lb":case"left-bottom":a.x=0,a.y=o.height-a.height;break;case"lt":case"left-top":a.x=0,a.y=0;break;case"ct":case"center-top":a.x=Math.floor((o.width-a.width)/2),a.y=0;break;case"rt":case"right-top":a.x=o.width-a.width,a.y=0;break;case"rc":case"right-center":case"right-middle":a.x=o.width-a.width,a.y=Math.floor((o.height-a.height)/2);break;case"lc":case"left-center":case"left-middle":a.x=0,a.y=Math.floor((o.height-a.height)/2);break;case"cc":case"center-center":case"center-middle":default:a.x=Math.floor((o.width-a.width)/2),a.y=Math.floor((o.height-a.height)/2)}a.x=Math.max(a.x,0),a.y=Math.max(a.y,0)}else r=Math.min(s.width/o.width,s.height/o.height);this.exec("Image","resize",a,r,s)}catch(c){o.trigger("error",c.code)}},downsize:function(t){var i,n={width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90,crop:!1,preserveHeaders:!0,resample:"default"};i="object"==typeof t?e.extend(n,t):e.extend(n,{width:arguments[0],height:arguments[1],crop:arguments[2],preserveHeaders:arguments[3]}),this.resize(i)},crop:function(e,t,i){this.downsize(e,t,!0,i)},getAsCanvas:function(){if(!u.can("create_canvas"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);return this.exec("Image","getAsCanvas")},getAsBlob:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsBlob",e||"image/jpeg",t||90)},getAsDataURL:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsDataURL",e||"image/jpeg",t||90)},getAsBinaryString:function(e,t){var i=this.getAsDataURL(e,t);return m.atob(i.substring(i.indexOf("base64,")+7))},embed:function(n,r){function o(t,r){var o=this;if(u.can("create_canvas")){var l=o.getAsCanvas();if(l)return n.appendChild(l),l=null,o.destroy(),c.trigger("embedded"),void 0}var d=o.getAsDataURL(t,r);if(!d)throw new i.ImageError(i.ImageError.WRONG_FORMAT);if(u.can("use_data_uri_of",d.length))n.innerHTML='<img src="'+d+'" width="'+o.width+'" height="'+o.height+'" />',o.destroy(),c.trigger("embedded");else{var h=new s;h.bind("TransportingComplete",function(){a=c.connectRuntime(this.result.ruid),c.bind("Embedded",function(){e.extend(a.getShimContainer().style,{top:"0px",left:"0px",width:o.width+"px",height:o.height+"px"}),a=null},999),a.exec.call(c,"ImageView","display",this.result.uid,width,height),o.destroy()}),h.transport(m.atob(d.substring(d.indexOf("base64,")+7)),t,{required_caps:{display_media:!0},runtime_order:"flash,silverlight",container:n})}}var a,c=this,l=e.extend({width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90},r);try{if(!(n=t.get(n)))throw new i.DOMException(i.DOMException.INVALID_NODE_TYPE_ERR);if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);this.width>h.MAX_RESIZE_WIDTH||this.height>h.MAX_RESIZE_HEIGHT;var d=new h;return d.bind("Resize",function(){o.call(this,l.type,l.quality)}),d.bind("Load",function(){this.downsize(l)}),this.meta.thumb&&this.meta.thumb.width>=l.width&&this.meta.thumb.height>=l.height?d.load(this.meta.thumb.data):d.clone(this,!1),d}catch(f){this.trigger("error",f.code)}},destroy:function(){this.ruid&&(this.getRuntime().exec.call(this,"Image","destroy"),this.disconnectRuntime()),this.meta&&this.meta.thumb&&this.meta.thumb.data.destroy(),this.unbindAll()}}),this.handleEventProps(f),this.bind("Load Resize",function(){return n.call(this)},999)}var f=["progress","load","error","resize","embedded"];return h.MAX_RESIZE_WIDTH=8192,h.MAX_RESIZE_HEIGHT=8192,h.prototype=c.instance,h}),n("moxie/runtime/html5/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function o(t){var o=this,u=i.capTest,c=i.capTrue,l=e.extend({access_binary:u(window.FileReader||window.File&&window.File.getAsDataURL),access_image_binary:function(){return o.can("access_binary")&&!!s.Image},display_media:u((n.can("create_canvas")||n.can("use_data_uri_over32kb"))&&r("moxie/image/Image")),do_cors:u(window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest),drag_and_drop:u(function(){var e=document.createElement("div");return("draggable"in e||"ondragstart"in e&&"ondrop"in e)&&("IE"!==n.browser||n.verComp(n.version,9,">"))}()),filter_by_extension:u(function(){return!("Chrome"===n.browser&&n.verComp(n.version,28,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<")||"Safari"===n.browser&&n.verComp(n.version,7,"<")||"Firefox"===n.browser&&n.verComp(n.version,37,"<"))}()),return_response_headers:c,return_response_type:function(e){return"json"===e&&window.JSON?!0:n.can("return_response_type",e)},return_status_code:c,report_upload_progress:u(window.XMLHttpRequest&&(new XMLHttpRequest).upload),resize_image:function(){return o.can("access_binary")&&n.can("create_canvas")},select_file:function(){return n.can("use_fileinput")&&window.File},select_folder:function(){return o.can("select_file")&&("Chrome"===n.browser&&n.verComp(n.version,21,">=")||"Firefox"===n.browser&&n.verComp(n.version,42,">="))},select_multiple:function(){return!(!o.can("select_file")||"Safari"===n.browser&&"Windows"===n.os||"iOS"===n.os&&n.verComp(n.osVersion,"7.0.0",">")&&n.verComp(n.osVersion,"8.0.0","<"))},send_binary_string:u(window.XMLHttpRequest&&((new XMLHttpRequest).sendAsBinary||window.Uint8Array&&window.ArrayBuffer)),send_custom_headers:u(window.XMLHttpRequest),send_multipart:function(){return!!(window.XMLHttpRequest&&(new XMLHttpRequest).upload&&window.FormData)||o.can("send_binary_string")},slice_blob:u(window.File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice)),stream_upload:function(){return o.can("slice_blob")&&o.can("send_multipart")},summon_file_dialog:function(){return o.can("select_file")&&("Firefox"===n.browser&&n.verComp(n.version,4,">=")||"Opera"===n.browser&&n.verComp(n.version,12,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||!!~e.inArray(n.browser,["Chrome","Safari","Edge"]))},upload_filesize:c,use_http_method:c},arguments[2]);i.call(this,t,arguments[1]||a,l),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(o),e=o=null}}(this.destroy)}),e.extend(this.getShim(),s)}var a="html5",s={};return i.addConstructor(a,o),s}),n("moxie/runtime/html5/file/Blob",["moxie/runtime/html5/Runtime","moxie/file/Blob"],function(e,t){function i(){function e(e,t,i){var n;if(!window.File.prototype.slice)return(n=window.File.prototype.webkitSlice||window.File.prototype.mozSlice)?n.call(e,t,i):null;try{return e.slice(),e.slice(t,i)}catch(r){return e.slice(t,i-t)}}this.slice=function(){return new t(this.getRuntime().uid,e.apply(this,arguments))}}return e.Blob=i}),n("moxie/core/utils/Events",["moxie/core/utils/Basic"],function(e){function t(){this.returnValue=!1}function i(){this.cancelBubble=!0}var n={},r="moxie_"+e.guid(),o=function(o,a,s,u){var c,l;a=a.toLowerCase(),o.addEventListener?(c=s,o.addEventListener(a,c,!1)):o.attachEvent&&(c=function(){var e=window.event;e.target||(e.target=e.srcElement),e.preventDefault=t,e.stopPropagation=i,s(e)},o.attachEvent("on"+a,c)),o[r]||(o[r]=e.guid()),n.hasOwnProperty(o[r])||(n[o[r]]={}),l=n[o[r]],l.hasOwnProperty(a)||(l[a]=[]),l[a].push({func:c,orig:s,key:u})},a=function(t,i,o){var a,s;if(i=i.toLowerCase(),t[r]&&n[t[r]]&&n[t[r]][i]){a=n[t[r]][i];for(var u=a.length-1;u>=0&&(a[u].orig!==o&&a[u].key!==o||(t.removeEventListener?t.removeEventListener(i,a[u].func,!1):t.detachEvent&&t.detachEvent("on"+i,a[u].func),a[u].orig=null,a[u].func=null,a.splice(u,1),o===s));u--);if(a.length||delete n[t[r]][i],e.isEmptyObj(n[t[r]])){delete n[t[r]];try{delete t[r]}catch(c){t[r]=s}}}},s=function(t,i){t&&t[r]&&e.each(n[t[r]],function(e,n){a(t,n,i)})};return{addEvent:o,removeEvent:a,removeAllEvents:s}}),n("moxie/runtime/html5/file/FileInput",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a){function s(){var e,s;i.extend(this,{init:function(u){var c,l,d,m,h,f,p=this,g=p.getRuntime();e=u,d=e.accept.mimes||o.extList2mimes(e.accept,g.can("filter_by_extension")),l=g.getShimContainer(),l.innerHTML='<input id="'+g.uid+'" type="file" style="font-size:999px;opacity:0;"'+(e.multiple&&g.can("select_multiple")?"multiple":"")+(e.directory&&g.can("select_folder")?"webkitdirectory directory":"")+(d?' accept="'+d.join(",")+'"':"")+" />",c=n.get(g.uid),i.extend(c.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),m=n.get(e.browse_button),s=n.getStyle(m,"z-index")||"auto",g.can("summon_file_dialog")&&("static"===n.getStyle(m,"position")&&(m.style.position="relative"),r.addEvent(m,"click",function(e){var t=n.get(g.uid);t&&!t.disabled&&t.click(),e.preventDefault()},p.uid),p.bind("Refresh",function(){h=parseInt(s,10)||1,n.get(e.browse_button).style.zIndex=h,this.getRuntime().getShimContainer().style.zIndex=h-1})),f=g.can("summon_file_dialog")?m:l,r.addEvent(f,"mouseover",function(){p.trigger("mouseenter")},p.uid),r.addEvent(f,"mouseout",function(){p.trigger("mouseleave")},p.uid),r.addEvent(f,"mousedown",function(){p.trigger("mousedown")},p.uid),r.addEvent(n.get(e.container),"mouseup",function(){p.trigger("mouseup")},p.uid),c.onchange=function x(){if(p.files=[],i.each(this.files,function(i){var n="";return e.directory&&"."==i.name?!0:(i.webkitRelativePath&&(n="/"+i.webkitRelativePath.replace(/^\//,"")),i=new t(g.uid,i),i.relativePath=n,p.files.push(i),void 0)}),"IE"!==a.browser&&"IEMobile"!==a.browser)this.value="";else{var n=this.cloneNode(!0);this.parentNode.replaceChild(n,this),n.onchange=x}p.files.length&&p.trigger("change")},p.trigger({type:"ready",async:!0}),l=null},setOption:function(e,t){var i=this.getRuntime(),r=n.get(i.uid);switch(e){case"accept":if(t){var a=t.mimes||o.extList2mimes(t,i.can("filter_by_extension"));r.setAttribute("accept",a.join(","))}else r.removeAttribute("accept");break;case"directory":t&&i.can("select_folder")?(r.setAttribute("directory",""),r.setAttribute("webkitdirectory","")):(r.removeAttribute("directory"),r.removeAttribute("webkitdirectory"));break;case"multiple":t&&i.can("select_multiple")?r.setAttribute("multiple",""):r.removeAttribute("multiple")}},disable:function(e){var t,i=this.getRuntime();(t=n.get(i.uid))&&(t.disabled=!!e)},destroy:function(){var t=this.getRuntime(),i=t.getShim(),o=t.getShimContainer(),a=e&&n.get(e.container),u=e&&n.get(e.browse_button);a&&r.removeAllEvents(a,this.uid),u&&(r.removeAllEvents(u,this.uid),u.style.zIndex=s),o&&(r.removeAllEvents(o,this.uid),o.innerHTML=""),i.removeInstance(this.uid),e=o=a=u=i=null}})}return e.FileInput=s}),n("moxie/runtime/html5/file/FileDrop",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime"],function(e,t,i,n,r,o){function a(){function e(e){if(!e.dataTransfer||!e.dataTransfer.types)return!1;var t=i.toArray(e.dataTransfer.types||[]);return-1!==i.inArray("Files",t)||-1!==i.inArray("public.file-url",t)||-1!==i.inArray("application/x-moz-file",t)}function a(e,i){if(u(e)){var n=new t(f,e);n.relativePath=i||"",p.push(n)}}function s(e){for(var t=[],n=0;n<e.length;n++)[].push.apply(t,e[n].extensions.split(/\s*,\s*/));return-1===i.inArray("*",t)?t:[]}function u(e){if(!g.length)return!0;var t=o.getFileExtension(e.name);return!t||-1!==i.inArray(t,g)}function c(e,t){var n=[];i.each(e,function(e){var t=e.webkitGetAsEntry();t&&(t.isFile?a(e.getAsFile(),t.fullPath):n.push(t))}),n.length?l(n,t):t()}function l(e,t){var n=[];i.each(e,function(e){n.push(function(t){d(e,t)})}),i.inSeries(n,function(){t()})}function d(e,t){e.isFile?e.file(function(i){a(i,e.fullPath),t()},function(){t()}):e.isDirectory?m(e,t):t()}function m(e,t){function i(e){r.readEntries(function(t){t.length?([].push.apply(n,t),i(e)):e()},e)}var n=[],r=e.createReader();i(function(){l(n,t)})}var h,f,p=[],g=[];i.extend(this,{init:function(t){var n,o=this;h=t,f=o.ruid,g=s(h.accept),n=h.container,r.addEvent(n,"dragover",function(t){e(t)&&(t.preventDefault(),t.dataTransfer.dropEffect="copy")},o.uid),r.addEvent(n,"drop",function(t){e(t)&&(t.preventDefault(),p=[],t.dataTransfer.items&&t.dataTransfer.items[0].webkitGetAsEntry?c(t.dataTransfer.items,function(){o.files=p,o.trigger("drop")}):(i.each(t.dataTransfer.files,function(e){a(e)}),o.files=p,o.trigger("drop")))},o.uid),r.addEvent(n,"dragenter",function(){o.trigger("dragenter")},o.uid),r.addEvent(n,"dragleave",function(){o.trigger("dragleave")},o.uid)},destroy:function(){r.removeAllEvents(h&&n.get(h.container),this.uid),f=p=g=h=null}})}return e.FileDrop=a}),n("moxie/runtime/html5/file/FileReader",["moxie/runtime/html5/Runtime","moxie/core/utils/Encode","moxie/core/utils/Basic"],function(e,t,i){function n(){function e(e){return t.atob(e.substring(e.indexOf("base64,")+7))}var n,r=!1;i.extend(this,{read:function(t,o){var a=this;a.result="",n=new window.FileReader,n.addEventListener("progress",function(e){a.trigger(e)}),n.addEventListener("load",function(t){a.result=r?e(n.result):n.result,a.trigger(t)}),n.addEventListener("error",function(e){a.trigger(e,n.error)}),n.addEventListener("loadend",function(e){n=null,a.trigger(e)}),"function"===i.typeOf(n[t])?(r=!1,n[t](o.getSource())):"readAsBinaryString"===t&&(r=!0,n.readAsDataURL(o.getSource()))},abort:function(){n&&n.abort()},destroy:function(){n=null}})}return e.FileReader=n}),n("moxie/runtime/html5/xhr/XMLHttpRequest",["moxie/runtime/html5/Runtime","moxie/core/utils/Basic","moxie/core/utils/Mime","moxie/core/utils/Url","moxie/file/File","moxie/file/Blob","moxie/xhr/FormData","moxie/core/Exceptions","moxie/core/utils/Env"],function(e,t,i,n,r,o,a,s,u){function c(){function e(e,t){var i,n,r=this;i=t.getBlob().getSource(),n=new window.FileReader,n.onload=function(){t.append(t.getBlobName(),new o(null,{type:i.type,data:n.result})),f.send.call(r,e,t)},n.readAsBinaryString(i)}function c(){return!window.XMLHttpRequest||"IE"===u.browser&&u.verComp(u.version,8,"<")?function(){for(var e=["Msxml2.XMLHTTP.6.0","Microsoft.XMLHTTP"],t=0;t<e.length;t++)try{return new ActiveXObject(e[t])}catch(i){}}():new window.XMLHttpRequest}function l(e){var t=e.responseXML,i=e.responseText;return"IE"===u.browser&&i&&t&&!t.documentElement&&/[^\/]+\/[^\+]+\+xml/.test(e.getResponseHeader("Content-Type"))&&(t=new window.ActiveXObject("Microsoft.XMLDOM"),t.async=!1,t.validateOnParse=!1,t.loadXML(i)),t&&("IE"===u.browser&&0!==t.parseError||!t.documentElement||"parsererror"===t.documentElement.tagName)?null:t}function d(e){var t="----moxieboundary"+(new Date).getTime(),i="--",n="\r\n",r="",a=this.getRuntime();if(!a.can("send_binary_string"))throw new s.RuntimeError(s.RuntimeError.NOT_SUPPORTED_ERR);return m.setRequestHeader("Content-Type","multipart/form-data; boundary="+t),e.each(function(e,a){r+=e instanceof o?i+t+n+'Content-Disposition: form-data; name="'+a+'"; filename="'+unescape(encodeURIComponent(e.name||"blob"))+'"'+n+"Content-Type: "+(e.type||"application/octet-stream")+n+n+e.getSource()+n:i+t+n+'Content-Disposition: form-data; name="'+a+'"'+n+n+unescape(encodeURIComponent(e))+n}),r+=i+t+i+n}var m,h,f=this;t.extend(this,{send:function(i,r){var s=this,l="Mozilla"===u.browser&&u.verComp(u.version,4,">=")&&u.verComp(u.version,7,"<"),f="Android Browser"===u.browser,p=!1;
|
15 |
-
if(h=i.url.replace(/^.+?\/([\w\-\.]+)$/,"$1").toLowerCase(),m=c(),m.open(i.method,i.url,i.async,i.user,i.password),r instanceof o)r.isDetached()&&(p=!0),r=r.getSource();else if(r instanceof a){if(r.hasBlob())if(r.getBlob().isDetached())r=d.call(s,r),p=!0;else if((l||f)&&"blob"===t.typeOf(r.getBlob().getSource())&&window.FileReader)return e.call(s,i,r),void 0;if(r instanceof a){var g=new window.FormData;r.each(function(e,t){e instanceof o?g.append(t,e.getSource()):g.append(t,e)}),r=g}}m.upload?(i.withCredentials&&(m.withCredentials=!0),m.addEventListener("load",function(e){s.trigger(e)}),m.addEventListener("error",function(e){s.trigger(e)}),m.addEventListener("progress",function(e){s.trigger(e)}),m.upload.addEventListener("progress",function(e){s.trigger({type:"UploadProgress",loaded:e.loaded,total:e.total})})):m.onreadystatechange=function(){switch(m.readyState){case 1:break;case 2:break;case 3:var e,t;try{n.hasSameOrigin(i.url)&&(e=m.getResponseHeader("Content-Length")||0),m.responseText&&(t=m.responseText.length)}catch(r){e=t=0}s.trigger({type:"progress",lengthComputable:!!e,total:parseInt(e,10),loaded:t});break;case 4:m.onreadystatechange=function(){},0===m.status?s.trigger("error"):s.trigger("load")}},t.isEmptyObj(i.headers)||t.each(i.headers,function(e,t){m.setRequestHeader(t,e)}),""!==i.responseType&&"responseType"in m&&(m.responseType="json"!==i.responseType||u.can("return_response_type","json")?i.responseType:"text"),p?m.sendAsBinary?m.sendAsBinary(r):function(){for(var e=new Uint8Array(r.length),t=0;t<r.length;t++)e[t]=255&r.charCodeAt(t);m.send(e.buffer)}():m.send(r),s.trigger("loadstart")},getStatus:function(){try{if(m)return m.status}catch(e){}return 0},getResponse:function(e){var t=this.getRuntime();try{switch(e){case"blob":var n=new r(t.uid,m.response),o=m.getResponseHeader("Content-Disposition");if(o){var a=o.match(/filename=([\'\"'])([^\1]+)\1/);a&&(h=a[2])}return n.name=h,n.type||(n.type=i.getFileMime(h)),n;case"json":return u.can("return_response_type","json")?m.response:200===m.status&&window.JSON?JSON.parse(m.responseText):null;case"document":return l(m);default:return""!==m.responseText?m.responseText:null}}catch(s){return null}},getAllResponseHeaders:function(){try{return m.getAllResponseHeaders()}catch(e){}return""},abort:function(){m&&m.abort()},destroy:function(){f=h=null}})}return e.XMLHttpRequest=c}),n("moxie/runtime/html5/utils/BinaryReader",["moxie/core/utils/Basic"],function(e){function t(e){e instanceof ArrayBuffer?i.apply(this,arguments):n.apply(this,arguments)}function i(t){var i=new DataView(t);e.extend(this,{readByteAt:function(e){return i.getUint8(e)},writeByteAt:function(e,t){i.setUint8(e,t)},SEGMENT:function(e,n,r){switch(arguments.length){case 2:return t.slice(e,e+n);case 1:return t.slice(e);case 3:if(null===r&&(r=new ArrayBuffer),r instanceof ArrayBuffer){var o=new Uint8Array(this.length()-n+r.byteLength);e>0&&o.set(new Uint8Array(t.slice(0,e)),0),o.set(new Uint8Array(r),e),o.set(new Uint8Array(t.slice(e+n)),e+r.byteLength),this.clear(),t=o.buffer,i=new DataView(t);break}default:return t}},length:function(){return t?t.byteLength:0},clear:function(){i=t=null}})}function n(t){function i(e,i,n){n=3===arguments.length?n:t.length-i-1,t=t.substr(0,i)+e+t.substr(n+i)}e.extend(this,{readByteAt:function(e){return t.charCodeAt(e)},writeByteAt:function(e,t){i(String.fromCharCode(t),e,1)},SEGMENT:function(e,n,r){switch(arguments.length){case 1:return t.substr(e);case 2:return t.substr(e,n);case 3:i(null!==r?r:"",e,n);break;default:return t}},length:function(){return t?t.length:0},clear:function(){t=null}})}return e.extend(t.prototype,{littleEndian:!1,read:function(e,t){var i,n,r;if(e+t>this.length())throw new Error("You are trying to read outside the source boundaries.");for(n=this.littleEndian?0:-8*(t-1),r=0,i=0;t>r;r++)i|=this.readByteAt(e+r)<<Math.abs(n+8*r);return i},write:function(e,t,i){var n,r;if(e>this.length())throw new Error("You are trying to write outside the source boundaries.");for(n=this.littleEndian?0:-8*(i-1),r=0;i>r;r++)this.writeByteAt(e+r,255&t>>Math.abs(n+8*r))},BYTE:function(e){return this.read(e,1)},SHORT:function(e){return this.read(e,2)},LONG:function(e){return this.read(e,4)},SLONG:function(e){var t=this.read(e,4);return t>2147483647?t-4294967296:t},CHAR:function(e){return String.fromCharCode(this.read(e,1))},STRING:function(e,t){return this.asArray("CHAR",e,t).join("")},asArray:function(e,t,i){for(var n=[],r=0;i>r;r++)n[r]=this[e](t+r);return n}}),t}),n("moxie/runtime/html5/image/JPEGHeaders",["moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(e,t){return function i(n){var r,o,a,s=[],u=0;if(r=new e(n),65496!==r.SHORT(0))throw r.clear(),new t.ImageError(t.ImageError.WRONG_FORMAT);for(o=2;o<=r.length();)if(a=r.SHORT(o),a>=65488&&65495>=a)o+=2;else{if(65498===a||65497===a)break;u=r.SHORT(o+2)+2,a>=65505&&65519>=a&&s.push({hex:a,name:"APP"+(15&a),start:o,length:u,segment:r.SEGMENT(o,u)}),o+=u}return r.clear(),{headers:s,restore:function(t){var i,n,r;for(r=new e(t),o=65504==r.SHORT(2)?4+r.SHORT(4):2,n=0,i=s.length;i>n;n++)r.SEGMENT(o,0,s[n].segment),o+=s[n].length;return t=r.SEGMENT(),r.clear(),t},strip:function(t){var n,r,o,a;for(o=new i(t),r=o.headers,o.purge(),n=new e(t),a=r.length;a--;)n.SEGMENT(r[a].start,r[a].length,"");return t=n.SEGMENT(),n.clear(),t},get:function(e){for(var t=[],i=0,n=s.length;n>i;i++)s[i].name===e.toUpperCase()&&t.push(s[i].segment);return t},set:function(e,t){var i,n,r,o=[];for("string"==typeof t?o.push(t):o=t,i=n=0,r=s.length;r>i&&(s[i].name===e.toUpperCase()&&(s[i].segment=o[n],s[i].length=o[n].length,n++),!(n>=o.length));i++);},purge:function(){this.headers=s=[]}}}}),n("moxie/runtime/html5/image/ExifParser",["moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(e,i,n){function r(o){function a(i,r){var o,a,s,u,c,m,h,f,p=this,g=[],x={},v={1:"BYTE",7:"UNDEFINED",2:"ASCII",3:"SHORT",4:"LONG",5:"RATIONAL",9:"SLONG",10:"SRATIONAL"},w={BYTE:1,UNDEFINED:1,ASCII:1,SHORT:2,LONG:4,RATIONAL:8,SLONG:4,SRATIONAL:8};for(o=p.SHORT(i),a=0;o>a;a++)if(g=[],h=i+2+12*a,s=r[p.SHORT(h)],s!==t){if(u=v[p.SHORT(h+=2)],c=p.LONG(h+=2),m=w[u],!m)throw new n.ImageError(n.ImageError.INVALID_META_ERR);if(h+=4,m*c>4&&(h=p.LONG(h)+d.tiffHeader),h+m*c>=this.length())throw new n.ImageError(n.ImageError.INVALID_META_ERR);"ASCII"!==u?(g=p.asArray(u,h,c),f=1==c?g[0]:g,x[s]=l.hasOwnProperty(s)&&"object"!=typeof f?l[s][f]:f):x[s]=e.trim(p.STRING(h,c).replace(/\0$/,""))}return x}function s(e,t,i){var n,r,o,a=0;if("string"==typeof t){var s=c[e.toLowerCase()];for(var u in s)if(s[u]===t){t=u;break}}n=d[e.toLowerCase()+"IFD"],r=this.SHORT(n);for(var l=0;r>l;l++)if(o=n+12*l+2,this.SHORT(o)==t){a=o+8;break}if(!a)return!1;try{this.write(a,i,4)}catch(m){return!1}return!0}var u,c,l,d,m,h;if(i.call(this,o),c={tiff:{274:"Orientation",270:"ImageDescription",271:"Make",272:"Model",305:"Software",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},exif:{36864:"ExifVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37386:"FocalLength",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},gps:{0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"},thumb:{513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength"}},l={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}},d={tiffHeader:10},m=d.tiffHeader,u={clear:this.clear},e.extend(this,{read:function(){try{return r.prototype.read.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},write:function(){try{return r.prototype.write.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},UNDEFINED:function(){return this.BYTE.apply(this,arguments)},RATIONAL:function(e){return this.LONG(e)/this.LONG(e+4)},SRATIONAL:function(e){return this.SLONG(e)/this.SLONG(e+4)},ASCII:function(e){return this.CHAR(e)},TIFF:function(){return h||null},EXIF:function(){var t=null;if(d.exifIFD){try{t=a.call(this,d.exifIFD,c.exif)}catch(i){return null}if(t.ExifVersion&&"array"===e.typeOf(t.ExifVersion)){for(var n=0,r="";n<t.ExifVersion.length;n++)r+=String.fromCharCode(t.ExifVersion[n]);t.ExifVersion=r}}return t},GPS:function(){var t=null;if(d.gpsIFD){try{t=a.call(this,d.gpsIFD,c.gps)}catch(i){return null}t.GPSVersionID&&"array"===e.typeOf(t.GPSVersionID)&&(t.GPSVersionID=t.GPSVersionID.join("."))}return t},thumb:function(){if(d.IFD1)try{var e=a.call(this,d.IFD1,c.thumb);if("JPEGInterchangeFormat"in e)return this.SEGMENT(d.tiffHeader+e.JPEGInterchangeFormat,e.JPEGInterchangeFormatLength)}catch(t){}return null},setExif:function(e,t){return"PixelXDimension"!==e&&"PixelYDimension"!==e?!1:s.call(this,"exif",e,t)},clear:function(){u.clear(),o=c=l=h=d=u=null}}),65505!==this.SHORT(0)||"EXIF\0"!==this.STRING(4,5).toUpperCase())throw new n.ImageError(n.ImageError.INVALID_META_ERR);if(this.littleEndian=18761==this.SHORT(m),42!==this.SHORT(m+=2))throw new n.ImageError(n.ImageError.INVALID_META_ERR);d.IFD0=d.tiffHeader+this.LONG(m+=2),h=a.call(this,d.IFD0,c.tiff),"ExifIFDPointer"in h&&(d.exifIFD=d.tiffHeader+h.ExifIFDPointer,delete h.ExifIFDPointer),"GPSInfoIFDPointer"in h&&(d.gpsIFD=d.tiffHeader+h.GPSInfoIFDPointer,delete h.GPSInfoIFDPointer),e.isEmptyObj(h)&&(h=null);var f=this.LONG(d.IFD0+12*this.SHORT(d.IFD0)+2);f&&(d.IFD1=d.tiffHeader+f)}return r.prototype=i.prototype,r}),n("moxie/runtime/html5/image/JPEG",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/html5/image/JPEGHeaders","moxie/runtime/html5/utils/BinaryReader","moxie/runtime/html5/image/ExifParser"],function(e,t,i,n,r){function o(o){function a(e){var t,i,n=0;for(e||(e=c);n<=e.length();){if(t=e.SHORT(n+=2),t>=65472&&65475>=t)return n+=5,{height:e.SHORT(n),width:e.SHORT(n+=2)};i=e.SHORT(n+=2),n+=i-2}return null}function s(){var e,t,i=d.thumb();return i&&(e=new n(i),t=a(e),e.clear(),t)?(t.data=i,t):null}function u(){d&&l&&c&&(d.clear(),l.purge(),c.clear(),m=l=d=c=null)}var c,l,d,m;if(c=new n(o),65496!==c.SHORT(0))throw new t.ImageError(t.ImageError.WRONG_FORMAT);l=new i(o);try{d=new r(l.get("app1")[0])}catch(h){}m=a.call(this),e.extend(this,{type:"image/jpeg",size:c.length(),width:m&&m.width||0,height:m&&m.height||0,setExif:function(t,i){return d?("object"===e.typeOf(t)?e.each(t,function(e,t){d.setExif(t,e)}):d.setExif(t,i),l.set("app1",d.SEGMENT()),void 0):!1},writeHeaders:function(){return arguments.length?l.restore(arguments[0]):l.restore(o)},stripHeaders:function(e){return l.strip(e)},purge:function(){u.call(this)}}),d&&(this.meta={tiff:d.TIFF(),exif:d.EXIF(),gps:d.GPS(),thumb:s()})}return o}),n("moxie/runtime/html5/image/PNG",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader"],function(e,t,i){function n(n){function r(){var e,t;return e=a.call(this,8),"IHDR"==e.type?(t=e.start,{width:s.LONG(t),height:s.LONG(t+=4)}):null}function o(){s&&(s.clear(),n=l=u=c=s=null)}function a(e){var t,i,n,r;return t=s.LONG(e),i=s.STRING(e+=4,4),n=e+=4,r=s.LONG(e+t),{length:t,type:i,start:n,CRC:r}}var s,u,c,l;s=new i(n),function(){var t=0,i=0,n=[35152,20039,3338,6666];for(i=0;i<n.length;i++,t+=2)if(n[i]!=s.SHORT(t))throw new e.ImageError(e.ImageError.WRONG_FORMAT)}(),l=r.call(this),t.extend(this,{type:"image/png",size:s.length(),width:l.width,height:l.height,purge:function(){o.call(this)}}),o.call(this)}return n}),n("moxie/runtime/html5/image/ImageInfo",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/html5/image/JPEG","moxie/runtime/html5/image/PNG"],function(e,t,i,n){return function(r){var o,a=[i,n];o=function(){for(var e=0;e<a.length;e++)try{return new a[e](r)}catch(i){}throw new t.ImageError(t.ImageError.WRONG_FORMAT)}(),e.extend(this,{type:"",size:0,width:0,height:0,setExif:function(){},writeHeaders:function(e){return e},stripHeaders:function(e){return e},purge:function(){r=null}}),e.extend(this,o),this.purge=function(){o.purge(),o=null}}}),n("moxie/runtime/html5/image/ResizerCanvas",[],function(){function e(i,n){var r=i.width,o=Math.floor(r*n),a=!1;(.5>n||n>2)&&(n=.5>n?.5:2,a=!0);var s=t(i,n);return a?e(s,o/s.width):s}function t(e,t){var i=e.width,n=e.height,r=Math.floor(i*t),o=Math.floor(n*t),a=document.createElement("canvas");return a.width=r,a.height=o,a.getContext("2d").drawImage(e,0,0,i,n,0,0,r,o),e=null,a}return{scale:e}}),n("moxie/runtime/html5/image/Image",["moxie/runtime/html5/Runtime","moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/utils/Encode","moxie/file/Blob","moxie/file/File","moxie/runtime/html5/image/ImageInfo","moxie/runtime/html5/image/ResizerCanvas","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a,s,u){function c(){function e(){if(!v&&!g)throw new i.ImageError(i.DOMException.INVALID_STATE_ERR);return v||g}function c(){var t=e();return"canvas"==t.nodeName.toLowerCase()?t:(v=document.createElement("canvas"),v.width=t.width,v.height=t.height,v.getContext("2d").drawImage(t,0,0),v)}function l(e){return n.atob(e.substring(e.indexOf("base64,")+7))}function d(e,t){return"data:"+(t||"")+";base64,"+n.btoa(e)}function m(e){var t=this;g=new Image,g.onerror=function(){p.call(this),t.trigger("error",i.ImageError.WRONG_FORMAT)},g.onload=function(){t.trigger("load")},g.src="data:"==e.substr(0,5)?e:d(e,y.type)}function h(e,t){var n,r=this;return window.FileReader?(n=new FileReader,n.onload=function(){t.call(r,this.result)},n.onerror=function(){r.trigger("error",i.ImageError.WRONG_FORMAT)},n.readAsDataURL(e),void 0):t.call(this,e.getAsDataURL())}function f(e,i){var n=Math.PI/180,r=document.createElement("canvas"),o=r.getContext("2d"),a=e.width,s=e.height;switch(t.inArray(i,[5,6,7,8])>-1?(r.width=s,r.height=a):(r.width=a,r.height=s),i){case 2:o.translate(a,0),o.scale(-1,1);break;case 3:o.translate(a,s),o.rotate(180*n);break;case 4:o.translate(0,s),o.scale(1,-1);break;case 5:o.rotate(90*n),o.scale(1,-1);break;case 6:o.rotate(90*n),o.translate(0,-s);break;case 7:o.rotate(90*n),o.translate(a,-s),o.scale(-1,1);break;case 8:o.rotate(-90*n),o.translate(-a,0)}return o.drawImage(e,0,0,a,s),r}function p(){x&&(x.purge(),x=null),w=g=v=y=null,b=!1}var g,x,v,w,y,E=this,b=!1,R=!0;t.extend(this,{loadFromBlob:function(e){var t=this.getRuntime(),n=arguments.length>1?arguments[1]:!0;if(!t.can("access_binary"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);return y=e,e.isDetached()?(w=e.getSource(),m.call(this,w),void 0):(h.call(this,e.getSource(),function(e){n&&(w=l(e)),m.call(this,e)}),void 0)},loadFromImage:function(e,t){this.meta=e.meta,y=new o(null,{name:e.name,size:e.size,type:e.type}),m.call(this,t?w=e.getAsBinaryString():e.getAsDataURL())},getInfo:function(){var t,i=this.getRuntime();return!x&&w&&i.can("access_image_binary")&&(x=new a(w)),t={width:e().width||0,height:e().height||0,type:y.type||u.getFileMime(y.name),size:w&&w.length||y.size||0,name:y.name||"",meta:null},R&&(t.meta=x&&x.meta||this.meta||{},!t.meta||!t.meta.thumb||t.meta.thumb.data instanceof r||(t.meta.thumb.data=new r(null,{type:"image/jpeg",data:t.meta.thumb.data}))),t},resize:function(t,i,n){var r=document.createElement("canvas");if(r.width=t.width,r.height=t.height,r.getContext("2d").drawImage(e(),t.x,t.y,t.width,t.height,0,0,r.width,r.height),v=s.scale(r,i),R=n.preserveHeaders,!R){var o=this.meta&&this.meta.tiff&&this.meta.tiff.Orientation||1;v=f(v,o)}this.width=v.width,this.height=v.height,b=!0,this.trigger("Resize")},getAsCanvas:function(){return v||(v=c()),v.id=this.uid+"_canvas",v},getAsBlob:function(e,t){return e!==this.type?(b=!0,new o(null,{name:y.name||"",type:e,data:E.getAsDataURL(e,t)})):new o(null,{name:y.name||"",type:e,data:E.getAsBinaryString(e,t)})},getAsDataURL:function(e){var t=arguments[1]||90;if(!b)return g.src;if(c(),"image/jpeg"!==e)return v.toDataURL("image/png");try{return v.toDataURL("image/jpeg",t/100)}catch(i){return v.toDataURL("image/jpeg")}},getAsBinaryString:function(e,t){if(!b)return w||(w=l(E.getAsDataURL(e,t))),w;if("image/jpeg"!==e)w=l(E.getAsDataURL(e,t));else{var i;t||(t=90),c();try{i=v.toDataURL("image/jpeg",t/100)}catch(n){i=v.toDataURL("image/jpeg")}w=l(i),x&&(w=x.stripHeaders(w),R&&(x.meta&&x.meta.exif&&x.setExif({PixelXDimension:this.width,PixelYDimension:this.height}),w=x.writeHeaders(w)),x.purge(),x=null)}return b=!1,w},destroy:function(){E=null,p.call(this),this.getRuntime().getShim().removeInstance(this.uid)}})}return e.Image=c}),n("moxie/runtime/flash/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,o){function a(){var e;try{e=navigator.plugins["Shockwave Flash"],e=e.description}catch(t){try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(i){e="0.0"}}return e=e.match(/\d+/g),parseFloat(e[0]+"."+e[1])}function s(e){var n=i.get(e);n&&"OBJECT"==n.nodeName&&("IE"===t.browser?(n.style.display="none",function r(){4==n.readyState?u(e):setTimeout(r,10)}()):n.parentNode.removeChild(n))}function u(e){var t=i.get(e);if(t){for(var n in t)"function"==typeof t[n]&&(t[n]=null);t.parentNode.removeChild(t)}}function c(u){var c,m=this;u=e.extend({swf_url:t.swf_url},u),o.call(this,u,l,{access_binary:function(e){return e&&"browser"===m.mode},access_image_binary:function(e){return e&&"browser"===m.mode},display_media:o.capTest(r("moxie/image/Image")),do_cors:o.capTrue,drag_and_drop:!1,report_upload_progress:function(){return"client"===m.mode},resize_image:o.capTrue,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!e.arrayDiff(t,["","text","document"])||"browser"===m.mode},return_status_code:function(t){return"browser"===m.mode||!e.arrayDiff(t,[200,404])},select_file:o.capTrue,select_multiple:o.capTrue,send_binary_string:function(e){return e&&"browser"===m.mode},send_browser_cookies:function(e){return e&&"browser"===m.mode},send_custom_headers:function(e){return e&&"browser"===m.mode},send_multipart:o.capTrue,slice_blob:function(e){return e&&"browser"===m.mode},stream_upload:function(e){return e&&"browser"===m.mode},summon_file_dialog:!1,upload_filesize:function(t){return e.parseSizeStr(t)<=2097152||"client"===m.mode},use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}},{access_binary:function(e){return e?"browser":"client"},access_image_binary:function(e){return e?"browser":"client"},report_upload_progress:function(e){return e?"browser":"client"},return_response_type:function(t){return e.arrayDiff(t,["","text","json","document"])?"browser":["client","browser"]},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"browser":["client","browser"]},send_binary_string:function(e){return e?"browser":"client"},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"browser":"client"},slice_blob:function(e){return e?"browser":"client"},stream_upload:function(e){return e?"client":"browser"},upload_filesize:function(t){return e.parseSizeStr(t)>=2097152?"client":"browser"}},"client"),a()<11.3&&(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid)},shimExec:function(e,t){var i=[].slice.call(arguments,2);return m.getShim().exec(this.uid,e,t,i)},init:function(){var i,r,o;o=this.getShimContainer(),e.extend(o.style,{position:"absolute",top:"-8px",left:"-8px",width:"9px",height:"9px",overflow:"hidden"}),i='<object id="'+this.uid+'" type="application/x-shockwave-flash" data="'+u.swf_url+'" ',"IE"===t.browser&&(i+='classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '),i+='width="100%" height="100%" style="outline:0"><param name="movie" value="'+u.swf_url+'" />'+'<param name="flashvars" value="uid='+escape(this.uid)+"&target="+t.global_event_dispatcher+'" />'+'<param name="wmode" value="transparent" />'+'<param name="allowscriptaccess" value="always" />'+"</object>","IE"===t.browser?(r=document.createElement("div"),o.appendChild(r),r.outerHTML=i,r=o=null):o.innerHTML=i,c=setTimeout(function(){m&&!m.initialized&&m.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},5e3)},destroy:function(e){return function(){s(m.uid),e.call(m),clearTimeout(c),u=c=e=m=null}}(this.destroy)},d)}var l="flash",d={};return o.addConstructor(l,c),d}),n("moxie/runtime/flash/file/Blob",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={slice:function(e,i,n,r){var o=this.getRuntime();return 0>i?i=Math.max(e.size+i,0):i>0&&(i=Math.min(i,e.size)),0>n?n=Math.max(e.size+n,0):n>0&&(n=Math.min(n,e.size)),e=o.shimExec.call(this,"Blob","slice",i,n,r||""),e&&(e=new t(o.uid,e)),e}};return e.Blob=i}),n("moxie/runtime/flash/file/FileInput",["moxie/runtime/flash/Runtime","moxie/file/File","moxie/core/utils/Basic"],function(e,t,i){var n={init:function(e){var n=this,r=this.getRuntime();this.bind("Change",function(){var e=r.shimExec.call(n,"FileInput","getFiles");n.files=[],i.each(e,function(e){n.files.push(new t(r.uid,e))})},999),this.getRuntime().shimExec.call(this,"FileInput","init",{accept:e.accept,multiple:e.multiple}),this.trigger("ready")}};return e.FileInput=n}),n("moxie/runtime/flash/file/FileReader",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n=this;return n.result="","readAsDataURL"===e&&(n.result="data:"+(t.type||"")+";base64,"),n.bind("Progress",function(t,r){r&&(n.result+=i(r,e))},999),n.getRuntime().shimExec.call(this,"FileReader","readAsBase64",t.uid)}};return e.FileReader=n}),n("moxie/runtime/flash/file/FileReaderSync",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n,r=this.getRuntime();return(n=r.shimExec.call(this,"FileReaderSync","readAsBase64",t.uid))?("readAsDataURL"===e&&(n="data:"+(t.type||"")+";base64,"+n),i(n,e,t.type)):null}};return e.FileReaderSync=n}),n("moxie/runtime/flash/runtime/Transporter",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={getAsBlob:function(e){var i=this.getRuntime(),n=i.shimExec.call(this,"Transporter","getAsBlob",e);return n?new t(i.uid,n):null}};return e.Transporter=i}),n("moxie/runtime/flash/xhr/XMLHttpRequest",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/file/Blob","moxie/file/File","moxie/file/FileReaderSync","moxie/runtime/flash/file/FileReaderSync","moxie/xhr/FormData","moxie/runtime/Transporter","moxie/runtime/flash/runtime/Transporter"],function(e,t,i,n,r,o,a,s){var u={send:function(e,n){function r(){e.transport=l.mode,l.shimExec.call(c,"XMLHttpRequest","send",e,n)}function o(e,t){l.shimExec.call(c,"XMLHttpRequest","appendBlob",e,t.uid),n=null,r()}function u(e,t){var i=new s;i.bind("TransportingComplete",function(){t(this.result)}),i.transport(e.getSource(),e.type,{ruid:l.uid})}var c=this,l=c.getRuntime();if(t.isEmptyObj(e.headers)||t.each(e.headers,function(e,t){l.shimExec.call(c,"XMLHttpRequest","setRequestHeader",t,e.toString())}),n instanceof a){var d;if(n.each(function(e,t){e instanceof i?d=t:l.shimExec.call(c,"XMLHttpRequest","append",t,e)}),n.hasBlob()){var m=n.getBlob();m.isDetached()?u(m,function(e){m.destroy(),o(d,e)}):o(d,m)}else n=null,r()}else n instanceof i?n.isDetached()?u(n,function(e){n.destroy(),n=e.uid,r()}):(n=n.uid,r()):r()},getResponse:function(e){var i,o,a=this.getRuntime();if(o=a.shimExec.call(this,"XMLHttpRequest","getResponseAsBlob")){if(o=new n(a.uid,o),"blob"===e)return o;try{if(i=new r,~t.inArray(e,["","text"]))return i.readAsText(o);if("json"===e&&window.JSON)return JSON.parse(i.readAsText(o))}finally{o.destroy()}}return null},abort:function(){var e=this.getRuntime();e.shimExec.call(this,"XMLHttpRequest","abort"),this.dispatchEvent("readystatechange"),this.dispatchEvent("abort")}};return e.XMLHttpRequest=u}),n("moxie/runtime/flash/image/Image",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/runtime/Transporter","moxie/file/Blob","moxie/file/FileReaderSync"],function(e,t,i,n,r){var o={loadFromBlob:function(e){function t(e){r.shimExec.call(n,"Image","loadFromBlob",e.uid),n=r=null}var n=this,r=n.getRuntime();if(e.isDetached()){var o=new i;o.bind("TransportingComplete",function(){t(o.result.getSource())}),o.transport(e.getSource(),e.type,{ruid:r.uid})}else t(e.getSource())},loadFromImage:function(e){var t=this.getRuntime();return t.shimExec.call(this,"Image","loadFromImage",e.uid)},getInfo:function(){var e=this.getRuntime(),t=e.shimExec.call(this,"Image","getInfo");return t.meta&&t.meta.thumb&&t.meta.thumb.data&&!(e.meta.thumb.data instanceof n)&&(t.meta.thumb.data=new n(e.uid,t.meta.thumb.data)),t},getAsBlob:function(e,t){var i=this.getRuntime(),r=i.shimExec.call(this,"Image","getAsBlob",e,t);return r?new n(i.uid,r):null},getAsDataURL:function(){var e,t=this.getRuntime(),i=t.Image.getAsBlob.apply(this,arguments);return i?(e=new r,e.readAsDataURL(i)):null}};return e.Image=o}),n("moxie/runtime/silverlight/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,o){function a(e){var t,i,n,r,o,a=!1,s=null,u=0;try{try{s=new ActiveXObject("AgControl.AgControl"),s.IsVersionSupported(e)&&(a=!0),s=null}catch(c){var l=navigator.plugins["Silverlight Plug-In"];if(l){for(t=l.description,"1.0.30226.2"===t&&(t="2.0.30226.2"),i=t.split(".");i.length>3;)i.pop();for(;i.length<4;)i.push(0);for(n=e.split(".");n.length>4;)n.pop();do r=parseInt(n[u],10),o=parseInt(i[u],10),u++;while(u<n.length&&r===o);o>=r&&!isNaN(r)&&(a=!0)}}}catch(d){a=!1}return a}function s(s){var l,d=this;s=e.extend({xap_url:t.xap_url},s),o.call(this,s,u,{access_binary:o.capTrue,access_image_binary:o.capTrue,display_media:o.capTest(r("moxie/image/Image")),do_cors:o.capTrue,drag_and_drop:!1,report_upload_progress:o.capTrue,resize_image:o.capTrue,return_response_headers:function(e){return e&&"client"===d.mode},return_response_type:function(e){return"json"!==e?!0:!!window.JSON},return_status_code:function(t){return"client"===d.mode||!e.arrayDiff(t,[200,404])},select_file:o.capTrue,select_multiple:o.capTrue,send_binary_string:o.capTrue,send_browser_cookies:function(e){return e&&"browser"===d.mode},send_custom_headers:function(e){return e&&"client"===d.mode},send_multipart:o.capTrue,slice_blob:o.capTrue,stream_upload:!0,summon_file_dialog:!1,upload_filesize:o.capTrue,use_http_method:function(t){return"client"===d.mode||!e.arrayDiff(t,["GET","POST"])}},{return_response_headers:function(e){return e?"client":"browser"},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"client":["client","browser"]},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"client":"browser"},use_http_method:function(t){return e.arrayDiff(t,["GET","POST"])?"client":["client","browser"]}}),a("2.0.31005.0")&&"Opera"!==t.browser||(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid).content.Moxie},shimExec:function(e,t){var i=[].slice.call(arguments,2);return d.getShim().exec(this.uid,e,t,i)},init:function(){var e;e=this.getShimContainer(),e.innerHTML='<object id="'+this.uid+'" data="data:application/x-silverlight," type="application/x-silverlight-2" width="100%" height="100%" style="outline:none;">'+'<param name="source" value="'+s.xap_url+'"/>'+'<param name="background" value="Transparent"/>'+'<param name="windowless" value="true"/>'+'<param name="enablehtmlaccess" value="true"/>'+'<param name="initParams" value="uid='+this.uid+",target="+t.global_event_dispatcher+'"/>'+"</object>",l=setTimeout(function(){d&&!d.initialized&&d.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},"Windows"!==t.OS?1e4:5e3)},destroy:function(e){return function(){e.call(d),clearTimeout(l),s=l=e=d=null}}(this.destroy)},c)}var u="silverlight",c={};return o.addConstructor(u,s),c}),n("moxie/runtime/silverlight/file/Blob",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/Blob"],function(e,t,i){return e.Blob=t.extend({},i)}),n("moxie/runtime/silverlight/file/FileInput",["moxie/runtime/silverlight/Runtime","moxie/file/File","moxie/core/utils/Basic"],function(e,t,i){function n(e){for(var t="",i=0;i<e.length;i++)t+=(""!==t?"|":"")+e[i].title+" | *."+e[i].extensions.replace(/,/g,";*.");return t}var r={init:function(e){var r=this,o=this.getRuntime();this.bind("Change",function(){var e=o.shimExec.call(r,"FileInput","getFiles");r.files=[],i.each(e,function(e){r.files.push(new t(o.uid,e))})},999),o.shimExec.call(this,"FileInput","init",n(e.accept),e.multiple),this.trigger("ready")},setOption:function(e,t){"accept"==e&&(t=n(t)),this.getRuntime().shimExec.call(this,"FileInput","setOption",e,t)}};return e.FileInput=r}),n("moxie/runtime/silverlight/file/FileDrop",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Dom","moxie/core/utils/Events"],function(e,t,i){var n={init:function(){var e,n=this,r=n.getRuntime();return e=r.getShimContainer(),i.addEvent(e,"dragover",function(e){e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="copy"},n.uid),i.addEvent(e,"dragenter",function(e){e.preventDefault();var i=t.get(r.uid).dragEnter(e);i&&e.stopPropagation()},n.uid),i.addEvent(e,"drop",function(e){e.preventDefault();var i=t.get(r.uid).dragDrop(e);i&&e.stopPropagation()},n.uid),r.shimExec.call(this,"FileDrop","init")}};return e.FileDrop=n}),n("moxie/runtime/silverlight/file/FileReader",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/FileReader"],function(e,t,i){return e.FileReader=t.extend({},i)
|
16 |
-
}),n("moxie/runtime/silverlight/file/FileReaderSync",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/FileReaderSync"],function(e,t,i){return e.FileReaderSync=t.extend({},i)}),n("moxie/runtime/silverlight/runtime/Transporter",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/runtime/Transporter"],function(e,t,i){return e.Transporter=t.extend({},i)}),n("moxie/runtime/silverlight/xhr/XMLHttpRequest",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/xhr/XMLHttpRequest","moxie/runtime/silverlight/file/FileReaderSync","moxie/runtime/silverlight/runtime/Transporter"],function(e,t,i){return e.XMLHttpRequest=t.extend({},i)}),n("moxie/runtime/silverlight/image/Image",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/file/Blob","moxie/runtime/flash/image/Image"],function(e,t,i,n){return e.Image=t.extend({},n,{getInfo:function(){var e=this.getRuntime(),n=["tiff","exif","gps","thumb"],r={meta:{}},o=e.shimExec.call(this,"Image","getInfo");return o.meta&&(t.each(n,function(e){var t,i,n,a,s=o.meta[e];if(s&&s.keys)for(r.meta[e]={},i=0,n=s.keys.length;n>i;i++)t=s.keys[i],a=s[t],a&&(/^(\d|[1-9]\d+)$/.test(a)?a=parseInt(a,10):/^\d*\.\d+$/.test(a)&&(a=parseFloat(a)),r.meta[e][t]=a)}),r.meta&&r.meta.thumb&&r.meta.thumb.data&&!(e.meta.thumb.data instanceof i)&&(r.meta.thumb.data=new i(e.uid,r.meta.thumb.data))),r.width=parseInt(o.width,10),r.height=parseInt(o.height,10),r.size=parseInt(o.size,10),r.type=o.type,r.name=o.name,r},resize:function(e,t,i){this.getRuntime().shimExec.call(this,"Image","resize",e.x,e.y,e.width,e.height,t,i.preserveHeaders,i.resample)}})}),n("moxie/runtime/html4/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function o(t){var o=this,u=i.capTest,c=i.capTrue;i.call(this,t,a,{access_binary:u(window.FileReader||window.File&&File.getAsDataURL),access_image_binary:!1,display_media:u((n.can("create_canvas")||n.can("use_data_uri_over32kb"))&&r("moxie/image/Image")),do_cors:!1,drag_and_drop:!1,filter_by_extension:u(function(){return!("Chrome"===n.browser&&n.verComp(n.version,28,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<")||"Safari"===n.browser&&n.verComp(n.version,7,"<")||"Firefox"===n.browser&&n.verComp(n.version,37,"<"))}()),resize_image:function(){return s.Image&&o.can("access_binary")&&n.can("create_canvas")},report_upload_progress:!1,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!!~e.inArray(t,["text","document",""])},return_status_code:function(t){return!e.arrayDiff(t,[200,404])},select_file:function(){return n.can("use_fileinput")},select_multiple:!1,send_binary_string:!1,send_custom_headers:!1,send_multipart:!0,slice_blob:!1,stream_upload:function(){return o.can("select_file")},summon_file_dialog:function(){return o.can("select_file")&&("Firefox"===n.browser&&n.verComp(n.version,4,">=")||"Opera"===n.browser&&n.verComp(n.version,12,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||!!~e.inArray(n.browser,["Chrome","Safari"]))},upload_filesize:c,use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}}),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(o),e=o=null}}(this.destroy)}),e.extend(this.getShim(),s)}var a="html4",s={};return i.addConstructor(a,o),s}),n("moxie/runtime/html4/file/FileInput",["moxie/runtime/html4/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a){function s(){function e(){var o,c,d,m,h,f,p=this,g=p.getRuntime();f=i.guid("uid_"),o=g.getShimContainer(),s&&(d=n.get(s+"_form"),d&&i.extend(d.style,{top:"100%"})),m=document.createElement("form"),m.setAttribute("id",f+"_form"),m.setAttribute("method","post"),m.setAttribute("enctype","multipart/form-data"),m.setAttribute("encoding","multipart/form-data"),i.extend(m.style,{overflow:"hidden",position:"absolute",top:0,left:0,width:"100%",height:"100%"}),h=document.createElement("input"),h.setAttribute("id",f),h.setAttribute("type","file"),h.setAttribute("accept",l.join(",")),i.extend(h.style,{fontSize:"999px",opacity:0}),m.appendChild(h),o.appendChild(m),i.extend(h.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),"IE"===a.browser&&a.verComp(a.version,10,"<")&&i.extend(h.style,{filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}),h.onchange=function(){var i;if(this.value){if(this.files){if(i=this.files[0],0===i.size)return m.parentNode.removeChild(m),void 0}else i={name:this.value};i=new t(g.uid,i),this.onchange=function(){},e.call(p),p.files=[i],h.setAttribute("id",i.uid),m.setAttribute("id",i.uid+"_form"),p.trigger("change"),h=m=null}},g.can("summon_file_dialog")&&(c=n.get(u.browse_button),r.removeEvent(c,"click",p.uid),r.addEvent(c,"click",function(e){h&&!h.disabled&&h.click(),e.preventDefault()},p.uid)),s=f,o=d=c=null}var s,u,c,l=[];i.extend(this,{init:function(t){var i,a=this,s=a.getRuntime();u=t,l=t.accept.mimes||o.extList2mimes(t.accept,s.can("filter_by_extension")),i=s.getShimContainer(),function(){var e,o,l;e=n.get(t.browse_button),c=n.getStyle(e,"z-index")||"auto",s.can("summon_file_dialog")&&("static"===n.getStyle(e,"position")&&(e.style.position="relative"),a.bind("Refresh",function(){o=parseInt(c,10)||1,n.get(u.browse_button).style.zIndex=o,this.getRuntime().getShimContainer().style.zIndex=o-1})),l=s.can("summon_file_dialog")?e:i,r.addEvent(l,"mouseover",function(){a.trigger("mouseenter")},a.uid),r.addEvent(l,"mouseout",function(){a.trigger("mouseleave")},a.uid),r.addEvent(l,"mousedown",function(){a.trigger("mousedown")},a.uid),r.addEvent(n.get(t.container),"mouseup",function(){a.trigger("mouseup")},a.uid),e=null}(),e.call(this),i=null,a.trigger({type:"ready",async:!0})},setOption:function(e,t){var i,r=this.getRuntime();"accept"==e&&(l=t.mimes||o.extList2mimes(t,r.can("filter_by_extension"))),i=n.get(s),i&&i.setAttribute("accept",l.join(","))},disable:function(e){var t;(t=n.get(s))&&(t.disabled=!!e)},destroy:function(){var e=this.getRuntime(),t=e.getShim(),i=e.getShimContainer(),o=u&&n.get(u.container),a=u&&n.get(u.browse_button);o&&r.removeAllEvents(o,this.uid),a&&(r.removeAllEvents(a,this.uid),a.style.zIndex=c),i&&(r.removeAllEvents(i,this.uid),i.innerHTML=""),t.removeInstance(this.uid),s=l=u=i=o=a=t=null}})}return e.FileInput=s}),n("moxie/runtime/html4/file/FileReader",["moxie/runtime/html4/Runtime","moxie/runtime/html5/file/FileReader"],function(e,t){return e.FileReader=t}),n("moxie/runtime/html4/xhr/XMLHttpRequest",["moxie/runtime/html4/Runtime","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Url","moxie/core/Exceptions","moxie/core/utils/Events","moxie/file/Blob","moxie/xhr/FormData"],function(e,t,i,n,r,o,a,s){function u(){function e(e){var t,n,r,a,s=this,u=!1;if(l){if(t=l.id.replace(/_iframe$/,""),n=i.get(t+"_form")){for(r=n.getElementsByTagName("input"),a=r.length;a--;)switch(r[a].getAttribute("type")){case"hidden":r[a].parentNode.removeChild(r[a]);break;case"file":u=!0}r=[],u||n.parentNode.removeChild(n),n=null}setTimeout(function(){o.removeEvent(l,"load",s.uid),l.parentNode&&l.parentNode.removeChild(l);var t=s.getRuntime().getShimContainer();t.children.length||t.parentNode.removeChild(t),t=l=null,e()},1)}}var u,c,l;t.extend(this,{send:function(d,m){function h(){var i=w.getShimContainer()||document.body,r=document.createElement("div");r.innerHTML='<iframe id="'+f+'_iframe" name="'+f+'_iframe" src="javascript:""" style="display:none"></iframe>',l=r.firstChild,i.appendChild(l),o.addEvent(l,"load",function(){var i;try{i=l.contentWindow.document||l.contentDocument||window.frames[l.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(i.title)?u=i.title.replace(/^(\d+).*$/,"$1"):(u=200,c=t.trim(i.body.innerHTML),v.trigger({type:"progress",loaded:c.length,total:c.length}),x&&v.trigger({type:"uploadprogress",loaded:x.size||1025,total:x.size||1025}))}catch(r){if(!n.hasSameOrigin(d.url))return e.call(v,function(){v.trigger("error")}),void 0;u=404}e.call(v,function(){v.trigger("load")})},v.uid)}var f,p,g,x,v=this,w=v.getRuntime();if(u=c=null,m instanceof s&&m.hasBlob()){if(x=m.getBlob(),f=x.uid,g=i.get(f),p=i.get(f+"_form"),!p)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR)}else f=t.guid("uid_"),p=document.createElement("form"),p.setAttribute("id",f+"_form"),p.setAttribute("method",d.method),p.setAttribute("enctype","multipart/form-data"),p.setAttribute("encoding","multipart/form-data"),w.getShimContainer().appendChild(p);p.setAttribute("target",f+"_iframe"),m instanceof s&&m.each(function(e,i){if(e instanceof a)g&&g.setAttribute("name",i);else{var n=document.createElement("input");t.extend(n,{type:"hidden",name:i,value:e}),g?p.insertBefore(n,g):p.appendChild(n)}}),p.setAttribute("action",d.url),h(),p.submit(),v.trigger("loadstart")},getStatus:function(){return u},getResponse:function(e){if("json"===e&&"string"===t.typeOf(c)&&window.JSON)try{return JSON.parse(c.replace(/^\s*<pre[^>]*>/,"").replace(/<\/pre>\s*$/,""))}catch(i){return null}return c},abort:function(){var t=this;l&&l.contentWindow&&(l.contentWindow.stop?l.contentWindow.stop():l.contentWindow.document.execCommand?l.contentWindow.document.execCommand("Stop"):l.src="about:blank"),e.call(this,function(){t.dispatchEvent("abort")})}})}return e.XMLHttpRequest=u}),n("moxie/runtime/html4/image/Image",["moxie/runtime/html4/Runtime","moxie/runtime/html5/image/Image"],function(e,t){return e.Image=t}),a(["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Dom","moxie/core/EventTarget","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/file/Blob","moxie/core/I18n","moxie/core/utils/Mime","moxie/file/FileInput","moxie/file/File","moxie/file/FileDrop","moxie/file/FileReader","moxie/core/utils/Url","moxie/runtime/RuntimeTarget","moxie/xhr/FormData","moxie/xhr/XMLHttpRequest","moxie/runtime/Transporter","moxie/image/Image","moxie/core/utils/Events","moxie/runtime/html5/image/ResizerCanvas"])}(this)});
|
17 |
-
/**
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
!function(e,t){var i=function(){var e={};return t.apply(e,arguments),e.plupload};"function"==typeof define&&define.amd?define("plupload",["./moxie"],i):"object"==typeof module&&module.exports?module.exports=i(require("./moxie")):e.plupload=i(e.moxie)}(this||window,function(e){!function(e,t,i){function n(e){function t(e,t,i){var r={chunks:"slice_blob",jpgresize:"send_binary_string",pngresize:"send_binary_string",progress:"report_upload_progress",multi_selection:"select_multiple",dragdrop:"drag_and_drop",drop_element:"drag_and_drop",headers:"send_custom_headers",urlstream_upload:"send_binary_string",canSendBinary:"send_binary",triggerDialog:"summon_file_dialog"};r[e]?n[r[e]]=t:i||(n[e]=t)}var i=e.required_features,n={};return"string"==typeof i?l.each(i.split(/\s*,\s*/),function(e){t(e,!0)}):"object"==typeof i?l.each(i,function(e,i){t(i,e)}):i===!0&&(e.chunk_size&&e.chunk_size>0&&(n.slice_blob=!0),l.isEmptyObj(e.resize)&&e.multipart!==!1||(n.send_binary_string=!0),e.http_method&&(n.use_http_method=e.http_method),l.each(e,function(e,i){t(i,!!e,!0)})),n}var r=window.setTimeout,s={},a=t.core.utils,o=t.runtime.Runtime,l={VERSION:"2.3.1",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,FILE_DUPLICATE_ERROR:-602,IMAGE_FORMAT_ERROR:-700,MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:a.Mime.mimes,ua:a.Env,typeOf:a.Basic.typeOf,extend:a.Basic.extend,guid:a.Basic.guid,getAll:function(e){var t,i=[];"array"!==l.typeOf(e)&&(e=[e]);for(var n=e.length;n--;)t=l.get(e[n]),t&&i.push(t);return i.length?i:null},get:a.Dom.get,each:a.Basic.each,getPos:a.Dom.getPos,getSize:a.Dom.getSize,xmlEncode:function(e){var t={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"},i=/[<>&\"\']/g;return e?(""+e).replace(i,function(e){return t[e]?"&"+t[e]+";":e}):e},toArray:a.Basic.toArray,inArray:a.Basic.inArray,inSeries:a.Basic.inSeries,addI18n:t.core.I18n.addI18n,translate:t.core.I18n.translate,sprintf:a.Basic.sprintf,isEmptyObj:a.Basic.isEmptyObj,hasClass:a.Dom.hasClass,addClass:a.Dom.addClass,removeClass:a.Dom.removeClass,getStyle:a.Dom.getStyle,addEvent:a.Events.addEvent,removeEvent:a.Events.removeEvent,removeAllEvents:a.Events.removeAllEvents,cleanName:function(e){var t,i;for(i=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"],t=0;t<i.length;t+=2)e=e.replace(i[t],i[t+1]);return e=e.replace(/\s+/g,"_"),e=e.replace(/[^a-z0-9_\-\.]+/gi,"")},buildUrl:function(e,t){var i="";return l.each(t,function(e,t){i+=(i?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(e)}),i&&(e+=(e.indexOf("?")>0?"&":"?")+i),e},formatSize:function(e){function t(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}if(e===i||/\D/.test(e))return l.translate("N/A");var n=Math.pow(1024,4);return e>n?t(e/n,1)+" "+l.translate("tb"):e>(n/=1024)?t(e/n,1)+" "+l.translate("gb"):e>(n/=1024)?t(e/n,1)+" "+l.translate("mb"):e>1024?Math.round(e/1024)+" "+l.translate("kb"):e+" "+l.translate("b")},parseSize:a.Basic.parseSizeStr,predictRuntime:function(e,t){var i,n;return i=new l.Uploader(e),n=o.thatCan(i.getOption().required_features,t||e.runtimes),i.destroy(),n},addFileFilter:function(e,t){s[e]=t}};l.addFileFilter("mime_types",function(e,t,i){e.length&&!e.regexp.test(t.name)?(this.trigger("Error",{code:l.FILE_EXTENSION_ERROR,message:l.translate("File extension error."),file:t}),i(!1)):i(!0)}),l.addFileFilter("max_file_size",function(e,t,i){var n;e=l.parseSize(e),t.size!==n&&e&&t.size>e?(this.trigger("Error",{code:l.FILE_SIZE_ERROR,message:l.translate("File size error."),file:t}),i(!1)):i(!0)}),l.addFileFilter("prevent_duplicates",function(e,t,i){if(e)for(var n=this.files.length;n--;)if(t.name===this.files[n].name&&t.size===this.files[n].size)return this.trigger("Error",{code:l.FILE_DUPLICATE_ERROR,message:l.translate("Duplicate file error."),file:t}),i(!1),void 0;i(!0)}),l.Uploader=function(e){function a(){var e,t,i=0;if(this.state==l.STARTED){for(t=0;t<x.length;t++)e||x[t].status!=l.QUEUED?i++:(e=x[t],this.trigger("BeforeUpload",e)&&(e.status=l.UPLOADING,this.trigger("UploadFile",e)));i==x.length&&(this.state!==l.STOPPED&&(this.state=l.STOPPED,this.trigger("StateChanged")),this.trigger("UploadComplete",x))}}function u(e){e.percent=e.size>0?Math.ceil(100*(e.loaded/e.size)):100,d()}function d(){var e,t,n,r=0;for(w.reset(),e=0;e<x.length;e++)t=x[e],t.size!==i?(w.size+=t.origSize,n=t.loaded*t.origSize/t.size,(!t.completeTimestamp||t.completeTimestamp>I)&&(r+=n),w.loaded+=n):w.size=i,t.status==l.DONE?w.uploaded++:t.status==l.FAILED?w.failed++:w.queued++;w.size===i?w.percent=x.length>0?Math.ceil(100*(w.uploaded/x.length)):0:(w.bytesPerSec=Math.ceil(r/((+new Date-I||1)/1e3)),w.percent=w.size>0?Math.ceil(100*(w.loaded/w.size)):0)}function c(){var e=U[0]||F[0];return e?e.getRuntime().uid:!1}function f(e,t){if(e.ruid){var i=o.getInfo(e.ruid);if(i)return i.can(t)}return!1}function p(){this.bind("FilesAdded FilesRemoved",function(e){e.trigger("QueueChanged"),e.refresh()}),this.bind("CancelUpload",y),this.bind("BeforeUpload",_),this.bind("UploadFile",E),this.bind("UploadProgress",v),this.bind("StateChanged",b),this.bind("QueueChanged",d),this.bind("Error",z),this.bind("FileUploaded",R),this.bind("Destroy",O)}function g(e,i){var n=this,r=0,s=[],a={runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:P,swf_url:e.flash_swf_url,xap_url:e.silverlight_xap_url};l.each(e.runtimes.split(/\s*,\s*/),function(t){e[t]&&(a[t]=e[t])}),e.browse_button&&l.each(e.browse_button,function(i){s.push(function(s){var u=new t.file.FileInput(l.extend({},a,{accept:e.filters.mime_types,name:e.file_data_name,multiple:e.multi_selection,container:e.container,browse_button:i}));u.onready=function(){var e=o.getInfo(this.ruid);l.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),multi_selection:e.can("select_multiple")}),r++,U.push(this),s()},u.onchange=function(){n.addFile(this.files)},u.bind("mouseenter mouseleave mousedown mouseup",function(t){A||(e.browse_button_hover&&("mouseenter"===t.type?l.addClass(i,e.browse_button_hover):"mouseleave"===t.type&&l.removeClass(i,e.browse_button_hover)),e.browse_button_active&&("mousedown"===t.type?l.addClass(i,e.browse_button_active):"mouseup"===t.type&&l.removeClass(i,e.browse_button_active)))}),u.bind("mousedown",function(){n.trigger("Browse")}),u.bind("error runtimeerror",function(){u=null,s()}),u.init()})}),e.drop_element&&l.each(e.drop_element,function(e){s.push(function(i){var s=new t.file.FileDrop(l.extend({},a,{drop_zone:e}));s.onready=function(){var e=o.getInfo(this.ruid);l.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),dragdrop:e.can("drag_and_drop")}),r++,F.push(this),i()},s.ondrop=function(){n.addFile(this.files)},s.bind("error runtimeerror",function(){s=null,i()}),s.init()})}),l.inSeries(s,function(){"function"==typeof i&&i(r)})}function h(e,n,r){var s=new t.image.Image;try{s.onload=function(){return n.width>this.width&&n.height>this.height&&n.quality===i&&n.preserve_headers&&!n.crop?(this.destroy(),r(e)):(s.downsize(n.width,n.height,n.crop,n.preserve_headers),void 0)},s.onresize=function(){r(this.getAsBlob(e.type,n.quality)),this.destroy()},s.onerror=function(){r(e)},s.load(e)}catch(a){r(e)}}function m(e,i,r){function s(e,i,n){var r=S[e];switch(e){case"max_file_size":"max_file_size"===e&&(S.max_file_size=S.filters.max_file_size=i);break;case"chunk_size":(i=l.parseSize(i))&&(S[e]=i,S.send_file_name=!0);break;case"multipart":S[e]=i,i||(S.send_file_name=!0);break;case"http_method":S[e]="PUT"===i.toUpperCase()?"PUT":"POST";break;case"unique_names":S[e]=i,i&&(S.send_file_name=!0);break;case"filters":"array"===l.typeOf(i)&&(i={mime_types:i}),n?l.extend(S.filters,i):S.filters=i,i.mime_types&&("string"===l.typeOf(i.mime_types)&&(i.mime_types=t.core.utils.Mime.mimes2extList(i.mime_types)),i.mime_types.regexp=function(e){var t=[];return l.each(e,function(e){l.each(e.extensions.split(/,/),function(e){/^\s*\*\s*$/.test(e)?t.push("\\.*"):t.push("\\."+e.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))})}),new RegExp("("+t.join("|")+")$","i")}(i.mime_types),S.filters.mime_types=i.mime_types);break;case"resize":S.resize=i?l.extend({preserve_headers:!0,crop:!1},i):!1;break;case"prevent_duplicates":S.prevent_duplicates=S.filters.prevent_duplicates=!!i;break;case"container":case"browse_button":case"drop_element":i="container"===e?l.get(i):l.getAll(i);case"runtimes":case"multi_selection":case"flash_swf_url":case"silverlight_xap_url":S[e]=i,n||(u=!0);break;default:S[e]=i}n||a.trigger("OptionChanged",e,i,r)}var a=this,u=!1;"object"==typeof e?l.each(e,function(e,t){s(t,e,r)}):s(e,i,r),r?(S.required_features=n(l.extend({},S)),P=n(l.extend({},S,{required_features:!0}))):u&&(a.trigger("Destroy"),g.call(a,S,function(e){e?(a.runtime=o.getInfo(c()).type,a.trigger("Init",{runtime:a.runtime}),a.trigger("PostInit")):a.trigger("Error",{code:l.INIT_ERROR,message:l.translate("Init error.")})}))}function _(e,t){if(e.settings.unique_names){var i=t.name.match(/\.([^.]+)$/),n="part";i&&(n=i[1]),t.target_name=t.id+"."+n}}function E(e,i){function n(){c-->0?r(s,1e3):(i.loaded=g,e.trigger("Error",{code:l.HTTP_ERROR,message:l.translate("HTTP Error."),file:i,response:T.responseText,status:T.status,responseHeaders:T.getAllResponseHeaders()}))}function s(){var t,n,r={};i.status===l.UPLOADING&&e.state!==l.STOPPED&&(e.settings.send_file_name&&(r.name=i.target_name||i.name),d&&p.chunks&&o.size>d?(n=Math.min(d,o.size-g),t=o.slice(g,g+n)):(n=o.size,t=o),d&&p.chunks&&(e.settings.send_chunk_number?(r.chunk=Math.ceil(g/d),r.chunks=Math.ceil(o.size/d)):(r.offset=g,r.total=o.size)),e.trigger("BeforeChunkUpload",i,r,t,g)&&a(r,t,n))}function a(a,d,f){var h;T=new t.xhr.XMLHttpRequest,T.upload&&(T.upload.onprogress=function(t){i.loaded=Math.min(i.size,g+t.loaded),e.trigger("UploadProgress",i)}),T.onload=function(){return T.status>=400?(n(),void 0):(c=e.settings.max_retries,f<o.size?(d.destroy(),g+=f,i.loaded=Math.min(g,o.size),e.trigger("ChunkUploaded",i,{offset:i.loaded,total:o.size,response:T.responseText,status:T.status,responseHeaders:T.getAllResponseHeaders()}),"Android Browser"===l.ua.browser&&e.trigger("UploadProgress",i)):i.loaded=i.size,d=h=null,!g||g>=o.size?(i.size!=i.origSize&&(o.destroy(),o=null),e.trigger("UploadProgress",i),i.status=l.DONE,i.completeTimestamp=+new Date,e.trigger("FileUploaded",i,{response:T.responseText,status:T.status,responseHeaders:T.getAllResponseHeaders()})):r(s,1),void 0)},T.onerror=function(){n()},T.onloadend=function(){this.destroy(),T=null},e.settings.multipart&&p.multipart?(T.open(e.settings.http_method,u,!0),l.each(e.settings.headers,function(e,t){T.setRequestHeader(t,e)}),h=new t.xhr.FormData,l.each(l.extend(a,e.settings.multipart_params),function(e,t){h.append(t,e)}),h.append(e.settings.file_data_name,d),T.send(h,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:P,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url})):(u=l.buildUrl(e.settings.url,l.extend(a,e.settings.multipart_params)),T.open(e.settings.http_method,u,!0),l.each(e.settings.headers,function(e,t){T.setRequestHeader(t,e)}),T.hasRequestHeader("Content-Type")||T.setRequestHeader("Content-Type","application/octet-stream"),T.send(d,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:P,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url}))}var o,u=e.settings.url,d=e.settings.chunk_size,c=e.settings.max_retries,p=e.features,g=0;i.loaded&&(g=i.loaded=d?d*Math.floor(i.loaded/d):0),o=i.getSource(),!l.isEmptyObj(e.settings.resize)&&f(o,"send_binary_string")&&-1!==l.inArray(o.type,["image/jpeg","image/png"])?h.call(this,o,e.settings.resize,function(e){o=e,i.size=e.size,s()}):s()}function v(e,t){u(t)}function b(e){if(e.state==l.STARTED)I=+new Date;else if(e.state==l.STOPPED)for(var t=e.files.length-1;t>=0;t--)e.files[t].status==l.UPLOADING&&(e.files[t].status=l.QUEUED,d())}function y(){T&&T.abort()}function R(e){d(),r(function(){a.call(e)},1)}function z(e,t){t.code===l.INIT_ERROR?e.destroy():t.code===l.HTTP_ERROR&&(t.file.status=l.FAILED,t.file.completeTimestamp=+new Date,u(t.file),e.state==l.STARTED&&(e.trigger("CancelUpload"),r(function(){a.call(e)},1)))}function O(e){e.stop(),l.each(x,function(e){e.destroy()}),x=[],U.length&&(l.each(U,function(e){e.destroy()}),U=[]),F.length&&(l.each(F,function(e){e.destroy()}),F=[]),P={},A=!1,I=T=null,w.reset()}var S,I,w,T,D=l.guid(),x=[],P={},U=[],F=[],A=!1;S={chunk_size:0,file_data_name:"file",filters:{mime_types:[],prevent_duplicates:!1,max_file_size:0},flash_swf_url:"js/Moxie.swf",http_method:"POST",max_retries:0,multipart:!0,multi_selection:!0,resize:!1,runtimes:o.order,send_file_name:!0,send_chunk_number:!0,silverlight_xap_url:"js/Moxie.xap"},m.call(this,e,null,!0),w=new l.QueueProgress,l.extend(this,{id:D,uid:D,state:l.STOPPED,features:{},runtime:null,files:x,settings:S,total:w,init:function(){var e,t,i=this;return e=i.getOption("preinit"),"function"==typeof e?e(i):l.each(e,function(e,t){i.bind(t,e)}),p.call(i),l.each(["container","browse_button","drop_element"],function(e){return null===i.getOption(e)?(t={code:l.INIT_ERROR,message:l.sprintf(l.translate("%s specified, but cannot be found."),e)},!1):void 0}),t?i.trigger("Error",t):S.browse_button||S.drop_element?(g.call(i,S,function(e){var t=i.getOption("init");"function"==typeof t?t(i):l.each(t,function(e,t){i.bind(t,e)}),e?(i.runtime=o.getInfo(c()).type,i.trigger("Init",{runtime:i.runtime}),i.trigger("PostInit")):i.trigger("Error",{code:l.INIT_ERROR,message:l.translate("Init error.")})}),void 0):i.trigger("Error",{code:l.INIT_ERROR,message:l.translate("You must specify either browse_button or drop_element.")})},setOption:function(e,t){m.call(this,e,t,!this.runtime)},getOption:function(e){return e?S[e]:S},refresh:function(){U.length&&l.each(U,function(e){e.trigger("Refresh")}),this.trigger("Refresh")},start:function(){this.state!=l.STARTED&&(this.state=l.STARTED,this.trigger("StateChanged"),a.call(this))},stop:function(){this.state!=l.STOPPED&&(this.state=l.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){A=arguments[0]!==i?arguments[0]:!0,U.length&&l.each(U,function(e){e.disable(A)}),this.trigger("DisableBrowse",A)},getFile:function(e){var t;for(t=x.length-1;t>=0;t--)if(x[t].id===e)return x[t]},addFile:function(e,i){function n(e,t){var i=[];l.each(u.settings.filters,function(t,n){s[n]&&i.push(function(i){s[n].call(u,t,e,function(e){i(!e)})})}),l.inSeries(i,t)}function a(e){var s=l.typeOf(e);if(e instanceof t.file.File){if(!e.ruid&&!e.isDetached()){if(!o)return!1;e.ruid=o,e.connectRuntime(o)}a(new l.File(e))}else e instanceof t.file.Blob?(a(e.getSource()),e.destroy()):e instanceof l.File?(i&&(e.name=i),d.push(function(t){n(e,function(i){i||(x.push(e),f.push(e),u.trigger("FileFiltered",e)),r(t,1)})})):-1!==l.inArray(s,["file","blob"])?a(new t.file.File(null,e)):"node"===s&&"filelist"===l.typeOf(e.files)?l.each(e.files,a):"array"===s&&(i=null,l.each(e,a))}var o,u=this,d=[],f=[];o=c(),a(e),d.length&&l.inSeries(d,function(){f.length&&u.trigger("FilesAdded",f)})},removeFile:function(e){for(var t="string"==typeof e?e:e.id,i=x.length-1;i>=0;i--)if(x[i].id===t)return this.splice(i,1)[0]},splice:function(e,t){var n=x.splice(e===i?0:e,t===i?x.length:t),r=!1;return this.state==l.STARTED&&(l.each(n,function(e){return e.status===l.UPLOADING?(r=!0,!1):void 0}),r&&this.stop()),this.trigger("FilesRemoved",n),l.each(n,function(e){e.destroy()}),r&&this.start(),n},dispatchEvent:function(e){var t,i;if(e=e.toLowerCase(),t=this.hasEventListener(e)){t.sort(function(e,t){return t.priority-e.priority}),i=[].slice.call(arguments),i.shift(),i.unshift(this);for(var n=0;n<t.length;n++)if(t[n].fn.apply(t[n].scope,i)===!1)return!1}return!0},bind:function(e,t,i,n){l.Uploader.prototype.bind.call(this,e,t,n,i)},destroy:function(){this.trigger("Destroy"),S=w=null,this.unbindAll()}})},l.Uploader.prototype=t.core.EventTarget.instance,l.File=function(){function e(e){l.extend(this,{id:l.guid(),name:e.name||e.fileName,type:e.type||"",size:e.size||e.fileSize,origSize:e.size||e.fileSize,loaded:0,percent:0,status:l.QUEUED,lastModifiedDate:e.lastModifiedDate||(new Date).toLocaleString(),completeTimestamp:0,getNative:function(){var e=this.getSource().getSource();return-1!==l.inArray(l.typeOf(e),["blob","file"])?e:null},getSource:function(){return t[this.id]?t[this.id]:null},destroy:function(){var e=this.getSource();e&&(e.destroy(),delete t[this.id])}}),t[this.id]=e}var t={};return e}(),l.QueueProgress=function(){var e=this;e.size=0,e.loaded=0,e.uploaded=0,e.failed=0,e.queued=0,e.percent=0,e.bytesPerSec=0,e.reset=function(){e.size=e.loaded=e.uploaded=e.failed=e.queued=e.percent=e.bytesPerSec=0}},e.plupload=l}(this,e)});
|
10 |
*
|
11 |
* Date: 2017-02-02
|
12 |
*/
|
13 |
+
!function(e, t){var i = function(){var e = {}; return t.apply(e, arguments), e.moxie}; "function" == typeof define && define.amd?define("moxie", [], i):"object" == typeof module && module.exports?module.exports = i():e.moxie = i()}(this || window, function(){!function(e, t){"use strict"; function i(e, t){for (var i, n = [], r = 0; r < e.length; ++r){if (i = s[e[r]] || o(e[r]), !i)throw"module definition dependecy not found: " + e[r]; n.push(i)}t.apply(null, n)}function n(e, n, r){if ("string" != typeof e)throw"invalid module definition, module id must be defined and be a string"; if (n === t)throw"invalid module definition, dependencies must be specified"; if (r === t)throw"invalid module definition, definition function must be specified"; i(n, function(){s[e] = r.apply(null, arguments)})}function r(e){return!!s[e]}function o(t){for (var i = e, n = t.split(/[.\/]/), r = 0; r < n.length; ++r){if (!i[n[r]])return; i = i[n[r]]}return i}function a(i){for (var n = 0; n < i.length; n++){for (var r = e, o = i[n], a = o.split(/[.\/]/), u = 0; u < a.length - 1; ++u)r[a[u]] === t && (r[a[u]] = {}), r = r[a[u]]; r[a[a.length - 1]] = s[o]}}var s = {}; n("moxie/core/utils/Basic", [], function(){function e(e){var t; return e === t?"undefined":null === e?"null":e.nodeType?"node":{}.toString.call(e).match(/\s([a-z|A-Z]+)/)[1].toLowerCase()}function t(){return a(!1, !1, arguments)}function i(){return a(!0, !1, arguments)}function n(){return a(!1, !0, arguments)}function r(){return a(!0, !0, arguments)}function o(i){switch (e(i)){case"array":return Array.prototype.slice.call(i); case"object":return t({}, i)}return i}function a(t, i, n){var r, s = n[0]; return u(n, function(n, c){c > 0 && u(n, function(n, u){var c = - 1 !== m(e(n), ["array", "object"]); return n === r || t && s[u] === r?!0:(c && i && (n = o(n)), e(s[u]) === e(n) && c?a(t, i, [s[u], n]):s[u] = n, void 0)})}), s}function s(e, t){function i(){this.constructor = e}for (var n in t)({}).hasOwnProperty.call(t, n) && (e[n] = t[n]); return i.prototype = t.prototype, e.prototype = new i, e.__parent__ = t.prototype, e}function u(e, t){var i, n, r, o; if (e){try{i = e.length} catch (a){i = o}if (i === o || "number" != typeof i){for (n in e)if (e.hasOwnProperty(n) && t(e[n], n) === !1)return} else for (r = 0; i > r; r++)if (t(e[r], r) === !1)return}}function c(t){var i; if (!t || "object" !== e(t))return!0; for (i in t)return!1; return!0}function l(t, i){function n(r){"function" === e(t[r]) && t[r](function(e){++r < o && !e?n(r):i(e)})}var r = 0, o = t.length; "function" !== e(i) && (i = function(){}), t && t.length || i(), n(r)}function d(e, t){var i = 0, n = e.length, r = new Array(n); u(e, function(e, o){e(function(e){if (e)return t(e); var a = [].slice.call(arguments); a.shift(), r[o] = a, i++, i === n && (r.unshift(null), t.apply(this, r))})})}function m(e, t){if (t){if (Array.prototype.indexOf)return Array.prototype.indexOf.call(t, e); for (var i = 0, n = t.length; n > i; i++)if (t[i] === e)return i}return - 1}function h(t, i){var n = []; "array" !== e(t) && (t = [t]), "array" !== e(i) && (i = [i]); for (var r in t) - 1 === m(t[r], i) && n.push(t[r]); return n.length?n:!1}function f(e, t){var i = []; return u(e, function(e){ - 1 !== m(e, t) && i.push(e)}), i.length?i:null}function p(e){var t, i = []; for (t = 0; t < e.length; t++)i[t] = e[t]; return i}function g(e){return e?String.prototype.trim?String.prototype.trim.call(e):e.toString().replace(/^\s*/, "").replace(/\s*$/, ""):e}function x(e){if ("string" != typeof e)return e; var t, i = {t:1099511627776, g:1073741824, m:1048576, k:1024}; return e = /^([0-9\.]+)([tmgk]?)$/.exec(e.toLowerCase().replace(/[^0-9\.tmkg]/g, "")), t = e[2], e = + e[1], i.hasOwnProperty(t) && (e *= i[t]), Math.floor(e)}function v(t){var i = [].slice.call(arguments, 1); return t.replace(/%[a-z]/g, function(){var t = i.shift(); return"undefined" !== e(t)?t:""})}function w(e, t){var i = this; setTimeout(function(){e.call(i)}, t || 1)}var y = function(){var e = 0; return function(t){var i, n = (new Date).getTime().toString(32); for (i = 0; 5 > i; i++)n += Math.floor(65535 * Math.random()).toString(32); return(t || "o_") + n + (e++).toString(32)}}(); return{guid:y, typeOf:e, extend:t, extendIf:i, extendImmutable:n, extendImmutableIf:r, inherit:s, each:u, isEmptyObj:c, inSeries:l, inParallel:d, inArray:m, arrayDiff:h, arrayIntersect:f, toArray:p, trim:g, sprintf:v, parseSizeStr:x, delay:w}}), n("moxie/core/utils/Encode", [], function(){var e = function(e){return unescape(encodeURIComponent(e))}, t = function(e){return decodeURIComponent(escape(e))}, i = function(e, i){if ("function" == typeof window.atob)return i?t(window.atob(e)):window.atob(e); var n, r, o, a, s, u, c, l, d = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", m = 0, h = 0, f = "", p = []; if (!e)return e; e += ""; do a = d.indexOf(e.charAt(m++)), s = d.indexOf(e.charAt(m++)), u = d.indexOf(e.charAt(m++)), c = d.indexOf(e.charAt(m++)), l = a << 18 | s << 12 | u << 6 | c, n = 255 & l >> 16, r = 255 & l >> 8, o = 255 & l, p[h++] = 64 == u?String.fromCharCode(n):64 == c?String.fromCharCode(n, r):String.fromCharCode(n, r, o); while (m < e.length); return f = p.join(""), i?t(f):f}, n = function(t, i){if (i && (t = e(t)), "function" == typeof window.btoa)return window.btoa(t); var n, r, o, a, s, u, c, l, d = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", m = 0, h = 0, f = "", p = []; if (!t)return t; do n = t.charCodeAt(m++), r = t.charCodeAt(m++), o = t.charCodeAt(m++), l = n << 16 | r << 8 | o, a = 63 & l >> 18, s = 63 & l >> 12, u = 63 & l >> 6, c = 63 & l, p[h++] = d.charAt(a) + d.charAt(s) + d.charAt(u) + d.charAt(c); while (m < t.length); f = p.join(""); var g = t.length % 3; return(g?f.slice(0, g - 3):f) + "===".slice(g || 3)}; return{utf8_encode:e, utf8_decode:t, atob:i, btoa:n}}), n("moxie/core/utils/Env", ["moxie/core/utils/Basic"], function(e){function t(e, t, i){var n = 0, r = 0, o = 0, a = {dev: - 6, alpha: - 5, a: - 5, beta: - 4, b: - 4, RC: - 3, rc: - 3, "#": - 2, p:1, pl:1}, s = function(e){return e = ("" + e).replace(/[_\-+]/g, "."), e = e.replace(/([^.\d]+)/g, ".$1.").replace(/\.{2,}/g, "."), e.length?e.split("."):[ - 8]}, u = function(e){return e?isNaN(e)?a[e] || - 7:parseInt(e, 10):0}; for (e = s(e), t = s(t), r = Math.max(e.length, t.length), n = 0; r > n; n++)if (e[n] != t[n]){if (e[n] = u(e[n]), t[n] = u(t[n]), e[n] < t[n]){o = - 1; break}if (e[n] > t[n]){o = 1; break}}if (!i)return o; switch (i){case">":case"gt":return o > 0; case">=":case"ge":return o >= 0; case"<=":case"le":return 0 >= o; case"==":case"=":case"eq":return 0 === o; case"<>":case"!=":case"ne":return 0 !== o; case"":case"<":case"lt":return 0 > o; default:return null}}var i = function(e){var t = "", i = "?", n = "function", r = "undefined", o = "object", a = "name", s = "version", u = {has:function(e, t){return - 1 !== t.toLowerCase().indexOf(e.toLowerCase())}, lowerize:function(e){return e.toLowerCase()}}, c = {rgx:function(){for (var t, i, a, s, u, c, l, d = 0, m = arguments; d < m.length; d += 2){var h = m[d], f = m[d + 1]; if (typeof t === r){t = {}; for (s in f)u = f[s], typeof u === o?t[u[0]] = e:t[u] = e}for (i = a = 0; i < h.length; i++)if (c = h[i].exec(this.getUA())){for (s = 0; s < f.length; s++)l = c[++a], u = f[s], typeof u === o && u.length > 0?2 == u.length?t[u[0]] = typeof u[1] == n?u[1].call(this, l):u[1]:3 == u.length?t[u[0]] = typeof u[1] !== n || u[1].exec && u[1].test?l?l.replace(u[1], u[2]):e:l?u[1].call(this, l, u[2]):e:4 == u.length && (t[u[0]] = l?u[3].call(this, l.replace(u[1], u[2])):e):t[u] = l?l:e; break}if (c)break}return t}, str:function(t, n){for (var r in n)if (typeof n[r] === o && n[r].length > 0){for (var a = 0; a < n[r].length; a++)if (u.has(n[r][a], t))return r === i?e:r} else if (u.has(n[r], t))return r === i?e:r; return t}}, l = {browser:{oldsafari:{major:{1:["/8", "/1", "/3"], 2:"/4", "?":"/"}, version:{"1.0":"/8", 1.2:"/1", 1.3:"/3", "2.0":"/412", "2.0.2":"/416", "2.0.3":"/417", "2.0.4":"/419", "?":"/"}}}, device:{sprint:{model:{"Evo Shift 4G":"7373KT"}, vendor:{HTC:"APA", Sprint:"Sprint"}}}, os:{windows:{version:{ME:"4.90", "NT 3.11":"NT3.51", "NT 4.0":"NT4.0", 2000:"NT 5.0", XP:["NT 5.1", "NT 5.2"], Vista:"NT 6.0", 7:"NT 6.1", 8:"NT 6.2", 8.1:"NT 6.3", RT:"ARM"}}}}, d = {browser:[[/(opera\smini)\/([\w\.-]+)/i, /(opera\s[mobiletab]+).+version\/([\w\.-]+)/i, /(opera).+version\/([\w\.]+)/i, /(opera)[\/\s]+([\w\.]+)/i], [a, s], [/\s(opr)\/([\w\.]+)/i], [[a, "Opera"], s], [/(kindle)\/([\w\.]+)/i, /(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]+)*/i, /(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?([\w\.]*)/i, /(?:ms|\()(ie)\s([\w\.]+)/i, /(rekonq)\/([\w\.]+)*/i, /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi)\/([\w\.-]+)/i], [a, s], [/(trident).+rv[:\s]([\w\.]+).+like\sgecko/i], [[a, "IE"], s], [/(edge)\/((\d+)?[\w\.]+)/i], [a, s], [/(yabrowser)\/([\w\.]+)/i], [[a, "Yandex"], s], [/(comodo_dragon)\/([\w\.]+)/i], [[a, /_/g, " "], s], [/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i, /(uc\s?browser|qqbrowser)[\/\s]?([\w\.]+)/i], [a, s], [/(dolfin)\/([\w\.]+)/i], [[a, "Dolphin"], s], [/((?:android.+)crmo|crios)\/([\w\.]+)/i], [[a, "Chrome"], s], [/XiaoMi\/MiuiBrowser\/([\w\.]+)/i], [s, [a, "MIUI Browser"]], [/android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)/i], [s, [a, "Android Browser"]], [/FBAV\/([\w\.]+);/i], [s, [a, "Facebook"]], [/version\/([\w\.]+).+?mobile\/\w+\s(safari)/i], [s, [a, "Mobile Safari"]], [/version\/([\w\.]+).+?(mobile\s?safari|safari)/i], [s, a], [/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i], [a, [s, c.str, l.browser.oldsafari.version]], [/(konqueror)\/([\w\.]+)/i, /(webkit|khtml)\/([\w\.]+)/i], [a, s], [/(navigator|netscape)\/([\w\.-]+)/i], [[a, "Netscape"], s], [/(swiftfox)/i, /(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i, /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\/([\w\.-]+)/i, /(mozilla)\/([\w\.]+).+rv\:.+gecko\/\d+/i, /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf)[\/\s]?([\w\.]+)/i, /(links)\s\(([\w\.]+)/i, /(gobrowser)\/?([\w\.]+)*/i, /(ice\s?browser)\/v?([\w\._]+)/i, /(mosaic)[\/\s]([\w\.]+)/i], [a, s]], engine:[[/windows.+\sedge\/([\w\.]+)/i], [s, [a, "EdgeHTML"]], [/(presto)\/([\w\.]+)/i, /(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i, /(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i, /(icab)[\/\s]([23]\.[\d\.]+)/i], [a, s], [/rv\:([\w\.]+).*(gecko)/i], [s, a]], os:[[/microsoft\s(windows)\s(vista|xp)/i], [a, s], [/(windows)\snt\s6\.2;\s(arm)/i, /(windows\sphone(?:\sos)*|windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i], [a, [s, c.str, l.os.windows.version]], [/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i], [[a, "Windows"], [s, c.str, l.os.windows.version]], [/\((bb)(10);/i], [[a, "BlackBerry"], s], [/(blackberry)\w*\/?([\w\.]+)*/i, /(tizen)[\/\s]([\w\.]+)/i, /(android|webos|palm\os|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]+)*/i, /linux;.+(sailfish);/i], [a, s], [/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]+)*/i], [[a, "Symbian"], s], [/\((series40);/i], [a], [/mozilla.+\(mobile;.+gecko.+firefox/i], [[a, "Firefox OS"], s], [/(nintendo|playstation)\s([wids3portablevu]+)/i, /(mint)[\/\s\(]?(\w+)*/i, /(mageia|vectorlinux)[;\s]/i, /(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?([\w\.-]+)*/i, /(hurd|linux)\s?([\w\.]+)*/i, /(gnu)\s?([\w\.]+)*/i], [a, s], [/(cros)\s[\w]+\s([\w\.]+\w)/i], [[a, "Chromium OS"], s], [/(sunos)\s?([\w\.]+\d)*/i], [[a, "Solaris"], s], [/\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]+)*/i], [a, s], [/(ip[honead]+)(?:.*os\s*([\w]+)*\slike\smac|;\sopera)/i], [[a, "iOS"], [s, /_/g, "."]], [/(mac\sos\sx)\s?([\w\s\.]+\w)*/i, /(macintosh|mac(?=_powerpc)\s)/i], [[a, "Mac OS"], [s, /_/g, "."]], [/((?:open)?solaris)[\/\s-]?([\w\.]+)*/i, /(haiku)\s(\w+)/i, /(aix)\s((\d)(?=\.|\)|\s)[\w\.]*)*/i, /(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms)/i, /(unix)\s?([\w\.]+)*/i], [a, s]]}, m = function(e){var i = e || (window && window.navigator && window.navigator.userAgent?window.navigator.userAgent:t); this.getBrowser = function(){return c.rgx.apply(this, d.browser)}, this.getEngine = function(){return c.rgx.apply(this, d.engine)}, this.getOS = function(){return c.rgx.apply(this, d.os)}, this.getResult = function(){return{ua:this.getUA(), browser:this.getBrowser(), engine:this.getEngine(), os:this.getOS()}}, this.getUA = function(){return i}, this.setUA = function(e){return i = e, this}, this.setUA(i)}; return m}(), n = function(){var t = {define_property:function(){return!1}(), create_canvas:function(){var e = document.createElement("canvas"); return!(!e.getContext || !e.getContext("2d"))}(), return_response_type:function(t){try{if ( - 1 !== e.inArray(t, ["", "text", "document"]))return!0; if (window.XMLHttpRequest){var i = new XMLHttpRequest; if (i.open("get", "/"), "responseType"in i)return i.responseType = t, i.responseType !== t?!1:!0}} catch (n){}return!1}, use_data_uri:function(){var e = new Image; return e.onload = function(){t.use_data_uri = 1 === e.width && 1 === e.height}, setTimeout(function(){e.src = "data:image/gif;base64,R0lGODlhAQABAIAAAP8AAAAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=="}, 1), !1}(), use_data_uri_over32kb:function(){return t.use_data_uri && ("IE" !== o.browser || o.version >= 9)}, use_data_uri_of:function(e){return t.use_data_uri && 33e3 > e || t.use_data_uri_over32kb()}, use_fileinput:function(){if (navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/))return!1; var e = document.createElement("input"); return e.setAttribute("type", "file"), !e.disabled}}; return function(i){var n = [].slice.call(arguments); return n.shift(), "function" === e.typeOf(t[i])?t[i].apply(this, n):!!t[i]}}(), r = (new i).getResult(), o = {can:n, uaParser:i, browser:r.browser.name, version:r.browser.version, os:r.os.name, osVersion:r.os.version, verComp:t, swf_url:"../flash/Moxie.swf", xap_url:"../silverlight/Moxie.xap", global_event_dispatcher:"moxie.core.EventTarget.instance.dispatchEvent"}; return o.OS = o.os, o}), n("moxie/core/Exceptions", ["moxie/core/utils/Basic"], function(e){function t(e, t){var i; for (i in e)if (e[i] === t)return i; return null}return{RuntimeError:function(){function i(e, i){this.code = e, this.name = t(n, e), this.message = this.name + (i || ": RuntimeError " + this.code)}var n = {NOT_INIT_ERR:1, EXCEPTION_ERR:3, NOT_SUPPORTED_ERR:9, JS_ERR:4}; return e.extend(i, n), i.prototype = Error.prototype, i}(), OperationNotAllowedException:function(){function t(e){this.code = e, this.name = "OperationNotAllowedException"}return e.extend(t, {NOT_ALLOWED_ERR:1}), t.prototype = Error.prototype, t}(), ImageError:function(){function i(e){this.code = e, this.name = t(n, e), this.message = this.name + ": ImageError " + this.code}var n = {WRONG_FORMAT:1, MAX_RESOLUTION_ERR:2, INVALID_META_ERR:3}; return e.extend(i, n), i.prototype = Error.prototype, i}(), FileException:function(){function i(e){this.code = e, this.name = t(n, e), this.message = this.name + ": FileException " + this.code}var n = {NOT_FOUND_ERR:1, SECURITY_ERR:2, ABORT_ERR:3, NOT_READABLE_ERR:4, ENCODING_ERR:5, NO_MODIFICATION_ALLOWED_ERR:6, INVALID_STATE_ERR:7, SYNTAX_ERR:8}; return e.extend(i, n), i.prototype = Error.prototype, i}(), DOMException:function(){function i(e){this.code = e, this.name = t(n, e), this.message = this.name + ": DOMException " + this.code}var n = {INDEX_SIZE_ERR:1, DOMSTRING_SIZE_ERR:2, HIERARCHY_REQUEST_ERR:3, WRONG_DOCUMENT_ERR:4, INVALID_CHARACTER_ERR:5, NO_DATA_ALLOWED_ERR:6, NO_MODIFICATION_ALLOWED_ERR:7, NOT_FOUND_ERR:8, NOT_SUPPORTED_ERR:9, INUSE_ATTRIBUTE_ERR:10, INVALID_STATE_ERR:11, SYNTAX_ERR:12, INVALID_MODIFICATION_ERR:13, NAMESPACE_ERR:14, INVALID_ACCESS_ERR:15, VALIDATION_ERR:16, TYPE_MISMATCH_ERR:17, SECURITY_ERR:18, NETWORK_ERR:19, ABORT_ERR:20, URL_MISMATCH_ERR:21, QUOTA_EXCEEDED_ERR:22, TIMEOUT_ERR:23, INVALID_NODE_TYPE_ERR:24, DATA_CLONE_ERR:25}; return e.extend(i, n), i.prototype = Error.prototype, i}(), EventException:function(){function t(e){this.code = e, this.name = "EventException"}return e.extend(t, {UNSPECIFIED_EVENT_TYPE_ERR:0}), t.prototype = Error.prototype, t}()}}), n("moxie/core/utils/Dom", ["moxie/core/utils/Env"], function(e){var t = function(e){return"string" != typeof e?e:document.getElementById(e)}, i = function(e, t){if (!e.className)return!1; var i = new RegExp("(^|\\s+)" + t + "(\\s+|$)"); return i.test(e.className)}, n = function(e, t){i(e, t) || (e.className = e.className?e.className.replace(/\s+$/, "") + " " + t:t)}, r = function(e, t){if (e.className){var i = new RegExp("(^|\\s+)" + t + "(\\s+|$)"); e.className = e.className.replace(i, function(e, t, i){return" " === t && " " === i?" ":""})}}, o = function(e, t){return e.currentStyle?e.currentStyle[t]:window.getComputedStyle?window.getComputedStyle(e, null)[t]:void 0}, a = function(t, i){function n(e){var t, i, n = 0, r = 0; return e && (i = e.getBoundingClientRect(), t = "CSS1Compat" === c.compatMode?c.documentElement:c.body, n = i.left + t.scrollLeft, r = i.top + t.scrollTop), {x:n, y:r}}var r, o, a, s = 0, u = 0, c = document; if (t = t, i = i || c.body, t && t.getBoundingClientRect && "IE" === e.browser && (!c.documentMode || c.documentMode < 8))return o = n(t), a = n(i), {x:o.x - a.x, y:o.y - a.y}; for (r = t; r && r != i && r.nodeType; )s += r.offsetLeft || 0, u += r.offsetTop || 0, r = r.offsetParent; for (r = t.parentNode; r && r != i && r.nodeType; )s -= r.scrollLeft || 0, u -= r.scrollTop || 0, r = r.parentNode; return{x:s, y:u}}, s = function(e){return{w:e.offsetWidth || e.clientWidth, h:e.offsetHeight || e.clientHeight}}; return{get:t, hasClass:i, addClass:n, removeClass:r, getStyle:o, getPos:a, getSize:s}}), n("moxie/core/EventTarget", ["moxie/core/utils/Env", "moxie/core/Exceptions", "moxie/core/utils/Basic"], function(e, t, i){function n(){this.uid = i.guid()}var r = {}; return i.extend(n.prototype, {init:function(){this.uid || (this.uid = i.guid("uid_"))}, addEventListener:function(e, t, n, o){var a, s = this; return this.hasOwnProperty("uid") || (this.uid = i.guid("uid_")), e = i.trim(e), /\s/.test(e)?(i.each(e.split(/\s+/), function(e){s.addEventListener(e, t, n, o)}), void 0):(e = e.toLowerCase(), n = parseInt(n, 10) || 0, a = r[this.uid] && r[this.uid][e] || [], a.push({fn:t, priority:n, scope:o || this}), r[this.uid] || (r[this.uid] = {}), r[this.uid][e] = a, void 0)}, hasEventListener:function(e){var t; return e?(e = e.toLowerCase(), t = r[this.uid] && r[this.uid][e]):t = r[this.uid], t?t:!1}, removeEventListener:function(e, t){var n, o, a = this; if (e = e.toLowerCase(), /\s/.test(e))return i.each(e.split(/\s+/), function(e){a.removeEventListener(e, t)}), void 0; if (n = r[this.uid] && r[this.uid][e]){if (t){for (o = n.length - 1; o >= 0; o--)if (n[o].fn === t){n.splice(o, 1); break}} else n = []; n.length || (delete r[this.uid][e], i.isEmptyObj(r[this.uid]) && delete r[this.uid])}}, removeAllEventListeners:function(){r[this.uid] && delete r[this.uid]}, dispatchEvent:function(e){var n, o, a, s, u, c = {}, l = !0; if ("string" !== i.typeOf(e)){if (s = e, "string" !== i.typeOf(s.type))throw new t.EventException(t.EventException.UNSPECIFIED_EVENT_TYPE_ERR); e = s.type, s.total !== u && s.loaded !== u && (c.total = s.total, c.loaded = s.loaded), c.async = s.async || !1}if ( - 1 !== e.indexOf("::")?function(t){n = t[0], e = t[1]}(e.split("::")):n = this.uid, e = e.toLowerCase(), o = r[n] && r[n][e]){o.sort(function(e, t){return t.priority - e.priority}), a = [].slice.call(arguments), a.shift(), c.type = e, a.unshift(c); var d = []; i.each(o, function(e){a[0].target = e.scope, c.async?d.push(function(t){setTimeout(function(){t(e.fn.apply(e.scope, a) === !1)}, 1)}):d.push(function(t){t(e.fn.apply(e.scope, a) === !1)})}), d.length && i.inSeries(d, function(e){l = !e})}return l}, bindOnce:function(e, t, i, n){var r = this; r.bind.call(this, e, function o(){return r.unbind(e, o), t.apply(this, arguments)}, i, n)}, bind:function(){this.addEventListener.apply(this, arguments)}, unbind:function(){this.removeEventListener.apply(this, arguments)}, unbindAll:function(){this.removeAllEventListeners.apply(this, arguments)}, trigger:function(){return this.dispatchEvent.apply(this, arguments)}, handleEventProps:function(e){var t = this; this.bind(e.join(" "), function(e){var t = "on" + e.type.toLowerCase(); "function" === i.typeOf(this[t]) && this[t].apply(this, arguments)}), i.each(e, function(e){e = "on" + e.toLowerCase(e), "undefined" === i.typeOf(t[e]) && (t[e] = null)})}}), n.instance = new n, n}), n("moxie/runtime/Runtime", ["moxie/core/utils/Env", "moxie/core/utils/Basic", "moxie/core/utils/Dom", "moxie/core/EventTarget"], function(e, t, i, n){function r(e, n, o, s, u){var c, l = this, d = t.guid(n + "_"), m = u || "browser"; e = e || {}, a[d] = this, o = t.extend({access_binary:!1, access_image_binary:!1, display_media:!1, do_cors:!1, drag_and_drop:!1, filter_by_extension:!0, resize_image:!1, report_upload_progress:!1, return_response_headers:!1, return_response_type:!1, return_status_code:!0, send_custom_headers:!1, select_file:!1, select_folder:!1, select_multiple:!0, send_binary_string:!1, send_browser_cookies:!0, send_multipart:!0, slice_blob:!1, stream_upload:!1, summon_file_dialog:!1, upload_filesize:!0, use_http_method:!0}, o), e.preferred_caps && (m = r.getMode(s, e.preferred_caps, m)), c = function(){var e = {}; return{exec:function(t, i, n, r){return c[i] && (e[t] || (e[t] = {context:this, instance:new c[i]}), e[t].instance[n])?e[t].instance[n].apply(this, r):void 0}, removeInstance:function(t){delete e[t]}, removeAllInstances:function(){var i = this; t.each(e, function(e, n){"function" === t.typeOf(e.instance.destroy) && e.instance.destroy.call(e.context), i.removeInstance(n)})}}}(), t.extend(this, {initialized:!1, uid:d, type:n, mode:r.getMode(s, e.required_caps, m), shimid:d + "_container", clients:0, options:e, can:function(e, i){var n = arguments[2] || o; if ("string" === t.typeOf(e) && "undefined" === t.typeOf(i) && (e = r.parseCaps(e)), "object" === t.typeOf(e)){for (var a in e)if (!this.can(a, e[a], n))return!1; return!0}return"function" === t.typeOf(n[e])?n[e].call(this, i):i === n[e]}, getShimContainer:function(){var e, n = i.get(this.shimid); return n || (e = i.get(this.options.container) || document.body, n = document.createElement("div"), n.id = this.shimid, n.className = "moxie-shim moxie-shim-" + this.type, t.extend(n.style, {position:"absolute", top:"0px", left:"0px", width:"1px", height:"1px", overflow:"hidden"}), e.appendChild(n), e = null), n}, getShim:function(){return c}, shimExec:function(e, t){var i = [].slice.call(arguments, 2); return l.getShim().exec.call(this, this.uid, e, t, i)}, exec:function(e, t){var i = [].slice.call(arguments, 2); return l[e] && l[e][t]?l[e][t].apply(this, i):l.shimExec.apply(this, arguments)}, destroy:function(){if (l){var e = i.get(this.shimid); e && e.parentNode.removeChild(e), c && c.removeAllInstances(), this.unbindAll(), delete a[this.uid], this.uid = null, d = l = c = e = null}}}), this.mode && e.required_caps && !this.can(e.required_caps) && (this.mode = !1)}var o = {}, a = {}; return r.order = "html5,flash,silverlight,html4", r.getRuntime = function(e){return a[e]?a[e]:!1}, r.addConstructor = function(e, t){t.prototype = n.instance, o[e] = t}, r.getConstructor = function(e){return o[e] || null}, r.getInfo = function(e){var t = r.getRuntime(e); return t?{uid:t.uid, type:t.type, mode:t.mode, can:function(){return t.can.apply(t, arguments)}}:null}, r.parseCaps = function(e){var i = {}; return"string" !== t.typeOf(e)?e || {}:(t.each(e.split(","), function(e){i[e] = !0}), i)}, r.can = function(e, t){var i, n, o = r.getConstructor(e); return o?(i = new o({required_caps:t}), n = i.mode, i.destroy(), !!n):!1}, r.thatCan = function(e, t){var i = (t || r.order).split(/\s*,\s*/); for (var n in i)if (r.can(i[n], e))return i[n]; return null}, r.getMode = function(e, i, n){var r = null; if ("undefined" === t.typeOf(n) && (n = "browser"), i && !t.isEmptyObj(e)){if (t.each(i, function(i, n){if (e.hasOwnProperty(n)){var o = e[n](i); if ("string" == typeof o && (o = [o]), r){if (!(r = t.arrayIntersect(r, o)))return r = !1} else r = o}}), r)return - 1 !== t.inArray(n, r)?n:r[0]; if (r === !1)return!1}return n}, r.capTrue = function(){return!0}, r.capFalse = function(){return!1}, r.capTest = function(e){return function(){return!!e}}, r}), n("moxie/runtime/RuntimeClient", ["moxie/core/utils/Env", "moxie/core/Exceptions", "moxie/core/utils/Basic", "moxie/runtime/Runtime"], function(e, t, i, n){return function(){var e; i.extend(this, {connectRuntime:function(r){function o(i){var a, u; return i.length?(a = i.shift().toLowerCase(), (u = n.getConstructor(a))?(e = new u(r), e.bind("Init", function(){e.initialized = !0, setTimeout(function(){e.clients++, s.ruid = e.uid, s.trigger("RuntimeInit", e)}, 1)}), e.bind("Error", function(){e.destroy(), o(i)}), e.bind("Exception", function(e, i){var n = i.name + "(#" + i.code + ")" + (i.message?", from: " + i.message:""); s.trigger("RuntimeError", new t.RuntimeError(t.RuntimeError.EXCEPTION_ERR, n))}), e.mode?(e.init(), void 0):(e.trigger("Error"), void 0)):(o(i), void 0)):(s.trigger("RuntimeError", new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)), e = null, void 0)}var a, s = this; if ("string" === i.typeOf(r)?a = r:"string" === i.typeOf(r.ruid) && (a = r.ruid), a){if (e = n.getRuntime(a))return s.ruid = a, e.clients++, e; throw new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)}o((r.runtime_order || n.order).split(/\s*,\s*/))}, disconnectRuntime:function(){e && --e.clients <= 0 && e.destroy(), e = null}, getRuntime:function(){return e && e.uid?e:e = null}, exec:function(){return e?e.exec.apply(this, arguments):null}, can:function(t){return e?e.can(t):!1}})}}), n("moxie/file/Blob", ["moxie/core/utils/Basic", "moxie/core/utils/Encode", "moxie/runtime/RuntimeClient"], function(e, t, i){function n(o, a){function s(t, i, o){var a, s = r[this.uid]; return"string" === e.typeOf(s) && s.length?(a = new n(null, {type:o, size:i - t}), a.detach(s.substr(t, a.size)), a):null}i.call(this), o && this.connectRuntime(o), a?"string" === e.typeOf(a) && (a = {data:a}):a = {}, e.extend(this, {uid:a.uid || e.guid("uid_"), ruid:o, size:a.size || 0, type:a.type || "", slice:function(e, t, i){return this.isDetached()?s.apply(this, arguments):this.getRuntime().exec.call(this, "Blob", "slice", this.getSource(), e, t, i)}, getSource:function(){return r[this.uid]?r[this.uid]:null}, detach:function(e){if (this.ruid && (this.getRuntime().exec.call(this, "Blob", "destroy"), this.disconnectRuntime(), this.ruid = null), e = e || "", "data:" == e.substr(0, 5)){var i = e.indexOf(";base64,"); this.type = e.substring(5, i), e = t.atob(e.substring(i + 8))}this.size = e.length, r[this.uid] = e}, isDetached:function(){return!this.ruid && "string" === e.typeOf(r[this.uid])}, destroy:function(){this.detach(), delete r[this.uid]}}), a.data?this.detach(a.data):r[this.uid] = a}var r = {}; return n}), n("moxie/core/I18n", ["moxie/core/utils/Basic"], function(e){var t = {}; return{addI18n:function(i){return e.extend(t, i)}, translate:function(e){return t[e] || e}, _:function(e){return this.translate(e)}, sprintf:function(t){var i = [].slice.call(arguments, 1); return t.replace(/%[a-z]/g, function(){var t = i.shift(); return"undefined" !== e.typeOf(t)?t:""})}}}), n("moxie/core/utils/Mime", ["moxie/core/utils/Basic", "moxie/core/I18n"], function(e, t){var i = "application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mp3 mpga mpega mp2,audio/x-wav,wav,audio/x-m4a,m4a,audio/ogg,oga ogg,audio/aiff,aiff aif,audio/flac,flac,audio/aac,aac,audio/ac3,ac3,audio/x-ms-wma,wma,image/bmp,bmp,image/gif,gif,image/jpeg,jpg jpeg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gpp 3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,video/ogg,ogv,video/x-matroska,mkv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe", n = {mimes:{}, extensions:{}, addMimeType:function(e){var t, i, n, r = e.split(/,/); for (t = 0; t < r.length; t += 2){for (n = r[t + 1].split(/ /), i = 0; i < n.length; i++)this.mimes[n[i]] = r[t]; this.extensions[r[t]] = n}}, extList2mimes:function(t, i){var n, r, o, a, s = this, u = []; for (r = 0; r < t.length; r++)for (n = t[r].extensions.toLowerCase().split(/\s*,\s*/), o = 0; o < n.length; o++){if ("*" === n[o])return[]; if (a = s.mimes[n[o]], i && /^\w+$/.test(n[o]))u.push("." + n[o]); else if (a && - 1 === e.inArray(a, u))u.push(a); else if (!a)return[]}return u}, mimes2exts:function(t){var i = this, n = []; return e.each(t, function(t){if (t = t.toLowerCase(), "*" === t)return n = [], !1; var r = t.match(/^(\w+)\/(\*|\w+)$/); r && ("*" === r[2]?e.each(i.extensions, function(e, t){new RegExp("^" + r[1] + "/").test(t) && [].push.apply(n, i.extensions[t])}):i.extensions[t] && [].push.apply(n, i.extensions[t]))}), n}, mimes2extList:function(i){var n = [], r = []; return"string" === e.typeOf(i) && (i = e.trim(i).split(/\s*,\s*/)), r = this.mimes2exts(i), n.push({title:t.translate("Files"), extensions:r.length?r.join(","):"*"}), n.mimes = i, n}, getFileExtension:function(e){var t = e && e.match(/\.([^.]+)$/); return t?t[1].toLowerCase():""}, getFileMime:function(e){return this.mimes[this.getFileExtension(e)] || ""}}; return n.addMimeType(i), n}), n("moxie/file/FileInput", ["moxie/core/utils/Basic", "moxie/core/utils/Env", "moxie/core/utils/Mime", "moxie/core/utils/Dom", "moxie/core/Exceptions", "moxie/core/EventTarget", "moxie/core/I18n", "moxie/runtime/Runtime", "moxie/runtime/RuntimeClient"], function(e, t, i, n, r, o, a, s, u){function c(t){var o, c, d; if ( - 1 !== e.inArray(e.typeOf(t), ["string", "node"]) && (t = {browse_button:t}), c = n.get(t.browse_button), !c)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR); d = {accept:[{title:a.translate("All Files"), extensions:"*"}], multiple:!1, required_caps:!1, container:c.parentNode || document.body}, t = e.extend({}, d, t), "string" == typeof t.required_caps && (t.required_caps = s.parseCaps(t.required_caps)), "string" == typeof t.accept && (t.accept = i.mimes2extList(t.accept)), o = n.get(t.container), o || (o = document.body), "static" === n.getStyle(o, "position") && (o.style.position = "relative"), o = c = null, u.call(this), e.extend(this, {uid:e.guid("uid_"), ruid:null, shimid:null, files:null, init:function(){var i = this; i.bind("RuntimeInit", function(r, o){i.ruid = o.uid, i.shimid = o.shimid, i.bind("Ready", function(){i.trigger("Refresh")}, 999), i.bind("Refresh", function(){var i, r, a, s, u; a = n.get(t.browse_button), s = n.get(o.shimid), a && (i = n.getPos(a, n.get(t.container)), r = n.getSize(a), u = parseInt(n.getStyle(a, "z-index"), 10) || 0, s && e.extend(s.style, {top:i.y + "px", left:i.x + "px", width:r.w + "px", height:r.h + "px", zIndex:u + 1})), s = a = null}), o.exec.call(i, "FileInput", "init", t)}), i.connectRuntime(e.extend({}, t, {required_caps:{select_file:!0}}))}, getOption:function(e){return t[e]}, setOption:function(e, n){if (t.hasOwnProperty(e)){var o = t[e]; switch (e){case"accept":"string" == typeof n && (n = i.mimes2extList(n)); break; case"container":case"required_caps":throw new r.FileException(r.FileException.NO_MODIFICATION_ALLOWED_ERR)}t[e] = n, this.exec("FileInput", "setOption", e, n), this.trigger("OptionChanged", e, n, o)}}, disable:function(t){var i = this.getRuntime(); i && this.exec("FileInput", "disable", "undefined" === e.typeOf(t)?!0:t)}, refresh:function(){this.trigger("Refresh")}, destroy:function(){var t = this.getRuntime(); t && (t.exec.call(this, "FileInput", "destroy"), this.disconnectRuntime()), "array" === e.typeOf(this.files) && e.each(this.files, function(e){e.destroy()}), this.files = null, this.unbindAll()}}), this.handleEventProps(l)}var l = ["ready", "change", "cancel", "mouseenter", "mouseleave", "mousedown", "mouseup"]; return c.prototype = o.instance, c}), n("moxie/file/File", ["moxie/core/utils/Basic", "moxie/core/utils/Mime", "moxie/file/Blob"], function(e, t, i){function n(n, r){r || (r = {}), i.apply(this, arguments), this.type || (this.type = t.getFileMime(r.name)); var o; if (r.name)o = r.name.replace(/\\/g, "/"), o = o.substr(o.lastIndexOf("/") + 1); else if (this.type){var a = this.type.split("/")[0]; o = e.guid(("" !== a?a:"file") + "_"), t.extensions[this.type] && (o += "." + t.extensions[this.type][0])}e.extend(this, {name:o || e.guid("file_"), relativePath:"", lastModifiedDate:r.lastModifiedDate || (new Date).toLocaleString()})}return n.prototype = i.prototype, n}), n("moxie/file/FileDrop", ["moxie/core/I18n", "moxie/core/utils/Dom", "moxie/core/Exceptions", "moxie/core/utils/Basic", "moxie/core/utils/Env", "moxie/file/File", "moxie/runtime/RuntimeClient", "moxie/core/EventTarget", "moxie/core/utils/Mime"], function(e, t, i, n, r, o, a, s, u){function c(i){var r, o = this; "string" == typeof i && (i = {drop_zone:i}), r = {accept:[{title:e.translate("All Files"), extensions:"*"}], required_caps:{drag_and_drop:!0}}, i = "object" == typeof i?n.extend({}, r, i):r, i.container = t.get(i.drop_zone) || document.body, "static" === t.getStyle(i.container, "position") && (i.container.style.position = "relative"), "string" == typeof i.accept && (i.accept = u.mimes2extList(i.accept)), a.call(o), n.extend(o, {uid:n.guid("uid_"), ruid:null, files:null, init:function(){o.bind("RuntimeInit", function(e, t){o.ruid = t.uid, t.exec.call(o, "FileDrop", "init", i), o.dispatchEvent("ready")}), o.connectRuntime(i)}, destroy:function(){var e = this.getRuntime(); e && (e.exec.call(this, "FileDrop", "destroy"), this.disconnectRuntime()), this.files = null, this.unbindAll()}}), this.handleEventProps(l)}var l = ["ready", "dragenter", "dragleave", "drop", "error"]; return c.prototype = s.instance, c}), n("moxie/file/FileReader", ["moxie/core/utils/Basic", "moxie/core/utils/Encode", "moxie/core/Exceptions", "moxie/core/EventTarget", "moxie/file/Blob", "moxie/runtime/RuntimeClient"], function(e, t, i, n, r, o){function a(){function n(e, n){if (this.trigger("loadstart"), this.readyState === a.LOADING)return this.trigger("error", new i.DOMException(i.DOMException.INVALID_STATE_ERR)), this.trigger("loadend"), void 0;
|
14 |
+
if (!(n instanceof r))return this.trigger("error", new i.DOMException(i.DOMException.NOT_FOUND_ERR)), this.trigger("loadend"), void 0; if (this.result = null, this.readyState = a.LOADING, n.isDetached()){var o = n.getSource(); switch (e){case"readAsText":case"readAsBinaryString":this.result = o; break; case"readAsDataURL":this.result = "data:" + n.type + ";base64," + t.btoa(o)}this.readyState = a.DONE, this.trigger("load"), this.trigger("loadend")} else this.connectRuntime(n.ruid), this.exec("FileReader", "read", e, n)}o.call(this), e.extend(this, {uid:e.guid("uid_"), readyState:a.EMPTY, result:null, error:null, readAsBinaryString:function(e){n.call(this, "readAsBinaryString", e)}, readAsDataURL:function(e){n.call(this, "readAsDataURL", e)}, readAsText:function(e){n.call(this, "readAsText", e)}, abort:function(){this.result = null, - 1 === e.inArray(this.readyState, [a.EMPTY, a.DONE]) && (this.readyState === a.LOADING && (this.readyState = a.DONE), this.exec("FileReader", "abort"), this.trigger("abort"), this.trigger("loadend"))}, destroy:function(){this.abort(), this.exec("FileReader", "destroy"), this.disconnectRuntime(), this.unbindAll()}}), this.handleEventProps(s), this.bind("Error", function(e, t){this.readyState = a.DONE, this.error = t}, 999), this.bind("Load", function(){this.readyState = a.DONE}, 999)}var s = ["loadstart", "progress", "load", "abort", "error", "loadend"]; return a.EMPTY = 0, a.LOADING = 1, a.DONE = 2, a.prototype = n.instance, a}), n("moxie/core/utils/Url", ["moxie/core/utils/Basic"], function(e){var t = function(i, n){var r, o = ["source", "scheme", "authority", "userInfo", "user", "pass", "host", "port", "relative", "path", "directory", "file", "query", "fragment"], a = o.length, s = {http:80, https:443}, u = {}, c = /^(?:([^:\/?#]+):)?(?:\/\/()(?:(?:()(?:([^:@\/]*):?([^:@\/]*))?@)?(\[[\da-fA-F:]+\]|[^:\/?#]*)(?::(\d*))?))?()(?:(()(?:(?:[^?#\/]*\/)*)()(?:[^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/, l = c.exec(i || ""), d = /^\/\/\w/.test(i); switch (e.typeOf(n)){case"undefined":n = t(document.location.href, !1); break; case"string":n = t(n, !1)}for (; a--; )l[a] && (u[o[a]] = l[a]); if (r = !d && !u.scheme, (d || r) && (u.scheme = n.scheme), r){u.host = n.host, u.port = n.port; var m = ""; /^[^\/]/.test(u.path) && (m = n.path, m = /\/[^\/]*\.[^\/]*$/.test(m)?m.replace(/\/[^\/]+$/, "/"):m.replace(/\/?$/, "/")), u.path = m + (u.path || "")}return u.port || (u.port = s[u.scheme] || 80), u.port = parseInt(u.port, 10), u.path || (u.path = "/"), delete u.source, u}, i = function(e){var i = {http:80, https:443}, n = "object" == typeof e?e:t(e); return n.scheme + "://" + n.host + (n.port !== i[n.scheme]?":" + n.port:"") + n.path + (n.query?n.query:"")}, n = function(e){function i(e){return[e.scheme, e.host, e.port].join("/")}return"string" == typeof e && (e = t(e)), i(t()) === i(e)}; return{parseUrl:t, resolveUrl:i, hasSameOrigin:n}}), n("moxie/runtime/RuntimeTarget", ["moxie/core/utils/Basic", "moxie/runtime/RuntimeClient", "moxie/core/EventTarget"], function(e, t, i){function n(){this.uid = e.guid("uid_"), t.call(this), this.destroy = function(){this.disconnectRuntime(), this.unbindAll()}}return n.prototype = i.instance, n}), n("moxie/file/FileReaderSync", ["moxie/core/utils/Basic", "moxie/runtime/RuntimeClient", "moxie/core/utils/Encode"], function(e, t, i){return function(){function n(e, t){if (!t.isDetached()){var n = this.connectRuntime(t.ruid).exec.call(this, "FileReaderSync", "read", e, t); return this.disconnectRuntime(), n}var r = t.getSource(); switch (e){case"readAsBinaryString":return r; case"readAsDataURL":return"data:" + t.type + ";base64," + i.btoa(r); case"readAsText":for (var o = "", a = 0, s = r.length; s > a; a++)o += String.fromCharCode(r[a]); return o}}t.call(this), e.extend(this, {uid:e.guid("uid_"), readAsBinaryString:function(e){return n.call(this, "readAsBinaryString", e)}, readAsDataURL:function(e){return n.call(this, "readAsDataURL", e)}, readAsText:function(e){return n.call(this, "readAsText", e)}})}}), n("moxie/xhr/FormData", ["moxie/core/Exceptions", "moxie/core/utils/Basic", "moxie/file/Blob"], function(e, t, i){function n(){var e, n = []; t.extend(this, {append:function(r, o){var a = this, s = t.typeOf(o); o instanceof i?e = {name:r, value:o}:"array" === s?(r += "[]", t.each(o, function(e){a.append(r, e)})):"object" === s?t.each(o, function(e, t){a.append(r + "[" + t + "]", e)}):"null" === s || "undefined" === s || "number" === s && isNaN(o)?a.append(r, "false"):n.push({name:r, value:o.toString()})}, hasBlob:function(){return!!this.getBlob()}, getBlob:function(){return e && e.value || null}, getBlobName:function(){return e && e.name || null}, each:function(i){t.each(n, function(e){i(e.value, e.name)}), e && i(e.value, e.name)}, destroy:function(){e = null, n = []}})}return n}), n("moxie/xhr/XMLHttpRequest", ["moxie/core/utils/Basic", "moxie/core/Exceptions", "moxie/core/EventTarget", "moxie/core/utils/Encode", "moxie/core/utils/Url", "moxie/runtime/Runtime", "moxie/runtime/RuntimeTarget", "moxie/file/Blob", "moxie/file/FileReaderSync", "moxie/xhr/FormData", "moxie/core/utils/Env", "moxie/core/utils/Mime"], function(e, t, i, n, r, o, a, s, u, c, l, d){function m(){this.uid = e.guid("uid_")}function h(){function i(e, t){return I.hasOwnProperty(e)?1 === arguments.length?l.can("define_property")?I[e]:A[e]:(l.can("define_property")?I[e] = t:A[e] = t, void 0):void 0}function u(t){function n(){R && (R.destroy(), R = null), s.dispatchEvent("loadend"), s = null}function r(r){R.bind("LoadStart", function(e){i("readyState", h.LOADING), s.dispatchEvent("readystatechange"), s.dispatchEvent(e), L && s.upload.dispatchEvent(e)}), R.bind("Progress", function(e){i("readyState") !== h.LOADING && (i("readyState", h.LOADING), s.dispatchEvent("readystatechange")), s.dispatchEvent(e)}), R.bind("UploadProgress", function(e){L && s.upload.dispatchEvent({type:"progress", lengthComputable:!1, total:e.total, loaded:e.loaded})}), R.bind("Load", function(t){i("readyState", h.DONE), i("status", Number(r.exec.call(R, "XMLHttpRequest", "getStatus") || 0)), i("statusText", f[i("status")] || ""), i("response", r.exec.call(R, "XMLHttpRequest", "getResponse", i("responseType"))), ~e.inArray(i("responseType"), ["text", ""])?i("responseText", i("response")):"document" === i("responseType") && i("responseXML", i("response")), U = r.exec.call(R, "XMLHttpRequest", "getAllResponseHeaders"), s.dispatchEvent("readystatechange"), i("status") > 0?(L && s.upload.dispatchEvent(t), s.dispatchEvent(t)):(F = !0, s.dispatchEvent("error")), n()}), R.bind("Abort", function(e){s.dispatchEvent(e), n()}), R.bind("Error", function(e){F = !0, i("readyState", h.DONE), s.dispatchEvent("readystatechange"), M = !0, s.dispatchEvent(e), n()}), r.exec.call(R, "XMLHttpRequest", "send", {url:x, method:v, async:T, user:w, password:y, headers:S, mimeType:D, encoding:O, responseType:s.responseType, withCredentials:s.withCredentials, options:k}, t)}var s = this; E = (new Date).getTime(), R = new a, "string" == typeof k.required_caps && (k.required_caps = o.parseCaps(k.required_caps)), k.required_caps = e.extend({}, k.required_caps, {return_response_type:s.responseType}), t instanceof c && (k.required_caps.send_multipart = !0), e.isEmptyObj(S) || (k.required_caps.send_custom_headers = !0), B || (k.required_caps.do_cors = !0), k.ruid?r(R.connectRuntime(k)):(R.bind("RuntimeInit", function(e, t){r(t)}), R.bind("RuntimeError", function(e, t){s.dispatchEvent("RuntimeError", t)}), R.connectRuntime(k))}function g(){i("responseText", ""), i("responseXML", null), i("response", null), i("status", 0), i("statusText", ""), E = b = null}var x, v, w, y, E, b, R, _, A = this, I = {timeout:0, readyState:h.UNSENT, withCredentials:!1, status:0, statusText:"", responseType:"", responseXML:null, responseText:null, response:null}, T = !0, S = {}, O = null, D = null, N = !1, C = !1, L = !1, M = !1, F = !1, B = !1, P = null, H = null, k = {}, U = ""; e.extend(this, I, {uid:e.guid("uid_"), upload:new m, open:function(o, a, s, u, c){var l; if (!o || !a)throw new t.DOMException(t.DOMException.SYNTAX_ERR); if (/[\u0100-\uffff]/.test(o) || n.utf8_encode(o) !== o)throw new t.DOMException(t.DOMException.SYNTAX_ERR); if (~e.inArray(o.toUpperCase(), ["CONNECT", "DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT", "TRACE", "TRACK"]) && (v = o.toUpperCase()), ~e.inArray(v, ["CONNECT", "TRACE", "TRACK"]))throw new t.DOMException(t.DOMException.SECURITY_ERR); if (a = n.utf8_encode(a), l = r.parseUrl(a), B = r.hasSameOrigin(l), x = r.resolveUrl(a), (u || c) && !B)throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR); if (w = u || l.user, y = c || l.pass, T = s || !0, T === !1 && (i("timeout") || i("withCredentials") || "" !== i("responseType")))throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR); N = !T, C = !1, S = {}, g.call(this), i("readyState", h.OPENED), this.dispatchEvent("readystatechange")}, setRequestHeader:function(r, o){var a = ["accept-charset", "accept-encoding", "access-control-request-headers", "access-control-request-method", "connection", "content-length", "cookie", "cookie2", "content-transfer-encoding", "date", "expect", "host", "keep-alive", "origin", "referer", "te", "trailer", "transfer-encoding", "upgrade", "user-agent", "via"]; if (i("readyState") !== h.OPENED || C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR); if (/[\u0100-\uffff]/.test(r) || n.utf8_encode(r) !== r)throw new t.DOMException(t.DOMException.SYNTAX_ERR); return r = e.trim(r).toLowerCase(), ~e.inArray(r, a) || /^(proxy\-|sec\-)/.test(r)?!1:(S[r]?S[r] += ", " + o:S[r] = o, !0)}, hasRequestHeader:function(e){return e && S[e.toLowerCase()] || !1}, getAllResponseHeaders:function(){return U || ""}, getResponseHeader:function(t){return t = t.toLowerCase(), F || ~e.inArray(t, ["set-cookie", "set-cookie2"])?null:U && "" !== U && (_ || (_ = {}, e.each(U.split(/\r\n/), function(t){var i = t.split(/:\s+/); 2 === i.length && (i[0] = e.trim(i[0]), _[i[0].toLowerCase()] = {header:i[0], value:e.trim(i[1])})})), _.hasOwnProperty(t))?_[t].header + ": " + _[t].value:null}, overrideMimeType:function(n){var r, o; if (~e.inArray(i("readyState"), [h.LOADING, h.DONE]))throw new t.DOMException(t.DOMException.INVALID_STATE_ERR); if (n = e.trim(n.toLowerCase()), /;/.test(n) && (r = n.match(/^([^;]+)(?:;\scharset\=)?(.*)$/)) && (n = r[1], r[2] && (o = r[2])), !d.mimes[n])throw new t.DOMException(t.DOMException.SYNTAX_ERR); P = n, H = o}, send:function(i, r){if (k = "string" === e.typeOf(r)?{ruid:r}:r?r:{}, this.readyState !== h.OPENED || C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR); if (i instanceof s)k.ruid = i.ruid, D = i.type || "application/octet-stream"; else if (i instanceof c){if (i.hasBlob()){var o = i.getBlob(); k.ruid = o.ruid, D = o.type || "application/octet-stream"}} else"string" == typeof i && (O = "UTF-8", D = "text/plain;charset=UTF-8", i = n.utf8_encode(i)); this.withCredentials || (this.withCredentials = k.required_caps && k.required_caps.send_browser_cookies && !B), L = !N && this.upload.hasEventListener(), F = !1, M = !i, N || (C = !0), u.call(this, i)}, abort:function(){if (F = !0, N = !1, ~e.inArray(i("readyState"), [h.UNSENT, h.OPENED, h.DONE]))i("readyState", h.UNSENT); else{if (i("readyState", h.DONE), C = !1, !R)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR); R.getRuntime().exec.call(R, "XMLHttpRequest", "abort", M), M = !0}}, destroy:function(){R && ("function" === e.typeOf(R.destroy) && R.destroy(), R = null), this.unbindAll(), this.upload && (this.upload.unbindAll(), this.upload = null)}}), this.handleEventProps(p.concat(["readystatechange"])), this.upload.handleEventProps(p)}var f = {100:"Continue", 101:"Switching Protocols", 102:"Processing", 200:"OK", 201:"Created", 202:"Accepted", 203:"Non-Authoritative Information", 204:"No Content", 205:"Reset Content", 206:"Partial Content", 207:"Multi-Status", 226:"IM Used", 300:"Multiple Choices", 301:"Moved Permanently", 302:"Found", 303:"See Other", 304:"Not Modified", 305:"Use Proxy", 306:"Reserved", 307:"Temporary Redirect", 400:"Bad Request", 401:"Unauthorized", 402:"Payment Required", 403:"Forbidden", 404:"Not Found", 405:"Method Not Allowed", 406:"Not Acceptable", 407:"Proxy Authentication Required", 408:"Request Timeout", 409:"Conflict", 410:"Gone", 411:"Length Required", 412:"Precondition Failed", 413:"Request Entity Too Large", 414:"Request-URI Too Long", 415:"Unsupported Media Type", 416:"Requested Range Not Satisfiable", 417:"Expectation Failed", 422:"Unprocessable Entity", 423:"Locked", 424:"Failed Dependency", 426:"Upgrade Required", 500:"Internal Server Error", 501:"Not Implemented", 502:"Bad Gateway", 503:"Service Unavailable", 504:"Gateway Timeout", 505:"HTTP Version Not Supported", 506:"Variant Also Negotiates", 507:"Insufficient Storage", 510:"Not Extended"}; m.prototype = i.instance; var p = ["loadstart", "progress", "abort", "error", "load", "timeout", "loadend"]; return h.UNSENT = 0, h.OPENED = 1, h.HEADERS_RECEIVED = 2, h.LOADING = 3, h.DONE = 4, h.prototype = i.instance, h}), n("moxie/runtime/Transporter", ["moxie/core/utils/Basic", "moxie/core/utils/Encode", "moxie/runtime/RuntimeClient", "moxie/core/EventTarget"], function(e, t, i, n){function r(){function n(){l = d = 0, c = this.result = null}function o(t, i){var n = this; u = i, n.bind("TransportingProgress", function(t){d = t.loaded, l > d && - 1 === e.inArray(n.state, [r.IDLE, r.DONE]) && a.call(n)}, 999), n.bind("TransportingComplete", function(){d = l, n.state = r.DONE, c = null, n.result = u.exec.call(n, "Transporter", "getAsBlob", t || "")}, 999), n.state = r.BUSY, n.trigger("TransportingStarted"), a.call(n)}function a(){var e, i = this, n = l - d; m > n && (m = n), e = t.btoa(c.substr(d, m)), u.exec.call(i, "Transporter", "receive", e, l)}var s, u, c, l, d, m; i.call(this), e.extend(this, {uid:e.guid("uid_"), state:r.IDLE, result:null, transport:function(t, i, r){var a = this; if (r = e.extend({chunk_size:204798}, r), (s = r.chunk_size % 3) && (r.chunk_size += 3 - s), m = r.chunk_size, n.call(this), c = t, l = t.length, "string" === e.typeOf(r) || r.ruid)o.call(a, i, this.connectRuntime(r)); else{var u = function(e, t){a.unbind("RuntimeInit", u), o.call(a, i, t)}; this.bind("RuntimeInit", u), this.connectRuntime(r)}}, abort:function(){var e = this; e.state = r.IDLE, u && (u.exec.call(e, "Transporter", "clear"), e.trigger("TransportingAborted")), n.call(e)}, destroy:function(){this.unbindAll(), u = null, this.disconnectRuntime(), n.call(this)}})}return r.IDLE = 0, r.BUSY = 1, r.DONE = 2, r.prototype = n.instance, r}), n("moxie/image/Image", ["moxie/core/utils/Basic", "moxie/core/utils/Dom", "moxie/core/Exceptions", "moxie/file/FileReaderSync", "moxie/xhr/XMLHttpRequest", "moxie/runtime/Runtime", "moxie/runtime/RuntimeClient", "moxie/runtime/Transporter", "moxie/core/utils/Env", "moxie/core/EventTarget", "moxie/file/Blob", "moxie/file/File", "moxie/core/utils/Encode"], function(e, t, i, n, r, o, a, s, u, c, l, d, m){function h(){function n(e){try{return e || (e = this.exec("Image", "getInfo")), this.size = e.size, this.width = e.width, this.height = e.height, this.type = e.type, this.meta = e.meta, "" === this.name && (this.name = e.name), !0} catch (t){return this.trigger("error", t.code), !1}}function c(t){var n = e.typeOf(t); try{if (t instanceof h){if (!t.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR); p.apply(this, arguments)} else if (t instanceof l){if (!~e.inArray(t.type, ["image/jpeg", "image/png"]))throw new i.ImageError(i.ImageError.WRONG_FORMAT); g.apply(this, arguments)} else if ( - 1 !== e.inArray(n, ["blob", "file"]))c.call(this, new d(null, t), arguments[1]); else if ("string" === n)"data:" === t.substr(0, 5)?c.call(this, new l(null, {data:t}), arguments[1]):x.apply(this, arguments); else{if ("node" !== n || "img" !== t.nodeName.toLowerCase())throw new i.DOMException(i.DOMException.TYPE_MISMATCH_ERR); c.call(this, t.src, arguments[1])}} catch (r){this.trigger("error", r.code)}}function p(t, i){var n = this.connectRuntime(t.ruid); this.ruid = n.uid, n.exec.call(this, "Image", "loadFromImage", t, "undefined" === e.typeOf(i)?!0:i)}function g(t, i){function n(e){r.ruid = e.uid, e.exec.call(r, "Image", "loadFromBlob", t)}var r = this; r.name = t.name || "", t.isDetached()?(this.bind("RuntimeInit", function(e, t){n(t)}), i && "string" == typeof i.required_caps && (i.required_caps = o.parseCaps(i.required_caps)), this.connectRuntime(e.extend({required_caps:{access_image_binary:!0, resize_image:!0}}, i))):n(this.connectRuntime(t.ruid))}function x(e, t){var i, n = this; i = new r, i.open("get", e), i.responseType = "blob", i.onprogress = function(e){n.trigger(e)}, i.onload = function(){g.call(n, i.response, !0)}, i.onerror = function(e){n.trigger(e)}, i.onloadend = function(){i.destroy()}, i.bind("RuntimeError", function(e, t){n.trigger("RuntimeError", t)}), i.send(null, t)}a.call(this), e.extend(this, {uid:e.guid("uid_"), ruid:null, name:"", size:0, width:0, height:0, type:"", meta:{}, clone:function(){this.load.apply(this, arguments)}, load:function(){c.apply(this, arguments)}, resize:function(t){var n, r, o = this, a = {x:0, y:0, width:o.width, height:o.height}, s = e.extendIf({width:o.width, height:o.height, type:o.type || "image/jpeg", quality:90, crop:!1, fit:!0, preserveHeaders:!0, resample:"default", multipass:!0}, t); try{if (!o.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR); if (o.width > h.MAX_RESIZE_WIDTH || o.height > h.MAX_RESIZE_HEIGHT)throw new i.ImageError(i.ImageError.MAX_RESOLUTION_ERR); if (n = o.meta && o.meta.tiff && o.meta.tiff.Orientation || 1, - 1 !== e.inArray(n, [5, 6, 7, 8])){var u = s.width; s.width = s.height, s.height = u}if (s.crop){switch (r = Math.max(s.width / o.width, s.height / o.height), t.fit?(a.width = Math.min(Math.ceil(s.width / r), o.width), a.height = Math.min(Math.ceil(s.height / r), o.height), r = s.width / a.width):(a.width = Math.min(s.width, o.width), a.height = Math.min(s.height, o.height), r = 1), "boolean" == typeof s.crop && (s.crop = "cc"), s.crop.toLowerCase().replace(/_/, "-")){case"rb":case"right-bottom":a.x = o.width - a.width, a.y = o.height - a.height; break; case"cb":case"center-bottom":a.x = Math.floor((o.width - a.width) / 2), a.y = o.height - a.height; break; case"lb":case"left-bottom":a.x = 0, a.y = o.height - a.height; break; case"lt":case"left-top":a.x = 0, a.y = 0; break; case"ct":case"center-top":a.x = Math.floor((o.width - a.width) / 2), a.y = 0; break; case"rt":case"right-top":a.x = o.width - a.width, a.y = 0; break; case"rc":case"right-center":case"right-middle":a.x = o.width - a.width, a.y = Math.floor((o.height - a.height) / 2); break; case"lc":case"left-center":case"left-middle":a.x = 0, a.y = Math.floor((o.height - a.height) / 2); break; case"cc":case"center-center":case"center-middle":default:a.x = Math.floor((o.width - a.width) / 2), a.y = Math.floor((o.height - a.height) / 2)}a.x = Math.max(a.x, 0), a.y = Math.max(a.y, 0)} else r = Math.min(s.width / o.width, s.height / o.height); this.exec("Image", "resize", a, r, s)} catch (c){o.trigger("error", c.code)}}, downsize:function(t){var i, n = {width:this.width, height:this.height, type:this.type || "image/jpeg", quality:90, crop:!1, preserveHeaders:!0, resample:"default"}; i = "object" == typeof t?e.extend(n, t):e.extend(n, {width:arguments[0], height:arguments[1], crop:arguments[2], preserveHeaders:arguments[3]}), this.resize(i)}, crop:function(e, t, i){this.downsize(e, t, !0, i)}, getAsCanvas:function(){if (!u.can("create_canvas"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR); return this.exec("Image", "getAsCanvas")}, getAsBlob:function(e, t){if (!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR); return this.exec("Image", "getAsBlob", e || "image/jpeg", t || 90)}, getAsDataURL:function(e, t){if (!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR); return this.exec("Image", "getAsDataURL", e || "image/jpeg", t || 90)}, getAsBinaryString:function(e, t){var i = this.getAsDataURL(e, t); return m.atob(i.substring(i.indexOf("base64,") + 7))}, embed:function(n, r){function o(t, r){var o = this; if (u.can("create_canvas")){var l = o.getAsCanvas(); if (l)return n.appendChild(l), l = null, o.destroy(), c.trigger("embedded"), void 0}var d = o.getAsDataURL(t, r); if (!d)throw new i.ImageError(i.ImageError.WRONG_FORMAT); if (u.can("use_data_uri_of", d.length))n.innerHTML = '<img src="' + d + '" width="' + o.width + '" height="' + o.height + '" />', o.destroy(), c.trigger("embedded"); else{var h = new s; h.bind("TransportingComplete", function(){a = c.connectRuntime(this.result.ruid), c.bind("Embedded", function(){e.extend(a.getShimContainer().style, {top:"0px", left:"0px", width:o.width + "px", height:o.height + "px"}), a = null}, 999), a.exec.call(c, "ImageView", "display", this.result.uid, width, height), o.destroy()}), h.transport(m.atob(d.substring(d.indexOf("base64,") + 7)), t, {required_caps:{display_media:!0}, runtime_order:"flash,silverlight", container:n})}}var a, c = this, l = e.extend({width:this.width, height:this.height, type:this.type || "image/jpeg", quality:90}, r); try{if (!(n = t.get(n)))throw new i.DOMException(i.DOMException.INVALID_NODE_TYPE_ERR); if (!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR); this.width > h.MAX_RESIZE_WIDTH || this.height > h.MAX_RESIZE_HEIGHT; var d = new h; return d.bind("Resize", function(){o.call(this, l.type, l.quality)}), d.bind("Load", function(){this.downsize(l)}), this.meta.thumb && this.meta.thumb.width >= l.width && this.meta.thumb.height >= l.height?d.load(this.meta.thumb.data):d.clone(this, !1), d} catch (f){this.trigger("error", f.code)}}, destroy:function(){this.ruid && (this.getRuntime().exec.call(this, "Image", "destroy"), this.disconnectRuntime()), this.meta && this.meta.thumb && this.meta.thumb.data.destroy(), this.unbindAll()}}), this.handleEventProps(f), this.bind("Load Resize", function(){return n.call(this)}, 999)}var f = ["progress", "load", "error", "resize", "embedded"]; return h.MAX_RESIZE_WIDTH = 8192, h.MAX_RESIZE_HEIGHT = 8192, h.prototype = c.instance, h}), n("moxie/runtime/html5/Runtime", ["moxie/core/utils/Basic", "moxie/core/Exceptions", "moxie/runtime/Runtime", "moxie/core/utils/Env"], function(e, t, i, n){function o(t){var o = this, u = i.capTest, c = i.capTrue, l = e.extend({access_binary:u(window.FileReader || window.File && window.File.getAsDataURL), access_image_binary:function(){return o.can("access_binary") && !!s.Image}, display_media:u((n.can("create_canvas") || n.can("use_data_uri_over32kb")) && r("moxie/image/Image")), do_cors:u(window.XMLHttpRequest && "withCredentials"in new XMLHttpRequest), drag_and_drop:u(function(){var e = document.createElement("div"); return("draggable"in e || "ondragstart"in e && "ondrop"in e) && ("IE" !== n.browser || n.verComp(n.version, 9, ">"))}()), filter_by_extension:u(function(){return!("Chrome" === n.browser && n.verComp(n.version, 28, "<") || "IE" === n.browser && n.verComp(n.version, 10, "<") || "Safari" === n.browser && n.verComp(n.version, 7, "<") || "Firefox" === n.browser && n.verComp(n.version, 37, "<"))}()), return_response_headers:c, return_response_type:function(e){return"json" === e && window.JSON?!0:n.can("return_response_type", e)}, return_status_code:c, report_upload_progress:u(window.XMLHttpRequest && (new XMLHttpRequest).upload), resize_image:function(){return o.can("access_binary") && n.can("create_canvas")}, select_file:function(){return n.can("use_fileinput") && window.File}, select_folder:function(){return o.can("select_file") && ("Chrome" === n.browser && n.verComp(n.version, 21, ">=") || "Firefox" === n.browser && n.verComp(n.version, 42, ">="))}, select_multiple:function(){return!(!o.can("select_file") || "Safari" === n.browser && "Windows" === n.os || "iOS" === n.os && n.verComp(n.osVersion, "7.0.0", ">") && n.verComp(n.osVersion, "8.0.0", "<"))}, send_binary_string:u(window.XMLHttpRequest && ((new XMLHttpRequest).sendAsBinary || window.Uint8Array && window.ArrayBuffer)), send_custom_headers:u(window.XMLHttpRequest), send_multipart:function(){return!!(window.XMLHttpRequest && (new XMLHttpRequest).upload && window.FormData) || o.can("send_binary_string")}, slice_blob:u(window.File && (File.prototype.mozSlice || File.prototype.webkitSlice || File.prototype.slice)), stream_upload:function(){return o.can("slice_blob") && o.can("send_multipart")}, summon_file_dialog:function(){return o.can("select_file") && ("Firefox" === n.browser && n.verComp(n.version, 4, ">=") || "Opera" === n.browser && n.verComp(n.version, 12, ">=") || "IE" === n.browser && n.verComp(n.version, 10, ">=") || !!~e.inArray(n.browser, ["Chrome", "Safari", "Edge"]))}, upload_filesize:c, use_http_method:c}, arguments[2]); i.call(this, t, arguments[1] || a, l), e.extend(this, {init:function(){this.trigger("Init")}, destroy:function(e){return function(){e.call(o), e = o = null}}(this.destroy)}), e.extend(this.getShim(), s)}var a = "html5", s = {}; return i.addConstructor(a, o), s}), n("moxie/runtime/html5/file/Blob", ["moxie/runtime/html5/Runtime", "moxie/file/Blob"], function(e, t){function i(){function e(e, t, i){var n; if (!window.File.prototype.slice)return(n = window.File.prototype.webkitSlice || window.File.prototype.mozSlice)?n.call(e, t, i):null; try{return e.slice(), e.slice(t, i)} catch (r){return e.slice(t, i - t)}}this.slice = function(){return new t(this.getRuntime().uid, e.apply(this, arguments))}}return e.Blob = i}), n("moxie/core/utils/Events", ["moxie/core/utils/Basic"], function(e){function t(){this.returnValue = !1}function i(){this.cancelBubble = !0}var n = {}, r = "moxie_" + e.guid(), o = function(o, a, s, u){var c, l; a = a.toLowerCase(), o.addEventListener?(c = s, o.addEventListener(a, c, !1)):o.attachEvent && (c = function(){var e = window.event; e.target || (e.target = e.srcElement), e.preventDefault = t, e.stopPropagation = i, s(e)}, o.attachEvent("on" + a, c)), o[r] || (o[r] = e.guid()), n.hasOwnProperty(o[r]) || (n[o[r]] = {}), l = n[o[r]], l.hasOwnProperty(a) || (l[a] = []), l[a].push({func:c, orig:s, key:u})}, a = function(t, i, o){var a, s; if (i = i.toLowerCase(), t[r] && n[t[r]] && n[t[r]][i]){a = n[t[r]][i]; for (var u = a.length - 1; u >= 0 && (a[u].orig !== o && a[u].key !== o || (t.removeEventListener?t.removeEventListener(i, a[u].func, !1):t.detachEvent && t.detachEvent("on" + i, a[u].func), a[u].orig = null, a[u].func = null, a.splice(u, 1), o === s)); u--); if (a.length || delete n[t[r]][i], e.isEmptyObj(n[t[r]])){delete n[t[r]]; try{delete t[r]} catch (c){t[r] = s}}}}, s = function(t, i){t && t[r] && e.each(n[t[r]], function(e, n){a(t, n, i)})}; return{addEvent:o, removeEvent:a, removeAllEvents:s}}), n("moxie/runtime/html5/file/FileInput", ["moxie/runtime/html5/Runtime", "moxie/file/File", "moxie/core/utils/Basic", "moxie/core/utils/Dom", "moxie/core/utils/Events", "moxie/core/utils/Mime", "moxie/core/utils/Env"], function(e, t, i, n, r, o, a){function s(){var e, s; i.extend(this, {init:function(u){var c, l, d, m, h, f, p = this, g = p.getRuntime(); e = u, d = e.accept.mimes || o.extList2mimes(e.accept, g.can("filter_by_extension")), l = g.getShimContainer(), l.innerHTML = '<input id="' + g.uid + '" type="file" style="font-size:999px;opacity:0;"' + (e.multiple && g.can("select_multiple")?"multiple":"") + (e.directory && g.can("select_folder")?"webkitdirectory directory":"") + (d?' accept="' + d.join(",") + '"':"") + " />", c = n.get(g.uid), i.extend(c.style, {position:"absolute", top:0, left:0, width:"100%", height:"100%"}), m = n.get(e.browse_button), s = n.getStyle(m, "z-index") || "auto", g.can("summon_file_dialog") && ("static" === n.getStyle(m, "position") && (m.style.position = "relative"), r.addEvent(m, "click", function(e){var t = n.get(g.uid); t && !t.disabled && t.click(), e.preventDefault()}, p.uid), p.bind("Refresh", function(){h = parseInt(s, 10) || 1, n.get(e.browse_button).style.zIndex = h, this.getRuntime().getShimContainer().style.zIndex = h - 1})), f = g.can("summon_file_dialog")?m:l, r.addEvent(f, "mouseover", function(){p.trigger("mouseenter")}, p.uid), r.addEvent(f, "mouseout", function(){p.trigger("mouseleave")}, p.uid), r.addEvent(f, "mousedown", function(){p.trigger("mousedown")}, p.uid), r.addEvent(n.get(e.container), "mouseup", function(){p.trigger("mouseup")}, p.uid), c.onchange = function x(){if (p.files = [], i.each(this.files, function(i){var n = ""; return e.directory && "." == i.name?!0:(i.webkitRelativePath && (n = "/" + i.webkitRelativePath.replace(/^\//, "")), i = new t(g.uid, i), i.relativePath = n, p.files.push(i), void 0)}), "IE" !== a.browser && "IEMobile" !== a.browser)this.value = ""; else{var n = this.cloneNode(!0); this.parentNode.replaceChild(n, this), n.onchange = x}p.files.length && p.trigger("change")}, p.trigger({type:"ready", async:!0}), l = null}, setOption:function(e, t){var i = this.getRuntime(), r = n.get(i.uid); switch (e){case"accept":if (t){var a = t.mimes || o.extList2mimes(t, i.can("filter_by_extension")); r.setAttribute("accept", a.join(","))} else r.removeAttribute("accept"); break; case"directory":t && i.can("select_folder")?(r.setAttribute("directory", ""), r.setAttribute("webkitdirectory", "")):(r.removeAttribute("directory"), r.removeAttribute("webkitdirectory")); break; case"multiple":t && i.can("select_multiple")?r.setAttribute("multiple", ""):r.removeAttribute("multiple")}}, disable:function(e){var t, i = this.getRuntime(); (t = n.get(i.uid)) && (t.disabled = !!e)}, destroy:function(){var t = this.getRuntime(), i = t.getShim(), o = t.getShimContainer(), a = e && n.get(e.container), u = e && n.get(e.browse_button); a && r.removeAllEvents(a, this.uid), u && (r.removeAllEvents(u, this.uid), u.style.zIndex = s), o && (r.removeAllEvents(o, this.uid), o.innerHTML = ""), i.removeInstance(this.uid), e = o = a = u = i = null}})}return e.FileInput = s}), n("moxie/runtime/html5/file/FileDrop", ["moxie/runtime/html5/Runtime", "moxie/file/File", "moxie/core/utils/Basic", "moxie/core/utils/Dom", "moxie/core/utils/Events", "moxie/core/utils/Mime"], function(e, t, i, n, r, o){function a(){function e(e){if (!e.dataTransfer || !e.dataTransfer.types)return!1; var t = i.toArray(e.dataTransfer.types || []); return - 1 !== i.inArray("Files", t) || - 1 !== i.inArray("public.file-url", t) || - 1 !== i.inArray("application/x-moz-file", t)}function a(e, i){if (u(e)){var n = new t(f, e); n.relativePath = i || "", p.push(n)}}function s(e){for (var t = [], n = 0; n < e.length; n++)[].push.apply(t, e[n].extensions.split(/\s*,\s*/)); return - 1 === i.inArray("*", t)?t:[]}function u(e){if (!g.length)return!0; var t = o.getFileExtension(e.name); return!t || - 1 !== i.inArray(t, g)}function c(e, t){var n = []; i.each(e, function(e){var t = e.webkitGetAsEntry(); t && (t.isFile?a(e.getAsFile(), t.fullPath):n.push(t))}), n.length?l(n, t):t()}function l(e, t){var n = []; i.each(e, function(e){n.push(function(t){d(e, t)})}), i.inSeries(n, function(){t()})}function d(e, t){e.isFile?e.file(function(i){a(i, e.fullPath), t()}, function(){t()}):e.isDirectory?m(e, t):t()}function m(e, t){function i(e){r.readEntries(function(t){t.length?([].push.apply(n, t), i(e)):e()}, e)}var n = [], r = e.createReader(); i(function(){l(n, t)})}var h, f, p = [], g = []; i.extend(this, {init:function(t){var n, o = this; h = t, f = o.ruid, g = s(h.accept), n = h.container, r.addEvent(n, "dragover", function(t){e(t) && (t.preventDefault(), t.dataTransfer.dropEffect = "copy")}, o.uid), r.addEvent(n, "drop", function(t){e(t) && (t.preventDefault(), p = [], t.dataTransfer.items && t.dataTransfer.items[0].webkitGetAsEntry?c(t.dataTransfer.items, function(){o.files = p, o.trigger("drop")}):(i.each(t.dataTransfer.files, function(e){a(e)}), o.files = p, o.trigger("drop")))}, o.uid), r.addEvent(n, "dragenter", function(){o.trigger("dragenter")}, o.uid), r.addEvent(n, "dragleave", function(){o.trigger("dragleave")}, o.uid)}, destroy:function(){r.removeAllEvents(h && n.get(h.container), this.uid), f = p = g = h = null}})}return e.FileDrop = a}), n("moxie/runtime/html5/file/FileReader", ["moxie/runtime/html5/Runtime", "moxie/core/utils/Encode", "moxie/core/utils/Basic"], function(e, t, i){function n(){function e(e){return t.atob(e.substring(e.indexOf("base64,") + 7))}var n, r = !1; i.extend(this, {read:function(t, o){var a = this; a.result = "", n = new window.FileReader, n.addEventListener("progress", function(e){a.trigger(e)}), n.addEventListener("load", function(t){a.result = r?e(n.result):n.result, a.trigger(t)}), n.addEventListener("error", function(e){a.trigger(e, n.error)}), n.addEventListener("loadend", function(e){n = null, a.trigger(e)}), "function" === i.typeOf(n[t])?(r = !1, n[t](o.getSource())):"readAsBinaryString" === t && (r = !0, n.readAsDataURL(o.getSource()))}, abort:function(){n && n.abort()}, destroy:function(){n = null}})}return e.FileReader = n}), n("moxie/runtime/html5/xhr/XMLHttpRequest", ["moxie/runtime/html5/Runtime", "moxie/core/utils/Basic", "moxie/core/utils/Mime", "moxie/core/utils/Url", "moxie/file/File", "moxie/file/Blob", "moxie/xhr/FormData", "moxie/core/Exceptions", "moxie/core/utils/Env"], function(e, t, i, n, r, o, a, s, u){function c(){function e(e, t){var i, n, r = this; i = t.getBlob().getSource(), n = new window.FileReader, n.onload = function(){t.append(t.getBlobName(), new o(null, {type:i.type, data:n.result})), f.send.call(r, e, t)}, n.readAsBinaryString(i)}function c(){return!window.XMLHttpRequest || "IE" === u.browser && u.verComp(u.version, 8, "<")?function(){for (var e = ["Msxml2.XMLHTTP.6.0", "Microsoft.XMLHTTP"], t = 0; t < e.length; t++)try{return new ActiveXObject(e[t])} catch (i){}}():new window.XMLHttpRequest}function l(e){var t = e.responseXML, i = e.responseText; return"IE" === u.browser && i && t && !t.documentElement && /[^\/]+\/[^\+]+\+xml/.test(e.getResponseHeader("Content-Type")) && (t = new window.ActiveXObject("Microsoft.XMLDOM"), t.async = !1, t.validateOnParse = !1, t.loadXML(i)), t && ("IE" === u.browser && 0 !== t.parseError || !t.documentElement || "parsererror" === t.documentElement.tagName)?null:t}function d(e){var t = "----moxieboundary" + (new Date).getTime(), i = "--", n = "\r\n", r = "", a = this.getRuntime(); if (!a.can("send_binary_string"))throw new s.RuntimeError(s.RuntimeError.NOT_SUPPORTED_ERR); return m.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + t), e.each(function(e, a){r += e instanceof o?i + t + n + 'Content-Disposition: form-data; name="' + a + '"; filename="' + unescape(encodeURIComponent(e.name || "blob")) + '"' + n + "Content-Type: " + (e.type || "application/octet-stream") + n + n + e.getSource() + n:i + t + n + 'Content-Disposition: form-data; name="' + a + '"' + n + n + unescape(encodeURIComponent(e)) + n}), r += i + t + i + n}var m, h, f = this; t.extend(this, {send:function(i, r){var s = this, l = "Mozilla" === u.browser && u.verComp(u.version, 4, ">=") && u.verComp(u.version, 7, "<"), f = "Android Browser" === u.browser, p = !1;
|
15 |
+
if (h = i.url.replace(/^.+?\/([\w\-\.]+)$/, "$1").toLowerCase(), m = c(), m.open(i.method, i.url, i.async, i.user, i.password), r instanceof o)r.isDetached() && (p = !0), r = r.getSource(); else if (r instanceof a){if (r.hasBlob())if (r.getBlob().isDetached())r = d.call(s, r), p = !0; else if ((l || f) && "blob" === t.typeOf(r.getBlob().getSource()) && window.FileReader)return e.call(s, i, r), void 0; if (r instanceof a){var g = new window.FormData; r.each(function(e, t){e instanceof o?g.append(t, e.getSource()):g.append(t, e)}), r = g}}m.upload?(i.withCredentials && (m.withCredentials = !0), m.addEventListener("load", function(e){s.trigger(e)}), m.addEventListener("error", function(e){s.trigger(e)}), m.addEventListener("progress", function(e){s.trigger(e)}), m.upload.addEventListener("progress", function(e){s.trigger({type:"UploadProgress", loaded:e.loaded, total:e.total})})):m.onreadystatechange = function(){switch (m.readyState){case 1:break; case 2:break; case 3:var e, t; try{n.hasSameOrigin(i.url) && (e = m.getResponseHeader("Content-Length") || 0), m.responseText && (t = m.responseText.length)} catch (r){e = t = 0}s.trigger({type:"progress", lengthComputable:!!e, total:parseInt(e, 10), loaded:t}); break; case 4:m.onreadystatechange = function(){}, 0 === m.status?s.trigger("error"):s.trigger("load")}}, t.isEmptyObj(i.headers) || t.each(i.headers, function(e, t){m.setRequestHeader(t, e)}), "" !== i.responseType && "responseType"in m && (m.responseType = "json" !== i.responseType || u.can("return_response_type", "json")?i.responseType:"text"), p?m.sendAsBinary?m.sendAsBinary(r):function(){for (var e = new Uint8Array(r.length), t = 0; t < r.length; t++)e[t] = 255 & r.charCodeAt(t); m.send(e.buffer)}():m.send(r), s.trigger("loadstart")}, getStatus:function(){try{if (m)return m.status} catch (e){}return 0}, getResponse:function(e){var t = this.getRuntime(); try{switch (e){case"blob":var n = new r(t.uid, m.response), o = m.getResponseHeader("Content-Disposition"); if (o){var a = o.match(/filename=([\'\"'])([^\1]+)\1/); a && (h = a[2])}return n.name = h, n.type || (n.type = i.getFileMime(h)), n; case"json":return u.can("return_response_type", "json")?m.response:200 === m.status && window.JSON?JSON.parse(m.responseText):null; case"document":return l(m); default:return"" !== m.responseText?m.responseText:null}} catch (s){return null}}, getAllResponseHeaders:function(){try{return m.getAllResponseHeaders()} catch (e){}return""}, abort:function(){m && m.abort()}, destroy:function(){f = h = null}})}return e.XMLHttpRequest = c}), n("moxie/runtime/html5/utils/BinaryReader", ["moxie/core/utils/Basic"], function(e){function t(e){e instanceof ArrayBuffer?i.apply(this, arguments):n.apply(this, arguments)}function i(t){var i = new DataView(t); e.extend(this, {readByteAt:function(e){return i.getUint8(e)}, writeByteAt:function(e, t){i.setUint8(e, t)}, SEGMENT:function(e, n, r){switch (arguments.length){case 2:return t.slice(e, e + n); case 1:return t.slice(e); case 3:if (null === r && (r = new ArrayBuffer), r instanceof ArrayBuffer){var o = new Uint8Array(this.length() - n + r.byteLength); e > 0 && o.set(new Uint8Array(t.slice(0, e)), 0), o.set(new Uint8Array(r), e), o.set(new Uint8Array(t.slice(e + n)), e + r.byteLength), this.clear(), t = o.buffer, i = new DataView(t); break}default:return t}}, length:function(){return t?t.byteLength:0}, clear:function(){i = t = null}})}function n(t){function i(e, i, n){n = 3 === arguments.length?n:t.length - i - 1, t = t.substr(0, i) + e + t.substr(n + i)}e.extend(this, {readByteAt:function(e){return t.charCodeAt(e)}, writeByteAt:function(e, t){i(String.fromCharCode(t), e, 1)}, SEGMENT:function(e, n, r){switch (arguments.length){case 1:return t.substr(e); case 2:return t.substr(e, n); case 3:i(null !== r?r:"", e, n); break; default:return t}}, length:function(){return t?t.length:0}, clear:function(){t = null}})}return e.extend(t.prototype, {littleEndian:!1, read:function(e, t){var i, n, r; if (e + t > this.length())throw new Error("You are trying to read outside the source boundaries."); for (n = this.littleEndian?0: - 8 * (t - 1), r = 0, i = 0; t > r; r++)i |= this.readByteAt(e + r) << Math.abs(n + 8 * r); return i}, write:function(e, t, i){var n, r; if (e > this.length())throw new Error("You are trying to write outside the source boundaries."); for (n = this.littleEndian?0: - 8 * (i - 1), r = 0; i > r; r++)this.writeByteAt(e + r, 255 & t >> Math.abs(n + 8 * r))}, BYTE:function(e){return this.read(e, 1)}, SHORT:function(e){return this.read(e, 2)}, LONG:function(e){return this.read(e, 4)}, SLONG:function(e){var t = this.read(e, 4); return t > 2147483647?t - 4294967296:t}, CHAR:function(e){return String.fromCharCode(this.read(e, 1))}, STRING:function(e, t){return this.asArray("CHAR", e, t).join("")}, asArray:function(e, t, i){for (var n = [], r = 0; i > r; r++)n[r] = this[e](t + r); return n}}), t}), n("moxie/runtime/html5/image/JPEGHeaders", ["moxie/runtime/html5/utils/BinaryReader", "moxie/core/Exceptions"], function(e, t){return function i(n){var r, o, a, s = [], u = 0; if (r = new e(n), 65496 !== r.SHORT(0))throw r.clear(), new t.ImageError(t.ImageError.WRONG_FORMAT); for (o = 2; o <= r.length(); )if (a = r.SHORT(o), a >= 65488 && 65495 >= a)o += 2; else{if (65498 === a || 65497 === a)break; u = r.SHORT(o + 2) + 2, a >= 65505 && 65519 >= a && s.push({hex:a, name:"APP" + (15 & a), start:o, length:u, segment:r.SEGMENT(o, u)}), o += u}return r.clear(), {headers:s, restore:function(t){var i, n, r; for (r = new e(t), o = 65504 == r.SHORT(2)?4 + r.SHORT(4):2, n = 0, i = s.length; i > n; n++)r.SEGMENT(o, 0, s[n].segment), o += s[n].length; return t = r.SEGMENT(), r.clear(), t}, strip:function(t){var n, r, o, a; for (o = new i(t), r = o.headers, o.purge(), n = new e(t), a = r.length; a--; )n.SEGMENT(r[a].start, r[a].length, ""); return t = n.SEGMENT(), n.clear(), t}, get:function(e){for (var t = [], i = 0, n = s.length; n > i; i++)s[i].name === e.toUpperCase() && t.push(s[i].segment); return t}, set:function(e, t){var i, n, r, o = []; for ("string" == typeof t?o.push(t):o = t, i = n = 0, r = s.length; r > i && (s[i].name === e.toUpperCase() && (s[i].segment = o[n], s[i].length = o[n].length, n++), !(n >= o.length)); i++); }, purge:function(){this.headers = s = []}}}}), n("moxie/runtime/html5/image/ExifParser", ["moxie/core/utils/Basic", "moxie/runtime/html5/utils/BinaryReader", "moxie/core/Exceptions"], function(e, i, n){function r(o){function a(i, r){var o, a, s, u, c, m, h, f, p = this, g = [], x = {}, v = {1:"BYTE", 7:"UNDEFINED", 2:"ASCII", 3:"SHORT", 4:"LONG", 5:"RATIONAL", 9:"SLONG", 10:"SRATIONAL"}, w = {BYTE:1, UNDEFINED:1, ASCII:1, SHORT:2, LONG:4, RATIONAL:8, SLONG:4, SRATIONAL:8}; for (o = p.SHORT(i), a = 0; o > a; a++)if (g = [], h = i + 2 + 12 * a, s = r[p.SHORT(h)], s !== t){if (u = v[p.SHORT(h += 2)], c = p.LONG(h += 2), m = w[u], !m)throw new n.ImageError(n.ImageError.INVALID_META_ERR); if (h += 4, m * c > 4 && (h = p.LONG(h) + d.tiffHeader), h + m * c >= this.length())throw new n.ImageError(n.ImageError.INVALID_META_ERR); "ASCII" !== u?(g = p.asArray(u, h, c), f = 1 == c?g[0]:g, x[s] = l.hasOwnProperty(s) && "object" != typeof f?l[s][f]:f):x[s] = e.trim(p.STRING(h, c).replace(/\0$/, ""))}return x}function s(e, t, i){var n, r, o, a = 0; if ("string" == typeof t){var s = c[e.toLowerCase()]; for (var u in s)if (s[u] === t){t = u; break}}n = d[e.toLowerCase() + "IFD"], r = this.SHORT(n); for (var l = 0; r > l; l++)if (o = n + 12 * l + 2, this.SHORT(o) == t){a = o + 8; break}if (!a)return!1; try{this.write(a, i, 4)} catch (m){return!1}return!0}var u, c, l, d, m, h; if (i.call(this, o), c = {tiff:{274:"Orientation", 270:"ImageDescription", 271:"Make", 272:"Model", 305:"Software", 34665:"ExifIFDPointer", 34853:"GPSInfoIFDPointer"}, exif:{36864:"ExifVersion", 40961:"ColorSpace", 40962:"PixelXDimension", 40963:"PixelYDimension", 36867:"DateTimeOriginal", 33434:"ExposureTime", 33437:"FNumber", 34855:"ISOSpeedRatings", 37377:"ShutterSpeedValue", 37378:"ApertureValue", 37383:"MeteringMode", 37384:"LightSource", 37385:"Flash", 37386:"FocalLength", 41986:"ExposureMode", 41987:"WhiteBalance", 41990:"SceneCaptureType", 41988:"DigitalZoomRatio", 41992:"Contrast", 41993:"Saturation", 41994:"Sharpness"}, gps:{0:"GPSVersionID", 1:"GPSLatitudeRef", 2:"GPSLatitude", 3:"GPSLongitudeRef", 4:"GPSLongitude"}, thumb:{513:"JPEGInterchangeFormat", 514:"JPEGInterchangeFormatLength"}}, l = {ColorSpace:{1:"sRGB", 0:"Uncalibrated"}, MeteringMode:{0:"Unknown", 1:"Average", 2:"CenterWeightedAverage", 3:"Spot", 4:"MultiSpot", 5:"Pattern", 6:"Partial", 255:"Other"}, LightSource:{1:"Daylight", 2:"Fliorescent", 3:"Tungsten", 4:"Flash", 9:"Fine weather", 10:"Cloudy weather", 11:"Shade", 12:"Daylight fluorescent (D 5700 - 7100K)", 13:"Day white fluorescent (N 4600 -5400K)", 14:"Cool white fluorescent (W 3900 - 4500K)", 15:"White fluorescent (WW 3200 - 3700K)", 17:"Standard light A", 18:"Standard light B", 19:"Standard light C", 20:"D55", 21:"D65", 22:"D75", 23:"D50", 24:"ISO studio tungsten", 255:"Other"}, Flash:{0:"Flash did not fire", 1:"Flash fired", 5:"Strobe return light not detected", 7:"Strobe return light detected", 9:"Flash fired, compulsory flash mode", 13:"Flash fired, compulsory flash mode, return light not detected", 15:"Flash fired, compulsory flash mode, return light detected", 16:"Flash did not fire, compulsory flash mode", 24:"Flash did not fire, auto mode", 25:"Flash fired, auto mode", 29:"Flash fired, auto mode, return light not detected", 31:"Flash fired, auto mode, return light detected", 32:"No flash function", 65:"Flash fired, red-eye reduction mode", 69:"Flash fired, red-eye reduction mode, return light not detected", 71:"Flash fired, red-eye reduction mode, return light detected", 73:"Flash fired, compulsory flash mode, red-eye reduction mode", 77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected", 79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected", 89:"Flash fired, auto mode, red-eye reduction mode", 93:"Flash fired, auto mode, return light not detected, red-eye reduction mode", 95:"Flash fired, auto mode, return light detected, red-eye reduction mode"}, ExposureMode:{0:"Auto exposure", 1:"Manual exposure", 2:"Auto bracket"}, WhiteBalance:{0:"Auto white balance", 1:"Manual white balance"}, SceneCaptureType:{0:"Standard", 1:"Landscape", 2:"Portrait", 3:"Night scene"}, Contrast:{0:"Normal", 1:"Soft", 2:"Hard"}, Saturation:{0:"Normal", 1:"Low saturation", 2:"High saturation"}, Sharpness:{0:"Normal", 1:"Soft", 2:"Hard"}, GPSLatitudeRef:{N:"North latitude", S:"South latitude"}, GPSLongitudeRef:{E:"East longitude", W:"West longitude"}}, d = {tiffHeader:10}, m = d.tiffHeader, u = {clear:this.clear}, e.extend(this, {read:function(){try{return r.prototype.read.apply(this, arguments)} catch (e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}}, write:function(){try{return r.prototype.write.apply(this, arguments)} catch (e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}}, UNDEFINED:function(){return this.BYTE.apply(this, arguments)}, RATIONAL:function(e){return this.LONG(e) / this.LONG(e + 4)}, SRATIONAL:function(e){return this.SLONG(e) / this.SLONG(e + 4)}, ASCII:function(e){return this.CHAR(e)}, TIFF:function(){return h || null}, EXIF:function(){var t = null; if (d.exifIFD){try{t = a.call(this, d.exifIFD, c.exif)} catch (i){return null}if (t.ExifVersion && "array" === e.typeOf(t.ExifVersion)){for (var n = 0, r = ""; n < t.ExifVersion.length; n++)r += String.fromCharCode(t.ExifVersion[n]); t.ExifVersion = r}}return t}, GPS:function(){var t = null; if (d.gpsIFD){try{t = a.call(this, d.gpsIFD, c.gps)} catch (i){return null}t.GPSVersionID && "array" === e.typeOf(t.GPSVersionID) && (t.GPSVersionID = t.GPSVersionID.join("."))}return t}, thumb:function(){if (d.IFD1)try{var e = a.call(this, d.IFD1, c.thumb); if ("JPEGInterchangeFormat"in e)return this.SEGMENT(d.tiffHeader + e.JPEGInterchangeFormat, e.JPEGInterchangeFormatLength)} catch (t){}return null}, setExif:function(e, t){return"PixelXDimension" !== e && "PixelYDimension" !== e?!1:s.call(this, "exif", e, t)}, clear:function(){u.clear(), o = c = l = h = d = u = null}}), 65505 !== this.SHORT(0) || "EXIF\0" !== this.STRING(4, 5).toUpperCase())throw new n.ImageError(n.ImageError.INVALID_META_ERR); if (this.littleEndian = 18761 == this.SHORT(m), 42 !== this.SHORT(m += 2))throw new n.ImageError(n.ImageError.INVALID_META_ERR); d.IFD0 = d.tiffHeader + this.LONG(m += 2), h = a.call(this, d.IFD0, c.tiff), "ExifIFDPointer"in h && (d.exifIFD = d.tiffHeader + h.ExifIFDPointer, delete h.ExifIFDPointer), "GPSInfoIFDPointer"in h && (d.gpsIFD = d.tiffHeader + h.GPSInfoIFDPointer, delete h.GPSInfoIFDPointer), e.isEmptyObj(h) && (h = null); var f = this.LONG(d.IFD0 + 12 * this.SHORT(d.IFD0) + 2); f && (d.IFD1 = d.tiffHeader + f)}return r.prototype = i.prototype, r}), n("moxie/runtime/html5/image/JPEG", ["moxie/core/utils/Basic", "moxie/core/Exceptions", "moxie/runtime/html5/image/JPEGHeaders", "moxie/runtime/html5/utils/BinaryReader", "moxie/runtime/html5/image/ExifParser"], function(e, t, i, n, r){function o(o){function a(e){var t, i, n = 0; for (e || (e = c); n <= e.length(); ){if (t = e.SHORT(n += 2), t >= 65472 && 65475 >= t)return n += 5, {height:e.SHORT(n), width:e.SHORT(n += 2)}; i = e.SHORT(n += 2), n += i - 2}return null}function s(){var e, t, i = d.thumb(); return i && (e = new n(i), t = a(e), e.clear(), t)?(t.data = i, t):null}function u(){d && l && c && (d.clear(), l.purge(), c.clear(), m = l = d = c = null)}var c, l, d, m; if (c = new n(o), 65496 !== c.SHORT(0))throw new t.ImageError(t.ImageError.WRONG_FORMAT); l = new i(o); try{d = new r(l.get("app1")[0])} catch (h){}m = a.call(this), e.extend(this, {type:"image/jpeg", size:c.length(), width:m && m.width || 0, height:m && m.height || 0, setExif:function(t, i){return d?("object" === e.typeOf(t)?e.each(t, function(e, t){d.setExif(t, e)}):d.setExif(t, i), l.set("app1", d.SEGMENT()), void 0):!1}, writeHeaders:function(){return arguments.length?l.restore(arguments[0]):l.restore(o)}, stripHeaders:function(e){return l.strip(e)}, purge:function(){u.call(this)}}), d && (this.meta = {tiff:d.TIFF(), exif:d.EXIF(), gps:d.GPS(), thumb:s()})}return o}), n("moxie/runtime/html5/image/PNG", ["moxie/core/Exceptions", "moxie/core/utils/Basic", "moxie/runtime/html5/utils/BinaryReader"], function(e, t, i){function n(n){function r(){var e, t; return e = a.call(this, 8), "IHDR" == e.type?(t = e.start, {width:s.LONG(t), height:s.LONG(t += 4)}):null}function o(){s && (s.clear(), n = l = u = c = s = null)}function a(e){var t, i, n, r; return t = s.LONG(e), i = s.STRING(e += 4, 4), n = e += 4, r = s.LONG(e + t), {length:t, type:i, start:n, CRC:r}}var s, u, c, l; s = new i(n), function(){var t = 0, i = 0, n = [35152, 20039, 3338, 6666]; for (i = 0; i < n.length; i++, t += 2)if (n[i] != s.SHORT(t))throw new e.ImageError(e.ImageError.WRONG_FORMAT)}(), l = r.call(this), t.extend(this, {type:"image/png", size:s.length(), width:l.width, height:l.height, purge:function(){o.call(this)}}), o.call(this)}return n}), n("moxie/runtime/html5/image/ImageInfo", ["moxie/core/utils/Basic", "moxie/core/Exceptions", "moxie/runtime/html5/image/JPEG", "moxie/runtime/html5/image/PNG"], function(e, t, i, n){return function(r){var o, a = [i, n]; o = function(){for (var e = 0; e < a.length; e++)try{return new a[e](r)} catch (i){}throw new t.ImageError(t.ImageError.WRONG_FORMAT)}(), e.extend(this, {type:"", size:0, width:0, height:0, setExif:function(){}, writeHeaders:function(e){return e}, stripHeaders:function(e){return e}, purge:function(){r = null}}), e.extend(this, o), this.purge = function(){o.purge(), o = null}}}), n("moxie/runtime/html5/image/ResizerCanvas", [], function(){function e(i, n){var r = i.width, o = Math.floor(r * n), a = !1; (.5 > n || n > 2) && (n = .5 > n?.5:2, a = !0); var s = t(i, n); return a?e(s, o / s.width):s}function t(e, t){var i = e.width, n = e.height, r = Math.floor(i * t), o = Math.floor(n * t), a = document.createElement("canvas"); return a.width = r, a.height = o, a.getContext("2d").drawImage(e, 0, 0, i, n, 0, 0, r, o), e = null, a}return{scale:e}}), n("moxie/runtime/html5/image/Image", ["moxie/runtime/html5/Runtime", "moxie/core/utils/Basic", "moxie/core/Exceptions", "moxie/core/utils/Encode", "moxie/file/Blob", "moxie/file/File", "moxie/runtime/html5/image/ImageInfo", "moxie/runtime/html5/image/ResizerCanvas", "moxie/core/utils/Mime", "moxie/core/utils/Env"], function(e, t, i, n, r, o, a, s, u){function c(){function e(){if (!v && !g)throw new i.ImageError(i.DOMException.INVALID_STATE_ERR); return v || g}function c(){var t = e(); return"canvas" == t.nodeName.toLowerCase()?t:(v = document.createElement("canvas"), v.width = t.width, v.height = t.height, v.getContext("2d").drawImage(t, 0, 0), v)}function l(e){return n.atob(e.substring(e.indexOf("base64,") + 7))}function d(e, t){return"data:" + (t || "") + ";base64," + n.btoa(e)}function m(e){var t = this; g = new Image, g.onerror = function(){p.call(this), t.trigger("error", i.ImageError.WRONG_FORMAT)}, g.onload = function(){t.trigger("load")}, g.src = "data:" == e.substr(0, 5)?e:d(e, y.type)}function h(e, t){var n, r = this; return window.FileReader?(n = new FileReader, n.onload = function(){t.call(r, this.result)}, n.onerror = function(){r.trigger("error", i.ImageError.WRONG_FORMAT)}, n.readAsDataURL(e), void 0):t.call(this, e.getAsDataURL())}function f(e, i){var n = Math.PI / 180, r = document.createElement("canvas"), o = r.getContext("2d"), a = e.width, s = e.height; switch (t.inArray(i, [5, 6, 7, 8]) > - 1?(r.width = s, r.height = a):(r.width = a, r.height = s), i){case 2:o.translate(a, 0), o.scale( - 1, 1); break; case 3:o.translate(a, s), o.rotate(180 * n); break; case 4:o.translate(0, s), o.scale(1, - 1); break; case 5:o.rotate(90 * n), o.scale(1, - 1); break; case 6:o.rotate(90 * n), o.translate(0, - s); break; case 7:o.rotate(90 * n), o.translate(a, - s), o.scale( - 1, 1); break; case 8:o.rotate( - 90 * n), o.translate( - a, 0)}return o.drawImage(e, 0, 0, a, s), r}function p(){x && (x.purge(), x = null), w = g = v = y = null, b = !1}var g, x, v, w, y, E = this, b = !1, R = !0; t.extend(this, {loadFromBlob:function(e){var t = this.getRuntime(), n = arguments.length > 1?arguments[1]:!0; if (!t.can("access_binary"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR); return y = e, e.isDetached()?(w = e.getSource(), m.call(this, w), void 0):(h.call(this, e.getSource(), function(e){n && (w = l(e)), m.call(this, e)}), void 0)}, loadFromImage:function(e, t){this.meta = e.meta, y = new o(null, {name:e.name, size:e.size, type:e.type}), m.call(this, t?w = e.getAsBinaryString():e.getAsDataURL())}, getInfo:function(){var t, i = this.getRuntime(); return!x && w && i.can("access_image_binary") && (x = new a(w)), t = {width:e().width || 0, height:e().height || 0, type:y.type || u.getFileMime(y.name), size:w && w.length || y.size || 0, name:y.name || "", meta:null}, R && (t.meta = x && x.meta || this.meta || {}, !t.meta || !t.meta.thumb || t.meta.thumb.data instanceof r || (t.meta.thumb.data = new r(null, {type:"image/jpeg", data:t.meta.thumb.data}))), t}, resize:function(t, i, n){var r = document.createElement("canvas"); if (r.width = t.width, r.height = t.height, r.getContext("2d").drawImage(e(), t.x, t.y, t.width, t.height, 0, 0, r.width, r.height), v = s.scale(r, i), R = n.preserveHeaders, !R){var o = this.meta && this.meta.tiff && this.meta.tiff.Orientation || 1; v = f(v, o)}this.width = v.width, this.height = v.height, b = !0, this.trigger("Resize")}, getAsCanvas:function(){return v || (v = c()), v.id = this.uid + "_canvas", v}, getAsBlob:function(e, t){return e !== this.type?(b = !0, new o(null, {name:y.name || "", type:e, data:E.getAsDataURL(e, t)})):new o(null, {name:y.name || "", type:e, data:E.getAsBinaryString(e, t)})}, getAsDataURL:function(e){var t = arguments[1] || 90; if (!b)return g.src; if (c(), "image/jpeg" !== e)return v.toDataURL("image/png"); try{return v.toDataURL("image/jpeg", t / 100)} catch (i){return v.toDataURL("image/jpeg")}}, getAsBinaryString:function(e, t){if (!b)return w || (w = l(E.getAsDataURL(e, t))), w; if ("image/jpeg" !== e)w = l(E.getAsDataURL(e, t)); else{var i; t || (t = 90), c(); try{i = v.toDataURL("image/jpeg", t / 100)} catch (n){i = v.toDataURL("image/jpeg")}w = l(i), x && (w = x.stripHeaders(w), R && (x.meta && x.meta.exif && x.setExif({PixelXDimension:this.width, PixelYDimension:this.height}), w = x.writeHeaders(w)), x.purge(), x = null)}return b = !1, w}, destroy:function(){E = null, p.call(this), this.getRuntime().getShim().removeInstance(this.uid)}})}return e.Image = c}), n("moxie/runtime/flash/Runtime", ["moxie/core/utils/Basic", "moxie/core/utils/Env", "moxie/core/utils/Dom", "moxie/core/Exceptions", "moxie/runtime/Runtime"], function(e, t, i, n, o){function a(){var e; try{e = navigator.plugins["Shockwave Flash"], e = e.description} catch (t){try{e = new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")} catch (i){e = "0.0"}}return e = e.match(/\d+/g), parseFloat(e[0] + "." + e[1])}function s(e){var n = i.get(e); n && "OBJECT" == n.nodeName && ("IE" === t.browser?(n.style.display = "none", function r(){4 == n.readyState?u(e):setTimeout(r, 10)}()):n.parentNode.removeChild(n))}function u(e){var t = i.get(e); if (t){for (var n in t)"function" == typeof t[n] && (t[n] = null); t.parentNode.removeChild(t)}}function c(u){var c, m = this; u = e.extend({swf_url:t.swf_url}, u), o.call(this, u, l, {access_binary:function(e){return e && "browser" === m.mode}, access_image_binary:function(e){return e && "browser" === m.mode}, display_media:o.capTest(r("moxie/image/Image")), do_cors:o.capTrue, drag_and_drop:!1, report_upload_progress:function(){return"client" === m.mode}, resize_image:o.capTrue, return_response_headers:!1, return_response_type:function(t){return"json" === t && window.JSON?!0:!e.arrayDiff(t, ["", "text", "document"]) || "browser" === m.mode}, return_status_code:function(t){return"browser" === m.mode || !e.arrayDiff(t, [200, 404])}, select_file:o.capTrue, select_multiple:o.capTrue, send_binary_string:function(e){return e && "browser" === m.mode}, send_browser_cookies:function(e){return e && "browser" === m.mode}, send_custom_headers:function(e){return e && "browser" === m.mode}, send_multipart:o.capTrue, slice_blob:function(e){return e && "browser" === m.mode}, stream_upload:function(e){return e && "browser" === m.mode}, summon_file_dialog:!1, upload_filesize:function(t){return e.parseSizeStr(t) <= 2097152 || "client" === m.mode}, use_http_method:function(t){return!e.arrayDiff(t, ["GET", "POST"])}}, {access_binary:function(e){return e?"browser":"client"}, access_image_binary:function(e){return e?"browser":"client"}, report_upload_progress:function(e){return e?"browser":"client"}, return_response_type:function(t){return e.arrayDiff(t, ["", "text", "json", "document"])?"browser":["client", "browser"]}, return_status_code:function(t){return e.arrayDiff(t, [200, 404])?"browser":["client", "browser"]}, send_binary_string:function(e){return e?"browser":"client"}, send_browser_cookies:function(e){return e?"browser":"client"}, send_custom_headers:function(e){return e?"browser":"client"}, slice_blob:function(e){return e?"browser":"client"}, stream_upload:function(e){return e?"client":"browser"}, upload_filesize:function(t){return e.parseSizeStr(t) >= 2097152?"client":"browser"}}, "client"), a() < 11.3 && (this.mode = !1), e.extend(this, {getShim:function(){return i.get(this.uid)}, shimExec:function(e, t){var i = [].slice.call(arguments, 2); return m.getShim().exec(this.uid, e, t, i)}, init:function(){var i, r, o; o = this.getShimContainer(), e.extend(o.style, {position:"absolute", top:"-8px", left:"-8px", width:"9px", height:"9px", overflow:"hidden"}), i = '<object id="' + this.uid + '" type="application/x-shockwave-flash" data="' + u.swf_url + '" ', "IE" === t.browser && (i += 'classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '), i += 'width="100%" height="100%" style="outline:0"><param name="movie" value="' + u.swf_url + '" />' + '<param name="flashvars" value="uid=' + escape(this.uid) + "&target=" + t.global_event_dispatcher + '" />' + '<param name="wmode" value="transparent" />' + '<param name="allowscriptaccess" value="always" />' + "</object>", "IE" === t.browser?(r = document.createElement("div"), o.appendChild(r), r.outerHTML = i, r = o = null):o.innerHTML = i, c = setTimeout(function(){m && !m.initialized && m.trigger("Error", new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))}, 5e3)}, destroy:function(e){return function(){s(m.uid), e.call(m), clearTimeout(c), u = c = e = m = null}}(this.destroy)}, d)}var l = "flash", d = {}; return o.addConstructor(l, c), d}), n("moxie/runtime/flash/file/Blob", ["moxie/runtime/flash/Runtime", "moxie/file/Blob"], function(e, t){var i = {slice:function(e, i, n, r){var o = this.getRuntime(); return 0 > i?i = Math.max(e.size + i, 0):i > 0 && (i = Math.min(i, e.size)), 0 > n?n = Math.max(e.size + n, 0):n > 0 && (n = Math.min(n, e.size)), e = o.shimExec.call(this, "Blob", "slice", i, n, r || ""), e && (e = new t(o.uid, e)), e}}; return e.Blob = i}), n("moxie/runtime/flash/file/FileInput", ["moxie/runtime/flash/Runtime", "moxie/file/File", "moxie/core/utils/Basic"], function(e, t, i){var n = {init:function(e){var n = this, r = this.getRuntime(); this.bind("Change", function(){var e = r.shimExec.call(n, "FileInput", "getFiles"); n.files = [], i.each(e, function(e){n.files.push(new t(r.uid, e))})}, 999), this.getRuntime().shimExec.call(this, "FileInput", "init", {accept:e.accept, multiple:e.multiple}), this.trigger("ready")}}; return e.FileInput = n}), n("moxie/runtime/flash/file/FileReader", ["moxie/runtime/flash/Runtime", "moxie/core/utils/Encode"], function(e, t){function i(e, i){switch (i){case"readAsText":return t.atob(e, "utf8"); case"readAsBinaryString":return t.atob(e); case"readAsDataURL":return e}return null}var n = {read:function(e, t){var n = this; return n.result = "", "readAsDataURL" === e && (n.result = "data:" + (t.type || "") + ";base64,"), n.bind("Progress", function(t, r){r && (n.result += i(r, e))}, 999), n.getRuntime().shimExec.call(this, "FileReader", "readAsBase64", t.uid)}}; return e.FileReader = n}), n("moxie/runtime/flash/file/FileReaderSync", ["moxie/runtime/flash/Runtime", "moxie/core/utils/Encode"], function(e, t){function i(e, i){switch (i){case"readAsText":return t.atob(e, "utf8"); case"readAsBinaryString":return t.atob(e); case"readAsDataURL":return e}return null}var n = {read:function(e, t){var n, r = this.getRuntime(); return(n = r.shimExec.call(this, "FileReaderSync", "readAsBase64", t.uid))?("readAsDataURL" === e && (n = "data:" + (t.type || "") + ";base64," + n), i(n, e, t.type)):null}}; return e.FileReaderSync = n}), n("moxie/runtime/flash/runtime/Transporter", ["moxie/runtime/flash/Runtime", "moxie/file/Blob"], function(e, t){var i = {getAsBlob:function(e){var i = this.getRuntime(), n = i.shimExec.call(this, "Transporter", "getAsBlob", e); return n?new t(i.uid, n):null}}; return e.Transporter = i}), n("moxie/runtime/flash/xhr/XMLHttpRequest", ["moxie/runtime/flash/Runtime", "moxie/core/utils/Basic", "moxie/file/Blob", "moxie/file/File", "moxie/file/FileReaderSync", "moxie/runtime/flash/file/FileReaderSync", "moxie/xhr/FormData", "moxie/runtime/Transporter", "moxie/runtime/flash/runtime/Transporter"], function(e, t, i, n, r, o, a, s){var u = {send:function(e, n){function r(){e.transport = l.mode, l.shimExec.call(c, "XMLHttpRequest", "send", e, n)}function o(e, t){l.shimExec.call(c, "XMLHttpRequest", "appendBlob", e, t.uid), n = null, r()}function u(e, t){var i = new s; i.bind("TransportingComplete", function(){t(this.result)}), i.transport(e.getSource(), e.type, {ruid:l.uid})}var c = this, l = c.getRuntime(); if (t.isEmptyObj(e.headers) || t.each(e.headers, function(e, t){l.shimExec.call(c, "XMLHttpRequest", "setRequestHeader", t, e.toString())}), n instanceof a){var d; if (n.each(function(e, t){e instanceof i?d = t:l.shimExec.call(c, "XMLHttpRequest", "append", t, e)}), n.hasBlob()){var m = n.getBlob(); m.isDetached()?u(m, function(e){m.destroy(), o(d, e)}):o(d, m)} else n = null, r()} else n instanceof i?n.isDetached()?u(n, function(e){n.destroy(), n = e.uid, r()}):(n = n.uid, r()):r()}, getResponse:function(e){var i, o, a = this.getRuntime(); if (o = a.shimExec.call(this, "XMLHttpRequest", "getResponseAsBlob")){if (o = new n(a.uid, o), "blob" === e)return o; try{if (i = new r, ~t.inArray(e, ["", "text"]))return i.readAsText(o); if ("json" === e && window.JSON)return JSON.parse(i.readAsText(o))} finally{o.destroy()}}return null}, abort:function(){var e = this.getRuntime(); e.shimExec.call(this, "XMLHttpRequest", "abort"), this.dispatchEvent("readystatechange"), this.dispatchEvent("abort")}}; return e.XMLHttpRequest = u}), n("moxie/runtime/flash/image/Image", ["moxie/runtime/flash/Runtime", "moxie/core/utils/Basic", "moxie/runtime/Transporter", "moxie/file/Blob", "moxie/file/FileReaderSync"], function(e, t, i, n, r){var o = {loadFromBlob:function(e){function t(e){r.shimExec.call(n, "Image", "loadFromBlob", e.uid), n = r = null}var n = this, r = n.getRuntime(); if (e.isDetached()){var o = new i; o.bind("TransportingComplete", function(){t(o.result.getSource())}), o.transport(e.getSource(), e.type, {ruid:r.uid})} else t(e.getSource())}, loadFromImage:function(e){var t = this.getRuntime(); return t.shimExec.call(this, "Image", "loadFromImage", e.uid)}, getInfo:function(){var e = this.getRuntime(), t = e.shimExec.call(this, "Image", "getInfo"); return t.meta && t.meta.thumb && t.meta.thumb.data && !(e.meta.thumb.data instanceof n) && (t.meta.thumb.data = new n(e.uid, t.meta.thumb.data)), t}, getAsBlob:function(e, t){var i = this.getRuntime(), r = i.shimExec.call(this, "Image", "getAsBlob", e, t); return r?new n(i.uid, r):null}, getAsDataURL:function(){var e, t = this.getRuntime(), i = t.Image.getAsBlob.apply(this, arguments); return i?(e = new r, e.readAsDataURL(i)):null}}; return e.Image = o}), n("moxie/runtime/silverlight/Runtime", ["moxie/core/utils/Basic", "moxie/core/utils/Env", "moxie/core/utils/Dom", "moxie/core/Exceptions", "moxie/runtime/Runtime"], function(e, t, i, n, o){function a(e){var t, i, n, r, o, a = !1, s = null, u = 0; try{try{s = new ActiveXObject("AgControl.AgControl"), s.IsVersionSupported(e) && (a = !0), s = null} catch (c){var l = navigator.plugins["Silverlight Plug-In"]; if (l){for (t = l.description, "1.0.30226.2" === t && (t = "2.0.30226.2"), i = t.split("."); i.length > 3; )i.pop(); for (; i.length < 4; )i.push(0); for (n = e.split("."); n.length > 4; )n.pop(); do r = parseInt(n[u], 10), o = parseInt(i[u], 10), u++; while (u < n.length && r === o); o >= r && !isNaN(r) && (a = !0)}}} catch (d){a = !1}return a}function s(s){var l, d = this; s = e.extend({xap_url:t.xap_url}, s), o.call(this, s, u, {access_binary:o.capTrue, access_image_binary:o.capTrue, display_media:o.capTest(r("moxie/image/Image")), do_cors:o.capTrue, drag_and_drop:!1, report_upload_progress:o.capTrue, resize_image:o.capTrue, return_response_headers:function(e){return e && "client" === d.mode}, return_response_type:function(e){return"json" !== e?!0:!!window.JSON}, return_status_code:function(t){return"client" === d.mode || !e.arrayDiff(t, [200, 404])}, select_file:o.capTrue, select_multiple:o.capTrue, send_binary_string:o.capTrue, send_browser_cookies:function(e){return e && "browser" === d.mode}, send_custom_headers:function(e){return e && "client" === d.mode}, send_multipart:o.capTrue, slice_blob:o.capTrue, stream_upload:!0, summon_file_dialog:!1, upload_filesize:o.capTrue, use_http_method:function(t){return"client" === d.mode || !e.arrayDiff(t, ["GET", "POST"])}}, {return_response_headers:function(e){return e?"client":"browser"}, return_status_code:function(t){return e.arrayDiff(t, [200, 404])?"client":["client", "browser"]}, send_browser_cookies:function(e){return e?"browser":"client"}, send_custom_headers:function(e){return e?"client":"browser"}, use_http_method:function(t){return e.arrayDiff(t, ["GET", "POST"])?"client":["client", "browser"]}}), a("2.0.31005.0") && "Opera" !== t.browser || (this.mode = !1), e.extend(this, {getShim:function(){return i.get(this.uid).content.Moxie}, shimExec:function(e, t){var i = [].slice.call(arguments, 2); return d.getShim().exec(this.uid, e, t, i)}, init:function(){var e; e = this.getShimContainer(), e.innerHTML = '<object id="' + this.uid + '" data="data:application/x-silverlight," type="application/x-silverlight-2" width="100%" height="100%" style="outline:none;">' + '<param name="source" value="' + s.xap_url + '"/>' + '<param name="background" value="Transparent"/>' + '<param name="windowless" value="true"/>' + '<param name="enablehtmlaccess" value="true"/>' + '<param name="initParams" value="uid=' + this.uid + ",target=" + t.global_event_dispatcher + '"/>' + "</object>", l = setTimeout(function(){d && !d.initialized && d.trigger("Error", new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))}, "Windows" !== t.OS?1e4:5e3)}, destroy:function(e){return function(){e.call(d), clearTimeout(l), s = l = e = d = null}}(this.destroy)}, c)}var u = "silverlight", c = {}; return o.addConstructor(u, s), c}), n("moxie/runtime/silverlight/file/Blob", ["moxie/runtime/silverlight/Runtime", "moxie/core/utils/Basic", "moxie/runtime/flash/file/Blob"], function(e, t, i){return e.Blob = t.extend({}, i)}), n("moxie/runtime/silverlight/file/FileInput", ["moxie/runtime/silverlight/Runtime", "moxie/file/File", "moxie/core/utils/Basic"], function(e, t, i){function n(e){for (var t = "", i = 0; i < e.length; i++)t += ("" !== t?"|":"") + e[i].title + " | *." + e[i].extensions.replace(/,/g, ";*."); return t}var r = {init:function(e){var r = this, o = this.getRuntime(); this.bind("Change", function(){var e = o.shimExec.call(r, "FileInput", "getFiles"); r.files = [], i.each(e, function(e){r.files.push(new t(o.uid, e))})}, 999), o.shimExec.call(this, "FileInput", "init", n(e.accept), e.multiple), this.trigger("ready")}, setOption:function(e, t){"accept" == e && (t = n(t)), this.getRuntime().shimExec.call(this, "FileInput", "setOption", e, t)}}; return e.FileInput = r}), n("moxie/runtime/silverlight/file/FileDrop", ["moxie/runtime/silverlight/Runtime", "moxie/core/utils/Dom", "moxie/core/utils/Events"], function(e, t, i){var n = {init:function(){var e, n = this, r = n.getRuntime(); return e = r.getShimContainer(), i.addEvent(e, "dragover", function(e){e.preventDefault(), e.stopPropagation(), e.dataTransfer.dropEffect = "copy"}, n.uid), i.addEvent(e, "dragenter", function(e){e.preventDefault(); var i = t.get(r.uid).dragEnter(e); i && e.stopPropagation()}, n.uid), i.addEvent(e, "drop", function(e){e.preventDefault(); var i = t.get(r.uid).dragDrop(e); i && e.stopPropagation()}, n.uid), r.shimExec.call(this, "FileDrop", "init")}}; return e.FileDrop = n}), n("moxie/runtime/silverlight/file/FileReader", ["moxie/runtime/silverlight/Runtime", "moxie/core/utils/Basic", "moxie/runtime/flash/file/FileReader"], function(e, t, i){return e.FileReader = t.extend({}, i)
|
16 |
+
}), n("moxie/runtime/silverlight/file/FileReaderSync", ["moxie/runtime/silverlight/Runtime", "moxie/core/utils/Basic", "moxie/runtime/flash/file/FileReaderSync"], function(e, t, i){return e.FileReaderSync = t.extend({}, i)}), n("moxie/runtime/silverlight/runtime/Transporter", ["moxie/runtime/silverlight/Runtime", "moxie/core/utils/Basic", "moxie/runtime/flash/runtime/Transporter"], function(e, t, i){return e.Transporter = t.extend({}, i)}), n("moxie/runtime/silverlight/xhr/XMLHttpRequest", ["moxie/runtime/silverlight/Runtime", "moxie/core/utils/Basic", "moxie/runtime/flash/xhr/XMLHttpRequest", "moxie/runtime/silverlight/file/FileReaderSync", "moxie/runtime/silverlight/runtime/Transporter"], function(e, t, i){return e.XMLHttpRequest = t.extend({}, i)}), n("moxie/runtime/silverlight/image/Image", ["moxie/runtime/silverlight/Runtime", "moxie/core/utils/Basic", "moxie/file/Blob", "moxie/runtime/flash/image/Image"], function(e, t, i, n){return e.Image = t.extend({}, n, {getInfo:function(){var e = this.getRuntime(), n = ["tiff", "exif", "gps", "thumb"], r = {meta:{}}, o = e.shimExec.call(this, "Image", "getInfo"); return o.meta && (t.each(n, function(e){var t, i, n, a, s = o.meta[e]; if (s && s.keys)for (r.meta[e] = {}, i = 0, n = s.keys.length; n > i; i++)t = s.keys[i], a = s[t], a && (/^(\d|[1-9]\d+)$/.test(a)?a = parseInt(a, 10):/^\d*\.\d+$/.test(a) && (a = parseFloat(a)), r.meta[e][t] = a)}), r.meta && r.meta.thumb && r.meta.thumb.data && !(e.meta.thumb.data instanceof i) && (r.meta.thumb.data = new i(e.uid, r.meta.thumb.data))), r.width = parseInt(o.width, 10), r.height = parseInt(o.height, 10), r.size = parseInt(o.size, 10), r.type = o.type, r.name = o.name, r}, resize:function(e, t, i){this.getRuntime().shimExec.call(this, "Image", "resize", e.x, e.y, e.width, e.height, t, i.preserveHeaders, i.resample)}})}), n("moxie/runtime/html4/Runtime", ["moxie/core/utils/Basic", "moxie/core/Exceptions", "moxie/runtime/Runtime", "moxie/core/utils/Env"], function(e, t, i, n){function o(t){var o = this, u = i.capTest, c = i.capTrue; i.call(this, t, a, {access_binary:u(window.FileReader || window.File && File.getAsDataURL), access_image_binary:!1, display_media:u((n.can("create_canvas") || n.can("use_data_uri_over32kb")) && r("moxie/image/Image")), do_cors:!1, drag_and_drop:!1, filter_by_extension:u(function(){return!("Chrome" === n.browser && n.verComp(n.version, 28, "<") || "IE" === n.browser && n.verComp(n.version, 10, "<") || "Safari" === n.browser && n.verComp(n.version, 7, "<") || "Firefox" === n.browser && n.verComp(n.version, 37, "<"))}()), resize_image:function(){return s.Image && o.can("access_binary") && n.can("create_canvas")}, report_upload_progress:!1, return_response_headers:!1, return_response_type:function(t){return"json" === t && window.JSON?!0:!!~e.inArray(t, ["text", "document", ""])}, return_status_code:function(t){return!e.arrayDiff(t, [200, 404])}, select_file:function(){return n.can("use_fileinput")}, select_multiple:!1, send_binary_string:!1, send_custom_headers:!1, send_multipart:!0, slice_blob:!1, stream_upload:function(){return o.can("select_file")}, summon_file_dialog:function(){return o.can("select_file") && ("Firefox" === n.browser && n.verComp(n.version, 4, ">=") || "Opera" === n.browser && n.verComp(n.version, 12, ">=") || "IE" === n.browser && n.verComp(n.version, 10, ">=") || !!~e.inArray(n.browser, ["Chrome", "Safari"]))}, upload_filesize:c, use_http_method:function(t){return!e.arrayDiff(t, ["GET", "POST"])}}), e.extend(this, {init:function(){this.trigger("Init")}, destroy:function(e){return function(){e.call(o), e = o = null}}(this.destroy)}), e.extend(this.getShim(), s)}var a = "html4", s = {}; return i.addConstructor(a, o), s}), n("moxie/runtime/html4/file/FileInput", ["moxie/runtime/html4/Runtime", "moxie/file/File", "moxie/core/utils/Basic", "moxie/core/utils/Dom", "moxie/core/utils/Events", "moxie/core/utils/Mime", "moxie/core/utils/Env"], function(e, t, i, n, r, o, a){function s(){function e(){var o, c, d, m, h, f, p = this, g = p.getRuntime(); f = i.guid("uid_"), o = g.getShimContainer(), s && (d = n.get(s + "_form"), d && i.extend(d.style, {top:"100%"})), m = document.createElement("form"), m.setAttribute("id", f + "_form"), m.setAttribute("method", "post"), m.setAttribute("enctype", "multipart/form-data"), m.setAttribute("encoding", "multipart/form-data"), i.extend(m.style, {overflow:"hidden", position:"absolute", top:0, left:0, width:"100%", height:"100%"}), h = document.createElement("input"), h.setAttribute("id", f), h.setAttribute("type", "file"), h.setAttribute("accept", l.join(",")), i.extend(h.style, {fontSize:"999px", opacity:0}), m.appendChild(h), o.appendChild(m), i.extend(h.style, {position:"absolute", top:0, left:0, width:"100%", height:"100%"}), "IE" === a.browser && a.verComp(a.version, 10, "<") && i.extend(h.style, {filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}), h.onchange = function(){var i; if (this.value){if (this.files){if (i = this.files[0], 0 === i.size)return m.parentNode.removeChild(m), void 0} else i = {name:this.value}; i = new t(g.uid, i), this.onchange = function(){}, e.call(p), p.files = [i], h.setAttribute("id", i.uid), m.setAttribute("id", i.uid + "_form"), p.trigger("change"), h = m = null}}, g.can("summon_file_dialog") && (c = n.get(u.browse_button), r.removeEvent(c, "click", p.uid), r.addEvent(c, "click", function(e){h && !h.disabled && h.click(), e.preventDefault()}, p.uid)), s = f, o = d = c = null}var s, u, c, l = []; i.extend(this, {init:function(t){var i, a = this, s = a.getRuntime(); u = t, l = t.accept.mimes || o.extList2mimes(t.accept, s.can("filter_by_extension")), i = s.getShimContainer(), function(){var e, o, l; e = n.get(t.browse_button), c = n.getStyle(e, "z-index") || "auto", s.can("summon_file_dialog") && ("static" === n.getStyle(e, "position") && (e.style.position = "relative"), a.bind("Refresh", function(){o = parseInt(c, 10) || 1, n.get(u.browse_button).style.zIndex = o, this.getRuntime().getShimContainer().style.zIndex = o - 1})), l = s.can("summon_file_dialog")?e:i, r.addEvent(l, "mouseover", function(){a.trigger("mouseenter")}, a.uid), r.addEvent(l, "mouseout", function(){a.trigger("mouseleave")}, a.uid), r.addEvent(l, "mousedown", function(){a.trigger("mousedown")}, a.uid), r.addEvent(n.get(t.container), "mouseup", function(){a.trigger("mouseup")}, a.uid), e = null}(), e.call(this), i = null, a.trigger({type:"ready", async:!0})}, setOption:function(e, t){var i, r = this.getRuntime(); "accept" == e && (l = t.mimes || o.extList2mimes(t, r.can("filter_by_extension"))), i = n.get(s), i && i.setAttribute("accept", l.join(","))}, disable:function(e){var t; (t = n.get(s)) && (t.disabled = !!e)}, destroy:function(){var e = this.getRuntime(), t = e.getShim(), i = e.getShimContainer(), o = u && n.get(u.container), a = u && n.get(u.browse_button); o && r.removeAllEvents(o, this.uid), a && (r.removeAllEvents(a, this.uid), a.style.zIndex = c), i && (r.removeAllEvents(i, this.uid), i.innerHTML = ""), t.removeInstance(this.uid), s = l = u = i = o = a = t = null}})}return e.FileInput = s}), n("moxie/runtime/html4/file/FileReader", ["moxie/runtime/html4/Runtime", "moxie/runtime/html5/file/FileReader"], function(e, t){return e.FileReader = t}), n("moxie/runtime/html4/xhr/XMLHttpRequest", ["moxie/runtime/html4/Runtime", "moxie/core/utils/Basic", "moxie/core/utils/Dom", "moxie/core/utils/Url", "moxie/core/Exceptions", "moxie/core/utils/Events", "moxie/file/Blob", "moxie/xhr/FormData"], function(e, t, i, n, r, o, a, s){function u(){function e(e){var t, n, r, a, s = this, u = !1; if (l){if (t = l.id.replace(/_iframe$/, ""), n = i.get(t + "_form")){for (r = n.getElementsByTagName("input"), a = r.length; a--; )switch (r[a].getAttribute("type")){case"hidden":r[a].parentNode.removeChild(r[a]); break; case"file":u = !0}r = [], u || n.parentNode.removeChild(n), n = null}setTimeout(function(){o.removeEvent(l, "load", s.uid), l.parentNode && l.parentNode.removeChild(l); var t = s.getRuntime().getShimContainer(); t.children.length || t.parentNode.removeChild(t), t = l = null, e()}, 1)}}var u, c, l; t.extend(this, {send:function(d, m){function h(){var i = w.getShimContainer() || document.body, r = document.createElement("div"); r.innerHTML = '<iframe id="' + f + '_iframe" name="' + f + '_iframe" src="javascript:""" style="display:none"></iframe>', l = r.firstChild, i.appendChild(l), o.addEvent(l, "load", function(){var i; try{i = l.contentWindow.document || l.contentDocument || window.frames[l.id].document, /^4(0[0-9]|1[0-7]|2[2346])\s/.test(i.title)?u = i.title.replace(/^(\d+).*$/, "$1"):(u = 200, c = t.trim(i.body.innerHTML), v.trigger({type:"progress", loaded:c.length, total:c.length}), x && v.trigger({type:"uploadprogress", loaded:x.size || 1025, total:x.size || 1025}))} catch (r){if (!n.hasSameOrigin(d.url))return e.call(v, function(){v.trigger("error")}), void 0; u = 404}e.call(v, function(){v.trigger("load")})}, v.uid)}var f, p, g, x, v = this, w = v.getRuntime(); if (u = c = null, m instanceof s && m.hasBlob()){if (x = m.getBlob(), f = x.uid, g = i.get(f), p = i.get(f + "_form"), !p)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR)} else f = t.guid("uid_"), p = document.createElement("form"), p.setAttribute("id", f + "_form"), p.setAttribute("method", d.method), p.setAttribute("enctype", "multipart/form-data"), p.setAttribute("encoding", "multipart/form-data"), w.getShimContainer().appendChild(p); p.setAttribute("target", f + "_iframe"), m instanceof s && m.each(function(e, i){if (e instanceof a)g && g.setAttribute("name", i); else{var n = document.createElement("input"); t.extend(n, {type:"hidden", name:i, value:e}), g?p.insertBefore(n, g):p.appendChild(n)}}), p.setAttribute("action", d.url), h(), p.submit(), v.trigger("loadstart")}, getStatus:function(){return u}, getResponse:function(e){if ("json" === e && "string" === t.typeOf(c) && window.JSON)try{return JSON.parse(c.replace(/^\s*<pre[^>]*>/, "").replace(/<\/pre>\s*$/, ""))} catch (i){return null}return c}, abort:function(){var t = this; l && l.contentWindow && (l.contentWindow.stop?l.contentWindow.stop():l.contentWindow.document.execCommand?l.contentWindow.document.execCommand("Stop"):l.src = "about:blank"), e.call(this, function(){t.dispatchEvent("abort")})}})}return e.XMLHttpRequest = u}), n("moxie/runtime/html4/image/Image", ["moxie/runtime/html4/Runtime", "moxie/runtime/html5/image/Image"], function(e, t){return e.Image = t}), a(["moxie/core/utils/Basic", "moxie/core/utils/Encode", "moxie/core/utils/Env", "moxie/core/Exceptions", "moxie/core/utils/Dom", "moxie/core/EventTarget", "moxie/runtime/Runtime", "moxie/runtime/RuntimeClient", "moxie/file/Blob", "moxie/core/I18n", "moxie/core/utils/Mime", "moxie/file/FileInput", "moxie/file/File", "moxie/file/FileDrop", "moxie/file/FileReader", "moxie/core/utils/Url", "moxie/runtime/RuntimeTarget", "moxie/xhr/FormData", "moxie/xhr/XMLHttpRequest", "moxie/runtime/Transporter", "moxie/image/Image", "moxie/core/utils/Events", "moxie/runtime/html5/image/ResizerCanvas"])}(this)});
|
17 |
+
/**
|
18 |
+
* Plupload - multi-runtime File Uploader
|
19 |
+
* v2.3.1
|
20 |
+
*
|
21 |
+
* Copyright 2013, Moxiecode Systems AB
|
22 |
+
* Released under GPL License.
|
23 |
+
*
|
24 |
+
* License: http://www.plupload.com/license
|
25 |
+
* Contributing: http://www.plupload.com/contributing
|
26 |
+
*
|
27 |
+
* Date: 2017-02-06
|
28 |
+
*/
|
29 |
+
!function(e, t){var i = function(){var e = {}; return t.apply(e, arguments), e.plupload}; "function" == typeof define && define.amd?define("plupload", ["./moxie"], i):"object" == typeof module && module.exports?module.exports = i(require("./moxie")):e.plupload = i(e.moxie)}(this || window, function(e){!function(e, t, i){function n(e){function t(e, t, i){var r = {chunks:"slice_blob", jpgresize:"send_binary_string", pngresize:"send_binary_string", progress:"report_upload_progress", multi_selection:"select_multiple", dragdrop:"drag_and_drop", drop_element:"drag_and_drop", headers:"send_custom_headers", urlstream_upload:"send_binary_string", canSendBinary:"send_binary", triggerDialog:"summon_file_dialog"}; r[e]?n[r[e]] = t:i || (n[e] = t)}var i = e.required_features, n = {}; return"string" == typeof i?l.each(i.split(/\s*,\s*/), function(e){t(e, !0)}):"object" == typeof i?l.each(i, function(e, i){t(i, e)}):i === !0 && (e.chunk_size && e.chunk_size > 0 && (n.slice_blob = !0), l.isEmptyObj(e.resize) && e.multipart !== !1 || (n.send_binary_string = !0), e.http_method && (n.use_http_method = e.http_method), l.each(e, function(e, i){t(i, !!e, !0)})), n}var r = window.setTimeout, s = {}, a = t.core.utils, o = t.runtime.Runtime, l = {VERSION:"2.3.1", STOPPED:1, STARTED:2, QUEUED:1, UPLOADING:2, FAILED:4, DONE:5, GENERIC_ERROR: - 100, HTTP_ERROR: - 200, IO_ERROR: - 300, SECURITY_ERROR: - 400, INIT_ERROR: - 500, FILE_SIZE_ERROR: - 600, FILE_EXTENSION_ERROR: - 601, FILE_DUPLICATE_ERROR: - 602, IMAGE_FORMAT_ERROR: - 700, MEMORY_ERROR: - 701, IMAGE_DIMENSIONS_ERROR: - 702, mimeTypes:a.Mime.mimes, ua:a.Env, typeOf:a.Basic.typeOf, extend:a.Basic.extend, guid:a.Basic.guid, getAll:function(e){var t, i = []; "array" !== l.typeOf(e) && (e = [e]); for (var n = e.length; n--; )t = l.get(e[n]), t && i.push(t); return i.length?i:null}, get:a.Dom.get, each:a.Basic.each, getPos:a.Dom.getPos, getSize:a.Dom.getSize, xmlEncode:function(e){var t = {"<":"lt", ">":"gt", "&":"amp", '"':"quot", "'":"#39"}, i = /[<>&\"\']/g; return e?("" + e).replace(i, function(e){return t[e]?"&" + t[e] + ";":e}):e}, toArray:a.Basic.toArray, inArray:a.Basic.inArray, inSeries:a.Basic.inSeries, addI18n:t.core.I18n.addI18n, translate:t.core.I18n.translate, sprintf:a.Basic.sprintf, isEmptyObj:a.Basic.isEmptyObj, hasClass:a.Dom.hasClass, addClass:a.Dom.addClass, removeClass:a.Dom.removeClass, getStyle:a.Dom.getStyle, addEvent:a.Events.addEvent, removeEvent:a.Events.removeEvent, removeAllEvents:a.Events.removeAllEvents, cleanName:function(e){var t, i; for (i = [/[\300-\306]/g, "A", /[\340-\346]/g, "a", /\307/g, "C", /\347/g, "c", /[\310-\313]/g, "E", /[\350-\353]/g, "e", /[\314-\317]/g, "I", /[\354-\357]/g, "i", /\321/g, "N", /\361/g, "n", /[\322-\330]/g, "O", /[\362-\370]/g, "o", /[\331-\334]/g, "U", /[\371-\374]/g, "u"], t = 0; t < i.length; t += 2)e = e.replace(i[t], i[t + 1]); return e = e.replace(/\s+/g, "_"), e = e.replace(/[^a-z0-9_\-\.]+/gi, "")}, buildUrl:function(e, t){var i = ""; return l.each(t, function(e, t){i += (i?"&":"") + encodeURIComponent(t) + "=" + encodeURIComponent(e)}), i && (e += (e.indexOf("?") > 0?"&":"?") + i), e}, formatSize:function(e){function t(e, t){return Math.round(e * Math.pow(10, t)) / Math.pow(10, t)}if (e === i || /\D/.test(e))return l.translate("N/A"); var n = Math.pow(1024, 4); return e > n?t(e / n, 1) + " " + l.translate("tb"):e > (n /= 1024)?t(e / n, 1) + " " + l.translate("gb"):e > (n /= 1024)?t(e / n, 1) + " " + l.translate("mb"):e > 1024?Math.round(e / 1024) + " " + l.translate("kb"):e + " " + l.translate("b")}, parseSize:a.Basic.parseSizeStr, predictRuntime:function(e, t){var i, n; return i = new l.Uploader(e), n = o.thatCan(i.getOption().required_features, t || e.runtimes), i.destroy(), n}, addFileFilter:function(e, t){s[e] = t}}; l.addFileFilter("mime_types", function(e, t, i){e.length && !e.regexp.test(t.name)?(this.trigger("Error", {code:l.FILE_EXTENSION_ERROR, message:l.translate("File extension error."), file:t}), i(!1)):i(!0)}), l.addFileFilter("max_file_size", function(e, t, i){var n; e = l.parseSize(e), t.size !== n && e && t.size > e?(this.trigger("Error", {code:l.FILE_SIZE_ERROR, message:l.translate("File size error."), file:t}), i(!1)):i(!0)}), l.addFileFilter("prevent_duplicates", function(e, t, i){if (e)for (var n = this.files.length; n--; )if (t.name === this.files[n].name && t.size === this.files[n].size)return this.trigger("Error", {code:l.FILE_DUPLICATE_ERROR, message:l.translate("Duplicate file error."), file:t}), i(!1), void 0; i(!0)}), l.Uploader = function(e){function a(){var e, t, i = 0; if (this.state == l.STARTED){for (t = 0; t < x.length; t++)e || x[t].status != l.QUEUED?i++:(e = x[t], this.trigger("BeforeUpload", e) && (e.status = l.UPLOADING, this.trigger("UploadFile", e))); i == x.length && (this.state !== l.STOPPED && (this.state = l.STOPPED, this.trigger("StateChanged")), this.trigger("UploadComplete", x))}}function u(e){e.percent = e.size > 0?Math.ceil(100 * (e.loaded / e.size)):100, d()}function d(){var e, t, n, r = 0; for (w.reset(), e = 0; e < x.length; e++)t = x[e], t.size !== i?(w.size += t.origSize, n = t.loaded * t.origSize / t.size, (!t.completeTimestamp || t.completeTimestamp > I) && (r += n), w.loaded += n):w.size = i, t.status == l.DONE?w.uploaded++:t.status == l.FAILED?w.failed++:w.queued++; w.size === i?w.percent = x.length > 0?Math.ceil(100 * (w.uploaded / x.length)):0:(w.bytesPerSec = Math.ceil(r / (( + new Date - I || 1) / 1e3)), w.percent = w.size > 0?Math.ceil(100 * (w.loaded / w.size)):0)}function c(){var e = U[0] || F[0]; return e?e.getRuntime().uid:!1}function f(e, t){if (e.ruid){var i = o.getInfo(e.ruid); if (i)return i.can(t)}return!1}function p(){this.bind("FilesAdded FilesRemoved", function(e){e.trigger("QueueChanged"), e.refresh()}), this.bind("CancelUpload", y), this.bind("BeforeUpload", _), this.bind("UploadFile", E), this.bind("UploadProgress", v), this.bind("StateChanged", b), this.bind("QueueChanged", d), this.bind("Error", z), this.bind("FileUploaded", R), this.bind("Destroy", O)}function g(e, i){var n = this, r = 0, s = [], a = {runtime_order:e.runtimes, required_caps:e.required_features, preferred_caps:P, swf_url:e.flash_swf_url, xap_url:e.silverlight_xap_url}; l.each(e.runtimes.split(/\s*,\s*/), function(t){e[t] && (a[t] = e[t])}), e.browse_button && l.each(e.browse_button, function(i){s.push(function(s){var u = new t.file.FileInput(l.extend({}, a, {accept:e.filters.mime_types, name:e.file_data_name, multiple:e.multi_selection, container:e.container, browse_button:i})); u.onready = function(){var e = o.getInfo(this.ruid); l.extend(n.features, {chunks:e.can("slice_blob"), multipart:e.can("send_multipart"), multi_selection:e.can("select_multiple")}), r++, U.push(this), s()}, u.onchange = function(){n.addFile(this.files)}, u.bind("mouseenter mouseleave mousedown mouseup", function(t){A || (e.browse_button_hover && ("mouseenter" === t.type?l.addClass(i, e.browse_button_hover):"mouseleave" === t.type && l.removeClass(i, e.browse_button_hover)), e.browse_button_active && ("mousedown" === t.type?l.addClass(i, e.browse_button_active):"mouseup" === t.type && l.removeClass(i, e.browse_button_active)))}), u.bind("mousedown", function(){n.trigger("Browse")}), u.bind("error runtimeerror", function(){u = null, s()}), u.init()})}), e.drop_element && l.each(e.drop_element, function(e){s.push(function(i){var s = new t.file.FileDrop(l.extend({}, a, {drop_zone:e})); s.onready = function(){var e = o.getInfo(this.ruid); l.extend(n.features, {chunks:e.can("slice_blob"), multipart:e.can("send_multipart"), dragdrop:e.can("drag_and_drop")}), r++, F.push(this), i()}, s.ondrop = function(){n.addFile(this.files)}, s.bind("error runtimeerror", function(){s = null, i()}), s.init()})}), l.inSeries(s, function(){"function" == typeof i && i(r)})}function h(e, n, r){var s = new t.image.Image; try{s.onload = function(){return n.width > this.width && n.height > this.height && n.quality === i && n.preserve_headers && !n.crop?(this.destroy(), r(e)):(s.downsize(n.width, n.height, n.crop, n.preserve_headers), void 0)}, s.onresize = function(){r(this.getAsBlob(e.type, n.quality)), this.destroy()}, s.onerror = function(){r(e)}, s.load(e)} catch (a){r(e)}}function m(e, i, r){function s(e, i, n){var r = S[e]; switch (e){case"max_file_size":"max_file_size" === e && (S.max_file_size = S.filters.max_file_size = i); break; case"chunk_size":(i = l.parseSize(i)) && (S[e] = i, S.send_file_name = !0); break; case"multipart":S[e] = i, i || (S.send_file_name = !0); break; case"http_method":S[e] = "PUT" === i.toUpperCase()?"PUT":"POST"; break; case"unique_names":S[e] = i, i && (S.send_file_name = !0); break; case"filters":"array" === l.typeOf(i) && (i = {mime_types:i}), n?l.extend(S.filters, i):S.filters = i, i.mime_types && ("string" === l.typeOf(i.mime_types) && (i.mime_types = t.core.utils.Mime.mimes2extList(i.mime_types)), i.mime_types.regexp = function(e){var t = []; return l.each(e, function(e){l.each(e.extensions.split(/,/), function(e){/^\s*\*\s*$/.test(e)?t.push("\\.*"):t.push("\\." + e.replace(new RegExp("[" + "/^$.*+?|()[]{}\\".replace(/./g, "\\$&") + "]", "g"), "\\$&"))})}), new RegExp("(" + t.join("|") + ")$", "i")}(i.mime_types), S.filters.mime_types = i.mime_types); break; case"resize":S.resize = i?l.extend({preserve_headers:!0, crop:!1}, i):!1; break; case"prevent_duplicates":S.prevent_duplicates = S.filters.prevent_duplicates = !!i; break; case"container":case"browse_button":case"drop_element":i = "container" === e?l.get(i):l.getAll(i); case"runtimes":case"multi_selection":case"flash_swf_url":case"silverlight_xap_url":S[e] = i, n || (u = !0); break; default:S[e] = i}n || a.trigger("OptionChanged", e, i, r)}var a = this, u = !1; "object" == typeof e?l.each(e, function(e, t){s(t, e, r)}):s(e, i, r), r?(S.required_features = n(l.extend({}, S)), P = n(l.extend({}, S, {required_features:!0}))):u && (a.trigger("Destroy"), g.call(a, S, function(e){e?(a.runtime = o.getInfo(c()).type, a.trigger("Init", {runtime:a.runtime}), a.trigger("PostInit")):a.trigger("Error", {code:l.INIT_ERROR, message:l.translate("Init error.")})}))}function _(e, t){if (e.settings.unique_names){var i = t.name.match(/\.([^.]+)$/), n = "part"; i && (n = i[1]), t.target_name = t.id + "." + n}}function E(e, i){function n(){c-- > 0?r(s, 1e3):(i.loaded = g, e.trigger("Error", {code:l.HTTP_ERROR, message:l.translate("HTTP Error."), file:i, response:T.responseText, status:T.status, responseHeaders:T.getAllResponseHeaders()}))}function s(){var t, n, r = {}; i.status === l.UPLOADING && e.state !== l.STOPPED && (e.settings.send_file_name && (r.name = i.target_name || i.name), d && p.chunks && o.size > d?(n = Math.min(d, o.size - g), t = o.slice(g, g + n)):(n = o.size, t = o), d && p.chunks && (e.settings.send_chunk_number?(r.chunk = Math.ceil(g / d), r.chunks = Math.ceil(o.size / d)):(r.offset = g, r.total = o.size)), e.trigger("BeforeChunkUpload", i, r, t, g) && a(r, t, n))}function a(a, d, f){var h; T = new t.xhr.XMLHttpRequest, T.upload && (T.upload.onprogress = function(t){i.loaded = Math.min(i.size, g + t.loaded), e.trigger("UploadProgress", i)}), T.onload = function(){return T.status >= 400?(n(), void 0):(c = e.settings.max_retries, f < o.size?(d.destroy(), g += f, i.loaded = Math.min(g, o.size), e.trigger("ChunkUploaded", i, {offset:i.loaded, total:o.size, response:T.responseText, status:T.status, responseHeaders:T.getAllResponseHeaders()}), "Android Browser" === l.ua.browser && e.trigger("UploadProgress", i)):i.loaded = i.size, d = h = null, !g || g >= o.size?(i.size != i.origSize && (o.destroy(), o = null), e.trigger("UploadProgress", i), i.status = l.DONE, i.completeTimestamp = + new Date, e.trigger("FileUploaded", i, {response:T.responseText, status:T.status, responseHeaders:T.getAllResponseHeaders()})):r(s, 1), void 0)}, T.onerror = function(){n()}, T.onloadend = function(){this.destroy(), T = null}, e.settings.multipart && p.multipart?(T.open(e.settings.http_method, u, !0), l.each(e.settings.headers, function(e, t){T.setRequestHeader(t, e)}), h = new t.xhr.FormData, l.each(l.extend(a, e.settings.multipart_params), function(e, t){h.append(t, e)}), h.append(e.settings.file_data_name, d), T.send(h, {runtime_order:e.settings.runtimes, required_caps:e.settings.required_features, preferred_caps:P, swf_url:e.settings.flash_swf_url, xap_url:e.settings.silverlight_xap_url})):(u = l.buildUrl(e.settings.url, l.extend(a, e.settings.multipart_params)), T.open(e.settings.http_method, u, !0), l.each(e.settings.headers, function(e, t){T.setRequestHeader(t, e)}), T.hasRequestHeader("Content-Type") || T.setRequestHeader("Content-Type", "application/octet-stream"), T.send(d, {runtime_order:e.settings.runtimes, required_caps:e.settings.required_features, preferred_caps:P, swf_url:e.settings.flash_swf_url, xap_url:e.settings.silverlight_xap_url}))}var o, u = e.settings.url, d = e.settings.chunk_size, c = e.settings.max_retries, p = e.features, g = 0; i.loaded && (g = i.loaded = d?d * Math.floor(i.loaded / d):0), o = i.getSource(), !l.isEmptyObj(e.settings.resize) && f(o, "send_binary_string") && - 1 !== l.inArray(o.type, ["image/jpeg", "image/png"])?h.call(this, o, e.settings.resize, function(e){o = e, i.size = e.size, s()}):s()}function v(e, t){u(t)}function b(e){if (e.state == l.STARTED)I = + new Date; else if (e.state == l.STOPPED)for (var t = e.files.length - 1; t >= 0; t--)e.files[t].status == l.UPLOADING && (e.files[t].status = l.QUEUED, d())}function y(){T && T.abort()}function R(e){d(), r(function(){a.call(e)}, 1)}function z(e, t){t.code === l.INIT_ERROR?e.destroy():t.code === l.HTTP_ERROR && (t.file.status = l.FAILED, t.file.completeTimestamp = + new Date, u(t.file), e.state == l.STARTED && (e.trigger("CancelUpload"), r(function(){a.call(e)}, 1)))}function O(e){e.stop(), l.each(x, function(e){e.destroy()}), x = [], U.length && (l.each(U, function(e){e.destroy()}), U = []), F.length && (l.each(F, function(e){e.destroy()}), F = []), P = {}, A = !1, I = T = null, w.reset()}var S, I, w, T, D = l.guid(), x = [], P = {}, U = [], F = [], A = !1; S = {chunk_size:0, file_data_name:"file", filters:{mime_types:[], prevent_duplicates:!1, max_file_size:0}, flash_swf_url:"js/Moxie.swf", http_method:"POST", max_retries:0, multipart:!0, multi_selection:!0, resize:!1, runtimes:o.order, send_file_name:!0, send_chunk_number:!0, silverlight_xap_url:"js/Moxie.xap"}, m.call(this, e, null, !0), w = new l.QueueProgress, l.extend(this, {id:D, uid:D, state:l.STOPPED, features:{}, runtime:null, files:x, settings:S, total:w, init:function(){var e, t, i = this; return e = i.getOption("preinit"), "function" == typeof e?e(i):l.each(e, function(e, t){i.bind(t, e)}), p.call(i), l.each(["container", "browse_button", "drop_element"], function(e){return null === i.getOption(e)?(t = {code:l.INIT_ERROR, message:l.sprintf(l.translate("%s specified, but cannot be found."), e)}, !1):void 0}), t?i.trigger("Error", t):S.browse_button || S.drop_element?(g.call(i, S, function(e){var t = i.getOption("init"); "function" == typeof t?t(i):l.each(t, function(e, t){i.bind(t, e)}), e?(i.runtime = o.getInfo(c()).type, i.trigger("Init", {runtime:i.runtime}), i.trigger("PostInit")):i.trigger("Error", {code:l.INIT_ERROR, message:l.translate("Init error.")})}), void 0):i.trigger("Error", {code:l.INIT_ERROR, message:l.translate("You must specify either browse_button or drop_element.")})}, setOption:function(e, t){m.call(this, e, t, !this.runtime)}, getOption:function(e){return e?S[e]:S}, refresh:function(){U.length && l.each(U, function(e){e.trigger("Refresh")}), this.trigger("Refresh")}, start:function(){this.state != l.STARTED && (this.state = l.STARTED, this.trigger("StateChanged"), a.call(this))}, stop:function(){this.state != l.STOPPED && (this.state = l.STOPPED, this.trigger("StateChanged"), this.trigger("CancelUpload"))}, disableBrowse:function(){A = arguments[0] !== i?arguments[0]:!0, U.length && l.each(U, function(e){e.disable(A)}), this.trigger("DisableBrowse", A)}, getFile:function(e){var t; for (t = x.length - 1; t >= 0; t--)if (x[t].id === e)return x[t]}, addFile:function(e, i){function n(e, t){var i = []; l.each(u.settings.filters, function(t, n){s[n] && i.push(function(i){s[n].call(u, t, e, function(e){i(!e)})})}), l.inSeries(i, t)}function a(e){var s = l.typeOf(e); if (e instanceof t.file.File){if (!e.ruid && !e.isDetached()){if (!o)return!1; e.ruid = o, e.connectRuntime(o)}a(new l.File(e))} else e instanceof t.file.Blob?(a(e.getSource()), e.destroy()):e instanceof l.File?(i && (e.name = i), d.push(function(t){n(e, function(i){i || (x.push(e), f.push(e), u.trigger("FileFiltered", e)), r(t, 1)})})): - 1 !== l.inArray(s, ["file", "blob"])?a(new t.file.File(null, e)):"node" === s && "filelist" === l.typeOf(e.files)?l.each(e.files, a):"array" === s && (i = null, l.each(e, a))}var o, u = this, d = [], f = []; o = c(), a(e), d.length && l.inSeries(d, function(){f.length && u.trigger("FilesAdded", f)})}, removeFile:function(e){for (var t = "string" == typeof e?e:e.id, i = x.length - 1; i >= 0; i--)if (x[i].id === t)return this.splice(i, 1)[0]}, splice:function(e, t){var n = x.splice(e === i?0:e, t === i?x.length:t), r = !1; return this.state == l.STARTED && (l.each(n, function(e){return e.status === l.UPLOADING?(r = !0, !1):void 0}), r && this.stop()), this.trigger("FilesRemoved", n), l.each(n, function(e){e.destroy()}), r && this.start(), n}, dispatchEvent:function(e){var t, i; if (e = e.toLowerCase(), t = this.hasEventListener(e)){t.sort(function(e, t){return t.priority - e.priority}), i = [].slice.call(arguments), i.shift(), i.unshift(this); for (var n = 0; n < t.length; n++)if (t[n].fn.apply(t[n].scope, i) === !1)return!1}return!0}, bind:function(e, t, i, n){l.Uploader.prototype.bind.call(this, e, t, n, i)}, destroy:function(){this.trigger("Destroy"), S = w = null, this.unbindAll()}})}, l.Uploader.prototype = t.core.EventTarget.instance, l.File = function(){function e(e){l.extend(this, {id:l.guid(), name:e.name || e.fileName, type:e.type || "", size:e.size || e.fileSize, origSize:e.size || e.fileSize, loaded:0, percent:0, status:l.QUEUED, lastModifiedDate:e.lastModifiedDate || (new Date).toLocaleString(), completeTimestamp:0, getNative:function(){var e = this.getSource().getSource(); return - 1 !== l.inArray(l.typeOf(e), ["blob", "file"])?e:null}, getSource:function(){return t[this.id]?t[this.id]:null}, destroy:function(){var e = this.getSource(); e && (e.destroy(), delete t[this.id])}}), t[this.id] = e}var t = {}; return e}(), l.QueueProgress = function(){var e = this; e.size = 0, e.loaded = 0, e.uploaded = 0, e.failed = 0, e.queued = 0, e.percent = 0, e.bytesPerSec = 0, e.reset = function(){e.size = e.loaded = e.uploaded = e.failed = e.queued = e.percent = e.bytesPerSec = 0}}, e.plupload = l}(this, e)});
|
assets/global/plugins/validation/jquery.validate.js
CHANGED
@@ -6,1569 +6,1568 @@
|
|
6 |
* Copyright (c) 2016 Jörn Zaefferer
|
7 |
* Released under the MIT license
|
8 |
*/
|
9 |
-
(function(
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
}(function(
|
18 |
-
|
19 |
-
$.extend(
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
}
|
205 |
-
|
206 |
-
// Custom selectors
|
207 |
-
$.extend(
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
}
|
225 |
-
|
226 |
-
// Constructor for validator
|
227 |
-
$.validator = function(
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
};
|
232 |
-
|
233 |
-
// http://jqueryvalidation.org/jQuery.validator.format/
|
234 |
-
$.validator.format = function(
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
};
|
258 |
-
|
259 |
-
$.extend(
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
-
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
|
853 |
-
|
854 |
-
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
|
865 |
-
|
866 |
-
|
867 |
-
|
868 |
-
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
-
|
875 |
-
|
876 |
-
|
877 |
-
|
878 |
-
|
879 |
-
|
880 |
-
|
881 |
-
|
882 |
-
|
883 |
-
|
884 |
-
|
885 |
-
|
886 |
-
|
887 |
-
|
888 |
-
|
889 |
-
|
890 |
-
|
891 |
-
|
892 |
-
|
893 |
-
|
894 |
-
|
895 |
-
|
896 |
-
|
897 |
-
|
898 |
-
|
899 |
-
|
900 |
-
|
901 |
-
|
902 |
-
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
-
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
912 |
-
|
913 |
-
|
914 |
-
|
915 |
-
|
916 |
-
|
917 |
-
|
918 |
-
|
919 |
-
|
920 |
-
|
921 |
-
|
922 |
-
|
923 |
-
|
924 |
-
|
925 |
-
|
926 |
-
|
927 |
-
|
928 |
-
|
929 |
-
|
930 |
-
|
931 |
-
|
932 |
-
|
933 |
-
|
934 |
-
|
935 |
-
|
936 |
-
|
937 |
-
|
938 |
-
|
939 |
-
|
940 |
-
|
941 |
-
|
942 |
-
|
943 |
-
|
944 |
-
|
945 |
-
|
946 |
-
|
947 |
-
|
948 |
-
|
949 |
-
|
950 |
-
|
951 |
-
|
952 |
-
|
953 |
-
|
954 |
-
|
955 |
-
|
956 |
-
|
957 |
-
|
958 |
-
|
959 |
-
|
960 |
-
|
961 |
-
|
962 |
-
|
963 |
-
|
964 |
-
|
965 |
-
|
966 |
-
|
967 |
-
|
968 |
-
|
969 |
-
|
970 |
-
|
971 |
-
|
972 |
-
|
973 |
-
|
974 |
-
|
975 |
-
|
976 |
-
|
977 |
-
|
978 |
-
|
979 |
-
|
980 |
-
|
981 |
-
|
982 |
-
|
983 |
-
|
984 |
-
|
985 |
-
|
986 |
-
|
987 |
-
|
988 |
-
|
989 |
-
|
990 |
-
|
991 |
-
|
992 |
-
|
993 |
-
|
994 |
-
|
995 |
-
|
996 |
-
|
997 |
-
|
998 |
-
|
999 |
-
|
1000 |
-
|
1001 |
-
|
1002 |
-
|
1003 |
-
|
1004 |
-
|
1005 |
-
|
1006 |
-
|
1007 |
-
|
1008 |
-
|
1009 |
-
|
1010 |
-
|
1011 |
-
|
1012 |
-
|
1013 |
-
|
1014 |
-
|
1015 |
-
|
1016 |
-
|
1017 |
-
|
1018 |
-
|
1019 |
-
|
1020 |
-
|
1021 |
-
|
1022 |
-
|
1023 |
-
|
1024 |
-
|
1025 |
-
|
1026 |
-
|
1027 |
-
|
1028 |
-
|
1029 |
-
|
1030 |
-
|
1031 |
-
|
1032 |
-
|
1033 |
-
|
1034 |
-
|
1035 |
-
|
1036 |
-
|
1037 |
-
|
1038 |
-
|
1039 |
-
|
1040 |
-
|
1041 |
-
|
1042 |
-
|
1043 |
-
|
1044 |
-
|
1045 |
-
|
1046 |
-
|
1047 |
-
|
1048 |
-
|
1049 |
-
|
1050 |
-
|
1051 |
-
|
1052 |
-
|
1053 |
-
|
1054 |
-
|
1055 |
-
|
1056 |
-
|
1057 |
-
|
1058 |
-
|
1059 |
-
|
1060 |
-
|
1061 |
-
|
1062 |
-
|
1063 |
-
|
1064 |
-
|
1065 |
-
|
1066 |
-
|
1067 |
-
|
1068 |
-
|
1069 |
-
|
1070 |
-
|
1071 |
-
|
1072 |
-
|
1073 |
-
|
1074 |
-
|
1075 |
-
|
1076 |
-
|
1077 |
-
|
1078 |
-
|
1079 |
-
|
1080 |
-
|
1081 |
-
|
1082 |
-
|
1083 |
-
|
1084 |
-
|
1085 |
-
|
1086 |
-
|
1087 |
-
|
1088 |
-
|
1089 |
-
|
1090 |
-
|
1091 |
-
|
1092 |
-
|
1093 |
-
|
1094 |
-
|
1095 |
-
|
1096 |
-
|
1097 |
-
|
1098 |
-
|
1099 |
-
|
1100 |
-
|
1101 |
-
|
1102 |
-
|
1103 |
-
|
1104 |
-
|
1105 |
-
|
1106 |
-
|
1107 |
-
|
1108 |
-
|
1109 |
-
|
1110 |
-
|
1111 |
-
|
1112 |
-
|
1113 |
-
|
1114 |
-
|
1115 |
-
|
1116 |
-
|
1117 |
-
|
1118 |
-
|
1119 |
-
|
1120 |
-
|
1121 |
-
|
1122 |
-
|
1123 |
-
|
1124 |
-
|
1125 |
-
|
1126 |
-
|
1127 |
-
|
1128 |
-
|
1129 |
-
|
1130 |
-
|
1131 |
-
|
1132 |
-
|
1133 |
-
|
1134 |
-
|
1135 |
-
|
1136 |
-
|
1137 |
-
|
1138 |
-
|
1139 |
-
|
1140 |
-
|
1141 |
-
|
1142 |
-
|
1143 |
-
|
1144 |
-
|
1145 |
-
|
1146 |
-
|
1147 |
-
|
1148 |
-
|
1149 |
-
|
1150 |
-
|
1151 |
-
|
1152 |
-
|
1153 |
-
|
1154 |
-
|
1155 |
-
|
1156 |
-
|
1157 |
-
|
1158 |
-
|
1159 |
-
|
1160 |
-
|
1161 |
-
|
1162 |
-
|
1163 |
-
|
1164 |
-
|
1165 |
-
|
1166 |
-
|
1167 |
-
|
1168 |
-
|
1169 |
-
|
1170 |
-
|
1171 |
-
|
1172 |
-
|
1173 |
-
|
1174 |
-
|
1175 |
-
|
1176 |
-
|
1177 |
-
|
1178 |
-
|
1179 |
-
|
1180 |
-
|
1181 |
-
|
1182 |
-
|
1183 |
-
|
1184 |
-
|
1185 |
-
|
1186 |
-
|
1187 |
-
|
1188 |
-
|
1189 |
-
|
1190 |
-
|
1191 |
-
|
1192 |
-
|
1193 |
-
|
1194 |
-
|
1195 |
-
|
1196 |
-
|
1197 |
-
|
1198 |
-
|
1199 |
-
|
1200 |
-
|
1201 |
-
|
1202 |
-
|
1203 |
-
|
1204 |
-
|
1205 |
-
|
1206 |
-
|
1207 |
-
|
1208 |
-
|
1209 |
-
|
1210 |
-
|
1211 |
-
|
1212 |
-
|
1213 |
-
|
1214 |
-
|
1215 |
-
|
1216 |
-
|
1217 |
-
|
1218 |
-
|
1219 |
-
|
1220 |
-
|
1221 |
-
|
1222 |
-
|
1223 |
-
|
1224 |
-
|
1225 |
-
|
1226 |
-
|
1227 |
-
|
1228 |
-
|
1229 |
-
|
1230 |
-
|
1231 |
-
|
1232 |
-
|
1233 |
-
|
1234 |
-
|
1235 |
-
|
1236 |
-
|
1237 |
-
|
1238 |
-
|
1239 |
-
|
1240 |
-
|
1241 |
-
|
1242 |
-
|
1243 |
-
|
1244 |
-
|
1245 |
-
|
1246 |
-
|
1247 |
-
|
1248 |
-
|
1249 |
-
|
1250 |
-
|
1251 |
-
|
1252 |
-
|
1253 |
-
|
1254 |
-
|
1255 |
-
|
1256 |
-
|
1257 |
-
|
1258 |
-
|
1259 |
-
|
1260 |
-
|
1261 |
-
|
1262 |
-
|
1263 |
-
|
1264 |
-
|
1265 |
-
|
1266 |
-
|
1267 |
-
|
1268 |
-
|
1269 |
-
|
1270 |
-
|
1271 |
-
|
1272 |
-
|
1273 |
-
|
1274 |
-
|
1275 |
-
|
1276 |
-
|
1277 |
-
|
1278 |
-
|
1279 |
-
|
1280 |
-
|
1281 |
-
|
1282 |
-
|
1283 |
-
|
1284 |
-
|
1285 |
-
|
1286 |
-
|
1287 |
-
|
1288 |
-
|
1289 |
-
|
1290 |
-
|
1291 |
-
|
1292 |
-
|
1293 |
-
|
1294 |
-
|
1295 |
-
|
1296 |
-
|
1297 |
-
|
1298 |
-
|
1299 |
-
|
1300 |
-
|
1301 |
-
|
1302 |
-
|
1303 |
-
|
1304 |
-
|
1305 |
-
|
1306 |
-
|
1307 |
-
|
1308 |
-
|
1309 |
-
|
1310 |
-
|
1311 |
-
|
1312 |
-
|
1313 |
-
|
1314 |
-
|
1315 |
-
|
1316 |
-
|
1317 |
-
|
1318 |
-
|
1319 |
-
|
1320 |
-
|
1321 |
-
|
1322 |
-
|
1323 |
-
|
1324 |
-
|
1325 |
-
|
1326 |
-
|
1327 |
-
|
1328 |
-
|
1329 |
-
|
1330 |
-
|
1331 |
-
|
1332 |
-
|
1333 |
-
|
1334 |
-
|
1335 |
-
|
1336 |
-
|
1337 |
-
|
1338 |
-
|
1339 |
-
|
1340 |
-
|
1341 |
-
|
1342 |
-
|
1343 |
-
|
1344 |
-
|
1345 |
-
|
1346 |
-
|
1347 |
-
|
1348 |
-
|
1349 |
-
|
1350 |
-
|
1351 |
-
|
1352 |
-
|
1353 |
-
|
1354 |
-
|
1355 |
-
|
1356 |
-
|
1357 |
-
|
1358 |
-
|
1359 |
-
|
1360 |
-
|
1361 |
-
|
1362 |
-
|
1363 |
-
|
1364 |
-
|
1365 |
-
|
1366 |
-
|
1367 |
-
|
1368 |
-
|
1369 |
-
|
1370 |
-
|
1371 |
-
|
1372 |
-
|
1373 |
-
|
1374 |
-
|
1375 |
-
|
1376 |
-
|
1377 |
-
|
1378 |
-
|
1379 |
-
|
1380 |
-
|
1381 |
-
|
1382 |
-
|
1383 |
-
|
1384 |
-
|
1385 |
-
|
1386 |
-
|
1387 |
-
|
1388 |
-
|
1389 |
-
|
1390 |
-
|
1391 |
-
|
1392 |
-
|
1393 |
-
|
1394 |
-
|
1395 |
-
|
1396 |
-
|
1397 |
-
|
1398 |
-
|
1399 |
-
|
1400 |
-
|
1401 |
-
|
1402 |
-
|
1403 |
-
|
1404 |
-
|
1405 |
-
|
1406 |
-
|
1407 |
-
|
1408 |
-
|
1409 |
-
|
1410 |
-
|
1411 |
-
|
1412 |
-
|
1413 |
-
|
1414 |
-
|
1415 |
-
|
1416 |
-
|
1417 |
-
|
1418 |
-
|
1419 |
-
|
1420 |
-
|
1421 |
-
|
1422 |
-
|
1423 |
-
|
1424 |
-
|
1425 |
-
|
1426 |
-
|
1427 |
-
|
1428 |
-
|
1429 |
-
|
1430 |
-
|
1431 |
-
|
1432 |
-
|
1433 |
-
|
1434 |
-
|
1435 |
-
|
1436 |
-
|
1437 |
-
|
1438 |
-
|
1439 |
-
|
1440 |
-
|
1441 |
-
|
1442 |
-
|
1443 |
-
|
1444 |
-
|
1445 |
-
|
1446 |
-
|
1447 |
-
|
1448 |
-
|
1449 |
-
|
1450 |
-
|
1451 |
-
|
1452 |
-
|
1453 |
-
|
1454 |
-
|
1455 |
-
|
1456 |
-
|
1457 |
-
|
1458 |
-
|
1459 |
-
|
1460 |
-
|
1461 |
-
|
1462 |
-
|
1463 |
-
|
1464 |
-
|
1465 |
-
|
1466 |
-
|
1467 |
-
|
1468 |
-
|
1469 |
-
|
1470 |
-
|
1471 |
-
|
1472 |
-
|
1473 |
-
|
1474 |
-
|
1475 |
-
|
1476 |
-
|
1477 |
-
|
1478 |
-
|
1479 |
-
|
1480 |
-
|
1481 |
-
|
1482 |
-
|
1483 |
-
|
1484 |
-
|
1485 |
-
|
1486 |
-
|
1487 |
-
|
1488 |
-
|
1489 |
-
|
1490 |
-
|
1491 |
-
|
1492 |
-
|
1493 |
-
|
1494 |
-
|
1495 |
-
|
1496 |
-
|
1497 |
-
|
1498 |
-
|
1499 |
-
|
1500 |
-
|
1501 |
-
|
1502 |
-
|
1503 |
-
|
1504 |
-
|
1505 |
-
|
1506 |
-
|
1507 |
-
|
1508 |
-
|
1509 |
-
|
1510 |
-
|
1511 |
-
|
1512 |
-
|
1513 |
-
|
1514 |
-
|
1515 |
-
|
1516 |
-
|
1517 |
-
|
1518 |
-
|
1519 |
-
|
1520 |
-
|
1521 |
-
|
1522 |
-
|
1523 |
-
|
1524 |
-
|
1525 |
-
|
1526 |
-
|
1527 |
-
|
1528 |
-
|
1529 |
-
|
1530 |
-
|
1531 |
-
|
1532 |
-
|
1533 |
-
|
1534 |
-
|
1535 |
-
|
1536 |
-
|
1537 |
-
|
1538 |
-
//
|
1539 |
-
//
|
1540 |
-
|
1541 |
-
|
1542 |
-
|
1543 |
-
|
1544 |
-
|
1545 |
-
|
1546 |
-
|
1547 |
-
|
1548 |
-
|
1549 |
-
|
1550 |
-
|
1551 |
-
|
1552 |
-
|
1553 |
-
|
1554 |
-
|
1555 |
-
|
1556 |
-
|
1557 |
-
|
1558 |
-
|
1559 |
-
|
1560 |
-
|
1561 |
-
|
1562 |
-
|
1563 |
-
|
1564 |
-
|
1565 |
-
|
1566 |
-
|
1567 |
-
|
1568 |
-
|
1569 |
-
|
1570 |
-
|
1571 |
-
|
1572 |
-
|
1573 |
-
return $;
|
1574 |
}));
|
6 |
* Copyright (c) 2016 Jörn Zaefferer
|
7 |
* Released under the MIT license
|
8 |
*/
|
9 |
+
(function (factory) {
|
10 |
+
if (typeof define === "function" && define.amd) {
|
11 |
+
define(["jquery"], factory);
|
12 |
+
} else if (typeof module === "object" && module.exports) {
|
13 |
+
module.exports = factory(require("jquery"));
|
14 |
+
} else {
|
15 |
+
factory(jQuery);
|
16 |
+
}
|
17 |
+
}(function ($) {
|
18 |
+
|
19 |
+
$.extend($.fn, {
|
20 |
+
|
21 |
+
// http://jqueryvalidation.org/validate/
|
22 |
+
validate: function (options) {
|
23 |
+
|
24 |
+
// If nothing is selected, return nothing; can't chain anyway
|
25 |
+
if (!this.length) {
|
26 |
+
if (options && options.debug && window.console) {
|
27 |
+
console.warn("Nothing selected, can't validate, returning nothing.");
|
28 |
+
}
|
29 |
+
return;
|
30 |
+
}
|
31 |
+
|
32 |
+
// Check if a validator for this form was already created
|
33 |
+
var validator = $.data(this[ 0 ], "validator");
|
34 |
+
if (validator) {
|
35 |
+
return validator;
|
36 |
+
}
|
37 |
+
|
38 |
+
// Add novalidate tag if HTML5.
|
39 |
+
this.attr("novalidate", "novalidate");
|
40 |
+
|
41 |
+
validator = new $.validator(options, this[ 0 ]);
|
42 |
+
$.data(this[ 0 ], "validator", validator);
|
43 |
+
|
44 |
+
if (validator.settings.onsubmit) {
|
45 |
+
|
46 |
+
this.on("click.validate", ":submit", function (event) {
|
47 |
+
if (validator.settings.submitHandler) {
|
48 |
+
validator.submitButton = event.target;
|
49 |
+
}
|
50 |
+
|
51 |
+
// Allow suppressing validation by adding a cancel class to the submit button
|
52 |
+
if ($(this).hasClass("cancel")) {
|
53 |
+
validator.cancelSubmit = true;
|
54 |
+
}
|
55 |
+
|
56 |
+
// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button
|
57 |
+
if ($(this).attr("formnovalidate") !== undefined) {
|
58 |
+
validator.cancelSubmit = true;
|
59 |
+
}
|
60 |
+
});
|
61 |
+
|
62 |
+
// Validate the form on submit
|
63 |
+
this.on("submit.validate", function (event) {
|
64 |
+
if (validator.settings.debug) {
|
65 |
+
|
66 |
+
// Prevent form submit to be able to see console output
|
67 |
+
event.preventDefault();
|
68 |
+
}
|
69 |
+
function handle() {
|
70 |
+
var hidden, result;
|
71 |
+
if (validator.settings.submitHandler) {
|
72 |
+
if (validator.submitButton) {
|
73 |
+
|
74 |
+
// Insert a hidden input as a replacement for the missing submit button
|
75 |
+
hidden = $("<input type='hidden'/>")
|
76 |
+
.attr("name", validator.submitButton.name)
|
77 |
+
.val($(validator.submitButton).val())
|
78 |
+
.appendTo(validator.currentForm);
|
79 |
+
}
|
80 |
+
result = validator.settings.submitHandler.call(validator, validator.currentForm, event);
|
81 |
+
if (validator.submitButton) {
|
82 |
+
|
83 |
+
// And clean up afterwards; thanks to no-block-scope, hidden can be referenced
|
84 |
+
hidden.remove();
|
85 |
+
}
|
86 |
+
if (result !== undefined) {
|
87 |
+
return result;
|
88 |
+
}
|
89 |
+
return false;
|
90 |
+
}
|
91 |
+
return true;
|
92 |
+
}
|
93 |
+
|
94 |
+
// Prevent submit for invalid forms or custom submit handlers
|
95 |
+
if (validator.cancelSubmit) {
|
96 |
+
validator.cancelSubmit = false;
|
97 |
+
return handle();
|
98 |
+
}
|
99 |
+
if (validator.form()) {
|
100 |
+
if (validator.pendingRequest) {
|
101 |
+
validator.formSubmitted = true;
|
102 |
+
return false;
|
103 |
+
}
|
104 |
+
return handle();
|
105 |
+
} else {
|
106 |
+
validator.focusInvalid();
|
107 |
+
return false;
|
108 |
+
}
|
109 |
+
});
|
110 |
+
}
|
111 |
+
|
112 |
+
return validator;
|
113 |
+
},
|
114 |
+
|
115 |
+
// http://jqueryvalidation.org/valid/
|
116 |
+
valid: function () {
|
117 |
+
var valid, validator, errorList;
|
118 |
+
|
119 |
+
if ($(this[ 0 ]).is("form")) {
|
120 |
+
valid = this.validate().form();
|
121 |
+
} else {
|
122 |
+
errorList = [];
|
123 |
+
valid = true;
|
124 |
+
validator = $(this[ 0 ].form).validate();
|
125 |
+
this.each(function () {
|
126 |
+
valid = validator.element(this) && valid;
|
127 |
+
if (!valid) {
|
128 |
+
errorList = errorList.concat(validator.errorList);
|
129 |
+
}
|
130 |
+
});
|
131 |
+
validator.errorList = errorList;
|
132 |
+
}
|
133 |
+
return valid;
|
134 |
+
},
|
135 |
+
|
136 |
+
// http://jqueryvalidation.org/rules/
|
137 |
+
rules: function (command, argument) {
|
138 |
+
var element = this[ 0 ],
|
139 |
+
settings, staticRules, existingRules, data, param, filtered;
|
140 |
+
|
141 |
+
// If nothing is selected, return empty object; can't chain anyway
|
142 |
+
if (element == null || element.form == null) {
|
143 |
+
return;
|
144 |
+
}
|
145 |
+
|
146 |
+
if (command) {
|
147 |
+
settings = $.data(element.form, "validator").settings;
|
148 |
+
staticRules = settings.rules;
|
149 |
+
existingRules = $.validator.staticRules(element);
|
150 |
+
switch (command) {
|
151 |
+
case "add":
|
152 |
+
$.extend(existingRules, $.validator.normalizeRule(argument));
|
153 |
+
|
154 |
+
// Remove messages from rules, but allow them to be set separately
|
155 |
+
delete existingRules.messages;
|
156 |
+
staticRules[ element.name ] = existingRules;
|
157 |
+
if (argument.messages) {
|
158 |
+
settings.messages[ element.name ] = $.extend(settings.messages[ element.name ], argument.messages);
|
159 |
+
}
|
160 |
+
break;
|
161 |
+
case "remove":
|
162 |
+
if (!argument) {
|
163 |
+
delete staticRules[ element.name ];
|
164 |
+
return existingRules;
|
165 |
+
}
|
166 |
+
filtered = {};
|
167 |
+
$.each(argument.split(/\s/), function (index, method) {
|
168 |
+
filtered[ method ] = existingRules[ method ];
|
169 |
+
delete existingRules[ method ];
|
170 |
+
if (method === "required") {
|
171 |
+
$(element).removeAttr("aria-required");
|
172 |
+
}
|
173 |
+
});
|
174 |
+
return filtered;
|
175 |
+
}
|
176 |
+
}
|
177 |
+
|
178 |
+
data = $.validator.normalizeRules(
|
179 |
+
$.extend(
|
180 |
+
{},
|
181 |
+
$.validator.classRules(element),
|
182 |
+
$.validator.attributeRules(element),
|
183 |
+
$.validator.dataRules(element),
|
184 |
+
$.validator.staticRules(element)
|
185 |
+
), element);
|
186 |
+
|
187 |
+
// Make sure required is at front
|
188 |
+
if (data.required) {
|
189 |
+
param = data.required;
|
190 |
+
delete data.required;
|
191 |
+
data = $.extend({required: param}, data);
|
192 |
+
$(element).attr("aria-required", "true");
|
193 |
+
}
|
194 |
+
|
195 |
+
// Make sure remote is at back
|
196 |
+
if (data.remote) {
|
197 |
+
param = data.remote;
|
198 |
+
delete data.remote;
|
199 |
+
data = $.extend(data, {remote: param});
|
200 |
+
}
|
201 |
+
|
202 |
+
return data;
|
203 |
+
}
|
204 |
+
});
|
205 |
+
|
206 |
+
// Custom selectors
|
207 |
+
$.extend($.expr.pseudos || $.expr[ ":" ], {// '|| $.expr[ ":" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support
|
208 |
+
|
209 |
+
// http://jqueryvalidation.org/blank-selector/
|
210 |
+
blank: function (a) {
|
211 |
+
return !$.trim("" + $(a).val());
|
212 |
+
},
|
213 |
+
|
214 |
+
// http://jqueryvalidation.org/filled-selector/
|
215 |
+
filled: function (a) {
|
216 |
+
var val = $(a).val();
|
217 |
+
return val !== null && !!$.trim("" + val);
|
218 |
+
},
|
219 |
+
|
220 |
+
// http://jqueryvalidation.org/unchecked-selector/
|
221 |
+
unchecked: function (a) {
|
222 |
+
return !$(a).prop("checked");
|
223 |
+
}
|
224 |
+
});
|
225 |
+
|
226 |
+
// Constructor for validator
|
227 |
+
$.validator = function (options, form) {
|
228 |
+
this.settings = $.extend(true, {}, $.validator.defaults, options);
|
229 |
+
this.currentForm = form;
|
230 |
+
this.init();
|
231 |
+
};
|
232 |
+
|
233 |
+
// http://jqueryvalidation.org/jQuery.validator.format/
|
234 |
+
$.validator.format = function (source, params) {
|
235 |
+
if (arguments.length === 1) {
|
236 |
+
return function () {
|
237 |
+
var args = $.makeArray(arguments);
|
238 |
+
args.unshift(source);
|
239 |
+
return $.validator.format.apply(this, args);
|
240 |
+
};
|
241 |
+
}
|
242 |
+
if (params === undefined) {
|
243 |
+
return source;
|
244 |
+
}
|
245 |
+
if (arguments.length > 2 && params.constructor !== Array) {
|
246 |
+
params = $.makeArray(arguments).slice(1);
|
247 |
+
}
|
248 |
+
if (params.constructor !== Array) {
|
249 |
+
params = [params];
|
250 |
+
}
|
251 |
+
$.each(params, function (i, n) {
|
252 |
+
source = source.replace(new RegExp("\\{" + i + "\\}", "g"), function () {
|
253 |
+
return n;
|
254 |
+
});
|
255 |
+
});
|
256 |
+
return source;
|
257 |
+
};
|
258 |
+
|
259 |
+
$.extend($.validator, {
|
260 |
+
|
261 |
+
defaults: {
|
262 |
+
messages: {},
|
263 |
+
groups: {},
|
264 |
+
rules: {},
|
265 |
+
errorClass: "error",
|
266 |
+
pendingClass: "pending",
|
267 |
+
validClass: "valid",
|
268 |
+
errorElement: "label",
|
269 |
+
focusCleanup: false,
|
270 |
+
focusInvalid: true,
|
271 |
+
errorContainer: $([]),
|
272 |
+
errorLabelContainer: $([]),
|
273 |
+
onsubmit: true,
|
274 |
+
ignore: ":hidden",
|
275 |
+
ignoreTitle: false,
|
276 |
+
onfocusin: function (element) {
|
277 |
+
this.lastActive = element;
|
278 |
+
|
279 |
+
// Hide error label and remove error class on focus if enabled
|
280 |
+
if (this.settings.focusCleanup) {
|
281 |
+
if (this.settings.unhighlight) {
|
282 |
+
this.settings.unhighlight.call(this, element, this.settings.errorClass, this.settings.validClass);
|
283 |
+
}
|
284 |
+
this.hideThese(this.errorsFor(element));
|
285 |
+
}
|
286 |
+
},
|
287 |
+
onfocusout: function (element) {
|
288 |
+
if (!this.checkable(element) && (element.name in this.submitted || !this.optional(element))) {
|
289 |
+
this.element(element);
|
290 |
+
}
|
291 |
+
},
|
292 |
+
onkeyup: function (element, event) {
|
293 |
+
|
294 |
+
// Avoid revalidate the field when pressing one of the following keys
|
295 |
+
// Shift => 16
|
296 |
+
// Ctrl => 17
|
297 |
+
// Alt => 18
|
298 |
+
// Caps lock => 20
|
299 |
+
// End => 35
|
300 |
+
// Home => 36
|
301 |
+
// Left arrow => 37
|
302 |
+
// Up arrow => 38
|
303 |
+
// Right arrow => 39
|
304 |
+
// Down arrow => 40
|
305 |
+
// Insert => 45
|
306 |
+
// Num lock => 144
|
307 |
+
// AltGr key => 225
|
308 |
+
var excludedKeys = [
|
309 |
+
16, 17, 18, 20, 35, 36, 37,
|
310 |
+
38, 39, 40, 45, 144, 225
|
311 |
+
];
|
312 |
+
|
313 |
+
if (event.which === 9 && this.elementValue(element) === "" || $.inArray(event.keyCode, excludedKeys) !== -1) {
|
314 |
+
return;
|
315 |
+
} else if (element.name in this.submitted || element.name in this.invalid) {
|
316 |
+
this.element(element);
|
317 |
+
}
|
318 |
+
},
|
319 |
+
onclick: function (element) {
|
320 |
+
|
321 |
+
// Click on selects, radiobuttons and checkboxes
|
322 |
+
if (element.name in this.submitted) {
|
323 |
+
this.element(element);
|
324 |
+
|
325 |
+
// Or option elements, check parent select in that case
|
326 |
+
} else if (element.parentNode.name in this.submitted) {
|
327 |
+
this.element(element.parentNode);
|
328 |
+
}
|
329 |
+
},
|
330 |
+
highlight: function (element, errorClass, validClass) {
|
331 |
+
if (element.type === "radio") {
|
332 |
+
this.findByName(element.name).addClass(errorClass).removeClass(validClass);
|
333 |
+
} else {
|
334 |
+
$(element).addClass(errorClass).removeClass(validClass);
|
335 |
+
}
|
336 |
+
},
|
337 |
+
unhighlight: function (element, errorClass, validClass) {
|
338 |
+
if (element.type === "radio") {
|
339 |
+
this.findByName(element.name).removeClass(errorClass).addClass(validClass);
|
340 |
+
} else {
|
341 |
+
$(element).removeClass(errorClass).addClass(validClass);
|
342 |
+
}
|
343 |
+
}
|
344 |
+
},
|
345 |
+
|
346 |
+
// http://jqueryvalidation.org/jQuery.validator.setDefaults/
|
347 |
+
setDefaults: function (settings) {
|
348 |
+
$.extend($.validator.defaults, settings);
|
349 |
+
},
|
350 |
+
|
351 |
+
messages: {
|
352 |
+
required: "This field is required.",
|
353 |
+
remote: "Please fix this field.",
|
354 |
+
email: "Please enter a valid email address.",
|
355 |
+
url: "Please enter a valid URL.",
|
356 |
+
date: "Please enter a valid date.",
|
357 |
+
dateISO: "Please enter a valid date (ISO).",
|
358 |
+
number: "Please enter a valid number.",
|
359 |
+
digits: "Please enter only digits.",
|
360 |
+
equalTo: "Please enter the same value again.",
|
361 |
+
maxlength: $.validator.format("Please enter no more than {0} characters."),
|
362 |
+
minlength: $.validator.format("Please enter at least {0} characters."),
|
363 |
+
rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
|
364 |
+
range: $.validator.format("Please enter a value between {0} and {1}."),
|
365 |
+
max: $.validator.format("Please enter a value less than or equal to {0}."),
|
366 |
+
min: $.validator.format("Please enter a value greater than or equal to {0}."),
|
367 |
+
step: $.validator.format("Please enter a multiple of {0}.")
|
368 |
+
},
|
369 |
+
|
370 |
+
autoCreateRanges: false,
|
371 |
+
|
372 |
+
prototype: {
|
373 |
+
|
374 |
+
init: function () {
|
375 |
+
this.labelContainer = $(this.settings.errorLabelContainer);
|
376 |
+
this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);
|
377 |
+
this.containers = $(this.settings.errorContainer).add(this.settings.errorLabelContainer);
|
378 |
+
this.submitted = {};
|
379 |
+
this.valueCache = {};
|
380 |
+
this.pendingRequest = 0;
|
381 |
+
this.pending = {};
|
382 |
+
this.invalid = {};
|
383 |
+
this.reset();
|
384 |
+
|
385 |
+
var groups = (this.groups = {}),
|
386 |
+
rules;
|
387 |
+
$.each(this.settings.groups, function (key, value) {
|
388 |
+
if (typeof value === "string") {
|
389 |
+
value = value.split(/\s/);
|
390 |
+
}
|
391 |
+
$.each(value, function (index, name) {
|
392 |
+
groups[ name ] = key;
|
393 |
+
});
|
394 |
+
});
|
395 |
+
rules = this.settings.rules;
|
396 |
+
$.each(rules, function (key, value) {
|
397 |
+
rules[ key ] = $.validator.normalizeRule(value);
|
398 |
+
});
|
399 |
+
|
400 |
+
function delegate(event) {
|
401 |
+
|
402 |
+
// Set form expando on contenteditable
|
403 |
+
if (!this.form && this.hasAttribute("contenteditable")) {
|
404 |
+
this.form = $(this).closest("form")[ 0 ];
|
405 |
+
}
|
406 |
+
|
407 |
+
var validator = $.data(this.form, "validator"),
|
408 |
+
eventType = "on" + event.type.replace(/^validate/, ""),
|
409 |
+
settings = validator.settings;
|
410 |
+
if (settings[ eventType ] && !$(this).is(settings.ignore)) {
|
411 |
+
settings[ eventType ].call(validator, this, event);
|
412 |
+
}
|
413 |
+
}
|
414 |
+
|
415 |
+
$(this.currentForm)
|
416 |
+
.on("focusin.validate focusout.validate keyup.validate",
|
417 |
+
":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], " +
|
418 |
+
"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], " +
|
419 |
+
"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], " +
|
420 |
+
"[type='radio'], [type='checkbox'], [contenteditable], [type='button']", delegate)
|
421 |
+
|
422 |
+
// Support: Chrome, oldIE
|
423 |
+
// "select" is provided as event.target when clicking a option
|
424 |
+
.on("click.validate", "select, option, [type='radio'], [type='checkbox']", delegate);
|
425 |
+
|
426 |
+
if (this.settings.invalidHandler) {
|
427 |
+
$(this.currentForm).on("invalid-form.validate", this.settings.invalidHandler);
|
428 |
+
}
|
429 |
+
|
430 |
+
// Add aria-required to any Static/Data/Class required fields before first validation
|
431 |
+
// Screen readers require this attribute to be present before the initial submission http://www.w3.org/TR/WCAG-TECHS/ARIA2.html
|
432 |
+
$(this.currentForm).find("[required], [data-rule-required], .required").attr("aria-required", "true");
|
433 |
+
},
|
434 |
+
|
435 |
+
// http://jqueryvalidation.org/Validator.form/
|
436 |
+
form: function () {
|
437 |
+
this.checkForm();
|
438 |
+
$.extend(this.submitted, this.errorMap);
|
439 |
+
this.invalid = $.extend({}, this.errorMap);
|
440 |
+
if (!this.valid()) {
|
441 |
+
$(this.currentForm).triggerHandler("invalid-form", [this]);
|
442 |
+
}
|
443 |
+
this.showErrors();
|
444 |
+
return this.valid();
|
445 |
+
},
|
446 |
+
|
447 |
+
checkForm: function () {
|
448 |
+
this.prepareForm();
|
449 |
+
for (var i = 0, elements = (this.currentElements = this.elements()); elements[ i ]; i++) {
|
450 |
+
this.check(elements[ i ]);
|
451 |
+
}
|
452 |
+
return this.valid();
|
453 |
+
},
|
454 |
+
|
455 |
+
// http://jqueryvalidation.org/Validator.element/
|
456 |
+
element: function (element) {
|
457 |
+
var cleanElement = this.clean(element),
|
458 |
+
checkElement = this.validationTargetFor(cleanElement),
|
459 |
+
v = this,
|
460 |
+
result = true,
|
461 |
+
rs, group;
|
462 |
+
|
463 |
+
if (checkElement === undefined) {
|
464 |
+
delete this.invalid[ cleanElement.name ];
|
465 |
+
} else {
|
466 |
+
this.prepareElement(checkElement);
|
467 |
+
this.currentElements = $(checkElement);
|
468 |
+
|
469 |
+
// If this element is grouped, then validate all group elements already
|
470 |
+
// containing a value
|
471 |
+
group = this.groups[ checkElement.name ];
|
472 |
+
if (group) {
|
473 |
+
$.each(this.groups, function (name, testgroup) {
|
474 |
+
if (testgroup === group && name !== checkElement.name) {
|
475 |
+
cleanElement = v.validationTargetFor(v.clean(v.findByName(name)));
|
476 |
+
if (cleanElement && cleanElement.name in v.invalid) {
|
477 |
+
v.currentElements.push(cleanElement);
|
478 |
+
result = v.check(cleanElement) && result;
|
479 |
+
}
|
480 |
+
}
|
481 |
+
});
|
482 |
+
}
|
483 |
+
|
484 |
+
rs = this.check(checkElement) !== false;
|
485 |
+
result = result && rs;
|
486 |
+
if (rs) {
|
487 |
+
this.invalid[ checkElement.name ] = false;
|
488 |
+
} else {
|
489 |
+
this.invalid[ checkElement.name ] = true;
|
490 |
+
}
|
491 |
+
|
492 |
+
if (!this.numberOfInvalids()) {
|
493 |
+
|
494 |
+
// Hide error containers on last error
|
495 |
+
this.toHide = this.toHide.add(this.containers);
|
496 |
+
}
|
497 |
+
this.showErrors();
|
498 |
+
|
499 |
+
// Add aria-invalid status for screen readers
|
500 |
+
$(element).attr("aria-invalid", !rs);
|
501 |
+
}
|
502 |
+
|
503 |
+
return result;
|
504 |
+
},
|
505 |
+
|
506 |
+
// http://jqueryvalidation.org/Validator.showErrors/
|
507 |
+
showErrors: function (errors) {
|
508 |
+
if (errors) {
|
509 |
+
var validator = this;
|
510 |
+
|
511 |
+
// Add items to error list and map
|
512 |
+
$.extend(this.errorMap, errors);
|
513 |
+
this.errorList = $.map(this.errorMap, function (message, name) {
|
514 |
+
return {
|
515 |
+
message: message,
|
516 |
+
element: validator.findByName(name)[ 0 ]
|
517 |
+
};
|
518 |
+
});
|
519 |
+
|
520 |
+
// Remove items from success list
|
521 |
+
this.successList = $.grep(this.successList, function (element) {
|
522 |
+
return !(element.name in errors);
|
523 |
+
});
|
524 |
+
}
|
525 |
+
if (this.settings.showErrors) {
|
526 |
+
this.settings.showErrors.call(this, this.errorMap, this.errorList);
|
527 |
+
} else {
|
528 |
+
this.defaultShowErrors();
|
529 |
+
}
|
530 |
+
},
|
531 |
+
|
532 |
+
// http://jqueryvalidation.org/Validator.resetForm/
|
533 |
+
resetForm: function () {
|
534 |
+
if ($.fn.resetForm) {
|
535 |
+
$(this.currentForm).resetForm();
|
536 |
+
}
|
537 |
+
this.invalid = {};
|
538 |
+
this.submitted = {};
|
539 |
+
this.prepareForm();
|
540 |
+
this.hideErrors();
|
541 |
+
var elements = this.elements()
|
542 |
+
.removeData("previousValue")
|
543 |
+
.removeAttr("aria-invalid");
|
544 |
+
|
545 |
+
this.resetElements(elements);
|
546 |
+
},
|
547 |
+
|
548 |
+
resetElements: function (elements) {
|
549 |
+
var i;
|
550 |
+
|
551 |
+
if (this.settings.unhighlight) {
|
552 |
+
for (i = 0; elements[ i ]; i++) {
|
553 |
+
this.settings.unhighlight.call(this, elements[ i ],
|
554 |
+
this.settings.errorClass, "");
|
555 |
+
this.findByName(elements[ i ].name).removeClass(this.settings.validClass);
|
556 |
+
}
|
557 |
+
} else {
|
558 |
+
elements
|
559 |
+
.removeClass(this.settings.errorClass)
|
560 |
+
.removeClass(this.settings.validClass);
|
561 |
+
}
|
562 |
+
},
|
563 |
+
|
564 |
+
numberOfInvalids: function () {
|
565 |
+
return this.objectLength(this.invalid);
|
566 |
+
},
|
567 |
+
|
568 |
+
objectLength: function (obj) {
|
569 |
+
/* jshint unused: false */
|
570 |
+
var count = 0,
|
571 |
+
i;
|
572 |
+
for (i in obj) {
|
573 |
+
if (obj[ i ]) {
|
574 |
+
count++;
|
575 |
+
}
|
576 |
+
}
|
577 |
+
return count;
|
578 |
+
},
|
579 |
+
|
580 |
+
hideErrors: function () {
|
581 |
+
this.hideThese(this.toHide);
|
582 |
+
},
|
583 |
+
|
584 |
+
hideThese: function (errors) {
|
585 |
+
errors.not(this.containers).text("");
|
586 |
+
this.addWrapper(errors).hide();
|
587 |
+
},
|
588 |
+
|
589 |
+
valid: function () {
|
590 |
+
return this.size() === 0;
|
591 |
+
},
|
592 |
+
|
593 |
+
size: function () {
|
594 |
+
return this.errorList.length;
|
595 |
+
},
|
596 |
+
|
597 |
+
focusInvalid: function () {
|
598 |
+
if (this.settings.focusInvalid) {
|
599 |
+
try {
|
600 |
+
$(this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [])
|
601 |
+
.filter(":visible")
|
602 |
+
.focus()
|
603 |
+
|
604 |
+
// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
|
605 |
+
.trigger("focusin");
|
606 |
+
} catch (e) {
|
607 |
+
|
608 |
+
// Ignore IE throwing errors when focusing hidden elements
|
609 |
+
}
|
610 |
+
}
|
611 |
+
},
|
612 |
+
|
613 |
+
findLastActive: function () {
|
614 |
+
var lastActive = this.lastActive;
|
615 |
+
return lastActive && $.grep(this.errorList, function (n) {
|
616 |
+
return n.element.name === lastActive.name;
|
617 |
+
}).length === 1 && lastActive;
|
618 |
+
},
|
619 |
+
|
620 |
+
elements: function () {
|
621 |
+
var validator = this,
|
622 |
+
rulesCache = {};
|
623 |
+
|
624 |
+
// Select all valid inputs inside the form (no submit or reset buttons)
|
625 |
+
return $(this.currentForm)
|
626 |
+
.find("input, select, textarea, [contenteditable]")
|
627 |
+
.not(":submit, :reset, :image, :disabled")
|
628 |
+
.not(this.settings.ignore)
|
629 |
+
.filter(function () {
|
630 |
+
var name = this.name || $(this).attr("name"); // For contenteditable
|
631 |
+
if (!name && validator.settings.debug && window.console) {
|
632 |
+
console.error("%o has no name assigned", this);
|
633 |
+
}
|
634 |
+
|
635 |
+
// Set form expando on contenteditable
|
636 |
+
if (this.hasAttribute("contenteditable")) {
|
637 |
+
this.form = $(this).closest("form")[ 0 ];
|
638 |
+
}
|
639 |
+
|
640 |
+
// Select only the first element for each name, and only those with rules specified
|
641 |
+
if (name in rulesCache || !validator.objectLength($(this).rules())) {
|
642 |
+
return false;
|
643 |
+
}
|
644 |
+
|
645 |
+
rulesCache[ name ] = true;
|
646 |
+
return true;
|
647 |
+
});
|
648 |
+
},
|
649 |
+
|
650 |
+
clean: function (selector) {
|
651 |
+
return $(selector)[ 0 ];
|
652 |
+
},
|
653 |
+
|
654 |
+
errors: function () {
|
655 |
+
var errorClass = this.settings.errorClass.split(" ").join(".");
|
656 |
+
return $(this.settings.errorElement + "." + errorClass, this.errorContext);
|
657 |
+
},
|
658 |
+
|
659 |
+
resetInternals: function () {
|
660 |
+
this.successList = [];
|
661 |
+
this.errorList = [];
|
662 |
+
this.errorMap = {};
|
663 |
+
this.toShow = $([]);
|
664 |
+
this.toHide = $([]);
|
665 |
+
},
|
666 |
+
|
667 |
+
reset: function () {
|
668 |
+
this.resetInternals();
|
669 |
+
this.currentElements = $([]);
|
670 |
+
},
|
671 |
+
|
672 |
+
prepareForm: function () {
|
673 |
+
this.reset();
|
674 |
+
this.toHide = this.errors().add(this.containers);
|
675 |
+
},
|
676 |
+
|
677 |
+
prepareElement: function (element) {
|
678 |
+
this.reset();
|
679 |
+
this.toHide = this.errorsFor(element);
|
680 |
+
},
|
681 |
+
|
682 |
+
elementValue: function (element) {
|
683 |
+
var $element = $(element),
|
684 |
+
type = element.type,
|
685 |
+
val, idx;
|
686 |
+
|
687 |
+
if (type === "radio" || type === "checkbox") {
|
688 |
+
return this.findByName(element.name).filter(":checked").val();
|
689 |
+
} else if (type === "number" && typeof element.validity !== "undefined") {
|
690 |
+
return element.validity.badInput ? "NaN" : $element.val();
|
691 |
+
}
|
692 |
+
|
693 |
+
if (element.hasAttribute("contenteditable")) {
|
694 |
+
val = $element.text();
|
695 |
+
} else {
|
696 |
+
val = $element.val();
|
697 |
+
}
|
698 |
+
|
699 |
+
if (type === "file") {
|
700 |
+
|
701 |
+
// Modern browser (chrome & safari)
|
702 |
+
if (val.substr(0, 12) === "C:\\fakepath\\") {
|
703 |
+
return val.substr(12);
|
704 |
+
}
|
705 |
+
|
706 |
+
// Legacy browsers
|
707 |
+
// Unix-based path
|
708 |
+
idx = val.lastIndexOf("/");
|
709 |
+
if (idx >= 0) {
|
710 |
+
return val.substr(idx + 1);
|
711 |
+
}
|
712 |
+
|
713 |
+
// Windows-based path
|
714 |
+
idx = val.lastIndexOf("\\");
|
715 |
+
if (idx >= 0) {
|
716 |
+
return val.substr(idx + 1);
|
717 |
+
}
|
718 |
+
|
719 |
+
// Just the file name
|
720 |
+
return val;
|
721 |
+
}
|
722 |
+
|
723 |
+
if (typeof val === "string") {
|
724 |
+
return val.replace(/\r/g, "");
|
725 |
+
}
|
726 |
+
return val;
|
727 |
+
},
|
728 |
+
|
729 |
+
check: function (element) {
|
730 |
+
element = this.validationTargetFor(this.clean(element));
|
731 |
+
|
732 |
+
var rules = $(element).rules(),
|
733 |
+
rulesCount = $.map(rules, function (n, i) {
|
734 |
+
return i;
|
735 |
+
}).length,
|
736 |
+
dependencyMismatch = false,
|
737 |
+
val = this.elementValue(element),
|
738 |
+
result, method, rule;
|
739 |
+
|
740 |
+
// If a normalizer is defined for this element, then
|
741 |
+
// call it to retreive the changed value instead
|
742 |
+
// of using the real one.
|
743 |
+
// Note that `this` in the normalizer is `element`.
|
744 |
+
if (typeof rules.normalizer === "function") {
|
745 |
+
val = rules.normalizer.call(element, val);
|
746 |
+
|
747 |
+
if (typeof val !== "string") {
|
748 |
+
throw new TypeError("The normalizer should return a string value.");
|
749 |
+
}
|
750 |
+
|
751 |
+
// Delete the normalizer from rules to avoid treating
|
752 |
+
// it as a pre-defined method.
|
753 |
+
delete rules.normalizer;
|
754 |
+
}
|
755 |
+
|
756 |
+
for (method in rules) {
|
757 |
+
rule = {method: method, parameters: rules[ method ]};
|
758 |
+
try {
|
759 |
+
result = $.validator.methods[ method ].call(this, val, element, rule.parameters);
|
760 |
+
|
761 |
+
// If a method indicates that the field is optional and therefore valid,
|
762 |
+
// don't mark it as valid when there are no other rules
|
763 |
+
if (result === "dependency-mismatch" && rulesCount === 1) {
|
764 |
+
dependencyMismatch = true;
|
765 |
+
continue;
|
766 |
+
}
|
767 |
+
dependencyMismatch = false;
|
768 |
+
|
769 |
+
if (result === "pending") {
|
770 |
+
this.toHide = this.toHide.not(this.errorsFor(element));
|
771 |
+
return;
|
772 |
+
}
|
773 |
+
|
774 |
+
if (!result) {
|
775 |
+
this.formatAndAdd(element, rule);
|
776 |
+
return false;
|
777 |
+
}
|
778 |
+
} catch (e) {
|
779 |
+
if (this.settings.debug && window.console) {
|
780 |
+
console.log("Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.", e);
|
781 |
+
}
|
782 |
+
if (e instanceof TypeError) {
|
783 |
+
e.message += ". Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.";
|
784 |
+
}
|
785 |
+
|
786 |
+
throw e;
|
787 |
+
}
|
788 |
+
}
|
789 |
+
if (dependencyMismatch) {
|
790 |
+
return;
|
791 |
+
}
|
792 |
+
if (this.objectLength(rules)) {
|
793 |
+
this.successList.push(element);
|
794 |
+
}
|
795 |
+
return true;
|
796 |
+
},
|
797 |
+
|
798 |
+
// Return the custom message for the given element and validation method
|
799 |
+
// specified in the element's HTML5 data attribute
|
800 |
+
// return the generic message if present and no method specific message is present
|
801 |
+
customDataMessage: function (element, method) {
|
802 |
+
return $(element).data("msg" + method.charAt(0).toUpperCase() +
|
803 |
+
method.substring(1).toLowerCase()) || $(element).data("msg");
|
804 |
+
},
|
805 |
+
|
806 |
+
// Return the custom message for the given element name and validation method
|
807 |
+
customMessage: function (name, method) {
|
808 |
+
var m = this.settings.messages[ name ];
|
809 |
+
return m && (m.constructor === String ? m : m[ method ]);
|
810 |
+
},
|
811 |
+
|
812 |
+
// Return the first defined argument, allowing empty strings
|
813 |
+
findDefined: function () {
|
814 |
+
for (var i = 0; i < arguments.length; i++) {
|
815 |
+
if (arguments[ i ] !== undefined) {
|
816 |
+
return arguments[ i ];
|
817 |
+
}
|
818 |
+
}
|
819 |
+
return undefined;
|
820 |
+
},
|
821 |
+
|
822 |
+
// The second parameter 'rule' used to be a string, and extended to an object literal
|
823 |
+
// of the following form:
|
824 |
+
// rule = {
|
825 |
+
// method: "method name",
|
826 |
+
// parameters: "the given method parameters"
|
827 |
+
// }
|
828 |
+
//
|
829 |
+
// The old behavior still supported, kept to maintain backward compatibility with
|
830 |
+
// old code, and will be removed in the next major release.
|
831 |
+
defaultMessage: function (element, rule) {
|
832 |
+
if (typeof rule === "string") {
|
833 |
+
rule = {method: rule};
|
834 |
+
}
|
835 |
+
|
836 |
+
var message = this.findDefined(
|
837 |
+
this.customMessage(element.name, rule.method),
|
838 |
+
this.customDataMessage(element, rule.method),
|
839 |
+
// 'title' is never undefined, so handle empty string as undefined
|
840 |
+
!this.settings.ignoreTitle && element.title || undefined,
|
841 |
+
$.validator.messages[ rule.method ],
|
842 |
+
"<strong>Warning: No message defined for " + element.name + "</strong>"
|
843 |
+
),
|
844 |
+
theregex = /\$?\{(\d+)\}/g;
|
845 |
+
if (typeof message === "function") {
|
846 |
+
message = message.call(this, rule.parameters, element);
|
847 |
+
} else if (theregex.test(message)) {
|
848 |
+
message = $.validator.format(message.replace(theregex, "{$1}"), rule.parameters);
|
849 |
+
}
|
850 |
+
|
851 |
+
return message;
|
852 |
+
},
|
853 |
+
|
854 |
+
formatAndAdd: function (element, rule) {
|
855 |
+
var message = this.defaultMessage(element, rule);
|
856 |
+
|
857 |
+
this.errorList.push({
|
858 |
+
message: message,
|
859 |
+
element: element,
|
860 |
+
method: rule.method
|
861 |
+
});
|
862 |
+
|
863 |
+
this.errorMap[ element.name ] = message;
|
864 |
+
this.submitted[ element.name ] = message;
|
865 |
+
},
|
866 |
+
|
867 |
+
addWrapper: function (toToggle) {
|
868 |
+
if (this.settings.wrapper) {
|
869 |
+
toToggle = toToggle.add(toToggle.parent(this.settings.wrapper));
|
870 |
+
}
|
871 |
+
return toToggle;
|
872 |
+
},
|
873 |
+
|
874 |
+
defaultShowErrors: function () {
|
875 |
+
var i, elements, error;
|
876 |
+
for (i = 0; this.errorList[ i ]; i++) {
|
877 |
+
error = this.errorList[ i ];
|
878 |
+
if (this.settings.highlight) {
|
879 |
+
this.settings.highlight.call(this, error.element, this.settings.errorClass, this.settings.validClass);
|
880 |
+
}
|
881 |
+
this.showLabel(error.element, error.message);
|
882 |
+
}
|
883 |
+
if (this.errorList.length) {
|
884 |
+
this.toShow = this.toShow.add(this.containers);
|
885 |
+
}
|
886 |
+
if (this.settings.success) {
|
887 |
+
for (i = 0; this.successList[ i ]; i++) {
|
888 |
+
this.showLabel(this.successList[ i ]);
|
889 |
+
}
|
890 |
+
}
|
891 |
+
if (this.settings.unhighlight) {
|
892 |
+
for (i = 0, elements = this.validElements(); elements[ i ]; i++) {
|
893 |
+
this.settings.unhighlight.call(this, elements[ i ], this.settings.errorClass, this.settings.validClass);
|
894 |
+
}
|
895 |
+
}
|
896 |
+
this.toHide = this.toHide.not(this.toShow);
|
897 |
+
this.hideErrors();
|
898 |
+
this.addWrapper(this.toShow).show();
|
899 |
+
},
|
900 |
+
|
901 |
+
validElements: function () {
|
902 |
+
return this.currentElements.not(this.invalidElements());
|
903 |
+
},
|
904 |
+
|
905 |
+
invalidElements: function () {
|
906 |
+
return $(this.errorList).map(function () {
|
907 |
+
return this.element;
|
908 |
+
});
|
909 |
+
},
|
910 |
+
|
911 |
+
showLabel: function (element, message) {
|
912 |
+
var place, group, errorID, v,
|
913 |
+
error = this.errorsFor(element),
|
914 |
+
elementID = this.idOrName(element),
|
915 |
+
describedBy = $(element).attr("aria-describedby");
|
916 |
+
|
917 |
+
if (error.length) {
|
918 |
+
|
919 |
+
// Refresh error/success class
|
920 |
+
error.removeClass(this.settings.validClass).addClass(this.settings.errorClass);
|
921 |
+
|
922 |
+
// Replace message on existing label
|
923 |
+
error.html(message);
|
924 |
+
} else {
|
925 |
+
|
926 |
+
// Create error element
|
927 |
+
error = $("<" + this.settings.errorElement + ">")
|
928 |
+
.attr("id", elementID + "-error")
|
929 |
+
.addClass(this.settings.errorClass)
|
930 |
+
.html(message || "");
|
931 |
+
|
932 |
+
// Maintain reference to the element to be placed into the DOM
|
933 |
+
place = error;
|
934 |
+
if (this.settings.wrapper) {
|
935 |
+
|
936 |
+
// Make sure the element is visible, even in IE
|
937 |
+
// actually showing the wrapped element is handled elsewhere
|
938 |
+
place = error.hide().show().wrap("<" + this.settings.wrapper + "/>").parent();
|
939 |
+
}
|
940 |
+
if (this.labelContainer.length) {
|
941 |
+
this.labelContainer.append(place);
|
942 |
+
} else if (this.settings.errorPlacement) {
|
943 |
+
this.settings.errorPlacement.call(this, place, $(element));
|
944 |
+
} else {
|
945 |
+
place.insertAfter(element);
|
946 |
+
}
|
947 |
+
|
948 |
+
// Link error back to the element
|
949 |
+
if (error.is("label")) {
|
950 |
+
|
951 |
+
// If the error is a label, then associate using 'for'
|
952 |
+
error.attr("for", elementID);
|
953 |
+
|
954 |
+
// If the element is not a child of an associated label, then it's necessary
|
955 |
+
// to explicitly apply aria-describedby
|
956 |
+
} else if (error.parents("label[for='" + this.escapeCssMeta(elementID) + "']").length === 0) {
|
957 |
+
errorID = error.attr("id");
|
958 |
+
|
959 |
+
// Respect existing non-error aria-describedby
|
960 |
+
if (!describedBy) {
|
961 |
+
describedBy = errorID;
|
962 |
+
} else if (!describedBy.match(new RegExp("\\b" + this.escapeCssMeta(errorID) + "\\b"))) {
|
963 |
+
|
964 |
+
// Add to end of list if not already present
|
965 |
+
describedBy += " " + errorID;
|
966 |
+
}
|
967 |
+
$(element).attr("aria-describedby", describedBy);
|
968 |
+
|
969 |
+
// If this element is grouped, then assign to all elements in the same group
|
970 |
+
group = this.groups[ element.name ];
|
971 |
+
if (group) {
|
972 |
+
v = this;
|
973 |
+
$.each(v.groups, function (name, testgroup) {
|
974 |
+
if (testgroup === group) {
|
975 |
+
$("[name='" + v.escapeCssMeta(name) + "']", v.currentForm)
|
976 |
+
.attr("aria-describedby", error.attr("id"));
|
977 |
+
}
|
978 |
+
});
|
979 |
+
}
|
980 |
+
}
|
981 |
+
}
|
982 |
+
if (!message && this.settings.success) {
|
983 |
+
error.text("");
|
984 |
+
if (typeof this.settings.success === "string") {
|
985 |
+
error.addClass(this.settings.success);
|
986 |
+
} else {
|
987 |
+
this.settings.success(error, element);
|
988 |
+
}
|
989 |
+
}
|
990 |
+
this.toShow = this.toShow.add(error);
|
991 |
+
},
|
992 |
+
|
993 |
+
errorsFor: function (element) {
|
994 |
+
var name = this.escapeCssMeta(this.idOrName(element)),
|
995 |
+
describer = $(element).attr("aria-describedby"),
|
996 |
+
selector = "label[for='" + name + "'], label[for='" + name + "'] *";
|
997 |
+
|
998 |
+
// 'aria-describedby' should directly reference the error element
|
999 |
+
if (describer) {
|
1000 |
+
selector = selector + ", #" + this.escapeCssMeta(describer)
|
1001 |
+
.replace(/\s+/g, ", #");
|
1002 |
+
}
|
1003 |
+
|
1004 |
+
return this
|
1005 |
+
.errors()
|
1006 |
+
.filter(selector);
|
1007 |
+
},
|
1008 |
+
|
1009 |
+
// See https://api.jquery.com/category/selectors/, for CSS
|
1010 |
+
// meta-characters that should be escaped in order to be used with JQuery
|
1011 |
+
// as a literal part of a name/id or any selector.
|
1012 |
+
escapeCssMeta: function (string) {
|
1013 |
+
return string.replace(/([\\!"#$%&'()*+,./:;<=>?@\[\]^`{|}~])/g, "\\$1");
|
1014 |
+
},
|
1015 |
+
|
1016 |
+
idOrName: function (element) {
|
1017 |
+
return this.groups[ element.name ] || (this.checkable(element) ? element.name : element.id || element.name);
|
1018 |
+
},
|
1019 |
+
|
1020 |
+
validationTargetFor: function (element) {
|
1021 |
+
|
1022 |
+
// If radio/checkbox, validate first element in group instead
|
1023 |
+
if (this.checkable(element)) {
|
1024 |
+
element = this.findByName(element.name);
|
1025 |
+
}
|
1026 |
+
|
1027 |
+
// Always apply ignore filter
|
1028 |
+
return $(element).not(this.settings.ignore)[ 0 ];
|
1029 |
+
},
|
1030 |
+
|
1031 |
+
checkable: function (element) {
|
1032 |
+
return (/radio|checkbox/i).test(element.type);
|
1033 |
+
},
|
1034 |
+
|
1035 |
+
findByName: function (name) {
|
1036 |
+
return $(this.currentForm).find("[name='" + this.escapeCssMeta(name) + "']");
|
1037 |
+
},
|
1038 |
+
|
1039 |
+
getLength: function (value, element) {
|
1040 |
+
switch (element.nodeName.toLowerCase()) {
|
1041 |
+
case "select":
|
1042 |
+
return $("option:selected", element).length;
|
1043 |
+
case "input":
|
1044 |
+
if (this.checkable(element)) {
|
1045 |
+
return this.findByName(element.name).filter(":checked").length;
|
1046 |
+
}
|
1047 |
+
}
|
1048 |
+
return value.length;
|
1049 |
+
},
|
1050 |
+
|
1051 |
+
depend: function (param, element) {
|
1052 |
+
return this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ](param, element) : true;
|
1053 |
+
},
|
1054 |
+
|
1055 |
+
dependTypes: {
|
1056 |
+
"boolean": function (param) {
|
1057 |
+
return param;
|
1058 |
+
},
|
1059 |
+
"string": function (param, element) {
|
1060 |
+
return !!$(param, element.form).length;
|
1061 |
+
},
|
1062 |
+
"function": function (param, element) {
|
1063 |
+
return param(element);
|
1064 |
+
}
|
1065 |
+
},
|
1066 |
+
|
1067 |
+
optional: function (element) {
|
1068 |
+
var val = this.elementValue(element);
|
1069 |
+
return !$.validator.methods.required.call(this, val, element) && "dependency-mismatch";
|
1070 |
+
},
|
1071 |
+
|
1072 |
+
startRequest: function (element) {
|
1073 |
+
if (!this.pending[ element.name ]) {
|
1074 |
+
this.pendingRequest++;
|
1075 |
+
$(element).addClass(this.settings.pendingClass);
|
1076 |
+
this.pending[ element.name ] = true;
|
1077 |
+
}
|
1078 |
+
},
|
1079 |
+
|
1080 |
+
stopRequest: function (element, valid) {
|
1081 |
+
this.pendingRequest--;
|
1082 |
+
|
1083 |
+
// Sometimes synchronization fails, make sure pendingRequest is never < 0
|
1084 |
+
if (this.pendingRequest < 0) {
|
1085 |
+
this.pendingRequest = 0;
|
1086 |
+
}
|
1087 |
+
delete this.pending[ element.name ];
|
1088 |
+
$(element).removeClass(this.settings.pendingClass);
|
1089 |
+
if (valid && this.pendingRequest === 0 && this.formSubmitted && this.form()) {
|
1090 |
+
$(this.currentForm).submit();
|
1091 |
+
this.formSubmitted = false;
|
1092 |
+
} else if (!valid && this.pendingRequest === 0 && this.formSubmitted) {
|
1093 |
+
$(this.currentForm).triggerHandler("invalid-form", [this]);
|
1094 |
+
this.formSubmitted = false;
|
1095 |
+
}
|
1096 |
+
},
|
1097 |
+
|
1098 |
+
previousValue: function (element, method) {
|
1099 |
+
method = typeof method === "string" && method || "remote";
|
1100 |
+
|
1101 |
+
return $.data(element, "previousValue") || $.data(element, "previousValue", {
|
1102 |
+
old: null,
|
1103 |
+
valid: true,
|
1104 |
+
message: this.defaultMessage(element, {method: method})
|
1105 |
+
});
|
1106 |
+
},
|
1107 |
+
|
1108 |
+
// Cleans up all forms and elements, removes validator-specific events
|
1109 |
+
destroy: function () {
|
1110 |
+
this.resetForm();
|
1111 |
+
|
1112 |
+
$(this.currentForm)
|
1113 |
+
.off(".validate")
|
1114 |
+
.removeData("validator")
|
1115 |
+
.find(".validate-equalTo-blur")
|
1116 |
+
.off(".validate-equalTo")
|
1117 |
+
.removeClass("validate-equalTo-blur");
|
1118 |
+
}
|
1119 |
+
|
1120 |
+
},
|
1121 |
+
|
1122 |
+
classRuleSettings: {
|
1123 |
+
required: {required: true},
|
1124 |
+
email: {email: true},
|
1125 |
+
url: {url: true},
|
1126 |
+
date: {date: true},
|
1127 |
+
dateISO: {dateISO: true},
|
1128 |
+
number: {number: true},
|
1129 |
+
digits: {digits: true},
|
1130 |
+
creditcard: {creditcard: true}
|
1131 |
+
},
|
1132 |
+
|
1133 |
+
addClassRules: function (className, rules) {
|
1134 |
+
if (className.constructor === String) {
|
1135 |
+
this.classRuleSettings[ className ] = rules;
|
1136 |
+
} else {
|
1137 |
+
$.extend(this.classRuleSettings, className);
|
1138 |
+
}
|
1139 |
+
},
|
1140 |
+
|
1141 |
+
classRules: function (element) {
|
1142 |
+
var rules = {},
|
1143 |
+
classes = $(element).attr("class");
|
1144 |
+
|
1145 |
+
if (classes) {
|
1146 |
+
$.each(classes.split(" "), function () {
|
1147 |
+
if (this in $.validator.classRuleSettings) {
|
1148 |
+
$.extend(rules, $.validator.classRuleSettings[ this ]);
|
1149 |
+
}
|
1150 |
+
});
|
1151 |
+
}
|
1152 |
+
return rules;
|
1153 |
+
},
|
1154 |
+
|
1155 |
+
normalizeAttributeRule: function (rules, type, method, value) {
|
1156 |
+
|
1157 |
+
// Convert the value to a number for number inputs, and for text for backwards compability
|
1158 |
+
// allows type="date" and others to be compared as strings
|
1159 |
+
if (/min|max|step/.test(method) && (type === null || /number|range|text/.test(type))) {
|
1160 |
+
value = Number(value);
|
1161 |
+
|
1162 |
+
// Support Opera Mini, which returns NaN for undefined minlength
|
1163 |
+
if (isNaN(value)) {
|
1164 |
+
value = undefined;
|
1165 |
+
}
|
1166 |
+
}
|
1167 |
+
|
1168 |
+
if (value || value === 0) {
|
1169 |
+
rules[ method ] = value;
|
1170 |
+
} else if (type === method && type !== "range") {
|
1171 |
+
|
1172 |
+
// Exception: the jquery validate 'range' method
|
1173 |
+
// does not test for the html5 'range' type
|
1174 |
+
rules[ method ] = true;
|
1175 |
+
}
|
1176 |
+
},
|
1177 |
+
|
1178 |
+
attributeRules: function (element) {
|
1179 |
+
var rules = {},
|
1180 |
+
$element = $(element),
|
1181 |
+
type = element.getAttribute("type"),
|
1182 |
+
method, value;
|
1183 |
+
|
1184 |
+
for (method in $.validator.methods) {
|
1185 |
+
|
1186 |
+
// Support for <input required> in both html5 and older browsers
|
1187 |
+
if (method === "required") {
|
1188 |
+
value = element.getAttribute(method);
|
1189 |
+
|
1190 |
+
// Some browsers return an empty string for the required attribute
|
1191 |
+
// and non-HTML5 browsers might have required="" markup
|
1192 |
+
if (value === "") {
|
1193 |
+
value = true;
|
1194 |
+
}
|
1195 |
+
|
1196 |
+
// Force non-HTML5 browsers to return bool
|
1197 |
+
value = !!value;
|
1198 |
+
} else {
|
1199 |
+
value = $element.attr(method);
|
1200 |
+
}
|
1201 |
+
|
1202 |
+
this.normalizeAttributeRule(rules, type, method, value);
|
1203 |
+
}
|
1204 |
+
|
1205 |
+
// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs
|
1206 |
+
if (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) {
|
1207 |
+
delete rules.maxlength;
|
1208 |
+
}
|
1209 |
+
|
1210 |
+
return rules;
|
1211 |
+
},
|
1212 |
+
|
1213 |
+
dataRules: function (element) {
|
1214 |
+
var rules = {},
|
1215 |
+
$element = $(element),
|
1216 |
+
type = element.getAttribute("type"),
|
1217 |
+
method, value;
|
1218 |
+
|
1219 |
+
for (method in $.validator.methods) {
|
1220 |
+
value = $element.data("rule" + method.charAt(0).toUpperCase() + method.substring(1).toLowerCase());
|
1221 |
+
this.normalizeAttributeRule(rules, type, method, value);
|
1222 |
+
}
|
1223 |
+
return rules;
|
1224 |
+
},
|
1225 |
+
|
1226 |
+
staticRules: function (element) {
|
1227 |
+
var rules = {},
|
1228 |
+
validator = $.data(element.form, "validator");
|
1229 |
+
|
1230 |
+
if (validator.settings.rules) {
|
1231 |
+
rules = $.validator.normalizeRule(validator.settings.rules[ element.name ]) || {};
|
1232 |
+
}
|
1233 |
+
return rules;
|
1234 |
+
},
|
1235 |
+
|
1236 |
+
normalizeRules: function (rules, element) {
|
1237 |
+
|
1238 |
+
// Handle dependency check
|
1239 |
+
$.each(rules, function (prop, val) {
|
1240 |
+
|
1241 |
+
// Ignore rule when param is explicitly false, eg. required:false
|
1242 |
+
if (val === false) {
|
1243 |
+
delete rules[ prop ];
|
1244 |
+
return;
|
1245 |
+
}
|
1246 |
+
if (val.param || val.depends) {
|
1247 |
+
var keepRule = true;
|
1248 |
+
switch (typeof val.depends) {
|
1249 |
+
case "string":
|
1250 |
+
keepRule = !!$(val.depends, element.form).length;
|
1251 |
+
break;
|
1252 |
+
case "function":
|
1253 |
+
keepRule = val.depends.call(element, element);
|
1254 |
+
break;
|
1255 |
+
}
|
1256 |
+
if (keepRule) {
|
1257 |
+
rules[ prop ] = val.param !== undefined ? val.param : true;
|
1258 |
+
} else {
|
1259 |
+
$.data(element.form, "validator").resetElements($(element));
|
1260 |
+
delete rules[ prop ];
|
1261 |
+
}
|
1262 |
+
}
|
1263 |
+
});
|
1264 |
+
|
1265 |
+
// Evaluate parameters
|
1266 |
+
$.each(rules, function (rule, parameter) {
|
1267 |
+
rules[ rule ] = $.isFunction(parameter) && rule !== "normalizer" ? parameter(element) : parameter;
|
1268 |
+
});
|
1269 |
+
|
1270 |
+
// Clean number parameters
|
1271 |
+
$.each(["minlength", "maxlength"], function () {
|
1272 |
+
if (rules[ this ]) {
|
1273 |
+
rules[ this ] = Number(rules[ this ]);
|
1274 |
+
}
|
1275 |
+
});
|
1276 |
+
$.each(["rangelength", "range"], function () {
|
1277 |
+
var parts;
|
1278 |
+
if (rules[ this ]) {
|
1279 |
+
if ($.isArray(rules[ this ])) {
|
1280 |
+
rules[ this ] = [Number(rules[ this ][ 0 ]), Number(rules[ this ][ 1 ])];
|
1281 |
+
} else if (typeof rules[ this ] === "string") {
|
1282 |
+
parts = rules[ this ].replace(/[\[\]]/g, "").split(/[\s,]+/);
|
1283 |
+
rules[ this ] = [Number(parts[ 0 ]), Number(parts[ 1 ])];
|
1284 |
+
}
|
1285 |
+
}
|
1286 |
+
});
|
1287 |
+
|
1288 |
+
if ($.validator.autoCreateRanges) {
|
1289 |
+
|
1290 |
+
// Auto-create ranges
|
1291 |
+
if (rules.min != null && rules.max != null) {
|
1292 |
+
rules.range = [rules.min, rules.max];
|
1293 |
+
delete rules.min;
|
1294 |
+
delete rules.max;
|
1295 |
+
}
|
1296 |
+
if (rules.minlength != null && rules.maxlength != null) {
|
1297 |
+
rules.rangelength = [rules.minlength, rules.maxlength];
|
1298 |
+
delete rules.minlength;
|
1299 |
+
delete rules.maxlength;
|
1300 |
+
}
|
1301 |
+
}
|
1302 |
+
|
1303 |
+
return rules;
|
1304 |
+
},
|
1305 |
+
|
1306 |
+
// Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
|
1307 |
+
normalizeRule: function (data) {
|
1308 |
+
if (typeof data === "string") {
|
1309 |
+
var transformed = {};
|
1310 |
+
$.each(data.split(/\s/), function () {
|
1311 |
+
transformed[ this ] = true;
|
1312 |
+
});
|
1313 |
+
data = transformed;
|
1314 |
+
}
|
1315 |
+
return data;
|
1316 |
+
},
|
1317 |
+
|
1318 |
+
// http://jqueryvalidation.org/jQuery.validator.addMethod/
|
1319 |
+
addMethod: function (name, method, message) {
|
1320 |
+
$.validator.methods[ name ] = method;
|
1321 |
+
$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];
|
1322 |
+
if (method.length < 3) {
|
1323 |
+
$.validator.addClassRules(name, $.validator.normalizeRule(name));
|
1324 |
+
}
|
1325 |
+
},
|
1326 |
+
|
1327 |
+
// http://jqueryvalidation.org/jQuery.validator.methods/
|
1328 |
+
methods: {
|
1329 |
+
|
1330 |
+
// http://jqueryvalidation.org/required-method/
|
1331 |
+
required: function (value, element, param) {
|
1332 |
+
|
1333 |
+
// Check if dependency is met
|
1334 |
+
if (!this.depend(param, element)) {
|
1335 |
+
return "dependency-mismatch";
|
1336 |
+
}
|
1337 |
+
if (element.nodeName.toLowerCase() === "select") {
|
1338 |
+
|
1339 |
+
// Could be an array for select-multiple or a string, both are fine this way
|
1340 |
+
var val = $(element).val();
|
1341 |
+
return val && val.length > 0;
|
1342 |
+
}
|
1343 |
+
if (this.checkable(element)) {
|
1344 |
+
return this.getLength(value, element) > 0;
|
1345 |
+
}
|
1346 |
+
return value.length > 0;
|
1347 |
+
},
|
1348 |
+
|
1349 |
+
// http://jqueryvalidation.org/email-method/
|
1350 |
+
email: function (value, element) {
|
1351 |
+
|
1352 |
+
// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address
|
1353 |
+
// Retrieved 2014-01-14
|
1354 |
+
// If you have a problem with this implementation, report a bug against the above spec
|
1355 |
+
// Or use custom methods to implement your own email validation
|
1356 |
+
return this.optional(element) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(value);
|
1357 |
+
},
|
1358 |
+
|
1359 |
+
// http://jqueryvalidation.org/url-method/
|
1360 |
+
url: function (value, element) {
|
1361 |
+
|
1362 |
+
// Copyright (c) 2010-2013 Diego Perini, MIT licensed
|
1363 |
+
// https://gist.github.com/dperini/729294
|
1364 |
+
// see also https://mathiasbynens.be/demo/url-regex
|
1365 |
+
// modified to allow protocol-relative URLs
|
1366 |
+
return this.optional(element) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(value);
|
1367 |
+
},
|
1368 |
+
|
1369 |
+
// http://jqueryvalidation.org/date-method/
|
1370 |
+
date: function (value, element) {
|
1371 |
+
return this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString());
|
1372 |
+
},
|
1373 |
+
|
1374 |
+
// http://jqueryvalidation.org/dateISO-method/
|
1375 |
+
dateISO: function (value, element) {
|
1376 |
+
return this.optional(element) || /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(value);
|
1377 |
+
},
|
1378 |
+
|
1379 |
+
// http://jqueryvalidation.org/number-method/
|
1380 |
+
number: function (value, element) {
|
1381 |
+
return this.optional(element) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value);
|
1382 |
+
},
|
1383 |
+
|
1384 |
+
// http://jqueryvalidation.org/digits-method/
|
1385 |
+
digits: function (value, element) {
|
1386 |
+
return this.optional(element) || /^\d+$/.test(value);
|
1387 |
+
},
|
1388 |
+
|
1389 |
+
// http://jqueryvalidation.org/minlength-method/
|
1390 |
+
minlength: function (value, element, param) {
|
1391 |
+
var length = $.isArray(value) ? value.length : this.getLength(value, element);
|
1392 |
+
return this.optional(element) || length >= param;
|
1393 |
+
},
|
1394 |
+
|
1395 |
+
// http://jqueryvalidation.org/maxlength-method/
|
1396 |
+
maxlength: function (value, element, param) {
|
1397 |
+
var length = $.isArray(value) ? value.length : this.getLength(value, element);
|
1398 |
+
return this.optional(element) || length <= param;
|
1399 |
+
},
|
1400 |
+
|
1401 |
+
// http://jqueryvalidation.org/rangelength-method/
|
1402 |
+
rangelength: function (value, element, param) {
|
1403 |
+
var length = $.isArray(value) ? value.length : this.getLength(value, element);
|
1404 |
+
return this.optional(element) || (length >= param[ 0 ] && length <= param[ 1 ]);
|
1405 |
+
},
|
1406 |
+
|
1407 |
+
// http://jqueryvalidation.org/min-method/
|
1408 |
+
min: function (value, element, param) {
|
1409 |
+
return this.optional(element) || value >= param;
|
1410 |
+
},
|
1411 |
+
|
1412 |
+
// http://jqueryvalidation.org/max-method/
|
1413 |
+
max: function (value, element, param) {
|
1414 |
+
return this.optional(element) || value <= param;
|
1415 |
+
},
|
1416 |
+
|
1417 |
+
// http://jqueryvalidation.org/range-method/
|
1418 |
+
range: function (value, element, param) {
|
1419 |
+
return this.optional(element) || (value >= param[ 0 ] && value <= param[ 1 ]);
|
1420 |
+
},
|
1421 |
+
|
1422 |
+
// http://jqueryvalidation.org/step-method/
|
1423 |
+
step: function (value, element, param) {
|
1424 |
+
var type = $(element).attr("type"),
|
1425 |
+
errorMessage = "Step attribute on input type " + type + " is not supported.",
|
1426 |
+
supportedTypes = ["text", "number", "range"],
|
1427 |
+
re = new RegExp("\\b" + type + "\\b"),
|
1428 |
+
notSupported = type && !re.test(supportedTypes.join()),
|
1429 |
+
decimalPlaces = function (num) {
|
1430 |
+
var match = ("" + num).match(/(?:\.(\d+))?$/);
|
1431 |
+
if (!match) {
|
1432 |
+
return 0;
|
1433 |
+
}
|
1434 |
+
|
1435 |
+
// Number of digits right of decimal point.
|
1436 |
+
return match[ 1 ] ? match[ 1 ].length : 0;
|
1437 |
+
},
|
1438 |
+
toInt = function (num) {
|
1439 |
+
return Math.round(num * Math.pow(10, decimals));
|
1440 |
+
},
|
1441 |
+
valid = true,
|
1442 |
+
decimals;
|
1443 |
+
|
1444 |
+
// Works only for text, number and range input types
|
1445 |
+
// TODO find a way to support input types date, datetime, datetime-local, month, time and week
|
1446 |
+
if (notSupported) {
|
1447 |
+
throw new Error(errorMessage);
|
1448 |
+
}
|
1449 |
+
|
1450 |
+
decimals = decimalPlaces(param);
|
1451 |
+
|
1452 |
+
// Value can't have too many decimals
|
1453 |
+
if (decimalPlaces(value) > decimals || toInt(value) % toInt(param) !== 0) {
|
1454 |
+
valid = false;
|
1455 |
+
}
|
1456 |
+
|
1457 |
+
return this.optional(element) || valid;
|
1458 |
+
},
|
1459 |
+
|
1460 |
+
// http://jqueryvalidation.org/equalTo-method/
|
1461 |
+
equalTo: function (value, element, param) {
|
1462 |
+
|
1463 |
+
// Bind to the blur event of the target in order to revalidate whenever the target field is updated
|
1464 |
+
var target = $(param);
|
1465 |
+
if (this.settings.onfocusout && target.not(".validate-equalTo-blur").length) {
|
1466 |
+
target.addClass("validate-equalTo-blur").on("blur.validate-equalTo", function () {
|
1467 |
+
$(element).valid();
|
1468 |
+
});
|
1469 |
+
}
|
1470 |
+
return value === target.val();
|
1471 |
+
},
|
1472 |
+
|
1473 |
+
// http://jqueryvalidation.org/remote-method/
|
1474 |
+
remote: function (value, element, param, method) {
|
1475 |
+
if (this.optional(element)) {
|
1476 |
+
return "dependency-mismatch";
|
1477 |
+
}
|
1478 |
+
|
1479 |
+
method = typeof method === "string" && method || "remote";
|
1480 |
+
|
1481 |
+
var previous = this.previousValue(element, method),
|
1482 |
+
validator, data, optionDataString;
|
1483 |
+
|
1484 |
+
if (!this.settings.messages[ element.name ]) {
|
1485 |
+
this.settings.messages[ element.name ] = {};
|
1486 |
+
}
|
1487 |
+
previous.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];
|
1488 |
+
this.settings.messages[ element.name ][ method ] = previous.message;
|
1489 |
+
|
1490 |
+
param = typeof param === "string" && {url: param} || param;
|
1491 |
+
optionDataString = $.param($.extend({data: value}, param.data));
|
1492 |
+
if (previous.old === optionDataString) {
|
1493 |
+
return previous.valid;
|
1494 |
+
}
|
1495 |
+
|
1496 |
+
previous.old = optionDataString;
|
1497 |
+
validator = this;
|
1498 |
+
this.startRequest(element);
|
1499 |
+
data = {};
|
1500 |
+
data[ element.name ] = value;
|
1501 |
+
$.ajax($.extend(true, {
|
1502 |
+
mode: "abort",
|
1503 |
+
port: "validate" + element.name,
|
1504 |
+
dataType: "json",
|
1505 |
+
data: data,
|
1506 |
+
context: validator.currentForm,
|
1507 |
+
success: function (response) {
|
1508 |
+
var valid = response === true || response === "true",
|
1509 |
+
errors, message, submitted;
|
1510 |
+
|
1511 |
+
validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
|
1512 |
+
if (valid) {
|
1513 |
+
submitted = validator.formSubmitted;
|
1514 |
+
validator.resetInternals();
|
1515 |
+
validator.toHide = validator.errorsFor(element);
|
1516 |
+
validator.formSubmitted = submitted;
|
1517 |
+
validator.successList.push(element);
|
1518 |
+
validator.invalid[ element.name ] = false;
|
1519 |
+
validator.showErrors();
|
1520 |
+
} else {
|
1521 |
+
errors = {};
|
1522 |
+
message = response || validator.defaultMessage(element, {method: method, parameters: value});
|
1523 |
+
errors[ element.name ] = previous.message = message;
|
1524 |
+
validator.invalid[ element.name ] = true;
|
1525 |
+
validator.showErrors(errors);
|
1526 |
+
}
|
1527 |
+
previous.valid = valid;
|
1528 |
+
validator.stopRequest(element, valid);
|
1529 |
+
}
|
1530 |
+
}, param));
|
1531 |
+
return "pending";
|
1532 |
+
}
|
1533 |
+
}
|
1534 |
+
|
1535 |
+
});
|
1536 |
+
|
1537 |
+
// Ajax mode: abort
|
1538 |
+
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
|
1539 |
+
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
|
1540 |
+
|
1541 |
+
var pendingRequests = {},
|
1542 |
+
ajax;
|
1543 |
+
|
1544 |
+
// Use a prefilter if available (1.5+)
|
1545 |
+
if ($.ajaxPrefilter) {
|
1546 |
+
$.ajaxPrefilter(function (settings, _, xhr) {
|
1547 |
+
var port = settings.port;
|
1548 |
+
if (settings.mode === "abort") {
|
1549 |
+
if (pendingRequests[ port ]) {
|
1550 |
+
pendingRequests[ port ].abort();
|
1551 |
+
}
|
1552 |
+
pendingRequests[ port ] = xhr;
|
1553 |
+
}
|
1554 |
+
});
|
1555 |
+
} else {
|
1556 |
+
|
1557 |
+
// Proxy ajax
|
1558 |
+
ajax = $.ajax;
|
1559 |
+
$.ajax = function (settings) {
|
1560 |
+
var mode = ("mode" in settings ? settings : $.ajaxSettings).mode,
|
1561 |
+
port = ("port" in settings ? settings : $.ajaxSettings).port;
|
1562 |
+
if (mode === "abort") {
|
1563 |
+
if (pendingRequests[ port ]) {
|
1564 |
+
pendingRequests[ port ].abort();
|
1565 |
+
}
|
1566 |
+
pendingRequests[ port ] = ajax.apply(this, arguments);
|
1567 |
+
return pendingRequests[ port ];
|
1568 |
+
}
|
1569 |
+
return ajax.apply(this, arguments);
|
1570 |
+
};
|
1571 |
+
}
|
1572 |
+
return $;
|
|
|
1573 |
}));
|
gallery-bank.php
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
<?php
|
2 |
/*
|
3 |
-
* Plugin Name:
|
4 |
-
* Plugin URI:
|
5 |
-
* Description: Gallery
|
6 |
* Author: Tech Banker
|
7 |
-
* Author URI:
|
8 |
-
* Version: 4.0.
|
9 |
* License: GPLv3
|
10 |
* Text Domain: gallery-bank
|
11 |
* Domain Path: /languages
|
@@ -89,7 +89,7 @@ if (!defined("tech_banker_stats_url")) {
|
|
89 |
define("tech_banker_stats_url", "http://stats.tech-banker-services.org");
|
90 |
}
|
91 |
if (!defined("gallery_bank_wizard_version_number")) {
|
92 |
-
define("gallery_bank_wizard_version_number", "4.0.
|
93 |
}
|
94 |
|
95 |
if (!is_dir(GALLERY_BANK_MAIN_DIR)) {
|
@@ -348,8 +348,8 @@ if (is_admin()) {
|
|
348 |
}
|
349 |
}
|
350 |
if (strpos($hook, "gb_add_gallery") !== false) {
|
351 |
-
wp_enqueue_script("plupload.full.min.js", GALLERY_BANK_PLUGIN_DIR_URL . "assets/global/plugins/pluploader/js/plupload.full.min.js", array("jquery-ui-draggable", "jquery-ui-sortable", "jquery-ui-dialog", "jquery-ui-widget", "jquery-ui-progressbar"),null,true);
|
352 |
-
wp_enqueue_script("jquery.ui.plupload.js", GALLERY_BANK_PLUGIN_DIR_URL . "assets/global/plugins/pluploader/js/jquery.ui.plupload.js",null,null,true);
|
353 |
wp_enqueue_style("jquery.ui.plupload.css", GALLERY_BANK_PLUGIN_DIR_URL . "assets/global/plugins/pluploader/css/jquery.ui.plupload.css");
|
354 |
wp_enqueue_style("jquery-ui.css", GALLERY_BANK_PLUGIN_DIR_URL . "assets/global/plugins/pluploader/css/jquery-ui.css");
|
355 |
wp_enqueue_script("bootstrap-hover-dropdown.js", GALLERY_BANK_PLUGIN_DIR_URL . "assets/global/plugins/custom/js/bootstrap-hover-dropdown.js");
|
1 |
<?php
|
2 |
/*
|
3 |
+
* Plugin Name: Photo Gallery - Image Gallery - Photo Album - WordPress Gallery Plugin By Gallery Bank
|
4 |
+
* Plugin URI: https://gallery-bank.tech-banker.com/
|
5 |
+
* Description: Responsive Gallery Plugin that lets you create beautiful image gallery along with media gallery, portfolio gallery, grid gallery and gallery widgets.
|
6 |
* Author: Tech Banker
|
7 |
+
* Author URI: https://gallery-bank.tech-banker.com/
|
8 |
+
* Version: 4.0.5
|
9 |
* License: GPLv3
|
10 |
* Text Domain: gallery-bank
|
11 |
* Domain Path: /languages
|
89 |
define("tech_banker_stats_url", "http://stats.tech-banker-services.org");
|
90 |
}
|
91 |
if (!defined("gallery_bank_wizard_version_number")) {
|
92 |
+
define("gallery_bank_wizard_version_number", "4.0.5");
|
93 |
}
|
94 |
|
95 |
if (!is_dir(GALLERY_BANK_MAIN_DIR)) {
|
348 |
}
|
349 |
}
|
350 |
if (strpos($hook, "gb_add_gallery") !== false) {
|
351 |
+
wp_enqueue_script("plupload.full.min.js", GALLERY_BANK_PLUGIN_DIR_URL . "assets/global/plugins/pluploader/js/plupload.full.min.js", array("jquery-ui-draggable", "jquery-ui-sortable", "jquery-ui-dialog", "jquery-ui-widget", "jquery-ui-progressbar"), null, true);
|
352 |
+
wp_enqueue_script("jquery.ui.plupload.js", GALLERY_BANK_PLUGIN_DIR_URL . "assets/global/plugins/pluploader/js/jquery.ui.plupload.js", null, null, true);
|
353 |
wp_enqueue_style("jquery.ui.plupload.css", GALLERY_BANK_PLUGIN_DIR_URL . "assets/global/plugins/pluploader/css/jquery.ui.plupload.css");
|
354 |
wp_enqueue_style("jquery-ui.css", GALLERY_BANK_PLUGIN_DIR_URL . "assets/global/plugins/pluploader/css/jquery-ui.css");
|
355 |
wp_enqueue_script("bootstrap-hover-dropdown.js", GALLERY_BANK_PLUGIN_DIR_URL . "assets/global/plugins/custom/js/bootstrap-hover-dropdown.js");
|
includes/footer.php
CHANGED
@@ -821,10 +821,10 @@ if (!is_user_logged_in()) {
|
|
821 |
({
|
822 |
runtimes: "html5,html4,flash,silverlight",
|
823 |
url: ajaxurl + "?param=upload_gallery_pics&action=gallery_bank_image_upload&_wp_nonce=<?php echo $upload_local_system_files_nonce; ?>",
|
824 |
-
max_file_size
|
825 |
chunk_size: "2mb",
|
826 |
-
filters
|
827 |
-
|
828 |
],
|
829 |
rename: true,
|
830 |
sortable: true,
|
821 |
({
|
822 |
runtimes: "html5,html4,flash,silverlight",
|
823 |
url: ajaxurl + "?param=upload_gallery_pics&action=gallery_bank_image_upload&_wp_nonce=<?php echo $upload_local_system_files_nonce; ?>",
|
824 |
+
max_file_size: "20mb",
|
825 |
chunk_size: "2mb",
|
826 |
+
filters: [
|
827 |
+
{title: "Image files", extensions: "jpg,jpeg,gif,png"}
|
828 |
],
|
829 |
rename: true,
|
830 |
sortable: true,
|
includes/sidebar.php
CHANGED
@@ -188,7 +188,6 @@ if (!is_user_logged_in()) {
|
|
188 |
<li id="ux_li_lightboxes">
|
189 |
<a href="javascript:;">
|
190 |
<i class="icon-custom-frame"></i>
|
191 |
-
<span class="badge">Pro</span>
|
192 |
<span class="title">
|
193 |
<?php echo $gb_lightboxes; ?>
|
194 |
</span>
|
@@ -197,30 +196,35 @@ if (!is_user_logged_in()) {
|
|
197 |
<li id="ux_li_gb_lightcase">
|
198 |
<a href="admin.php?page=gb_lightcase">
|
199 |
<i class="icon-custom-magnet"></i>
|
|
|
200 |
<?php echo $gb_lightcase; ?>
|
201 |
</a>
|
202 |
</li>
|
203 |
<li id="ux_li_fancy_box">
|
204 |
<a href="admin.php?page=gb_fancy_box">
|
205 |
<i class="icon-custom-social-dropbox"></i>
|
|
|
206 |
<?php echo $gb_fancy_box; ?>
|
207 |
</a>
|
208 |
</li>
|
209 |
<li id="ux_li_color_box">
|
210 |
<a href="admin.php?page=gb_color_box">
|
211 |
<i class="icon-custom-magic-wand"></i>
|
|
|
212 |
<?php echo $gb_color_box; ?>
|
213 |
</a>
|
214 |
</li>
|
215 |
<li id="ux_li_foo_box_free_edition">
|
216 |
<a href="admin.php?page=gb_foo_box_free_edition">
|
217 |
<i class="icon-custom-frame"></i>
|
|
|
218 |
<?php echo class_exists("fooboxV2") ? $gb_foo_box_premium : $gb_foo_box_free_edition; ?>
|
219 |
</a>
|
220 |
</li>
|
221 |
<li id="ux_li_nivo_light_box">
|
222 |
<a href="admin.php?page=gb_nivo_lightbox">
|
223 |
<i class="icon-custom-paper-plane"></i>
|
|
|
224 |
<?php echo $gb_nivo_lightbox; ?>
|
225 |
</a>
|
226 |
</li>
|
188 |
<li id="ux_li_lightboxes">
|
189 |
<a href="javascript:;">
|
190 |
<i class="icon-custom-frame"></i>
|
|
|
191 |
<span class="title">
|
192 |
<?php echo $gb_lightboxes; ?>
|
193 |
</span>
|
196 |
<li id="ux_li_gb_lightcase">
|
197 |
<a href="admin.php?page=gb_lightcase">
|
198 |
<i class="icon-custom-magnet"></i>
|
199 |
+
<span class="badge">Pro</span>
|
200 |
<?php echo $gb_lightcase; ?>
|
201 |
</a>
|
202 |
</li>
|
203 |
<li id="ux_li_fancy_box">
|
204 |
<a href="admin.php?page=gb_fancy_box">
|
205 |
<i class="icon-custom-social-dropbox"></i>
|
206 |
+
<span class="badge">Pro</span>
|
207 |
<?php echo $gb_fancy_box; ?>
|
208 |
</a>
|
209 |
</li>
|
210 |
<li id="ux_li_color_box">
|
211 |
<a href="admin.php?page=gb_color_box">
|
212 |
<i class="icon-custom-magic-wand"></i>
|
213 |
+
<span class="badge">Pro</span>
|
214 |
<?php echo $gb_color_box; ?>
|
215 |
</a>
|
216 |
</li>
|
217 |
<li id="ux_li_foo_box_free_edition">
|
218 |
<a href="admin.php?page=gb_foo_box_free_edition">
|
219 |
<i class="icon-custom-frame"></i>
|
220 |
+
<span class="badge">Pro</span>
|
221 |
<?php echo class_exists("fooboxV2") ? $gb_foo_box_premium : $gb_foo_box_free_edition; ?>
|
222 |
</a>
|
223 |
</li>
|
224 |
<li id="ux_li_nivo_light_box">
|
225 |
<a href="admin.php?page=gb_nivo_lightbox">
|
226 |
<i class="icon-custom-paper-plane"></i>
|
227 |
+
<span class="badge">Pro</span>
|
228 |
<?php echo $gb_nivo_lightbox; ?>
|
229 |
</a>
|
230 |
</li>
|
includes/web-fonts.php
CHANGED
@@ -10,6 +10,7 @@ if (!defined("ABSPATH")) {
|
|
10 |
exit;
|
11 |
}
|
12 |
?>
|
|
|
13 |
<option value="ABeeZee">ABeeZee</option>
|
14 |
<option value="ABeeZee:400italic">ABeeZee italic</option>
|
15 |
<option value="Abel">Abel</option>
|
10 |
exit;
|
11 |
}
|
12 |
?>
|
13 |
+
<option value="inherit">Default</option>
|
14 |
<option value="ABeeZee">ABeeZee</option>
|
15 |
<option value="ABeeZee:400italic">ABeeZee italic</option>
|
16 |
<option value="Abel">Abel</option>
|
lib/action-library.php
CHANGED
@@ -138,7 +138,13 @@ if (!is_user_logged_in()) {
|
|
138 |
if (wp_verify_nonce((isset($_REQUEST["_wp_nonce"]) ? esc_attr($_REQUEST["_wp_nonce"]) : ""), "gallery_upload_images_nonce")) {
|
139 |
$gallery_id = isset($_REQUEST["gallery_id"]) ? intval($_REQUEST["gallery_id"]) : 0;
|
140 |
$image_meta_data = array();
|
141 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
142 |
$image_data = get_thumbnail_dimension_gallery_bank();
|
143 |
$image_name = isset($_REQUEST["image_name"]) ? esc_attr($_REQUEST["image_name"]) : "";
|
144 |
$upload_type = isset($_REQUEST["upload_method"]) ? esc_attr($_REQUEST["upload_method"]) : "";
|
@@ -217,7 +223,7 @@ if (!is_user_logged_in()) {
|
|
217 |
}
|
218 |
$image_meta_data_insert = array();
|
219 |
$image_meta_data_insert["meta_id"] = $gallery_id;
|
220 |
-
$image_meta_data_insert["old_gallery_id"] = $
|
221 |
$image_meta_data_insert["meta_key"] = "image_data";
|
222 |
$image_meta_data_insert["meta_value"] = serialize($image_meta_data);
|
223 |
$image_id = $obj_dbHelper_gallery_bank->insertCommand(gallery_bank_meta(), $image_meta_data_insert);
|
@@ -397,7 +403,9 @@ if (!is_user_logged_in()) {
|
|
397 |
);
|
398 |
$get_image_data_unserialize = array();
|
399 |
foreach ($get_image_data as $val) {
|
400 |
-
$
|
|
|
|
|
401 |
}
|
402 |
|
403 |
$generated_image_dimension = explode(",", $global_options["global_options_generated_image_dimensions"]);
|
138 |
if (wp_verify_nonce((isset($_REQUEST["_wp_nonce"]) ? esc_attr($_REQUEST["_wp_nonce"]) : ""), "gallery_upload_images_nonce")) {
|
139 |
$gallery_id = isset($_REQUEST["gallery_id"]) ? intval($_REQUEST["gallery_id"]) : 0;
|
140 |
$image_meta_data = array();
|
141 |
+
$get_old_gallery_id = $wpdb->get_var
|
142 |
+
(
|
143 |
+
$wpdb->prepare
|
144 |
+
(
|
145 |
+
"SELECT old_gallery_id FROM " . gallery_bank_meta() . " WHERE meta_id = %d and meta_key = %s", $gallery_id, "gallery_data"
|
146 |
+
)
|
147 |
+
);
|
148 |
$image_data = get_thumbnail_dimension_gallery_bank();
|
149 |
$image_name = isset($_REQUEST["image_name"]) ? esc_attr($_REQUEST["image_name"]) : "";
|
150 |
$upload_type = isset($_REQUEST["upload_method"]) ? esc_attr($_REQUEST["upload_method"]) : "";
|
223 |
}
|
224 |
$image_meta_data_insert = array();
|
225 |
$image_meta_data_insert["meta_id"] = $gallery_id;
|
226 |
+
$image_meta_data_insert["old_gallery_id"] = $get_old_gallery_id;
|
227 |
$image_meta_data_insert["meta_key"] = "image_data";
|
228 |
$image_meta_data_insert["meta_value"] = serialize($image_meta_data);
|
229 |
$image_id = $obj_dbHelper_gallery_bank->insertCommand(gallery_bank_meta(), $image_meta_data_insert);
|
403 |
);
|
404 |
$get_image_data_unserialize = array();
|
405 |
foreach ($get_image_data as $val) {
|
406 |
+
$unserialize_image_data_value = array();
|
407 |
+
$unserialize_image_data_value = maybe_unserialize($val->meta_value);
|
408 |
+
$get_image_data_unserialize[] = $unserialize_image_data_value["image_name"];
|
409 |
}
|
410 |
|
411 |
$generated_image_dimension = explode(",", $global_options["global_options_generated_image_dimensions"]);
|
license.txt
DELETED
@@ -1,674 +0,0 @@
|
|
1 |
-
GNU GENERAL PUBLIC LICENSE
|
2 |
-
Version 3, 29 June 2007
|
3 |
-
|
4 |
-
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
5 |
-
Everyone is permitted to copy and distribute verbatim copies
|
6 |
-
of this license document, but changing it is not allowed.
|
7 |
-
|
8 |
-
Preamble
|
9 |
-
|
10 |
-
The GNU General Public License is a free, copyleft license for
|
11 |
-
software and other kinds of works.
|
12 |
-
|
13 |
-
The licenses for most software and other practical works are designed
|
14 |
-
to take away your freedom to share and change the works. By contrast,
|
15 |
-
the GNU General Public License is intended to guarantee your freedom to
|
16 |
-
share and change all versions of a program--to make sure it remains free
|
17 |
-
software for all its users. We, the Free Software Foundation, use the
|
18 |
-
GNU General Public License for most of our software; it applies also to
|
19 |
-
any other work released this way by its authors. You can apply it to
|
20 |
-
your programs, too.
|
21 |
-
|
22 |
-
When we speak of free software, we are referring to freedom, not
|
23 |
-
price. Our General Public Licenses are designed to make sure that you
|
24 |
-
have the freedom to distribute copies of free software (and charge for
|
25 |
-
them if you wish), that you receive source code or can get it if you
|
26 |
-
want it, that you can change the software or use pieces of it in new
|
27 |
-
free programs, and that you know you can do these things.
|
28 |
-
|
29 |
-
To protect your rights, we need to prevent others from denying you
|
30 |
-
these rights or asking you to surrender the rights. Therefore, you have
|
31 |
-
certain responsibilities if you distribute copies of the software, or if
|
32 |
-
you modify it: responsibilities to respect the freedom of others.
|
33 |
-
|
34 |
-
For example, if you distribute copies of such a program, whether
|
35 |
-
gratis or for a fee, you must pass on to the recipients the same
|
36 |
-
freedoms that you received. You must make sure that they, too, receive
|
37 |
-
or can get the source code. And you must show them these terms so they
|
38 |
-
know their rights.
|
39 |
-
|
40 |
-
Developers that use the GNU GPL protect your rights with two steps:
|
41 |
-
(1) assert copyright on the software, and (2) offer you this License
|
42 |
-
giving you legal permission to copy, distribute and/or modify it.
|
43 |
-
|
44 |
-
For the developers' and authors' protection, the GPL clearly explains
|
45 |
-
that there is no warranty for this free software. For both users' and
|
46 |
-
authors' sake, the GPL requires that modified versions be marked as
|
47 |
-
changed, so that their problems will not be attributed erroneously to
|
48 |
-
authors of previous versions.
|
49 |
-
|
50 |
-
Some devices are designed to deny users access to install or run
|
51 |
-
modified versions of the software inside them, although the manufacturer
|
52 |
-
can do so. This is fundamentally incompatible with the aim of
|
53 |
-
protecting users' freedom to change the software. The systematic
|
54 |
-
pattern of such abuse occurs in the area of products for individuals to
|
55 |
-
use, which is precisely where it is most unacceptable. Therefore, we
|
56 |
-
have designed this version of the GPL to prohibit the practice for those
|
57 |
-
products. If such problems arise substantially in other domains, we
|
58 |
-
stand ready to extend this provision to those domains in future versions
|
59 |
-
of the GPL, as needed to protect the freedom of users.
|
60 |
-
|
61 |
-
Finally, every program is threatened constantly by software patents.
|
62 |
-
States should not allow patents to restrict development and use of
|
63 |
-
software on general-purpose computers, but in those that do, we wish to
|
64 |
-
avoid the special danger that patents applied to a free program could
|
65 |
-
make it effectively proprietary. To prevent this, the GPL assures that
|
66 |
-
patents cannot be used to render the program non-free.
|
67 |
-
|
68 |
-
The precise terms and conditions for copying, distribution and
|
69 |
-
modification follow.
|
70 |
-
|
71 |
-
TERMS AND CONDITIONS
|
72 |
-
|
73 |
-
0. Definitions.
|
74 |
-
|
75 |
-
"This License" refers to version 3 of the GNU General Public License.
|
76 |
-
|
77 |
-
"Copyright" also means copyright-like laws that apply to other kinds of
|
78 |
-
works, such as semiconductor masks.
|
79 |
-
|
80 |
-
"The Program" refers to any copyrightable work licensed under this
|
81 |
-
License. Each licensee is addressed as "you". "Licensees" and
|
82 |
-
"recipients" may be individuals or organizations.
|
83 |
-
|
84 |
-
To "modify" a work means to copy from or adapt all or part of the work
|
85 |
-
in a fashion requiring copyright permission, other than the making of an
|
86 |
-
exact copy. The resulting work is called a "modified version" of the
|
87 |
-
earlier work or a work "based on" the earlier work.
|
88 |
-
|
89 |
-
A "covered work" means either the unmodified Program or a work based
|
90 |
-
on the Program.
|
91 |
-
|
92 |
-
To "propagate" a work means to do anything with it that, without
|
93 |
-
permission, would make you directly or secondarily liable for
|
94 |
-
infringement under applicable copyright law, except executing it on a
|
95 |
-
computer or modifying a private copy. Propagation includes copying,
|
96 |
-
distribution (with or without modification), making available to the
|
97 |
-
public, and in some countries other activities as well.
|
98 |
-
|
99 |
-
To "convey" a work means any kind of propagation that enables other
|
100 |
-
parties to make or receive copies. Mere interaction with a user through
|
101 |
-
a computer network, with no transfer of a copy, is not conveying.
|
102 |
-
|
103 |
-
An interactive user interface displays "Appropriate Legal Notices"
|
104 |
-
to the extent that it includes a convenient and prominently visible
|
105 |
-
feature that (1) displays an appropriate copyright notice, and (2)
|
106 |
-
tells the user that there is no warranty for the work (except to the
|
107 |
-
extent that warranties are provided), that licensees may convey the
|
108 |
-
work under this License, and how to view a copy of this License. If
|
109 |
-
the interface presents a list of user commands or options, such as a
|
110 |
-
menu, a prominent item in the list meets this criterion.
|
111 |
-
|
112 |
-
1. Source Code.
|
113 |
-
|
114 |
-
The "source code" for a work means the preferred form of the work
|
115 |
-
for making modifications to it. "Object code" means any non-source
|
116 |
-
form of a work.
|
117 |
-
|
118 |
-
A "Standard Interface" means an interface that either is an official
|
119 |
-
standard defined by a recognized standards body, or, in the case of
|
120 |
-
interfaces specified for a particular programming language, one that
|
121 |
-
is widely used among developers working in that language.
|
122 |
-
|
123 |
-
The "System Libraries" of an executable work include anything, other
|
124 |
-
than the work as a whole, that (a) is included in the normal form of
|
125 |
-
packaging a Major Component, but which is not part of that Major
|
126 |
-
Component, and (b) serves only to enable use of the work with that
|
127 |
-
Major Component, or to implement a Standard Interface for which an
|
128 |
-
implementation is available to the public in source code form. A
|
129 |
-
"Major Component", in this context, means a major essential component
|
130 |
-
(kernel, window system, and so on) of the specific operating system
|
131 |
-
(if any) on which the executable work runs, or a compiler used to
|
132 |
-
produce the work, or an object code interpreter used to run it.
|
133 |
-
|
134 |
-
The "Corresponding Source" for a work in object code form means all
|
135 |
-
the source code needed to generate, install, and (for an executable
|
136 |
-
work) run the object code and to modify the work, including scripts to
|
137 |
-
control those activities. However, it does not include the work's
|
138 |
-
System Libraries, or general-purpose tools or generally available free
|
139 |
-
programs which are used unmodified in performing those activities but
|
140 |
-
which are not part of the work. For example, Corresponding Source
|
141 |
-
includes interface definition files associated with source files for
|
142 |
-
the work, and the source code for shared libraries and dynamically
|
143 |
-
linked subprograms that the work is specifically designed to require,
|
144 |
-
such as by intimate data communication or control flow between those
|
145 |
-
subprograms and other parts of the work.
|
146 |
-
|
147 |
-
The Corresponding Source need not include anything that users
|
148 |
-
can regenerate automatically from other parts of the Corresponding
|
149 |
-
Source.
|
150 |
-
|
151 |
-
The Corresponding Source for a work in source code form is that
|
152 |
-
same work.
|
153 |
-
|
154 |
-
2. Basic Permissions.
|
155 |
-
|
156 |
-
All rights granted under this License are granted for the term of
|
157 |
-
copyright on the Program, and are irrevocable provided the stated
|
158 |
-
conditions are met. This License explicitly affirms your unlimited
|
159 |
-
permission to run the unmodified Program. The output from running a
|
160 |
-
covered work is covered by this License only if the output, given its
|
161 |
-
content, constitutes a covered work. This License acknowledges your
|
162 |
-
rights of fair use or other equivalent, as provided by copyright law.
|
163 |
-
|
164 |
-
You may make, run and propagate covered works that you do not
|
165 |
-
convey, without conditions so long as your license otherwise remains
|
166 |
-
in force. You may convey covered works to others for the sole purpose
|
167 |
-
of having them make modifications exclusively for you, or provide you
|
168 |
-
with facilities for running those works, provided that you comply with
|
169 |
-
the terms of this License in conveying all material for which you do
|
170 |
-
not control copyright. Those thus making or running the covered works
|
171 |
-
for you must do so exclusively on your behalf, under your direction
|
172 |
-
and control, on terms that prohibit them from making any copies of
|
173 |
-
your copyrighted material outside their relationship with you.
|
174 |
-
|
175 |
-
Conveying under any other circumstances is permitted solely under
|
176 |
-
the conditions stated below. Sublicensing is not allowed; section 10
|
177 |
-
makes it unnecessary.
|
178 |
-
|
179 |
-
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
180 |
-
|
181 |
-
No covered work shall be deemed part of an effective technological
|
182 |
-
measure under any applicable law fulfilling obligations under article
|
183 |
-
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
184 |
-
similar laws prohibiting or restricting circumvention of such
|
185 |
-
measures.
|
186 |
-
|
187 |
-
When you convey a covered work, you waive any legal power to forbid
|
188 |
-
circumvention of technological measures to the extent such circumvention
|
189 |
-
is effected by exercising rights under this License with respect to
|
190 |
-
the covered work, and you disclaim any intention to limit operation or
|
191 |
-
modification of the work as a means of enforcing, against the work's
|
192 |
-
users, your or third parties' legal rights to forbid circumvention of
|
193 |
-
technological measures.
|
194 |
-
|
195 |
-
4. Conveying Verbatim Copies.
|
196 |
-
|
197 |
-
You may convey verbatim copies of the Program's source code as you
|
198 |
-
receive it, in any medium, provided that you conspicuously and
|
199 |
-
appropriately publish on each copy an appropriate copyright notice;
|
200 |
-
keep intact all notices stating that this License and any
|
201 |
-
non-permissive terms added in accord with section 7 apply to the code;
|
202 |
-
keep intact all notices of the absence of any warranty; and give all
|
203 |
-
recipients a copy of this License along with the Program.
|
204 |
-
|
205 |
-
You may charge any price or no price for each copy that you convey,
|
206 |
-
and you may offer support or warranty protection for a fee.
|
207 |
-
|
208 |
-
5. Conveying Modified Source Versions.
|
209 |
-
|
210 |
-
You may convey a work based on the Program, or the modifications to
|
211 |
-
produce it from the Program, in the form of source code under the
|
212 |
-
terms of section 4, provided that you also meet all of these conditions:
|
213 |
-
|
214 |
-
a) The work must carry prominent notices stating that you modified
|
215 |
-
it, and giving a relevant date.
|
216 |
-
|
217 |
-
b) The work must carry prominent notices stating that it is
|
218 |
-
released under this License and any conditions added under section
|
219 |
-
7. This requirement modifies the requirement in section 4 to
|
220 |
-
"keep intact all notices".
|
221 |
-
|
222 |
-
c) You must license the entire work, as a whole, under this
|
223 |
-
License to anyone who comes into possession of a copy. This
|
224 |
-
License will therefore apply, along with any applicable section 7
|
225 |
-
additional terms, to the whole of the work, and all its parts,
|
226 |
-
regardless of how they are packaged. This License gives no
|
227 |
-
permission to license the work in any other way, but it does not
|
228 |
-
invalidate such permission if you have separately received it.
|
229 |
-
|
230 |
-
d) If the work has interactive user interfaces, each must display
|
231 |
-
Appropriate Legal Notices; however, if the Program has interactive
|
232 |
-
interfaces that do not display Appropriate Legal Notices, your
|
233 |
-
work need not make them do so.
|
234 |
-
|
235 |
-
A compilation of a covered work with other separate and independent
|
236 |
-
works, which are not by their nature extensions of the covered work,
|
237 |
-
and which are not combined with it such as to form a larger program,
|
238 |
-
in or on a volume of a storage or distribution medium, is called an
|
239 |
-
"aggregate" if the compilation and its resulting copyright are not
|
240 |
-
used to limit the access or legal rights of the compilation's users
|
241 |
-
beyond what the individual works permit. Inclusion of a covered work
|
242 |
-
in an aggregate does not cause this License to apply to the other
|
243 |
-
parts of the aggregate.
|
244 |
-
|
245 |
-
6. Conveying Non-Source Forms.
|
246 |
-
|
247 |
-
You may convey a covered work in object code form under the terms
|
248 |
-
of sections 4 and 5, provided that you also convey the
|
249 |
-
machine-readable Corresponding Source under the terms of this License,
|
250 |
-
in one of these ways:
|
251 |
-
|
252 |
-
a) Convey the object code in, or embodied in, a physical product
|
253 |
-
(including a physical distribution medium), accompanied by the
|
254 |
-
Corresponding Source fixed on a durable physical medium
|
255 |
-
customarily used for software interchange.
|
256 |
-
|
257 |
-
b) Convey the object code in, or embodied in, a physical product
|
258 |
-
(including a physical distribution medium), accompanied by a
|
259 |
-
written offer, valid for at least three years and valid for as
|
260 |
-
long as you offer spare parts or customer support for that product
|
261 |
-
model, to give anyone who possesses the object code either (1) a
|
262 |
-
copy of the Corresponding Source for all the software in the
|
263 |
-
product that is covered by this License, on a durable physical
|
264 |
-
medium customarily used for software interchange, for a price no
|
265 |
-
more than your reasonable cost of physically performing this
|
266 |
-
conveying of source, or (2) access to copy the
|
267 |
-
Corresponding Source from a network server at no charge.
|
268 |
-
|
269 |
-
c) Convey individual copies of the object code with a copy of the
|
270 |
-
written offer to provide the Corresponding Source. This
|
271 |
-
alternative is allowed only occasionally and noncommercially, and
|
272 |
-
only if you received the object code with such an offer, in accord
|
273 |
-
with subsection 6b.
|
274 |
-
|
275 |
-
d) Convey the object code by offering access from a designated
|
276 |
-
place (gratis or for a charge), and offer equivalent access to the
|
277 |
-
Corresponding Source in the same way through the same place at no
|
278 |
-
further charge. You need not require recipients to copy the
|
279 |
-
Corresponding Source along with the object code. If the place to
|
280 |
-
copy the object code is a network server, the Corresponding Source
|
281 |
-
may be on a different server (operated by you or a third party)
|
282 |
-
that supports equivalent copying facilities, provided you maintain
|
283 |
-
clear directions next to the object code saying where to find the
|
284 |
-
Corresponding Source. Regardless of what server hosts the
|
285 |
-
Corresponding Source, you remain obligated to ensure that it is
|
286 |
-
available for as long as needed to satisfy these requirements.
|
287 |
-
|
288 |
-
e) Convey the object code using peer-to-peer transmission, provided
|
289 |
-
you inform other peers where the object code and Corresponding
|
290 |
-
Source of the work are being offered to the general public at no
|
291 |
-
charge under subsection 6d.
|
292 |
-
|
293 |
-
A separable portion of the object code, whose source code is excluded
|
294 |
-
from the Corresponding Source as a System Library, need not be
|
295 |
-
included in conveying the object code work.
|
296 |
-
|
297 |
-
A "User Product" is either (1) a "consumer product", which means any
|
298 |
-
tangible personal property which is normally used for personal, family,
|
299 |
-
or household purposes, or (2) anything designed or sold for incorporation
|
300 |
-
into a dwelling. In determining whether a product is a consumer product,
|
301 |
-
doubtful cases shall be resolved in favor of coverage. For a particular
|
302 |
-
product received by a particular user, "normally used" refers to a
|
303 |
-
typical or common use of that class of product, regardless of the status
|
304 |
-
of the particular user or of the way in which the particular user
|
305 |
-
actually uses, or expects or is expected to use, the product. A product
|
306 |
-
is a consumer product regardless of whether the product has substantial
|
307 |
-
commercial, industrial or non-consumer uses, unless such uses represent
|
308 |
-
the only significant mode of use of the product.
|
309 |
-
|
310 |
-
"Installation Information" for a User Product means any methods,
|
311 |
-
procedures, authorization keys, or other information required to install
|
312 |
-
and execute modified versions of a covered work in that User Product from
|
313 |
-
a modified version of its Corresponding Source. The information must
|
314 |
-
suffice to ensure that the continued functioning of the modified object
|
315 |
-
code is in no case prevented or interfered with solely because
|
316 |
-
modification has been made.
|
317 |
-
|
318 |
-
If you convey an object code work under this section in, or with, or
|
319 |
-
specifically for use in, a User Product, and the conveying occurs as
|
320 |
-
part of a transaction in which the right of possession and use of the
|
321 |
-
User Product is transferred to the recipient in perpetuity or for a
|
322 |
-
fixed term (regardless of how the transaction is characterized), the
|
323 |
-
Corresponding Source conveyed under this section must be accompanied
|
324 |
-
by the Installation Information. But this requirement does not apply
|
325 |
-
if neither you nor any third party retains the ability to install
|
326 |
-
modified object code on the User Product (for example, the work has
|
327 |
-
been installed in ROM).
|
328 |
-
|
329 |
-
The requirement to provide Installation Information does not include a
|
330 |
-
requirement to continue to provide support service, warranty, or updates
|
331 |
-
for a work that has been modified or installed by the recipient, or for
|
332 |
-
the User Product in which it has been modified or installed. Access to a
|
333 |
-
network may be denied when the modification itself materially and
|
334 |
-
adversely affects the operation of the network or violates the rules and
|
335 |
-
protocols for communication across the network.
|
336 |
-
|
337 |
-
Corresponding Source conveyed, and Installation Information provided,
|
338 |
-
in accord with this section must be in a format that is publicly
|
339 |
-
documented (and with an implementation available to the public in
|
340 |
-
source code form), and must require no special password or key for
|
341 |
-
unpacking, reading or copying.
|
342 |
-
|
343 |
-
7. Additional Terms.
|
344 |
-
|
345 |
-
"Additional permissions" are terms that supplement the terms of this
|
346 |
-
License by making exceptions from one or more of its conditions.
|
347 |
-
Additional permissions that are applicable to the entire Program shall
|
348 |
-
be treated as though they were included in this License, to the extent
|
349 |
-
that they are valid under applicable law. If additional permissions
|
350 |
-
apply only to part of the Program, that part may be used separately
|
351 |
-
under those permissions, but the entire Program remains governed by
|
352 |
-
this License without regard to the additional permissions.
|
353 |
-
|
354 |
-
When you convey a copy of a covered work, you may at your option
|
355 |
-
remove any additional permissions from that copy, or from any part of
|
356 |
-
it. (Additional permissions may be written to require their own
|
357 |
-
removal in certain cases when you modify the work.) You may place
|
358 |
-
additional permissions on material, added by you to a covered work,
|
359 |
-
for which you have or can give appropriate copyright permission.
|
360 |
-
|
361 |
-
Notwithstanding any other provision of this License, for material you
|
362 |
-
add to a covered work, you may (if authorized by the copyright holders of
|
363 |
-
that material) supplement the terms of this License with terms:
|
364 |
-
|
365 |
-
a) Disclaiming warranty or limiting liability differently from the
|
366 |
-
terms of sections 15 and 16 of this License; or
|
367 |
-
|
368 |
-
b) Requiring preservation of specified reasonable legal notices or
|
369 |
-
author attributions in that material or in the Appropriate Legal
|
370 |
-
Notices displayed by works containing it; or
|
371 |
-
|
372 |
-
c) Prohibiting misrepresentation of the origin of that material, or
|
373 |
-
requiring that modified versions of such material be marked in
|
374 |
-
reasonable ways as different from the original version; or
|
375 |
-
|
376 |
-
d) Limiting the use for publicity purposes of names of licensors or
|
377 |
-
authors of the material; or
|
378 |
-
|
379 |
-
e) Declining to grant rights under trademark law for use of some
|
380 |
-
trade names, trademarks, or service marks; or
|
381 |
-
|
382 |
-
f) Requiring indemnification of licensors and authors of that
|
383 |
-
material by anyone who conveys the material (or modified versions of
|
384 |
-
it) with contractual assumptions of liability to the recipient, for
|
385 |
-
any liability that these contractual assumptions directly impose on
|
386 |
-
those licensors and authors.
|
387 |
-
|
388 |
-
All other non-permissive additional terms are considered "further
|
389 |
-
restrictions" within the meaning of section 10. If the Program as you
|
390 |
-
received it, or any part of it, contains a notice stating that it is
|
391 |
-
governed by this License along with a term that is a further
|
392 |
-
restriction, you may remove that term. If a license document contains
|
393 |
-
a further restriction but permits relicensing or conveying under this
|
394 |
-
License, you may add to a covered work material governed by the terms
|
395 |
-
of that license document, provided that the further restriction does
|
396 |
-
not survive such relicensing or conveying.
|
397 |
-
|
398 |
-
If you add terms to a covered work in accord with this section, you
|
399 |
-
must place, in the relevant source files, a statement of the
|
400 |
-
additional terms that apply to those files, or a notice indicating
|
401 |
-
where to find the applicable terms.
|
402 |
-
|
403 |
-
Additional terms, permissive or non-permissive, may be stated in the
|
404 |
-
form of a separately written license, or stated as exceptions;
|
405 |
-
the above requirements apply either way.
|
406 |
-
|
407 |
-
8. Termination.
|
408 |
-
|
409 |
-
You may not propagate or modify a covered work except as expressly
|
410 |
-
provided under this License. Any attempt otherwise to propagate or
|
411 |
-
modify it is void, and will automatically terminate your rights under
|
412 |
-
this License (including any patent licenses granted under the third
|
413 |
-
paragraph of section 11).
|
414 |
-
|
415 |
-
However, if you cease all violation of this License, then your
|
416 |
-
license from a particular copyright holder is reinstated (a)
|
417 |
-
provisionally, unless and until the copyright holder explicitly and
|
418 |
-
finally terminates your license, and (b) permanently, if the copyright
|
419 |
-
holder fails to notify you of the violation by some reasonable means
|
420 |
-
prior to 60 days after the cessation.
|
421 |
-
|
422 |
-
Moreover, your license from a particular copyright holder is
|
423 |
-
reinstated permanently if the copyright holder notifies you of the
|
424 |
-
violation by some reasonable means, this is the first time you have
|
425 |
-
received notice of violation of this License (for any work) from that
|
426 |
-
copyright holder, and you cure the violation prior to 30 days after
|
427 |
-
your receipt of the notice.
|
428 |
-
|
429 |
-
Termination of your rights under this section does not terminate the
|
430 |
-
licenses of parties who have received copies or rights from you under
|
431 |
-
this License. If your rights have been terminated and not permanently
|
432 |
-
reinstated, you do not qualify to receive new licenses for the same
|
433 |
-
material under section 10.
|
434 |
-
|
435 |
-
9. Acceptance Not Required for Having Copies.
|
436 |
-
|
437 |
-
You are not required to accept this License in order to receive or
|
438 |
-
run a copy of the Program. Ancillary propagation of a covered work
|
439 |
-
occurring solely as a consequence of using peer-to-peer transmission
|
440 |
-
to receive a copy likewise does not require acceptance. However,
|
441 |
-
nothing other than this License grants you permission to propagate or
|
442 |
-
modify any covered work. These actions infringe copyright if you do
|
443 |
-
not accept this License. Therefore, by modifying or propagating a
|
444 |
-
covered work, you indicate your acceptance of this License to do so.
|
445 |
-
|
446 |
-
10. Automatic Licensing of Downstream Recipients.
|
447 |
-
|
448 |
-
Each time you convey a covered work, the recipient automatically
|
449 |
-
receives a license from the original licensors, to run, modify and
|
450 |
-
propagate that work, subject to this License. You are not responsible
|
451 |
-
for enforcing compliance by third parties with this License.
|
452 |
-
|
453 |
-
An "entity transaction" is a transaction transferring control of an
|
454 |
-
organization, or substantially all assets of one, or subdividing an
|
455 |
-
organization, or merging organizations. If propagation of a covered
|
456 |
-
work results from an entity transaction, each party to that
|
457 |
-
transaction who receives a copy of the work also receives whatever
|
458 |
-
licenses to the work the party's predecessor in interest had or could
|
459 |
-
give under the previous paragraph, plus a right to possession of the
|
460 |
-
Corresponding Source of the work from the predecessor in interest, if
|
461 |
-
the predecessor has it or can get it with reasonable efforts.
|
462 |
-
|
463 |
-
You may not impose any further restrictions on the exercise of the
|
464 |
-
rights granted or affirmed under this License. For example, you may
|
465 |
-
not impose a license fee, royalty, or other charge for exercise of
|
466 |
-
rights granted under this License, and you may not initiate litigation
|
467 |
-
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
468 |
-
any patent claim is infringed by making, using, selling, offering for
|
469 |
-
sale, or importing the Program or any portion of it.
|
470 |
-
|
471 |
-
11. Patents.
|
472 |
-
|
473 |
-
A "contributor" is a copyright holder who authorizes use under this
|
474 |
-
License of the Program or a work on which the Program is based. The
|
475 |
-
work thus licensed is called the contributor's "contributor version".
|
476 |
-
|
477 |
-
A contributor's "essential patent claims" are all patent claims
|
478 |
-
owned or controlled by the contributor, whether already acquired or
|
479 |
-
hereafter acquired, that would be infringed by some manner, permitted
|
480 |
-
by this License, of making, using, or selling its contributor version,
|
481 |
-
but do not include claims that would be infringed only as a
|
482 |
-
consequence of further modification of the contributor version. For
|
483 |
-
purposes of this definition, "control" includes the right to grant
|
484 |
-
patent sublicenses in a manner consistent with the requirements of
|
485 |
-
this License.
|
486 |
-
|
487 |
-
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
488 |
-
patent license under the contributor's essential patent claims, to
|
489 |
-
make, use, sell, offer for sale, import and otherwise run, modify and
|
490 |
-
propagate the contents of its contributor version.
|
491 |
-
|
492 |
-
In the following three paragraphs, a "patent license" is any express
|
493 |
-
agreement or commitment, however denominated, not to enforce a patent
|
494 |
-
(such as an express permission to practice a patent or covenant not to
|
495 |
-
sue for patent infringement). To "grant" such a patent license to a
|
496 |
-
party means to make such an agreement or commitment not to enforce a
|
497 |
-
patent against the party.
|
498 |
-
|
499 |
-
If you convey a covered work, knowingly relying on a patent license,
|
500 |
-
and the Corresponding Source of the work is not available for anyone
|
501 |
-
to copy, free of charge and under the terms of this License, through a
|
502 |
-
publicly available network server or other readily accessible means,
|
503 |
-
then you must either (1) cause the Corresponding Source to be so
|
504 |
-
available, or (2) arrange to deprive yourself of the benefit of the
|
505 |
-
patent license for this particular work, or (3) arrange, in a manner
|
506 |
-
consistent with the requirements of this License, to extend the patent
|
507 |
-
license to downstream recipients. "Knowingly relying" means you have
|
508 |
-
actual knowledge that, but for the patent license, your conveying the
|
509 |
-
covered work in a country, or your recipient's use of the covered work
|
510 |
-
in a country, would infringe one or more identifiable patents in that
|
511 |
-
country that you have reason to believe are valid.
|
512 |
-
|
513 |
-
If, pursuant to or in connection with a single transaction or
|
514 |
-
arrangement, you convey, or propagate by procuring conveyance of, a
|
515 |
-
covered work, and grant a patent license to some of the parties
|
516 |
-
receiving the covered work authorizing them to use, propagate, modify
|
517 |
-
or convey a specific copy of the covered work, then the patent license
|
518 |
-
you grant is automatically extended to all recipients of the covered
|
519 |
-
work and works based on it.
|
520 |
-
|
521 |
-
A patent license is "discriminatory" if it does not include within
|
522 |
-
the scope of its coverage, prohibits the exercise of, or is
|
523 |
-
conditioned on the non-exercise of one or more of the rights that are
|
524 |
-
specifically granted under this License. You may not convey a covered
|
525 |
-
work if you are a party to an arrangement with a third party that is
|
526 |
-
in the business of distributing software, under which you make payment
|
527 |
-
to the third party based on the extent of your activity of conveying
|
528 |
-
the work, and under which the third party grants, to any of the
|
529 |
-
parties who would receive the covered work from you, a discriminatory
|
530 |
-
patent license (a) in connection with copies of the covered work
|
531 |
-
conveyed by you (or copies made from those copies), or (b) primarily
|
532 |
-
for and in connection with specific products or compilations that
|
533 |
-
contain the covered work, unless you entered into that arrangement,
|
534 |
-
or that patent license was granted, prior to 28 March 2007.
|
535 |
-
|
536 |
-
Nothing in this License shall be construed as excluding or limiting
|
537 |
-
any implied license or other defenses to infringement that may
|
538 |
-
otherwise be available to you under applicable patent law.
|
539 |
-
|
540 |
-
12. No Surrender of Others' Freedom.
|
541 |
-
|
542 |
-
If conditions are imposed on you (whether by court order, agreement or
|
543 |
-
otherwise) that contradict the conditions of this License, they do not
|
544 |
-
excuse you from the conditions of this License. If you cannot convey a
|
545 |
-
covered work so as to satisfy simultaneously your obligations under this
|
546 |
-
License and any other pertinent obligations, then as a consequence you may
|
547 |
-
not convey it at all. For example, if you agree to terms that obligate you
|
548 |
-
to collect a royalty for further conveying from those to whom you convey
|
549 |
-
the Program, the only way you could satisfy both those terms and this
|
550 |
-
License would be to refrain entirely from conveying the Program.
|
551 |
-
|
552 |
-
13. Use with the GNU Affero General Public License.
|
553 |
-
|
554 |
-
Notwithstanding any other provision of this License, you have
|
555 |
-
permission to link or combine any covered work with a work licensed
|
556 |
-
under version 3 of the GNU Affero General Public License into a single
|
557 |
-
combined work, and to convey the resulting work. The terms of this
|
558 |
-
License will continue to apply to the part which is the covered work,
|
559 |
-
but the special requirements of the GNU Affero General Public License,
|
560 |
-
section 13, concerning interaction through a network will apply to the
|
561 |
-
combination as such.
|
562 |
-
|
563 |
-
14. Revised Versions of this License.
|
564 |
-
|
565 |
-
The Free Software Foundation may publish revised and/or new versions of
|
566 |
-
the GNU General Public License from time to time. Such new versions will
|
567 |
-
be similar in spirit to the present version, but may differ in detail to
|
568 |
-
address new problems or concerns.
|
569 |
-
|
570 |
-
Each version is given a distinguishing version number. If the
|
571 |
-
Program specifies that a certain numbered version of the GNU General
|
572 |
-
Public License "or any later version" applies to it, you have the
|
573 |
-
option of following the terms and conditions either of that numbered
|
574 |
-
version or of any later version published by the Free Software
|
575 |
-
Foundation. If the Program does not specify a version number of the
|
576 |
-
GNU General Public License, you may choose any version ever published
|
577 |
-
by the Free Software Foundation.
|
578 |
-
|
579 |
-
If the Program specifies that a proxy can decide which future
|
580 |
-
versions of the GNU General Public License can be used, that proxy's
|
581 |
-
public statement of acceptance of a version permanently authorizes you
|
582 |
-
to choose that version for the Program.
|
583 |
-
|
584 |
-
Later license versions may give you additional or different
|
585 |
-
permissions. However, no additional obligations are imposed on any
|
586 |
-
author or copyright holder as a result of your choosing to follow a
|
587 |
-
later version.
|
588 |
-
|
589 |
-
15. Disclaimer of Warranty.
|
590 |
-
|
591 |
-
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
592 |
-
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
593 |
-
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
594 |
-
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
595 |
-
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
596 |
-
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
597 |
-
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
598 |
-
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
599 |
-
|
600 |
-
16. Limitation of Liability.
|
601 |
-
|
602 |
-
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
603 |
-
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
604 |
-
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
605 |
-
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
606 |
-
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
607 |
-
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
608 |
-
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
609 |
-
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
610 |
-
SUCH DAMAGES.
|
611 |
-
|
612 |
-
17. Interpretation of Sections 15 and 16.
|
613 |
-
|
614 |
-
If the disclaimer of warranty and limitation of liability provided
|
615 |
-
above cannot be given local legal effect according to their terms,
|
616 |
-
reviewing courts shall apply local law that most closely approximates
|
617 |
-
an absolute waiver of all civil liability in connection with the
|
618 |
-
Program, unless a warranty or assumption of liability accompanies a
|
619 |
-
copy of the Program in return for a fee.
|
620 |
-
|
621 |
-
END OF TERMS AND CONDITIONS
|
622 |
-
|
623 |
-
How to Apply These Terms to Your New Programs
|
624 |
-
|
625 |
-
If you develop a new program, and you want it to be of the greatest
|
626 |
-
possible use to the public, the best way to achieve this is to make it
|
627 |
-
free software which everyone can redistribute and change under these terms.
|
628 |
-
|
629 |
-
To do so, attach the following notices to the program. It is safest
|
630 |
-
to attach them to the start of each source file to most effectively
|
631 |
-
state the exclusion of warranty; and each file should have at least
|
632 |
-
the "copyright" line and a pointer to where the full notice is found.
|
633 |
-
|
634 |
-
<one line to give the program's name and a brief idea of what it does.>
|
635 |
-
Copyright (C) <year> <name of author>
|
636 |
-
|
637 |
-
This program is free software: you can redistribute it and/or modify
|
638 |
-
it under the terms of the GNU General Public License as published by
|
639 |
-
the Free Software Foundation, either version 3 of the License, or
|
640 |
-
(at your option) any later version.
|
641 |
-
|
642 |
-
This program is distributed in the hope that it will be useful,
|
643 |
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
644 |
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
645 |
-
GNU General Public License for more details.
|
646 |
-
|
647 |
-
You should have received a copy of the GNU General Public License
|
648 |
-
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
649 |
-
|
650 |
-
Also add information on how to contact you by electronic and paper mail.
|
651 |
-
|
652 |
-
If the program does terminal interaction, make it output a short
|
653 |
-
notice like this when it starts in an interactive mode:
|
654 |
-
|
655 |
-
<program> Copyright (C) <year> <name of author>
|
656 |
-
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
657 |
-
This is free software, and you are welcome to redistribute it
|
658 |
-
under certain conditions; type `show c' for details.
|
659 |
-
|
660 |
-
The hypothetical commands `show w' and `show c' should show the appropriate
|
661 |
-
parts of the General Public License. Of course, your program's commands
|
662 |
-
might be different; for a GUI interface, you would use an "about box".
|
663 |
-
|
664 |
-
You should also get your employer (if you work as a programmer) or school,
|
665 |
-
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
666 |
-
For more information on this, and how to apply and follow the GNU GPL, see
|
667 |
-
<http://www.gnu.org/licenses/>.
|
668 |
-
|
669 |
-
The GNU General Public License does not permit incorporating your program
|
670 |
-
into proprietary programs. If your program is a subroutine library, you
|
671 |
-
may consider it more useful to permit linking proprietary applications with
|
672 |
-
the library. If this is what you want to do, use the GNU Lesser General
|
673 |
-
Public License instead of this License. But first, please read
|
674 |
-
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
readme.txt
CHANGED
@@ -1,24 +1,28 @@
|
|
1 |
-
===
|
2 |
-
Contributors:
|
3 |
-
Tags:
|
4 |
Requires at least: 3.4
|
5 |
Tested up to: 4.8
|
6 |
Stable Tag: trunk
|
7 |
-
License:
|
8 |
-
License URI: http://www.gnu.org/licenses/gpl-
|
9 |
|
10 |
-
Photo Gallery Plugin for WordPress
|
11 |
|
12 |
== Description ==
|
13 |
|
14 |
-
|
15 |
|
16 |
-
|
17 |
-
|
18 |
-
* [
|
19 |
-
* [
|
20 |
-
* [
|
21 |
-
* [
|
|
|
|
|
|
|
|
|
22 |
|
23 |
[**WordPress Photo Gallery Plugin**](https://gallery-bank.tech-banker.com/) is one of the Best WordPress Gallery Plugin designed to create elegant and beautiful **photo gallery** and **photo albums** using **Masonry Gallery Layouts**, **Thumbnail Gallery Layouts**, **Compact Album Layouts** and **Extended Album Layouts** along with Special Effects and Animation Effects.
|
24 |
|
@@ -26,82 +30,98 @@ Photo Gallery Plugin for WordPress can be used to create a gallery widget, image
|
|
26 |
|
27 |
**WordPress Photo Gallery Plugin** provides a powerful photo gallery engine for uploading and managing photo albums of images, with the ability to batch upload, delete, rearrange and sort images.
|
28 |
|
29 |
-
It is the best
|
30 |
-
|
31 |
-
There are also Premium Editions for the
|
32 |
-
|
33 |
-
Gallery Bank
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
* [Thumbnail Gallery](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-
|
40 |
-
* [Thumbnail
|
41 |
-
* [Thumbnail
|
42 |
-
* [Thumbnail
|
43 |
-
* [Thumbnail
|
44 |
-
* [Thumbnail
|
45 |
-
* [Thumbnail
|
46 |
-
* [Thumbnail
|
47 |
-
* [
|
48 |
-
* [
|
49 |
-
* [Masonry Gallery](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-
|
50 |
-
* [Masonry Gallery with WordPress Gallery
|
51 |
-
* [Masonry Gallery with
|
52 |
-
* [Masonry Gallery with
|
53 |
-
* [Masonry Gallery with
|
54 |
-
* [Masonry Gallery with
|
55 |
-
* [Masonry Gallery with
|
56 |
-
* [Masonry Gallery with
|
57 |
-
* [
|
58 |
-
* [
|
59 |
-
* [
|
60 |
-
* [
|
61 |
-
* [
|
62 |
-
* [
|
63 |
-
* [
|
64 |
-
* [
|
65 |
-
* [
|
66 |
-
* [
|
67 |
-
* [Image Browser
|
68 |
-
* [Image Browser
|
69 |
-
* [Image Browser
|
70 |
-
* [Image Browser
|
71 |
-
* [Image Browser
|
72 |
-
* [Image Browser
|
73 |
-
* [
|
74 |
-
* [
|
75 |
-
* [Justified Grid Gallery](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-
|
76 |
-
* [Justified Grid
|
77 |
-
* [Justified Grid
|
78 |
-
* [Justified Grid with
|
79 |
-
* [Justified Grid with
|
80 |
-
* [Justified Grid with
|
81 |
-
* [Justified Grid with
|
82 |
-
* [Justified Grid
|
83 |
-
* [
|
84 |
-
* [
|
85 |
-
* [Blog Style Gallery](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-
|
86 |
-
* [Blog Style
|
87 |
-
* [Blog Style
|
88 |
-
* [Blog Style
|
89 |
-
* [Blog Style
|
90 |
-
* [Blog Style
|
91 |
-
* [Blog Style
|
92 |
-
* [Blog Style
|
93 |
-
* [
|
94 |
-
* [
|
95 |
-
* [
|
96 |
-
* [
|
97 |
-
|
98 |
-
**[
|
99 |
-
|
100 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
|
102 |
* 100% Responsive.
|
103 |
* User Friendly Admin Panel to add Galleries.
|
104 |
-
* Create & Manage unlimited amount of image galleries on your
|
105 |
* Upload unlimited amount of photos/images in your gallery.
|
106 |
* Images uploaded are stored in a separate directory to avoid mess up with inbuilt wp-uploads folder.
|
107 |
* Photo Metadata is fetched from each image and populates to Title, Description, Alt Text Fields too.
|
@@ -120,7 +140,7 @@ FooBox was the first lightbox to take responsive layout seriously. Not only does
|
|
120 |
|
121 |
Take your media gallery to the next level with [Premium Editions](https://gallery-bank.tech-banker.com/) which gives you 200+ features.
|
122 |
|
123 |
-
|
124 |
|
125 |
* All Standard Edition Features as mentioned above.
|
126 |
* Supports Thumbnail, Masonry, Slideshow, Image Browser, Justified Grid, Blog Style, Compact Album, Extended Album.
|
@@ -155,1330 +175,2241 @@ Take your media gallery to the next level with [Premium Editions](https://galler
|
|
155 |
* Customize Nivo Lightbox - General Settings, Image Title, Image Description.
|
156 |
* Global Options - Configure Thumbnail Dimensions, Right Click Protection, Language Direction
|
157 |
* Lazy Load Settings - Customize Lazy Load Settings for loading of Images in Galleries and Albums.
|
158 |
-
* Filter Settings - Customize Filter Settings to create Filterable Gallery for your website/blog.
|
159 |
* Order By Settings - Customize Order By Button.
|
160 |
* Search Box Settings - Customize Search Button to make your galleries also searchable.
|
161 |
* Page Navigation Settings - Customize Page Navigation to make your galleries to divide into pages.
|
162 |
* Watermark Settings - Customize Watermark Settings to make your galleries enabled with watermarking.
|
163 |
-
* Advertisement Settings - Customize Advertisement Settings to make your
|
164 |
* WordPress Gallery Shortcode Wizard for Thumbnail Gallery, Masonry Gallery, Slideshow Gallery, Image Browser Gallery, Justified Grid Gallery Gallery, Blog Style Gallery.
|
165 |
-
* Roles and Capabilities to let you choose what
|
166 |
* Awesome **grid gallery** layouts using compact album.
|
167 |
* Awesome **filterable portfolio** using tags in all layouts.
|
|
|
168 |
* 24/7 Technical Support
|
169 |
|
170 |
Visit [here](https://gallery-bank.tech-banker.com/) to upgrade to Premium Editions now.
|
171 |
|
172 |
-
|
|
|
|
|
173 |
|
174 |
It is being designed keeping in mind the optimal viewing experience across a wide range of devices. At the same time it is coded to work also on old browsers! Whether your visitors are on a Mobile, Laptop or Desktop your Gallery will look great on any device.
|
175 |
|
176 |
-
|
177 |
|
178 |
You can adds unlimited number of images in a single gallery. As you have created a number of image galleries, you can add as many short-codes on your page as you need.
|
179 |
|
180 |
-
|
181 |
|
182 |
Easily Configuration settings for Thumbnails, Album Covers, Different Lightboxes, Slideshow, Pagination etc. for customizing your albums as per your website's look & feel.
|
183 |
|
184 |
-
|
185 |
|
186 |
-
Create stunning, 100% responsive, SEO-friendly **photo gallery** in minutes. It provides easy-to-manage functionality to rename, upload, copy, add and remove images. Gallery Bank uses also WordPress in-built media uploader as a feature to upload images.
|
187 |
|
188 |
-
|
189 |
|
190 |
It allows you to add multiple images with multiple effects. Image Gallery option allows you to customize the settings for views of images.
|
191 |
|
192 |
-
|
193 |
|
194 |
-
With Gallery Bank, you can implement Masonry Layout. Masonry layouts are a great choice for creating galleries using images with varied dimensions. It works by placing elements in optimal position based on available vertical space.
|
195 |
|
196 |
-
|
197 |
|
198 |
Lightbox will appear when you click on the image and it will help you show more detail about your pictures with full description and full size of image.
|
199 |
|
|
|
|
|
|
|
|
|
200 |
== Frequently Asked Questions ==
|
201 |
|
202 |
-
= How to
|
203 |
|
204 |
-
|
205 |
-
* Once you reach the page, you would need to click on "Gallery Title & Description" tab at top of the page.
|
206 |
-
* Gallery Title : In this field, you would need to provide "Gallery Title".
|
207 |
-
* Gallery Description : In this field, you would need to provide "Gallery Description". It would be displayed when using short-code.
|
208 |
-
* In order to upload images to the gallery, you would need to click on "Upload Images" tab at top of the page.
|
209 |
-
* You can upload images from your Local System, WP Media Manager or FTP.
|
210 |
-
* Once everything is being setup, you would need to click on "Save Changes" button located at bottom of the screen to save the settings.
|
211 |
|
212 |
-
|
213 |
|
214 |
-
|
|
|
|
|
|
|
|
|
215 |
|
216 |
-
|
217 |
|
218 |
-
|
219 |
|
220 |
-
=
|
221 |
|
222 |
-
|
223 |
|
224 |
-
|
|
|
|
|
225 |
|
226 |
-
|
227 |
|
228 |
-
|
229 |
-
* Wordpress 3.1+
|
230 |
-
* PHP 5.x
|
231 |
-
* MySQL 5.x
|
232 |
|
233 |
-
|
234 |
|
235 |
-
|
236 |
-
2. Search for 'Gallery Bank'
|
237 |
-
3. Click 'Install Now'
|
238 |
-
4. Activate the Plugin on the Plugin dashboard
|
239 |
|
240 |
-
=
|
241 |
|
242 |
-
|
243 |
-
2. Navigate to the 'Upload' area
|
244 |
-
3. Select `gallery-bank.zip` from your computer
|
245 |
-
4. Click 'Install Now'
|
246 |
-
5. Activate the Plugin in the Plugin dashboard
|
247 |
|
248 |
-
|
249 |
|
250 |
-
|
251 |
-
2. Extract the `gallery-bank` directory to your computer
|
252 |
-
3. Upload the `gallery-bank` directory to the `/wp-content/plugins/` directory
|
253 |
-
4. Activate the Plugin in the Plugin's dashboard
|
254 |
|
255 |
-
**
|
256 |
|
257 |
-
|
258 |
-
2. Right-click on the folder and select Compress.
|
259 |
-
3. Now you have a newly created .zip file which can be installed as described here.
|
260 |
|
261 |
-
|
262 |
|
263 |
-
=
|
264 |
-
* Wordpress 3.3+
|
265 |
-
* PHP 5.x
|
266 |
-
* MySQL 5.x
|
267 |
|
268 |
-
|
269 |
|
270 |
-
|
271 |
|
272 |
-
|
273 |
-
2. Add Gallery - Gallery Title & Description
|
274 |
-
3. Add Gallery - Upload Images
|
275 |
-
4. Add Gallery - Upload Images - WP Media Manager
|
276 |
-
5. Add Gallery - Upload Images - Upload From FTP
|
277 |
-
6. Sort Galleries
|
278 |
-
7. Manage Albums
|
279 |
-
8. Add Album - Album Title & Description
|
280 |
-
9. Add Album - Upload Albums
|
281 |
-
10. Sort Albums
|
282 |
-
11. Manage Tags
|
283 |
-
12. Add Tag
|
284 |
-
13. Layout Settings - Thumbnail Gallery - Thumbnails
|
285 |
-
14. Layout Settings - Thumbnail Gallery - Gallery Title
|
286 |
-
15. Layout Settings - Thumbnail Gallery - Gallery Description
|
287 |
-
16. Layout Settings - Thumbnail Gallery - Thumbnail Title
|
288 |
-
17. Layout Settings - Thumbnail Gallery - Thumbnail Description
|
289 |
-
18. Layout Settings - Masonry Gallery - Thumbnails
|
290 |
-
19. Layout Settings - Masonry Gallery - Gallery Title
|
291 |
-
20. Layout Settings - Masonry Gallery - Gallery Description
|
292 |
-
21. Layout Settings - Masonry Gallery - Thumbnail Title
|
293 |
-
22. Layout Settings - Masonry Gallery - Thumbnail Description
|
294 |
-
23. Layout Settings - Slideshow Gallery - Thumbnails
|
295 |
-
24. Layout Settings - Slideshow Gallery - Gallery Title
|
296 |
-
25. Layout Settings - Slideshow Gallery - Gallery Description
|
297 |
-
26. Layout Settings - Slideshow Gallery - Thumbnail Title
|
298 |
-
27. Layout Settings - Slideshow Gallery - Thumbnail Description
|
299 |
-
28. Layout Settings - Image Browser Gallery - Thumbnails
|
300 |
-
29. Layout Settings - Image Browser Gallery - Gallery Title
|
301 |
-
30. Layout Settings - Image Browser Gallery - Gallery Description
|
302 |
-
31. Layout Settings - Image Browser Gallery - Thumbnail Title
|
303 |
-
32. Layout Settings - Image Browser Gallery - Thumbnail Description
|
304 |
-
33. Layout Settings - Justified Grid Gallery - Thumbnails
|
305 |
-
34. Layout Settings - Justified Grid Gallery - Gallery Title
|
306 |
-
35. Layout Settings - Justified Grid Gallery - Gallery Description
|
307 |
-
36. Layout Settings - Justified Grid Gallery - Thumbnail Title
|
308 |
-
37. Layout Settings - Justified Grid Gallery - Thumbnail Description
|
309 |
-
38. Layout Settings - Blog Style Gallery - Thumbnails
|
310 |
-
39. Layout Settings - Blog Style Gallery - Gallery Title
|
311 |
-
40. Layout Settings - Blog Style Gallery - Gallery Description
|
312 |
-
41. Layout Settings - Blog Style Gallery - Thumbnail Title
|
313 |
-
42. Layout Settings - Blog Style Gallery - Thumbnail Description
|
314 |
-
43. Layout Settings - Compact Album Layout - Thumbnails
|
315 |
-
44. Layout Settings - Compact Album Layout - Album Title
|
316 |
-
45. Layout Settings - Compact Album Layout - Album Description
|
317 |
-
46. Layout Settings - Compact Album Layout - Gallery Title
|
318 |
-
47. Layout Settings - Compact Album Layout - Gallery Description
|
319 |
-
48. Layout Settings - Compact Album Layout - Buttons
|
320 |
-
49. Layout Settings - Extended Album Layout - Thumbnails
|
321 |
-
50. Layout Settings - Extended Album Layout - Album Title
|
322 |
-
51. Layout Settings - Extended Album Layout - Album Description
|
323 |
-
52. Layout Settings - Extended Album Layout - Gallery Title
|
324 |
-
53. Layout Settings - Extended Album Layout - Gallery Description
|
325 |
-
54. Layout Settings - Extended Album Layout - Buttons
|
326 |
-
55. Layout Settings - Custom CSS
|
327 |
-
56. Lightboxes - Lightcase - Settings
|
328 |
-
57. Lightboxes - Lightcase - Image Title
|
329 |
-
58. Lightboxes - Lightcase - Image Description
|
330 |
-
59. Lightboxes - Fancy Box - Settings
|
331 |
-
60. Lightboxes - Fancy Box - Image Title
|
332 |
-
61. Lightboxes - Fancy Box - Image Description
|
333 |
-
62. Lightboxes - Color Box - Settings
|
334 |
-
63. Lightboxes - Color Box - Image Title
|
335 |
-
64. Lightboxes - Color Box - Image Description
|
336 |
-
65. Lightboxes - Foo Box Free Edition - Settings
|
337 |
-
66. Lightboxes - Foo Box Free Edition - Image Title
|
338 |
-
67. Lightboxes - Foo Box Free Edition - Image Description
|
339 |
-
68. Lightboxes - Nivo Lightbox - Settings
|
340 |
-
69. Lightboxes - Nivo Lightbox - Image Title
|
341 |
-
70. Lightboxes - Nivo Lightbox - Image Description
|
342 |
-
71. General Settings - Global Options
|
343 |
-
72. General Settings - Lazy Load Settings
|
344 |
-
73. General Settings - Filter Settings
|
345 |
-
74. General Settings - Order By Settings
|
346 |
-
75. General Settings - Search Box Settings
|
347 |
-
76. General Settings - Page Navigation
|
348 |
-
77. General Settings - Watermark Settings - Text
|
349 |
-
78. General Settings - Watermark Settings - Image
|
350 |
-
79. General Settings - Advertisement - Text
|
351 |
-
80. General Settings - Advertisement - Image
|
352 |
-
81. Shortcodes - Thumbnail Gallery
|
353 |
-
82. Shortcodes - Masonry Gallery
|
354 |
-
83. Shortcodes - Slideshow Gallery
|
355 |
-
84. Shortcodes - Image Browser Gallery
|
356 |
-
85. Shortcodes - Justified Grid Gallery
|
357 |
-
86. Shortcodes - Blog Style Gallery
|
358 |
-
87. Other Settings
|
359 |
-
88. Roles & Capabilities
|
360 |
-
89. Feature Requests
|
361 |
-
90. System Information
|
362 |
|
363 |
-
|
364 |
|
365 |
-
|
366 |
|
367 |
-
|
368 |
-
* TWEAK: PLUploader updated to latest release
|
369 |
-
* TWEAK: Jquery Validator updated to latest release
|
370 |
-
* TWEAK: Jquery Modal updated to latest release
|
371 |
-
* FIX: Major Bugs
|
372 |
|
373 |
-
|
374 |
|
375 |
-
|
376 |
-
* FIX: Code Optimized
|
377 |
-
* FIX: Obsolete Code Removed
|
378 |
-
* FIX: Headers Output Bug
|
379 |
|
380 |
-
|
381 |
|
382 |
-
|
383 |
-
* TWEAK: New Lightbox Option Added
|
384 |
-
* FIX: Code Optimized
|
385 |
|
386 |
-
=
|
387 |
|
388 |
-
|
389 |
-
* FIX: Major Bugs
|
390 |
-
* FIX: Install Script Code Optimized
|
391 |
-
* FIX: Wizard Page Error
|
392 |
-
* FIX: Code Optimized
|
393 |
|
394 |
-
|
395 |
|
396 |
-
|
397 |
-
* TWEAK: Layouts Changed
|
398 |
-
* TWEAK: Layouts Changed
|
399 |
-
* TWEAK: Front End Complete Revamped
|
400 |
-
* TWEAK: Database Optimized
|
401 |
-
* TWEAK: Security Patch Added
|
402 |
-
* TWEAK: Modified JS & CSS Functions to only call on own Plugin Page
|
403 |
-
* TWEAK: Layouts Changed
|
404 |
-
* TWEAK: Obsolete Code Deleted
|
405 |
-
* TWEAK: CSS Improved
|
406 |
|
|
|
407 |
|
408 |
-
|
409 |
|
410 |
-
|
411 |
-
* FIX: Proper Sanitization, Escaping, Validation of all Post Calls
|
412 |
-
* FIX: Obsolete Code Removed
|
413 |
-
* FIX: Code Optimized
|
414 |
|
415 |
-
|
416 |
|
417 |
-
|
418 |
-
* FIX: Code Optimized
|
419 |
|
420 |
-
|
421 |
|
422 |
-
|
423 |
-
* FIX: Removal of all function_exists, class_exists, typeof from all the files.
|
424 |
-
* FIX: Uninstall File moved to root folder and changes done as per wordpress guidelines.
|
425 |
-
* FIX: Error Reporting in file Removed
|
426 |
-
* FIX: Auto Updates Removed
|
427 |
-
* FIX: Curl Calls Removed
|
428 |
|
429 |
-
|
430 |
|
431 |
-
|
432 |
-
* FIX: Responsive Layouts
|
433 |
|
434 |
-
|
435 |
|
436 |
-
|
437 |
-
* TWEAK: Wizard Page Added
|
438 |
|
439 |
-
|
440 |
|
441 |
-
|
442 |
-
* FIX: Responsive Layouts
|
443 |
|
444 |
-
|
445 |
|
446 |
-
|
447 |
-
* TWEAK: INI Default Values Set
|
448 |
-
* TWEAK: Compatibility with 4.7.3
|
449 |
|
450 |
-
|
451 |
|
452 |
-
|
453 |
-
* TRANSLATION: Translation Constant Bug
|
454 |
|
455 |
-
|
456 |
|
457 |
-
|
458 |
-
* TWEAK: Unused Files removed
|
459 |
-
* TWEAK: Code Optimized
|
460 |
-
* TRANSLATION: Translation File Updated
|
461 |
|
462 |
-
|
463 |
|
464 |
-
|
465 |
|
466 |
-
|
467 |
|
468 |
-
|
469 |
|
470 |
-
|
471 |
|
472 |
-
|
473 |
|
474 |
-
|
475 |
|
476 |
-
|
477 |
|
478 |
-
|
479 |
|
480 |
-
|
481 |
-
* TWEAK: Code Optimized
|
482 |
|
483 |
-
|
484 |
|
485 |
-
|
486 |
|
487 |
-
=
|
488 |
|
489 |
-
|
490 |
|
491 |
-
|
|
|
|
|
492 |
|
493 |
-
|
494 |
|
495 |
-
|
496 |
|
497 |
-
|
498 |
|
499 |
-
|
500 |
|
501 |
-
|
502 |
-
* TWEAK: Pricing Table Changed
|
503 |
-
* TWEAK: Code Optimized
|
504 |
|
505 |
-
|
506 |
|
507 |
-
|
508 |
-
* TWEAK: Other Services Content Updated
|
509 |
-
* TWEAK: Pricing Table Changed
|
510 |
|
511 |
-
|
512 |
|
513 |
-
|
514 |
-
* TWEAK: Pricing Table Changed
|
515 |
|
516 |
-
|
517 |
|
518 |
-
|
519 |
-
* TWEAK: Pricing Table Changed
|
520 |
|
521 |
-
|
522 |
|
523 |
-
|
524 |
|
525 |
-
|
526 |
|
527 |
-
|
528 |
|
529 |
-
|
530 |
|
531 |
-
|
532 |
|
533 |
-
|
534 |
|
535 |
-
|
536 |
|
537 |
-
|
538 |
|
539 |
-
|
540 |
|
541 |
-
=
|
542 |
|
543 |
-
|
544 |
-
* FIX: Few CSS Issues
|
545 |
|
546 |
-
|
547 |
|
548 |
-
|
549 |
|
550 |
-
|
551 |
|
552 |
-
|
553 |
|
554 |
-
|
555 |
|
556 |
-
|
557 |
-
* TWEAK: Code Optimized
|
558 |
|
559 |
-
|
560 |
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
568 |
|
569 |
-
|
570 |
|
571 |
-
|
572 |
|
573 |
-
|
574 |
|
575 |
-
|
576 |
|
577 |
-
|
578 |
|
579 |
-
|
580 |
|
581 |
-
|
582 |
|
583 |
-
|
584 |
|
585 |
-
|
586 |
|
587 |
-
|
588 |
|
589 |
-
|
590 |
|
591 |
-
|
592 |
|
593 |
-
|
594 |
|
595 |
-
|
596 |
|
597 |
-
|
598 |
|
599 |
-
|
600 |
|
601 |
-
|
602 |
|
603 |
-
|
604 |
|
605 |
-
|
606 |
|
607 |
-
|
608 |
|
609 |
-
|
610 |
|
611 |
-
|
612 |
|
613 |
-
|
614 |
|
615 |
-
|
616 |
|
617 |
-
|
618 |
|
619 |
-
|
620 |
|
621 |
-
|
622 |
|
623 |
-
|
624 |
|
625 |
-
|
626 |
|
627 |
-
|
628 |
|
629 |
-
|
630 |
|
631 |
-
|
632 |
|
633 |
-
|
634 |
|
635 |
-
|
636 |
|
637 |
-
|
638 |
|
639 |
-
|
640 |
|
641 |
-
|
642 |
|
643 |
-
|
644 |
|
645 |
-
|
646 |
|
647 |
-
|
648 |
|
649 |
-
|
650 |
|
651 |
-
|
652 |
|
653 |
-
|
654 |
|
655 |
-
|
656 |
|
657 |
-
|
658 |
|
659 |
-
|
660 |
|
661 |
-
|
662 |
|
663 |
-
|
664 |
|
665 |
-
|
666 |
|
667 |
-
|
668 |
|
669 |
-
|
670 |
|
671 |
-
|
672 |
|
673 |
-
|
674 |
|
675 |
-
|
676 |
-
* TWEAK: 2.2.2 Version used.
|
677 |
|
678 |
-
|
679 |
|
680 |
-
|
681 |
-
* TWEAK: Changed variables to avoid confliction with Next Gen and Contact Bank plugins.
|
682 |
-
* FIX: Prettyphoto XSS Security Issue.
|
683 |
|
684 |
-
|
685 |
|
686 |
-
|
687 |
|
688 |
-
|
689 |
|
690 |
-
|
691 |
|
692 |
-
|
693 |
|
694 |
-
|
695 |
|
696 |
-
|
697 |
|
698 |
-
|
699 |
|
700 |
-
|
701 |
|
702 |
-
|
703 |
|
704 |
-
|
705 |
|
706 |
-
|
707 |
|
708 |
-
|
709 |
|
710 |
-
|
711 |
|
712 |
-
|
713 |
|
714 |
-
|
715 |
-
* TWEAK: Premium Editions Section Updated.
|
716 |
|
717 |
-
|
718 |
|
719 |
-
|
720 |
|
721 |
-
|
722 |
|
723 |
-
|
724 |
|
725 |
-
|
726 |
|
727 |
-
|
728 |
-
* FIX: Minor CSS Issues.
|
729 |
|
730 |
-
|
731 |
|
732 |
-
|
733 |
-
* FIX: Minor CSS Issues.
|
734 |
|
735 |
-
|
736 |
|
737 |
-
|
738 |
|
739 |
-
=
|
740 |
|
741 |
-
|
742 |
-
* FIX: Few Minor Issues
|
743 |
|
744 |
-
|
745 |
|
746 |
-
|
747 |
-
* FIX: Few Minor Issues
|
748 |
|
749 |
-
|
750 |
|
751 |
-
|
752 |
|
753 |
-
|
754 |
|
755 |
-
|
756 |
-
* TRANSLATION: Languages Updated.
|
757 |
|
758 |
-
|
759 |
|
760 |
-
|
761 |
|
762 |
-
|
763 |
|
764 |
-
|
765 |
-
* FIX: Minor Issues.
|
766 |
|
767 |
-
|
768 |
|
769 |
-
|
770 |
|
771 |
-
|
772 |
|
773 |
-
|
774 |
-
* TWEAK: Premium Editions Section Updated.
|
775 |
|
776 |
-
|
777 |
|
778 |
-
|
779 |
-
* TWEAK: Other Services Section Updated.
|
780 |
-
* TWEAK: Premium Editions Section Updated.
|
781 |
|
782 |
-
|
783 |
|
784 |
-
|
785 |
|
786 |
-
|
787 |
|
788 |
-
|
789 |
|
790 |
-
|
791 |
|
792 |
-
|
793 |
-
* TWEAK: Shortcode Editor Redesigned.
|
794 |
|
795 |
-
|
796 |
|
797 |
-
|
798 |
|
799 |
-
|
800 |
|
801 |
-
|
802 |
|
803 |
-
|
804 |
|
805 |
-
|
806 |
|
807 |
-
|
808 |
|
809 |
-
|
810 |
-
* TWEAK: Udpated Po & Mo Files for all Languages.
|
811 |
-
* TRANSLATION: Added New Languages
|
812 |
|
813 |
-
|
814 |
|
815 |
-
|
816 |
|
817 |
-
|
818 |
|
819 |
-
|
820 |
|
821 |
-
|
822 |
|
823 |
-
|
824 |
-
* FIX: Layout issues.
|
825 |
-
* FIX: White spacing issue.
|
826 |
-
* TWEAK: Unset plugin update scheduler on plugin uninstall.
|
827 |
|
828 |
-
|
829 |
|
830 |
-
|
831 |
-
* FIX: Code for Plugins using Versions prior to 4.0
|
832 |
|
833 |
-
|
834 |
|
835 |
-
|
836 |
-
* FIX: Menus
|
837 |
-
* FEATURE: Implemented New Feature - Automatic Plugin Update Enable/Disable.
|
838 |
|
839 |
-
|
840 |
|
841 |
-
|
842 |
-
* FEATURE: New Uploader Introduced.
|
843 |
-
* FEATURE: New Layout Introduced for uploader.
|
844 |
-
* TWEAK: Thumbs View in Uploader.
|
845 |
-
* TWEAK: Add, Edit Gallery Layout changed.
|
846 |
-
* TWEAK: Updated JS files.
|
847 |
-
* TRANSLATION: Slovenian Language updated.
|
848 |
|
849 |
-
|
850 |
|
851 |
-
|
852 |
-
* TRANSLATION: Japanese Language updated.
|
853 |
|
854 |
-
|
855 |
|
856 |
-
|
857 |
|
858 |
-
|
859 |
|
860 |
-
|
861 |
|
862 |
-
|
863 |
|
864 |
-
|
865 |
|
866 |
-
|
867 |
|
868 |
-
|
869 |
-
* FIX: Issue Related to Galleries Display.
|
870 |
|
871 |
-
|
872 |
|
873 |
-
|
874 |
|
875 |
-
|
876 |
|
877 |
-
|
878 |
|
879 |
-
|
880 |
|
881 |
-
|
882 |
|
883 |
-
=
|
884 |
|
885 |
-
|
886 |
|
887 |
-
|
888 |
|
889 |
-
|
890 |
-
* TWEAK: Added Compatibility with 4.0.1 WordPress
|
891 |
-
* TWEAK: Updated Pricing Table
|
892 |
|
893 |
-
|
894 |
|
895 |
-
|
896 |
-
* TWEAK: Optimized Code
|
897 |
|
898 |
-
|
899 |
|
900 |
-
|
901 |
-
* TWEAK: Updated Css
|
902 |
-
* TWEAK: Optimized Code
|
903 |
|
904 |
-
|
905 |
|
906 |
-
|
907 |
-
* TWEAK: Updated Css
|
908 |
-
* TWEAK: Updated Our Services Section
|
909 |
-
* TWEAK: Optimized Code
|
910 |
-
* TWEAK: Removed unwanted Files
|
911 |
|
912 |
-
|
913 |
|
914 |
-
|
915 |
-
* FIX: Js Conflictions
|
916 |
-
* TWEAK: Readme.txt Updated
|
917 |
|
918 |
-
|
919 |
|
920 |
-
|
921 |
-
* TWEAK: Readme.txt Changed as per New Website
|
922 |
-
* TWEAK: Recommended Section Added
|
923 |
-
* TWEAK: Other Services Section Added
|
924 |
-
* TWEAK: Pricing Section Updated
|
925 |
-
* TWEAK: Major Release before 4.0 update
|
926 |
|
|
|
927 |
|
928 |
-
|
929 |
|
930 |
-
|
931 |
-
* FIX: Overlapping Masonry Gallery Layout
|
932 |
|
933 |
-
|
934 |
|
935 |
-
|
936 |
|
937 |
-
|
938 |
|
939 |
-
|
940 |
|
941 |
-
|
942 |
|
943 |
-
|
944 |
-
* TWEAK: Banner Updated
|
945 |
|
946 |
-
|
947 |
|
948 |
-
|
949 |
|
950 |
-
|
951 |
|
952 |
-
|
953 |
|
954 |
-
|
955 |
|
956 |
-
|
957 |
-
* TRANSLATION: Updated Existing Language - Indonesian
|
958 |
-
* FIX: Roles Issue
|
959 |
|
960 |
-
|
961 |
|
962 |
-
|
963 |
-
* TRANSLATION: Added New Language - Norwegian
|
964 |
-
* TWEAK: Banner Updated
|
965 |
|
966 |
-
|
967 |
|
968 |
-
|
969 |
-
* TRANSLATION: Updated Existing Language - Indonesian
|
970 |
|
971 |
-
|
972 |
|
973 |
-
|
974 |
-
* TWEAK: Banner Updated
|
975 |
|
976 |
-
|
977 |
|
978 |
-
|
979 |
|
980 |
-
|
981 |
|
982 |
-
|
983 |
|
984 |
-
|
985 |
|
986 |
-
|
987 |
|
988 |
-
|
989 |
|
990 |
-
|
991 |
|
992 |
-
|
993 |
|
994 |
-
|
995 |
|
996 |
-
|
997 |
|
998 |
-
|
999 |
|
1000 |
-
|
1001 |
|
1002 |
-
|
1003 |
|
1004 |
-
|
1005 |
|
1006 |
-
|
1007 |
|
1008 |
-
|
1009 |
|
1010 |
-
|
1011 |
|
1012 |
-
|
1013 |
|
1014 |
-
|
1015 |
|
1016 |
-
|
1017 |
|
1018 |
-
|
1019 |
|
1020 |
-
|
1021 |
|
1022 |
-
|
1023 |
|
1024 |
-
|
1025 |
|
1026 |
-
|
1027 |
|
1028 |
-
|
1029 |
|
1030 |
-
|
1031 |
|
1032 |
-
|
1033 |
|
1034 |
-
|
1035 |
|
1036 |
-
|
1037 |
|
1038 |
-
|
1039 |
|
1040 |
-
|
1041 |
|
1042 |
-
|
1043 |
|
1044 |
-
|
1045 |
|
1046 |
-
|
1047 |
|
1048 |
-
|
1049 |
|
1050 |
-
|
1051 |
|
1052 |
-
|
1053 |
|
1054 |
-
|
1055 |
|
1056 |
-
|
1057 |
|
1058 |
-
|
1059 |
|
1060 |
-
|
1061 |
|
1062 |
-
|
1063 |
|
1064 |
-
|
1065 |
|
1066 |
-
|
1067 |
|
1068 |
-
|
1069 |
|
1070 |
-
|
1071 |
|
1072 |
-
|
1073 |
|
1074 |
-
|
1075 |
-
* FIX: Major Issue related to Editing of existing Albums
|
1076 |
|
1077 |
-
|
1078 |
|
1079 |
-
|
1080 |
|
1081 |
-
|
1082 |
|
1083 |
-
|
1084 |
|
1085 |
-
|
1086 |
|
1087 |
-
|
1088 |
|
1089 |
-
|
1090 |
|
1091 |
-
|
1092 |
|
1093 |
-
|
1094 |
|
1095 |
-
|
1096 |
|
1097 |
-
|
1098 |
|
1099 |
-
|
1100 |
|
1101 |
-
|
1102 |
|
1103 |
-
|
1104 |
-
* FIX: Delete Images Issue
|
1105 |
|
1106 |
-
|
1107 |
|
1108 |
-
|
1109 |
|
1110 |
-
|
1111 |
|
1112 |
-
|
1113 |
|
1114 |
-
|
1115 |
|
1116 |
-
|
1117 |
|
1118 |
-
|
1119 |
|
1120 |
-
|
1121 |
-
* TRANSLATION: Language Updated - Russian
|
1122 |
|
1123 |
-
|
1124 |
|
1125 |
-
|
1126 |
|
1127 |
-
|
1128 |
|
1129 |
-
|
1130 |
|
1131 |
-
|
1132 |
|
1133 |
-
|
1134 |
|
1135 |
-
|
1136 |
|
1137 |
-
|
1138 |
-
* TRANSLATION: Language Updated - Hebrew
|
1139 |
|
1140 |
-
|
1141 |
|
1142 |
-
|
1143 |
-
* TWEAK: Help Video Added
|
1144 |
-
* FIX: Issue with Title & Description
|
1145 |
-
* TWEAK: Compatibility with 3.9
|
1146 |
-
* TRANSLATION: Language Updated - Finnish
|
1147 |
|
1148 |
-
|
1149 |
|
1150 |
-
|
1151 |
-
* TWEAK: Compatibility with 3.9
|
1152 |
|
1153 |
-
|
1154 |
|
1155 |
-
|
1156 |
|
1157 |
-
|
1158 |
|
1159 |
-
|
1160 |
-
* TWEAK: Compatiblity with 3.8.3
|
1161 |
|
1162 |
-
|
1163 |
|
1164 |
-
|
1165 |
|
1166 |
-
|
1167 |
|
1168 |
-
|
1169 |
|
1170 |
-
|
1171 |
|
1172 |
-
|
1173 |
|
1174 |
-
|
1175 |
|
1176 |
-
|
1177 |
|
1178 |
-
|
1179 |
|
1180 |
-
|
1181 |
|
1182 |
-
|
1183 |
|
1184 |
-
|
1185 |
|
1186 |
-
|
1187 |
|
1188 |
-
|
1189 |
|
1190 |
-
|
1191 |
|
1192 |
-
|
1193 |
|
1194 |
-
|
1195 |
|
1196 |
-
|
1197 |
-
* TWEAK: Uninstall Hook Removed
|
1198 |
|
1199 |
-
|
1200 |
|
1201 |
-
|
1202 |
-
* FIX: Issue Related to Pl Uploader which stops WP Media
|
1203 |
|
1204 |
-
|
1205 |
|
1206 |
-
|
1207 |
-
* FIX: Few Issue Related to Lightbox
|
1208 |
-
* TWEAK: Request for Translation of New Languages
|
1209 |
|
1210 |
-
|
1211 |
|
1212 |
-
|
1213 |
-
* FIX: Few Issue Related to Lightbox
|
1214 |
-
* TWEAK: Checked If Permissions are Set to Directory
|
1215 |
|
1216 |
-
|
1217 |
|
1218 |
-
|
1219 |
-
* FIX: Few Issue Related to Thumbnails generation
|
1220 |
-
* FIX: Copy Images for existing albums to new folder
|
1221 |
-
* FIX: Problem of loosing images when upgrading to latest versions.
|
1222 |
|
1223 |
-
|
1224 |
|
1225 |
-
|
1226 |
-
* FIX: Few Issue Related to Thumbnails generation
|
1227 |
-
* TWEAK: Removed unwanted stuff
|
1228 |
|
1229 |
-
|
1230 |
|
1231 |
-
|
1232 |
-
* FIX: Few Issue Related to Thumbnails
|
1233 |
-
* TWEAK: Added Warning Permissions Message for Thumbnails
|
1234 |
|
1235 |
-
|
1236 |
|
1237 |
-
|
1238 |
-
* FIX: Few Issues Related to Database Upgrade from Previous versions
|
1239 |
-
* FEATURE: Add New Page to show how to add Shortcodes.
|
1240 |
|
1241 |
-
|
1242 |
|
1243 |
-
|
1244 |
-
* FEATURE: Images are now being saved in itself instead of WP Uploads.
|
1245 |
-
* FEATURE: Thumbs are now created by the system itself rather than any 3rd Party script like Timbthumb etc.
|
1246 |
-
* FEATURE: Improved Performance
|
1247 |
-
* FEATURE: Improved Database to manage
|
1248 |
-
* FEATURE: Indexing on Tables to grab results quickly
|
1249 |
-
* FEATURE: Highly Optimized Code
|
1250 |
-
* FEATURE: Responsive Layout
|
1251 |
-
* FEATURE: Easily adaptable environment for any device.
|
1252 |
-
* FEATURE: Bulk Upload of Images
|
1253 |
-
* FEATURE: New Short-code Wizard
|
1254 |
-
* FEATURE: Url Redirect to redirect on click of an image.
|
1255 |
-
* FEATURE: Compact Albums
|
1256 |
-
* FEATURE: Extended Albums
|
1257 |
-
* FEATURE: Basic Thumbnail Gallery
|
1258 |
-
* FEATURE: Masonry Gallery
|
1259 |
-
* FEATURE: List Album Format
|
1260 |
-
* FEATURE: Grid Album Format
|
1261 |
-
* FEATURE: Images in Row for displaying number of images per row
|
1262 |
-
* FEATURE: Albums in Row for displaying number of albums per row
|
1263 |
-
* FEATURE: Albums in Row for displaying number of albums per row
|
1264 |
-
* FEATURE: Filmstrip Gallery Format(Premium Versions)
|
1265 |
-
* FEATURE: Slideshow Gallery(Premium Versions)
|
1266 |
-
* FEATURE: Special Effects on Images & Albums(Premium Versions)
|
1267 |
-
* FEATURE: Animation Effects on Images & Albums(Premium Versions)
|
1268 |
-
* FEATURE: Bulk Deletion of Images(Premium Versions)
|
1269 |
-
* FEATURE: Sorting of Images(Premium Versions)
|
1270 |
-
* FEATURE: Sorting of Albums(Premium Versions)
|
1271 |
-
* FEATURE: Social Sharing(Premium Versions)
|
1272 |
-
* FEATURE: Commenting on Images(Premium Versions)
|
1273 |
-
* FEATURE: Widgets(Premium Versions)
|
1274 |
-
* FEATURE: Tags for each Image to make Filerable Gallery Album(Premium Versions)
|
1275 |
-
* FEATURE: Bulk Deletion of Albums(Premium Versions)
|
1276 |
-
* FEATURE: Purging Albums and Images(Premium Versions)
|
1277 |
-
* FEATURE: Restore Factory Settings(Premium Versions)
|
1278 |
-
* FEATURE: Global Settings(Premium Versions)
|
1279 |
-
* FEATURE: Thumbnail Settings(Premium Versions)
|
1280 |
-
* FEATURE: Album Settings(Premium Versions)
|
1281 |
-
* FEATURE: Lightbox Settings(Premium Versions)
|
1282 |
-
* FEATURE: Different Lightboxes like FooBox,ColorBox,FancyBox2,Lightbox2,Custom GB Lightbox,Pretty Photo(Premium Versions)
|
1283 |
-
* FEATURE: Pagination(Premium Versions)
|
1284 |
-
* FEATURE: Filter Settings(Premium Versions)
|
1285 |
-
* FEATURE: Roles & Capabilities(Premium Versions)
|
1286 |
-
* FIX: Wrong images displayed when videos added.
|
1287 |
|
1288 |
-
|
1289 |
|
1290 |
-
|
1291 |
|
1292 |
-
|
1293 |
|
1294 |
-
|
1295 |
|
1296 |
-
|
1297 |
|
1298 |
-
|
1299 |
-
* FIX: Issue Related to Front View Albums
|
1300 |
-
* FIX: Issue Related to Front View Albums with Images
|
1301 |
-
* FIX: Issue Related to Css Display
|
1302 |
-
* TWEAK: Lightbox Updated
|
1303 |
|
1304 |
-
|
1305 |
|
1306 |
-
|
1307 |
|
1308 |
-
|
1309 |
|
1310 |
-
|
1311 |
|
1312 |
-
|
1313 |
|
1314 |
-
|
1315 |
-
* FIX: Cross Scripting Issues
|
1316 |
-
* TWEAK: Compatibility with 3.7
|
1317 |
|
1318 |
-
|
1319 |
|
1320 |
-
|
1321 |
-
* TWEAK: Removed Timbthumb
|
1322 |
|
1323 |
-
|
1324 |
|
1325 |
-
|
1326 |
|
1327 |
-
|
1328 |
|
1329 |
-
|
1330 |
|
1331 |
-
|
1332 |
|
1333 |
-
|
1334 |
-
* FIX: Thumbnails issue
|
1335 |
-
* FIX: Timbthumb issue
|
1336 |
|
1337 |
-
|
1338 |
|
1339 |
-
|
1340 |
|
1341 |
-
|
1342 |
|
1343 |
-
|
1344 |
|
1345 |
-
|
1346 |
|
1347 |
-
|
1348 |
|
1349 |
-
|
1350 |
|
1351 |
-
|
1352 |
-
* TRANSLATION: Languages Updated
|
1353 |
|
1354 |
-
|
1355 |
|
1356 |
-
|
1357 |
-
* TRANSLATION: Languages Updated
|
1358 |
-
* FIX: CSS Conflicts.
|
1359 |
|
1360 |
-
|
1361 |
|
1362 |
-
|
1363 |
-
* TWEAK: Documentation Added
|
1364 |
-
* FIX: Js Conflicts
|
1365 |
|
1366 |
-
|
1367 |
|
1368 |
-
|
1369 |
-
* FIX: Browser Conflicts.
|
1370 |
-
* FIX: Js Conflicts.
|
1371 |
|
1372 |
-
=
|
1373 |
|
1374 |
-
|
1375 |
|
1376 |
-
|
1377 |
|
1378 |
-
|
1379 |
-
* FIX: Layout Break in sites.
|
1380 |
-
* FIX: Thumbnails Issue.
|
1381 |
-
* TRANSLATION: Languages updated
|
1382 |
|
1383 |
-
|
1384 |
|
1385 |
-
|
1386 |
-
* Timbthumb 2.8.11 Updated
|
1387 |
|
1388 |
-
|
1389 |
|
1390 |
-
|
1391 |
-
* TWEAK: Introduction of Pagination for Images
|
1392 |
-
* TWEAK: Bulk Delete of Images in Album
|
1393 |
-
* TWEAK: General Settings for all Albums
|
1394 |
-
* TWEAK: Individual Settings for Album
|
1395 |
-
* FEATURE: New Design & Style
|
1396 |
|
1397 |
-
|
1398 |
|
1399 |
-
|
1400 |
|
1401 |
-
|
1402 |
|
1403 |
-
|
1404 |
-
* TRANSLATION: Languages Updated
|
1405 |
|
1406 |
-
|
1407 |
|
1408 |
-
|
1409 |
-
* FIX: Formatting Issue Resolved
|
1410 |
|
1411 |
-
|
1412 |
|
1413 |
-
|
1414 |
-
* FIX: Album Formatting conflict.
|
1415 |
|
1416 |
-
|
1417 |
|
1418 |
-
|
1419 |
-
* FIX: Title Alignment.
|
1420 |
-
* FIX: Images were disorted.
|
1421 |
|
1422 |
-
|
1423 |
|
1424 |
-
|
1425 |
-
* FIX: Title Alignment.
|
1426 |
-
* FIX: Images were disorted.
|
1427 |
|
1428 |
-
|
1429 |
|
1430 |
-
|
1431 |
-
* FIX: Few issues.
|
1432 |
|
1433 |
-
|
1434 |
|
1435 |
-
|
1436 |
|
1437 |
-
|
1438 |
|
1439 |
-
|
1440 |
|
1441 |
-
|
1442 |
|
1443 |
-
|
1444 |
|
1445 |
-
|
1446 |
|
1447 |
-
|
1448 |
-
* TRANSLATION: All Languages updated
|
1449 |
|
1450 |
-
|
1451 |
|
1452 |
-
|
1453 |
-
* TWEAK: Uninstall Hook Removed
|
1454 |
|
1455 |
-
|
1456 |
|
1457 |
-
|
1458 |
-
* FIX: Issue of No Album images shown in case of admin not logged in.
|
1459 |
-
* TWEAK: Uninstall Hook Removed
|
1460 |
|
1461 |
-
|
1462 |
|
1463 |
-
|
1464 |
-
* FIX: Css Conflicts
|
1465 |
-
* TRANSLATION: All Translations Updated
|
1466 |
|
1467 |
-
|
1468 |
|
1469 |
-
|
1470 |
-
* TRANSLATION: Languages Added Russian, Cezch, Hebrew & Serbian
|
1471 |
|
1472 |
-
|
1473 |
|
1474 |
-
|
1475 |
-
* TRANSLATION: Languages Updated
|
1476 |
|
1477 |
-
|
1478 |
|
1479 |
-
|
1480 |
-
* FIX: Thumbnails
|
1481 |
|
1482 |
-
|
1483 |
|
1484 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== Gallery - Photo Gallery - Image Gallery - Photo Albums - WordPress Gallery Plugin ===
|
2 |
+
Contributors: gallery-bank, contact-banker
|
3 |
+
Tags: album, gallery, gallery widget, image gallery, images, masonry gallery, media gallery, photo album, photo gallery, portfolio, responsive gallery, wordpress gallery, wordpress gallery plugin
|
4 |
Requires at least: 3.4
|
5 |
Tested up to: 4.8
|
6 |
Stable Tag: trunk
|
7 |
+
License: GPLv2 or later
|
8 |
+
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
10 |
+
Photo Gallery Plugin for WordPress. Creates elegant responsive gallery widget, image gallery, media gallery, portfolio gallery and albums.
|
11 |
|
12 |
== Description ==
|
13 |
|
14 |
+
### Best Gallery WordPress Plugin
|
15 |
|
16 |
+
https://youtu.be/5tOPGePG9Dw
|
17 |
+
|
18 |
+
* **[Gallery Bank - Responsive Image Gallery Plugin](https://gallery-bank.tech-banker.com/)**
|
19 |
+
* **[Detailed Features - Responsive Photo Gallery Plugin](http://gallery-bank.tech-banker.com/features/detailed-features/)**
|
20 |
+
* **[Front End Demos - Gallery Plugin](https://gallery-bank.tech-banker.com/frontend-demos/)**
|
21 |
+
* **[Back End Demos- Best WordPress Gallery Plugin](https://gallery-bank.tech-banker.com/backend-demos/)**
|
22 |
+
* **[Documentation - Best Photo Gallery WordPress Plugin](https://gallery-bank.tech-banker.com/documentation/)**
|
23 |
+
* **[Upgrade to Premium Editions - Photo Gallery Plugin for WordPress](https://gallery-bank.tech-banker.com/pricing/)**
|
24 |
+
|
25 |
+
### Best WordPress Portfolio Plugin
|
26 |
|
27 |
[**WordPress Photo Gallery Plugin**](https://gallery-bank.tech-banker.com/) is one of the Best WordPress Gallery Plugin designed to create elegant and beautiful **photo gallery** and **photo albums** using **Masonry Gallery Layouts**, **Thumbnail Gallery Layouts**, **Compact Album Layouts** and **Extended Album Layouts** along with Special Effects and Animation Effects.
|
28 |
|
30 |
|
31 |
**WordPress Photo Gallery Plugin** provides a powerful photo gallery engine for uploading and managing photo albums of images, with the ability to batch upload, delete, rearrange and sort images.
|
32 |
|
33 |
+
It is the best **Gallery Plugin for WordPress** which is being regularly updated for new features and its simplicity of usage along with efficient functionality makes it a perfect choice among photographers to have a stunning look for their sites.
|
34 |
+
|
35 |
+
There are also Premium Editions for the Gallery Plugin for WordPress with much more useful pro features available.
|
36 |
+
|
37 |
+
Gallery Bank has been downloaded over 25,00,000 times. Smart photographers, designers, and developers love Gallery Bank, and you will love too!
|
38 |
+
|
39 |
+
> ### WordPress Image Gallery Plugin - Live Demos
|
40 |
+
|
41 |
+
* **[Thumbnail Layout - WordPress Image Gallery Plugin](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-title-description-thumbnail-layout/)**
|
42 |
+
* **[Thumbnail Layout with WordPress Gallery Lightbox - Gallery Wordpress Plugin](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-lightboxes-thumbnail-layout/)**
|
43 |
+
* **[Thumbnail Layout with Pagination - Photo Gallery WordPress Plugin](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-pagination-thumbnail-layout/)**
|
44 |
+
* **[Thumbnail Layout with Lazy Load - Best WordPress Gallery Plugin](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-lazy-load-thumbnail-layout/)**
|
45 |
+
* **[Thumbnail Layout with Filters](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-filters-thumbnail-layout/)**
|
46 |
+
* **[Thumbnail Layout with Order By](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-order-by-thumbnail-layout/)**
|
47 |
+
* **[Thumbnail Layout with Search Box](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-search-box-thumbnail-layout/)**
|
48 |
+
* **[Thumbnail Layout with Watermarking](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-watermark-thumbnail-layout/)**
|
49 |
+
* **[Thumbnail Layout with Animation Effects](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-animation-thumbnail-layout/)**
|
50 |
+
* **[Thumbnail Layout with Special Effects](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-special-effects-thumbnail-layout/)**
|
51 |
+
* **[Masonry Gallery - WordPress Image Gallery Plugin](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-title-description-masonry-layout/)**
|
52 |
+
* **[Masonry Gallery with WordPress Gallery Lightbox - Gallery Wordpress Plugin](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-lightboxes-masonry-layout/)**
|
53 |
+
* **[Masonry Gallery with Pagination - Photo Gallery WordPress Plugin](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-pagination-masonry-layout/)**
|
54 |
+
* **[Masonry Gallery with Lazy Load - Best WordPress Gallery Plugin](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-lazy-load-masonry-layout/)**
|
55 |
+
* **[Masonry Gallery with Filters](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-filters-masonry-layout/)**
|
56 |
+
* **[Masonry Gallery with Order By](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-order-by-masonry-layout/)**
|
57 |
+
* **[Masonry Gallery with Search Box](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-search-box-masonry-layout/)**
|
58 |
+
* **[Masonry Gallery with Watermark](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-watermark-masonry-layout/)**
|
59 |
+
* **[Masonry Gallery with Animation Effects](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-animation-masonry-layout/)**
|
60 |
+
* **[Masonry Gallery with Special Effects](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-special-effects-masonry-layout/)**
|
61 |
+
* **[Slideshow Gallery - WordPress Image Gallery Plugin](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-title-description-slideshow-layout/)**
|
62 |
+
* **[Slideshow Gallery with Lazy Load - Best WordPress Gallery Plugin](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-lazy-load-slideshow-layout/)**
|
63 |
+
* **[Slideshow Gallery with Filters](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-filters-slideshow-layout/)**
|
64 |
+
* **[Slideshow Gallery with Order By](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-order-by-slideshow-layout/)**
|
65 |
+
* **[Slideshow Gallery with Search Box](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-search-box-slideshow-layout/)**
|
66 |
+
* **[Slideshow Gallery with Watermarking](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-watermark-slideshow-layout/)**
|
67 |
+
* **[Slideshow Gallery with Animation Effects](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-animation-slideshow-layout/)**
|
68 |
+
* **[Slideshow Gallery with Special Effects](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-special-effects-slideshow-layout/)**
|
69 |
+
* **[Image Browser Layout - WordPress Image Gallery Plugin](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-title-description-image-browser-layout/)**
|
70 |
+
* **[Image Browser Layout with Lazy Load - Best WordPress Gallery Plugin](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-lazy-load-image-browser-layout/)**
|
71 |
+
* **[Image Browser Layout with Filters](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-filters-image-browser-layout/)**
|
72 |
+
* **[Image Browser Layout with Order By](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-order-by-image-browser-layout/)**
|
73 |
+
* **[Image Browser Layout with Search Box](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-search-box-image-browser-layout/)**
|
74 |
+
* **[Image Browser Layout with Watermarking](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-watermark-image-browser-layout/)**
|
75 |
+
* **[Image Browser Layout with Animation Effects](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-animation-image-browser-layout/)**
|
76 |
+
* **[Image Browser Layout with Special Effects](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-special-effects-image-browser-layout/)**
|
77 |
+
* **[Justified Grid Layout - WordPress Image Gallery Plugin](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-title-description-justified-grid-layout/)**
|
78 |
+
* **[Justified Grid Layout with WordPress Gallery Lightbox - Gallery Wordpress Plugin](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-lightboxes-justified-grid-layout/)**
|
79 |
+
* **[Justified Grid Layout with Pagination - Photo Gallery WordPress Plugin](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-pagination-justified-grid-layout/)**
|
80 |
+
* **[Justified Grid with Lazy Load - Best WordPress Gallery Plugin](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-lazy-load-justified-grid-layout/)**
|
81 |
+
* **[Justified Grid with Filters](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-filters-justified-grid-layout/)**
|
82 |
+
* **[Justified Grid with Order By](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-order-by-justified-grid-layout/)**
|
83 |
+
* **[Justified Grid with Search Box](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-search-box-justified-grid-layout/)**
|
84 |
+
* **[Justified Grid Layout with Watermarking](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-watermark-justified-grid-layout/)**
|
85 |
+
* **[Justified Grid Layout with Animation Effects](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-animation-justified-grid-layout/)**
|
86 |
+
* **[Justified Grid Layout with Special Effects](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-special-effects-justified-grid-layout/)**
|
87 |
+
* **[Blog Style Layout - WordPress Image Gallery Plugin](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-title-description-blog-style-layout/)**
|
88 |
+
* **[Blog Style Layout with WordPress Gallery Lightbox - Gallery Wordpress Plugin](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-lightboxes-blog-style-layout/)**
|
89 |
+
* **[Blog Style Layout with Pagination - Photo Gallery WordPress Plugin](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-pagination-blog-style-layout/)**
|
90 |
+
* **[Blog Style Layout with Lazy Load - Best WordPress Gallery Plugin](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-lazy-load-blog-style-layout/)**
|
91 |
+
* **[Blog Style Layout with Filters](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-filters-blog-style-layout/)**
|
92 |
+
* **[Blog Style Layout with Order By](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-order-by-blog-style-layout/)**
|
93 |
+
* **[Blog Style Layout with Search Box](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-search-box-blog-style-layout/)**
|
94 |
+
* **[Blog Style Layout with Watermarking](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-watermark-blog-style-layout/)**
|
95 |
+
* **[Blog Style Layout with Animation Effects](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-animation-blog-style-layout/)**
|
96 |
+
* **[Blog Style Layout with Special Effects](https://gallery-bank.tech-banker.com/frontend-demos/individual-images-with-special-effects-blog-style-layout/)**
|
97 |
+
* **[Photo Albums using Compact Album Layout - WordPress Image Gallery Plugin](https://gallery-bank.tech-banker.com/frontend-demos/compact-album-with-title-description-thumbnail-layout/)**
|
98 |
+
* **[Compact Album Layout with WordPress Gallery Lightbox - Gallery Wordpress Plugin](http://gallery-bank.tech-banker.com/frontend-demos/compact-album-with-lightboxes-thumbnail-layout/)**
|
99 |
+
* **[Compact Album Layout with Pagination - Photo Gallery WordPress Plugin](http://gallery-bank.tech-banker.com/frontend-demos/compact-album-with-pagination-thumbnail-layout/)**
|
100 |
+
* **[Compact Album Layout with Lazy Load - Best WordPress Gallery Plugin](http://gallery-bank.tech-banker.com/frontend-demos/compact-album-with-lazy-load-thumbnail-layout/)**
|
101 |
+
* **[Compact Album Layout with Filters](http://gallery-bank.tech-banker.com/frontend-demos/compact-album-with-filters-thumbnail-layout/)**
|
102 |
+
* **[Compact Album Layout with Order By](http://gallery-bank.tech-banker.com/frontend-demos/compact-album-with-order-by-thumbnail-layout/)**
|
103 |
+
* **[Compact Album Layout with Search Box](http://gallery-bank.tech-banker.com/frontend-demos/compact-album-with-search-box-thumbnail-layout/)**
|
104 |
+
* **[Compact Album Layout with Watermarking](http://gallery-bank.tech-banker.com/frontend-demos/compact-album-with-watermark-thumbnail-layout/)**
|
105 |
+
* **[Compact Album Layout with Animation Effects](http://gallery-bank.tech-banker.com/frontend-demos/compact-album-with-animation-thumbnail-layout/)**
|
106 |
+
* **[Compact Album Layout with Special Effects](http://gallery-bank.tech-banker.com/frontend-demos/compact-album-with-special-effects-thumbnail-layout/)**
|
107 |
+
* **[Photo Albums using Extended Album Layout - WordPress Image Gallery Plugin](https://gallery-bank.tech-banker.com/frontend-demos/extended-album-with-title-description-thumbnail-layout/)**
|
108 |
+
* **[Extended Album Layout with WordPress Gallery Lightbox - Gallery Wordpress Plugin](http://gallery-bank.tech-banker.com/frontend-demos/extended-album-with-lightboxes-thumbnail-layout/)**
|
109 |
+
* **[Extended Album Layout with Pagination - Photo Gallery WordPress Plugin](http://gallery-bank.tech-banker.com/frontend-demos/extended-album-with-pagination-thumbnail-layout/)**
|
110 |
+
* **[Extended Album Layout with Lazy Load - Best WordPress Gallery Plugin](http://gallery-bank.tech-banker.com/frontend-demos/extended-album-with-lazy-load-thumbnail-layout/)**
|
111 |
+
* **[Extended Album Layout with Filters](http://gallery-bank.tech-banker.com/frontend-demos/extended-album-with-filters-thumbnail-layout/)**
|
112 |
+
* **[Extended Album Layout with Order By](http://gallery-bank.tech-banker.com/frontend-demos/extended-album-with-order-by-thumbnail-layout/)**
|
113 |
+
* **[Extended Album Layout with Search Box](http://gallery-bank.tech-banker.com/frontend-demos/extended-album-with-search-box-thumbnail-layout/)**
|
114 |
+
* **[Extended Album Layout with Watermarking](http://gallery-bank.tech-banker.com/frontend-demos/extended-album-with-watermark-thumbnail-layout/)**
|
115 |
+
* **[Extended Album Layout with Animation Effects](http://gallery-bank.tech-banker.com/frontend-demos/extended-album-with-animation-thumbnail-layout/)**
|
116 |
+
* **[Extended Album Layout Special Effects](http://gallery-bank.tech-banker.com/frontend-demos/extended-album-with-special-effects-thumbnail-layout/)**
|
117 |
+
|
118 |
+
**[Upgrade to Premium Editions - Best Wordpress Gallery Plugin](https://gallery-bank.tech-banker.com/)**
|
119 |
+
|
120 |
+
### Wordpress Photo Gallery Plugin - Key Features in Lite Edition
|
121 |
|
122 |
* 100% Responsive.
|
123 |
* User Friendly Admin Panel to add Galleries.
|
124 |
+
* Create & Manage unlimited amount of image galleries on your WordPress site/blog.
|
125 |
* Upload unlimited amount of photos/images in your gallery.
|
126 |
* Images uploaded are stored in a separate directory to avoid mess up with inbuilt wp-uploads folder.
|
127 |
* Photo Metadata is fetched from each image and populates to Title, Description, Alt Text Fields too.
|
140 |
|
141 |
Take your media gallery to the next level with [Premium Editions](https://gallery-bank.tech-banker.com/) which gives you 200+ features.
|
142 |
|
143 |
+
### Wordpress Photo Gallery Plugin - Key Features in Premium Editions
|
144 |
|
145 |
* All Standard Edition Features as mentioned above.
|
146 |
* Supports Thumbnail, Masonry, Slideshow, Image Browser, Justified Grid, Blog Style, Compact Album, Extended Album.
|
175 |
* Customize Nivo Lightbox - General Settings, Image Title, Image Description.
|
176 |
* Global Options - Configure Thumbnail Dimensions, Right Click Protection, Language Direction
|
177 |
* Lazy Load Settings - Customize Lazy Load Settings for loading of Images in Galleries and Albums.
|
178 |
+
* Filter Settings - Customize Filter Settings to create Filterable Photo Gallery for your website/blog.
|
179 |
* Order By Settings - Customize Order By Button.
|
180 |
* Search Box Settings - Customize Search Button to make your galleries also searchable.
|
181 |
* Page Navigation Settings - Customize Page Navigation to make your galleries to divide into pages.
|
182 |
* Watermark Settings - Customize Watermark Settings to make your galleries enabled with watermarking.
|
183 |
+
* Advertisement Settings - Customize Advertisement Settings to make your WordPress gallery lightbox loaded with advertisement.
|
184 |
* WordPress Gallery Shortcode Wizard for Thumbnail Gallery, Masonry Gallery, Slideshow Gallery, Image Browser Gallery, Justified Grid Gallery Gallery, Blog Style Gallery.
|
185 |
+
* Roles and Capabilities to let you choose what WordPress roles can edit your galleries.
|
186 |
* Awesome **grid gallery** layouts using compact album.
|
187 |
* Awesome **filterable portfolio** using tags in all layouts.
|
188 |
+
* Photo Gallery Widget to embed all WordPress gallery shortcodes.
|
189 |
* 24/7 Technical Support
|
190 |
|
191 |
Visit [here](https://gallery-bank.tech-banker.com/) to upgrade to Premium Editions now.
|
192 |
|
193 |
+
Gallery Bank uses [FooBox](https://WordPress.org/plugins/foobox-image-lightbox/) as its default gallery lightbox which is licensed under GPL V2 or later.
|
194 |
+
|
195 |
+
### Responsive Gallery
|
196 |
|
197 |
It is being designed keeping in mind the optimal viewing experience across a wide range of devices. At the same time it is coded to work also on old browsers! Whether your visitors are on a Mobile, Laptop or Desktop your Gallery will look great on any device.
|
198 |
|
199 |
+
### Unlimited Image Galleries & Photos
|
200 |
|
201 |
You can adds unlimited number of images in a single gallery. As you have created a number of image galleries, you can add as many short-codes on your page as you need.
|
202 |
|
203 |
+
### Layout Settings
|
204 |
|
205 |
Easily Configuration settings for Thumbnails, Album Covers, Different Lightboxes, Slideshow, Pagination etc. for customizing your albums as per your website's look & feel.
|
206 |
|
207 |
+
### Easy Setup & Management
|
208 |
|
209 |
+
Create stunning, 100% responsive, SEO-friendly **photo gallery WordPress** in minutes. It provides easy-to-manage functionality to rename, upload, copy, add and remove images. Gallery Bank uses also WordPress in-built media uploader as a feature to upload images.
|
210 |
|
211 |
+
### Image Gallery
|
212 |
|
213 |
It allows you to add multiple images with multiple effects. Image Gallery option allows you to customize the settings for views of images.
|
214 |
|
215 |
+
### Masonry Gallery
|
216 |
|
217 |
+
With Photo Gallery by Gallery Bank, you can implement Masonry Layout. Masonry layouts are a great choice for creating galleries using images with varied dimensions. It works by placing elements in optimal position based on available vertical space.
|
218 |
|
219 |
+
### Gallery Lightbox
|
220 |
|
221 |
Lightbox will appear when you click on the image and it will help you show more detail about your pictures with full description and full size of image.
|
222 |
|
223 |
+
### Gallery Widget
|
224 |
+
|
225 |
+
Gallery Widget lets you easily embed shortcode from the shortcode wizard and beautify your online gallery website with awesome galleries and albums.
|
226 |
+
|
227 |
== Frequently Asked Questions ==
|
228 |
|
229 |
+
= How to Install? =
|
230 |
|
231 |
+
Here are the below mentioned steps for installing Gallery Bank on your WordPress.
|
|
|
|
|
|
|
|
|
|
|
|
|
232 |
|
233 |
+
If you are using the Standard Edition, you can follow the following steps:
|
234 |
|
235 |
+
* Login to the WordPress Administrator Panel.
|
236 |
+
* Go to "Plugins > Add New".
|
237 |
+
* In the Search box, type "Gallery Bank" and press Enter.
|
238 |
+
* In the results grid, you will get a link as "Gallery Bank", click on "Install Now" link for "Gallery Bank".
|
239 |
+
* Click "Activate Plugin" link to activate the Plugin.
|
240 |
|
241 |
+
Hopefully, if you have followed the steps properly as mentioned above, you will see the success message.
|
242 |
|
243 |
+
If any problem occurs during installation process, please contact us at [support@tech-banker.com](support@tech-banker.com)
|
244 |
|
245 |
+
= How to customize Galleries? =
|
246 |
|
247 |
+
Galleries section is divided into following three parts:
|
248 |
|
249 |
+
* Manage Galleries
|
250 |
+
* Add Gallery
|
251 |
+
* Sort Galleries
|
252 |
|
253 |
+
Using Manage Galleries, user can customize and manage the settings of existing galleries.
|
254 |
|
255 |
+
Using Add Gallery, user can add new gallery.
|
|
|
|
|
|
|
256 |
|
257 |
+
Using Sort Galleries, user can sort order of images in a gallery. For this, you just have to drag and drop images to rearrange them in your preferred order.
|
258 |
|
259 |
+
This gives an idea about how to add, manage and sort Galleries in Gallery Bank. You can also add Title, Description, Alt Text and Links to the images in a gallery.
|
|
|
|
|
|
|
260 |
|
261 |
+
= How to manage Galleries created? =
|
262 |
|
263 |
+
On the **Gallery Bank Navigation Panel**, click on **Galleries - Manage Galleries**.
|
|
|
|
|
|
|
|
|
264 |
|
265 |
+
**Bulk-Action:** If you would like to delete or duplicate multiple galleries together, then you would need to tick the appropriate check boxes and then choose "Delete" or "Duplicate" option from the Bulk-Action drop-down.
|
266 |
|
267 |
+
**Apply Button:** After selecting particular option, click on "Apply" button to perform the selected action on galleries all together.
|
|
|
|
|
|
|
268 |
|
269 |
+
**Add Gallery:** If you would like to add new gallery, then you would need to click on "Add Gallery" button. It will redirect you to Add Gallery page.
|
270 |
|
271 |
+
**Delete All Galleries:** If you would like to delete all galleries, then you would need to click on "Delete All Galleries" button.
|
|
|
|
|
272 |
|
273 |
+
**Purge Galleries:** If you would like to remove extra or unused Images from album-thumbs, gallery-uploads, and thumbs folder, then you would need to click on "Purge Galleries".
|
274 |
|
275 |
+
= How to Edit or Delete Gallery? =
|
|
|
|
|
|
|
276 |
|
277 |
+
In order to "Edit Gallery" from the list of Galleries as shown above, you would need to click on "Edit" located at the bottom of Cover Image in Gallery Cover Image column in each row.
|
278 |
|
279 |
+
Once you click on "Edit", you would be redirected to "Edit Gallery" page, where you can edit the gallery.
|
280 |
|
281 |
+
In order to "Delete Gallery" from the list of Galleries as shown above, you would need to click on "Delete" located at the bottom of Cover Image in Gallery Cover Image column in each row.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
282 |
|
283 |
+
By clicking on this icon, you would see a confirmation message asking to "Confirm" whether you would like to delete the gallery?
|
284 |
|
285 |
+
Once you press the OK button, the gallery would be deleted.
|
286 |
|
287 |
+
= How to Add a new Gallery? =
|
|
|
|
|
|
|
|
|
288 |
|
289 |
+
On the **Gallery Bank Navigation Panel**, select **Galleries - Add Gallery**.
|
290 |
|
291 |
+
**Gallery Title:** In this field, you would need to provide "Gallery Title".
|
|
|
|
|
|
|
292 |
|
293 |
+
**Gallery Description:** In this field, you would need to provide "Gallery Description". It would be displayed when using shortcode.
|
294 |
|
295 |
+
Once everything is being setup, you would need to click on "Save Changes" button located at bottom of the screen to save the settings.
|
|
|
|
|
296 |
|
297 |
+
= How to upload images to a Gallery? =
|
298 |
|
299 |
+
In order to upload images to the gallery, you would need to click on "Upload Images" tab at top of the page.
|
|
|
|
|
|
|
|
|
300 |
|
301 |
+
You can upload images from your Local System, WP Media Manager or FTP.
|
302 |
|
303 |
+
If you would like to upload images from your own computer, then you would need to click on "Local System" tab.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
304 |
|
305 |
+
In order to upload files, you would need to click on "Add Files" button or you can drag and drop files from your computer.
|
306 |
|
307 |
+
After selecting files, you would need to click on "Start Upload" button to upload the files into gallery.
|
308 |
|
309 |
+
You would be able to view the size of files on bottom-right corner of Select Files screen.
|
|
|
|
|
|
|
310 |
|
311 |
+
If you would like to upload images from WP Media Manager, then you would need to click on "WP Media Manager" tab.
|
312 |
|
313 |
+
Now you would need to click on "Upload Thumbnails" button to upload images from Media Manager.
|
|
|
314 |
|
315 |
+
If you would like to upload images from FTP, then you would need to click on "Upload From FTP" tab.
|
316 |
|
317 |
+
You can browse and locate the images from FTP to upload them into your gallery.
|
|
|
|
|
|
|
|
|
|
|
318 |
|
319 |
+
After uploading images in gallery, you would be able to see them in a list from where you can customize the settings of every image in gallery.
|
320 |
|
321 |
+
**Bulk-Action:** If you would like to perform an action on multiple images together, then you would need to tick the appropriate check boxes and then choose required option from the Bulk-Action drop-down.
|
|
|
322 |
|
323 |
+
**Apply Button:** After selecting particular option, click on "Apply" button to perform the selected action on images all together.
|
324 |
|
325 |
+
**Image Title:** In this field, you would need to provide "Image Title" for image.
|
|
|
326 |
|
327 |
+
**Image Alt Text:** In this field, you would need to provide alternative tags for image to make it visible for search engines and show in case of slower connections.
|
328 |
|
329 |
+
**Image Description:** In this field, you would need to provide "Image Description" for image.
|
|
|
330 |
|
331 |
+
**Tags:** In this field, you would need to choose "Tags" for particular image.
|
332 |
|
333 |
+
**Enable Url Redirect on click of Image:** If you would like to redirect user to a specific location when clicking on an image, then you would need to select "Enable" checkbox.
|
|
|
|
|
334 |
|
335 |
+
**Url Link:** This option becomes visible when "Enable" option is being selected from "Enable Url Redirect on click of Image". Now you would need to provide the URL link of location where you would like to redirect user when clicking on this image.
|
336 |
|
337 |
+
**Thumbnail:** Under this column, you would be able to see thumbnail of image. If you would like to set an image as a "Cover Image", then you would need to check button for "Set As Cover Image".
|
|
|
338 |
|
339 |
+
If you would not like to display image with other gallery images, then tick "Exclude?" checkbox.
|
340 |
|
341 |
+
If you would like edit image, then you would need to click on "Edit" located at bottom of the Thumbnail Image.
|
|
|
|
|
|
|
342 |
|
343 |
+
Once you click on "Edit", the following popup will appear on your screen.
|
344 |
|
345 |
+
Now you can perform various actions like **Crop**, **Rotate** and **Flip** image according to your choice or you can apply various effects on image using toolbar located at top left corner. You can also adjust **Brightness** and **Contrast** of image.
|
346 |
|
347 |
+
If you would like to scale image to particular dimension, then provide the required dimensions and click "Scale" button located at the right sidebar.
|
348 |
|
349 |
+
If you would like to crop image in a specific "Aspect Ratio", then you would need to provide required ratio.
|
350 |
|
351 |
+
Once everything is setup, you would need to close popup to return to the Add Gallery Page.
|
352 |
|
353 |
+
If you would like to "Delete" image from gallery, then you would need to click on "Delete" located at bottom of the Thumbnail Image.
|
354 |
|
355 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
356 |
|
357 |
+
= How to sort images in a Gallery? (Premium Edition) =
|
358 |
|
359 |
+
On the **Gallery Bank Navigation Panel**, select **Galleries - Sort Galleries**.
|
360 |
|
361 |
+
**Choose Gallery:** In this field, you would need to choose specific Gallery for sorting.
|
|
|
362 |
|
363 |
+
You would need to drag and drop images to arrange them in specific order.
|
364 |
|
365 |
+
After arranging them, you would need to click on "Save Changes" button located at bottom of the page to save the settings.
|
366 |
|
367 |
+
= How to customize created Albums? (Premium Edition) =
|
368 |
|
369 |
+
Albums Section is divided into following three parts:
|
370 |
|
371 |
+
* Manage Albums
|
372 |
+
* Add Album
|
373 |
+
* Sort Albums
|
374 |
|
375 |
+
Using **Manage Albums**, user can customize and manage the settings of existing albums. You can also view the meta information about albums and easily modify and delete the albums if required.
|
376 |
|
377 |
+
Using **Add Album**, user can add new album. You can add galleries to your album by choosing them from the list of available galleries.
|
378 |
|
379 |
+
Using **Sort Albums**, user can sort order of galleries in an album. You can easily sort the ordering of galleries by drag and drop method.
|
380 |
|
381 |
+
**How to manage Albums?**
|
382 |
|
383 |
+
On the **Gallery Bank Navigation Panel**, click on **Albums - Manage Albums**.
|
|
|
|
|
384 |
|
385 |
+
**Bulk Action:** If you would like to delete or duplicate multiple albums together, then you would need to tick the appropriate check boxes and then choose "Delete Albums" or "Duplicate Albums" option from the Bulk Action drop-down.
|
386 |
|
387 |
+
**Apply Button:** After selecting particular option, click on "Apply" button to perform the selected action on albums all together.
|
|
|
|
|
388 |
|
389 |
+
**Add Album:** If you would like to add new album, then you would need to click on "Add Album" button. It will redirect you to Add Album page.
|
390 |
|
391 |
+
**Delete All Albums:** If you would like to delete all albums, then you would need to click on "Delete All Albums" button.
|
|
|
392 |
|
393 |
+
**Purge Albums:** If you would like to remove extra or unused images from album-thumbs, gallery-uploads, and thumbs folder, then you would need to click on "Purge Albums".
|
394 |
|
395 |
+
= How to Edit or Delete Album? (Premium Edition) =
|
|
|
396 |
|
397 |
+
In order to "Edit Album" from the list of Albums as shown above, you would need to click on "Edit" located at the bottom of Cover Image in Album Cover Image column in each row.
|
398 |
|
399 |
+
Once you click on "Edit", you would be redirected to "Update Album" page, where you can edit the album.
|
400 |
|
401 |
+
In order to "Delete Album" from the list of Albums as shown above, you would need to click on "Delete" located at the bottom of Cover Image in Album Cover Image column in each row.
|
402 |
|
403 |
+
By clicking on this icon, you would see a confirmation message asking to "Confirm" whether you would like to delete the album?
|
404 |
|
405 |
+
Once you press the OK button, the album would be deleted.
|
406 |
|
407 |
+
= How to Add a new Album? (Premium Edition) =
|
408 |
|
409 |
+
On the **Gallery Bank Navigation Panel**, select **Albums - Add Album**.
|
410 |
|
411 |
+
**Album Title:** In this field, you would need to provide "Album Title".
|
412 |
|
413 |
+
**Album Description:** In this field, you would need to provide "Album Description".
|
414 |
|
415 |
+
Once everything is being setup, you would need to click on "Save Changes" button located at bottom of the screen to save the settings.
|
416 |
|
417 |
+
= How to upload galleries to album? (Premium Edition) =
|
418 |
|
419 |
+
In order to upload albums, you would need to click on "Upload Albums" tab at top of the page.
|
|
|
420 |
|
421 |
+
**Album Cover:** In this field, you would need to upload image for Album Cover.
|
422 |
|
423 |
+
From "Galleries Available" select list, you would need to choose the galleries which you would like to add in your album.
|
424 |
|
425 |
+
In order to add multiple galleries together, you would need to hold the "Ctrl" button and choose galleries from select list.
|
426 |
|
427 |
+
On clicking "Add >>" button, selected galleries would be added to your album and will be displayed on "Galleries Included in this Album" list.
|
428 |
|
429 |
+
From "Galleries Included in this Album" select list, you would need to choose the galleries which you would like to remove from your album.
|
430 |
|
431 |
+
In order to remove multiple galleries together, you would need to hold the "Ctrl" button and choose galleries from select list.
|
|
|
432 |
|
433 |
+
On clicking "<< Remove" button, selected galleries would be added to "Galleries Available" list.
|
434 |
|
435 |
+
Once everything is being setup, you would need to click on the "Save Changes" button located at the bottom of the page to save the settings.
|
436 |
+
|
437 |
+
= How to sort Albums? (Premium Edition) =
|
438 |
+
|
439 |
+
On the **Gallery Bank Navigation Panel**, select **Albums - Sort Albums**.
|
440 |
+
|
441 |
+
**Choose Album:** In this field, you would need to choose a specific Album for sorting.
|
442 |
+
|
443 |
+
Once you reach the page as seen above, you would need to drag and drop the galleries to arrange them in specific order.
|
444 |
+
|
445 |
+
After arranging them, you would need to click on "Save Changes" button to save the settings.
|
446 |
+
|
447 |
+
= How to customize Tags? (Premium Edition) =
|
448 |
+
|
449 |
+
Tags Page gives an idea about how to add and manage the Gallery Tags.
|
450 |
+
|
451 |
+
Tags are divided into two sections.
|
452 |
+
|
453 |
+
* Manage Tags
|
454 |
+
* Add Tag
|
455 |
+
|
456 |
+
Using **Manage Tags**, user can customize and manage the settings for existing tags. This page shows detailed list of tags that are currently present. It will display tag name, tag description, status of tags.
|
457 |
+
|
458 |
+
Using **Add Tag**, user can add new tags for images. You would need to provide Tag Name and Description to add a new tag.
|
459 |
+
|
460 |
+
If any problem occurs during any process, please contact us at [support@tech-banker.com](support@tech-banker.com)
|
461 |
+
|
462 |
+
= How to Manage Tags? (Premium Edition) =
|
463 |
+
|
464 |
+
On the **Gallery Bank Navigation Panel**, select **Tags - Manage Tags**.
|
465 |
+
|
466 |
+
The following information would be displayed on this page.
|
467 |
+
|
468 |
+
**Bulk Action:** If you would like to delete multiple tags simultaneously, then you would need to tick appropriate check boxes and then choose "Delete" option from Bulk Action drop-down.
|
469 |
+
|
470 |
+
**Apply Button:** After selecting "Delete" option, click on "Apply" button to delete selected tags all together.
|
471 |
+
|
472 |
+
**Add Tag:** If you would like to add new tag, then you would need to click on "Add Tag" button. It will redirect you to Add Tag page.
|
473 |
+
|
474 |
+
**Tag Name:** Under this column, you would be able to view "Tag Name".
|
475 |
+
|
476 |
+
**Tag Description:** Under this column, you would be able to view "Tag Description".
|
477 |
+
|
478 |
+
**Status:** Under this column, you would be able to see whether the tag is used or unused.
|
479 |
+
|
480 |
+
= How to Edit or Delete Tags? (Premium Edition) =
|
481 |
+
|
482 |
+
In order to "Edit Tags", you would need to click on "Edit Icon" located under the Action column in each row.
|
483 |
+
|
484 |
+
By clicking on this icon, you would be re-directed to the Edit Tag page, where you can modify the tag settings.
|
485 |
+
|
486 |
+
Once everything is being setup, you would need to click on the "Save Changes" button located at bottom and top of the page to save the changes.
|
487 |
+
|
488 |
+
In order to "Delete Tags", you would need to click on "Delete Icon" located under the Action column in each row.
|
489 |
+
|
490 |
+
By clicking on this button, you would see a confirmation message asking to "Confirm" whether you would like to delete the tag?
|
491 |
+
|
492 |
+
Once you press the OK button, the tag would be deleted.
|
493 |
+
|
494 |
+
= How to Add Tag? (Premium Edition) =
|
495 |
+
|
496 |
+
On the **Gallery Bank Navigation Panel**, select **Tags - Add Tag**.
|
497 |
+
|
498 |
+
Here is the description of each control on page.
|
499 |
+
|
500 |
+
**Tag Name:** In this field, you would need to provide "Tag Name".
|
501 |
+
|
502 |
+
**Tag Description:** In this field, you would need to provide a brief "Tag Description".
|
503 |
+
|
504 |
+
Once everything is being setup, you would need to click on "Save Changes" button located at top and bottom of the page to save the settings.
|
505 |
+
|
506 |
+
You can use these tags to filter images into different categories and display images of same categories separately.
|
507 |
+
|
508 |
+
= How to manage Layout Settings? (Premium Edition) =
|
509 |
+
|
510 |
+
Layout Settings are divided into nine sections.
|
511 |
+
|
512 |
+
* Thumbnail Layout
|
513 |
+
* Masonry Layout
|
514 |
+
* Slideshow Layout
|
515 |
+
* Image Browser Layout
|
516 |
+
* Justified Grid Layout
|
517 |
+
* Blog Style Layout
|
518 |
+
* Compact Album Layout
|
519 |
+
* Extended Album Layout
|
520 |
+
* Custom CSS
|
521 |
+
|
522 |
+
Gallery Bank provides you various options to customize the gallery layouts. You can modify the settings to make your gallery more beautiful and attractive.
|
523 |
+
|
524 |
+
It allows you to add Custom CSS to override the default css of plugin and fully customize the look of your gallery.
|
525 |
+
|
526 |
+
= How to manage Thumbnail Layout? (Premium Edition) =
|
527 |
+
|
528 |
+
On the **Gallery Bank Navigation Panel**, select **Layout Settings - Thumbnail Layout**.
|
529 |
+
|
530 |
+
You would be able to manage different Thumbnail Layout settings. For this, you would need to click on particular tabs which you would like to modify from top of the page.
|
531 |
+
|
532 |
+
**How to manage Thumbnails for Thumbnail Layout?**
|
533 |
+
|
534 |
+
In order to manage thumbnails for Thumbnail Layout, you would need to click on "Thumbnails" tab from top of the page.
|
535 |
+
|
536 |
+
Here is the description of each control on this page.
|
537 |
+
|
538 |
+
**Thumbnail Dimensions:** In this field, you would need to provide "Width and Height" for image thumbnails.
|
539 |
+
|
540 |
+
**Background Color & Transparency:** In this field, you would need to choose "Color and Opacity" for background. Transparency should be from 0 to 100.
|
541 |
+
|
542 |
+
**Thumbnail Opacity:** In this field, you would need to provide Opacity for Thumbnail in percentage. It should be from 0 to 100.
|
543 |
+
|
544 |
+
**Border Style:** In this field, you would need to provide Width, Style and Color for Border of Thumbnail.
|
545 |
+
|
546 |
+
**Border Radius:** In this field, you would need to provide "Border Radius" for Thumbnail.
|
547 |
+
|
548 |
+
**Shadow:** In this field, you would need to provide CSS type values for "Shadow" of Thumbnail.
|
549 |
+
|
550 |
+
**Shadow Color:** In this field, you would need to choose "Shadow Color" for Thumbnail.
|
551 |
+
|
552 |
+
**Hover Effect & Value:** In this field, you would need to choose the effect to be applied to Thumbnail when hovered and provide specific value for selected hover effect.
|
553 |
+
|
554 |
+
**Transition:** In this field, you would need to provide Transition time to complete the effect. It should be from 1 to 9.
|
555 |
+
|
556 |
+
**Margin:** In this field, you would need to provide "Margin" for Thumbnail.
|
557 |
+
|
558 |
+
**Padding:** In this field, you would need to provide "Padding" for Thumbnail.
|
559 |
+
|
560 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
561 |
+
|
562 |
+
**How to customize Gallery Title for Thumbnail Layout?**
|
563 |
+
|
564 |
+
In order to customize Gallery Title of Thumbnail Layout, you would need to click on "Gallery Title" tab from top of the page.
|
565 |
+
|
566 |
+
Here is the description of each control on this page.
|
567 |
+
|
568 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Gallery Title.
|
569 |
+
|
570 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Gallery Title.
|
571 |
+
|
572 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Gallery Title.
|
573 |
+
|
574 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Gallery Title.
|
575 |
+
|
576 |
+
**Margin:** In this field, you would need to provide "Margin" for Gallery Title.
|
577 |
+
|
578 |
+
**Padding:** In this field, you would need to provide "Padding" for Gallery Title.
|
579 |
+
|
580 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
581 |
+
|
582 |
+
**How to customize Gallery Description for Thumbnail Layout?**
|
583 |
+
|
584 |
+
In order to customize Gallery Description of Thumbnail Layout, you would need to click on "Gallery Description" tab from top of the page.
|
585 |
+
|
586 |
+
Here is the description of each control on this page.
|
587 |
+
|
588 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Gallery Description.
|
589 |
+
|
590 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Gallery Description.
|
591 |
+
|
592 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Gallery Description.
|
593 |
+
|
594 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Gallery Description.
|
595 |
+
|
596 |
+
**Margin:** In this field, you would need to provide "Margin" for Gallery Description.
|
597 |
+
|
598 |
+
**Padding:** In this field, you would need to provide "Padding" for Gallery Description.
|
599 |
+
|
600 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
601 |
+
|
602 |
+
**How to customize Thumbnail Title?**
|
603 |
+
|
604 |
+
In order to customize Thumbnail Title of Thumbnail Layout, you would need to click on "Thumbnail Title" tab from top of the page.
|
605 |
+
|
606 |
+
Here is the description of each control on this page.
|
607 |
+
|
608 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Thumbnail Title.
|
609 |
+
|
610 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Thumbnail Title.
|
611 |
+
|
612 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Thumbnail Title.
|
613 |
+
|
614 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Thumbnail Title.
|
615 |
+
|
616 |
+
**Margin:** In this field, you would need to provide "Margin" for Thumbnail Title.
|
617 |
+
|
618 |
+
**Padding:** In this field, you would need to provide "Padding" for Thumbnail Title.
|
619 |
+
|
620 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
621 |
+
|
622 |
+
**How to customize Thumbnail Description?**
|
623 |
+
|
624 |
+
In order to customize Thumbnail Description of Thumbnail Layout, you would need to click on "Thumbnail Description" tab from top of the page.
|
625 |
+
|
626 |
+
Here is the description of each control on this page.
|
627 |
+
|
628 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Thumbnail Description.
|
629 |
+
|
630 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Thumbnail Description.
|
631 |
+
|
632 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Thumbnail Description.
|
633 |
+
|
634 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Thumbnail Description.
|
635 |
+
|
636 |
+
**Margin:** In this field, you would need to provide "Margin" for Thumbnail Description.
|
637 |
+
|
638 |
+
**Padding:** In this field, you would need to provide "Padding" for Thumbnail Description.
|
639 |
+
|
640 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
641 |
+
|
642 |
+
= How to manage Masonry Layout? (Premium Edition) =
|
643 |
+
|
644 |
+
On the **Gallery Bank Navigation Panel**, select **Layout Settings � Masonry Layout**.
|
645 |
+
|
646 |
+
You would be able to manage different Masonry Layout settings. For this, you would need to click on particular tabs which you would like to modify from top of the page.
|
647 |
+
|
648 |
+
**How to manage Thumbnails for Masonry Layout?**
|
649 |
+
|
650 |
+
In order to manage thumbnails for Masonry Layout, you would need to click on "Thumbnails" tab from top of the page.
|
651 |
+
|
652 |
+
Here is the description of each control on this page.
|
653 |
+
|
654 |
+
**Thumbnail Width:** In this field, you would need to provide "Width" for image thumbnails in Masonry Layout.
|
655 |
+
|
656 |
+
**Background Color & Transparency:** In this field, you would need to choose "Color and Opacity" for background. Transparency should be from 0 to 100.
|
657 |
+
|
658 |
+
**Thumbnail Opacity:** In this field, you would need to provide Opacity for image thumbnails in percentage. It should be from 0 to 100.
|
659 |
+
|
660 |
+
**Border Style:** In this field, you would need to provide Width, Style and Color for Border of Masonry Layout.
|
661 |
+
|
662 |
+
**Border Radius:** In this field, you would need to provide "Border Radius" for Masonry Layout.
|
663 |
+
|
664 |
+
**Shadow:** In this field, you would need to provide CSS type values for "Shadow" of Masonry Layout.
|
665 |
+
|
666 |
+
**Shadow Color:** In this field, you would need to choose "Shadow Color" for Masonry Layout.
|
667 |
+
|
668 |
+
**Hover Effect & Value:** In this field, you would need to choose the effect to be applied to Masonry Layout when hovered and provide specific value for selected hover effect.
|
669 |
+
|
670 |
+
**Transition:** In this field, you would need to provide Transition time to complete the effect. It should be from 1 to 9.
|
671 |
+
|
672 |
+
**Margin:** In this field, you would need to provide �Margin� for Masonry Layout.
|
673 |
+
|
674 |
+
**Padding:** In this field, you would need to provide "Padding" for Masonry Layout.
|
675 |
+
|
676 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
677 |
+
|
678 |
+
**How to customize Gallery Title for Masonry Layout?**
|
679 |
+
|
680 |
+
In order to customize Gallery Title of Masonry Layout, you would need to click on "Gallery Title" tab from top of the page.
|
681 |
+
|
682 |
+
Here is the description of each control on this page.
|
683 |
+
|
684 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Gallery Title.
|
685 |
+
|
686 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Gallery Title.
|
687 |
+
|
688 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Gallery Title.
|
689 |
+
|
690 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Gallery Title.
|
691 |
+
|
692 |
+
**Margin:** In this field, you would need to provide "Margin" for Gallery Title.
|
693 |
+
|
694 |
+
**Padding:** In this field, you would need to provide "Padding" for Gallery Title.
|
695 |
+
|
696 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
697 |
+
|
698 |
+
**How to customize Gallery Description for Masonry Layout?**
|
699 |
+
|
700 |
+
In order to customize Gallery Description of Masonry Layout, you would need to click on "Gallery Description" tab from top of the page.
|
701 |
+
|
702 |
+
Here is the description of each control on this page.
|
703 |
+
|
704 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Gallery Description.
|
705 |
+
|
706 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Gallery Description.
|
707 |
+
|
708 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Gallery Description.
|
709 |
+
|
710 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Gallery Description.
|
711 |
+
|
712 |
+
**Margin:** In this field, you would need to provide "Margin" for Gallery Description.
|
713 |
+
|
714 |
+
**Padding:** In this field, you would need to provide "Padding" for Gallery Description.
|
715 |
+
|
716 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
717 |
+
|
718 |
+
**How to customize Thumbnail Title for Masonry Layout?**
|
719 |
|
720 |
+
In order to customize Thumbnail Title of Masonry Layout, you would need to click on "Thumbnail Title" tab from top of the page.
|
721 |
|
722 |
+
Here is the description of each control on this page.
|
723 |
|
724 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Thumbnail Title.
|
725 |
|
726 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment� for Thumbnail Title.
|
727 |
|
728 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Thumbnail Title.
|
729 |
|
730 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Thumbnail Title.
|
731 |
|
732 |
+
**Margin:** In this field, you would need to provide "Margin" for Thumbnail Title.
|
733 |
|
734 |
+
**Padding:** In this field, you would need to provide "Padding" for Thumbnail Title.
|
735 |
|
736 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
737 |
|
738 |
+
**How to customize Thumbnail Description for Masonry Layout?**
|
739 |
|
740 |
+
In order to customize Thumbnail Description of Masonry Layout, you would need to click on "Thumbnail Description" tab from top of the page.
|
741 |
|
742 |
+
Here is the description of each control on this page.
|
743 |
|
744 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Thumbnail Description.
|
745 |
|
746 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Thumbnail Description.
|
747 |
|
748 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Thumbnail Description.
|
749 |
|
750 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Thumbnail Description.
|
751 |
|
752 |
+
**Margin:** In this field, you would need to provide "Margin" for Thumbnail Description.
|
753 |
|
754 |
+
**Padding:** In this field, you would need to provide "Padding" for Thumbnail Description.
|
755 |
|
756 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
757 |
|
758 |
+
= How to manage Slideshow Layout? (Premium Edition) =
|
759 |
|
760 |
+
On the **Gallery Bank Navigation Panel**, select **Layout Settings - Slideshow Layout**.
|
761 |
|
762 |
+
You would be able to manage different Slideshow Layout settings. For this, you would need to click on particular tabs which you would like to modify from top of the page.
|
763 |
|
764 |
+
**How to manage Thumbnails for Slideshow Layout?**
|
765 |
|
766 |
+
In order to manage thumbnails for Slideshow Layout, you would need to click on "Thumbnails" tab from top of the page.
|
767 |
|
768 |
+
Here is the description of each control on this page.
|
769 |
|
770 |
+
**Background Color:** In this field, you would need to choose "Background Color" for Slideshow Layout.
|
771 |
|
772 |
+
**Border Style:** In this field, you would need to provide Width, Style and Color for Border of Slideshow Layout.
|
773 |
|
774 |
+
**Border Radius:** In this field, you would need to provide "Border Radius" for Slideshow Layout.
|
775 |
|
776 |
+
**Buttons Color:** In this field, you would need to choose "Buttons Color".
|
777 |
|
778 |
+
**Buttons Hover Color:** In this field, you would need to choose "Buttons Hover Color".
|
779 |
|
780 |
+
**Buttons Border Style:** In this field, you would need to provide Width, Style and Color for Border of Buttons.
|
781 |
|
782 |
+
**Buttons Border Radius:** In this field, you would need to provide "Border Radius" for Buttons.
|
783 |
|
784 |
+
**Shadow:** In this field, you would need to provide CSS type values for "Shadow" of Slideshow Layout.
|
785 |
|
786 |
+
**Shadow Color:** In this field, you would need to choose "Shadow Color" for Slideshow Layout.
|
787 |
|
788 |
+
**Buttons Background Transparency:** In this field, you would need to provide the level of transparency you would like to apply to Buttons. It should be from 0 to 100.
|
789 |
|
790 |
+
**Filmstrip Border Style:** In this field, you would need to provide Width, Style and Color for Border of Filmstrip.
|
791 |
|
792 |
+
**Filmstrip Border Radius:** In this field, you would need to provide "Border Radius" for Filmstrip.
|
793 |
|
794 |
+
**Filmstrip Active Border Style:** In this field, you would need to provide Border Width, Style and Color for Filmstrip item, which is currently being displayed.
|
795 |
|
796 |
+
**Filmstrip De-active Transparency:** In this field, you would need to provide Transparency for Deactivated Filmstrip.
|
797 |
|
798 |
+
**Filmstrip Margin:** In this field, you would need to provide "Margin" for Filmstrip.
|
799 |
|
800 |
+
**Filmstrip Padding:** In this field, you would need to provide "Padding" for Filmstrip.
|
801 |
|
802 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
803 |
|
804 |
+
**How to customize Gallery Title for Slideshow Layout?**
|
805 |
|
806 |
+
In order to customize Gallery Title of Slideshow Layout, you would need to click on "Gallery Title" tab from top of the page.
|
807 |
|
808 |
+
Here is the description of each control on this page.
|
809 |
|
810 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Gallery Title.
|
811 |
|
812 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Gallery Title.
|
813 |
|
814 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Gallery Title.
|
815 |
|
816 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Gallery Title.
|
817 |
|
818 |
+
**Margin:** In this field, you would need to provide "Margin" for Gallery Title.
|
819 |
|
820 |
+
**Padding:** In this field, you would need to provide "Padding" for Gallery Title.
|
821 |
|
822 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
823 |
|
824 |
+
**How to customize Gallery Description for Slideshow Layout?**
|
825 |
|
826 |
+
In order to customize Gallery Description of Slideshow Layout, you would need to click on "Gallery Description" tab from top of the page.
|
|
|
827 |
|
828 |
+
Here is the description of each control on this page.
|
829 |
|
830 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Gallery Description.
|
|
|
|
|
831 |
|
832 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Gallery Description.
|
833 |
|
834 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Gallery Description.
|
835 |
|
836 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Gallery Description.
|
837 |
|
838 |
+
**Margin:** In this field, you would need to provide "Margin" for Gallery Description.
|
839 |
|
840 |
+
**Padding:** In this field, you would need to provide "Padding" for Gallery Description.
|
841 |
|
842 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
843 |
|
844 |
+
**How to customize Thumbnail Title for Slideshow Layout?**
|
845 |
|
846 |
+
In order to customize Thumbnail Title of Slideshow Layout, you would need to click on "Thumbnail Title" tab from top of the page.
|
847 |
|
848 |
+
Here is the description of each control on this page.
|
849 |
|
850 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Thumbnail Title.
|
851 |
|
852 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Thumbnail Title.
|
853 |
|
854 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Thumbnail Title.
|
855 |
|
856 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Thumbnail Title.
|
857 |
|
858 |
+
**Margin:** In this field, you would need to provide "Margin" for Thumbnail Title.
|
859 |
|
860 |
+
**Padding:** In this field, you would need to provide "Padding" for Thumbnail Title.
|
861 |
|
862 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
|
|
863 |
|
864 |
+
**How to customize Thumbnail Description for Slideshow Layout?**
|
865 |
|
866 |
+
In order to customize Thumbnail Description of Slideshow Layout, you would need to click on "Thumbnail Description" tab from top of the page.
|
867 |
|
868 |
+
Here is the description of each control on this page.
|
869 |
|
870 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Thumbnail Description.
|
871 |
|
872 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Thumbnail Description.
|
873 |
|
874 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Thumbnail Description.
|
|
|
875 |
|
876 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Thumbnail Description.
|
877 |
|
878 |
+
**Margin:** In this field, you would need to provide "Margin" for Thumbnail Description.
|
|
|
879 |
|
880 |
+
**Padding:** In this field, you would need to provide "Padding" for Thumbnail Description.
|
881 |
|
882 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
883 |
|
884 |
+
= How to manage Image Browser Layout? (Premium Edition) =
|
885 |
|
886 |
+
On the **Gallery Bank Navigation Panel**, select **Layout Settings - Image Browser Layout**.
|
|
|
887 |
|
888 |
+
You would be able to manage different Image Browser Layout settings. For this, you would need to click on particular tabs which you would like to modify from top of the page.
|
889 |
|
890 |
+
**How to manage Thumbnails for Image Browser Layout?**
|
|
|
891 |
|
892 |
+
In order to manage thumbnails for Image Browser Layout, you would need to click on "Thumbnails" tab from top of the page.
|
893 |
|
894 |
+
Here is the description of each control on this page.
|
895 |
|
896 |
+
**Image Browser Opacity:** In this field, you would need to provide Opacity for Image Browser Layout in percentage. It should be from 0 to 100.
|
897 |
|
898 |
+
**Border Style:** In this field, you would need to provide Width, Style and Color for Border of Image Browser Layout.
|
|
|
899 |
|
900 |
+
**Border Radius:** In this field, you would need to provide "Border Radius" for Image Browser Layout.
|
901 |
|
902 |
+
**Shadow:** In this field, you would need to provide CSS type values for "Shadow" of Image Browser Layout.
|
903 |
|
904 |
+
**Shadow Color:** In this field, you would need to choose "Shadow Color" for Image Browser Layout.
|
905 |
|
906 |
+
**Buttons Color:** In this field, you would need to choose "Buttons Color".
|
|
|
907 |
|
908 |
+
**Buttons Hover Color:** In this field, you would need to choose "Buttons Hover Color".
|
909 |
|
910 |
+
**Buttons Border Style:** In this field, you would need to provide Width, Style and Color for Border of Buttons.
|
911 |
|
912 |
+
**Buttons Border Radius:** In this field, you would need to provide "Border Radius" for Buttons.
|
913 |
|
914 |
+
**Buttons Font Style:** In this field, you would need to provide Font Size and Color for Buttons.
|
|
|
915 |
|
916 |
+
**Buttons Font Family:** In this field, you would need to choose "Font Family" for Buttons.
|
917 |
|
918 |
+
**Margin:** In this field, you would need to provide "Margin" for Image Browser Layout.
|
|
|
|
|
919 |
|
920 |
+
**Padding:** In this field, you would need to provide "Padding" for Image Browser Layout.
|
921 |
|
922 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
923 |
|
924 |
+
**How to customize Gallery Title for Image Browser Layout?**
|
925 |
|
926 |
+
In order to customize Gallery Title of Image Browser Layout, you would need to click on "Gallery Title" tab from top of the page.
|
927 |
|
928 |
+
Here is the description of each control on this page.
|
929 |
|
930 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Gallery Title.
|
|
|
931 |
|
932 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Gallery Title.
|
933 |
|
934 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Gallery Title.
|
935 |
|
936 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Gallery Title.
|
937 |
|
938 |
+
**Margin:** In this field, you would need to provide "Margin" for Gallery Title.
|
939 |
|
940 |
+
**Padding:** In this field, you would need to provide "Padding" for Gallery Title.
|
941 |
|
942 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
943 |
|
944 |
+
**How to customize Gallery Description for Image Browser Layout?**
|
945 |
|
946 |
+
In order to customize Gallery Description of Image Browser Layout, you would need to click on "Gallery Description" tab from top of the page.
|
|
|
|
|
947 |
|
948 |
+
Here is the description of each control on this page.
|
949 |
|
950 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Gallery Description.
|
951 |
|
952 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Gallery Description.
|
953 |
|
954 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Gallery Description.
|
955 |
|
956 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Gallery Description.
|
957 |
|
958 |
+
**Margin:** In this field, you would need to provide "Margin" for Gallery Description.
|
|
|
|
|
|
|
959 |
|
960 |
+
**Padding:** In this field, you would need to provide "Padding" for Gallery Description.
|
961 |
|
962 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
|
|
963 |
|
964 |
+
**How to customize Thumbnail Title for Image Browser Layout?**
|
965 |
|
966 |
+
In order to customize Thumbnail Title of Image Browser Layout, you would need to click on "Thumbnail Title" tab from top of the page.
|
|
|
|
|
967 |
|
968 |
+
Here is the description of each control on this page.
|
969 |
|
970 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Thumbnail Title.
|
|
|
|
|
|
|
|
|
|
|
|
|
971 |
|
972 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Thumbnail Title.
|
973 |
|
974 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Thumbnail Title.
|
|
|
975 |
|
976 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Thumbnail Title.
|
977 |
|
978 |
+
**Margin:** In this field, you would need to provide "Margin" for Thumbnail Title.
|
979 |
|
980 |
+
**Padding:** In this field, you would need to provide "Padding" for Thumbnail Title.
|
981 |
|
982 |
+
Once everything is being setup, you would need to click on "Save Changes' button to save the settings.
|
983 |
|
984 |
+
**How to customize Thumbnail Description for Image Browser Layout?**
|
985 |
|
986 |
+
In order to customize Thumbnail Description of Image Browser Layout, you would need to click on "Thumbnail Description" tab from top of the page.
|
987 |
|
988 |
+
Here is the description of each control on this page.
|
989 |
|
990 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Thumbnail Description.
|
|
|
991 |
|
992 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Thumbnail Description.
|
993 |
|
994 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Thumbnail Description.
|
995 |
|
996 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Thumbnail Description.
|
997 |
|
998 |
+
**Margin:** In this field, you would need to provide "Margin" for Thumbnail Description.
|
999 |
|
1000 |
+
**Padding:** In this field, you would need to provide "Padding" for Thumbnail Description.
|
1001 |
|
1002 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
1003 |
|
1004 |
+
= How to manage Justified Grid Layout? (Premium Edition) =
|
1005 |
|
1006 |
+
On the **Gallery Bank Navigation Panel**, select **Layout Settings - Justified Grid Layout**.
|
1007 |
|
1008 |
+
You would be able to manage different Justified Grid Layout settings. For this, you would need to click on particular tabs which you would like to modify from top of the page.
|
1009 |
|
1010 |
+
**How to manage Thumbnails for Justified Grid Layout?**
|
|
|
|
|
1011 |
|
1012 |
+
In order to manage thumbnails for Justified Grid Layout, you would need to click on "Thumbnails" tab from top of the page.
|
1013 |
|
1014 |
+
Here is the description of each control on this page.
|
|
|
1015 |
|
1016 |
+
**Justified Grid Opacity:** In this field, you would need to provide Opacity for Justified Grid Layout in percentage. It should be from 0 to 100.
|
1017 |
|
1018 |
+
**Background Color & Transparency:** In this field, you would need to choose "Color and Opacity" for background. Transparency should be from 0 to 100.
|
|
|
|
|
1019 |
|
1020 |
+
**Border Style:** In this field, you would need to provide Width, Style and Color for Border of Justified Grid Layout.
|
1021 |
|
1022 |
+
**Border Radius:** In this field, you would need to provide "Border Radius" for Justified Grid Layout.
|
|
|
|
|
|
|
|
|
1023 |
|
1024 |
+
**Shadow:** In this field, you would need to provide CSS type values for "Shadow" of Justified Grid Layout.
|
1025 |
|
1026 |
+
**Shadow Color:** In this field, you would need to choose "Shadow Color" for Justified Grid Layout.
|
|
|
|
|
1027 |
|
1028 |
+
**Hover Effect & Value:** In this field, you would need to choose the effect to be applied to Justified Grid Layout when hovered and provide specific value for selected hover effect.
|
1029 |
|
1030 |
+
**Padding:** In this field, you would need to provide "Padding" for Justified Grid Layout.
|
|
|
|
|
|
|
|
|
|
|
1031 |
|
1032 |
+
**Transition:** In this field, you would need to provide Transition time to complete the effect. It should be from 1 to 9.
|
1033 |
|
1034 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
1035 |
|
1036 |
+
**How to customize Gallery Title for Justified Grid Layout?**
|
|
|
1037 |
|
1038 |
+
In order to customize Gallery Title of Justified Grid Layout, you would need to click on "Gallery Title" tab from top of the page.
|
1039 |
|
1040 |
+
Here is the description of each control on this page.
|
1041 |
|
1042 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Gallery Title.
|
1043 |
|
1044 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Gallery Title.
|
1045 |
|
1046 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Gallery Title.
|
1047 |
|
1048 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Gallery Title.
|
|
|
1049 |
|
1050 |
+
**Margin:** In this field, you would need to provide "Margin" for Gallery Title.
|
1051 |
|
1052 |
+
**Padding:** In this field, you would need to provide "Padding" for Gallery Title.
|
1053 |
|
1054 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
1055 |
|
1056 |
+
**How to customize Gallery Description for Justified Grid Layout?**
|
1057 |
|
1058 |
+
In order to customize Gallery Description of Justified Grid Layout, you would need to click on "Gallery Description" tab from top of the page.
|
1059 |
|
1060 |
+
Here is the description of each control on this page.
|
|
|
|
|
1061 |
|
1062 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Gallery Description.
|
1063 |
|
1064 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Gallery Description.
|
|
|
|
|
1065 |
|
1066 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Gallery Description.
|
1067 |
|
1068 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Gallery Description.
|
|
|
1069 |
|
1070 |
+
**Margin:** In this field, you would need to provide "Margin" for Gallery Description.
|
1071 |
|
1072 |
+
**Padding:** In this field, you would need to provide "Padding" for Gallery Description.
|
|
|
1073 |
|
1074 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
1075 |
|
1076 |
+
**How to customize Thumbnail Title for Justified Grid Layout?**
|
1077 |
|
1078 |
+
In order to customize Thumbnail Title of Justified Grid Layout, you would need to click on "Thumbnail Title" tab from top of the page.
|
1079 |
|
1080 |
+
Here is the description of each control on this page.
|
1081 |
|
1082 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Thumbnail Title.
|
1083 |
|
1084 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Thumbnail Title.
|
1085 |
|
1086 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Thumbnail Title.
|
1087 |
|
1088 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Thumbnail Title.
|
1089 |
|
1090 |
+
**Margin:** In this field, you would need to provide "Margin" for Thumbnail Title.
|
1091 |
|
1092 |
+
**Padding:** In this field, you would need to provide "Padding" for Thumbnail Title.
|
1093 |
|
1094 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
1095 |
|
1096 |
+
**How to customize Thumbnail Description for Justified Grid Layout?**
|
1097 |
|
1098 |
+
In order to customize Thumbnail Description of Justified Grid Layout, you would need to click on "Thumbnail Description" tab from top of the page.
|
1099 |
|
1100 |
+
Here is the description of each control on this page.
|
1101 |
|
1102 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Thumbnail Description.
|
1103 |
|
1104 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Thumbnail Description.
|
1105 |
|
1106 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Thumbnail Description.
|
1107 |
|
1108 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Thumbnail Description.
|
1109 |
|
1110 |
+
**Margin:** In this field, you would need to provide "Margin" for Thumbnail Description.
|
1111 |
|
1112 |
+
**Padding:** In this field, you would need to provide "Padding" for Thumbnail Description.
|
1113 |
|
1114 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
1115 |
|
1116 |
+
= How to manage Blog Style Layout? (Premium Edition) =
|
1117 |
|
1118 |
+
On the **Gallery Bank Navigation Panel**, select **Layout Settings - Blog Style Layout**.
|
1119 |
|
1120 |
+
You would be able to manage different Blog Style Layout settings. For this, you would need to click on particular tabs which you would like to modify from top of the page.
|
1121 |
|
1122 |
+
**How to manage Thumbnails for Blog Style Layout?**
|
1123 |
|
1124 |
+
In order to manage thumbnails for Blog Style Layout, you would need to click on "Thumbnails" tab from top of the page.
|
1125 |
|
1126 |
+
Here is the description of each control on this page.
|
1127 |
|
1128 |
+
**Background Color:** In this field, you would need to choose "Background Color" for Blog Style Layout.
|
1129 |
|
1130 |
+
**Background Transparency:** In this field, you would need to provide the level of transparency you would like to apply to a Blog Style Layout. It should be from 0 to 100.
|
1131 |
|
1132 |
+
**Blog Style Opacity:** In this field, you would need to provide Opacity for Blog Style Layout in percentage. It should be from 0 to 100.
|
1133 |
|
1134 |
+
**Border Style:** In this field, you would need to provide Width, Style and Color for Border of Blog Style Layout.
|
1135 |
|
1136 |
+
**Border Radius:** In this field, you would need to provide "Border Radius" for Blog Style Layout.
|
1137 |
|
1138 |
+
**Shadow:** In this field, you would need to provide CSS type values for "Shadow" of Blog Style Layout.
|
1139 |
|
1140 |
+
**Shadow Color:** In this field, you would need to choose "Shadow Color" for Blog Style Layout.
|
1141 |
|
1142 |
+
**Hover Effect & Value:** In this field, you would need to choose the effect to be applied to Blog Style Layout when hovered and provide specific value for selected hover effect.
|
1143 |
|
1144 |
+
**Transition:** In this field, you would need to provide Transition time to complete the effect. It should be from 1 to 9.
|
1145 |
|
1146 |
+
**Margin:** In this field, you would need to provide "Margin" for Blog Style Layout.
|
1147 |
|
1148 |
+
**Padding:** In this field, you would need to provide "Padding" for Blog Style Layout.
|
1149 |
|
1150 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
1151 |
|
1152 |
+
**How to customize Gallery Title for Blog Style Layout?**
|
1153 |
|
1154 |
+
In order to customize Gallery Title of Blog Style Layout, you would need to click on "Gallery Title" tab from top of the page.
|
1155 |
|
1156 |
+
Here is the description of each control on this page.
|
1157 |
|
1158 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Gallery Title.
|
1159 |
|
1160 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Gallery Title.
|
1161 |
|
1162 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Gallery Title.
|
1163 |
|
1164 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Gallery Title.
|
1165 |
|
1166 |
+
**Margin:** In this field, you would need to provide "Margin" for Gallery Title.
|
1167 |
|
1168 |
+
**Padding:** In this field, you would need to provide "Padding" for Gallery Title.
|
1169 |
|
1170 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
1171 |
|
1172 |
+
**How to customize Gallery Description for Blog Style Layout?**
|
|
|
1173 |
|
1174 |
+
In order to customize Gallery Description of Blog Style Layout, you would need to click on "Gallery Description" tab from top of the page.
|
1175 |
|
1176 |
+
Here is the description of each control on this page.
|
1177 |
|
1178 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Gallery Description.
|
1179 |
|
1180 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Gallery Description.
|
1181 |
|
1182 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Gallery Description.
|
1183 |
|
1184 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Gallery Description.
|
1185 |
|
1186 |
+
**Margin:** In this field, you would need to provide "Margin" for Gallery Description.
|
1187 |
|
1188 |
+
**Padding:** In this field, you would need to provide "Padding" for Gallery Description.
|
1189 |
|
1190 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
1191 |
|
1192 |
+
**How to customize Thumbnail Title for Blog Style Layout?**
|
1193 |
|
1194 |
+
In order to customize Thumbnail Title of Blog Style Layout, you would need to click on "Thumbnail Title" tab from top of the page.
|
1195 |
|
1196 |
+
Here is the description of each control on this page.
|
1197 |
|
1198 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Thumbnail Title.
|
1199 |
|
1200 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Thumbnail Title.
|
|
|
1201 |
|
1202 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Thumbnail Title.
|
1203 |
|
1204 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Thumbnail Title.
|
1205 |
|
1206 |
+
**Margin:** In this field, you would need to provide "Margin" for Thumbnail Title.
|
1207 |
|
1208 |
+
**Padding:** In this field, you would need to provide "Padding" for Thumbnail Title.
|
1209 |
|
1210 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
1211 |
|
1212 |
+
**How to customize Thumbnail Description for Blog Style Layout?**
|
1213 |
|
1214 |
+
In order to customize Thumbnail Description of Blog Style Layout, you would need to click on "Thumbnail Description" tab from top of the page.
|
1215 |
|
1216 |
+
Here is the description of each control on this page.
|
|
|
1217 |
|
1218 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Thumbnail Description.
|
1219 |
|
1220 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Thumbnail Description.
|
1221 |
|
1222 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Thumbnail Description.
|
1223 |
|
1224 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Thumbnail Description.
|
1225 |
|
1226 |
+
**Margin:** In this field, you would need to provide "Margin" for Thumbnail Description.
|
1227 |
|
1228 |
+
**Padding:** In this field, you would need to provide "Padding" for Thumbnail Description.
|
1229 |
|
1230 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
1231 |
|
1232 |
+
= How to manage Compact Album Layout? (Premium Edition) =
|
|
|
1233 |
|
1234 |
+
On the **Gallery Bank Navigation Panel**, select **Layout Settings - Compact Album Layout**.
|
1235 |
|
1236 |
+
You would be able to manage different Compact Album Layout settings. For this, you would need to click on particular tabs which you would like to modify from top of the page.
|
|
|
|
|
|
|
|
|
1237 |
|
1238 |
+
**How to manage Thumbnails for Compact Album Layout?**
|
1239 |
|
1240 |
+
In order to manage thumbnails for Compact Album Layout, you would need to click on "Thumbnails" tab from top of the page.
|
|
|
1241 |
|
1242 |
+
Here is the description of each control on this page.
|
1243 |
|
1244 |
+
**Thumbnail Dimensions:** In this field, you would need to provide "Width and Height" for image thumbnails.
|
1245 |
|
1246 |
+
**Background Color & Transparency:** In this field, you would need to choose "Color and Opacity" for background. Transparency should be from 0 to 100.
|
1247 |
|
1248 |
+
**Thumbnail Opacity:** In this field, you would need to provide Opacity for Thumbnail in percentage. It should be from 0 to 100.
|
|
|
1249 |
|
1250 |
+
**Border Style:** In this field, you would need to provide Width, Style and Color for Border of Album.
|
1251 |
|
1252 |
+
**Border Radius:** In this field, you would need to provide "Border Radius" of Album.
|
1253 |
|
1254 |
+
**Shadow:** In this field, you would need to provide CSS type values for "Shadow" of Album.
|
1255 |
|
1256 |
+
**Shadow Color:** In this field, you would need to choose "Shadow Color" of Album.
|
1257 |
|
1258 |
+
**Hover Effect & Value:** In this field, you would need to choose the effect to be applied to Compact Album Layout when hovered and provide specific value for selected hover effect.
|
1259 |
|
1260 |
+
**Transition:** In this field, you would need to provide Transition time to complete the effect. It should be from 1 to 9.
|
1261 |
|
1262 |
+
**Margin:** In this field, you would need to provide "Margin" of Album.
|
1263 |
|
1264 |
+
**Padding:** In this field, you would need to provide "Padding" of Album.
|
1265 |
|
1266 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
1267 |
|
1268 |
+
**How to customize Album Title for Compact Album Layout?**
|
1269 |
|
1270 |
+
In order to customize Album Title of Compact Album Layout, you would need to click on "Album Title" tab from top of the page.
|
1271 |
|
1272 |
+
Here is the description of each control on this page.
|
1273 |
|
1274 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Album Title.
|
1275 |
|
1276 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Album Title.
|
1277 |
|
1278 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Album Title.
|
1279 |
|
1280 |
+
**Line Height:** In this field, you would need to provide "Line Height" for Album Title.
|
1281 |
|
1282 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Album Title.
|
1283 |
|
1284 |
+
**Margin:** In this field, you would need to provide "Margin" for Album Title.
|
|
|
1285 |
|
1286 |
+
**Padding:** In this field, you would need to provide "Padding" for Album Title.
|
1287 |
|
1288 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
|
|
1289 |
|
1290 |
+
**How to customize Album Description for Compact Album Layout?**
|
1291 |
|
1292 |
+
In order to customize Album Description of Compact Album Layout, you would need to click on "Album Description" tab from top of the page.
|
|
|
|
|
1293 |
|
1294 |
+
Here is the description of each control on this page.
|
1295 |
|
1296 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Album Description.
|
|
|
|
|
1297 |
|
1298 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Album Description.
|
1299 |
|
1300 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Album Description.
|
|
|
|
|
|
|
1301 |
|
1302 |
+
**Line Height:** In this field, you would need to provide "Line Height" for Album Description.
|
1303 |
|
1304 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Album Description.
|
|
|
|
|
1305 |
|
1306 |
+
**Margin:** In this field, you would need to provide "Margin" for Album Description.
|
1307 |
|
1308 |
+
**Padding:** In this field, you would need to provide "Padding" for Album Description.
|
|
|
|
|
1309 |
|
1310 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
1311 |
|
1312 |
+
**How to customize Gallery Title for Compact Album Layout?**
|
|
|
|
|
1313 |
|
1314 |
+
In order to customize Gallery Title of Compact Album Layout, you would need to click on "Gallery Title" tab from top of the page.
|
1315 |
|
1316 |
+
Here is the description of each control on this page.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1317 |
|
1318 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Gallery Title.
|
1319 |
|
1320 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Gallery Title.
|
1321 |
|
1322 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Gallery Title.
|
1323 |
|
1324 |
+
**Line Height:** In this field, you would need to provide "Line Height" for Gallery Title.
|
1325 |
|
1326 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Gallery Title.
|
1327 |
|
1328 |
+
**Margin:** In this field, you would need to provide "Margin" for Gallery Title.
|
|
|
|
|
|
|
|
|
1329 |
|
1330 |
+
**Padding:** In this field, you would need to provide "Padding" for Gallery Title.
|
1331 |
|
1332 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
1333 |
|
1334 |
+
**How to customize Gallery Description for Compact Album Layout?**
|
1335 |
|
1336 |
+
In order to customize Gallery Description of Compact Album Layout, you would need to click on "Gallery Description" tab from top of the page.
|
1337 |
|
1338 |
+
Here is the description of each control on this page.
|
1339 |
|
1340 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Gallery Description.
|
|
|
|
|
1341 |
|
1342 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Gallery Description.
|
1343 |
|
1344 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Gallery Description.
|
|
|
1345 |
|
1346 |
+
**Line Height:** In this field, you would need to provide "Line Height" for Gallery Description.
|
1347 |
|
1348 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Gallery Description.
|
1349 |
|
1350 |
+
**Margin:** In this field, you would need to provide "Margin" for Gallery Description.
|
1351 |
|
1352 |
+
**Padding:** In this field, you would need to provide "Padding" for Gallery Description.
|
1353 |
|
1354 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
1355 |
|
1356 |
+
**How to customize Buttons for Compact Album Layout?**
|
|
|
|
|
1357 |
|
1358 |
+
In order to customize Buttons of Compact Album Layout, you would need to click on "Buttons" tab from top of the page.
|
1359 |
|
1360 |
+
Here is the description of each control on this page.
|
1361 |
|
1362 |
+
**Button Text:** In this field, you would need to provide text that would be display on the Button.
|
1363 |
|
1364 |
+
**Button Text Alignment:** In this field, you would need to choose "Button Text Alignment" for Button.
|
1365 |
|
1366 |
+
**Button Color:** In this field, you would need to choose "Button Color" for Button.
|
1367 |
|
1368 |
+
**Button Hover Color:** In this field, you would need to choose "Button Hover Color" for Button.
|
1369 |
|
1370 |
+
**Border Style:** In this field, you would need to provide Width, Style and Color for Border of Button.
|
1371 |
|
1372 |
+
**Border Hover Color:** In this field, you would need to choose "Border Hover Color" for Button.
|
|
|
1373 |
|
1374 |
+
**Border Radius:** In this field, you would need to provide "Border Radius" for Button.
|
1375 |
|
1376 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Button.
|
|
|
|
|
1377 |
|
1378 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Button.
|
1379 |
|
1380 |
+
**Margin:** In this field, you would need to provide "Margin" for Button.
|
|
|
|
|
1381 |
|
1382 |
+
**Padding:** In this field, you would need to provide "Padding" for Button.
|
1383 |
|
1384 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
|
|
|
|
1385 |
|
1386 |
+
= How to manage Extended Album Layout? (Premium Edition) =
|
1387 |
|
1388 |
+
On the **Gallery Bank Navigation Panel**, select **Layout Settings - Extended Album Layout**.
|
1389 |
|
1390 |
+
You would be able to manage different Extended Album Layout settings. For this, you would need to click on particular tabs which you would like to modify from top of the page.
|
1391 |
|
1392 |
+
**How to manage Thumbnails for Extended Album Layout?**
|
|
|
|
|
|
|
1393 |
|
1394 |
+
In order to manage thumbnails for Extended Album Layout, you would need to click on "Thumbnails" tab from top of the page.
|
1395 |
|
1396 |
+
Here is the description of each control on this page.
|
|
|
1397 |
|
1398 |
+
**Thumbnail Dimensions:** In this field, you would need to provide "Width and Height" for image thumbnails.
|
1399 |
|
1400 |
+
**Background Color & Transparency:** In this field, you would need to choose "Color and Opacity" for background. Transparency should be from 0 to 100.
|
|
|
|
|
|
|
|
|
|
|
1401 |
|
1402 |
+
**Thumbnail Opacity:** In this field, you would need to provide Opacity for Thumbnail in percentage. It should be from 0 to 100.
|
1403 |
|
1404 |
+
**Border Style:** In this field, you would need to provide Width, Style and Color for Border of Album.
|
1405 |
|
1406 |
+
**Border Radius:** In this field, you would need to provide "Border Radius" of Album.
|
1407 |
|
1408 |
+
**Shadow:** In this field, you would need to provide CSS type values for "Shadow" of Album.
|
|
|
1409 |
|
1410 |
+
**Shadow Color:** In this field, you would need to choose "Shadow Color" of Album.
|
1411 |
|
1412 |
+
**Hover Effect & Value:** In this field, you would need to choose the effect to be applied to Compact Album Layout when hovered and provide specific value for selected hover effect.
|
|
|
1413 |
|
1414 |
+
**Transition:** In this field, you would need to provide Transition time to complete the effect. It should be from 1 to 9.
|
1415 |
|
1416 |
+
**Margin:** In this field, you would need to provide "Margin" of Album.
|
|
|
1417 |
|
1418 |
+
**Padding:** In this field, you would need to provide "Padding" of Album.
|
1419 |
|
1420 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
|
|
|
|
1421 |
|
1422 |
+
**How to customize Album Title for Extended Album Layout?**
|
1423 |
|
1424 |
+
In order to customize Album Title of Extended Album Layout, you would need to click on "Album Title" tab from top of the page.
|
|
|
|
|
1425 |
|
1426 |
+
Here is the description of each control on this page.
|
1427 |
|
1428 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Album Title.
|
|
|
1429 |
|
1430 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Album Title.
|
1431 |
|
1432 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Album Title.
|
1433 |
|
1434 |
+
**Line Height:** In this field, you would need to provide "Line Height" for Album Title.
|
1435 |
|
1436 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Album Title.
|
1437 |
|
1438 |
+
**Margin:** In this field, you would need to provide "Margin" for Album Title.
|
1439 |
|
1440 |
+
**Padding:** In this field, you would need to provide "Padding" for Album Title.
|
1441 |
|
1442 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
1443 |
|
1444 |
+
**How to customize Album Description for Extended Album Layout?**
|
|
|
1445 |
|
1446 |
+
In order to customize Album Description of Extended Album Layout, you would need to click on "Album Description" tab from top of the page.
|
1447 |
|
1448 |
+
Here is the description of each control on this page.
|
|
|
1449 |
|
1450 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Album Description.
|
1451 |
|
1452 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Album Description.
|
|
|
|
|
1453 |
|
1454 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Album Description.
|
1455 |
|
1456 |
+
**Line Height:** In this field, you would need to provide "Line Height" for Album Description.
|
|
|
|
|
1457 |
|
1458 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Album Description.
|
1459 |
|
1460 |
+
**Margin:** In this field, you would need to provide "Margin" for Album Description.
|
|
|
1461 |
|
1462 |
+
**Padding:** In this field, you would need to provide "Padding" for Album Description.
|
1463 |
|
1464 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
|
|
1465 |
|
1466 |
+
**How to customize Gallery Title for Extended Album Layout?**
|
1467 |
|
1468 |
+
In order to customize Gallery Title of Extended Album Layout, you would need to click on "Gallery Title" tab from top of the page.
|
|
|
1469 |
|
1470 |
+
Here is the description of each control on this page.
|
1471 |
|
1472 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Gallery Title.
|
1473 |
+
|
1474 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Gallery Title.
|
1475 |
+
|
1476 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Gallery Title.
|
1477 |
+
|
1478 |
+
**Line Height:** In this field, you would need to provide "Line Height" for Gallery Title.
|
1479 |
+
|
1480 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Gallery Title.
|
1481 |
+
|
1482 |
+
**Margin:** In this field, you would need to provide "Margin" for Gallery Title.
|
1483 |
+
|
1484 |
+
**Padding:** In this field, you would need to provide "Padding" for Gallery Title.
|
1485 |
+
|
1486 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
1487 |
+
|
1488 |
+
**How to customize Gallery Description for Extended Album Layout?**
|
1489 |
+
|
1490 |
+
In order to customize Gallery Description of Extended Album Layout, you would need to click on "Gallery Description" tab from top of the page.
|
1491 |
+
|
1492 |
+
Here is the description of each control on this page.
|
1493 |
+
|
1494 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Gallery Description.
|
1495 |
+
|
1496 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Gallery Description.
|
1497 |
+
|
1498 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Gallery Description.
|
1499 |
+
|
1500 |
+
**Line Height:** In this field, you would need to provide "Line Height" for Gallery Description.
|
1501 |
+
|
1502 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Gallery Description.
|
1503 |
+
|
1504 |
+
**Margin:** In this field, you would need to provide "Margin" for Gallery Description.
|
1505 |
+
|
1506 |
+
**Padding:** In this field, you would need to provide "Padding" for Gallery Description.
|
1507 |
+
|
1508 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
1509 |
+
|
1510 |
+
**How to customize Buttons for Extended Album Layout?**
|
1511 |
+
|
1512 |
+
In order to customize Buttons of Extended Album Layout, you would need to click on "Buttons" tab from top of the page.
|
1513 |
+
|
1514 |
+
Here is the description of each control on this page.
|
1515 |
+
|
1516 |
+
**Button Text:** In this field, you would need to provide text that would be display on the Button.
|
1517 |
+
|
1518 |
+
**Button Text Alignment:** In this field, you would need to choose "Button Text Alignment" for Button.
|
1519 |
+
|
1520 |
+
**Button Color:** In this field, you would need to choose "Button Color" for Button.
|
1521 |
+
|
1522 |
+
**Button Hover Color:** In this field, you would need to choose "Button Hover Color" for Button.
|
1523 |
+
|
1524 |
+
**Border Style:** In this field, you would need to provide Width, Style and Color for Border of Button.
|
1525 |
+
|
1526 |
+
**Border Hover Color:** In this field, you would need to choose "Border Hover Color" for Button.
|
1527 |
+
|
1528 |
+
**Border Radius:** In this field, you would need to provide "Border Radius" for Button.
|
1529 |
+
|
1530 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Button.
|
1531 |
+
|
1532 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Button.
|
1533 |
+
|
1534 |
+
**Margin:** In this field, you would need to provide "Margin" for Button.
|
1535 |
+
|
1536 |
+
**Padding:** In this field, you would need to provide "Padding" for Button.
|
1537 |
+
|
1538 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
1539 |
+
|
1540 |
+
**How to manage Custom CSS?**
|
1541 |
+
|
1542 |
+
On the **Gallery Bank Navigation Panel**, click on **Layout Settings - Custom CSS**.
|
1543 |
+
|
1544 |
+
**Custom CSS:** In this field, you would need to provide CSS code manually to add extra styling to the layout of Gallery Bank. This CSS style will override the plugins css and provide you the ability to customize the settings for various layouts in Gallery Bank.
|
1545 |
+
|
1546 |
+
Once everything is being setup, you would need to click on "Save Changes" button located at the bottom of the page to save the changes.
|
1547 |
+
|
1548 |
+
= How to manage Lightboxes? (Premium Edition) =
|
1549 |
+
|
1550 |
+
Gallery Bank includes the following five lightboxes:
|
1551 |
+
|
1552 |
+
* Lightcase
|
1553 |
+
* Fancy Box
|
1554 |
+
* Color Box
|
1555 |
+
* Foo Box Free Edition
|
1556 |
+
* Nivo Lightbox
|
1557 |
+
|
1558 |
+
Gallery Bank allows you to display your photos in a lightbox when they're clicked. They seamlessly integrate with our gallery plugin.
|
1559 |
+
|
1560 |
+
Our lightbox comes with several controls such as arrow navigation, keyboard navigation, mousewheel scroll navigation options. It also provides you the ability to customize various settings such as title, description, fonts, border, autoplay slideshow, background, overlay, opacity and much more.
|
1561 |
+
|
1562 |
+
= How to customize Lightcase Lightbox? (Premium Edition) =
|
1563 |
+
|
1564 |
+
On the **Gallery Bank Navigation Panel**, select **Lightboxes - Lightcase**.
|
1565 |
+
|
1566 |
+
you would be able to manage different Lightcase Lightbox settings. For this, you would need to click on particular tabs which you would like to modify from top of the page.
|
1567 |
+
|
1568 |
+
**How to customize Settings for Lightcase?**
|
1569 |
+
|
1570 |
+
In order to manage settings for Lightcase, you would need to click on "Settings" tab from top of the page.
|
1571 |
+
|
1572 |
+
Here is the description of each control on this page.
|
1573 |
+
|
1574 |
+
**Autoplay Slideshow:** In this field, you would need to choose "Enable" to autoplay the slideshow in Lightcase.
|
1575 |
+
|
1576 |
+
**Transition:** In this field, you would need to choose "Transition Effect" for Lightbox.
|
1577 |
+
|
1578 |
+
**Starting Transition Speed:** In this field, you would need to provide Starting Transition Speed for Lightbox.
|
1579 |
+
|
1580 |
+
**Ending Transition Speed:** In this field, you would need to provide Ending Transition Speed for Lightbox.
|
1581 |
+
|
1582 |
+
**Overlay Color:** In this field, you would need to choose Color for Overlay.
|
1583 |
+
|
1584 |
+
**Overlay Opacity:** In this field, you would need to provide Opacity for Overlay. It should be from 0 to 100.
|
1585 |
+
|
1586 |
+
**Button Style:** In this field, you would need to provide Font Size and Color for Buttons in Lightcase Lightbox.
|
1587 |
+
|
1588 |
+
**Close Button:** In this field, you would need to choose "Show" to display Close Button.
|
1589 |
+
|
1590 |
+
**Image Counter:** In this field, you would need to choose "Show" to display image counter in Lightbox.
|
1591 |
+
|
1592 |
+
**Counter Font Style:** In this field, you would need to provide Font Size and Color for image counter.
|
1593 |
+
|
1594 |
+
**Counter Font Family:** In this field, you would need to choose "Font Family" for image counter.
|
1595 |
+
|
1596 |
+
**Border Style:** In this field, you would need to provide Width, Style and Color for border of Lightcase Lightbox.
|
1597 |
+
|
1598 |
+
**Border Radius:** In this field, you would need to provide "Border Radius" for Lightcase Lightbox.
|
1599 |
+
|
1600 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
1601 |
+
|
1602 |
+
**How to customize Image Title for Lightcase?**
|
1603 |
+
|
1604 |
+
In order to manage image title for Lightcase, you would need to click on "Image Title" tab from top of the page.
|
1605 |
+
|
1606 |
+
Here is the description of each control on this page.
|
1607 |
+
|
1608 |
+
**Title:** In this field, you would need to choose "Show" to display Title for image in Lightcase.
|
1609 |
+
|
1610 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Image Title.
|
1611 |
+
|
1612 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Image Title.
|
1613 |
+
|
1614 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Image Title.
|
1615 |
+
|
1616 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Image Title.
|
1617 |
+
|
1618 |
+
**Margin:** In this field, you would need to provide "Margin" for Image Title.
|
1619 |
+
|
1620 |
+
**Padding:** In this field, you would need to provide "Padding" for Image Title.
|
1621 |
+
|
1622 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
1623 |
+
|
1624 |
+
**How to customize Image Description for Lightcase?**
|
1625 |
+
|
1626 |
+
In order to manage image description for Lightcase, you would need to click on "Image Description" tab from top of the page.
|
1627 |
+
|
1628 |
+
Here is the description of each control on this page.
|
1629 |
+
|
1630 |
+
**Description:** In this field, you would need to choose "Show" to display Description for image in Lightcase.
|
1631 |
+
|
1632 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Image Description.
|
1633 |
+
|
1634 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Image Description.
|
1635 |
+
|
1636 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Image Description.
|
1637 |
+
|
1638 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Image Description.
|
1639 |
+
|
1640 |
+
**Margin:** In this field, you would need to provide "Margin" for Image Description.
|
1641 |
+
|
1642 |
+
**Padding:** In this field, you would need to provide "Padding" for Image Description.
|
1643 |
+
|
1644 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
1645 |
+
|
1646 |
+
= How to customize Fancy Box? (Premium Edition) =
|
1647 |
+
|
1648 |
+
On the **Gallery Bank Navigation Panel**, select **Lightboxes - Fancy Box**.
|
1649 |
+
|
1650 |
+
You would be able to manage different Fancy Box settings. For this, you would need to click on particular tabs which you would like to modify from top of the page.
|
1651 |
+
|
1652 |
+
**How to customize Settings for Fancy Box?**
|
1653 |
+
|
1654 |
+
In order to manage settings for Fancy Box, you would need to click on "Settings" tab from top of the page.
|
1655 |
+
|
1656 |
+
Here is the description of each control on this page.
|
1657 |
+
|
1658 |
+
**Title Position:** In this field, you would need to choose position for Title from the provided options.
|
1659 |
+
|
1660 |
+
**Button Position:** In this field, you would need to choose "Button Position" for Fancy Box.
|
1661 |
+
|
1662 |
+
**Navigation Arrows:** In this field, you would need to choose "Show" to display navigation arrows.
|
1663 |
+
|
1664 |
+
**Mouse Wheel:** If you would like that Fancy Box will respond to mouse wheel events, then you would need to choose "Enable" from dropdown or vice-versa.
|
1665 |
+
|
1666 |
+
**Repeat Images:** If you would like to repeat images in lightbox, then you would need to choose "Enable" from dropdown or vice-versa.
|
1667 |
+
|
1668 |
+
**Speed:** In this field, you would need to provide "Speed" for slideshow in Fancy Box.
|
1669 |
+
|
1670 |
+
**Open speed:** In this field, you would need to provide speed of opening for Fancy Box.
|
1671 |
+
|
1672 |
+
**Close speed:** In this field, you would need to provide speed of closing for Fancy Box.
|
1673 |
+
|
1674 |
+
**Escape Button:** In this field, you would need to choose "Enable" to close image with Esc Button on keyboard.
|
1675 |
+
|
1676 |
+
**Close Button:** In this field, you would need to choose "Show" to display Close Button.
|
1677 |
+
|
1678 |
+
**Open Effect:** In this field, you would need to choose an opening effect for Fancy Box.
|
1679 |
+
|
1680 |
+
**Close Effect:** In this field, you would need to choose a closing effect for Fancy Box.
|
1681 |
+
|
1682 |
+
**Margin:** In this field, you would need to provide "Margin" for Fancy Box.
|
1683 |
+
|
1684 |
+
**Padding:** In this field, you would need to "Padding" for Fancy Box.
|
1685 |
+
|
1686 |
+
**Background Color:** In this field, you would need to choose "Background Color" for Fancy Box.
|
1687 |
+
|
1688 |
+
**Background Opacity:** In this field, you would need to provide "Background Opacity" for Fancy Box. It should be from 0 to 100.
|
1689 |
+
|
1690 |
+
**Overlay Color:** In this field, you would need to choose Color for Overlay.
|
1691 |
+
|
1692 |
+
**Overlay Opacity:** In this field, you would need to provide Opacity for Overlay. It should be from 0 to 100.
|
1693 |
+
|
1694 |
+
**Border Style:** In this field, you would need to provide Width, Style and Color for border of Fancy Box.
|
1695 |
+
|
1696 |
+
**Border Radius:** In this field, you would need to provide "Border Radius" for Fancy Box.
|
1697 |
+
|
1698 |
+
Once everything is being setup, you would need to click on "Save Changes" button located at bottom of the page to save the settings.
|
1699 |
+
|
1700 |
+
**How to customize Image Title for Fancy Box?**
|
1701 |
+
|
1702 |
+
In order to manage image title for Fancy Box, you would need to click on "Image Title" tab from top of the page.
|
1703 |
+
|
1704 |
+
Here is the description of each control on this page.
|
1705 |
+
|
1706 |
+
**Title:** In this field, you would need to choose "Show" to display Title for image in Fancy Box.
|
1707 |
+
|
1708 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Image Title.
|
1709 |
+
|
1710 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Image Title.
|
1711 |
+
|
1712 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Image Title.
|
1713 |
+
|
1714 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Image Title.
|
1715 |
+
|
1716 |
+
**Margin:** In this field, you would need to provide "Margin" for Image Title.
|
1717 |
+
|
1718 |
+
**Padding:** In this field, you would need to provide "Padding" for Image Title.
|
1719 |
+
|
1720 |
+
Once everything is being setup, you would need to click on "Save Changes" button located at bottom of the page to save the settings.
|
1721 |
+
|
1722 |
+
**How to customize Image Description for Fancy Box?**
|
1723 |
+
|
1724 |
+
In order to manage image description for Fancy Box, you would need to click on "Image Description" tab from top of the page.
|
1725 |
+
|
1726 |
+
Here is the description of each control on this page.
|
1727 |
+
|
1728 |
+
**Description:** In this field, you would need to choose "Show" to display Description for image in Fancy Box.
|
1729 |
+
|
1730 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Image Description.
|
1731 |
+
|
1732 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Image Description.
|
1733 |
+
|
1734 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Image Description.
|
1735 |
+
|
1736 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Image Description.
|
1737 |
+
|
1738 |
+
**Margin:** In this field, you would need to provide "Margin" for Image Description.
|
1739 |
+
|
1740 |
+
**Padding:** In this field, you would need to provide "Padding" for Image Description.
|
1741 |
+
|
1742 |
+
Once everything is being setup, you would need to click on "Save Changes" button located at bottom of the page to save the settings.
|
1743 |
+
|
1744 |
+
= How to customize Color Box? (Premium Edition) =
|
1745 |
+
|
1746 |
+
On the **Gallery Bank Navigation Panel**, select **Lightboxes - Color Box**.
|
1747 |
+
|
1748 |
+
You would be able to manage different Color Box settings. For this, you would need to click on particular tabs which you would like to modify from top of the page.
|
1749 |
+
|
1750 |
+
**How to customize Settings for Color Box?**
|
1751 |
+
|
1752 |
+
In order to manage settings for Color Box, you would need to click on "Settings" tab from top of the page.
|
1753 |
+
|
1754 |
+
Here is the description of each control on this page.
|
1755 |
+
|
1756 |
+
**Color Box Type:** In this field, you would need to choose one of designed styles for Color Box.
|
1757 |
+
|
1758 |
+
**Color Box Transition Effect:** In this field, you would need to choose "Transition Effect" for Color Box.
|
1759 |
+
|
1760 |
+
**Transition Speed:** In this field, you would need to provide "Transition Speed" for Color Box.
|
1761 |
+
|
1762 |
+
**Fade Out:** In this field, you would need to provide speed at which the images in Color Box would Fade Out.
|
1763 |
+
|
1764 |
+
**Positioning:** In this field, you would need to choose Position for Color Box.
|
1765 |
+
|
1766 |
+
**Fixed Position:** If you would not like to change position of lightbox while scrolling up or down, then you would need to choose "Enable" from dropdown or vice-versa.
|
1767 |
+
|
1768 |
+
**Open when page load:** In this field, you would need to choose "Enable" to display Color Box at page loading.
|
1769 |
+
|
1770 |
+
**Show Close Button:** In this field, you would need to choose "Enable" to display Close Button.
|
1771 |
+
|
1772 |
+
**Slideshow:** If you would like to display slideshow in Color Box, then you would need to choose "Enable" or vice-versa.
|
1773 |
+
|
1774 |
+
**Slideshow Speed:** This option becomes visible when slideshow option is enabled. In this field, you would need to provide "Speed" for slideshow.
|
1775 |
+
|
1776 |
+
**Auto Slideshow:** This option becomes visible when slideshow option is enabled. In this field, you would need to choose "Enable" to autoplay the slideshow.
|
1777 |
+
|
1778 |
+
**Background Color:** In this field, you would need to choose "Background Color".
|
1779 |
+
|
1780 |
+
**Background Opacity:** In this field, you would need to provide "Background Opacity". It should be from 0 to 100.
|
1781 |
+
|
1782 |
+
Once everything is being setup, you would need to click on "Save Changes" button located at bottom of the page to save the settings.
|
1783 |
+
|
1784 |
+
**How to customize Image Title for Color Box?**
|
1785 |
+
|
1786 |
+
In order to manage image title for Color Box, you would need to click on "Image Title" tab from top of the page.
|
1787 |
+
|
1788 |
+
Here is the description of each control on this page.
|
1789 |
+
|
1790 |
+
**Title:** In this field, you would need to choose "Show" to display Title for image in Lightbox.
|
1791 |
+
|
1792 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Image Title.
|
1793 |
+
|
1794 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Image Title.
|
1795 |
+
|
1796 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Image Title.
|
1797 |
+
|
1798 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Image Title.
|
1799 |
+
|
1800 |
+
**Margin:** In this field, you would need to provide "Margin" for Image Title.
|
1801 |
+
|
1802 |
+
**Padding:** In this field, you would need to provide "Padding" for Image Title.
|
1803 |
+
|
1804 |
+
Once everything is being setup, you would need to click on "Save Changes" button located at bottom of the page to save the settings.
|
1805 |
+
|
1806 |
+
**How to customize Image Description for Color Box?**
|
1807 |
+
|
1808 |
+
In order to manage image description for Color Box, you would need to click on "Image Description" tab from top of the page.
|
1809 |
+
|
1810 |
+
Here is the description of each control on this page.
|
1811 |
+
|
1812 |
+
**Description:** In this field, you would need to choose "Show" to display Image Description.
|
1813 |
+
|
1814 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Image Description.
|
1815 |
+
|
1816 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Image Description.
|
1817 |
+
|
1818 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Image Description.
|
1819 |
+
|
1820 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Image Description.
|
1821 |
+
|
1822 |
+
**Margin:** In this field, you would need to provide "Margin" for Image Description.
|
1823 |
+
|
1824 |
+
**Padding:** In this field, you would need to provide "Padding" for Image Description.
|
1825 |
+
|
1826 |
+
Once everything is being setup, you would need to click on "Save Changes" button located at bottom of the page to save the settings.
|
1827 |
+
|
1828 |
+
= How to customize Foo Box? (Premium Edition) =
|
1829 |
+
|
1830 |
+
On the **Gallery Bank Navigation Panel**, select **Lightboxes - Foo Box Free Edition**.
|
1831 |
+
|
1832 |
+
You would be able to manage different Foo Box settings. For this, you would need to click on particular tabs which you would like to modify from top of the page.
|
1833 |
+
|
1834 |
+
**How to customize Settings for Foo Box?**
|
1835 |
+
|
1836 |
+
In order to manage settings for Foo Box, you would need to click on "Settings" tab from top of the page.
|
1837 |
+
|
1838 |
+
Here is the description of each control on this page.
|
1839 |
+
|
1840 |
+
**Show Count:** In this field, you would need to choose "Enable" to display count of images in Lightbox.
|
1841 |
+
|
1842 |
+
**Hide Page Scrollbars:** In this field, you would need to choose "Enable" to hide page scrollbars.
|
1843 |
+
|
1844 |
+
**Title Show On Hover:** If you would like to display Title on hover of images, then you would need to choose "Enable" from dropdown or vice-versa.
|
1845 |
+
|
1846 |
+
**Close Overlay Click:** If you would like to close lightbox by clicking on overlay, then you would need to choose "Enable" from dropdown or vice-versa.
|
1847 |
+
|
1848 |
+
**Overlay Color:** In this field, you would need to choose Color for Overlay.
|
1849 |
+
|
1850 |
+
**Overlay Opacity:** In this field, you would need to provide Opacity for Overlay. It should be from 0 to 100.
|
1851 |
+
|
1852 |
+
**Border Style:** In this field, you would need to provide Width, Style and Color for border of Lightbox.
|
1853 |
+
|
1854 |
+
**Border Radius:** In this field, you would need to provide "Border Radius" for Lightbox.
|
1855 |
+
|
1856 |
+
Once everything is being setup, you would need to click on "Save Changes" button located at bottom of the page to save the settings.
|
1857 |
+
|
1858 |
+
**How to customize Image Title for Foo Box?**
|
1859 |
+
|
1860 |
+
In order to manage image title for Foo Box, you would need to click on "Image Title" tab from top of the page.
|
1861 |
+
|
1862 |
+
Here is the description of each control on this page.
|
1863 |
+
|
1864 |
+
**Title:** In this field, you would need to choose "Show" to display Image Title.
|
1865 |
+
|
1866 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Image Title.
|
1867 |
+
|
1868 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Image Title.
|
1869 |
+
|
1870 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Image Title.
|
1871 |
+
|
1872 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Image Title.
|
1873 |
+
|
1874 |
+
**Margin:** In this field, you would need to provide "Margin" for Image Title.
|
1875 |
+
|
1876 |
+
**Padding:** In this field, you would need to provide "Padding" for Image Title.
|
1877 |
+
|
1878 |
+
Once everything is being setup, you would need to click on "Save Changes" button located at bottom of the page to save the settings.
|
1879 |
+
|
1880 |
+
How to customize Image Description for Foo Box?
|
1881 |
+
|
1882 |
+
In order to manage image description for Foo Box, you would need to click on "Image Description" tab from top of the page.
|
1883 |
+
|
1884 |
+
Here is the description of each control on this page.
|
1885 |
+
|
1886 |
+
**Description:** In this field, you would need to choose "Show" to display Image Description.
|
1887 |
+
|
1888 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Image Description.
|
1889 |
+
|
1890 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Image Description.
|
1891 |
+
|
1892 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Image Description.
|
1893 |
+
|
1894 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Image Description.
|
1895 |
+
|
1896 |
+
**Margin:** In this field, you would need to provide "Margin" for Image Description.
|
1897 |
+
|
1898 |
+
**Padding:** In this field, you would need to provide "Padding" for Image Description.
|
1899 |
+
|
1900 |
+
Once everything is being setup, you would need to click on "Save Changes" button located at bottom of the page to save the settings.
|
1901 |
+
|
1902 |
+
= How to customize Nivo Lightbox? (Premium Edition) =
|
1903 |
+
|
1904 |
+
On the **Gallery Bank Navigation Panel**, select **Lightboxes - Nivo Lightbox**.
|
1905 |
+
|
1906 |
+
You would be able to manage different Nivo Lightbox settings. For this, you would need to click on particular tabs which you would like to modify from top of the page.
|
1907 |
+
|
1908 |
+
**How to customize Settings for Nivo Lightbox?**
|
1909 |
+
|
1910 |
+
In order to manage settings for Nivo Lightbox, you would need to click on "Settings" tab from top of the page.
|
1911 |
+
|
1912 |
+
Here is the description of each control on this page.
|
1913 |
+
|
1914 |
+
**Choose Open Effects:** In this field, you would need to choose Effect which is to be applied on opening of Nivo Lightbox.
|
1915 |
+
|
1916 |
+
**Keyboard Navigation:** If you would like to navigate images from keyboard arrow keys, then you would need to choose "Enable" from dropdown or vice-versa.
|
1917 |
+
|
1918 |
+
**Click Image To Close:** If you would like to close lightbox by clicking on image, then you would need to choose "Enable" from dropdown or vice-versa.
|
1919 |
+
|
1920 |
+
**Click Overlay To Close:** If you would like to close lightbox by clicking on overlay, then you would need to choose "Enable" from dropdown or vice-versa.
|
1921 |
+
|
1922 |
+
**Overlay Color:** In this field, you would need to choose Color for Overlay.
|
1923 |
+
|
1924 |
+
**Overlay Opacity:** In this field, you would need to provide Opacity for Overlay. It should be from 0 to 100.
|
1925 |
+
|
1926 |
+
**Border Style:** In this field, you would need to provide Width, Style and Color for border of Nivo Lightbox.
|
1927 |
+
|
1928 |
+
**Border Radius:** In this field, you would need to provide "Border Radius" for Nivo Lightbox.
|
1929 |
+
|
1930 |
+
Once everything is being setup, you would need to click on "Save Changes" button located at bottom of the page to save the settings.
|
1931 |
+
|
1932 |
+
**How to customize Image Title for Nivo Lightbox?**
|
1933 |
+
|
1934 |
+
In order to manage image title for Nivo Lightbox, you would need to click on "Image Title" tab from top of the page.
|
1935 |
+
|
1936 |
+
Here is the description of each control on this page.
|
1937 |
+
|
1938 |
+
**Title:** In this field, you would need to choose "Show" to display Title for image in Nivo Lightbox.
|
1939 |
+
|
1940 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Image Title.
|
1941 |
+
|
1942 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Image Title.
|
1943 |
+
|
1944 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Image Title.
|
1945 |
+
|
1946 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Image Title.
|
1947 |
+
|
1948 |
+
**Margin:** In this field, you would need to provide "Margin" for Image Title.
|
1949 |
+
|
1950 |
+
**Padding:** In this field, you would need to provide "Padding" for Image Title.
|
1951 |
+
|
1952 |
+
Once everything is being setup, you would need to click on "Save Changes" button located at bottom of the page to save the settings.
|
1953 |
+
|
1954 |
+
**How to customize Image Description for Nivo Lightbox?**
|
1955 |
+
|
1956 |
+
In order to manage image description for Nivo Lightbox, you would need to click on "Image Description" tab from top of the page.
|
1957 |
+
|
1958 |
+
Here is the description of each control on this page.
|
1959 |
+
|
1960 |
+
**Description:** In this field, you would need to choose "Show" to display Description for image in Nivo Lightbox.
|
1961 |
+
|
1962 |
+
**HTML Tag:** In this field, you would need to choose "HTML Tag" for Image Description.
|
1963 |
+
|
1964 |
+
**Text Alignment:** In this field, you would need to choose "Text Alignment" for Image Description.
|
1965 |
+
|
1966 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Image Description.
|
1967 |
+
|
1968 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Image Description.
|
1969 |
+
|
1970 |
+
**Margin:** In this field, you would need to provide "Margin" for Image Description.
|
1971 |
+
|
1972 |
+
**Padding:** In this field, you would need to provide "Padding" for Image Description.
|
1973 |
+
|
1974 |
+
Once everything is being setup, you would need to click on "Save Changes" button located at bottom of the page to save the settings.
|
1975 |
+
|
1976 |
+
= How to manage General Settings? (Premium Edition) =
|
1977 |
+
|
1978 |
+
General Settings are divided into eight sections.
|
1979 |
+
|
1980 |
+
* Global Options : From here, you can change image dimensions, thumbnail dimensions, enable or disable right click protection and set language direction.
|
1981 |
+
* Filter Settings : This gives an idea about how to customize filter settings like background, border, fonts, etc.
|
1982 |
+
* Lazy Load Settings : This gives an idea about how to customize loader settings for lazy load.
|
1983 |
+
* Search Box Settings : Using this, you can customize search box settings such as its placeholder text, background, border, fonts etc.
|
1984 |
+
* Order By Settings : From here, you would be able to manage settings to show Order By for galleries or albums.
|
1985 |
+
* Page Navigation : This gives an idea about how to customize Page Navigation options.
|
1986 |
+
* Watermark Settings : Using this, you can add text or image watermark on images.
|
1987 |
+
* Advertisement : Using this, you can add text or image advertisement on images and provide link to redirect user on clicking of image.
|
1988 |
+
|
1989 |
+
= How to manage Global Options? (Premium Edition) =
|
1990 |
+
|
1991 |
+
On the **Gallery Bank Navigation Panel**, select **General Settings - Global Options**.
|
1992 |
+
|
1993 |
+
Here is the description of each control on the page.
|
1994 |
+
|
1995 |
+
**Image Dimensions:** In this field, you would need to provide Dimensions for Generated Image.
|
1996 |
+
|
1997 |
+
**Thumbnail Dimensions:** In this field, you would need to provide Dimensions for Generated Thumbnail.
|
1998 |
+
|
1999 |
+
**Right Click Protection:** In this field, you would need to choose whether to enable right-click protection for images or not.
|
2000 |
+
|
2001 |
+
**Language Direction:** In this field, you would need to choose Language Direction.
|
2002 |
+
|
2003 |
+
Once everything is being setup, you would need to click on "Save Changes" button located at bottom of the page to save the settings.
|
2004 |
+
|
2005 |
+
= How to manage Lazy Load Settings? (Premium Edition) =
|
2006 |
+
|
2007 |
+
On the **Gallery Bank Navigation Panel**, select **General Settings � Lazy Load Settings**.
|
2008 |
+
|
2009 |
+
Here is the description of each control on the page.
|
2010 |
+
|
2011 |
+
**Background Color:** In this field, you would need to choose "Background Color" for Loader.
|
2012 |
+
|
2013 |
+
**Loader Color:** In this field, you would need to choose "Color" for Loader.
|
2014 |
+
|
2015 |
+
**Text:** In this field, you would need to choose "Show" to display Loader Text.
|
2016 |
+
|
2017 |
+
**Title:** In this field, you would need to provide content for "Loader Text".
|
2018 |
+
|
2019 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Loader Text.
|
2020 |
+
|
2021 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Loader Text.
|
2022 |
+
|
2023 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
2024 |
+
|
2025 |
+
= How to manage Filter Settings? (Premium Edition) =
|
2026 |
+
|
2027 |
+
On the **Gallery Bank Navigation Panel**, click on **General Settings - Filter Settings**.
|
2028 |
+
|
2029 |
+
Here is the description of each control on this page.
|
2030 |
+
|
2031 |
+
**Font Style:** In this field, you would need to provide Font Size and Color for Filters.
|
2032 |
+
|
2033 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Filters.
|
2034 |
+
|
2035 |
+
**Active Font Color:** In this field, you would need to choose "Active Font Color" for Filters.
|
2036 |
+
|
2037 |
+
**Font Hover Color:** In this field, you would need to choose "Font Hover Color" for Filters.
|
2038 |
+
|
2039 |
+
**Background Color & Transparency:** In this field, you would need to choose "Color and Opacity" for background of Filters. Transparency should be from 0 to 100.
|
2040 |
+
|
2041 |
+
**Background Hover Color:** In this field, you would need to choose Background Color On Hover.
|
2042 |
+
|
2043 |
+
**Border Style:** In this field, you would need to provide Width, Style and Color for Border of Filters.
|
2044 |
+
|
2045 |
+
**Border Radius:** In this field, you would need to provide "Border Radius" for Filters.
|
2046 |
+
|
2047 |
+
**Border Hover Color:** In this field, you would need to choose Border Color On Hover.
|
2048 |
+
|
2049 |
+
**Margin:** In this field, you would need to provide "Margin" for Filters.
|
2050 |
+
|
2051 |
+
**Padding:** In this field, you would need to provide "Padding" for Filters.
|
2052 |
+
|
2053 |
+
Once everything is being setup, you would need to click on "Save Changes" button located at bottom of the page to save the settings.
|
2054 |
+
|
2055 |
+
= How to manage Order By Settings? (Premium Edition) =
|
2056 |
+
|
2057 |
+
On the *Gallery Bank Navigation Panel*, select *General Settings - Order By Settings*.
|
2058 |
+
|
2059 |
+
Here is the description of each control on the page.
|
2060 |
+
|
2061 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Order By.
|
2062 |
+
|
2063 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Order By.
|
2064 |
+
|
2065 |
+
**Active Font Color:** In this field, you would need to choose "Active Font Color" for Order By.
|
2066 |
+
|
2067 |
+
**Font Hover Color:** In this field, you would need to choose "Font Hover Color" for Order By.
|
2068 |
+
|
2069 |
+
**Background Color & Transparency:** In this field, you would need to choose "Color and Opacity" for background of Order By. Transparency should be from 0 to 100.
|
2070 |
+
|
2071 |
+
**Background Hover Color:** In this field, you would need to choose Background Color on Hover.
|
2072 |
+
|
2073 |
+
**Border Style:** In this field, you would need to provide Width, Style and Color for Border of Order By.
|
2074 |
+
|
2075 |
+
**Border Radius:** In this field, you would need to provide "Border Radius" for Order By.
|
2076 |
+
|
2077 |
+
**Border Hover Color:** In this field, you would need to choose Border Color on Hover.
|
2078 |
+
|
2079 |
+
**Margin:** In this field, you would need to provide "Margin" for Order By.
|
2080 |
+
|
2081 |
+
**Padding:** In this field, you would need to provide "Padding" for Order By.
|
2082 |
+
|
2083 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
2084 |
+
|
2085 |
+
= How to manage Search Box Settings? (Premium Edition) =
|
2086 |
+
|
2087 |
+
On the *Gallery Bank Navigation Panel*, select *General Settings - Lazy Load Settings*.
|
2088 |
+
|
2089 |
+
Here is the description of each control on the page.
|
2090 |
+
|
2091 |
+
**Placeholder Text:** In this field, you would need to provide "Text" for Search Box Placeholder.
|
2092 |
+
|
2093 |
+
**Font Style:** In this field, you would need to provide "Font Size and Color" for Search Box.
|
2094 |
+
|
2095 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Search Box.
|
2096 |
+
|
2097 |
+
**Background Color & Transparency:** In this field, you would need to choose "Color and Opacity" for background of Search Box. Transparency should be from 0 to 100.
|
2098 |
+
|
2099 |
+
**Border Style:** In this field, you would need to provide Width, Style and Color for Border of Search Box.
|
2100 |
+
|
2101 |
+
**Border Radius:** In this field, you would need to provide "Border Radius" for Search Box.
|
2102 |
+
|
2103 |
+
**Margin:** In this field, you would need to provide "Margin" for Search Box.
|
2104 |
+
|
2105 |
+
**Padding:** In this field, you would need to provide "Padding" for Search Box.
|
2106 |
+
|
2107 |
+
Once everything is being setup, you would need to click on "Save Changes" button to save the settings.
|
2108 |
+
|
2109 |
+
= How to manage Page Navigation? (Premium Edition) =
|
2110 |
+
|
2111 |
+
On the **Gallery Bank Navigation Panel**, click on **General Settings - Page Navigation**.
|
2112 |
+
|
2113 |
+
Here is the description of each control on the page.
|
2114 |
+
|
2115 |
+
**Background Color:** In this field, you would need to choose "Background Color" for Page Navigation.
|
2116 |
+
|
2117 |
+
**Background Transparency:** In this field, you would need to provide Transparency for Background of Page Navigation. It should be from 0 to 100.
|
2118 |
+
|
2119 |
+
**Numbering:** If you would like to show numbering on Page Navigation, then you would need to choose "Yes" or vice-versa.
|
2120 |
+
|
2121 |
+
**Button Text:** In this field, you would need to choose whether to display Text or Arrows on Page Navigation Button.
|
2122 |
+
|
2123 |
+
**Alignment:** In this field, you would need to choose "Alignment" for Page Navigation.
|
2124 |
+
|
2125 |
+
**Position:** In this field, you would need to provide "Position" for Page Navigation.
|
2126 |
+
|
2127 |
+
**Border Style:** In this field, you would need to provide Width, Style and Color for Border of Page Navigation.
|
2128 |
+
|
2129 |
+
**Border Radius:** In this field, you would need to provide "Border Radius" for Page Navigation.
|
2130 |
+
|
2131 |
+
**Font Style:** In this field, you would need to provide Font Size and Color for Page Navigation.
|
2132 |
+
|
2133 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Page Navigation.
|
2134 |
+
|
2135 |
+
**Margin:** In this field, you would need to provide "Margin" for Page Navigation.
|
2136 |
+
|
2137 |
+
**Padding:** In this field, you would need to provide "Padding" for Page Navigation.
|
2138 |
+
|
2139 |
+
Once everything is being setup, you would need to click on "Save Changes" button located at bottom of the page to save the settings.
|
2140 |
+
|
2141 |
+
= How to manage Watermark Settings? (Premium Edition) =
|
2142 |
+
|
2143 |
+
On the **Gallery Bank Navigation Panel**, click on **General Settings - Watermark Settings**.
|
2144 |
+
|
2145 |
+
**Watermark Type:** In this field, you would need to choose what type of watermark would you like to use in your galleries and albums. It could be Text or Image. If you would not like to use watermark then choose "None".
|
2146 |
+
|
2147 |
+
Here is the description of each control on the page.
|
2148 |
+
|
2149 |
+
**Watermark Text:** In this field, you would need to provide Watermark Text which will be displayed over the gallery/album images.
|
2150 |
+
|
2151 |
+
**Font Style:** In this field, you would need to provide Font Size and Color for Watermark Text.
|
2152 |
+
|
2153 |
+
**Text Angle:** In this field, you would need to provide an Angle at which the Watermark Text is to be rotated.
|
2154 |
+
|
2155 |
+
**Offset:** In this field, you would need to provide values for Offset X and Y for Watermark.
|
2156 |
+
|
2157 |
+
**Watermark Opacity:** In this field, you would need to provide Opacity for Watermark. It should be from 0 to 100.
|
2158 |
+
|
2159 |
+
**Watermark Position:** In this field, you would need to choose Position for Watermark.
|
2160 |
+
|
2161 |
+
Once everything is being setup, you would need to click on "Save Changes" button located at bottom of the page to save the settings.
|
2162 |
+
|
2163 |
+
If you would like to use an Image as Watermark, then you would need to choose "Image" from Watermark Type dropdown.
|
2164 |
+
|
2165 |
+
Here is the description of each control on the page.
|
2166 |
+
|
2167 |
+
**Watermark URL:** In this field, you would need to provide URL of that particular image. If you would like to add image from Media Library, then you would need to click on "Add Image" button and choose image from Media Library.
|
2168 |
+
|
2169 |
+
**Watermark Size:** In this field, you would need to provide appropriate Size (in percentage for the responsive look) for Watermark Image.
|
2170 |
+
|
2171 |
+
**Offset:** In this field, you would need to provide values for Offset X and Y for Watermark.
|
2172 |
+
|
2173 |
+
**Watermark Opacity:** In this field, you would need to provide Opacity for Watermark. It should be from 0 to 100.
|
2174 |
+
|
2175 |
+
**Watermark Position:** In this field, you would need to choose Position for Watermark.
|
2176 |
+
|
2177 |
+
Once everything is being setup, you would need to click on "Save Changes" button located at bottom of the page to save the settings.
|
2178 |
+
|
2179 |
+
= How to manage Advertisement?(Premium Edition) =
|
2180 |
+
|
2181 |
+
On the **Gallery Bank Navigation Panel**, click on **General Settings - Advertisement**.
|
2182 |
+
|
2183 |
+
**Advertisement Type:** In this field, you would need to choose what type of Advertisement would you like to use in your galleries and albums. It could be Text or Image. If you would not like to use Advertisement then choose "None".
|
2184 |
+
|
2185 |
+
Here is the description of each control on the page.
|
2186 |
+
|
2187 |
+
**Advertisement Text:** In this field, you would need to provide Advertisement Text which will be displayed over the gallery/album images.
|
2188 |
+
|
2189 |
+
**Advertisement Link:** In this field, you would need to provide link for advertisement, which will open when the user clicks on Advertisement Text.
|
2190 |
+
|
2191 |
+
**Advertisement Opacity:** In this field, you would need to provide "Advertisement Opacity" for Advertisement. It should be from 0 to 100.
|
2192 |
+
|
2193 |
+
**Font Style:** In this field, you would need to provide Font Size and Color for Advertisement Text.
|
2194 |
+
|
2195 |
+
**Font Family:** In this field, you would need to choose "Font Family" for Advertisement Text from dropdown.
|
2196 |
+
|
2197 |
+
**Advertisement Position:** In this field, you would need to choose Position for Advertisement.
|
2198 |
+
|
2199 |
+
Once everything is being setup, you would need to click on "Save Changes" button located at bottom of the page to save the settings.
|
2200 |
+
|
2201 |
+
If you would like to use an Image as Advertisement, then you would need to choose "Image" from Advertisement Type dropdown.
|
2202 |
+
|
2203 |
+
Here is the description of each control on the page.
|
2204 |
+
|
2205 |
+
**Advertisement Link:** In this field, you would need to provide link for advertisement, which will open when the user clicks on Advertisement Image.
|
2206 |
+
|
2207 |
+
**Advertisement Opacity:** In this field, you would need to provide "Advertisement Opacity" for Advertisement. It should be from 0 to 100.
|
2208 |
+
|
2209 |
+
**Advertisement URL:** In this field, you would need to provide URL of that particular image. If you would like to add image from Media Library, then you would need to click on "Add Image" button and choose image from Media Library.
|
2210 |
+
|
2211 |
+
**Advertisement Image Width:** In this field, you would need to provide Width for Advertisement Image.
|
2212 |
+
|
2213 |
+
**Advertisement Height:** In this field, you would need to provide Height for Advertisement Image.
|
2214 |
+
|
2215 |
+
**Advertisement Position:** In this field, you would need to choose Position for Advertisement.
|
2216 |
+
|
2217 |
+
Once everything is being setup, you would need to click on "Save Changes" button located at bottom of the page to save the settings.
|
2218 |
+
|
2219 |
+
= Are there some restrictions for adding images? =
|
2220 |
+
|
2221 |
+
There is no limit for the amount of images. You can add as many images as you want. Plugin has no limitations on upload of images and galleries.
|
2222 |
+
|
2223 |
+
= When I upgrade to the commercial version, will I lose all the images, galleries and settings that I have made up in the free version of the Gallery? =
|
2224 |
+
|
2225 |
+
Of course Not. In order to completely remove everything from the database, you have to go Other Settings option in the Gallery Bank menu and choose Delete Tables at Uninstall to **enable**.
|
2226 |
+
|
2227 |
+
= Do you have any problems with plugin installation or usage? =
|
2228 |
+
|
2229 |
+
You can use [WordPress Support Forums](https://WordPress.org/support/plugin/gallery-bank/). They will help you to quickly install a Gallery Plugin. We are always ready to help everyone.
|
2230 |
+
|
2231 |
+
For more information, feel free to visit the official website for the [Gallery WordPress Gallery Plugin](https://WordPress.org/support/plugin/gallery-bank/)
|
2232 |
+
|
2233 |
+
== Installation ==
|
2234 |
+
|
2235 |
+
### Gallery Bank - Performing a new installation
|
2236 |
+
|
2237 |
+
= Minimum Requirements =
|
2238 |
+
|
2239 |
+
The following set of lists are the minimum requirements for installing Gallery Bank on your machine.
|
2240 |
+
|
2241 |
+
* WordPress 3.3+
|
2242 |
+
* PHP 5.x
|
2243 |
+
* MySQL 5.x
|
2244 |
+
= Using The WordPress Dashboard =
|
2245 |
+
|
2246 |
+
1. Navigate to the 'Add New' in the Plugins Dashboard
|
2247 |
+
2. Search for 'Gallery Bank'
|
2248 |
+
3. Click 'Install Now'
|
2249 |
+
4. Activate the Plugin on the Plugin dashboard
|
2250 |
+
|
2251 |
+
= Uploading in WordPress Dashboard =
|
2252 |
+
|
2253 |
+
1. Navigate to the 'Add New' in the Plugins Dashboard
|
2254 |
+
2. Navigate to the 'Upload' area
|
2255 |
+
3. Select `gallery-bank.zip` from your computer
|
2256 |
+
4. Click 'Install Now'
|
2257 |
+
5. Activate the Plugin in the Plugin dashboard
|
2258 |
+
|
2259 |
+
= Using FTP =
|
2260 |
+
|
2261 |
+
1. Download `gallery-bank.zip`
|
2262 |
+
2. Extract the `gallery-bank` directory to your computer
|
2263 |
+
3. Upload the `gallery-bank` directory to the `/wp-content/plugins/` directory
|
2264 |
+
4. Activate the Plugin in the Plugin's dashboard
|
2265 |
+
|
2266 |
+
** For Mac Users
|
2267 |
+
|
2268 |
+
1. Go to your Downloads folder and locate the folder with the Plugin.
|
2269 |
+
2. Right-click on the folder and select Compress.
|
2270 |
+
3. Now you have a newly created .zip file which can be installed as described here.
|
2271 |
+
|
2272 |
+
== Screenshots ==
|
2273 |
+
|
2274 |
+
1. Manage Galleries - WordPress Photo Gallery Plugin
|
2275 |
+
2. Add Gallery - Gallery Title & Description - WordPress Photo Gallery Plugin
|
2276 |
+
3. Add Gallery - Upload Images - WordPress Photo Gallery Plugin
|
2277 |
+
4. Add Gallery - Upload Images - WP Media Manager - WordPress Photo Gallery Plugin
|
2278 |
+
5. Add Gallery - Upload Images - Upload From FTP - WordPress Photo Gallery Plugin
|
2279 |
+
6. Sort Galleries - WordPress Photo Gallery Plugin
|
2280 |
+
7. Manage Albums - WordPress Photo Albums Plugin
|
2281 |
+
8. Add Album - Album Title & Description
|
2282 |
+
9. Add Album - Upload Albums
|
2283 |
+
10. Sort Albums
|
2284 |
+
11. Manage Tags
|
2285 |
+
12. Add Tag
|
2286 |
+
13. Layout Settings - Thumbnail Layout - Thumbnails
|
2287 |
+
14. Layout Settings - Thumbnail Layout - Layout Title
|
2288 |
+
15. Layout Settings - Thumbnail Layout - Gallery Description
|
2289 |
+
16. Layout Settings - Thumbnail Layout - Thumbnail Title
|
2290 |
+
17. Layout Settings - Thumbnail Layout - Thumbnail Description
|
2291 |
+
18. Layout Settings - Masonry Layout - Thumbnails
|
2292 |
+
19. Layout Settings - Masonry Layout - Gallery Title
|
2293 |
+
20. Layout Settings - Masonry Layout - Gallery Description
|
2294 |
+
21. Layout Settings - Masonry Layout - Thumbnail Title
|
2295 |
+
22. Layout Settings - Masonry Layout - Thumbnail Description
|
2296 |
+
23. Layout Settings - Slideshow Layout - Thumbnails
|
2297 |
+
24. Layout Settings - Slideshow Layout - Gallery Title
|
2298 |
+
25. Layout Settings - Slideshow Layout - Gallery Description
|
2299 |
+
26. Layout Settings - Slideshow Layout - Thumbnail Title
|
2300 |
+
27. Layout Settings - Slideshow Layout - Thumbnail Description
|
2301 |
+
28. Layout Settings - Image Browser Layout - Thumbnails
|
2302 |
+
29. Layout Settings - Image Browser Layout - Gallery Title
|
2303 |
+
30. Layout Settings - Image Browser Layout - Gallery Description
|
2304 |
+
31. Layout Settings - Image Browser Layout - Thumbnail Title
|
2305 |
+
32. Layout Settings - Image Browser Layout - Thumbnail Description
|
2306 |
+
33. Layout Settings - Justified Grid Layout - Thumbnails
|
2307 |
+
34. Layout Settings - Justified Grid Layout - Gallery Title
|
2308 |
+
35. Layout Settings - Justified Grid Layout - Gallery Description
|
2309 |
+
36. Layout Settings - Justified Grid Layout - Thumbnail Title
|
2310 |
+
37. Layout Settings - Justified Grid Layout - Thumbnail Description
|
2311 |
+
38. Layout Settings - Blog Style Layout - Thumbnails
|
2312 |
+
39. Layout Settings - Blog Style Layout - Gallery Title
|
2313 |
+
40. Layout Settings - Blog Style Layout - Gallery Description
|
2314 |
+
41. Layout Settings - Blog Style Layout - Thumbnail Title
|
2315 |
+
42. Layout Settings - Blog Style Layout - Thumbnail Description
|
2316 |
+
43. Layout Settings - Compact Album Layout - Thumbnails
|
2317 |
+
44. Layout Settings - Compact Album Layout - Album Title
|
2318 |
+
45. Layout Settings - Compact Album Layout - Album Description
|
2319 |
+
46. Layout Settings - Compact Album Layout - Gallery Title
|
2320 |
+
47. Layout Settings - Compact Album Layout - Gallery Description
|
2321 |
+
48. Layout Settings - Compact Album Layout - Buttons
|
2322 |
+
49. Layout Settings - Extended Album Layout - Thumbnails
|
2323 |
+
50. Layout Settings - Extended Album Layout - Album Title
|
2324 |
+
51. Layout Settings - Extended Album Layout - Album Description
|
2325 |
+
52. Layout Settings - Extended Album Layout - Gallery Title
|
2326 |
+
53. Layout Settings - Extended Album Layout - Gallery Description
|
2327 |
+
54. Layout Settings - Extended Album Layout - Buttons
|
2328 |
+
55. Layout Settings - Custom CSS
|
2329 |
+
56. Lightboxes - Lightcase - Settings
|
2330 |
+
57. Lightboxes - Lightcase - Image Title
|
2331 |
+
58. Lightboxes - Lightcase - Image Description
|
2332 |
+
59. Lightboxes - Fancy Box - Settings
|
2333 |
+
60. Lightboxes - Fancy Box - Image Title
|
2334 |
+
61. Lightboxes - Fancy Box - Image Description
|
2335 |
+
62. Lightboxes - Color Box - Settings
|
2336 |
+
63. Lightboxes - Color Box - Image Title
|
2337 |
+
64. Lightboxes - Color Box - Image Description
|
2338 |
+
65. Lightboxes - Foo Box Free Edition - Settings
|
2339 |
+
66. Lightboxes - Foo Box Free Edition - Image Title
|
2340 |
+
67. Lightboxes - Foo Box Free Edition - Image Description
|
2341 |
+
68. Lightboxes - Nivo Lightbox - Settings
|
2342 |
+
69. Lightboxes - Nivo Lightbox - Image Title
|
2343 |
+
70. Lightboxes - Nivo Lightbox - Image Description
|
2344 |
+
71. General Settings - Global Options
|
2345 |
+
72. General Settings - Lazy Load Settings
|
2346 |
+
73. General Settings - Filter Settings
|
2347 |
+
74. General Settings - Order By Settings
|
2348 |
+
75. General Settings - Search Box Settings
|
2349 |
+
76. General Settings - Page Navigation
|
2350 |
+
77. General Settings - Watermark Settings - Text
|
2351 |
+
78. General Settings - Watermark Settings - Image
|
2352 |
+
79. General Settings - Advertisement - Text
|
2353 |
+
80. General Settings - Advertisement - Image
|
2354 |
+
81. Wordpress Gallery Shortcode - Thumbnail Layout
|
2355 |
+
82. Wordpress Gallery Shortcode - Masonry Layout
|
2356 |
+
83. Wordpress Gallery Shortcode - Slideshow Layout
|
2357 |
+
84. Wordpress Gallery Shortcode - Image Browser Layout
|
2358 |
+
85. Wordpress Gallery Shortcode - Justified Grid Layout
|
2359 |
+
86. Wordpress Gallery Shortcode - Blog Style Layout
|
2360 |
+
87. Other Settings
|
2361 |
+
88. Roles & Capabilities
|
2362 |
+
89. Feature Requests
|
2363 |
+
90. System Information
|
2364 |
+
|
2365 |
+
== Changelog ==
|
2366 |
+
|
2367 |
+
= 4.0.5 =
|
2368 |
+
|
2369 |
+
* FIX: Global Options Bugs
|
2370 |
+
* FIX: Wizard Bugs
|
2371 |
+
* FIX: Layout Bugs
|
2372 |
+
* TWEAK: Unwanted Asterisks removed from Add Gallery Layout
|
2373 |
+
|
2374 |
+
= 4.0.4 =
|
2375 |
+
|
2376 |
+
* FIX: Lightbox Caption
|
2377 |
+
* TWEAK: PLUploader updated to latest release
|
2378 |
+
* TWEAK: Jquery Validator updated to latest release
|
2379 |
+
* TWEAK: Jquery Modal updated to latest release
|
2380 |
+
* FIX: Major Bugs
|
2381 |
+
|
2382 |
+
= 4.0.3 =
|
2383 |
+
|
2384 |
+
* FIX: Lightbox Bugs
|
2385 |
+
* FIX: Code Optimized
|
2386 |
+
* FIX: Obsolete Code Removed
|
2387 |
+
* FIX: Headers Output Bug
|
2388 |
+
|
2389 |
+
= 4.0.2 =
|
2390 |
+
|
2391 |
+
* FIX: Lightbox Bug
|
2392 |
+
* TWEAK: New Lightbox Option Added
|
2393 |
+
* FIX: Code Optimized
|
2394 |
+
|
2395 |
+
= 4.0.1 =
|
2396 |
+
|
2397 |
+
* FIX: Obsolete Code Removed
|
2398 |
+
* FIX: Major Bugs
|
2399 |
+
* FIX: Install Script Code Optimized
|
2400 |
+
* FIX: Wizard Page Error
|
2401 |
+
* FIX: Code Optimized
|
2402 |
+
|
2403 |
+
= 4.0.0 =
|
2404 |
+
|
2405 |
+
* TWEAK: Major Version Release
|
2406 |
+
* TWEAK: Layouts Changed
|
2407 |
+
* TWEAK: Layouts Changed
|
2408 |
+
* TWEAK: Front End Complete Revamped
|
2409 |
+
* TWEAK: Database Optimized
|
2410 |
+
* TWEAK: Security Patch Added
|
2411 |
+
* TWEAK: Modified JS & CSS Functions to only call on own Plugin Page
|
2412 |
+
* TWEAK: Layouts Changed
|
2413 |
+
* TWEAK: Obsolete Code Deleted
|
2414 |
+
* TWEAK: CSS Improved
|
2415 |
+
* TWEAK: Improved Performance of Photo Gallery Plugin
|
user-views/includes/albums/style-sheet.php
CHANGED
@@ -12,6 +12,8 @@ if (!defined("ABSPATH")) {
|
|
12 |
if (isset($id)) {
|
13 |
//TODO: Code for General Options
|
14 |
if (isset($album_type)) {
|
|
|
|
|
15 |
switch (esc_attr($album_type)) {
|
16 |
case "compact_album" :
|
17 |
//font families extract from database
|
@@ -88,12 +90,20 @@ if (isset($id)) {
|
|
88 |
}
|
89 |
?>
|
90 |
<style type="text/css">
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
97 |
.album_title_container <?php echo $compact_album_layout_title_html_tag; ?>
|
98 |
{
|
99 |
line-height: <?php echo $compact_album_layout_title_line_height; ?> !important;
|
@@ -174,12 +184,12 @@ if (isset($id)) {
|
|
174 |
{
|
175 |
cursor: pointer !important;
|
176 |
}
|
177 |
-
|
178 |
-
|
|
|
179 |
}
|
180 |
-
|
181 |
-
|
182 |
-
?>
|
183 |
</style>
|
184 |
<?php
|
185 |
}
|
12 |
if (isset($id)) {
|
13 |
//TODO: Code for General Options
|
14 |
if (isset($album_type)) {
|
15 |
+
$global_options_language_direction = isset($global_options_settings["global_options_language_direction"]) && $global_options_settings["global_options_language_direction"] == "right_to_left" ? "rtl" : "ltr";
|
16 |
+
$global_options_alignment = isset($alignment) ? esc_attr($alignment) : "left";
|
17 |
switch (esc_attr($album_type)) {
|
18 |
case "compact_album" :
|
19 |
//font families extract from database
|
90 |
}
|
91 |
?>
|
92 |
<style type="text/css">
|
93 |
+
.gallery_bank_album_main_container
|
94 |
+
{
|
95 |
+
direction: <?php echo $global_options_language_direction; ?> !important;
|
96 |
+
}
|
97 |
+
.gb-filter-holder_<?php echo $random; ?>
|
98 |
+
{
|
99 |
+
text-align: <?php echo $global_options_alignment; ?>;
|
100 |
+
}
|
101 |
+
<?php
|
102 |
+
echo isset($import_font_family_layout) ? $import_font_family_layout : "";
|
103 |
+
if (isset($album_type)) {
|
104 |
+
switch ($album_type) {
|
105 |
+
case "compact_album" :
|
106 |
+
?>
|
107 |
.album_title_container <?php echo $compact_album_layout_title_html_tag; ?>
|
108 |
{
|
109 |
line-height: <?php echo $compact_album_layout_title_line_height; ?> !important;
|
184 |
{
|
185 |
cursor: pointer !important;
|
186 |
}
|
187 |
+
<?php
|
188 |
+
break;
|
189 |
+
}
|
190 |
}
|
191 |
+
echo htmlspecialchars_decode($custom_css["custom_css"]);
|
192 |
+
?>
|
|
|
193 |
</style>
|
194 |
<?php
|
195 |
}
|
user-views/includes/common-variables.php
CHANGED
@@ -25,6 +25,7 @@ $row_height = str_replace('"', '', $row_height);
|
|
25 |
$source_type = str_replace('"', '', $source_type);
|
26 |
$random = rand(100, 10000);
|
27 |
|
|
|
28 |
$custom_css = user_helper_gallery_bank::get_meta_value_gallery_bank("custom_css");
|
29 |
if (isset($animation_effects)) {
|
30 |
wp_enqueue_style("gallery-bank-animation-effects.css", GALLERY_BANK_PLUGIN_DIR_URL . "user-views/assets/css/animation-effects/gb-animation-effects.css");
|
25 |
$source_type = str_replace('"', '', $source_type);
|
26 |
$random = rand(100, 10000);
|
27 |
|
28 |
+
$global_options_settings = user_helper_gallery_bank::get_meta_value_gallery_bank("global_options_settings");
|
29 |
$custom_css = user_helper_gallery_bank::get_meta_value_gallery_bank("custom_css");
|
30 |
if (isset($animation_effects)) {
|
31 |
wp_enqueue_style("gallery-bank-animation-effects.css", GALLERY_BANK_PLUGIN_DIR_URL . "user-views/assets/css/animation-effects/gb-animation-effects.css");
|
user-views/includes/galleries/scripts-before.php
CHANGED
@@ -67,40 +67,39 @@ if (isset($layout_type)) {
|
|
67 |
switch (lightbox_type)
|
68 |
{
|
69 |
case "foo_box_free_edition":
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
|
|
93 |
};
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
}
|
103 |
-
?>
|
104 |
break;
|
105 |
}
|
106 |
}
|
67 |
switch (lightbox_type)
|
68 |
{
|
69 |
case "foo_box_free_edition":
|
70 |
+
<?php
|
71 |
+
if (!class_exists("fooboxV2")) {
|
72 |
+
?>
|
73 |
+
var showCount_settings = <?php echo isset($foobox_meta_data["foo_box_show_count"]) ? $foobox_meta_data["foo_box_show_count"] : true; ?>;
|
74 |
+
var closeOnOverlayClick = <?php echo isset($foobox_meta_data["foo_box_close_overlay_click"]) ? $foobox_meta_data["foo_box_close_overlay_click"] : true; ?>;
|
75 |
+
var hideScrollbars = <?php echo isset($foobox_meta_data["foo_box_hide_page_scrollbar"]) ? $foobox_meta_data["foo_box_hide_page_scrollbar"] : true; ?>;
|
76 |
+
var onlyShowOnHover = <?php echo isset($foobox_meta_data["foo_box_show_on_hover"]) ? $foobox_meta_data["foo_box_show_on_hover"] : true; ?>;
|
77 |
+
(function (FOOBOX, $)
|
78 |
+
{
|
79 |
+
FOOBOX.init = function () {
|
80 |
+
FOOBOX.o = {
|
81 |
+
showCount: showCount_settings,
|
82 |
+
closeOnOverlayClick: closeOnOverlayClick,
|
83 |
+
hideScrollbars: hideScrollbars,
|
84 |
+
captions:
|
85 |
+
{
|
86 |
+
onlyShowOnHover: onlyShowOnHover,
|
87 |
+
overrideTitle: true,
|
88 |
+
titleSource: 'anchor',
|
89 |
+
overrideDesc: true,
|
90 |
+
descSource: 'anchor'
|
91 |
+
}
|
92 |
+
};
|
93 |
+
$(".foobox").foobox(FOOBOX.o);
|
94 |
};
|
95 |
+
}(window.FOOBOX = window.FOOBOX || {}, jQuery));
|
96 |
+
jQuery(function ($)
|
97 |
+
{
|
98 |
+
FOOBOX.init();
|
99 |
+
});
|
100 |
+
<?php
|
101 |
+
}
|
102 |
+
?>
|
|
|
|
|
103 |
break;
|
104 |
}
|
105 |
}
|
user-views/includes/galleries/style-sheet.php
CHANGED
@@ -12,6 +12,8 @@ if (!defined("ABSPATH")) {
|
|
12 |
if (isset($id)) {
|
13 |
//TODO: Code for General Options
|
14 |
if (isset($layout_type)) {
|
|
|
|
|
15 |
switch (esc_attr($layout_type)) {
|
16 |
case "thumbnail_layout" :
|
17 |
//font families extract from database
|
@@ -218,7 +220,7 @@ if (isset($id)) {
|
|
218 |
}
|
219 |
}
|
220 |
if (isset($album_type) && $album_type == "compact_album") {
|
221 |
-
$compact_album_button_text_font_family =
|
222 |
$import_compact_button_text_font_family = user_helper_gallery_bank::unique_font_families_gallery_bank($compact_album_button_text_font_family);
|
223 |
$font_family_compact_button_text = user_helper_gallery_bank::font_families_gallery_bank($compact_album_button_text_font_family);
|
224 |
|
@@ -236,19 +238,27 @@ if (isset($id)) {
|
|
236 |
}
|
237 |
?>
|
238 |
<style type="text/css">
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
247 |
#gallery_bank_main_container_<?php echo $random; ?>
|
248 |
{
|
249 |
width: <?php echo $thumbnail_layout_container_width; ?>% !important;
|
250 |
max-width: <?php echo $thumbnail_layout_max_width; ?>px !important;
|
251 |
-
|
252 |
}
|
253 |
#gallery_title_container_<?php echo $random; ?> <?php echo $thumbnail_layout_gallery_title_html_tag; ?>
|
254 |
{
|
@@ -310,13 +320,13 @@ if (isset($id)) {
|
|
310 |
.grid_content_item
|
311 |
{
|
312 |
width: <?php echo intval($thumbnail_layout_thumbnail_dimensions[0]); ?>px !important;
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
background: rgba(<?php echo intval($thumbnail_layout_background_color[0]); ?>,<?php echo intval($thumbnail_layout_background_color[1]); ?>,<?php echo intval($thumbnail_layout_background_color[2]); ?>,<?php echo floatval($thumbnail_layout_background_transparency); ?>) !important;
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
}
|
321 |
.grid_single_text_title <?php echo $thumbnail_layout_thumbnail_title_html_tag; ?>
|
322 |
{
|
@@ -340,15 +350,15 @@ if (isset($id)) {
|
|
340 |
padding: <?php echo intval($thumbnail_layout_thumbnail_desc_padding[0]); ?>px <?php echo intval($thumbnail_layout_thumbnail_desc_padding[1]); ?>px <?php echo intval($thumbnail_layout_thumbnail_desc_padding[2]); ?>px <?php echo intval($thumbnail_layout_thumbnail_desc_padding[3]); ?>px !important;
|
341 |
font-family: <?php echo $font_family_name_layout[3]; ?>
|
342 |
}
|
343 |
-
|
344 |
-
|
345 |
|
346 |
-
|
347 |
-
|
348 |
#gallery_bank_main_container_<?php echo $random; ?>
|
349 |
{
|
350 |
max-width: <?php echo $masonry_layout_max_width; ?>px !important;
|
351 |
-
|
352 |
}
|
353 |
#gallery_title_container_<?php echo $random; ?> <?php echo $masonry_layout_gallery_title_html_tag; ?>
|
354 |
{
|
@@ -376,13 +386,13 @@ if (isset($id)) {
|
|
376 |
}
|
377 |
.masonry_grid_wrapper_item
|
378 |
{
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
background: rgba(<?php echo intval($masonry_layout_thumbnail_background_color[0]); ?>,<?php echo intval($masonry_layout_thumbnail_background_color[1]); ?>,<?php echo intval($masonry_layout_thumbnail_background_color[2]); ?>,<?php echo floatval($masonry_layout_thumbnail_background_transparency); ?>) !important;
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
margin: <?php echo intval($masonry_layout_thumbnail_margin[0]); ?>px <?php echo intval($masonry_layout_thumbnail_margin[1]); ?>px <?php echo intval($masonry_layout_thumbnail_margin[2]); ?>px <?php echo intval($masonry_layout_thumbnail_margin[3]); ?>px !important;
|
387 |
padding: <?php echo intval($masonry_layout_thumbnail_padding[0]); ?>px <?php echo intval($masonry_layout_thumbnail_padding[1]); ?>px <?php echo intval($masonry_layout_thumbnail_padding[2]); ?>px <?php echo intval($masonry_layout_thumbnail_padding[3]); ?>px !important;
|
388 |
overflow: hidden !important;
|
@@ -432,14 +442,14 @@ if (isset($id)) {
|
|
432 |
padding: <?php echo intval($masonry_layout_thumbnail_description_padding[0]); ?>px <?php echo intval($masonry_layout_thumbnail_description_padding[1]); ?>px <?php echo intval($masonry_layout_thumbnail_description_padding[2]); ?>px <?php echo intval($masonry_layout_thumbnail_description_padding[3]); ?>px !important;
|
433 |
font-family: <?php echo $font_family_name_layout[3]; ?>
|
434 |
}
|
435 |
-
|
436 |
-
|
|
|
437 |
}
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
?>
|
443 |
.fbx-caption
|
444 |
{
|
445 |
text-align: left !important;
|
@@ -474,13 +484,13 @@ if (isset($id)) {
|
|
474 |
}
|
475 |
.fbx-modal
|
476 |
{
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
background-color: rgba(<?php echo intval($foo_box_background_overlay_color[0]); ?>,<?php echo intval($foo_box_background_overlay_color[1]); ?>,<?php echo intval($foo_box_background_overlay_color[2]); ?>,<?php echo $foo_box_overlay_opacity; ?>) !important;
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
}
|
485 |
.fbx-inner
|
486 |
{
|
@@ -495,12 +505,12 @@ if (isset($id)) {
|
|
495 |
-moz-border-radius: <?php echo $foo_box_border_radius; ?>px !important;
|
496 |
border-radius: <?php echo $foo_box_border_radius; ?>px !important;
|
497 |
}
|
498 |
-
|
499 |
-
|
|
|
500 |
}
|
501 |
-
|
502 |
-
|
503 |
-
?>
|
504 |
.album_layout_button:hover, .album_layout_button:focus, .album_layout_button.focus
|
505 |
{
|
506 |
color: <?php echo esc_attr($compact_album_button_font_hover_color); ?> !important;
|
@@ -536,10 +546,10 @@ if (isset($id)) {
|
|
536 |
border-radius: <?php echo intval($compact_album_button_border_radius); ?>px !important;
|
537 |
font-family: <?php echo isset($font_family_compact_button_text[0]) ? htmlspecialchars_decode($font_family_compact_button_text[0]) : "Roboto Slab:300"; ?>
|
538 |
}
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
</style>
|
544 |
<?php
|
545 |
}
|
12 |
if (isset($id)) {
|
13 |
//TODO: Code for General Options
|
14 |
if (isset($layout_type)) {
|
15 |
+
$global_options_language_direction = isset($global_options_settings["global_options_language_direction"]) && $global_options_settings["global_options_language_direction"] == "right_to_left" ? "rtl" : "ltr";
|
16 |
+
$global_options_alignment = isset($alignment) ? esc_attr($alignment) : "left";
|
17 |
switch (esc_attr($layout_type)) {
|
18 |
case "thumbnail_layout" :
|
19 |
//font families extract from database
|
220 |
}
|
221 |
}
|
222 |
if (isset($album_type) && $album_type == "compact_album") {
|
223 |
+
$compact_album_button_text_font_family[] = $compact_album_layout_settings["compact_album_layout_button_text_font_family"];
|
224 |
$import_compact_button_text_font_family = user_helper_gallery_bank::unique_font_families_gallery_bank($compact_album_button_text_font_family);
|
225 |
$font_family_compact_button_text = user_helper_gallery_bank::font_families_gallery_bank($compact_album_button_text_font_family);
|
226 |
|
238 |
}
|
239 |
?>
|
240 |
<style type="text/css">
|
241 |
+
#gallery_bank_main_container_<?php echo $random; ?>
|
242 |
+
{
|
243 |
+
direction: <?php echo $global_options_language_direction; ?> !important;
|
244 |
+
}
|
245 |
+
.gb-filter-holder_<?php echo $random; ?>
|
246 |
+
{
|
247 |
+
text-align: <?php echo $global_options_alignment; ?>;
|
248 |
+
}
|
249 |
+
<?php
|
250 |
+
echo isset($import_font_family_layout) ? $import_font_family_layout : "";
|
251 |
+
echo isset($import_font_family_lightbox) ? $import_font_family_lightbox : "";
|
252 |
+
echo isset($import_compact_button_text_font_family) ? $import_compact_button_text_font_family : "";
|
253 |
+
if (isset($layout_type)) {
|
254 |
+
switch ($layout_type) {
|
255 |
+
case "thumbnail_layout" :
|
256 |
+
?>
|
257 |
#gallery_bank_main_container_<?php echo $random; ?>
|
258 |
{
|
259 |
width: <?php echo $thumbnail_layout_container_width; ?>% !important;
|
260 |
max-width: <?php echo $thumbnail_layout_max_width; ?>px !important;
|
261 |
+
<?php echo $thumbnail_text_alignment; ?>
|
262 |
}
|
263 |
#gallery_title_container_<?php echo $random; ?> <?php echo $thumbnail_layout_gallery_title_html_tag; ?>
|
264 |
{
|
320 |
.grid_content_item
|
321 |
{
|
322 |
width: <?php echo intval($thumbnail_layout_thumbnail_dimensions[0]); ?>px !important;
|
323 |
+
<?php
|
324 |
+
if ($thumbnail_layout_background_color_transparency[0] != "") {
|
325 |
+
?>
|
326 |
background: rgba(<?php echo intval($thumbnail_layout_background_color[0]); ?>,<?php echo intval($thumbnail_layout_background_color[1]); ?>,<?php echo intval($thumbnail_layout_background_color[2]); ?>,<?php echo floatval($thumbnail_layout_background_transparency); ?>) !important;
|
327 |
+
<?php
|
328 |
+
}
|
329 |
+
?>
|
330 |
}
|
331 |
.grid_single_text_title <?php echo $thumbnail_layout_thumbnail_title_html_tag; ?>
|
332 |
{
|
350 |
padding: <?php echo intval($thumbnail_layout_thumbnail_desc_padding[0]); ?>px <?php echo intval($thumbnail_layout_thumbnail_desc_padding[1]); ?>px <?php echo intval($thumbnail_layout_thumbnail_desc_padding[2]); ?>px <?php echo intval($thumbnail_layout_thumbnail_desc_padding[3]); ?>px !important;
|
351 |
font-family: <?php echo $font_family_name_layout[3]; ?>
|
352 |
}
|
353 |
+
<?php
|
354 |
+
break;
|
355 |
|
356 |
+
case "masonry_layout" :
|
357 |
+
?>
|
358 |
#gallery_bank_main_container_<?php echo $random; ?>
|
359 |
{
|
360 |
max-width: <?php echo $masonry_layout_max_width; ?>px !important;
|
361 |
+
<?php echo $masonry_text_alignment; ?>
|
362 |
}
|
363 |
#gallery_title_container_<?php echo $random; ?> <?php echo $masonry_layout_gallery_title_html_tag; ?>
|
364 |
{
|
386 |
}
|
387 |
.masonry_grid_wrapper_item
|
388 |
{
|
389 |
+
<?php
|
390 |
+
if ($masonry_layout_thumbnail_background_color_transparency[0] != "") {
|
391 |
+
?>
|
392 |
background: rgba(<?php echo intval($masonry_layout_thumbnail_background_color[0]); ?>,<?php echo intval($masonry_layout_thumbnail_background_color[1]); ?>,<?php echo intval($masonry_layout_thumbnail_background_color[2]); ?>,<?php echo floatval($masonry_layout_thumbnail_background_transparency); ?>) !important;
|
393 |
+
<?php
|
394 |
+
}
|
395 |
+
?>
|
396 |
margin: <?php echo intval($masonry_layout_thumbnail_margin[0]); ?>px <?php echo intval($masonry_layout_thumbnail_margin[1]); ?>px <?php echo intval($masonry_layout_thumbnail_margin[2]); ?>px <?php echo intval($masonry_layout_thumbnail_margin[3]); ?>px !important;
|
397 |
padding: <?php echo intval($masonry_layout_thumbnail_padding[0]); ?>px <?php echo intval($masonry_layout_thumbnail_padding[1]); ?>px <?php echo intval($masonry_layout_thumbnail_padding[2]); ?>px <?php echo intval($masonry_layout_thumbnail_padding[3]); ?>px !important;
|
398 |
overflow: hidden !important;
|
442 |
padding: <?php echo intval($masonry_layout_thumbnail_description_padding[0]); ?>px <?php echo intval($masonry_layout_thumbnail_description_padding[1]); ?>px <?php echo intval($masonry_layout_thumbnail_description_padding[2]); ?>px <?php echo intval($masonry_layout_thumbnail_description_padding[3]); ?>px !important;
|
443 |
font-family: <?php echo $font_family_name_layout[3]; ?>
|
444 |
}
|
445 |
+
<?php
|
446 |
+
break;
|
447 |
+
}
|
448 |
}
|
449 |
+
if (isset($lightbox_type)) {
|
450 |
+
switch (esc_attr($lightbox_type)) {
|
451 |
+
case "foo_box_free_edition":
|
452 |
+
?>
|
|
|
453 |
.fbx-caption
|
454 |
{
|
455 |
text-align: left !important;
|
484 |
}
|
485 |
.fbx-modal
|
486 |
{
|
487 |
+
<?php
|
488 |
+
if ($foo_box_overlay_color != "") {
|
489 |
+
?>
|
490 |
background-color: rgba(<?php echo intval($foo_box_background_overlay_color[0]); ?>,<?php echo intval($foo_box_background_overlay_color[1]); ?>,<?php echo intval($foo_box_background_overlay_color[2]); ?>,<?php echo $foo_box_overlay_opacity; ?>) !important;
|
491 |
+
<?php
|
492 |
+
}
|
493 |
+
?>
|
494 |
}
|
495 |
.fbx-inner
|
496 |
{
|
505 |
-moz-border-radius: <?php echo $foo_box_border_radius; ?>px !important;
|
506 |
border-radius: <?php echo $foo_box_border_radius; ?>px !important;
|
507 |
}
|
508 |
+
<?php
|
509 |
+
break;
|
510 |
+
}
|
511 |
}
|
512 |
+
if (isset($album_type) && $album_type == "compact_album") {
|
513 |
+
?>
|
|
|
514 |
.album_layout_button:hover, .album_layout_button:focus, .album_layout_button.focus
|
515 |
{
|
516 |
color: <?php echo esc_attr($compact_album_button_font_hover_color); ?> !important;
|
546 |
border-radius: <?php echo intval($compact_album_button_border_radius); ?>px !important;
|
547 |
font-family: <?php echo isset($font_family_compact_button_text[0]) ? htmlspecialchars_decode($font_family_compact_button_text[0]) : "Roboto Slab:300"; ?>
|
548 |
}
|
549 |
+
<?php
|
550 |
+
}
|
551 |
+
echo htmlspecialchars_decode($custom_css["custom_css"]);
|
552 |
+
?>
|
553 |
</style>
|
554 |
<?php
|
555 |
}
|
user-views/lib/helper.php
CHANGED
@@ -92,17 +92,21 @@ if (!class_exists("user_helper_gallery_bank")) {
|
|
92 |
Created By: Tech Banker Team
|
93 |
*/
|
94 |
public static function font_families_gallery_bank($font_families) {
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
|
|
|
|
|
|
|
|
|
|
102 |
}
|
103 |
-
|
104 |
-
|
105 |
-
}
|
106 |
/*
|
107 |
Function Name: unique_font_families
|
108 |
Parameters: Yes($unique_font_families,$import_font_family)
|
@@ -111,16 +115,18 @@ if (!class_exists("user_helper_gallery_bank")) {
|
|
111 |
Created By: Tech Banker Team
|
112 |
*/
|
113 |
public static function unique_font_families_gallery_bank($unique_font_families) {
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
|
|
|
|
|
|
121 |
}
|
122 |
-
|
123 |
-
|
124 |
-
}
|
125 |
}
|
126 |
}
|
92 |
Created By: Tech Banker Team
|
93 |
*/
|
94 |
public static function font_families_gallery_bank($font_families) {
|
95 |
+
foreach ($font_families as $font_family) {
|
96 |
+
if ($font_family != "inherit") {
|
97 |
+
if (strpos($font_family, ":") != false) {
|
98 |
+
$position = strpos($font_family, ":");
|
99 |
+
$font_style = (substr($font_family, $position + 4, 6) == "italic") ? "\r\n\tfont-style: italic !important;" : "";
|
100 |
+
$font_family_name[] = "'" . substr($font_family, 0, $position) . "'" . " !important;\r\n\tfont-weight: " . substr($font_family, $position + 1, 3) . " !important;" . $font_style;
|
101 |
+
} else {
|
102 |
+
$font_family_name[] = (strpos($font_family, "&") != false) ? "'" . strstr($font_family, "&", 1) . "' !important;" : "'" . $font_family . "' !important;";
|
103 |
+
}
|
104 |
+
} else {
|
105 |
+
$font_family_name[] = "inherit";
|
106 |
+
}
|
107 |
}
|
108 |
+
return $font_family_name;
|
109 |
+
}
|
|
|
110 |
/*
|
111 |
Function Name: unique_font_families
|
112 |
Parameters: Yes($unique_font_families,$import_font_family)
|
115 |
Created By: Tech Banker Team
|
116 |
*/
|
117 |
public static function unique_font_families_gallery_bank($unique_font_families) {
|
118 |
+
$import_font_family = "";
|
119 |
+
foreach ($unique_font_families as $font_family) {
|
120 |
+
if ($font_family != "inherit") {
|
121 |
+
$font_family = urlencode($font_family);
|
122 |
+
if (is_ssl()) {
|
123 |
+
$import_font_family .= "@import url('https://fonts.googleapis.com/css?family=" . $font_family . "');\r\n";
|
124 |
+
} else {
|
125 |
+
$import_font_family .= "@import url('http://fonts.googleapis.com/css?family=" . $font_family . "');\r\n";
|
126 |
+
}
|
127 |
+
}
|
128 |
}
|
129 |
+
return $import_font_family;
|
130 |
+
}
|
|
|
131 |
}
|
132 |
}
|
views/albums/add-album.php
CHANGED
@@ -112,7 +112,7 @@ if (!is_user_logged_in()) {
|
|
112 |
<label class="control-label">
|
113 |
<?php echo $gb_album_description; ?> :
|
114 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_album_description_tooltip; ?>" data-placement="right"></i>
|
115 |
-
<span class="required" aria-required="true"
|
116 |
</label>
|
117 |
<?php
|
118 |
$gb_album_description_data = isset($get_album_data_unserialize["album_description"]) ? htmlspecialchars_decode($get_album_data_unserialize["album_description"]) : "";
|
112 |
<label class="control-label">
|
113 |
<?php echo $gb_album_description; ?> :
|
114 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_album_description_tooltip; ?>" data-placement="right"></i>
|
115 |
+
<span class="required" aria-required="true"><?php echo " (" . $gb_premium_edition . " )"; ?></span>
|
116 |
</label>
|
117 |
<?php
|
118 |
$gb_album_description_data = isset($get_album_data_unserialize["album_description"]) ? htmlspecialchars_decode($get_album_data_unserialize["album_description"]) : "";
|
views/galleries/add-gallery.php
CHANGED
@@ -134,7 +134,6 @@ if (!is_user_logged_in()) {
|
|
134 |
<label class="control-label">
|
135 |
<?php echo $gb_gallery_description_title; ?> :
|
136 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_description_tooltip; ?>" data-placement="right"></i>
|
137 |
-
<span class="required" aria-required="true">*</span>
|
138 |
</label>
|
139 |
<?php
|
140 |
$gallery_description = isset($get_gallery_meta_data_unserialize["gallery_description"]) ? htmlspecialchars_decode($get_gallery_meta_data_unserialize["gallery_description"]) : "";
|
@@ -277,7 +276,6 @@ if (!is_user_logged_in()) {
|
|
277 |
<label class="control-label">
|
278 |
<?php echo $gb_add_gallery_image_title; ?> :
|
279 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_image_tooltip; ?>" data-placement="right"></i>
|
280 |
-
<span class="required" aria-required="true">*</span>
|
281 |
</label>
|
282 |
<div class="input-icon right">
|
283 |
<input type="text" placeholder="<?php echo $gb_add_gallery_image_placeholder; ?>" class="form-control" name="ux_txt_img_title_" id="ux_txt_img_title_" value="">
|
@@ -289,7 +287,6 @@ if (!is_user_logged_in()) {
|
|
289 |
<label class="control-label">
|
290 |
<?php echo $gb_add_gallery_image_alt_text_title; ?> :
|
291 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_image_alt_text_tooltip; ?>" data-placement="right"></i>
|
292 |
-
<span class="required" aria-required="true">*</span>
|
293 |
</label>
|
294 |
<div class="input-icon right">
|
295 |
<input type="text" placeholder="<?php echo $gb_add_gallery_image_alt_text_placeholder; ?>" class="form-control" name="ux_img_alt_text_" id="ux_img_alt_text_" value="">
|
@@ -301,7 +298,6 @@ if (!is_user_logged_in()) {
|
|
301 |
<label class="control-label">
|
302 |
<?php echo $gb_add_gallery_image_description_title; ?> :
|
303 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_image_description_tooltip; ?>" data-placement="right"></i>
|
304 |
-
<span class="required" aria-required="true">*</span>
|
305 |
</label>
|
306 |
<div class="input-icon right">
|
307 |
<textarea placeholder="<?php echo $gb_add_gallery_image_description_placeholder; ?>" class="form-control" name="ux_txt_img_desc_" id="ux_txt_img_desc_"></textarea>
|
@@ -311,7 +307,6 @@ if (!is_user_logged_in()) {
|
|
311 |
<label class="control-label">
|
312 |
<?php echo $gb_tags; ?> :
|
313 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_tag_tooltip; ?>" data-placement="right"></i>
|
314 |
-
<span class="required" aria-required="true">*</span>
|
315 |
</label>
|
316 |
<div class="input-icon right">
|
317 |
<select id="ux_ddl_tags_" name="ux_ddl_tags_" class="form-control" multiple>
|
@@ -331,7 +326,6 @@ if (!is_user_logged_in()) {
|
|
331 |
<label class="control-label">
|
332 |
<?php echo $gb_add_gallery_enable_url_title; ?> :
|
333 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_enable_url_tooltip; ?>" data-placement="right"></i>
|
334 |
-
<span class="required" aria-required="true">*</span>
|
335 |
</label>
|
336 |
<div class="input-group">
|
337 |
<label>
|
@@ -347,7 +341,6 @@ if (!is_user_logged_in()) {
|
|
347 |
<div class="form-group" id="ux_div_url_redirect_" style="display:none;">
|
348 |
<label class="control-label"><?php echo $gb_add_gallery_url_link_title; ?> :
|
349 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_url_link_tooltip; ?>" data-placement="right"></i>
|
350 |
-
<span class="required" aria-required="true">*</span>
|
351 |
</label>
|
352 |
<div class="input-icon right">
|
353 |
<input placeholder="<?php echo $gb_add_gallery_url_link_placeholder; ?>" class="form-control" type="text" name="ux_txt_img_url_" id="ux_txt_img_url_" value="http://">
|
@@ -416,7 +409,6 @@ if (!is_user_logged_in()) {
|
|
416 |
<div class="form-group">
|
417 |
<label class="control-label"><?php echo $gb_add_gallery_image_title; ?> :
|
418 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_image_tooltip; ?>" data-placement="right"></i>
|
419 |
-
<span class="required" aria-required="true">*</span>
|
420 |
</label>
|
421 |
<div class="input-icon right">
|
422 |
<input type="text" placeholder="<?php echo $gb_add_gallery_image_placeholder; ?>" class="form-control edit" name="ux_txt_img_title_<?php echo intval($pic["id"]); ?>" id="ux_txt_img_title_<?php echo intval($pic["id"]); ?>" value="<?php echo esc_attr($pic["image_title"]); ?>"/>
|
@@ -427,7 +419,6 @@ if (!is_user_logged_in()) {
|
|
427 |
<div class="form-group">
|
428 |
<label class="control-label"><?php echo $gb_add_gallery_image_alt_text_title; ?> :
|
429 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_image_alt_text_tooltip; ?>" data-placement="right"></i>
|
430 |
-
<span class="required" aria-required="true">*</span>
|
431 |
</label>
|
432 |
<div class="input-icon right">
|
433 |
<input type="text" placeholder="<?php echo $gb_add_gallery_image_alt_text_placeholder; ?>" class="form-control edit" name="ux_img_alt_text_<?php echo intval($pic["id"]); ?>" id="ux_img_alt_text_<?php echo intval($pic["id"]); ?>" value="<?php echo esc_attr(stripcslashes(urldecode($pic["alt_text"]))); ?>"/>
|
@@ -438,7 +429,6 @@ if (!is_user_logged_in()) {
|
|
438 |
<div class="form-group">
|
439 |
<label class="control-label"><?php echo $gb_add_gallery_image_description_title; ?> :
|
440 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_image_description_tooltip; ?>" data-placement="right"></i>
|
441 |
-
<span class="required" aria-required="true">*</span>
|
442 |
</label>
|
443 |
<div class="input-icon right">
|
444 |
<textarea placeholder="<?php echo $gb_add_gallery_image_description_placeholder; ?>" class="form-control" rows="3" name="ux_txt_img_desc_<?php echo intval($pic["id"]); ?>" id="ux_txt_img_desc_<?php echo intval($pic["id"]); ?>"><?php echo stripcslashes(urldecode($pic["image_description"])); ?></textarea>
|
@@ -447,7 +437,6 @@ if (!is_user_logged_in()) {
|
|
447 |
<div class="form-group">
|
448 |
<label class="control-label"><?php echo $gb_tags; ?> :
|
449 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_tag_tooltip; ?>" data-placement="right"></i>
|
450 |
-
<span class="required" aria-required="true">*</span>
|
451 |
</label>
|
452 |
<div class="input-icon right">
|
453 |
<select name="ux_ddl_tags_<?php echo intval($pic["id"]); ?>[]" id="ux_ddl_tags_<?php echo intval($pic["id"]); ?>" class="form-control" multiple>
|
@@ -467,7 +456,6 @@ if (!is_user_logged_in()) {
|
|
467 |
<div class="form-group">
|
468 |
<label class="control-label"> <?php echo $gb_add_gallery_enable_url_title; ?> :
|
469 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_enable_url_tooltip; ?>" data-placement="right"></i>
|
470 |
-
<span class="required" aria-required="true">*</span>
|
471 |
</label>
|
472 |
<div class="input-group">
|
473 |
<label>
|
@@ -481,7 +469,6 @@ if (!is_user_logged_in()) {
|
|
481 |
<div class="form-group" id="ux_div_url_redirect_<?php echo intval($pic["id"]); ?>" style="display: none;">
|
482 |
<label class="control-label"><?php echo $gb_add_gallery_url_link_title; ?> :
|
483 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_url_link_tooltip; ?>" data-placement="right"></i>
|
484 |
-
<span class="required" aria-required="true">*</span>
|
485 |
</label>
|
486 |
<div class="input-icon right">
|
487 |
<input placeholder="<?php echo $gb_add_gallery_url_link_placeholder; ?>" class="form-control" type="text" name="ux_txt_img_url_<?php echo intval($pic["id"]); ?>" id="ux_txt_img_url_<?php echo intval($pic["id"]); ?>" value="<?php echo esc_attr($pic["redirect_url"]); ?>"/>
|
134 |
<label class="control-label">
|
135 |
<?php echo $gb_gallery_description_title; ?> :
|
136 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_description_tooltip; ?>" data-placement="right"></i>
|
|
|
137 |
</label>
|
138 |
<?php
|
139 |
$gallery_description = isset($get_gallery_meta_data_unserialize["gallery_description"]) ? htmlspecialchars_decode($get_gallery_meta_data_unserialize["gallery_description"]) : "";
|
276 |
<label class="control-label">
|
277 |
<?php echo $gb_add_gallery_image_title; ?> :
|
278 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_image_tooltip; ?>" data-placement="right"></i>
|
|
|
279 |
</label>
|
280 |
<div class="input-icon right">
|
281 |
<input type="text" placeholder="<?php echo $gb_add_gallery_image_placeholder; ?>" class="form-control" name="ux_txt_img_title_" id="ux_txt_img_title_" value="">
|
287 |
<label class="control-label">
|
288 |
<?php echo $gb_add_gallery_image_alt_text_title; ?> :
|
289 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_image_alt_text_tooltip; ?>" data-placement="right"></i>
|
|
|
290 |
</label>
|
291 |
<div class="input-icon right">
|
292 |
<input type="text" placeholder="<?php echo $gb_add_gallery_image_alt_text_placeholder; ?>" class="form-control" name="ux_img_alt_text_" id="ux_img_alt_text_" value="">
|
298 |
<label class="control-label">
|
299 |
<?php echo $gb_add_gallery_image_description_title; ?> :
|
300 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_image_description_tooltip; ?>" data-placement="right"></i>
|
|
|
301 |
</label>
|
302 |
<div class="input-icon right">
|
303 |
<textarea placeholder="<?php echo $gb_add_gallery_image_description_placeholder; ?>" class="form-control" name="ux_txt_img_desc_" id="ux_txt_img_desc_"></textarea>
|
307 |
<label class="control-label">
|
308 |
<?php echo $gb_tags; ?> :
|
309 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_tag_tooltip; ?>" data-placement="right"></i>
|
|
|
310 |
</label>
|
311 |
<div class="input-icon right">
|
312 |
<select id="ux_ddl_tags_" name="ux_ddl_tags_" class="form-control" multiple>
|
326 |
<label class="control-label">
|
327 |
<?php echo $gb_add_gallery_enable_url_title; ?> :
|
328 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_enable_url_tooltip; ?>" data-placement="right"></i>
|
|
|
329 |
</label>
|
330 |
<div class="input-group">
|
331 |
<label>
|
341 |
<div class="form-group" id="ux_div_url_redirect_" style="display:none;">
|
342 |
<label class="control-label"><?php echo $gb_add_gallery_url_link_title; ?> :
|
343 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_url_link_tooltip; ?>" data-placement="right"></i>
|
|
|
344 |
</label>
|
345 |
<div class="input-icon right">
|
346 |
<input placeholder="<?php echo $gb_add_gallery_url_link_placeholder; ?>" class="form-control" type="text" name="ux_txt_img_url_" id="ux_txt_img_url_" value="http://">
|
409 |
<div class="form-group">
|
410 |
<label class="control-label"><?php echo $gb_add_gallery_image_title; ?> :
|
411 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_image_tooltip; ?>" data-placement="right"></i>
|
|
|
412 |
</label>
|
413 |
<div class="input-icon right">
|
414 |
<input type="text" placeholder="<?php echo $gb_add_gallery_image_placeholder; ?>" class="form-control edit" name="ux_txt_img_title_<?php echo intval($pic["id"]); ?>" id="ux_txt_img_title_<?php echo intval($pic["id"]); ?>" value="<?php echo esc_attr($pic["image_title"]); ?>"/>
|
419 |
<div class="form-group">
|
420 |
<label class="control-label"><?php echo $gb_add_gallery_image_alt_text_title; ?> :
|
421 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_image_alt_text_tooltip; ?>" data-placement="right"></i>
|
|
|
422 |
</label>
|
423 |
<div class="input-icon right">
|
424 |
<input type="text" placeholder="<?php echo $gb_add_gallery_image_alt_text_placeholder; ?>" class="form-control edit" name="ux_img_alt_text_<?php echo intval($pic["id"]); ?>" id="ux_img_alt_text_<?php echo intval($pic["id"]); ?>" value="<?php echo esc_attr(stripcslashes(urldecode($pic["alt_text"]))); ?>"/>
|
429 |
<div class="form-group">
|
430 |
<label class="control-label"><?php echo $gb_add_gallery_image_description_title; ?> :
|
431 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_image_description_tooltip; ?>" data-placement="right"></i>
|
|
|
432 |
</label>
|
433 |
<div class="input-icon right">
|
434 |
<textarea placeholder="<?php echo $gb_add_gallery_image_description_placeholder; ?>" class="form-control" rows="3" name="ux_txt_img_desc_<?php echo intval($pic["id"]); ?>" id="ux_txt_img_desc_<?php echo intval($pic["id"]); ?>"><?php echo stripcslashes(urldecode($pic["image_description"])); ?></textarea>
|
437 |
<div class="form-group">
|
438 |
<label class="control-label"><?php echo $gb_tags; ?> :
|
439 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_tag_tooltip; ?>" data-placement="right"></i>
|
|
|
440 |
</label>
|
441 |
<div class="input-icon right">
|
442 |
<select name="ux_ddl_tags_<?php echo intval($pic["id"]); ?>[]" id="ux_ddl_tags_<?php echo intval($pic["id"]); ?>" class="form-control" multiple>
|
456 |
<div class="form-group">
|
457 |
<label class="control-label"> <?php echo $gb_add_gallery_enable_url_title; ?> :
|
458 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_enable_url_tooltip; ?>" data-placement="right"></i>
|
|
|
459 |
</label>
|
460 |
<div class="input-group">
|
461 |
<label>
|
469 |
<div class="form-group" id="ux_div_url_redirect_<?php echo intval($pic["id"]); ?>" style="display: none;">
|
470 |
<label class="control-label"><?php echo $gb_add_gallery_url_link_title; ?> :
|
471 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_gallery_url_link_tooltip; ?>" data-placement="right"></i>
|
|
|
472 |
</label>
|
473 |
<div class="input-icon right">
|
474 |
<input placeholder="<?php echo $gb_add_gallery_url_link_placeholder; ?>" class="form-control" type="text" name="ux_txt_img_url_<?php echo intval($pic["id"]); ?>" id="ux_txt_img_url_<?php echo intval($pic["id"]); ?>" value="<?php echo esc_attr($pic["redirect_url"]); ?>"/>
|
views/galleries/manage-galleries.php
CHANGED
@@ -128,19 +128,22 @@ if (!is_user_logged_in()) {
|
|
128 |
<input type="checkbox" name="ux_chk_manage_gallery_<?php echo intval($row["meta_id"]); ?>" id="ux_chk_manage_gallery_<?php echo intval($row["meta_id"]); ?>" value="<?php echo intval($row["meta_id"]); ?>" onclick="check_all_gallery_bank('#ux_chk_all_galleries');">
|
129 |
</td>
|
130 |
<td class="custom-alternative custom-gallery-thumbnail" style="width:20%;">
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
|
|
|
|
|
|
144 |
<a href="admin.php?page=gb_add_gallery&gallery_id=<?php echo intval($row["meta_id"]); ?>&mode=edit">
|
145 |
<i class="icon-custom-note tooltips" data-original-title="<?php echo $gb_add_gallery_edit_tooltip; ?>" data-placement="right"></i>
|
146 |
<?php echo $gb_edit_tooltip; ?>
|
128 |
<input type="checkbox" name="ux_chk_manage_gallery_<?php echo intval($row["meta_id"]); ?>" id="ux_chk_manage_gallery_<?php echo intval($row["meta_id"]); ?>" value="<?php echo intval($row["meta_id"]); ?>" onclick="check_all_gallery_bank('#ux_chk_all_galleries');">
|
129 |
</td>
|
130 |
<td class="custom-alternative custom-gallery-thumbnail" style="width:20%;">
|
131 |
+
<a href="admin.php?page=gb_add_gallery&gallery_id=<?php echo intval($row["meta_id"]); ?>&mode=edit">
|
132 |
+
<?php
|
133 |
+
if ($get_count_image == 0) {
|
134 |
+
?>
|
135 |
+
<label>
|
136 |
+
<img id="ux_gb_img" class="tech-banker-cover-image" src="<?php echo GALLERY_BANK_PLUGIN_DIR_URL . "/assets/admin/images/gallery-cover.png"; ?>">
|
137 |
+
</label>
|
138 |
+
<?php
|
139 |
+
} else {
|
140 |
+
?>
|
141 |
+
|
142 |
+
<img id="ux_gb_img" class="tech-banker-cover-image" src="<?php echo GALLERY_BANK_THUMBS_NON_CROPPED_URL . $row["gallery_cover_image"]; ?>">
|
143 |
+
<?php
|
144 |
+
}
|
145 |
+
?>
|
146 |
+
</a>
|
147 |
<a href="admin.php?page=gb_add_gallery&gallery_id=<?php echo intval($row["meta_id"]); ?>&mode=edit">
|
148 |
<i class="icon-custom-note tooltips" data-original-title="<?php echo $gb_add_gallery_edit_tooltip; ?>" data-placement="right"></i>
|
149 |
<?php echo $gb_edit_tooltip; ?>
|
views/tags/add-tag.php
CHANGED
@@ -97,7 +97,7 @@ if (!is_user_logged_in()) {
|
|
97 |
<label class="control-label">
|
98 |
<?php echo $gb_tag_description_title; ?> :
|
99 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_tag_description_tooltip; ?>" data-placement="right"></i>
|
100 |
-
<span class="required" aria-required="true"
|
101 |
</label>
|
102 |
<textarea class="form-control" name="ux_txtarea_tag_description" id="ux_txtarea_tag_description" rows="5" placeholder="<?php echo $gb_add_tag_description_placeholder; ?>"><?php echo isset($manage_tag_data["tag_description"]) ? esc_html($manage_tag_data["tag_description"]) : ""; ?></textarea>
|
103 |
</div>
|
97 |
<label class="control-label">
|
98 |
<?php echo $gb_tag_description_title; ?> :
|
99 |
<i class="icon-custom-question tooltips" data-original-title="<?php echo $gb_add_tag_description_tooltip; ?>" data-placement="right"></i>
|
100 |
+
<span class="required" aria-required="true"> ( <?php echo $gb_premium_edition; ?> ) </span>
|
101 |
</label>
|
102 |
<textarea class="form-control" name="ux_txtarea_tag_description" id="ux_txtarea_tag_description" rows="5" placeholder="<?php echo $gb_add_tag_description_placeholder; ?>"><?php echo isset($manage_tag_data["tag_description"]) ? esc_html($manage_tag_data["tag_description"]) : ""; ?></textarea>
|
103 |
</div>
|
views/wizard/wizard.php
CHANGED
@@ -87,7 +87,8 @@ if (!is_user_logged_in()) {
|
|
87 |
<div class="row row-custom">
|
88 |
<div class="col-md-12 textalign">
|
89 |
<p>Hi there!</p>
|
90 |
-
<p>Don't ever miss an
|
|
|
91 |
<p>If you're not ready to Opt-In, that's ok too!</p>
|
92 |
<p><strong>Gallery Bank will still work fine.</strong></p>
|
93 |
</div>
|
87 |
<div class="row row-custom">
|
88 |
<div class="col-md-12 textalign">
|
89 |
<p>Hi there!</p>
|
90 |
+
<p>Don't ever miss an opportunity to opt in for Email Notifications / Announcements about exciting New Features and Update Releases.</p>
|
91 |
+
<p>Contribute in helping us making our plugin compatible with most plugins and themes by allowing to share non-sensitive information about your website.</p>
|
92 |
<p>If you're not ready to Opt-In, that's ok too!</p>
|
93 |
<p><strong>Gallery Bank will still work fine.</strong></p>
|
94 |
</div>
|