Gallery – Photo Gallery – Image Gallery - Version 2.0.6

Version Description

Download this release

Release Info

Developer machothemes
Plugin Icon wp plugin Gallery – Photo Gallery – Image Gallery
Version 2.0.6
Comparing to
See all releases

Code changes from version 2.0.5 to 2.0.6

Modula.php CHANGED
@@ -4,7 +4,7 @@
4
* Plugin URI: https://wp-modula.com/
5
* Description: Modula is the most powerful, user-friendly WordPress gallery plugin. Add galleries, masonry grids and more in a few clicks.
6
* Author: MachoThemes
7
- * Version: 2.0.5
8
* Author URI: https://www.machothemes.com/
9
* License: GPLv3 or later
10
* License URI: http://www.gnu.org/licenses/gpl-3.0.html
@@ -43,7 +43,7 @@
43
*
44
* @since 2.0.2
45
*/
46
- define( 'MODULA_LITE_VERSION', '2.0.5' );
47
define( 'MODULA_PATH', plugin_dir_path( __FILE__ ) );
48
define( 'MODULA_URL', plugin_dir_url( __FILE__ ) );
49
4
* Plugin URI: https://wp-modula.com/
5
* Description: Modula is the most powerful, user-friendly WordPress gallery plugin. Add galleries, masonry grids and more in a few clicks.
6
* Author: MachoThemes
7
+ * Version: 2.0.6
8
* Author URI: https://www.machothemes.com/
9
* License: GPLv3 or later
10
* License URI: http://www.gnu.org/licenses/gpl-3.0.html
43
*
44
* @since 2.0.2
45
*/
46
+ define( 'MODULA_LITE_VERSION', '2.0.6' );
47
define( 'MODULA_PATH', plugin_dir_path( __FILE__ ) );
48
define( 'MODULA_URL', plugin_dir_url( __FILE__ ) );
49
README.txt CHANGED
@@ -1,10 +1,10 @@
1
- === Modula Photo Gallery ===
2
Contributors: machothemes, silkalns
3
- Tags: best gallery plugin, photo gallery, image gallery, responsive gallery, wordpress gallery plugin, wordpress portfolio plugin, masonry gallery, fancy gallery, media gallery, mosaic gallery, polaroid gallery, portfolio gallery
4
Requires at least: 4.6
5
Tested up to: 5.1
6
Requires PHP: 5.6
7
- Stable tag: 2.0.5
8
License: GPLv3 or later
9
License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
@@ -12,11 +12,11 @@ Photo Gallery by Modula - an advanced solution for Photo Gallery users. Create b
12
13
== Description ==
14
15
- **Modula Photo Gallery** is a standalone plugin built, maintained & operated by the friendly folks over at [MachoThemes](https://www.machothemes.com/?utm_source=wordpress.org&utm_medium=web&utm_campaign=Modula%20Lite).
16
17
- With Modula, it's easier than ever to build a stunning [lightbox gallery](https://wp-modula.com/demo/lightbox-gallery?utm_source=wordpress.org&utm_medium=web&utm_campaign=Modula%20Lite), masonry grids, custom grids and more in no more than a few clicks right from the WordPress dashboard.
18
19
- Modula is the best WordPress photo gallery plugin for adding custom, unique and responsive galleries to your website. There is a free version of Modula available (Modula Lite) and a premium version (Modula Pro) both of which will allow you to add amazing, fast-loading galleries to your website.
20
21
22
= SEE HOW EASY IT IS TO CREATE A PHOTO GALLERY WITH MODULA =
@@ -128,7 +128,7 @@ Showcase your photography portfolio in a professional and creative way with Modu
128
129
* [Food Gallery](https://wp-modula.com/demo/applications/food?utm_source=wordpress.org&utm_medium=web&utm_campaign=Modula%20Lite)
130
131
- Modula is the perfect photo gallery plugin for **food blogs** and **restaurant** websites. Let your delicious meals speak for themselves in your unique and creative galleries created with Modula.
132
133
134
* [Pets Gallery](https://wp-modula.com/demo/applications/pets-animals?utm_source=wordpress.org&utm_medium=web&utm_campaign=Modula%20Lite)
1
+ === Modula Image Gallery ===
2
Contributors: machothemes, silkalns
3
+ Tags: best gallery plugin, image gallery, photo gallery, responsive gallery, wordpress gallery plugin, wordpress portfolio plugin, masonry gallery, fancy gallery, media gallery, mosaic gallery, polaroid gallery, portfolio gallery
4
Requires at least: 4.6
5
Tested up to: 5.1
6
Requires PHP: 5.6
7
+ Stable tag: 2.0.6
8
License: GPLv3 or later
9
License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
12
13
== Description ==
14
15
+ **Modula Image Gallery** is a standalone plugin built, maintained & operated by the friendly folks over at [MachoThemes](https://www.machothemes.com/?utm_source=wordpress.org&utm_medium=web&utm_campaign=Modula%20Lite).
16
17
+ With Modula, it's easier than ever to build stunning [lightbox galleries](https://wp-modula.com/demo/lightbox-gallery?utm_source=wordpress.org&utm_medium=web&utm_campaign=Modula%20Lite), masonry grids, custom grids and more in no more than a few clicks right from the WordPress dashboard.
18
19
+ Modula is the best WordPress gallery plugin for adding custom, unique and responsive galleries to your website. There is a free version of Modula available (Modula Lite) and a premium version (Modula Pro) both of which will allow you to add amazing, fast-loading galleries to your website.
20
21
22
= SEE HOW EASY IT IS TO CREATE A PHOTO GALLERY WITH MODULA =
128
129
* [Food Gallery](https://wp-modula.com/demo/applications/food?utm_source=wordpress.org&utm_medium=web&utm_campaign=Modula%20Lite)
130
131
+ Modula is the perfect image gallery plugin for **food blogs** and **restaurant** websites. Let your delicious meals speak for themselves in your unique and creative galleries created with Modula.
132
133
134
* [Pets Gallery](https://wp-modula.com/demo/applications/pets-animals?utm_source=wordpress.org&utm_medium=web&utm_campaign=Modula%20Lite)
assets/css/modula-gutenberg.css ADDED
@@ -0,0 +1,44 @@
1
+ .modula-block-preview {
2
+ background: #f3f3f5;
3
+ border-radius: 6px;
4
+ position: relative;
5
+ overflow: hidden; }
6
+ .modula-block-preview .components-spinner {
7
+ display: block;
8
+ float: none;
9
+ margin: 0 auto; }
10
+
11
+ .modula-block-preview__logo {
12
+ width: 100%;
13
+ height: 60px;
14
+ background: url(../images/block-preview-bg.svg) no-repeat 50% 0%;
15
+ background-size: 75%; }
16
+
17
+ .modula-block-preview__content {
18
+ width: 100%;
19
+ max-width: 400px;
20
+ margin: 40px auto;
21
+ text-align: center; }
22
+
23
+ .modula-block-preview--images {
24
+ display: -ms-flexbox;
25
+ display: flex;
26
+ -ms-flex-wrap: wrap;
27
+ flex-wrap: wrap;
28
+ margin-left: -1%;
29
+ margin-right: -1%; }
30
+
31
+ .modula-preview-image-wrap {
32
+ width: 23%;
33
+ height: 0px;
34
+ padding-bottom: 23%;
35
+ position: relative;
36
+ margin: 1%; }
37
+ .modula-preview-image-wrap img {
38
+ position: absolute;
39
+ left: 0;
40
+ top: 0;
41
+ width: 100%;
42
+ height: 100%;
43
+ -o-object-fit: cover;
44
+ object-fit: cover; }
assets/css/modula.css CHANGED
@@ -3,6 +3,7 @@
3
overflow: hidden;
4
transition: transform .3s ease-out, opacity .2s linear, top .3s, left .6s;
5
opacity: 0;
6
}
7
.modula .items .item > a {
8
display: block;
3
overflow: hidden;
4
transition: transform .3s ease-out, opacity .2s linear, top .3s, left .6s;
5
opacity: 0;
6
+ box-sizing: border-box;
7
}
8
.modula .items .item > a {
9
display: block;
assets/images/block-preview-bg.svg ADDED
@@ -0,0 +1,82 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="364 242.9 2290 357" style="enable-background:new 364 242.9 2290 357;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:#2ebf91;}
7
+ </style>
8
+ <g>
9
+ <path class="st0" d="M528.1,242.9c8.5,16.9,17,33.8,25.6,50.6c13.4,26.4,26.9,52.7,39.9,79.7c-41.8-23.3-83.6-46.7-125.4-70.1
10
+ c0.3-1.9,1.7-2.6,2.7-3.5c17.7-17.7,35.4-35.4,53.1-53c1.1-1.1,2.6-2,3.1-3.7C527.4,242.9,527.8,242.9,528.1,242.9z"/>
11
+ <path class="st0" d="M602.3,463.3c11.3-6.9,22.6-13.9,33.9-20.8c5.5-3.4,11.1-6.7,16.5-10.3c2.2-1.4,2.9-1.1,3.5,1.5
12
+ c6.4,25.3,13,50.6,19.6,75.8c0.6,2.2,1,3.7-2.4,3.5c-46.7-2.1-93.5-4.1-140.2-6.1c-0.2,0-0.3-0.1-0.5-0.2c0.5-1.7,2.1-2,3.3-2.7
13
+ c20-12.3,39.9-24.7,60-36.8c3.4-2.1,5.1-3.7,4.8-8.5c-1.4-21.3-1.8-42.6-2.6-63.9c-0.9-24.1-1.8-48.3-2.8-72.4
14
+ c-0.2-6.1-0.2-6.1,5.5-4.6c23.8,6.2,47.6,12.5,71.5,18.5c3.9,1,4.2,1.9,2.1,5.4c-23.4,38.5-46.7,77.1-70,115.7c-1,1.7-2,3.4-3,5.1
15
+ C601.7,462.8,602,463,602.3,463.3z"/>
16
+ <path class="st0" d="M372.8,326.9c48,2.6,95.8,5.1,143.9,7.7c-0.9,2-2.5,2.3-3.7,3.1c-38.6,23.2-77.3,46.4-115.9,69.6
17
+ c-3,1.8-4.3,2.6-5.4-1.9c-5.9-24.9-12.2-49.7-18.3-74.6C373.1,329.6,373,328.4,372.8,326.9z"/>
18
+ <path class="st0" d="M517.6,599.9c-23.2-43.7-45.9-86.6-69.2-130.5c2.3,1.2,3.5,1.8,4.7,2.4c39.8,21.5,79.5,43.1,119.3,64.5
19
+ c3.2,1.7,4.1,2.5,1,5.6c-17.7,17.8-35.2,35.9-52.8,53.9C519.7,596.9,518.9,598.2,517.6,599.9z"/>
20
+ <path class="st0" d="M364.9,505.1c26.6-40.5,53.1-80.8,79.7-121.3c1.3,1.3,0.9,2.5,0.9,3.6c0,46-0.1,92-0.1,137.9
21
+ c0,3.1-0.2,4.5-4,3.3c-24.9-7.7-49.9-15.2-74.9-22.8C366,505.8,365.7,505.5,364.9,505.1z"/>
22
+ </g>
23
+ <g>
24
+ <path class="st0" d="M843.2,334.1H883l44.2,71l44.2-71h39.8v168h-36.5V392.4l-47.3,71.8h-1l-46.8-71v109h-36.5V334.1z"/>
25
+ <path class="st0" d="M1110.8,505c-9.9,0-19.1-1.7-27.6-5.2c-8.5-3.4-15.8-8.2-22-14.2c-6.2-6-11-13-14.5-21.1
26
+ c-3.5-8.1-5.3-16.8-5.3-26V438c0-9.3,1.8-18,5.3-26c3.5-8.1,8.4-15.2,14.6-21.2c6.2-6.1,13.6-10.9,22.1-14.4
27
+ c8.5-3.5,17.8-5.3,27.8-5.3c9.9,0,19.1,1.7,27.6,5.2c8.5,3.4,15.8,8.2,22,14.2c6.2,6,11,13,14.5,21.1c3.5,8.1,5.3,16.8,5.3,26v0.5
28
+ c0,9.3-1.8,18-5.3,26c-3.5,8.1-8.4,15.2-14.6,21.2c-6.2,6.1-13.6,10.9-22.1,14.4C1130.1,503.2,1120.8,505,1110.8,505z
29
+ M1111.2,473.5c5.3,0,10-0.9,14-2.8c4.1-1.8,7.6-4.4,10.4-7.6c2.9-3.2,5.1-6.9,6.6-11.2c1.5-4.2,2.3-8.8,2.3-13.6V438
30
+ c0-4.8-0.8-9.3-2.4-13.6c-1.6-4.2-3.9-8-7-11.3c-3-3.3-6.6-5.9-10.8-7.8c-4.2-1.9-8.7-2.9-13.7-2.9c-5.3,0-10,0.9-14,2.8
31
+ c-4.1,1.8-7.6,4.4-10.4,7.6c-2.9,3.2-5.1,6.9-6.6,11.2c-1.5,4.2-2.3,8.8-2.3,13.6v0.5c0,4.8,0.8,9.3,2.4,13.6c1.6,4.2,3.9,8,7,11.3
32
+ c3,3.3,6.6,5.9,10.7,7.8C1101.5,472.6,1106.1,473.5,1111.2,473.5z"/>
33
+ <path class="st0" d="M1259.8,504.5c-7.5,0-14.8-1.4-21.8-4.3c-7-2.9-13.3-7.2-18.7-12.8c-5.4-5.7-9.8-12.6-13.1-20.9
34
+ c-3.3-8.2-4.9-17.7-4.9-28.4v-0.5c0-10.7,1.6-20.2,4.9-28.4c3.3-8.2,7.6-15.2,13-20.9c5.4-5.7,11.6-10,18.6-12.8
35
+ c7-2.9,14.4-4.3,22.1-4.3c9.8,0,17.8,1.9,24.1,5.8c6.3,3.8,11.6,8.3,16,13.4v-63.4h36.5v175.2h-36.5v-18.5
36
+ c-4.5,6.1-9.9,11.1-16.2,15C1277.4,502.5,1269.4,504.5,1259.8,504.5z M1269.2,473.5c4.3,0,8.4-0.8,12.1-2.5c3.8-1.7,7-4.1,9.8-7.2
37
+ c2.8-3.1,5-6.9,6.7-11.3c1.7-4.4,2.5-9.2,2.5-14.5v-0.5c0-5.3-0.8-10.1-2.5-14.5c-1.7-4.4-3.9-8.2-6.7-11.3
38
+ c-2.8-3.1-6.1-5.5-9.8-7.2c-3.8-1.7-7.8-2.5-12.1-2.5c-4.3,0-8.4,0.8-12.1,2.5c-3.8,1.7-7.1,4.1-10,7.2c-2.9,3.1-5.2,6.8-6.8,11.2
39
+ c-1.7,4.3-2.5,9.2-2.5,14.6v0.5c0,5.3,0.8,10.1,2.5,14.5c1.7,4.4,4,8.2,6.8,11.3c2.9,3.1,6.2,5.5,10,7.2
40
+ C1260.8,472.7,1264.8,473.5,1269.2,473.5z"/>
41
+ <path class="st0" d="M1411.7,504.5c-13.9,0-24.7-4.2-32.3-12.7c-7.6-8.5-11.4-20.2-11.4-35v-83.3h36.5V445c0,8.6,1.9,15.1,5.8,19.5
42
+ c3.8,4.4,9.3,6.6,16.3,6.6c7,0,12.6-2.2,16.7-6.6s6.1-10.9,6.1-19.5v-71.6h36.5v128.6h-36.5v-18.4c-2.1,2.7-4.4,5.4-6.8,7.9
43
+ c-2.5,2.5-5.2,4.7-8.3,6.6c-3,1.9-6.4,3.5-10.1,4.6C1420.5,503.9,1416.4,504.5,1411.7,504.5z"/>
44
+ <path class="st0" d="M1520.2,326.9h36.5v175.2h-36.5V326.9z"/>
45
+ <path class="st0" d="M1627.5,504.5c-6.1,0-11.8-0.8-17.2-2.5c-5.4-1.7-10-4.2-14-7.6c-4-3.4-7.2-7.5-9.5-12.4
46
+ c-2.3-4.9-3.5-10.5-3.5-16.9v-0.5c0-7,1.3-13.1,3.8-18.2c2.6-5.1,6.1-9.4,10.7-12.7c4.6-3.4,10-5.9,16.3-7.6
47
+ c6.3-1.7,13.3-2.5,21-2.5c6.6,0,12.3,0.5,17.2,1.4c4.9,1,9.6,2.2,14.3,3.8v-2.2c0-7.7-2.3-13.5-7-17.5c-4.6-4-11.5-6-20.6-6
48
+ c-7,0-13.2,0.6-18.6,1.8c-5.4,1.2-11,2.9-16.9,5.2l-9.1-27.8c7-3,14.4-5.5,22.1-7.4c7.7-1.9,17-2.9,27.8-2.9
49
+ c10.1,0,18.7,1.2,25.8,3.7c7.1,2.5,13,6,17.6,10.7c4.8,4.8,8.3,10.7,10.6,17.6c2.2,7,3.4,14.8,3.4,23.4v74.6h-35.3v-13.9
50
+ c-4.5,5-9.8,8.9-16.1,11.9C1644,503,1636.4,504.5,1627.5,504.5z M1638.5,479.3c8.6,0,15.6-2.1,20.8-6.2c5.2-4.2,7.8-9.6,7.8-16.3
51
+ v-6.5c-3.2-1.4-6.8-2.6-10.7-3.5c-3.9-0.9-8.1-1.3-12.6-1.3c-7.8,0-14,1.5-18.5,4.6c-4.5,3-6.7,7.4-6.7,13.2v0.5
52
+ c0,5,1.8,8.8,5.5,11.5C1627.8,477.9,1632.6,479.3,1638.5,479.3z"/>
53
+ <path class="st0" d="M1889.8,505c-13.1,0-25.1-2.2-35.9-6.5c-10.8-4.3-20.1-10.3-27.8-18c-7.8-7.7-13.8-16.8-18.1-27.4
54
+ c-4.3-10.6-6.5-22.1-6.5-34.6v-0.5c0-12,2.2-23.2,6.6-33.7c4.4-10.5,10.5-19.7,18.4-27.6c7.8-7.9,17.1-14.2,27.8-18.7
55
+ c10.7-4.6,22.5-6.8,35.3-6.8c7.5,0,14.4,0.5,20.5,1.6c6.2,1,11.9,2.5,17.2,4.4c5.3,1.9,10.2,4.3,14.9,7.2c4.6,2.9,9.1,6.2,13.4,9.8
56
+ l-23.3,28.1c-3.2-2.7-6.4-5.1-9.6-7.2c-3.2-2.1-6.5-3.8-10-5.3c-3.4-1.4-7.2-2.6-11.2-3.4c-4-0.8-8.4-1.2-13.2-1.2
57
+ c-6.7,0-13,1.4-18.8,4.2c-5.8,2.8-11,6.6-15.4,11.3c-4.4,4.7-7.8,10.3-10.3,16.6c-2.5,6.3-3.7,13.1-3.7,20.3v0.5
58
+ c0,7.7,1.2,14.8,3.7,21.3c2.5,6.5,6,12.1,10.6,17c4.6,4.8,9.9,8.5,16.1,11.2c6.2,2.6,13,4,20.5,4c13.8,0,25.4-3.4,34.8-10.2v-24.2
59
+ h-37.2v-31.9h73v73c-8.6,7.4-18.9,13.6-30.8,18.8C1918.8,502.4,1905.1,505,1889.8,505z"/>
60
+ <path class="st0" d="M2029.7,504.5c-6.1,0-11.8-0.8-17.2-2.5c-5.4-1.7-10-4.2-14-7.6c-4-3.4-7.2-7.5-9.5-12.4
61
+ c-2.3-4.9-3.5-10.5-3.5-16.9v-0.5c0-7,1.3-13.1,3.8-18.2c2.6-5.1,6.1-9.4,10.7-12.7c4.6-3.4,10-5.9,16.3-7.6
62
+ c6.3-1.7,13.3-2.5,21-2.5c6.6,0,12.3,0.5,17.2,1.4c4.9,1,9.6,2.2,14.3,3.8v-2.2c0-7.7-2.3-13.5-7-17.5c-4.6-4-11.5-6-20.6-6
63
+ c-7,0-13.2,0.6-18.6,1.8c-5.4,1.2-11,2.9-16.9,5.2l-9.1-27.8c7-3,14.4-5.5,22.1-7.4c7.7-1.9,17-2.9,27.8-2.9
64
+ c10.1,0,18.7,1.2,25.8,3.7c7.1,2.5,13,6,17.6,10.7c4.8,4.8,8.3,10.7,10.6,17.6c2.2,7,3.4,14.8,3.4,23.4v74.6h-35.3v-13.9
65
+ c-4.5,5-9.8,8.9-16.1,11.9C2046.3,503,2038.7,504.5,2029.7,504.5z M2040.7,479.3c8.6,0,15.6-2.1,20.8-6.2c5.2-4.2,7.8-9.6,7.8-16.3
66
+ v-6.5c-3.2-1.4-6.8-2.6-10.7-3.5c-3.9-0.9-8.1-1.3-12.6-1.3c-7.8,0-14,1.5-18.5,4.6c-4.5,3-6.7,7.4-6.7,13.2v0.5
67
+ c0,5,1.8,8.8,5.5,11.5C2030,477.9,2034.8,479.3,2040.7,479.3z"/>
68
+ <path class="st0" d="M2137,326.9h36.5v175.2H2137V326.9z"/>
69
+ <path class="st0" d="M2209.5,326.9h36.5v175.2h-36.5V326.9z"/>
70
+ <path class="st0" d="M2341.2,505c-9.6,0-18.5-1.6-26.8-4.8c-8.2-3.2-15.4-7.8-21.4-13.7c-6-5.9-10.7-12.9-14-21
71
+ c-3.4-8.1-5-17.1-5-27V438c0-9.1,1.6-17.8,4.7-25.9s7.5-15.3,13.1-21.4c5.6-6.1,12.3-10.9,20-14.4c7.8-3.5,16.4-5.3,25.8-5.3
72
+ c10.7,0,20,1.9,27.8,5.8c7.8,3.8,14.4,9,19.6,15.5c5.2,6.5,9,13.9,11.5,22.3c2.5,8.4,3.7,17.2,3.7,26.3c0,1.4,0,3-0.1,4.6
73
+ c-0.1,1.6-0.2,3.3-0.4,5h-89.5c1.8,8.3,5.4,14.6,10.9,18.8c5.5,4.2,12.4,6.4,20.5,6.4c6.1,0,11.5-1,16.3-3.1
74
+ c4.8-2.1,9.8-5.4,14.9-10.1l20.9,18.5c-6.1,7.5-13.4,13.4-22.1,17.6C2363.1,502.8,2352.9,505,2341.2,505z M2364.7,427.7
75
+ c-1.1-8.2-4-14.8-8.6-19.8c-4.6-5-10.8-7.6-18.5-7.6c-7.7,0-13.9,2.5-18.6,7.4c-4.7,5-7.8,11.6-9.2,19.9H2364.7z"/>
76
+ <path class="st0" d="M2427.4,373.4h36.5v25.9c3.7-8.8,8.7-15.8,15.1-21.1c6.4-5.3,15-7.7,25.9-7.2v38.2h-1.9
77
+ c-12.2,0-21.7,3.7-28.7,11c-7,7.4-10.4,18.8-10.4,34.3v47.5h-36.5V373.4z"/>
78
+ <path class="st0" d="M2558.4,541.2c-6.7,0-12.6-0.8-17.8-2.4c-5.1-1.6-10-3.8-14.6-6.5l12.2-26.4c2.4,1.4,5,2.6,7.8,3.6
79
+ c2.8,1,5.4,1.4,7.8,1.4c3.2,0,5.7-0.6,7.6-1.8c1.8-1.2,3.6-3.4,5.2-6.6l-50.4-129.1h38.6l29.3,87.6l28.1-87.6h37.9l-49.4,131.8
80
+ c-2.4,6.6-5,12.1-7.7,16.7c-2.7,4.6-5.7,8.3-9,11.2c-3.3,2.9-7,5-11.2,6.2C2568.6,540.6,2563.8,541.2,2558.4,541.2z"/>
81
+ </g>
82
+ </svg>
assets/js/jquery-modula.js CHANGED
@@ -1,4 +1,267 @@
1
// Place any jQuery/helper plugins in here.
2
/*
3
* Project: jQuery Modula 2
4
* Version: 1.0
@@ -58,6 +321,18 @@ jQuery(document).on( 'vc-full-width-row-single vc-full-width-row', function( eve
58
this.init();
59
}
60
61
// Create custom grid gallery based on packery.
62
Plugin.prototype.createCustomGallery = function () {
63
@@ -67,7 +342,7 @@ jQuery(document).on( 'vc-full-width-row-single vc-full-width-row', function( eve
67
columns = this.options.columns,
68
viewport = document.documentElement.clientWidth;
69
70
- if ( this.options.enableResponsive ) {
71
72
if ( viewport <= 568 ) {
73
columns = this.options.mobileColumns;
@@ -78,9 +353,9 @@ jQuery(document).on( 'vc-full-width-row-single vc-full-width-row', function( eve
78
}
79
80
if ( this.options.gutter > 0 ) {
81
- size = Math.trunc( ( containerWidth - this.options.gutter * columns ) / columns );
82
}else{
83
- size = Math.trunc( containerWidth / columns );
84
}
85
86
this.$items.not(".jtg-hidden").each(function (i, item) {
@@ -93,7 +368,7 @@ jQuery(document).on( 'vc-full-width-row-single vc-full-width-row', function( eve
93
widthColumns = 12;
94
}
95
96
- if ( plugin.options.enableResponsive ) {
97
auxWidth = widthColumns;
98
auxHeight = heightColumns;
99
@@ -415,7 +690,7 @@ jQuery(document).on( 'vc-full-width-row-single vc-full-width-row', function( eve
415
instance.onResize(instance);
416
});
417
418
- $(window).on( 'scroll', function () {
419
instance.onResize(instance);
420
});
421
1
// Place any jQuery/helper plugins in here.
2
+
3
+ /**
4
+ * Copyright Marc J. Schmidt. See the LICENSE file at the top-level
5
+ * directory of this distribution and at
6
+ * https://github.com/marcj/css-element-queries/blob/master/LICENSE.
7
+ */
8
+ (function (root, factory) {
9
+ if (typeof define === "function" && define.amd) {
10
+ define(factory);
11
+ } else if (typeof exports === "object") {
12
+ module.exports = factory();
13
+ } else {
14
+ root.ResizeSensor = factory();
15
+ }
16
+ }(typeof window !== 'undefined' ? window : this, function () {
17
+
18
+ // Make sure it does not throw in a SSR (Server Side Rendering) situation
19
+ if (typeof window === "undefined") {
20
+ return null;
21
+ }
22
+ // Only used for the dirty checking, so the event callback count is limited to max 1 call per fps per sensor.
23
+ // In combination with the event based resize sensor this saves cpu time, because the sensor is too fast and
24
+ // would generate too many unnecessary events.
25
+ var requestAnimationFrame = window.requestAnimationFrame ||
26
+ window.mozRequestAnimationFrame ||
27
+ window.webkitRequestAnimationFrame ||
28
+ function (fn) {
29
+ return window.setTimeout(fn, 20);
30
+ };
31
+
32
+ /**
33
+ * Iterate over each of the provided element(s).
34
+ *
35
+ * @param {HTMLElement|HTMLElement[]} elements
36
+ * @param {Function} callback
37
+ */
38
+ function forEachElement(elements, callback){
39
+ var elementsType = Object.prototype.toString.call(elements);
40
+ var isCollectionTyped = ('[object Array]' === elementsType
41
+ || ('[object NodeList]' === elementsType)
42
+ || ('[object HTMLCollection]' === elementsType)
43
+ || ('[object Object]' === elementsType)
44
+ || ('undefined' !== typeof jQuery && elements instanceof jQuery) //jquery
45
+ || ('undefined' !== typeof Elements && elements instanceof Elements) //mootools
46
+ );
47
+ var i = 0, j = elements.length;
48
+ if (isCollectionTyped) {
49
+ for (; i < j; i++) {
50
+ callback(elements[i]);
51
+ }
52
+ } else {
53
+ callback(elements);
54
+ }
55
+ }
56
+
57
+ /**
58
+ * Get element size
59
+ * @param {HTMLElement} element
60
+ * @returns {Object} {width, height}
61
+ */
62
+ function getElementSize(element) {
63
+ if (!element.getBoundingClientRect) {
64
+ return {
65
+ width: element.offsetWidth,
66
+ height: element.offsetHeight
67
+ }
68
+ }
69
+
70
+ var rect = element.getBoundingClientRect();
71
+ return {
72
+ width: Math.round(rect.width),
73
+ height: Math.round(rect.height)
74
+ }
75
+ }
76
+
77
+ /**
78
+ * Class for dimension change detection.
79
+ *
80
+ * @param {Element|Element[]|Elements|jQuery} element
81
+ * @param {Function} callback
82
+ *
83
+ * @constructor
84
+ */
85
+ var ResizeSensor = function(element, callback) {
86
+ /**
87
+ *
88
+ * @constructor
89
+ */
90
+ function EventQueue() {
91
+ var q = [];
92
+ this.add = function(ev) {
93
+ q.push(ev);
94
+ };
95
+
96
+ var i, j;
97
+ this.call = function() {
98
+ for (i = 0, j = q.length; i < j; i++) {
99
+ q[i].call();
100
+ }
101
+ };
102
+
103
+ this.remove = function(ev) {
104
+ var newQueue = [];
105
+ for(i = 0, j = q.length; i < j; i++) {
106
+ if(q[i] !== ev) newQueue.push(q[i]);
107
+ }
108
+ q = newQueue;
109
+ };
110
+
111
+ this.length = function() {
112
+ return q.length;
113
+ }
114
+ }
115
+
116
+ /**
117
+ *
118
+ * @param {HTMLElement} element
119
+ * @param {Function} resized
120
+ */
121
+ function attachResizeEvent(element, resized) {
122
+ if (!element) return;
123
+ if (element.resizedAttached) {
124
+ element.resizedAttached.add(resized);
125
+ return;
126
+ }
127
+
128
+ element.resizedAttached = new EventQueue();
129
+ element.resizedAttached.add(resized);
130
+
131
+ element.resizeSensor = document.createElement('div');
132
+ element.resizeSensor.dir = 'ltr';
133
+ element.resizeSensor.className = 'resize-sensor';
134
+ var style = 'position: absolute; left: -10px; top: -10px; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;';
135
+ var styleChild = 'position: absolute; left: 0; top: 0; transition: 0s;';
136
+
137
+ element.resizeSensor.style.cssText = style;
138
+ element.resizeSensor.innerHTML =
139
+ '<div class="resize-sensor-expand" style="' + style + '">' +
140
+ '<div style="' + styleChild + '"></div>' +
141
+ '</div>' +
142
+ '<div class="resize-sensor-shrink" style="' + style + '">' +
143
+ '<div style="' + styleChild + ' width: 200%; height: 200%"></div>' +
144
+ '</div>';
145
+ element.appendChild(element.resizeSensor);
146
+
147
+ var position = window.getComputedStyle(element).getPropertyPriority('position');
148
+ if ('absolute' !== position && 'relative' !== position && 'fixed' !== position) {
149
+ element.style.position = 'relative';
150
+ }
151
+
152
+ var expand = element.resizeSensor.childNodes[0];
153
+ var expandChild = expand.childNodes[0];
154
+ var shrink = element.resizeSensor.childNodes[1];
155
+ var dirty, rafId, newWidth, newHeight;
156
+ var size = getElementSize(element);
157
+ var lastWidth = size.width;
158
+ var lastHeight = size.height;
159
+
160
+ var reset = function() {
161
+ //set display to block, necessary otherwise hidden elements won't ever work
162
+ var invisible = element.offsetWidth === 0 && element.offsetHeight === 0;
163
+
164
+ if (invisible) {
165
+ var saveDisplay = element.style.display;
166
+ element.style.display = 'block';
167
+ }
168
+
169
+ expandChild.style.width = '100000px';
170
+ expandChild.style.height = '100000px';
171
+
172
+ expand.scrollLeft = 100000;
173
+ expand.scrollTop = 100000;
174
+
175
+ shrink.scrollLeft = 100000;
176
+ shrink.scrollTop = 100000;
177
+
178
+ if (invisible) {
179
+ element.style.display = saveDisplay;
180
+ }
181
+ };
182
+ element.resizeSensor.resetSensor = reset;
183
+
184
+ var onResized = function() {
185
+ rafId = 0;
186
+
187
+ if (!dirty) return;
188
+
189
+ lastWidth = newWidth;
190
+ lastHeight = newHeight;
191
+
192
+ if (element.resizedAttached) {
193
+ element.resizedAttached.call();
194
+ }
195
+ };
196
+
197
+ var onScroll = function() {
198
+ var size = getElementSize(element);
199
+ var newWidth = size.width;
200
+ var newHeight = size.height;
201
+ dirty = newWidth != lastWidth || newHeight != lastHeight;
202
+
203
+ if (dirty && !rafId) {
204
+ rafId = requestAnimationFrame(onResized);
205
+ }
206
+
207
+ reset();
208
+ };
209
+
210
+ var addEvent = function(el, name, cb) {
211
+ if (el.attachEvent) {
212
+ el.attachEvent('on' + name, cb);
213
+ } else {
214
+ el.addEventListener(name, cb);
215
+ }
216
+ };
217
+
218
+ addEvent(expand, 'scroll', onScroll);
219
+ addEvent(shrink, 'scroll', onScroll);
220
+
221
+ // Fix for custom Elements
222
+ requestAnimationFrame(reset);
223
+ }
224
+
225
+ forEachElement(element, function(elem){
226
+ attachResizeEvent(elem, callback);
227
+ });
228
+
229
+ this.detach = function(ev) {
230
+ ResizeSensor.detach(element, ev);
231
+ };
232
+
233
+ this.reset = function() {
234
+ element.resizeSensor.resetSensor();
235
+ };
236
+ };
237
+
238
+ ResizeSensor.reset = function(element, ev) {
239
+ forEachElement(element, function(elem){
240
+ elem.resizeSensor.resetSensor();
241
+ });
242
+ };
243
+
244
+ ResizeSensor.detach = function(element, ev) {
245
+ forEachElement(element, function(elem){
246
+ if (!elem) return;
247
+ if(elem.resizedAttached && typeof ev === "function"){
248
+ elem.resizedAttached.remove(ev);
249
+ if(elem.resizedAttached.length()) return;
250
+ }
251
+ if (elem.resizeSensor) {
252
+ if (elem.contains(elem.resizeSensor)) {
253
+ elem.removeChild(elem.resizeSensor);
254
+ }
255
+ delete elem.resizeSensor;
256
+ delete elem.resizedAttached;
257
+ }
258
+ });
259
+ };
260
+
261
+ return ResizeSensor;
262
+
263
+ }));
264
+
265
/*
266
* Project: jQuery Modula 2
267
* Version: 1.0
321
this.init();
322
}
323
324
+ Plugin.prototype.trunc = function ( v ) {
325
+
326
+ if ( Math.trunc ) {
327
+ return Math.trunc( v );
328
+ }else{
329
+ v = +v;
330
+ if (!isFinite(v)) return v;
331
+
332
+ return (v - v % 1) || (v < 0 ? -0 : v === 0 ? v : 0);
333
+ }
334
+ }
335
+
336
// Create custom grid gallery based on packery.
337
Plugin.prototype.createCustomGallery = function () {
338
342
columns = this.options.columns,
343
viewport = document.documentElement.clientWidth;
344
345
+ if ( '1' == this.options.enableResponsive ) {
346
347
if ( viewport <= 568 ) {
348
columns = this.options.mobileColumns;
353
}
354
355
if ( this.options.gutter > 0 ) {
356
+ size = plugin.trunc( ( containerWidth - this.options.gutter * columns ) / columns );
357
}else{
358
+ size = plugin.trunc( containerWidth / columns );
359
}
360
361
this.$items.not(".jtg-hidden").each(function (i, item) {
368
widthColumns = 12;
369
}
370
371
+ if ( '1' == plugin.options.enableResponsive ) {
372
auxWidth = widthColumns;
373
auxHeight = heightColumns;
374
690
instance.onResize(instance);
691
});
692
693
+ new ResizeSensor( instance.$element, function() {
694
instance.onResize(instance);
695
});
696
assets/js/jquery-modula.min.js CHANGED
@@ -1 +1 @@
1
- function tg_getURLParameter(t){return decodeURIComponent((new RegExp("[?|&]"+t+"=([^&;]+?)(&|#|;|$)").exec(location.search)||[,""])[1].replace(/\+/g,"%20"))||null}jQuery(document).on("vc-full-width-row-single vc-full-width-row",function(t,i){0<jQuery("body").find(".modula").length&&jQuery(window).trigger("modula-update")}),function(d,l,c,t){var o="modulaGallery",e={resizer:"/",margin:10,keepArea:!0,type:"creative-gallery",columns:12,gutter:10,enableTwitter:!1,enableFacebook:!1,enableGplus:!1,enablePinterest:!1};function n(t,i){this.element=t,this.$element=d(t),this.$itemsCnt=this.$element.find(".items"),this.$items=this.$itemsCnt.find(".item"),this.options=d.extend({},e,i),this._defaults=e,this._name=o,this.tiles=[],this.$tilesCnt=null,this.completed=!1,this.lastWidth=0,this.resizeTO=0,this.isPackeryActive=!1,this.init()}n.prototype.createCustomGallery=function(){var a,t=this.$element.width(),r=this,l=this.options.columns,i=c.documentElement.clientWidth;this.options.enableResponsive&&(i<=568?l=this.options.mobileColumns:i<=768&&(l=this.options.tabletColumns)),a=0<this.options.gutter?Math.trunc((t-this.options.gutter*l)/l):Math.trunc(t/l),this.$items.not(".jtg-hidden").each(function(t,i){var e,s,o,n,h={};e=d(i).data("width"),s=d(i).data("height"),12<e&&(e=12),r.options.enableResponsive&&(o=e,n=s,1==l?s=(e=1)*n/o:((e=Math.round(l*o/12))<1&&(e=1),(s=Math.round(e*n/o))<1&&(s=1))),h.width=a*e+r.options.gutter*(e-1),h.height=a*s+r.options.gutter*(s-1),d(i).data("size",h).addClass("tiled").addClass(h.width>h.height?"tile-h":"tile-v").data("position"),d(i).css(d(i).data("size")),d(i).find(".figc").css({width:d(i).data("size").width,height:d(i).data("size").height})}),this.isPackeryActive&&this.$itemsCnt.packery("destroy"),this.$itemsCnt.packery({itemSelector:".item",gutter:parseInt(r.options.gutter),columnWidth:a,resize:!1}),this.isPackeryActive=!0},n.prototype.createGrid=function(){var s=this;this.options.width&&this.$itemsCnt.width(this.options.width),this.options.height&&this.$itemsCnt.height(this.options.height),this.$itemsCnt.data("area",this.$itemsCnt.width()*this.$itemsCnt.height()),this.lastWidth=this.$itemsCnt.width();for(var t=0;t<this.$items.not(".jtg-hidden").length;t++)this.tiles.push(s.getSlot());this.tiles.sort(function(t,i){return t.position-i.position}),this.$items.not(".jtg-hidden").each(function(t,i){var e=s.tiles[t];d(i).data("size",e).addClass("tiled").addClass(e.width>e.height?"tile-h":"tile-v").data("position")}),this.$items.each(function(t,i){d(i).css(d(i).data("size")),d(i).find(".figc").css({width:d(i).data("size").width,height:d(i).data("size").height})}),this.completed=!0},n.prototype.getSlot=function(){if(0==this.tiles.length)return e={top:0,left:0,width:this.$itemsCnt.width(),height:this.$itemsCnt.height(),area:this.$itemsCnt.width()*this.$itemsCnt.height(),position:0};for(var t=0,i=0;i<this.tiles.length;i++){(e=this.tiles[i]).area>this.tiles[t].area&&(t=i)}var e={},s=this.tiles[t];if(s.width>s.height){var o=s.width/2*this.options.randomFactor;s.prevWidth=s.width,s.width=Math.floor(s.width/2+o*(Math.random()-.5)),e={top:s.top,left:s.left+s.width+this.options.margin,width:s.prevWidth-s.width-this.options.margin,height:s.height}}else{o=s.height/2*this.options.randomFactor;s.prevHeight=s.height,s.height=Math.floor(s.height/2+o*(Math.random()-.5)),e={left:s.left,top:s.top+s.height+this.options.margin,width:s.width,height:s.prevHeight-s.height-this.options.margin}}return e.area=e.width*e.height,e.position=1e3*e.top+e.left,s.position=1e3*s.top+s.left,this.tiles[t]=s,this.tiles[t].area=s.width*s.height,e},n.prototype.reset=function(){var e=this;e.tiles=[],"custom-grid"===e.options.type?(e.createCustomGallery(),e.$itemsCnt.packery()):e.createGrid(),e.$itemsCnt.find(".pic").each(function(t,i){e.placeImage(t)}),e.lastWidth=e.$itemsCnt.width()},n.prototype.onResize=function(i){i.lastWidth!=i.$itemsCnt.width()&&(clearTimeout(i.resizeTO),i.resizeTO=setTimeout(function(){if(i.options.keepArea){var t=i.$itemsCnt.data("area");i.$itemsCnt.height(t/i.$itemsCnt.width())}i.reset()},100))},n.prototype.placeImage=function(t){var i=this.$items.eq(t),e=i.find(".pic"),s=i.data("size"),o=e.data("size"),n=s.width/s.height,h=o.width/o.height,a=e.data("valign")?e.data("valign"):"middle",r=e.data("halign")?e.data("halign"):"center",l={top:"auto",bottom:"auto",left:"auto",right:"auto",width:"auto",height:"auto",margin:"0",maxWidth:"999em"};if(h<n)switch(l.width=s.width,l.left=0,a){case"top":l.top=0;break;case"middle":l.top=0-(s.width*(1/h)-s.height)/2;break;case"bottom":l.bottom=0}else switch(l.height=s.height,l.top=0,r){case"left":l.left=0;break;case"center":l.left=0-(s.height*h-s.width)/2;break;case"right":l.right=0}e.css(l)},n.prototype.loadImage=function(t){var i=this,e=i.$items.eq(t).find(".pic"),s=new Image;s.onerror=function(){console.log("error loading image ["+t+"] : "+this.src),t+1<i.$items.length&&i.loadImage(t+1)},s.onload=function(){e.data("size",{width:this.width,height:this.height}),i.placeImage(t),i.$items.eq(t).addClass("tg-loaded"),t+1<i.$items.length&&i.loadImage(t+1)};var o=e.data("src");s.src=o,e.attr("src",o)},n.prototype.init=function(){var t=this;d(c).trigger("modula_api_before_init",[t]),this.$itemsCnt.css({position:"relative",zIndex:1}),this.$items.addClass("tile"),this.$items.find(".pic").removeAttr("src"),"custom-grid"===this.options.type?this.createCustomGallery():this.createGrid(),this.loadImage(0),d(l).resize(function(){t.onResize(t)}),d(l).on("modula-update",function(){t.onResize(t)}),d(l).on("scroll",function(){t.onResize(t)}),this.setupSocial(),this.options.onComplete&&this.options.onComplete(),d(c).trigger("modula_api_after_init",[t])},n.prototype.setupSocial=function(){this.options.enableTwitter&&i(this.$items,this),this.options.enableFacebook&&s(this.$items,this),this.options.enableGplus&&a(this.$items,this),this.options.enablePinterest&&h(this.$items,this)};var i=function(t,s){t.find(".modula-icon-twitter").click(function(t){t.preventDefault();var i=d(this).parents(".tile:first").find(".caption"),e=s.options.twitterText||c.title;return!s.options.twitterText&&1==i.length&&0<i.text().length&&(e=d.trim(i.text())),l.open("https://twitter.com/intent/tweet?url="+encodeURI(location.href.split("#")[0])+"&text="+encodeURI(e),"ftgw","location=1,status=1,scrollbars=1,width=600,height=400").moveTo(screen.width/2-300,screen.height/2-200),!1})},s=function(t,o){t.find(".modula-icon-facebook").click(function(t){t.preventDefault();var i=d(this).parents(".tile:first").find(".pic"),e=d(this).parents(".tile:first").find(".caption");o.options.facebookText||c.title;!o.options.facebookText&&1==e.length&&0<e.text().length&&d.trim(e.text());i.attr("src");var s="//www.facebook.com/sharer.php?u="+location.href;return l.open(s,"ftgw","location=1,status=1,scrollbars=1,width=600,height=400").moveTo(screen.width/2-300,screen.height/2-200),!1})},h=function(t,r){t.find(".modula-icon-pinterest").click(function(t){t.preventDefault();var i=d(this).parents(".tile:first").find(".pic"),e=d(this).parents(".tile:first").find(".caption"),s=r.options.facebookText||c.title;!r.options.facebookText&&1==e.length&&0<e.text().length&&(s=d.trim(e.text()));var o,n,h="http://pinterest.com/pin/create/button/?url="+encodeURI(location.href)+"&description="+encodeURI(s);if(1==i.length){var a=i.attr("src");h+="&media="+(o=a,(n=c.createElement("img")).src=o,o=n.src,n.src=null,o)}return l.open(h,"ftgw","location=1,status=1,scrollbars=1,width=600,height=400").moveTo(screen.width/2-300,screen.height/2-200),!1})},a=function(t,i){t.find(".modula-icon-google-plus").click(function(t){t.preventDefault();var i="https://plus.google.com/share?url="+encodeURI(location.href);return l.open(i,"ftgw","location=1,status=1,scrollbars=1,width=600,height=400").moveTo(screen.width/2-300,screen.height/2-200),!1})};d.fn[o]=function(i){var e,s=arguments;return i===t||"object"==typeof i?this.each(function(){d.data(this,"plugin_"+o)||d.data(this,"plugin_"+o,new n(this,i))}):"string"==typeof i&&"_"!==i[0]&&"init"!==i?(this.each(function(){var t=d.data(this,"plugin_"+o);t instanceof n&&"function"==typeof t[i]&&(e=t[i].apply(t,Array.prototype.slice.call(s,1))),"destroy"===i&&d.data(this,"plugin_"+o,null)}),e!==t?e:this):void 0}}(jQuery,window,document),jQuery(document).ready(function(e){var t=e(".modula-gallery");e.each(t,function(){var t=e(this).attr("id"),i=e(this).data("config");e("#"+t).modulaGallery(i)})});
1
+ function tg_getURLParameter(t){return decodeURIComponent((new RegExp("[?|&]"+t+"=([^&;]+?)(&|#|;|$)").exec(location.search)||[,""])[1].replace(/\+/g,"%20"))||null}!function(t,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():t.ResizeSensor=e()}("undefined"!=typeof window?window:this,function(){if("undefined"==typeof window)return null;var v=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(t){return window.setTimeout(t,20)};function n(t,e){var i=Object.prototype.toString.call(t),n="[object Array]"===i||"[object NodeList]"===i||"[object HTMLCollection]"===i||"[object Object]"===i||"undefined"!=typeof jQuery&&t instanceof jQuery||"undefined"!=typeof Elements&&t instanceof Elements,s=0,o=t.length;if(n)for(;s<o;s++)e(t[s]);else e(t)}function y(t){if(!t.getBoundingClientRect)return{width:t.offsetWidth,height:t.offsetHeight};var e=t.getBoundingClientRect();return{width:Math.round(e.width),height:Math.round(e.height)}}var s=function(e,i){function w(){var i,n,s=[];this.add=function(t){s.push(t)},this.call=function(){for(i=0,n=s.length;i<n;i++)s[i].call()},this.remove=function(t){var e=[];for(i=0,n=s.length;i<n;i++)s[i]!==t&&e.push(s[i]);s=e},this.length=function(){return s.length}}n(e,function(t){!function(n,t){if(n)if(n.resizedAttached)n.resizedAttached.add(t);else{n.resizedAttached=new w,n.resizedAttached.add(t),n.resizeSensor=document.createElement("div"),n.resizeSensor.dir="ltr",n.resizeSensor.className="resize-sensor";var e="position: absolute; left: -10px; top: -10px; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;",i="position: absolute; left: 0; top: 0; transition: 0s;";n.resizeSensor.style.cssText=e,n.resizeSensor.innerHTML='<div class="resize-sensor-expand" style="'+e+'"><div style="'+i+'"></div></div><div class="resize-sensor-shrink" style="'+e+'"><div style="'+i+' width: 200%; height: 200%"></div></div>',n.appendChild(n.resizeSensor);var s=window.getComputedStyle(n).getPropertyPriority("position");"absolute"!==s&&"relative"!==s&&"fixed"!==s&&(n.style.position="relative");var o,h,r=n.resizeSensor.childNodes[0],a=r.childNodes[0],d=n.resizeSensor.childNodes[1],l=y(n),c=l.width,u=l.height,p=function(){var t=0===n.offsetWidth&&0===n.offsetHeight;if(t){var e=n.style.display;n.style.display="block"}a.style.width="100000px",a.style.height="100000px",r.scrollLeft=1e5,r.scrollTop=1e5,d.scrollLeft=1e5,d.scrollTop=1e5,t&&(n.style.display=e)};n.resizeSensor.resetSensor=p;var f=function(){h=0,o&&(u=c=void 0,n.resizedAttached&&n.resizedAttached.call())},g=function(){var t=y(n),e=t.width,i=t.height;(o=e!=c||i!=u)&&!h&&(h=v(f)),p()},m=function(t,e,i){t.attachEvent?t.attachEvent("on"+e,i):t.addEventListener(e,i)};m(r,"scroll",g),m(d,"scroll",g),v(p)}}(t,i)}),this.detach=function(t){s.detach(e,t)},this.reset=function(){e.resizeSensor.resetSensor()}};return s.reset=function(t,e){n(t,function(t){t.resizeSensor.resetSensor()})},s.detach=function(t,e){n(t,function(t){t&&(t.resizedAttached&&"function"==typeof e&&(t.resizedAttached.remove(e),t.resizedAttached.length())||t.resizeSensor&&(t.contains(t.resizeSensor)&&t.removeChild(t.resizeSensor),delete t.resizeSensor,delete t.resizedAttached))})},s}),jQuery(document).on("vc-full-width-row-single vc-full-width-row",function(t,e){0<jQuery("body").find(".modula").length&&jQuery(window).trigger("modula-update")}),function(l,d,c,t){var s="modulaGallery",i={resizer:"/",margin:10,keepArea:!0,type:"creative-gallery",columns:12,gutter:10,enableTwitter:!1,enableFacebook:!1,enableGplus:!1,enablePinterest:!1};function o(t,e){this.element=t,this.$element=l(t),this.$itemsCnt=this.$element.find(".items"),this.$items=this.$itemsCnt.find(".item"),this.options=l.extend({},i,e),this._defaults=i,this._name=s,this.tiles=[],this.$tilesCnt=null,this.completed=!1,this.lastWidth=0,this.resizeTO=0,this.isPackeryActive=!1,this.init()}o.prototype.trunc=function(t){return Math.trunc?Math.trunc(t):(t=+t,isFinite(t)?t-t%1||(t<0?-0:0===t?t:0):t)},o.prototype.createCustomGallery=function(){var r,t=this.$element.width(),a=this,d=this.options.columns,e=c.documentElement.clientWidth;"1"==this.options.enableResponsive&&(e<=568?d=this.options.mobileColumns:e<=768&&(d=this.options.tabletColumns)),r=0<this.options.gutter?a.trunc((t-this.options.gutter*d)/d):a.trunc(t/d),this.$items.not(".jtg-hidden").each(function(t,e){var i,n,s,o,h={};i=l(e).data("width"),n=l(e).data("height"),12<i&&(i=12),"1"==a.options.enableResponsive&&(s=i,o=n,1==d?n=(i=1)*o/s:((i=Math.round(d*s/12))<1&&(i=1),(n=Math.round(i*o/s))<1&&(n=1))),h.width=r*i+a.options.gutter*(i-1),h.height=r*n+a.options.gutter*(n-1),l(e).data("size",h).addClass("tiled").addClass(h.width>h.height?"tile-h":"tile-v").data("position"),l(e).css(l(e).data("size")),l(e).find(".figc").css({width:l(e).data("size").width,height:l(e).data("size").height})}),this.isPackeryActive&&this.$itemsCnt.packery("destroy"),this.$itemsCnt.packery({itemSelector:".item",gutter:parseInt(a.options.gutter),columnWidth:r,resize:!1}),this.isPackeryActive=!0},o.prototype.createGrid=function(){var n=this;this.options.width&&this.$itemsCnt.width(this.options.width),this.options.height&&this.$itemsCnt.height(this.options.height),this.$itemsCnt.data("area",this.$itemsCnt.width()*this.$itemsCnt.height()),this.lastWidth=this.$itemsCnt.width();for(var t=0;t<this.$items.not(".jtg-hidden").length;t++)this.tiles.push(n.getSlot());this.tiles.sort(function(t,e){return t.position-e.position}),this.$items.not(".jtg-hidden").each(function(t,e){var i=n.tiles[t];l(e).data("size",i).addClass("tiled").addClass(i.width>i.height?"tile-h":"tile-v").data("position")}),this.$items.each(function(t,e){l(e).css(l(e).data("size")),l(e).find(".figc").css({width:l(e).data("size").width,height:l(e).data("size").height})}),this.completed=!0},o.prototype.getSlot=function(){if(0==this.tiles.length)return i={top:0,left:0,width:this.$itemsCnt.width(),height:this.$itemsCnt.height(),area:this.$itemsCnt.width()*this.$itemsCnt.height(),position:0};for(var t=0,e=0;e<this.tiles.length;e++){(i=this.tiles[e]).area>this.tiles[t].area&&(t=e)}var i={},n=this.tiles[t];if(n.width>n.height){var s=n.width/2*this.options.randomFactor;n.prevWidth=n.width,n.width=Math.floor(n.width/2+s*(Math.random()-.5)),i={top:n.top,left:n.left+n.width+this.options.margin,width:n.prevWidth-n.width-this.options.margin,height:n.height}}else{s=n.height/2*this.options.randomFactor;n.prevHeight=n.height,n.height=Math.floor(n.height/2+s*(Math.random()-.5)),i={left:n.left,top:n.top+n.height+this.options.margin,width:n.width,height:n.prevHeight-n.height-this.options.margin}}return i.area=i.width*i.height,i.position=1e3*i.top+i.left,n.position=1e3*n.top+n.left,this.tiles[t]=n,this.tiles[t].area=n.width*n.height,i},o.prototype.reset=function(){var i=this;i.tiles=[],"custom-grid"===i.options.type?(i.createCustomGallery(),i.$itemsCnt.packery()):i.createGrid(),i.$itemsCnt.find(".pic").each(function(t,e){i.placeImage(t)}),i.lastWidth=i.$itemsCnt.width()},o.prototype.onResize=function(e){e.lastWidth!=e.$itemsCnt.width()&&(clearTimeout(e.resizeTO),e.resizeTO=setTimeout(function(){if(e.options.keepArea){var t=e.$itemsCnt.data("area");e.$itemsCnt.height(t/e.$itemsCnt.width())}e.reset()},100))},o.prototype.placeImage=function(t){var e=this.$items.eq(t),i=e.find(".pic"),n=e.data("size"),s=i.data("size"),o=n.width/n.height,h=s.width/s.height,r=i.data("valign")?i.data("valign"):"middle",a=i.data("halign")?i.data("halign"):"center",d={top:"auto",bottom:"auto",left:"auto",right:"auto",width:"auto",height:"auto",margin:"0",maxWidth:"999em"};if(h<o)switch(d.width=n.width,d.left=0,r){case"top":d.top=0;break;case"middle":d.top=0-(n.width*(1/h)-n.height)/2;break;case"bottom":d.bottom=0}else switch(d.height=n.height,d.top=0,a){case"left":d.left=0;break;case"center":d.left=0-(n.height*h-n.width)/2;break;case"right":d.right=0}i.css(d)},o.prototype.loadImage=function(t){var e=this,i=e.$items.eq(t).find(".pic"),n=new Image;n.onerror=function(){console.log("error loading image ["+t+"] : "+this.src),t+1<e.$items.length&&e.loadImage(t+1)},n.onload=function(){i.data("size",{width:this.width,height:this.height}),e.placeImage(t),e.$items.eq(t).addClass("tg-loaded"),t+1<e.$items.length&&e.loadImage(t+1)};var s=i.data("src");n.src=s,i.attr("src",s)},o.prototype.init=function(){var t=this;l(c).trigger("modula_api_before_init",[t]),this.$itemsCnt.css({position:"relative",zIndex:1}),this.$items.addClass("tile"),this.$items.find(".pic").removeAttr("src"),"custom-grid"===this.options.type?this.createCustomGallery():this.createGrid(),this.loadImage(0),l(d).resize(function(){t.onResize(t)}),l(d).on("modula-update",function(){t.onResize(t)}),new ResizeSensor(t.$element,function(){t.onResize(t)}),this.setupSocial(),this.options.onComplete&&this.options.onComplete(),l(c).trigger("modula_api_after_init",[t])},o.prototype.setupSocial=function(){this.options.enableTwitter&&e(this.$items,this),this.options.enableFacebook&&n(this.$items,this),this.options.enableGplus&&r(this.$items,this),this.options.enablePinterest&&h(this.$items,this)};var e=function(t,n){t.find(".modula-icon-twitter").click(function(t){t.preventDefault();var e=l(this).parents(".tile:first").find(".caption"),i=n.options.twitterText||c.title;return!n.options.twitterText&&1==e.length&&0<e.text().length&&(i=l.trim(e.text())),d.open("https://twitter.com/intent/tweet?url="+encodeURI(location.href.split("#")[0])+"&text="+encodeURI(i),"ftgw","location=1,status=1,scrollbars=1,width=600,height=400").moveTo(screen.width/2-300,screen.height/2-200),!1})},n=function(t,s){t.find(".modula-icon-facebook").click(function(t){t.preventDefault();var e=l(this).parents(".tile:first").find(".pic"),i=l(this).parents(".tile:first").find(".caption");s.options.facebookText||c.title;!s.options.facebookText&&1==i.length&&0<i.text().length&&l.trim(i.text());e.attr("src");var n="//www.facebook.com/sharer.php?u="+location.href;return d.open(n,"ftgw","location=1,status=1,scrollbars=1,width=600,height=400").moveTo(screen.width/2-300,screen.height/2-200),!1})},h=function(t,a){t.find(".modula-icon-pinterest").click(function(t){t.preventDefault();var e=l(this).parents(".tile:first").find(".pic"),i=l(this).parents(".tile:first").find(".caption"),n=a.options.facebookText||c.title;!a.options.facebookText&&1==i.length&&0<i.text().length&&(n=l.trim(i.text()));var s,o,h="http://pinterest.com/pin/create/button/?url="+encodeURI(location.href)+"&description="+encodeURI(n);if(1==e.length){var r=e.attr("src");h+="&media="+(s=r,(o=c.createElement("img")).src=s,s=o.src,o.src=null,s)}return d.open(h,"ftgw","location=1,status=1,scrollbars=1,width=600,height=400").moveTo(screen.width/2-300,screen.height/2-200),!1})},r=function(t,e){t.find(".modula-icon-google-plus").click(function(t){t.preventDefault();var e="https://plus.google.com/share?url="+encodeURI(location.href);return d.open(e,"ftgw","location=1,status=1,scrollbars=1,width=600,height=400").moveTo(screen.width/2-300,screen.height/2-200),!1})};l.fn[s]=function(e){var i,n=arguments;return void 0===e||"object"==typeof e?this.each(function(){l.data(this,"plugin_"+s)||l.data(this,"plugin_"+s,new o(this,e))}):"string"==typeof e&&"_"!==e[0]&&"init"!==e?(this.each(function(){var t=l.data(this,"plugin_"+s);t instanceof o&&"function"==typeof t[e]&&(i=t[e].apply(t,Array.prototype.slice.call(n,1))),"destroy"===e&&l.data(this,"plugin_"+s,null)}),void 0!==i?i:this):void 0}}(jQuery,window,document),jQuery(document).ready(function(i){var t=i(".modula-gallery");i.each(t,function(){var t=i(this).attr("id"),e=i(this).data("config");i("#"+t).modulaGallery(e)})});
assets/js/lightbox.js CHANGED
@@ -42,7 +42,8 @@
42
// http://lokeshdhakar.com/projects/lightbox2/index.html#options
43
Lightbox.defaults = {
44
albumLabel: 'Image %1 of %2',
45
- alwaysShowNavOnTouchDevices: false,
46
fadeDuration: 600,
47
fitImagesInViewport: true,
48
imageFadeDuration: 600,
@@ -73,6 +74,12 @@
73
return this.options.albumLabel.replace(/%1/g, currentImageNum).replace(/%2/g, totalImages);
74
};
75
76
Lightbox.prototype.init = function() {
77
var self = this;
78
// Both enable and build methods require the body tag to be in the DOM.
@@ -114,7 +121,7 @@
114
startX = touchobj.pageX
115
startY = touchobj.pageY
116
startTime = new Date().getTime() // record time when finger first makes contact with surface
117
- e.preventDefault()
118
}, false)
119
120
touchsurface.addEventListener('touchmove', function(e){
@@ -134,7 +141,16 @@
134
swipedir = (distY < 0)? 'up' : 'down' // if dist traveled is negative, it indicates up swipe
135
}
136
}
137
- handleswipe(swipedir)
138
e.preventDefault()
139
}, false)
140
};
@@ -457,15 +473,20 @@
457
// Check to see if the browser supports touch events. If so, we take the conservative approach
458
// and assume that mouse hover events are not supported and always show prev/next navigation
459
// arrows in image sets.
460
- var alwaysShowNav = false,
461
enableSwipe = false;
462
try {
463
document.createEvent('TouchEvent');
464
- alwaysShowNav = (this.options.alwaysShowNavOnTouchDevices) ? true : false;
465
enableSwipe = (this.options.enableSwipeOnTouchDevices)? true: false;
466
} catch (e) {}
467
468
- if ( ! enableSwipe ) {
469
this.$lightbox.find('.lb-nav').show();
470
471
if (this.album.length > 1) {
42
// http://lokeshdhakar.com/projects/lightbox2/index.html#options
43
Lightbox.defaults = {
44
albumLabel: 'Image %1 of %2',
45
+ showNavigation: true,
46
+ showNavigationOnMobile: false,
47
fadeDuration: 600,
48
fitImagesInViewport: true,
49
imageFadeDuration: 600,
74
return this.options.albumLabel.replace(/%1/g, currentImageNum).replace(/%2/g, totalImages);
75
};
76
77
+ Lightbox.prototype.mobilecheck = function() {
78
+ var check = false;
79
+ (function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera);
80
+ return check;
81
+ };
82
+
83
Lightbox.prototype.init = function() {
84
var self = this;
85
// Both enable and build methods require the body tag to be in the DOM.
121
startX = touchobj.pageX
122
startY = touchobj.pageY
123
startTime = new Date().getTime() // record time when finger first makes contact with surface
124
+ e.preventDefault();
125
}, false)
126
127
touchsurface.addEventListener('touchmove', function(e){
141
swipedir = (distY < 0)? 'up' : 'down' // if dist traveled is negative, it indicates up swipe
142
}
143
}
144
+
145
+ if ( 'none' == swipedir ) {
146
+ var el = $( e.target );
147
+ if ( el.hasClass( 'lb-prev' ) ) {
148
+ swipedir = 'left';
149
+ }else if ( el.hasClass( 'lb-next' ) ) {
150
+ swipedir = 'right';
151
+ }
152
+ }
153
+ handleswipe(swipedir);
154
e.preventDefault()
155
}, false)
156
};
473
// Check to see if the browser supports touch events. If so, we take the conservative approach
474
// and assume that mouse hover events are not supported and always show prev/next navigation
475
// arrows in image sets.
476
+ var showNav = (this.options.showNavigation) ? true : false,
477
+ alwaysShowNav = false,
478
enableSwipe = false;
479
try {
480
document.createEvent('TouchEvent');
481
enableSwipe = (this.options.enableSwipeOnTouchDevices)? true: false;
482
+ alwaysShowNav = true;
483
} catch (e) {}
484
485
+ if ( this.mobilecheck() ) {
486
+ showNav = (this.options.showNavigationOnMobile) ? true : false;
487
+ }
488
+
489
+ if ( showNav ) {
490
this.$lightbox.find('.lb-nav').show();
491
492
if (this.album.length > 1) {
assets/js/lightbox.min.js CHANGED
@@ -1 +1 @@
1
- !function(t,i){"function"==typeof define&&define.amd?define(["jquery"],i):"object"==typeof exports?module.exports=i(require("jquery")):t.lightbox=i(t.jQuery)}(this,function(g){function t(t){this.album=[],this.currentImageIndex=void 0,this.init(),this.options=g.extend({},this.constructor.defaults),this.option(t)}return t.defaults={albumLabel:"Image %1 of %2",alwaysShowNavOnTouchDevices:!1,fadeDuration:600,fitImagesInViewport:!0,imageFadeDuration:600,positionFromTop:50,resizeDuration:700,showImageNumberLabel:!0,wrapAround:!1,disableScrolling:!1,enableSwipeOnTouchDevices:!0,sanitizeTitle:!1},t.prototype.option=function(t){g.extend(this.options,t)},t.prototype.imageCountLabel=function(t,i){return this.options.albumLabel.replace(/%1/g,t).replace(/%2/g,i)},t.prototype.init=function(){var t=this;g(document).ready(function(){t.enable(),t.build()})},t.prototype.enable=function(){var i=this;g("body").on("click","a[rel^=lightbox], area[rel^=lightbox], a[data-lightbox], area[data-lightbox]",function(t){return i.start(g(t.currentTarget)),!1})},t.prototype.swipedetect=function(t,i){var e,n,a,o,s,r,h=t,l=i||function(t){};h.addEventListener("touchstart",function(t){var i=t.changedTouches[0];e="none",dist=0,n=i.pageX,a=i.pageY,r=(new Date).getTime(),t.preventDefault()},!1),h.addEventListener("touchmove",function(t){t.preventDefault()},!1),h.addEventListener("touchend",function(t){var i=t.changedTouches[0];o=i.pageX-n,s=i.pageY-a,(new Date).getTime()-r<=300&&(1<=Math.abs(o)&&Math.abs(s)<=100?e=o<0?"left":"right":1<=Math.abs(s)&&Math.abs(o)<=100&&(e=s<0?"up":"down")),l(e),t.preventDefault()},!1)},t.prototype.build=function(){if(!(0<g("#lightbox").length)){var i=this;g('<div id="lightboxOverlay" class="lightboxOverlay"></div><div id="lightbox" class="lightbox"><div class="lb-outerContainer"><div class="lb-container"><img class="lb-image" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" /><div class="lb-nav"><a class="lb-prev" href="" ></a><a class="lb-next" href="" ></a></div><div class="lb-loader"><a class="lb-cancel"></a></div></div></div><div class="lb-dataContainer"><div class="lb-data"><div class="lb-details"><span class="lb-caption"></span><span class="lb-number"></span></div><div class="lb-closeContainer"><a class="lb-close"></a></div></div></div></div>').appendTo(g("body")),this.$lightbox=g("#lightbox"),this.$overlay=g("#lightboxOverlay"),this.$outerContainer=this.$lightbox.find(".lb-outerContainer"),this.$container=this.$lightbox.find(".lb-container"),this.$image=this.$lightbox.find(".lb-image"),this.$nav=this.$lightbox.find(".lb-nav"),this.containerPadding={top:parseInt(this.$container.css("padding-top"),10),right:parseInt(this.$container.css("padding-right"),10),bottom:parseInt(this.$container.css("padding-bottom"),10),left:parseInt(this.$container.css("padding-left"),10)},this.imageBorderWidth={top:parseInt(this.$image.css("border-top-width"),10),right:parseInt(this.$image.css("border-right-width"),10),bottom:parseInt(this.$image.css("border-bottom-width"),10),left:parseInt(this.$image.css("border-left-width"),10)},this.$overlay.hide().on("click",function(){return i.end(),!1}),this.$lightbox.hide().on("click",function(t){return"lightbox"===g(t.target).attr("id")&&i.end(),!1}),this.$outerContainer.on("click",function(t){return"lightbox"===g(t.target).attr("id")&&i.end(),!1}),this.$lightbox.find(".lb-prev").on("click",function(){return 0===i.currentImageIndex?i.changeImage(i.album.length-1):i.changeImage(i.currentImageIndex-1),!1}),this.$lightbox.find(".lb-next").on("click",function(){return i.currentImageIndex===i.album.length-1?i.changeImage(0):i.changeImage(i.currentImageIndex+1),!1});var t=this.$lightbox.find(".lb-container")[0];i.swipedetect(t,function(t){"left"==t?0===i.currentImageIndex?i.changeImage(i.album.length-1):i.changeImage(i.currentImageIndex-1):"right"==t&&(i.currentImageIndex===i.album.length-1?i.changeImage(0):i.changeImage(i.currentImageIndex+1))}),this.$nav.on("mousedown",function(t){3===t.which&&(i.$nav.css("pointer-events","none"),i.$lightbox.one("contextmenu",function(){setTimeout(function(){this.$nav.css("pointer-events","auto")}.bind(i),0)}))}),this.$lightbox.find(".lb-loader, .lb-close").on("click",function(){return i.end(),!1})}},t.prototype.start=function(t){var i=this,e=g(window);e.on("resize",g.proxy(this.sizeOverlay,this)),g("select, object, embed").css({visibility:"hidden"}),this.sizeOverlay(),this.album=[];var n=0;function a(t){i.album.push({alt:t.attr("data-alt"),link:t.attr("href"),title:t.attr("data-title")||t.attr("title")})}var o,s=t.attr("data-lightbox");if(s){o=g(t.prop("tagName")+'[data-lightbox="'+s+'"]');for(var r=0;r<o.length;r=++r)a(g(o[r])),o[r]===t[0]&&(n=r)}else if("lightbox"===t.attr("rel"))a(t);else{o=g(t.prop("tagName")+'[rel="'+t.attr("rel")+'"]');for(var h=0;h<o.length;h=++h)a(g(o[h])),o[h]===t[0]&&(n=h)}var l=e.scrollTop()+this.options.positionFromTop,d=e.scrollLeft();this.$lightbox.css({top:l+"px",left:d+"px"}).fadeIn(this.options.fadeDuration),this.options.disableScrolling&&g("html").addClass("lb-disable-scrolling"),this.changeImage(n)},t.prototype.changeImage=function(s){var r=this;this.disableKeyboardNav();var h=this.$lightbox.find(".lb-image");this.$overlay.fadeIn(this.options.fadeDuration),g(".lb-loader").fadeIn("slow"),this.$lightbox.find(".lb-image, .lb-nav, .lb-prev, .lb-next, .lb-dataContainer, .lb-numbers, .lb-caption").hide(),this.$outerContainer.addClass("animating");var l=new Image;l.onload=function(){var t,i,e,n,a,o;h.attr({alt:r.album[s].alt,src:r.album[s].link}),g(l),h.width(l.width),h.height(l.height),r.options.fitImagesInViewport&&(o=g(window).width(),a=g(window).height(),n=o-r.containerPadding.left-r.containerPadding.right-r.imageBorderWidth.left-r.imageBorderWidth.right-20,e=a-r.containerPadding.top-r.containerPadding.bottom-r.imageBorderWidth.top-r.imageBorderWidth.bottom-120,r.options.maxWidth&&r.options.maxWidth<n&&(n=r.options.maxWidth),r.options.maxHeight&&r.options.maxHeight<n&&(e=r.options.maxHeight),(l.width>n||l.height>e)&&(l.width/n>l.height/e?(i=n,t=parseInt(l.height/(l.width/i),10)):(t=e,i=parseInt(l.width/(l.height/t),10)),h.width(i),h.height(t))),r.sizeContainer(h.width(),h.height())},l.src=this.album[s].link,this.currentImageIndex=s},t.prototype.sizeOverlay=function(){this.$overlay.width(g(document).width()).height(g(document).height())},t.prototype.sizeContainer=function(t,i){var e=this,n=this.$outerContainer.outerWidth(),a=this.$outerContainer.outerHeight(),o=t+this.containerPadding.left+this.containerPadding.right+this.imageBorderWidth.left+this.imageBorderWidth.right,s=i+this.containerPadding.top+this.containerPadding.bottom+this.imageBorderWidth.top+this.imageBorderWidth.bottom;function r(){e.$lightbox.find(".lb-dataContainer").width(o),e.$lightbox.find(".lb-prevLink").height(s),e.$lightbox.find(".lb-nextLink").height(s),e.showImage()}n!==o||a!==s?this.$outerContainer.animate({width:o,height:s},this.options.resizeDuration,"swing",function(){r()}):r()},t.prototype.showImage=function(){this.$lightbox.find(".lb-loader").stop(!0).hide(),this.$lightbox.find(".lb-image").fadeIn(this.options.imageFadeDuration),this.updateNav(),this.updateDetails(),this.preloadNeighboringImages(),this.enableKeyboardNav()},t.prototype.updateNav=function(){var t=!1,i=!1;try{document.createEvent("TouchEvent"),t=!!this.options.alwaysShowNavOnTouchDevices,i=!!this.options.enableSwipeOnTouchDevices}catch(t){}i?this.$lightbox.find(".lb-nav").hide():(this.$lightbox.find(".lb-nav").show(),1<this.album.length&&(this.options.wrapAround?(t&&this.$lightbox.find(".lb-prev, .lb-next").css("opacity","1"),this.$lightbox.find(".lb-prev, .lb-next").show()):(0<this.currentImageIndex&&(this.$lightbox.find(".lb-prev").show(),t&&this.$lightbox.find(".lb-prev").css("opacity","1")),this.currentImageIndex<this.album.length-1&&(this.$lightbox.find(".lb-next").show(),t&&this.$lightbox.find(".lb-next").css("opacity","1")))))},t.prototype.updateDetails=function(){var t=this;if(void 0!==this.album[this.currentImageIndex].title&&""!==this.album[this.currentImageIndex].title){var i=this.$lightbox.find(".lb-caption");this.options.sanitizeTitle?i.text(this.album[this.currentImageIndex].title):i.html(this.album[this.currentImageIndex].title),i.fadeIn("fast").find("a").on("click",function(t){void 0!==g(this).attr("target")?window.open(g(this).attr("href"),g(this).attr("target")):location.href=g(this).attr("href")})}if(1<this.album.length&&this.options.showImageNumberLabel){var e=this.imageCountLabel(this.currentImageIndex+1,this.album.length);this.$lightbox.find(".lb-number").text(e).fadeIn("fast")}else this.$lightbox.find(".lb-number").hide();this.$outerContainer.removeClass("animating"),this.$lightbox.find(".lb-dataContainer").fadeIn(this.options.resizeDuration,function(){return t.sizeOverlay()})},t.prototype.preloadNeighboringImages=function(){this.album.length>this.currentImageIndex+1&&((new Image).src=this.album[this.currentImageIndex+1].link);0<this.currentImageIndex&&((new Image).src=this.album[this.currentImageIndex-1].link)},t.prototype.enableKeyboardNav=function(){g(document).on("keyup.keyboard",g.proxy(this.keyboardAction,this))},t.prototype.disableKeyboardNav=function(){g(document).off(".keyboard")},t.prototype.keyboardAction=function(t){var i=t.keyCode,e=String.fromCharCode(i).toLowerCase();27===i||e.match(/x|o|c/)?this.end():"p"===e||37===i?0!==this.currentImageIndex?this.changeImage(this.currentImageIndex-1):this.options.wrapAround&&1<this.album.length&&this.changeImage(this.album.length-1):"n"!==e&&39!==i||(this.currentImageIndex!==this.album.length-1?this.changeImage(this.currentImageIndex+1):this.options.wrapAround&&1<this.album.length&&this.changeImage(0))},t.prototype.end=function(){this.disableKeyboardNav(),g(window).off("resize",this.sizeOverlay),this.$lightbox.fadeOut(this.options.fadeDuration),this.$overlay.fadeOut(this.options.fadeDuration),g("select, object, embed").css({visibility:"visible"}),this.options.disableScrolling&&g("html").removeClass("lb-disable-scrolling")},new t});
1
+ !function(t,i){"function"==typeof define&&define.amd?define(["jquery"],i):"object"==typeof exports?module.exports=i(require("jquery")):t.lightbox=i(t.jQuery)}(this,function(c){function t(t){this.album=[],this.currentImageIndex=void 0,this.init(),this.options=c.extend({},this.constructor.defaults),this.option(t)}return t.defaults={albumLabel:"Image %1 of %2",showNavigation:!0,showNavigationOnMobile:!1,fadeDuration:600,fitImagesInViewport:!0,imageFadeDuration:600,positionFromTop:50,resizeDuration:700,showImageNumberLabel:!0,wrapAround:!1,disableScrolling:!1,enableSwipeOnTouchDevices:!0,sanitizeTitle:!1},t.prototype.option=function(t){c.extend(this.options,t)},t.prototype.imageCountLabel=function(t,i){return this.options.albumLabel.replace(/%1/g,t).replace(/%2/g,i)},t.prototype.mobilecheck=function(){var t,i=!1;return t=navigator.userAgent||navigator.vendor||window.opera,(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4)))&&(i=!0),i},t.prototype.init=function(){var t=this;c(document).ready(function(){t.enable(),t.build()})},t.prototype.enable=function(){var i=this;c("body").on("click","a[rel^=lightbox], area[rel^=lightbox], a[data-lightbox], area[data-lightbox]",function(t){return i.start(c(t.currentTarget)),!1})},t.prototype.swipedetect=function(t,i){var n,a,o,s,r,h,e=t,l=i||function(t){};e.addEventListener("touchstart",function(t){var i=t.changedTouches[0];n="none",dist=0,a=i.pageX,o=i.pageY,h=(new Date).getTime(),t.preventDefault()},!1),e.addEventListener("touchmove",function(t){t.preventDefault()},!1),e.addEventListener("touchend",function(t){var i=t.changedTouches[0];if(s=i.pageX-a,r=i.pageY-o,(new Date).getTime()-h<=300&&(1<=Math.abs(s)&&Math.abs(r)<=100?n=s<0?"left":"right":1<=Math.abs(r)&&Math.abs(s)<=100&&(n=r<0?"up":"down")),"none"==n){var e=c(t.target);e.hasClass("lb-prev")?n="left":e.hasClass("lb-next")&&(n="right")}l(n),t.preventDefault()},!1)},t.prototype.build=function(){if(!(0<c("#lightbox").length)){var i=this;c('<div id="lightboxOverlay" class="lightboxOverlay"></div><div id="lightbox" class="lightbox"><div class="lb-outerContainer"><div class="lb-container"><img class="lb-image" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" /><div class="lb-nav"><a class="lb-prev" href="" ></a><a class="lb-next" href="" ></a></div><div class="lb-loader"><a class="lb-cancel"></a></div></div></div><div class="lb-dataContainer"><div class="lb-data"><div class="lb-details"><span class="lb-caption"></span><span class="lb-number"></span></div><div class="lb-closeContainer"><a class="lb-close"></a></div></div></div></div>').appendTo(c("body")),this.$lightbox=c("#lightbox"),this.$overlay=c("#lightboxOverlay"),this.$outerContainer=this.$lightbox.find(".lb-outerContainer"),this.$container=this.$lightbox.find(".lb-container"),this.$image=this.$lightbox.find(".lb-image"),this.$nav=this.$lightbox.find(".lb-nav"),this.containerPadding={top:parseInt(this.$container.css("padding-top"),10),right:parseInt(this.$container.css("padding-right"),10),bottom:parseInt(this.$container.css("padding-bottom"),10),left:parseInt(this.$container.css("padding-left"),10)},this.imageBorderWidth={top:parseInt(this.$image.css("border-top-width"),10),right:parseInt(this.$image.css("border-right-width"),10),bottom:parseInt(this.$image.css("border-bottom-width"),10),left:parseInt(this.$image.css("border-left-width"),10)},this.$overlay.hide().on("click",function(){return i.end(),!1}),this.$lightbox.hide().on("click",function(t){return"lightbox"===c(t.target).attr("id")&&i.end(),!1}),this.$outerContainer.on("click",function(t){return"lightbox"===c(t.target).attr("id")&&i.end(),!1}),this.$lightbox.find(".lb-prev").on("click",function(){return 0===i.currentImageIndex?i.changeImage(i.album.length-1):i.changeImage(i.currentImageIndex-1),!1}),this.$lightbox.find(".lb-next").on("click",function(){return i.currentImageIndex===i.album.length-1?i.changeImage(0):i.changeImage(i.currentImageIndex+1),!1});var t=this.$lightbox.find(".lb-container")[0];i.swipedetect(t,function(t){"left"==t?0===i.currentImageIndex?i.changeImage(i.album.length-1):i.changeImage(i.currentImageIndex-1):"right"==t&&(i.currentImageIndex===i.album.length-1?i.changeImage(0):i.changeImage(i.currentImageIndex+1))}),this.$nav.on("mousedown",function(t){3===t.which&&(i.$nav.css("pointer-events","none"),i.$lightbox.one("contextmenu",function(){setTimeout(function(){this.$nav.css("pointer-events","auto")}.bind(i),0)}))}),this.$lightbox.find(".lb-loader, .lb-close").on("click",function(){return i.end(),!1})}},t.prototype.start=function(t){var i=this,e=c(window);e.on("resize",c.proxy(this.sizeOverlay,this)),c("select, object, embed").css({visibility:"hidden"}),this.sizeOverlay(),this.album=[];var n=0;function a(t){i.album.push({alt:t.attr("data-alt"),link:t.attr("href"),title:t.attr("data-title")||t.attr("title")})}var o,s=t.attr("data-lightbox");if(s){o=c(t.prop("tagName")+'[data-lightbox="'+s+'"]');for(var r=0;r<o.length;r=++r)a(c(o[r])),o[r]===t[0]&&(n=r)}else if("lightbox"===t.attr("rel"))a(t);else{o=c(t.prop("tagName")+'[rel="'+t.attr("rel")+'"]');for(var h=0;h<o.length;h=++h)a(c(o[h])),o[h]===t[0]&&(n=h)}var l=e.scrollTop()+this.options.positionFromTop,d=e.scrollLeft();this.$lightbox.css({top:l+"px",left:d+"px"}).fadeIn(this.options.fadeDuration),this.options.disableScrolling&&c("html").addClass("lb-disable-scrolling"),this.changeImage(n)},t.prototype.changeImage=function(s){var r=this;this.disableKeyboardNav();var h=this.$lightbox.find(".lb-image");this.$overlay.fadeIn(this.options.fadeDuration),c(".lb-loader").fadeIn("slow"),this.$lightbox.find(".lb-image, .lb-nav, .lb-prev, .lb-next, .lb-dataContainer, .lb-numbers, .lb-caption").hide(),this.$outerContainer.addClass("animating");var l=new Image;l.onload=function(){var t,i,e,n,a,o;h.attr({alt:r.album[s].alt,src:r.album[s].link}),c(l),h.width(l.width),h.height(l.height),r.options.fitImagesInViewport&&(o=c(window).width(),a=c(window).height(),n=o-r.containerPadding.left-r.containerPadding.right-r.imageBorderWidth.left-r.imageBorderWidth.right-20,e=a-r.containerPadding.top-r.containerPadding.bottom-r.imageBorderWidth.top-r.imageBorderWidth.bottom-120,r.options.maxWidth&&r.options.maxWidth<n&&(n=r.options.maxWidth),r.options.maxHeight&&r.options.maxHeight<n&&(e=r.options.maxHeight),(l.width>n||l.height>e)&&(l.width/n>l.height/e?(i=n,t=parseInt(l.height/(l.width/i),10)):(t=e,i=parseInt(l.width/(l.height/t),10)),h.width(i),h.height(t))),r.sizeContainer(h.width(),h.height())},l.src=this.album[s].link,this.currentImageIndex=s},t.prototype.sizeOverlay=function(){this.$overlay.width(c(document).width()).height(c(document).height())},t.prototype.sizeContainer=function(t,i){var e=this,n=this.$outerContainer.outerWidth(),a=this.$outerContainer.outerHeight(),o=t+this.containerPadding.left+this.containerPadding.right+this.imageBorderWidth.left+this.imageBorderWidth.right,s=i+this.containerPadding.top+this.containerPadding.bottom+this.imageBorderWidth.top+this.imageBorderWidth.bottom;function r(){e.$lightbox.find(".lb-dataContainer").width(o),e.$lightbox.find(".lb-prevLink").height(s),e.$lightbox.find(".lb-nextLink").height(s),e.showImage()}n!==o||a!==s?this.$outerContainer.animate({width:o,height:s},this.options.resizeDuration,"swing",function(){r()}):r()},t.prototype.showImage=function(){this.$lightbox.find(".lb-loader").stop(!0).hide(),this.$lightbox.find(".lb-image").fadeIn(this.options.imageFadeDuration),this.updateNav(),this.updateDetails(),this.preloadNeighboringImages(),this.enableKeyboardNav()},t.prototype.updateNav=function(){var t=!!this.options.showNavigation,i=!1;try{document.createEvent("TouchEvent"),!!this.options.enableSwipeOnTouchDevices,i=!0}catch(t){}this.mobilecheck()&&(t=!!this.options.showNavigationOnMobile),t?(this.$lightbox.find(".lb-nav").show(),1<this.album.length&&(this.options.wrapAround?(i&&this.$lightbox.find(".lb-prev, .lb-next").css("opacity","1"),this.$lightbox.find(".lb-prev, .lb-next").show()):(0<this.currentImageIndex&&(this.$lightbox.find(".lb-prev").show(),i&&this.$lightbox.find(".lb-prev").css("opacity","1")),this.currentImageIndex<this.album.length-1&&(this.$lightbox.find(".lb-next").show(),i&&this.$lightbox.find(".lb-next").css("opacity","1"))))):this.$lightbox.find(".lb-nav").hide()},t.prototype.updateDetails=function(){var t=this;if(void 0!==this.album[this.currentImageIndex].title&&""!==this.album[this.currentImageIndex].title){var i=this.$lightbox.find(".lb-caption");this.options.sanitizeTitle?i.text(this.album[this.currentImageIndex].title):i.html(this.album[this.currentImageIndex].title),i.fadeIn("fast").find("a").on("click",function(t){void 0!==c(this).attr("target")?window.open(c(this).attr("href"),c(this).attr("target")):location.href=c(this).attr("href")})}if(1<this.album.length&&this.options.showImageNumberLabel){var e=this.imageCountLabel(this.currentImageIndex+1,this.album.length);this.$lightbox.find(".lb-number").text(e).fadeIn("fast")}else this.$lightbox.find(".lb-number").hide();this.$outerContainer.removeClass("animating"),this.$lightbox.find(".lb-dataContainer").fadeIn(this.options.resizeDuration,function(){return t.sizeOverlay()})},t.prototype.preloadNeighboringImages=function(){this.album.length>this.currentImageIndex+1&&((new Image).src=this.album[this.currentImageIndex+1].link);0<this.currentImageIndex&&((new Image).src=this.album[this.currentImageIndex-1].link)},t.prototype.enableKeyboardNav=function(){c(document).on("keyup.keyboard",c.proxy(this.keyboardAction,this))},t.prototype.disableKeyboardNav=function(){c(document).off(".keyboard")},t.prototype.keyboardAction=function(t){var i=t.keyCode,e=String.fromCharCode(i).toLowerCase();27===i||e.match(/x|o|c/)?this.end():"p"===e||37===i?0!==this.currentImageIndex?this.changeImage(this.currentImageIndex-1):this.options.wrapAround&&1<this.album.length&&this.changeImage(this.album.length-1):"n"!==e&&39!==i||(this.currentImageIndex!==this.album.length-1?this.changeImage(this.currentImageIndex+1):this.options.wrapAround&&1<this.album.length&&this.changeImage(0))},t.prototype.end=function(){this.disableKeyboardNav(),c(window).off("resize",this.sizeOverlay),this.$lightbox.fadeOut(this.options.fadeDuration),this.$overlay.fadeOut(this.options.fadeDuration),c("select, object, embed").css({visibility:"visible"}),this.options.disableScrolling&&c("html").removeClass("lb-disable-scrolling")},new t});
assets/js/wp-modula-conditions.js CHANGED
@@ -18,6 +18,7 @@ var modulaGalleryConditions = Backbone.Model.extend({
18
19
this.listenTo( wp.Modula.Settings, 'change:type', this.changedType );
20
this.listenTo( wp.Modula.Settings, 'change:effect', this.changedEffect );
21
22
},
23
@@ -25,6 +26,7 @@ var modulaGalleryConditions = Backbone.Model.extend({
25
26
this.changedType( false, wp.Modula.Settings.get( 'type' ) );
27
this.changedEffect( false, wp.Modula.Settings.get( 'effect' ) );
28
29
},
30
@@ -32,8 +34,6 @@ var modulaGalleryConditions = Backbone.Model.extend({
32
var rows = this.get( 'rows' ),
33
tabs = this.get( 'tabs' );
34
35
- console.log( tabs );
36
-
37
if ( 'custom-grid' == value ) {
38
39
// Show Responsive tab
@@ -54,6 +54,22 @@ var modulaGalleryConditions = Backbone.Model.extend({
54
55
},
56
57
changedEffect: function( settings, value ){
58
var hoverBoxes = jQuery( '.modula-effects-preview > div' );
59
18
19
this.listenTo( wp.Modula.Settings, 'change:type', this.changedType );
20
this.listenTo( wp.Modula.Settings, 'change:effect', this.changedEffect );
21
+ this.listenTo( wp.Modula.Settings, 'change:lightbox', this.changedLightbox );
22
23
},
24
26
27
this.changedType( false, wp.Modula.Settings.get( 'type' ) );
28
this.changedEffect( false, wp.Modula.Settings.get( 'effect' ) );
29
+ this.changedLightbox( false, wp.Modula.Settings.get( 'lightbox' ) );
30
31
},
32
34
var rows = this.get( 'rows' ),
35
tabs = this.get( 'tabs' );
36
37
if ( 'custom-grid' == value ) {
38
39
// Show Responsive tab
54
55
},
56
57
+ changedLightbox: function( settings, value ){
58
+ var rows = this.get( 'rows' ),
59
+ tabs = this.get( 'tabs' );
60
+
61
+ if ( 'lightbox2' == value ) {
62
+
63
+ rows.filter( '[data-container="show_navigation"], [data-container="show_navigation_on_mobile"]' ).show();
64
+
65
+ }else{
66
+
67
+ rows.filter( '[data-container="show_navigation"], [data-container="show_navigation_on_mobile"]' ).hide();
68
+
69
+ }
70
+
71
+ },
72
+
73
changedEffect: function( settings, value ){
74
var hoverBoxes = jQuery( '.modula-effects-preview > div' );
75
assets/js/wp-modula-gutenberg.js ADDED
@@ -0,0 +1,528 @@
1
+ /******/ (function(modules) { // webpackBootstrap
2
+ /******/ // The module cache
3
+ /******/ var installedModules = {};
4
+ /******/
5
+ /******/ // The require function
6
+ /******/ function __webpack_require__(moduleId) {
7
+ /******/
8
+ /******/ // Check if module is in cache
9
+ /******/ if(installedModules[moduleId]) {
10
+ /******/ return installedModules[moduleId].exports;
11
+ /******/ }
12
+ /******/ // Create a new module (and put it into the cache)
13
+ /******/ var module = installedModules[moduleId] = {
14
+ /******/ i: moduleId,
15
+ /******/ l: false,
16
+ /******/ exports: {}
17
+ /******/ };
18
+ /******/
19
+ /******/ // Execute the module function
20
+ /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21
+ /******/
22
+ /******/ // Flag the module as loaded
23
+ /******/ module.l = true;
24
+ /******/
25
+ /******/ // Return the exports of the module
26
+ /******/ return module.exports;
27
+ /******/ }
28
+ /******/
29
+ /******/
30
+ /******/ // expose the modules object (__webpack_modules__)
31
+ /******/ __webpack_require__.m = modules;
32
+ /******/
33
+ /******/ // expose the module cache
34
+ /******/ __webpack_require__.c = installedModules;
35
+ /******/
36
+ /******/ // identity function for calling harmony imports with the correct context
37
+ /******/ __webpack_require__.i = function(value) { return value; };
38
+ /******/
39
+ /******/ // define getter function for harmony exports
40
+ /******/ __webpack_require__.d = function(exports, name, getter) {
41
+ /******/ if(!__webpack_require__.o(exports, name)) {
42
+ /******/ Object.defineProperty(exports, name, {
43
+ /******/ configurable: false,
44
+ /******/ enumerable: true,
45
+ /******/ get: getter
46
+ /******/ });
47
+ /******/ }
48
+ /******/ };
49
+ /******/
50
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
51
+ /******/ __webpack_require__.n = function(module) {
52
+ /******/ var getter = module && module.__esModule ?
53
+ /******/ function getDefault() { return module['default']; } :
54
+ /******/ function getModuleExports() { return module; };
55
+ /******/ __webpack_require__.d(getter, 'a', getter);
56
+ /******/ return getter;
57
+ /******/ };
58
+ /******/
59
+ /******/ // Object.prototype.hasOwnProperty.call
60
+ /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
61
+ /******/
62
+ /******/ // __webpack_public_path__
63
+ /******/ __webpack_require__.p = "";
64
+ /******/
65
+ /******/ // Load entry module and return exports
66
+ /******/ return __webpack_require__(__webpack_require__.s = 3);
67
+ /******/ })
68
+ /************************************************************************/
69
+ /******/ ([
70
+ /* 0 */
71
+ /***/ (function(module, exports, __webpack_require__) {
72
+
73
+ "use strict";
74
+
75
+
76
+ Object.defineProperty(exports, "__esModule", {
77
+ value: true
78
+ });
79
+
80
+ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
81
+
82
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
83
+
84
+ var _inspector = __webpack_require__(2);
85
+
86
+ var _inspector2 = _interopRequireDefault(_inspector);
87
+
88
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
89
+
90
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
91
+
92
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
93
+
94
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**
95
+ * Internal dependencies
96
+ */
97
+
98
+
99
+ /**
100
+ * WordPress dependencies
101
+ */
102
+ var __ = wp.i18n.__;
103
+ var _wp$element = wp.element,
104
+ Component = _wp$element.Component,
105
+ Fragment = _wp$element.Fragment;
106
+ var withSelect = wp.data.withSelect;
107
+ var _wp$components = wp.components,
108
+ SelectControl = _wp$components.SelectControl,
109
+ Button = _wp$components.Button,
110
+ Spinner = _wp$components.Spinner,
111
+ Toolbar = _wp$components.Toolbar,
112
+ IconButton = _wp$components.IconButton;
113
+ var BlockControls = wp.editor.BlockControls;
114
+
115
+ var ModulaEdit = function (_Component) {
116
+ _inherits(ModulaEdit, _Component);
117
+
118
+ function ModulaEdit(props) {
119
+ _classCallCheck(this, ModulaEdit);
120
+
121
+ var _this = _possibleConstructorReturn(this, (ModulaEdit.__proto__ || Object.getPrototypeOf(ModulaEdit)).apply(this, arguments));
122
+
123
+ _this.props.attributes.status = 'ready';
124
+ _this.props.attributes.images = [];
125
+ return _this;
126
+ }
127
+
128
+ _createClass(ModulaEdit, [{
129
+ key: 'componentDidMount',
130
+ value: function componentDidMount() {
131
+ if (this.props.attributes.id !== 0) {
132
+ this.onIdChange(this.props.attributes.id);
133
+ }
134
+ }
135
+ }, {
136
+ key: 'onIdChange',
137
+ value: function onIdChange(id) {
138
+ var _this2 = this;
139
+
140
+ this.props.setAttributes({ status: 'loading' });
141
+
142
+ jQuery.ajax({
143
+ type: "POST",
144
+ data: { action: "modula_get_gallery_meta", id: id, nonce: modulaVars.nonce },
145
+ url: modulaVars.ajaxURL,
146
+ success: function success(result) {
147
+ return _this2.onGalleryLoaded(id, result);
148
+ }
149
+ });
150
+ }
151
+ }, {
152
+ key: 'onGalleryLoaded',
153
+ value: function onGalleryLoaded(id, result) {
154
+ if (result.success === false) {
155
+ this.props.setAttributes({ id: 0, status: 'ready' });
156
+ return;
157
+ }
158
+
159
+ this.props.setAttributes({ id: id, images: JSON.parse(result), status: 'ready' });
160
+ }
161
+ }, {
162
+ key: 'selectOptions',
163
+ value: function selectOptions() {
164
+ var options = [{ value: 0, label: __('select a gallery') }];
165
+
166
+ this.props.galleries.forEach(function (gallery) {
167
+ options.push({ value: gallery.id, label: gallery.title.rendered });
168
+ });
169
+
170
+ return options;
171
+ }
172
+ }, {
173
+ key: 'render',
174
+ value: function render() {
175
+ var _this3 = this;
176
+
177
+ var _props = this.props,
178
+ attributes = _props.attributes,
179
+ galleries = _props.galleries;
180
+ var id = attributes.id,
181
+ images = attributes.images,
182
+ status = attributes.status;
183
+
184
+
185
+ var blockControls = React.createElement(
186
+ BlockControls,
187
+ null,
188
+ images.length > 0 && React.createElement(
189
+ Toolbar,
190
+ null,
191
+ React.createElement(IconButton, {
192
+ label: __('Edit gallery'),
193
+ icon: 'edit',
194
+ href: modulaVars.adminURL + 'post.php?post=' + id + '&action=edit',
195
+ target: '_blank'
196
+ })
197
+ )
198
+ );
199
+
200
+ if (status === 'loading') {
201
+ return [React.createElement(
202
+ Fragment,
203
+ null,
204
+ React.createElement(
205
+ 'div',
206
+ { 'class': 'modula-block-preview' },
207
+ React.createElement(
208
+ 'div',
209
+ { 'class': 'modula-block-preview__content' },
210
+ React.createElement('div', { 'class': 'modula-block-preview__logo' }),
211
+ React.createElement(Spinner, null)
212
+ )
213
+ )
214
+ )];
215
+ }
216
+
217
+ if (id == 0 || images.length === 0) {
218
+ return [React.createElement(
219
+ Fragment,
220
+ null,
221
+ React.createElement(_inspector2.default, _extends({ onIdChange: function onIdChange(id) {
222
+ return _this3.onIdChange(id);
223
+ } }, this.props)),
224
+ React.createElement(
225
+ 'div',
226
+ { 'class': 'modula-block-preview' },
227
+ React.createElement(
228
+ 'div',
229
+ { 'class': 'modula-block-preview__content' },
230
+ React.createElement('div', { 'class': 'modula-block-preview__logo' }),
231
+ galleries.length === 0 && React.createElement(
232
+ Fragment,
233
+ null,
234
+ React.createElement(
235
+ 'p',
236
+ null,
237
+ __('You don\'t seem to have any galleries.')
238
+ ),
239
+ React.createElement(
240
+ Button,
241
+ { href: modulaVars.adminURL + 'post-new.php?post_type=modula-gallery', target: '_blank', isDefault: true },
242
+ __('Add New Gallery')
243
+ )
244
+ ),
245
+ galleries.length > 0 && React.createElement(
246
+ Fragment,
247
+ null,
248
+ React.createElement(SelectControl, {
249
+ value: id,
250
+ options: this.selectOptions(),
251
+ onChange: function onChange(value) {
252
+ return _this3.onIdChange(parseInt(value));
253
+ }
254
+ }),
255
+ id != 0 && React.createElement(
256
+ Button,
257
+ { target: '_blank', href: modulaVars.adminURL + 'post.php?post=' + id + '&action=edit', isPrimary: true },
258
+ __('Edit Gallery')
259
+ )
260
+ )
261
+ )
262
+ )
263
+ )];
264
+ }
265
+
266
+ return [React.createElement(
267
+ Fragment,
268
+ null,
269
+ blockControls,
270
+ React.createElement(_inspector2.default, _extends({ onIdChange: function onIdChange(id) {
271
+ return _this3.onIdChange(id);
272
+ } }, this.props)),
273
+ React.createElement(
274
+ 'div',
275
+ { 'class': 'modula-block-preview--images' },
276
+ images.map(function (img, index) {
277
+ return [React.createElement(
278
+ 'div',
279
+ { 'class': 'modula-preview-image-wrap' },
280
+ React.createElement('img', { src: img.src })
281
+ )];
282
+ })
283
+ )
284
+ )];
285
+ }
286
+ }]);
287
+
288
+ return ModulaEdit;
289
+ }(Component);
290
+
291
+ exports.default = withSelect(function (select, props) {
292
+ var _select = select('core'),
293
+ getEntityRecords = _select.getEntityRecords;
294
+
295
+ var query = {
296
+ post_status: 'publish',
297
+ per_page: -1
298
+ };
299
+
300
+ return {
301
+ galleries: getEntityRecords('postType', 'modula-gallery', query) || []
302
+ };
303
+ })(ModulaEdit);
304
+
305
+ /***/ }),
306
+ /* 1 */
307
+ /***/ (function(module, exports, __webpack_require__) {
308
+
309
+ "use strict";
310
+
311
+
312
+ Object.defineProperty(exports, "__esModule", {
313
+ value: true
314
+ });
315
+ var icons = {};
316
+
317
+ icons.modula = React.createElement(
318
+ "svg",
319
+ { xmlns: "http://www.w3.org/2000/svg", x: "0px", y: "0px", viewBox: "364 242.9 312.2 357" },
320
+ React.createElement(
321
+ "g",
322
+ null,
323
+ React.createElement("path", { d: "M528.1,242.9c8.5,16.9,17,33.8,25.6,50.6c13.4,26.4,26.9,52.7,39.9,79.7c-41.8-23.3-83.6-46.7-125.4-70.1 c0.3-1.9,1.7-2.6,2.7-3.5c17.7-17.7,35.4-35.4,53.1-53c1.1-1.1,2.6-2,3.1-3.7C527.4,242.9,527.8,242.9,528.1,242.9z" }),
324
+ React.createElement("path", { d: "M602.3,463.3c11.3-6.9,22.6-13.9,33.9-20.8c5.5-3.4,11.1-6.7,16.5-10.3c2.2-1.4,2.9-1.1,3.5,1.5 c6.4,25.3,13,50.6,19.6,75.8c0.6,2.2,1,3.7-2.4,3.5c-46.7-2.1-93.5-4.1-140.2-6.1c-0.2,0-0.3-0.1-0.5-0.2c0.5-1.7,2.1-2,3.3-2.7 c20-12.3,39.9-24.7,60-36.8c3.4-2.1,5.1-3.7,4.8-8.5c-1.4-21.3-1.8-42.6-2.6-63.9c-0.9-24.1-1.8-48.3-2.8-72.4 c-0.2-6.1-0.2-6.1,5.5-4.6c23.8,6.2,47.6,12.5,71.5,18.5c3.9,1,4.2,1.9,2.1,5.4c-23.4,38.5-46.7,77.1-70,115.7c-1,1.7-2,3.4-3,5.1 C601.7,462.8,602,463,602.3,463.3z" }),
325
+ React.createElement("path", { d: "M372.8,326.9c48,2.6,95.8,5.1,143.9,7.7c-0.9,2-2.5,2.3-3.7,3.1c-38.6,23.2-77.3,46.4-115.9,69.6c-3,1.8-4.3,2.6-5.4-1.9 c-5.9-24.9-12.2-49.7-18.3-74.6C373.1,329.6,373,328.4,372.8,326.9z" }),
326
+ React.createElement("path", { d: "M517.6,599.9c-23.2-43.7-45.9-86.6-69.2-130.5c2.3,1.2,3.5,1.8,4.7,2.4c39.8,21.5,79.5,43.1,119.3,64.5 c3.2,1.7,4.1,2.5,1,5.6c-17.7,17.8-35.2,35.9-52.8,53.9C519.7,596.9,518.9,598.2,517.6,599.9z" }),
327
+ React.createElement("path", { d: "M364.9,505.1c26.6-40.5,53.1-80.8,79.7-121.3c1.3,1.3,0.9,2.5,0.9,3.6c0,46-0.1,92-0.1,137.9c0,3.1-0.2,4.5-4,3.3 c-24.9-7.7-49.9-15.2-74.9-22.8C366,505.8,365.7,505.5,364.9,505.1z" })
328
+ )
329
+ );
330
+
331
+ exports.default = icons;
332
+
333
+ /***/ }),
334
+ /* 2 */
335
+ /***/ (function(module, exports, __webpack_require__) {
336
+
337
+ "use strict";
338
+
339
+
340
+ Object.defineProperty(exports, "__esModule", {
341
+ value: true
342
+ });
343
+
344
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
345
+
346
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
347
+
348
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
349
+
350
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
351
+
352
+ /**
353
+ * WordPress dependencies
354
+ */
355
+ var __ = wp.i18n.__;
356
+ var _wp$element = wp.element,
357
+ Component = _wp$element.Component,
358
+ Fragment = _wp$element.Fragment;
359
+ var InspectorControls = wp.editor.InspectorControls;
360
+ var _wp$components = wp.components,
361
+ SelectControl = _wp$components.SelectControl,
362
+ Button = _wp$components.Button,
363
+ PanelBody = _wp$components.PanelBody;
364
+
365
+ /**
366
+ * Inspector controls
367
+ */
368
+
369
+ var Inspector = function (_Component) {
370
+ _inherits(Inspector, _Component);
371
+
372
+ function Inspector(props) {
373
+ _classCallCheck(this, Inspector);
374
+
375
+ return _possibleConstructorReturn(this, (Inspector.__proto__ || Object.getPrototypeOf(Inspector)).apply(this, arguments));
376
+ }
377
+
378
+ _createClass(Inspector, [{
379
+ key: 'selectOptions',
380
+ value: function selectOptions() {
381
+ var options = [{ value: 0, label: __('none') }];
382
+
383
+ this.props.galleries.forEach(function (gallery) {
384
+ options.push({ value: gallery.id, label: gallery.title.rendered });
385
+ });
386
+
387
+ return options;
388
+ }
389
+ }, {
390
+ key: 'render',
391
+ value: function render() {
392
+ var _this2 = this;
393
+
394
+ var _props = this.props,
395
+ attributes = _props.attributes,
396
+ setAttributes = _props.setAttributes,
397
+ galleries = _props.galleries;
398
+ var id = attributes.id;
399
+
400
+
401
+ return React.createElement(
402
+ Fragment,
403
+ null,
404
+ React.createElement(
405
+ InspectorControls,
406
+ null,
407
+ React.createElement(
408
+ PanelBody,
409
+ { title: __('Gallery Settings'), initialOpen: true },
410
+ galleries.length === 0 && React.createElement(
411
+ Fragment,
412
+ null,
413
+ React.createElement(
414
+ 'p',
415
+ null,
416
+ __('You don\'t seem to have any galleries.')
417
+ ),
418
+ React.createElement(
419
+ Button,
420
+ { href: modulaVars.adminURL + 'post-new.php?post_type=modula-gallery', target: '_blank', isDefault: true },
421
+ __('Add New Gallery')
422
+ )
423
+ ),
424
+ galleries.length > 0 && React.createElement(
425
+ Fragment,
426
+ null,
427
+ React.createElement(SelectControl, {
428
+ label: __('Select Gallery'),
429
+ value: id,
430
+ options: this.selectOptions(),
431
+ onChange: function onChange(value) {
432
+ return _this2.props.onIdChange(parseInt(value));
433
+ }
434
+ }),
435
+ id != 0 && React.createElement(
436
+ Button,
437
+ { target: '_blank', href: modulaVars.adminURL + 'post.php?post=' + id + '&action=edit', isDefault: true },
438
+ __('Edit gallery')
439
+ )
440
+ )
441
+ )
442
+ )
443
+ );
444
+ }
445
+ }]);
446
+
447
+ return Inspector;
448
+ }(Component);
449
+
450
+ exports.default = Inspector;
451
+
452
+ /***/ }),
453
+ /* 3 */
454
+ /***/ (function(module, exports, __webpack_require__) {
455
+
456
+ "use strict";
457
+
458
+
459
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /**
460
+ * Internal dependencies
461
+ */
462
+
463
+
464
+ var _edit = __webpack_require__(0);
465
+
466
+ var _edit2 = _interopRequireDefault(_edit);
467
+
468
+ var _icons = __webpack_require__(1);
469
+
470
+ var _icons2 = _interopRequireDefault(_icons);
471
+
472
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
473
+
474
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
475
+
476
+ /**
477
+ * WordPress dependencies
478
+ */
479
+ var __ = wp.i18n.__;
480
+ var registerBlockType = wp.blocks.registerBlockType;
481
+
482
+ var ModulaGutenberg = function () {
483
+ function ModulaGutenberg() {
484
+ _classCallCheck(this, ModulaGutenberg);
485
+
486
+ this.registerBlock();
487
+ }
488
+
489
+ _createClass(ModulaGutenberg, [{
490
+ key: 'registerBlock',
491
+ value: function registerBlock() {
492
+
493
+ this.blockName = 'modula/gallery';
494
+
495
+ this.blockAttributes = {
496
+ id: {
497
+ type: 'number',
498
+ default: 0
499
+ }
500
+ };
501
+
502
+ registerBlockType(this.blockName, {
503
+ title: 'Modula Gallery',
504
+ icon: _icons2.default.modula,
505
+ description: __('Make your galleries stand out.'),
506
+ keywords: [__('gallery'), __('modula'), __('images')],
507
+ category: 'common',
508
+ supports: {
509
+ align: ['wide', 'full'],
510
+ customClassName: false
511
+ },
512
+ attributes: this.blockAttributes,
513
+ edit: _edit2.default,
514
+ save: function save() {
515
+ // Rendering in PHP
516
+ return null;
517
+ }
518
+ });
519
+ }
520
+ }]);
521
+
522
+ return ModulaGutenberg;
523
+ }();
524
+
525
+ var modulaGutenberg = new ModulaGutenberg();
526
+
527
+ /***/ })
528
+ /******/ ]);
assets/js/wp-modula-items.js CHANGED
@@ -4,6 +4,15 @@ wp.Modula = 'undefined' === typeof( wp.Modula ) ? {} : wp.Modula;
4
5
var modulaItemsCollection = Backbone.Collection.extend({
6
maxFiles: 20,
7
8
moveItem: function( model, index ){
9
var currentIndex = this.indexOf( model );
@@ -26,6 +35,45 @@ wp.Modula = 'undefined' === typeof( wp.Modula ) ? {} : wp.Modula;
26
27
this.add( model );
28
29
}
30
31
});
@@ -56,6 +104,7 @@ wp.Modula = 'undefined' === typeof( wp.Modula ) ? {} : wp.Modula;
56
'index': '',
57
'orientation': 'landscape'
58
},
59
60
initialize: function( args ){
61
@@ -76,10 +125,25 @@ wp.Modula = 'undefined' === typeof( wp.Modula ) ? {} : wp.Modula;
76
this.set( 'resize', true );
77
this.resize();
78
}
79
-
80
81
},
82
83
resize: function() {
84
var size = modula.Resizer.get( 'size' ),
85
gutter = modula.Resizer.get( 'gutter' ),
@@ -126,6 +190,45 @@ wp.Modula = 'undefined' === typeof( wp.Modula ) ? {} : wp.Modula;
126
127
},
128
129
} );
130
131
var modulaItemView = Backbone.View.extend({
@@ -291,6 +394,7 @@ wp.Modula = 'undefined' === typeof( wp.Modula ) ? {} : wp.Modula;
291
},
292
293
updateIndex: function( event, data ) {
294
this.model.set( 'index', data.index );
295
modula.Items.moveItem( this.model, data.index );
296
this.render();
4
5
var modulaItemsCollection = Backbone.Collection.extend({
6
maxFiles: 20,
7
+ updateInterval: false,
8
+
9
+ initialize: function() {
10
+
11
+ // Listen to remove items from collections
12
+ this.listenTo( this, 'remove', this.checkSave );
13
+ this.listenTo( this, 'add', this.checkSave );
14
+
15
+ },
16
17
moveItem: function( model, index ){
18
var currentIndex = this.indexOf( model );
35
36
this.add( model );
37
38
+ },
39
+
40
+ checkSave: function() {
41
+ var self = this;
42
+
43
+ $('#publishing-action .spinner').addClass( 'is-active' );
44
+ $('#publishing-action #publish').attr( 'disabled', 'disabled' );
45
+
46
+ if ( ! self.updateInterval ) {
47
+ self.updateInterval = setInterval( $.proxy( self.saveImages, self ), 1000);
48
+ }else{
49
+ clearInterval( self.updateInterval );
50
+ self.updateInterval = setInterval( $.proxy( self.saveImages, self ), 1000);
51
+ }
52
+ },
53
+
54
+ saveImages: function() {
55
+ var images = [],
56
+ ajaxData, self = this;
57
+ clearInterval( this.updateInterval );
58
+
59
+ this.each( function( item ) {
60
+ var attributes = item.getAttributes();
61
+ images[ attributes['index'] ] = attributes;
62
+ });
63
+
64
+ ajaxData = { '_wpnonce' : modulaHelper['_wpnonce'], 'action' : 'modula_save_images', gallery : modulaHelper['id'] };
65
+ ajaxData['images'] = JSON.stringify( images );
66
+
67
+ $.ajax({
68
+ method: 'POST',
69
+ url: modulaHelper['ajax_url'],
70
+ data: ajaxData,
71
+ dataType: 'json',
72
+ }).done(function( msg ) {
73
+ $('#publishing-action .spinner').removeClass( 'is-active' );
74
+ $('#publishing-action #publish').removeAttr( 'disabled' );
75
+ });
76
+
77
}
78
79
});
104
'index': '',
105
'orientation': 'landscape'
106
},
107
+ updateInterval: false,
108
109
initialize: function( args ){
110
125
this.set( 'resize', true );
126
this.resize();
127
}
128
+
129
+ // save
130
+ this.listenTo( this, 'change', this.checkSave );
131
132
},
133
134
+ getAttributes: function(){
135
+ var attributes = this.toJSON(),
136
+ data = {};
137
+
138
+ jQuery.each( attributes, function( attribute, value ){
139
+ if ( 'object' != typeof value ) {
140
+ data[ attribute ] = value;
141
+ }
142
+ });
143
+
144
+ return data;
145
+ },
146
+
147
resize: function() {
148
var size = modula.Resizer.get( 'size' ),
149
gutter = modula.Resizer.get( 'gutter' ),
190
191
},
192
193
+ checkSave: function() {
194
+
195
+ var self = this,
196
+ changedAttributes = _.keys( self.changedAttributes() );
197
+
198
+ if ( changedAttributes.includes( 'index' ) ) {
199
+ return;
200
+ }
201
+
202
+ $('#publishing-action .spinner').addClass( 'is-active' );
203
+ $('#publishing-action #publish').attr( 'disabled', 'disabled' );
204
+
205
+ if ( ! self.updateInterval ) {
206
+ self.updateInterval = setInterval( $.proxy( self.saveImage, self ), 1000 );
207
+ }else{
208
+ clearInterval( self.updateInterval );
209
+ self.updateInterval = setInterval( $.proxy( self.saveImage, self ), 1000 );
210
+ }
211
+ },
212
+
213
+ saveImage: function() {
214
+ var json = this.getAttributes();
215
+ clearInterval( this.updateInterval );
216
+
217
+ ajaxData = { '_wpnonce': modulaHelper['_wpnonce'], 'action': 'modula_save_image', 'gallery': modulaHelper['id'] };
218
+ ajaxData['image'] = JSON.stringify( json );
219
+
220
+ $.ajax({
221
+ method: 'POST',
222
+ url: modulaHelper['ajax_url'],
223
+ data: ajaxData,
224
+ dataType: 'json',
225
+ }).done(function( msg ) {
226
+ $('#publishing-action .spinner').removeClass( 'is-active' );
227
+ $('#publishing-action #publish').removeAttr( 'disabled' );
228
+ });
229
+
230
+ }
231
+
232
} );
233
234
var modulaItemView = Backbone.View.extend({
394
},
395
396
updateIndex: function( event, data ) {
397
+
398
this.model.set( 'index', data.index );
399
modula.Items.moveItem( this.model, data.index );
400
this.render();
assets/src/js/components/edit.js ADDED
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import Inspector from './inspector';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ const { __ } = wp.i18n;
10
+ const { Component, Fragment } = wp.element;
11
+ const { withSelect } = wp.data;
12
+ const { SelectControl, Button, Spinner, Toolbar, IconButton } = wp.components;
13
+ const { BlockControls } = wp.editor;
14
+
15
+ class ModulaEdit extends Component {
16
+
17
+ constructor( props ) {
18
+ super( ...arguments );
19
+
20
+ this.props.attributes.status = 'ready';
21
+ this.props.attributes.images = [];
22
+ }
23
+
24
+ componentDidMount() {
25
+ if( this.props.attributes.id !== 0 ) {
26
+ this.onIdChange( this.props.attributes.id );
27
+ }
28
+ }
29
+
30
+ onIdChange( id ) {
31
+ this.props.setAttributes( { status: 'loading' } );
32
+
33
+ jQuery.ajax({
34
+ type: "POST",
35
+ data : { action: "modula_get_gallery_meta", id: id, nonce: modulaVars.nonce },
36
+ url : modulaVars.ajaxURL,
37
+ success: ( result ) => this.onGalleryLoaded( id, result ),
38
+ });
39
+ }
40
+
41
+ onGalleryLoaded( id, result ) {
42
+ if( result.success === false ) {
43
+ this.props.setAttributes( { id: 0, status: 'ready' } );
44
+ return;
45
+ }
46
+
47
+ this.props.setAttributes( { id: id, images: JSON.parse( result ), status: 'ready' } );
48
+ }
49
+
50
+ selectOptions() {
51
+ let options = [ { value: 0, label: __( 'select a gallery' ) } ];
52
+
53
+ this.props.galleries.forEach(function( gallery ) {
54
+ options.push( { value: gallery.id, label: gallery.title.rendered } );
55
+ });
56
+
57
+ return options;
58
+ }
59
+
60
+ render() {
61
+ const { attributes, galleries } = this.props;
62
+ const { id, images, status } = attributes;
63
+
64
+ const blockControls = (
65
+ <BlockControls>
66
+ { images.length > 0 && (
67
+ <Toolbar>
68
+ <IconButton
69
+ label={ __( 'Edit gallery' ) }
70
+ icon="edit"
71
+ href={ modulaVars.adminURL + 'post.php?post=' + id + '&action=edit' }
72
+ target="_blank"
73
+ />
74
+ </Toolbar>
75
+ ) }
76
+ </BlockControls>
77
+ );
78
+
79
+ if( status === 'loading' ) {
80
+ return [
81
+ <Fragment>
82
+ <div class="modula-block-preview">
83
+ <div class="modula-block-preview__content">
84
+ <div class="modula-block-preview__logo"></div>
85
+ <Spinner/>
86
+ </div>
87
+ </div>
88
+ </Fragment>
89
+ ];
90
+ }
91
+
92
+ if( id == 0 || images.length === 0 ) {
93
+ return [
94
+ <Fragment>
95
+ <Inspector onIdChange={ ( id ) => this.onIdChange( id ) } { ...this.props } />
96
+
97
+ <div class="modula-block-preview">
98
+ <div class="modula-block-preview__content">
99
+ <div class="modula-block-preview__logo"></div>
100
+ { ( galleries.length === 0 ) && (
101
+ <Fragment>
102
+ <p>{ __( 'You don\'t seem to have any galleries.' ) }</p>
103
+ <Button href={ modulaVars.adminURL + 'post-new.php?post_type=modula-gallery' } target="_blank" isDefault>{ __( 'Add New Gallery' ) }</Button>
104
+ </Fragment>
105
+ )}
106
+ { ( galleries.length > 0 ) && (
107
+ <Fragment>
108
+ <SelectControl
109
+ value={ id }
110
+ options={ this.selectOptions() }
111
+ onChange={ ( value ) => this.onIdChange( parseInt( value ) ) }
112
+ />
113
+ { id != 0 && (
114
+ <Button target="_blank" href={ modulaVars.adminURL + 'post.php?post=' + id + '&action=edit' } isPrimary>{ __( 'Edit Gallery' ) }</Button>
115
+ ) }
116
+ </Fragment>
117
+ )}
118
+ </div>
119
+ </div>
120
+
121
+ </Fragment>
122
+ ];
123
+ }
124
+
125
+ return [
126
+ <Fragment>
127
+ { blockControls }
128
+ <Inspector onIdChange={ ( id ) => this.onIdChange( id ) } { ...this.props } />
129
+
130
+ <div class="modula-block-preview--images">
131
+ { images.map( ( img, index ) => {
132
+ return [
133
+ <div class="modula-preview-image-wrap">
134
+ <img src={ img.src } />
135
+ </div>
136
+ ];
137
+ } ) }
138
+ </div>
139
+
140
+ </Fragment>
141
+ ];
142
+ }
143
+ }
144
+
145
+
146
+
147
+ export default withSelect( ( select, props ) => {
148
+ const { getEntityRecords } = select( 'core' );
149
+ const query = {
150
+ post_status: 'publish',
151
+ per_page: -1,
152
+ }
153
+
154
+ return {
155
+ galleries: getEntityRecords( 'postType', 'modula-gallery', query ) || [],
156
+ };
157
+ } )( ModulaEdit );
158
+
159
+
assets/src/js/components/inspector.js ADDED
@@ -0,0 +1,62 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ const { __ } = wp.i18n;
5
+ const { Component, Fragment } = wp.element;
6
+ const { InspectorControls } = wp.editor;
7
+ const { SelectControl, Button, PanelBody } = wp.components;
8
+
9
+ /**
10
+ * Inspector controls
11
+ */
12
+ export default class Inspector extends Component {
13
+
14
+ constructor( props ) {
15
+ super( ...arguments );
16
+ }
17
+
18
+ selectOptions() {
19
+ let options = [ { value: 0, label: __( 'none' ) } ];
20
+
21
+ this.props.galleries.forEach(function( gallery ) {
22
+ options.push( { value: gallery.id, label: gallery.title.rendered } );
23
+ });
24
+
25
+ return options;
26
+ }
27
+
28
+ render() {
29
+ const { attributes, setAttributes, galleries } = this.props;
30
+ const { id } = attributes;
31
+
32
+ return (
33
+ <Fragment>
34
+ <InspectorControls>
35
+ <PanelBody title={ __( 'Gallery Settings' ) } initialOpen={ true }>
36
+ { galleries.length === 0 && (
37
+ <Fragment>
38
+ <p>{ __( 'You don\'t seem to have any galleries.' ) }</p>
39
+ <Button href={ modulaVars.adminURL + 'post-new.php?post_type=modula-gallery' } target="_blank" isDefault>{ __( 'Add New Gallery' ) }</Button>
40
+ </Fragment>
41
+ )}
42
+
43
+ { galleries.length > 0 && (
44
+ <Fragment>
45
+ <SelectControl
46
+ label={ __( 'Select Gallery' ) }
47
+ value={ id }
48
+ options={ this.selectOptions() }
49
+ onChange={ ( value ) => this.props.onIdChange( parseInt( value ) ) }
50
+ />
51
+ { id != 0 && (
52
+ <Button target="_blank" href={ modulaVars.adminURL + 'post.php?post=' + id + '&action=edit' } isDefault>{ __( 'Edit gallery' ) }</Button>
53
+ ) }
54
+ </Fragment>
55
+ )}
56
+
57
+ </PanelBody>
58
+ </InspectorControls>
59
+ </Fragment>
60
+ );
61
+ }
62
+ }
assets/src/js/utils/icons.js ADDED
@@ -0,0 +1,22 @@
1
+ const icons = {};
2
+
3
+ icons.modula =
4
+ <svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" viewBox="364 242.9 312.2 357">
5
+ <g>
6
+ <path d="M528.1,242.9c8.5,16.9,17,33.8,25.6,50.6c13.4,26.4,26.9,52.7,39.9,79.7c-41.8-23.3-83.6-46.7-125.4-70.1
7
+ c0.3-1.9,1.7-2.6,2.7-3.5c17.7-17.7,35.4-35.4,53.1-53c1.1-1.1,2.6-2,3.1-3.7C527.4,242.9,527.8,242.9,528.1,242.9z"/>
8
+ <path d="M602.3,463.3c11.3-6.9,22.6-13.9,33.9-20.8c5.5-3.4,11.1-6.7,16.5-10.3c2.2-1.4,2.9-1.1,3.5,1.5
9
+ c6.4,25.3,13,50.6,19.6,75.8c0.6,2.2,1,3.7-2.4,3.5c-46.7-2.1-93.5-4.1-140.2-6.1c-0.2,0-0.3-0.1-0.5-0.2c0.5-1.7,2.1-2,3.3-2.7
10
+ c20-12.3,39.9-24.7,60-36.8c3.4-2.1,5.1-3.7,4.8-8.5c-1.4-21.3-1.8-42.6-2.6-63.9c-0.9-24.1-1.8-48.3-2.8-72.4
11
+ c-0.2-6.1-0.2-6.1,5.5-4.6c23.8,6.2,47.6,12.5,71.5,18.5c3.9,1,4.2,1.9,2.1,5.4c-23.4,38.5-46.7,77.1-70,115.7c-1,1.7-2,3.4-3,5.1
12
+ C601.7,462.8,602,463,602.3,463.3z"/>
13
+ <path d="M372.8,326.9c48,2.6,95.8,5.1,143.9,7.7c-0.9,2-2.5,2.3-3.7,3.1c-38.6,23.2-77.3,46.4-115.9,69.6c-3,1.8-4.3,2.6-5.4-1.9
14
+ c-5.9-24.9-12.2-49.7-18.3-74.6C373.1,329.6,373,328.4,372.8,326.9z"/>
15
+ <path d="M517.6,599.9c-23.2-43.7-45.9-86.6-69.2-130.5c2.3,1.2,3.5,1.8,4.7,2.4c39.8,21.5,79.5,43.1,119.3,64.5
16
+ c3.2,1.7,4.1,2.5,1,5.6c-17.7,17.8-35.2,35.9-52.8,53.9C519.7,596.9,518.9,598.2,517.6,599.9z"/>
17
+ <path d="M364.9,505.1c26.6-40.5,53.1-80.8,79.7-121.3c1.3,1.3,0.9,2.5,0.9,3.6c0,46-0.1,92-0.1,137.9c0,3.1-0.2,4.5-4,3.3
18
+ c-24.9-7.7-49.9-15.2-74.9-22.8C366,505.8,365.7,505.5,364.9,505.1z"/>
19
+ </g>
20
+ </svg>;
21
+
22
+ export default icons;
assets/src/js/wp-modula-gutenberg.js ADDED
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import Edit from './components/edit';
5
+ import icons from './utils/icons';
6
+
7
+ /**
8
+ * WordPress dependencies
9
+ */
10
+ const { __ } = wp.i18n;
11
+ const { registerBlockType } = wp.blocks;
12
+
13
+ class ModulaGutenberg {
14
+
15
+ constructor() {
16
+ this.registerBlock();
17
+ }
18
+
19
+ registerBlock() {
20
+
21
+ this.blockName = 'modula/gallery';
22
+
23
+ this.blockAttributes = {
24
+ id: {
25
+ type: 'number',
26
+ default: 0,
27
+ },
28
+ };
29
+
30
+ registerBlockType( this.blockName, {
31
+ title: 'Modula Gallery',
32
+ icon: icons.modula,
33
+ description: __( 'Make your galleries stand out.' ),
34
+ keywords: [
35
+ __( 'gallery' ),
36
+ __( 'modula' ),
37
+ __( 'images' ),
38
+ ],
39
+ category: 'common',
40
+ supports: {
41
+ align: [ 'wide', 'full' ],
42
+ customClassName: false,
43
+ },
44
+ attributes: this.blockAttributes,
45
+ edit: Edit,
46
+ save() {
47
+ // Rendering in PHP
48
+ return null;
49
+ },
50
+ } );
51
+
52
+ }
53
+
54
+ }
55
+
56
+ let modulaGutenberg = new ModulaGutenberg();
assets/src/scss/modula-gutenberg.scss ADDED
@@ -0,0 +1,50 @@
1
+ .modula-block-preview {
2
+ background: #f3f3f5;
3
+ border-radius: 6px;
4
+ position: relative;
5
+ overflow: hidden;
6
+
7
+ .components-spinner {
8
+ display: block;
9
+ float: none;
10
+ margin: 0 auto;
11
+ }
12
+ }
13
+
14
+ .modula-block-preview__logo {
15
+ width: 100%;
16
+ height: 60px;
17
+ background:url(../images/block-preview-bg.svg) no-repeat 50% 0%;
18
+ background-size: 75%;
19
+ }
20
+
21
+ .modula-block-preview__content {
22
+ width: 100%;
23
+ max-width: 400px;
24
+ margin: 40px auto;
25
+ text-align: center;
26
+ }
27
+
28
+ .modula-block-preview--images {
29
+ display: flex;
30
+ flex-wrap: wrap;
31
+ margin-left: -1%;
32
+ margin-right: -1%;
33
+ }
34
+
35
+ .modula-preview-image-wrap {
36
+ width: 23%;
37
+ height: 0px;
38
+ padding-bottom: 23%;
39
+ position: relative;
40
+ margin: 1%;
41
+
42
+ img {
43
+ position: absolute;
44
+ left: 0;
45
+ top: 0;
46
+ width: 100%;
47
+ height: 100%;
48
+ object-fit: cover;
49
+ }
50
+ }
changelog.txt CHANGED
@@ -1,3 +1,17 @@
1
= 2.0.5 =
2
* Added responsive options for custom grid
3
* Compatibility with WP Real Media Library( https://matthias-web.com/wordpress/real-media-library/ )
1
+ = 2.0.6 - 13.03.2019 =
2
+ * Changed how we save images
3
+ * Change some strings
4
+ * Fixed "scroll issue"
5
+ * Added shortcode column
6
+ * Fixed error on IE
7
+ * Fixed random images with max count issue
8
+ * Added Filter tab as upsell
9
+ * Added option to hide/show lightbox arrow on desktop/mobile
10
+ * Fixed Custom responsiveness issue
11
+ * Added Gutenberg block
12
+
13
+ For more information : https://github.com/MachoThemes/modula-lite/milestone/8?closed=1
14
+
15
= 2.0.5 =
16
* Added responsive options for custom grid
17
* Compatibility with WP Real Media Library( https://matthias-web.com/wordpress/real-media-library/ )
includes/admin/class-modula-admin.php CHANGED
@@ -17,6 +17,11 @@ class Modula_Admin {
17
// Show general tab
18
add_action( 'modula_admin_tab_general', array( $this, 'show_general_tab' ) );
19
20
}
21
22
public function register_submenus() {
@@ -136,6 +141,149 @@ class Modula_Admin {
136
public function show_general_tab() {
137
include 'tabs/general.php';
138
}
139
}
140
141
new Modula_Admin();
17
// Show general tab
18
add_action( 'modula_admin_tab_general', array( $this, 'show_general_tab' ) );
19
20
+ add_action( 'wp_ajax_modula_save_images', array( $this, 'save_images' ) );
21
+ add_action( 'wp_ajax_modula_save_image', array( $this, 'save_image' ) );
22
+
23
+
24
+
25
}
26
27
public function register_submenus() {
141
public function show_general_tab() {
142
include 'tabs/general.php';
143
}
144
+
145
+ private function sanitize_image( $image ){
146
+
147
+ $new_image = array();
148
+
149
+ // This list will not contain id because we save our images based on image id.
150
+ $image_attributes = apply_filters( 'modula_gallery_image_attributes', array(
151
+ 'id',
152
+ 'alt',
153
+ 'title',
154
+ 'description',
155
+ 'halign',
156
+ 'valign',
157
+ 'link',
158
+ 'target',
159
+ 'width',
160
+ 'height',
161
+ ) );
162
+
163
+ foreach ( $image_attributes as $attribute ) {
164
+ if ( isset( $image[ $attribute ] ) ) {
165
+
166
+ switch ( $attribute ) {
167
+ case 'alt':
168
+ $new_image[ $attribute ] = sanitize_text_field( $image[ $attribute ] );
169
+ break;
170
+ case 'width':
171
+ case 'height':
172
+ $new_image[ $attribute ] = absint( $image[ $attribute ] );
173
+ break;
174
+ case 'title':
175
+ case 'description' :
176
+ $new_image[ $attribute ] = wp_filter_post_kses( $image[ $attribute ] );
177
+ break;
178
+ case 'link' :
179
+ $new_image[ $attribute ] = esc_url_raw( $image[ $attribute ] );
180
+ break;
181
+ case 'target':
182
+ if ( isset( $image[ $attribute ] ) ) {
183
+ $new_image[ $attribute ] = absint( $image[ $attribute ] );
184
+ }else{
185
+ $new_image[ $attribute ] = 0;
186
+ }
187
+ break;
188
+ case 'halign' :
189
+ if ( in_array( $image[ $attribute ], array( 'left', 'right', 'center' ) ) ) {
190
+ $new_image[ $attribute ] = $image[ $attribute ];
191
+ }else{
192
+ $new_image[ $attribute ] = 'center';
193
+ }
194
+ break;
195
+ case 'valign' :
196
+ if ( in_array( $image[ $attribute ], array( 'top', 'bottom', 'middle' ) ) ) {
197
+ $new_image[ $attribute ] = $image[ $attribute ];
198
+ }else{
199
+ $new_image[ $attribute ] = 'middle';
200
+ }
201
+ break;
202
+ default:
203
+ $new_image[ $attribute ] = apply_filters( 'modula_image_field_sanitization', sanitize_text_field( $image[ $attribute ] ), $image[ $attribute ], $attribute );
204
+ break;
205
+ }
206
+
207 </