Version Description
- 2015-03-27 =
What's in it for you?
- Improved Watermark with custom image selection (credits to Niko Strijbol)
- fix: Albums preview image now correctly shows images from inside the album, not the last uploaded ones.
VERY IMPORTANT: Read ON!
NextCellent Gallery provides backward compatibility for older NextGEN until version 1.9.13 .
this plugin will gracefully deactivate if detects NextGEN is working (any version) to avoid compatibility issues.
Please remember to READ THE FAQ!!! Issues for failing to read the FAQ will be IGNORED!!!
If you like it, please spread the word and rate it accordingly. I guess a lot of annoyed users can take advantage of NextCellent. Thank you!
WE APPRECIATE YOUR FEEDBACK. Be our voice and comment it!!!!
Download this release
Release Info
Developer | WPReady |
Plugin | NextCellent Gallery – NextGEN Legacy |
Version | 1.9.26 |
Comparing to | |
See all releases |
Code changes from version 1.9.25.3 to 1.9.26
- admin/admin.php +5 -5
- admin/album.php +10 -3
- admin/css/jquery.ui.css +1 -2
- admin/css/nggadmin.css +13 -0
- admin/install.php +3 -2
- admin/js/ngg.autocomplete.js +130 -71
- admin/settings.php +778 -622
- admin/style.php +25 -24
- admin/tinymce/window.php +3 -6
- admin/wpmu.php +72 -64
- css/framework-min.css +1 -1
- css/framework.css +14 -0
- nggallery.php +3 -2
- nggfunctions.php +16 -19
- readme.txt +6 -4
- xml/json.php +3 -2
admin/admin.php
CHANGED
@@ -257,7 +257,7 @@ class nggAdminPanel {
|
|
257 |
case "nggallery-options" :
|
258 |
include_once( dirname( __FILE__ ) . '/settings.php' ); // nggallery_admin_options
|
259 |
$ngg->option_page = new nggOptions ();
|
260 |
-
$ngg->option_page->
|
261 |
break;
|
262 |
case "nggallery-tags" :
|
263 |
include_once( dirname( __FILE__ ) . '/tags.php' ); // nggallery_admin_tags
|
@@ -335,8 +335,7 @@ class nggAdminPanel {
|
|
335 |
'no_gallery' => __( 'You didn\'t select a gallery!', 'nggallery' )
|
336 |
) );
|
337 |
wp_register_script( 'ngg-progressbar', NGGALLERY_URLPATH . 'admin/js/ngg.progressbar.js', array( 'jquery' ), '2.0.1' );
|
338 |
-
|
339 |
-
array('jquery-ui-core','jquery-ui-widget'), '1.8.15' );
|
340 |
|
341 |
switch ( $_GET['page'] ) {
|
342 |
case NGGFOLDER :
|
@@ -359,14 +358,14 @@ class nggAdminPanel {
|
|
359 |
wp_enqueue_script( 'shutter' );
|
360 |
break;
|
361 |
case "nggallery-manage-album" :
|
362 |
-
wp_enqueue_script( 'jquery-ui-autocomplete' );
|
363 |
wp_enqueue_script( 'jquery-ui-dialog' );
|
364 |
wp_enqueue_script( 'jquery-ui-sortable' );
|
365 |
-
wp_enqueue_script( 'ngg-autocomplete'
|
366 |
break;
|
367 |
case "nggallery-options" :
|
368 |
wp_enqueue_script( 'jquery-ui-tabs' );
|
369 |
wp_enqueue_script( 'wp-color-picker' );
|
|
|
370 |
break;
|
371 |
case "nggallery-add-gallery" :
|
372 |
wp_enqueue_script( 'jquery-ui-tabs' );
|
@@ -409,6 +408,7 @@ class nggAdminPanel {
|
|
409 |
wp_enqueue_style( 'nggtabs', NGGALLERY_URLPATH . 'admin/css/jquery.ui.tabs.css', false, '2.5.0', 'screen' );
|
410 |
wp_enqueue_style( 'nggadmin' );
|
411 |
wp_enqueue_style( 'wp-color-picker' );
|
|
|
412 |
break;
|
413 |
case "nggallery-manage-gallery" :
|
414 |
wp_enqueue_style( 'shutter', NGGALLERY_URLPATH . 'shutter/shutter-reloaded.css', false, '1.3.2', 'screen' );
|
257 |
case "nggallery-options" :
|
258 |
include_once( dirname( __FILE__ ) . '/settings.php' ); // nggallery_admin_options
|
259 |
$ngg->option_page = new nggOptions ();
|
260 |
+
$ngg->option_page->show_page();
|
261 |
break;
|
262 |
case "nggallery-tags" :
|
263 |
include_once( dirname( __FILE__ ) . '/tags.php' ); // nggallery_admin_tags
|
335 |
'no_gallery' => __( 'You didn\'t select a gallery!', 'nggallery' )
|
336 |
) );
|
337 |
wp_register_script( 'ngg-progressbar', NGGALLERY_URLPATH . 'admin/js/ngg.progressbar.js', array( 'jquery' ), '2.0.1' );
|
338 |
+
wp_register_script( 'ngg-autocomplete', NGGALLERY_URLPATH . 'admin/js/ngg.autocomplete.js', array( 'jquery-ui-autocomplete' ), '1.1' );
|
|
|
339 |
|
340 |
switch ( $_GET['page'] ) {
|
341 |
case NGGFOLDER :
|
358 |
wp_enqueue_script( 'shutter' );
|
359 |
break;
|
360 |
case "nggallery-manage-album" :
|
|
|
361 |
wp_enqueue_script( 'jquery-ui-dialog' );
|
362 |
wp_enqueue_script( 'jquery-ui-sortable' );
|
363 |
+
wp_enqueue_script( 'ngg-autocomplete' );
|
364 |
break;
|
365 |
case "nggallery-options" :
|
366 |
wp_enqueue_script( 'jquery-ui-tabs' );
|
367 |
wp_enqueue_script( 'wp-color-picker' );
|
368 |
+
wp_enqueue_script( 'ngg-autocomplete');
|
369 |
break;
|
370 |
case "nggallery-add-gallery" :
|
371 |
wp_enqueue_script( 'jquery-ui-tabs' );
|
408 |
wp_enqueue_style( 'nggtabs', NGGALLERY_URLPATH . 'admin/css/jquery.ui.tabs.css', false, '2.5.0', 'screen' );
|
409 |
wp_enqueue_style( 'nggadmin' );
|
410 |
wp_enqueue_style( 'wp-color-picker' );
|
411 |
+
wp_enqueue_style( 'ngg-jqueryui' );
|
412 |
break;
|
413 |
case "nggallery-manage-gallery" :
|
414 |
wp_enqueue_style( 'shutter', NGGALLERY_URLPATH . 'shutter/shutter-reloaded.css', false, '1.3.2', 'screen' );
|
admin/album.php
CHANGED
@@ -57,6 +57,9 @@ class nggManageAlbum {
|
|
57 |
return true;
|
58 |
}
|
59 |
|
|
|
|
|
|
|
60 |
function controller() {
|
61 |
global $nggdb;
|
62 |
|
@@ -73,7 +76,7 @@ class nggManageAlbum {
|
|
73 |
$this->galleries = $nggdb->find_all_galleries();
|
74 |
$this->num_albums = count( $this->albums );
|
75 |
$this->num_galleries = count( $this->galleries );
|
76 |
-
|
77 |
|
78 |
}
|
79 |
|
@@ -161,7 +164,11 @@ class nggManageAlbum {
|
|
161 |
nggGallery::show_message(__('Updated successfully','nggallery'));
|
162 |
}
|
163 |
|
164 |
-
|
|
|
|
|
|
|
|
|
165 |
|
166 |
global $wpdb, $nggdb;
|
167 |
|
@@ -176,7 +183,7 @@ jQuery(document).ready(
|
|
176 |
function()
|
177 |
{
|
178 |
jQuery("#previewpic").nggAutocomplete( {
|
179 |
-
type: 'image',domain: "<?php echo home_url('index.php', is_ssl() ? 'https' : 'http'); ?>",width: "95%"
|
180 |
});
|
181 |
|
182 |
jQuery('#selectContainer').sortable( {
|
57 |
return true;
|
58 |
}
|
59 |
|
60 |
+
/**
|
61 |
+
* FZSM: small tweak to pas current Album Id to output.
|
62 |
+
*/
|
63 |
function controller() {
|
64 |
global $nggdb;
|
65 |
|
76 |
$this->galleries = $nggdb->find_all_galleries();
|
77 |
$this->num_albums = count( $this->albums );
|
78 |
$this->num_galleries = count( $this->galleries );
|
79 |
+
$this->output($this->currentID);
|
80 |
|
81 |
}
|
82 |
|
164 |
nggGallery::show_message(__('Updated successfully','nggallery'));
|
165 |
}
|
166 |
|
167 |
+
/**
|
168 |
+
* FZSM: Added Album to autocomplete
|
169 |
+
* @param $currentAlbum
|
170 |
+
*/
|
171 |
+
function output($currentAlbum) {
|
172 |
|
173 |
global $wpdb, $nggdb;
|
174 |
|
183 |
function()
|
184 |
{
|
185 |
jQuery("#previewpic").nggAutocomplete( {
|
186 |
+
type: 'image',domain: "<?php echo home_url('index.php', is_ssl() ? 'https' : 'http'); ?>",width: "95%", term: <?php echo $currentAlbum; ?>
|
187 |
});
|
188 |
|
189 |
jQuery('#selectContainer').sortable( {
|
admin/css/jquery.ui.css
CHANGED
@@ -120,11 +120,10 @@
|
|
120 |
|
121 |
/* jQuery Autocomplete */
|
122 |
.ui-autocomplete { position: absolute; cursor: default; }
|
123 |
-
.ui-autocomplete-start { background: white url('images/dropdown.png') right center no-repeat; }
|
124 |
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
|
125 |
.ui-autocomplete-loading { background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat; }
|
126 |
/* this limit the height of the result list*/
|
127 |
-
.ui-autocomplete { max-height:
|
128 |
* html .ui-autocomplete { height: 90px; }
|
129 |
.ui-autocomplete .ui-state-hover, .ui-autocomplete .ui-widget-content .ui-state-hover { background: #1e90ff; color: #FFFFFF !important; }
|
130 |
.ui-autocomplete, .ui-autocomplete .ui-corner-all { -moz-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; }
|
120 |
|
121 |
/* jQuery Autocomplete */
|
122 |
.ui-autocomplete { position: absolute; cursor: default; }
|
|
|
123 |
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
|
124 |
.ui-autocomplete-loading { background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat; }
|
125 |
/* this limit the height of the result list*/
|
126 |
+
.ui-autocomplete { max-height: 50%; overflow-y: auto; }
|
127 |
* html .ui-autocomplete { height: 90px; }
|
128 |
.ui-autocomplete .ui-state-hover, .ui-autocomplete .ui-widget-content .ui-state-hover { background: #1e90ff; color: #FFFFFF !important; }
|
129 |
.ui-autocomplete, .ui-autocomplete .ui-corner-all { -moz-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; }
|
admin/css/nggadmin.css
CHANGED
@@ -93,6 +93,7 @@ a.switch-expert {
|
|
93 |
margin-right:8px;
|
94 |
background: white;
|
95 |
}
|
|
|
96 |
#wm-preview h3{
|
97 |
margin: 0;
|
98 |
}
|
@@ -102,6 +103,18 @@ a.switch-expert {
|
|
102 |
margin-left:40px;
|
103 |
}
|
104 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
.wm-table {
|
106 |
border-collapse:collapse;
|
107 |
margin-top:1em;
|
93 |
margin-right:8px;
|
94 |
background: white;
|
95 |
}
|
96 |
+
|
97 |
#wm-preview h3{
|
98 |
margin: 0;
|
99 |
}
|
103 |
margin-left:40px;
|
104 |
}
|
105 |
|
106 |
+
#wm-preview-container {
|
107 |
+
max-width: 100%;
|
108 |
+
margin-top: 20px;
|
109 |
+
margin-bottom: 20px;
|
110 |
+
}
|
111 |
+
|
112 |
+
#wm-preview-image {
|
113 |
+
margin: auto;
|
114 |
+
display: block;
|
115 |
+
max-width: 100%;
|
116 |
+
}
|
117 |
+
|
118 |
.wm-table {
|
119 |
border-collapse:collapse;
|
120 |
margin-top:1em;
|
admin/install.php
CHANGED
@@ -210,8 +210,9 @@ function ngg_default_options() {
|
|
210 |
|
211 |
// get the default value during first installation
|
212 |
if (!is_array($ngg_wpmu_options)) {
|
213 |
-
$ngg_wpmu_options['gallerypath']
|
214 |
-
$ngg_wpmu_options['wpmuCSSfile']
|
|
|
215 |
update_site_option('ngg_options', $ngg_wpmu_options);
|
216 |
}
|
217 |
|
210 |
|
211 |
// get the default value during first installation
|
212 |
if (!is_array($ngg_wpmu_options)) {
|
213 |
+
$ngg_wpmu_options['gallerypath'] = 'wp-content/blogs.dir/%BLOG_ID%/files/';
|
214 |
+
$ngg_wpmu_options['wpmuCSSfile'] = 'nggallery.css';
|
215 |
+
$ngg_wpmu_options['silentUpdate'] = false;
|
216 |
update_site_option('ngg_options', $ngg_wpmu_options);
|
217 |
}
|
218 |
|
admin/js/ngg.autocomplete.js
CHANGED
@@ -1,77 +1,136 @@
|
|
1 |
-
|
2 |
-
*
|
3 |
-
*
|
4 |
-
*
|
5 |
-
*
|
|
|
|
|
6 |
*
|
7 |
-
*/
|
8 |
-
jQuery.fn.nggAutocomplete = function (
|
9 |
-
|
10 |
-
var defaults = {
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
var
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
|
|
|
|
|
|
|
|
|
|
22 |
var obj = this.selector;
|
23 |
-
var id
|
24 |
var cache = {}, lastXhr;
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
49 |
// adding more $_GET parameter
|
50 |
-
request
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
|
|
57 |
},
|
58 |
minLength: 0,
|
59 |
-
select: function(
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* NextCellent implementation of jQuery UI Autocomplete.
|
3 |
+
*
|
4 |
+
* @see http://jqueryui.com/demos/autocomplete/
|
5 |
+
* @see /xml/json.php for the API.
|
6 |
+
*
|
7 |
+
* @version 1.1
|
8 |
*
|
9 |
+
*/
|
10 |
+
jQuery.fn.nggAutocomplete = function (args) {
|
11 |
+
|
12 |
+
var defaults = {
|
13 |
+
type: 'image',
|
14 |
+
domain: '',
|
15 |
+
limit: 50
|
16 |
+
};
|
17 |
+
|
18 |
+
var s = jQuery.extend({}, defaults, args);
|
19 |
+
|
20 |
+
var settings = {
|
21 |
+
method: 'autocomplete',
|
22 |
+
type: s.type,
|
23 |
+
format: 'json',
|
24 |
+
callback: 'json',
|
25 |
+
limit: s.limit,
|
26 |
+
term: s.term
|
27 |
+
};
|
28 |
+
|
29 |
var obj = this.selector;
|
30 |
+
var id = jQuery(this).attr('id');
|
31 |
var cache = {}, lastXhr;
|
32 |
+
|
33 |
+
/**
|
34 |
+
* The element.
|
35 |
+
*/
|
36 |
+
var obj_selector = jQuery(obj);
|
37 |
+
|
38 |
+
/**
|
39 |
+
* The current value of the dropdown field.
|
40 |
+
*/
|
41 |
+
var c_text = jQuery(obj + ' option:selected').text();
|
42 |
+
var c_width = s.width;
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Hide the drop down field and add the search field.
|
46 |
+
*/
|
47 |
+
obj_selector.hide().after('<input name="' + id + '_ac" type="search" id="' + id + '_ac"/>');
|
48 |
+
|
49 |
+
/**
|
50 |
+
* The search field.
|
51 |
+
*/
|
52 |
+
var obj_ac_selector = jQuery(obj + "_ac");
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Add the current value and set the style.
|
56 |
+
*/
|
57 |
+
obj_ac_selector.val(c_text).css('width', c_width).addClass('ui-autocomplete-start');
|
58 |
+
|
59 |
+
/**
|
60 |
+
* Initiate the autocomplete
|
61 |
+
* 20150305: only add term to request if term is not empty
|
62 |
+
*/
|
63 |
+
obj_ac_selector.autocomplete({
|
64 |
+
source: function (request, response) {
|
65 |
+
var term = request.term;
|
66 |
+
console.log(response);
|
67 |
+
if (term in cache) {
|
68 |
+
response(cache[term]);
|
69 |
+
return;
|
70 |
+
}
|
71 |
// adding more $_GET parameter
|
72 |
+
//20150303: invert stetting and request to make term priority
|
73 |
+
request = jQuery.extend({}, request, settings);
|
74 |
+
lastXhr = jQuery.getJSON(s.domain, request, function (data, status, xhr) {
|
75 |
+
// add term to cache
|
76 |
+
cache[term] = data;
|
77 |
+
if (xhr === lastXhr)
|
78 |
+
response(data);
|
79 |
+
});
|
80 |
},
|
81 |
minLength: 0,
|
82 |
+
select: function (event, ui) {
|
83 |
+
/**
|
84 |
+
* We we will add this to the selector.
|
85 |
+
*
|
86 |
+
* @type {Option} The option to be added.
|
87 |
+
*/
|
88 |
+
var option = new Option(ui.item.label, ui.item.id);
|
89 |
+
|
90 |
+
/**
|
91 |
+
* Add the select attribute to the option and remove it from the others.
|
92 |
+
*/
|
93 |
+
jQuery(option).attr('selected', true);
|
94 |
+
jQuery(obj + " option:selected").attr('selected', false);
|
95 |
+
|
96 |
+
|
97 |
+
/**
|
98 |
+
* Add the option.
|
99 |
+
*/
|
100 |
+
obj_selector.append(option);
|
101 |
+
|
102 |
+
/**
|
103 |
+
* Remove autocomplete class.
|
104 |
+
*/
|
105 |
+
obj_ac_selector.removeClass('ui-autocomplete-start');
|
106 |
+
|
107 |
+
/**
|
108 |
+
* Update the text selector
|
109 |
+
*/
|
110 |
+
c_text = ui.item.label;
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Trigger a custom event.
|
114 |
+
*
|
115 |
+
* @since 1.1
|
116 |
+
*/
|
117 |
+
obj_selector.trigger('nggAutocompleteDone');
|
118 |
+
}
|
119 |
+
});
|
120 |
+
|
121 |
+
obj_ac_selector.click(function () {
|
122 |
+
//FZSM 20050307: There is an issue with drop downn list which it can stay behind form editor.
|
123 |
+
//this workaround makes drop-down z-index to follow dialo z-index.
|
124 |
+
jQuery ('.ui-autocomplete').css('z-index', jQuery('.ui-dialog').zIndex()+1);
|
125 |
+
|
126 |
+
var search = obj_ac_selector.val();
|
127 |
+
|
128 |
+
/**
|
129 |
+
* If the selected value is already present, we need to show all images.
|
130 |
+
*/
|
131 |
+
if (search == c_text) {
|
132 |
+
search = '';
|
133 |
+
}
|
134 |
+
obj_ac_selector.autocomplete('search', search);
|
135 |
+
});
|
136 |
+
}
|
admin/settings.php
CHANGED
@@ -12,29 +12,29 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
|
|
12 |
class ngg_rebuild_unique_slugs {
|
13 |
|
14 |
function start_rebuild() {
|
15 |
-
|
16 |
|
17 |
-
|
18 |
-
|
19 |
$total['images'] = intval( $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->nggpictures") );
|
20 |
-
|
21 |
-
|
22 |
|
23 |
$messages = array(
|
24 |
'images' => __( 'Rebuild image structure : %s / %s images', 'nggallery' ),
|
25 |
'gallery' => __( 'Rebuild gallery structure : %s / %s galleries', 'nggallery' ),
|
26 |
-
|
27 |
);
|
28 |
|
29 |
-
|
30 |
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
|
36 |
-
|
37 |
-
|
38 |
|
39 |
$ajax_url = add_query_arg( 'action', 'ngg_rebuild_unique_slugs', admin_url( 'admin-ajax.php' ) );
|
40 |
?>
|
@@ -44,44 +44,44 @@ jQuery(document).ready(function($) {
|
|
44 |
_action = 'images',
|
45 |
images = <?php echo $total['images']; ?>,
|
46 |
gallery = <?php echo $total['gallery']; ?>,
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
count = 50;
|
51 |
|
52 |
var $display = $('.ngg-count-current');
|
53 |
-
|
54 |
-
|
55 |
|
56 |
function call_again() {
|
57 |
if ( offset > total ) {
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
}
|
86 |
|
87 |
$.post(ajax_url, {'_action': _action, 'offset': offset}, function(response) {
|
@@ -100,632 +100,798 @@ jQuery(document).ready(function($) {
|
|
100 |
}
|
101 |
|
102 |
//20150124 FZSM: Suggested rule: no class should call a spaghuetti code directly...
|
103 |
-
|
|
|
|
|
104 |
class nggOptions {
|
105 |
|
106 |
-
|
107 |
-
* nggOptions::__construct()
|
108 |
-
*
|
109 |
-
* @return void
|
110 |
-
*/
|
111 |
-
function __construct() {
|
112 |
|
113 |
-
|
114 |
$this->filepath = admin_url() . 'admin.php?page=' . $_GET['page'];
|
115 |
|
116 |
-
|
117 |
-
if ( !empty($_POST) )
|
118 |
$this->processor();
|
119 |
-
|
|
|
120 |
|
121 |
/**
|
122 |
* Save/Load options and add a new hook for plugins
|
123 |
-
*
|
124 |
-
* @return void
|
125 |
*/
|
126 |
-
function processor() {
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
// $value = sanitize_option($option, $value); // This does stripslashes on those that need it
|
155 |
-
$ngg->options[$option] = $value;
|
156 |
-
}
|
157 |
-
|
158 |
-
// do not allow a empty string
|
159 |
-
if ( empty ( $ngg->options['permalinkSlug'] ) )
|
160 |
-
$ngg->options['permalinkSlug'] = 'nggallery';
|
161 |
-
|
162 |
-
// the path should always end with a slash
|
163 |
-
$ngg->options['gallerypath'] = trailingslashit($ngg->options['gallerypath']);
|
164 |
-
$ngg->options['imageMagickDir'] = trailingslashit($ngg->options['imageMagickDir']);
|
165 |
-
|
166 |
-
// the custom sortorder must be ascending
|
167 |
-
$ngg->options['galSortDir'] = ($ngg->options['galSort'] == 'sortorder') ? 'ASC' : $ngg->options['galSortDir'];
|
168 |
-
}
|
169 |
-
// Save options
|
170 |
-
update_option('ngg_options', $ngg->options);
|
171 |
-
|
172 |
-
// Flush Rewrite rules
|
173 |
-
if ( $old_state != $ngg->options['usePermalinks'] || $old_slug != $ngg->options['permalinkSlug'] )
|
174 |
-
$nggRewrite->flush();
|
175 |
-
|
176 |
-
nggGallery::show_message(__('Settings updated successfully','nggallery'));
|
177 |
-
}
|
178 |
-
|
179 |
-
if ( isset($_POST['clearcache']) ) {
|
180 |
-
check_admin_referer('ngg_settings');
|
181 |
-
|
182 |
-
$path = WINABSPATH . $ngg->options['gallerypath'] . 'cache/';
|
183 |
-
|
184 |
-
if (is_dir($path))
|
185 |
-
if ($handle = opendir($path)) {
|
186 |
-
while (false !== ($file = readdir($handle))) {
|
187 |
-
if ($file != '.' && $file != '..') {
|
188 |
-
@unlink($path . '/' . $file);
|
189 |
-
}
|
190 |
-
}
|
191 |
-
closedir($handle);
|
192 |
-
}
|
193 |
-
|
194 |
-
nggGallery::show_message(__('Cache cleared','nggallery'));
|
195 |
-
}
|
196 |
-
|
197 |
-
if ( isset($_POST['createslugs']) ) {
|
198 |
-
check_admin_referer('ngg_settings');
|
199 |
-
ngg_rebuild_unique_slugs::start_rebuild();
|
200 |
-
}
|
201 |
-
|
202 |
-
do_action( 'ngg_update_options_page' );
|
203 |
-
|
204 |
-
}
|
205 |
-
|
206 |
-
/**
|
207 |
-
* Render the page content
|
208 |
-
* 20150124:FZSM: there should be a cleaner way to handle this, instead making dynamic functions and actions.
|
209 |
-
* @return void
|
210 |
-
*/
|
211 |
-
function controller() {
|
212 |
-
|
213 |
-
// get list of tabs
|
214 |
-
$tabs = $this->tabs_order();
|
215 |
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
|
|
|
|
|
|
223 |
|
224 |
-
|
225 |
-
|
226 |
-
switch (value) {
|
227 |
-
case "none":
|
228 |
-
effectcode = "";
|
229 |
-
jQuery('#tbImage').hide("slow");
|
230 |
-
break;
|
231 |
-
case "thickbox":
|
232 |
-
effectcode = 'class="thickbox" rel="%GALLERY_NAME%"';
|
233 |
-
jQuery('#tbImage').show("slow");
|
234 |
-
break;
|
235 |
-
case "lightbox":
|
236 |
-
effectcode = 'rel="lightbox[%GALLERY_NAME%]"';
|
237 |
-
jQuery('#tbImage').hide("slow");
|
238 |
-
break;
|
239 |
-
case "highslide":
|
240 |
-
effectcode = 'class="highslide" onclick="return hs.expand(this, { slideshowGroup: %GALLERY_NAME% })"';
|
241 |
-
jQuery('#tbImage').hide("slow");
|
242 |
-
break;
|
243 |
-
case "shutter":
|
244 |
-
effectcode = 'class="shutterset_%GALLERY_NAME%"';
|
245 |
-
jQuery('#tbImage').hide("slow");
|
246 |
-
break;
|
247 |
-
default:
|
248 |
-
break;
|
249 |
}
|
250 |
-
|
251 |
-
|
252 |
|
253 |
-
|
254 |
-
$
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
313 |
<form name="generaloptions" method="post" action="<?php echo $this->filepath; ?>">
|
314 |
-
|
315 |
-
|
316 |
<table class="form-table ngg-options">
|
317 |
-
<tr valign="top">
|
318 |
-
<th align="left"><?php esc_html_e('Gallery path','nggallery'); ?></th>
|
319 |
-
<td><input <?php if (is_multisite()) echo 'readonly = "readonly"'; ?> type="text" class="regular-text code" name="gallerypath" value="<?php echo $ngg->options['gallerypath']; ?>" />
|
320 |
-
<p class="description"><?php esc_html_e('This is the default path for all galleries','nggallery') ?></p></td>
|
321 |
-
</tr>
|
322 |
<tr>
|
323 |
-
<th
|
324 |
-
<td
|
325 |
-
<
|
|
|
|
|
326 |
</tr>
|
327 |
-
<tr
|
328 |
-
<th
|
329 |
-
<td
|
330 |
-
|
|
|
|
|
331 |
</tr>
|
332 |
<tr>
|
333 |
-
<th
|
334 |
-
<td
|
335 |
-
|
336 |
-
|
337 |
-
|
|
|
338 |
</td>
|
339 |
</tr>
|
340 |
<tr>
|
341 |
-
<th
|
342 |
-
<td
|
343 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
344 |
</tr>
|
345 |
<tr>
|
346 |
-
<th
|
347 |
-
<td
|
348 |
-
|
349 |
-
|
350 |
</td>
|
351 |
</tr>
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
<p class="description"><?php esc_html_e('When activating this option, you need to update your permalink structure once','nggallery'); ?></p></td>
|
360 |
</tr>
|
|
|
|
|
|
|
361 |
<tr>
|
|
|
362 |
<td>
|
363 |
-
|
364 |
-
|
|
|
|
|
365 |
</tr>
|
366 |
<tr>
|
367 |
-
<th
|
368 |
-
<td><input type="
|
369 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
370 |
</tr>
|
371 |
</table>
|
372 |
-
<h3><?php
|
373 |
<table class="form-table ngg-options">
|
374 |
<tr>
|
375 |
-
<th
|
376 |
-
<td
|
377 |
-
|
|
|
378 |
</td>
|
379 |
</tr>
|
380 |
<tr>
|
381 |
-
<th
|
382 |
-
<td
|
383 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
384 |
</td>
|
385 |
</tr>
|
386 |
<tr>
|
387 |
-
<th
|
388 |
-
<td
|
389 |
-
|
|
|
390 |
</td>
|
391 |
</tr>
|
392 |
</table>
|
393 |
-
|
394 |
</form>
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
<
|
|
|
|
|
406 |
<table class="form-table ngg-options">
|
407 |
-
<tr
|
408 |
-
<th
|
409 |
-
<td
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
|
|
|
|
414 |
</tr>
|
415 |
-
<tr
|
416 |
-
<th
|
417 |
-
<td><input type="number" step="1" min="0" max="100" class="small-text" name="imgQuality" value="<?php echo $ngg->options['imgQuality']; ?>"
|
418 |
-
<label for="imgQuality">%</label></td>
|
419 |
</tr>
|
420 |
<tr>
|
421 |
-
<th
|
422 |
-
<td
|
423 |
-
|
|
|
|
|
|
|
|
|
424 |
</tr>
|
425 |
<tr>
|
426 |
-
<th
|
427 |
-
<td
|
428 |
-
|
|
|
|
|
|
|
|
|
429 |
</tr>
|
430 |
</table>
|
431 |
-
|
432 |
-
|
433 |
-
<p class="description"><?php esc_html_e('Please note: if you change these settings, you need to recreate the thumbnails under -> Manage Gallery .', 'nggallery') ?></p>
|
434 |
<table class="form-table ngg-options">
|
435 |
-
<tr
|
436 |
-
<th
|
437 |
<td>
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
|
|
443 |
</tr>
|
444 |
-
<tr
|
445 |
-
<th
|
446 |
-
<td
|
447 |
-
|
|
|
|
|
448 |
</tr>
|
449 |
-
<tr
|
450 |
-
<th
|
451 |
-
<td><input type="number" step="1" min="0" max="100" class="small-text" name="thumbquality" value="<?php echo $ngg->options['thumbquality']; ?>"
|
452 |
</tr>
|
453 |
</table>
|
454 |
-
<h3><?php
|
455 |
<table class="form-table ngg-options">
|
456 |
<tr>
|
457 |
-
<th
|
458 |
-
<td><input type="submit" name="clearcache" class="button-secondary" value="<?php
|
459 |
</tr>
|
460 |
</table>
|
461 |
-
|
462 |
</form>
|
463 |
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
<
|
|
|
|
|
475 |
<table class="form-table ngg-options">
|
476 |
<tr>
|
477 |
-
<th
|
478 |
-
<td
|
479 |
-
|
|
|
480 |
</td>
|
481 |
</tr>
|
482 |
<tr>
|
483 |
-
<th
|
484 |
-
<td
|
485 |
-
|
486 |
-
|
|
|
487 |
</td>
|
488 |
</tr>
|
489 |
<tr>
|
490 |
-
<th
|
491 |
-
<td
|
492 |
-
|
493 |
-
|
|
|
494 |
</td>
|
495 |
</tr>
|
496 |
<tr>
|
497 |
-
<th
|
498 |
-
<td
|
499 |
-
<
|
500 |
-
|
501 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
502 |
</td>
|
503 |
</tr>
|
504 |
<tr>
|
505 |
-
<th
|
506 |
-
<td
|
507 |
-
|
508 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
509 |
</td>
|
510 |
</tr>
|
511 |
<tr>
|
512 |
-
<th
|
513 |
-
<td
|
514 |
-
|
|
|
|
|
|
|
515 |
</td>
|
516 |
</tr>
|
517 |
<tr>
|
518 |
-
<th
|
519 |
-
<td
|
520 |
-
|
521 |
-
|
|
|
|
|
|
|
522 |
</td>
|
523 |
</tr>
|
524 |
<tr>
|
525 |
-
<th
|
526 |
-
<td
|
527 |
-
|
528 |
-
|
|
|
|
|
|
|
529 |
</td>
|
530 |
</tr>
|
531 |
</table>
|
532 |
-
<h3><?php
|
533 |
<table class="form-table ngg-options">
|
534 |
<tr>
|
535 |
-
<th
|
536 |
<td>
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
542 |
</td>
|
543 |
</tr>
|
544 |
<tr>
|
545 |
-
<th
|
546 |
-
<td
|
547 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
548 |
</td>
|
549 |
</tr>
|
550 |
</table>
|
551 |
-
|
552 |
</form>
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
<
|
564 |
-
|
565 |
-
|
|
|
|
|
|
|
|
|
566 |
<table class="form-table ngg-options">
|
567 |
-
<tr
|
568 |
-
<th><?php
|
569 |
<td>
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
</td>
|
579 |
</tr>
|
580 |
-
<tr
|
581 |
-
<th><?php
|
582 |
-
<td><textarea id="thumbCode" name="thumbCode" cols="50" rows="5"><?php echo htmlspecialchars(stripslashes($ngg->options['thumbCode'])); ?></textarea></td>
|
583 |
</tr>
|
584 |
</table>
|
585 |
-
|
586 |
</form>
|
|
|
|
|
587 |
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
<
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
<
|
643 |
-
<
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
|
|
|
|
|
|
|
|
|
|
649 |
</table>
|
650 |
</div>
|
651 |
-
|
652 |
-
<h3><label><input type="radio" name="wmType" value="image" <?php checked('image', $ngg->options['wmType']); ?> /> <?php esc_html_e('Use image as watermark','nggallery') ?></label></h3>
|
653 |
<table class="wm-table form-table">
|
654 |
<tr>
|
655 |
-
<th><?php
|
656 |
-
<td><input type="text"
|
657 |
-
<?php if(!ini_get('allow_url_fopen')) esc_html_e('The accessing of URL files is disabled at your server (allow_url_fopen)','nggallery') ?> </td>
|
658 |
</tr>
|
659 |
</table>
|
660 |
-
<h3><label><input type="radio" name="wmType" value="text" <?php checked('text', $ngg->options['wmType']);
|
661 |
<table class="wm-table form-table">
|
662 |
<tr>
|
663 |
-
<th><?php
|
664 |
-
<td
|
665 |
-
|
|
|
|
|
666 |
foreach ( $fontlist as $fontfile ) {
|
667 |
-
echo "\n".'<option value="'.$fontfile.'" '.
|
668 |
}
|
669 |
?>
|
670 |
-
</select><br
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
|
|
|
|
676 |
</td>
|
677 |
</tr>
|
678 |
<tr>
|
679 |
-
<th><?php
|
680 |
-
<td><input type="number" step="1" min="0" class="small-text" name="wmSize" value="<?php echo $ngg->options['wmSize']; ?>"
|
681 |
</tr>
|
682 |
<tr>
|
683 |
-
<th><?php
|
684 |
-
<td><input class="picker" type="text" id="wmColor" name="wmColor" value="<?php echo $ngg->options['wmColor'] ?>"
|
685 |
</tr>
|
686 |
<tr>
|
687 |
-
<th
|
688 |
-
<td><textarea name="wmText" cols="
|
689 |
</tr>
|
690 |
<tr>
|
691 |
-
<th><?php
|
692 |
-
<td><input type="number" step="1" min="0" max="100" class="small-text" name="wmOpaque" value="<?php echo $ngg->options['wmOpaque'] ?>"
|
693 |
</tr>
|
694 |
</table>
|
695 |
-
|
696 |
-
|
697 |
</form>
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
710 |
<table class="form-table ngg-options">
|
711 |
<tr>
|
712 |
-
<th><?php
|
713 |
-
<td
|
|
|
|
|
|
|
714 |
</tr>
|
715 |
<tr>
|
716 |
-
<th><?php
|
717 |
<td>
|
718 |
-
<label for="irWidth"><?php
|
719 |
-
<input <?php
|
720 |
-
<label for="irHeight"><?php
|
721 |
-
<input <?php
|
722 |
</td>
|
723 |
</tr>
|
724 |
<tr>
|
725 |
-
|
726 |
<td>
|
727 |
-
<select size="1" name="slideFx"
|
728 |
-
|
729 |
$options = array(
|
730 |
__( 'Attention Seekers', 'nggallery' ) => array( "bounce", "flash", "pulse", "rubberBand", "shake", "swing", "tada", "wobble"),
|
731 |
__( 'Bouncing Entrances', 'nggallery' ) => array( "bounceIn", "bounceInDown", "bounceInLeft", "bounceInRight", "bounceInUp" ),
|
@@ -740,131 +906,121 @@ class nggOptions {
|
|
740 |
);
|
741 |
|
742 |
foreach( $options as $option => $val ) {
|
743 |
-
echo
|
744 |
}
|
745 |
?>
|
746 |
</select>
|
747 |
-
<p class="description"
|
748 |
-
|
|
|
749 |
</tr>
|
750 |
-
<!-- NEW ONES; TO ADD -->
|
751 |
<tr>
|
752 |
-
<th><?php
|
753 |
-
<td
|
|
|
|
|
|
|
754 |
</tr>
|
755 |
<tr>
|
756 |
-
<th><?php
|
757 |
-
<td
|
|
|
|
|
|
|
758 |
</tr>
|
759 |
<tr>
|
760 |
-
<th><?php
|
761 |
-
<td
|
|
|
|
|
|
|
762 |
</tr>
|
763 |
<tr>
|
764 |
-
<th><?php
|
765 |
-
<td
|
|
|
|
|
|
|
766 |
</tr>
|
767 |
<tr>
|
768 |
-
<th><?php
|
769 |
-
<td
|
|
|
|
|
|
|
770 |
</tr>
|
771 |
<tr>
|
772 |
-
<th><?php
|
773 |
-
<td
|
|
|
|
|
|
|
774 |
</tr>
|
775 |
<tr>
|
776 |
-
<th><?php
|
777 |
-
<td
|
|
|
|
|
|
|
778 |
</tr>
|
779 |
<tr>
|
780 |
-
<th><?php
|
781 |
-
<td
|
|
|
|
|
782 |
</tr>
|
783 |
<tr>
|
784 |
-
<th><?php
|
785 |
<td>
|
786 |
-
<input type="number"
|
|
|
787 |
<p class="description"><?php _e( "Number of images to display when using random or latest.", 'nggallery'); ?></p>
|
788 |
</td>
|
789 |
</tr>
|
790 |
-
|
791 |
-
|
792 |
</form>
|
793 |
-
|
794 |
-
}
|
795 |
-
}
|
796 |
-
|
797 |
-
function ngg_get_TTFfont() {
|
798 |
-
|
799 |
-
$ttf_fonts = array ();
|
800 |
-
|
801 |
-
// Files in wp-content/plugins/nggallery/fonts directory
|
802 |
-
$plugin_root = NGGALLERY_ABSPATH . 'fonts';
|
803 |
-
|
804 |
-
$plugins_dir = @ dir($plugin_root);
|
805 |
-
if ($plugins_dir) {
|
806 |
-
while (($file = $plugins_dir->read()) !== false) {
|
807 |
-
if (preg_match('|^\.+$|', $file))
|
808 |
-
continue;
|
809 |
-
if (is_dir($plugin_root.'/'.$file)) {
|
810 |
-
$plugins_subdir = @ dir($plugin_root.'/'.$file);
|
811 |
-
if ($plugins_subdir) {
|
812 |
-
while (($subfile = $plugins_subdir->read()) !== false) {
|
813 |
-
if (preg_match('|^\.+$|', $subfile))
|
814 |
-
continue;
|
815 |
-
if (preg_match('|\.ttf$|', $subfile))
|
816 |
-
$ttf_fonts[] = "$file/$subfile";
|
817 |
-
}
|
818 |
-
}
|
819 |
-
} else {
|
820 |
-
if (preg_match('|\.ttf$|', $file))
|
821 |
-
$ttf_fonts[] = $file;
|
822 |
-
}
|
823 |
-
}
|
824 |
}
|
825 |
|
826 |
-
|
827 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
828 |
|
829 |
-
|
830 |
-
* Convert an array of options to a html dropdown group.
|
831 |
-
* 20150124: To improve: a class calling a function outside the class... should be fixed.
|
832 |
-
* @param $data array The option values (and display).
|
833 |
-
* @param $title string (optional) The label of the optgroup.
|
834 |
-
*
|
835 |
-
* @return string The output.
|
836 |
-
*/
|
837 |
-
function convert_to_optgroup( $data, $title = null) {
|
838 |
|
839 |
-
|
|
|
|
|
|
|
|
|
840 |
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
$out = '<optgroup label="' . $title . '">';
|
845 |
-
}
|
846 |
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
|
851 |
-
|
852 |
-
$out .= '</optgroup>';
|
853 |
}
|
854 |
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
function
|
862 |
-
|
863 |
-
|
864 |
-
}
|
865 |
-
|
866 |
-
|
867 |
-
if ( $checked == $current)
|
868 |
-
return ' checked="checked"';
|
869 |
-
}
|
870 |
-
?>
|
12 |
class ngg_rebuild_unique_slugs {
|
13 |
|
14 |
function start_rebuild() {
|
15 |
+
global $wpdb;
|
16 |
|
17 |
+
$total = array();
|
18 |
+
// get the total number of images
|
19 |
$total['images'] = intval( $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->nggpictures") );
|
20 |
+
$total['gallery'] = intval( $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->nggallery") );
|
21 |
+
$total['album'] = intval( $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->nggalbum") );
|
22 |
|
23 |
$messages = array(
|
24 |
'images' => __( 'Rebuild image structure : %s / %s images', 'nggallery' ),
|
25 |
'gallery' => __( 'Rebuild gallery structure : %s / %s galleries', 'nggallery' ),
|
26 |
+
'album' => __( 'Rebuild album structure : %s / %s albums', 'nggallery' ),
|
27 |
);
|
28 |
|
29 |
+
foreach ( array_keys( $messages ) as $key ) {
|
30 |
|
31 |
+
$message = sprintf( $messages[ $key ] ,
|
32 |
+
"<span class='ngg-count-current'>0</span>",
|
33 |
+
"<span class='ngg-count-total'>" . $total[ $key ] . "</span>"
|
34 |
+
);
|
35 |
|
36 |
+
echo "<div class='$key updated'><p class='ngg'>$message</p></div>";
|
37 |
+
}
|
38 |
|
39 |
$ajax_url = add_query_arg( 'action', 'ngg_rebuild_unique_slugs', admin_url( 'admin-ajax.php' ) );
|
40 |
?>
|
44 |
_action = 'images',
|
45 |
images = <?php echo $total['images']; ?>,
|
46 |
gallery = <?php echo $total['gallery']; ?>,
|
47 |
+
album = <?php echo $total['album']; ?>,
|
48 |
+
total = 0,
|
49 |
+
offset = 0,
|
50 |
count = 50;
|
51 |
|
52 |
var $display = $('.ngg-count-current');
|
53 |
+
$('.finished, .gallery, .album').hide();
|
54 |
+
total = images;
|
55 |
|
56 |
function call_again() {
|
57 |
if ( offset > total ) {
|
58 |
+
offset = 0;
|
59 |
+
// 1st run finished
|
60 |
+
if (_action == 'images') {
|
61 |
+
_action = 'gallery';
|
62 |
+
total = gallery;
|
63 |
+
$('.images, .gallery').toggle();
|
64 |
+
$display.html(offset);
|
65 |
+
call_again();
|
66 |
+
return;
|
67 |
+
}
|
68 |
+
// 2nd run finished
|
69 |
+
if (_action == 'gallery') {
|
70 |
+
_action = 'album';
|
71 |
+
total = album;
|
72 |
+
$('.gallery, .album').toggle();
|
73 |
+
$display.html(offset);
|
74 |
+
call_again();
|
75 |
+
return;
|
76 |
+
}
|
77 |
+
// 3rd run finished, exit now
|
78 |
+
if (_action == 'album') {
|
79 |
+
$('.ngg')
|
80 |
+
.html('<?php esc_html_e( 'Done.', 'nggallery' ); ?>')
|
81 |
+
.parent('div').hide();
|
82 |
+
$('.finished').show();
|
83 |
+
return;
|
84 |
+
}
|
85 |
}
|
86 |
|
87 |
$.post(ajax_url, {'_action': _action, 'offset': offset}, function(response) {
|
100 |
}
|
101 |
|
102 |
//20150124 FZSM: Suggested rule: no class should call a spaghuetti code directly...
|
103 |
+
/**
|
104 |
+
* Class nggOptions - the settings page.
|
105 |
+
*/
|
106 |
class nggOptions {
|
107 |
|
108 |
+
public function __construct() {
|
|
|
|
|
|
|
|
|
|
|
109 |
|
110 |
+
// same as $_SERVER['REQUEST_URI'], but should work under IIS 6.0
|
111 |
$this->filepath = admin_url() . 'admin.php?page=' . $_GET['page'];
|
112 |
|
113 |
+
//Look for POST updates
|
114 |
+
if ( !empty($_POST) ) {
|
115 |
$this->processor();
|
116 |
+
}
|
117 |
+
}
|
118 |
|
119 |
/**
|
120 |
* Save/Load options and add a new hook for plugins
|
|
|
|
|
121 |
*/
|
122 |
+
public function processor() {
|
123 |
+
|
124 |
+
global $ngg, $nggRewrite;
|
125 |
+
|
126 |
+
$old_state = $ngg->options['usePermalinks'];
|
127 |
+
$old_slug = $ngg->options['permalinkSlug'];
|
128 |
+
|
129 |
+
if ( isset($_POST['updateoption']) ) {
|
130 |
+
check_admin_referer('ngg_settings');
|
131 |
+
// get the hidden option fields, taken from WP core
|
132 |
+
if ( $_POST['page_options'] )
|
133 |
+
$options = explode(',', stripslashes($_POST['page_options']));
|
134 |
+
|
135 |
+
if ($options) {
|
136 |
+
foreach ($options as $option) {
|
137 |
+
$option = trim($option);
|
138 |
+
$value = false;
|
139 |
+
if ( isset( $_POST[ $option ] ) ) {
|
140 |
+
$value = trim( $_POST[ $option ] );
|
141 |
+
if ($value === "true") {
|
142 |
+
$value = true;
|
143 |
+
}
|
144 |
+
|
145 |
+
if ( is_numeric( $value ) ) {
|
146 |
+
$value = (int) $value;
|
147 |
+
}
|
148 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
|
150 |
+
$ngg->options[$option] = $value;
|
151 |
+
}
|
152 |
+
|
153 |
+
// do not allow a empty string
|
154 |
+
if ( empty ( $ngg->options['permalinkSlug'] ) )
|
155 |
+
$ngg->options['permalinkSlug'] = 'nggallery';
|
156 |
+
|
157 |
+
// the path should always end with a slash
|
158 |
+
$ngg->options['gallerypath'] = trailingslashit($ngg->options['gallerypath']);
|
159 |
+
$ngg->options['imageMagickDir'] = trailingslashit($ngg->options['imageMagickDir']);
|
160 |
|
161 |
+
// the custom sortorder must be ascending
|
162 |
+
$ngg->options['galSortDir'] = ($ngg->options['galSort'] == 'sortorder') ? 'ASC' : $ngg->options['galSortDir'];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
163 |
}
|
164 |
+
// Save options
|
165 |
+
update_option('ngg_options', $ngg->options);
|
166 |
|
167 |
+
// Flush Rewrite rules
|
168 |
+
if ( $old_state != $ngg->options['usePermalinks'] || $old_slug != $ngg->options['permalinkSlug'] )
|
169 |
+
$nggRewrite->flush();
|
170 |
+
|
171 |
+
nggGallery::show_message(__('Settings updated successfully','nggallery'));
|
172 |
+
}
|
173 |
+
|
174 |
+
if ( isset($_POST['clearcache']) ) {
|
175 |
+
check_admin_referer('ngg_settings');
|
176 |
+
|
177 |
+
$path = WINABSPATH . $ngg->options['gallerypath'] . 'cache/';
|
178 |
+
|
179 |
+
if (is_dir($path))
|
180 |
+
if ($handle = opendir($path)) {
|
181 |
+
while (false !== ($file = readdir($handle))) {
|
182 |
+
if ($file != '.' && $file != '..') {
|
183 |
+
@unlink($path . '/' . $file);
|
184 |
+
}
|
185 |
+
}
|
186 |
+
closedir($handle);
|
187 |
+
}
|
188 |
+
|
189 |
+
nggGallery::show_message(__('Cache cleared','nggallery'));
|
190 |
+
}
|
191 |
+
|
192 |
+
if ( isset($_POST['createslugs']) ) {
|
193 |
+
check_admin_referer('ngg_settings');
|
194 |
+
ngg_rebuild_unique_slugs::start_rebuild();
|
195 |
+
}
|
196 |
+
|
197 |
+
do_action( 'ngg_update_options_page' );
|
198 |
+
|
199 |
+
}
|
200 |
+
|
201 |
+
/**
|
202 |
+
* Render the page content
|
203 |
+
* 20150124:FZSM: there should be a cleaner way to handle this, instead making dynamic functions and actions.
|
204 |
+
*/
|
205 |
+
public function show_page() {
|
206 |
+
|
207 |
+
// get list of tabs
|
208 |
+
$tabs = $this->get_tabs();
|
209 |
+
|
210 |
+
?>
|
211 |
+
<div class="wrap">
|
212 |
+
<h2><?php _e('Settings', 'nggallery') ?></h2>
|
213 |
+
<div id="slider" style="display: none;">
|
214 |
+
<ul id="tabs">
|
215 |
+
<?php
|
216 |
+
foreach($tabs as $tab_key => $tab_name) {
|
217 |
+
echo "\n\t\t<li><a class='nav-tab' href='#$tab_key'>$tab_name</a></li>";
|
218 |
+
}
|
219 |
+
?>
|
220 |
+
</ul>
|
221 |
+
<?php
|
222 |
+
foreach($tabs as $tab_key => $tab_name) {
|
223 |
+
echo "\n\t<div id='$tab_key'>\n";
|
224 |
+
// Looks for the internal class function, otherwise enable a hook for plugins
|
225 |
+
if ( method_exists( $this, "tab_$tab_key" ))
|
226 |
+
call_user_func( array( $this , "tab_$tab_key") );
|
227 |
+
else
|
228 |
+
do_action( 'ngg_tab_content_' . $tab_key );
|
229 |
+
echo "\n\t</div>";
|
230 |
+
}
|
231 |
+
?>
|
232 |
+
</div>
|
233 |
+
</div>
|
234 |
+
<?php
|
235 |
+
$this->get_javascript();
|
236 |
+
|
237 |
+
}
|
238 |
+
|
239 |
+
private function get_javascript() {
|
240 |
+
?>
|
241 |
+
<script type="text/javascript">
|
242 |
+
function insertcode(value) {
|
243 |
+
var effectcode;
|
244 |
+
switch (value) {
|
245 |
+
case 'none':
|
246 |
+
effectcode = "";
|
247 |
+
break;
|
248 |
+
case "thickbox":
|
249 |
+
effectcode = 'class="thickbox" rel="%GALLERY_NAME%"';
|
250 |
+
break;
|
251 |
+
case "lightbox":
|
252 |
+
effectcode = 'rel="lightbox[%GALLERY_NAME%]"';
|
253 |
+
break;
|
254 |
+
case "highslide":
|
255 |
+
effectcode = 'class="highslide" onclick="return hs.expand(this, { slideshowGroup: %GALLERY_NAME% })"';
|
256 |
+
break;
|
257 |
+
case "shutter":
|
258 |
+
effectcode = 'class="shutterset_%GALLERY_NAME%"';
|
259 |
+
break;
|
260 |
+
default:
|
261 |
+
break;
|
262 |
+
}
|
263 |
+
jQuery("#thumbCode").val(effectcode);
|
264 |
+
}
|
265 |
+
|
266 |
+
jQuery(document).ready( function($) {
|
267 |
+
//$('html,body').scrollTop(0);
|
268 |
+
//Set tabs.
|
269 |
+
$('#slider').tabs({ fxFade: true, fxSpeed: 'fast' }).css('display', 'block');
|
270 |
+
|
271 |
+
//Set colorpicker.
|
272 |
+
$('.picker').wpColorPicker();
|
273 |
+
|
274 |
+
//Set preview for watermark.
|
275 |
+
$('#wm-preview-select').on("nggAutocompleteDone", function() {
|
276 |
+
$('#wm-preview-image').attr("src", '<?php echo home_url( 'index.php' ); ?>' + '?callback=image&pid=' + this.value + '&mode=watermark');
|
277 |
+
$('#wm-preview-image-url').attr("href", '<?php echo home_url( 'index.php' ); ?>' + '?callback=image&pid=' + this.value + '&mode=watermark');
|
278 |
+
});
|
279 |
+
|
280 |
+
jQuery("#wm-preview-select").nggAutocomplete( {
|
281 |
+
type: 'image',domain: "<?php echo home_url('index.php', is_ssl() ? 'https' : 'http'); ?>"
|
282 |
+
});
|
283 |
+
});
|
284 |
+
</script>
|
285 |
+
<?php
|
286 |
+
}
|
287 |
+
|
288 |
+
/**
|
289 |
+
* Create array for tabs and add a filter for other plugins to inject more tabs
|
290 |
+
*
|
291 |
+
* @return array $tabs
|
292 |
+
*/
|
293 |
+
private function get_tabs() {
|
294 |
+
|
295 |
+
$tabs = array();
|
296 |
+
|
297 |
+
$tabs['general'] = __('General', 'nggallery');
|
298 |
+
$tabs['images'] = __('Images', 'nggallery');
|
299 |
+
$tabs['gallery'] = __( 'Gallery', 'nggallery' );
|
300 |
+
$tabs['effects'] = __('Effects', 'nggallery');
|
301 |
+
$tabs['watermark'] = __('Watermark', 'nggallery');
|
302 |
+
$tabs['slideshow'] = __('Slideshow', 'nggallery');
|
303 |
+
|
304 |
+
$tabs = apply_filters('ngg_settings_tabs', $tabs);
|
305 |
+
|
306 |
+
return $tabs;
|
307 |
+
|
308 |
+
}
|
309 |
+
|
310 |
+
/**
|
311 |
+
* Show the general options.
|
312 |
+
*/
|
313 |
+
private function tab_general() {
|
314 |
+
global $ngg;
|
315 |
+
?>
|
316 |
+
<h3><?php _e( 'General settings', 'nggallery' ); ?></h3>
|
317 |
<form name="generaloptions" method="post" action="<?php echo $this->filepath; ?>">
|
318 |
+
<?php wp_nonce_field('ngg_settings') ?>
|
319 |
+
<input type="hidden" name="page_options" value="gallerypath,silentUpgrade,deleteImg,useMediaRSS,usePicLens,usePermalinks,permalinkSlug,graphicLibrary,imageMagickDir,activateTags,appendType,maxImages" />
|
320 |
<table class="form-table ngg-options">
|
|
|
|
|
|
|
|
|
|
|
321 |
<tr>
|
322 |
+
<th><label for="gallerypath"><?php _e('Gallery path','nggallery'); ?></label></th>
|
323 |
+
<td>
|
324 |
+
<input <?php $this->readonly(is_multisite()); ?> type="text" class="regular-text code" name="gallerypath" id="gallerypath" value="<?php echo $ngg->options['gallerypath']; ?>" />
|
325 |
+
<p class="description"><?php esc_html_e('This is the default path for all galleries','nggallery') ?></p>
|
326 |
+
</td>
|
327 |
</tr>
|
328 |
+
<tr>
|
329 |
+
<th><?php _e('Silent database upgrade','nggallery'); ?></th>
|
330 |
+
<td>
|
331 |
+
<input <?php disabled(is_multisite()); ?> type="checkbox" name="silentUpgrade" id="silentUpgrade" value="true" <?php checked( $ngg->options['silentUpgrade']); ?> />
|
332 |
+
<label for="silentUpgrade"><?php _e('Update the database without notice.','nggallery') ?></label>
|
333 |
+
</td>
|
334 |
</tr>
|
335 |
<tr>
|
336 |
+
<th><?php _e('Image files','nggallery'); ?></th>
|
337 |
+
<td>
|
338 |
+
<input <?php disabled(is_multisite()); ?> type="checkbox" name="deleteImg" id="deleteImg" value="true" <?php checked( $ngg->options['deleteImg']); ?>>
|
339 |
+
<label for="deleteImg">
|
340 |
+
<?php _e("Delete files when removing a gallery from the database",'nggallery'); ?>
|
341 |
+
</label>
|
342 |
</td>
|
343 |
</tr>
|
344 |
<tr>
|
345 |
+
<th><?php _e('Select graphic library','nggallery'); ?></th>
|
346 |
+
<td>
|
347 |
+
<fieldset>
|
348 |
+
<label>
|
349 |
+
<input name="graphicLibrary" type="radio" value="gd" <?php checked('gd', $ngg->options['graphicLibrary']); ?>>
|
350 |
+
<?php _e('GD Library', 'nggallery');?>
|
351 |
+
</label><br>
|
352 |
+
<label>
|
353 |
+
<input name="graphicLibrary" type="radio" value="im" <?php checked('im', $ngg->options['graphicLibrary']); ?>>
|
354 |
+
<?php _e('ImageMagick (Experimental)', 'nggallery'); ?>
|
355 |
+
</label>
|
356 |
+
</fieldset>
|
357 |
+
<label>
|
358 |
+
<?php _e('Path to the ImageMagick library:', 'nggallery'); ?>
|
359 |
+
<input <?php $this->readonly(is_multisite()); ?> type="text" class="regular-text code" name="imageMagickDir" value="<?php echo $ngg->options['imageMagickDir']; ?>">
|
360 |
+
</label>
|
361 |
+
</td>
|
362 |
</tr>
|
363 |
<tr>
|
364 |
+
<th><?php _e('Media RSS feed','nggallery'); ?></th>
|
365 |
+
<td>
|
366 |
+
<input type="checkbox" name="useMediaRSS" id="useMediaRSS" value="true" <?php checked( $ngg->options['useMediaRSS']); ?>>
|
367 |
+
<label for="useMediaRSS"><?php esc_html_e('Add a RSS feed to you blog header. Useful for CoolIris/PicLens','nggallery') ?></label>
|
368 |
</td>
|
369 |
</tr>
|
370 |
+
<tr>
|
371 |
+
<th><?php _e('PicLens/CoolIris','nggallery'); ?> (<a href="http://www.cooliris.com">CoolIris</a>)</th>
|
372 |
+
<td>
|
373 |
+
<input type="checkbox" id="usePicLens" name="usePicLens" value="true" <?php checked( $ngg->options['usePicLens']); ?>>
|
374 |
+
<label for="usePicLens"><?php _e('Include support for PicLens and CoolIris','nggallery'); ?></label>
|
375 |
+
<p class="description"><?php _e('When activated, JavaScript is added to your site footer. Make sure that wp_footer is called in your theme.','nggallery') ?></p>
|
376 |
+
</td>
|
|
|
377 |
</tr>
|
378 |
+
</table>
|
379 |
+
<h3><?php _e('Permalinks','nggallery') ?></h3>
|
380 |
+
<table class="form-table ngg-options">
|
381 |
<tr>
|
382 |
+
<th><?php _e('Use permalinks','nggallery'); ?></th>
|
383 |
<td>
|
384 |
+
<input type="checkbox" name="usePermalinks" id="usePermalinks" value="true" <?php checked( $ngg->options['usePermalinks']); ?>>
|
385 |
+
<label for="usePermalinks"><?php _e('Adds a static link to all images','nggallery'); ?></label>
|
386 |
+
<p class="description"><?php _e('When activating this option, you need to update your permalink structure once','nggallery'); ?></p>
|
387 |
+
</td>
|
388 |
</tr>
|
389 |
<tr>
|
390 |
+
<th><label for="permalinkSlug"><?php _e('Gallery slug:','nggallery'); ?></label></th>
|
391 |
+
<td><input type="text" class="regular-text code" name="permalinkSlug" id="permalinkSlug" value="<?php echo $ngg->options['permalinkSlug']; ?>"></td>
|
392 |
+
</tr>
|
393 |
+
<tr>
|
394 |
+
<th><label for="createslugs"><?php _e('Recreate URLs','nggallery'); ?></label></th>
|
395 |
+
<td>
|
396 |
+
<input type="submit" name="createslugs" id="createslugs" class="button-secondary" value="<?php _e('Start now »','nggallery') ;?>"/>
|
397 |
+
<p class="description"><?php _e( "If you've changed these settings, you'll have to recreate the URLs.",'nggallery'); ?></p>
|
398 |
+
</td>
|
399 |
</tr>
|
400 |
</table>
|
401 |
+
<h3><?php _e('Related images','nggallery'); ?></h3>
|
402 |
<table class="form-table ngg-options">
|
403 |
<tr>
|
404 |
+
<th><?php _e('Add related images','nggallery'); ?></th>
|
405 |
+
<td>
|
406 |
+
<input name="activateTags" id="activateTags" type="checkbox" value="true" <?php checked( $ngg->options['activateTags']); ?>>
|
407 |
+
<label for="activateTags"><?php _e('This will add related images to every post','nggallery'); ?></label>
|
408 |
</td>
|
409 |
</tr>
|
410 |
<tr>
|
411 |
+
<th><?php _e('Match with','nggallery'); ?></th>
|
412 |
+
<td>
|
413 |
+
<fieldset>
|
414 |
+
<label>
|
415 |
+
<input name="appendType" type="radio" value="category" <?php checked('category', $ngg->options['appendType']); ?>>
|
416 |
+
<?php _e('Categories', 'nggallery') ;?>
|
417 |
+
</label>
|
418 |
+
<br>
|
419 |
+
<label>
|
420 |
+
<input name="appendType" type="radio" value="tags" <?php checked('tags', $ngg->options['appendType']); ?>>
|
421 |
+
<?php _e('Tags', 'nggallery') ;?>
|
422 |
+
</label>
|
423 |
+
</fieldset>
|
424 |
</td>
|
425 |
</tr>
|
426 |
<tr>
|
427 |
+
<th><label for="maxImages"><?php _e('Max. number of images','nggallery'); ?></label></th>
|
428 |
+
<td>
|
429 |
+
<input name="maxImages" id="maxImages" type="number" step="1" min="1" value="<?php echo $ngg->options['maxImages']; ?>" class="small-text">
|
430 |
+
<p class="description"><?php _e('0 will show all images','nggallery'); ?></p>
|
431 |
</td>
|
432 |
</tr>
|
433 |
</table>
|
434 |
+
<?php submit_button( __('Save Changes'), 'primary', 'updateoption' ); ?>
|
435 |
</form>
|
436 |
+
<?php
|
437 |
+
}
|
438 |
+
|
439 |
+
/**
|
440 |
+
* Show the image and thumbnail related options.
|
441 |
+
*/
|
442 |
+
private function tab_images() {
|
443 |
+
global $ngg;
|
444 |
+
?>
|
445 |
+
<h3><?php _e('Image settings','nggallery'); ?></h3>
|
446 |
+
<form name="imagesettings" method="POST" action="<?php echo $this->filepath.'#images'; ?>">
|
447 |
+
<?php wp_nonce_field('ngg_settings') ?>
|
448 |
+
<input type="hidden" name="page_options" value="imgResize,imgWidth,imgHeight,imgQuality,imgBackup,imgAutoResize,thumbwidth,thumbheight,thumbfix,thumbquality">
|
449 |
<table class="form-table ngg-options">
|
450 |
+
<tr>
|
451 |
+
<th><?php _e('Resize images','nggallery') ?></th>
|
452 |
+
<td>
|
453 |
+
<label for="imgWidth"><?php _e('Width','nggallery') ?></label>
|
454 |
+
<input type="number" step="1" min="0" class="small-text" name="imgWidth" id="imgWidth" value="<?php echo $ngg->options['imgWidth']; ?>">
|
455 |
+
<label for="imgHeight"><?php _e('Height','nggallery') ?></label>
|
456 |
+
<input type="number" step="1" min="0" class="small-text" name="imgHeight" id="imgHeight" value="<?php echo $ngg->options['imgHeight']; ?>">
|
457 |
+
<p class="description"><?php _e('Width and height (in pixels). NextCellent Gallery will keep the ratio size.','nggallery') ?></p>
|
458 |
+
</td>
|
459 |
</tr>
|
460 |
+
<tr>
|
461 |
+
<th><label for="imgQuality"><?php _e('Image quality','nggallery'); ?></label></th>
|
462 |
+
<td><input type="number" step="1" min="0" max="100" class="small-text" name="imgQuality" id="imgQuality" value="<?php echo $ngg->options['imgQuality']; ?>">%</td>
|
|
|
463 |
</tr>
|
464 |
<tr>
|
465 |
+
<th><?php _e('Backup original','nggallery'); ?></th>
|
466 |
+
<td>
|
467 |
+
<label>
|
468 |
+
<input type="checkbox" name="imgBackup" value="true" <?php checked( $ngg->options['imgBackup']); ?>>
|
469 |
+
<?php _e('Create a backup for the resized images','nggallery'); ?>
|
470 |
+
</label>
|
471 |
+
</td>
|
472 |
</tr>
|
473 |
<tr>
|
474 |
+
<th><?php _e('Automatically resize','nggallery'); ?></th>
|
475 |
+
<td>
|
476 |
+
<label>
|
477 |
+
<input type="checkbox" name="imgAutoResize" value="1" <?php checked( $ngg->options['imgAutoResize']); ?>>
|
478 |
+
<?php _e('Automatically resize images on upload.','nggallery') ?>
|
479 |
+
</label>
|
480 |
+
</td>
|
481 |
</tr>
|
482 |
</table>
|
483 |
+
<h3><?php _e('Thumbnail settings','nggallery'); ?></h3>
|
484 |
+
<p><?php _e('Please note: if you change these settings, you need to recreate the thumbnails under -> Manage Gallery .', 'nggallery') ?></p>
|
|
|
485 |
<table class="form-table ngg-options">
|
486 |
+
<tr>
|
487 |
+
<th><?php _e('Thumbnail size','nggallery'); ?></th>
|
488 |
<td>
|
489 |
+
<label for="thumbwidth"><?php _e('Width','nggallery') ?></label>
|
490 |
+
<input type="number" step="1" min="0" class="small-text" name="thumbwidth" id="thumbwidth" value="<?php echo $ngg->options['thumbwidth']; ?>">
|
491 |
+
<label for="thumbheight"><?php _e('Height','nggallery') ?></label>
|
492 |
+
<input type="number" step="1" min="0" class="small-text" name="thumbheight" id="thumbheight" value="<?php echo $ngg->options['thumbheight']; ?>">
|
493 |
+
<p class="description"><?php _e('These values are maximum values.','nggallery'); ?></p>
|
494 |
+
</td>
|
495 |
</tr>
|
496 |
+
<tr>
|
497 |
+
<th><?php _e('Fixed size','nggallery'); ?></th>
|
498 |
+
<td>
|
499 |
+
<input type="checkbox" name="thumbfix" id="thumbfix" value="true" <?php checked( $ngg->options['thumbfix']); ?>>
|
500 |
+
<label for="thumbfix"><?php _e('Ignore the aspect ratio, so no portrait thumbnails.','nggallery') ?></label>
|
501 |
+
</td>
|
502 |
</tr>
|
503 |
+
<tr>
|
504 |
+
<th><label for="thumbquality"><?php _e('Thumbnail quality','nggallery'); ?></label></th>
|
505 |
+
<td><input type="number" step="1" min="0" max="100" class="small-text" name="thumbquality" id="thumbquality" value="<?php echo $ngg->options['thumbquality']; ?>">%</td>
|
506 |
</tr>
|
507 |
</table>
|
508 |
+
<h3><?php _e('Single picture','nggallery') ?></h3>
|
509 |
<table class="form-table ngg-options">
|
510 |
<tr>
|
511 |
+
<th><?php _e('Clear cache folder','nggallery'); ?></th>
|
512 |
+
<td><input type="submit" name="clearcache" class="button-secondary" value="<?php _e('Proceed now »','nggallery') ;?>"/></td>
|
513 |
</tr>
|
514 |
</table>
|
515 |
+
<?php submit_button( __('Save Changes'), 'primary', 'updateoption' ); ?>
|
516 |
</form>
|
517 |
|
518 |
+
<?php
|
519 |
+
}
|
520 |
+
|
521 |
+
/**
|
522 |
+
* Show gallery related settings
|
523 |
+
*/
|
524 |
+
private function tab_gallery() {
|
525 |
+
global $ngg;
|
526 |
+
?>
|
527 |
+
<h3><?php _e('Gallery settings','nggallery'); ?></h3>
|
528 |
+
<form name="galleryform" method="POST" action="<?php echo $this->filepath.'#gallery'; ?>">
|
529 |
+
<?php wp_nonce_field('ngg_settings') ?>
|
530 |
+
<input type="hidden" name="page_options" value="galNoPages,galImages,galColumns,galShowSlide,galTextSlide,galTextGallery,galShowOrder,galImgBrowser,galSort,galSortDir,galHiddenImg,galAjaxNav">
|
531 |
<table class="form-table ngg-options">
|
532 |
<tr>
|
533 |
+
<th><?php _e('Inline gallery','nggallery') ?></th>
|
534 |
+
<td>
|
535 |
+
<input name="galNoPages" id="galNoPages" type="checkbox" value="true" <?php checked( $ngg->options['galNoPages']); ?>>
|
536 |
+
<label for="galNoPages"><?php _e('Galleries will not be shown on a subpage, but on the same page.','nggallery') ?></label>
|
537 |
</td>
|
538 |
</tr>
|
539 |
<tr>
|
540 |
+
<th><label for="galImages"><?php _e('Images per page','nggallery'); ?></label></th>
|
541 |
+
<td>
|
542 |
+
<input type="number" step="1" min="0" class="small-text" name="galImages" id="galImages" value="<?php echo $ngg->options['galImages']; ?>">
|
543 |
+
<?php _e( 'images', 'nggallery'); ?>
|
544 |
+
<p class="description"><?php _e('0 will disable pagination and show all images on one page.','nggallery') ?></p>
|
545 |
</td>
|
546 |
</tr>
|
547 |
<tr>
|
548 |
+
<th><label for="galColumns"><?php esc_html_e('Columns','nggallery'); ?></label></th>
|
549 |
+
<td>
|
550 |
+
<input type="number" step="1" min="0" class="small-text" name="galColumns" id="galColumns" value="<?php echo $ngg->options['galColumns']; ?>">
|
551 |
+
<?php _e( 'columns per page', 'nggallery'); ?>
|
552 |
+
<p class="description"><?php _e('0 will display as much columns as possible. This is normally only required for captions below the images.','nggallery') ?></p>
|
553 |
</td>
|
554 |
</tr>
|
555 |
<tr>
|
556 |
+
<th><?php _e('Slideshow','nggallery'); ?></th>
|
557 |
+
<td>
|
558 |
+
<label>
|
559 |
+
<input name="galShowSlide" type="checkbox" value="true" <?php checked( $ngg->options['galShowSlide']); ?>>
|
560 |
+
<?php _e('Enable slideshow','nggallery'); ?>
|
561 |
+
</label>
|
562 |
+
<br>
|
563 |
+
<label>
|
564 |
+
<?php _e('Text to show:','nggallery'); ?>
|
565 |
+
<input type="text" class="regular-text" name="galTextSlide" value="<?php echo $ngg->options['galTextSlide'] ?>">
|
566 |
+
</label>
|
567 |
+
<input type="text" name="galTextGallery" value="<?php echo $ngg->options['galTextGallery'] ?>" class="regular-text">
|
568 |
+
<p class="description"> <?php _e('This is the text the visitors will have to click to switch between display modes.','nggallery'); ?></p>
|
569 |
</td>
|
570 |
</tr>
|
571 |
<tr>
|
572 |
+
<th><?php _e('Show first','nggallery'); ?></th>
|
573 |
+
<td>
|
574 |
+
<fieldset>
|
575 |
+
<label>
|
576 |
+
<input name="galShowOrder" type="radio" value="gallery" <?php checked('gallery', $ngg->options['galShowOrder']); ?>>
|
577 |
+
<?php _e('Thumbnails', 'nggallery') ;?>
|
578 |
+
</label>
|
579 |
+
<br>
|
580 |
+
<label>
|
581 |
+
<input name="galShowOrder" type="radio" value="slide" <?php checked('slide', $ngg->options['galShowOrder']); ?>>
|
582 |
+
<?php _e('Slideshow', 'nggallery') ;?>
|
583 |
+
</label>
|
584 |
+
</fieldset>
|
585 |
+
<p class="description"><?php _e( 'Choose what visitors will see first.', 'nggallery'); ?></p>
|
586 |
</td>
|
587 |
</tr>
|
588 |
<tr>
|
589 |
+
<th><?php _e('ImageBrowser','nggallery'); ?></th>
|
590 |
+
<td>
|
591 |
+
<label>
|
592 |
+
<input name="galImgBrowser" type="checkbox" value="true" <?php checked( $ngg->options['galImgBrowser']); ?>>
|
593 |
+
<?php _e('Use ImageBrowser instead of another effect.', 'nggallery'); ?>
|
594 |
+
</label>
|
595 |
</td>
|
596 |
</tr>
|
597 |
<tr>
|
598 |
+
<th><?php _e('Hidden images','nggallery'); ?></th>
|
599 |
+
<td>
|
600 |
+
<label>
|
601 |
+
<input name="galHiddenImg" type="checkbox" value="true" <?php checked( $ngg->options['galHiddenImg']); ?>>
|
602 |
+
<?php _e('Loads all images for the modal window, when pagination is used (like Thickbox, Lightbox etc.).','nggallery'); ?>
|
603 |
+
</label>
|
604 |
+
<p class="description"> <?php _e('Note: this increases the page load (possibly a lot)', 'nggallery'); ?>
|
605 |
</td>
|
606 |
</tr>
|
607 |
<tr>
|
608 |
+
<th><?php _e('AJAX pagination','nggallery'); ?></th>
|
609 |
+
<td>
|
610 |
+
<label>
|
611 |
+
<input name="galAjaxNav" type="checkbox" value="true" <?php checked( $ngg->options['galAjaxNav']); ?>>
|
612 |
+
<?php _e('Use AJAX pagination to browse images without reloading the page.','nggallery'); ?>
|
613 |
+
</label>
|
614 |
+
<p class="description"><?php esc_html_e('Note: works only in combination with the Shutter effect.', 'nggallery'); ?></p>
|
615 |
</td>
|
616 |
</tr>
|
617 |
</table>
|
618 |
+
<h3><?php _e('Sort options','nggallery'); ?></h3>
|
619 |
<table class="form-table ngg-options">
|
620 |
<tr>
|
621 |
+
<th><?php _e('Sort thumbnails','nggallery'); ?></th>
|
622 |
<td>
|
623 |
+
<fieldset>
|
624 |
+
<label>
|
625 |
+
<input name="galSort" type="radio" value="sortorder" <?php checked('sortorder', $ngg->options['galSort']); ?>>
|
626 |
+
<?php _e('Custom order', 'nggallery'); ?>
|
627 |
+
</label><br>
|
628 |
+
<label>
|
629 |
+
<input name="galSort" type="radio" value="pid" <?php checked('pid', $ngg->options['galSort']); ?>>
|
630 |
+
<?php _e('Image ID', 'nggallery'); ?>
|
631 |
+
</label><br>
|
632 |
+
<label>
|
633 |
+
<input name="galSort" type="radio" value="filename" <?php checked('filename', $ngg->options['galSort']); ?>>
|
634 |
+
<?php _e('File name', 'nggallery') ;?>
|
635 |
+
</label><br>
|
636 |
+
<label>
|
637 |
+
<input name="galSort" type="radio" value="alttext" <?php checked('alttext', $ngg->options['galSort']); ?>>
|
638 |
+
<?php _e('Alt / Title text', 'nggallery') ;?>
|
639 |
+
</label><br>
|
640 |
+
<label>
|
641 |
+
<input name="galSort" type="radio" value="imagedate" <?php checked('imagedate', $ngg->options['galSort']); ?>>
|
642 |
+
<?php _e('Date / Time', 'nggallery') ;?>
|
643 |
+
</label>
|
644 |
+
</fieldset>
|
645 |
+
|
646 |
</td>
|
647 |
</tr>
|
648 |
<tr>
|
649 |
+
<th><?php _e('Sort direction','nggallery') ?></th>
|
650 |
+
<td>
|
651 |
+
<label>
|
652 |
+
<input name="galSortDir" type="radio" value="ASC" <?php checked('ASC', $ngg->options['galSortDir']); ?>>
|
653 |
+
<?php _e('Ascending', 'nggallery') ;?>
|
654 |
+
</label><br>
|
655 |
+
<label>
|
656 |
+
<input name="galSortDir" type="radio" value="DESC" <?php checked('DESC', $ngg->options['galSortDir']); ?>>
|
657 |
+
<?php _e('Descending', 'nggallery') ;?>
|
658 |
+
</label>
|
659 |
</td>
|
660 |
</tr>
|
661 |
</table>
|
662 |
+
<?php submit_button( __('Save Changes'), 'primary', 'updateoption' ); ?>
|
663 |
</form>
|
664 |
+
<?php
|
665 |
+
}
|
666 |
+
|
667 |
+
/**
|
668 |
+
* Show the effect related settings.
|
669 |
+
*/
|
670 |
+
private function tab_effects() {
|
671 |
+
global $ngg;
|
672 |
+
?>
|
673 |
+
<h3><?php _e('Effects','nggallery'); ?></h3>
|
674 |
+
<form name="effectsform" method="POST" action="<?php echo $this->filepath.'#effects'; ?>">
|
675 |
+
<?php wp_nonce_field('ngg_settings') ?>
|
676 |
+
<input type="hidden" name="page_options" value="thumbEffect,thumbCode">
|
677 |
+
<p>
|
678 |
+
<?php _e('Here you can select the thumbnail effect, NextCellent Gallery will integrate the required HTML code in the images. Please note that only the Shutter and Thickbox effect will automatic added to your theme.','nggallery'); ?>
|
679 |
+
<?php _e('With the placeholder <strong> %GALLERY_NAME% </strong> you can activate a navigation through the images (depend on the effect). Change the code line only , when you use a different thumbnail effect or you know what you do.','nggallery'); ?>
|
680 |
+
</p>
|
681 |
<table class="form-table ngg-options">
|
682 |
+
<tr>
|
683 |
+
<th><label for="thumbEffect"><?php _e('JavaScript Thumbnail effect','nggallery') ?></label></th>
|
684 |
<td>
|
685 |
+
<select size="1" id="thumbEffect" name="thumbEffect" onchange="insertcode(this.value)">
|
686 |
+
<option value="none" <?php selected('none', $ngg->options['thumbEffect']); ?>><?php _e('None', 'nggallery') ;?></option>
|
687 |
+
<option value="thickbox" <?php selected('thickbox', $ngg->options['thumbEffect']); ?>><?php _e('Thickbox', 'nggallery') ;?></option>
|
688 |
+
<option value="lightbox" <?php selected('lightbox', $ngg->options['thumbEffect']); ?>><?php _e('Lightbox', 'nggallery') ;?></option>
|
689 |
+
<option value="highslide" <?php selected('highslide', $ngg->options['thumbEffect']); ?>><?php _e('Highslide', 'nggallery') ;?></option>
|
690 |
+
<option value="shutter" <?php selected('shutter', $ngg->options['thumbEffect']); ?>><?php _e('Shutter', 'nggallery') ;?></option>
|
691 |
+
<option value="custom" <?php selected('custom', $ngg->options['thumbEffect']); ?>><?php _e('Custom', 'nggallery') ;?></option>
|
692 |
+
</select>
|
693 |
</td>
|
694 |
</tr>
|
695 |
+
<tr>
|
696 |
+
<th><label for="thumbCode"><?php _e('Link Code line','nggallery'); ?></label></th>
|
697 |
+
<td><textarea class="normal-text code" id="thumbCode" name="thumbCode" cols="50" rows="5"><?php echo htmlspecialchars(stripslashes($ngg->options['thumbCode'])); ?></textarea></td>
|
698 |
</tr>
|
699 |
</table>
|
700 |
+
<?php submit_button( __('Save Changes'), 'primary', 'updateoption' ) ?>
|
701 |
</form>
|
702 |
+
<?php
|
703 |
+
}
|
704 |
|
705 |
+
/**
|
706 |
+
* Show watermark related settings.
|
707 |
+
*/
|
708 |
+
private function tab_watermark() {
|
709 |
+
|
710 |
+
global $ngg;
|
711 |
+
|
712 |
+
// take the first image as sample
|
713 |
+
$image_array = nggdb::find_last_images(0, 1);
|
714 |
+
$ngg_image = $image_array[0];
|
715 |
+
$imageID = $ngg_image->pid;
|
716 |
+
|
717 |
+
?>
|
718 |
+
<h3><?php _e('Watermark','nggallery'); ?></h3>
|
719 |
+
<p><?php _e('Please note : you can only activate the watermark under -> Manage Galleries. This action cannot be undone.', 'nggallery') ?></p>
|
720 |
+
<form name="watermarkform" method="POST" action="<?php echo $this->filepath.'#watermark'; ?>">
|
721 |
+
<?php wp_nonce_field('ngg_settings') ?>
|
722 |
+
<input type="hidden" name="page_options" value="wmPos,wmXpos,wmYpos,wmType,wmPath,wmFont,wmSize,wmColor,wmText,wmOpaque" />
|
723 |
+
<div id="wm-preview">
|
724 |
+
<h3><?php esc_html_e('Preview','nggallery') ?></h3>
|
725 |
+
<label for="wm-preview-select"><?php _e('Select an image','nggallery'); ?></label>
|
726 |
+
<select id="wm-preview-select" name="wm-preview-img" style="width: 200px">
|
727 |
+
<?php echo '<option value="' . $ngg_image->pid . '">' . $ngg_image->pid . ' - ' . $ngg_image->alttext . '</option>'; ?>
|
728 |
+
</select>
|
729 |
+
<div id="wm-preview-container">
|
730 |
+
<a id="wm-preview-image-url" href="<?php echo home_url( 'index.php' ); ?>?callback=image&pid=<?php echo intval( $imageID ); ?>&mode=watermark" target="_blank" title="<?php _e("View full image", 'nggallery'); ?>">
|
731 |
+
<img id="wm-preview-image" src="<?php echo home_url( 'index.php' ); ?>?callback=image&pid=<?php echo intval( $imageID ); ?>&mode=watermark" />
|
732 |
+
</a>
|
733 |
+
</div>
|
734 |
+
<h3><?php _e('Position','nggallery') ?></h3>
|
735 |
+
<table id="wm-position">
|
736 |
+
<tr>
|
737 |
+
<td>
|
738 |
+
<strong><?php _e('Position','nggallery') ?></strong>
|
739 |
+
<table>
|
740 |
+
<tr>
|
741 |
+
<td><input type="radio" name="wmPos" value="topLeft" <?php checked('topLeft', $ngg->options['wmPos']); ?> /></td>
|
742 |
+
<td><input type="radio" name="wmPos" value="topCenter" <?php checked('topCenter', $ngg->options['wmPos']); ?> /></td>
|
743 |
+
<td><input type="radio" name="wmPos" value="topRight" <?php checked('topRight', $ngg->options['wmPos']); ?> /></td>
|
744 |
+
</tr>
|
745 |
+
<tr>
|
746 |
+
<td><input type="radio" name="wmPos" value="midLeft" <?php checked('midLeft', $ngg->options['wmPos']); ?> /></td>
|
747 |
+
<td><input type="radio" name="wmPos" value="midCenter" <?php checked('midCenter', $ngg->options['wmPos']); ?> /></td>
|
748 |
+
<td><input type="radio" name="wmPos" value="midRight" <?php checked('midRight', $ngg->options['wmPos']); ?> /></td>
|
749 |
+
</tr>
|
750 |
+
<tr>
|
751 |
+
<td><input type="radio" name="wmPos" value="botLeft" <?php checked('botLeft', $ngg->options['wmPos']); ?> /></td>
|
752 |
+
<td><input type="radio" name="wmPos" value="botCenter" <?php checked('botCenter', $ngg->options['wmPos']); ?> /></td>
|
753 |
+
<td><input type="radio" name="wmPos" value="botRight" <?php checked('botRight', $ngg->options['wmPos']); ?> /></td>
|
754 |
+
</tr>
|
755 |
+
</table>
|
756 |
+
</td>
|
757 |
+
<td>
|
758 |
+
<strong><?php _e('Offset','nggallery') ?></strong>
|
759 |
+
<table border="0">
|
760 |
+
<tr>
|
761 |
+
<td><label for="wmXpos">x:</label></td>
|
762 |
+
<td><input type="number" step="1" min="0" class="small-text" name="wmXpos" id="wmXpos" value="<?php echo $ngg->options['wmXpos'] ?>">px</td>
|
763 |
+
</tr>
|
764 |
+
<tr>
|
765 |
+
<td><label for="wmYpos">y:</label></td>
|
766 |
+
<td><input type="number" step="1" min="0" class="small-text" name="wmYpos" id="wmYpos" value="<?php echo $ngg->options['wmYpos'] ?>" />px</td>
|
767 |
+
</tr>
|
768 |
+
</table>
|
769 |
+
</td>
|
770 |
+
</tr>
|
771 |
</table>
|
772 |
</div>
|
773 |
+
<h3><label><input type="radio" name="wmType" value="image" <?php checked('image', $ngg->options['wmType']); ?>><?php _e('Use image as watermark','nggallery') ?></label></h3>
|
|
|
774 |
<table class="wm-table form-table">
|
775 |
<tr>
|
776 |
+
<th><label for="wmPath"><?php _e('URL to file','nggallery'); ?></label></th>
|
777 |
+
<td><input type="text" class="regular-text code" name="wmPath" id="wmPath" value="<?php echo $ngg->options['wmPath']; ?>"><br>
|
|
|
778 |
</tr>
|
779 |
</table>
|
780 |
+
<h3><label><input type="radio" name="wmType" value="text" <?php checked('text', $ngg->options['wmType']); ?>><?php _e('Use text as watermark','nggallery') ?></label></h3>
|
781 |
<table class="wm-table form-table">
|
782 |
<tr>
|
783 |
+
<th><?php _e('Font','nggallery') ?></th>
|
784 |
+
<td>
|
785 |
+
<select name="wmFont" size="1">
|
786 |
+
<?php
|
787 |
+
$fontlist = $this->get_fonts();
|
788 |
foreach ( $fontlist as $fontfile ) {
|
789 |
+
echo "\n".'<option value="'.$fontfile.'" '. selected($fontfile, $ngg->options['wmFont']).' >'.$fontfile.'</option>';
|
790 |
}
|
791 |
?>
|
792 |
+
</select><br>
|
793 |
+
<span>
|
794 |
+
<?php if ( !function_exists('ImageTTFBBox') ) {
|
795 |
+
_e( 'This function will not work, cause you need the FreeType library', 'nggallery' );
|
796 |
+
} else {
|
797 |
+
_e( 'You can upload more fonts in the folder <strong>nggallery/fonts</strong>', 'nggallery' );
|
798 |
+
} ?>
|
799 |
+
</span>
|
800 |
</td>
|
801 |
</tr>
|
802 |
<tr>
|
803 |
+
<th><label for="wmSize"><?php _e('Size','nggallery'); ?></label></th>
|
804 |
+
<td><input type="number" step="1" min="0" class="small-text" name="wmSize" id="wmSize" value="<?php echo $ngg->options['wmSize']; ?>">px</td>
|
805 |
</tr>
|
806 |
<tr>
|
807 |
+
<th><label for="wmColor"><?php _e('Color','nggallery'); ?></label></th>
|
808 |
+
<td><input class="picker" type="text" id="wmColor" name="wmColor" value="<?php echo $ngg->options['wmColor'] ?>">
|
809 |
</tr>
|
810 |
<tr>
|
811 |
+
<th><label for="wmText"><?php _e('Text','nggallery'); ?></label></th>
|
812 |
+
<td><textarea name="wmText" id="wmText" cols="50" rows="5" class="normal-text"><?php echo $ngg->options['wmText'] ?></textarea></td>
|
813 |
</tr>
|
814 |
<tr>
|
815 |
+
<th><label for="wmOpaque"><?php _e('Opaque','nggallery'); ?></label></th>
|
816 |
+
<td><input type="number" step="1" min="0" max="100" class="small-text" name="wmOpaque" id="wmOpaque" value="<?php echo $ngg->options['wmOpaque'] ?>">%</td>
|
817 |
</tr>
|
818 |
</table>
|
819 |
+
<div class="clear"></div>
|
820 |
+
<?php submit_button( __('Save Changes'), 'primary', 'updateoption' ); ?>
|
821 |
</form>
|
822 |
+
<?php
|
823 |
+
}
|
824 |
+
|
825 |
+
/**
|
826 |
+
* Get the fonts for the slideshow.
|
827 |
+
*
|
828 |
+
* @return array The fonts.
|
829 |
+
*/
|
830 |
+
private function get_fonts() {
|
831 |
+
|
832 |
+
$ttf_fonts = array ();
|
833 |
+
|
834 |
+
// Files in wp-content/plugins/nggallery/fonts directory
|
835 |
+
$plugin_root = NGGALLERY_ABSPATH . 'fonts';
|
836 |
+
|
837 |
+
$plugins_dir = @ dir($plugin_root);
|
838 |
+
if ($plugins_dir) {
|
839 |
+
while (($file = $plugins_dir->read()) !== false) {
|
840 |
+
if (preg_match('|^\.+$|', $file))
|
841 |
+
continue;
|
842 |
+
if (is_dir($plugin_root.'/'.$file)) {
|
843 |
+
$plugins_subdir = @ dir($plugin_root.'/'.$file);
|
844 |
+
if ($plugins_subdir) {
|
845 |
+
while (($subfile = $plugins_subdir->read()) !== false) {
|
846 |
+
if (preg_match('|^\.+$|', $subfile))
|
847 |
+
continue;
|
848 |
+
if (preg_match('|\.ttf$|', $subfile))
|
849 |
+
$ttf_fonts[] = "$file/$subfile";
|
850 |
+
}
|
851 |
+
}
|
852 |
+
} else {
|
853 |
+
if (preg_match('|\.ttf$|', $file))
|
854 |
+
$ttf_fonts[] = $file;
|
855 |
+
}
|
856 |
+
}
|
857 |
+
}
|
858 |
+
|
859 |
+
return $ttf_fonts;
|
860 |
+
}
|
861 |
+
|
862 |
+
/**
|
863 |
+
* Show slideshow related settings
|
864 |
+
*/
|
865 |
+
private function tab_slideshow() {
|
866 |
+
|
867 |
+
global $ngg;
|
868 |
+
?>
|
869 |
+
<form name="player_options" method="POST" action="<?php echo $this->filepath.'#slideshow'; ?>">
|
870 |
+
<?php wp_nonce_field('ngg_settings'); ?>
|
871 |
+
<input type="hidden" name="page_options" value="irAutoDim,slideFx,irWidth,irHeight,irRotatetime,irLoop,irDrag,irNavigation,irNavigationDots,irAutoplay,irAutoplayTimeout,irAutoplayHover,irNumber,irClick" />
|
872 |
+
<h3><?php _e('Slideshow','nggallery'); ?></h3>
|
873 |
<table class="form-table ngg-options">
|
874 |
<tr>
|
875 |
+
<th><?php _e('Fit to space','nggallery'); ?></th>
|
876 |
+
<td>
|
877 |
+
<input type="checkbox" name="irAutoDim" id="irAutoDim" value="true" <?php checked( $ngg->options['irAutoDim']); ?>">
|
878 |
+
<label for="irAutoDim"><?php _e( "Let the slideshow fit in the available space.", 'nggallery'); ?></label>
|
879 |
+
</td>
|
880 |
</tr>
|
881 |
<tr>
|
882 |
+
<th><?php _e('Default size','nggallery'); ?></th>
|
883 |
<td>
|
884 |
+
<label for="irWidth"><?php _e('Width','nggallery'); ?></label>
|
885 |
+
<input <?php $this->readonly($ngg->options['irAutoDim']); ?> type="number" step="1" min="0" class="small-text" name="irWidth" id="irWidth" value="<?php echo $ngg->options['irWidth']; ?>">
|
886 |
+
<label for="irHeight"><?php _e('Height','nggallery'); ?></label>
|
887 |
+
<input <?php $this->readonly($ngg->options['irAutoDim']); ?> type="number" step="1" min="0" class="small-text" name="irHeight" id="irHeight" value="<?php echo $ngg->options['irHeight']; ?>">
|
888 |
</td>
|
889 |
</tr>
|
890 |
<tr>
|
891 |
+
<th><label for="slideFx"><?php _e('Transition / Fade effect','nggallery'); ?></label></th>
|
892 |
<td>
|
893 |
+
<select size="1" name="slideFx" id="slideFx">
|
894 |
+
<?php
|
895 |
$options = array(
|
896 |
__( 'Attention Seekers', 'nggallery' ) => array( "bounce", "flash", "pulse", "rubberBand", "shake", "swing", "tada", "wobble"),
|
897 |
__( 'Bouncing Entrances', 'nggallery' ) => array( "bounceIn", "bounceInDown", "bounceInLeft", "bounceInRight", "bounceInUp" ),
|
906 |
);
|
907 |
|
908 |
foreach( $options as $option => $val ) {
|
909 |
+
echo $this->convert_fx_to_optgroup( $val, $option );
|
910 |
}
|
911 |
?>
|
912 |
</select>
|
913 |
+
<p class="description">
|
914 |
+
<?php _e("These effects are powered by"); ?> <strong>animate.css</strong>. <a target="_blank" href="http://daneden.github.io/animate.css/"><?php _e("Click here for examples of all effects and to learn more."); ?></a></p>
|
915 |
+
</td>
|
916 |
</tr>
|
|
|
917 |
<tr>
|
918 |
+
<th><?php _e('Loop','nggallery') ?></th>
|
919 |
+
<td>
|
920 |
+
<input type="checkbox" name="irLoop" id="irLoop" value="true" <?php checked( $ngg->options['irLoop']); ?>">
|
921 |
+
<label for="irLoop"><?php _e( "Infinity loop. Duplicate last and first items to get loop illusion.", 'nggallery'); ?></label>
|
922 |
+
</td>
|
923 |
</tr>
|
924 |
<tr>
|
925 |
+
<th><?php _e('Mouse/touch drag','nggallery') ?></th>
|
926 |
+
<td>
|
927 |
+
<input type="checkbox" name="irDrag" id="irDrag" value="true" <?php checked( $ngg->options['irDrag'] ); ?>">
|
928 |
+
<label for="irDrag"><?php _e( "Enable dragging with the mouse (or touch).", 'nggallery'); ?></label>
|
929 |
+
</td>
|
930 |
</tr>
|
931 |
<tr>
|
932 |
+
<th><?php _e('Previous / Next','nggallery') ?></th>
|
933 |
+
<td>
|
934 |
+
<input type="checkbox" name="irNavigation" id="irNavigation" value="true" <?php checked( $ngg->options['irNavigation'] ); ?>>
|
935 |
+
<label for="irNavigation"><?php _e( "Show next/previous buttons.", 'nggallery'); ?></label>
|
936 |
+
</td>
|
937 |
</tr>
|
938 |
<tr>
|
939 |
+
<th><?php _e('Show dots','nggallery') ?></th>
|
940 |
+
<td>
|
941 |
+
<input type="checkbox" name="irNavigationDots" id="irNavigationDots" value="true" <?php checked( $ngg->options['irNavigationDots'] ); ?>>
|
942 |
+
<label for="irNavigationDots"><?php _e( "Show dots for each image.", 'nggallery'); ?></label>
|
943 |
+
</td>
|
944 |
</tr>
|
945 |
<tr>
|
946 |
+
<th><?php _e('Autoplay','nggallery') ?></th>
|
947 |
+
<td>
|
948 |
+
<input type="checkbox" name="irAutoplay" id="irAutoplay" value="true" <?php checked( $ngg->options['irAutoplay'] ); ?>>
|
949 |
+
<label for="irAutoplay"><?php _e( "Automatically play the images.", 'nggallery'); ?></label>
|
950 |
+
</td>
|
951 |
</tr>
|
952 |
<tr>
|
953 |
+
<th><label for="irRotatetime"><?php _e('Duration','nggallery') ?></label></th>
|
954 |
+
<td>
|
955 |
+
<input <?php $this->readonly( false, $ngg->options['irAutoplay'] ); ?> type="number" step="1" min="0" class="small-text" name="irRotatetime" id="irRotatetime" value="<?php echo $ngg->options['irRotatetime'] ?>">
|
956 |
+
<?php _e('sec.', 'nggallery') ;?>
|
957 |
+
</td>
|
958 |
</tr>
|
959 |
<tr>
|
960 |
+
<th><?php _e('Pause on hover','nggallery') ?></th>
|
961 |
+
<td>
|
962 |
+
<input <?php disabled(false, $ngg->options['irAutoplay']); ?> type="checkbox" name="irAutoplayHover" id="irAutoplayHover" value="true" <?php checked( $ngg->options['irAutoplayHover']); ?>>
|
963 |
+
<label for="irAutoplayHover"><?php _e( "Pause when hovering over the slideshow.", 'nggallery'); ?></label>
|
964 |
+
</td>
|
965 |
</tr>
|
966 |
<tr>
|
967 |
+
<th><?php _e('Click for next','nggallery') ?></th>
|
968 |
+
<td>
|
969 |
+
<input type="checkbox" name="irClick" id="irClick" value="true" <?php checked( $ngg->options['irClick']); ?>>
|
970 |
+
<label for="irClick"><?php _e( "Click to go to the next image.", 'nggallery'); ?></label></td>
|
971 |
</tr>
|
972 |
<tr>
|
973 |
+
<th><?php _e('Number of images','nggallery') ?></th>
|
974 |
<td>
|
975 |
+
<input type="number" step="1" min="1" class="small-text" name="irNumber" id="irNumber" value="<?php echo $ngg->options['irNumber'] ?>">
|
976 |
+
<label for="irNumber"><?php _e('images', 'nggallery') ;?></label>
|
977 |
<p class="description"><?php _e( "Number of images to display when using random or latest.", 'nggallery'); ?></p>
|
978 |
</td>
|
979 |
</tr>
|
980 |
+
</table>
|
981 |
+
<?php submit_button( __('Save Changes'), 'primary', 'updateoption' ); ?>
|
982 |
</form>
|
983 |
+
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
984 |
}
|
985 |
|
986 |
+
/**
|
987 |
+
* Convert an array of slideshow styles to a html dropdown group.
|
988 |
+
*
|
989 |
+
* @param $data array The option values (and display).
|
990 |
+
* @param $title string (optional) The label of the optgroup.
|
991 |
+
*
|
992 |
+
* @return string The output.
|
993 |
+
*/
|
994 |
+
private function convert_fx_to_optgroup( $data, $title = null ) {
|
995 |
|
996 |
+
global $ngg;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
997 |
|
998 |
+
if ( is_null($title) ) {
|
999 |
+
$out = null;
|
1000 |
+
} else {
|
1001 |
+
$out = '<optgroup label="' . $title . '">';
|
1002 |
+
}
|
1003 |
|
1004 |
+
foreach( $data as $option) {
|
1005 |
+
$out .= '<option value="' . $option . '" ' . selected( $option, $ngg->options['slideFx'] ) . '>' . $option . '</option>';
|
1006 |
+
}
|
|
|
|
|
1007 |
|
1008 |
+
if ( !is_null( $title ) ) {
|
1009 |
+
$out .= '</optgroup>';
|
1010 |
+
}
|
1011 |
|
1012 |
+
return $out;
|
|
|
1013 |
}
|
1014 |
|
1015 |
+
/**
|
1016 |
+
* Compare two values and echo readonly if they are.
|
1017 |
+
*
|
1018 |
+
* @param mixed $current The current value.
|
1019 |
+
* @param mixed $other (optional) The other value.
|
1020 |
+
*/
|
1021 |
+
private function readonly($current, $other = true) {
|
1022 |
+
if ( $current == $other ) {
|
1023 |
+
echo 'readonly="readonly"';
|
1024 |
+
}
|
1025 |
+
}
|
1026 |
+
}
|
|
|
|
|
|
|
|
admin/style.php
CHANGED
@@ -3,11 +3,6 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
|
|
3 |
|
4 |
class NGG_Style {
|
5 |
|
6 |
-
/**
|
7 |
-
* nggAddGallery::__construct()
|
8 |
-
*
|
9 |
-
* @return void
|
10 |
-
*/
|
11 |
function __construct() {
|
12 |
|
13 |
// same as $_SERVER['REQUEST_URI'], but should work under IIS 6.0
|
@@ -23,17 +18,16 @@ class NGG_Style {
|
|
23 |
*
|
24 |
* @since 1.9.22
|
25 |
*
|
26 |
-
* @param array Absolute paths to the folders that contain stylesheets.
|
27 |
* @return array Absolute paths to the stylesheets.
|
28 |
*/
|
29 |
-
static function ngg_get_cssfiles($directions) {
|
30 |
|
31 |
-
$
|
32 |
|
33 |
foreach ($directions as $direction) {
|
34 |
$plugins_dir = dir($direction);
|
35 |
-
|
36 |
-
if ($plugins_dir) {
|
37 |
while (($file = $plugins_dir->read()) !== false) {
|
38 |
if (preg_match('|^\.+$|', $file))
|
39 |
continue;
|
@@ -63,7 +57,7 @@ class NGG_Style {
|
|
63 |
*
|
64 |
* @since 1.9.22
|
65 |
*
|
66 |
-
* @param Absolute path to the stylesheet.
|
67 |
* @return array The information about the stylesheet.
|
68 |
*/
|
69 |
static function ngg_get_cssfiles_data($plugin_file) {
|
@@ -87,6 +81,25 @@ class NGG_Style {
|
|
87 |
|
88 |
return array ('Name' => $name, 'Description' => $description, 'Author' => $author, 'Version' => $version, 'Folder' => $folder );
|
89 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
90 |
|
91 |
/**
|
92 |
* Save, change and move the css files and options.
|
@@ -246,19 +259,7 @@ class NGG_Style {
|
|
246 |
<strong><?php _e('Activate and use style sheet:','nggallery') ?></strong>
|
247 |
<input type="checkbox" name="activateCSS" value="1" <?php checked('1', $ngg->options['activateCSS']); ?> />
|
248 |
<select name="css" id="theme" style="margin: 0pt; padding: 0pt;">
|
249 |
-
<?php
|
250 |
-
foreach ($csslist as $file) {
|
251 |
-
$a_cssfile = NGG_Style::ngg_get_cssfiles_data($file);
|
252 |
-
$css_name = esc_attr( $a_cssfile['Name'] );
|
253 |
-
$css_folder = esc_attr( $a_cssfile['Folder'] );
|
254 |
-
if ($file == $act_cssfile) {
|
255 |
-
$selected = " selected='selected'";
|
256 |
-
} else {
|
257 |
-
$selected = '';
|
258 |
-
}
|
259 |
-
echo "\n\t<option value=\"$file\" $selected>$css_name ($css_folder)</option>";
|
260 |
-
}
|
261 |
-
?>
|
262 |
</select>
|
263 |
<input class="button" type="submit" name="activate" value="<?php _e('Activate','nggallery') ?> »" class="button" />
|
264 |
</form>
|
3 |
|
4 |
class NGG_Style {
|
5 |
|
|
|
|
|
|
|
|
|
|
|
6 |
function __construct() {
|
7 |
|
8 |
// same as $_SERVER['REQUEST_URI'], but should work under IIS 6.0
|
18 |
*
|
19 |
* @since 1.9.22
|
20 |
*
|
21 |
+
* @param array $directions Absolute paths to the folders that contain stylesheets.
|
22 |
* @return array Absolute paths to the stylesheets.
|
23 |
*/
|
24 |
+
static function ngg_get_cssfiles( $directions ) {
|
25 |
|
26 |
+
$plugin_files = array ();
|
27 |
|
28 |
foreach ($directions as $direction) {
|
29 |
$plugins_dir = dir($direction);
|
30 |
+
if ($plugins_dir) {
|
|
|
31 |
while (($file = $plugins_dir->read()) !== false) {
|
32 |
if (preg_match('|^\.+$|', $file))
|
33 |
continue;
|
57 |
*
|
58 |
* @since 1.9.22
|
59 |
*
|
60 |
+
* @param string $plugin_file Absolute path to the stylesheet.
|
61 |
* @return array The information about the stylesheet.
|
62 |
*/
|
63 |
static function ngg_get_cssfiles_data($plugin_file) {
|
81 |
|
82 |
return array ('Name' => $name, 'Description' => $description, 'Author' => $author, 'Version' => $version, 'Folder' => $folder );
|
83 |
}
|
84 |
+
|
85 |
+
/**
|
86 |
+
* Output a set of options for a select element.
|
87 |
+
*
|
88 |
+
* @since 1.9.26
|
89 |
+
*
|
90 |
+
* @param array $css_list The paths to the stylesheets.
|
91 |
+
* @param string $act_css_file The path to the current active stylesheet.
|
92 |
+
*/
|
93 |
+
static function output_css_files_dropdown( $css_list, $act_css_file ) {
|
94 |
+
foreach ( $css_list as $file) {
|
95 |
+
$a_cssfile = NGG_Style::ngg_get_cssfiles_data($file);
|
96 |
+
$css_name = esc_attr( $a_cssfile['Name'] );
|
97 |
+
$css_folder = esc_attr( $a_cssfile['Folder'] );
|
98 |
+
if ( $css_name != '' ) {
|
99 |
+
echo '<option value="' . $file . '" ' . selected( $file, $act_css_file ) . '>' . $css_name . ' (' . $css_folder . ')</option>';
|
100 |
+
}
|
101 |
+
}
|
102 |
+
}
|
103 |
|
104 |
/**
|
105 |
* Save, change and move the css files and options.
|
259 |
<strong><?php _e('Activate and use style sheet:','nggallery') ?></strong>
|
260 |
<input type="checkbox" name="activateCSS" value="1" <?php checked('1', $ngg->options['activateCSS']); ?> />
|
261 |
<select name="css" id="theme" style="margin: 0pt; padding: 0pt;">
|
262 |
+
<?php self::output_css_files_dropdown($csslist, $act_cssfile); ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
263 |
</select>
|
264 |
<input class="button" type="submit" name="activate" value="<?php _e('Activate','nggallery') ?> »" class="button" />
|
265 |
</form>
|
admin/tinymce/window.php
CHANGED
@@ -11,20 +11,17 @@ wp_enqueue_script('jquery-ui-core');
|
|
11 |
wp_enqueue_script('jquery-ui-widget');
|
12 |
wp_enqueue_script('jquery-ui-position');
|
13 |
wp_enqueue_style('wp-admin');
|
14 |
-
|
15 |
-
wp_register_script( 'jquery-ui-autocomplete', NGGALLERY_URLPATH .'admin/js/jquery.ui.autocomplete.min.js', array('jquery-ui-core'), '1.8.15');
|
16 |
-
}
|
17 |
-
wp_enqueue_script('jquery-ui-autocomplete');
|
18 |
?>
|
19 |
<html xmlns="http://www.w3.org/1999/xhtml">
|
20 |
<head>
|
21 |
<title>NextCellent</title>
|
22 |
-
<meta http-equiv="Content-Type" content="<?php bloginfo('html_type');
|
|
|
23 |
<?php wp_print_scripts(); ?>
|
24 |
<script language="javascript" type="text/javascript" src="<?php echo site_url(); ?>/wp-includes/js/tinymce/tiny_mce_popup.js"></script>
|
25 |
<script language="javascript" type="text/javascript" src="<?php echo site_url(); ?>/wp-includes/js/tinymce/utils/mctabs.js"></script>
|
26 |
<script language="javascript" type="text/javascript" src="<?php echo site_url(); ?>/wp-includes/js/tinymce/utils/form_utils.js"></script>
|
27 |
-
<script language="javascript" type="text/javascript" src="<?php echo NGGALLERY_URLPATH ?>admin/js/ngg.autocomplete.js"></script>
|
28 |
<script language="javascript" type="text/javascript" src="<?php echo NGGALLERY_URLPATH ?>admin/tinymce/tinymce.js"></script>
|
29 |
<?php wp_print_styles(); ?>
|
30 |
<style>
|
11 |
wp_enqueue_script('jquery-ui-widget');
|
12 |
wp_enqueue_script('jquery-ui-position');
|
13 |
wp_enqueue_style('wp-admin');
|
14 |
+
wp_enqueue_script( 'ngg-autocomplete', NGGALLERY_URLPATH . 'admin/js/ngg.autocomplete.js', array( 'jquery-ui-autocomplete' ), '1.1' );
|
|
|
|
|
|
|
15 |
?>
|
16 |
<html xmlns="http://www.w3.org/1999/xhtml">
|
17 |
<head>
|
18 |
<title>NextCellent</title>
|
19 |
+
<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>" />
|
20 |
+
<meta charset="<?php echo get_option('blog_charset'); ?>">
|
21 |
<?php wp_print_scripts(); ?>
|
22 |
<script language="javascript" type="text/javascript" src="<?php echo site_url(); ?>/wp-includes/js/tinymce/tiny_mce_popup.js"></script>
|
23 |
<script language="javascript" type="text/javascript" src="<?php echo site_url(); ?>/wp-includes/js/tinymce/utils/mctabs.js"></script>
|
24 |
<script language="javascript" type="text/javascript" src="<?php echo site_url(); ?>/wp-includes/js/tinymce/utils/form_utils.js"></script>
|
|
|
25 |
<script language="javascript" type="text/javascript" src="<?php echo NGGALLERY_URLPATH ?>admin/tinymce/tinymce.js"></script>
|
26 |
<?php wp_print_styles(); ?>
|
27 |
<style>
|
admin/wpmu.php
CHANGED
@@ -1,13 +1,13 @@
|
|
1 |
<?php
|
2 |
if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You are not allowed to call this page directly.'); }
|
3 |
|
4 |
-
function nggallery_wpmu_setup() {
|
5 |
|
6 |
//to be sure
|
7 |
if ( !is_super_admin() )
|
8 |
-
|
9 |
|
10 |
-
|
11 |
|
12 |
// get the options
|
13 |
$ngg_options = get_site_option('ngg_options');
|
@@ -18,28 +18,32 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
|
|
18 |
if ( $_POST['page_options'] )
|
19 |
$options = explode(',', stripslashes($_POST['page_options']));
|
20 |
if ($options) {
|
21 |
-
foreach ($options as $option) {
|
22 |
-
$option = trim($option);
|
23 |
-
$value
|
24 |
-
|
25 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
}
|
27 |
}
|
28 |
|
29 |
-
|
30 |
-
|
31 |
update_site_option('ngg_options', $ngg_options);
|
32 |
-
|
33 |
-
$messagetext = __('Update successfully','nggallery');
|
34 |
-
}
|
35 |
|
36 |
-
|
37 |
-
|
38 |
-
if (isset ( $_GET['hideSupportInfo']) ) {
|
39 |
-
$ngg_options['hideSupportInfo'] = true;
|
40 |
-
update_site_option('ngg_options', $ngg_options);
|
41 |
-
}
|
42 |
-
*/
|
43 |
|
44 |
global $ngg;
|
45 |
|
@@ -75,72 +79,76 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
|
|
75 |
<div class="wrap">
|
76 |
<h2><?php _e('Network Options','nggallery'); ?></h2>
|
77 |
<form name="generaloptions" method="post">
|
78 |
-
|
79 |
-
|
80 |
<table class="form-table">
|
81 |
-
<tr
|
82 |
-
<th
|
83 |
-
<td
|
84 |
-
|
85 |
-
|
86 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
87 |
</tr>
|
88 |
<tr>
|
89 |
-
<th
|
90 |
-
<td
|
91 |
-
|
|
|
92 |
</td>
|
93 |
</tr>
|
94 |
<tr>
|
95 |
-
<th
|
96 |
-
<td
|
97 |
-
|
|
|
98 |
</td>
|
99 |
</tr>
|
100 |
<tr>
|
101 |
-
<th
|
102 |
-
<td
|
103 |
-
|
|
|
104 |
</td>
|
105 |
</tr>
|
106 |
<tr>
|
107 |
-
<th
|
108 |
-
<td
|
109 |
-
|
|
|
110 |
</td>
|
111 |
</tr>
|
112 |
<tr>
|
113 |
-
<th
|
114 |
-
<td
|
115 |
-
|
|
|
116 |
</td>
|
117 |
</tr>
|
118 |
<tr>
|
119 |
-
<th
|
120 |
<td>
|
121 |
-
<select name="wpmuCSSfile">
|
122 |
-
|
123 |
-
foreach ($csslist as $file) {
|
124 |
-
$a_cssfile = NGG_Style::ngg_get_cssfiles_data($file);
|
125 |
-
$css_name = esc_attr( $a_cssfile['Name'] );
|
126 |
-
$css_folder = esc_attr( $a_cssfile['Folder'] );
|
127 |
-
if ($file == $act_cssfile) {
|
128 |
-
$selected = " selected='selected'";
|
129 |
-
} else {
|
130 |
-
$selected = '';
|
131 |
-
}
|
132 |
-
echo "\n\t<option value=\"$file\" $selected>$css_name ($css_folder)</option>";
|
133 |
-
}
|
134 |
-
?>
|
135 |
</select>
|
136 |
-
<p class="description"
|
137 |
-
|
|
|
|
|
138 |
</td>
|
139 |
</tr>
|
140 |
-
</table>
|
141 |
-
|
142 |
</form>
|
143 |
-
</div>
|
144 |
-
|
145 |
<?php
|
146 |
}
|
1 |
<?php
|
2 |
if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You are not allowed to call this page directly.'); }
|
3 |
|
4 |
+
function nggallery_wpmu_setup() {
|
5 |
|
6 |
//to be sure
|
7 |
if ( !is_super_admin() )
|
8 |
+
die('You are not allowed to call this page.');
|
9 |
|
10 |
+
$messagetext = '';
|
11 |
|
12 |
// get the options
|
13 |
$ngg_options = get_site_option('ngg_options');
|
18 |
if ( $_POST['page_options'] )
|
19 |
$options = explode(',', stripslashes($_POST['page_options']));
|
20 |
if ($options) {
|
21 |
+
foreach ( $options as $option ) {
|
22 |
+
$option = trim( $option );
|
23 |
+
$value = false;
|
24 |
+
if ( isset( $_POST[ $option ] ) ) {
|
25 |
+
$value = trim( $_POST[ $option ] );
|
26 |
+
if ( $value === "true" ) {
|
27 |
+
$value = true;
|
28 |
+
}
|
29 |
+
|
30 |
+
if ( is_numeric( $value ) ) {
|
31 |
+
$value = (int) $value;
|
32 |
+
}
|
33 |
+
}
|
34 |
+
|
35 |
+
// $value = sanitize_option($option, $value); // This does stripslashes on those that need it
|
36 |
+
$ngg_options[ $option ] = $value;
|
37 |
}
|
38 |
}
|
39 |
|
40 |
+
// the path should always end with a slash
|
41 |
+
$ngg_options['gallerypath'] = trailingslashit($ngg_options['gallerypath']);
|
42 |
update_site_option('ngg_options', $ngg_options);
|
43 |
+
var_dump($ngg_options);
|
|
|
|
|
44 |
|
45 |
+
$messagetext = __('Update successfully','nggallery');
|
46 |
+
}
|
|
|
|
|
|
|
|
|
|
|
47 |
|
48 |
global $ngg;
|
49 |
|
79 |
<div class="wrap">
|
80 |
<h2><?php _e('Network Options','nggallery'); ?></h2>
|
81 |
<form name="generaloptions" method="post">
|
82 |
+
<?php wp_nonce_field('ngg_wpmu_settings') ?>
|
83 |
+
<input type="hidden" name="page_options" value="silentUpgrade,gallerypath,wpmuQuotaCheck,wpmuZipUpload,wpmuImportFolder,wpmuStyle,wpmuRoles,wpmuCSSfile" />
|
84 |
<table class="form-table">
|
85 |
+
<tr>
|
86 |
+
<th><label for="gallerypath"><?php _e('Gallery path','nggallery'); ?></label></th>
|
87 |
+
<td>
|
88 |
+
<input type="text" size="50" name="gallerypath" id="gallerypath" value="<?php echo $ngg_options['gallerypath']; ?>">
|
89 |
+
<p class="description">
|
90 |
+
<?php _e('This is the default path for all blogs. With the placeholder %BLOG_ID% you can organize the folder structure better.','nggallery'); ?>
|
91 |
+
<?php echo sprintf( __('The default setting should be %s.', 'nggallery'), '<code>wp-content/blogs.dir/%BLOG_ID%/files/</code>' ); ?>
|
92 |
+
</p>
|
93 |
+
</td>
|
94 |
+
</tr>
|
95 |
+
<tr>
|
96 |
+
<th><?php _e('Silent database upgrade','nggallery'); ?></th>
|
97 |
+
<td>
|
98 |
+
<input type="checkbox" name="silentUpgrade" id="silentUpgrade" value="true" <?php checked( $ngg_options['silentUpgrade'] ); ?>>
|
99 |
+
<label for="silentUpgrade"><?php _e('Update the database without notice.','nggallery') ?></label>
|
100 |
+
</td>
|
101 |
</tr>
|
102 |
<tr>
|
103 |
+
<th><?php _e('Enable upload quota check','nggallery'); ?></th>
|
104 |
+
<td>
|
105 |
+
<input name="wpmuQuotaCheck" id="wpmuQuotaCheck" type="checkbox" value="true" <?php checked( $ngg_options['wpmuQuotaCheck'] ); ?>>
|
106 |
+
<label for="wpmuQuotaCheck"><?php _e('Should work if the gallery is bellow the blog.dir','nggallery') ?></label>
|
107 |
</td>
|
108 |
</tr>
|
109 |
<tr>
|
110 |
+
<th><?php _e('Enable zip upload option','nggallery'); ?></th>
|
111 |
+
<td>
|
112 |
+
<input name="wpmuZipUpload" id="wpmuZipUpload" type="checkbox" value="true" <?php checked( $ngg_options['wpmuZipUpload'] ); ?>>
|
113 |
+
<label for="wpmuZipUpload"><?php _e('Allow users to upload zip folders.','nggallery') ?></label>
|
114 |
</td>
|
115 |
</tr>
|
116 |
<tr>
|
117 |
+
<th><?php _e('Enable import function','nggallery'); ?></th>
|
118 |
+
<td>
|
119 |
+
<input name="wpmuImportFolder" id="wpmuImportFolder" type="checkbox" value="true" <?php checked( $ngg_options['wpmuImportFolder'] ); ?>>
|
120 |
+
<label for="wpmuImportFolder"><?php _e('Allow users to import images folders from the server.','nggallery'); ?></label>
|
121 |
</td>
|
122 |
</tr>
|
123 |
<tr>
|
124 |
+
<th><?php _e('Enable style selection','nggallery'); ?></th>
|
125 |
+
<td>
|
126 |
+
<input name="wpmuStyle" id="wpmuStyle" type="checkbox" value="true" <?php checked( $ngg_options['wpmuStyle'] ); ?>>
|
127 |
+
<label for="wpmuStyle"><?php _e('Allow users to choose a style for the gallery.','nggallery'); ?></label>
|
128 |
</td>
|
129 |
</tr>
|
130 |
<tr>
|
131 |
+
<th><?php _e('Enable roles/capabilities','nggallery'); ?></th>
|
132 |
+
<td>
|
133 |
+
<input name="wpmuRoles" id="wpmuRoles" type="checkbox" value="true" <?php checked( $ngg_options['wpmuRoles'] ); ?>>
|
134 |
+
<label for="wpmuRoles"><?php _e('Allow users to change the roles for other blog authors.','nggallery'); ?></label>
|
135 |
</td>
|
136 |
</tr>
|
137 |
<tr>
|
138 |
+
<th><label for="wpmuCSSfile"><?php _e('Default style','nggallery'); ?></label></th>
|
139 |
<td>
|
140 |
+
<select name="wpmuCSSfile" id="wpmuCSSfile">
|
141 |
+
<?php NGG_Style::output_css_files_dropdown($csslist, $act_cssfile); ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
142 |
</select>
|
143 |
+
<p class="description">
|
144 |
+
<?php _e('Choose the default style for the galleries.','nggallery') ?>
|
145 |
+
<?php _e('Note: between brackets is the folder in which the file is.','nggallery') ?>
|
146 |
+
</p>
|
147 |
</td>
|
148 |
</tr>
|
149 |
+
</table>
|
150 |
+
<?php submit_button( __('Save Changes'), 'primary', 'updateoption' ); ?>
|
151 |
</form>
|
152 |
+
</div>
|
|
|
153 |
<?php
|
154 |
}
|
css/framework-min.css
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
/* NextCellent CSS Framework */
|
2 |
-
.ngg-gallery-thumbnail{float:left}.ngg-gallery-thumbnail span{display:block}.ngg-clear{clear:both;float:none}.ngg-navigation{clear:both}.owl-height{-webkit-transition:height 500ms ease-in-out;-moz-transition:height 500ms ease-in-out;-ms-transition:height 500ms ease-in-out;-o-transition:height 500ms ease-in-out;transition:height 500ms ease-in-out}.owl-carousel{display:none;width:100%;-webkit-tap-highlight-color:transparent;position:relative;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0px,0,0)}.owl-carousel .owl-controls .owl-dot,.owl-carousel .owl-controls .owl-nav .owl-next,.owl-carousel .owl-controls .owl-nav .owl-prev{cursor:pointer;cursor:hand;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-loaded{display:block}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel .owl-refresh .owl-item{display:none}.owl-carousel .owl-item{position:relative;min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel .owl-item img{display:block;width:100%;-webkit-transform-style:preserve-3d}.owl-carousel.owl-text-select-on .owl-item{-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.owl-carousel .owl-grab{cursor:move;cursor:-webkit-grab;cursor:-o-grab;cursor:-ms-grab;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.no-js .owl-carousel{display:block}.owl-carousel .owl-item .owl-lazy{opacity:0;-webkit-transition:opacity 400ms ease;-moz-transition:opacity 400ms ease;-ms-transition:opacity 400ms ease;-o-transition:opacity 400ms ease;transition:opacity 400ms ease}.owl-carousel .owl-item img{transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(owl.video.play.png) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;-webkit-transition:scale 100ms ease;-moz-transition:scale 100ms ease;-ms-transition:scale 100ms ease;-o-transition:scale 100ms ease;transition:scale 100ms ease}.owl-carousel .owl-video-play-icon:hover{-webkit-transition:scale(1.3,1.3);-moz-transition:scale(1.3,1.3);-ms-transition:scale(1.3,1.3);-o-transition:scale(1.3,1.3);transition:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;-webkit-background-size:contain;-moz-background-size:contain;-o-background-size:contain;background-size:contain;-webkit-transition:opacity 400ms ease;-moz-transition:opacity 400ms ease;-ms-transition:opacity 400ms ease;-o-transition:opacity 400ms ease;transition:opacity 400ms ease}.owl-carousel .owl-video-frame{position:relative;z-index:1}.ngg-singlepic{display:block}.ngg-left{float:left}.ngg-right{float:right}.ngg-center{margin-left:auto!important;margin-right:auto!important}.ngg-related-gallery{overflow:hidden}.ngg-related-gallery img{float:left}.brick img{transition:1s;opacity:0;width:100%!important;height:auto!important}.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}@-webkit-keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}@keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}.swing{-webkit-transform-origin:top center;-ms-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes tada{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;transform:none}}@keyframes wobble{0%{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;transform:none}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;transform:none;opacity:1}}@keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;transform:none;opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateIn{0%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{-webkit-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}@keyframes rotateOut{0%{-webkit-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}@keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;transform:none}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}@keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp}@-webkit-keyframes slideInDown{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%);visibility:visible}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes slideInDown{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%);visibility:visible}100%{-webkit-transform:translateY(0);transform:translateY(0)}}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%);visibility:visible}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%);visibility:visible}100%{-webkit-transform:translateX(0);transform:translateX(0)}}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{-webkit-transform:translateX(100%);transform:translateX(100%);visibility:visible}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight{0%{-webkit-transform:translateX(100%);transform:translateX(100%);visibility:visible}100%{-webkit-transform:translateX(0);transform:translateX(0)}}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{0%{-webkit-transform:translateY(100%);transform:translateY(100%);visibility:visible}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes slideInUp{0%{-webkit-transform:translateY(100%);transform:translateY(100%);visibility:visible}100%{-webkit-transform:translateY(0);transform:translateY(0)}}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateY(0);transform:translateY(0)}100%{visibility:hidden;-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes slideOutDown{0%{-webkit-transform:translateY(0);transform:translateY(0)}100%{visibility:hidden;-webkit-transform:translateY(100%);transform:translateY(100%)}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{visibility:hidden;-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@keyframes slideOutLeft{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{visibility:hidden;-webkit-transform:translateX(-100%);transform:translateX(-100%)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{visibility:hidden;-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes slideOutRight{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{visibility:hidden;-webkit-transform:translateX(100%);transform:translateX(100%)}}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateY(0);transform:translateY(0)}100%{visibility:hidden;-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@keyframes slideOutUp{0%{-webkit-transform:translateY(0);transform:translateY(0)}100%{visibility:hidden;-webkit-transform:translateY(-100%);transform:translateY(-100%)}}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}
|
1 |
/* NextCellent CSS Framework */
|
2 |
+
.ngg-gallery-thumbnail{float:left}.ngg-gallery-thumbnail span{display:block}.ngg-clear{clear:both;float:none}.ngg-navigation{clear:both}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.owl-height{-webkit-transition:height 500ms ease-in-out;-moz-transition:height 500ms ease-in-out;-ms-transition:height 500ms ease-in-out;-o-transition:height 500ms ease-in-out;transition:height 500ms ease-in-out}.owl-carousel{display:none;width:100%;-webkit-tap-highlight-color:transparent;position:relative;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0,0,0)}.owl-carousel .owl-controls .owl-dot,.owl-carousel .owl-controls .owl-nav .owl-next,.owl-carousel .owl-controls .owl-nav .owl-prev{cursor:pointer;cursor:hand;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-loaded{display:block}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel .owl-refresh .owl-item{display:none}.owl-carousel .owl-item{position:relative;min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel .owl-item img{display:block;width:100%;-webkit-transform-style:preserve-3d}.owl-carousel.owl-text-select-on .owl-item{-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.owl-carousel .owl-grab{cursor:move;cursor:-webkit-grab;cursor:-o-grab;cursor:-ms-grab;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.no-js .owl-carousel{display:block}.owl-carousel .owl-item .owl-lazy{opacity:0;-webkit-transition:opacity 400ms ease;-moz-transition:opacity 400ms ease;-ms-transition:opacity 400ms ease;-o-transition:opacity 400ms ease;transition:opacity 400ms ease}.owl-carousel .owl-item img{transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(owl.video.play.png) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;-webkit-transition:scale 100ms ease;-moz-transition:scale 100ms ease;-ms-transition:scale 100ms ease;-o-transition:scale 100ms ease;transition:scale 100ms ease}.owl-carousel .owl-video-play-icon:hover{-webkit-transition:scale(1.3,1.3);-moz-transition:scale(1.3,1.3);-ms-transition:scale(1.3,1.3);-o-transition:scale(1.3,1.3);transition:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;-webkit-background-size:contain;-moz-background-size:contain;-o-background-size:contain;background-size:contain;-webkit-transition:opacity 400ms ease;-moz-transition:opacity 400ms ease;-ms-transition:opacity 400ms ease;-o-transition:opacity 400ms ease;transition:opacity 400ms ease}.owl-carousel .owl-video-frame{position:relative;z-index:1}.ngg-singlepic{display:block}.ngg-left{float:left}.ngg-right{float:right}.ngg-center{margin-left:auto!important;margin-right:auto!important}.ngg-related-gallery{overflow:hidden}.ngg-related-gallery img{float:left}.brick img{transition:1s;opacity:0;width:100%!important;height:auto!important}.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}@-webkit-keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(.755,.050,.855,.060);transition-timing-function:cubic-bezier(.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(.755,.050,.855,.060);transition-timing-function:cubic-bezier(.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(.755,.050,.855,.060);transition-timing-function:cubic-bezier(.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(.755,.050,.855,.060);transition-timing-function:cubic-bezier(.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}@keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}.swing{-webkit-transform-origin:top center;-ms-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes tada{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;transform:none}}@keyframes wobble{0%{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;transform:none}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;transform:none;opacity:1}}@keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;transform:none;opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateIn{0%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{-webkit-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}@keyframes rotateOut{0%{-webkit-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}@keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;transform:none}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}@keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp}@-webkit-keyframes slideInDown{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%);visibility:visible}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes slideInDown{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%);visibility:visible}100%{-webkit-transform:translateY(0);transform:translateY(0)}}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%);visibility:visible}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%);visibility:visible}100%{-webkit-transform:translateX(0);transform:translateX(0)}}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{-webkit-transform:translateX(100%);transform:translateX(100%);visibility:visible}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight{0%{-webkit-transform:translateX(100%);transform:translateX(100%);visibility:visible}100%{-webkit-transform:translateX(0);transform:translateX(0)}}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{0%{-webkit-transform:translateY(100%);transform:translateY(100%);visibility:visible}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes slideInUp{0%{-webkit-transform:translateY(100%);transform:translateY(100%);visibility:visible}100%{-webkit-transform:translateY(0);transform:translateY(0)}}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateY(0);transform:translateY(0)}100%{visibility:hidden;-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes slideOutDown{0%{-webkit-transform:translateY(0);transform:translateY(0)}100%{visibility:hidden;-webkit-transform:translateY(100%);transform:translateY(100%)}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{visibility:hidden;-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@keyframes slideOutLeft{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{visibility:hidden;-webkit-transform:translateX(-100%);transform:translateX(-100%)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{visibility:hidden;-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes slideOutRight{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{visibility:hidden;-webkit-transform:translateX(100%);transform:translateX(100%)}}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateY(0);transform:translateY(0)}100%{visibility:hidden;-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@keyframes slideOutUp{0%{-webkit-transform:translateY(0);transform:translateY(0)}100%{visibility:hidden;-webkit-transform:translateY(-100%);transform:translateY(-100%)}}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}
|
css/framework.css
CHANGED
@@ -25,6 +25,20 @@ This file is loaded first, so you can easily override it.
|
|
25 |
clear:both;
|
26 |
}
|
27 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
/*
|
29 |
* Owl Carousel - Auto Height Plugin
|
30 |
*/
|
25 |
clear:both;
|
26 |
}
|
27 |
|
28 |
+
/**
|
29 |
+
* Some jQuery stuff.
|
30 |
+
*/
|
31 |
+
.ui-helper-hidden-accessible {
|
32 |
+
border: 0;
|
33 |
+
clip: rect(0 0 0 0);
|
34 |
+
height: 1px;
|
35 |
+
margin: -1px;
|
36 |
+
overflow: hidden;
|
37 |
+
padding: 0;
|
38 |
+
position: absolute;
|
39 |
+
width: 1px;
|
40 |
+
}
|
41 |
+
|
42 |
/*
|
43 |
* Owl Carousel - Auto Height Plugin
|
44 |
*/
|
nggallery.php
CHANGED
@@ -5,7 +5,7 @@ Plugin URI: http://www.wpgetready.com/nextcellent-gallery
|
|
5 |
Description: A Photo Gallery for WordPress providing NextGEN legacy compatibility from version 1.9.13
|
6 |
Author: WPGReady based on Alex Rabe & PhotoCrati work.
|
7 |
Author URI: http://www.wpgetready.com
|
8 |
-
Version: 1.9.
|
9 |
|
10 |
Copyright (c) 2007-2011 by Alex Rabe & NextGEN DEV-Team
|
11 |
Copyright (c) 2012 Photocrati Media
|
@@ -52,7 +52,7 @@ if (!class_exists('nggLoader')) {
|
|
52 |
*/
|
53 |
class nggLoader {
|
54 |
|
55 |
-
var $version = '1.9.
|
56 |
var $dbversion = '1.8.3';
|
57 |
var $minimum_WP = '3.5';
|
58 |
var $options = '';
|
@@ -554,6 +554,7 @@ if (!class_exists('nggLoader')) {
|
|
554 |
wp_enqueue_style('NextCellent-Framework', NGGALLERY_URLPATH . 'css/framework-min.css', false, '1.0.1', 'screen');
|
555 |
}
|
556 |
|
|
|
557 |
// activate Thickbox
|
558 |
if ($this->options['thumbEffect'] == 'thickbox')
|
559 |
wp_enqueue_style( 'thickbox');
|
5 |
Description: A Photo Gallery for WordPress providing NextGEN legacy compatibility from version 1.9.13
|
6 |
Author: WPGReady based on Alex Rabe & PhotoCrati work.
|
7 |
Author URI: http://www.wpgetready.com
|
8 |
+
Version: 1.9.26
|
9 |
|
10 |
Copyright (c) 2007-2011 by Alex Rabe & NextGEN DEV-Team
|
11 |
Copyright (c) 2012 Photocrati Media
|
52 |
*/
|
53 |
class nggLoader {
|
54 |
|
55 |
+
var $version = '1.9.26';
|
56 |
var $dbversion = '1.8.3';
|
57 |
var $minimum_WP = '3.5';
|
58 |
var $options = '';
|
554 |
wp_enqueue_style('NextCellent-Framework', NGGALLERY_URLPATH . 'css/framework-min.css', false, '1.0.1', 'screen');
|
555 |
}
|
556 |
|
557 |
+
|
558 |
// activate Thickbox
|
559 |
if ($this->options['thumbEffect'] == 'thickbox')
|
560 |
wp_enqueue_style( 'thickbox');
|
nggfunctions.php
CHANGED
@@ -166,6 +166,7 @@ function nggShowGallery( $galleryID, $template = '', $images = false ) {
|
|
166 |
//TODO: Use pagination limits here to reduce memory needs
|
167 |
//20130106:shouldn't call it statically if is not...
|
168 |
//$picturelist = nggdb::get_gallery($galleryID, $ngg_options['galSort'], $ngg_options['galSortDir']);
|
|
|
169 |
$picturelist = $nggdb->get_gallery($galleryID, $ngg_options['galSort'], $ngg_options['galSortDir']);
|
170 |
|
171 |
if ( !$picturelist )
|
@@ -650,6 +651,7 @@ function nggShowImageBrowser($galleryID, $template = '') {
|
|
650 |
// get the pictures
|
651 |
//20140106:shouldn't call it statically if is not...
|
652 |
//$picturelist = nggdb::get_gallery($galleryID, $ngg_options['galSort'], $ngg_options['galSortDir']);
|
|
|
653 |
$picturelist = $nggdb->get_gallery($galleryID, $ngg_options['galSort'], $ngg_options['galSortDir']);
|
654 |
|
655 |
if ( is_array($picturelist) )
|
@@ -899,7 +901,7 @@ function nggShowGalleryTags($taglist, $template = '', $sorting = 'ASC') {
|
|
899 |
*
|
900 |
* @access public
|
901 |
* @param string $taglist list of tags as csv
|
902 |
-
* @param integer $maxImages (optional) limit the number of images to show
|
903 |
* @return the content
|
904 |
*/
|
905 |
function nggShowRelatedGallery($taglist, $maxImages = 0) {
|
@@ -998,7 +1000,9 @@ function nggShowAlbumTags($taglist, $template='', $sorting = 'ASC') {
|
|
998 |
* @access public
|
999 |
* @param string $type could be 'tags' or 'category'
|
1000 |
* @param integer $maxImages of images
|
1001 |
-
* @return
|
|
|
|
|
1002 |
*/
|
1003 |
function nggShowRelatedImages($type = '', $maxImages = 0) {
|
1004 |
$ngg_options = nggGallery::get_option('ngg_options');
|
@@ -1012,31 +1016,24 @@ function nggShowRelatedImages($type = '', $maxImages = 0) {
|
|
1012 |
|
1013 |
switch ($type) {
|
1014 |
case 'tags':
|
1015 |
-
|
1016 |
-
|
1017 |
-
|
1018 |
-
|
1019 |
-
|
1020 |
-
$sluglist[] = $tag->slug;
|
1021 |
-
}
|
1022 |
-
}
|
1023 |
}
|
1024 |
break;
|
1025 |
|
1026 |
case 'category':
|
1027 |
-
$catlist = get_the_category();
|
1028 |
-
|
1029 |
-
|
1030 |
-
|
1031 |
-
$sluglist[] = $cat->category_nicename;
|
1032 |
-
}
|
1033 |
}
|
1034 |
-
|
1035 |
}
|
1036 |
-
|
1037 |
$sluglist = implode(',', $sluglist);
|
1038 |
$out = nggShowRelatedGallery($sluglist, $maxImages);
|
1039 |
-
|
1040 |
return $out;
|
1041 |
}
|
1042 |
|
166 |
//TODO: Use pagination limits here to reduce memory needs
|
167 |
//20130106:shouldn't call it statically if is not...
|
168 |
//$picturelist = nggdb::get_gallery($galleryID, $ngg_options['galSort'], $ngg_options['galSortDir']);
|
169 |
+
//array of nggImage objects returned
|
170 |
$picturelist = $nggdb->get_gallery($galleryID, $ngg_options['galSort'], $ngg_options['galSortDir']);
|
171 |
|
172 |
if ( !$picturelist )
|
651 |
// get the pictures
|
652 |
//20140106:shouldn't call it statically if is not...
|
653 |
//$picturelist = nggdb::get_gallery($galleryID, $ngg_options['galSort'], $ngg_options['galSortDir']);
|
654 |
+
//return array of nggImages
|
655 |
$picturelist = $nggdb->get_gallery($galleryID, $ngg_options['galSort'], $ngg_options['galSortDir']);
|
656 |
|
657 |
if ( is_array($picturelist) )
|
901 |
*
|
902 |
* @access public
|
903 |
* @param string $taglist list of tags as csv
|
904 |
+
* @param integer $maxImages (optional) limit the number of images to show. 0=no limit
|
905 |
* @return the content
|
906 |
*/
|
907 |
function nggShowRelatedGallery($taglist, $maxImages = 0) {
|
1000 |
* @access public
|
1001 |
* @param string $type could be 'tags' or 'category'
|
1002 |
* @param integer $maxImages of images
|
1003 |
+
* @return related gallery output or empty string if not tags/categories
|
1004 |
+
* 20150309: fix: error when no tags in site.
|
1005 |
+
* Few simplifications
|
1006 |
*/
|
1007 |
function nggShowRelatedImages($type = '', $maxImages = 0) {
|
1008 |
$ngg_options = nggGallery::get_option('ngg_options');
|
1016 |
|
1017 |
switch ($type) {
|
1018 |
case 'tags':
|
1019 |
+
$taglist = get_the_tags(); //Return array of tag objects, false on failure or empty
|
1020 |
+
//This is a tag list for posts non Nextcellent tag lists.
|
1021 |
+
if (!$taglist) return "";
|
1022 |
+
foreach ($taglist as $tag) {
|
1023 |
+
$sluglist[] = $tag->slug;
|
|
|
|
|
|
|
1024 |
}
|
1025 |
break;
|
1026 |
|
1027 |
case 'category':
|
1028 |
+
$catlist = get_the_category(); //return array (empty if no categories)
|
1029 |
+
if (empty ($catlist)) return "";
|
1030 |
+
foreach ($catlist as $cat) {
|
1031 |
+
$sluglist[] = $cat->category_nicename;
|
|
|
|
|
1032 |
}
|
1033 |
+
break;
|
1034 |
}
|
|
|
1035 |
$sluglist = implode(',', $sluglist);
|
1036 |
$out = nggShowRelatedGallery($sluglist, $maxImages);
|
|
|
1037 |
return $out;
|
1038 |
}
|
1039 |
|
readme.txt
CHANGED
@@ -8,13 +8,12 @@ License: GPLv2
|
|
8 |
|
9 |
== Description ==
|
10 |
|
11 |
-
= 1.9.
|
12 |
|
13 |
What's in it for you?
|
14 |
|
15 |
-
*
|
16 |
-
*
|
17 |
-
|
18 |
|
19 |
VERY IMPORTANT: Read ON!
|
20 |
-----------------------
|
@@ -323,6 +322,9 @@ Yes, since we use Javascript rather than flash, NextCellent Gallery is compatibl
|
|
323 |
- Many users are creating their respective translations and they will be included, along respective credits. Thanks to them!!!
|
324 |
|
325 |
== Changelog ==
|
|
|
|
|
|
|
326 |
|
327 |
= 1.9.25.3 - 06/02/2015 FIX (last round) =
|
328 |
* Missing jQuery UI (again), now included
|
8 |
|
9 |
== Description ==
|
10 |
|
11 |
+
= 1.9.26 - 2015-03-27 =
|
12 |
|
13 |
What's in it for you?
|
14 |
|
15 |
+
* Improved Watermark with custom image selection (credits to Niko Strijbol)
|
16 |
+
* fix: Albums preview image now correctly shows images from inside the album, not the last uploaded ones.
|
|
|
17 |
|
18 |
VERY IMPORTANT: Read ON!
|
19 |
-----------------------
|
322 |
- Many users are creating their respective translations and they will be included, along respective credits. Thanks to them!!!
|
323 |
|
324 |
== Changelog ==
|
325 |
+
= 1.9.26 - 27/03/2015 =
|
326 |
+
* Improved Watermark (credits to Niko Strijbol)
|
327 |
+
* fix: Albums: preview image now correctly shows images from inside the album, not the last uploaded ones.
|
328 |
|
329 |
= 1.9.25.3 - 06/02/2015 FIX (last round) =
|
330 |
* Missing jQuery UI (again), now included
|
xml/json.php
CHANGED
@@ -156,7 +156,8 @@ class nggAPI {
|
|
156 |
if ( empty($this->term) )
|
157 |
$list = $nggdb->find_last_images(0, $this->limit, false);
|
158 |
else
|
159 |
-
|
|
|
160 |
|
161 |
if( is_array($list) ) {
|
162 |
foreach($list as $image) {
|
@@ -167,7 +168,7 @@ class nggAPI {
|
|
167 |
//TODO : need to rework save/load
|
168 |
$name = stripslashes( htmlspecialchars_decode($name, ENT_QUOTES));
|
169 |
$obj->label = $image->pid . ' - ' . $name;
|
170 |
-
$obj->value = $name;
|
171 |
$this->result[] = $obj;
|
172 |
}
|
173 |
}
|
156 |
if ( empty($this->term) )
|
157 |
$list = $nggdb->find_last_images(0, $this->limit, false);
|
158 |
else
|
159 |
+
//$list = $nggdb->search_for_images($this->term, $this->limit);
|
160 |
+
$list = $nggdb->find_images_in_album($this->term);
|
161 |
|
162 |
if( is_array($list) ) {
|
163 |
foreach($list as $image) {
|
168 |
//TODO : need to rework save/load
|
169 |
$name = stripslashes( htmlspecialchars_decode($name, ENT_QUOTES));
|
170 |
$obj->label = $image->pid . ' - ' . $name;
|
171 |
+
$obj->value = $image->pid . ' - ' . $name;
|
172 |
$this->result[] = $obj;
|
173 |
}
|
174 |
}
|