Gallery – Photo Gallery – Image Gallery - Version 1.3.3

Version Description

  • Added notification for Modula 2.0
  • Added Compatibility with AO
Download this release

Release Info

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

Code changes from version 1.3.2 to 1.3.3

Files changed (54) hide show
  1. Modula.php +156 -5
  2. README.txt +21 -1
  3. admin/css/materialdesignicons.css +0 -0
  4. admin/fancybox/jquery.fancybox.css +771 -0
  5. admin/fancybox/jquery.fancybox.js +5629 -0
  6. admin/fancybox/jquery.fancybox.min.css +1 -0
  7. admin/fancybox/jquery.fancybox.min.js +13 -0
  8. admin/font/material-design-icons/license.txt +0 -0
  9. admin/font/material-design-icons/materialdesignicons-webfont.eot +0 -0
  10. admin/font/material-design-icons/materialdesignicons-webfont.svg +0 -0
  11. admin/font/material-design-icons/materialdesignicons-webfont.ttf +0 -0
  12. admin/font/material-design-icons/materialdesignicons-webfont.woff +0 -0
  13. admin/font/material-design-icons/materialdesignicons-webfont.woff2 +0 -0
  14. admin/font/roboto/Roboto-Bold-webfont.eot +0 -0
  15. admin/font/roboto/Roboto-Bold-webfont.svg +0 -0
  16. admin/font/roboto/Roboto-Bold-webfont.ttf +0 -0
  17. admin/font/roboto/Roboto-Bold-webfont.woff +0 -0
  18. admin/font/roboto/Roboto-Light-webfont.eot +0 -0
  19. admin/font/roboto/Roboto-Light-webfont.svg +0 -0
  20. admin/font/roboto/Roboto-Light-webfont.ttf +0 -0
  21. admin/font/roboto/Roboto-Light-webfont.woff +0 -0
  22. admin/font/roboto/Roboto-Regular-webfont.eot +0 -0
  23. admin/font/roboto/Roboto-Regular-webfont.svg +0 -0
  24. admin/font/roboto/Roboto-Regular-webfont.ttf +0 -0
  25. admin/font/roboto/Roboto-Regular-webfont.woff +0 -0
  26. admin/images/captions-settings.jpg +0 -0
  27. admin/images/creative-gallery-settings.jpg +0 -0
  28. admin/images/custom-grid-settings.jpg +0 -0
  29. admin/images/customizations-settings.jpg +0 -0
  30. admin/images/drag-and-drop-upload.jpg +0 -0
  31. admin/images/galleries-list.jpg +0 -0
  32. admin/images/gallery-edit.jpg +0 -0
  33. admin/images/helper-grid.jpg +0 -0
  34. admin/images/hover-effects-settings.jpg +0 -0
  35. admin/images/landscape-portrait.jpg +0 -0
  36. admin/images/live-preview.jpg +0 -0
  37. admin/images/loading-effects-settings.jpg +0 -0
  38. admin/images/modula-v2-custom-grid.png +0 -0
  39. admin/images/modula-v2-drag-and-drop-upload.png +0 -0
  40. admin/images/modula-v2-familiar-dashboard.png +0 -0
  41. admin/images/modula-v2-helper-grid.png +0 -0
  42. admin/images/modula-v2-intuitive-settings.png +0 -0
  43. admin/images/modula-v2-landscape-or-portrait.png +0 -0
  44. admin/images/modula-v2-live-preview.png +0 -0
  45. admin/images/modula.svg +48 -0
  46. admin/images/social-settings.jpg +0 -0
  47. admin/images/style-settings.jpg +0 -0
  48. admin/modula-v2.php +99 -0
  49. admin/welcome-screen/sections/modula-v2.php +11 -0
  50. lib/class-modula-plugin-rollback.php +71 -0
  51. lib/class-modula-review.php +177 -0
  52. lib/class-modula-rollback.php +178 -0
  53. lib/install-db.php +1 -3
  54. scripts/rollback.js +11 -0
Modula.php CHANGED
@@ -5,13 +5,18 @@
5
* Description: Modula is one of the best & most creative WordPress gallery plugins. Use it to create a great grid or
6
* masonry image gallery.
7
* Author: Macho Themes
8
- * Version: 1.3.2
9
* Author URI: https://www.machothemes.com/
10
*/
11
12
define( 'MODULA_PLUGIN_DIR_PATH', plugin_dir_path( __FILE__ ) );
13
define( 'MODULA_PLUGIN_DIR_URL', plugin_dir_url( __FILE__ ) );
14
15
function modula_lite_create_db_tables() {
16
include_once( WP_PLUGIN_DIR . '/modula-best-grid-gallery/lib/install-db.php' );
17
modula_lite_install_db();
@@ -23,7 +28,7 @@ if ( ! class_exists( "ModulaLite" ) ) {
23
private $loadedData;
24
private $fields = array();
25
26
- private $version = "1.3.2";
27
28
private $defaultValues = array(
29
'width' => 100,
@@ -109,6 +114,9 @@ if ( ! class_exists( "ModulaLite" ) ) {
109
add_filter( 'plugin_row_meta', array( $this, 'register_links' ), 10, 2 );
110
add_filter( 'admin_footer_text', array( $this, 'admin_footer' ), 1, 2 );
111
112
113
// Set fields
114
$this->fields[ __( 'General', 'modula-gallery' ) ] = array(
@@ -454,6 +462,17 @@ if ( ! class_exists( "ModulaLite" ) ) {
454
455
}
456
457
//Define textdomain
458
public function create_textdomain() {
459
$plugin_dir = basename( dirname( __FILE__ ) );
@@ -875,6 +894,10 @@ if ( ! class_exists( "ModulaLite" ) ) {
875
$this,
876
'upgrade',
877
) );
878
879
880
add_action( 'load-' . $overview, array( $this, 'gallery_admin_init' ) );
@@ -897,6 +920,10 @@ if ( ! class_exists( "ModulaLite" ) ) {
897
include( "admin/add-gallery.php" );
898
}
899
900
public function fix() {
901
global $wpdb;
902
include( "admin/fix.php" );
@@ -1252,8 +1279,9 @@ class ModulaLiteTools {
1252
$metadata = wp_get_attachment_metadata( $img->imageId );
1253
1254
if ( $img->imageId > 0 ) {
1255
- $wpdata = get_post( $img->imageId );
1256
- $baseurl = str_replace( basename( $wpdata->guid ), "", $wpdata->guid );
1257
$res_name = ModulaLiteTools::resize_image( $img->imageId, $size );
1258
1259
if ( ! ( array_key_exists( "image_meta", $metadata ) && array_key_exists( "resized_images", $metadata["image_meta"] ) && in_array( $size . "x" . $size, $metadata["image_meta"]["resized_images"] ) ) ) {
@@ -1278,4 +1306,127 @@ if ( class_exists( "ModulaLite" ) ) {
1278
global $ob_ModulaLite;
1279
$ob_ModulaLite = new ModulaLite();
1280
}
1281
- ?>
5
* Description: Modula is one of the best & most creative WordPress gallery plugins. Use it to create a great grid or
6
* masonry image gallery.
7
* Author: Macho Themes
8
+ * Version: 1.3.3
9
* Author URI: https://www.machothemes.com/
10
*/
11
12
define( 'MODULA_PLUGIN_DIR_PATH', plugin_dir_path( __FILE__ ) );
13
define( 'MODULA_PLUGIN_DIR_URL', plugin_dir_url( __FILE__ ) );
14
15
+ define( 'MODULA_VERSION', '1.3.3' );
16
+ define( 'MODULA_PLUGIN_BASE', plugin_basename( __FILE__ ) );
17
+ define( 'MODULA_PREVIOUS_PLUGIN_VERSION', '1.3.2' );
18
+ define( 'MODULA_FILE_', __FILE__ );
19
+
20
function modula_lite_create_db_tables() {
21
include_once( WP_PLUGIN_DIR . '/modula-best-grid-gallery/lib/install-db.php' );
22
modula_lite_install_db();
28
private $loadedData;
29
private $fields = array();
30
31
+ private $version = "1.3.3";
32
33
private $defaultValues = array(
34
'width' => 100,
114
add_filter( 'plugin_row_meta', array( $this, 'register_links' ), 10, 2 );
115
add_filter( 'admin_footer_text', array( $this, 'admin_footer' ), 1, 2 );
116
117
+ // Enqueue Fancybox for Modula 2.0 Page
118
+ add_action( 'admin_enqueue_scripts', array( $this, 'modula_beta_scripts' ) );
119
+
120
121
// Set fields
122
$this->fields[ __( 'General', 'modula-gallery' ) ] = array(
462
463
}
464
465
+ public function modula_beta_scripts( $hook ) {
466
+
467
+ if ( 'modula_page_modula-lite-gallery-v2' != $hook ) {
468
+ return;
469
+ }
470
+
471
+ wp_enqueue_script( 'modula-fancybox', plugins_url() . '/modula-best-grid-gallery/admin/fancybox/jquery.fancybox.min.js', array( 'jquery' ) );
472
+ wp_enqueue_style( 'modula-fancybox', plugins_url() . '/modula-best-grid-gallery/admin/fancybox/jquery.fancybox.min.css' );
473
+
474
+ }
475
+
476
//Define textdomain
477
public function create_textdomain() {
478
$plugin_dir = basename( dirname( __FILE__ ) );
894
$this,
895
'upgrade',
896
) );
897
+ $v2 = add_submenu_page( 'modula-lite-admin', __( 'Try Modula 2.0', 'modula-gallery' ), __( 'Try Modula 2.0', 'modula-gallery' ), 'edit_posts', 'modula-lite-gallery-v2', array(
898
+ $this,
899
+ 'new_modula',
900
+ ) );
901
902
903
add_action( 'load-' . $overview, array( $this, 'gallery_admin_init' ) );
920
include( "admin/add-gallery.php" );
921
}
922
923
+ public function new_modula() {
924
+ include( "admin/modula-v2.php" );
925
+ }
926
+
927
public function fix() {
928
global $wpdb;
929
include( "admin/fix.php" );
1279
$metadata = wp_get_attachment_metadata( $img->imageId );
1280
1281
if ( $img->imageId > 0 ) {
1282
+ $uploads = wp_get_upload_dir();
1283
+ $file = get_post_meta( $img->imageId, '_wp_attached_file', true );
1284
+ $baseurl = $uploads['baseurl'] . '/' . str_replace( basename( $file ), "", $file );
1285
$res_name = ModulaLiteTools::resize_image( $img->imageId, $size );
1286
1287
if ( ! ( array_key_exists( "image_meta", $metadata ) && array_key_exists( "resized_images", $metadata["image_meta"] ) && in_array( $size . "x" . $size, $metadata["image_meta"]["resized_images"] ) ) ) {
1306
global $ob_ModulaLite;
1307
$ob_ModulaLite = new ModulaLite();
1308
}
1309
+
1310
+ function modula_lite_check_for_review() {
1311
+
1312
+ if ( ! is_admin() ) {
1313
+ return;
1314
+ }
1315
+
1316
+ require_once MODULA_PLUGIN_DIR_PATH . 'lib/class-modula-review.php';
1317
+
1318
+ Modula_Review::get_instance( array(
1319
+ 'slug' => 'modula-best-grid-gallery',
1320
+ 'messages' => array(
1321
+ 'notice' => __( "Hey, I noticed you have created %s galleries - that's awesome! Could you please do me a BIG favor and give it a 5-star rating on WordPress? Just to help us spread the word and boost our motivation.<br><br><strong>~ Cristian Raiber</strong>,<br><strong>CEO Modula</strong>.", 'modula-gallery' ),
1322
+ 'rate' => __( 'Ok, you deserve it', 'modula-gallery' ),
1323
+ 'rated' => __( 'I already did', 'modula-gallery' ),
1324
+ 'no_rate' => __( 'No, not good enough', 'modula-gallery' ),
1325
+ ),
1326
+ ) );
1327
+
1328
+ }
1329
+ modula_lite_check_for_review();
1330
+
1331
+ // Add compatibility with AO
1332
+ add_filter('autoptimize_filter_js_exclude','modula_lite_override_jsexclude',90,1);
1333
+ function modula_lite_override_jsexclude( $exclude ) {
1334
+ if ( is_array( $exclude ) ) {
1335
+ $exclude[] = 'jquery.modula.js';
1336
+ }else{
1337
+ $exclude .= ", jquery.modula.js";
1338
+ }
1339
+ return $exclude;
1340
+ }
1341
+
1342
+ // Beta Testing.
1343
+ add_action( 'admin_notices', 'modula_beta_notices' );
1344
+ add_action( 'wp_ajax_modula_beta_testing', 'modula_beta_ajax' );
1345
+ add_action( 'admin_print_footer_scripts', 'modula_beta_ajax_script', 99 );
1346
+
1347
+ function modula_beta_notices() {
1348
+
1349
+ $options = get_option( 'modula-checks', array() );
1350
+
1351
+ if ( isset( $options['beta-testing'] ) ) {
1352
+ return;
1353
+ }
1354
+ ?>
1355
+ <style type="text/css">
1356
+ #modula-beta-testing-info {
1357
+ display: inline-block;
1358
+ margin-left: 15px;
1359
+ }
1360
+ </style>
1361
+ <div id="modula-beta-testing" class="notice notice-success is-dismissible">
1362
+ <h3>Try Modula 2.0 !!</h3>
1363
+ <p>We’ve been working on an awesome update to Modula over the last few months and can’t wait to release it to the public. But, before that can happen, we need the help of amazing users in the WordPress community (just like you) to improve Modula 2.0’s first beta.</p>
1364
+ <p class="actions">
1365
+ <a id="modula-beta-testing-dwn" href="https://machothemes.com/downloads/modula-2.0.0.zip" target="_blank" class="button button-primary modula-beta-testing-button"><?php echo __( 'Download Modula 2.0 Beta', 'modula-gallery' ); ?></a>
1366
+ <a id="modula-beta-testing-info" href="<?php echo admin_url( 'admin.php?page=modula-lite-gallery-v2' ) ?>" target="_blank" class="modula-beta-testing-button"><?php echo __( 'Find more', 'modula-gallery' ); ?></a>
1367
+ </p>
1368
+ </div>
1369
+ <?php
1370
+ }
1371
+
1372
+ function modula_beta_ajax() {
1373
+
1374
+ check_ajax_referer( 'modula-beta-testing', 'security' );
1375
+
1376
+ $options = get_option( 'modula-checks', array() );
1377
+ $options['beta-testing'] = 1;
1378
+
1379
+ update_option( 'modula-checks', $options );
1380
+
1381
+ wp_die( 'ok' );
1382
+
1383
+ }
1384
+
1385
+ function modula_beta_ajax_script() {
1386
+
1387
+ $ajax_nonce = wp_create_nonce( "modula-beta-testing" );
1388
+
1389
+ ?>
1390
+
1391
+ <script type="text/javascript">
1392
+ jQuery( document ).ready( function( $ ){
1393
+
1394
+ $( '.modula-beta-testing-button' ).click( function( evt ){
1395
+ var href = $(this).attr('href'),
1396
+ id = $(this).attr('id');
1397
+
1398
+ var data = {
1399
+ action: 'modula_beta_testing',
1400
+ security: '<?php echo $ajax_nonce; ?>',
1401
+ };
1402
+
1403
+ $.post( '<?php echo admin_url( 'admin-ajax.php' ) ?>', data, function( response ) {
1404
+ $( '#modula-beta-testing' ).slideUp( 'fast', function() {
1405
+ $( this ).remove();
1406
+ } );
1407
+ });
1408
+
1409
+ } );
1410
+
1411
+ });
1412
+ </script>
1413
+
1414
+ <?php
1415
+ }
1416
+
1417
+ /* RollBack functionality */
1418
+ require MODULA_PLUGIN_DIR_PATH . '/lib/class-modula-plugin-rollback.php';
1419
+ require MODULA_PLUGIN_DIR_PATH . '/lib/class-modula-rollback.php';
1420
+
1421
+ /**
1422
+ * Insert Rollback link for plugin in plugins page
1423
+ */
1424
+
1425
+ function modula_lite_rollback_link( $links ) {
1426
+
1427
+ $links['rollback'] = sprintf( '<a href="%s" class="modula-rollback-button">%s</a>', wp_nonce_url( admin_url( 'admin-post.php?action=modula_rollback' ), 'modula_rollback' ), __( 'Rollback version', 'modula-gallery' ) );
1428
+
1429
+ return $links;
1430
+ }
1431
+
1432
+ add_action( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'modula_lite_rollback_link' );
README.txt CHANGED
@@ -3,7 +3,7 @@ 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: 3.8
5
Tested up to: 4.9
6
- Stable tag: 1.3.2
7
License: GPLv3 or later
8
License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
@@ -13,6 +13,14 @@ Photo Gallery by Modula - an advanced solution for Photo Gallery users. Create b
13
14
Modula Image Gallery is a creative and original WordPress plugin perfect for creating custom, unique, and responsive image galleries. Modula is available in both a Lite/free version and a premium version and it is currently the easiest and fastest photo gallery plugin for WordPress. Directly from its dashboard you are able to build stunning galleries in a few seconds, unlike many other WordPress plugins.
15
16
= See a 60s video of Modula in action =
17
18
https://www.youtube.com/watch?v=tq8yUYxgtnA
@@ -135,6 +143,14 @@ If you get blurry and pixellated images then you need to raise the "Minimum imag
135
136
The PRO license bundles 6 different lightboxes. However you can use any other lightbox you want also with the Lite license. If you have installed a lightbox plugin then you just need to select "Direct link to image" in the "Lightbox" settings.
137
138
= How can I get support? =
139
140
Free support is included only with a PRO license: [Buy Modula PRO](https://wp-modula.com/#buy "Buy Modula PRO")
@@ -157,6 +173,10 @@ Free support is included only with a PRO license: [Buy Modula PRO](https://wp-mo
157
158
== Changelog ==
159
160
= 1.3.2 =
161
* Validated HTML markup
162
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: 3.8
5
Tested up to: 4.9
6
+ Stable tag: 1.3.3
7
License: GPLv3 or later
8
License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
13
14
Modula Image Gallery is a creative and original WordPress plugin perfect for creating custom, unique, and responsive image galleries. Modula is available in both a Lite/free version and a premium version and it is currently the easiest and fastest photo gallery plugin for WordPress. Directly from its dashboard you are able to build stunning galleries in a few seconds, unlike many other WordPress plugins.
15
16
+ = Try Modula 2.0 Beta =
17
+
18
+ We’ve been working on an awesome update to Modula over the last few months and can’t wait to release it to the public. But, before that can happen, we need the help of amazing users in the WordPress community (just like you) to improve Modula 2.0’s first beta. You can download our new plugin from <a href="https://machothemes.com/downloads/modula-2.0.0.zip" target="_blank">here</a>.
19
+
20
+ Below is a video that showcases the new features of Modula 2.0.
21
+
22
+ https://www.youtube.com/watch?v=NxrTXQNExh4
23
+
24
= See a 60s video of Modula in action =
25
26
https://www.youtube.com/watch?v=tq8yUYxgtnA
143
144
The PRO license bundles 6 different lightboxes. However you can use any other lightbox you want also with the Lite license. If you have installed a lightbox plugin then you just need to select "Direct link to image" in the "Lightbox" settings.
145
146
+ = How can I change the lightbox's background? =
147
+
148
+ You can change the lightbox popup background color using the following code:
149
+
150
+ `body .lg-backdrop {
151
+ background-color: white;
152
+ }`
153
+
154
= How can I get support? =
155
156
Free support is included only with a PRO license: [Buy Modula PRO](https://wp-modula.com/#buy "Buy Modula PRO")
173
174
== Changelog ==
175
176
+ = 1.3.3 =
177
+ * Added notification for Modula 2.0
178
+ * Added Compatibility with AO
179
+
180
= 1.3.2 =
181
* Validated HTML markup
182
admin/css/materialdesignicons.css CHANGED
File without changes
admin/fancybox/jquery.fancybox.css ADDED
@@ -0,0 +1,771 @@
1
+ body.compensate-for-scrollbar {
2
+ overflow: hidden; }
3
+
4
+ .fancybox-active {
5
+ height: auto; }
6
+
7
+ .fancybox-is-hidden {
8
+ left: -9999px;
9
+ margin: 0;
10
+ position: absolute !important;
11
+ top: -9999px;
12
+ visibility: hidden; }
13
+
14
+ .fancybox-container {
15
+ -webkit-backface-visibility: hidden;
16
+ height: 100%;
17
+ left: 0;
18
+ outline: none;
19
+ position: fixed;
20
+ -webkit-tap-highlight-color: transparent;
21
+ top: 0;
22
+ -ms-touch-action: manipulation;
23
+ touch-action: manipulation;
24
+ -webkit-transform: translateZ(0);
25
+ transform: translateZ(0);
26
+ width: 100%;
27
+ z-index: 99992; }
28
+
29
+ .fancybox-container * {
30
+ box-sizing: border-box; }
31
+
32
+ .fancybox-outer,
33
+ .fancybox-inner,
34
+ .fancybox-bg,
35
+ .fancybox-stage {
36
+ bottom: 0;
37
+ left: 0;
38
+ position: absolute;
39
+ right: 0;
40
+ top: 0; }
41
+
42
+ .fancybox-outer {
43
+ -webkit-overflow-scrolling: touch;
44
+ overflow-y: auto; }
45
+
46
+ .fancybox-bg {
47
+ background: #1e1e1e;
48
+ opacity: 0;
49
+ transition-duration: inherit;
50
+ transition-property: opacity;
51
+ transition-timing-function: cubic-bezier(0.47, 0, 0.74, 0.71); }
52
+
53
+ .fancybox-is-open .fancybox-bg {
54
+ opacity: .9;
55
+ transition-timing-function: cubic-bezier(0.22, 0.61, 0.36, 1); }
56
+
57
+ .fancybox-infobar,
58
+ .fancybox-toolbar,
59
+ .fancybox-caption,
60
+ .fancybox-navigation .fancybox-button {
61
+ direction: ltr;
62
+ opacity: 0;
63
+ position: absolute;
64
+ transition: opacity .25s ease, visibility 0s ease .25s;
65
+ visibility: hidden;
66
+ z-index: 99997; }
67
+
68
+ .fancybox-show-infobar .fancybox-infobar,
69
+ .fancybox-show-toolbar .fancybox-toolbar,
70
+ .fancybox-show-caption .fancybox-caption,
71
+ .fancybox-show-nav .fancybox-navigation .fancybox-button {
72
+ opacity: 1;
73
+ transition: opacity .25s ease 0s, visibility 0s ease 0s;
74
+ visibility: visible; }
75
+
76
+ .fancybox-infobar {
77
+ color: #ccc;
78
+ font-size: 13px;
79
+ -webkit-font-smoothing: subpixel-antialiased;
80
+ height: 44px;
81
+ left: 0;
82
+ line-height: 44px;
83
+ min-width: 44px;
84
+ mix-blend-mode: difference;
85
+ padding: 0 10px;
86
+ pointer-events: none;
87
+ top: 0;
88
+ -webkit-touch-callout: none;
89
+ -webkit-user-select: none;
90
+ -moz-user-select: none;
91
+ -ms-user-select: none;
92
+ user-select: none; }
93
+
94
+ .fancybox-toolbar {
95
+ right: 0;
96
+ top: 0; }
97
+
98
+ .fancybox-stage {
99
+ direction: ltr;
100
+ overflow: visible;
101
+ -webkit-transform: translateZ(0);
102
+ transform: translateZ(0);
103
+ z-index: 99994; }
104
+
105
+ .fancybox-is-open .fancybox-stage {
106
+ overflow: hidden; }
107
+
108
+ .fancybox-slide {
109
+ -webkit-backface-visibility: hidden;
110
+ /* Using without prefix would break IE11 */
111
+ display: none;
112
+ height: 100%;
113
+ left: 0;
114
+ outline: none;
115
+ overflow: auto;
116
+ -webkit-overflow-scrolling: touch;
117
+ padding: 44px;
118
+ position: absolute;
119
+ text-align: center;
120
+ top: 0;
121
+ transition-property: opacity, -webkit-transform;
122
+ transition-property: transform, opacity;
123
+ transition-property: transform, opacity, -webkit-transform;
124
+ white-space: normal;
125
+ width: 100%;
126
+ z-index: 99994; }
127
+
128
+ .fancybox-slide::before {
129
+ content: '';
130
+ display: inline-block;
131
+ font-size: 0;
132
+ height: 100%;
133
+ vertical-align: middle;
134
+ width: 0; }
135
+
136
+ .fancybox-is-sliding .fancybox-slide,
137
+ .fancybox-slide--previous,
138
+ .fancybox-slide--current,
139
+ .fancybox-slide--next {
140
+ display: block; }
141
+
142
+ .fancybox-slide--image {
143
+ overflow: hidden;
144
+ padding: 44px 0; }
145
+
146
+ .fancybox-slide--image::before {
147
+ display: none; }
148
+
149
+ .fancybox-slide--html {
150
+ padding: 6px; }
151
+
152
+ .fancybox-content {
153
+ background: #fff;
154
+ display: inline-block;
155
+ margin: 0;
156
+ max-width: 100%;
157
+ overflow: auto;
158
+ -webkit-overflow-scrolling: touch;
159
+ padding: 44px;
160
+ position: relative;
161
+ text-align: left;
162
+ vertical-align: middle; }
163
+
164
+ .fancybox-slide--image .fancybox-content {
165
+ -webkit-animation-timing-function: cubic-bezier(0.5, 0, 0.14, 1);
166
+ animation-timing-function: cubic-bezier(0.5, 0, 0.14, 1);
167
+ -webkit-backface-visibility: hidden;
168
+ background: transparent;
169
+ background-repeat: no-repeat;
170
+ background-size: 100% 100%;
171
+ left: 0;
172
+ max-width: none;
173
+ overflow: visible;
174
+ padding: 0;
175
+ position: absolute;
176
+ top: 0;
177
+ -webkit-transform-origin: top left;
178
+ -ms-transform-origin: top left;
179
+ transform-origin: top left;
180
+ transition-property: opacity, -webkit-transform;
181
+ transition-property: transform, opacity;
182
+ transition-property: transform, opacity, -webkit-transform;
183
+ -webkit-user-select: none;
184
+ -moz-user-select: none;
185
+ -ms-user-select: none;
186
+ user-select: none;
187
+ z-index: 99995; }
188
+
189
+ .fancybox-can-zoomOut .fancybox-content {
190
+ cursor: -webkit-zoom-out;
191
+ cursor: zoom-out; }
192
+
193
+ .fancybox-can-zoomIn .fancybox-content {
194
+ cursor: -webkit-zoom-in;
195
+ cursor: zoom-in; }
196
+
197
+ .fancybox-can-swipe .fancybox-content,
198
+ .fancybox-can-pan .fancybox-content {
199
+ cursor: -webkit-grab;
200
+ cursor: grab; }
201
+
202
+ .fancybox-is-grabbing .fancybox-content {
203
+ cursor: -webkit-grabbing;
204
+ cursor: grabbing; }
205
+
206
+ .fancybox-container [data-selectable='true'] {
207
+ cursor: text; }
208
+
209
+ .fancybox-image,
210
+ .fancybox-spaceball {
211
+ background: transparent;
212
+ border: 0;
213
+ height: 100%;
214
+ left: 0;
215
+ margin: 0;
216
+ max-height: none;
217
+ max-width: none;
218
+ padding: 0;
219
+ position: absolute;
220
+ top: 0;
221
+ -webkit-user-select: none;
222
+ -moz-user-select: none;
223
+ -ms-user-select: none;
224
+ user-select: none;
225
+ width: 100%; }
226
+
227
+ .fancybox-spaceball {
228
+ z-index: 1; }
229
+
230
+ .fancybox-slide--video .fancybox-content,
231
+ .fancybox-slide--map .fancybox-content,
232
+ .fancybox-slide--pdf .fancybox-content,
233
+ .fancybox-slide--iframe .fancybox-content {
234
+ height: 100%;
235
+ overflow: visible;
236
+ padding: 0;
237
+ width: 100%; }
238
+
239
+ .fancybox-slide--video .fancybox-content {
240
+ background: #000; }
241
+
242
+ .fancybox-slide--map .fancybox-content {
243
+ background: #e5e3df; }
244
+
245
+ .fancybox-slide--iframe .fancybox-content {
246
+ background: #fff; }
247
+
248
+ .fancybox-video,
249
+ .fancybox-iframe {
250
+ background: transparent;
251
+ border: 0;
252
+ display: block;
253
+ height: 100%;
254
+ margin: 0;
255
+ overflow: hidden;
256
+ padding: 0;
257
+ width: 100%; }
258
+
259
+ /* Fix iOS */
260
+ .fancybox-iframe {
261
+ left: 0;
262
+ position: absolute;
263
+ top: 0; }
264
+
265
+ .fancybox-error {
266
+ background: #fff;
267
+ cursor: default;
268
+ max-width: 400px;
269
+ padding: 40px;
270
+ width: 100%; }
271
+
272
+ .fancybox-error p {
273
+ color: #444;
274
+ font-size: 16px;
275
+ line-height: 20px;
276
+ margin: 0;
277
+ padding: 0; }
278
+
279
+ /* Buttons */
280
+ .fancybox-button {
281
+ background: rgba(30, 30, 30, 0.6);
282
+ border: 0;
283
+ border-radius: 0;
284
+ box-shadow: none;
285
+ cursor: pointer;
286
+ display: inline-block;
287
+ height: 44px;
288
+ margin: 0;
289
+ padding: 10px;
290
+ position: relative;
291
+ transition: color .2s;
292
+ vertical-align: top;
293
+ visibility: inherit;
294
+ width: 44px; }
295
+
296
+ .fancybox-button,
297
+ .fancybox-button:visited,
298
+ .fancybox-button:link {
299
+ color: #ccc; }
300
+
301
+ .fancybox-button:hover {
302
+ color: #fff; }
303
+
304
+ .fancybox-button:focus {
305
+ outline: none; }
306
+
307
+ .fancybox-button.fancybox-focus {
308
+ outline: 1px dotted; }
309
+
310
+ .fancybox-button[disabled],
311
+ .fancybox-button[disabled]:hover {
312
+ color: #888;
313
+ cursor: default;
314
+ outline: none; }
315
+
316
+ /* Fix IE11 */
317
+ .fancybox-button div {
318
+ height: 100%; }
319
+
320
+ .fancybox-button svg {
321
+ display: block;
322
+ height: 100%;
323
+ overflow: visible;
324
+ position: relative;
325
+ width: 100%; }
326
+
327
+ .fancybox-button svg path {
328
+ fill: currentColor;
329
+ stroke-width: 0; }
330
+
331
+ .fancybox-button--play svg:nth-child(2),
332
+ .fancybox-button--fsenter svg:nth-child(2) {
333
+ display: none; }
334
+
335
+ .fancybox-button--pause svg:nth-child(1),
336
+ .fancybox-button--fsexit svg:nth-child(1) {
337
+ display: none; }
338
+
339
+ .fancybox-progress {
340
+ background: #ff5268;
341
+ height: 2px;
342
+ left: 0;
343
+ position: absolute;
344
+ right: 0;
345
+ top: 0;
346
+ -webkit-transform: scaleX(0);
347
+ -ms-transform: scaleX(0);
348
+ transform: scaleX(0);
349
+ -webkit-transform-origin: 0;
350
+ -ms-transform-origin: 0;
351
+ transform-origin: 0;
352
+ transition-property: -webkit-transform;
353
+ transition-property: transform;
354
+ transition-property: transform, -webkit-transform;
355
+ transition-timing-function: linear;
356
+ z-index: 99998; }
357
+
358
+ /* Close button on the top right corner of html content */
359
+ .fancybox-close-small {
360
+ background: transparent;
361
+ border: 0;
362
+ border-radius: 0;
363
+ color: #ccc;
364
+ cursor: pointer;
365
+ opacity: .8;
366
+ padding: 8px;
367
+ position: absolute;
368
+ right: -12px;
369
+ top: -44px;
370
+ z-index: 401; }
371
+
372
+ .fancybox-close-small:hover {
373
+ color: #fff;
374
+ opacity: 1; }
375
+
376
+ .fancybox-slide--html .fancybox-close-small {
377
+ color: currentColor;
378
+ padding: 10px;
379
+ right: 0;
380
+ top: 0; }
381
+
382
+ .fancybox-slide--image.fancybox-is-scaling .fancybox-content {
383
+ overflow: hidden; }
384
+
385
+ .fancybox-is-scaling .fancybox-close-small,
386
+ .fancybox-is-zoomable.fancybox-can-pan .fancybox-close-small {
387
+ display: none; }
388
+
389
+ /* Navigation arrows */
390
+ .fancybox-navigation .fancybox-button {
391
+ background-clip: content-box;
392
+ height: 100px;
393
+ opacity: 0;
394
+ position: absolute;
395
+ top: calc(50% - 50px);
396
+ width: 70px; }
397
+
398
+ .fancybox-navigation .fancybox-button div {
399
+ padding: 7px; }
400
+
401
+ .fancybox-navigation .fancybox-button--arrow_left {
402
+ left: 0;
403
+ padding: 31px 26px 31px 6px; }
404
+
405
+ .fancybox-navigation .fancybox-button--arrow_right {
406
+ padding: 31px 6px 31px 26px;
407
+ right: 0; }
408
+
409
+ /* Caption */
410
+ .fancybox-caption {
411
+ bottom: 0;
412
+ color: #eee;
413
+ font-size: 14px;
414
+ font-weight: 400;
415
+ left: 0;
416
+ line-height: 1.5;
417
+ padding: 25px 44px 25px 44px;
418
+ right: 0;
419
+ text-align: center;
420
+ z-index: 99996; }
421
+
422
+ .fancybox-caption::before {
423
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAD6CAQAAADKSeXYAAAAYklEQVQoz42RwQ3AMAgDjfcfup8WoRykfBAK5mQHKSz5rbXJPis1hjiV3CIqgG0hLZPkVkA4p4x5oR1bVeDrdCLrW2Q0D5bcwY3TGMHbdw3mPRuOtaspYP1w//G1OIcW148H0DMCqI/3mMMAAAAASUVORK5CYII=);
424
+ background-repeat: repeat-x;
425
+ background-size: contain;
426
+ bottom: 0;
427
+ content: '';
428
+ display: block;
429
+ left: 0;
430
+ pointer-events: none;
431
+ position: absolute;
432
+ right: 0;
433
+ top: -44px;
434
+ z-index: -1; }
435
+
436
+ .fancybox-caption a,
437
+ .fancybox-caption a:link,
438
+ .fancybox-caption a:visited {
439
+ color: #ccc;
440
+ text-decoration: none; }
441
+
442
+ .fancybox-caption a:hover {
443
+ color: #fff;
444
+ text-decoration: underline; }
445
+
446
+ /* Loading indicator */
447
+ .fancybox-loading {
448
+ -webkit-animation: fancybox-rotate 1s linear infinite;
449
+ animation: fancybox-rotate 1s linear infinite;
450
+ background: transparent;
451
+ border: 4px solid #888;
452
+ border-bottom-color: #fff;
453
+ border-radius: 50%;
454
+ height: 50px;
455
+ left: 50%;
456
+ margin: -25px 0 0 -25px;
457
+ opacity: .7;
458
+ padding: 0;
459
+ position: absolute;
460
+ top: 50%;
461
+ width: 50px;
462
+ z-index: 99999; }
463
+
464
+ @-webkit-keyframes fancybox-rotate {
465
+ 100% {
466
+ -webkit-transform: rotate(360deg);
467
+ transform: rotate(360deg); } }
468
+
469
+ @keyframes fancybox-rotate {
470
+ 100% {
471
+ -webkit-transform: rotate(360deg);
472
+ transform: rotate(360deg); } }
473
+
474
+ /* Transition effects */
475
+ .fancybox-animated {
476
+ transition-timing-function: cubic-bezier(0, 0, 0.25, 1); }
477
+
478
+ /* transitionEffect: slide */
479
+ .fancybox-fx-slide.fancybox-slide--previous {
480
+ opacity: 0;
481
+ -webkit-transform: translate3d(-100%, 0, 0);
482
+ transform: translate3d(-100%, 0, 0); }
483
+
484
+ .fancybox-fx-slide.fancybox-slide--next {
485
+ opacity: 0;
486
+ -webkit-transform: translate3d(100%, 0, 0);
487
+ transform: translate3d(100%, 0, 0); }
488
+
489
+ .fancybox-fx-slide.fancybox-slide--current {
490
+ opacity: 1;
491
+ -webkit-transform: translate3d(0, 0, 0);
492
+ transform: translate3d(0, 0, 0); }
493
+
494
+ /* transitionEffect: fade */
495
+ .fancybox-fx-fade.fancybox-slide--previous,
496
+ .fancybox-fx-fade.fancybox-slide--next {
497
+ opacity: 0;
498
+ transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); }
499
+
500
+ .fancybox-fx-fade.fancybox-slide--current {
501
+ opacity: 1; }
502
+
503
+ /* transitionEffect: zoom-in-out */
504
+ .fancybox-fx-zoom-in-out.fancybox-slide--previous {
505
+ opacity: 0;
506
+ -webkit-transform: scale3d(1.5, 1.5, 1.5);
507
+ transform: scale3d(1.5, 1.5, 1.5); }
508
+
509
+ .fancybox-fx-zoom-in-out.fancybox-slide--next {
510
+ opacity: 0;
511
+ -webkit-transform: scale3d(0.5, 0.5, 0.5);
512
+ transform: scale3d(0.5, 0.5, 0.5); }
513
+
514
+ .fancybox-fx-zoom-in-out.fancybox-slide--current {
515
+ opacity: 1;
516
+ -webkit-transform: scale3d(1, 1, 1);
517
+ transform: scale3d(1, 1, 1); }
518
+
519
+ /* transitionEffect: rotate */
520
+ .fancybox-fx-rotate.fancybox-slide--previous {
521
+ opacity: 0;
522
+ -webkit-transform: rotate(-360deg);
523
+ -ms-transform: rotate(-360deg);
524
+ transform: rotate(-360deg); }
525
+
526
+ .fancybox-fx-rotate.fancybox-slide--next {
527
+ opacity: 0;
528
+ -webkit-transform: rotate(360deg);
529
+ -ms-transform: rotate(360deg);
530
+ transform: rotate(360deg); }
531
+
532
+ .fancybox-fx-rotate.fancybox-slide--current {
533
+ opacity: 1;
534
+ -webkit-transform: rotate(0deg);
535
+ -ms-transform: rotate(0deg);
536
+ transform: rotate(0deg); }
537
+
538
+ /* transitionEffect: circular */
539
+ .fancybox-fx-circular.fancybox-slide--previous {
540
+ opacity: 0;
541
+ -webkit-transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0);
542
+ transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0); }
543
+
544
+ .fancybox-fx-circular.fancybox-slide--next {
545
+ opacity: 0;
546
+ -webkit-transform: scale3d(0, 0, 0) translate3d(100%, 0, 0);
547
+ transform: scale3d(0, 0, 0) translate3d(100%, 0, 0); }
548
+
549
+ .fancybox-fx-circular.fancybox-slide--current {
550
+ opacity: 1;
551
+ -webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
552
+ transform: scale3d(1, 1, 1) translate3d(0, 0, 0); }
553
+
554
+ /* transitionEffect: tube */
555
+ .fancybox-fx-tube.fancybox-slide--previous {
556
+ -webkit-transform: translate3d(-100%, 0, 0) scale(0.1) skew(-10deg);
557
+ transform: translate3d(-100%, 0, 0) scale(0.1) skew(-10deg); }
558
+
559
+ .fancybox-fx-tube.fancybox-slide--next {
560
+ -webkit-transform: translate3d(100%, 0, 0) scale(0.1) skew(10deg);
561
+ transform: translate3d(100%, 0, 0) scale(0.1) skew(10deg); }
562
+
563
+ .fancybox-fx-tube.fancybox-slide--current {
564
+ -webkit-transform: translate3d(0, 0, 0) scale(1);
565
+ transform: translate3d(0, 0, 0) scale(1); }
566
+
567
+ /* Styling for Small-Screen Devices */
568
+ @media all and (max-height: 576px) {
569
+ .fancybox-caption {
570
+ padding: 12px; }
571
+ .fancybox-slide {
572
+ padding-left: 6px;
573
+ padding-right: 6px; }
574
+ .fancybox-slide--image {
575
+ padding: 6px 0; }
576
+ .fancybox-close-small {
577
+ right: -6px; }
578
+ .fancybox-slide--image .fancybox-close-small {
579
+ background: #4e4e4e;
580
+ color: #f2f4f6;
581
+ height: 36px;
582
+ opacity: 1;
583
+ padding: 6px;
584
+ right: 0;
585
+ top: 0;
586
+ width: 36px; } }
587
+
588
+ /* Share */
589
+ .fancybox-share {
590
+ background: #f4f4f4;
591
+ border-radius: 3px;
592
+ max-width: 90%;
593
+ padding: 30px;
594
+ text-align: center; }
595
+
596
+ .fancybox-share h1 {
597
+ color: #222;
598
+ font-size: 35px;
599
+ font-weight: 700;
600
+ margin: 0 0 20px 0; }
601
+
602
+ .fancybox-share p {
603
+ margin: 0;
604
+ padding: 0; }
605
+
606
+ .fancybox-share__button {
607
+ border: 0;
608
+ border-radius: 3px;
609
+ display: inline-block;
610
+ font-size: 14px;
611
+ font-weight: 700;
612
+ line-height: 40px;
613
+ margin: 0 5px 10px 5px;
614
+ min-width: 130px;
615
+ padding: 0 15px;
616
+ text-decoration: none;
617
+ transition: all .2s;
618
+ -webkit-user-select: none;
619
+ -moz-user-select: none;
620
+ -ms-user-select: none;
621
+ user-select: none;
622
+ white-space: nowrap; }
623
+
624
+ .fancybox-share__button:visited,
625
+ .fancybox-share__button:link {
626
+ color: #fff; }
627
+
628
+ .fancybox-share__button:hover {
629
+ text-decoration: none; }
630
+
631
+ .fancybox-share__button--fb {
632
+ background: #3b5998; }
633
+
634
+ .fancybox-share__button--fb:hover {
635
+ background: #344e86; }
636
+
637
+ .fancybox-share__button--pt {
638
+ background: #bd081d; }
639
+
640
+ .fancybox-share__button--pt:hover {
641
+ background: #aa0719; }
642
+
643
+ .fancybox-share__button--tw {
644
+ background: #1da1f2; }
645
+
646
+ .fancybox-share__button--tw:hover {
647
+ background: #0d95e8; }
648
+
649
+ .fancybox-share__button svg {
650
+ height: 25px;
651
+ margin-right: 7px;
652
+ position: relative;
653
+ top: -1px;
654
+ vertical-align: middle;
655
+ width: 25px; }
656
+
657
+ .fancybox-share__button svg path {
658
+ fill: #fff; }
659
+
660
+ .fancybox-share__input {
661
+ background: transparent;
662
+ border: 0;
663
+ border-bottom: 1px solid #d7d7d7;
664
+ border-radius: 0;
665
+ color: #5d5b5b;
666
+ font-size: 14px;
667
+ margin: 10px 0 0 0;
668
+ outline: none;
669
+ padding: 10px 15px;
670
+ width: 100%; }
671
+
672
+ /* Thumbs */
673
+ .fancybox-thumbs {
674
+ background: #ddd;
675
+ bottom: 0;
676
+ display: none;
677
+ margin: 0;
678
+ -webkit-overflow-scrolling: touch;
679
+ -ms-overflow-style: -ms-autohiding-scrollbar;
680
+ padding: 2px 2px 4px 2px;
681
+ position: absolute;
682
+ right: 0;
683
+ -webkit-tap-highlight-color: transparent;
684
+ top: 0;
685
+ width: 212px;
686
+ z-index: 99995; }
687
+
688
+ .fancybox-thumbs-x {
689
+ overflow-x: auto;
690
+ overflow-y: hidden; }
691
+
692
+ .fancybox-show-thumbs .fancybox-thumbs {
693
+ display: block; }
694
+
695
+ .fancybox-show-thumbs .fancybox-inner {
696
+ right: 212px; }
697
+
698
+ .fancybox-thumbs__list {
699
+ font-size: 0;
700
+ height: 100%;
701
+ list-style: none;
702
+ margin: 0;
703
+ overflow-x: hidden;
704
+ overflow-y: auto;
705
+ padding: 0;
706
+ position: absolute;
707
+ position: relative;
708
+ white-space: nowrap;
709
+ width: 100%; }
710
+
711
+ .fancybox-thumbs-x .fancybox-thumbs__list {
712
+ overflow: hidden; }
713
+
714
+ .fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar {
715
+ width: 7px; }
716
+
717
+ .fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar-track {
718
+ background: #fff;
719
+ border-radius: 10px;
720
+ box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); }
721
+
722
+ .fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar-thumb {
723
+ background: #2a2a2a;
724
+ border-radius: 10px; }
725
+
726
+ .fancybox-thumbs__list a {
727
+ -webkit-backface-visibility: hidden;
728
+ backface-visibility: hidden;
729
+ background-color: rgba(0, 0, 0, 0.1);
730
+ background-position: center center;
731
+ background-repeat: no-repeat;
732
+ background-size: cover;
733
+ cursor: pointer;
734
+ float: left;
735
+ height: 75px;
736
+ margin: 2px;
737
+ max-height: calc(100% - 8px);
738
+ max-width: calc(50% - 4px);
739
+ outline: none;
740
+ overflow: hidden;
741
+ padding: 0;
742
+ position: relative;
743
+ -webkit-tap-highlight-color: transparent;
744
+ width: 100px; }
745
+
746
+ .fancybox-thumbs__list a::before {
747
+ border: 6px solid #ff5268;
748
+ bottom: 0;
749
+ content: '';
750
+ left: 0;
751
+ opacity: 0;
752
+ position: absolute;
753
+ right: 0;
754
+ top: 0;
755
+ transition: all 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94);
756
+ z-index: 99991; }
757
+
758
+ .fancybox-thumbs__list a:focus::before {
759
+ opacity: .5; }
760
+
761
+ .fancybox-thumbs__list a.fancybox-thumbs-active::before {
762
+ opacity: 1; }
763
+
764
+ /* Styling for Small-Screen Devices */
765
+ @media all and (max-width: 576px) {
766
+ .fancybox-thumbs {
767
+ width: 110px; }
768
+ .fancybox-show-thumbs .fancybox-inner {
769
+ right: 110px; }
770
+ .fancybox-thumbs__list a {
771
+ max-width: calc(100% - 10px); } }
admin/fancybox/jquery.fancybox.js ADDED
@@ -0,0 +1,5629 @@