Version Description
- Fixed: #1775 - Call to undefined function is_customize_preview() in pre WP 4.0.
- Fixed: Issue where in some cases tracking still occuring after opt-out.
- Modified: Documentation URL.
- Fixed: #1742 - Sidebar subsections don't always expand.
- Fixed: #1758 - Thanks @echo1consulting!
- Added: 'hidden' to menu_type argument to allow for hidden menus until available.
- Fixed: #1749 - Remove font-wight and font-style from css output when not in use.
- Modified: Added the "redux/options/{$this->args['opt_name']}/compiler/advanced" hook for more advanced compiling.
- Added: Suggestions as per #1709. Thanks @echo1consulting.
- Modified: Removed a cURL instance from the core and fixed the developer ad resizing.
- Fixed: PHP 5.2 issues. sigh
Download this release
Release Info
Developer | dovyp |
Plugin | Redux Framework |
Version | 3.3.9 |
Comparing to | |
See all releases |
Code changes from version 3.3.8 to 3.3.9
- CHANGELOG.md +38 -0
- README.txt +25 -1
- ReduxCore/assets/js/redux.js +75 -38
- ReduxCore/assets/js/redux.min.js +2 -2
- ReduxCore/extensions/customizer/extension_customizer.php +38 -35
- ReduxCore/framework.php +101 -63
- ReduxCore/inc/class.p.php +292 -0
- ReduxCore/inc/class.redux_functions.php +244 -244
- ReduxCore/inc/class.redux_helpers.php +6 -0
- ReduxCore/inc/class.redux_themecheck.php +123 -0
- ReduxCore/inc/fields/color_rgba/field_color_rgba.php +2 -2
- ReduxCore/inc/fields/raw/field_raw.php +1 -1
- ReduxCore/inc/fields/slider/field_slider.php +2 -2
- ReduxCore/inc/fields/typography/field_typography.php +10 -0
- ReduxCore/inc/p.php +1 -1
- ReduxCore/inc/tracking.php +9 -9
- ReduxCore/inc/welcome.php +490 -420
- ReduxCore/languages/ar.mo +0 -0
- ReduxCore/languages/bg_BG.mo +0 -0
- ReduxCore/languages/de_DE.mo +0 -0
- ReduxCore/languages/el.mo +0 -0
- ReduxCore/languages/es_ES.mo +0 -0
- ReduxCore/languages/es_MX.mo +0 -0
- ReduxCore/languages/fa_IR.mo +0 -0
- ReduxCore/languages/fi.mo +0 -0
- ReduxCore/languages/fr_FR.mo +0 -0
- ReduxCore/languages/he_IL.mo +0 -0
- ReduxCore/languages/hi_IN.mo +0 -0
- ReduxCore/languages/hr.mo +0 -0
- ReduxCore/languages/hu_HU.mo +0 -0
- ReduxCore/languages/id_ID.mo +0 -0
- ReduxCore/languages/it_IT.mo +0 -0
- ReduxCore/languages/km.mo +0 -0
- ReduxCore/languages/ne_NP.mo +0 -0
- ReduxCore/languages/nl_NL.mo +0 -0
- ReduxCore/languages/pl_PL.mo +0 -0
- ReduxCore/languages/pt_BR.mo +0 -0
- ReduxCore/languages/pt_PT.mo +0 -0
- ReduxCore/languages/redux-framework.pot +136 -137
- ReduxCore/languages/ro_RO.mo +0 -0
- ReduxCore/languages/ru_RU.mo +0 -0
- ReduxCore/languages/sk_SK.mo +0 -0
- ReduxCore/languages/sl_SI.mo +0 -0
- ReduxCore/languages/sv_SE.mo +0 -0
- ReduxCore/languages/th.mo +0 -0
- ReduxCore/languages/tr_TR.mo +0 -0
- ReduxCore/languages/zh_CN.mo +0 -0
- ReduxCore/languages/zh_CN.po +1060 -0
- redux-framework.php +2 -2
- sample/barebones-config.php +218 -193
- sample/sample-config.php +4 -3
CHANGELOG.md
CHANGED
@@ -1,5 +1,43 @@
|
|
1 |
# Redux Framework Changelog
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
## 3.3.8
|
4 |
* Modified: Updated potomo, thanks @shivapoudel.
|
5 |
* Added: Grunt checktextdomain and made improvements. Thanks @shivapoudel.
|
1 |
# Redux Framework Changelog
|
2 |
|
3 |
+
## 3.3.9
|
4 |
+
* Fixed: #1775 - Call to undefined function is_customize_preview() in pre WP 4.0.
|
5 |
+
* Fixed: Issue where in some cases tracking still occuring after opt-out.
|
6 |
+
* Modified: Documentation URL.
|
7 |
+
|
8 |
+
## 3.3.8.8
|
9 |
+
* Fixed: #1742 - Sidebar subsections don't always expand.
|
10 |
+
|
11 |
+
## 3.3.8.7
|
12 |
+
* Fixed: #1758 - Thanks @echo1consulting!
|
13 |
+
* Added: 'hidden' to menu_type argument to allow for hidden menus until available.
|
14 |
+
|
15 |
+
## 3.3.8.6
|
16 |
+
* Fixed: #1749 - Remove font-wight and font-style from css output when not in use.
|
17 |
+
|
18 |
+
## 3.3.8.5
|
19 |
+
* Modified: Added the "redux/options/{$this->args['opt_name']}/compiler/advanced" hook for more advanced compiling.
|
20 |
+
* Added: Suggestions as per #1709. Thanks @echo1consulting.
|
21 |
+
|
22 |
+
## 3.3.8.4
|
23 |
+
* Modified: Removed a cURL instance from the core and fixed the developer ad resizing.
|
24 |
+
* Fixed: PHP 5.2 issues. *sigh*
|
25 |
+
|
26 |
+
## 3.3.8.3
|
27 |
+
* Added: #1593 - Great pull request by @JonasDoebertin. Now you can enqueue dynamic output to the login screen or admin backend.
|
28 |
+
|
29 |
+
## 3.3.8.2
|
30 |
+
* Fixed: Customizer wasn't saving at all! That's been like 4 months. No one's reported it. Hmm.
|
31 |
+
* Fixed: #1702 - Customizer only fields were being erased on panel save.
|
32 |
+
|
33 |
+
## 3.3.8.1
|
34 |
+
* Fixed: Various Theme-Check errors with languages.
|
35 |
+
* Added: Theme-Check class to help devs know what is what.
|
36 |
+
* Fixed: The way we include files from include_once to require_once everywhere.
|
37 |
+
* Modified: Language files to reflect new strings.
|
38 |
+
* Modified: Formatted a bunch of old class files.
|
39 |
+
* Added: Notice on the updates for non-devs to use the new dev_mode disabler plugin and notify their developer. ;)
|
40 |
+
|
41 |
## 3.3.8
|
42 |
* Modified: Updated potomo, thanks @shivapoudel.
|
43 |
* Added: Grunt checktextdomain and made improvements. Thanks @shivapoudel.
|
README.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_i
|
|
4 |
Tags: admin, admin interface, options, theme options, plugin options, options framework, settings, web fonts, google fonts
|
5 |
Requires at least: 3.5.1
|
6 |
Tested up to: 4.0
|
7 |
-
Stable tag: 3.3.
|
8 |
License: GPLv3 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
@@ -125,6 +125,30 @@ That's because the real FAQ section is on our site! Please visit [http://docs.re
|
|
125 |
|
126 |
== Changelog ==
|
127 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
= 3.3.8 =
|
129 |
* Modified: Updated potomo, thanks @shivapoudel.
|
130 |
* Added: Grunt checktextdomain and made improvements. Thanks @shivapoudel.
|
4 |
Tags: admin, admin interface, options, theme options, plugin options, options framework, settings, web fonts, google fonts
|
5 |
Requires at least: 3.5.1
|
6 |
Tested up to: 4.0
|
7 |
+
Stable tag: 3.3.9
|
8 |
License: GPLv3 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
125 |
|
126 |
== Changelog ==
|
127 |
|
128 |
+
= 3.3.9 =
|
129 |
+
* Fixed: #1775 - Call to undefined function is_customize_preview() in pre WP 4.0.
|
130 |
+
* Fixed: Issue where in some cases tracking still occuring after opt-out.
|
131 |
+
* Modified: Documentation URL.
|
132 |
+
* Fixed: #1742 - Sidebar subsections don't always expand.
|
133 |
+
* Fixed: #1758 - Thanks @echo1consulting!
|
134 |
+
* Added: 'hidden' to menu_type argument to allow for hidden menus until available.
|
135 |
+
* Fixed: #1749 - Remove font-wight and font-style from css output when not in use.
|
136 |
+
* Modified: Added the "redux/options/{$this->args['opt_name']}/compiler/advanced" hook for more advanced compiling.
|
137 |
+
* Added: Suggestions as per #1709. Thanks @echo1consulting.
|
138 |
+
* Modified: Removed a cURL instance from the core and fixed the developer ad resizing.
|
139 |
+
* Fixed: PHP 5.2 issues. *sigh*
|
140 |
+
|
141 |
+
= 3.3.8.3 =
|
142 |
+
* Added: #1593 - Great pull request by @JonasDoebertin. Now you can enqueue dynamic output to the login screen or admin backend.
|
143 |
+
* Fixed: Customizer wasn't saving at all! That's been like 4 months. No one's reported it. Hmm.
|
144 |
+
* Fixed: #1702 - Customizer only fields were being erased on panel save.
|
145 |
+
* Fixed: Various Theme-Check errors with languages.
|
146 |
+
* Added: Theme-Check class to help devs know what is what.
|
147 |
+
* Fixed: The way we include files from include_once to require_once everywhere.
|
148 |
+
* Modified: Language files to reflect new strings.
|
149 |
+
* Modified: Formatted a bunch of old class files.
|
150 |
+
* Added: Notice on the updates for non-devs to use the new dev_mode disabler plugin and notify their developer. ;)
|
151 |
+
|
152 |
= 3.3.8 =
|
153 |
* Modified: Updated potomo, thanks @shivapoudel.
|
154 |
* Added: Grunt checktextdomain and made improvements. Thanks @shivapoudel.
|
ReduxCore/assets/js/redux.js
CHANGED
@@ -51,11 +51,11 @@
|
|
51 |
$( '#toplevel_page_' + redux.args.slug + ' .wp-submenu a, #wp-admin-bar-' + redux.args.slug + ' a.ab-item' ).click(
|
52 |
function( e ) {
|
53 |
|
54 |
-
if ( ( $( '#toplevel_page_' + redux.args.slug ).hasClass( 'wp-menu-open' ) || $( this ).hasClass( 'ab-item' ) ) && !$(this ).parents('ul.ab-submenu:first' ).hasClass('ab-sub-secondary') ) {
|
55 |
e.preventDefault();
|
56 |
var url = $( this ).attr( 'href' ).split( '&tab=' );
|
57 |
$( '#' + url[1] + '_section_group_li_a' ).click();
|
58 |
-
$( this ).parents( 'ul:first' ).find('.current' ).removeClass( 'current' );
|
59 |
$( this ).addClass( 'current' );
|
60 |
$( this ).parent().addClass( 'current' );
|
61 |
return false;
|
@@ -301,8 +301,9 @@
|
|
301 |
}
|
302 |
var el = link.parents( '.redux-container:first' );
|
303 |
var relid = link.data( 'rel' ); // The group ID of interest
|
304 |
-
var oldid = el.find( '.redux-group-tab-link-li.active .redux-group-tab-link-a' ).data( 'rel' );
|
305 |
|
|
|
306 |
|
307 |
if ( oldid === relid ) {
|
308 |
return;
|
@@ -356,12 +357,20 @@
|
|
356 |
el.find( '#' + relid + '_section_group_li' ).addClass( 'active' ).removeClass( 'activeChild' ).find( 'ul.subsection' ).slideDown();
|
357 |
|
358 |
if ( el.find( '#' + oldid + '_section_group_li' ).find( 'ul.subsection' ).length ) {
|
359 |
-
//console.log('oldid is parent')
|
|
|
|
|
360 |
el.find( '#' + oldid + '_section_group_li' ).find( 'ul.subsection' ).slideUp(
|
361 |
'fast', function() {
|
362 |
el.find( '#' + oldid + '_section_group_li' ).removeClass( 'active' ).removeClass( 'activeChild' );
|
363 |
}
|
364 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
365 |
} else if ( el.find( '#' + oldid + '_section_group_li' ).parents( 'ul.subsection' ).length ) {
|
366 |
//console.log('oldid is a child');
|
367 |
if ( !el.find( '#' + oldid + '_section_group_li' ).parents( '#' + relid + '_section_group_li' ).length ) {
|
@@ -399,7 +408,7 @@
|
|
399 |
$.redux.initFields();
|
400 |
}
|
401 |
);
|
402 |
-
$('#toplevel_page_'+redux.args.slug ).find('.current' ).removeClass('current');
|
403 |
|
404 |
}
|
405 |
);
|
@@ -912,7 +921,7 @@
|
|
912 |
|
913 |
$.redux.expandOptions = function( parent ) {
|
914 |
var trigger = parent.find( '.expand_options' );
|
915 |
-
var width = parent.find( '.redux-sidebar' ).width()-1;
|
916 |
var id = $( '.redux-group-menu .active a' ).data( 'rel' ) + '_section_group';
|
917 |
|
918 |
if ( trigger.hasClass( 'expanded' ) ) {
|
@@ -929,7 +938,7 @@
|
|
929 |
{
|
930 |
'margin-left': width
|
931 |
}, 500, function() {
|
932 |
-
parent.find( '.redux-main' ).attr('style', '');
|
933 |
}
|
934 |
);
|
935 |
|
@@ -976,11 +985,16 @@
|
|
976 |
el.attr( 'data-width', width );
|
977 |
}
|
978 |
var height = el.attr( 'data-height' );
|
979 |
-
|
980 |
-
|
|
|
981 |
el.attr( 'data-height', height );
|
|
|
|
|
|
|
982 |
}
|
983 |
|
|
|
984 |
// Check if the current width is larger than the max
|
985 |
if ( width > maxWidth ) {
|
986 |
ratio = maxWidth / width; // get ratio for scaling image
|
@@ -988,8 +1002,10 @@
|
|
988 |
el.css( "height", height * ratio ); // Scale height based on ratio
|
989 |
height = height * ratio; // Reset height to match scaled image
|
990 |
width = width * ratio; // Reset width to match scaled image
|
|
|
991 |
} else {
|
992 |
el.css( "width", 'auto' ); // Set new height
|
|
|
993 |
}
|
994 |
|
995 |
// Check if current height is larger than max
|
@@ -999,8 +1015,18 @@
|
|
999 |
el.css( "width", width * ratio ); // Scale width based on ratio
|
1000 |
width = width * ratio; // Reset width to match scaled image
|
1001 |
height = height * ratio; // Reset height to match scaled image
|
|
|
|
|
1002 |
} else {
|
1003 |
el.css( "height", 'auto' ); // Set new height
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1004 |
}
|
1005 |
|
1006 |
if ( $( '#redux-header .redux_field_search' ) ) {
|
@@ -1039,42 +1065,53 @@
|
|
1039 |
$( document ).ready(
|
1040 |
function() {
|
1041 |
if ( redux.rAds ) {
|
1042 |
-
|
1043 |
-
|
1044 |
-
|
1045 |
-
|
1046 |
-
|
1047 |
-
|
1048 |
-
|
1049 |
-
|
1050 |
-
|
1051 |
-
|
1052 |
-
|
1053 |
-
|
1054 |
-
|
1055 |
-
|
1056 |
-
|
1057 |
-
|
1058 |
-
|
1059 |
-
|
|
|
1060 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1061 |
|
1062 |
-
|
1063 |
-
function() {
|
1064 |
-
setTimeout(
|
1065 |
function() {
|
1066 |
$.redux.resizeAds();
|
1067 |
-
}
|
1068 |
);
|
1069 |
-
|
1070 |
-
}
|
1071 |
);
|
1072 |
|
1073 |
-
$( window ).resize(
|
1074 |
-
function() {
|
1075 |
-
$.redux.resizeAds();
|
1076 |
-
}
|
1077 |
-
);
|
1078 |
}
|
1079 |
}
|
1080 |
);
|
51 |
$( '#toplevel_page_' + redux.args.slug + ' .wp-submenu a, #wp-admin-bar-' + redux.args.slug + ' a.ab-item' ).click(
|
52 |
function( e ) {
|
53 |
|
54 |
+
if ( ( $( '#toplevel_page_' + redux.args.slug ).hasClass( 'wp-menu-open' ) || $( this ).hasClass( 'ab-item' ) ) && !$( this ).parents( 'ul.ab-submenu:first' ).hasClass( 'ab-sub-secondary' ) ) {
|
55 |
e.preventDefault();
|
56 |
var url = $( this ).attr( 'href' ).split( '&tab=' );
|
57 |
$( '#' + url[1] + '_section_group_li_a' ).click();
|
58 |
+
$( this ).parents( 'ul:first' ).find( '.current' ).removeClass( 'current' );
|
59 |
$( this ).addClass( 'current' );
|
60 |
$( this ).parent().addClass( 'current' );
|
61 |
return false;
|
301 |
}
|
302 |
var el = link.parents( '.redux-container:first' );
|
303 |
var relid = link.data( 'rel' ); // The group ID of interest
|
304 |
+
var oldid = el.find( '.redux-group-tab-link-li.active:first .redux-group-tab-link-a' ).data( 'rel' );
|
305 |
|
306 |
+
//console.log('id: '+relid+' oldid: '+oldid);
|
307 |
|
308 |
if ( oldid === relid ) {
|
309 |
return;
|
357 |
el.find( '#' + relid + '_section_group_li' ).addClass( 'active' ).removeClass( 'activeChild' ).find( 'ul.subsection' ).slideDown();
|
358 |
|
359 |
if ( el.find( '#' + oldid + '_section_group_li' ).find( 'ul.subsection' ).length ) {
|
360 |
+
//console.log('oldid is parent');
|
361 |
+
//console.log('#' + relid + '_section_group_li');
|
362 |
+
|
363 |
el.find( '#' + oldid + '_section_group_li' ).find( 'ul.subsection' ).slideUp(
|
364 |
'fast', function() {
|
365 |
el.find( '#' + oldid + '_section_group_li' ).removeClass( 'active' ).removeClass( 'activeChild' );
|
366 |
}
|
367 |
);
|
368 |
+
var newParent = el.find( '#' + relid + '_section_group_li' ).parents( '.hasSubSections:first' );
|
369 |
+
if ( newParent.length > 0 ) {
|
370 |
+
el.find( '#' + relid + '_section_group_li' ).removeClass( 'active' );
|
371 |
+
relid = newParent.find( '.redux-group-tab-link-a:first' ).data( 'rel' );
|
372 |
+
el.find( '#' + relid + '_section_group_li' ).addClass( 'active' ).removeClass( 'activeChild' ).find( 'ul.subsection' ).slideDown();
|
373 |
+
}
|
374 |
} else if ( el.find( '#' + oldid + '_section_group_li' ).parents( 'ul.subsection' ).length ) {
|
375 |
//console.log('oldid is a child');
|
376 |
if ( !el.find( '#' + oldid + '_section_group_li' ).parents( '#' + relid + '_section_group_li' ).length ) {
|
408 |
$.redux.initFields();
|
409 |
}
|
410 |
);
|
411 |
+
$( '#toplevel_page_' + redux.args.slug ).find( '.current' ).removeClass( 'current' );
|
412 |
|
413 |
}
|
414 |
);
|
921 |
|
922 |
$.redux.expandOptions = function( parent ) {
|
923 |
var trigger = parent.find( '.expand_options' );
|
924 |
+
var width = parent.find( '.redux-sidebar' ).width() - 1;
|
925 |
var id = $( '.redux-group-menu .active a' ).data( 'rel' ) + '_section_group';
|
926 |
|
927 |
if ( trigger.hasClass( 'expanded' ) ) {
|
938 |
{
|
939 |
'margin-left': width
|
940 |
}, 500, function() {
|
941 |
+
parent.find( '.redux-main' ).attr( 'style', '' );
|
942 |
}
|
943 |
);
|
944 |
|
985 |
el.attr( 'data-width', width );
|
986 |
}
|
987 |
var height = el.attr( 'data-height' );
|
988 |
+
var eHeight = el.height();
|
989 |
+
if ( !height || eHeight > height ) {
|
990 |
+
height = eHeight;
|
991 |
el.attr( 'data-height', height );
|
992 |
+
el.css( "width", 'auto' );
|
993 |
+
el.attr( 'data-width', el.width() );
|
994 |
+
width = el.width();
|
995 |
}
|
996 |
|
997 |
+
|
998 |
// Check if the current width is larger than the max
|
999 |
if ( width > maxWidth ) {
|
1000 |
ratio = maxWidth / width; // get ratio for scaling image
|
1002 |
el.css( "height", height * ratio ); // Scale height based on ratio
|
1003 |
height = height * ratio; // Reset height to match scaled image
|
1004 |
width = width * ratio; // Reset width to match scaled image
|
1005 |
+
|
1006 |
} else {
|
1007 |
el.css( "width", 'auto' ); // Set new height
|
1008 |
+
|
1009 |
}
|
1010 |
|
1011 |
// Check if current height is larger than max
|
1015 |
el.css( "width", width * ratio ); // Scale width based on ratio
|
1016 |
width = width * ratio; // Reset width to match scaled image
|
1017 |
height = height * ratio; // Reset height to match scaled image
|
1018 |
+
|
1019 |
+
|
1020 |
} else {
|
1021 |
el.css( "height", 'auto' ); // Set new height
|
1022 |
+
|
1023 |
+
}
|
1024 |
+
|
1025 |
+
var test = ($( document.getElementById( 'redux-header' ) ).height() - el.height()) / 2;
|
1026 |
+
if ( test > 0 ) {
|
1027 |
+
el.css( "margin-top", test );
|
1028 |
+
} else {
|
1029 |
+
el.css( "margin-top", 0 );
|
1030 |
}
|
1031 |
|
1032 |
if ( $( '#redux-header .redux_field_search' ) ) {
|
1065 |
$( document ).ready(
|
1066 |
function() {
|
1067 |
if ( redux.rAds ) {
|
1068 |
+
setTimeout(
|
1069 |
+
function() {
|
1070 |
+
$( '#redux-header' ).append( '<div class="rAds"></div>' );
|
1071 |
+
var el = $( '#redux-header' );
|
1072 |
+
el.css( 'position', 'relative' );
|
1073 |
+
|
1074 |
+
el.find( '.rAds' ).attr(
|
1075 |
+
'style',
|
1076 |
+
'position:absolute; top: 6px; right: 6px; display:block !important;overflow:hidden;'
|
1077 |
+
).css( 'left', '-99999px' );
|
1078 |
+
el.find( '.rAds' ).html( redux.rAds.replace( /<br\s?\/?>/, '' ) );
|
1079 |
+
var rAds = el.find( '.rAds' );
|
1080 |
+
|
1081 |
+
var maxHeight = el.height();
|
1082 |
+
var maxWidth = el.width() - el.find( '.display_header' ).width() - 30;
|
1083 |
+
|
1084 |
+
rAds.find( 'a' ).css( 'float', 'right' ).css( 'line-height', el.height() + 'px' ).css(
|
1085 |
+
'margin-left', '5px'
|
1086 |
+
);
|
1087 |
|
1088 |
+
$( document ).ajaxComplete(
|
1089 |
+
function() {
|
1090 |
+
rAds.find( 'a' ).hide();
|
1091 |
+
setTimeout(
|
1092 |
+
function() {
|
1093 |
+
$.redux.resizeAds();
|
1094 |
+
rAds.find( 'a' ).fadeIn();
|
1095 |
+
}, 1400
|
1096 |
+
);
|
1097 |
+
setTimeout(
|
1098 |
+
function() {
|
1099 |
+
$.redux.resizeAds();
|
1100 |
+
|
1101 |
+
}, 1500
|
1102 |
+
);
|
1103 |
+
$( document ).unbind( 'ajaxComplete' );
|
1104 |
+
}
|
1105 |
+
);
|
1106 |
|
1107 |
+
$( window ).resize(
|
|
|
|
|
1108 |
function() {
|
1109 |
$.redux.resizeAds();
|
1110 |
+
}
|
1111 |
);
|
1112 |
+
}, 400
|
|
|
1113 |
);
|
1114 |
|
|
|
|
|
|
|
|
|
|
|
1115 |
}
|
1116 |
}
|
1117 |
);
|
ReduxCore/assets/js/redux.min.js
CHANGED
@@ -1,3 +1,3 @@
|
|
1 |
function redux_change(a){jQuery("body").trigger("check_dependencies",a),a.hasClass("compiler")&&jQuery("#redux-compiler-hook").val(1),window.onbeforeunload=confirmOnPageExit;var b=jQuery(a).parents(".redux-container:first");if(jQuery(a).parents("fieldset.redux-field:first").hasClass("redux-field-error")){jQuery(a).parents("fieldset.redux-field:first").removeClass("redux-field-error"),jQuery(a).parent().find(".redux-th-error").slideUp();var c=jQuery(a).closest(".redux-group-tab").attr("id"),d=parseInt(b.find(".redux-field-errors span").text())-1,e=parseInt(b.find(".redux-field-warnings span").text())-1;if(0>=d)jQuery("#"+c+"_li .redux-menu-error").fadeOut("fast").remove(),jQuery("#"+c+"_li .redux-group-tab-link-a").removeClass("hasError"),jQuery("#"+c+"_li").parents(".inside:first").find(".redux-field-errors").slideUp(),jQuery(a).parents(".redux-container:first").find(".redux-field-errors").slideUp(),jQuery("#redux_metaboxes_errors").slideUp();else{var f=c.split("_");f=f[0];var g=b.find('.redux-group-tab-link-a[data-key="'+f+'"]').parents(".redux-group-tab-link-li:first"),h=parseInt(g.find(".redux-menu-error:first").text())-1;0>=h?g.find(".redux-menu-error:first").fadeOut().remove():g.find(".redux-menu-error:first").text(h);var i=parseInt(g.find(".redux-menu-warning:first").text())-1;0>=i?g.find(".redux-menu-warning:first").fadeOut().remove():g.find(".redux-menu-warning:first").text(i),b.find(".redux-field-errors span").text(d),b.find(".redux-field-warning span").text(e)}var j=jQuery("#"+c+"_li").parents(".hasSubSections:first");0!==j.length&&0===j.find(".redux-menu-error").length&&j.find(".hasError").removeClass("hasError")}redux.args.disable_save_warn||b.find(".redux-save-warn").slideDown()}function colorValidate(a){var b=jQuery(a).val(),c=colorNameToHex(b);return c!==b.replace("#","")?c:b}function colorNameToHex(a){var b=a.replace(/^\s\s*/,"").replace(/\s\s*$/,"").replace("#",""),c={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4","indianred ":"#cd5c5c","indigo ":"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",redux:"#01a3e3",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};return"undefined"!==c[b.toLowerCase()]?c[b.toLowerCase()]:a}!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){function b(a){return a}function c(a){return decodeURIComponent(a.replace(e," "))}function d(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return f.json?JSON.parse(a):a}catch(b){}}var e=/\+/g,f=a.cookie=function(e,g,h){if(void 0!==g){if(h=a.extend({},f.defaults,h),"number"==typeof h.expires){var i=h.expires,j=h.expires=new Date;j.setDate(j.getDate()+i)}return g=f.json?JSON.stringify(g):String(g),document.cookie=[f.raw?e:encodeURIComponent(e),"=",f.raw?g:encodeURIComponent(g),h.expires?"; expires="+h.expires.toUTCString():"",h.path?"; path="+h.path:"",h.domain?"; domain="+h.domain:"",h.secure?"; secure":""].join("")}for(var k=f.raw?b:c,l=document.cookie.split("; "),m=e?void 0:{},n=0,o=l.length;o>n;n++){var p=l[n].split("="),q=k(p.shift()),r=k(p.join("="));if(e&&e===q){m=d(r);break}e||(m[q]=d(r))}return m};f.defaults={},a.removeCookie=function(b,c){return void 0!==a.cookie(b)?(a.cookie(b,"",a.extend({},c,{expires:-1})),!0):!1}}),"undefined"==typeof jQuery.qtip&&!function(a,b,c){!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):jQuery&&!jQuery.fn.qtip&&a(jQuery)}(function(d){"use strict";function e(a,b,c,e){this.id=c,this.target=a,this.tooltip=G,this.elements={target:a},this._id=T+"-"+c,this.timers={img:{}},this.options=b,this.plugins={},this.cache={event:{},target:d(),disabled:F,attr:e,onTooltip:F,lastClass:""},this.rendered=this.destroyed=this.disabled=this.waiting=this.hiddenDuringWait=this.positioning=this.triggering=F}function f(a){return a===G||"object"!==d.type(a)}function g(a){return!(d.isFunction(a)||a&&a.attr||a.length||"object"===d.type(a)&&(a.jquery||a.then))}function h(a){var b,c,e,h;return f(a)?F:(f(a.metadata)&&(a.metadata={type:a.metadata}),"content"in a&&(b=a.content,f(b)||b.jquery||b.done?b=a.content={text:c=g(b)?F:b}:c=b.text,"ajax"in b&&(e=b.ajax,h=e&&e.once!==F,delete b.ajax,b.text=function(a,b){var f=c||d(this).attr(b.options.content.attr)||"Loading...",g=d.ajax(d.extend({},e,{context:b})).then(e.success,G,e.error).then(function(a){return a&&h&&b.set("content.text",a),a},function(a,c,d){b.destroyed||0===a.status||b.set("content.text",c+": "+d)});return h?f:(b.set("content.text",f),g)}),"title"in b&&(f(b.title)||(b.button=b.title.button,b.title=b.title.text),g(b.title||F)&&(b.title=F))),"position"in a&&f(a.position)&&(a.position={my:a.position,at:a.position}),"show"in a&&f(a.show)&&(a.show=a.show.jquery?{target:a.show}:a.show===E?{ready:E}:{event:a.show}),"hide"in a&&f(a.hide)&&(a.hide=a.hide.jquery?{target:a.hide}:{event:a.hide}),"style"in a&&f(a.style)&&(a.style={classes:a.style}),d.each(S,function(){this.sanitize&&this.sanitize(a)}),a)}function i(a,b){for(var c,d=0,e=a,f=b.split(".");e=e[f[d++]];)d<f.length&&(c=e);return[c||a,f.pop()]}function j(a,b){var c,d,e;for(c in this.checks)for(d in this.checks[c])(e=new RegExp(d,"i").exec(a))&&(b.push(e),("builtin"===c||this.plugins[c])&&this.checks[c][d].apply(this.plugins[c]||this,b))}function k(a){return W.concat("").join(a?"-"+a+" ":" ")}function l(c){return c&&{type:c.type,pageX:c.pageX,pageY:c.pageY,target:c.target,relatedTarget:c.relatedTarget,scrollX:c.scrollX||a.pageXOffset||b.body.scrollLeft||b.documentElement.scrollLeft,scrollY:c.scrollY||a.pageYOffset||b.body.scrollTop||b.documentElement.scrollTop}||{}}function m(a,b){return b>0?setTimeout(d.proxy(a,this),b):void a.call(this)}function n(a){return this.tooltip.hasClass(bb)?F:(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),void(this.timers.show=m.call(this,function(){this.toggle(E,a)},this.options.show.delay)))}function o(a){if(this.tooltip.hasClass(bb))return F;var b=d(a.relatedTarget),c=b.closest(X)[0]===this.tooltip[0],e=b[0]===this.options.show.target[0];if(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this!==b[0]&&"mouse"===this.options.position.target&&c||this.options.hide.fixed&&/mouse(out|leave|move)/.test(a.type)&&(c||e))try{a.preventDefault(),a.stopImmediatePropagation()}catch(f){}else this.timers.hide=m.call(this,function(){this.toggle(F,a)},this.options.hide.delay,this)}function p(a){return this.tooltip.hasClass(bb)||!this.options.hide.inactive?F:(clearTimeout(this.timers.inactive),void(this.timers.inactive=m.call(this,function(){this.hide(a)},this.options.hide.inactive)))}function q(a){this.rendered&&this.tooltip[0].offsetWidth>0&&this.reposition(a)}function r(a,c,e){d(b.body).delegate(a,(c.split?c:c.join(ib+" "))+ib,function(){var a=z.api[d.attr(this,V)];a&&!a.disabled&&e.apply(a,arguments)})}function s(a,c,f){var g,i,j,k,l,m=d(b.body),n=a[0]===b?m:a,o=a.metadata?a.metadata(f.metadata):G,p="html5"===f.metadata.type&&o?o[f.metadata.name]:G,q=a.data(f.metadata.name||"qtipopts");try{q="string"==typeof q?d.parseJSON(q):q}catch(r){}if(k=d.extend(E,{},z.defaults,f,"object"==typeof q?h(q):G,h(p||o)),i=k.position,k.id=c,"boolean"==typeof k.content.text){if(j=a.attr(k.content.attr),k.content.attr===F||!j)return F;k.content.text=j}if(i.container.length||(i.container=m),i.target===F&&(i.target=n),k.show.target===F&&(k.show.target=n),k.show.solo===E&&(k.show.solo=i.container.closest("body")),k.hide.target===F&&(k.hide.target=n),k.position.viewport===E&&(k.position.viewport=i.container),i.container=i.container.eq(0),i.at=new B(i.at,E),i.my=new B(i.my),a.data(T))if(k.overwrite)a.qtip("destroy",!0);else if(k.overwrite===F)return F;return a.attr(U,c),k.suppress&&(l=a.attr("title"))&&a.removeAttr("title").attr(db,l).attr("title",""),g=new e(a,k,c,!!j),a.data(T,g),a.one("remove.qtip-"+c+" removeqtip.qtip-"+c,function(){var a;(a=d(this).data(T))&&a.destroy(!0)}),g}function t(a){return a.charAt(0).toUpperCase()+a.slice(1)}function u(a,b){var d,e,f=b.charAt(0).toUpperCase()+b.slice(1),g=(b+" "+tb.join(f+" ")+f).split(" "),h=0;if(sb[b])return a.css(sb[b]);for(;d=g[h++];)if((e=a.css(d))!==c)return sb[b]=d,e}function v(a,b){return Math.ceil(parseFloat(u(a,b)))}function w(a,b){this._ns="tip",this.options=b,this.offset=b.offset,this.size=[b.width,b.height],this.init(this.qtip=a)}function x(a,b){this.options=b,this._ns="-modal",this.init(this.qtip=a)}function y(a){this._ns="ie6",this.init(this.qtip=a)}var z,A,B,C,D,E=!0,F=!1,G=null,H="x",I="y",J="width",K="height",L="top",M="left",N="bottom",O="right",P="center",Q="flipinvert",R="shift",S={},T="qtip",U="data-hasqtip",V="data-qtip-id",W=["ui-widget","ui-tooltip"],X="."+T,Y="click dblclick mousedown mouseup mousemove mouseleave mouseenter".split(" "),Z=T+"-fixed",$=T+"-default",_=T+"-focus",ab=T+"-hover",bb=T+"-disabled",cb="_replacedByqTip",db="oldtitle",eb={ie:function(){for(var a=3,c=b.createElement("div");(c.innerHTML="<!--[if gt IE "+ ++a+"]><i></i><![endif]-->")&&c.getElementsByTagName("i")[0];);return a>4?a:0/0}(),iOS:parseFloat((""+(/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||F};A=e.prototype,A._when=function(a){return d.when.apply(d,a)},A.render=function(a){if(this.rendered||this.destroyed)return this;var b,c=this,e=this.options,f=this.cache,g=this.elements,h=e.content.text,i=e.content.title,j=e.content.button,k=e.position,l=("."+this._id+" ",[]);return d.attr(this.target[0],"aria-describedby",this._id),this.tooltip=g.tooltip=b=d("<div/>",{id:this._id,"class":[T,$,e.style.classes,T+"-pos-"+e.position.my.abbrev()].join(" "),width:e.style.width||"",height:e.style.height||"",tracking:"mouse"===k.target&&k.adjust.mouse,role:"alert","aria-live":"polite","aria-atomic":F,"aria-describedby":this._id+"-content","aria-hidden":E}).toggleClass(bb,this.disabled).attr(V,this.id).data(T,this).appendTo(k.container).append(g.content=d("<div />",{"class":T+"-content",id:this._id+"-content","aria-atomic":E})),this.rendered=-1,this.positioning=E,i&&(this._createTitle(),d.isFunction(i)||l.push(this._updateTitle(i,F))),j&&this._createButton(),d.isFunction(h)||l.push(this._updateContent(h,F)),this.rendered=E,this._setWidget(),d.each(S,function(a){var b;"render"===this.initialize&&(b=this(c))&&(c.plugins[a]=b)}),this._unassignEvents(),this._assignEvents(),this._when(l).then(function(){c._trigger("render"),c.positioning=F,c.hiddenDuringWait||!e.show.ready&&!a||c.toggle(E,f.event,F),c.hiddenDuringWait=F}),z.api[this.id]=this,this},A.destroy=function(a){function b(){if(!this.destroyed){this.destroyed=E;var a=this.target,b=a.attr(db);this.rendered&&this.tooltip.stop(1,0).find("*").remove().end().remove(),d.each(this.plugins,function(){this.destroy&&this.destroy()}),clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this._unassignEvents(),a.removeData(T).removeAttr(V).removeAttr(U).removeAttr("aria-describedby"),this.options.suppress&&b&&a.attr("title",b).removeAttr(db),this._unbind(a),this.options=this.elements=this.cache=this.timers=this.plugins=this.mouse=G,delete z.api[this.id]}}return this.destroyed?this.target:(a===E&&"hide"!==this.triggering||!this.rendered?b.call(this):(this.tooltip.one("tooltiphidden",d.proxy(b,this)),!this.triggering&&this.hide()),this.target)},C=A.checks={builtin:{"^id$":function(a,b,c,e){var f=c===E?z.nextid:c,g=T+"-"+f;f!==F&&f.length>0&&!d("#"+g).length?(this._id=g,this.rendered&&(this.tooltip[0].id=this._id,this.elements.content[0].id=this._id+"-content",this.elements.title[0].id=this._id+"-title")):a[b]=e},"^prerender":function(a,b,c){c&&!this.rendered&&this.render(this.options.show.ready)},"^content.text$":function(a,b,c){this._updateContent(c)},"^content.attr$":function(a,b,c,d){this.options.content.text===this.target.attr(d)&&this._updateContent(this.target.attr(c))},"^content.title$":function(a,b,c){return c?(c&&!this.elements.title&&this._createTitle(),void this._updateTitle(c)):this._removeTitle()},"^content.button$":function(a,b,c){this._updateButton(c)},"^content.title.(text|button)$":function(a,b,c){this.set("content."+b,c)},"^position.(my|at)$":function(a,b,c){"string"==typeof c&&(a[b]=new B(c,"at"===b))},"^position.container$":function(a,b,c){this.rendered&&this.tooltip.appendTo(c)},"^show.ready$":function(a,b,c){c&&(!this.rendered&&this.render(E)||this.toggle(E))},"^style.classes$":function(a,b,c,d){this.rendered&&this.tooltip.removeClass(d).addClass(c)},"^style.(width|height)":function(a,b,c){this.rendered&&this.tooltip.css(b,c)},"^style.widget|content.title":function(){this.rendered&&this._setWidget()},"^style.def":function(a,b,c){this.rendered&&this.tooltip.toggleClass($,!!c)},"^events.(render|show|move|hide|focus|blur)$":function(a,b,c){this.rendered&&this.tooltip[(d.isFunction(c)?"":"un")+"bind"]("tooltip"+b,c)},"^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)":function(){if(this.rendered){var a=this.options.position;this.tooltip.attr("tracking","mouse"===a.target&&a.adjust.mouse),this._unassignEvents(),this._assignEvents()}}}},A.get=function(a){if(this.destroyed)return this;var b=i(this.options,a.toLowerCase()),c=b[0][b[1]];return c.precedance?c.string():c};var fb=/^position\.(my|at|adjust|target|container|viewport)|style|content|show\.ready/i,gb=/^prerender|show\.ready/i;A.set=function(a,b){if(this.destroyed)return this;{var c,e=this.rendered,f=F,g=this.options;this.checks}return"string"==typeof a?(c=a,a={},a[c]=b):a=d.extend({},a),d.each(a,function(b,c){if(e&&gb.test(b))return void delete a[b];var h,j=i(g,b.toLowerCase());h=j[0][j[1]],j[0][j[1]]=c&&c.nodeType?d(c):c,f=fb.test(b)||f,a[b]=[j[0],j[1],c,h]}),h(g),this.positioning=E,d.each(a,d.proxy(j,this)),this.positioning=F,this.rendered&&this.tooltip[0].offsetWidth>0&&f&&this.reposition("mouse"===g.position.target?G:this.cache.event),this},A._update=function(a,b){var c=this,e=this.cache;return this.rendered&&a?(d.isFunction(a)&&(a=a.call(this.elements.target,e.event,this)||""),d.isFunction(a.then)?(e.waiting=E,a.then(function(a){return e.waiting=F,c._update(a,b)},G,function(a){return c._update(a,b)})):a===F||!a&&""!==a?F:(a.jquery&&a.length>0?b.empty().append(a.css({display:"block",visibility:"visible"})):b.html(a),this._waitForContent(b).then(function(a){a.images&&a.images.length&&c.rendered&&c.tooltip[0].offsetWidth>0&&c.reposition(e.event,!a.length)}))):F},A._waitForContent=function(a){var b=this.cache;return b.waiting=E,(d.fn.imagesLoaded?a.imagesLoaded():d.Deferred().resolve([])).done(function(){b.waiting=F}).promise()},A._updateContent=function(a,b){this._update(a,this.elements.content,b)},A._updateTitle=function(a,b){this._update(a,this.elements.title,b)===F&&this._removeTitle(F)},A._createTitle=function(){var a=this.elements,b=this._id+"-title";a.titlebar&&this._removeTitle(),a.titlebar=d("<div />",{"class":T+"-titlebar "+(this.options.style.widget?k("header"):"")}).append(a.title=d("<div />",{id:b,"class":T+"-title","aria-atomic":E})).insertBefore(a.content).delegate(".qtip-close","mousedown keydown mouseup keyup mouseout",function(a){d(this).toggleClass("ui-state-active ui-state-focus","down"===a.type.substr(-4))}).delegate(".qtip-close","mouseover mouseout",function(a){d(this).toggleClass("ui-state-hover","mouseover"===a.type)}),this.options.content.button&&this._createButton()},A._removeTitle=function(a){var b=this.elements;b.title&&(b.titlebar.remove(),b.titlebar=b.title=b.button=G,a!==F&&this.reposition())},A.reposition=function(c,e){if(!this.rendered||this.positioning||this.destroyed)return this;this.positioning=E;var f,g,h=this.cache,i=this.tooltip,j=this.options.position,k=j.target,l=j.my,m=j.at,n=j.viewport,o=j.container,p=j.adjust,q=p.method.split(" "),r=i.outerWidth(F),s=i.outerHeight(F),t=0,u=0,v=i.css("position"),w={left:0,top:0},x=i[0].offsetWidth>0,y=c&&"scroll"===c.type,z=d(a),A=o[0].ownerDocument,B=this.mouse;if(d.isArray(k)&&2===k.length)m={x:M,y:L},w={left:k[0],top:k[1]};else if("mouse"===k)m={x:M,y:L},!B||!B.pageX||!p.mouse&&c&&c.pageX?c&&c.pageX||((!p.mouse||this.options.show.distance)&&h.origin&&h.origin.pageX?c=h.origin:(!c||c&&("resize"===c.type||"scroll"===c.type))&&(c=h.event)):c=B,"static"!==v&&(w=o.offset()),A.body.offsetWidth!==(a.innerWidth||A.documentElement.clientWidth)&&(g=d(b.body).offset()),w={left:c.pageX-w.left+(g&&g.left||0),top:c.pageY-w.top+(g&&g.top||0)},p.mouse&&y&&B&&(w.left-=(B.scrollX||0)-z.scrollLeft(),w.top-=(B.scrollY||0)-z.scrollTop());else{if("event"===k?c&&c.target&&"scroll"!==c.type&&"resize"!==c.type?h.target=d(c.target):c.target||(h.target=this.elements.target):"event"!==k&&(h.target=d(k.jquery?k:this.elements.target)),k=h.target,k=d(k).eq(0),0===k.length)return this;k[0]===b||k[0]===a?(t=eb.iOS?a.innerWidth:k.width(),u=eb.iOS?a.innerHeight:k.height(),k[0]===a&&(w={top:(n||k).scrollTop(),left:(n||k).scrollLeft()})):S.imagemap&&k.is("area")?f=S.imagemap(this,k,m,S.viewport?q:F):S.svg&&k&&k[0].ownerSVGElement?f=S.svg(this,k,m,S.viewport?q:F):(t=k.outerWidth(F),u=k.outerHeight(F),w=k.offset()),f&&(t=f.width,u=f.height,g=f.offset,w=f.position),w=this.reposition.offset(k,w,o),(eb.iOS>3.1&&eb.iOS<4.1||eb.iOS>=4.3&&eb.iOS<4.33||!eb.iOS&&"fixed"===v)&&(w.left-=z.scrollLeft(),w.top-=z.scrollTop()),(!f||f&&f.adjustable!==F)&&(w.left+=m.x===O?t:m.x===P?t/2:0,w.top+=m.y===N?u:m.y===P?u/2:0)}return w.left+=p.x+(l.x===O?-r:l.x===P?-r/2:0),w.top+=p.y+(l.y===N?-s:l.y===P?-s/2:0),S.viewport?(w.adjusted=S.viewport(this,w,j,t,u,r,s),g&&w.adjusted.left&&(w.left+=g.left),g&&w.adjusted.top&&(w.top+=g.top)):w.adjusted={left:0,top:0},this._trigger("move",[w,n.elem||n],c)?(delete w.adjusted,e===F||!x||isNaN(w.left)||isNaN(w.top)||"mouse"===k||!d.isFunction(j.effect)?i.css(w):d.isFunction(j.effect)&&(j.effect.call(i,this,d.extend({},w)),i.queue(function(a){d(this).css({opacity:"",height:""}),eb.ie&&this.style.removeAttribute("filter"),a()})),this.positioning=F,this):this},A.reposition.offset=function(a,c,e){function f(a,b){c.left+=b*a.scrollLeft(),c.top+=b*a.scrollTop()}if(!e[0])return c;var g,h,i,j,k=d(a[0].ownerDocument),l=!!eb.ie&&"CSS1Compat"!==b.compatMode,m=e[0];do"static"!==(h=d.css(m,"position"))&&("fixed"===h?(i=m.getBoundingClientRect(),f(k,-1)):(i=d(m).position(),i.left+=parseFloat(d.css(m,"borderLeftWidth"))||0,i.top+=parseFloat(d.css(m,"borderTopWidth"))||0),c.left-=i.left+(parseFloat(d.css(m,"marginLeft"))||0),c.top-=i.top+(parseFloat(d.css(m,"marginTop"))||0),g||"hidden"===(j=d.css(m,"overflow"))||"visible"===j||(g=d(m)));while(m=m.offsetParent);return g&&(g[0]!==k[0]||l)&&f(g,1),c};var hb=(B=A.reposition.Corner=function(a,b){a=(""+a).replace(/([A-Z])/," $1").replace(/middle/gi,P).toLowerCase(),this.x=(a.match(/left|right/i)||a.match(/center/)||["inherit"])[0].toLowerCase(),this.y=(a.match(/top|bottom|center/i)||["inherit"])[0].toLowerCase(),this.forceY=!!b;var c=a.charAt(0);this.precedance="t"===c||"b"===c?I:H}).prototype;hb.invert=function(a,b){this[a]=this[a]===M?O:this[a]===O?M:b||this[a]},hb.string=function(){var a=this.x,b=this.y;return a===b?a:this.precedance===I||this.forceY&&"center"!==b?b+" "+a:a+" "+b},hb.abbrev=function(){var a=this.string().split(" ");return a[0].charAt(0)+(a[1]&&a[1].charAt(0)||"")},hb.clone=function(){return new B(this.string(),this.forceY)},A.toggle=function(a,c){var e=this.cache,f=this.options,g=this.tooltip;if(c){if(/over|enter/.test(c.type)&&/out|leave/.test(e.event.type)&&f.show.target.add(c.target).length===f.show.target.length&&g.has(c.relatedTarget).length)return this;e.event=l(c)}if(this.waiting&&!a&&(this.hiddenDuringWait=E),!this.rendered)return a?this.render(1):this;if(this.destroyed||this.disabled)return this;var h,i,j,k=a?"show":"hide",m=this.options[k],n=(this.options[a?"hide":"show"],this.options.position),o=this.options.content,p=this.tooltip.css("width"),q=this.tooltip.is(":visible"),r=a||1===m.target.length,s=!c||m.target.length<2||e.target[0]===c.target;return(typeof a).search("boolean|number")&&(a=!q),h=!g.is(":animated")&&q===a&&s,i=h?G:!!this._trigger(k,[90]),this.destroyed?this:(i!==F&&a&&this.focus(c),!i||h?this:(d.attr(g[0],"aria-hidden",!a),a?(e.origin=l(this.mouse),d.isFunction(o.text)&&this._updateContent(o.text,F),d.isFunction(o.title)&&this._updateTitle(o.title,F),!D&&"mouse"===n.target&&n.adjust.mouse&&(d(b).bind("mousemove."+T,this._storeMouse),D=E),p||g.css("width",g.outerWidth(F)),this.reposition(c,arguments[2]),p||g.css("width",""),m.solo&&("string"==typeof m.solo?d(m.solo):d(X,m.solo)).not(g).not(m.target).qtip("hide",d.Event("tooltipsolo"))):(clearTimeout(this.timers.show),delete e.origin,D&&!d(X+'[tracking="true"]:visible',m.solo).not(g).length&&(d(b).unbind("mousemove."+T),D=F),this.blur(c)),j=d.proxy(function(){a?(eb.ie&&g[0].style.removeAttribute("filter"),g.css("overflow",""),"string"==typeof m.autofocus&&d(this.options.show.autofocus,g).focus(),this.options.show.target.trigger("qtip-"+this.id+"-inactive")):g.css({display:"",visibility:"",opacity:"",left:"",top:""}),this._trigger(a?"visible":"hidden")},this),m.effect===F||r===F?(g[k](),j()):d.isFunction(m.effect)?(g.stop(1,1),m.effect.call(g,this),g.queue("fx",function(a){j(),a()})):g.fadeTo(90,a?1:0,j),a&&m.target.trigger("qtip-"+this.id+"-inactive"),this))},A.show=function(a){return this.toggle(E,a)},A.hide=function(a){return this.toggle(F,a)},A.focus=function(a){if(!this.rendered||this.destroyed)return this;var b=d(X),c=this.tooltip,e=parseInt(c[0].style.zIndex,10),f=z.zindex+b.length;return c.hasClass(_)||this._trigger("focus",[f],a)&&(e!==f&&(b.each(function(){this.style.zIndex>e&&(this.style.zIndex=this.style.zIndex-1)}),b.filter("."+_).qtip("blur",a)),c.addClass(_)[0].style.zIndex=f),this},A.blur=function(a){return!this.rendered||this.destroyed?this:(this.tooltip.removeClass(_),this._trigger("blur",[this.tooltip.css("zIndex")],a),this)},A.disable=function(a){return this.destroyed?this:("toggle"===a?a=!(this.rendered?this.tooltip.hasClass(bb):this.disabled):"boolean"!=typeof a&&(a=E),this.rendered&&this.tooltip.toggleClass(bb,a).attr("aria-disabled",a),this.disabled=!!a,this)},A.enable=function(){return this.disable(F)},A._createButton=function(){var a=this,b=this.elements,c=b.tooltip,e=this.options.content.button,f="string"==typeof e,g=f?e:"Close tooltip";b.button&&b.button.remove(),b.button=e.jquery?e:d("<a />",{"class":"qtip-close "+(this.options.style.widget?"":T+"-icon"),title:g,"aria-label":g}).prepend(d("<span />",{"class":"ui-icon ui-icon-close",html:"×"})),b.button.appendTo(b.titlebar||c).attr("role","button").click(function(b){return c.hasClass(bb)||a.hide(b),F})},A._updateButton=function(a){if(!this.rendered)return F;var b=this.elements.button;a?this._createButton():b.remove()},A._setWidget=function(){var a=this.options.style.widget,b=this.elements,c=b.tooltip,d=c.hasClass(bb);c.removeClass(bb),bb=a?"ui-state-disabled":"qtip-disabled",c.toggleClass(bb,d),c.toggleClass("ui-helper-reset "+k(),a).toggleClass($,this.options.style.def&&!a),b.content&&b.content.toggleClass(k("content"),a),b.titlebar&&b.titlebar.toggleClass(k("header"),a),b.button&&b.button.toggleClass(T+"-icon",!a)},A._storeMouse=function(a){(this.mouse=l(a)).type="mousemove"},A._bind=function(a,b,c,e,f){var g="."+this._id+(e?"-"+e:"");b.length&&d(a).bind((b.split?b:b.join(g+" "))+g,d.proxy(c,f||this))},A._unbind=function(a,b){d(a).unbind("."+this._id+(b?"-"+b:""))};var ib="."+T;d(function(){r(X,["mouseenter","mouseleave"],function(a){var b="mouseenter"===a.type,c=d(a.currentTarget),e=d(a.relatedTarget||a.target),f=this.options;b?(this.focus(a),c.hasClass(Z)&&!c.hasClass(bb)&&clearTimeout(this.timers.hide)):"mouse"===f.position.target&&f.hide.event&&f.show.target&&!e.closest(f.show.target[0]).length&&this.hide(a),c.toggleClass(ab,b)}),r("["+V+"]",Y,p)}),A._trigger=function(a,b,c){var e=d.Event("tooltip"+a);return e.originalEvent=c&&d.extend({},c)||this.cache.event||G,this.triggering=a,this.tooltip.trigger(e,[this].concat(b||[])),this.triggering=F,!e.isDefaultPrevented()},A._bindEvents=function(a,b,c,e,f,g){if(e.add(c).length===e.length){var h=[];b=d.map(b,function(b){var c=d.inArray(b,a);return c>-1?void h.push(a.splice(c,1)[0]):b}),h.length&&this._bind(c,h,function(a){var b=this.rendered?this.tooltip[0].offsetWidth>0:!1;(b?g:f).call(this,a)})}this._bind(c,a,f),this._bind(e,b,g)},A._assignInitialEvents=function(a){function b(a){return this.disabled||this.destroyed?F:(this.cache.event=l(a),this.cache.target=a?d(a.target):[c],clearTimeout(this.timers.show),void(this.timers.show=m.call(this,function(){this.render("object"==typeof a||e.show.ready)},e.show.delay)))}var e=this.options,f=e.show.target,g=e.hide.target,h=e.show.event?d.trim(""+e.show.event).split(" "):[],i=e.hide.event?d.trim(""+e.hide.event).split(" "):[];/mouse(over|enter)/i.test(e.show.event)&&!/mouse(out|leave)/i.test(e.hide.event)&&i.push("mouseleave"),this._bind(f,"mousemove",function(a){this._storeMouse(a),this.cache.onTarget=E}),this._bindEvents(h,i,f,g,b,function(){clearTimeout(this.timers.show)}),(e.show.ready||e.prerender)&&b.call(this,a)},A._assignEvents=function(){var c=this,e=this.options,f=e.position,g=this.tooltip,h=e.show.target,i=e.hide.target,j=f.container,k=f.viewport,l=d(b),m=(d(b.body),d(a)),r=e.show.event?d.trim(""+e.show.event).split(" "):[],s=e.hide.event?d.trim(""+e.hide.event).split(" "):[];d.each(e.events,function(a,b){c._bind(g,"toggle"===a?["tooltipshow","tooltiphide"]:["tooltip"+a],b,null,g)}),/mouse(out|leave)/i.test(e.hide.event)&&"window"===e.hide.leave&&this._bind(l,["mouseout","blur"],function(a){/select|option/.test(a.target.nodeName)||a.relatedTarget||this.hide(a)}),e.hide.fixed?i=i.add(g.addClass(Z)):/mouse(over|enter)/i.test(e.show.event)&&this._bind(i,"mouseleave",function(){clearTimeout(this.timers.show)}),(""+e.hide.event).indexOf("unfocus")>-1&&this._bind(j.closest("html"),["mousedown","touchstart"],function(a){var b=d(a.target),c=this.rendered&&!this.tooltip.hasClass(bb)&&this.tooltip[0].offsetWidth>0,e=b.parents(X).filter(this.tooltip[0]).length>0;b[0]===this.target[0]||b[0]===this.tooltip[0]||e||this.target.has(b[0]).length||!c||this.hide(a)}),"number"==typeof e.hide.inactive&&(this._bind(h,"qtip-"+this.id+"-inactive",p),this._bind(i.add(g),z.inactiveEvents,p,"-inactive")),this._bindEvents(r,s,h,i,n,o),this._bind(h.add(g),"mousemove",function(a){if("number"==typeof e.hide.distance){var b=this.cache.origin||{},c=this.options.hide.distance,d=Math.abs;(d(a.pageX-b.pageX)>=c||d(a.pageY-b.pageY)>=c)&&this.hide(a)}this._storeMouse(a)}),"mouse"===f.target&&f.adjust.mouse&&(e.hide.event&&this._bind(h,["mouseenter","mouseleave"],function(a){this.cache.onTarget="mouseenter"===a.type}),this._bind(l,"mousemove",function(a){this.rendered&&this.cache.onTarget&&!this.tooltip.hasClass(bb)&&this.tooltip[0].offsetWidth>0&&this.reposition(a)})),(f.adjust.resize||k.length)&&this._bind(d.event.special.resize?k:m,"resize",q),f.adjust.scroll&&this._bind(m.add(f.container),"scroll",q)},A._unassignEvents=function(){var c=[this.options.show.target[0],this.options.hide.target[0],this.rendered&&this.tooltip[0],this.options.position.container[0],this.options.position.viewport[0],this.options.position.container.closest("html")[0],a,b];this._unbind(d([]).pushStack(d.grep(c,function(a){return"object"==typeof a})))},z=d.fn.qtip=function(a,b,e){var f=(""+a).toLowerCase(),g=G,i=d.makeArray(arguments).slice(1),j=i[i.length-1],k=this[0]?d.data(this[0],T):G;return!arguments.length&&k||"api"===f?k:"string"==typeof a?(this.each(function(){var a=d.data(this,T);if(!a)return E;if(j&&j.timeStamp&&(a.cache.event=j),!b||"option"!==f&&"options"!==f)a[f]&&a[f].apply(a,i);else{if(e===c&&!d.isPlainObject(b))return g=a.get(b),F;a.set(b,e)}}),g!==G?g:this):"object"!=typeof a&&arguments.length?void 0:(k=h(d.extend(E,{},a)),this.each(function(a){var b,c;return c=d.isArray(k.id)?k.id[a]:k.id,c=!c||c===F||c.length<1||z.api[c]?z.nextid++:c,b=s(d(this),c,k),b===F?E:(z.api[c]=b,d.each(S,function(){"initialize"===this.initialize&&this(b)}),void b._assignInitialEvents(j))}))},d.qtip=e,z.api={},d.each({attr:function(a,b){if(this.length){var c=this[0],e="title",f=d.data(c,"qtip");if(a===e&&f&&"object"==typeof f&&f.options.suppress)return arguments.length<2?d.attr(c,db):(f&&f.options.content.attr===e&&f.cache.attr&&f.set("content.text",b),this.attr(db,b))}return d.fn["attr"+cb].apply(this,arguments)},clone:function(a){var b=(d([]),d.fn["clone"+cb].apply(this,arguments));return a||b.filter("["+db+"]").attr("title",function(){return d.attr(this,db)}).removeAttr(db),b}},function(a,b){if(!b||d.fn[a+cb])return E;var c=d.fn[a+cb]=d.fn[a];d.fn[a]=function(){return b.apply(this,arguments)||c.apply(this,arguments)}}),d.ui||(d["cleanData"+cb]=d.cleanData,d.cleanData=function(a){for(var b,c=0;(b=d(a[c])).length;c++)if(b.attr(U))try{b.triggerHandler("removeqtip")}catch(e){}d["cleanData"+cb].apply(this,arguments)}),z.version="2.2.0",z.nextid=0,z.inactiveEvents=Y,z.zindex=15e3,z.defaults={prerender:F,id:F,overwrite:E,suppress:E,content:{text:E,attr:"title",title:F,button:F},position:{my:"top left",at:"bottom right",target:F,container:F,viewport:F,adjust:{x:0,y:0,mouse:E,scroll:E,resize:E,method:"flipinvert flipinvert"},effect:function(a,b){d(this).animate(b,{duration:200,queue:F})}},show:{target:F,event:"mouseenter",effect:E,delay:90,solo:F,ready:F,autofocus:F},hide:{target:F,event:"mouseleave",effect:E,delay:0,fixed:F,inactive:F,leave:"window",distance:F},style:{classes:"",widget:F,width:F,height:F,def:E},events:{render:G,move:G,show:G,hide:G,toggle:G,visible:G,hidden:G,focus:G,blur:G}};
|
2 |
-
var jb,kb="margin",lb="border",mb="color",nb="background-color",ob="transparent",pb=" !important",qb=!!b.createElement("canvas").getContext,rb=/rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i,sb={},tb=["Webkit","O","Moz","ms"];if(qb)var ub=a.devicePixelRatio||1,vb=function(){var a=b.createElement("canvas").getContext("2d");return a.backingStorePixelRatio||a.webkitBackingStorePixelRatio||a.mozBackingStorePixelRatio||a.msBackingStorePixelRatio||a.oBackingStorePixelRatio||1}(),wb=ub/vb;else var xb=function(a,b,c){return"<qtipvml:"+a+' xmlns="urn:schemas-microsoft.com:vml" class="qtip-vml" '+(b||"")+' style="behavior: url(#default#VML); '+(c||"")+'" />'};d.extend(w.prototype,{init:function(a){var b,c;c=this.element=a.elements.tip=d("<div />",{"class":T+"-tip"}).prependTo(a.tooltip),qb?(b=d("<canvas />").appendTo(this.element)[0].getContext("2d"),b.lineJoin="miter",b.miterLimit=1e5,b.save()):(b=xb("shape",'coordorigin="0,0"',"position:absolute;"),this.element.html(b+b),a._bind(d("*",c).add(c),["click","mousedown"],function(a){a.stopPropagation()},this._ns)),a._bind(a.tooltip,"tooltipmove",this.reposition,this._ns,this),this.create()},_swapDimensions:function(){this.size[0]=this.options.height,this.size[1]=this.options.width},_resetDimensions:function(){this.size[0]=this.options.width,this.size[1]=this.options.height},_useTitle:function(a){var b=this.qtip.elements.titlebar;return b&&(a.y===L||a.y===P&&this.element.position().top+this.size[1]/2+this.options.offset<b.outerHeight(E))},_parseCorner:function(a){var b=this.qtip.options.position.my;return a===F||b===F?a=F:a===E?a=new B(b.string()):a.string||(a=new B(a),a.fixed=E),a},_parseWidth:function(a,b,c){var d=this.qtip.elements,e=lb+t(b)+"Width";return(c?v(c,e):v(d.content,e)||v(this._useTitle(a)&&d.titlebar||d.content,e)||v(d.tooltip,e))||0},_parseRadius:function(a){var b=this.qtip.elements,c=lb+t(a.y)+t(a.x)+"Radius";return eb.ie<9?0:v(this._useTitle(a)&&b.titlebar||b.content,c)||v(b.tooltip,c)||0},_invalidColour:function(a,b,c){var d=a.css(b);return!d||c&&d===a.css(c)||rb.test(d)?F:d},_parseColours:function(a){var b=this.qtip.elements,c=this.element.css("cssText",""),e=lb+t(a[a.precedance])+t(mb),f=this._useTitle(a)&&b.titlebar||b.content,g=this._invalidColour,h=[];return h[0]=g(c,nb)||g(f,nb)||g(b.content,nb)||g(b.tooltip,nb)||c.css(nb),h[1]=g(c,e,mb)||g(f,e,mb)||g(b.content,e,mb)||g(b.tooltip,e,mb)||b.tooltip.css(e),d("*",c).add(c).css("cssText",nb+":"+ob+pb+";"+lb+":0"+pb+";"),h},_calculateSize:function(a){var b,c,d,e=a.precedance===I,f=this.options.width,g=this.options.height,h="c"===a.abbrev(),i=(e?f:g)*(h?.5:1),j=Math.pow,k=Math.round,l=Math.sqrt(j(i,2)+j(g,2)),m=[this.border/i*l,this.border/g*l];return m[2]=Math.sqrt(j(m[0],2)-j(this.border,2)),m[3]=Math.sqrt(j(m[1],2)-j(this.border,2)),b=l+m[2]+m[3]+(h?0:m[0]),c=b/l,d=[k(c*f),k(c*g)],e?d:d.reverse()},_calculateTip:function(a,b,c){c=c||1,b=b||this.size;var d=b[0]*c,e=b[1]*c,f=Math.ceil(d/2),g=Math.ceil(e/2),h={br:[0,0,d,e,d,0],bl:[0,0,d,0,0,e],tr:[0,e,d,0,d,e],tl:[0,0,0,e,d,e],tc:[0,e,f,0,d,e],bc:[0,0,d,0,f,e],rc:[0,0,d,g,0,e],lc:[d,0,d,e,0,g]};return h.lt=h.br,h.rt=h.bl,h.lb=h.tr,h.rb=h.tl,h[a.abbrev()]},_drawCoords:function(a,b){a.beginPath(),a.moveTo(b[0],b[1]),a.lineTo(b[2],b[3]),a.lineTo(b[4],b[5]),a.closePath()},create:function(){var a=this.corner=(qb||eb.ie)&&this._parseCorner(this.options.corner);return(this.enabled=!!this.corner&&"c"!==this.corner.abbrev())&&(this.qtip.cache.corner=a.clone(),this.update()),this.element.toggle(this.enabled),this.corner},update:function(b,c){if(!this.enabled)return this;var e,f,g,h,i,j,k,l,m=this.qtip.elements,n=this.element,o=n.children(),p=this.options,q=this.size,r=p.mimic,s=Math.round;b||(b=this.qtip.cache.corner||this.corner),r===F?r=b:(r=new B(r),r.precedance=b.precedance,"inherit"===r.x?r.x=b.x:"inherit"===r.y?r.y=b.y:r.x===r.y&&(r[b.precedance]=b[b.precedance])),f=r.precedance,b.precedance===H?this._swapDimensions():this._resetDimensions(),e=this.color=this._parseColours(b),e[1]!==ob?(l=this.border=this._parseWidth(b,b[b.precedance]),p.border&&1>l&&!rb.test(e[1])&&(e[0]=e[1]),this.border=l=p.border!==E?p.border:l):this.border=l=0,k=this.size=this._calculateSize(b),n.css({width:k[0],height:k[1],lineHeight:k[1]+"px"}),j=b.precedance===I?[s(r.x===M?l:r.x===O?k[0]-q[0]-l:(k[0]-q[0])/2),s(r.y===L?k[1]-q[1]:0)]:[s(r.x===M?k[0]-q[0]:0),s(r.y===L?l:r.y===N?k[1]-q[1]-l:(k[1]-q[1])/2)],qb?(g=o[0].getContext("2d"),g.restore(),g.save(),g.clearRect(0,0,6e3,6e3),h=this._calculateTip(r,q,wb),i=this._calculateTip(r,this.size,wb),o.attr(J,k[0]*wb).attr(K,k[1]*wb),o.css(J,k[0]).css(K,k[1]),this._drawCoords(g,i),g.fillStyle=e[1],g.fill(),g.translate(j[0]*wb,j[1]*wb),this._drawCoords(g,h),g.fillStyle=e[0],g.fill()):(h=this._calculateTip(r),h="m"+h[0]+","+h[1]+" l"+h[2]+","+h[3]+" "+h[4]+","+h[5]+" xe",j[2]=l&&/^(r|b)/i.test(b.string())?8===eb.ie?2:1:0,o.css({coordsize:k[0]+l+" "+(k[1]+l),antialias:""+(r.string().indexOf(P)>-1),left:j[0]-j[2]*Number(f===H),top:j[1]-j[2]*Number(f===I),width:k[0]+l,height:k[1]+l}).each(function(a){var b=d(this);b[b.prop?"prop":"attr"]({coordsize:k[0]+l+" "+(k[1]+l),path:h,fillcolor:e[0],filled:!!a,stroked:!a}).toggle(!(!l&&!a)),!a&&b.html(xb("stroke",'weight="'+2*l+'px" color="'+e[1]+'" miterlimit="1000" joinstyle="miter"'))})),a.opera&&setTimeout(function(){m.tip.css({display:"inline-block",visibility:"visible"})},1),c!==F&&this.calculate(b,k)},calculate:function(a,b){if(!this.enabled)return F;var c,e,f=this,g=this.qtip.elements,h=this.element,i=this.options.offset,j=(g.tooltip.hasClass("ui-widget"),{});return a=a||this.corner,c=a.precedance,b=b||this._calculateSize(a),e=[a.x,a.y],c===H&&e.reverse(),d.each(e,function(d,e){var h,k,l;e===P?(h=c===I?M:L,j[h]="50%",j[kb+"-"+h]=-Math.round(b[c===I?0:1]/2)+i):(h=f._parseWidth(a,e,g.tooltip),k=f._parseWidth(a,e,g.content),l=f._parseRadius(a),j[e]=Math.max(-f.border,d?k:i+(l>h?l:-h)))}),j[a[c]]-=b[c===H?0:1],h.css({margin:"",top:"",bottom:"",left:"",right:""}).css(j),j},reposition:function(a,b,d){function e(a,b,c,d,e){a===R&&j.precedance===b&&k[d]&&j[c]!==P?j.precedance=j.precedance===H?I:H:a!==R&&k[d]&&(j[b]=j[b]===P?k[d]>0?d:e:j[b]===d?e:d)}function f(a,b,e){j[a]===P?p[kb+"-"+b]=o[a]=g[kb+"-"+b]-k[b]:(h=g[e]!==c?[k[b],-g[b]]:[-k[b],g[b]],(o[a]=Math.max(h[0],h[1]))>h[0]&&(d[b]-=k[b],o[b]=F),p[g[e]!==c?e:b]=o[a])}if(this.enabled){var g,h,i=b.cache,j=this.corner.clone(),k=d.adjusted,l=b.options.position.adjust.method.split(" "),m=l[0],n=l[1]||l[0],o={left:F,top:F,x:0,y:0},p={};this.corner.fixed!==E&&(e(m,H,I,M,O),e(n,I,H,L,N),j.string()===i.corner.string()||i.cornerTop===k.top&&i.cornerLeft===k.left||this.update(j,F)),g=this.calculate(j),g.right!==c&&(g.left=-g.right),g.bottom!==c&&(g.top=-g.bottom),g.user=this.offset,(o.left=m===R&&!!k.left)&&f(H,M,O),(o.top=n===R&&!!k.top)&&f(I,L,N),this.element.css(p).toggle(!(o.x&&o.y||j.x===P&&o.y||j.y===P&&o.x)),d.left-=g.left.charAt?g.user:m!==R||o.top||!o.left&&!o.top?g.left+this.border:0,d.top-=g.top.charAt?g.user:n!==R||o.left||!o.left&&!o.top?g.top+this.border:0,i.cornerLeft=k.left,i.cornerTop=k.top,i.corner=j.clone()}},destroy:function(){this.qtip._unbind(this.qtip.tooltip,this._ns),this.qtip.elements.tip&&this.qtip.elements.tip.find("*").remove().end().remove()}}),jb=S.tip=function(a){return new w(a,a.options.style.tip)},jb.initialize="render",jb.sanitize=function(a){if(a.style&&"tip"in a.style){var b=a.style.tip;"object"!=typeof b&&(b=a.style.tip={corner:b}),/string|boolean/i.test(typeof b.corner)||(b.corner=E)}},C.tip={"^position.my|style.tip.(corner|mimic|border)$":function(){this.create(),this.qtip.reposition()},"^style.tip.(height|width)$":function(a){this.size=[a.width,a.height],this.update(),this.qtip.reposition()},"^content.title|style.(classes|widget)$":function(){this.update()}},d.extend(E,z.defaults,{style:{tip:{corner:E,mimic:F,width:6,height:6,border:E,offset:0}}});var yb,zb,Ab="qtip-modal",Bb="."+Ab;zb=function(){function a(a){if(d.expr[":"].focusable)return d.expr[":"].focusable;var b,c,e,f=!isNaN(d.attr(a,"tabindex")),g=a.nodeName&&a.nodeName.toLowerCase();return"area"===g?(b=a.parentNode,c=b.name,a.href&&c&&"map"===b.nodeName.toLowerCase()?(e=d("img[usemap=#"+c+"]")[0],!!e&&e.is(":visible")):!1):/input|select|textarea|button|object/.test(g)?!a.disabled:"a"===g?a.href||f:f}function c(a){k.length<1&&a.length?a.not("body").blur():k.first().focus()}function e(a){if(i.is(":visible")){var b,e=d(a.target),h=f.tooltip,j=e.closest(X);b=j.length<1?F:parseInt(j[0].style.zIndex,10)>parseInt(h[0].style.zIndex,10),b||e.closest(X)[0]===h[0]||c(e),g=a.target===k[k.length-1]}}var f,g,h,i,j=this,k={};d.extend(j,{init:function(){return i=j.elem=d("<div />",{id:"qtip-overlay",html:"<div></div>",mousedown:function(){return F}}).hide(),d(b.body).bind("focusin"+Bb,e),d(b).bind("keydown"+Bb,function(a){f&&f.options.show.modal.escape&&27===a.keyCode&&f.hide(a)}),i.bind("click"+Bb,function(a){f&&f.options.show.modal.blur&&f.hide(a)}),j},update:function(b){f=b,k=b.options.show.modal.stealfocus!==F?b.tooltip.find("*").filter(function(){return a(this)}):[]},toggle:function(a,e,g){var k=(d(b.body),a.tooltip),l=a.options.show.modal,m=l.effect,n=e?"show":"hide",o=i.is(":visible"),p=d(Bb).filter(":visible:not(:animated)").not(k);return j.update(a),e&&l.stealfocus!==F&&c(d(":focus")),i.toggleClass("blurs",l.blur),e&&i.appendTo(b.body),i.is(":animated")&&o===e&&h!==F||!e&&p.length?j:(i.stop(E,F),d.isFunction(m)?m.call(i,e):m===F?i[n]():i.fadeTo(parseInt(g,10)||90,e?1:0,function(){e||i.hide()}),e||i.queue(function(a){i.css({left:"",top:""}),d(Bb).length||i.detach(),a()}),h=e,f.destroyed&&(f=G),j)}}),j.init()},zb=new zb,d.extend(x.prototype,{init:function(a){var b=a.tooltip;return this.options.on?(a.elements.overlay=zb.elem,b.addClass(Ab).css("z-index",z.modal_zindex+d(Bb).length),a._bind(b,["tooltipshow","tooltiphide"],function(a,c,e){var f=a.originalEvent;if(a.target===b[0])if(f&&"tooltiphide"===a.type&&/mouse(leave|enter)/.test(f.type)&&d(f.relatedTarget).closest(zb.elem[0]).length)try{a.preventDefault()}catch(g){}else(!f||f&&"tooltipsolo"!==f.type)&&this.toggle(a,"tooltipshow"===a.type,e)},this._ns,this),a._bind(b,"tooltipfocus",function(a,c){if(!a.isDefaultPrevented()&&a.target===b[0]){var e=d(Bb),f=z.modal_zindex+e.length,g=parseInt(b[0].style.zIndex,10);zb.elem[0].style.zIndex=f-1,e.each(function(){this.style.zIndex>g&&(this.style.zIndex-=1)}),e.filter("."+_).qtip("blur",a.originalEvent),b.addClass(_)[0].style.zIndex=f,zb.update(c);try{a.preventDefault()}catch(h){}}},this._ns,this),void a._bind(b,"tooltiphide",function(a){a.target===b[0]&&d(Bb).filter(":visible").not(b).last().qtip("focus",a)},this._ns,this)):this},toggle:function(a,b,c){return a&&a.isDefaultPrevented()?this:void zb.toggle(this.qtip,!!b,c)},destroy:function(){this.qtip.tooltip.removeClass(Ab),this.qtip._unbind(this.qtip.tooltip,this._ns),zb.toggle(this.qtip,F),delete this.qtip.elements.overlay}}),yb=S.modal=function(a){return new x(a,a.options.show.modal)},yb.sanitize=function(a){a.show&&("object"!=typeof a.show.modal?a.show.modal={on:!!a.show.modal}:"undefined"==typeof a.show.modal.on&&(a.show.modal.on=E))},z.modal_zindex=z.zindex-200,yb.initialize="render",C.modal={"^show.modal.(on|blur)$":function(){this.destroy(),this.init(),this.qtip.elems.overlay.toggle(this.qtip.tooltip[0].offsetWidth>0)}},d.extend(E,z.defaults,{show:{modal:{on:F,effect:E,blur:E,stealfocus:E,escape:E}}}),S.viewport=function(c,d,e,f,g,h,i){function j(a,b,c,e,f,g,h,i,j){var k=d[f],m=v[a],t=w[a],u=c===R,x=m===f?j:m===g?-j:-j/2,y=t===f?i:t===g?-i:-i/2,z=r[f]+s[f]-(o?0:n[f]),A=z-k,B=k+j-(h===J?p:q)-z,C=x-(v.precedance===a||m===v[b]?y:0)-(t===P?i/2:0);return u?(C=(m===f?1:-1)*x,d[f]+=A>0?A:B>0?-B:0,d[f]=Math.max(-n[f]+s[f],k-C,Math.min(Math.max(-n[f]+s[f]+(h===J?p:q),k+C),d[f],"center"===m?k-x:1e9))):(e*=c===Q?2:0,A>0&&(m!==f||B>0)?(d[f]-=C+e,l.invert(a,f)):B>0&&(m!==g||A>0)&&(d[f]-=(m===P?-C:C)+e,l.invert(a,g)),d[f]<r&&-d[f]>B&&(d[f]=k,l=v.clone())),d[f]-k}var k,l,m,n,o,p,q,r,s,t=e.target,u=c.elements.tooltip,v=e.my,w=e.at,x=e.adjust,y=x.method.split(" "),z=y[0],A=y[1]||y[0],B=e.viewport,C=e.container,D=c.cache,E={left:0,top:0};return B.jquery&&t[0]!==a&&t[0]!==b.body&&"none"!==x.method?(n=C.offset()||E,o="static"===C.css("position"),k="fixed"===u.css("position"),p=B[0]===a?B.width():B.outerWidth(F),q=B[0]===a?B.height():B.outerHeight(F),r={left:k?0:B.scrollLeft(),top:k?0:B.scrollTop()},s=B.offset()||E,("shift"!==z||"shift"!==A)&&(l=v.clone()),E={left:"none"!==z?j(H,I,z,x.x,M,O,J,f,h):0,top:"none"!==A?j(I,H,A,x.y,L,N,K,g,i):0},l&&D.lastClass!==(m=T+"-pos-"+l.abbrev())&&u.removeClass(c.cache.lastClass).addClass(c.cache.lastClass=m),E):E},S.polys={polygon:function(a,b){var c,d,e,f={width:0,height:0,position:{top:1e10,right:0,bottom:0,left:1e10},adjustable:F},g=0,h=[],i=1,j=1,k=0,l=0;for(g=a.length;g--;)c=[parseInt(a[--g],10),parseInt(a[g+1],10)],c[0]>f.position.right&&(f.position.right=c[0]),c[0]<f.position.left&&(f.position.left=c[0]),c[1]>f.position.bottom&&(f.position.bottom=c[1]),c[1]<f.position.top&&(f.position.top=c[1]),h.push(c);if(d=f.width=Math.abs(f.position.right-f.position.left),e=f.height=Math.abs(f.position.bottom-f.position.top),"c"===b.abbrev())f.position={left:f.position.left+f.width/2,top:f.position.top+f.height/2};else{for(;d>0&&e>0&&i>0&&j>0;)for(d=Math.floor(d/2),e=Math.floor(e/2),b.x===M?i=d:b.x===O?i=f.width-d:i+=Math.floor(d/2),b.y===L?j=e:b.y===N?j=f.height-e:j+=Math.floor(e/2),g=h.length;g--&&!(h.length<2);)k=h[g][0]-f.position.left,l=h[g][1]-f.position.top,(b.x===M&&k>=i||b.x===O&&i>=k||b.x===P&&(i>k||k>f.width-i)||b.y===L&&l>=j||b.y===N&&j>=l||b.y===P&&(j>l||l>f.height-j))&&h.splice(g,1);f.position={left:h[0][0],top:h[0][1]}}return f},rect:function(a,b,c,d){return{width:Math.abs(c-a),height:Math.abs(d-b),position:{left:Math.min(a,c),top:Math.min(b,d)}}},_angles:{tc:1.5,tr:7/4,tl:5/4,bc:.5,br:.25,bl:.75,rc:2,lc:1,c:0},ellipse:function(a,b,c,d,e){var f=S.polys._angles[e.abbrev()],g=0===f?0:c*Math.cos(f*Math.PI),h=d*Math.sin(f*Math.PI);return{width:2*c-Math.abs(g),height:2*d-Math.abs(h),position:{left:a+g,top:b+h},adjustable:F}},circle:function(a,b,c,d){return S.polys.ellipse(a,b,c,c,d)}},S.svg=function(a,c,e){for(var f,g,h,i,j,k,l,m,n,o,p,q=d(b),r=c[0],s=d(r.ownerSVGElement),t=1,u=1,v=!0;!r.getBBox;)r=r.parentNode;if(!r.getBBox||!r.parentNode)return F;f=s.attr("width")||s.width()||parseInt(s.css("width"),10),g=s.attr("height")||s.height()||parseInt(s.css("height"),10);var w=(parseInt(c.css("stroke-width"),10)||0)/2;switch(w&&(t+=w/f,u+=w/g),r.nodeName){case"ellipse":case"circle":o=S.polys.ellipse(r.cx.baseVal.value,r.cy.baseVal.value,(r.rx||r.r).baseVal.value+w,(r.ry||r.r).baseVal.value+w,e);break;case"line":case"polygon":case"polyline":for(n=r.points||[{x:r.x1.baseVal.value,y:r.y1.baseVal.value},{x:r.x2.baseVal.value,y:r.y2.baseVal.value}],o=[],m=-1,k=n.numberOfItems||n.length;++m<k;)l=n.getItem?n.getItem(m):n[m],o.push.apply(o,[l.x,l.y]);o=S.polys.polygon(o,e);break;default:o=r.getBoundingClientRect(),o={width:o.width,height:o.height,position:{left:o.left,top:o.top}},v=!1}return p=o.position,s=s[0],v&&(s.createSVGPoint&&(h=r.getScreenCTM(),n=s.createSVGPoint(),n.x=p.left,n.y=p.top,i=n.matrixTransform(h),p.left=i.x,p.top=i.y),s.viewBox&&(j=s.viewBox.baseVal)&&j.width&&j.height&&(t*=f/j.width,u*=g/j.height)),p.left+=q.scrollLeft(),p.top+=q.scrollTop(),o},S.imagemap=function(a,b,c){b.jquery||(b=d(b));var e,f,g,h,i,j=b.attr("shape").toLowerCase().replace("poly","polygon"),k=d('img[usemap="#'+b.parent("map").attr("name")+'"]'),l=d.trim(b.attr("coords")),m=l.replace(/,$/,"").split(",");if(!k.length)return F;if("polygon"===j)h=S.polys.polygon(m,c);else{if(!S.polys[j])return F;for(g=-1,i=m.length,f=[];++g<i;)f.push(parseInt(m[g],10));h=S.polys[j].apply(this,f.concat(c))}return e=k.offset(),e.left+=Math.ceil((k.outerWidth(F)-k.width())/2),e.top+=Math.ceil((k.outerHeight(F)-k.height())/2),h.position.left+=e.left,h.position.top+=e.top,h};var Cb,Db='<iframe class="qtip-bgiframe" frameborder="0" tabindex="-1" src="javascript:\'\';" style="display:block; position:absolute; z-index:-1; filter:alpha(opacity=0); -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";"></iframe>';d.extend(y.prototype,{_scroll:function(){var b=this.qtip.elements.overlay;b&&(b[0].style.top=d(a).scrollTop()+"px")},init:function(c){var e=c.tooltip;d("select, object").length<1&&(this.bgiframe=c.elements.bgiframe=d(Db).appendTo(e),c._bind(e,"tooltipmove",this.adjustBGIFrame,this._ns,this)),this.redrawContainer=d("<div/>",{id:T+"-rcontainer"}).appendTo(b.body),c.elements.overlay&&c.elements.overlay.addClass("qtipmodal-ie6fix")&&(c._bind(a,["scroll","resize"],this._scroll,this._ns,this),c._bind(e,["tooltipshow"],this._scroll,this._ns,this)),this.redraw()},adjustBGIFrame:function(){var a,b,c=this.qtip.tooltip,d={height:c.outerHeight(F),width:c.outerWidth(F)},e=this.qtip.plugins.tip,f=this.qtip.elements.tip;b=parseInt(c.css("borderLeftWidth"),10)||0,b={left:-b,top:-b},e&&f&&(a="x"===e.corner.precedance?[J,M]:[K,L],b[a[1]]-=f[a[0]]()),this.bgiframe.css(b).css(d)},redraw:function(){if(this.qtip.rendered<1||this.drawing)return this;var a,b,c,d,e=this.qtip.tooltip,f=this.qtip.options.style,g=this.qtip.options.position.container;return this.qtip.drawing=1,f.height&&e.css(K,f.height),f.width?e.css(J,f.width):(e.css(J,"").appendTo(this.redrawContainer),b=e.width(),1>b%2&&(b+=1),c=e.css("maxWidth")||"",d=e.css("minWidth")||"",a=(c+d).indexOf("%")>-1?g.width()/100:0,c=(c.indexOf("%")>-1?a:1)*parseInt(c,10)||b,d=(d.indexOf("%")>-1?a:1)*parseInt(d,10)||0,b=c+d?Math.min(Math.max(b,d),c):b,e.css(J,Math.round(b)).appendTo(g)),this.drawing=0,this},destroy:function(){this.bgiframe&&this.bgiframe.remove(),this.qtip._unbind([a,this.qtip.tooltip],this._ns)}}),Cb=S.ie6=function(a){return 6===eb.ie?new y(a):F},Cb.initialize="render",C.ie6={"^content|style$":function(){this.redraw()}}})}(window,document),function(a){a.fn.typeWatch=function(b){function c(b,c){var d=a(b.el).val();(d.length>=f.captureLength&&d.toUpperCase()!=b.text||c&&d.length>=f.captureLength)&&(b.text=d.toUpperCase(),b.cb.call(b.el,d))}function d(b){var d=b.type.toUpperCase();if(a.inArray(d,f.inputTypes)>=0){var e={timer:null,text:a(b).val().toUpperCase(),cb:f.callback,el:b,wait:f.wait};f.highlight&&a(b).focus(function(){this.select()});var g=function(b){var d=e.wait,g=!1,h=this.type.toUpperCase();"undefined"!=typeof b.keyCode&&13==b.keyCode&&"TEXTAREA"!=h&&a.inArray(h,f.inputTypes)>=0&&(d=1,g=!0);var i=function(){c(e,g)};clearTimeout(e.timer),e.timer=setTimeout(i,d)};a(b).on("keydown paste cut input",g)}}var e=["TEXT","TEXTAREA","PASSWORD","TEL","SEARCH","URL","EMAIL","DATETIME","DATE","MONTH","WEEK","TIME","DATETIME-LOCAL","NUMBER","RANGE"],f=a.extend({wait:750,callback:function(){},highlight:!0,captureLength:2,inputTypes:e},b);return this.each(function(){d(this)})}}(jQuery),function(a){function b(){var a="!@#$%^&*()+=[]\\';,/{}|\":<>?~`.-_";return a+=" "}function c(){var a="¬€£¦";return a}function d(b,c,d){b.each(function(){var b=a(this);b.bind("keyup change paste",function(a){var e="";a.originalEvent&&a.originalEvent.clipboardData&&a.originalEvent.clipboardData.getData&&(e=a.originalEvent.clipboardData.getData("text/plain")),setTimeout(function(){h(b,c,d,e)},0)}),b.bind("keypress",function(a){var e=a.charCode?a.charCode:a.which;if(!(g(e)||a.ctrlKey||a.metaKey)){var f=String.fromCharCode(e),h=b.selection(),i=h.start,j=h.end,k=b.val(),l=k.substring(0,i)+f+k.substring(j),m=c(l,d);m!=l&&a.preventDefault()}})})}function e(b,c){var d=parseFloat(a(b).val()),e=a(b);return isNaN(d)?void e.val(""):(f(c.min)&&d<c.min&&e.val(""),void(f(c.max)&&d>c.max&&e.val("")))}function f(a){return!isNaN(a)}function g(a){return a>=32?!1:10==a?!1:13==a?!1:!0}function h(a,b,c,d){var e=a.val();""==e&&d.length>0&&(e=d);var f=b(e,c);if(e!=f){var g=a.alphanum_caret();a.val(f),a.alphanum_caret(e.length==f.length+1?g-1:g)}}function i(b,c){"undefined"==typeof c&&(c=D);var d,e={};return d="string"==typeof b?F[b]:"undefined"==typeof b?{}:b,a.extend(e,c,d),"undefined"==typeof e.blacklist&&(e.blacklistSet=x(e.allow,e.disallow)),e}function j(b){var c,d={};return c="string"==typeof b?G[b]:"undefined"==typeof b?{}:b,a.extend(d,E,c),d}function k(a,b,c){return c.maxLength&&a.length>=c.maxLength?!1:c.allow.indexOf(b)>=0?!0:c.allowSpace&&" "==b?!0:c.blacklistSet.contains(b)?!1:!c.allowNumeric&&K[b]?!1:!c.allowUpper&&u(b)?!1:!c.allowLower&&v(b)?!1:!c.allowCaseless&&w(b)?!1:!c.allowLatin&&L.contains(b)?!1:c.allowOtherCharSets?!0:K[b]||L.contains(b)?!0:!1}function l(a,b,c){if(K[b])return n(a,c)?!1:p(a,c)?!1:o(a,c)?!1:q(a+b,c)?!1:r(a+b,c)?!1:!0;if(c.allowPlus&&"+"==b&&""==a)return!0;if(c.allowMinus&&"-"==b&&""==a)return!0;if(b==I&&c.allowThouSep&&A(a,b))return!0;if(b==J){if(a.indexOf(J)>=0)return!1;if(c.allowDecSep)return!0}return!1}function m(a){return a+="",a.replace(/[^0-9]/g,"").length}function n(a,b){var c=b.maxDigits;if(""==c||isNaN(c))return!1;var d=m(a);return d>=c?!0:!1}function o(a,b){var c=b.maxDecimalPlaces;if(""==c||isNaN(c))return!1;var d=a.indexOf(J);if(-1==d)return!1;var e=a.substring(d),f=m(e);return f>=c?!0:!1}function p(a,b){var c=b.maxPreDecimalPlaces;if(""==c||isNaN(c))return!1;var d=a.indexOf(J);if(d>=0)return!1;var e=m(a);return e>=c?!0:!1}function q(a,b){if(!b.max||b.max<0)return!1;var c=parseFloat(a);return c>b.max?!0:!1}function r(a,b){if(!b.min||b.min>0)return!1;var c=parseFloat(a);return c<b.min?!0:!1}function s(a,b){if("string"!=typeof a)return a;var c,d=a.split(""),e=[],f=0;for(f=0;f<d.length;f++){c=d[f];var g=e.join("");k(g,c,b)&&e.push(c)}return e.join("")}function t(a,b){if("string"!=typeof a)return a;var c,d=a.split(""),e=[],f=0;for(f=0;f<d.length;f++){c=d[f];var g=e.join("");l(g,c,b)&&e.push(c)}return e.join("")}function u(a){var b=a.toUpperCase(),c=a.toLowerCase();return a==b&&b!=c?!0:!1}function v(a){var b=a.toUpperCase(),c=a.toLowerCase();return a==c&&b!=c?!0:!1}function w(a){return a.toUpperCase()==a.toLowerCase()?!0:!1}function x(a,b){var c=new B(H+b),d=new B(a),e=c.subtract(d);return e}function y(){var a,b="0123456789".split(""),c={},d=0;for(d=0;d<b.length;d++)a=b[d],c[a]=!0;return c}function z(){var a="abcdefghijklmnopqrstuvwxyz",b=a.toUpperCase(),c=new B(a+b);return c}function A(a){if(0==a.length)return!1;var b=a.indexOf(J);if(b>=0)return!1;var c=a.indexOf(I);if(0>c)return!0;var d=a.lastIndexOf(I),e=a.length-d-1;if(3>e)return!1;var f=m(a.substring(c));return f%3>0?!1:!0}function B(a){this.map="string"==typeof a?C(a):{}}function C(a){var b,c={},d=a.split(""),e=0;for(e=0;e<d.length;e++)b=d[e],c[b]=!0;return c}a.fn.alphanum=function(a){var b=i(a),c=this;return d(c,s,b),this},a.fn.alpha=function(a){var b=i("alpha"),c=i(a,b),e=this;return d(e,s,c),this},a.fn.numeric=function(a){var b=j(a),c=this;return d(c,t,b),c.blur(function(){e(this,a)}),this};var D={allow:"",disallow:"",allowSpace:!0,allowNumeric:!0,allowUpper:!0,allowLower:!0,allowCaseless:!0,allowLatin:!0,allowOtherCharSets:!0,maxLength:0/0},E={allowPlus:!1,allowMinus:!0,allowThouSep:!0,allowDecSep:!0,allowLeadingSpaces:!1,maxDigits:0/0,maxDecimalPlaces:0/0,maxPreDecimalPlaces:0/0,max:0/0,min:0/0},F={alpha:{allowNumeric:!1},upper:{allowNumeric:!1,allowUpper:!0,allowLower:!1,allowCaseless:!0},lower:{allowNumeric:!1,allowUpper:!1,allowLower:!0,allowCaseless:!0}},G={integer:{allowPlus:!1,allowMinus:!0,allowThouSep:!1,allowDecSep:!1},positiveInteger:{allowPlus:!1,allowMinus:!1,allowThouSep:!1,allowDecSep:!1}},H=b()+c(),I=",",J=".",K=y(),L=z();B.prototype.add=function(a){var b=this.clone();for(var c in a.map)b.map[c]=!0;return b},B.prototype.subtract=function(a){var b=this.clone();for(var c in a.map)delete b.map[c];return b},B.prototype.contains=function(a){return this.map[a]?!0:!1},B.prototype.clone=function(){var a=new B;for(var b in this.map)a.map[b]=!0;return a},a.fn.alphanum.backdoorAlphaNum=function(a,b){var c=i(b);return s(a,c)},a.fn.alphanum.backdoorNumeric=function(a,b){var c=j(b);return t(a,c)},a.fn.alphanum.setNumericSeparators=function(a){1==a.thousandsSeparator.length&&1==a.decimalSeparator.length&&(I=a.thousandsSeparator,J=a.decimalSeparator)}}(jQuery),function(a){function b(a,b){if(a.createTextRange){var c=a.createTextRange();c.move("character",b),c.select()}else null!=a.selectionStart&&(a.focus(),a.setSelectionRange(b,b))}function c(a){if("selection"in document){var b=a.createTextRange();try{b.setEndPoint("EndToStart",document.selection.createRange())}catch(c){return 0}return b.text.length}return null!=a.selectionStart?a.selectionStart:void 0}a.fn.alphanum_caret=function(d,e){return"undefined"==typeof d?c(this.get(0)):this.queue(function(c){if(isNaN(d)){var f=a(this).val().indexOf(d);e===!0?f+=d.length:"undefined"!=typeof e&&(f+=e),b(this,f)}else b(this,d);c()})}}(jQuery),function(a){var b=function(a){return a?a.ownerDocument.defaultView||a.ownerDocument.parentWindow:window},c=function(b){var c=a.Range.current(b).clone(),d=a.Range(b).select(b);return c.overlaps(d)?(c.compare("START_TO_START",d)<1?(startPos=0,c.move("START_TO_START",d)):(fromElementToCurrent=d.clone(),fromElementToCurrent.move("END_TO_START",c),startPos=fromElementToCurrent.toString().length),endPos=c.compare("END_TO_END",d)>=0?d.toString().length:startPos+c.toString().length,{start:startPos,end:endPos}):null},d=function(d){var e=b(d);if(void 0!==d.selectionStart)return document.activeElement&&document.activeElement!=d&&d.selectionStart==d.selectionEnd&&0==d.selectionStart?{start:d.value.length,end:d.value.length}:{start:d.selectionStart,end:d.selectionEnd};if(e.getSelection)return c(d,e);try{if("input"==d.nodeName.toLowerCase()){var f=b(d).document.selection.createRange(),g=d.createTextRange();g.setEndPoint("EndToStart",f);var h=g.text.length;return{start:h,end:h+f.text.length}}var i=c(d,e);if(!i)return i;var j=a.Range.current().clone(),k=j.clone().collapse().range,l=j.clone().collapse(!1).range;return k.moveStart("character",-1),l.moveStart("character",-1),0!=i.startPos&&""==k.text&&(i.startPos+=2),0!=i.endPos&&""==l.text&&(i.endPos+=2),i}catch(m){return{start:d.value.length,end:d.value.length}}},e=function(a,c,d){var e=b(a);if(a.setSelectionRange)void 0===d?(a.focus(),a.setSelectionRange(c,c)):(a.select(),a.selectionStart=c,a.selectionEnd=d);else if(a.createTextRange){var f=a.createTextRange();f.moveStart("character",c),d=d||c,f.moveEnd("character",d-a.value.length),f.select()}else if(e.getSelection){var h=e.document,i=e.getSelection(),j=h.createRange(),k=[c,void 0!==d?d:c];g([a],k),j.setStart(k[0].el,k[0].count),j.setEnd(k[1].el,k[1].count),i.removeAllRanges(),i.addRange(j)}else if(e.document.body.createTextRange){var j=document.body.createTextRange();j.moveToElementText(a),j.collapse(),j.moveStart("character",c),j.moveEnd("character",void 0!==d?d:c),j.select()}},f=function(a,b,c,d){"number"==typeof c[0]&&c[0]<b&&(c[0]={el:d,count:c[0]-a}),"number"==typeof c[1]&&c[1]<=b&&(c[1]={el:d,count:c[1]-a})},g=function(a,b,c){var d,e;c=c||0;for(var h=0;a[h];h++)d=a[h],3===d.nodeType||4===d.nodeType?(e=c,c+=d.nodeValue.length,f(e,c,b,d)):8!==d.nodeType&&(c=g(d.childNodes,b,c));return c};jQuery.fn.selection=function(a,b){return void 0!==a?this.each(function(){e(this,a,b)}):d(this[0])},a.fn.selection.getCharElement=g}(jQuery),function(a){"use strict";a.redux=a.redux||{},a(document).ready(function(){a.fn.isOnScreen=function(){if(window){var b=a(window),c={top:b.scrollTop(),left:b.scrollLeft()};c.right=c.left+b.width(),c.bottom=c.top+b.height();var d=this.offset();return d.right=d.left+this.outerWidth(),d.bottom=d.top+this.outerHeight(),!(c.right<d.left||c.left>d.right||c.bottom<d.top||c.top>d.bottom)}},a.redux.checkRequired(),a.redux.initEvents(),a.redux.initQtip(),a.redux.tabCheck(),a.redux.notices(),a.redux.tabControl(),a.redux.devFunctions()}),a.redux.initEvents=function(){a(".redux-action_bar, .redux-presets-bar").on("click",function(){window.onbeforeunload=null}),a("#toplevel_page_"+redux.args.slug+" .wp-submenu a, #wp-admin-bar-"+redux.args.slug+" a.ab-item").click(function(b){if((a("#toplevel_page_"+redux.args.slug).hasClass("wp-menu-open")||a(this).hasClass("ab-item"))&&!a(this).parents("ul.ab-submenu:first").hasClass("ab-sub-secondary")){b.preventDefault();var c=a(this).attr("href").split("&tab=");return a("#"+c[1]+"_section_group_li_a").click(),a(this).parents("ul:first").find(".current").removeClass("current"),a(this).addClass("current"),a(this).parent().addClass("current"),!1}}),a('input[name="'+redux.args.opt_name+'[defaults]"]').click(function(){return confirm(redux.args.reset_confirm)?void(window.onbeforeunload=null):!1}),a('input[name="'+redux.args.opt_name+'[defaults-section]"]').click(function(){return confirm(redux.args.reset_section_confirm)?void(window.onbeforeunload=null):!1}),a(".expand_options").click(function(b){return b.preventDefault(),a.redux.expandOptions(a(this).parents(".redux-container:first")),!1}),a(".saved_notice").is(":visible")&&a(".saved_notice").slideDown(),a(document.body).on("change",".redux-field input, .redux-field textarea, .redux-field select",function(){a(this).hasClass("noUpdate")||redux_change(a(this))});var b=a("#redux-footer").height();a("#redux-sticky-padder").css({height:b}),0!==a("#redux-footer").length&&(a(window).scroll(function(){a.redux.stickyInfo()}),a(window).resize(function(){a.redux.stickyInfo()})),a(".saved_notice").delay(4e3).slideUp(),a(".redux-save").click(function(){window.onbeforeunload=null})},a.redux.checkRequired=function(){a.redux.required(),a("body").on("change",".redux-main select, .redux-main radio, .redux-main input[type=checkbox], .redux-main input[type=hidden]",function(){a.redux.check_dependencies(this)}),a("body").on("check_dependencies",function(b,c){a.redux.check_dependencies(c)}),a("td > fieldset:empty,td > div:empty").parent().parent().hide()},a.redux.initQtip=function(){if(a().qtip){var b="",c=redux.args.hints.tip_style.shadow;c===!0&&(b="qtip-shadow");var d="",e=redux.args.hints.tip_style.color;""!==e&&(d="qtip-"+e);var f="",g=redux.args.hints.tip_style.rounded;g===!0&&(f="qtip-rounded");var h="",i=redux.args.hints.tip_style.style;""!==i&&(h="qtip-"+i);var j=b+","+d+","+f+","+h;j=j.replace(/,/g," ");var k=redux.args.hints.tip_position.my,l=redux.args.hints.tip_position.at;k=a.redux.verifyPos(k.toLowerCase(),!0),l=a.redux.verifyPos(l.toLowerCase(),!1);var m=redux.args.hints.tip_effect.show.event,n=redux.args.hints.tip_effect.hide.event,o=redux.args.hints.tip_effect.show.effect,p=redux.args.hints.tip_effect.show.duration,q=redux.args.hints.tip_effect.hide.effect,r=redux.args.hints.tip_effect.hide.duration;a("div.redux-hint-qtip").each(function(){a(this).qtip({content:{text:a(this).attr("qtip-content"),title:a(this).attr("qtip-title")},show:{effect:function(){switch(o){case"slide":a(this).slideDown(p);break;case"fade":a(this).fadeIn(p);break;default:a(this).show()}},event:m},hide:{effect:function(){switch(q){case"slide":a(this).slideUp(r);break;case"fade":a(this).fadeOut(r);break;default:a(this).show(r)}},event:n},style:{classes:j},position:{my:k,at:l}})}),a("input[qtip-content]").each(function(){a(this).qtip({content:{text:a(this).attr("qtip-content"),title:a(this).attr("qtip-title")},show:"focus",hide:"blur",style:j,position:{my:k,at:l}})})}},a.redux.tabCheck=function(){a(".redux-group-tab-link-a").click(function(){var b=a(this);if(b.parent().hasClass("empty_section")&&b.parent().hasClass("hasSubSections")){var c=a(this).closest("ul").find(".redux-group-tab-link-a"),d=c.index(this);b=c.slice(d+1,d+2)}var e=b.parents(".redux-container:first"),f=b.data("rel"),g=e.find(".redux-group-tab-link-li.active .redux-group-tab-link-a").data("rel");if(g!==f){if(a("#currentSection").val(f),b.parents(".postbox-container:first").length||a.cookie("redux_current_tab",f,{expires:7,path:"/"}),e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").length){var h=e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").attr("id").split("_");h=h[0]}e.find("#toplevel_page_"+redux.args.slug+" .wp-submenu a.current").removeClass("current"),e.find("#toplevel_page_"+redux.args.slug+" .wp-submenu li.current").removeClass("current"),e.find("#toplevel_page_"+redux.args.slug+" .wp-submenu a").each(function(){var b=a(this).attr("href").split("&tab=");
|
3 |
-
(b[1]==f||b[1]==h)&&(a(this).addClass("current"),a(this).parent().addClass("current"))}),e.find("#"+g+"_section_group_li").find("#"+g+"_section_group_li").length?(e.find("#"+g+"_section_group_li").addClass("activeChild"),e.find("#"+f+"_section_group_li").addClass("active").removeClass("activeChild")):e.find("#"+f+"_section_group_li").parents("#"+g+"_section_group_li").length||e.find("#"+g+"_section_group_li").parents("ul.subsection").find("#"+f+"_section_group_li").length?(e.find("#"+f+"_section_group_li").parents("#"+g+"_section_group_li").length?e.find("#"+g+"_section_group_li").addClass("activeChild").removeClass("active"):(e.find("#"+f+"_section_group_li").addClass("active"),e.find("#"+g+"_section_group_li").removeClass("active")),e.find("#"+f+"_section_group_li").removeClass("activeChild").addClass("active")):(e.find("#"+f+"_section_group_li").addClass("active").removeClass("activeChild").find("ul.subsection").slideDown(),e.find("#"+g+"_section_group_li").find("ul.subsection").length?e.find("#"+g+"_section_group_li").find("ul.subsection").slideUp("fast",function(){e.find("#"+g+"_section_group_li").removeClass("active").removeClass("activeChild")}):e.find("#"+g+"_section_group_li").parents("ul.subsection").length?e.find("#"+g+"_section_group_li").parents("#"+f+"_section_group_li").length?e.find("#"+g+"_section_group_li").removeClass("active"):e.find("#"+g+"_section_group_li").parents("ul.subsection").slideUp("fast",function(){e.find("#"+g+"_section_group_li").removeClass("active"),e.find("#"+g+"_section_group_li").parents(".redux-group-tab-link-li").removeClass("active").removeClass("activeChild"),e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").addClass("activeChild").find("ul.subsection").slideDown(),e.find("#"+f+"_section_group_li").addClass("active")}):(e.find("#"+g+"_section_group_li").removeClass("active"),e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").length&&(e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").addClass("activeChild").find("ul.subsection").slideDown(),e.find("#"+f+"_section_group_li").addClass("active")))),e.find("#"+g+"_section_group").hide(),e.find("#"+f+"_section_group").fadeIn(200,function(){0!==e.find("#redux-footer").length&&a.redux.stickyInfo(),a.redux.initFields()}),a("#toplevel_page_"+redux.args.slug).find(".current").removeClass("current")}});var b=decodeURI((new RegExp("tab=(.+?)(&|$)").exec(location.search)||[,""])[1]);""!==b?a.cookie("redux_current_tab_get")!==b&&(a.cookie("redux_current_tab",b,{expires:7,path:"/"}),a.cookie("redux_current_tab_get",b,{expires:7,path:"/"}),a("#"+b+"_section_group_li").click()):""!==a.cookie("redux_current_tab_get")&&a.removeCookie("redux_current_tab_get");var c=a("#"+a.cookie("redux_current_tab")+"_section_group_li_a");null===a.cookie("redux_current_tab")||"undefined"==typeof a.cookie("redux_current_tab")||0===c.length?a(".redux-container").find(".redux-group-tab-link-a:first").click():c.click()},a.redux.initFields=function(){a(".redux-field-init:visible").each(function(){var b=a(this).attr("data-type");redux.field_objects[b]&&redux.field_objects[b].init()})},a.redux.notices=function(){void 0!==redux.errors&&(a.each(redux.errors.errors,function(b,c){a.each(c.errors,function(b,c){a("#"+redux.args.opt_name+"-"+c.id).addClass("redux-field-error"),0===a("#"+redux.args.opt_name+"-"+c.id).parent().find(".redux-th-error").length&&a("#"+redux.args.opt_name+"-"+c.id).append('<div class="redux-th-error">'+c.msg+"</div>")})}),a(".redux-container").each(function(){var b=a(this),c=b.find(".redux-field-error").length;c>0&&(b.find(".redux-field-errors span").text(c),b.find(".redux-field-errors").slideDown(),b.find(".redux-group-tab").each(function(){var c=a(this).find(".redux-field-error").length;if(c>0){var d=a(this).attr("id").split("_");d=d[0],b.find('.redux-group-tab-link-a[data-key="'+d+'"]').prepend('<span class="redux-menu-error">'+c+"</span>"),b.find('.redux-group-tab-link-a[data-key="'+d+'"]').addClass("hasError");var e=b.find('.redux-group-tab-link-a[data-key="'+d+'"]').parents(".hasSubSections:first");e&&e.find(".redux-group-tab-link-a:first").addClass("hasError")}}));var d=b.find(".redux-field-warning").length;d>0&&(b.find(".redux-field-warnings span").text(d),b.find(".redux-field-warnings").slideDown(),b.find(".redux-group-tab").each(function(){var c=a(this).find(".redux-field-warning").length;if(c>0){var d=a(this).attr("id").split("_");d=d[0],b.find('.redux-group-tab-link-a[data-key="'+d+'"]').prepend('<span class="redux-menu-warning">'+total+"</span>"),b.find('.redux-group-tab-link-a[data-key="'+d+'"]').addClass("hasWarning");var e=b.find('.redux-group-tab-link-a[data-key="'+d+'"]').parents(".hasSubSections:first");e&&e.find(".redux-group-tab-link-a:first").addClass("hasWarning")}}))}))},a.redux.tabControl=function(){a(".redux-section-tabs div").hide(),a(".redux-section-tabs div:first").show(),a(".redux-section-tabs ul li:first").addClass("active"),a(".redux-section-tabs ul li a").click(function(){a(".redux-section-tabs ul li").removeClass("active"),a(this).parent().addClass("active");var b=a(this).attr("href");return a(".redux-section-tabs div").hide(),a(b).fadeIn("medium",function(){a.redux.initFields()}),!1})},a.redux.devFunctions=function(){a("#consolePrintObject").on("click",function(b){b.preventDefault(),console.log(a.parseJSON(a("#redux-object-json").html()))}),"function"==typeof jsonView&&jsonView("#redux-object-json","#redux-object-browser")},a.redux.required=function(){a.each(redux.folds,function(b,c){var d=a("#"+redux.args.opt_name+"-"+b);if(d.parents("tr:first").addClass("fold"),"hide"==c){if(d.parents("tr:first").addClass("hide"),d.hasClass("redux-container-section")){var e=a("#section-"+b);e.hasClass("redux-section-indent-start")&&(a("#section-table-"+b).hide().addClass("hide"),e.hide().addClass("hide"))}if(d.hasClass("redux-container-info")&&a("#info-"+b).hide().addClass("hide"),d.hasClass("redux-container-divide")&&a("#divide-"+b).hide().addClass("hide"),d.hasClass("redux-container-raw")){var f=d.parents().find("table#"+redux.args.opt_name+"-"+b);f.hide().addClass("hide")}}})},a.redux.get_container_value=function(b){var c=a("#"+redux.args.opt_name+"-"+b).serializeForm();return null!==c&&"object"==typeof c&&c.hasOwnProperty(redux.args.opt_name)&&(c=c[redux.args.opt_name][b]),c},a.redux.check_dependencies=function(b){if(null!==redux.required){var c=a(b),d=c.parents(".redux-field:first").data("id");if(redux.required.hasOwnProperty(d)){var e=c.parents(".redux-field-container:first"),f=e.parents("tr:first").hasClass(".hide");a.each(redux.required[d],function(b){var c=a(this),d=!1,e=a("#"+redux.args.opt_name+"-"+b),g=e.parents("tr:first");if(f||(d=a.redux.check_parents_dependencies(b)),d===!0){if(e.hasClass("redux-container-section")){var h=a("#section-"+b);h.hasClass("redux-section-indent-start")&&h.hasClass("hide")&&(a("#section-table-"+b).fadeIn(300).removeClass("hide"),h.fadeIn(300).removeClass("hide"))}if(e.hasClass("redux-container-info")&&a("#info-"+b).fadeIn(300).removeClass("hide"),e.hasClass("redux-container-divide")&&a("#divide-"+b).fadeIn(300).removeClass("hide"),e.hasClass("redux-container-raw")){var i=e.parents().find("table#"+redux.args.opt_name+"-"+b);i.fadeIn(300).removeClass("hide")}g.fadeIn(300,function(){a(this).removeClass("hide"),redux.required.hasOwnProperty(b)&&a.redux.check_dependencies(a("#"+redux.args.opt_name+"-"+b).children().first()),a.redux.initFields()}),(e.hasClass("redux-container-section")||e.hasClass("redux-container-info"))&&g.css({display:"none"})}else d===!1&&g.fadeOut(100,function(){a(this).addClass("hide"),redux.required.hasOwnProperty(b)&&a.redux.required_recursive_hide(b)});c.find("select, radio, input[type=checkbox]").trigger("change")})}}},a.redux.required_recursive_hide=function(b){var c=a("#"+redux.args.opt_name+"-"+b).parents("tr:first");c.fadeOut(50,function(){if(a(this).addClass("hide"),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-section")){var c=a("#section-"+b);c.hasClass("redux-section-indent-start")&&(a("#section-table-"+b).fadeOut(50).addClass("hide"),c.fadeOut(50).addClass("hide"))}if(a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-info")&&a("#info-"+b).fadeOut(50).addClass("hide"),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-divide")&&a("#divide-"+b).fadeOut(50).addClass("hide"),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-raw")){var d=a("#"+redux.args.opt_name+"-"+b).parents().find("table#"+redux.args.opt_name+"-"+b);d.fadeOut(50).addClass("hide")}redux.required.hasOwnProperty(b)&&a.each(redux.required[b],function(b){a.redux.required_recursive_hide(b)})})},a.redux.check_parents_dependencies=function(b){var c="";return redux.required_child.hasOwnProperty(b)?a.each(redux.required_child[b],function(b,d){if(a("#"+redux.args.opt_name+"-"+d.parent).parents("tr:first").hasClass(".hide"))c=!1;else if(c!==!1){var e=a.redux.get_container_value(d.parent);c=a.redux.check_dependencies_visibility(e,d)}}):c=!0,c},a.redux.check_dependencies_visibility=function(b,c){var d=!1,e=c.checkValue,f=c.operation;switch(f){case"=":case"equals":a.isArray(e)?-1!=a.inArray(b,e)&&(d=!0):b==e?d=!0:a.isArray(b)&&-1!=a.inArray(e,b)&&(d=!0);break;case"!=":case"not":a.isArray(e)?-1==a.inArray(b,e)&&(d=!0):b!=e?d=!0:a.isArray(b)&&-1==a.inArray(e,b)&&(d=!0);break;case">":case"greater":case"is_larger":parseFloat(b)>parseFloat(e)&&(d=!0);break;case">=":case"greater_equal":case"is_larger_equal":parseFloat(b)>=parseFloat(e)&&(d=!0);break;case"<":case"less":case"is_smaller":parseFloat(b)<parseFloat(e)&&(d=!0);break;case"<=":case"less_equal":case"is_smaller_equal":parseFloat(b)<=parseFloat(e)&&(d=!0);break;case"contains":-1!=b.toString().indexOf(e)&&(d=!0);break;case"doesnt_contain":case"not_contain":-1==b.toString().indexOf(e)&&(d=!0);break;case"is_empty_or":(""===b||b==e)&&(d=!0);break;case"not_empty_and":""!==b&&b!=e&&(d=!0);break;case"is_empty":case"empty":case"!isset":b&&""!==b&&null!==b||(d=!0);break;case"not_empty":case"!empty":case"isset":b&&""!==b&&null!==b&&(d=!0)}return d},a.redux.verifyPos=function(a,b){if(a=a.replace(/^\s+|\s+$/gm,""),""===a||-1==a.search(" "))return b===!0?"top left":"bottom right";var c=a.split(" "),d=b?"top":"bottom";("top"==c[0]||"center"==c[0]||"bottom"==c[0])&&(d=c[0]);var e=b?"left":"right";return("left"==c[1]||"center"==c[1]||"right"==c[1])&&(e=c[1]),d+" "+e},a.redux.stickyInfo=function(){var b=a("#info_bar").width()-4;a("#info_bar").isOnScreen()||a("#redux-footer-sticky").isOnScreen()?(a("#redux-sticky").removeClass("sticky-save-warn"),a("#redux-footer").css({background:"#eee",position:"inherit",bottom:"inherit",width:"inherit"}),a("#redux-sticky-padder").hide(),a("#redux-footer").removeClass("sticky-footer-fixed")):(a("#redux-sticky").addClass("sticky-save-warn"),a("#redux-footer").css({position:"fixed",bottom:"0",width:b}),a("#redux-footer").addClass("sticky-footer-fixed"),a(".redux-save-warn").css("left",a("#redux-sticky").offset().left),a("#redux-sticky-padder").show())},a.redux.expandOptions=function(b){var c=b.find(".expand_options"),d=b.find(".redux-sidebar").width()-1,e=a(".redux-group-menu .active a").data("rel")+"_section_group";return c.hasClass("expanded")?(c.removeClass("expanded"),b.find(".redux-main").removeClass("expand"),b.find(".redux-sidebar").stop().animate({"margin-left":"0px"},500),b.find(".redux-main").stop().animate({"margin-left":d},500,function(){b.find(".redux-main").attr("style","")}),b.find(".redux-group-tab").each(function(){a(this).attr("id")!==e&&a(this).fadeOut("fast")})):(c.addClass("expanded"),b.find(".redux-main").addClass("expand"),b.find(".redux-sidebar").stop().animate({"margin-left":-d-113},500),b.find(".redux-main").stop().animate({"margin-left":"-1px"},500),b.find(".redux-group-tab").fadeIn("medium",function(){a.redux.initFields()})),!1},a.redux.scaleToRatio=function(b,c,d){var e=0,f=b.attr("data-width");f||(f=b.width(),b.attr("data-width",f));var g=b.attr("data-height");g||(g=b.height(),b.attr("data-height",g)),f>d?(e=d/f,b.css("width",d),b.css("height",g*e),g*=e,f*=e):b.css("width","auto"),g>c?(e=c/g,b.css("height",c),b.css("width",f*e),f*=e,g*=e):b.css("height","auto"),a("#redux-header .redux_field_search")&&a("#redux-header .redux_field_search").css("right",a(b).width()+20)},a.redux.resizeAds=function(){var b=a("#redux-header"),c=b.find(".rAds"),d=b.height(),e=b.width()-b.find(".display_header").width()-30;a(c).find("video").each(function(){a.redux.scaleToRatio(a(this),d,e)}),a(c).find("img").each(function(){a.redux.scaleToRatio(a(this),d,e)}),a(c).find("div").each(function(){a.redux.scaleToRatio(a(this),d,e)}),"-99999px"==c.css("left")&&c.css("display","none").css("left","auto"),c.fadeIn("slow")},a(document).ready(function(){if(redux.rAds){a("#redux-header").append('<div class="rAds"></div>');var b=a("#redux-header");b.css("position","relative"),b.find(".rAds").attr("style","position:absolute; top: 6px; right: 6px; display:block !important;overflow:hidden;").css("left","-99999px"),b.find(".rAds").html(redux.rAds.replace(/<br\s?\/?>/,""));var c=b.find(".rAds"),d=b.height(),e=b.width()-b.find(".display_header").width()-30;a(c).css("height",d).css("max-width",e).css("width",e),c.find("a").css("float","right").css("line-height",b.height()+"px").css("margin-left","5px"),a(document).ajaxComplete(function(){setTimeout(function(){a.redux.resizeAds()},1500),a(document).unbind("ajaxComplete")}),a(window).resize(function(){a.redux.resizeAds()})}})}(jQuery),jQuery.noConflict();var confirmOnPageExit=function(a){a=a||window.event;var b=redux.args.save_pending;return a&&(a.returnValue=b),window.onbeforeunload=null,b};
|
1 |
function redux_change(a){jQuery("body").trigger("check_dependencies",a),a.hasClass("compiler")&&jQuery("#redux-compiler-hook").val(1),window.onbeforeunload=confirmOnPageExit;var b=jQuery(a).parents(".redux-container:first");if(jQuery(a).parents("fieldset.redux-field:first").hasClass("redux-field-error")){jQuery(a).parents("fieldset.redux-field:first").removeClass("redux-field-error"),jQuery(a).parent().find(".redux-th-error").slideUp();var c=jQuery(a).closest(".redux-group-tab").attr("id"),d=parseInt(b.find(".redux-field-errors span").text())-1,e=parseInt(b.find(".redux-field-warnings span").text())-1;if(0>=d)jQuery("#"+c+"_li .redux-menu-error").fadeOut("fast").remove(),jQuery("#"+c+"_li .redux-group-tab-link-a").removeClass("hasError"),jQuery("#"+c+"_li").parents(".inside:first").find(".redux-field-errors").slideUp(),jQuery(a).parents(".redux-container:first").find(".redux-field-errors").slideUp(),jQuery("#redux_metaboxes_errors").slideUp();else{var f=c.split("_");f=f[0];var g=b.find('.redux-group-tab-link-a[data-key="'+f+'"]').parents(".redux-group-tab-link-li:first"),h=parseInt(g.find(".redux-menu-error:first").text())-1;0>=h?g.find(".redux-menu-error:first").fadeOut().remove():g.find(".redux-menu-error:first").text(h);var i=parseInt(g.find(".redux-menu-warning:first").text())-1;0>=i?g.find(".redux-menu-warning:first").fadeOut().remove():g.find(".redux-menu-warning:first").text(i),b.find(".redux-field-errors span").text(d),b.find(".redux-field-warning span").text(e)}var j=jQuery("#"+c+"_li").parents(".hasSubSections:first");0!==j.length&&0===j.find(".redux-menu-error").length&&j.find(".hasError").removeClass("hasError")}redux.args.disable_save_warn||b.find(".redux-save-warn").slideDown()}function colorValidate(a){var b=jQuery(a).val(),c=colorNameToHex(b);return c!==b.replace("#","")?c:b}function colorNameToHex(a){var b=a.replace(/^\s\s*/,"").replace(/\s\s*$/,"").replace("#",""),c={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4","indianred ":"#cd5c5c","indigo ":"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",redux:"#01a3e3",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};return"undefined"!==c[b.toLowerCase()]?c[b.toLowerCase()]:a}!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){function b(a){return a}function c(a){return decodeURIComponent(a.replace(e," "))}function d(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return f.json?JSON.parse(a):a}catch(b){}}var e=/\+/g,f=a.cookie=function(e,g,h){if(void 0!==g){if(h=a.extend({},f.defaults,h),"number"==typeof h.expires){var i=h.expires,j=h.expires=new Date;j.setDate(j.getDate()+i)}return g=f.json?JSON.stringify(g):String(g),document.cookie=[f.raw?e:encodeURIComponent(e),"=",f.raw?g:encodeURIComponent(g),h.expires?"; expires="+h.expires.toUTCString():"",h.path?"; path="+h.path:"",h.domain?"; domain="+h.domain:"",h.secure?"; secure":""].join("")}for(var k=f.raw?b:c,l=document.cookie.split("; "),m=e?void 0:{},n=0,o=l.length;o>n;n++){var p=l[n].split("="),q=k(p.shift()),r=k(p.join("="));if(e&&e===q){m=d(r);break}e||(m[q]=d(r))}return m};f.defaults={},a.removeCookie=function(b,c){return void 0!==a.cookie(b)?(a.cookie(b,"",a.extend({},c,{expires:-1})),!0):!1}}),"undefined"==typeof jQuery.qtip&&!function(a,b,c){!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):jQuery&&!jQuery.fn.qtip&&a(jQuery)}(function(d){"use strict";function e(a,b,c,e){this.id=c,this.target=a,this.tooltip=G,this.elements={target:a},this._id=T+"-"+c,this.timers={img:{}},this.options=b,this.plugins={},this.cache={event:{},target:d(),disabled:F,attr:e,onTooltip:F,lastClass:""},this.rendered=this.destroyed=this.disabled=this.waiting=this.hiddenDuringWait=this.positioning=this.triggering=F}function f(a){return a===G||"object"!==d.type(a)}function g(a){return!(d.isFunction(a)||a&&a.attr||a.length||"object"===d.type(a)&&(a.jquery||a.then))}function h(a){var b,c,e,h;return f(a)?F:(f(a.metadata)&&(a.metadata={type:a.metadata}),"content"in a&&(b=a.content,f(b)||b.jquery||b.done?b=a.content={text:c=g(b)?F:b}:c=b.text,"ajax"in b&&(e=b.ajax,h=e&&e.once!==F,delete b.ajax,b.text=function(a,b){var f=c||d(this).attr(b.options.content.attr)||"Loading...",g=d.ajax(d.extend({},e,{context:b})).then(e.success,G,e.error).then(function(a){return a&&h&&b.set("content.text",a),a},function(a,c,d){b.destroyed||0===a.status||b.set("content.text",c+": "+d)});return h?f:(b.set("content.text",f),g)}),"title"in b&&(f(b.title)||(b.button=b.title.button,b.title=b.title.text),g(b.title||F)&&(b.title=F))),"position"in a&&f(a.position)&&(a.position={my:a.position,at:a.position}),"show"in a&&f(a.show)&&(a.show=a.show.jquery?{target:a.show}:a.show===E?{ready:E}:{event:a.show}),"hide"in a&&f(a.hide)&&(a.hide=a.hide.jquery?{target:a.hide}:{event:a.hide}),"style"in a&&f(a.style)&&(a.style={classes:a.style}),d.each(S,function(){this.sanitize&&this.sanitize(a)}),a)}function i(a,b){for(var c,d=0,e=a,f=b.split(".");e=e[f[d++]];)d<f.length&&(c=e);return[c||a,f.pop()]}function j(a,b){var c,d,e;for(c in this.checks)for(d in this.checks[c])(e=new RegExp(d,"i").exec(a))&&(b.push(e),("builtin"===c||this.plugins[c])&&this.checks[c][d].apply(this.plugins[c]||this,b))}function k(a){return W.concat("").join(a?"-"+a+" ":" ")}function l(c){return c&&{type:c.type,pageX:c.pageX,pageY:c.pageY,target:c.target,relatedTarget:c.relatedTarget,scrollX:c.scrollX||a.pageXOffset||b.body.scrollLeft||b.documentElement.scrollLeft,scrollY:c.scrollY||a.pageYOffset||b.body.scrollTop||b.documentElement.scrollTop}||{}}function m(a,b){return b>0?setTimeout(d.proxy(a,this),b):void a.call(this)}function n(a){return this.tooltip.hasClass(bb)?F:(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),void(this.timers.show=m.call(this,function(){this.toggle(E,a)},this.options.show.delay)))}function o(a){if(this.tooltip.hasClass(bb))return F;var b=d(a.relatedTarget),c=b.closest(X)[0]===this.tooltip[0],e=b[0]===this.options.show.target[0];if(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this!==b[0]&&"mouse"===this.options.position.target&&c||this.options.hide.fixed&&/mouse(out|leave|move)/.test(a.type)&&(c||e))try{a.preventDefault(),a.stopImmediatePropagation()}catch(f){}else this.timers.hide=m.call(this,function(){this.toggle(F,a)},this.options.hide.delay,this)}function p(a){return this.tooltip.hasClass(bb)||!this.options.hide.inactive?F:(clearTimeout(this.timers.inactive),void(this.timers.inactive=m.call(this,function(){this.hide(a)},this.options.hide.inactive)))}function q(a){this.rendered&&this.tooltip[0].offsetWidth>0&&this.reposition(a)}function r(a,c,e){d(b.body).delegate(a,(c.split?c:c.join(ib+" "))+ib,function(){var a=z.api[d.attr(this,V)];a&&!a.disabled&&e.apply(a,arguments)})}function s(a,c,f){var g,i,j,k,l,m=d(b.body),n=a[0]===b?m:a,o=a.metadata?a.metadata(f.metadata):G,p="html5"===f.metadata.type&&o?o[f.metadata.name]:G,q=a.data(f.metadata.name||"qtipopts");try{q="string"==typeof q?d.parseJSON(q):q}catch(r){}if(k=d.extend(E,{},z.defaults,f,"object"==typeof q?h(q):G,h(p||o)),i=k.position,k.id=c,"boolean"==typeof k.content.text){if(j=a.attr(k.content.attr),k.content.attr===F||!j)return F;k.content.text=j}if(i.container.length||(i.container=m),i.target===F&&(i.target=n),k.show.target===F&&(k.show.target=n),k.show.solo===E&&(k.show.solo=i.container.closest("body")),k.hide.target===F&&(k.hide.target=n),k.position.viewport===E&&(k.position.viewport=i.container),i.container=i.container.eq(0),i.at=new B(i.at,E),i.my=new B(i.my),a.data(T))if(k.overwrite)a.qtip("destroy",!0);else if(k.overwrite===F)return F;return a.attr(U,c),k.suppress&&(l=a.attr("title"))&&a.removeAttr("title").attr(db,l).attr("title",""),g=new e(a,k,c,!!j),a.data(T,g),a.one("remove.qtip-"+c+" removeqtip.qtip-"+c,function(){var a;(a=d(this).data(T))&&a.destroy(!0)}),g}function t(a){return a.charAt(0).toUpperCase()+a.slice(1)}function u(a,b){var d,e,f=b.charAt(0).toUpperCase()+b.slice(1),g=(b+" "+tb.join(f+" ")+f).split(" "),h=0;if(sb[b])return a.css(sb[b]);for(;d=g[h++];)if((e=a.css(d))!==c)return sb[b]=d,e}function v(a,b){return Math.ceil(parseFloat(u(a,b)))}function w(a,b){this._ns="tip",this.options=b,this.offset=b.offset,this.size=[b.width,b.height],this.init(this.qtip=a)}function x(a,b){this.options=b,this._ns="-modal",this.init(this.qtip=a)}function y(a){this._ns="ie6",this.init(this.qtip=a)}var z,A,B,C,D,E=!0,F=!1,G=null,H="x",I="y",J="width",K="height",L="top",M="left",N="bottom",O="right",P="center",Q="flipinvert",R="shift",S={},T="qtip",U="data-hasqtip",V="data-qtip-id",W=["ui-widget","ui-tooltip"],X="."+T,Y="click dblclick mousedown mouseup mousemove mouseleave mouseenter".split(" "),Z=T+"-fixed",$=T+"-default",_=T+"-focus",ab=T+"-hover",bb=T+"-disabled",cb="_replacedByqTip",db="oldtitle",eb={ie:function(){for(var a=3,c=b.createElement("div");(c.innerHTML="<!--[if gt IE "+ ++a+"]><i></i><![endif]-->")&&c.getElementsByTagName("i")[0];);return a>4?a:0/0}(),iOS:parseFloat((""+(/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||F};A=e.prototype,A._when=function(a){return d.when.apply(d,a)},A.render=function(a){if(this.rendered||this.destroyed)return this;var b,c=this,e=this.options,f=this.cache,g=this.elements,h=e.content.text,i=e.content.title,j=e.content.button,k=e.position,l=("."+this._id+" ",[]);return d.attr(this.target[0],"aria-describedby",this._id),this.tooltip=g.tooltip=b=d("<div/>",{id:this._id,"class":[T,$,e.style.classes,T+"-pos-"+e.position.my.abbrev()].join(" "),width:e.style.width||"",height:e.style.height||"",tracking:"mouse"===k.target&&k.adjust.mouse,role:"alert","aria-live":"polite","aria-atomic":F,"aria-describedby":this._id+"-content","aria-hidden":E}).toggleClass(bb,this.disabled).attr(V,this.id).data(T,this).appendTo(k.container).append(g.content=d("<div />",{"class":T+"-content",id:this._id+"-content","aria-atomic":E})),this.rendered=-1,this.positioning=E,i&&(this._createTitle(),d.isFunction(i)||l.push(this._updateTitle(i,F))),j&&this._createButton(),d.isFunction(h)||l.push(this._updateContent(h,F)),this.rendered=E,this._setWidget(),d.each(S,function(a){var b;"render"===this.initialize&&(b=this(c))&&(c.plugins[a]=b)}),this._unassignEvents(),this._assignEvents(),this._when(l).then(function(){c._trigger("render"),c.positioning=F,c.hiddenDuringWait||!e.show.ready&&!a||c.toggle(E,f.event,F),c.hiddenDuringWait=F}),z.api[this.id]=this,this},A.destroy=function(a){function b(){if(!this.destroyed){this.destroyed=E;var a=this.target,b=a.attr(db);this.rendered&&this.tooltip.stop(1,0).find("*").remove().end().remove(),d.each(this.plugins,function(){this.destroy&&this.destroy()}),clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this._unassignEvents(),a.removeData(T).removeAttr(V).removeAttr(U).removeAttr("aria-describedby"),this.options.suppress&&b&&a.attr("title",b).removeAttr(db),this._unbind(a),this.options=this.elements=this.cache=this.timers=this.plugins=this.mouse=G,delete z.api[this.id]}}return this.destroyed?this.target:(a===E&&"hide"!==this.triggering||!this.rendered?b.call(this):(this.tooltip.one("tooltiphidden",d.proxy(b,this)),!this.triggering&&this.hide()),this.target)},C=A.checks={builtin:{"^id$":function(a,b,c,e){var f=c===E?z.nextid:c,g=T+"-"+f;f!==F&&f.length>0&&!d("#"+g).length?(this._id=g,this.rendered&&(this.tooltip[0].id=this._id,this.elements.content[0].id=this._id+"-content",this.elements.title[0].id=this._id+"-title")):a[b]=e},"^prerender":function(a,b,c){c&&!this.rendered&&this.render(this.options.show.ready)},"^content.text$":function(a,b,c){this._updateContent(c)},"^content.attr$":function(a,b,c,d){this.options.content.text===this.target.attr(d)&&this._updateContent(this.target.attr(c))},"^content.title$":function(a,b,c){return c?(c&&!this.elements.title&&this._createTitle(),void this._updateTitle(c)):this._removeTitle()},"^content.button$":function(a,b,c){this._updateButton(c)},"^content.title.(text|button)$":function(a,b,c){this.set("content."+b,c)},"^position.(my|at)$":function(a,b,c){"string"==typeof c&&(a[b]=new B(c,"at"===b))},"^position.container$":function(a,b,c){this.rendered&&this.tooltip.appendTo(c)},"^show.ready$":function(a,b,c){c&&(!this.rendered&&this.render(E)||this.toggle(E))},"^style.classes$":function(a,b,c,d){this.rendered&&this.tooltip.removeClass(d).addClass(c)},"^style.(width|height)":function(a,b,c){this.rendered&&this.tooltip.css(b,c)},"^style.widget|content.title":function(){this.rendered&&this._setWidget()},"^style.def":function(a,b,c){this.rendered&&this.tooltip.toggleClass($,!!c)},"^events.(render|show|move|hide|focus|blur)$":function(a,b,c){this.rendered&&this.tooltip[(d.isFunction(c)?"":"un")+"bind"]("tooltip"+b,c)},"^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)":function(){if(this.rendered){var a=this.options.position;this.tooltip.attr("tracking","mouse"===a.target&&a.adjust.mouse),this._unassignEvents(),this._assignEvents()}}}},A.get=function(a){if(this.destroyed)return this;var b=i(this.options,a.toLowerCase()),c=b[0][b[1]];return c.precedance?c.string():c};var fb=/^position\.(my|at|adjust|target|container|viewport)|style|content|show\.ready/i,gb=/^prerender|show\.ready/i;A.set=function(a,b){if(this.destroyed)return this;{var c,e=this.rendered,f=F,g=this.options;this.checks}return"string"==typeof a?(c=a,a={},a[c]=b):a=d.extend({},a),d.each(a,function(b,c){if(e&&gb.test(b))return void delete a[b];var h,j=i(g,b.toLowerCase());h=j[0][j[1]],j[0][j[1]]=c&&c.nodeType?d(c):c,f=fb.test(b)||f,a[b]=[j[0],j[1],c,h]}),h(g),this.positioning=E,d.each(a,d.proxy(j,this)),this.positioning=F,this.rendered&&this.tooltip[0].offsetWidth>0&&f&&this.reposition("mouse"===g.position.target?G:this.cache.event),this},A._update=function(a,b){var c=this,e=this.cache;return this.rendered&&a?(d.isFunction(a)&&(a=a.call(this.elements.target,e.event,this)||""),d.isFunction(a.then)?(e.waiting=E,a.then(function(a){return e.waiting=F,c._update(a,b)},G,function(a){return c._update(a,b)})):a===F||!a&&""!==a?F:(a.jquery&&a.length>0?b.empty().append(a.css({display:"block",visibility:"visible"})):b.html(a),this._waitForContent(b).then(function(a){a.images&&a.images.length&&c.rendered&&c.tooltip[0].offsetWidth>0&&c.reposition(e.event,!a.length)}))):F},A._waitForContent=function(a){var b=this.cache;return b.waiting=E,(d.fn.imagesLoaded?a.imagesLoaded():d.Deferred().resolve([])).done(function(){b.waiting=F}).promise()},A._updateContent=function(a,b){this._update(a,this.elements.content,b)},A._updateTitle=function(a,b){this._update(a,this.elements.title,b)===F&&this._removeTitle(F)},A._createTitle=function(){var a=this.elements,b=this._id+"-title";a.titlebar&&this._removeTitle(),a.titlebar=d("<div />",{"class":T+"-titlebar "+(this.options.style.widget?k("header"):"")}).append(a.title=d("<div />",{id:b,"class":T+"-title","aria-atomic":E})).insertBefore(a.content).delegate(".qtip-close","mousedown keydown mouseup keyup mouseout",function(a){d(this).toggleClass("ui-state-active ui-state-focus","down"===a.type.substr(-4))}).delegate(".qtip-close","mouseover mouseout",function(a){d(this).toggleClass("ui-state-hover","mouseover"===a.type)}),this.options.content.button&&this._createButton()},A._removeTitle=function(a){var b=this.elements;b.title&&(b.titlebar.remove(),b.titlebar=b.title=b.button=G,a!==F&&this.reposition())},A.reposition=function(c,e){if(!this.rendered||this.positioning||this.destroyed)return this;this.positioning=E;var f,g,h=this.cache,i=this.tooltip,j=this.options.position,k=j.target,l=j.my,m=j.at,n=j.viewport,o=j.container,p=j.adjust,q=p.method.split(" "),r=i.outerWidth(F),s=i.outerHeight(F),t=0,u=0,v=i.css("position"),w={left:0,top:0},x=i[0].offsetWidth>0,y=c&&"scroll"===c.type,z=d(a),A=o[0].ownerDocument,B=this.mouse;if(d.isArray(k)&&2===k.length)m={x:M,y:L},w={left:k[0],top:k[1]};else if("mouse"===k)m={x:M,y:L},!B||!B.pageX||!p.mouse&&c&&c.pageX?c&&c.pageX||((!p.mouse||this.options.show.distance)&&h.origin&&h.origin.pageX?c=h.origin:(!c||c&&("resize"===c.type||"scroll"===c.type))&&(c=h.event)):c=B,"static"!==v&&(w=o.offset()),A.body.offsetWidth!==(a.innerWidth||A.documentElement.clientWidth)&&(g=d(b.body).offset()),w={left:c.pageX-w.left+(g&&g.left||0),top:c.pageY-w.top+(g&&g.top||0)},p.mouse&&y&&B&&(w.left-=(B.scrollX||0)-z.scrollLeft(),w.top-=(B.scrollY||0)-z.scrollTop());else{if("event"===k?c&&c.target&&"scroll"!==c.type&&"resize"!==c.type?h.target=d(c.target):c.target||(h.target=this.elements.target):"event"!==k&&(h.target=d(k.jquery?k:this.elements.target)),k=h.target,k=d(k).eq(0),0===k.length)return this;k[0]===b||k[0]===a?(t=eb.iOS?a.innerWidth:k.width(),u=eb.iOS?a.innerHeight:k.height(),k[0]===a&&(w={top:(n||k).scrollTop(),left:(n||k).scrollLeft()})):S.imagemap&&k.is("area")?f=S.imagemap(this,k,m,S.viewport?q:F):S.svg&&k&&k[0].ownerSVGElement?f=S.svg(this,k,m,S.viewport?q:F):(t=k.outerWidth(F),u=k.outerHeight(F),w=k.offset()),f&&(t=f.width,u=f.height,g=f.offset,w=f.position),w=this.reposition.offset(k,w,o),(eb.iOS>3.1&&eb.iOS<4.1||eb.iOS>=4.3&&eb.iOS<4.33||!eb.iOS&&"fixed"===v)&&(w.left-=z.scrollLeft(),w.top-=z.scrollTop()),(!f||f&&f.adjustable!==F)&&(w.left+=m.x===O?t:m.x===P?t/2:0,w.top+=m.y===N?u:m.y===P?u/2:0)}return w.left+=p.x+(l.x===O?-r:l.x===P?-r/2:0),w.top+=p.y+(l.y===N?-s:l.y===P?-s/2:0),S.viewport?(w.adjusted=S.viewport(this,w,j,t,u,r,s),g&&w.adjusted.left&&(w.left+=g.left),g&&w.adjusted.top&&(w.top+=g.top)):w.adjusted={left:0,top:0},this._trigger("move",[w,n.elem||n],c)?(delete w.adjusted,e===F||!x||isNaN(w.left)||isNaN(w.top)||"mouse"===k||!d.isFunction(j.effect)?i.css(w):d.isFunction(j.effect)&&(j.effect.call(i,this,d.extend({},w)),i.queue(function(a){d(this).css({opacity:"",height:""}),eb.ie&&this.style.removeAttribute("filter"),a()})),this.positioning=F,this):this},A.reposition.offset=function(a,c,e){function f(a,b){c.left+=b*a.scrollLeft(),c.top+=b*a.scrollTop()}if(!e[0])return c;var g,h,i,j,k=d(a[0].ownerDocument),l=!!eb.ie&&"CSS1Compat"!==b.compatMode,m=e[0];do"static"!==(h=d.css(m,"position"))&&("fixed"===h?(i=m.getBoundingClientRect(),f(k,-1)):(i=d(m).position(),i.left+=parseFloat(d.css(m,"borderLeftWidth"))||0,i.top+=parseFloat(d.css(m,"borderTopWidth"))||0),c.left-=i.left+(parseFloat(d.css(m,"marginLeft"))||0),c.top-=i.top+(parseFloat(d.css(m,"marginTop"))||0),g||"hidden"===(j=d.css(m,"overflow"))||"visible"===j||(g=d(m)));while(m=m.offsetParent);return g&&(g[0]!==k[0]||l)&&f(g,1),c};var hb=(B=A.reposition.Corner=function(a,b){a=(""+a).replace(/([A-Z])/," $1").replace(/middle/gi,P).toLowerCase(),this.x=(a.match(/left|right/i)||a.match(/center/)||["inherit"])[0].toLowerCase(),this.y=(a.match(/top|bottom|center/i)||["inherit"])[0].toLowerCase(),this.forceY=!!b;var c=a.charAt(0);this.precedance="t"===c||"b"===c?I:H}).prototype;hb.invert=function(a,b){this[a]=this[a]===M?O:this[a]===O?M:b||this[a]},hb.string=function(){var a=this.x,b=this.y;return a===b?a:this.precedance===I||this.forceY&&"center"!==b?b+" "+a:a+" "+b},hb.abbrev=function(){var a=this.string().split(" ");return a[0].charAt(0)+(a[1]&&a[1].charAt(0)||"")},hb.clone=function(){return new B(this.string(),this.forceY)},A.toggle=function(a,c){var e=this.cache,f=this.options,g=this.tooltip;if(c){if(/over|enter/.test(c.type)&&/out|leave/.test(e.event.type)&&f.show.target.add(c.target).length===f.show.target.length&&g.has(c.relatedTarget).length)return this;e.event=l(c)}if(this.waiting&&!a&&(this.hiddenDuringWait=E),!this.rendered)return a?this.render(1):this;if(this.destroyed||this.disabled)return this;var h,i,j,k=a?"show":"hide",m=this.options[k],n=(this.options[a?"hide":"show"],this.options.position),o=this.options.content,p=this.tooltip.css("width"),q=this.tooltip.is(":visible"),r=a||1===m.target.length,s=!c||m.target.length<2||e.target[0]===c.target;return(typeof a).search("boolean|number")&&(a=!q),h=!g.is(":animated")&&q===a&&s,i=h?G:!!this._trigger(k,[90]),this.destroyed?this:(i!==F&&a&&this.focus(c),!i||h?this:(d.attr(g[0],"aria-hidden",!a),a?(e.origin=l(this.mouse),d.isFunction(o.text)&&this._updateContent(o.text,F),d.isFunction(o.title)&&this._updateTitle(o.title,F),!D&&"mouse"===n.target&&n.adjust.mouse&&(d(b).bind("mousemove."+T,this._storeMouse),D=E),p||g.css("width",g.outerWidth(F)),this.reposition(c,arguments[2]),p||g.css("width",""),m.solo&&("string"==typeof m.solo?d(m.solo):d(X,m.solo)).not(g).not(m.target).qtip("hide",d.Event("tooltipsolo"))):(clearTimeout(this.timers.show),delete e.origin,D&&!d(X+'[tracking="true"]:visible',m.solo).not(g).length&&(d(b).unbind("mousemove."+T),D=F),this.blur(c)),j=d.proxy(function(){a?(eb.ie&&g[0].style.removeAttribute("filter"),g.css("overflow",""),"string"==typeof m.autofocus&&d(this.options.show.autofocus,g).focus(),this.options.show.target.trigger("qtip-"+this.id+"-inactive")):g.css({display:"",visibility:"",opacity:"",left:"",top:""}),this._trigger(a?"visible":"hidden")},this),m.effect===F||r===F?(g[k](),j()):d.isFunction(m.effect)?(g.stop(1,1),m.effect.call(g,this),g.queue("fx",function(a){j(),a()})):g.fadeTo(90,a?1:0,j),a&&m.target.trigger("qtip-"+this.id+"-inactive"),this))},A.show=function(a){return this.toggle(E,a)},A.hide=function(a){return this.toggle(F,a)},A.focus=function(a){if(!this.rendered||this.destroyed)return this;var b=d(X),c=this.tooltip,e=parseInt(c[0].style.zIndex,10),f=z.zindex+b.length;return c.hasClass(_)||this._trigger("focus",[f],a)&&(e!==f&&(b.each(function(){this.style.zIndex>e&&(this.style.zIndex=this.style.zIndex-1)}),b.filter("."+_).qtip("blur",a)),c.addClass(_)[0].style.zIndex=f),this},A.blur=function(a){return!this.rendered||this.destroyed?this:(this.tooltip.removeClass(_),this._trigger("blur",[this.tooltip.css("zIndex")],a),this)},A.disable=function(a){return this.destroyed?this:("toggle"===a?a=!(this.rendered?this.tooltip.hasClass(bb):this.disabled):"boolean"!=typeof a&&(a=E),this.rendered&&this.tooltip.toggleClass(bb,a).attr("aria-disabled",a),this.disabled=!!a,this)},A.enable=function(){return this.disable(F)},A._createButton=function(){var a=this,b=this.elements,c=b.tooltip,e=this.options.content.button,f="string"==typeof e,g=f?e:"Close tooltip";b.button&&b.button.remove(),b.button=e.jquery?e:d("<a />",{"class":"qtip-close "+(this.options.style.widget?"":T+"-icon"),title:g,"aria-label":g}).prepend(d("<span />",{"class":"ui-icon ui-icon-close",html:"×"})),b.button.appendTo(b.titlebar||c).attr("role","button").click(function(b){return c.hasClass(bb)||a.hide(b),F})},A._updateButton=function(a){if(!this.rendered)return F;var b=this.elements.button;a?this._createButton():b.remove()},A._setWidget=function(){var a=this.options.style.widget,b=this.elements,c=b.tooltip,d=c.hasClass(bb);c.removeClass(bb),bb=a?"ui-state-disabled":"qtip-disabled",c.toggleClass(bb,d),c.toggleClass("ui-helper-reset "+k(),a).toggleClass($,this.options.style.def&&!a),b.content&&b.content.toggleClass(k("content"),a),b.titlebar&&b.titlebar.toggleClass(k("header"),a),b.button&&b.button.toggleClass(T+"-icon",!a)},A._storeMouse=function(a){(this.mouse=l(a)).type="mousemove"},A._bind=function(a,b,c,e,f){var g="."+this._id+(e?"-"+e:"");b.length&&d(a).bind((b.split?b:b.join(g+" "))+g,d.proxy(c,f||this))},A._unbind=function(a,b){d(a).unbind("."+this._id+(b?"-"+b:""))};var ib="."+T;d(function(){r(X,["mouseenter","mouseleave"],function(a){var b="mouseenter"===a.type,c=d(a.currentTarget),e=d(a.relatedTarget||a.target),f=this.options;b?(this.focus(a),c.hasClass(Z)&&!c.hasClass(bb)&&clearTimeout(this.timers.hide)):"mouse"===f.position.target&&f.hide.event&&f.show.target&&!e.closest(f.show.target[0]).length&&this.hide(a),c.toggleClass(ab,b)}),r("["+V+"]",Y,p)}),A._trigger=function(a,b,c){var e=d.Event("tooltip"+a);return e.originalEvent=c&&d.extend({},c)||this.cache.event||G,this.triggering=a,this.tooltip.trigger(e,[this].concat(b||[])),this.triggering=F,!e.isDefaultPrevented()},A._bindEvents=function(a,b,c,e,f,g){if(e.add(c).length===e.length){var h=[];b=d.map(b,function(b){var c=d.inArray(b,a);return c>-1?void h.push(a.splice(c,1)[0]):b}),h.length&&this._bind(c,h,function(a){var b=this.rendered?this.tooltip[0].offsetWidth>0:!1;(b?g:f).call(this,a)})}this._bind(c,a,f),this._bind(e,b,g)},A._assignInitialEvents=function(a){function b(a){return this.disabled||this.destroyed?F:(this.cache.event=l(a),this.cache.target=a?d(a.target):[c],clearTimeout(this.timers.show),void(this.timers.show=m.call(this,function(){this.render("object"==typeof a||e.show.ready)},e.show.delay)))}var e=this.options,f=e.show.target,g=e.hide.target,h=e.show.event?d.trim(""+e.show.event).split(" "):[],i=e.hide.event?d.trim(""+e.hide.event).split(" "):[];/mouse(over|enter)/i.test(e.show.event)&&!/mouse(out|leave)/i.test(e.hide.event)&&i.push("mouseleave"),this._bind(f,"mousemove",function(a){this._storeMouse(a),this.cache.onTarget=E}),this._bindEvents(h,i,f,g,b,function(){clearTimeout(this.timers.show)}),(e.show.ready||e.prerender)&&b.call(this,a)},A._assignEvents=function(){var c=this,e=this.options,f=e.position,g=this.tooltip,h=e.show.target,i=e.hide.target,j=f.container,k=f.viewport,l=d(b),m=(d(b.body),d(a)),r=e.show.event?d.trim(""+e.show.event).split(" "):[],s=e.hide.event?d.trim(""+e.hide.event).split(" "):[];d.each(e.events,function(a,b){c._bind(g,"toggle"===a?["tooltipshow","tooltiphide"]:["tooltip"+a],b,null,g)}),/mouse(out|leave)/i.test(e.hide.event)&&"window"===e.hide.leave&&this._bind(l,["mouseout","blur"],function(a){/select|option/.test(a.target.nodeName)||a.relatedTarget||this.hide(a)}),e.hide.fixed?i=i.add(g.addClass(Z)):/mouse(over|enter)/i.test(e.show.event)&&this._bind(i,"mouseleave",function(){clearTimeout(this.timers.show)}),(""+e.hide.event).indexOf("unfocus")>-1&&this._bind(j.closest("html"),["mousedown","touchstart"],function(a){var b=d(a.target),c=this.rendered&&!this.tooltip.hasClass(bb)&&this.tooltip[0].offsetWidth>0,e=b.parents(X).filter(this.tooltip[0]).length>0;b[0]===this.target[0]||b[0]===this.tooltip[0]||e||this.target.has(b[0]).length||!c||this.hide(a)}),"number"==typeof e.hide.inactive&&(this._bind(h,"qtip-"+this.id+"-inactive",p),this._bind(i.add(g),z.inactiveEvents,p,"-inactive")),this._bindEvents(r,s,h,i,n,o),this._bind(h.add(g),"mousemove",function(a){if("number"==typeof e.hide.distance){var b=this.cache.origin||{},c=this.options.hide.distance,d=Math.abs;(d(a.pageX-b.pageX)>=c||d(a.pageY-b.pageY)>=c)&&this.hide(a)}this._storeMouse(a)}),"mouse"===f.target&&f.adjust.mouse&&(e.hide.event&&this._bind(h,["mouseenter","mouseleave"],function(a){this.cache.onTarget="mouseenter"===a.type}),this._bind(l,"mousemove",function(a){this.rendered&&this.cache.onTarget&&!this.tooltip.hasClass(bb)&&this.tooltip[0].offsetWidth>0&&this.reposition(a)})),(f.adjust.resize||k.length)&&this._bind(d.event.special.resize?k:m,"resize",q),f.adjust.scroll&&this._bind(m.add(f.container),"scroll",q)},A._unassignEvents=function(){var c=[this.options.show.target[0],this.options.hide.target[0],this.rendered&&this.tooltip[0],this.options.position.container[0],this.options.position.viewport[0],this.options.position.container.closest("html")[0],a,b];this._unbind(d([]).pushStack(d.grep(c,function(a){return"object"==typeof a})))},z=d.fn.qtip=function(a,b,e){var f=(""+a).toLowerCase(),g=G,i=d.makeArray(arguments).slice(1),j=i[i.length-1],k=this[0]?d.data(this[0],T):G;return!arguments.length&&k||"api"===f?k:"string"==typeof a?(this.each(function(){var a=d.data(this,T);if(!a)return E;if(j&&j.timeStamp&&(a.cache.event=j),!b||"option"!==f&&"options"!==f)a[f]&&a[f].apply(a,i);else{if(e===c&&!d.isPlainObject(b))return g=a.get(b),F;a.set(b,e)}}),g!==G?g:this):"object"!=typeof a&&arguments.length?void 0:(k=h(d.extend(E,{},a)),this.each(function(a){var b,c;return c=d.isArray(k.id)?k.id[a]:k.id,c=!c||c===F||c.length<1||z.api[c]?z.nextid++:c,b=s(d(this),c,k),b===F?E:(z.api[c]=b,d.each(S,function(){"initialize"===this.initialize&&this(b)}),void b._assignInitialEvents(j))}))},d.qtip=e,z.api={},d.each({attr:function(a,b){if(this.length){var c=this[0],e="title",f=d.data(c,"qtip");if(a===e&&f&&"object"==typeof f&&f.options.suppress)return arguments.length<2?d.attr(c,db):(f&&f.options.content.attr===e&&f.cache.attr&&f.set("content.text",b),this.attr(db,b))}return d.fn["attr"+cb].apply(this,arguments)},clone:function(a){var b=(d([]),d.fn["clone"+cb].apply(this,arguments));return a||b.filter("["+db+"]").attr("title",function(){return d.attr(this,db)}).removeAttr(db),b}},function(a,b){if(!b||d.fn[a+cb])return E;var c=d.fn[a+cb]=d.fn[a];d.fn[a]=function(){return b.apply(this,arguments)||c.apply(this,arguments)}}),d.ui||(d["cleanData"+cb]=d.cleanData,d.cleanData=function(a){for(var b,c=0;(b=d(a[c])).length;c++)if(b.attr(U))try{b.triggerHandler("removeqtip")}catch(e){}d["cleanData"+cb].apply(this,arguments)}),z.version="2.2.0",z.nextid=0,z.inactiveEvents=Y,z.zindex=15e3,z.defaults={prerender:F,id:F,overwrite:E,suppress:E,content:{text:E,attr:"title",title:F,button:F},position:{my:"top left",at:"bottom right",target:F,container:F,viewport:F,adjust:{x:0,y:0,mouse:E,scroll:E,resize:E,method:"flipinvert flipinvert"},effect:function(a,b){d(this).animate(b,{duration:200,queue:F})}},show:{target:F,event:"mouseenter",effect:E,delay:90,solo:F,ready:F,autofocus:F},hide:{target:F,event:"mouseleave",effect:E,delay:0,fixed:F,inactive:F,leave:"window",distance:F},style:{classes:"",widget:F,width:F,height:F,def:E},events:{render:G,move:G,show:G,hide:G,toggle:G,visible:G,hidden:G,focus:G,blur:G}};
|
2 |
+
var jb,kb="margin",lb="border",mb="color",nb="background-color",ob="transparent",pb=" !important",qb=!!b.createElement("canvas").getContext,rb=/rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i,sb={},tb=["Webkit","O","Moz","ms"];if(qb)var ub=a.devicePixelRatio||1,vb=function(){var a=b.createElement("canvas").getContext("2d");return a.backingStorePixelRatio||a.webkitBackingStorePixelRatio||a.mozBackingStorePixelRatio||a.msBackingStorePixelRatio||a.oBackingStorePixelRatio||1}(),wb=ub/vb;else var xb=function(a,b,c){return"<qtipvml:"+a+' xmlns="urn:schemas-microsoft.com:vml" class="qtip-vml" '+(b||"")+' style="behavior: url(#default#VML); '+(c||"")+'" />'};d.extend(w.prototype,{init:function(a){var b,c;c=this.element=a.elements.tip=d("<div />",{"class":T+"-tip"}).prependTo(a.tooltip),qb?(b=d("<canvas />").appendTo(this.element)[0].getContext("2d"),b.lineJoin="miter",b.miterLimit=1e5,b.save()):(b=xb("shape",'coordorigin="0,0"',"position:absolute;"),this.element.html(b+b),a._bind(d("*",c).add(c),["click","mousedown"],function(a){a.stopPropagation()},this._ns)),a._bind(a.tooltip,"tooltipmove",this.reposition,this._ns,this),this.create()},_swapDimensions:function(){this.size[0]=this.options.height,this.size[1]=this.options.width},_resetDimensions:function(){this.size[0]=this.options.width,this.size[1]=this.options.height},_useTitle:function(a){var b=this.qtip.elements.titlebar;return b&&(a.y===L||a.y===P&&this.element.position().top+this.size[1]/2+this.options.offset<b.outerHeight(E))},_parseCorner:function(a){var b=this.qtip.options.position.my;return a===F||b===F?a=F:a===E?a=new B(b.string()):a.string||(a=new B(a),a.fixed=E),a},_parseWidth:function(a,b,c){var d=this.qtip.elements,e=lb+t(b)+"Width";return(c?v(c,e):v(d.content,e)||v(this._useTitle(a)&&d.titlebar||d.content,e)||v(d.tooltip,e))||0},_parseRadius:function(a){var b=this.qtip.elements,c=lb+t(a.y)+t(a.x)+"Radius";return eb.ie<9?0:v(this._useTitle(a)&&b.titlebar||b.content,c)||v(b.tooltip,c)||0},_invalidColour:function(a,b,c){var d=a.css(b);return!d||c&&d===a.css(c)||rb.test(d)?F:d},_parseColours:function(a){var b=this.qtip.elements,c=this.element.css("cssText",""),e=lb+t(a[a.precedance])+t(mb),f=this._useTitle(a)&&b.titlebar||b.content,g=this._invalidColour,h=[];return h[0]=g(c,nb)||g(f,nb)||g(b.content,nb)||g(b.tooltip,nb)||c.css(nb),h[1]=g(c,e,mb)||g(f,e,mb)||g(b.content,e,mb)||g(b.tooltip,e,mb)||b.tooltip.css(e),d("*",c).add(c).css("cssText",nb+":"+ob+pb+";"+lb+":0"+pb+";"),h},_calculateSize:function(a){var b,c,d,e=a.precedance===I,f=this.options.width,g=this.options.height,h="c"===a.abbrev(),i=(e?f:g)*(h?.5:1),j=Math.pow,k=Math.round,l=Math.sqrt(j(i,2)+j(g,2)),m=[this.border/i*l,this.border/g*l];return m[2]=Math.sqrt(j(m[0],2)-j(this.border,2)),m[3]=Math.sqrt(j(m[1],2)-j(this.border,2)),b=l+m[2]+m[3]+(h?0:m[0]),c=b/l,d=[k(c*f),k(c*g)],e?d:d.reverse()},_calculateTip:function(a,b,c){c=c||1,b=b||this.size;var d=b[0]*c,e=b[1]*c,f=Math.ceil(d/2),g=Math.ceil(e/2),h={br:[0,0,d,e,d,0],bl:[0,0,d,0,0,e],tr:[0,e,d,0,d,e],tl:[0,0,0,e,d,e],tc:[0,e,f,0,d,e],bc:[0,0,d,0,f,e],rc:[0,0,d,g,0,e],lc:[d,0,d,e,0,g]};return h.lt=h.br,h.rt=h.bl,h.lb=h.tr,h.rb=h.tl,h[a.abbrev()]},_drawCoords:function(a,b){a.beginPath(),a.moveTo(b[0],b[1]),a.lineTo(b[2],b[3]),a.lineTo(b[4],b[5]),a.closePath()},create:function(){var a=this.corner=(qb||eb.ie)&&this._parseCorner(this.options.corner);return(this.enabled=!!this.corner&&"c"!==this.corner.abbrev())&&(this.qtip.cache.corner=a.clone(),this.update()),this.element.toggle(this.enabled),this.corner},update:function(b,c){if(!this.enabled)return this;var e,f,g,h,i,j,k,l,m=this.qtip.elements,n=this.element,o=n.children(),p=this.options,q=this.size,r=p.mimic,s=Math.round;b||(b=this.qtip.cache.corner||this.corner),r===F?r=b:(r=new B(r),r.precedance=b.precedance,"inherit"===r.x?r.x=b.x:"inherit"===r.y?r.y=b.y:r.x===r.y&&(r[b.precedance]=b[b.precedance])),f=r.precedance,b.precedance===H?this._swapDimensions():this._resetDimensions(),e=this.color=this._parseColours(b),e[1]!==ob?(l=this.border=this._parseWidth(b,b[b.precedance]),p.border&&1>l&&!rb.test(e[1])&&(e[0]=e[1]),this.border=l=p.border!==E?p.border:l):this.border=l=0,k=this.size=this._calculateSize(b),n.css({width:k[0],height:k[1],lineHeight:k[1]+"px"}),j=b.precedance===I?[s(r.x===M?l:r.x===O?k[0]-q[0]-l:(k[0]-q[0])/2),s(r.y===L?k[1]-q[1]:0)]:[s(r.x===M?k[0]-q[0]:0),s(r.y===L?l:r.y===N?k[1]-q[1]-l:(k[1]-q[1])/2)],qb?(g=o[0].getContext("2d"),g.restore(),g.save(),g.clearRect(0,0,6e3,6e3),h=this._calculateTip(r,q,wb),i=this._calculateTip(r,this.size,wb),o.attr(J,k[0]*wb).attr(K,k[1]*wb),o.css(J,k[0]).css(K,k[1]),this._drawCoords(g,i),g.fillStyle=e[1],g.fill(),g.translate(j[0]*wb,j[1]*wb),this._drawCoords(g,h),g.fillStyle=e[0],g.fill()):(h=this._calculateTip(r),h="m"+h[0]+","+h[1]+" l"+h[2]+","+h[3]+" "+h[4]+","+h[5]+" xe",j[2]=l&&/^(r|b)/i.test(b.string())?8===eb.ie?2:1:0,o.css({coordsize:k[0]+l+" "+(k[1]+l),antialias:""+(r.string().indexOf(P)>-1),left:j[0]-j[2]*Number(f===H),top:j[1]-j[2]*Number(f===I),width:k[0]+l,height:k[1]+l}).each(function(a){var b=d(this);b[b.prop?"prop":"attr"]({coordsize:k[0]+l+" "+(k[1]+l),path:h,fillcolor:e[0],filled:!!a,stroked:!a}).toggle(!(!l&&!a)),!a&&b.html(xb("stroke",'weight="'+2*l+'px" color="'+e[1]+'" miterlimit="1000" joinstyle="miter"'))})),a.opera&&setTimeout(function(){m.tip.css({display:"inline-block",visibility:"visible"})},1),c!==F&&this.calculate(b,k)},calculate:function(a,b){if(!this.enabled)return F;var c,e,f=this,g=this.qtip.elements,h=this.element,i=this.options.offset,j=(g.tooltip.hasClass("ui-widget"),{});return a=a||this.corner,c=a.precedance,b=b||this._calculateSize(a),e=[a.x,a.y],c===H&&e.reverse(),d.each(e,function(d,e){var h,k,l;e===P?(h=c===I?M:L,j[h]="50%",j[kb+"-"+h]=-Math.round(b[c===I?0:1]/2)+i):(h=f._parseWidth(a,e,g.tooltip),k=f._parseWidth(a,e,g.content),l=f._parseRadius(a),j[e]=Math.max(-f.border,d?k:i+(l>h?l:-h)))}),j[a[c]]-=b[c===H?0:1],h.css({margin:"",top:"",bottom:"",left:"",right:""}).css(j),j},reposition:function(a,b,d){function e(a,b,c,d,e){a===R&&j.precedance===b&&k[d]&&j[c]!==P?j.precedance=j.precedance===H?I:H:a!==R&&k[d]&&(j[b]=j[b]===P?k[d]>0?d:e:j[b]===d?e:d)}function f(a,b,e){j[a]===P?p[kb+"-"+b]=o[a]=g[kb+"-"+b]-k[b]:(h=g[e]!==c?[k[b],-g[b]]:[-k[b],g[b]],(o[a]=Math.max(h[0],h[1]))>h[0]&&(d[b]-=k[b],o[b]=F),p[g[e]!==c?e:b]=o[a])}if(this.enabled){var g,h,i=b.cache,j=this.corner.clone(),k=d.adjusted,l=b.options.position.adjust.method.split(" "),m=l[0],n=l[1]||l[0],o={left:F,top:F,x:0,y:0},p={};this.corner.fixed!==E&&(e(m,H,I,M,O),e(n,I,H,L,N),j.string()===i.corner.string()||i.cornerTop===k.top&&i.cornerLeft===k.left||this.update(j,F)),g=this.calculate(j),g.right!==c&&(g.left=-g.right),g.bottom!==c&&(g.top=-g.bottom),g.user=this.offset,(o.left=m===R&&!!k.left)&&f(H,M,O),(o.top=n===R&&!!k.top)&&f(I,L,N),this.element.css(p).toggle(!(o.x&&o.y||j.x===P&&o.y||j.y===P&&o.x)),d.left-=g.left.charAt?g.user:m!==R||o.top||!o.left&&!o.top?g.left+this.border:0,d.top-=g.top.charAt?g.user:n!==R||o.left||!o.left&&!o.top?g.top+this.border:0,i.cornerLeft=k.left,i.cornerTop=k.top,i.corner=j.clone()}},destroy:function(){this.qtip._unbind(this.qtip.tooltip,this._ns),this.qtip.elements.tip&&this.qtip.elements.tip.find("*").remove().end().remove()}}),jb=S.tip=function(a){return new w(a,a.options.style.tip)},jb.initialize="render",jb.sanitize=function(a){if(a.style&&"tip"in a.style){var b=a.style.tip;"object"!=typeof b&&(b=a.style.tip={corner:b}),/string|boolean/i.test(typeof b.corner)||(b.corner=E)}},C.tip={"^position.my|style.tip.(corner|mimic|border)$":function(){this.create(),this.qtip.reposition()},"^style.tip.(height|width)$":function(a){this.size=[a.width,a.height],this.update(),this.qtip.reposition()},"^content.title|style.(classes|widget)$":function(){this.update()}},d.extend(E,z.defaults,{style:{tip:{corner:E,mimic:F,width:6,height:6,border:E,offset:0}}});var yb,zb,Ab="qtip-modal",Bb="."+Ab;zb=function(){function a(a){if(d.expr[":"].focusable)return d.expr[":"].focusable;var b,c,e,f=!isNaN(d.attr(a,"tabindex")),g=a.nodeName&&a.nodeName.toLowerCase();return"area"===g?(b=a.parentNode,c=b.name,a.href&&c&&"map"===b.nodeName.toLowerCase()?(e=d("img[usemap=#"+c+"]")[0],!!e&&e.is(":visible")):!1):/input|select|textarea|button|object/.test(g)?!a.disabled:"a"===g?a.href||f:f}function c(a){k.length<1&&a.length?a.not("body").blur():k.first().focus()}function e(a){if(i.is(":visible")){var b,e=d(a.target),h=f.tooltip,j=e.closest(X);b=j.length<1?F:parseInt(j[0].style.zIndex,10)>parseInt(h[0].style.zIndex,10),b||e.closest(X)[0]===h[0]||c(e),g=a.target===k[k.length-1]}}var f,g,h,i,j=this,k={};d.extend(j,{init:function(){return i=j.elem=d("<div />",{id:"qtip-overlay",html:"<div></div>",mousedown:function(){return F}}).hide(),d(b.body).bind("focusin"+Bb,e),d(b).bind("keydown"+Bb,function(a){f&&f.options.show.modal.escape&&27===a.keyCode&&f.hide(a)}),i.bind("click"+Bb,function(a){f&&f.options.show.modal.blur&&f.hide(a)}),j},update:function(b){f=b,k=b.options.show.modal.stealfocus!==F?b.tooltip.find("*").filter(function(){return a(this)}):[]},toggle:function(a,e,g){var k=(d(b.body),a.tooltip),l=a.options.show.modal,m=l.effect,n=e?"show":"hide",o=i.is(":visible"),p=d(Bb).filter(":visible:not(:animated)").not(k);return j.update(a),e&&l.stealfocus!==F&&c(d(":focus")),i.toggleClass("blurs",l.blur),e&&i.appendTo(b.body),i.is(":animated")&&o===e&&h!==F||!e&&p.length?j:(i.stop(E,F),d.isFunction(m)?m.call(i,e):m===F?i[n]():i.fadeTo(parseInt(g,10)||90,e?1:0,function(){e||i.hide()}),e||i.queue(function(a){i.css({left:"",top:""}),d(Bb).length||i.detach(),a()}),h=e,f.destroyed&&(f=G),j)}}),j.init()},zb=new zb,d.extend(x.prototype,{init:function(a){var b=a.tooltip;return this.options.on?(a.elements.overlay=zb.elem,b.addClass(Ab).css("z-index",z.modal_zindex+d(Bb).length),a._bind(b,["tooltipshow","tooltiphide"],function(a,c,e){var f=a.originalEvent;if(a.target===b[0])if(f&&"tooltiphide"===a.type&&/mouse(leave|enter)/.test(f.type)&&d(f.relatedTarget).closest(zb.elem[0]).length)try{a.preventDefault()}catch(g){}else(!f||f&&"tooltipsolo"!==f.type)&&this.toggle(a,"tooltipshow"===a.type,e)},this._ns,this),a._bind(b,"tooltipfocus",function(a,c){if(!a.isDefaultPrevented()&&a.target===b[0]){var e=d(Bb),f=z.modal_zindex+e.length,g=parseInt(b[0].style.zIndex,10);zb.elem[0].style.zIndex=f-1,e.each(function(){this.style.zIndex>g&&(this.style.zIndex-=1)}),e.filter("."+_).qtip("blur",a.originalEvent),b.addClass(_)[0].style.zIndex=f,zb.update(c);try{a.preventDefault()}catch(h){}}},this._ns,this),void a._bind(b,"tooltiphide",function(a){a.target===b[0]&&d(Bb).filter(":visible").not(b).last().qtip("focus",a)},this._ns,this)):this},toggle:function(a,b,c){return a&&a.isDefaultPrevented()?this:void zb.toggle(this.qtip,!!b,c)},destroy:function(){this.qtip.tooltip.removeClass(Ab),this.qtip._unbind(this.qtip.tooltip,this._ns),zb.toggle(this.qtip,F),delete this.qtip.elements.overlay}}),yb=S.modal=function(a){return new x(a,a.options.show.modal)},yb.sanitize=function(a){a.show&&("object"!=typeof a.show.modal?a.show.modal={on:!!a.show.modal}:"undefined"==typeof a.show.modal.on&&(a.show.modal.on=E))},z.modal_zindex=z.zindex-200,yb.initialize="render",C.modal={"^show.modal.(on|blur)$":function(){this.destroy(),this.init(),this.qtip.elems.overlay.toggle(this.qtip.tooltip[0].offsetWidth>0)}},d.extend(E,z.defaults,{show:{modal:{on:F,effect:E,blur:E,stealfocus:E,escape:E}}}),S.viewport=function(c,d,e,f,g,h,i){function j(a,b,c,e,f,g,h,i,j){var k=d[f],m=v[a],t=w[a],u=c===R,x=m===f?j:m===g?-j:-j/2,y=t===f?i:t===g?-i:-i/2,z=r[f]+s[f]-(o?0:n[f]),A=z-k,B=k+j-(h===J?p:q)-z,C=x-(v.precedance===a||m===v[b]?y:0)-(t===P?i/2:0);return u?(C=(m===f?1:-1)*x,d[f]+=A>0?A:B>0?-B:0,d[f]=Math.max(-n[f]+s[f],k-C,Math.min(Math.max(-n[f]+s[f]+(h===J?p:q),k+C),d[f],"center"===m?k-x:1e9))):(e*=c===Q?2:0,A>0&&(m!==f||B>0)?(d[f]-=C+e,l.invert(a,f)):B>0&&(m!==g||A>0)&&(d[f]-=(m===P?-C:C)+e,l.invert(a,g)),d[f]<r&&-d[f]>B&&(d[f]=k,l=v.clone())),d[f]-k}var k,l,m,n,o,p,q,r,s,t=e.target,u=c.elements.tooltip,v=e.my,w=e.at,x=e.adjust,y=x.method.split(" "),z=y[0],A=y[1]||y[0],B=e.viewport,C=e.container,D=c.cache,E={left:0,top:0};return B.jquery&&t[0]!==a&&t[0]!==b.body&&"none"!==x.method?(n=C.offset()||E,o="static"===C.css("position"),k="fixed"===u.css("position"),p=B[0]===a?B.width():B.outerWidth(F),q=B[0]===a?B.height():B.outerHeight(F),r={left:k?0:B.scrollLeft(),top:k?0:B.scrollTop()},s=B.offset()||E,("shift"!==z||"shift"!==A)&&(l=v.clone()),E={left:"none"!==z?j(H,I,z,x.x,M,O,J,f,h):0,top:"none"!==A?j(I,H,A,x.y,L,N,K,g,i):0},l&&D.lastClass!==(m=T+"-pos-"+l.abbrev())&&u.removeClass(c.cache.lastClass).addClass(c.cache.lastClass=m),E):E},S.polys={polygon:function(a,b){var c,d,e,f={width:0,height:0,position:{top:1e10,right:0,bottom:0,left:1e10},adjustable:F},g=0,h=[],i=1,j=1,k=0,l=0;for(g=a.length;g--;)c=[parseInt(a[--g],10),parseInt(a[g+1],10)],c[0]>f.position.right&&(f.position.right=c[0]),c[0]<f.position.left&&(f.position.left=c[0]),c[1]>f.position.bottom&&(f.position.bottom=c[1]),c[1]<f.position.top&&(f.position.top=c[1]),h.push(c);if(d=f.width=Math.abs(f.position.right-f.position.left),e=f.height=Math.abs(f.position.bottom-f.position.top),"c"===b.abbrev())f.position={left:f.position.left+f.width/2,top:f.position.top+f.height/2};else{for(;d>0&&e>0&&i>0&&j>0;)for(d=Math.floor(d/2),e=Math.floor(e/2),b.x===M?i=d:b.x===O?i=f.width-d:i+=Math.floor(d/2),b.y===L?j=e:b.y===N?j=f.height-e:j+=Math.floor(e/2),g=h.length;g--&&!(h.length<2);)k=h[g][0]-f.position.left,l=h[g][1]-f.position.top,(b.x===M&&k>=i||b.x===O&&i>=k||b.x===P&&(i>k||k>f.width-i)||b.y===L&&l>=j||b.y===N&&j>=l||b.y===P&&(j>l||l>f.height-j))&&h.splice(g,1);f.position={left:h[0][0],top:h[0][1]}}return f},rect:function(a,b,c,d){return{width:Math.abs(c-a),height:Math.abs(d-b),position:{left:Math.min(a,c),top:Math.min(b,d)}}},_angles:{tc:1.5,tr:7/4,tl:5/4,bc:.5,br:.25,bl:.75,rc:2,lc:1,c:0},ellipse:function(a,b,c,d,e){var f=S.polys._angles[e.abbrev()],g=0===f?0:c*Math.cos(f*Math.PI),h=d*Math.sin(f*Math.PI);return{width:2*c-Math.abs(g),height:2*d-Math.abs(h),position:{left:a+g,top:b+h},adjustable:F}},circle:function(a,b,c,d){return S.polys.ellipse(a,b,c,c,d)}},S.svg=function(a,c,e){for(var f,g,h,i,j,k,l,m,n,o,p,q=d(b),r=c[0],s=d(r.ownerSVGElement),t=1,u=1,v=!0;!r.getBBox;)r=r.parentNode;if(!r.getBBox||!r.parentNode)return F;f=s.attr("width")||s.width()||parseInt(s.css("width"),10),g=s.attr("height")||s.height()||parseInt(s.css("height"),10);var w=(parseInt(c.css("stroke-width"),10)||0)/2;switch(w&&(t+=w/f,u+=w/g),r.nodeName){case"ellipse":case"circle":o=S.polys.ellipse(r.cx.baseVal.value,r.cy.baseVal.value,(r.rx||r.r).baseVal.value+w,(r.ry||r.r).baseVal.value+w,e);break;case"line":case"polygon":case"polyline":for(n=r.points||[{x:r.x1.baseVal.value,y:r.y1.baseVal.value},{x:r.x2.baseVal.value,y:r.y2.baseVal.value}],o=[],m=-1,k=n.numberOfItems||n.length;++m<k;)l=n.getItem?n.getItem(m):n[m],o.push.apply(o,[l.x,l.y]);o=S.polys.polygon(o,e);break;default:o=r.getBoundingClientRect(),o={width:o.width,height:o.height,position:{left:o.left,top:o.top}},v=!1}return p=o.position,s=s[0],v&&(s.createSVGPoint&&(h=r.getScreenCTM(),n=s.createSVGPoint(),n.x=p.left,n.y=p.top,i=n.matrixTransform(h),p.left=i.x,p.top=i.y),s.viewBox&&(j=s.viewBox.baseVal)&&j.width&&j.height&&(t*=f/j.width,u*=g/j.height)),p.left+=q.scrollLeft(),p.top+=q.scrollTop(),o},S.imagemap=function(a,b,c){b.jquery||(b=d(b));var e,f,g,h,i,j=b.attr("shape").toLowerCase().replace("poly","polygon"),k=d('img[usemap="#'+b.parent("map").attr("name")+'"]'),l=d.trim(b.attr("coords")),m=l.replace(/,$/,"").split(",");if(!k.length)return F;if("polygon"===j)h=S.polys.polygon(m,c);else{if(!S.polys[j])return F;for(g=-1,i=m.length,f=[];++g<i;)f.push(parseInt(m[g],10));h=S.polys[j].apply(this,f.concat(c))}return e=k.offset(),e.left+=Math.ceil((k.outerWidth(F)-k.width())/2),e.top+=Math.ceil((k.outerHeight(F)-k.height())/2),h.position.left+=e.left,h.position.top+=e.top,h};var Cb,Db='<iframe class="qtip-bgiframe" frameborder="0" tabindex="-1" src="javascript:\'\';" style="display:block; position:absolute; z-index:-1; filter:alpha(opacity=0); -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";"></iframe>';d.extend(y.prototype,{_scroll:function(){var b=this.qtip.elements.overlay;b&&(b[0].style.top=d(a).scrollTop()+"px")},init:function(c){var e=c.tooltip;d("select, object").length<1&&(this.bgiframe=c.elements.bgiframe=d(Db).appendTo(e),c._bind(e,"tooltipmove",this.adjustBGIFrame,this._ns,this)),this.redrawContainer=d("<div/>",{id:T+"-rcontainer"}).appendTo(b.body),c.elements.overlay&&c.elements.overlay.addClass("qtipmodal-ie6fix")&&(c._bind(a,["scroll","resize"],this._scroll,this._ns,this),c._bind(e,["tooltipshow"],this._scroll,this._ns,this)),this.redraw()},adjustBGIFrame:function(){var a,b,c=this.qtip.tooltip,d={height:c.outerHeight(F),width:c.outerWidth(F)},e=this.qtip.plugins.tip,f=this.qtip.elements.tip;b=parseInt(c.css("borderLeftWidth"),10)||0,b={left:-b,top:-b},e&&f&&(a="x"===e.corner.precedance?[J,M]:[K,L],b[a[1]]-=f[a[0]]()),this.bgiframe.css(b).css(d)},redraw:function(){if(this.qtip.rendered<1||this.drawing)return this;var a,b,c,d,e=this.qtip.tooltip,f=this.qtip.options.style,g=this.qtip.options.position.container;return this.qtip.drawing=1,f.height&&e.css(K,f.height),f.width?e.css(J,f.width):(e.css(J,"").appendTo(this.redrawContainer),b=e.width(),1>b%2&&(b+=1),c=e.css("maxWidth")||"",d=e.css("minWidth")||"",a=(c+d).indexOf("%")>-1?g.width()/100:0,c=(c.indexOf("%")>-1?a:1)*parseInt(c,10)||b,d=(d.indexOf("%")>-1?a:1)*parseInt(d,10)||0,b=c+d?Math.min(Math.max(b,d),c):b,e.css(J,Math.round(b)).appendTo(g)),this.drawing=0,this},destroy:function(){this.bgiframe&&this.bgiframe.remove(),this.qtip._unbind([a,this.qtip.tooltip],this._ns)}}),Cb=S.ie6=function(a){return 6===eb.ie?new y(a):F},Cb.initialize="render",C.ie6={"^content|style$":function(){this.redraw()}}})}(window,document),function(a){a.fn.typeWatch=function(b){function c(b,c){var d=a(b.el).val();(d.length>=f.captureLength&&d.toUpperCase()!=b.text||c&&d.length>=f.captureLength)&&(b.text=d.toUpperCase(),b.cb.call(b.el,d))}function d(b){var d=b.type.toUpperCase();if(a.inArray(d,f.inputTypes)>=0){var e={timer:null,text:a(b).val().toUpperCase(),cb:f.callback,el:b,wait:f.wait};f.highlight&&a(b).focus(function(){this.select()});var g=function(b){var d=e.wait,g=!1,h=this.type.toUpperCase();"undefined"!=typeof b.keyCode&&13==b.keyCode&&"TEXTAREA"!=h&&a.inArray(h,f.inputTypes)>=0&&(d=1,g=!0);var i=function(){c(e,g)};clearTimeout(e.timer),e.timer=setTimeout(i,d)};a(b).on("keydown paste cut input",g)}}var e=["TEXT","TEXTAREA","PASSWORD","TEL","SEARCH","URL","EMAIL","DATETIME","DATE","MONTH","WEEK","TIME","DATETIME-LOCAL","NUMBER","RANGE"],f=a.extend({wait:750,callback:function(){},highlight:!0,captureLength:2,inputTypes:e},b);return this.each(function(){d(this)})}}(jQuery),function(a){function b(){var a="!@#$%^&*()+=[]\\';,/{}|\":<>?~`.-_";return a+=" "}function c(){var a="¬€£¦";return a}function d(b,c,d){b.each(function(){var b=a(this);b.bind("keyup change paste",function(a){var e="";a.originalEvent&&a.originalEvent.clipboardData&&a.originalEvent.clipboardData.getData&&(e=a.originalEvent.clipboardData.getData("text/plain")),setTimeout(function(){h(b,c,d,e)},0)}),b.bind("keypress",function(a){var e=a.charCode?a.charCode:a.which;if(!(g(e)||a.ctrlKey||a.metaKey)){var f=String.fromCharCode(e),h=b.selection(),i=h.start,j=h.end,k=b.val(),l=k.substring(0,i)+f+k.substring(j),m=c(l,d);m!=l&&a.preventDefault()}})})}function e(b,c){var d=parseFloat(a(b).val()),e=a(b);return isNaN(d)?void e.val(""):(f(c.min)&&d<c.min&&e.val(""),void(f(c.max)&&d>c.max&&e.val("")))}function f(a){return!isNaN(a)}function g(a){return a>=32?!1:10==a?!1:13==a?!1:!0}function h(a,b,c,d){var e=a.val();""==e&&d.length>0&&(e=d);var f=b(e,c);if(e!=f){var g=a.alphanum_caret();a.val(f),a.alphanum_caret(e.length==f.length+1?g-1:g)}}function i(b,c){"undefined"==typeof c&&(c=D);var d,e={};return d="string"==typeof b?F[b]:"undefined"==typeof b?{}:b,a.extend(e,c,d),"undefined"==typeof e.blacklist&&(e.blacklistSet=x(e.allow,e.disallow)),e}function j(b){var c,d={};return c="string"==typeof b?G[b]:"undefined"==typeof b?{}:b,a.extend(d,E,c),d}function k(a,b,c){return c.maxLength&&a.length>=c.maxLength?!1:c.allow.indexOf(b)>=0?!0:c.allowSpace&&" "==b?!0:c.blacklistSet.contains(b)?!1:!c.allowNumeric&&K[b]?!1:!c.allowUpper&&u(b)?!1:!c.allowLower&&v(b)?!1:!c.allowCaseless&&w(b)?!1:!c.allowLatin&&L.contains(b)?!1:c.allowOtherCharSets?!0:K[b]||L.contains(b)?!0:!1}function l(a,b,c){if(K[b])return n(a,c)?!1:p(a,c)?!1:o(a,c)?!1:q(a+b,c)?!1:r(a+b,c)?!1:!0;if(c.allowPlus&&"+"==b&&""==a)return!0;if(c.allowMinus&&"-"==b&&""==a)return!0;if(b==I&&c.allowThouSep&&A(a,b))return!0;if(b==J){if(a.indexOf(J)>=0)return!1;if(c.allowDecSep)return!0}return!1}function m(a){return a+="",a.replace(/[^0-9]/g,"").length}function n(a,b){var c=b.maxDigits;if(""==c||isNaN(c))return!1;var d=m(a);return d>=c?!0:!1}function o(a,b){var c=b.maxDecimalPlaces;if(""==c||isNaN(c))return!1;var d=a.indexOf(J);if(-1==d)return!1;var e=a.substring(d),f=m(e);return f>=c?!0:!1}function p(a,b){var c=b.maxPreDecimalPlaces;if(""==c||isNaN(c))return!1;var d=a.indexOf(J);if(d>=0)return!1;var e=m(a);return e>=c?!0:!1}function q(a,b){if(!b.max||b.max<0)return!1;var c=parseFloat(a);return c>b.max?!0:!1}function r(a,b){if(!b.min||b.min>0)return!1;var c=parseFloat(a);return c<b.min?!0:!1}function s(a,b){if("string"!=typeof a)return a;var c,d=a.split(""),e=[],f=0;for(f=0;f<d.length;f++){c=d[f];var g=e.join("");k(g,c,b)&&e.push(c)}return e.join("")}function t(a,b){if("string"!=typeof a)return a;var c,d=a.split(""),e=[],f=0;for(f=0;f<d.length;f++){c=d[f];var g=e.join("");l(g,c,b)&&e.push(c)}return e.join("")}function u(a){var b=a.toUpperCase(),c=a.toLowerCase();return a==b&&b!=c?!0:!1}function v(a){var b=a.toUpperCase(),c=a.toLowerCase();return a==c&&b!=c?!0:!1}function w(a){return a.toUpperCase()==a.toLowerCase()?!0:!1}function x(a,b){var c=new B(H+b),d=new B(a),e=c.subtract(d);return e}function y(){var a,b="0123456789".split(""),c={},d=0;for(d=0;d<b.length;d++)a=b[d],c[a]=!0;return c}function z(){var a="abcdefghijklmnopqrstuvwxyz",b=a.toUpperCase(),c=new B(a+b);return c}function A(a){if(0==a.length)return!1;var b=a.indexOf(J);if(b>=0)return!1;var c=a.indexOf(I);if(0>c)return!0;var d=a.lastIndexOf(I),e=a.length-d-1;if(3>e)return!1;var f=m(a.substring(c));return f%3>0?!1:!0}function B(a){this.map="string"==typeof a?C(a):{}}function C(a){var b,c={},d=a.split(""),e=0;for(e=0;e<d.length;e++)b=d[e],c[b]=!0;return c}a.fn.alphanum=function(a){var b=i(a),c=this;return d(c,s,b),this},a.fn.alpha=function(a){var b=i("alpha"),c=i(a,b),e=this;return d(e,s,c),this},a.fn.numeric=function(a){var b=j(a),c=this;return d(c,t,b),c.blur(function(){e(this,a)}),this};var D={allow:"",disallow:"",allowSpace:!0,allowNumeric:!0,allowUpper:!0,allowLower:!0,allowCaseless:!0,allowLatin:!0,allowOtherCharSets:!0,maxLength:0/0},E={allowPlus:!1,allowMinus:!0,allowThouSep:!0,allowDecSep:!0,allowLeadingSpaces:!1,maxDigits:0/0,maxDecimalPlaces:0/0,maxPreDecimalPlaces:0/0,max:0/0,min:0/0},F={alpha:{allowNumeric:!1},upper:{allowNumeric:!1,allowUpper:!0,allowLower:!1,allowCaseless:!0},lower:{allowNumeric:!1,allowUpper:!1,allowLower:!0,allowCaseless:!0}},G={integer:{allowPlus:!1,allowMinus:!0,allowThouSep:!1,allowDecSep:!1},positiveInteger:{allowPlus:!1,allowMinus:!1,allowThouSep:!1,allowDecSep:!1}},H=b()+c(),I=",",J=".",K=y(),L=z();B.prototype.add=function(a){var b=this.clone();for(var c in a.map)b.map[c]=!0;return b},B.prototype.subtract=function(a){var b=this.clone();for(var c in a.map)delete b.map[c];return b},B.prototype.contains=function(a){return this.map[a]?!0:!1},B.prototype.clone=function(){var a=new B;for(var b in this.map)a.map[b]=!0;return a},a.fn.alphanum.backdoorAlphaNum=function(a,b){var c=i(b);return s(a,c)},a.fn.alphanum.backdoorNumeric=function(a,b){var c=j(b);return t(a,c)},a.fn.alphanum.setNumericSeparators=function(a){1==a.thousandsSeparator.length&&1==a.decimalSeparator.length&&(I=a.thousandsSeparator,J=a.decimalSeparator)}}(jQuery),function(a){function b(a,b){if(a.createTextRange){var c=a.createTextRange();c.move("character",b),c.select()}else null!=a.selectionStart&&(a.focus(),a.setSelectionRange(b,b))}function c(a){if("selection"in document){var b=a.createTextRange();try{b.setEndPoint("EndToStart",document.selection.createRange())}catch(c){return 0}return b.text.length}return null!=a.selectionStart?a.selectionStart:void 0}a.fn.alphanum_caret=function(d,e){return"undefined"==typeof d?c(this.get(0)):this.queue(function(c){if(isNaN(d)){var f=a(this).val().indexOf(d);e===!0?f+=d.length:"undefined"!=typeof e&&(f+=e),b(this,f)}else b(this,d);c()})}}(jQuery),function(a){var b=function(a){return a?a.ownerDocument.defaultView||a.ownerDocument.parentWindow:window},c=function(b){var c=a.Range.current(b).clone(),d=a.Range(b).select(b);return c.overlaps(d)?(c.compare("START_TO_START",d)<1?(startPos=0,c.move("START_TO_START",d)):(fromElementToCurrent=d.clone(),fromElementToCurrent.move("END_TO_START",c),startPos=fromElementToCurrent.toString().length),endPos=c.compare("END_TO_END",d)>=0?d.toString().length:startPos+c.toString().length,{start:startPos,end:endPos}):null},d=function(d){var e=b(d);if(void 0!==d.selectionStart)return document.activeElement&&document.activeElement!=d&&d.selectionStart==d.selectionEnd&&0==d.selectionStart?{start:d.value.length,end:d.value.length}:{start:d.selectionStart,end:d.selectionEnd};if(e.getSelection)return c(d,e);try{if("input"==d.nodeName.toLowerCase()){var f=b(d).document.selection.createRange(),g=d.createTextRange();g.setEndPoint("EndToStart",f);var h=g.text.length;return{start:h,end:h+f.text.length}}var i=c(d,e);if(!i)return i;var j=a.Range.current().clone(),k=j.clone().collapse().range,l=j.clone().collapse(!1).range;return k.moveStart("character",-1),l.moveStart("character",-1),0!=i.startPos&&""==k.text&&(i.startPos+=2),0!=i.endPos&&""==l.text&&(i.endPos+=2),i}catch(m){return{start:d.value.length,end:d.value.length}}},e=function(a,c,d){var e=b(a);if(a.setSelectionRange)void 0===d?(a.focus(),a.setSelectionRange(c,c)):(a.select(),a.selectionStart=c,a.selectionEnd=d);else if(a.createTextRange){var f=a.createTextRange();f.moveStart("character",c),d=d||c,f.moveEnd("character",d-a.value.length),f.select()}else if(e.getSelection){var h=e.document,i=e.getSelection(),j=h.createRange(),k=[c,void 0!==d?d:c];g([a],k),j.setStart(k[0].el,k[0].count),j.setEnd(k[1].el,k[1].count),i.removeAllRanges(),i.addRange(j)}else if(e.document.body.createTextRange){var j=document.body.createTextRange();j.moveToElementText(a),j.collapse(),j.moveStart("character",c),j.moveEnd("character",void 0!==d?d:c),j.select()}},f=function(a,b,c,d){"number"==typeof c[0]&&c[0]<b&&(c[0]={el:d,count:c[0]-a}),"number"==typeof c[1]&&c[1]<=b&&(c[1]={el:d,count:c[1]-a})},g=function(a,b,c){var d,e;c=c||0;for(var h=0;a[h];h++)d=a[h],3===d.nodeType||4===d.nodeType?(e=c,c+=d.nodeValue.length,f(e,c,b,d)):8!==d.nodeType&&(c=g(d.childNodes,b,c));return c};jQuery.fn.selection=function(a,b){return void 0!==a?this.each(function(){e(this,a,b)}):d(this[0])},a.fn.selection.getCharElement=g}(jQuery),function(a){"use strict";a.redux=a.redux||{},a(document).ready(function(){a.fn.isOnScreen=function(){if(window){var b=a(window),c={top:b.scrollTop(),left:b.scrollLeft()};c.right=c.left+b.width(),c.bottom=c.top+b.height();var d=this.offset();return d.right=d.left+this.outerWidth(),d.bottom=d.top+this.outerHeight(),!(c.right<d.left||c.left>d.right||c.bottom<d.top||c.top>d.bottom)}},a.redux.checkRequired(),a.redux.initEvents(),a.redux.initQtip(),a.redux.tabCheck(),a.redux.notices(),a.redux.tabControl(),a.redux.devFunctions()}),a.redux.initEvents=function(){a(".redux-action_bar, .redux-presets-bar").on("click",function(){window.onbeforeunload=null}),a("#toplevel_page_"+redux.args.slug+" .wp-submenu a, #wp-admin-bar-"+redux.args.slug+" a.ab-item").click(function(b){if((a("#toplevel_page_"+redux.args.slug).hasClass("wp-menu-open")||a(this).hasClass("ab-item"))&&!a(this).parents("ul.ab-submenu:first").hasClass("ab-sub-secondary")){b.preventDefault();var c=a(this).attr("href").split("&tab=");return a("#"+c[1]+"_section_group_li_a").click(),a(this).parents("ul:first").find(".current").removeClass("current"),a(this).addClass("current"),a(this).parent().addClass("current"),!1}}),a('input[name="'+redux.args.opt_name+'[defaults]"]').click(function(){return confirm(redux.args.reset_confirm)?void(window.onbeforeunload=null):!1}),a('input[name="'+redux.args.opt_name+'[defaults-section]"]').click(function(){return confirm(redux.args.reset_section_confirm)?void(window.onbeforeunload=null):!1}),a(".expand_options").click(function(b){return b.preventDefault(),a.redux.expandOptions(a(this).parents(".redux-container:first")),!1}),a(".saved_notice").is(":visible")&&a(".saved_notice").slideDown(),a(document.body).on("change",".redux-field input, .redux-field textarea, .redux-field select",function(){a(this).hasClass("noUpdate")||redux_change(a(this))});var b=a("#redux-footer").height();a("#redux-sticky-padder").css({height:b}),0!==a("#redux-footer").length&&(a(window).scroll(function(){a.redux.stickyInfo()}),a(window).resize(function(){a.redux.stickyInfo()})),a(".saved_notice").delay(4e3).slideUp(),a(".redux-save").click(function(){window.onbeforeunload=null})},a.redux.checkRequired=function(){a.redux.required(),a("body").on("change",".redux-main select, .redux-main radio, .redux-main input[type=checkbox], .redux-main input[type=hidden]",function(){a.redux.check_dependencies(this)}),a("body").on("check_dependencies",function(b,c){a.redux.check_dependencies(c)}),a("td > fieldset:empty,td > div:empty").parent().parent().hide()},a.redux.initQtip=function(){if(a().qtip){var b="",c=redux.args.hints.tip_style.shadow;c===!0&&(b="qtip-shadow");var d="",e=redux.args.hints.tip_style.color;""!==e&&(d="qtip-"+e);var f="",g=redux.args.hints.tip_style.rounded;g===!0&&(f="qtip-rounded");var h="",i=redux.args.hints.tip_style.style;""!==i&&(h="qtip-"+i);var j=b+","+d+","+f+","+h;j=j.replace(/,/g," ");var k=redux.args.hints.tip_position.my,l=redux.args.hints.tip_position.at;k=a.redux.verifyPos(k.toLowerCase(),!0),l=a.redux.verifyPos(l.toLowerCase(),!1);var m=redux.args.hints.tip_effect.show.event,n=redux.args.hints.tip_effect.hide.event,o=redux.args.hints.tip_effect.show.effect,p=redux.args.hints.tip_effect.show.duration,q=redux.args.hints.tip_effect.hide.effect,r=redux.args.hints.tip_effect.hide.duration;a("div.redux-hint-qtip").each(function(){a(this).qtip({content:{text:a(this).attr("qtip-content"),title:a(this).attr("qtip-title")},show:{effect:function(){switch(o){case"slide":a(this).slideDown(p);break;case"fade":a(this).fadeIn(p);break;default:a(this).show()}},event:m},hide:{effect:function(){switch(q){case"slide":a(this).slideUp(r);break;case"fade":a(this).fadeOut(r);break;default:a(this).show(r)}},event:n},style:{classes:j},position:{my:k,at:l}})}),a("input[qtip-content]").each(function(){a(this).qtip({content:{text:a(this).attr("qtip-content"),title:a(this).attr("qtip-title")},show:"focus",hide:"blur",style:j,position:{my:k,at:l}})})}},a.redux.tabCheck=function(){a(".redux-group-tab-link-a").click(function(){var b=a(this);if(b.parent().hasClass("empty_section")&&b.parent().hasClass("hasSubSections")){var c=a(this).closest("ul").find(".redux-group-tab-link-a"),d=c.index(this);b=c.slice(d+1,d+2)}var e=b.parents(".redux-container:first"),f=b.data("rel"),g=e.find(".redux-group-tab-link-li.active:first .redux-group-tab-link-a").data("rel");if(g!==f){if(a("#currentSection").val(f),b.parents(".postbox-container:first").length||a.cookie("redux_current_tab",f,{expires:7,path:"/"}),e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").length){var h=e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").attr("id").split("_");h=h[0]}if(e.find("#toplevel_page_"+redux.args.slug+" .wp-submenu a.current").removeClass("current"),e.find("#toplevel_page_"+redux.args.slug+" .wp-submenu li.current").removeClass("current"),e.find("#toplevel_page_"+redux.args.slug+" .wp-submenu a").each(function(){var b=a(this).attr("href").split("&tab=");
|
3 |
+
(b[1]==f||b[1]==h)&&(a(this).addClass("current"),a(this).parent().addClass("current"))}),e.find("#"+g+"_section_group_li").find("#"+g+"_section_group_li").length)e.find("#"+g+"_section_group_li").addClass("activeChild"),e.find("#"+f+"_section_group_li").addClass("active").removeClass("activeChild");else if(e.find("#"+f+"_section_group_li").parents("#"+g+"_section_group_li").length||e.find("#"+g+"_section_group_li").parents("ul.subsection").find("#"+f+"_section_group_li").length)e.find("#"+f+"_section_group_li").parents("#"+g+"_section_group_li").length?e.find("#"+g+"_section_group_li").addClass("activeChild").removeClass("active"):(e.find("#"+f+"_section_group_li").addClass("active"),e.find("#"+g+"_section_group_li").removeClass("active")),e.find("#"+f+"_section_group_li").removeClass("activeChild").addClass("active");else if(e.find("#"+f+"_section_group_li").addClass("active").removeClass("activeChild").find("ul.subsection").slideDown(),e.find("#"+g+"_section_group_li").find("ul.subsection").length){e.find("#"+g+"_section_group_li").find("ul.subsection").slideUp("fast",function(){e.find("#"+g+"_section_group_li").removeClass("active").removeClass("activeChild")});var i=e.find("#"+f+"_section_group_li").parents(".hasSubSections:first");i.length>0&&(e.find("#"+f+"_section_group_li").removeClass("active"),f=i.find(".redux-group-tab-link-a:first").data("rel"),e.find("#"+f+"_section_group_li").addClass("active").removeClass("activeChild").find("ul.subsection").slideDown())}else e.find("#"+g+"_section_group_li").parents("ul.subsection").length?e.find("#"+g+"_section_group_li").parents("#"+f+"_section_group_li").length?e.find("#"+g+"_section_group_li").removeClass("active"):e.find("#"+g+"_section_group_li").parents("ul.subsection").slideUp("fast",function(){e.find("#"+g+"_section_group_li").removeClass("active"),e.find("#"+g+"_section_group_li").parents(".redux-group-tab-link-li").removeClass("active").removeClass("activeChild"),e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").addClass("activeChild").find("ul.subsection").slideDown(),e.find("#"+f+"_section_group_li").addClass("active")}):(e.find("#"+g+"_section_group_li").removeClass("active"),e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").length&&(e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").addClass("activeChild").find("ul.subsection").slideDown(),e.find("#"+f+"_section_group_li").addClass("active")));e.find("#"+g+"_section_group").hide(),e.find("#"+f+"_section_group").fadeIn(200,function(){0!==e.find("#redux-footer").length&&a.redux.stickyInfo(),a.redux.initFields()}),a("#toplevel_page_"+redux.args.slug).find(".current").removeClass("current")}});var b=decodeURI((new RegExp("tab=(.+?)(&|$)").exec(location.search)||[,""])[1]);""!==b?a.cookie("redux_current_tab_get")!==b&&(a.cookie("redux_current_tab",b,{expires:7,path:"/"}),a.cookie("redux_current_tab_get",b,{expires:7,path:"/"}),a("#"+b+"_section_group_li").click()):""!==a.cookie("redux_current_tab_get")&&a.removeCookie("redux_current_tab_get");var c=a("#"+a.cookie("redux_current_tab")+"_section_group_li_a");null===a.cookie("redux_current_tab")||"undefined"==typeof a.cookie("redux_current_tab")||0===c.length?a(".redux-container").find(".redux-group-tab-link-a:first").click():c.click()},a.redux.initFields=function(){a(".redux-field-init:visible").each(function(){var b=a(this).attr("data-type");redux.field_objects[b]&&redux.field_objects[b].init()})},a.redux.notices=function(){void 0!==redux.errors&&(a.each(redux.errors.errors,function(b,c){a.each(c.errors,function(b,c){a("#"+redux.args.opt_name+"-"+c.id).addClass("redux-field-error"),0===a("#"+redux.args.opt_name+"-"+c.id).parent().find(".redux-th-error").length&&a("#"+redux.args.opt_name+"-"+c.id).append('<div class="redux-th-error">'+c.msg+"</div>")})}),a(".redux-container").each(function(){var b=a(this),c=b.find(".redux-field-error").length;c>0&&(b.find(".redux-field-errors span").text(c),b.find(".redux-field-errors").slideDown(),b.find(".redux-group-tab").each(function(){var c=a(this).find(".redux-field-error").length;if(c>0){var d=a(this).attr("id").split("_");d=d[0],b.find('.redux-group-tab-link-a[data-key="'+d+'"]').prepend('<span class="redux-menu-error">'+c+"</span>"),b.find('.redux-group-tab-link-a[data-key="'+d+'"]').addClass("hasError");var e=b.find('.redux-group-tab-link-a[data-key="'+d+'"]').parents(".hasSubSections:first");e&&e.find(".redux-group-tab-link-a:first").addClass("hasError")}}));var d=b.find(".redux-field-warning").length;d>0&&(b.find(".redux-field-warnings span").text(d),b.find(".redux-field-warnings").slideDown(),b.find(".redux-group-tab").each(function(){var c=a(this).find(".redux-field-warning").length;if(c>0){var d=a(this).attr("id").split("_");d=d[0],b.find('.redux-group-tab-link-a[data-key="'+d+'"]').prepend('<span class="redux-menu-warning">'+total+"</span>"),b.find('.redux-group-tab-link-a[data-key="'+d+'"]').addClass("hasWarning");var e=b.find('.redux-group-tab-link-a[data-key="'+d+'"]').parents(".hasSubSections:first");e&&e.find(".redux-group-tab-link-a:first").addClass("hasWarning")}}))}))},a.redux.tabControl=function(){a(".redux-section-tabs div").hide(),a(".redux-section-tabs div:first").show(),a(".redux-section-tabs ul li:first").addClass("active"),a(".redux-section-tabs ul li a").click(function(){a(".redux-section-tabs ul li").removeClass("active"),a(this).parent().addClass("active");var b=a(this).attr("href");return a(".redux-section-tabs div").hide(),a(b).fadeIn("medium",function(){a.redux.initFields()}),!1})},a.redux.devFunctions=function(){a("#consolePrintObject").on("click",function(b){b.preventDefault(),console.log(a.parseJSON(a("#redux-object-json").html()))}),"function"==typeof jsonView&&jsonView("#redux-object-json","#redux-object-browser")},a.redux.required=function(){a.each(redux.folds,function(b,c){var d=a("#"+redux.args.opt_name+"-"+b);if(d.parents("tr:first").addClass("fold"),"hide"==c){if(d.parents("tr:first").addClass("hide"),d.hasClass("redux-container-section")){var e=a("#section-"+b);e.hasClass("redux-section-indent-start")&&(a("#section-table-"+b).hide().addClass("hide"),e.hide().addClass("hide"))}if(d.hasClass("redux-container-info")&&a("#info-"+b).hide().addClass("hide"),d.hasClass("redux-container-divide")&&a("#divide-"+b).hide().addClass("hide"),d.hasClass("redux-container-raw")){var f=d.parents().find("table#"+redux.args.opt_name+"-"+b);f.hide().addClass("hide")}}})},a.redux.get_container_value=function(b){var c=a("#"+redux.args.opt_name+"-"+b).serializeForm();return null!==c&&"object"==typeof c&&c.hasOwnProperty(redux.args.opt_name)&&(c=c[redux.args.opt_name][b]),c},a.redux.check_dependencies=function(b){if(null!==redux.required){var c=a(b),d=c.parents(".redux-field:first").data("id");if(redux.required.hasOwnProperty(d)){var e=c.parents(".redux-field-container:first"),f=e.parents("tr:first").hasClass(".hide");a.each(redux.required[d],function(b){var c=a(this),d=!1,e=a("#"+redux.args.opt_name+"-"+b),g=e.parents("tr:first");if(f||(d=a.redux.check_parents_dependencies(b)),d===!0){if(e.hasClass("redux-container-section")){var h=a("#section-"+b);h.hasClass("redux-section-indent-start")&&h.hasClass("hide")&&(a("#section-table-"+b).fadeIn(300).removeClass("hide"),h.fadeIn(300).removeClass("hide"))}if(e.hasClass("redux-container-info")&&a("#info-"+b).fadeIn(300).removeClass("hide"),e.hasClass("redux-container-divide")&&a("#divide-"+b).fadeIn(300).removeClass("hide"),e.hasClass("redux-container-raw")){var i=e.parents().find("table#"+redux.args.opt_name+"-"+b);i.fadeIn(300).removeClass("hide")}g.fadeIn(300,function(){a(this).removeClass("hide"),redux.required.hasOwnProperty(b)&&a.redux.check_dependencies(a("#"+redux.args.opt_name+"-"+b).children().first()),a.redux.initFields()}),(e.hasClass("redux-container-section")||e.hasClass("redux-container-info"))&&g.css({display:"none"})}else d===!1&&g.fadeOut(100,function(){a(this).addClass("hide"),redux.required.hasOwnProperty(b)&&a.redux.required_recursive_hide(b)});c.find("select, radio, input[type=checkbox]").trigger("change")})}}},a.redux.required_recursive_hide=function(b){var c=a("#"+redux.args.opt_name+"-"+b).parents("tr:first");c.fadeOut(50,function(){if(a(this).addClass("hide"),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-section")){var c=a("#section-"+b);c.hasClass("redux-section-indent-start")&&(a("#section-table-"+b).fadeOut(50).addClass("hide"),c.fadeOut(50).addClass("hide"))}if(a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-info")&&a("#info-"+b).fadeOut(50).addClass("hide"),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-divide")&&a("#divide-"+b).fadeOut(50).addClass("hide"),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-raw")){var d=a("#"+redux.args.opt_name+"-"+b).parents().find("table#"+redux.args.opt_name+"-"+b);d.fadeOut(50).addClass("hide")}redux.required.hasOwnProperty(b)&&a.each(redux.required[b],function(b){a.redux.required_recursive_hide(b)})})},a.redux.check_parents_dependencies=function(b){var c="";return redux.required_child.hasOwnProperty(b)?a.each(redux.required_child[b],function(b,d){if(a("#"+redux.args.opt_name+"-"+d.parent).parents("tr:first").hasClass(".hide"))c=!1;else if(c!==!1){var e=a.redux.get_container_value(d.parent);c=a.redux.check_dependencies_visibility(e,d)}}):c=!0,c},a.redux.check_dependencies_visibility=function(b,c){var d=!1,e=c.checkValue,f=c.operation;switch(f){case"=":case"equals":a.isArray(e)?-1!=a.inArray(b,e)&&(d=!0):b==e?d=!0:a.isArray(b)&&-1!=a.inArray(e,b)&&(d=!0);break;case"!=":case"not":a.isArray(e)?-1==a.inArray(b,e)&&(d=!0):b!=e?d=!0:a.isArray(b)&&-1==a.inArray(e,b)&&(d=!0);break;case">":case"greater":case"is_larger":parseFloat(b)>parseFloat(e)&&(d=!0);break;case">=":case"greater_equal":case"is_larger_equal":parseFloat(b)>=parseFloat(e)&&(d=!0);break;case"<":case"less":case"is_smaller":parseFloat(b)<parseFloat(e)&&(d=!0);break;case"<=":case"less_equal":case"is_smaller_equal":parseFloat(b)<=parseFloat(e)&&(d=!0);break;case"contains":-1!=b.toString().indexOf(e)&&(d=!0);break;case"doesnt_contain":case"not_contain":-1==b.toString().indexOf(e)&&(d=!0);break;case"is_empty_or":(""===b||b==e)&&(d=!0);break;case"not_empty_and":""!==b&&b!=e&&(d=!0);break;case"is_empty":case"empty":case"!isset":b&&""!==b&&null!==b||(d=!0);break;case"not_empty":case"!empty":case"isset":b&&""!==b&&null!==b&&(d=!0)}return d},a.redux.verifyPos=function(a,b){if(a=a.replace(/^\s+|\s+$/gm,""),""===a||-1==a.search(" "))return b===!0?"top left":"bottom right";var c=a.split(" "),d=b?"top":"bottom";("top"==c[0]||"center"==c[0]||"bottom"==c[0])&&(d=c[0]);var e=b?"left":"right";return("left"==c[1]||"center"==c[1]||"right"==c[1])&&(e=c[1]),d+" "+e},a.redux.stickyInfo=function(){var b=a("#info_bar").width()-4;a("#info_bar").isOnScreen()||a("#redux-footer-sticky").isOnScreen()?(a("#redux-sticky").removeClass("sticky-save-warn"),a("#redux-footer").css({background:"#eee",position:"inherit",bottom:"inherit",width:"inherit"}),a("#redux-sticky-padder").hide(),a("#redux-footer").removeClass("sticky-footer-fixed")):(a("#redux-sticky").addClass("sticky-save-warn"),a("#redux-footer").css({position:"fixed",bottom:"0",width:b}),a("#redux-footer").addClass("sticky-footer-fixed"),a(".redux-save-warn").css("left",a("#redux-sticky").offset().left),a("#redux-sticky-padder").show())},a.redux.expandOptions=function(b){var c=b.find(".expand_options"),d=b.find(".redux-sidebar").width()-1,e=a(".redux-group-menu .active a").data("rel")+"_section_group";return c.hasClass("expanded")?(c.removeClass("expanded"),b.find(".redux-main").removeClass("expand"),b.find(".redux-sidebar").stop().animate({"margin-left":"0px"},500),b.find(".redux-main").stop().animate({"margin-left":d},500,function(){b.find(".redux-main").attr("style","")}),b.find(".redux-group-tab").each(function(){a(this).attr("id")!==e&&a(this).fadeOut("fast")})):(c.addClass("expanded"),b.find(".redux-main").addClass("expand"),b.find(".redux-sidebar").stop().animate({"margin-left":-d-113},500),b.find(".redux-main").stop().animate({"margin-left":"-1px"},500),b.find(".redux-group-tab").fadeIn("medium",function(){a.redux.initFields()})),!1},a.redux.scaleToRatio=function(b,c,d){var e=0,f=b.attr("data-width");f||(f=b.width(),b.attr("data-width",f));var g=b.attr("data-height"),h=b.height();(!g||h>g)&&(g=h,b.attr("data-height",g),b.css("width","auto"),b.attr("data-width",b.width()),f=b.width()),f>d?(e=d/f,b.css("width",d),b.css("height",g*e),g*=e,f*=e):b.css("width","auto"),g>c?(e=c/g,b.css("height",c),b.css("width",f*e),f*=e,g*=e):b.css("height","auto");var i=(a(document.getElementById("redux-header")).height()-b.height())/2;i>0?b.css("margin-top",i):b.css("margin-top",0),a("#redux-header .redux_field_search")&&a("#redux-header .redux_field_search").css("right",a(b).width()+20)},a.redux.resizeAds=function(){var b=a("#redux-header"),c=b.find(".rAds"),d=b.height(),e=b.width()-b.find(".display_header").width()-30;a(c).find("video").each(function(){a.redux.scaleToRatio(a(this),d,e)}),a(c).find("img").each(function(){a.redux.scaleToRatio(a(this),d,e)}),a(c).find("div").each(function(){a.redux.scaleToRatio(a(this),d,e)}),"-99999px"==c.css("left")&&c.css("display","none").css("left","auto"),c.fadeIn("slow")},a(document).ready(function(){redux.rAds&&setTimeout(function(){a("#redux-header").append('<div class="rAds"></div>');var b=a("#redux-header");b.css("position","relative"),b.find(".rAds").attr("style","position:absolute; top: 6px; right: 6px; display:block !important;overflow:hidden;").css("left","-99999px"),b.find(".rAds").html(redux.rAds.replace(/<br\s?\/?>/,""));{var c=b.find(".rAds");b.height(),b.width()-b.find(".display_header").width()-30}c.find("a").css("float","right").css("line-height",b.height()+"px").css("margin-left","5px"),a(document).ajaxComplete(function(){c.find("a").hide(),setTimeout(function(){a.redux.resizeAds(),c.find("a").fadeIn()},1400),setTimeout(function(){a.redux.resizeAds()},1500),a(document).unbind("ajaxComplete")}),a(window).resize(function(){a.redux.resizeAds()})},400)})}(jQuery),jQuery.noConflict();var confirmOnPageExit=function(a){a=a||window.event;var b=redux.args.save_pending;return a&&(a.returnValue=b),window.onbeforeunload=null,b};
|
ReduxCore/extensions/customizer/extension_customizer.php
CHANGED
@@ -76,17 +76,23 @@
|
|
76 |
customize_controls_print_footer_scripts
|
77 |
*/
|
78 |
|
79 |
-
if ( !
|
80 |
-
if (
|
81 |
-
add_action( 'customize_register', array(
|
|
|
|
|
|
|
82 |
}
|
83 |
}
|
84 |
|
85 |
-
if (
|
86 |
-
if ( $pagenow == "admin-ajax.php" && $_POST['action'] == 'customize_save' ) {
|
87 |
//$this->parent->
|
88 |
}
|
89 |
-
add_action( "redux/options/{$this->parent->args['opt_name']}/options", array(
|
|
|
|
|
|
|
90 |
add_action( 'customize_save', array( $this, 'customizer_save_before' ) ); // Before save
|
91 |
add_action( 'customize_save_after', array( &$this, 'customizer_save_after' ) ); // After save
|
92 |
add_action( 'wp_head', array( $this, 'customize_preview_init' ) );
|
@@ -104,10 +110,10 @@
|
|
104 |
}
|
105 |
|
106 |
public function _override_values( $data ) {
|
107 |
-
if ( isset( $_POST['customized'] ) ) {
|
108 |
$this->orig_options = $this->parent->options;
|
109 |
$options = json_decode( stripslashes_deep( $_POST['customized'] ), true );
|
110 |
-
if( !empty( $options ) && is_array( $options ) ){
|
111 |
foreach ( $options as $key => $value ) {
|
112 |
if ( strpos( $key, $this->parent->args['opt_name'] ) !== false ) {
|
113 |
$key = str_replace( $this->parent->args['opt_name'] . '[', '', rtrim( $key, "]" ) );
|
@@ -115,9 +121,9 @@
|
|
115 |
$GLOBALS[ $this->parent->args['global_variable'] ][ $key ] = $value;
|
116 |
$this->parent->options[ $key ] = $value;
|
117 |
}
|
118 |
-
}
|
119 |
}
|
120 |
-
|
121 |
}
|
122 |
|
123 |
return $data;
|
@@ -185,7 +191,7 @@
|
|
185 |
continue;
|
186 |
}
|
187 |
}
|
188 |
-
|
189 |
// No errors please
|
190 |
if ( ! isset( $section['desc'] ) ) {
|
191 |
$section['desc'] = "";
|
@@ -200,12 +206,12 @@
|
|
200 |
if ( empty( $section['id'] ) ) {
|
201 |
$section['id'] = strtolower( str_replace( " ", "", $section['title'] ) );
|
202 |
}
|
203 |
-
|
204 |
// No title is present, let's show what section is missing a title
|
205 |
if ( ! isset( $section['title'] ) ) {
|
206 |
print_r( $section );
|
207 |
}
|
208 |
-
|
209 |
// Let's set a default priority
|
210 |
if ( empty( $section['priority'] ) ) {
|
211 |
$section['priority'] = $order['heading'];
|
@@ -220,14 +226,14 @@
|
|
220 |
|
221 |
|
222 |
foreach ( $section['fields'] as $skey => $option ) {
|
223 |
-
|
224 |
// Evaluate section permissions
|
225 |
if ( isset( $option['permissions'] ) ) {
|
226 |
if ( ! current_user_can( $option['permissions'] ) ) {
|
227 |
continue;
|
228 |
}
|
229 |
}
|
230 |
-
|
231 |
if ( isset( $option['customizer'] ) && $option['customizer'] === false ) {
|
232 |
continue;
|
233 |
}
|
@@ -261,12 +267,12 @@
|
|
261 |
}
|
262 |
|
263 |
$customSetting = array(
|
264 |
-
'default'
|
265 |
-
'type'
|
266 |
-
'capabilities'
|
267 |
//'capabilities' => $this->parent->args['page_permissions'],
|
268 |
-
'transport'
|
269 |
-
'theme_supports'
|
270 |
'sanitize_callback' => '__return_false',
|
271 |
//'sanitize_callback' => array( $this, '_field_validation' ),
|
272 |
//'sanitize_js_callback' =>array( &$parent, '_field_input' ),
|
@@ -420,14 +426,15 @@
|
|
420 |
//if( isset( $_POST['customized'] ) ) {
|
421 |
$options = json_decode( stripslashes_deep( $_POST['customized'] ), true );
|
422 |
$compiler = false;
|
423 |
-
$changed =
|
424 |
|
425 |
foreach ( $options as $key => $value ) {
|
426 |
if ( strpos( $key, $this->parent->args['opt_name'] ) !== false ) {
|
427 |
$key = str_replace( $this->parent->args['opt_name'] . '[', '', rtrim( $key, "]" ) );
|
428 |
|
429 |
if ( ! isset( $this->orig_options[ $key ] ) || $this->orig_options[ $key ] != $value || ( isset( $this->orig_options[ $key ] ) && ! empty( $this->orig_options[ $key ] ) && empty( $value ) ) ) {
|
430 |
-
$
|
|
|
431 |
if ( isset( $this->parent->compiler_fields[ $key ] ) ) {
|
432 |
$compiler = true;
|
433 |
}
|
@@ -435,21 +442,17 @@
|
|
435 |
}
|
436 |
}
|
437 |
|
438 |
-
if (
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
}
|
448 |
|
449 |
-
//}
|
450 |
-
// print_r($wp_customize);
|
451 |
-
//exit();
|
452 |
-
//return $wp_customize;
|
453 |
}
|
454 |
|
455 |
/**
|
76 |
customize_controls_print_footer_scripts
|
77 |
*/
|
78 |
|
79 |
+
if ( ! Redux_Helpers::is_customize_preview() || $pagenow == "admin-ajax.php" ) {
|
80 |
+
if ( current_user_can( $this->parent->args['page_permissions'] ) ) {
|
81 |
+
add_action( 'customize_register', array(
|
82 |
+
$this,
|
83 |
+
'_register_customizer_controls'
|
84 |
+
) ); // Create controls
|
85 |
}
|
86 |
}
|
87 |
|
88 |
+
if ( Redux_Helpers::is_customize_preview() ) {
|
89 |
+
if ( $pagenow == "admin-ajax.php" && isset( $_POST['action'] ) && $_POST['action'] == 'customize_save' ) {
|
90 |
//$this->parent->
|
91 |
}
|
92 |
+
add_action( "redux/options/{$this->parent->args['opt_name']}/options", array(
|
93 |
+
$this,
|
94 |
+
'_override_values'
|
95 |
+
), 100 );
|
96 |
add_action( 'customize_save', array( $this, 'customizer_save_before' ) ); // Before save
|
97 |
add_action( 'customize_save_after', array( &$this, 'customizer_save_after' ) ); // After save
|
98 |
add_action( 'wp_head', array( $this, 'customize_preview_init' ) );
|
110 |
}
|
111 |
|
112 |
public function _override_values( $data ) {
|
113 |
+
if ( Redux_Helpers::is_customize_preview() && isset( $_POST['customized'] ) ) {
|
114 |
$this->orig_options = $this->parent->options;
|
115 |
$options = json_decode( stripslashes_deep( $_POST['customized'] ), true );
|
116 |
+
if ( ! empty( $options ) && is_array( $options ) ) {
|
117 |
foreach ( $options as $key => $value ) {
|
118 |
if ( strpos( $key, $this->parent->args['opt_name'] ) !== false ) {
|
119 |
$key = str_replace( $this->parent->args['opt_name'] . '[', '', rtrim( $key, "]" ) );
|
121 |
$GLOBALS[ $this->parent->args['global_variable'] ][ $key ] = $value;
|
122 |
$this->parent->options[ $key ] = $value;
|
123 |
}
|
124 |
+
}
|
125 |
}
|
126 |
+
|
127 |
}
|
128 |
|
129 |
return $data;
|
191 |
continue;
|
192 |
}
|
193 |
}
|
194 |
+
|
195 |
// No errors please
|
196 |
if ( ! isset( $section['desc'] ) ) {
|
197 |
$section['desc'] = "";
|
206 |
if ( empty( $section['id'] ) ) {
|
207 |
$section['id'] = strtolower( str_replace( " ", "", $section['title'] ) );
|
208 |
}
|
209 |
+
|
210 |
// No title is present, let's show what section is missing a title
|
211 |
if ( ! isset( $section['title'] ) ) {
|
212 |
print_r( $section );
|
213 |
}
|
214 |
+
|
215 |
// Let's set a default priority
|
216 |
if ( empty( $section['priority'] ) ) {
|
217 |
$section['priority'] = $order['heading'];
|
226 |
|
227 |
|
228 |
foreach ( $section['fields'] as $skey => $option ) {
|
229 |
+
|
230 |
// Evaluate section permissions
|
231 |
if ( isset( $option['permissions'] ) ) {
|
232 |
if ( ! current_user_can( $option['permissions'] ) ) {
|
233 |
continue;
|
234 |
}
|
235 |
}
|
236 |
+
|
237 |
if ( isset( $option['customizer'] ) && $option['customizer'] === false ) {
|
238 |
continue;
|
239 |
}
|
267 |
}
|
268 |
|
269 |
$customSetting = array(
|
270 |
+
'default' => $option['default'],
|
271 |
+
'type' => 'option',
|
272 |
+
'capabilities' => 'edit_theme_options',
|
273 |
//'capabilities' => $this->parent->args['page_permissions'],
|
274 |
+
'transport' => 'refresh',
|
275 |
+
'theme_supports' => '',
|
276 |
'sanitize_callback' => '__return_false',
|
277 |
//'sanitize_callback' => array( $this, '_field_validation' ),
|
278 |
//'sanitize_js_callback' =>array( &$parent, '_field_input' ),
|
426 |
//if( isset( $_POST['customized'] ) ) {
|
427 |
$options = json_decode( stripslashes_deep( $_POST['customized'] ), true );
|
428 |
$compiler = false;
|
429 |
+
$changed = false;
|
430 |
|
431 |
foreach ( $options as $key => $value ) {
|
432 |
if ( strpos( $key, $this->parent->args['opt_name'] ) !== false ) {
|
433 |
$key = str_replace( $this->parent->args['opt_name'] . '[', '', rtrim( $key, "]" ) );
|
434 |
|
435 |
if ( ! isset( $this->orig_options[ $key ] ) || $this->orig_options[ $key ] != $value || ( isset( $this->orig_options[ $key ] ) && ! empty( $this->orig_options[ $key ] ) && empty( $value ) ) ) {
|
436 |
+
$this->parent->options[ $key ] = $value;
|
437 |
+
$changed = true;
|
438 |
if ( isset( $this->parent->compiler_fields[ $key ] ) ) {
|
439 |
$compiler = true;
|
440 |
}
|
442 |
}
|
443 |
}
|
444 |
|
445 |
+
if ( $changed ) {
|
446 |
+
$this->parent->set_options( $this->parent->options );
|
447 |
+
if ( $compiler ) {
|
448 |
+
// Have to set this to stop the output of the CSS and typography stuff.
|
449 |
+
$this->parent->no_output = true;
|
450 |
+
$this->parent->_enqueue_output();
|
451 |
+
do_action( "redux/options/{$this->parent->args['opt_name']}/compiler", $this->parent->options, $this->parent->compilerCSS );
|
452 |
+
do_action( "redux/options/{$this->args['opt_name']}/compiler/advanced", $this->parent );
|
453 |
+
}
|
454 |
}
|
455 |
|
|
|
|
|
|
|
|
|
456 |
}
|
457 |
|
458 |
/**
|
ReduxCore/framework.php
CHANGED
@@ -34,8 +34,8 @@
|
|
34 |
|
35 |
if ( ! class_exists( 'ReduxFrameworkInstances' ) ) {
|
36 |
// Instance Container
|
37 |
-
|
38 |
-
|
39 |
|
40 |
}
|
41 |
|
@@ -47,12 +47,16 @@
|
|
47 |
if ( ! class_exists( 'ReduxFramework' ) ) {
|
48 |
|
49 |
// General helper functions
|
50 |
-
|
51 |
|
52 |
// General functions
|
53 |
-
|
|
|
54 |
|
55 |
-
|
|
|
|
|
|
|
56 |
|
57 |
/**
|
58 |
* Main ReduxFramework class
|
@@ -64,7 +68,7 @@
|
|
64 |
// ATTENTION DEVS
|
65 |
// Please update the build number with each push, no matter how small.
|
66 |
// This will make for easier support when we ask users what version they are using.
|
67 |
-
public static $_version = '3.3.
|
68 |
public static $_dir;
|
69 |
public static $_url;
|
70 |
public static $_upload_dir;
|
@@ -76,11 +80,11 @@
|
|
76 |
|
77 |
public static function init() {
|
78 |
$dir = Redux_Helpers::cleanFilePath( dirname( __FILE__ ) );
|
79 |
-
|
80 |
// Windows-proof constants: replace backward by forward slashes. Thanks to: @peterbouwmeester
|
81 |
self::$_dir = trailingslashit( $dir );
|
82 |
self::$wp_content_url = trailingslashit( Redux_Helpers::cleanFilePath( ( is_ssl() ? str_replace( 'http://', 'https://', WP_CONTENT_URL ) : WP_CONTENT_URL ) ) );
|
83 |
-
|
84 |
// See if Redux is a plugin or not
|
85 |
if ( strpos( Redux_Helpers::cleanFilePath( __FILE__ ), Redux_Helpers::cleanFilePath( get_stylesheet_directory() ) ) !== false || strpos( Redux_Helpers::cleanFilePath( __FILE__ ), Redux_Helpers::cleanFilePath( get_template_directory_uri() ) ) !== false || strpos( Redux_Helpers::cleanFilePath( __FILE__ ), Redux_Helpers::cleanFilePath( WP_CONTENT_DIR . '/themes/' ) ) !== false ) {
|
86 |
self::$_is_plugin = false;
|
@@ -90,7 +94,7 @@
|
|
90 |
if ( ! function_exists( 'get_plugins' ) ) {
|
91 |
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
92 |
}
|
93 |
-
|
94 |
$is_plugin = false;
|
95 |
foreach ( get_plugins() as $key => $value ) {
|
96 |
if ( strpos( $key, 'redux-framework.php' ) !== false ) {
|
@@ -103,7 +107,7 @@
|
|
103 |
}
|
104 |
}
|
105 |
}
|
106 |
-
|
107 |
if ( self::$_is_plugin == true || self::$_as_plugin == true ) {
|
108 |
self::$_url = plugin_dir_url( __FILE__ );
|
109 |
} else {
|
@@ -120,6 +124,11 @@
|
|
120 |
self::$_url = trailingslashit( self::$wp_content_url . $relative_url );
|
121 |
}
|
122 |
}
|
|
|
|
|
|
|
|
|
|
|
123 |
}
|
124 |
|
125 |
// ::init()
|
@@ -156,6 +165,7 @@
|
|
156 |
public $typography = null; //values to generate google font CSS
|
157 |
public $import_export = null;
|
158 |
public $debug = null;
|
|
|
159 |
private $show_hints = false;
|
160 |
private $hidden_perm_fields = array(); // Hidden fields specified by 'permissions' arg.
|
161 |
private $hidden_perm_sections = array(); // Hidden sections specified by 'permissions' arg.
|
@@ -316,7 +326,7 @@
|
|
316 |
//
|
317 |
// if ( isset($_GET['page']) && ($_GET['page'] == 'redux-about' || $_GET['page'] == 'redux-getting-started' || $_GET['page'] == 'redux-credits' || $_GET['page'] == 'redux-changelog' )) {
|
318 |
// //logconsole('inc');
|
319 |
-
//
|
320 |
// } else {
|
321 |
// //logconsole('compare');
|
322 |
// if (isset($_GET['page']) && $_GET['page'] == $this->args['page_slug']) {
|
@@ -354,7 +364,7 @@
|
|
354 |
|
355 |
// Display admin notices in dev_mode
|
356 |
if ( true == $this->args['dev_mode'] ) {
|
357 |
-
|
358 |
$this->debug = new ReduxDebugObject( $this );
|
359 |
|
360 |
if ( true == $this->args['update_notice'] ) {
|
@@ -374,25 +384,23 @@
|
|
374 |
}
|
375 |
|
376 |
// Output dynamic CSS
|
377 |
-
add_action( 'wp_head', array( &$this, '_output_css' ), 150 );
|
378 |
// Frontend: Maybe enqueue dynamic CSS and Google fonts
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
|
384 |
// Login page: Maybe enqueue dynamic CSS and Google fonts
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
|
390 |
-
//
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
//}
|
396 |
|
397 |
|
398 |
add_action( 'wp_print_scripts', array( $this, 'vc_fixes' ), 100 );
|
@@ -486,6 +494,8 @@
|
|
486 |
// Initiate the compiler hook
|
487 |
'output_tag' => true,
|
488 |
// Print Output Tag
|
|
|
|
|
489 |
'transient_time' => '',
|
490 |
'default_show' => false,
|
491 |
// If true, it shows the default value
|
@@ -629,7 +639,7 @@
|
|
629 |
} // get_instance()
|
630 |
|
631 |
private function _tracking() {
|
632 |
-
|
633 |
$tracking = Redux_Tracking::get_instance();
|
634 |
$tracking->load( $this );
|
635 |
} // _tracking()
|
@@ -734,7 +744,7 @@
|
|
734 |
*
|
735 |
* @param mixed $value the value of the option being added
|
736 |
*/
|
737 |
-
|
738 |
|
739 |
$this->transients['last_save'] = time();
|
740 |
|
@@ -1160,9 +1170,9 @@
|
|
1160 |
}
|
1161 |
}
|
1162 |
|
1163 |
-
if ( $field['type'] == "sortable"
|
1164 |
$this->options_defaults[ $field['id'] ] = array();
|
1165 |
-
} elseif ($field['type'] == "image_select") {
|
1166 |
$this->options_defaults[ $field['id'] ] = '';
|
1167 |
} else {
|
1168 |
$this->options_defaults[ $field['id'] ] = $field['options'];
|
@@ -1289,7 +1299,11 @@
|
|
1289 |
public function _options_page() {
|
1290 |
$this->import_export->in_field();
|
1291 |
|
1292 |
-
if ( $this->args['menu_type'] == '
|
|
|
|
|
|
|
|
|
1293 |
$this->add_submenu(
|
1294 |
$this->args['page_parent'],
|
1295 |
$this->args['page_title'],
|
@@ -1379,7 +1393,7 @@
|
|
1379 |
$ct = wp_get_theme();
|
1380 |
$theme_data = $ct;
|
1381 |
|
1382 |
-
if ( ! is_super_admin() || ! is_admin_bar_showing() || ! $this->args['admin_bar'] ) {
|
1383 |
return;
|
1384 |
}
|
1385 |
|
@@ -1918,7 +1932,7 @@
|
|
1918 |
|
1919 |
if ( isset( $this->args['dev_mode'] ) && $this->args['dev_mode'] == true ) {
|
1920 |
|
1921 |
-
$base =
|
1922 |
$url = $base . urlencode( 'http://ads.reduxframework.com/api/index.php?js&g&1&v=2' ) . '&proxy=' . urlencode( $base );
|
1923 |
$this->localize_data['rAds'] = '<span data-id="1" class="mgv1_1"><script type="text/javascript">(function(){if (mysa_mgv1_1) return; var ma = document.createElement("script"); ma.type = "text/javascript"; ma.async = true; ma.src = "' . $url . '"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(ma, s) })();var mysa_mgv1_1=true;</script></span>';
|
1924 |
}
|
@@ -2089,30 +2103,30 @@
|
|
2089 |
|
2090 |
// Default url values for enabling hints.
|
2091 |
$dismiss = 'true';
|
2092 |
-
$s = 'Enable';
|
2093 |
|
2094 |
// Values for disabling hints.
|
2095 |
if ( 'true' == $hint_status ) {
|
2096 |
$dismiss = 'false';
|
2097 |
-
$s = 'Disable';
|
2098 |
}
|
2099 |
|
2100 |
// Make URL
|
2101 |
$url = '<a class="redux_hint_status" href="?dismiss=' . $dismiss . '&id=hints&page=' . $curPage . '&tab=' . $curTab . '">' . $s . ' hints</a>';
|
2102 |
|
2103 |
-
$event = 'moving the mouse over';
|
2104 |
if ( 'click' == $this->args['hints']['tip_effect']['show']['event'] ) {
|
2105 |
-
$event = 'clicking';
|
2106 |
}
|
2107 |
|
2108 |
// Construct message
|
2109 |
-
$msg = 'Hints are tooltips that popup when
|
2110 |
|
2111 |
// Construct hint tab
|
2112 |
$tab = array(
|
2113 |
'id' => 'redux-hint-tab',
|
2114 |
'title' => __( 'Hints', 'redux-framework' ),
|
2115 |
-
'content' =>
|
2116 |
);
|
2117 |
|
2118 |
$screen->add_help_tab( $tab );
|
@@ -2355,9 +2369,6 @@
|
|
2355 |
}
|
2356 |
}
|
2357 |
|
2358 |
-
if ( ! $display ) {
|
2359 |
-
continue;
|
2360 |
-
}
|
2361 |
|
2362 |
// DOVY! Replace $k with $section['id'] when ready
|
2363 |
/**
|
@@ -2402,10 +2413,14 @@
|
|
2402 |
}
|
2403 |
}
|
2404 |
|
2405 |
-
|
2406 |
-
|
2407 |
-
|
2408 |
-
|
|
|
|
|
|
|
|
|
2409 |
|
2410 |
$sectionIndent = false;
|
2411 |
if ( isset( $section['fields'] ) ) {
|
@@ -2414,10 +2429,6 @@
|
|
2414 |
continue; // You need a type!
|
2415 |
}
|
2416 |
|
2417 |
-
if ( isset( $field['customizer_only'] ) && $field['customizer_only'] == true ) {
|
2418 |
-
continue; // ok
|
2419 |
-
}
|
2420 |
-
|
2421 |
/**
|
2422 |
* filter 'redux/options/{opt_name}/field/{field.id}'
|
2423 |
*
|
@@ -2426,16 +2437,17 @@
|
|
2426 |
$field = apply_filters( "redux/options/{$this->args['opt_name']}/field/{$field['id']}/register", $field );
|
2427 |
|
2428 |
$display = true;
|
|
|
2429 |
if ( isset( $_GET['page'] ) && $_GET['page'] == $this->args['page_slug'] ) {
|
2430 |
if ( isset( $field['panel'] ) && $field['panel'] == false ) {
|
2431 |
$display = false;
|
2432 |
}
|
2433 |
}
|
2434 |
-
|
2435 |
-
|
2436 |
-
continue;
|
2437 |
}
|
2438 |
|
|
|
2439 |
// TODO AFTER GROUP WORKS - Remove IF statement
|
2440 |
// if ( $field['type'] == "group" && isset( $_GET['page'] ) && $_GET['page'] == $this->args['page_slug'] ) {
|
2441 |
// if ( $this->args['dev_mode'] ) {
|
@@ -2625,14 +2637,18 @@
|
|
2625 |
|
2626 |
$this->check_dependencies( $field );
|
2627 |
|
2628 |
-
|
2629 |
-
|
2630 |
-
|
2631 |
-
|
2632 |
-
|
2633 |
-
|
2634 |
-
|
2635 |
-
|
|
|
|
|
|
|
|
|
2636 |
}
|
2637 |
}
|
2638 |
}
|
@@ -2677,6 +2693,14 @@
|
|
2677 |
* @param string CSS that get sent to the compiler hook
|
2678 |
*/
|
2679 |
do_action( "redux/options/{$this->args['opt_name']}/compiler", $this->options, $this->compilerCSS, $this->transients['changed_values'] );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2680 |
|
2681 |
unset( $this->transients['run_compiler'] );
|
2682 |
$this->set_transients();
|
@@ -2779,6 +2803,15 @@
|
|
2779 |
*/
|
2780 |
public function _validate_options( $plugin_options ) {
|
2781 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2782 |
if ( ! empty( $this->hidden_perm_fields ) && is_array( $this->hidden_perm_fields ) ) {
|
2783 |
foreach ( $this->hidden_perm_fields as $id => $data ) {
|
2784 |
$plugin_options[ $id ] = $data;
|
@@ -2924,6 +2957,7 @@
|
|
2924 |
|
2925 |
$this->transients['last_save_mode'] = "normal"; // Last save mode
|
2926 |
|
|
|
2927 |
// Validate fields (if needed)
|
2928 |
$plugin_options = $this->_validate_values( $plugin_options, $this->options, $this->sections );
|
2929 |
|
@@ -3141,7 +3175,7 @@
|
|
3141 |
}
|
3142 |
if ( isset( $field['validate_callback'] ) && ( is_callable( $field['validate_callback'] ) || ( is_string( $field['validate_callback'] ) && function_exists( $field['validate_callback'] ) ) ) ) {
|
3143 |
$callback = $field['validate_callback'];
|
3144 |
-
unset($field['validate_callback']);
|
3145 |
|
3146 |
$callbackvalues = call_user_func( $callback, $field, $plugin_options[ $field['id'] ], $options[ $field['id'] ] );
|
3147 |
$plugin_options[ $field['id'] ] = $callbackvalues['value'];
|
@@ -3321,6 +3355,10 @@
|
|
3321 |
echo '<form method="post" action="' . $url . '" enctype="multipart/form-data" id="redux-form-wrapper">';
|
3322 |
echo '<input type="hidden" id="redux-compiler-hook" name="' . $this->args['opt_name'] . '[compiler]" value="" />';
|
3323 |
echo '<input type="hidden" id="currentSection" name="' . $this->args['opt_name'] . '[redux-section]" value="" />';
|
|
|
|
|
|
|
|
|
3324 |
|
3325 |
settings_fields( "{$this->args['opt_name']}_group" );
|
3326 |
|
34 |
|
35 |
if ( ! class_exists( 'ReduxFrameworkInstances' ) ) {
|
36 |
// Instance Container
|
37 |
+
require_once( dirname( __FILE__ ) . '/inc/class.redux_instances.php' );
|
38 |
+
require_once( dirname( __FILE__ ) . '/inc/lib.redux_instances.php' );
|
39 |
|
40 |
}
|
41 |
|
47 |
if ( ! class_exists( 'ReduxFramework' ) ) {
|
48 |
|
49 |
// General helper functions
|
50 |
+
require_once( dirname( __FILE__ ) . '/inc/class.redux_helpers.php' );
|
51 |
|
52 |
// General functions
|
53 |
+
require_once( dirname( __FILE__ ) . '/inc/class.redux_functions.php' );
|
54 |
+
require_once( dirname( __FILE__ ) . '/inc/class.p.php' );
|
55 |
|
56 |
+
require_once( dirname( __FILE__ ) . '/inc/class.redux_filesystem.php' );
|
57 |
+
|
58 |
+
// ThemeCheck checks
|
59 |
+
require_once( dirname( __FILE__ ) . '/inc/class.redux_themecheck.php' );
|
60 |
|
61 |
/**
|
62 |
* Main ReduxFramework class
|
68 |
// ATTENTION DEVS
|
69 |
// Please update the build number with each push, no matter how small.
|
70 |
// This will make for easier support when we ask users what version they are using.
|
71 |
+
public static $_version = '3.3.9';
|
72 |
public static $_dir;
|
73 |
public static $_url;
|
74 |
public static $_upload_dir;
|
80 |
|
81 |
public static function init() {
|
82 |
$dir = Redux_Helpers::cleanFilePath( dirname( __FILE__ ) );
|
83 |
+
|
84 |
// Windows-proof constants: replace backward by forward slashes. Thanks to: @peterbouwmeester
|
85 |
self::$_dir = trailingslashit( $dir );
|
86 |
self::$wp_content_url = trailingslashit( Redux_Helpers::cleanFilePath( ( is_ssl() ? str_replace( 'http://', 'https://', WP_CONTENT_URL ) : WP_CONTENT_URL ) ) );
|
87 |
+
|
88 |
// See if Redux is a plugin or not
|
89 |
if ( strpos( Redux_Helpers::cleanFilePath( __FILE__ ), Redux_Helpers::cleanFilePath( get_stylesheet_directory() ) ) !== false || strpos( Redux_Helpers::cleanFilePath( __FILE__ ), Redux_Helpers::cleanFilePath( get_template_directory_uri() ) ) !== false || strpos( Redux_Helpers::cleanFilePath( __FILE__ ), Redux_Helpers::cleanFilePath( WP_CONTENT_DIR . '/themes/' ) ) !== false ) {
|
90 |
self::$_is_plugin = false;
|
94 |
if ( ! function_exists( 'get_plugins' ) ) {
|
95 |
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
96 |
}
|
97 |
+
|
98 |
$is_plugin = false;
|
99 |
foreach ( get_plugins() as $key => $value ) {
|
100 |
if ( strpos( $key, 'redux-framework.php' ) !== false ) {
|
107 |
}
|
108 |
}
|
109 |
}
|
110 |
+
|
111 |
if ( self::$_is_plugin == true || self::$_as_plugin == true ) {
|
112 |
self::$_url = plugin_dir_url( __FILE__ );
|
113 |
} else {
|
124 |
self::$_url = trailingslashit( self::$wp_content_url . $relative_url );
|
125 |
}
|
126 |
}
|
127 |
+
|
128 |
+
self::$_url = apply_filters( "redux/_url", self::$_url );
|
129 |
+
self::$_dir = apply_filters( "redux/_dir", self::$_dir );
|
130 |
+
self::$_is_plugin = apply_filters( "redux/_is_plugin", self::$_is_plugin );
|
131 |
+
|
132 |
}
|
133 |
|
134 |
// ::init()
|
165 |
public $typography = null; //values to generate google font CSS
|
166 |
public $import_export = null;
|
167 |
public $debug = null;
|
168 |
+
public $no_panel = array(); // Fields that are not visible in the panel
|
169 |
private $show_hints = false;
|
170 |
private $hidden_perm_fields = array(); // Hidden fields specified by 'permissions' arg.
|
171 |
private $hidden_perm_sections = array(); // Hidden sections specified by 'permissions' arg.
|
326 |
//
|
327 |
// if ( isset($_GET['page']) && ($_GET['page'] == 'redux-about' || $_GET['page'] == 'redux-getting-started' || $_GET['page'] == 'redux-credits' || $_GET['page'] == 'redux-changelog' )) {
|
328 |
// //logconsole('inc');
|
329 |
+
// require_once( dirname( __FILE__ ) . '/inc/welcome.php' );
|
330 |
// } else {
|
331 |
// //logconsole('compare');
|
332 |
// if (isset($_GET['page']) && $_GET['page'] == $this->args['page_slug']) {
|
364 |
|
365 |
// Display admin notices in dev_mode
|
366 |
if ( true == $this->args['dev_mode'] ) {
|
367 |
+
require_once( self::$_dir . 'inc/debug.php' );
|
368 |
$this->debug = new ReduxDebugObject( $this );
|
369 |
|
370 |
if ( true == $this->args['update_notice'] ) {
|
384 |
}
|
385 |
|
386 |
// Output dynamic CSS
|
|
|
387 |
// Frontend: Maybe enqueue dynamic CSS and Google fonts
|
388 |
+
if( empty( $this->args['output_location'] ) || in_array( 'frontend', $this->args['output_location'] ) ) {
|
389 |
+
add_action( 'wp_head', array( &$this, '_output_css' ), 150 );
|
390 |
+
add_action( 'wp_enqueue_scripts', array( &$this, '_enqueue_output' ), 150 );
|
391 |
+
}
|
392 |
|
393 |
// Login page: Maybe enqueue dynamic CSS and Google fonts
|
394 |
+
if( in_array( 'login', $this->args['output_location'] ) ) {
|
395 |
+
add_action( 'login_head', array( &$this, '_output_css' ), 150 );
|
396 |
+
add_action( 'login_enqueue_scripts', array( &$this, '_enqueue_output' ), 150 );
|
397 |
+
}
|
398 |
|
399 |
+
// Admin area: Maybe enqueue dynamic CSS and Google fonts
|
400 |
+
if( in_array( 'admin', $this->args['output_location'] ) ) {
|
401 |
+
add_action( 'admin_head', array( &$this, '_output_css' ), 150 );
|
402 |
+
add_action( 'admin_enqueue_scripts', array( &$this, '_enqueue_output' ), 150 );
|
403 |
+
}
|
|
|
404 |
|
405 |
|
406 |
add_action( 'wp_print_scripts', array( $this, 'vc_fixes' ), 100 );
|
494 |
// Initiate the compiler hook
|
495 |
'output_tag' => true,
|
496 |
// Print Output Tag
|
497 |
+
'output_location' => array( 'frontend' ),
|
498 |
+
// Where the dynamic CSS will be added. Can be any combination from: 'frontend', 'login', 'admin'
|
499 |
'transient_time' => '',
|
500 |
'default_show' => false,
|
501 |
// If true, it shows the default value
|
639 |
} // get_instance()
|
640 |
|
641 |
private function _tracking() {
|
642 |
+
require_once( dirname( __FILE__ ) . '/inc/tracking.php' );
|
643 |
$tracking = Redux_Tracking::get_instance();
|
644 |
$tracking->load( $this );
|
645 |
} // _tracking()
|
744 |
*
|
745 |
* @param mixed $value the value of the option being added
|
746 |
*/
|
747 |
+
public function set_options( $value = '' ) {
|
748 |
|
749 |
$this->transients['last_save'] = time();
|
750 |
|
1170 |
}
|
1171 |
}
|
1172 |
|
1173 |
+
if ( $field['type'] == "sortable" ) {
|
1174 |
$this->options_defaults[ $field['id'] ] = array();
|
1175 |
+
} elseif ( $field['type'] == "image_select" ) {
|
1176 |
$this->options_defaults[ $field['id'] ] = '';
|
1177 |
} else {
|
1178 |
$this->options_defaults[ $field['id'] ] = $field['options'];
|
1299 |
public function _options_page() {
|
1300 |
$this->import_export->in_field();
|
1301 |
|
1302 |
+
if ( $this->args['menu_type'] == 'hidden' ) {
|
1303 |
+
|
1304 |
+
// No menu to add!
|
1305 |
+
|
1306 |
+
} else if ( $this->args['menu_type'] == 'submenu' ) {
|
1307 |
$this->add_submenu(
|
1308 |
$this->args['page_parent'],
|
1309 |
$this->args['page_title'],
|
1393 |
$ct = wp_get_theme();
|
1394 |
$theme_data = $ct;
|
1395 |
|
1396 |
+
if ( ! is_super_admin() || ! is_admin_bar_showing() || ! $this->args['admin_bar'] || $this->args['menu_type'] == 'hidden' ) {
|
1397 |
return;
|
1398 |
}
|
1399 |
|
1932 |
|
1933 |
if ( isset( $this->args['dev_mode'] ) && $this->args['dev_mode'] == true ) {
|
1934 |
|
1935 |
+
$base = admin_url('admin-ajax.php') . '?action=redux_p&url=';
|
1936 |
$url = $base . urlencode( 'http://ads.reduxframework.com/api/index.php?js&g&1&v=2' ) . '&proxy=' . urlencode( $base );
|
1937 |
$this->localize_data['rAds'] = '<span data-id="1" class="mgv1_1"><script type="text/javascript">(function(){if (mysa_mgv1_1) return; var ma = document.createElement("script"); ma.type = "text/javascript"; ma.async = true; ma.src = "' . $url . '"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(ma, s) })();var mysa_mgv1_1=true;</script></span>';
|
1938 |
}
|
2103 |
|
2104 |
// Default url values for enabling hints.
|
2105 |
$dismiss = 'true';
|
2106 |
+
$s = __( 'Enable', 'redux-framework' );
|
2107 |
|
2108 |
// Values for disabling hints.
|
2109 |
if ( 'true' == $hint_status ) {
|
2110 |
$dismiss = 'false';
|
2111 |
+
$s = __( 'Disable', 'redux-framework' );
|
2112 |
}
|
2113 |
|
2114 |
// Make URL
|
2115 |
$url = '<a class="redux_hint_status" href="?dismiss=' . $dismiss . '&id=hints&page=' . $curPage . '&tab=' . $curTab . '">' . $s . ' hints</a>';
|
2116 |
|
2117 |
+
$event = __( 'moving the mouse over', 'redux-framework' );
|
2118 |
if ( 'click' == $this->args['hints']['tip_effect']['show']['event'] ) {
|
2119 |
+
$event = __( 'clicking', 'redux-framework' );
|
2120 |
}
|
2121 |
|
2122 |
// Construct message
|
2123 |
+
$msg = sprintf( __( 'Hints are tooltips that popup when %d the hint icon, offering addition information about the field in which they appear. They can be %d d by using the link below.', 'redux-framework' ), $event, strtolower( $s ) ) . '<br/><br/>' . $url;
|
2124 |
|
2125 |
// Construct hint tab
|
2126 |
$tab = array(
|
2127 |
'id' => 'redux-hint-tab',
|
2128 |
'title' => __( 'Hints', 'redux-framework' ),
|
2129 |
+
'content' => '<p>' . $msg . '</p>'
|
2130 |
);
|
2131 |
|
2132 |
$screen->add_help_tab( $tab );
|
2369 |
}
|
2370 |
}
|
2371 |
|
|
|
|
|
|
|
2372 |
|
2373 |
// DOVY! Replace $k with $section['id'] when ready
|
2374 |
/**
|
2413 |
}
|
2414 |
}
|
2415 |
|
2416 |
+
if ( ! $display ) {
|
2417 |
+
$this->no_panel_section[ $k ] = $section;
|
2418 |
+
} else {
|
2419 |
+
add_settings_section( $this->args['opt_name'] . $k . '_section', $heading, array(
|
2420 |
+
&$this,
|
2421 |
+
'_section_desc'
|
2422 |
+
), $this->args['opt_name'] . $k . '_section_group' );
|
2423 |
+
}
|
2424 |
|
2425 |
$sectionIndent = false;
|
2426 |
if ( isset( $section['fields'] ) ) {
|
2429 |
continue; // You need a type!
|
2430 |
}
|
2431 |
|
|
|
|
|
|
|
|
|
2432 |
/**
|
2433 |
* filter 'redux/options/{opt_name}/field/{field.id}'
|
2434 |
*
|
2437 |
$field = apply_filters( "redux/options/{$this->args['opt_name']}/field/{$field['id']}/register", $field );
|
2438 |
|
2439 |
$display = true;
|
2440 |
+
|
2441 |
if ( isset( $_GET['page'] ) && $_GET['page'] == $this->args['page_slug'] ) {
|
2442 |
if ( isset( $field['panel'] ) && $field['panel'] == false ) {
|
2443 |
$display = false;
|
2444 |
}
|
2445 |
}
|
2446 |
+
if ( isset( $field['customizer_only'] ) && $field['customizer_only'] == true ) {
|
2447 |
+
//$display = false;
|
|
|
2448 |
}
|
2449 |
|
2450 |
+
|
2451 |
// TODO AFTER GROUP WORKS - Remove IF statement
|
2452 |
// if ( $field['type'] == "group" && isset( $_GET['page'] ) && $_GET['page'] == $this->args['page_slug'] ) {
|
2453 |
// if ( $this->args['dev_mode'] ) {
|
2637 |
|
2638 |
$this->check_dependencies( $field );
|
2639 |
|
2640 |
+
if ( ! $display || isset( $this->no_panel_section[ $k ] ) ) {
|
2641 |
+
$this->no_panel[] = $field['id'];
|
2642 |
+
} else {
|
2643 |
+
add_settings_field(
|
2644 |
+
"{$fieldk}_field",
|
2645 |
+
$th,
|
2646 |
+
array( &$this, '_field_input' ),
|
2647 |
+
"{$this->args['opt_name']}{$k}_section_group",
|
2648 |
+
"{$this->args['opt_name']}{$k}_section",
|
2649 |
+
$field
|
2650 |
+
); // checkbox
|
2651 |
+
}
|
2652 |
}
|
2653 |
}
|
2654 |
}
|
2693 |
* @param string CSS that get sent to the compiler hook
|
2694 |
*/
|
2695 |
do_action( "redux/options/{$this->args['opt_name']}/compiler", $this->options, $this->compilerCSS, $this->transients['changed_values'] );
|
2696 |
+
|
2697 |
+
/**
|
2698 |
+
* action 'redux/options/{opt_name}/compiler/advanced'
|
2699 |
+
*
|
2700 |
+
* @param array options
|
2701 |
+
* @param string CSS that get sent to the compiler hook, which sends the full Redux object
|
2702 |
+
*/
|
2703 |
+
do_action( "redux/options/{$this->args['opt_name']}/compiler/advanced", $this );
|
2704 |
|
2705 |
unset( $this->transients['run_compiler'] );
|
2706 |
$this->set_transients();
|
2803 |
*/
|
2804 |
public function _validate_options( $plugin_options ) {
|
2805 |
|
2806 |
+
// Save the values not in the panel
|
2807 |
+
if ( isset( $plugin_options['redux-no_panel'] ) ) {
|
2808 |
+
$keys = explode( '|', $plugin_options['redux-no_panel'] );
|
2809 |
+
foreach ( $keys as $key ) {
|
2810 |
+
$plugin_options[ $key ] = $this->options[ $key ];
|
2811 |
+
}
|
2812 |
+
unset( $plugin_options['redux-no_panel'] );
|
2813 |
+
}
|
2814 |
+
|
2815 |
if ( ! empty( $this->hidden_perm_fields ) && is_array( $this->hidden_perm_fields ) ) {
|
2816 |
foreach ( $this->hidden_perm_fields as $id => $data ) {
|
2817 |
$plugin_options[ $id ] = $data;
|
2957 |
|
2958 |
$this->transients['last_save_mode'] = "normal"; // Last save mode
|
2959 |
|
2960 |
+
|
2961 |
// Validate fields (if needed)
|
2962 |
$plugin_options = $this->_validate_values( $plugin_options, $this->options, $this->sections );
|
2963 |
|
3175 |
}
|
3176 |
if ( isset( $field['validate_callback'] ) && ( is_callable( $field['validate_callback'] ) || ( is_string( $field['validate_callback'] ) && function_exists( $field['validate_callback'] ) ) ) ) {
|
3177 |
$callback = $field['validate_callback'];
|
3178 |
+
unset( $field['validate_callback'] );
|
3179 |
|
3180 |
$callbackvalues = call_user_func( $callback, $field, $plugin_options[ $field['id'] ], $options[ $field['id'] ] );
|
3181 |
$plugin_options[ $field['id'] ] = $callbackvalues['value'];
|
3355 |
echo '<form method="post" action="' . $url . '" enctype="multipart/form-data" id="redux-form-wrapper">';
|
3356 |
echo '<input type="hidden" id="redux-compiler-hook" name="' . $this->args['opt_name'] . '[compiler]" value="" />';
|
3357 |
echo '<input type="hidden" id="currentSection" name="' . $this->args['opt_name'] . '[redux-section]" value="" />';
|
3358 |
+
if ( ! empty( $this->no_panel ) ) {
|
3359 |
+
echo '<input type="hidden" name="' . $this->args['opt_name'] . '[redux-no_panel]" value="' . implode( '|', $this->no_panel ) . '" />';
|
3360 |
+
}
|
3361 |
+
|
3362 |
|
3363 |
settings_fields( "{$this->args['opt_name']}_group" );
|
3364 |
|
ReduxCore/inc/class.p.php
ADDED
@@ -0,0 +1,292 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Redux_P {
|
4 |
+
|
5 |
+
public function __construct() {
|
6 |
+
|
7 |
+
add_action( "wp_ajax_nopriv_redux_p", array( $this, 'proxy' ) );
|
8 |
+
add_action( "wp_ajax_redux_p", array( $this, 'proxy' ) );
|
9 |
+
}
|
10 |
+
|
11 |
+
public function proxy() {
|
12 |
+
|
13 |
+
// Script: Simple PHP Proxy: Get external HTML, JSON and more!
|
14 |
+
//
|
15 |
+
// *Version: 1.6, Last updated: 1/24/2009*
|
16 |
+
//
|
17 |
+
// Project Home - http://benalman.com/projects/php-simple-proxy/
|
18 |
+
// GitHub - http://github.com/cowboy/php-simple-proxy/
|
19 |
+
// Source - http://github.com/cowboy/php-simple-proxy/raw/master/ba-simple-proxy.php
|
20 |
+
//
|
21 |
+
// About: License
|
22 |
+
//
|
23 |
+
// Copyright (c) 2010 "Cowboy" Ben Alman,
|
24 |
+
// Dual licensed under the MIT and GPL licenses.
|
25 |
+
// http://benalman.com/about/license/
|
26 |
+
//
|
27 |
+
// About: Examples
|
28 |
+
//
|
29 |
+
// This working example, complete with fully commented code, illustrates one way
|
30 |
+
// in which this PHP script can be used.
|
31 |
+
//
|
32 |
+
// Simple - http://benalman.com/code/projects/php-simple-proxy/examples/simple/
|
33 |
+
//
|
34 |
+
// About: Release History
|
35 |
+
//
|
36 |
+
// 1.6 - (1/24/2009) Now defaults to JSON mode, which can now be changed to
|
37 |
+
// native mode by specifying ?mode=native. Native and JSONP modes are
|
38 |
+
// disabled by default because of possible XSS vulnerability issues, but
|
39 |
+
// are configurable in the PHP script along with a url validation regex.
|
40 |
+
// 1.5 - (12/27/2009) Initial release
|
41 |
+
//
|
42 |
+
// Topic: GET Parameters
|
43 |
+
//
|
44 |
+
// Certain GET (query string) parameters may be passed into ba-simple-proxy.php
|
45 |
+
// to control its behavior, this is a list of these parameters.
|
46 |
+
//
|
47 |
+
// url - The remote URL resource to fetch. Any GET parameters to be passed
|
48 |
+
// through to the remote URL resource must be urlencoded in this parameter.
|
49 |
+
// mode - If mode=native, the response will be sent using the same content
|
50 |
+
// type and headers that the remote URL resource returned. If omitted, the
|
51 |
+
// response will be JSON (or JSONP). <Native requests> and <JSONP requests>
|
52 |
+
// are disabled by default, see <Configuration Options> for more information.
|
53 |
+
// callback - If specified, the response JSON will be wrapped in this named
|
54 |
+
// function call. This parameter and <JSONP requests> are disabled by
|
55 |
+
// default, see <Configuration Options> for more information.
|
56 |
+
// user_agent - This value will be sent to the remote URL request as the
|
57 |
+
// `User-Agent:` HTTP request header. If omitted, the browser user agent
|
58 |
+
// will be passed through.
|
59 |
+
// send_cookies - If send_cookies=1, all cookies will be forwarded through to
|
60 |
+
// the remote URL request.
|
61 |
+
// send_session - If send_session=1 and send_cookies=1, the SID cookie will be
|
62 |
+
// forwarded through to the remote URL request.
|
63 |
+
// full_headers - If a JSON request and full_headers=1, the JSON response will
|
64 |
+
// contain detailed header information.
|
65 |
+
// full_status - If a JSON request and full_status=1, the JSON response will
|
66 |
+
// contain detailed cURL status information, otherwise it will just contain
|
67 |
+
// the `http_code` property.
|
68 |
+
//
|
69 |
+
// Topic: POST Parameters
|
70 |
+
//
|
71 |
+
// All POST parameters are automatically passed through to the remote URL
|
72 |
+
// request.
|
73 |
+
//
|
74 |
+
// Topic: JSON requests
|
75 |
+
//
|
76 |
+
// This request will return the contents of the specified url in JSON format.
|
77 |
+
//
|
78 |
+
// Request:
|
79 |
+
//
|
80 |
+
// > ba-simple-proxy.php?url=http://example.com/
|
81 |
+
//
|
82 |
+
// Response:
|
83 |
+
//
|
84 |
+
// > { "contents": "<html>...</html>", "headers": {...}, "status": {...} }
|
85 |
+
//
|
86 |
+
// JSON object properties:
|
87 |
+
//
|
88 |
+
// contents - (String) The contents of the remote URL resource.
|
89 |
+
// headers - (Object) A hash of HTTP headers returned by the remote URL
|
90 |
+
// resource.
|
91 |
+
// status - (Object) A hash of status codes returned by cURL.
|
92 |
+
//
|
93 |
+
// Topic: JSONP requests
|
94 |
+
//
|
95 |
+
// This request will return the contents of the specified url in JSONP format
|
96 |
+
// (but only if $enable_jsonp is enabled in the PHP script).
|
97 |
+
//
|
98 |
+
// Request:
|
99 |
+
//
|
100 |
+
// > ba-simple-proxy.php?url=http://example.com/&callback=foo
|
101 |
+
//
|
102 |
+
// Response:
|
103 |
+
//
|
104 |
+
// > foo({ "contents": "<html>...</html>", "headers": {...}, "status": {...} })
|
105 |
+
//
|
106 |
+
// JSON object properties:
|
107 |
+
//
|
108 |
+
// contents - (String) The contents of the remote URL resource.
|
109 |
+
// headers - (Object) A hash of HTTP headers returned by the remote URL
|
110 |
+
// resource.
|
111 |
+
// status - (Object) A hash of status codes returned by cURL.
|
112 |
+
//
|
113 |
+
// Topic: Native requests
|
114 |
+
//
|
115 |
+
// This request will return the contents of the specified url in the format it
|
116 |
+
// was received in, including the same content-type and other headers (but only
|
117 |
+
// if $enable_native is enabled in the PHP script).
|
118 |
+
//
|
119 |
+
// Request:
|
120 |
+
//
|
121 |
+
// > ba-simple-proxy.php?url=http://example.com/&mode=native
|
122 |
+
//
|
123 |
+
// Response:
|
124 |
+
//
|
125 |
+
// > <html>...</html>
|
126 |
+
//
|
127 |
+
// Topic: Notes
|
128 |
+
//
|
129 |
+
// * Assumes magic_quotes_gpc = Off in php.ini
|
130 |
+
//
|
131 |
+
// Topic: Configuration Options
|
132 |
+
//
|
133 |
+
// These variables can be manually edited in the PHP file if necessary.
|
134 |
+
//
|
135 |
+
// $enable_jsonp - Only enable <JSONP requests> if you really need to. If you
|
136 |
+
// install this script on the same server as the page you're calling it
|
137 |
+
// from, plain JSON will work. Defaults to false.
|
138 |
+
// $enable_native - You can enable <Native requests>, but you should only do
|
139 |
+
// this if you also whitelist specific URLs using $valid_url_regex, to avoid
|
140 |
+
// possible XSS vulnerabilities. Defaults to false.
|
141 |
+
// $valid_url_regex - This regex is matched against the url parameter to
|
142 |
+
// ensure that it is valid. This setting only needs to be used if either
|
143 |
+
// $enable_jsonp or $enable_native are enabled. Defaults to '/.*/' which
|
144 |
+
// validates all URLs.
|
145 |
+
//
|
146 |
+
// ############################################################################
|
147 |
+
|
148 |
+
|
149 |
+
$_GET['mode'] = "native";
|
150 |
+
$_GET['full_headers'] = 1;
|
151 |
+
$_GET['full_status'] = 1;
|
152 |
+
$_GET['send_cookies'] = 1;
|
153 |
+
|
154 |
+
|
155 |
+
// Change these configuration options if needed, see above descriptions for info.
|
156 |
+
$enable_jsonp = false;
|
157 |
+
$enable_native = true;
|
158 |
+
$valid_url_regex = '/.*/';
|
159 |
+
|
160 |
+
// ############################################################################
|
161 |
+
$url = $_GET['url'];
|
162 |
+
|
163 |
+
if ( ! $url ) {
|
164 |
+
|
165 |
+
// Passed url not specified.
|
166 |
+
$contents = 'ERROR: url not specified';
|
167 |
+
$status = array( 'http_code' => 'ERROR' );
|
168 |
+
|
169 |
+
} else if ( ! preg_match( $valid_url_regex, $url ) ) {
|
170 |
+
|
171 |
+
// Passed url doesn't match $valid_url_regex.
|
172 |
+
$contents = 'ERROR: invalid url';
|
173 |
+
$status = array( 'http_code' => 'ERROR' );
|
174 |
+
|
175 |
+
} else {
|
176 |
+
$url = urldecode( $url );
|
177 |
+
if ( isset( $_GET['proxy'] ) ) {
|
178 |
+
$url .= '&proxy=' . $_GET['proxy'];
|
179 |
+
}
|
180 |
+
|
181 |
+
// Ad URL rewrite
|
182 |
+
if ( strpos( $url, 'http' ) === false ) {
|
183 |
+
$url = 'http:' . $url;
|
184 |
+
}
|
185 |
+
|
186 |
+
if ( isset( $_GET['callback'] ) ) {
|
187 |
+
foreach ( $_GET as $key => $value ) {
|
188 |
+
if ( in_array( $key, array( 'url', 'mode', 'full_headers', 'full_status', 'send_cookies' ) ) ) {
|
189 |
+
continue;
|
190 |
+
}
|
191 |
+
$url .= "&" . $key . '=' . $value;
|
192 |
+
}
|
193 |
+
}
|
194 |
+
|
195 |
+
|
196 |
+
$args = array(
|
197 |
+
'user-agent' => isset( $_GET['user_agent'] ) ? $_GET['user_agent'] : $_SERVER['HTTP_USER_AGENT'],
|
198 |
+
'method' => 'GET',
|
199 |
+
);
|
200 |
+
|
201 |
+
if ( isset( $_GET['send_cookies'] ) && $_GET['send_cookies'] ) {
|
202 |
+
$cookie = array();
|
203 |
+
foreach ( $_COOKIE as $key => $value ) {
|
204 |
+
$cookie[] = $key . '=' . $value;
|
205 |
+
}
|
206 |
+
if ( isset( $_GET['send_session'] ) && $_GET['send_session'] ) {
|
207 |
+
$cookie[] = SID;
|
208 |
+
}
|
209 |
+
$args['cookies'] = $cookie;
|
210 |
+
|
211 |
+
}
|
212 |
+
if ( strtolower( $_SERVER['REQUEST_METHOD'] ) == 'post' ) {
|
213 |
+
$args['body'] = $_POST;
|
214 |
+
$args['method'] = 'POST';
|
215 |
+
|
216 |
+
}
|
217 |
+
|
218 |
+
|
219 |
+
$response = wp_remote_request(
|
220 |
+
$url,
|
221 |
+
$args
|
222 |
+
);
|
223 |
+
|
224 |
+
if ( ! is_wp_error( $response ) ) {
|
225 |
+
$status = $response['response']['code'];
|
226 |
+
$contents = $response['body'];
|
227 |
+
}
|
228 |
+
|
229 |
+
}
|
230 |
+
|
231 |
+
|
232 |
+
if ( isset( $_GET['mode'] ) && $_GET['mode'] == 'native' ) {
|
233 |
+
if ( ! $enable_native ) {
|
234 |
+
$contents = 'ERROR: invalid mode';
|
235 |
+
$status = array( 'http_code' => 'ERROR' );
|
236 |
+
}
|
237 |
+
|
238 |
+
if ( isset( $response['headers']['content-type'] ) ) {
|
239 |
+
header('Content-Type: '.$response['headers']['content-type']);
|
240 |
+
}
|
241 |
+
if ( isset( $response['headers']['content-language'] ) ) {
|
242 |
+
header('Content-Language: '.$response['headers']['content-language']);
|
243 |
+
}
|
244 |
+
if ( isset( $response['headers']['set-cookie'] ) ) {
|
245 |
+
header('Set-Cookie: '.$response['headers']['set-cookie']);
|
246 |
+
}
|
247 |
+
|
248 |
+
print str_replace( 'ads.reduxframework.com', 'look.reduxframework.com', $contents );
|
249 |
+
|
250 |
+
} else {
|
251 |
+
|
252 |
+
// $data will be serialized into JSON data.
|
253 |
+
$data = array();
|
254 |
+
|
255 |
+
// Propagate all HTTP headers into the JSON data object.
|
256 |
+
if ( isset( $_GET['full_headers'] ) && $_GET['full_headers'] ) {
|
257 |
+
$data['headers'] = array();
|
258 |
+
|
259 |
+
}
|
260 |
+
|
261 |
+
// Propagate all cURL request / response info to the JSON data object.
|
262 |
+
if ( isset( $_GET['full_status'] ) && $_GET['full_status'] ) {
|
263 |
+
$data['status'] = $status;
|
264 |
+
} else {
|
265 |
+
$data['status'] = array();
|
266 |
+
$data['status']['http_code'] = $status['http_code'];
|
267 |
+
}
|
268 |
+
|
269 |
+
// Set the JSON data object contents, decoding it from JSON if possible.
|
270 |
+
$decoded_json = json_decode( $contents );
|
271 |
+
$data['contents'] = str_replace('e(window).width()', 'window.innerWidth||e(window).width()', $decoded_json ? $decoded_json : $contents);
|
272 |
+
|
273 |
+
// Generate appropriate content-type header.
|
274 |
+
|
275 |
+
$is_xhr = isset( $_SERVER['HTTP_X_REQUESTED_WITH'] ) ? strtolower( $_SERVER['HTTP_X_REQUESTED_WITH'] ) : 'xmlhttprequest';
|
276 |
+
header( 'Content-type: application/' . ( $is_xhr ? 'json' : 'x-javascript' ) );
|
277 |
+
|
278 |
+
// Get JSONP callback.
|
279 |
+
$jsonp_callback = $enable_jsonp && isset( $_GET['callback'] ) ? $_GET['callback'] : null;
|
280 |
+
|
281 |
+
// Generate JSON/JSONP string
|
282 |
+
$json = json_encode( $data );
|
283 |
+
|
284 |
+
print $jsonp_callback ? "$jsonp_callback($json)" : $json;
|
285 |
+
|
286 |
+
}
|
287 |
+
|
288 |
+
}
|
289 |
+
}
|
290 |
+
|
291 |
+
new Redux_P();
|
292 |
+
|
ReduxCore/inc/class.redux_functions.php
CHANGED
@@ -1,294 +1,294 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
/**
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
|
10 |
// Exit if accessed directly
|
11 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
12 |
-
|
13 |
-
}
|
14 |
|
15 |
// Don't duplicate me!
|
16 |
-
if ( ! class_exists( 'Redux_Functions' ) ) {
|
17 |
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
|
26 |
-
|
27 |
|
28 |
-
|
29 |
-
|
30 |
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
|
35 |
-
|
36 |
-
|
37 |
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
|
53 |
-
|
54 |
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
|
59 |
-
|
60 |
-
|
61 |
|
62 |
-
|
63 |
-
|
64 |
|
65 |
-
|
|
|
66 |
}
|
67 |
-
}
|
68 |
-
|
69 |
-
return $css;
|
70 |
-
}
|
71 |
|
72 |
-
|
73 |
-
|
74 |
-
$css = $keys . "{" . $style . '}';
|
75 |
|
76 |
-
|
77 |
-
|
|
|
78 |
|
79 |
-
|
80 |
-
|
81 |
-
*
|
82 |
-
* @since 3.2.3
|
83 |
-
* @access public
|
84 |
-
* @return void
|
85 |
-
*/
|
86 |
-
public static function initWpFilesystem() {
|
87 |
-
global $wp_filesystem;
|
88 |
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
}
|
94 |
-
}
|
95 |
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
<br/>
|
110 |
Both Wordpress and Redux require the enabling of the Apache mod_rewrite module to function properly. Please contact whomever provides support for your server and ask them to enable the mod_rewrite module',
|
111 |
-
|
112 |
-
|
113 |
-
|
|
|
114 |
}
|
115 |
}
|
116 |
-
}
|
117 |
-
|
118 |
-
/**
|
119 |
-
* verFromGit - Retrives latest Redux version from GIT
|
120 |
-
*
|
121 |
-
* @since 3.2.0
|
122 |
-
* @access private
|
123 |
-
* @return string $ver
|
124 |
-
*/
|
125 |
-
private static function verFromGit() {
|
126 |
-
// Get the raw framework.php from github
|
127 |
-
$gitpage = wp_remote_get(
|
128 |
-
'https://raw.github.com/ReduxFramework/redux-framework/master/ReduxCore/framework.php', array(
|
129 |
-
'headers' => array(
|
130 |
-
'Accept-Encoding' => ''
|
131 |
-
),
|
132 |
-
'sslverify' => true,
|
133 |
-
'timeout' => 300
|
134 |
-
) );
|
135 |
-
|
136 |
-
// Is the response code the corect one?
|
137 |
-
if ( ! is_wp_error( $gitpage ) ) {
|
138 |
-
if ( isset( $gitpage['body'] ) ) {
|
139 |
-
// Get the page text.
|
140 |
-
$body = $gitpage['body'];
|
141 |
-
|
142 |
-
// Find version line in framework.php
|
143 |
-
$needle = 'public static $_version =';
|
144 |
-
$pos = strpos( $body, $needle );
|
145 |
-
|
146 |
-
// If it's there, continue. We don't want errors if $pos = 0.
|
147 |
-
if ( $pos > 0 ) {
|
148 |
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
168 |
}
|
169 |
}
|
170 |
}
|
171 |
}
|
172 |
-
}
|
173 |
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
|
|
209 |
}
|
210 |
-
}
|
211 |
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
|
|
|
|
|
|
|
|
250 |
}
|
|
|
251 |
|
252 |
-
//
|
253 |
-
echo '<div class="' . $notice['type'] . '"><p>' . $notice['msg'] . '
|
254 |
}
|
255 |
-
} else {
|
256 |
-
|
257 |
-
// Standard notice
|
258 |
-
echo '<div class="' . $notice['type'] . '"><p>' . $notice['msg'] . '</a>.</p></div>';
|
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 |
-
}
|
1 |
<?php
|
2 |
|
3 |
+
/**
|
4 |
+
* Redux Framework Private Functions Container Class
|
5 |
+
*
|
6 |
+
* @package Redux_Framework
|
7 |
+
* @subpackage Core
|
8 |
+
*/
|
9 |
|
10 |
// Exit if accessed directly
|
11 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
12 |
+
exit;
|
13 |
+
}
|
14 |
|
15 |
// Don't duplicate me!
|
16 |
+
if ( ! class_exists( 'Redux_Functions' ) ) {
|
17 |
|
18 |
+
/**
|
19 |
+
* Redux Functions Class
|
20 |
+
* Class of useful functions that can/should be shared among all Redux files.
|
21 |
+
*
|
22 |
+
* @since 1.0.0
|
23 |
+
*/
|
24 |
+
class Redux_Functions {
|
25 |
|
26 |
+
static public $_parent;
|
27 |
|
28 |
+
public static function isMin() {
|
29 |
+
$min = '';
|
30 |
|
31 |
+
if ( false == self::$_parent->args['dev_mode'] ) {
|
32 |
+
$min = '.min';
|
33 |
+
}
|
34 |
|
35 |
+
return $min;
|
36 |
+
}
|
37 |
|
38 |
+
/**
|
39 |
+
* Parse CSS from output/compiler array
|
40 |
+
*
|
41 |
+
* @since 3.2.8
|
42 |
+
* @access private
|
43 |
+
* @return $css CSS string
|
44 |
+
*/
|
45 |
+
public static function parseCSS( $cssArray = array(), $style = '', $value = '' ) {
|
46 |
|
47 |
+
// Something wrong happened
|
48 |
+
if ( count( $cssArray ) == 0 ) {
|
49 |
+
return;
|
50 |
+
} else { //if ( count( $cssArray ) >= 1 ) {
|
51 |
+
$css = '';
|
52 |
|
53 |
+
foreach ( $cssArray as $element => $selector ) {
|
54 |
|
55 |
+
// The old way
|
56 |
+
if ( $element === 0 ) {
|
57 |
+
$css = self::theOldWay( $cssArray, $style );
|
58 |
|
59 |
+
return $css;
|
60 |
+
}
|
61 |
|
62 |
+
// New way continued
|
63 |
+
$cssStyle = $element . ':' . $value . ';';
|
64 |
|
65 |
+
$css .= $selector . '{' . $cssStyle . '}';
|
66 |
+
}
|
67 |
}
|
|
|
|
|
|
|
|
|
68 |
|
69 |
+
return $css;
|
70 |
+
}
|
|
|
71 |
|
72 |
+
private static function theOldWay( $cssArray, $style ) {
|
73 |
+
$keys = implode( ",", $cssArray );
|
74 |
+
$css = $keys . "{" . $style . '}';
|
75 |
|
76 |
+
return $css;
|
77 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
78 |
|
79 |
+
/**
|
80 |
+
* initWpFilesystem - Initialized the Wordpress filesystem, if it already isn't.
|
81 |
+
*
|
82 |
+
* @since 3.2.3
|
83 |
+
* @access public
|
84 |
+
* @return void
|
85 |
+
*/
|
86 |
+
public static function initWpFilesystem() {
|
87 |
+
global $wp_filesystem;
|
88 |
+
|
89 |
+
// Initialize the Wordpress filesystem, no more using file_put_contents function
|
90 |
+
if ( empty( $wp_filesystem ) ) {
|
91 |
+
require_once( ABSPATH . '/wp-admin/includes/file.php' );
|
92 |
+
WP_Filesystem();
|
93 |
+
}
|
94 |
}
|
|
|
95 |
|
96 |
+
/**
|
97 |
+
* modRewriteCheck - Check for the installation of apache mod_rewrite
|
98 |
+
*
|
99 |
+
* @since 3.2.3
|
100 |
+
* @access public
|
101 |
+
* @return void
|
102 |
+
*/
|
103 |
+
public static function modRewriteCheck() {
|
104 |
+
if ( function_exists( 'apache_get_modules' ) ) {
|
105 |
+
if ( ! in_array( 'mod_rewrite', apache_get_modules() ) ) {
|
106 |
+
self::$_parent->admin_notices[] = array(
|
107 |
+
'type' => 'error',
|
108 |
+
'msg' => '<strong><center>The Apache mod_rewrite module is not enabled on your server.</center></strong>
|
109 |
<br/>
|
110 |
Both Wordpress and Redux require the enabling of the Apache mod_rewrite module to function properly. Please contact whomever provides support for your server and ask them to enable the mod_rewrite module',
|
111 |
+
'id' => 'mod_rewrite_notice_',
|
112 |
+
'dismiss' => false
|
113 |
+
);
|
114 |
+
}
|
115 |
}
|
116 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
117 |
|
118 |
+
/**
|
119 |
+
* verFromGit - Retrives latest Redux version from GIT
|
120 |
+
*
|
121 |
+
* @since 3.2.0
|
122 |
+
* @access private
|
123 |
+
* @return string $ver
|
124 |
+
*/
|
125 |
+
private static function verFromGit() {
|
126 |
+
// Get the raw framework.php from github
|
127 |
+
$gitpage = wp_remote_get(
|
128 |
+
'https://raw.github.com/ReduxFramework/redux-framework/master/ReduxCore/framework.php', array(
|
129 |
+
'headers' => array(
|
130 |
+
'Accept-Encoding' => ''
|
131 |
+
),
|
132 |
+
'sslverify' => true,
|
133 |
+
'timeout' => 300
|
134 |
+
) );
|
135 |
+
|
136 |
+
// Is the response code the corect one?
|
137 |
+
if ( ! is_wp_error( $gitpage ) ) {
|
138 |
+
if ( isset( $gitpage['body'] ) ) {
|
139 |
+
// Get the page text.
|
140 |
+
$body = $gitpage['body'];
|
141 |
+
|
142 |
+
// Find version line in framework.php
|
143 |
+
$needle = 'public static $_version =';
|
144 |
+
$pos = strpos( $body, $needle );
|
145 |
+
|
146 |
+
// If it's there, continue. We don't want errors if $pos = 0.
|
147 |
+
if ( $pos > 0 ) {
|
148 |
+
|
149 |
+
// Look for the semi-colon at the end of the version line
|
150 |
+
$semi = strpos( $body, ";", $pos );
|
151 |
+
|
152 |
+
// Error avoidance. If the semi-colon is there, continue.
|
153 |
+
if ( $semi > 0 ) {
|
154 |
+
|
155 |
+
// Extract the version line
|
156 |
+
$text = substr( $body, $pos, ( $semi - $pos ) );
|
157 |
+
|
158 |
+
// Find the first quote around the veersion number.
|
159 |
+
$quote = strpos( $body, "'", $pos );
|
160 |
+
|
161 |
+
// Extract the version number
|
162 |
+
$ver = substr( $body, $quote, ( $semi - $quote ) );
|
163 |
+
|
164 |
+
// Strip off quotes.
|
165 |
+
$ver = str_replace( "'", '', $ver );
|
166 |
+
|
167 |
+
return $ver;
|
168 |
+
}
|
169 |
}
|
170 |
}
|
171 |
}
|
172 |
}
|
|
|
173 |
|
174 |
+
/**
|
175 |
+
* updateCheck - Checks for updates to Redux Framework
|
176 |
+
*
|
177 |
+
* @since 3.2.0
|
178 |
+
* @access public
|
179 |
+
*
|
180 |
+
* @param string $curVer Current version of Redux Framework
|
181 |
+
*
|
182 |
+
* @return void - Admin notice is diaplyed if new version is found
|
183 |
+
*/
|
184 |
+
public static function updateCheck( $curVer ) {
|
185 |
+
|
186 |
+
// If no cookie, check for new ver
|
187 |
+
if ( ! isset( $_COOKIE['redux_update_check'] ) ) { // || 1 == strcmp($_COOKIE['redux_update_check'], self::$_version)) {
|
188 |
+
// actual ver number from git repo
|
189 |
+
$ver = self::verFromGit();
|
190 |
+
|
191 |
+
// hour long cookie.
|
192 |
+
setcookie( "redux_update_check", $ver, time() + 3600, '/' );
|
193 |
+
} else {
|
194 |
+
|
195 |
+
// saved value from cookie. If it's different from current ver
|
196 |
+
// we can still show the update notice.
|
197 |
+
$ver = $_COOKIE['redux_update_check'];
|
198 |
+
}
|
199 |
|
200 |
+
// Set up admin notice on new version
|
201 |
+
//if ( 1 == strcmp( $ver, $curVer ) ) {
|
202 |
+
if ( version_compare( $ver, $curVer, '>' ) ) {
|
203 |
+
self::$_parent->admin_notices[] = array(
|
204 |
+
'type' => 'updated',
|
205 |
+
'msg' => '<strong>A new build of Redux is now available!</strong><br/><br/>Your version: <strong>' . $curVer . '</strong><br/>New version: <strong><span style="color: red;">' . $ver . '</span></strong><br/><br/><em>If you are not a developer, your theme/plugin author shipped with <code>dev_mode</code> on. Contact them to fix it, but in the meantime you can use our <a href="' . 'https://' . 'wordpress.org/plugins/redux-developer-mode-disabler/" target="_blank">dev_mode disabler</a>.</em><br /><br /><a href="' . 'https://' . 'github.com/ReduxFramework/redux-framework">Get it now</a> |',
|
206 |
+
'id' => 'dev_notice_' . $ver,
|
207 |
+
'dismiss' => true,
|
208 |
+
);
|
209 |
+
}
|
210 |
}
|
|
|
211 |
|
212 |
+
/**
|
213 |
+
* adminNotices - Evaluates user dismiss option for displaying admin notices
|
214 |
+
*
|
215 |
+
* @since 3.2.0
|
216 |
+
* @access public
|
217 |
+
* @return void
|
218 |
+
*/
|
219 |
+
public static function adminNotices() {
|
220 |
+
global $current_user, $pagenow;
|
221 |
+
|
222 |
+
// Check for an active admin notice array
|
223 |
+
if ( ! empty( self::$_parent->admin_notices ) ) {
|
224 |
+
|
225 |
+
// Enum admin notices
|
226 |
+
foreach ( self::$_parent->admin_notices as $notice ) {
|
227 |
+
if ( true == $notice['dismiss'] ) {
|
228 |
+
|
229 |
+
// Get user ID
|
230 |
+
$userid = $current_user->ID;
|
231 |
+
|
232 |
+
if ( ! get_user_meta( $userid, 'ignore_' . $notice['id'] ) ) {
|
233 |
+
|
234 |
+
// Check if we are on admin.php. If we are, we have
|
235 |
+
// to get the current page slug and tab, so we can
|
236 |
+
// feed it back to Wordpress. Why> admin.php cannot
|
237 |
+
// be accessed without the page parameter. We add the
|
238 |
+
// tab to return the user to the last panel they were
|
239 |
+
// on.
|
240 |
+
$pageName = '';
|
241 |
+
$curTab = '';
|
242 |
+
if ( $pagenow == 'admin.php' || $pagenow == 'themes.php' ) {
|
243 |
+
|
244 |
+
// Get the current page. To avoid errors, we'll set
|
245 |
+
// the redux page slug if the GET is empty.
|
246 |
+
$pageName = empty( $_GET['page'] ) ? '&page=' . self::$_parent->args['page_slug'] : '&page=' . $_GET['page'];
|
247 |
+
|
248 |
+
// Ditto for the current tab.
|
249 |
+
$curTab = empty( $_GET['tab'] ) ? '&tab=0' : '&tab=' . $_GET['tab'];
|
250 |
+
}
|
251 |
+
|
252 |
+
// Print the notice with the dismiss link
|
253 |
+
echo '<div class="' . $notice['type'] . '"><p>' . $notice['msg'] . ' <a href="?dismiss=true&id=' . $notice['id'] . $pageName . $curTab . '">' . __( 'Dismiss', 'redux-framework' ) . '</a>.</p></div>';
|
254 |
}
|
255 |
+
} else {
|
256 |
|
257 |
+
// Standard notice
|
258 |
+
echo '<div class="' . $notice['type'] . '"><p>' . $notice['msg'] . '</a>.</p></div>';
|
259 |
}
|
|
|
|
|
|
|
|
|
260 |
}
|
|
|
261 |
|
262 |
+
// Clear the admin notice array
|
263 |
+
self::$_parent->admin_notices = array();
|
264 |
+
}
|
265 |
}
|
|
|
266 |
|
267 |
+
/**
|
268 |
+
* dismissAdminNotice - Updates user meta to store dismiss notice preference
|
269 |
+
*
|
270 |
+
* @since 3.2.0
|
271 |
+
* @access public
|
272 |
+
* @return void
|
273 |
+
*/
|
274 |
+
public static function dismissAdminNotice() {
|
275 |
+
global $current_user;
|
276 |
+
|
277 |
+
// Verify the dismiss and id parameters are present.
|
278 |
+
if ( isset( $_GET['dismiss'] ) && isset( $_GET['id'] ) ) {
|
279 |
+
if ( 'true' == $_GET['dismiss'] || 'false' == $_GET['dismiss'] ) {
|
280 |
+
|
281 |
+
// Get the user id
|
282 |
+
$userid = $current_user->ID;
|
283 |
|
284 |
+
// Get the notice id
|
285 |
+
$id = $_GET['id'];
|
286 |
+
$val = $_GET['dismiss'];
|
287 |
|
288 |
+
// Add the dismiss request to the user meta.
|
289 |
+
update_user_meta( $userid, 'ignore_' . $id, $val );
|
290 |
+
}
|
291 |
}
|
292 |
}
|
293 |
}
|
294 |
+
}
|
|
ReduxCore/inc/class.redux_helpers.php
CHANGED
@@ -16,6 +16,12 @@ if ( ! class_exists( 'Redux_Helpers' ) ) {
|
|
16 |
*/
|
17 |
class Redux_Helpers {
|
18 |
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
public static function tabFromField( $parent, $field ) {
|
20 |
foreach ( $parent->sections as $k => $section ) {
|
21 |
if ( ! isset( $section['title'] ) ) {
|
16 |
*/
|
17 |
class Redux_Helpers {
|
18 |
|
19 |
+
public static function is_customize_preview() {
|
20 |
+
global $wp_customize;
|
21 |
+
|
22 |
+
return is_a( $wp_customize, 'WP_Customize_Manager' ) && $wp_customize->is_preview();
|
23 |
+
}
|
24 |
+
|
25 |
public static function tabFromField( $parent, $field ) {
|
26 |
foreach ( $parent->sections as $k => $section ) {
|
27 |
if ( ! isset( $section['title'] ) ) {
|
ReduxCore/inc/class.redux_themecheck.php
ADDED
@@ -0,0 +1,123 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Exit if accessed directly
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
5 |
+
exit;
|
6 |
+
}
|
7 |
+
|
8 |
+
/**
|
9 |
+
* I got tired of answering ThemeCheck issues. This will resolve them all.
|
10 |
+
*
|
11 |
+
* @package Redux_Framework
|
12 |
+
* @subpackage Redux_ThemeCheck
|
13 |
+
* @author Dovy Paukstys
|
14 |
+
*/
|
15 |
+
|
16 |
+
// Don't duplicate me!
|
17 |
+
if ( ! class_exists( 'Redux_ThemeCheck' ) ) {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Redux Helpers Class
|
21 |
+
* Class of useful functions that can/should be shared among all Redux files.
|
22 |
+
*
|
23 |
+
* @since 1.0.0
|
24 |
+
*/
|
25 |
+
class Redux_ThemeCheck {
|
26 |
+
|
27 |
+
public $dir;
|
28 |
+
|
29 |
+
public function __construct() {
|
30 |
+
|
31 |
+
if ( isset( $_GET['page'] ) && $_GET['page'] == "themecheck" ) {
|
32 |
+
add_action( 'admin_notices', array( $this, 'themeCheckExits' ) );
|
33 |
+
}
|
34 |
+
|
35 |
+
|
36 |
+
}
|
37 |
+
|
38 |
+
public function themeCheckExits() {
|
39 |
+
if ( function_exists( 'themecheck_add_page' ) ) {
|
40 |
+
$this->load();
|
41 |
+
}
|
42 |
+
}
|
43 |
+
|
44 |
+
public function load() {
|
45 |
+
|
46 |
+
$redux = new ReduxFramework();
|
47 |
+
$redux->init();
|
48 |
+
|
49 |
+
|
50 |
+
|
51 |
+
//if ( ! empty( $redux ) ) {
|
52 |
+
|
53 |
+
|
54 |
+
$dir = ReduxFramework::$_dir . '../';
|
55 |
+
|
56 |
+
if ( isset( $_POST['themename'] ) && ! empty( $_POST['themename'] ) ) {
|
57 |
+
if ( strpos( $dir, $_POST['themename'] ) !== false ) {
|
58 |
+
?>
|
59 |
+
<div class="updated">
|
60 |
+
<p><?php
|
61 |
+
echo sprintf( __( 'The theme you are testing has %s embedded. We invite you to read the %sTheme-Check Documentation%s to understand some warnings you will see because of Redux.', 'redux-framework' ), '<a href="http://reduxframework.com" target="_blank">Redux Framework</a>', '<a href="http://docs.reduxframework.com/core/theme-check/">', '</a>' );
|
62 |
+
?>
|
63 |
+
</div><?php
|
64 |
+
}
|
65 |
+
}
|
66 |
+
|
67 |
+
if ( ! ReduxFramework::$_is_plugin ) {
|
68 |
+
$errors = array();
|
69 |
+
|
70 |
+
if ( file_exists( $dir . '.tx' ) ) {
|
71 |
+
$errors[] = ".tx/";
|
72 |
+
}
|
73 |
+
if ( file_exists( $dir . 'bin' ) ) {
|
74 |
+
$errors[] = "bin/";
|
75 |
+
}
|
76 |
+
if ( file_exists( $dir . 'tests' ) ) {
|
77 |
+
$errors[] = "tests/";
|
78 |
+
}
|
79 |
+
if ( file_exists( $dir . '.gitignore' ) ) {
|
80 |
+
$errors[] = ".gitignore";
|
81 |
+
}
|
82 |
+
|
83 |
+
if ( file_exists( $dir . '.git' ) ) {
|
84 |
+
$errors[] = ".git/";
|
85 |
+
}
|
86 |
+
if ( file_exists( $dir . 'node_modules' ) ) {
|
87 |
+
$errors[] = "node_modules/";
|
88 |
+
}
|
89 |
+
if ( file_exists( $dir . '.travis.yml' ) ) {
|
90 |
+
$errors[] = ".travis.yml";
|
91 |
+
}
|
92 |
+
if ( file_exists( $dir . 'bootstrap_tests.php' ) ) {
|
93 |
+
$errors[] = "bootstrap_tests.php";
|
94 |
+
}
|
95 |
+
if ( file_exists( $dir . 'phpunit.xml' ) ) {
|
96 |
+
$errors[] = "phpunit.xml";
|
97 |
+
}
|
98 |
+
if ( file_exists( $dir . '.ds_store' ) ) {
|
99 |
+
$errors[] = ".ds_store";
|
100 |
+
}
|
101 |
+
if ( file_exists( $dir . 'codestyles' ) ) {
|
102 |
+
$errors[] = "codestyles/";
|
103 |
+
}
|
104 |
+
|
105 |
+
if ( ! empty( $errors ) ) {
|
106 |
+
?>
|
107 |
+
<div class="error">
|
108 |
+
<p><?php
|
109 |
+
_e( 'The following directories & files are still located in your <strong>Redux</strong> directory. They may cause errors in Theme-Check.', 'redux-framework' );
|
110 |
+
echo '<br /><ul style="margin-left:15px;">';
|
111 |
+
foreach ( $errors as $error ) {
|
112 |
+
echo '<li><strong>~/' . $error . '</strong></li>';
|
113 |
+
}
|
114 |
+
?>
|
115 |
+
</ul></div><?php
|
116 |
+
}
|
117 |
+
}
|
118 |
+
|
119 |
+
}
|
120 |
+
}
|
121 |
+
|
122 |
+
new Redux_ThemeCheck();
|
123 |
+
}
|
ReduxCore/inc/fields/color_rgba/field_color_rgba.php
CHANGED
@@ -64,7 +64,7 @@
|
|
64 |
|
65 |
$this->value = wp_parse_args( $this->value, $defaults );
|
66 |
|
67 |
-
echo '<input data-id="' . $this->field['id'] . '" name="' . $this->field['name'] . $this->field['name_suffix'] . '[color]' . '" id="' . $this->field['id'] . '-color" class="redux-color_rgba redux-color_rgba-init ' . $this->field['class'] . '" type="text" value="' . $this->value['color'] . '" data-default-color="' . $this->field['default']['color'] . '" data-defaultvalue="' . $this->field['default']['color'] . '" data-opacity="' . $this->value['alpha'] . '" />';
|
68 |
echo '<input data-id="' . $this->field['id'] . '-alpha" name="' . $this->field['name'] . $this->field['name_suffix'] . '[alpha]' . '" id="' . $this->field['id'] . '-alpha" type="hidden" value="' . $this->value['alpha'] . '" />';
|
69 |
|
70 |
if ( ! isset( $this->field['transparent'] ) || $this->field['transparent'] !== false ) {
|
@@ -142,4 +142,4 @@
|
|
142 |
);
|
143 |
}
|
144 |
}
|
145 |
-
}
|
64 |
|
65 |
$this->value = wp_parse_args( $this->value, $defaults );
|
66 |
|
67 |
+
echo '<input data-id="' . $this->field['id'] . '" name="' . $this->field['name'] . $this->field['name_suffix'] . '[color]' . '" id="' . $this->field['id'] . '-color" class="redux-color_rgba redux-color_rgba-init ' . $this->field['class'] . '" type="text" value="' . $this->value['color'] . '" data-default-color="' . ( isset( $this->field['default']['color'] ) ? $this->field['default']['color'] : "" ) . '" data-defaultvalue="' . ( isset( $this->field['default']['color'] ) ? $this->field['default']['color'] : "" ) . '" data-opacity="' . $this->value['alpha'] . '" />';
|
68 |
echo '<input data-id="' . $this->field['id'] . '-alpha" name="' . $this->field['name'] . $this->field['name_suffix'] . '[alpha]' . '" id="' . $this->field['id'] . '-alpha" type="hidden" value="' . $this->value['alpha'] . '" />';
|
69 |
|
70 |
if ( ! isset( $this->field['transparent'] ) || $this->field['transparent'] !== false ) {
|
142 |
);
|
143 |
}
|
144 |
}
|
145 |
+
}
|
ReduxCore/inc/fields/raw/field_raw.php
CHANGED
@@ -49,7 +49,7 @@
|
|
49 |
echo '<fieldset id="' . $this->parent->args['opt_name'] . '-' . $this->field['id'] . '" class="redux-field redux-container-' . $this->field['type'] . ' ' . $this->field['class'] . '" data-id="' . $this->field['id'] . '">';
|
50 |
|
51 |
if ( ! empty( $this->field['include'] ) && file_exists( $this->field['include'] ) ) {
|
52 |
-
|
53 |
}
|
54 |
|
55 |
if ( ! empty( $this->field['content'] ) && isset( $this->field['content'] ) ) {
|
49 |
echo '<fieldset id="' . $this->parent->args['opt_name'] . '-' . $this->field['id'] . '" class="redux-field redux-container-' . $this->field['type'] . ' ' . $this->field['class'] . '" data-id="' . $this->field['id'] . '">';
|
50 |
|
51 |
if ( ! empty( $this->field['include'] ) && file_exists( $this->field['include'] ) ) {
|
52 |
+
require_once( $this->field['include'] );
|
53 |
}
|
54 |
|
55 |
if ( ! empty( $this->field['content'] ) && isset( $this->field['content'] ) ) {
|
ReduxCore/inc/fields/slider/field_slider.php
CHANGED
@@ -310,7 +310,7 @@
|
|
310 |
value="' . $valOne . '"
|
311 |
class="redux-slider-input redux-slider-input-one-' . $fieldID . ' ' . $this->field['class'] . '"/>';
|
312 |
|
313 |
-
|
314 |
} elseif ( $this->display_label == $this->field['display_value'] ) {
|
315 |
$showLabel = true;
|
316 |
|
@@ -321,7 +321,7 @@
|
|
321 |
name="' . $nameOne . '">
|
322 |
</div>';
|
323 |
|
324 |
-
|
325 |
} elseif ( $this->display_select == $this->field['display_value'] ) {
|
326 |
$showSelect = true;
|
327 |
|
310 |
value="' . $valOne . '"
|
311 |
class="redux-slider-input redux-slider-input-one-' . $fieldID . ' ' . $this->field['class'] . '"/>';
|
312 |
|
313 |
+
// LABEL output
|
314 |
} elseif ( $this->display_label == $this->field['display_value'] ) {
|
315 |
$showLabel = true;
|
316 |
|
321 |
name="' . $nameOne . '">
|
322 |
</div>';
|
323 |
|
324 |
+
// SELECT output
|
325 |
} elseif ( $this->display_select == $this->field['display_value'] ) {
|
326 |
$showSelect = true;
|
327 |
|
ReduxCore/inc/fields/typography/field_typography.php
CHANGED
@@ -687,6 +687,15 @@
|
|
687 |
$value = "normal";
|
688 |
}
|
689 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
690 |
if ( $key == "google" || $key == "subsets" || $key == "font-backup" || empty( $value ) ) {
|
691 |
continue;
|
692 |
}
|
@@ -728,6 +737,7 @@
|
|
728 |
}
|
729 |
}
|
730 |
}
|
|
|
731 |
// Google only stuff!
|
732 |
if ( ! empty( $font['font-family'] ) && ! empty( $this->field['google'] ) && filter_var( $this->field['google'], FILTER_VALIDATE_BOOLEAN ) ) {
|
733 |
|
687 |
$value = "normal";
|
688 |
}
|
689 |
|
690 |
+
if ($key == 'font-weight' && $this->field['font-weight'] == false) {
|
691 |
+
continue;
|
692 |
+
}
|
693 |
+
|
694 |
+
if ($key == 'font-style' && $this->field['font-style'] == false) {
|
695 |
+
continue;
|
696 |
+
}
|
697 |
+
|
698 |
+
|
699 |
if ( $key == "google" || $key == "subsets" || $key == "font-backup" || empty( $value ) ) {
|
700 |
continue;
|
701 |
}
|
737 |
}
|
738 |
}
|
739 |
}
|
740 |
+
|
741 |
// Google only stuff!
|
742 |
if ( ! empty( $font['font-family'] ) && ! empty( $this->field['google'] ) && filter_var( $this->field['google'], FILTER_VALIDATE_BOOLEAN ) ) {
|
743 |
|
ReduxCore/inc/p.php
CHANGED
@@ -208,7 +208,7 @@
|
|
208 |
|
209 |
curl_setopt( $ch, CURLOPT_USERAGENT, isset($_GET['user_agent']) ? $_GET['user_agent'] : $_SERVER['HTTP_USER_AGENT'] );
|
210 |
|
211 |
-
list( $header, $contents ) = preg_split( '/([\r\n][\r\n])
|
212 |
|
213 |
$status = curl_getinfo( $ch );
|
214 |
|
208 |
|
209 |
curl_setopt( $ch, CURLOPT_USERAGENT, isset($_GET['user_agent']) ? $_GET['user_agent'] : $_SERVER['HTTP_USER_AGENT'] );
|
210 |
|
211 |
+
list( $header, $contents ) = array_merge( array( '', '' ), preg_split( '/([\r\n][\r\n])\1/', curl_exec( $ch ), 2 ) );
|
212 |
|
213 |
$status = curl_getinfo( $ch );
|
214 |
|
ReduxCore/inc/tracking.php
CHANGED
@@ -67,12 +67,12 @@
|
|
67 |
}
|
68 |
|
69 |
if ( isset( $_GET['redux_framework_disable_tracking'] ) && ! empty( $_GET['redux_framework_disable_tracking'] ) ) {
|
70 |
-
$this->options['allow_tracking'] =
|
71 |
update_option( 'redux-framework-tracking', $this->options );
|
72 |
}
|
73 |
|
74 |
if ( isset( $_GET['redux_framework_enable_tracking'] ) && ! empty( $_GET['redux_framework_enable_tracking'] ) ) {
|
75 |
-
$this->options['allow_tracking'] =
|
76 |
update_option( 'redux-framework-tracking', $this->options );
|
77 |
}
|
78 |
|
@@ -92,7 +92,7 @@
|
|
92 |
add_action( 'wp_ajax_nopriv_' . $hash, array( $this, 'support_args' ) );
|
93 |
add_action( 'wp_ajax_' . $hash, array( $this, 'support_args' ) );
|
94 |
|
95 |
-
if ( isset( $this->options['allow_tracking'] ) && $this->options['allow_tracking'] ==
|
96 |
// The tracking checks daily, but only sends new data every 7 days.
|
97 |
if ( ! wp_next_scheduled( 'redux_tracking' ) ) {
|
98 |
wp_schedule_event( time(), 'daily', 'redux_tracking' );
|
@@ -149,12 +149,12 @@
|
|
149 |
|
150 |
|
151 |
$content = '<h3>' . __( 'Welcome to the Redux Demo Panel', 'redux-framework' ) . '</h3>';
|
152 |
-
$content .= '<p><strong>' . __( 'Getting Started', 'redux-framework' ) . '</strong><br>' . sprintf( __( 'This panel demonstrates the many features of Redux. Before digging in, we suggest you get up to speed by reviewing %1$s.', 'redux-framework' ), '<a href="http://docs.reduxframework.com/redux-framework/getting-started/" target="_blank">' . __( 'our documentation', 'redux-framework' ) . '</a>' );
|
153 |
-
$content .= '<p><strong>' . __( 'Redux Generator', 'redux-framework' ) . '</strong><br>' . sprintf( __( 'Want to get a head start? Use the %1$s. It will create a customized boilerplate theme or a standalone admin folder complete with all things Redux (with the help of Underscores and TGM). Save yourself a headache and try it today.', 'redux-framework' ), '<a href="http://generate.reduxframework.com/" target="_blank">' . __( 'Redux Generator', 'redux-framework' ) . '</a>' );
|
154 |
-
$content .= '<p><strong>' . __( 'Redux Extensions', 'redux-framework' ) . '</strong><br>' . sprintf( __( 'Did you know we have extensions, which greatly enhance the features of Redux? Visit our %1$s to learn more!', 'redux-framework' ), '<a href="http://reduxframework.com/extensions/" target="_blank">' . __( 'extensions directory', 'redux-framework' ) . '</a>' );
|
155 |
-
$content .= '<p><strong>' . __( 'Like Redux?', 'redux-framework' ) . '</strong><br>' . sprintf( __( 'If so, please %1$s and consider making a %2$s to keep development of Redux moving forward.', 'redux-framework' ), '<a target="_blank" href="http://wordpress.org/support/view/plugin-reviews/redux-framework">' . __( 'leave us a favorable review on WordPress.org', 'redux-framework' ) . '</a>', '<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=N5AD7TSH8YA5U" target="_blank">' . __( 'donation', 'redux-framework' ) . '</a>' );
|
156 |
$content .= '<p><strong>' . __( 'Newsletter', 'redux-framework' ) . '</strong><br>' . __( 'If you\'d like to keep up to with all things Redux, please subscribe to our newsletter', 'redux-framework' ) . ':</p>';
|
157 |
-
$content .= '<form action="http://reduxframework.us7.list-manage2.com/subscribe/post?u=564f5178f6cc288064f332efd&id=ace5bbc1f9&SOURCE=panel" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate><p style="text-align: center;"><label for="mce-EMAIL">' . __( 'Email address', 'redux-framework' ) . ' </label><input type="email" value="" name="EMAIL" class="required email" id="mce-EMAIL"><input type="hidden" value="panel" name="SOURCE"> <input type="submit" value="' . __( 'Subscribe', 'redux-framework' ) . '" name="subscribe" id="mc-embedded-subscribe" class="button button-primary"></p></form>';
|
158 |
$opt_arr = array(
|
159 |
'content' => $content,
|
160 |
'position' => array( 'edge' => 'top', 'align' => 'center' ),
|
@@ -405,7 +405,7 @@
|
|
405 |
header( 'Cache-Control: post-check=0, pre-check=0', false );
|
406 |
header( 'Pragma: no-cache' );
|
407 |
$instances = ReduxFrameworkInstances::get_all_instances();
|
408 |
-
|
409 |
if ( isset( $_REQUEST['i'] ) && ! empty( $_REQUEST['i'] ) ) {
|
410 |
if ( is_array( $instances ) && ! empty( $instances ) ) {
|
411 |
foreach ( $instances as $opt_name => $data ) {
|
67 |
}
|
68 |
|
69 |
if ( isset( $_GET['redux_framework_disable_tracking'] ) && ! empty( $_GET['redux_framework_disable_tracking'] ) ) {
|
70 |
+
$this->options['allow_tracking'] = 'no';
|
71 |
update_option( 'redux-framework-tracking', $this->options );
|
72 |
}
|
73 |
|
74 |
if ( isset( $_GET['redux_framework_enable_tracking'] ) && ! empty( $_GET['redux_framework_enable_tracking'] ) ) {
|
75 |
+
$this->options['allow_tracking'] = 'yes';
|
76 |
update_option( 'redux-framework-tracking', $this->options );
|
77 |
}
|
78 |
|
92 |
add_action( 'wp_ajax_nopriv_' . $hash, array( $this, 'support_args' ) );
|
93 |
add_action( 'wp_ajax_' . $hash, array( $this, 'support_args' ) );
|
94 |
|
95 |
+
if ( isset( $this->options['allow_tracking'] ) && $this->options['allow_tracking'] == 'yes' ) {
|
96 |
// The tracking checks daily, but only sends new data every 7 days.
|
97 |
if ( ! wp_next_scheduled( 'redux_tracking' ) ) {
|
98 |
wp_schedule_event( time(), 'daily', 'redux_tracking' );
|
149 |
|
150 |
|
151 |
$content = '<h3>' . __( 'Welcome to the Redux Demo Panel', 'redux-framework' ) . '</h3>';
|
152 |
+
$content .= '<p><strong>' . __( 'Getting Started', 'redux-framework' ) . '</strong><br>' . sprintf( __( 'This panel demonstrates the many features of Redux. Before digging in, we suggest you get up to speed by reviewing %1$s.', 'redux-framework' ), '<a href="' . 'http://' . 'docs.reduxframework.com/redux-framework/getting-started/" target="_blank">' . __( 'our documentation', 'redux-framework' ) . '</a>' );
|
153 |
+
$content .= '<p><strong>' . __( 'Redux Generator', 'redux-framework' ) . '</strong><br>' . sprintf( __( 'Want to get a head start? Use the %1$s. It will create a customized boilerplate theme or a standalone admin folder complete with all things Redux (with the help of Underscores and TGM). Save yourself a headache and try it today.', 'redux-framework' ), '<a href="' . 'http://' . 'generate.reduxframework.com/" target="_blank">' . __( 'Redux Generator', 'redux-framework' ) . '</a>' );
|
154 |
+
$content .= '<p><strong>' . __( 'Redux Extensions', 'redux-framework' ) . '</strong><br>' . sprintf( __( 'Did you know we have extensions, which greatly enhance the features of Redux? Visit our %1$s to learn more!', 'redux-framework' ), '<a href="' . 'http://' . 'reduxframework.com/extensions/" target="_blank">' . __( 'extensions directory', 'redux-framework' ) . '</a>' );
|
155 |
+
$content .= '<p><strong>' . __( 'Like Redux?', 'redux-framework' ) . '</strong><br>' . sprintf( __( 'If so, please %1$s and consider making a %2$s to keep development of Redux moving forward.', 'redux-framework' ), '<a target="_blank" href="' . 'http://' . 'wordpress.org/support/view/plugin-reviews/redux-framework">' . __( 'leave us a favorable review on WordPress.org', 'redux-framework' ) . '</a>', '<a href="' . 'https://' . 'www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=N5AD7TSH8YA5U" target="_blank">' . __( 'donation', 'redux-framework' ) . '</a>' );
|
156 |
$content .= '<p><strong>' . __( 'Newsletter', 'redux-framework' ) . '</strong><br>' . __( 'If you\'d like to keep up to with all things Redux, please subscribe to our newsletter', 'redux-framework' ) . ':</p>';
|
157 |
+
$content .= '<form action="' . 'http://' . 'reduxframework.us7.list-manage2.com/subscribe/post?u=564f5178f6cc288064f332efd&id=ace5bbc1f9&SOURCE=panel" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate><p style="text-align: center;"><label for="mce-EMAIL">' . __( 'Email address', 'redux-framework' ) . ' </label><input type="email" value="" name="EMAIL" class="required email" id="mce-EMAIL"><input type="hidden" value="panel" name="SOURCE"> <input type="submit" value="' . __( 'Subscribe', 'redux-framework' ) . '" name="subscribe" id="mc-embedded-subscribe" class="button button-primary"></p></form>';
|
158 |
$opt_arr = array(
|
159 |
'content' => $content,
|
160 |
'position' => array( 'edge' => 'top', 'align' => 'center' ),
|
405 |
header( 'Cache-Control: post-check=0, pre-check=0', false );
|
406 |
header( 'Pragma: no-cache' );
|
407 |
$instances = ReduxFrameworkInstances::get_all_instances();
|
408 |
+
|
409 |
if ( isset( $_REQUEST['i'] ) && ! empty( $_REQUEST['i'] ) ) {
|
410 |
if ( is_array( $instances ) && ! empty( $instances ) ) {
|
411 |
foreach ( $instances as $opt_name => $data ) {
|
ReduxCore/inc/welcome.php
CHANGED
@@ -1,542 +1,612 @@
|
|
1 |
<?php
|
2 |
-
if ( !defined
|
3 |
-
|
4 |
-
}
|
5 |
-
|
6 |
-
class Redux_Welcome {
|
7 |
-
|
8 |
-
/**
|
9 |
-
* @var string The capability users should have to view the page
|
10 |
-
*/
|
11 |
-
public $minimum_capability = 'manage_options';
|
12 |
-
|
13 |
-
/**
|
14 |
-
* Get things started
|
15 |
-
*
|
16 |
-
* @since 1.4
|
17 |
-
*/
|
18 |
-
public function __construct () {
|
19 |
-
add_action ( 'admin_menu', array( $this, 'admin_menus' ) );
|
20 |
-
add_action ( 'admin_head', array( $this, 'admin_head' ) );
|
21 |
-
add_action ( 'admin_init', array( $this, 'welcome' ) );
|
22 |
-
|
23 |
-
update_option( 'redux_version_upgraded_from', ReduxFramework::$_version );
|
24 |
-
set_transient( '_redux_activation_redirect', true, 30 );
|
25 |
-
|
26 |
}
|
27 |
|
28 |
-
|
29 |
-
* Register the Dashboard Pages which are later hidden but these pages
|
30 |
-
* are used to render the Welcome and Credits pages.
|
31 |
-
*
|
32 |
-
* @access public
|
33 |
-
* @since 1.4
|
34 |
-
* @return void
|
35 |
-
*/
|
36 |
-
public function admin_menus () {
|
37 |
-
|
38 |
-
// About Page
|
39 |
-
add_dashboard_page (
|
40 |
-
__ ( 'Welcome to Redux Framework', 'redux-framework' ), __ ( 'Welcome to Redux Framework', 'redux-framework' ), $this->minimum_capability, 'redux-about', array( $this, 'about_screen' )
|
41 |
-
);
|
42 |
-
|
43 |
-
// Changelog Page
|
44 |
-
add_dashboard_page (
|
45 |
-
__ ( 'Redux Framework Changelog', 'redux-framework' ), __ ( 'Redux Framework Changelog', 'redux-framework' ), $this->minimum_capability, 'redux-changelog', array( $this, 'changelog_screen' )
|
46 |
-
);
|
47 |
-
|
48 |
-
// Getting Started Page
|
49 |
-
add_dashboard_page (
|
50 |
-
__ ( 'Getting started with Redux Framework', 'redux-framework' ), __ ( 'Getting started with Redux Framework', 'redux-framework' ), $this->minimum_capability, 'redux-getting-started', array( $this, 'getting_started_screen' )
|
51 |
-
);
|
52 |
-
|
53 |
-
// Credits Page
|
54 |
-
add_dashboard_page (
|
55 |
-
__ ( 'The people that develop Redux Framework', 'redux-framework' ), __ ( 'The people that develop Redux Framework', 'redux-framework' ), $this->minimum_capability, 'redux-credits', array( $this, 'credits_screen' )
|
56 |
-
);
|
57 |
-
}
|
58 |
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
* @since 1.4
|
64 |
-
* @return void
|
65 |
-
*/
|
66 |
-
public function admin_head () {
|
67 |
-
remove_submenu_page ( 'index.php', 'redux-about' );
|
68 |
-
remove_submenu_page ( 'index.php', 'redux-changelog' );
|
69 |
-
remove_submenu_page ( 'index.php', 'redux-getting-started' );
|
70 |
-
remove_submenu_page ( 'index.php', 'redux-credits' );
|
71 |
-
|
72 |
-
// Badge for welcome page
|
73 |
-
$badge_url = ReduxFramework::$_url . 'assets/images/redux-badge.png';
|
74 |
-
?>
|
75 |
-
<style type="text/css" media="screen">
|
76 |
-
/*<![CDATA[*/
|
77 |
-
.redux-badge {
|
78 |
-
padding-top: 150px;
|
79 |
-
height: 52px;
|
80 |
-
width: 185px;
|
81 |
-
color: #666;
|
82 |
-
font-weight: bold;
|
83 |
-
font-size: 14px;
|
84 |
-
text-align: center;
|
85 |
-
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8);
|
86 |
-
margin: 0 -5px;
|
87 |
-
background: url('<?php echo $badge_url; ?>') no-repeat;
|
88 |
-
}
|
89 |
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
|
|
|
|
|
|
|
|
95 |
|
96 |
-
|
97 |
-
|
98 |
-
margin-left: 10px!important;
|
99 |
-
}
|
100 |
|
101 |
-
|
102 |
-
|
103 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
|
105 |
-
|
106 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
107 |
<?php
|
108 |
-
|
109 |
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
|
|
|
|
|
|
|
|
134 |
<?php
|
135 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
136 |
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
* @since 1.4
|
142 |
-
* @return void
|
143 |
-
*/
|
144 |
-
public function about_screen () {
|
145 |
-
list( $display_version ) = explode ( '-', ReduxFramework::$_version );
|
146 |
-
?>
|
147 |
-
<div class="wrap about-wrap">
|
148 |
-
<h1><?php printf ( __ ( 'Welcome to Redux Framework %s', 'redux-framework' ), $display_version ); ?></h1>
|
149 |
-
<div class="about-text"><?php printf ( __ ( 'Thank you for updating to the latest version! Redux Framework %s is ready to <add description>', 'redux-framework' ), $display_version ); ?></div>
|
150 |
-
<div class="redux-badge"><?php printf ( __ ( 'Version %s', 'redux-framework' ), $display_version ); ?></div>
|
151 |
|
152 |
-
|
153 |
|
154 |
-
|
155 |
-
|
156 |
|
157 |
-
|
158 |
|
159 |
-
|
160 |
-
<p></p>
|
161 |
|
162 |
-
|
163 |
-
<p></p>
|
164 |
|
|
|
|
|
|
|
|
|
|
|
165 |
</div>
|
166 |
-
</div>
|
167 |
|
168 |
-
|
169 |
-
|
|
|
|
|
|
|
170 |
|
171 |
-
|
172 |
|
|
|
173 |
|
174 |
-
|
175 |
-
<p></p>
|
176 |
|
177 |
-
|
178 |
-
<p></p>
|
179 |
|
180 |
-
|
181 |
-
<p></p>
|
182 |
|
|
|
183 |
|
184 |
|
185 |
-
|
186 |
-
|
187 |
-
|
|
|
|
|
|
|
188 |
</div>
|
189 |
-
</div>
|
190 |
|
191 |
-
|
192 |
-
|
193 |
|
194 |
-
|
195 |
|
196 |
-
|
197 |
-
<p><?php _e ( 'description', 'redux-framework' ); ?></p>
|
198 |
|
199 |
-
|
200 |
-
<p><?php _e ( 'description', 'redux-framework' ); ?></p>
|
201 |
|
|
|
202 |
|
|
|
203 |
|
204 |
-
<h4><?php _e ( 'Feature', 'redux-framework' ); ?></h4>
|
205 |
-
<p><?php _e ( 'description', 'redux-framework' ); ?></p>
|
206 |
|
|
|
|
|
|
|
|
|
|
|
207 |
</div>
|
208 |
-
</div>
|
209 |
|
210 |
-
|
211 |
-
|
212 |
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
<p><?php _e ( 'cool thing description.', 'redux-framework' ); ?></p>
|
217 |
|
218 |
-
|
219 |
-
<p><?php _e ( 'cool thing description.', 'redux-framework' ); ?></p>
|
220 |
-
</div>
|
221 |
|
222 |
-
|
223 |
-
<h4><?php _e ( 'Cool thing', 'redux-framework' ); ?></h4>
|
224 |
-
<p><?php _e ( 'cool thing description.', 'redux-framework' ); ?></p>
|
225 |
|
226 |
-
|
227 |
-
|
228 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
229 |
|
230 |
-
|
231 |
-
|
232 |
-
<p><?php _e ( 'cool thing description.', 'redux-framework' ); ?></p>
|
233 |
|
234 |
-
<
|
235 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
236 |
</div>
|
237 |
</div>
|
238 |
-
</div>
|
239 |
|
240 |
-
|
241 |
-
|
242 |
-
|
|
|
|
|
|
|
|
|
243 |
</div>
|
244 |
-
</div>
|
245 |
<?php
|
246 |
-
|
247 |
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
<div class="
|
269 |
-
|
|
|
|
|
|
|
|
|
270 |
</div>
|
271 |
-
</div>
|
272 |
|
273 |
-
|
274 |
-
|
|
|
|
|
|
|
|
|
275 |
</div>
|
276 |
-
</div>
|
277 |
<?php
|
278 |
-
|
279 |
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
<div class="about-text"><?php printf ( __ ( 'Thank you for updating to the latest version! Redux Framework %s is ready to make your <description>', 'redux-framework' ), $display_version ); ?></div>
|
293 |
-
<div class="redux-badge"><?php printf ( __ ( 'Version %s', 'redux-framework' ), $display_version ); ?></div>
|
294 |
|
295 |
-
|
|
|
|
|
|
|
296 |
|
297 |
-
|
298 |
|
299 |
-
|
300 |
-
<h3><?php _e ( 'Creating Your First Panel', 'redux-framework' ); ?></h3>
|
301 |
|
302 |
-
<div class="
|
|
|
303 |
|
|
|
304 |
|
305 |
|
306 |
-
|
307 |
-
<p><?php printf ( __ ( 'The %s menu is your access point for all aspects of your Easy Digital Downloads product creation and setup. To create your first product, simply click Add New and then fill out the product details.', 'redux-framework' ), redux_get_label_plural () ); ?></p>
|
308 |
|
309 |
-
|
310 |
-
<p><?php _e ( 'Products can have simple prices or variable prices if you wish to have more than one price point for a product. For a single price, simply enter the price. For multiple price points, click <em>Enable variable pricing</em> and enter the options.', 'redux-framework' ); ?></p>
|
311 |
|
312 |
-
|
313 |
-
<p><?php _e ( 'Uploading the downloadable files is simple. Click <em>Upload File</em> in the Download Files section and choose your download file. To add more than one file, simply click the <em>Add New</em> button.', 'redux-framework' ); ?></p>
|
314 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
315 |
</div>
|
316 |
-
</div>
|
317 |
|
318 |
-
|
319 |
-
|
|
|
|
|
|
|
|
|
|
|
320 |
|
321 |
-
|
322 |
|
323 |
-
|
324 |
|
325 |
-
|
326 |
-
<p><?php _e ( 'The [downloads] shortcode will display a product grid that works with any theme, no matter the size. It is even responsive!', 'redux-framework' ); ?></p>
|
327 |
|
328 |
-
|
329 |
-
<p><?php _e ( 'You can easily change the number of columns by adding the columns="x" parameter:', 'redux-framework' ); ?></p>
|
330 |
-
<p><pre>[downloads columns="4"]</pre></p>
|
331 |
|
332 |
-
|
333 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
334 |
</div>
|
335 |
-
</div>
|
336 |
|
337 |
-
|
338 |
-
|
|
|
|
|
339 |
|
340 |
-
<div class="feature-section">
|
341 |
|
|
|
342 |
|
|
|
343 |
|
344 |
-
|
345 |
-
<p><?php _e ( 'With easily accessible shortcodes to display purchase buttons, you can add a Buy Now or Add to Cart button for any product anywhere on your site in seconds.', 'redux-framework' ); ?></p>
|
346 |
|
347 |
-
|
348 |
-
<p><?php _e ( 'Purchase buttons can behave as either Add to Cart or Buy Now buttons. With Buy Now buttons customers are taken straight to PayPal, giving them the most frictionless purchasing experience possible.', 'redux-framework' ); ?></p>
|
349 |
|
|
|
350 |
</div>
|
351 |
-
</div>
|
352 |
|
353 |
-
|
354 |
-
|
|
|
|
|
355 |
|
356 |
-
|
357 |
|
358 |
-
|
359 |
-
<p><?php _e ( 'We do our best to provide the best support we can. If you encounter a problem or have a question, post a question in the <a href="https://easydigitaldownloads.com/support">support forums</a>.', 'redux-framework' ); ?></p>
|
360 |
|
361 |
-
|
362 |
-
<p><?php _e ( 'Our <a href="https://easydigitaldownloads.com/support/pricing/">Priority Support forums</a> are there for customers that need faster and/or more in-depth assistance.', 'redux-framework' ); ?></p>
|
363 |
|
|
|
|
|
|
|
364 |
</div>
|
365 |
-
</div>
|
366 |
|
367 |
-
|
368 |
-
|
|
|
|
|
|
|
|
|
369 |
|
370 |
-
|
371 |
|
372 |
-
|
373 |
-
<p><?php _e ( 'New extensions that make Easy Digital Downloads even more powerful are released nearly every single week. Subscribe to the newsletter to stay up to date with our latest releases. <a href="http://eepurl.com/kaerz" target="_blank">Signup now</a> to ensure you do not miss a release!', 'redux-framework' ); ?></p>
|
374 |
|
375 |
-
|
376 |
-
<p><?php _e ( '<a href="http://eepurl.com/kaerz" target="_blank">Signup now</a> to hear about the latest tutorial releases that explain how to take Easy Digital Downloads further.', 'redux-framework' ); ?></p>
|
377 |
|
|
|
378 |
</div>
|
379 |
-
</div>
|
380 |
|
381 |
-
|
382 |
-
|
|
|
|
|
383 |
|
384 |
-
|
385 |
|
386 |
-
|
387 |
-
<p><?php _e ( 'Add-on plugins are available that greatly extend the default functionality of Easy Digital Downloads. There are extensions for payment processors, such as Stripe and PayPal, extensions for newsletter integrations, and many, many more.', 'redux-framework' ); ?></p>
|
388 |
|
389 |
-
|
390 |
-
<p><?php _e ( '<a href="https://easydigitaldownloads.com/extensions" target="_blank">The Extensions store</a> has a list of all available extensions, including convenient category filters so you can find exactly what you are looking for.', 'redux-framework' ); ?></p>
|
391 |
|
|
|
|
|
|
|
392 |
</div>
|
393 |
-
</div>
|
394 |
|
395 |
-
|
396 |
<?php
|
397 |
-
|
398 |
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
|
|
|
|
|
|
420 |
<?php
|
421 |
-
}
|
422 |
-
|
423 |
-
/**
|
424 |
-
* Parse the Redux readme.txt file
|
425 |
-
*
|
426 |
-
* @since 2.0.3
|
427 |
-
* @return string $readme HTML formatted readme file
|
428 |
-
*/
|
429 |
-
public function parse_readme () {
|
430 |
-
$url = ReduxFramework::$_dir;
|
431 |
-
$url = str_replace('ReduxCore', '', $url);
|
432 |
-
|
433 |
-
$file = file_exists ( $url . 'README.txt' ) ? $url . 'README.txt' : null;
|
434 |
-
|
435 |
-
if ( !$file ) {
|
436 |
-
$readme = '<p>' . __ ( 'No valid changlog was found.', 'redux-framework' ) . '</p>';
|
437 |
-
} else {
|
438 |
-
$readme = file_get_contents ( $file );
|
439 |
-
$readme = nl2br ( esc_html ( $readme ) );
|
440 |
-
|
441 |
-
$readme = explode ( '== Changelog ==', $readme );
|
442 |
-
$readme = end ( $readme );
|
443 |
-
|
444 |
-
$remove = explode( '== Attribution ==', $readme );
|
445 |
-
$readme = str_replace( '== Attribution ==' . end( $remove ), '', $readme );
|
446 |
-
|
447 |
-
$readme = preg_replace ( '/`(.*?)`/', '<code>\\1</code>', $readme );
|
448 |
-
$readme = preg_replace ( '/[\040]\*\*(.*?)\*\*/', ' <strong>\\1</strong>', $readme );
|
449 |
-
$readme = preg_replace ( '/[\040]\*(.*?)\*/', ' <em>\\1</em>', $readme );
|
450 |
-
$readme = preg_replace ( '/= (.*?) =/', '<h4>\\1</h4>', $readme );
|
451 |
-
$readme = preg_replace ( '/\[(.*?)\]\((.*?)\)/', '<a href="\\2">\\1</a>', $readme );
|
452 |
}
|
453 |
|
454 |
-
|
455 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
456 |
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
|
|
|
|
|
|
|
|
466 |
|
467 |
-
|
468 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
469 |
|
470 |
-
|
471 |
|
472 |
-
|
473 |
-
$contributor_list .= '<li class="wp-person">';
|
474 |
-
$contributor_list .= sprintf ( '<a href="%s" title="%s">', esc_url ( 'https://github.com/' . $contributor->login ), esc_html ( sprintf ( __ ( 'View %s', 'redux-framework' ), $contributor->login ) )
|
475 |
-
);
|
476 |
-
$contributor_list .= sprintf ( '<img src="%s" width="64" height="64" class="gravatar" alt="%s" />', esc_url ( $contributor->avatar_url ), esc_html ( $contributor->login ) );
|
477 |
-
$contributor_list .= '</a>';
|
478 |
-
$contributor_list .= sprintf ( '<a class="web" href="%s">%s</a>', esc_url ( 'https://github.com/' . $contributor->login ), esc_html ( $contributor->login ) );
|
479 |
-
$contributor_list .= '</a>';
|
480 |
-
$contributor_list .= '</li>';
|
481 |
}
|
482 |
|
483 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
484 |
|
485 |
-
|
486 |
-
}
|
487 |
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
* @return array $contributors List of contributors
|
494 |
-
*/
|
495 |
-
public function get_contributors () {
|
496 |
-
$contributors = get_transient ( 'redux_contributors' );
|
497 |
-
|
498 |
-
if ( false !== $contributors )
|
499 |
-
return $contributors;
|
500 |
|
501 |
-
|
|
|
|
|
502 |
|
503 |
-
|
504 |
-
return array();
|
505 |
|
506 |
-
|
|
|
507 |
|
508 |
-
|
509 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
510 |
|
511 |
-
|
|
|
512 |
|
513 |
-
|
514 |
-
|
|
|
|
|
515 |
|
516 |
-
|
517 |
-
* Sends user to the Welcome page on first activation of Redux as well as each
|
518 |
-
* time Redux is upgraded to a new version
|
519 |
-
*
|
520 |
-
* @access public
|
521 |
-
* @since 1.4
|
522 |
-
* @global $redux_options Array of all the Redux Options
|
523 |
-
* @return void
|
524 |
-
*/
|
525 |
-
public function welcome () {
|
526 |
-
logconsole('welcome.php');
|
527 |
-
//return;
|
528 |
-
// Bail if no activation redirect
|
529 |
-
if ( !get_transient ( '_redux_activation_redirect' ) )
|
530 |
-
return;
|
531 |
-
|
532 |
-
// Delete the redirect transient
|
533 |
-
delete_transient ( '_redux_activation_redirect' );
|
534 |
-
|
535 |
-
// Bail if activating from network, or bulk
|
536 |
-
if ( is_network_admin () || isset ( $_GET[ 'activate-multi' ] ) )
|
537 |
-
return;
|
538 |
-
|
539 |
-
$upgrade = get_option ( 'redux_version_upgraded_from' );
|
540 |
//
|
541 |
// if ( !$upgrade ) { // First time install
|
542 |
// wp_safe_redirect ( admin_url ( 'index.php?page=redux-getting-started' ) );
|
@@ -545,7 +615,7 @@ class Redux_Welcome {
|
|
545 |
// wp_safe_redirect ( admin_url ( 'index.php?page=redux-about' ) );
|
546 |
// exit;
|
547 |
// }
|
|
|
548 |
}
|
549 |
-
}
|
550 |
|
551 |
-
new Redux_Welcome();
|
1 |
<?php
|
2 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
3 |
+
exit;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
}
|
5 |
|
6 |
+
class Redux_Welcome {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
|
8 |
+
/**
|
9 |
+
* @var string The capability users should have to view the page
|
10 |
+
*/
|
11 |
+
public $minimum_capability = 'manage_options';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
|
13 |
+
/**
|
14 |
+
* Get things started
|
15 |
+
*
|
16 |
+
* @since 1.4
|
17 |
+
*/
|
18 |
+
public function __construct() {
|
19 |
+
add_action( 'admin_menu', array( $this, 'admin_menus' ) );
|
20 |
+
add_action( 'admin_head', array( $this, 'admin_head' ) );
|
21 |
+
add_action( 'admin_init', array( $this, 'welcome' ) );
|
22 |
|
23 |
+
update_option( 'redux_version_upgraded_from', ReduxFramework::$_version );
|
24 |
+
set_transient( '_redux_activation_redirect', true, 30 );
|
|
|
|
|
25 |
|
26 |
+
}
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Register the Dashboard Pages which are later hidden but these pages
|
30 |
+
* are used to render the Welcome and Credits pages.
|
31 |
+
*
|
32 |
+
* @access public
|
33 |
+
* @since 1.4
|
34 |
+
* @return void
|
35 |
+
*/
|
36 |
+
public function admin_menus() {
|
37 |
+
|
38 |
+
// About Page
|
39 |
+
add_dashboard_page(
|
40 |
+
__( 'Welcome to Redux Framework', 'redux-framework' ), __( 'Welcome to Redux Framework', 'redux-framework' ), $this->minimum_capability, 'redux-about', array(
|
41 |
+
$this,
|
42 |
+
'about_screen'
|
43 |
+
)
|
44 |
+
);
|
45 |
+
|
46 |
+
// Changelog Page
|
47 |
+
add_dashboard_page(
|
48 |
+
__( 'Redux Framework Changelog', 'redux-framework' ), __( 'Redux Framework Changelog', 'redux-framework' ), $this->minimum_capability, 'redux-changelog', array(
|
49 |
+
$this,
|
50 |
+
'changelog_screen'
|
51 |
+
)
|
52 |
+
);
|
53 |
+
|
54 |
+
// Getting Started Page
|
55 |
+
add_dashboard_page(
|
56 |
+
__( 'Getting started with Redux Framework', 'redux-framework' ), __( 'Getting started with Redux Framework', 'redux-framework' ), $this->minimum_capability, 'redux-getting-started', array(
|
57 |
+
$this,
|
58 |
+
'getting_started_screen'
|
59 |
+
)
|
60 |
+
);
|
61 |
+
|
62 |
+
// Credits Page
|
63 |
+
add_dashboard_page(
|
64 |
+
__( 'The people that develop Redux Framework', 'redux-framework' ), __( 'The people that develop Redux Framework', 'redux-framework' ), $this->minimum_capability, 'redux-credits', array(
|
65 |
+
$this,
|
66 |
+
'credits_screen'
|
67 |
+
)
|
68 |
+
);
|
69 |
+
}
|
70 |
|
71 |
+
/**
|
72 |
+
* Hide Individual Dashboard Pages
|
73 |
+
*
|
74 |
+
* @access public
|
75 |
+
* @since 1.4
|
76 |
+
* @return void
|
77 |
+
*/
|
78 |
+
public function admin_head() {
|
79 |
+
remove_submenu_page( 'index.php', 'redux-about' );
|
80 |
+
remove_submenu_page( 'index.php', 'redux-changelog' );
|
81 |
+
remove_submenu_page( 'index.php', 'redux-getting-started' );
|
82 |
+
remove_submenu_page( 'index.php', 'redux-credits' );
|
83 |
+
|
84 |
+
// Badge for welcome page
|
85 |
+
$badge_url = ReduxFramework::$_url . 'assets/images/redux-badge.png';
|
86 |
+
?>
|
87 |
+
<style type="text/css" media="screen">
|
88 |
+
/*<![CDATA[*/
|
89 |
+
.redux-badge {
|
90 |
+
padding-top: 150px;
|
91 |
+
height: 52px;
|
92 |
+
width: 185px;
|
93 |
+
color: #666;
|
94 |
+
font-weight: bold;
|
95 |
+
font-size: 14px;
|
96 |
+
text-align: center;
|
97 |
+
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8);
|
98 |
+
margin: 0 -5px;
|
99 |
+
background: url('<?php echo $badge_url; ?>') no-repeat;
|
100 |
+
}
|
101 |
+
|
102 |
+
.about-wrap .redux-badge {
|
103 |
+
position: absolute;
|
104 |
+
top: 0;
|
105 |
+
right: 0;
|
106 |
+
}
|
107 |
+
|
108 |
+
.redux-welcome-screenshots {
|
109 |
+
float: right;
|
110 |
+
margin-left: 10px !important;
|
111 |
+
}
|
112 |
+
|
113 |
+
.about-wrap .feature-section {
|
114 |
+
margin-top: 20px;
|
115 |
+
}
|
116 |
+
|
117 |
+
/*]]>*/
|
118 |
+
</style>
|
119 |
<?php
|
120 |
+
}
|
121 |
|
122 |
+
/**
|
123 |
+
* Navigation tabs
|
124 |
+
*
|
125 |
+
* @access public
|
126 |
+
* @since 1.9
|
127 |
+
* @return void
|
128 |
+
*/
|
129 |
+
public function tabs() {
|
130 |
+
$selected = isset ( $_GET['page'] ) ? $_GET['page'] : 'redux-about';
|
131 |
+
?>
|
132 |
+
<h2 class="nav-tab-wrapper">
|
133 |
+
<a class="nav-tab <?php echo $selected == 'redux-about' ? 'nav-tab-active' : ''; ?>"
|
134 |
+
href="<?php echo esc_url( admin_url( add_query_arg( array( 'page' => 'redux-about' ), 'index.php' ) ) ); ?>">
|
135 |
+
<?php _e( "What's New", 'redux-framework' ); ?>
|
136 |
+
</a>
|
137 |
+
<a class="nav-tab <?php echo $selected == 'redux-getting-started' ? 'nav-tab-active' : ''; ?>"
|
138 |
+
href="<?php echo esc_url( admin_url( add_query_arg( array( 'page' => 'redux-getting-started' ), 'index.php' ) ) ); ?>">
|
139 |
+
<?php _e( 'Getting Started', 'redux-framework' ); ?>
|
140 |
+
</a>
|
141 |
+
<a class="nav-tab <?php echo $selected == 'redux-changelog' ? 'nav-tab-active' : ''; ?>"
|
142 |
+
href="<?php echo esc_url( admin_url( add_query_arg( array( 'page' => 'redux-changelog' ), 'index.php' ) ) ); ?>">
|
143 |
+
<?php _e( 'Changelog', 'redux-framework' ); ?>
|
144 |
+
</a>
|
145 |
+
<a class="nav-tab <?php echo $selected == 'redux-credits' ? 'nav-tab-active' : ''; ?>"
|
146 |
+
href="<?php echo esc_url( admin_url( add_query_arg( array( 'page' => 'redux-credits' ), 'index.php' ) ) ); ?>">
|
147 |
+
<?php _e( 'Credits', 'redux-framework' ); ?>
|
148 |
+
</a>
|
149 |
+
</h2>
|
150 |
<?php
|
151 |
+
}
|
152 |
+
|
153 |
+
/**
|
154 |
+
* Render About Screen
|
155 |
+
*
|
156 |
+
* @access public
|
157 |
+
* @since 1.4
|
158 |
+
* @return void
|
159 |
+
*/
|
160 |
+
public function about_screen() {
|
161 |
+
list( $display_version ) = explode( '-', ReduxFramework::$_version );
|
162 |
+
?>
|
163 |
+
<div class="wrap about-wrap">
|
164 |
+
<h1><?php printf( __( 'Welcome to Redux Framework %s', 'redux-framework' ), $display_version ); ?></h1>
|
165 |
|
166 |
+
<div
|
167 |
+
class="about-text"><?php printf( __( 'Thank you for updating to the latest version! Redux Framework %s is ready to <add description>', 'redux-framework' ), $display_version ); ?></div>
|
168 |
+
<div
|
169 |
+
class="redux-badge"><?php printf( __( 'Version %s', 'redux-framework' ), $display_version ); ?></div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
170 |
|
171 |
+
<?php $this->tabs(); ?>
|
172 |
|
173 |
+
<div class="changelog">
|
174 |
+
<h3><?php _e( 'Some Feature', 'redux-framework' ); ?></h3>
|
175 |
|
176 |
+
<div class="feature-section">
|
177 |
|
178 |
+
<h4><?php _e( 'Feature', 'redux-framework' ); ?></h4>
|
|
|
179 |
|
180 |
+
<p></p>
|
|
|
181 |
|
182 |
+
<h4><?php _e( 'Feature', 'redux-framework' ); ?></h4>
|
183 |
+
|
184 |
+
<p></p>
|
185 |
+
|
186 |
+
</div>
|
187 |
</div>
|
|
|
188 |
|
189 |
+
<div class="changelog">
|
190 |
+
<h3><?php _e( 'Some feature', 'redux-framework' ); ?></h3>
|
191 |
+
|
192 |
+
<div class="feature-section">
|
193 |
+
|
194 |
|
195 |
+
<h4><?php _e( 'Feature', 'redux-framework' ); ?></h4>
|
196 |
|
197 |
+
<p></p>
|
198 |
|
199 |
+
<h4><?php _e( 'Feature', 'redux-framework' ); ?></h4>
|
|
|
200 |
|
201 |
+
<p></p>
|
|
|
202 |
|
203 |
+
<h4><?php _e( 'Feature', 'redux-framework' ); ?></h4>
|
|
|
204 |
|
205 |
+
<p></p>
|
206 |
|
207 |
|
208 |
+
<h4><?php _e( 'Feature', 'redux-framework' ); ?></h4>
|
209 |
+
|
210 |
+
<p></p>
|
211 |
+
|
212 |
+
<p></p>
|
213 |
+
</div>
|
214 |
</div>
|
|
|
215 |
|
216 |
+
<div class="changelog">
|
217 |
+
<h3><?php _e( 'More Features', 'redux-framework' ); ?></h3>
|
218 |
|
219 |
+
<div class="feature-section">
|
220 |
|
221 |
+
<h4><?php _e( 'Feature', 'redux-framework' ); ?></h4>
|
|
|
222 |
|
223 |
+
<p><?php _e( 'description', 'redux-framework' ); ?></p>
|
|
|
224 |
|
225 |
+
<h4><?php _e( 'Feature', 'redux-framework' ); ?></h4>
|
226 |
|
227 |
+
<p><?php _e( 'description', 'redux-framework' ); ?></p>
|
228 |
|
|
|
|
|
229 |
|
230 |
+
<h4><?php _e( 'Feature', 'redux-framework' ); ?></h4>
|
231 |
+
|
232 |
+
<p><?php _e( 'description', 'redux-framework' ); ?></p>
|
233 |
+
|
234 |
+
</div>
|
235 |
</div>
|
|
|
236 |
|
237 |
+
<div class="changelog">
|
238 |
+
<h3><?php _e( 'Additional Updates', 'redux-framework' ); ?></h3>
|
239 |
|
240 |
+
<div class="feature-section col three-col">
|
241 |
+
<div>
|
242 |
+
<h4><?php _e( 'Cool thing', 'redux-framework' ); ?></h4>
|
|
|
243 |
|
244 |
+
<p><?php _e( 'cool thing description.', 'redux-framework' ); ?></p>
|
|
|
|
|
245 |
|
246 |
+
<h4><?php _e( 'Cool thing', 'redux-framework' ); ?></h4>
|
|
|
|
|
247 |
|
248 |
+
<p><?php _e( 'cool thing description.', 'redux-framework' ); ?></p>
|
249 |
+
</div>
|
250 |
+
|
251 |
+
<div>
|
252 |
+
<h4><?php _e( 'Cool thing', 'redux-framework' ); ?></h4>
|
253 |
+
|
254 |
+
<p><?php _e( 'cool thing description.', 'redux-framework' ); ?></p>
|
255 |
+
|
256 |
+
<h4><?php _e( 'Cool thing', 'redux-framework' ); ?></h4>
|
257 |
|
258 |
+
<p><?php _e( 'cool thing description.', 'redux-framework' ); ?></p>
|
259 |
+
</div>
|
|
|
260 |
|
261 |
+
<div class="last-feature">
|
262 |
+
<h4><?php _e( 'Cool thing', 'redux-framework' ); ?></h4>
|
263 |
+
|
264 |
+
<p><?php _e( 'cool thing description.', 'redux-framework' ); ?></p>
|
265 |
+
|
266 |
+
<h4><?php _e( 'Cool thing', 'redux-framework' ); ?></h4>
|
267 |
+
|
268 |
+
<p><?php _e( 'cool thing description.', 'redux-framework' ); ?></p>
|
269 |
+
</div>
|
270 |
</div>
|
271 |
</div>
|
|
|
272 |
|
273 |
+
<div class="return-to-dashboard">
|
274 |
+
<a href="<?php echo esc_url( admin_url( add_query_arg( array(
|
275 |
+
'post_type' => 'download',
|
276 |
+
'page' => 'redux-settings'
|
277 |
+
), 'edit.php' ) ) ); ?>"><?php _e( 'Go to Redux Framework', 'redux-framework' ); ?></a> ·
|
278 |
+
<a href="<?php echo esc_url( admin_url( add_query_arg( array( 'page' => 'redux-changelog' ), 'index.php' ) ) ); ?>"><?php _e( 'View the Full Changelog', 'redux-framework' ); ?></a>
|
279 |
+
</div>
|
280 |
</div>
|
|
|
281 |
<?php
|
282 |
+
}
|
283 |
|
284 |
+
/**
|
285 |
+
* Render Changelog Screen
|
286 |
+
*
|
287 |
+
* @access public
|
288 |
+
* @since 2.0.3
|
289 |
+
* @return void
|
290 |
+
*/
|
291 |
+
public function changelog_screen() {
|
292 |
+
list( $display_version ) = explode( '-', ReduxFramework::$_version );
|
293 |
+
?>
|
294 |
+
<div class="wrap about-wrap">
|
295 |
+
<h1><?php _e( 'Redux Framework Changelog', 'redux-framework' ); ?></h1>
|
296 |
+
|
297 |
+
<div
|
298 |
+
class="about-text"><?php printf( __( 'Thank you for updating to the latest version! Redux Framework %s is ready to make your <description>', 'redux-framework' ), $display_version ); ?></div>
|
299 |
+
<div
|
300 |
+
class="redux-badge"><?php printf( __( 'Version %s', 'redux-framework' ), $display_version ); ?></div>
|
301 |
+
|
302 |
+
<?php $this->tabs(); ?>
|
303 |
+
|
304 |
+
<div class="changelog">
|
305 |
+
<h3><?php _e( 'Full Changelog', 'redux-framework' ); ?></h3>
|
306 |
+
|
307 |
+
<div class="feature-section">
|
308 |
+
<?php echo $this->parse_readme(); ?>
|
309 |
+
</div>
|
310 |
</div>
|
|
|
311 |
|
312 |
+
<div class="return-to-dashboard">
|
313 |
+
<a href="<?php echo esc_url( admin_url( add_query_arg( array(
|
314 |
+
'post_type' => 'download',
|
315 |
+
'page' => 'redux-settings'
|
316 |
+
), 'edit.php' ) ) ); ?>"><?php _e( 'Go to Redux Framework', 'redux-framework' ); ?></a>
|
317 |
+
</div>
|
318 |
</div>
|
|
|
319 |
<?php
|
320 |
+
}
|
321 |
|
322 |
+
/**
|
323 |
+
* Render Getting Started Screen
|
324 |
+
*
|
325 |
+
* @access public
|
326 |
+
* @since 1.9
|
327 |
+
* @return void
|
328 |
+
*/
|
329 |
+
public function getting_started_screen() {
|
330 |
+
list( $display_version ) = explode( '-', ReduxFramework::$_version );
|
331 |
+
?>
|
332 |
+
<div class="wrap about-wrap">
|
333 |
+
<h1><?php printf( __( 'Welcome to Redux Framework %s', 'redux-framework' ), $display_version ); ?></h1>
|
|
|
|
|
334 |
|
335 |
+
<div
|
336 |
+
class="about-text"><?php printf( __( 'Thank you for updating to the latest version! Redux Framework %s is ready to make your <description>', 'redux-framework' ), $display_version ); ?></div>
|
337 |
+
<div
|
338 |
+
class="redux-badge"><?php printf( __( 'Version %s', 'redux-framework' ), $display_version ); ?></div>
|
339 |
|
340 |
+
<?php $this->tabs(); ?>
|
341 |
|
342 |
+
<p class="about-description"><?php _e( 'Use the tips below to get started using Redux Framework. You\'ll be up and running in no time!', 'redux-framework' ); ?></p>
|
|
|
343 |
|
344 |
+
<div class="changelog">
|
345 |
+
<h3><?php _e( 'Creating Your First Panel', 'redux-framework' ); ?></h3>
|
346 |
|
347 |
+
<div class="feature-section">
|
348 |
|
349 |
|
350 |
+
<h4><?php printf( __( '<a href="%s">%s → Add New</a>', 'redux-framework' ), admin_url( 'post-new.php?post_type=download' ), redux_get_label_plural() ); ?></h4>
|
|
|
351 |
|
352 |
+
<p><?php printf( __( 'The %s menu is your access point for all aspects of your Easy Digital Downloads product creation and setup. To create your first product, simply click Add New and then fill out the product details.', 'redux-framework' ), redux_get_label_plural() ); ?></p>
|
|
|
353 |
|
354 |
+
<h4><?php _e( 'Product Price', 'redux-framework' ); ?></h4>
|
|
|
355 |
|
356 |
+
<p><?php _e( 'Products can have simple prices or variable prices if you wish to have more than one price point for a product. For a single price, simply enter the price. For multiple price points, click <em>Enable variable pricing</em> and enter the options.', 'redux-framework' ); ?></p>
|
357 |
+
|
358 |
+
<h4><?php _e( 'Download Files', 'redux-framework' ); ?></h4>
|
359 |
+
|
360 |
+
<p><?php _e( 'Uploading the downloadable files is simple. Click <em>Upload File</em> in the Download Files section and choose your download file. To add more than one file, simply click the <em>Add New</em> button.', 'redux-framework' ); ?></p>
|
361 |
+
|
362 |
+
</div>
|
363 |
</div>
|
|
|
364 |
|
365 |
+
<div class="changelog">
|
366 |
+
<h3><?php _e( 'Display a Product Grid', 'redux-framework' ); ?></h3>
|
367 |
+
|
368 |
+
<div class="feature-section">
|
369 |
+
|
370 |
+
<img src="<?php echo Redux_PLUGIN_URL . 'assets/images/screenshots/grid.png'; ?>"
|
371 |
+
class="redux-welcome-screenshots"/>
|
372 |
|
373 |
+
<h4><?php _e( 'Flexible Product Grids', 'redux-framework' ); ?></h4>
|
374 |
|
375 |
+
<p><?php _e( 'The [downloads] shortcode will display a product grid that works with any theme, no matter the size. It is even responsive!', 'redux-framework' ); ?></p>
|
376 |
|
377 |
+
<h4><?php _e( 'Change the Number of Columns', 'redux-framework' ); ?></h4>
|
|
|
378 |
|
379 |
+
<p><?php _e( 'You can easily change the number of columns by adding the columns="x" parameter:', 'redux-framework' ); ?></p>
|
|
|
|
|
380 |
|
381 |
+
<p>
|
382 |
+
<pre>[downloads columns="4"]</pre>
|
383 |
+
</p>
|
384 |
+
|
385 |
+
<h4><?php _e( 'Additional Display Options', 'redux-framework' ); ?></h4>
|
386 |
+
|
387 |
+
<p><?php _e( 'The product grids can be customized in any way you wish and there is <a href="%s">extensive documentation</a> to assist you.', 'redux-framework' ); ?></p>
|
388 |
+
</div>
|
389 |
</div>
|
|
|
390 |
|
391 |
+
<div class="changelog">
|
392 |
+
<h3><?php _e( 'Purchase Buttons Anywhere', 'redux-framework' ); ?></h3>
|
393 |
+
|
394 |
+
<div class="feature-section">
|
395 |
|
|
|
396 |
|
397 |
+
<h4><?php _e( 'The <em>[purchase_link]</em> Shortcode', 'redux-framework' ); ?></h4>
|
398 |
|
399 |
+
<p><?php _e( 'With easily accessible shortcodes to display purchase buttons, you can add a Buy Now or Add to Cart button for any product anywhere on your site in seconds.', 'redux-framework' ); ?></p>
|
400 |
|
401 |
+
<h4><?php _e( 'Buy Now Buttons', 'redux-framework' ); ?></h4>
|
|
|
402 |
|
403 |
+
<p><?php _e( 'Purchase buttons can behave as either Add to Cart or Buy Now buttons. With Buy Now buttons customers are taken straight to PayPal, giving them the most frictionless purchasing experience possible.', 'redux-framework' ); ?></p>
|
|
|
404 |
|
405 |
+
</div>
|
406 |
</div>
|
|
|
407 |
|
408 |
+
<div class="changelog">
|
409 |
+
<h3><?php _e( 'Need Help?', 'redux-framework' ); ?></h3>
|
410 |
+
|
411 |
+
<div class="feature-section">
|
412 |
|
413 |
+
<h4><?php _e( 'Phenomenal Support', 'redux-framework' ); ?></h4>
|
414 |
|
415 |
+
<p><?php _e( 'We do our best to provide the best support we can. If you encounter a problem or have a question, post a question in the <a href="' . 'https://' . 'easydigitaldownloads.com/support">support forums</a>.', 'redux-framework' ); ?></p>
|
|
|
416 |
|
417 |
+
<h4><?php _e( 'Need Even Faster Support?', 'redux-framework' ); ?></h4>
|
|
|
418 |
|
419 |
+
<p><?php _e( 'Our <a href="' . 'https://' . 'easydigitaldownloads.com/support/pricing/">Priority Support forums</a> are there for customers that need faster and/or more in-depth assistance.', 'redux-framework' ); ?></p>
|
420 |
+
|
421 |
+
</div>
|
422 |
</div>
|
|
|
423 |
|
424 |
+
<div class="changelog">
|
425 |
+
<h3><?php _e( 'Stay Up to Date', 'redux-framework' ); ?></h3>
|
426 |
+
|
427 |
+
<div class="feature-section">
|
428 |
+
|
429 |
+
<h4><?php _e( 'Get Notified of Extension Releases', 'redux-framework' ); ?></h4>
|
430 |
|
431 |
+
<p><?php _e( 'New extensions that make Easy Digital Downloads even more powerful are released nearly every single week. Subscribe to the newsletter to stay up to date with our latest releases. <a href="' . 'http://' . 'eepurl.com/kaerz" target="_blank">Signup now</a> to ensure you do not miss a release!', 'redux-framework' ); ?></p>
|
432 |
|
433 |
+
<h4><?php _e( 'Get Alerted About New Tutorials', 'redux-framework' ); ?></h4>
|
|
|
434 |
|
435 |
+
<p><?php _e( '<a href="' . 'http://' . 'eepurl.com/kaerz" target="_blank">Signup now</a> to hear about the latest tutorial releases that explain how to take Easy Digital Downloads further.', 'redux-framework' ); ?></p>
|
|
|
436 |
|
437 |
+
</div>
|
438 |
</div>
|
|
|
439 |
|
440 |
+
<div class="changelog">
|
441 |
+
<h3><?php _e( 'Extensions for Everything', 'redux-framework' ); ?></h3>
|
442 |
+
|
443 |
+
<div class="feature-section">
|
444 |
|
445 |
+
<h4><?php _e( 'Over 250 Extensions', 'redux-framework' ); ?></h4>
|
446 |
|
447 |
+
<p><?php _e( 'Add-on plugins are available that greatly extend the default functionality of Easy Digital Downloads. There are extensions for payment processors, such as Stripe and PayPal, extensions for newsletter integrations, and many, many more.', 'redux-framework' ); ?></p>
|
|
|
448 |
|
449 |
+
<h4><?php _e( 'Visit the Extension Store', 'redux-framework' ); ?></h4>
|
|
|
450 |
|
451 |
+
<p><?php _e( '<a href="' . 'https://' . 'asydigitaldownloads.com/extensions" target="_blank">The Extensions store</a> has a list of all available extensions, including convenient category filters so you can find exactly what you are looking for.', 'redux-framework' ); ?></p>
|
452 |
+
|
453 |
+
</div>
|
454 |
</div>
|
|
|
455 |
|
456 |
+
</div>
|
457 |
<?php
|
458 |
+
}
|
459 |
|
460 |
+
/**
|
461 |
+
* Render Credits Screen
|
462 |
+
*
|
463 |
+
* @access public
|
464 |
+
* @since 1.4
|
465 |
+
* @return void
|
466 |
+
*/
|
467 |
+
public function credits_screen() {
|
468 |
+
list( $display_version ) = explode( '-', ReduxFramework::$_version );
|
469 |
+
?>
|
470 |
+
<div class="wrap about-wrap">
|
471 |
+
<h1><?php printf( __( 'Welcome to Redux Framework %s', 'redux-framework' ), $display_version ); ?></h1>
|
472 |
+
|
473 |
+
<div
|
474 |
+
class="about-text"><?php printf( __( 'Thank you for updating to the latest version! Redux Framework %s is ready to make your <description>', 'redux-framework' ), $display_version ); ?></div>
|
475 |
+
<div
|
476 |
+
class="redux-badge"><?php printf( __( 'Version %s', 'redux-framework' ), $display_version ); ?></div>
|
477 |
+
|
478 |
+
<?php $this->tabs(); ?>
|
479 |
+
|
480 |
+
<p class="about-description"><?php _e( 'Redux Framework is created by a worldwide team of developers who <something witty here>', 'redux-framework' ); ?></p>
|
481 |
+
|
482 |
+
<?php echo $this->contributors(); ?>
|
483 |
+
</div>
|
484 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
485 |
}
|
486 |
|
487 |
+
/**
|
488 |
+
* Parse the Redux readme.txt file
|
489 |
+
*
|
490 |
+
* @since 2.0.3
|
491 |
+
* @return string $readme HTML formatted readme file
|
492 |
+
*/
|
493 |
+
public function parse_readme() {
|
494 |
+
$url = ReduxFramework::$_dir;
|
495 |
+
$url = str_replace( 'ReduxCore', '', $url );
|
496 |
+
|
497 |
+
$file = file_exists( $url . 'README.txt' ) ? $url . 'README.txt' : null;
|
498 |
+
|
499 |
+
if ( ! $file ) {
|
500 |
+
$readme = '<p>' . __( 'No valid changlog was found.', 'redux-framework' ) . '</p>';
|
501 |
+
} else {
|
502 |
+
$readme = wp_remote_retrieve_body( wp_remote_get( $file ) );
|
503 |
+
$readme = nl2br( esc_html( $readme ) );
|
504 |
+
|
505 |
+
$readme = explode( '== Changelog ==', $readme );
|
506 |
+
$readme = end( $readme );
|
507 |
+
|
508 |
+
$remove = explode( '== Attribution ==', $readme );
|
509 |
+
$readme = str_replace( '== Attribution ==' . end( $remove ), '', $readme );
|
510 |
+
|
511 |
+
$readme = preg_replace( '/`(.*?)`/', '<code>\\1</code>', $readme );
|
512 |
+
$readme = preg_replace( '/[\040]\*\*(.*?)\*\*/', ' <strong>\\1</strong>', $readme );
|
513 |
+
$readme = preg_replace( '/[\040]\*(.*?)\*/', ' <em>\\1</em>', $readme );
|
514 |
+
$readme = preg_replace( '/= (.*?) =/', '<h4>\\1</h4>', $readme );
|
515 |
+
$readme = preg_replace( '/\[(.*?)\]\((.*?)\)/', '<a href="\\2">\\1</a>', $readme );
|
516 |
+
}
|
517 |
+
|
518 |
+
return $readme;
|
519 |
+
}
|
520 |
|
521 |
+
/**
|
522 |
+
* Render Contributors List
|
523 |
+
*
|
524 |
+
* @since 1.4
|
525 |
+
* @uses Redux_Welcome::get_contributors()
|
526 |
+
* @return string $contributor_list HTML formatted list of all the contributors for Redux
|
527 |
+
*/
|
528 |
+
public function contributors() {
|
529 |
+
$contributors = $this->get_contributors();
|
530 |
+
|
531 |
+
if ( empty ( $contributors ) ) {
|
532 |
+
return '';
|
533 |
+
}
|
534 |
|
535 |
+
$contributor_list = '<ul class="wp-people-group">';
|
536 |
+
|
537 |
+
foreach ( $contributors as $contributor ) {
|
538 |
+
$contributor_list .= '<li class="wp-person">';
|
539 |
+
$contributor_list .= sprintf( '<a href="%s" title="%s">', esc_url( 'https://github.com/' . $contributor->login ), esc_html( sprintf( __( 'View %s', 'redux-framework' ), $contributor->login ) )
|
540 |
+
);
|
541 |
+
$contributor_list .= sprintf( '<img src="%s" width="64" height="64" class="gravatar" alt="%s" />', esc_url( $contributor->avatar_url ), esc_html( $contributor->login ) );
|
542 |
+
$contributor_list .= '</a>';
|
543 |
+
$contributor_list .= sprintf( '<a class="web" href="%s">%s</a>', esc_url( 'https://github.com/' . $contributor->login ), esc_html( $contributor->login ) );
|
544 |
+
$contributor_list .= '</a>';
|
545 |
+
$contributor_list .= '</li>';
|
546 |
+
}
|
547 |
|
548 |
+
$contributor_list .= '</ul>';
|
549 |
|
550 |
+
return $contributor_list;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
551 |
}
|
552 |
|
553 |
+
/**
|
554 |
+
* Retreive list of contributors from GitHub.
|
555 |
+
*
|
556 |
+
* @access public
|
557 |
+
* @since 1.4
|
558 |
+
* @return array $contributors List of contributors
|
559 |
+
*/
|
560 |
+
public function get_contributors() {
|
561 |
+
$contributors = get_transient( 'redux_contributors' );
|
562 |
+
|
563 |
+
if ( false !== $contributors ) {
|
564 |
+
return $contributors;
|
565 |
+
}
|
566 |
|
567 |
+
$response = wp_remote_get( 'https://api.github.com/repos/ReduxFramework/redux-framework/contributors', array( 'sslverify' => false ) );
|
|
|
568 |
|
569 |
+
if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) {
|
570 |
+
return array();
|
571 |
+
}
|
572 |
+
|
573 |
+
$contributors = json_decode( wp_remote_retrieve_body( $response ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
574 |
|
575 |
+
if ( ! is_array( $contributors ) ) {
|
576 |
+
return array();
|
577 |
+
}
|
578 |
|
579 |
+
set_transient( 'redux_contributors', $contributors, 3600 );
|
|
|
580 |
|
581 |
+
return $contributors;
|
582 |
+
}
|
583 |
|
584 |
+
/**
|
585 |
+
* Sends user to the Welcome page on first activation of Redux as well as each
|
586 |
+
* time Redux is upgraded to a new version
|
587 |
+
*
|
588 |
+
* @access public
|
589 |
+
* @since 1.4
|
590 |
+
* @global $redux_options Array of all the Redux Options
|
591 |
+
* @return void
|
592 |
+
*/
|
593 |
+
public function welcome() {
|
594 |
+
logconsole( 'welcome.php' );
|
595 |
+
//return;
|
596 |
+
// Bail if no activation redirect
|
597 |
+
if ( ! get_transient( '_redux_activation_redirect' ) ) {
|
598 |
+
return;
|
599 |
+
}
|
600 |
|
601 |
+
// Delete the redirect transient
|
602 |
+
delete_transient( '_redux_activation_redirect' );
|
603 |
|
604 |
+
// Bail if activating from network, or bulk
|
605 |
+
if ( is_network_admin() || isset ( $_GET['activate-multi'] ) ) {
|
606 |
+
return;
|
607 |
+
}
|
608 |
|
609 |
+
$upgrade = get_option( 'redux_version_upgraded_from' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
610 |
//
|
611 |
// if ( !$upgrade ) { // First time install
|
612 |
// wp_safe_redirect ( admin_url ( 'index.php?page=redux-getting-started' ) );
|
615 |
// wp_safe_redirect ( admin_url ( 'index.php?page=redux-about' ) );
|
616 |
// exit;
|
617 |
// }
|
618 |
+
}
|
619 |
}
|
|
|
620 |
|
621 |
+
new Redux_Welcome();
|
ReduxCore/languages/ar.mo
CHANGED
Binary file
|
ReduxCore/languages/bg_BG.mo
CHANGED
Binary file
|
ReduxCore/languages/de_DE.mo
CHANGED
Binary file
|
ReduxCore/languages/el.mo
CHANGED
Binary file
|
ReduxCore/languages/es_ES.mo
CHANGED
Binary file
|
ReduxCore/languages/es_MX.mo
CHANGED
Binary file
|
ReduxCore/languages/fa_IR.mo
CHANGED
Binary file
|
ReduxCore/languages/fi.mo
CHANGED
Binary file
|
ReduxCore/languages/fr_FR.mo
CHANGED
Binary file
|
ReduxCore/languages/he_IL.mo
CHANGED
Binary file
|
ReduxCore/languages/hi_IN.mo
CHANGED
Binary file
|
ReduxCore/languages/hr.mo
CHANGED
Binary file
|
ReduxCore/languages/hu_HU.mo
CHANGED
Binary file
|
ReduxCore/languages/id_ID.mo
CHANGED
Binary file
|
ReduxCore/languages/it_IT.mo
CHANGED
Binary file
|
ReduxCore/languages/km.mo
CHANGED
Binary file
|
ReduxCore/languages/ne_NP.mo
CHANGED
Binary file
|
ReduxCore/languages/nl_NL.mo
CHANGED
Binary file
|
ReduxCore/languages/pl_PL.mo
CHANGED
Binary file
|
ReduxCore/languages/pt_BR.mo
CHANGED
Binary file
|
ReduxCore/languages/pt_PT.mo
CHANGED
Binary file
|
ReduxCore/languages/redux-framework.pot
CHANGED
@@ -2,10 +2,10 @@
|
|
2 |
# This file is distributed under the GPL3+.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Redux Framework 3.3.8\n"
|
6 |
"Report-Msgid-Bugs-To: "
|
7 |
"https://github.com/ReduxFramework/ReduxFramework/issues\n"
|
8 |
-
"POT-Creation-Date: 2014-09-
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=utf-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -25,38 +25,38 @@ msgstr ""
|
|
25 |
"X-Poedit-Bookmarks: \n"
|
26 |
"X-Textdomain-Support: yes\n"
|
27 |
|
28 |
-
#: ReduxCore/extensions/customizer/extension_customizer.php:
|
29 |
-
#: ReduxCore/framework.php:
|
30 |
msgid "You have changes that are not saved. Would you like to save them now?"
|
31 |
msgstr ""
|
32 |
|
33 |
-
#: ReduxCore/extensions/customizer/extension_customizer.php:
|
34 |
-
#: ReduxCore/framework.php:
|
35 |
msgid "Are you sure? Resetting will lose all custom values."
|
36 |
msgstr ""
|
37 |
|
38 |
-
#: ReduxCore/extensions/customizer/extension_customizer.php:
|
39 |
-
#: ReduxCore/framework.php:
|
40 |
msgid ""
|
41 |
"Your current options will be replaced with the values of this preset. Would "
|
42 |
"you like to proceed?"
|
43 |
msgstr ""
|
44 |
|
45 |
-
#: ReduxCore/extensions/customizer/extension_customizer.php:
|
46 |
msgid "You have changes that are not saved. Would you like to save them now?"
|
47 |
msgstr ""
|
48 |
|
49 |
-
#: ReduxCore/extensions/customizer/extension_customizer.php:
|
50 |
msgid "Are you sure? Resetting will lose all custom values."
|
51 |
msgstr ""
|
52 |
|
53 |
-
#: ReduxCore/extensions/customizer/extension_customizer.php:
|
54 |
msgid ""
|
55 |
"Your current options will be replaced with the values of this preset. "
|
56 |
"Would you like to proceed?"
|
57 |
msgstr ""
|
58 |
|
59 |
-
#: ReduxCore/framework.php:
|
60 |
msgid "Options panel created using %1$s"
|
61 |
msgstr ""
|
62 |
|
@@ -64,84 +64,107 @@ msgstr ""
|
|
64 |
msgid "Redux Framework"
|
65 |
msgstr ""
|
66 |
|
67 |
-
#: ReduxCore/framework.php:
|
68 |
msgid "Options"
|
69 |
msgstr ""
|
70 |
|
71 |
-
#: ReduxCore/framework.php:
|
72 |
-
#: ReduxCore/framework.php:
|
73 |
msgid "System Info"
|
74 |
msgstr ""
|
75 |
|
76 |
-
#: ReduxCore/framework.php:
|
77 |
msgid "Are you sure? Resetting will lose all custom values in this section."
|
78 |
msgstr ""
|
79 |
|
80 |
-
#: ReduxCore/framework.php:
|
81 |
msgid "Please Wait"
|
82 |
msgstr ""
|
83 |
|
84 |
-
#: ReduxCore/framework.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
msgid "Hints"
|
86 |
msgstr ""
|
87 |
|
88 |
-
#: ReduxCore/framework.php:
|
89 |
msgid "Default"
|
90 |
msgstr ""
|
91 |
|
92 |
-
#: ReduxCore/framework.php:
|
93 |
msgid "Warning- This options panel will not work properly without javascript!"
|
94 |
msgstr ""
|
95 |
|
96 |
-
#: ReduxCore/framework.php:
|
97 |
msgid "Developer Mode Enabled"
|
98 |
msgstr ""
|
99 |
|
100 |
-
#: ReduxCore/framework.php:
|
101 |
msgid "Expand"
|
102 |
msgstr ""
|
103 |
|
104 |
-
#: ReduxCore/framework.php:
|
105 |
msgid "Save Changes"
|
106 |
msgstr ""
|
107 |
|
108 |
-
#: ReduxCore/framework.php:
|
109 |
msgid "Reset Section"
|
110 |
msgstr ""
|
111 |
|
112 |
-
#: ReduxCore/framework.php:
|
113 |
msgid "Reset All"
|
114 |
msgstr ""
|
115 |
|
116 |
-
#: ReduxCore/framework.php:
|
117 |
msgid "Working..."
|
118 |
msgstr ""
|
119 |
|
120 |
-
#: ReduxCore/framework.php:
|
121 |
msgid "Settings Imported!"
|
122 |
msgstr ""
|
123 |
|
124 |
-
#: ReduxCore/framework.php:
|
125 |
msgid "All Defaults Restored!"
|
126 |
msgstr ""
|
127 |
|
128 |
-
#: ReduxCore/framework.php:
|
129 |
msgid "Section Defaults Restored!"
|
130 |
msgstr ""
|
131 |
|
132 |
-
#: ReduxCore/framework.php:
|
133 |
msgid "Settings Saved!"
|
134 |
msgstr ""
|
135 |
|
136 |
-
#: ReduxCore/framework.php:
|
137 |
msgid "Settings have changed, you should save them!"
|
138 |
msgstr ""
|
139 |
|
140 |
-
#: ReduxCore/framework.php:
|
141 |
msgid "error(s) were found!"
|
142 |
msgstr ""
|
143 |
|
144 |
-
#: ReduxCore/framework.php:
|
145 |
msgid "warning(s) were found!"
|
146 |
msgstr ""
|
147 |
|
@@ -157,6 +180,19 @@ msgstr ""
|
|
157 |
msgid "Dismiss"
|
158 |
msgstr ""
|
159 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
160 |
#: ReduxCore/inc/debug.php:41 ReduxCore/inc/debug.php:69
|
161 |
#: ReduxCore/inc/debug.php:76 ReduxCore/inc/debug.php:77
|
162 |
msgid "Options Object"
|
@@ -554,7 +590,7 @@ msgstr ""
|
|
554 |
msgid "Welcome to the Redux Demo Panel"
|
555 |
msgstr ""
|
556 |
|
557 |
-
#: ReduxCore/inc/tracking.php:152 ReduxCore/inc/welcome.php:
|
558 |
msgid "Getting Started"
|
559 |
msgstr ""
|
560 |
|
@@ -680,132 +716,132 @@ msgstr ""
|
|
680 |
msgid "Welcome to Redux Framework"
|
681 |
msgstr ""
|
682 |
|
683 |
-
#: ReduxCore/inc/welcome.php:
|
684 |
msgid "Redux Framework Changelog"
|
685 |
msgstr ""
|
686 |
|
687 |
-
#: ReduxCore/inc/welcome.php:
|
688 |
msgid "Getting started with Redux Framework"
|
689 |
msgstr ""
|
690 |
|
691 |
-
#: ReduxCore/inc/welcome.php:
|
692 |
msgid "The people that develop Redux Framework"
|
693 |
msgstr ""
|
694 |
|
695 |
-
#: ReduxCore/inc/welcome.php:
|
696 |
msgid "What's New"
|
697 |
msgstr ""
|
698 |
|
699 |
-
#: ReduxCore/inc/welcome.php:
|
700 |
msgid "Changelog"
|
701 |
msgstr ""
|
702 |
|
703 |
-
#: ReduxCore/inc/welcome.php:
|
704 |
msgid "Credits"
|
705 |
msgstr ""
|
706 |
|
707 |
-
#: ReduxCore/inc/welcome.php:
|
708 |
-
#: ReduxCore/inc/welcome.php:
|
709 |
msgid "Welcome to Redux Framework %s"
|
710 |
msgstr ""
|
711 |
|
712 |
-
#: ReduxCore/inc/welcome.php:
|
713 |
msgid ""
|
714 |
"Thank you for updating to the latest version! Redux Framework %s is ready "
|
715 |
"to <add description>"
|
716 |
msgstr ""
|
717 |
|
718 |
-
#: ReduxCore/inc/welcome.php:
|
719 |
-
#: ReduxCore/inc/welcome.php:
|
720 |
msgid "Version %s"
|
721 |
msgstr ""
|
722 |
|
723 |
-
#: ReduxCore/inc/welcome.php:
|
724 |
msgid "Some Feature"
|
725 |
msgstr ""
|
726 |
|
727 |
-
#: ReduxCore/inc/welcome.php:
|
728 |
-
#: ReduxCore/inc/welcome.php:
|
729 |
-
#: ReduxCore/inc/welcome.php:
|
730 |
-
#: ReduxCore/inc/welcome.php:
|
731 |
-
#: ReduxCore/inc/welcome.php:
|
732 |
msgid "Feature"
|
733 |
msgstr ""
|
734 |
|
735 |
-
#: ReduxCore/inc/welcome.php:
|
736 |
msgid "Some feature"
|
737 |
msgstr ""
|
738 |
|
739 |
-
#: ReduxCore/inc/welcome.php:
|
740 |
msgid "More Features"
|
741 |
msgstr ""
|
742 |
|
743 |
-
#: ReduxCore/inc/welcome.php:
|
744 |
-
#: ReduxCore/inc/welcome.php:
|
745 |
msgid "description"
|
746 |
msgstr ""
|
747 |
|
748 |
-
#: ReduxCore/inc/welcome.php:
|
749 |
msgid "Additional Updates"
|
750 |
msgstr ""
|
751 |
|
752 |
-
#: ReduxCore/inc/welcome.php:
|
753 |
-
#: ReduxCore/inc/welcome.php:
|
754 |
-
#: ReduxCore/inc/welcome.php:
|
755 |
msgid "Cool thing"
|
756 |
msgstr ""
|
757 |
|
758 |
-
#: ReduxCore/inc/welcome.php:
|
759 |
-
#: ReduxCore/inc/welcome.php:
|
760 |
-
#: ReduxCore/inc/welcome.php:
|
761 |
msgid "cool thing description."
|
762 |
msgstr ""
|
763 |
|
764 |
-
#: ReduxCore/inc/welcome.php:
|
765 |
msgid "Go to Redux Framework"
|
766 |
msgstr ""
|
767 |
|
768 |
-
#: ReduxCore/inc/welcome.php:
|
769 |
msgid "View the Full Changelog"
|
770 |
msgstr ""
|
771 |
|
772 |
-
#: ReduxCore/inc/welcome.php:
|
773 |
-
#: ReduxCore/inc/welcome.php:
|
774 |
msgid ""
|
775 |
"Thank you for updating to the latest version! Redux Framework %s is ready "
|
776 |
"to make your <description>"
|
777 |
msgstr ""
|
778 |
|
779 |
-
#: ReduxCore/inc/welcome.php:
|
780 |
msgid "Full Changelog"
|
781 |
msgstr ""
|
782 |
|
783 |
-
#: ReduxCore/inc/welcome.php:
|
784 |
msgid ""
|
785 |
"Use the tips below to get started using Redux Framework. You'll be up and "
|
786 |
"running in no time!"
|
787 |
msgstr ""
|
788 |
|
789 |
-
#: ReduxCore/inc/welcome.php:
|
790 |
msgid "Creating Your First Panel"
|
791 |
msgstr ""
|
792 |
|
793 |
-
#: ReduxCore/inc/welcome.php:
|
794 |
msgid "<a href=\"%s\">%s → Add New</a>"
|
795 |
msgstr ""
|
796 |
|
797 |
-
#: ReduxCore/inc/welcome.php:
|
798 |
msgid ""
|
799 |
"The %s menu is your access point for all aspects of your Easy Digital "
|
800 |
"Downloads product creation and setup. To create your first product, simply "
|
801 |
"click Add New and then fill out the product details."
|
802 |
msgstr ""
|
803 |
|
804 |
-
#: ReduxCore/inc/welcome.php:
|
805 |
msgid "Product Price"
|
806 |
msgstr ""
|
807 |
|
808 |
-
#: ReduxCore/inc/welcome.php:
|
809 |
msgid ""
|
810 |
"Products can have simple prices or variable prices if you wish to have more "
|
811 |
"than one price point for a product. For a single price, simply enter the "
|
@@ -813,139 +849,110 @@ msgid ""
|
|
813 |
"and enter the options."
|
814 |
msgstr ""
|
815 |
|
816 |
-
#: ReduxCore/inc/welcome.php:
|
817 |
msgid "Download Files"
|
818 |
msgstr ""
|
819 |
|
820 |
-
#: ReduxCore/inc/welcome.php:
|
821 |
msgid ""
|
822 |
"Uploading the downloadable files is simple. Click <em>Upload File</em> in "
|
823 |
"the Download Files section and choose your download file. To add more than "
|
824 |
"one file, simply click the <em>Add New</em> button."
|
825 |
msgstr ""
|
826 |
|
827 |
-
#: ReduxCore/inc/welcome.php:
|
828 |
msgid "Display a Product Grid"
|
829 |
msgstr ""
|
830 |
|
831 |
-
#: ReduxCore/inc/welcome.php:
|
832 |
msgid "Flexible Product Grids"
|
833 |
msgstr ""
|
834 |
|
835 |
-
#: ReduxCore/inc/welcome.php:
|
836 |
msgid ""
|
837 |
"The [downloads] shortcode will display a product grid that works with any "
|
838 |
"theme, no matter the size. It is even responsive!"
|
839 |
msgstr ""
|
840 |
|
841 |
-
#: ReduxCore/inc/welcome.php:
|
842 |
msgid "Change the Number of Columns"
|
843 |
msgstr ""
|
844 |
|
845 |
-
#: ReduxCore/inc/welcome.php:
|
846 |
msgid ""
|
847 |
"You can easily change the number of columns by adding the columns=\"x\" "
|
848 |
"parameter:"
|
849 |
msgstr ""
|
850 |
|
851 |
-
#: ReduxCore/inc/welcome.php:
|
852 |
msgid "Additional Display Options"
|
853 |
msgstr ""
|
854 |
|
855 |
-
#: ReduxCore/inc/welcome.php:
|
856 |
msgid ""
|
857 |
"The product grids can be customized in any way you wish and there is <a "
|
858 |
"href=\"%s\">extensive documentation</a> to assist you."
|
859 |
msgstr ""
|
860 |
|
861 |
-
#: ReduxCore/inc/welcome.php:
|
862 |
msgid "Purchase Buttons Anywhere"
|
863 |
msgstr ""
|
864 |
|
865 |
-
#: ReduxCore/inc/welcome.php:
|
866 |
msgid "The <em>[purchase_link]</em> Shortcode"
|
867 |
msgstr ""
|
868 |
|
869 |
-
#: ReduxCore/inc/welcome.php:
|
870 |
msgid ""
|
871 |
"With easily accessible shortcodes to display purchase buttons, you can add "
|
872 |
"a Buy Now or Add to Cart button for any product anywhere on your site in "
|
873 |
"seconds."
|
874 |
msgstr ""
|
875 |
|
876 |
-
#: ReduxCore/inc/welcome.php:
|
877 |
msgid "Buy Now Buttons"
|
878 |
msgstr ""
|
879 |
|
880 |
-
#: ReduxCore/inc/welcome.php:
|
881 |
msgid ""
|
882 |
"Purchase buttons can behave as either Add to Cart or Buy Now buttons. With "
|
883 |
"Buy Now buttons customers are taken straight to PayPal, giving them the "
|
884 |
"most frictionless purchasing experience possible."
|
885 |
msgstr ""
|
886 |
|
887 |
-
#: ReduxCore/inc/welcome.php:
|
888 |
msgid "Need Help?"
|
889 |
msgstr ""
|
890 |
|
891 |
-
#: ReduxCore/inc/welcome.php:
|
892 |
msgid "Phenomenal Support"
|
893 |
msgstr ""
|
894 |
|
895 |
-
#: ReduxCore/inc/welcome.php:
|
896 |
-
msgid ""
|
897 |
-
"We do our best to provide the best support we can. If you encounter a "
|
898 |
-
"problem or have a question, post a question in the <a "
|
899 |
-
"href=\"https://easydigitaldownloads.com/support\">support forums</a>."
|
900 |
-
msgstr ""
|
901 |
-
|
902 |
-
#: ReduxCore/inc/welcome.php:361
|
903 |
msgid "Need Even Faster Support?"
|
904 |
msgstr ""
|
905 |
|
906 |
-
#: ReduxCore/inc/welcome.php:
|
907 |
-
msgid ""
|
908 |
-
"Our <a href=\"https://easydigitaldownloads.com/support/pricing/\">Priority "
|
909 |
-
"Support forums</a> are there for customers that need faster and/or more "
|
910 |
-
"in-depth assistance."
|
911 |
-
msgstr ""
|
912 |
-
|
913 |
-
#: ReduxCore/inc/welcome.php:368
|
914 |
msgid "Stay Up to Date"
|
915 |
msgstr ""
|
916 |
|
917 |
-
#: ReduxCore/inc/welcome.php:
|
918 |
msgid "Get Notified of Extension Releases"
|
919 |
msgstr ""
|
920 |
|
921 |
-
#: ReduxCore/inc/welcome.php:
|
922 |
-
msgid ""
|
923 |
-
"New extensions that make Easy Digital Downloads even more powerful are "
|
924 |
-
"released nearly every single week. Subscribe to the newsletter to stay up "
|
925 |
-
"to date with our latest releases. <a href=\"http://eepurl.com/kaerz\" "
|
926 |
-
"target=\"_blank\">Signup now</a> to ensure you do not miss a release!"
|
927 |
-
msgstr ""
|
928 |
-
|
929 |
-
#: ReduxCore/inc/welcome.php:375
|
930 |
msgid "Get Alerted About New Tutorials"
|
931 |
msgstr ""
|
932 |
|
933 |
-
#: ReduxCore/inc/welcome.php:
|
934 |
-
msgid ""
|
935 |
-
"<a href=\"http://eepurl.com/kaerz\" target=\"_blank\">Signup now</a> to "
|
936 |
-
"hear about the latest tutorial releases that explain how to take Easy "
|
937 |
-
"Digital Downloads further."
|
938 |
-
msgstr ""
|
939 |
-
|
940 |
-
#: ReduxCore/inc/welcome.php:382
|
941 |
msgid "Extensions for Everything"
|
942 |
msgstr ""
|
943 |
|
944 |
-
#: ReduxCore/inc/welcome.php:
|
945 |
msgid "Over 250 Extensions"
|
946 |
msgstr ""
|
947 |
|
948 |
-
#: ReduxCore/inc/welcome.php:
|
949 |
msgid ""
|
950 |
"Add-on plugins are available that greatly extend the default functionality "
|
951 |
"of Easy Digital Downloads. There are extensions for payment processors, "
|
@@ -953,29 +960,21 @@ msgid ""
|
|
953 |
"many, many more."
|
954 |
msgstr ""
|
955 |
|
956 |
-
#: ReduxCore/inc/welcome.php:
|
957 |
msgid "Visit the Extension Store"
|
958 |
msgstr ""
|
959 |
|
960 |
-
#: ReduxCore/inc/welcome.php:
|
961 |
-
msgid ""
|
962 |
-
"<a href=\"https://easydigitaldownloads.com/extensions\" "
|
963 |
-
"target=\"_blank\">The Extensions store</a> has a list of all available "
|
964 |
-
"extensions, including convenient category filters so you can find exactly "
|
965 |
-
"what you are looking for."
|
966 |
-
msgstr ""
|
967 |
-
|
968 |
-
#: ReduxCore/inc/welcome.php:416
|
969 |
msgid ""
|
970 |
"Redux Framework is created by a worldwide team of developers who <something "
|
971 |
"witty here>"
|
972 |
msgstr ""
|
973 |
|
974 |
-
#: ReduxCore/inc/welcome.php:
|
975 |
msgid "No valid changlog was found."
|
976 |
msgstr ""
|
977 |
|
978 |
-
#: ReduxCore/inc/welcome.php:
|
979 |
msgid "View %s"
|
980 |
msgstr ""
|
981 |
|
2 |
# This file is distributed under the GPL3+.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Redux Framework 3.3.8.3\n"
|
6 |
"Report-Msgid-Bugs-To: "
|
7 |
"https://github.com/ReduxFramework/ReduxFramework/issues\n"
|
8 |
+
"POT-Creation-Date: 2014-09-24 17:38:11+00:00\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=utf-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
25 |
"X-Poedit-Bookmarks: \n"
|
26 |
"X-Textdomain-Support: yes\n"
|
27 |
|
28 |
+
#: ReduxCore/extensions/customizer/extension_customizer.php:472
|
29 |
+
#: ReduxCore/framework.php:1940
|
30 |
msgid "You have changes that are not saved. Would you like to save them now?"
|
31 |
msgstr ""
|
32 |
|
33 |
+
#: ReduxCore/extensions/customizer/extension_customizer.php:473
|
34 |
+
#: ReduxCore/framework.php:1948
|
35 |
msgid "Are you sure? Resetting will lose all custom values."
|
36 |
msgstr ""
|
37 |
|
38 |
+
#: ReduxCore/extensions/customizer/extension_customizer.php:474
|
39 |
+
#: ReduxCore/framework.php:1964
|
40 |
msgid ""
|
41 |
"Your current options will be replaced with the values of this preset. Would "
|
42 |
"you like to proceed?"
|
43 |
msgstr ""
|
44 |
|
45 |
+
#: ReduxCore/extensions/customizer/extension_customizer.php:507
|
46 |
msgid "You have changes that are not saved. Would you like to save them now?"
|
47 |
msgstr ""
|
48 |
|
49 |
+
#: ReduxCore/extensions/customizer/extension_customizer.php:508
|
50 |
msgid "Are you sure? Resetting will lose all custom values."
|
51 |
msgstr ""
|
52 |
|
53 |
+
#: ReduxCore/extensions/customizer/extension_customizer.php:509
|
54 |
msgid ""
|
55 |
"Your current options will be replaced with the values of this preset. "
|
56 |
"Would you like to proceed?"
|
57 |
msgstr ""
|
58 |
|
59 |
+
#: ReduxCore/framework.php:207
|
60 |
msgid "Options panel created using %1$s"
|
61 |
msgstr ""
|
62 |
|
64 |
msgid "Redux Framework"
|
65 |
msgstr ""
|
66 |
|
67 |
+
#: ReduxCore/framework.php:211 ReduxCore/framework.php:215
|
68 |
msgid "Options"
|
69 |
msgstr ""
|
70 |
|
71 |
+
#: ReduxCore/framework.php:1359 ReduxCore/framework.php:1360
|
72 |
+
#: ReduxCore/framework.php:3561 ReduxCore/framework.php:3640
|
73 |
msgid "System Info"
|
74 |
msgstr ""
|
75 |
|
76 |
+
#: ReduxCore/framework.php:1956
|
77 |
msgid "Are you sure? Resetting will lose all custom values in this section."
|
78 |
msgstr ""
|
79 |
|
80 |
+
#: ReduxCore/framework.php:1971
|
81 |
msgid "Please Wait"
|
82 |
msgstr ""
|
83 |
|
84 |
+
#: ReduxCore/framework.php:2096
|
85 |
+
msgid "Enable"
|
86 |
+
msgstr ""
|
87 |
+
|
88 |
+
#: ReduxCore/framework.php:2101
|
89 |
+
msgid "Disable"
|
90 |
+
msgstr ""
|
91 |
+
|
92 |
+
#: ReduxCore/framework.php:2107
|
93 |
+
msgid "moving the mouse over"
|
94 |
+
msgstr ""
|
95 |
+
|
96 |
+
#: ReduxCore/framework.php:2109
|
97 |
+
msgid "clicking"
|
98 |
+
msgstr ""
|
99 |
+
|
100 |
+
#: ReduxCore/framework.php:2113
|
101 |
+
msgid ""
|
102 |
+
"Hints are tooltips that popup when %d the hint icon, offering addition "
|
103 |
+
"information about the field in which they appear. They can be %d d by "
|
104 |
+
"using the link below."
|
105 |
+
msgstr ""
|
106 |
+
|
107 |
+
#: ReduxCore/framework.php:2118
|
108 |
msgid "Hints"
|
109 |
msgstr ""
|
110 |
|
111 |
+
#: ReduxCore/framework.php:2243
|
112 |
msgid "Default"
|
113 |
msgstr ""
|
114 |
|
115 |
+
#: ReduxCore/framework.php:3308
|
116 |
msgid "Warning- This options panel will not work properly without javascript!"
|
117 |
msgstr ""
|
118 |
|
119 |
+
#: ReduxCore/framework.php:3359
|
120 |
msgid "Developer Mode Enabled"
|
121 |
msgstr ""
|
122 |
|
123 |
+
#: ReduxCore/framework.php:3387
|
124 |
msgid "Expand"
|
125 |
msgstr ""
|
126 |
|
127 |
+
#: ReduxCore/framework.php:3389 ReduxCore/framework.php:3697
|
128 |
msgid "Save Changes"
|
129 |
msgstr ""
|
130 |
|
131 |
+
#: ReduxCore/framework.php:3393 ReduxCore/framework.php:3701
|
132 |
msgid "Reset Section"
|
133 |
msgstr ""
|
134 |
|
135 |
+
#: ReduxCore/framework.php:3395 ReduxCore/framework.php:3703
|
136 |
msgid "Reset All"
|
137 |
msgstr ""
|
138 |
|
139 |
+
#: ReduxCore/framework.php:3400 ReduxCore/framework.php:3708
|
140 |
msgid "Working..."
|
141 |
msgstr ""
|
142 |
|
143 |
+
#: ReduxCore/framework.php:3420
|
144 |
msgid "Settings Imported!"
|
145 |
msgstr ""
|
146 |
|
147 |
+
#: ReduxCore/framework.php:3435
|
148 |
msgid "All Defaults Restored!"
|
149 |
msgstr ""
|
150 |
|
151 |
+
#: ReduxCore/framework.php:3449
|
152 |
msgid "Section Defaults Restored!"
|
153 |
msgstr ""
|
154 |
|
155 |
+
#: ReduxCore/framework.php:3463
|
156 |
msgid "Settings Saved!"
|
157 |
msgstr ""
|
158 |
|
159 |
+
#: ReduxCore/framework.php:3481
|
160 |
msgid "Settings have changed, you should save them!"
|
161 |
msgstr ""
|
162 |
|
163 |
+
#: ReduxCore/framework.php:3489
|
164 |
msgid "error(s) were found!"
|
165 |
msgstr ""
|
166 |
|
167 |
+
#: ReduxCore/framework.php:3497
|
168 |
msgid "warning(s) were found!"
|
169 |
msgstr ""
|
170 |
|
180 |
msgid "Dismiss"
|
181 |
msgstr ""
|
182 |
|
183 |
+
#: ReduxCore/inc/class.redux_themecheck.php:58
|
184 |
+
msgid ""
|
185 |
+
"The theme you are testing has %s embedded. We invite you to read the "
|
186 |
+
"%sTheme-Check Documentation%s to understand some warnings you will see "
|
187 |
+
"because of Redux."
|
188 |
+
msgstr ""
|
189 |
+
|
190 |
+
#: ReduxCore/inc/class.redux_themecheck.php:106
|
191 |
+
msgid ""
|
192 |
+
"The following directories & files are still located in your "
|
193 |
+
"<strong>Redux</strong> directory. They may cause errors in Theme-Check."
|
194 |
+
msgstr ""
|
195 |
+
|
196 |
#: ReduxCore/inc/debug.php:41 ReduxCore/inc/debug.php:69
|
197 |
#: ReduxCore/inc/debug.php:76 ReduxCore/inc/debug.php:77
|
198 |
msgid "Options Object"
|
590 |
msgid "Welcome to the Redux Demo Panel"
|
591 |
msgstr ""
|
592 |
|
593 |
+
#: ReduxCore/inc/tracking.php:152 ReduxCore/inc/welcome.php:139
|
594 |
msgid "Getting Started"
|
595 |
msgstr ""
|
596 |
|
716 |
msgid "Welcome to Redux Framework"
|
717 |
msgstr ""
|
718 |
|
719 |
+
#: ReduxCore/inc/welcome.php:48 ReduxCore/inc/welcome.php:295
|
720 |
msgid "Redux Framework Changelog"
|
721 |
msgstr ""
|
722 |
|
723 |
+
#: ReduxCore/inc/welcome.php:56
|
724 |
msgid "Getting started with Redux Framework"
|
725 |
msgstr ""
|
726 |
|
727 |
+
#: ReduxCore/inc/welcome.php:64
|
728 |
msgid "The people that develop Redux Framework"
|
729 |
msgstr ""
|
730 |
|
731 |
+
#: ReduxCore/inc/welcome.php:135
|
732 |
msgid "What's New"
|
733 |
msgstr ""
|
734 |
|
735 |
+
#: ReduxCore/inc/welcome.php:143
|
736 |
msgid "Changelog"
|
737 |
msgstr ""
|
738 |
|
739 |
+
#: ReduxCore/inc/welcome.php:147
|
740 |
msgid "Credits"
|
741 |
msgstr ""
|
742 |
|
743 |
+
#: ReduxCore/inc/welcome.php:164 ReduxCore/inc/welcome.php:333
|
744 |
+
#: ReduxCore/inc/welcome.php:471
|
745 |
msgid "Welcome to Redux Framework %s"
|
746 |
msgstr ""
|
747 |
|
748 |
+
#: ReduxCore/inc/welcome.php:167
|
749 |
msgid ""
|
750 |
"Thank you for updating to the latest version! Redux Framework %s is ready "
|
751 |
"to <add description>"
|
752 |
msgstr ""
|
753 |
|
754 |
+
#: ReduxCore/inc/welcome.php:169 ReduxCore/inc/welcome.php:300
|
755 |
+
#: ReduxCore/inc/welcome.php:338 ReduxCore/inc/welcome.php:476
|
756 |
msgid "Version %s"
|
757 |
msgstr ""
|
758 |
|
759 |
+
#: ReduxCore/inc/welcome.php:174
|
760 |
msgid "Some Feature"
|
761 |
msgstr ""
|
762 |
|
763 |
+
#: ReduxCore/inc/welcome.php:178 ReduxCore/inc/welcome.php:182
|
764 |
+
#: ReduxCore/inc/welcome.php:195 ReduxCore/inc/welcome.php:199
|
765 |
+
#: ReduxCore/inc/welcome.php:203 ReduxCore/inc/welcome.php:208
|
766 |
+
#: ReduxCore/inc/welcome.php:221 ReduxCore/inc/welcome.php:225
|
767 |
+
#: ReduxCore/inc/welcome.php:230
|
768 |
msgid "Feature"
|
769 |
msgstr ""
|
770 |
|
771 |
+
#: ReduxCore/inc/welcome.php:190
|
772 |
msgid "Some feature"
|
773 |
msgstr ""
|
774 |
|
775 |
+
#: ReduxCore/inc/welcome.php:217
|
776 |
msgid "More Features"
|
777 |
msgstr ""
|
778 |
|
779 |
+
#: ReduxCore/inc/welcome.php:223 ReduxCore/inc/welcome.php:227
|
780 |
+
#: ReduxCore/inc/welcome.php:232
|
781 |
msgid "description"
|
782 |
msgstr ""
|
783 |
|
784 |
+
#: ReduxCore/inc/welcome.php:238
|
785 |
msgid "Additional Updates"
|
786 |
msgstr ""
|
787 |
|
788 |
+
#: ReduxCore/inc/welcome.php:242 ReduxCore/inc/welcome.php:246
|
789 |
+
#: ReduxCore/inc/welcome.php:252 ReduxCore/inc/welcome.php:256
|
790 |
+
#: ReduxCore/inc/welcome.php:262 ReduxCore/inc/welcome.php:266
|
791 |
msgid "Cool thing"
|
792 |
msgstr ""
|
793 |
|
794 |
+
#: ReduxCore/inc/welcome.php:244 ReduxCore/inc/welcome.php:248
|
795 |
+
#: ReduxCore/inc/welcome.php:254 ReduxCore/inc/welcome.php:258
|
796 |
+
#: ReduxCore/inc/welcome.php:264 ReduxCore/inc/welcome.php:268
|
797 |
msgid "cool thing description."
|
798 |
msgstr ""
|
799 |
|
800 |
+
#: ReduxCore/inc/welcome.php:277 ReduxCore/inc/welcome.php:316
|
801 |
msgid "Go to Redux Framework"
|
802 |
msgstr ""
|
803 |
|
804 |
+
#: ReduxCore/inc/welcome.php:278
|
805 |
msgid "View the Full Changelog"
|
806 |
msgstr ""
|
807 |
|
808 |
+
#: ReduxCore/inc/welcome.php:298 ReduxCore/inc/welcome.php:336
|
809 |
+
#: ReduxCore/inc/welcome.php:474
|
810 |
msgid ""
|
811 |
"Thank you for updating to the latest version! Redux Framework %s is ready "
|
812 |
"to make your <description>"
|
813 |
msgstr ""
|
814 |
|
815 |
+
#: ReduxCore/inc/welcome.php:305
|
816 |
msgid "Full Changelog"
|
817 |
msgstr ""
|
818 |
|
819 |
+
#: ReduxCore/inc/welcome.php:342
|
820 |
msgid ""
|
821 |
"Use the tips below to get started using Redux Framework. You'll be up and "
|
822 |
"running in no time!"
|
823 |
msgstr ""
|
824 |
|
825 |
+
#: ReduxCore/inc/welcome.php:345
|
826 |
msgid "Creating Your First Panel"
|
827 |
msgstr ""
|
828 |
|
829 |
+
#: ReduxCore/inc/welcome.php:350
|
830 |
msgid "<a href=\"%s\">%s → Add New</a>"
|
831 |
msgstr ""
|
832 |
|
833 |
+
#: ReduxCore/inc/welcome.php:352
|
834 |
msgid ""
|
835 |
"The %s menu is your access point for all aspects of your Easy Digital "
|
836 |
"Downloads product creation and setup. To create your first product, simply "
|
837 |
"click Add New and then fill out the product details."
|
838 |
msgstr ""
|
839 |
|
840 |
+
#: ReduxCore/inc/welcome.php:354
|
841 |
msgid "Product Price"
|
842 |
msgstr ""
|
843 |
|
844 |
+
#: ReduxCore/inc/welcome.php:356
|
845 |
msgid ""
|
846 |
"Products can have simple prices or variable prices if you wish to have more "
|
847 |
"than one price point for a product. For a single price, simply enter the "
|
849 |
"and enter the options."
|
850 |
msgstr ""
|
851 |
|
852 |
+
#: ReduxCore/inc/welcome.php:358
|
853 |
msgid "Download Files"
|
854 |
msgstr ""
|
855 |
|
856 |
+
#: ReduxCore/inc/welcome.php:360
|
857 |
msgid ""
|
858 |
"Uploading the downloadable files is simple. Click <em>Upload File</em> in "
|
859 |
"the Download Files section and choose your download file. To add more than "
|
860 |
"one file, simply click the <em>Add New</em> button."
|
861 |
msgstr ""
|
862 |
|
863 |
+
#: ReduxCore/inc/welcome.php:366
|
864 |
msgid "Display a Product Grid"
|
865 |
msgstr ""
|
866 |
|
867 |
+
#: ReduxCore/inc/welcome.php:373
|
868 |
msgid "Flexible Product Grids"
|
869 |
msgstr ""
|
870 |
|
871 |
+
#: ReduxCore/inc/welcome.php:375
|
872 |
msgid ""
|
873 |
"The [downloads] shortcode will display a product grid that works with any "
|
874 |
"theme, no matter the size. It is even responsive!"
|
875 |
msgstr ""
|
876 |
|
877 |
+
#: ReduxCore/inc/welcome.php:377
|
878 |
msgid "Change the Number of Columns"
|
879 |
msgstr ""
|
880 |
|
881 |
+
#: ReduxCore/inc/welcome.php:379
|
882 |
msgid ""
|
883 |
"You can easily change the number of columns by adding the columns=\"x\" "
|
884 |
"parameter:"
|
885 |
msgstr ""
|
886 |
|
887 |
+
#: ReduxCore/inc/welcome.php:385
|
888 |
msgid "Additional Display Options"
|
889 |
msgstr ""
|
890 |
|
891 |
+
#: ReduxCore/inc/welcome.php:387
|
892 |
msgid ""
|
893 |
"The product grids can be customized in any way you wish and there is <a "
|
894 |
"href=\"%s\">extensive documentation</a> to assist you."
|
895 |
msgstr ""
|
896 |
|
897 |
+
#: ReduxCore/inc/welcome.php:392
|
898 |
msgid "Purchase Buttons Anywhere"
|
899 |
msgstr ""
|
900 |
|
901 |
+
#: ReduxCore/inc/welcome.php:397
|
902 |
msgid "The <em>[purchase_link]</em> Shortcode"
|
903 |
msgstr ""
|
904 |
|
905 |
+
#: ReduxCore/inc/welcome.php:399
|
906 |
msgid ""
|
907 |
"With easily accessible shortcodes to display purchase buttons, you can add "
|
908 |
"a Buy Now or Add to Cart button for any product anywhere on your site in "
|
909 |
"seconds."
|
910 |
msgstr ""
|
911 |
|
912 |
+
#: ReduxCore/inc/welcome.php:401
|
913 |
msgid "Buy Now Buttons"
|
914 |
msgstr ""
|
915 |
|
916 |
+
#: ReduxCore/inc/welcome.php:403
|
917 |
msgid ""
|
918 |
"Purchase buttons can behave as either Add to Cart or Buy Now buttons. With "
|
919 |
"Buy Now buttons customers are taken straight to PayPal, giving them the "
|
920 |
"most frictionless purchasing experience possible."
|
921 |
msgstr ""
|
922 |
|
923 |
+
#: ReduxCore/inc/welcome.php:409
|
924 |
msgid "Need Help?"
|
925 |
msgstr ""
|
926 |
|
927 |
+
#: ReduxCore/inc/welcome.php:413
|
928 |
msgid "Phenomenal Support"
|
929 |
msgstr ""
|
930 |
|
931 |
+
#: ReduxCore/inc/welcome.php:417
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
932 |
msgid "Need Even Faster Support?"
|
933 |
msgstr ""
|
934 |
|
935 |
+
#: ReduxCore/inc/welcome.php:425
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
936 |
msgid "Stay Up to Date"
|
937 |
msgstr ""
|
938 |
|
939 |
+
#: ReduxCore/inc/welcome.php:429
|
940 |
msgid "Get Notified of Extension Releases"
|
941 |
msgstr ""
|
942 |
|
943 |
+
#: ReduxCore/inc/welcome.php:433
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
944 |
msgid "Get Alerted About New Tutorials"
|
945 |
msgstr ""
|
946 |
|
947 |
+
#: ReduxCore/inc/welcome.php:441
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
948 |
msgid "Extensions for Everything"
|
949 |
msgstr ""
|
950 |
|
951 |
+
#: ReduxCore/inc/welcome.php:445
|
952 |
msgid "Over 250 Extensions"
|
953 |
msgstr ""
|
954 |
|
955 |
+
#: ReduxCore/inc/welcome.php:447
|
956 |
msgid ""
|
957 |
"Add-on plugins are available that greatly extend the default functionality "
|
958 |
"of Easy Digital Downloads. There are extensions for payment processors, "
|
960 |
"many, many more."
|
961 |
msgstr ""
|
962 |
|
963 |
+
#: ReduxCore/inc/welcome.php:449
|
964 |
msgid "Visit the Extension Store"
|
965 |
msgstr ""
|
966 |
|
967 |
+
#: ReduxCore/inc/welcome.php:480
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
968 |
msgid ""
|
969 |
"Redux Framework is created by a worldwide team of developers who <something "
|
970 |
"witty here>"
|
971 |
msgstr ""
|
972 |
|
973 |
+
#: ReduxCore/inc/welcome.php:500
|
974 |
msgid "No valid changlog was found."
|
975 |
msgstr ""
|
976 |
|
977 |
+
#: ReduxCore/inc/welcome.php:539
|
978 |
msgid "View %s"
|
979 |
msgstr ""
|
980 |
|
ReduxCore/languages/ro_RO.mo
CHANGED
Binary file
|
ReduxCore/languages/ru_RU.mo
CHANGED
Binary file
|
ReduxCore/languages/sk_SK.mo
CHANGED
Binary file
|
ReduxCore/languages/sl_SI.mo
CHANGED
Binary file
|
ReduxCore/languages/sv_SE.mo
CHANGED
Binary file
|
ReduxCore/languages/th.mo
CHANGED
Binary file
|
ReduxCore/languages/tr_TR.mo
CHANGED
Binary file
|
ReduxCore/languages/zh_CN.mo
CHANGED
Binary file
|
ReduxCore/languages/zh_CN.po
ADDED
@@ -0,0 +1,1060 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2014 Team Redux
|
2 |
+
# This file is distributed under the GPL3+.
|
3 |
+
# Translators:
|
4 |
+
# Wei He <iheywin@163.com>, 2014
|
5 |
+
# moyu <mr.moyus@gmail.com>, 2014
|
6 |
+
msgid ""
|
7 |
+
msgstr ""
|
8 |
+
"Project-Id-Version: Redux Framework\n"
|
9 |
+
"Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues\n"
|
10 |
+
"POT-Creation-Date: 2014-09-23 21:11:43+00:00\n"
|
11 |
+
"PO-Revision-Date: 2014-09-24 10:34+0000\n"
|
12 |
+
"Last-Translator: Dionizio Bonfim Bach <translations@djio.com.br>\n"
|
13 |
+
"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/redux-framework/language/zh_CN/)\n"
|
14 |
+
"MIME-Version: 1.0\n"
|
15 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
16 |
+
"Content-Transfer-Encoding: 8bit\n"
|
17 |
+
"Language: zh_CN\n"
|
18 |
+
"Plural-Forms: nplurals=1; plural=0;\n"
|
19 |
+
"X-Generator: grunt-wp-i18n 0.4.8\n"
|
20 |
+
"X-Poedit-Basepath: ../\n"
|
21 |
+
"X-Poedit-Bookmarks: \n"
|
22 |
+
"X-Poedit-Country: United States\n"
|
23 |
+
"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n"
|
24 |
+
"X-Poedit-SearchPath-0: .\n"
|
25 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
26 |
+
"X-Textdomain-Support: yes\n"
|
27 |
+
|
28 |
+
#: ReduxCore/extensions/customizer/extension_customizer.php:470
|
29 |
+
#: ReduxCore/framework.php:1939
|
30 |
+
msgid "You have changes that are not saved. Would you like to save them now?"
|
31 |
+
msgstr "你修改了某些设置项. 需要立即保存吗?"
|
32 |
+
|
33 |
+
#: ReduxCore/extensions/customizer/extension_customizer.php:471
|
34 |
+
#: ReduxCore/framework.php:1947
|
35 |
+
msgid "Are you sure? Resetting will lose all custom values."
|
36 |
+
msgstr "你确定要这样做? 重置将会抹掉当前所有设置数据值."
|
37 |
+
|
38 |
+
#: ReduxCore/extensions/customizer/extension_customizer.php:472
|
39 |
+
#: ReduxCore/framework.php:1963
|
40 |
+
msgid ""
|
41 |
+
"Your current options will be replaced with the values of this preset. Would "
|
42 |
+
"you like to proceed?"
|
43 |
+
msgstr "你当前的设置将会被现在的更改所覆盖. 确定继续?"
|
44 |
+
|
45 |
+
#: ReduxCore/extensions/customizer/extension_customizer.php:505
|
46 |
+
msgid "You have changes that are not saved. Would you like to save them now?"
|
47 |
+
msgstr "你还未保存更改. 需要立即保存吗?"
|
48 |
+
|
49 |
+
#: ReduxCore/extensions/customizer/extension_customizer.php:506
|
50 |
+
msgid "Are you sure? Resetting will lose all custom values."
|
51 |
+
msgstr "你确定要这样做? 重置将会抹掉当前所有设置数据值."
|
52 |
+
|
53 |
+
#: ReduxCore/extensions/customizer/extension_customizer.php:507
|
54 |
+
msgid ""
|
55 |
+
"Your current options will be replaced with the values of this preset. Would"
|
56 |
+
" you like to proceed?"
|
57 |
+
msgstr "你当前的设置将会被现在的更改所覆盖. 确定继续?"
|
58 |
+
|
59 |
+
#: ReduxCore/framework.php:206
|
60 |
+
msgid "Options panel created using %1$s"
|
61 |
+
msgstr "设置面板由 %1$s 提供开发"
|
62 |
+
|
63 |
+
#. Plugin Name of the plugin/theme
|
64 |
+
msgid "Redux Framework"
|
65 |
+
msgstr "Redux 开发框架"
|
66 |
+
|
67 |
+
#: ReduxCore/framework.php:210 ReduxCore/framework.php:214
|
68 |
+
msgid "Options"
|
69 |
+
msgstr "选项"
|
70 |
+
|
71 |
+
#: ReduxCore/framework.php:1358 ReduxCore/framework.php:1359
|
72 |
+
#: ReduxCore/framework.php:3544 ReduxCore/framework.php:3623
|
73 |
+
msgid "System Info"
|
74 |
+
msgstr "系统信息"
|
75 |
+
|
76 |
+
#: ReduxCore/framework.php:1955
|
77 |
+
msgid "Are you sure? Resetting will lose all custom values in this section."
|
78 |
+
msgstr "你确定要这样做? 重置将会抹掉当前选区的所有设置数据值."
|
79 |
+
|
80 |
+
#: ReduxCore/framework.php:1970
|
81 |
+
msgid "Please Wait"
|
82 |
+
msgstr "请稍等"
|
83 |
+
|
84 |
+
#: ReduxCore/framework.php:2095
|
85 |
+
msgid "Enable"
|
86 |
+
msgstr "启用"
|
87 |
+
|
88 |
+
#: ReduxCore/framework.php:2100
|
89 |
+
msgid "Disable"
|
90 |
+
msgstr "停用"
|
91 |
+
|
92 |
+
#: ReduxCore/framework.php:2106
|
93 |
+
msgid "moving the mouse over"
|
94 |
+
msgstr ""
|
95 |
+
|
96 |
+
#: ReduxCore/framework.php:2108
|
97 |
+
msgid "clicking"
|
98 |
+
msgstr ""
|
99 |
+
|
100 |
+
#: ReduxCore/framework.php:2112
|
101 |
+
msgid ""
|
102 |
+
"Hints are tooltips that popup when %d the hint icon, offering addition "
|
103 |
+
"information about the field in which they appear. They can be %d d by using"
|
104 |
+
" the link below."
|
105 |
+
msgstr ""
|
106 |
+
|
107 |
+
#: ReduxCore/framework.php:2117
|
108 |
+
msgid "Hints"
|
109 |
+
msgstr "提示"
|
110 |
+
|
111 |
+
#: ReduxCore/framework.php:2242
|
112 |
+
msgid "Default"
|
113 |
+
msgstr "默认"
|
114 |
+
|
115 |
+
#: ReduxCore/framework.php:3295
|
116 |
+
msgid "Warning- This options panel will not work properly without javascript!"
|
117 |
+
msgstr "警告! 若没有javascript, 这个设置区域将不能正常工作."
|
118 |
+
|
119 |
+
#: ReduxCore/framework.php:3342
|
120 |
+
msgid "Developer Mode Enabled"
|
121 |
+
msgstr ""
|
122 |
+
|
123 |
+
#: ReduxCore/framework.php:3370
|
124 |
+
msgid "Expand"
|
125 |
+
msgstr "展开"
|
126 |
+
|
127 |
+
#: ReduxCore/framework.php:3372 ReduxCore/framework.php:3680
|
128 |
+
msgid "Save Changes"
|
129 |
+
msgstr "保存更改"
|
130 |
+
|
131 |
+
#: ReduxCore/framework.php:3376 ReduxCore/framework.php:3684
|
132 |
+
msgid "Reset Section"
|
133 |
+
msgstr "重置选区"
|
134 |
+
|
135 |
+
#: ReduxCore/framework.php:3378 ReduxCore/framework.php:3686
|
136 |
+
msgid "Reset All"
|
137 |
+
msgstr "全部重置"
|
138 |
+
|
139 |
+
#: ReduxCore/framework.php:3383 ReduxCore/framework.php:3691
|
140 |
+
msgid "Working..."
|
141 |
+
msgstr "处理中..."
|
142 |
+
|
143 |
+
#: ReduxCore/framework.php:3403
|
144 |
+
msgid "Settings Imported!"
|
145 |
+
msgstr "设置数据已成功导入!"
|
146 |
+
|
147 |
+
#: ReduxCore/framework.php:3418
|
148 |
+
msgid "All Defaults Restored!"
|
149 |
+
msgstr "所有默认设置已恢复!"
|
150 |
+
|
151 |
+
#: ReduxCore/framework.php:3432
|
152 |
+
msgid "Section Defaults Restored!"
|
153 |
+
msgstr "选区的默认设置已恢复!"
|
154 |
+
|
155 |
+
#: ReduxCore/framework.php:3446
|
156 |
+
msgid "Settings Saved!"
|
157 |
+
msgstr "成功保存设置!"
|
158 |
+
|
159 |
+
#: ReduxCore/framework.php:3464
|
160 |
+
msgid "Settings have changed, you should save them!"
|
161 |
+
msgstr "设置项已改变, 你应该立即保存!"
|
162 |
+
|
163 |
+
#: ReduxCore/framework.php:3472
|
164 |
+
msgid "error(s) were found!"
|
165 |
+
msgstr "找到错误信息!"
|
166 |
+
|
167 |
+
#: ReduxCore/framework.php:3480
|
168 |
+
msgid "warning(s) were found!"
|
169 |
+
msgstr "找到警告信息!"
|
170 |
+
|
171 |
+
#: ReduxCore/inc/class.redux_filesystem.php:22
|
172 |
+
msgid "Unable to create a required directory. Please ensure that"
|
173 |
+
msgstr ""
|
174 |
+
|
175 |
+
#: ReduxCore/inc/class.redux_filesystem.php:24
|
176 |
+
msgid ""
|
177 |
+
"has the proper read/write permissions or enter your FTP information below."
|
178 |
+
msgstr ""
|
179 |
+
|
180 |
+
#: ReduxCore/inc/class.redux_functions.php:253
|
181 |
+
msgid "Dismiss"
|
182 |
+
msgstr "不再显示"
|
183 |
+
|
184 |
+
#: ReduxCore/inc/class.redux_themecheck.php:58
|
185 |
+
msgid ""
|
186 |
+
"The theme you are testing has %s embedded. We invite you to read the "
|
187 |
+
"%sTheme-Check Documentation%s to understand some warnings you will see "
|
188 |
+
"because of Redux."
|
189 |
+
msgstr ""
|
190 |
+
|
191 |
+
#: ReduxCore/inc/class.redux_themecheck.php:106
|
192 |
+
msgid ""
|
193 |
+
"The following directories & files are still located in your "
|
194 |
+
"<strong>Redux</strong> directory. They may cause errors in ThemeCheck."
|
195 |
+
msgstr ""
|
196 |
+
|
197 |
+
#: ReduxCore/inc/debug.php:41 ReduxCore/inc/debug.php:69
|
198 |
+
#: ReduxCore/inc/debug.php:76 ReduxCore/inc/debug.php:77
|
199 |
+
msgid "Options Object"
|
200 |
+
msgstr "设置对象"
|
201 |
+
|
202 |
+
#: ReduxCore/inc/debug.php:54
|
203 |
+
msgid "Show Object in Javascript Console Object"
|
204 |
+
msgstr "在Javsscript控制台显示对象"
|
205 |
+
|
206 |
+
#: ReduxCore/inc/fields/background/field_background.php:124
|
207 |
+
#: ReduxCore/inc/fields/color/field_color.php:72
|
208 |
+
#: ReduxCore/inc/fields/color_gradient/field_color_gradient.php:79
|
209 |
+
#: ReduxCore/inc/fields/color_gradient/field_color_gradient.php:91
|
210 |
+
#: ReduxCore/inc/fields/color_rgba/field_color_rgba.php:77
|
211 |
+
msgid "Transparent"
|
212 |
+
msgstr "透明"
|
213 |
+
|
214 |
+
#: ReduxCore/inc/fields/background/field_background.php:141
|
215 |
+
msgid "Background Repeat"
|
216 |
+
msgstr "重复背景"
|
217 |
+
|
218 |
+
#: ReduxCore/inc/fields/background/field_background.php:157
|
219 |
+
msgid "Background Clip"
|
220 |
+
msgstr "背景片段"
|
221 |
+
|
222 |
+
#: ReduxCore/inc/fields/background/field_background.php:173
|
223 |
+
msgid "Background Origin"
|
224 |
+
msgstr "背景定位"
|
225 |
+
|
226 |
+
#: ReduxCore/inc/fields/background/field_background.php:188
|
227 |
+
msgid "Background Size"
|
228 |
+
msgstr "背景尺寸"
|
229 |
+
|
230 |
+
#: ReduxCore/inc/fields/background/field_background.php:203
|
231 |
+
msgid "Background Attachment"
|
232 |
+
msgstr "背景附着方式"
|
233 |
+
|
234 |
+
#: ReduxCore/inc/fields/background/field_background.php:223
|
235 |
+
msgid "Background Position"
|
236 |
+
msgstr "背景位置"
|
237 |
+
|
238 |
+
#: ReduxCore/inc/fields/background/field_background.php:277
|
239 |
+
#: ReduxCore/inc/fields/media/field_media.php:149
|
240 |
+
msgid "No media selected"
|
241 |
+
msgstr "没有选择媒体"
|
242 |
+
|
243 |
+
#: ReduxCore/inc/fields/background/field_background.php:314
|
244 |
+
#: ReduxCore/inc/fields/media/field_media.php:193
|
245 |
+
#: ReduxCore/inc/fields/slides/field_slides.php:126
|
246 |
+
#: ReduxCore/inc/fields/slides/field_slides.php:188
|
247 |
+
msgid "Upload"
|
248 |
+
msgstr "上传"
|
249 |
+
|
250 |
+
#: ReduxCore/inc/fields/background/field_background.php:321
|
251 |
+
#: ReduxCore/inc/fields/media/field_media.php:200
|
252 |
+
#: ReduxCore/inc/fields/multi_text/field_multi_text.php:69
|
253 |
+
#: ReduxCore/inc/fields/multi_text/field_multi_text.php:73
|
254 |
+
#: ReduxCore/inc/fields/multi_text/field_multi_text.php:76
|
255 |
+
#: ReduxCore/inc/fields/slides/field_slides.php:133
|
256 |
+
#: ReduxCore/inc/fields/slides/field_slides.php:190
|
257 |
+
msgid "Remove"
|
258 |
+
msgstr "移除"
|
259 |
+
|
260 |
+
#: ReduxCore/inc/fields/border/field_border.php:114
|
261 |
+
#: ReduxCore/inc/fields/spacing/field_spacing.php:191
|
262 |
+
msgid "All"
|
263 |
+
msgstr "全部"
|
264 |
+
|
265 |
+
#: ReduxCore/inc/fields/border/field_border.php:127
|
266 |
+
#: ReduxCore/inc/fields/spacing/field_spacing.php:215
|
267 |
+
msgid "Top"
|
268 |
+
msgstr "上"
|
269 |
+
|
270 |
+
#: ReduxCore/inc/fields/border/field_border.php:134
|
271 |
+
#: ReduxCore/inc/fields/spacing/field_spacing.php:222
|
272 |
+
msgid "Right"
|
273 |
+
msgstr "右"
|
274 |
+
|
275 |
+
#: ReduxCore/inc/fields/border/field_border.php:141
|
276 |
+
#: ReduxCore/inc/fields/spacing/field_spacing.php:229
|
277 |
+
msgid "Bottom"
|
278 |
+
msgstr "下"
|
279 |
+
|
280 |
+
#: ReduxCore/inc/fields/border/field_border.php:148
|
281 |
+
#: ReduxCore/inc/fields/spacing/field_spacing.php:236
|
282 |
+
msgid "Left"
|
283 |
+
msgstr "左"
|
284 |
+
|
285 |
+
#: ReduxCore/inc/fields/border/field_border.php:162
|
286 |
+
msgid "Border style"
|
287 |
+
msgstr "描边样式"
|
288 |
+
|
289 |
+
#: ReduxCore/inc/fields/color_gradient/field_color_gradient.php:68
|
290 |
+
msgid "From "
|
291 |
+
msgstr "从"
|
292 |
+
|
293 |
+
#: ReduxCore/inc/fields/color_gradient/field_color_gradient.php:82
|
294 |
+
msgid "To "
|
295 |
+
msgstr "到"
|
296 |
+
|
297 |
+
#: ReduxCore/inc/fields/dimensions/field_dimensions.php:161
|
298 |
+
msgid "Width"
|
299 |
+
msgstr "宽度"
|
300 |
+
|
301 |
+
#: ReduxCore/inc/fields/dimensions/field_dimensions.php:177
|
302 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:436
|
303 |
+
msgid "Height"
|
304 |
+
msgstr "高度"
|
305 |
+
|
306 |
+
#: ReduxCore/inc/fields/dimensions/field_dimensions.php:188
|
307 |
+
#: ReduxCore/inc/fields/dimensions/field_dimensions.php:189
|
308 |
+
#: ReduxCore/inc/fields/spacing/field_spacing.php:245
|
309 |
+
#: ReduxCore/inc/fields/spacing/field_spacing.php:246
|
310 |
+
msgid "Units"
|
311 |
+
msgstr "部件"
|
312 |
+
|
313 |
+
#: ReduxCore/inc/fields/gallery/field_gallery.php:73
|
314 |
+
msgid "Add/Edit Gallery"
|
315 |
+
msgstr "添加/编辑 相册"
|
316 |
+
|
317 |
+
#: ReduxCore/inc/fields/gallery/field_gallery.php:74
|
318 |
+
msgid "Clear Gallery"
|
319 |
+
msgstr "清空相册"
|
320 |
+
|
321 |
+
#: ReduxCore/inc/fields/link_color/field_link_color.php:87
|
322 |
+
msgid "Regular"
|
323 |
+
msgstr "一般"
|
324 |
+
|
325 |
+
#: ReduxCore/inc/fields/link_color/field_link_color.php:91
|
326 |
+
msgid "Hover"
|
327 |
+
msgstr "悬浮"
|
328 |
+
|
329 |
+
#: ReduxCore/inc/fields/link_color/field_link_color.php:95
|
330 |
+
msgid "Visited"
|
331 |
+
msgstr "访问"
|
332 |
+
|
333 |
+
#: ReduxCore/inc/fields/link_color/field_link_color.php:99
|
334 |
+
msgid "Active"
|
335 |
+
msgstr "激活"
|
336 |
+
|
337 |
+
#: ReduxCore/inc/fields/multi_text/field_multi_text.php:61
|
338 |
+
msgid "Add More"
|
339 |
+
msgstr "添加更多"
|
340 |
+
|
341 |
+
#: ReduxCore/inc/fields/password/field_password.php:62
|
342 |
+
msgid "Password"
|
343 |
+
msgstr "密码"
|
344 |
+
|
345 |
+
#: ReduxCore/inc/fields/password/field_password.php:63
|
346 |
+
msgid "Username"
|
347 |
+
msgstr "用户名"
|
348 |
+
|
349 |
+
#: ReduxCore/inc/fields/select/field_select.php:82
|
350 |
+
#: ReduxCore/inc/fields/select_image/field_select_image.php:62
|
351 |
+
msgid "Select an item"
|
352 |
+
msgstr "选择一个项目"
|
353 |
+
|
354 |
+
#: ReduxCore/inc/fields/select/field_select.php:126
|
355 |
+
#: ReduxCore/inc/fields/select_image/field_select_image.php:143
|
356 |
+
msgid "No items of this type were found."
|
357 |
+
msgstr "没有找到符合条件的此类别项目."
|
358 |
+
|
359 |
+
#: ReduxCore/inc/fields/slides/field_slides.php:68
|
360 |
+
msgid "Slide"
|
361 |
+
msgstr ""
|
362 |
+
|
363 |
+
#: ReduxCore/inc/fields/slides/field_slides.php:73
|
364 |
+
msgid "New %s"
|
365 |
+
msgstr ""
|
366 |
+
|
367 |
+
#: ReduxCore/inc/fields/slides/field_slides.php:145
|
368 |
+
#: ReduxCore/inc/fields/slides/field_slides.php:200
|
369 |
+
msgid "Title"
|
370 |
+
msgstr "标题"
|
371 |
+
|
372 |
+
#: ReduxCore/inc/fields/slides/field_slides.php:149
|
373 |
+
#: ReduxCore/inc/fields/slides/field_slides.php:204
|
374 |
+
msgid "Description"
|
375 |
+
msgstr "描述"
|
376 |
+
|
377 |
+
#: ReduxCore/inc/fields/slides/field_slides.php:153
|
378 |
+
#: ReduxCore/inc/fields/slides/field_slides.php:207
|
379 |
+
msgid "URL"
|
380 |
+
msgstr "URL"
|
381 |
+
|
382 |
+
#: ReduxCore/inc/fields/slides/field_slides.php:167
|
383 |
+
#: ReduxCore/inc/fields/slides/field_slides.php:220
|
384 |
+
msgid "Delete"
|
385 |
+
msgstr "删除"
|
386 |
+
|
387 |
+
#: ReduxCore/inc/fields/slides/field_slides.php:223
|
388 |
+
msgid "Add %s"
|
389 |
+
msgstr ""
|
390 |
+
|
391 |
+
#: ReduxCore/inc/fields/switch/field_switch.php:41
|
392 |
+
msgid "On"
|
393 |
+
msgstr "开启"
|
394 |
+
|
395 |
+
#: ReduxCore/inc/fields/switch/field_switch.php:44
|
396 |
+
msgid "Off"
|
397 |
+
msgstr "关闭"
|
398 |
+
|
399 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:227
|
400 |
+
msgid "Font Family"
|
401 |
+
msgstr "字体源"
|
402 |
+
|
403 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:228
|
404 |
+
msgid "Font family"
|
405 |
+
msgstr "字体"
|
406 |
+
|
407 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:254
|
408 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:255
|
409 |
+
msgid "Backup Font Family"
|
410 |
+
msgstr "备份字体源"
|
411 |
+
|
412 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:269
|
413 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:276
|
414 |
+
msgid "Font style"
|
415 |
+
msgstr "字体样式"
|
416 |
+
|
417 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:270
|
418 |
+
msgid "Font Weight & Style"
|
419 |
+
msgstr "字体粗细样式"
|
420 |
+
|
421 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:276
|
422 |
+
msgid "Style"
|
423 |
+
msgstr "样式"
|
424 |
+
|
425 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:316
|
426 |
+
msgid "Font subsets"
|
427 |
+
msgstr "字体子项"
|
428 |
+
|
429 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:318
|
430 |
+
msgid "Font Subsets"
|
431 |
+
msgstr "字体子项"
|
432 |
+
|
433 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:319
|
434 |
+
msgid "Subsets"
|
435 |
+
msgstr "子项"
|
436 |
+
|
437 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:319
|
438 |
+
msgid "Font script"
|
439 |
+
msgstr "字体脚本"
|
440 |
+
|
441 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:336
|
442 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:337
|
443 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:338
|
444 |
+
msgid "Text Align"
|
445 |
+
msgstr "文字对齐方式"
|
446 |
+
|
447 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:359
|
448 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:360
|
449 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:361
|
450 |
+
msgid "Text Transform"
|
451 |
+
msgstr "文字转变"
|
452 |
+
|
453 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:382
|
454 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:383
|
455 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:384
|
456 |
+
msgid "Font Variant"
|
457 |
+
msgstr "字体多样性"
|
458 |
+
|
459 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:402
|
460 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:403
|
461 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:404
|
462 |
+
msgid "Text Decoration"
|
463 |
+
msgstr "字体装饰"
|
464 |
+
|
465 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:426
|
466 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:427
|
467 |
+
msgid "Font Size"
|
468 |
+
msgstr "字体尺寸"
|
469 |
+
|
470 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:427
|
471 |
+
msgid "Size"
|
472 |
+
msgstr "尺寸"
|
473 |
+
|
474 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:435
|
475 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:436
|
476 |
+
msgid "Line Height"
|
477 |
+
msgstr "行高"
|
478 |
+
|
479 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:444
|
480 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:445
|
481 |
+
msgid "Word Spacing"
|
482 |
+
msgstr "词组间距"
|
483 |
+
|
484 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:453
|
485 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:454
|
486 |
+
msgid "Letter Spacing"
|
487 |
+
msgstr "文字间距"
|
488 |
+
|
489 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:472
|
490 |
+
msgid "Font Color"
|
491 |
+
msgstr "字体颜色"
|
492 |
+
|
493 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:474
|
494 |
+
msgid "Font color"
|
495 |
+
msgstr "字体颜色"
|
496 |
+
|
497 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:841
|
498 |
+
msgid "Standard Fonts"
|
499 |
+
msgstr "标准字体"
|
500 |
+
|
501 |
+
#: ReduxCore/inc/fields/typography/field_typography.php:942
|
502 |
+
msgid "Google Webfonts"
|
503 |
+
msgstr "Google字体"
|
504 |
+
|
505 |
+
#: ReduxCore/inc/import_export.php:78
|
506 |
+
msgid "Import / Export Options"
|
507 |
+
msgstr "导入 / 导出 设置数据"
|
508 |
+
|
509 |
+
#: ReduxCore/inc/import_export.php:81
|
510 |
+
msgid "Import Options"
|
511 |
+
msgstr "导入选项"
|
512 |
+
|
513 |
+
#: ReduxCore/inc/import_export.php:82
|
514 |
+
msgid "Import from file"
|
515 |
+
msgstr "从文件导入"
|
516 |
+
|
517 |
+
#: ReduxCore/inc/import_export.php:82
|
518 |
+
msgid "Import from URL"
|
519 |
+
msgstr "从网址导入"
|
520 |
+
|
521 |
+
#: ReduxCore/inc/import_export.php:85
|
522 |
+
msgid ""
|
523 |
+
"Input your backup file below and hit Import to restore your sites options "
|
524 |
+
"from a backup."
|
525 |
+
msgstr "在下方输入你的备份文件, 然后点击导入来恢复你的备份设置."
|
526 |
+
|
527 |
+
#: ReduxCore/inc/import_export.php:90
|
528 |
+
msgid ""
|
529 |
+
"Input the URL to another sites options set and hit Import to load the "
|
530 |
+
"options from that site."
|
531 |
+
msgstr "输入另外一个站点的设置数据URL, 然后点击导入来远程导入设置."
|
532 |
+
|
533 |
+
#: ReduxCore/inc/import_export.php:94
|
534 |
+
msgid "Import"
|
535 |
+
msgstr "导入"
|
536 |
+
|
537 |
+
#: ReduxCore/inc/import_export.php:94
|
538 |
+
msgid ""
|
539 |
+
"WARNING! This will overwrite all existing option values, please proceed with"
|
540 |
+
" caution!"
|
541 |
+
msgstr "警告! 此动作将会复写所有当前设置数据值, 请小心使用!"
|
542 |
+
|
543 |
+
#: ReduxCore/inc/import_export.php:97
|
544 |
+
msgid "Export Options"
|
545 |
+
msgstr "导出设置数据"
|
546 |
+
|
547 |
+
#: ReduxCore/inc/import_export.php:100
|
548 |
+
msgid ""
|
549 |
+
"Here you can copy/download your current option settings. Keep this safe as "
|
550 |
+
"you can use it as a backup should anything go wrong, or you can use it to "
|
551 |
+
"restore your settings on this site (or any other site)."
|
552 |
+
msgstr "在此页面你可以复制/下载你当前的设置数据. 你可以以此作为备份以免发生任何错误, 或者你可以用来恢复此站点备份设置(或者其他网站设置)."
|
553 |
+
|
554 |
+
#: ReduxCore/inc/import_export.php:104
|
555 |
+
msgid "Copy"
|
556 |
+
msgstr "复制"
|
557 |
+
|
558 |
+
#: ReduxCore/inc/import_export.php:104
|
559 |
+
msgid "Download"
|
560 |
+
msgstr "下载"
|
561 |
+
|
562 |
+
#: ReduxCore/inc/import_export.php:104
|
563 |
+
msgid "Copy Link"
|
564 |
+
msgstr "复制链接"
|
565 |
+
|
566 |
+
#: ReduxCore/inc/import_export.php:140 ReduxCore/inc/import_export.php:149
|
567 |
+
#: ReduxCore/inc/import_export.php:150
|
568 |
+
msgid "Import / Export"
|
569 |
+
msgstr "导入 / 导出"
|
570 |
+
|
571 |
+
#: ReduxCore/inc/tracking.php:129
|
572 |
+
msgid "Help improve Our Panel"
|
573 |
+
msgstr "帮助改善我们的面板"
|
574 |
+
|
575 |
+
#: ReduxCore/inc/tracking.php:130
|
576 |
+
msgid ""
|
577 |
+
"Please helps us improve our panel by allowing us to gather anonymous usage "
|
578 |
+
"stats so we know which configurations, plugins and themes to test to ensure "
|
579 |
+
"compatibility."
|
580 |
+
msgstr ""
|
581 |
+
|
582 |
+
#: ReduxCore/inc/tracking.php:135
|
583 |
+
msgid "Allow tracking"
|
584 |
+
msgstr "允许追踪"
|
585 |
+
|
586 |
+
#: ReduxCore/inc/tracking.php:140
|
587 |
+
msgid "Do not allow tracking"
|
588 |
+
msgstr "不允许追踪"
|
589 |
+
|
590 |
+
#: ReduxCore/inc/tracking.php:151
|
591 |
+
msgid "Welcome to the Redux Demo Panel"
|
592 |
+
msgstr "欢迎来到Redux演示数据面板"
|
593 |
+
|
594 |
+
#: ReduxCore/inc/tracking.php:152 ReduxCore/inc/welcome.php:139
|
595 |
+
msgid "Getting Started"
|
596 |
+
msgstr "开始"
|
597 |
+
|
598 |
+
#: ReduxCore/inc/tracking.php:152
|
599 |
+
msgid ""
|
600 |
+
"This panel demonstrates the many features of Redux. Before digging in, we "
|
601 |
+
"suggest you get up to speed by reviewing %1$s."
|
602 |
+
msgstr "此演示数据面板包含了许多Redux的特性. 在深入了解前, 我们建议你先浏览 %1$s 来帮助你提高开发速度."
|
603 |
+
|
604 |
+
#: ReduxCore/inc/tracking.php:152
|
605 |
+
msgid "our documentation"
|
606 |
+
msgstr "说明文档"
|
607 |
+
|
608 |
+
#: ReduxCore/inc/tracking.php:153
|
609 |
+
msgid "Redux Generator"
|
610 |
+
msgstr "Redux生成器"
|
611 |
+
|
612 |
+
#: ReduxCore/inc/tracking.php:153
|
613 |
+
msgid ""
|
614 |
+
"Want to get a head start? Use the %1$s. It will create a customized "
|
615 |
+
"boilerplate theme or a standalone admin folder complete with all things "
|
616 |
+
"Redux (with the help of Underscores and TGM). Save yourself a headache and "
|
617 |
+
"try it today."
|
618 |
+
msgstr "想立即开始? 使用 %1$s. 它将会创建一个自定义的主题或者一个标准的管理员文件夹(由Undersocres与TGM提供). 节省你大量时间, 立即尝试下吧."
|
619 |
+
|
620 |
+
#: ReduxCore/inc/tracking.php:154
|
621 |
+
msgid "Redux Extensions"
|
622 |
+
msgstr "Redux插件"
|
623 |
+
|
624 |
+
#: ReduxCore/inc/tracking.php:154
|
625 |
+
msgid ""
|
626 |
+
"Did you know we have extensions, which greatly enhance the features of "
|
627 |
+
"Redux? Visit our %1$s to learn more!"
|
628 |
+
msgstr "你知道我们还有拓展插件吗? 这些插件将会极大拓展Redux设置面板的功能. 浏览我们的 %1$s 来了解更多!"
|
629 |
+
|
630 |
+
#: ReduxCore/inc/tracking.php:154
|
631 |
+
msgid "extensions directory"
|
632 |
+
msgstr "插件列表"
|
633 |
+
|
634 |
+
#: ReduxCore/inc/tracking.php:155
|
635 |
+
msgid "Like Redux?"
|
636 |
+
msgstr "喜欢Redux?"
|
637 |
+
|
638 |
+
#: ReduxCore/inc/tracking.php:155
|
639 |
+
msgid ""
|
640 |
+
"If so, please %1$s and consider making a %2$s to keep development of Redux "
|
641 |
+
"moving forward."
|
642 |
+
msgstr "如果如此, 请 %1$s 与考虑 %2$s 来支持我们的开发."
|
643 |
+
|
644 |
+
#: ReduxCore/inc/tracking.php:155
|
645 |
+
msgid "leave us a favorable review on WordPress.org"
|
646 |
+
msgstr "在WordPress.org给我们点赞吧"
|
647 |
+
|
648 |
+
#: ReduxCore/inc/tracking.php:155
|
649 |
+
msgid "donation"
|
650 |
+
msgstr "捐赠"
|
651 |
+
|
652 |
+
#: ReduxCore/inc/tracking.php:156
|
653 |
+
msgid "Newsletter"
|
654 |
+
msgstr "订阅"
|
655 |
+
|
656 |
+
#: ReduxCore/inc/tracking.php:156
|
657 |
+
msgid ""
|
658 |
+
"If you'd like to keep up to with all things Redux, please subscribe to our "
|
659 |
+
"newsletter"
|
660 |
+
msgstr "如果你想了解关于Redux的最新消息, 请订阅我们的内容吧."
|
661 |
+
|
662 |
+
#: ReduxCore/inc/tracking.php:157
|
663 |
+
msgid "Email address"
|
664 |
+
msgstr "Email地址"
|
665 |
+
|
666 |
+
#: ReduxCore/inc/tracking.php:157
|
667 |
+
msgid "Subscribe"
|
668 |
+
msgstr "d你个月"
|
669 |
+
|
670 |
+
#: ReduxCore/inc/tracking.php:166
|
671 |
+
msgid "Close"
|
672 |
+
msgstr "关闭"
|
673 |
+
|
674 |
+
#: ReduxCore/inc/validation/color/validation_color.php:15
|
675 |
+
#: ReduxCore/inc/validation/color_rgba/validation_color_rgba.php:14
|
676 |
+
#: ReduxCore/inc/validation/colorrgba/validation_colorrgba.php:16
|
677 |
+
msgid "This field must be a valid color value."
|
678 |
+
msgstr "此项必须填写一个有效的颜色值."
|
679 |
+
|
680 |
+
#: ReduxCore/inc/validation/comma_numeric/validation_comma_numeric.php:16
|
681 |
+
msgid ""
|
682 |
+
"You must provide a comma separated list of numerical values for this option."
|
683 |
+
msgstr "你必须填写一列由英文逗号分隔的数字串."
|
684 |
+
|
685 |
+
#: ReduxCore/inc/validation/date/validation_date.php:16
|
686 |
+
msgid "This field must be a valid date."
|
687 |
+
msgstr "此项必须填写一个有效的日期."
|
688 |
+
|
689 |
+
#: ReduxCore/inc/validation/email/validation_email.php:16
|
690 |
+
#: ReduxCore/inc/validation/email_not_empty/validation_email_not_empty.php:16
|
691 |
+
msgid "You must provide a valid email for this option."
|
692 |
+
msgstr "你必须填写一个有效的电子邮件地址."
|
693 |
+
|
694 |
+
#: ReduxCore/inc/validation/no_html/validation_no_html.php:15
|
695 |
+
msgid ""
|
696 |
+
"You must not enter any HTML in this field, all HTML tags have been removed."
|
697 |
+
msgstr "你不能在此填写任何HTML代码, 所有HTML代码将会被移除."
|
698 |
+
|
699 |
+
#: ReduxCore/inc/validation/no_special_chars/validation_no_special_chars.php:16
|
700 |
+
msgid ""
|
701 |
+
"You must not enter any special characters in this field, all special "
|
702 |
+
"characters have been removed."
|
703 |
+
msgstr "你不能在此填写任何特殊文字符号, 所有特殊文字符号将会被移除."
|
704 |
+
|
705 |
+
#: ReduxCore/inc/validation/not_empty/validation_not_empty.php:16
|
706 |
+
msgid "This field cannot be empty. Please provide a value."
|
707 |
+
msgstr "此项不能为空. 请提供一个有效的值."
|
708 |
+
|
709 |
+
#: ReduxCore/inc/validation/numeric/validation_numeric.php:16
|
710 |
+
#: ReduxCore/inc/validation/numeric_not_empty/validation_numeric_not_empty.php:16
|
711 |
+
msgid "You must provide a numerical value for this option."
|
712 |
+
msgstr "你必须填写一个有效的数字值."
|
713 |
+
|
714 |
+
#: ReduxCore/inc/validation/url/validation_url.php:16
|
715 |
+
msgid "You must provide a valid URL for this option."
|
716 |
+
msgstr "你必须填写一个有效的URL地址."
|
717 |
+
|
718 |
+
#: ReduxCore/inc/welcome.php:40
|
719 |
+
msgid "Welcome to Redux Framework"
|
720 |
+
msgstr ""
|
721 |
+
|
722 |
+
#: ReduxCore/inc/welcome.php:48 ReduxCore/inc/welcome.php:295
|
723 |
+
msgid "Redux Framework Changelog"
|
724 |
+
msgstr ""
|
725 |
+
|
726 |
+
#: ReduxCore/inc/welcome.php:56
|
727 |
+
msgid "Getting started with Redux Framework"
|
728 |
+
msgstr ""
|
729 |
+
|
730 |
+
#: ReduxCore/inc/welcome.php:64
|
731 |
+
msgid "The people that develop Redux Framework"
|
732 |
+
msgstr ""
|
733 |
+
|
734 |
+
#: ReduxCore/inc/welcome.php:135
|
735 |
+
msgid "What's New"
|
736 |
+
msgstr ""
|
737 |
+
|
738 |
+
#: ReduxCore/inc/welcome.php:143
|
739 |
+
msgid "Changelog"
|
740 |
+
msgstr "修订历史"
|
741 |
+
|
742 |
+
#: ReduxCore/inc/welcome.php:147
|
743 |
+
msgid "Credits"
|
744 |
+
msgstr "鸣谢"
|
745 |
+
|
746 |
+
#: ReduxCore/inc/welcome.php:164 ReduxCore/inc/welcome.php:333
|
747 |
+
#: ReduxCore/inc/welcome.php:471
|
748 |
+
msgid "Welcome to Redux Framework %s"
|
749 |
+
msgstr ""
|
750 |
+
|
751 |
+
#: ReduxCore/inc/welcome.php:167
|
752 |
+
msgid ""
|
753 |
+
"Thank you for updating to the latest version! Redux Framework %s is ready to"
|
754 |
+
" <add description>"
|
755 |
+
msgstr ""
|
756 |
+
|
757 |
+
#: ReduxCore/inc/welcome.php:169 ReduxCore/inc/welcome.php:300
|
758 |
+
#: ReduxCore/inc/welcome.php:338 ReduxCore/inc/welcome.php:476
|
759 |
+
msgid "Version %s"
|
760 |
+
msgstr "%s版本"
|
761 |
+
|
762 |
+
#: ReduxCore/inc/welcome.php:174
|
763 |
+
msgid "Some Feature"
|
764 |
+
msgstr ""
|
765 |
+
|
766 |
+
#: ReduxCore/inc/welcome.php:178 ReduxCore/inc/welcome.php:182
|
767 |
+
#: ReduxCore/inc/welcome.php:195 ReduxCore/inc/welcome.php:199
|
768 |
+
#: ReduxCore/inc/welcome.php:203 ReduxCore/inc/welcome.php:208
|
769 |
+
#: ReduxCore/inc/welcome.php:221 ReduxCore/inc/welcome.php:225
|
770 |
+
#: ReduxCore/inc/welcome.php:230
|
771 |
+
msgid "Feature"
|
772 |
+
msgstr ""
|
773 |
+
|
774 |
+
#: ReduxCore/inc/welcome.php:190
|
775 |
+
msgid "Some feature"
|
776 |
+
msgstr ""
|
777 |
+
|
778 |
+
#: ReduxCore/inc/welcome.php:217
|
779 |
+
msgid "More Features"
|
780 |
+
msgstr ""
|
781 |
+
|
782 |
+
#: ReduxCore/inc/welcome.php:223 ReduxCore/inc/welcome.php:227
|
783 |
+
#: ReduxCore/inc/welcome.php:232
|
784 |
+
msgid "description"
|
785 |
+
msgstr ""
|
786 |
+
|
787 |
+
#: ReduxCore/inc/welcome.php:238
|
788 |
+
msgid "Additional Updates"
|
789 |
+
msgstr ""
|
790 |
+
|
791 |
+
#: ReduxCore/inc/welcome.php:242 ReduxCore/inc/welcome.php:246
|
792 |
+
#: ReduxCore/inc/welcome.php:252 ReduxCore/inc/welcome.php:256
|
793 |
+
#: ReduxCore/inc/welcome.php:262 ReduxCore/inc/welcome.php:266
|
794 |
+
msgid "Cool thing"
|
795 |
+
msgstr ""
|
796 |
+
|
797 |
+
#: ReduxCore/inc/welcome.php:244 ReduxCore/inc/welcome.php:248
|
798 |
+
#: ReduxCore/inc/welcome.php:254 ReduxCore/inc/welcome.php:258
|
799 |
+
#: ReduxCore/inc/welcome.php:264 ReduxCore/inc/welcome.php:268
|
800 |
+
msgid "cool thing description."
|
801 |
+
msgstr ""
|
802 |
+
|
803 |
+
#: ReduxCore/inc/welcome.php:277 ReduxCore/inc/welcome.php:316
|
804 |
+
msgid "Go to Redux Framework"
|
805 |
+
msgstr ""
|
806 |
+
|
807 |
+
#: ReduxCore/inc/welcome.php:278
|
808 |
+
msgid "View the Full Changelog"
|
809 |
+
msgstr ""
|
810 |
+
|
811 |
+
#: ReduxCore/inc/welcome.php:298 ReduxCore/inc/welcome.php:336
|
812 |
+
#: ReduxCore/inc/welcome.php:474
|
813 |
+
msgid ""
|
814 |
+
"Thank you for updating to the latest version! Redux Framework %s is ready to"
|
815 |
+
" make your <description>"
|
816 |
+
msgstr ""
|
817 |
+
|
818 |
+
#: ReduxCore/inc/welcome.php:305
|
819 |
+
msgid "Full Changelog"
|
820 |
+
msgstr ""
|
821 |
+
|
822 |
+
#: ReduxCore/inc/welcome.php:342
|
823 |
+
msgid ""
|
824 |
+
"Use the tips below to get started using Redux Framework. You'll be up and "
|
825 |
+
"running in no time!"
|
826 |
+
msgstr ""
|
827 |
+
|
828 |
+
#: ReduxCore/inc/welcome.php:345
|
829 |
+
msgid "Creating Your First Panel"
|
830 |
+
msgstr ""
|
831 |
+
|
832 |
+
#: ReduxCore/inc/welcome.php:350
|
833 |
+
msgid "<a href=\"%s\">%s → Add New</a>"
|
834 |
+
msgstr ""
|
835 |
+
|
836 |
+
#: ReduxCore/inc/welcome.php:352
|
837 |
+
msgid ""
|
838 |
+
"The %s menu is your access point for all aspects of your Easy Digital "
|
839 |
+
"Downloads product creation and setup. To create your first product, simply "
|
840 |
+
"click Add New and then fill out the product details."
|
841 |
+
msgstr ""
|
842 |
+
|
843 |
+
#: ReduxCore/inc/welcome.php:354
|
844 |
+
msgid "Product Price"
|
845 |
+
msgstr ""
|
846 |
+
|
847 |
+
#: ReduxCore/inc/welcome.php:356
|
848 |
+
msgid ""
|
849 |
+
"Products can have simple prices or variable prices if you wish to have more "
|
850 |
+
"than one price point for a product. For a single price, simply enter the "
|
851 |
+
"price. For multiple price points, click <em>Enable variable pricing</em> and"
|
852 |
+
" enter the options."
|
853 |
+
msgstr ""
|
854 |
+
|
855 |
+
#: ReduxCore/inc/welcome.php:358
|
856 |
+
msgid "Download Files"
|
857 |
+
msgstr ""
|
858 |
+
|
859 |
+
#: ReduxCore/inc/welcome.php:360
|
860 |
+
msgid ""
|
861 |
+
"Uploading the downloadable files is simple. Click <em>Upload File</em> in "
|
862 |
+
"the Download Files section and choose your download file. To add more than "
|
863 |
+
"one file, simply click the <em>Add New</em> button."
|
864 |
+
msgstr ""
|
865 |
+
|
866 |
+
#: ReduxCore/inc/welcome.php:366
|
867 |
+
msgid "Display a Product Grid"
|
868 |
+
msgstr ""
|
869 |
+
|
870 |
+
#: ReduxCore/inc/welcome.php:373
|
871 |
+
msgid "Flexible Product Grids"
|
872 |
+
msgstr ""
|
873 |
+
|
874 |
+
#: ReduxCore/inc/welcome.php:375
|
875 |
+
msgid ""
|
876 |
+
"The [downloads] shortcode will display a product grid that works with any "
|
877 |
+
"theme, no matter the size. It is even responsive!"
|
878 |
+
msgstr ""
|
879 |
+
|
880 |
+
#: ReduxCore/inc/welcome.php:377
|
881 |
+
msgid "Change the Number of Columns"
|
882 |
+
msgstr ""
|
883 |
+
|
884 |
+
#: ReduxCore/inc/welcome.php:379
|
885 |
+
msgid ""
|
886 |
+
"You can easily change the number of columns by adding the columns=\"x\" "
|
887 |
+
"parameter:"
|
888 |
+
msgstr ""
|
889 |
+
|
890 |
+
#: ReduxCore/inc/welcome.php:385
|
891 |
+
msgid "Additional Display Options"
|
892 |
+
msgstr ""
|
893 |
+
|
894 |
+
#: ReduxCore/inc/welcome.php:387
|
895 |
+
msgid ""
|
896 |
+
"The product grids can be customized in any way you wish and there is <a "
|
897 |
+
"href=\"%s\">extensive documentation</a> to assist you."
|
898 |
+
msgstr ""
|
899 |
+
|
900 |
+
#: ReduxCore/inc/welcome.php:392
|
901 |
+
msgid "Purchase Buttons Anywhere"
|
902 |
+
msgstr ""
|
903 |
+
|
904 |
+
#: ReduxCore/inc/welcome.php:397
|
905 |
+
msgid "The <em>[purchase_link]</em> Shortcode"
|
906 |
+
msgstr ""
|
907 |
+
|
908 |
+
#: ReduxCore/inc/welcome.php:399
|
909 |
+
msgid ""
|
910 |
+
"With easily accessible shortcodes to display purchase buttons, you can add a"
|
911 |
+
" Buy Now or Add to Cart button for any product anywhere on your site in "
|
912 |
+
"seconds."
|
913 |
+
msgstr ""
|
914 |
+
|
915 |
+
#: ReduxCore/inc/welcome.php:401
|
916 |
+
msgid "Buy Now Buttons"
|
917 |
+
msgstr ""
|
918 |
+
|
919 |
+
#: ReduxCore/inc/welcome.php:403
|
920 |
+
msgid ""
|
921 |
+
"Purchase buttons can behave as either Add to Cart or Buy Now buttons. With "
|
922 |
+
"Buy Now buttons customers are taken straight to PayPal, giving them the most"
|
923 |
+
" frictionless purchasing experience possible."
|
924 |
+
msgstr ""
|
925 |
+
|
926 |
+
#: ReduxCore/inc/welcome.php:409
|
927 |
+
msgid "Need Help?"
|
928 |
+
msgstr ""
|
929 |
+
|
930 |
+
#: ReduxCore/inc/welcome.php:413
|
931 |
+
msgid "Phenomenal Support"
|
932 |
+
msgstr ""
|
933 |
+
|
934 |
+
#: ReduxCore/inc/welcome.php:417
|
935 |
+
msgid "Need Even Faster Support?"
|
936 |
+
msgstr ""
|
937 |
+
|
938 |
+
#: ReduxCore/inc/welcome.php:425
|
939 |
+
msgid "Stay Up to Date"
|
940 |
+
msgstr ""
|
941 |
+
|
942 |
+
#: ReduxCore/inc/welcome.php:429
|
943 |
+
msgid "Get Notified of Extension Releases"
|
944 |
+
msgstr ""
|
945 |
+
|
946 |
+
#: ReduxCore/inc/welcome.php:433
|
947 |
+
msgid "Get Alerted About New Tutorials"
|
948 |
+
msgstr ""
|
949 |
+
|
950 |
+
#: ReduxCore/inc/welcome.php:441
|
951 |
+
msgid "Extensions for Everything"
|
952 |
+
msgstr ""
|
953 |
+
|
954 |
+
#: ReduxCore/inc/welcome.php:445
|
955 |
+
msgid "Over 250 Extensions"
|
956 |
+
msgstr "多达250个扩展插件"
|
957 |
+
|
958 |
+
#: ReduxCore/inc/welcome.php:447
|
959 |
+
msgid ""
|
960 |
+
"Add-on plugins are available that greatly extend the default functionality "
|
961 |
+
"of Easy Digital Downloads. There are extensions for payment processors, such"
|
962 |
+
" as Stripe and PayPal, extensions for newsletter integrations, and many, "
|
963 |
+
"many more."
|
964 |
+
msgstr ""
|
965 |
+
|
966 |
+
#: ReduxCore/inc/welcome.php:449
|
967 |
+
msgid "Visit the Extension Store"
|
968 |
+
msgstr ""
|
969 |
+
|
970 |
+
#: ReduxCore/inc/welcome.php:480
|
971 |
+
msgid ""
|
972 |
+
"Redux Framework is created by a worldwide team of developers who <something "
|
973 |
+
"witty here>"
|
974 |
+
msgstr ""
|
975 |
+
|
976 |
+
#: ReduxCore/inc/welcome.php:500
|
977 |
+
msgid "No valid changlog was found."
|
978 |
+
msgstr ""
|
979 |
+
|
980 |
+
#: ReduxCore/inc/welcome.php:539
|
981 |
+
msgid "View %s"
|
982 |
+
msgstr ""
|
983 |
+
|
984 |
+
#: class.redux-plugin.php:306
|
985 |
+
msgid "Redux Framework has an embedded demo."
|
986 |
+
msgstr "Redux 开发框架有一个视频演示."
|
987 |
+
|
988 |
+
#: class.redux-plugin.php:306
|
989 |
+
msgid "Click here to activate the sample config file."
|
990 |
+
msgstr "点击此处启用演示配置文件."
|
991 |
+
|
992 |
+
#: class.redux-plugin.php:407
|
993 |
+
msgid "Repo"
|
994 |
+
msgstr "协议"
|
995 |
+
|
996 |
+
#: class.redux-plugin.php:408
|
997 |
+
msgid "Generator"
|
998 |
+
msgstr "生成器"
|
999 |
+
|
1000 |
+
#: class.redux-plugin.php:409
|
1001 |
+
msgid "Issues"
|
1002 |
+
msgstr "问题"
|
1003 |
+
|
1004 |
+
#: class.redux-plugin.php:410
|
1005 |
+
msgid "Documentation"
|
1006 |
+
msgstr "文档"
|
1007 |
+
|
1008 |
+
#: class.redux-plugin.php:415
|
1009 |
+
msgid "Deactivate Demo Mode"
|
1010 |
+
msgstr "停用演示模式"
|
1011 |
+
|
1012 |
+
#: class.redux-plugin.php:417
|
1013 |
+
msgid "Activate Demo Mode"
|
1014 |
+
msgstr "启用演示模式"
|
1015 |
+
|
1016 |
+
#: tests/includes/class-tivwp-dm-controller.php:28
|
1017 |
+
msgid "Must call in of after the \"plugins_loaded\" action."
|
1018 |
+
msgstr "必须在\"plugins_loaded\"动作后执行."
|
1019 |
+
|
1020 |
+
#: tests/includes/class-tivwp-dm-controller.php:138
|
1021 |
+
msgid "Unknown action \"%1$s\" specified for %2$s"
|
1022 |
+
msgstr "%2$s 挂载的未知动作 \"%1$s\" "
|
1023 |
+
|
1024 |
+
#: tests/includes/class-tivwp-dm-controller.php:143
|
1025 |
+
msgid "The unknown action has been replaced with \"%s\""
|
1026 |
+
msgstr "此位置的动作将会被 \"%s\" 代替"
|
1027 |
+
|
1028 |
+
#: tests/includes/class-tivwp-dm-controller.php:158
|
1029 |
+
msgid "Automatic action performed: \"%s\""
|
1030 |
+
msgstr "自动动作: \"%s\""
|
1031 |
+
|
1032 |
+
#: tests/includes/class-tivwp-dm.php:112
|
1033 |
+
msgid "Activate Development Plugins"
|
1034 |
+
msgstr "启用开发插件"
|
1035 |
+
|
1036 |
+
#: tests/includes/class-tivwp-dm.php:119
|
1037 |
+
msgid "Deactivate Development Plugins"
|
1038 |
+
msgstr "停用开发插件"
|
1039 |
+
|
1040 |
+
#: tests/includes/class-tivwp-dm.php:131
|
1041 |
+
msgid "You do not have sufficient permissions to access this page."
|
1042 |
+
msgstr "您没有足够的权限访问该页面。"
|
1043 |
+
|
1044 |
+
#. Plugin URI of the plugin/theme
|
1045 |
+
msgid "http://wordpress.org/plugins/redux-framework"
|
1046 |
+
msgstr ""
|
1047 |
+
|
1048 |
+
#. Description of the plugin/theme
|
1049 |
+
msgid ""
|
1050 |
+
"Redux is a simple, truly extensible options framework for WordPress themes "
|
1051 |
+
"and plugins."
|
1052 |
+
msgstr ""
|
1053 |
+
|
1054 |
+
#. Author of the plugin/theme
|
1055 |
+
msgid "Team Redux"
|
1056 |
+
msgstr ""
|
1057 |
+
|
1058 |
+
#. Author URI of the plugin/theme
|
1059 |
+
msgid "http://reduxframework.com"
|
1060 |
+
msgstr ""
|
redux-framework.php
CHANGED
@@ -12,7 +12,7 @@
|
|
12 |
* Description: Redux is a simple, truly extensible options framework for WordPress themes and plugins.
|
13 |
* Author: Team Redux
|
14 |
* Author URI: http://reduxframework.com
|
15 |
-
* Version: 3.3.
|
16 |
* Text Domain: redux-framework
|
17 |
* License: GPL3+
|
18 |
* License URI: http://www.gnu.org/licenses/gpl-3.0.txt
|
@@ -46,4 +46,4 @@ register_deactivation_hook( __FILE__, array( 'ReduxFrameworkPlugin', 'deactivate
|
|
46 |
// Waiting until all plugins have been loaded prevents the ReduxFramework class from
|
47 |
// being created, and fails the !class_exists('ReduxFramework') check in the sample_config.php,
|
48 |
// and thus prevents any plugin using Redux from loading their config file.
|
49 |
-
ReduxFrameworkPlugin::instance();
|
12 |
* Description: Redux is a simple, truly extensible options framework for WordPress themes and plugins.
|
13 |
* Author: Team Redux
|
14 |
* Author URI: http://reduxframework.com
|
15 |
+
* Version: 3.3.9
|
16 |
* Text Domain: redux-framework
|
17 |
* License: GPL3+
|
18 |
* License URI: http://www.gnu.org/licenses/gpl-3.0.txt
|
46 |
// Waiting until all plugins have been loaded prevents the ReduxFramework class from
|
47 |
// being created, and fails the !class_exists('ReduxFramework') check in the sample_config.php,
|
48 |
// and thus prevents any plugin using Redux from loading their config file.
|
49 |
+
ReduxFrameworkPlugin::instance();
|
sample/barebones-config.php
CHANGED
@@ -1,224 +1,249 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
/**
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
|
8 |
-
if (!class_exists('Redux_Framework_sample_config')) {
|
9 |
|
10 |
-
|
11 |
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
|
17 |
-
|
18 |
|
19 |
-
|
20 |
-
|
21 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
|
23 |
-
// This is needed. Bah WordPress bugs. ;)
|
24 |
-
if ( true == Redux_Helpers::isTheme(__FILE__) ) {
|
25 |
-
$this->initSettings();
|
26 |
-
} else {
|
27 |
-
add_action('plugins_loaded', array($this, 'initSettings'), 10);
|
28 |
}
|
29 |
|
30 |
-
|
31 |
|
32 |
-
|
|
|
33 |
|
34 |
-
|
35 |
-
|
36 |
|
37 |
-
|
38 |
-
|
39 |
|
40 |
-
|
41 |
-
|
|
|
42 |
|
43 |
-
|
44 |
-
return;
|
45 |
}
|
46 |
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
)
|
72 |
-
)
|
73 |
-
)
|
74 |
-
|
75 |
-
}
|
76 |
|
77 |
-
|
78 |
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
'
|
152 |
-
|
153 |
-
'
|
154 |
-
'
|
155 |
-
'
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
170 |
),
|
171 |
-
'
|
172 |
-
'
|
173 |
-
'
|
174 |
-
'event' => 'click mouseleave',
|
175 |
),
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
'
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
208 |
} else {
|
209 |
-
$
|
210 |
}
|
211 |
-
|
212 |
-
|
213 |
-
$this->args['
|
214 |
}
|
215 |
|
216 |
-
// Add content after the form.
|
217 |
-
$this->args['footer_text'] = __('<p>This text is displayed below the options panel. It isn\'t required, but more info is always better! The footer_text field accepts all HTML.</p>', 'redux-framework-demo');
|
218 |
}
|
219 |
|
|
|
|
|
220 |
}
|
221 |
-
|
222 |
-
global $reduxConfig;
|
223 |
-
$reduxConfig = new Redux_Framework_sample_config();
|
224 |
-
}
|
1 |
<?php
|
2 |
|
3 |
+
/**
|
4 |
+
* ReduxFramework Sample Config File
|
5 |
+
* For full documentation, please visit: http://docs.reduxframework.com/
|
6 |
+
*/
|
7 |
|
8 |
+
if ( ! class_exists( 'Redux_Framework_sample_config' ) ) {
|
9 |
|
10 |
+
class Redux_Framework_sample_config {
|
11 |
|
12 |
+
public $args = array();
|
13 |
+
public $sections = array();
|
14 |
+
public $theme;
|
15 |
+
public $ReduxFramework;
|
16 |
|
17 |
+
public function __construct() {
|
18 |
|
19 |
+
if ( ! class_exists( 'ReduxFramework' ) ) {
|
20 |
+
return;
|
21 |
+
}
|
22 |
+
|
23 |
+
// This is needed. Bah WordPress bugs. ;)
|
24 |
+
if ( true == Redux_Helpers::isTheme( __FILE__ ) ) {
|
25 |
+
$this->initSettings();
|
26 |
+
} else {
|
27 |
+
add_action( 'plugins_loaded', array( $this, 'initSettings' ), 10 );
|
28 |
+
}
|
29 |
|
|
|
|
|
|
|
|
|
|
|
30 |
}
|
31 |
|
32 |
+
public function initSettings() {
|
33 |
|
34 |
+
// Set the default arguments
|
35 |
+
$this->setArguments();
|
36 |
|
37 |
+
// Set a few help tabs so you can see how it's done
|
38 |
+
$this->setHelpTabs();
|
39 |
|
40 |
+
// Create the sections and fields
|
41 |
+
$this->setSections();
|
42 |
|
43 |
+
if ( ! isset( $this->args['opt_name'] ) ) { // No errors please
|
44 |
+
return;
|
45 |
+
}
|
46 |
|
47 |
+
$this->ReduxFramework = new ReduxFramework( $this->sections, $this->args );
|
|
|
48 |
}
|
49 |
|
50 |
+
public function setSections() {
|
51 |
+
|
52 |
+
|
53 |
+
// ACTUAL DECLARATION OF SECTIONS
|
54 |
+
$this->sections[] = array(
|
55 |
+
'title' => __( 'Home Settings', 'redux-framework-demo' ),
|
56 |
+
'desc' => sprintf( __( 'Redux Framework was created with the developer in mind. It allows for any theme developer to have an advanced theme panel with most of the features a developer would need. For more information check out the Github repo at: %d', 'redux-framework-demo' ), '<a href="' . 'https://' . 'github.com/ReduxFramework/Redux-Framework">' . 'https://' . 'github.com/ReduxFramework/Redux-Framework</a>' ),
|
57 |
+
'icon' => 'el-icon-home',
|
58 |
+
// 'submenu' => false, // Setting submenu to false on a given section will hide it from the WordPress sidebar menu!
|
59 |
+
'fields' => array(
|
60 |
+
|
61 |
+
array(
|
62 |
+
'id' => 'opt-web-fonts',
|
63 |
+
'type' => 'media',
|
64 |
+
'title' => __( 'Web Fonts', 'redux-framework-demo' ),
|
65 |
+
'compiler' => 'true',
|
66 |
+
'mode' => false,
|
67 |
+
// Can be set to false to allow any media type, or can also be set to any mime type.
|
68 |
+
'desc' => __( 'Basic media uploader with disabled URL input field.', 'redux-framework-demo' ),
|
69 |
+
'subtitle' => __( 'Upload any media using the WordPress native uploader', 'redux-framework-demo' ),
|
70 |
+
'hint' => array(
|
71 |
+
//'title' => '',
|
72 |
+
'content' => 'This is a <b>hint</b> tool-tip for the webFonts field.<br/><br/>Add any HTML based text you like here.',
|
73 |
+
)
|
74 |
+
),
|
75 |
+
)
|
76 |
+
);
|
77 |
+
}
|
|
|
78 |
|
79 |
+
public function setHelpTabs() {
|
80 |
|
81 |
+
// Custom page help tabs, displayed using the help API. Tabs are shown in order of definition.
|
82 |
+
$this->args['help_tabs'][] = array(
|
83 |
+
'id' => 'redux-help-tab-1',
|
84 |
+
'title' => __( 'Theme Information 1', 'redux-framework-demo' ),
|
85 |
+
'content' => __( '<p>This is the tab content, HTML is allowed.</p>', 'redux-framework-demo' )
|
86 |
+
);
|
87 |
|
88 |
+
$this->args['help_tabs'][] = array(
|
89 |
+
'id' => 'redux-help-tab-2',
|
90 |
+
'title' => __( 'Theme Information 2', 'redux-framework-demo' ),
|
91 |
+
'content' => __( '<p>This is the tab content, HTML is allowed.</p>', 'redux-framework-demo' )
|
92 |
+
);
|
93 |
|
94 |
+
// Set the help sidebar
|
95 |
+
$this->args['help_sidebar'] = __( '<p>This is the sidebar content, HTML is allowed.</p>', 'redux-framework-demo' );
|
96 |
+
}
|
97 |
|
98 |
+
/**
|
99 |
+
* All the possible arguments for Redux.
|
100 |
+
* For full documentation on arguments, please refer to: https://github.com/ReduxFramework/ReduxFramework/wiki/Arguments
|
101 |
+
* */
|
102 |
+
public function setArguments() {
|
103 |
+
|
104 |
+
$theme = wp_get_theme(); // For use with some settings. Not necessary.
|
105 |
+
|
106 |
+
$this->args = array(
|
107 |
+
// TYPICAL -> Change these values as you need/desire
|
108 |
+
'opt_name' => 'redux_demo',
|
109 |
+
// This is where your data is stored in the database and also becomes your global variable name.
|
110 |
+
'display_name' => $theme->get( 'Name' ),
|
111 |
+
// Name that appears at the top of your panel
|
112 |
+
'display_version' => $theme->get( 'Version' ),
|
113 |
+
// Version that appears at the top of your panel
|
114 |
+
'menu_type' => 'menu',
|
115 |
+
//Specify if the admin menu should appear or not. Options: menu or submenu (Under appearance only)
|
116 |
+
'allow_sub_menu' => true,
|
117 |
+
// Show the sections below the admin menu item or not
|
118 |
+
'menu_title' => __( 'Sample Options', 'redux-framework-demo' ),
|
119 |
+
'page_title' => __( 'Sample Options', 'redux-framework-demo' ),
|
120 |
+
// You will need to generate a Google API key to use this feature.
|
121 |
+
// Please visit: https://developers.google.com/fonts/docs/developer_api#Auth
|
122 |
+
'google_api_key' => '',
|
123 |
+
// Must be defined to add google fonts to the typography module
|
124 |
+
|
125 |
+
'async_typography' => false,
|
126 |
+
// Use a asynchronous font on the front end or font string
|
127 |
+
'admin_bar' => true,
|
128 |
+
// Show the panel pages on the admin bar
|
129 |
+
'global_variable' => '',
|
130 |
+
// Set a different name for your global variable other than the opt_name
|
131 |
+
'dev_mode' => true,
|
132 |
+
// Show the time the page took to load, etc
|
133 |
+
'customizer' => true,
|
134 |
+
// Enable basic customizer support
|
135 |
+
|
136 |
+
// OPTIONAL -> Give you extra features
|
137 |
+
'page_priority' => null,
|
138 |
+
// Order where the menu appears in the admin area. If there is any conflict, something will not show. Warning.
|
139 |
+
'page_parent' => 'themes.php',
|
140 |
+
// For a full list of options, visit: http://codex.wordpress.org/Function_Reference/add_submenu_page#Parameters
|
141 |
+
'page_permissions' => 'manage_options',
|
142 |
+
// Permissions needed to access the options panel.
|
143 |
+
'menu_icon' => '',
|
144 |
+
// Specify a custom URL to an icon
|
145 |
+
'last_tab' => '',
|
146 |
+
// Force your panel to always open to a specific tab (by id)
|
147 |
+
'page_icon' => 'icon-themes',
|
148 |
+
// Icon displayed in the admin panel next to your menu_title
|
149 |
+
'page_slug' => '_options',
|
150 |
+
// Page slug used to denote the panel
|
151 |
+
'save_defaults' => true,
|
152 |
+
// On load save the defaults to DB before user clicks save or not
|
153 |
+
'default_show' => false,
|
154 |
+
// If true, shows the default value next to each field that is not the default value.
|
155 |
+
'default_mark' => '',
|
156 |
+
// What to print by the field's title if the value shown is default. Suggested: *
|
157 |
+
'show_import_export' => true,
|
158 |
+
// Shows the Import/Export panel when not used as a field.
|
159 |
+
|
160 |
+
// CAREFUL -> These options are for advanced use only
|
161 |
+
'transient_time' => 60 * MINUTE_IN_SECONDS,
|
162 |
+
'output' => true,
|
163 |
+
// Global shut-off for dynamic CSS output by the framework. Will also disable google fonts output
|
164 |
+
'output_tag' => true,
|
165 |
+
// Allows dynamic CSS to be generated for customizer and google fonts, but stops the dynamic CSS from going to the head
|
166 |
+
// 'footer_credit' => '', // Disable the footer credit of Redux. Please leave if you can help it.
|
167 |
+
|
168 |
+
// FUTURE -> Not in use yet, but reserved or partially implemented. Use at your own risk.
|
169 |
+
'database' => '',
|
170 |
+
// possible: options, theme_mods, theme_mods_expanded, transient. Not fully functional, warning!
|
171 |
+
'system_info' => false,
|
172 |
+
// REMOVE
|
173 |
+
|
174 |
+
// HINTS
|
175 |
+
'hints' => array(
|
176 |
+
'icon' => 'icon-question-sign',
|
177 |
+
'icon_position' => 'right',
|
178 |
+
'icon_color' => 'lightgray',
|
179 |
+
'icon_size' => 'normal',
|
180 |
+
'tip_style' => array(
|
181 |
+
'color' => 'light',
|
182 |
+
'shadow' => true,
|
183 |
+
'rounded' => false,
|
184 |
+
'style' => '',
|
185 |
),
|
186 |
+
'tip_position' => array(
|
187 |
+
'my' => 'top left',
|
188 |
+
'at' => 'bottom right',
|
|
|
189 |
),
|
190 |
+
'tip_effect' => array(
|
191 |
+
'show' => array(
|
192 |
+
'effect' => 'slide',
|
193 |
+
'duration' => '500',
|
194 |
+
'event' => 'mouseover',
|
195 |
+
),
|
196 |
+
'hide' => array(
|
197 |
+
'effect' => 'slide',
|
198 |
+
'duration' => '500',
|
199 |
+
'event' => 'click mouseleave',
|
200 |
+
),
|
201 |
+
),
|
202 |
+
)
|
203 |
+
);
|
204 |
+
|
205 |
+
|
206 |
+
// SOCIAL ICONS -> Setup custom links in the footer for quick links in your panel footer icons.
|
207 |
+
$this->args['share_icons'][] = array(
|
208 |
+
'url' => 'https://github.com/ReduxFramework/ReduxFramework',
|
209 |
+
'title' => 'Visit us on GitHub',
|
210 |
+
'icon' => 'el-icon-github'
|
211 |
+
//'img' => '', // You can use icon OR img. IMG needs to be a full URL.
|
212 |
+
);
|
213 |
+
$this->args['share_icons'][] = array(
|
214 |
+
'url' => 'https://www.facebook.com/pages/Redux-Framework/243141545850368',
|
215 |
+
'title' => 'Like us on Facebook',
|
216 |
+
'icon' => 'el-icon-facebook'
|
217 |
+
);
|
218 |
+
$this->args['share_icons'][] = array(
|
219 |
+
'url' => 'http://twitter.com/reduxframework',
|
220 |
+
'title' => 'Follow us on Twitter',
|
221 |
+
'icon' => 'el-icon-twitter'
|
222 |
+
);
|
223 |
+
$this->args['share_icons'][] = array(
|
224 |
+
'url' => 'http://www.linkedin.com/company/redux-framework',
|
225 |
+
'title' => 'Find us on LinkedIn',
|
226 |
+
'icon' => 'el-icon-linkedin'
|
227 |
+
);
|
228 |
+
|
229 |
+
// Panel Intro text -> before the form
|
230 |
+
if ( ! isset( $this->args['global_variable'] ) || $this->args['global_variable'] !== false ) {
|
231 |
+
if ( ! empty( $this->args['global_variable'] ) ) {
|
232 |
+
$v = $this->args['global_variable'];
|
233 |
+
} else {
|
234 |
+
$v = str_replace( '-', '_', $this->args['opt_name'] );
|
235 |
+
}
|
236 |
+
$this->args['intro_text'] = sprintf( __( '<p>Did you know that Redux sets a global variable for you? To access any of your saved options from within your code you can use your global variable: <strong>$%1$s</strong></p>', 'redux-framework-demo' ), $v );
|
237 |
} else {
|
238 |
+
$this->args['intro_text'] = __( '<p>This text is displayed above the options panel. It isn\'t required, but more info is always better! The intro_text field accepts all HTML.</p>', 'redux-framework-demo' );
|
239 |
}
|
240 |
+
|
241 |
+
// Add content after the form.
|
242 |
+
$this->args['footer_text'] = __( '<p>This text is displayed below the options panel. It isn\'t required, but more info is always better! The footer_text field accepts all HTML.</p>', 'redux-framework-demo' );
|
243 |
}
|
244 |
|
|
|
|
|
245 |
}
|
246 |
|
247 |
+
global $reduxConfig;
|
248 |
+
$reduxConfig = new Redux_Framework_sample_config();
|
249 |
}
|
|
|
|
|
|
|
|
sample/sample-config.php
CHANGED
@@ -1,9 +1,8 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
/**
|
4 |
* ReduxFramework Sample Config File
|
5 |
-
* For full documentation, please visit:
|
6 |
-
|
7 |
|
8 |
if ( ! class_exists( 'Redux_Framework_sample_config' ) ) {
|
9 |
|
@@ -1800,6 +1799,8 @@
|
|
1800 |
|
1801 |
global $reduxConfig;
|
1802 |
$reduxConfig = new Redux_Framework_sample_config();
|
|
|
|
|
1803 |
}
|
1804 |
|
1805 |
/**
|
1 |
<?php
|
|
|
2 |
/**
|
3 |
* ReduxFramework Sample Config File
|
4 |
+
* For full documentation, please visit: http://docs.reduxframework.com/
|
5 |
+
*/
|
6 |
|
7 |
if ( ! class_exists( 'Redux_Framework_sample_config' ) ) {
|
8 |
|
1799 |
|
1800 |
global $reduxConfig;
|
1801 |
$reduxConfig = new Redux_Framework_sample_config();
|
1802 |
+
} else {
|
1803 |
+
echo "The class named Redux_Framework_sample_config has already been called. <strong>Developers, you need to prefix this class with your company name or you'll run into problems!</strong>";
|
1804 |
}
|
1805 |
|
1806 |
/**
|