Version Description
- Renamed the plugin to conform to Facebook and Instagram
Download this release
Release Info
Developer | webcraftic |
Plugin | Instagram Slider Widget |
Version | 1.5.0 |
Comparing to | |
See all releases |
Code changes from version 1.4.2 to 1.5.0
- admin/ajax/check-license.php +87 -0
- admin/assets/css/jr-insta-admin.css +31 -0
- admin/assets/css/license-manager.css +659 -0
- admin/assets/img/fon.jpg +0 -0
- admin/assets/img/instagram.png +0 -0
- admin/assets/img/wis.png +0 -0
- admin/assets/index.php +2 -0
- admin/assets/js/jr-insta-admin.js +114 -0
- admin/assets/js/license-manager.js +77 -0
- admin/class-wis-activation.php +36 -0
- admin/class-wis-page.php +67 -0
- admin/pages/about.php +51 -0
- admin/pages/license.php +202 -0
- admin/pages/settings.php +195 -0
- admin/pages/widgets.php +128 -0
- admin/views/tab-about.php +104 -0
- admin/views/tab-license.php +147 -0
- admin/views/tab-settings.php +37 -0
- admin/views/tab-widgets.php +27 -0
- assets/index.php +2 -0
- includes/class-wis-plugin.php +127 -0
- includes/class-wis_instagram_slider.php +1517 -0
- instaram_slider.php +142 -1507
- libs/factory/adverts/assets/index.php +2 -0
- libs/factory/adverts/assets/js/index.php +2 -0
- libs/factory/adverts/assets/js/script.js +13 -0
- libs/factory/adverts/boot.php +50 -0
- libs/factory/adverts/includes/class-adverts-base.php +261 -0
- libs/factory/adverts/includes/class-adverts-dashboard-widget.php +107 -0
- libs/factory/adverts/includes/class-adverts-rest-request.php +180 -0
- libs/factory/adverts/includes/class-base.php +323 -0
- libs/factory/adverts/includes/class-dashboard-widget.php +99 -0
- libs/factory/adverts/includes/class-rest-request.php +197 -0
- libs/factory/adverts/includes/index.php +2 -0
- libs/factory/adverts/index.php +2 -0
- libs/factory/adverts/langs/wbcr_factory_adverts_102-ru_RU.mo +0 -0
- libs/factory/adverts/langs/wbcr_factory_adverts_102-ru_RU.po +83 -0
- libs/factory/adverts/readme.txt +98 -0
- libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css +25 -0
- libs/factory/bootstrap/assets/css-min/bootstrap.datepicker.min.css +17 -0
- libs/factory/bootstrap/assets/css-min/bootstrap.datetimepicker.min.css +15 -0
- libs/factory/bootstrap/assets/css-min/bootstrap.ectoplasm.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/bootstrap.form-group.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/bootstrap.form-metabox.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/bootstrap.midnight.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/bootstrap.ocean.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/bootstrap.separator.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/bootstrap.sunrise.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/bootstrap.tab.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/bootstrap.wp-editor.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/control.checkbox.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/control.color-and-opacity.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/control.color.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/control.dropdown-and-colors.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/control.dropdown.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/control.fonts.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/control.list.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/control.multiple-textbox.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/control.pattern.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/control.radio-colors.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/holder.conrol-group.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/holder.more-link.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/plugin.chosen.min.css +21 -0
- libs/factory/bootstrap/assets/css-min/plugin.gradient-picker.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/plugin.nouislider.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/plugin.paddings-editor.min.css +11 -0
- libs/factory/bootstrap/assets/images/chosen-sprite.png +0 -0
- libs/factory/bootstrap/assets/images/chosen-sprite@2x.png +0 -0
- libs/factory/bootstrap/assets/images/color_picker_pattern.jpg +0 -0
- libs/factory/bootstrap/assets/images/drop-menu_arrow.png +0 -0
- libs/factory/bootstrap/assets/images/loader-sm-f6f6f6.gif +0 -0
- libs/factory/bootstrap/assets/images/loader-sm-tr.gif +0 -0
- libs/factory/bootstrap/assets/images/no-pattern-background-control.png +0 -0
- libs/factory/bootstrap/assets/js-min/bootstrap.accordion.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/bootstrap.affix.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/bootstrap.alert.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/bootstrap.button.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/bootstrap.carousel.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/bootstrap.collapse.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/bootstrap.datepicker.min.js +17 -0
- libs/factory/bootstrap/assets/js-min/bootstrap.datetimepicker.min.js +18 -0
- libs/factory/bootstrap/assets/js-min/bootstrap.dropdown.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/bootstrap.modal.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/bootstrap.popover.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/bootstrap.scrollspy.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/bootstrap.tab.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/bootstrap.tooltip.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/bootstrap.transition.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/control.checkbox.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/control.color-and-opacity.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/control.color.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/control.dropdown-and-colors.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/control.dropdown.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/control.fonts.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/control.gradient.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/control.integer.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/control.list.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/control.multiple-textbox.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/control.pattern.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/global.color-functions.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/holder.conrol-group.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/holder.more-link.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/plugin.chosen.min.js +21 -0
- libs/factory/bootstrap/assets/js-min/plugin.color.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/plugin.ddslick.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/plugin.gradient-picker.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/plugin.iris.min.js +13 -0
- libs/factory/bootstrap/assets/js-min/plugin.moment-with-locales.min.js +526 -0
- libs/factory/bootstrap/assets/js-min/plugin.nouislider.min.js +11 -0
- libs/factory/bootstrap/assets/js-min/plugin.paddings-editor.min.js +10 -0
- libs/factory/bootstrap/boot.php +46 -0
- libs/factory/bootstrap/includes/functions.php +286 -0
- libs/factory/bootstrap/includes/index.php +2 -0
- libs/factory/bootstrap/index.php +2 -0
- libs/factory/core/README.md +3 -0
- libs/factory/core/boot.php +62 -0
- libs/factory/core/includes/activation/class-factory-activator.php +43 -0
- libs/factory/core/includes/activation/class-factory-update.php +39 -0
- libs/factory/core/includes/activation/index.php +2 -0
- libs/factory/core/includes/assets-managment/class-factory-assets-list.php +126 -0
- libs/factory/core/includes/assets-managment/class-factory-script-list.php +166 -0
- libs/factory/core/includes/assets-managment/class-factory-style-list.php +86 -0
- libs/factory/core/includes/assets-managment/index.php +2 -0
- libs/factory/core/includes/class-check-compatibility.php +122 -0
- libs/factory/core/includes/class-factory-migrations.php +541 -0
- libs/factory/core/includes/class-factory-notices.php +255 -0
admin/ajax/check-license.php
ADDED
@@ -0,0 +1,87 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Ajax plugin check licensing
|
4 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
5 |
+
* @copyright (c) 2017 Webraftic Ltd
|
6 |
+
* @version 1.0
|
7 |
+
*/
|
8 |
+
|
9 |
+
// Exit if accessed directly
|
10 |
+
if( !defined('ABSPATH') ) {
|
11 |
+
exit;
|
12 |
+
}
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Обработчик ajax запросов для проверки, активации, деактивации лицензионного ключа
|
16 |
+
*
|
17 |
+
* @since 1.4.0
|
18 |
+
*/
|
19 |
+
function wis_check_license()
|
20 |
+
{
|
21 |
+
check_admin_referer('license');
|
22 |
+
|
23 |
+
$action = WIS_Plugin::app()->request->post('license_action', false, true);
|
24 |
+
$license_key = WIS_Plugin::app()->request->post('licensekey', null);
|
25 |
+
|
26 |
+
if( empty($action) || !in_array($action, array('activate', 'deactivate', 'sync', 'unsubscribe')) ) {
|
27 |
+
wp_send_json_error(array('error_message' => __('Licensing action not passed or this action is prohibited!', 'instagram-slider-widget')));
|
28 |
+
die();
|
29 |
+
}
|
30 |
+
|
31 |
+
$licensing = WIS_Plugin::app()->premium;
|
32 |
+
|
33 |
+
$result = null;
|
34 |
+
$success_message = '';
|
35 |
+
|
36 |
+
switch( $action ) {
|
37 |
+
case 'activate':
|
38 |
+
if( empty($license_key) || strlen($license_key) > 32 ) {
|
39 |
+
wp_send_json_error(array('error_message' => __('License key is empty or license key too long (license key is 32 characters long)', 'instagram-slider-widget')));
|
40 |
+
} else {
|
41 |
+
$result = $licensing->activate($license_key);
|
42 |
+
$success_message = __('Your license has been successfully activated', 'instagram-slider-widget');
|
43 |
+
}
|
44 |
+
break;
|
45 |
+
case 'deactivate':
|
46 |
+
$result = $licensing->deactivate();
|
47 |
+
$success_message = __('The license is deactivated', 'instagram-slider-widget');
|
48 |
+
break;
|
49 |
+
case 'sync':
|
50 |
+
$result = $licensing->sync();
|
51 |
+
$success_message = __('The license has been updated', 'instagram-slider-widget');
|
52 |
+
break;
|
53 |
+
case 'unsubscribe':
|
54 |
+
$result = $licensing->cancel_paid_subscription();
|
55 |
+
$success_message = __('Subscription success cancelled', 'instagram-slider-widget');
|
56 |
+
break;
|
57 |
+
}
|
58 |
+
|
59 |
+
if( is_wp_error($result) ) {
|
60 |
+
|
61 |
+
/**
|
62 |
+
* Экшен выполняет, когда проверка лицензии вернула ошибку
|
63 |
+
* @param string $action
|
64 |
+
* @param string $license_key
|
65 |
+
* @since 1.4.0
|
66 |
+
*/
|
67 |
+
add_action('wbcr/isw/check_license_error', $action, $license_key);
|
68 |
+
|
69 |
+
wp_send_json_error(array('error_message' => $result->get_error_message()));
|
70 |
+
die();
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
* Экшен выполняет, когда проверка лицензии успешно завершена
|
75 |
+
* @param string $action
|
76 |
+
* @param string $license_key
|
77 |
+
* @since 1.4.0
|
78 |
+
*/
|
79 |
+
add_action('wbcr/isw/check_license_success', $action, $license_key);
|
80 |
+
|
81 |
+
wp_send_json_success(array('message' => $success_message));
|
82 |
+
|
83 |
+
die();
|
84 |
+
}
|
85 |
+
|
86 |
+
add_action('wp_ajax_wis_check_license', 'wis_check_license');
|
87 |
+
|
admin/assets/css/jr-insta-admin.css
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.jr-container .donate { padding: 5px 15px 10px; display: inline-block; position: relative; color: #000; background: #ffd751; -webkit-border-radius: 5px; border-radius: 5px; border: 1px solid #b4b4b4; font-weight: bold; font-size: 14px; text-decoration: none; }
|
2 |
+
.jr-container .donate a { outline: 0; cursor: pointer }
|
3 |
+
.jr-container .donate span:before { color: #ce1f00; font: 400 20px/1 dashicons; font-family: dashicons; font-size: 24px; font-style: normal; font-variant: normal; font-weight: 400; font-stretch: normal; line-height: 1; content: '\f487'; position: relative; display: inline-block; top: 4px; margin-right: 4px; }
|
4 |
+
.jr-container .pressthis a, .jr-container .pressthis-bookmarklet a,
|
5 |
+
.jr-container .pressthis a:active, .jr-container .pressthis-bookmarklet a:active,
|
6 |
+
.jr-container .pressthis a:focus, .jr-container .pressthis-bookmarklet a:focus,
|
7 |
+
.jr-container .pressthis a:hover, .jr-container .pressthis-bookmarklet a:hover { cursor: pointer; background: #53b5d9; border: 1px solid #0074a2; color: #ffffff; font-weight: bold }
|
8 |
+
.jr-container .jr_insta_error { border-left: 4px solid #dd3d36; -moz-box-shadow: 0 1px 1px 0 rgba(0,0,0,.1); -webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,.1); box-shadow: 0 1px 1px 0 rgba(0,0,0,.1); padding: 5px 12px; }
|
9 |
+
.jr-container .jr-radio { margin-right: 20px }
|
10 |
+
.jr-container .jr-search-for-container { display: block; margin-bottom: 7px; }
|
11 |
+
.jr-container .jr-seach-for { width: 90px; display: inline-block; vertical-align: middle }
|
12 |
+
|
13 |
+
.jr-container .jr-advanced { text-decoration: none; border: none }
|
14 |
+
.jr-container .jr-advanced:focus { outline: 0; border: none; box-shadow:none }
|
15 |
+
|
16 |
+
.jr-container .jr-advanced-input div { border: 1px solid #cfcfcf; padding: 10px; margin: 25px 0 0; }
|
17 |
+
.jr-container .jr-advanced-input .jr-advanced-title{ margin: -22px 0 0 0; background-color: white; width: 160px; padding: 3px 10px; border: 1px solid #cfcfcf; }
|
18 |
+
.jr-container .jr-description { color: #777; font-size: smaller; clear:both; display:block; margin-top: 5px;}
|
19 |
+
.jr-container .jr-description.hide-media-library, .jr-container .jr-description.hide-instagram { display: none }
|
20 |
+
|
21 |
+
.jr-container .switch { position: relative; display: inline-block; margin-left: 5px; width: 45px; height: 24px; }
|
22 |
+
.jr-container .switch input {display:none;}
|
23 |
+
.jr-container .slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #ccc; -webkit-transition: .4s; transition: .4s; }
|
24 |
+
.jr-container .slider:before { position: absolute; content: ""; height: 22px; width: 22px; left: 0px; bottom: 0px; border: 1px solid #e5e5e5; background-color: white; -webkit-transition: .4s; transition: .4s; }
|
25 |
+
.jr-container input:checked + .slider { background-color: #0085ba; }
|
26 |
+
.jr-container input:focus + .slider { box-shadow: 0 0 1px #0085ba; }
|
27 |
+
.jr-container input:checked + .slider:before { -webkit-transform: translateX(22px); -ms-transform: translateX(22px); transform: translateX(22px); }
|
28 |
+
.jr-container .slider.round { border-radius: 34px; }
|
29 |
+
.jr-container .slider.round:before { border-radius: 50%; }
|
30 |
+
.jr-container .donate-buttons { text-align: center }
|
31 |
+
.jr-container .donate-button-link { cursor: pointer }
|
admin/assets/css/license-manager.css
ADDED
@@ -0,0 +1,659 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
.not-visible-in-manager {
|
3 |
+
display: none;
|
4 |
+
}
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Global License Message
|
8 |
+
*/
|
9 |
+
.global-license-message {
|
10 |
+
width: 600px;
|
11 |
+
margin: auto;
|
12 |
+
/*margin-top: 100px;*/
|
13 |
+
font-size: 14px;
|
14 |
+
line-height: 170%;
|
15 |
+
}
|
16 |
+
|
17 |
+
.global-license-message h2, .global-license-message h3 {
|
18 |
+
padding: 0px;
|
19 |
+
margin: 5px 0;
|
20 |
+
}
|
21 |
+
|
22 |
+
.onp-page-wrap {
|
23 |
+
max-width: 720px;
|
24 |
+
margin: auto;
|
25 |
+
margin-top: 40px;
|
26 |
+
font-size: 14px;
|
27 |
+
line-height: 170%;
|
28 |
+
}
|
29 |
+
|
30 |
+
.onp-container {
|
31 |
+
border: 0px;
|
32 |
+
padding: 0px;
|
33 |
+
border-radius: 5px;
|
34 |
+
background: rgb(255, 255, 255) !important;
|
35 |
+
box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);
|
36 |
+
-moz-box-sizing: border-box;
|
37 |
+
box-sizing: border-box;
|
38 |
+
}
|
39 |
+
|
40 |
+
#license-manager .onp-container {
|
41 |
+
background: -moz-linear-gradient(top, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* FF3.6+ */
|
42 |
+
background: -webkit-gradient(linear, left top, left bottom, color-stop(63%, rgba(255, 255, 255, 1)), color-stop(100%, rgba(246, 246, 246, 1))); /* Chrome,Safari4+ */
|
43 |
+
background: -webkit-linear-gradient(top, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* Chrome10+,Safari5.1+ */
|
44 |
+
background: -o-linear-gradient(top, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* Opera 11.10+ */
|
45 |
+
background: -ms-linear-gradient(top, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* IE10+ */
|
46 |
+
background: linear-gradient(to bottom, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* W3C */
|
47 |
+
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f6f6f6', GradientType=0); /* IE6-9 */
|
48 |
+
}
|
49 |
+
|
50 |
+
.onp-container h2 {
|
51 |
+
margin: 0px;
|
52 |
+
padding: 0px;
|
53 |
+
}
|
54 |
+
|
55 |
+
.onp-container p {
|
56 |
+
margin: 0 0 2px 0;
|
57 |
+
padding: 0px;
|
58 |
+
line-height: 170%;
|
59 |
+
}
|
60 |
+
|
61 |
+
.btn-uppercase {
|
62 |
+
font-size: 12px;
|
63 |
+
letter-spacing: 1px;
|
64 |
+
text-transform: uppercase;
|
65 |
+
text-decoration: none;
|
66 |
+
}
|
67 |
+
|
68 |
+
.btn-uppercase *[class^=icon] {
|
69 |
+
position: relative;
|
70 |
+
top: -1px;
|
71 |
+
left: -1px;
|
72 |
+
}
|
73 |
+
|
74 |
+
.onp-page-wrap .license-message {
|
75 |
+
margin-bottom: 20px;
|
76 |
+
overflow: hidden;
|
77 |
+
}
|
78 |
+
|
79 |
+
.onp-page-wrap .license-message .alert {
|
80 |
+
margin: 0px;
|
81 |
+
}
|
82 |
+
|
83 |
+
.onp-page-wrap .license-message strong {
|
84 |
+
display: block;
|
85 |
+
margin-bottom: 0px;
|
86 |
+
}
|
87 |
+
|
88 |
+
.onp-page-wrap .license-message p {
|
89 |
+
margin: 1px 0 1px 0;
|
90 |
+
padding: 0px;
|
91 |
+
}
|
92 |
+
|
93 |
+
.onp-page-wrap .license-message a {
|
94 |
+
font-weight: bold;
|
95 |
+
}
|
96 |
+
|
97 |
+
.license-message .alert-warning-icon {
|
98 |
+
padding-left: 60px;
|
99 |
+
background-image: url("../img/warning.png");
|
100 |
+
background-position: 15px 11px;
|
101 |
+
background-repeat: no-repeat;
|
102 |
+
}
|
103 |
+
|
104 |
+
#onp-hide-license-manager {
|
105 |
+
position: absolute;
|
106 |
+
top: 2px;
|
107 |
+
right: 15px;
|
108 |
+
font-size: 12px;
|
109 |
+
color: #777;
|
110 |
+
font-weight: bold;
|
111 |
+
}
|
112 |
+
|
113 |
+
#onp-hide-license-manager:hover {
|
114 |
+
text-decoration: none;
|
115 |
+
}
|
116 |
+
|
117 |
+
#onp-hide-license-manager,
|
118 |
+
#onp-hide-license-manager:focus,
|
119 |
+
#onp-hide-license-manager:hover {
|
120 |
+
outline: none;
|
121 |
+
border: 0px;
|
122 |
+
box-shadow: none;
|
123 |
+
}
|
124 |
+
|
125 |
+
#onp-hide-license-manager .fa {
|
126 |
+
margin-right: 5px;
|
127 |
+
}
|
128 |
+
|
129 |
+
#license-manager .license-details-wrap {
|
130 |
+
border: 1px solid #e9e9e9;
|
131 |
+
padding: 0px;
|
132 |
+
border-radius: 5px;
|
133 |
+
|
134 |
+
background: rgb(255, 255, 255); /* Old browsers */
|
135 |
+
background: -moz-linear-gradient(top, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* FF3.6+ */
|
136 |
+
background: -webkit-gradient(linear, left top, left bottom, color-stop(63%, rgba(255, 255, 255, 1)), color-stop(100%, rgba(246, 246, 246, 1))); /* Chrome,Safari4+ */
|
137 |
+
background: -webkit-linear-gradient(top, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* Chrome10+,Safari5.1+ */
|
138 |
+
background: -o-linear-gradient(top, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* Opera 11.10+ */
|
139 |
+
background: -ms-linear-gradient(top, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* IE10+ */
|
140 |
+
background: linear-gradient(to bottom, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* W3C */
|
141 |
+
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f6f6f6', GradientType=0); /* IE6-9 */
|
142 |
+
|
143 |
+
box-shadow: 0px 2px 1px #c9c9c9;
|
144 |
+
}
|
145 |
+
|
146 |
+
#license-manager .activate-trial-hint {
|
147 |
+
background-color: #f8f8f8;
|
148 |
+
padding: 10px 20px;
|
149 |
+
position: relative;
|
150 |
+
-moz-box-sizing: content-box;
|
151 |
+
box-sizing: content-box;
|
152 |
+
}
|
153 |
+
|
154 |
+
#license-manager .activate-error-hint {
|
155 |
+
background-color: #fb7976;
|
156 |
+
color: #f5f5f5;
|
157 |
+
text-shadow: none;
|
158 |
+
padding: 2px 9px;
|
159 |
+
width: 100%;
|
160 |
+
position: relative;
|
161 |
+
margin-left: -9px;
|
162 |
+
-moz-box-sizing: content-box;
|
163 |
+
box-sizing: content-box;
|
164 |
+
}
|
165 |
+
|
166 |
+
#license-manager .license-details {
|
167 |
+
padding: 20px;
|
168 |
+
padding-bottom: 0px;
|
169 |
+
-webkit-border-top-left-radius: 5px;
|
170 |
+
-webkit-border-top-right-radius: 5px;
|
171 |
+
-moz-border-radius-topleft: 5px;
|
172 |
+
-moz-border-radius-topright: 5px;
|
173 |
+
border-top-left-radius: 5px;
|
174 |
+
border-top-right-radius: 5px;
|
175 |
+
|
176 |
+
position: relative;
|
177 |
+
z-index: 10;
|
178 |
+
}
|
179 |
+
|
180 |
+
#license-manager .license-key-identity {
|
181 |
+
font-style: italic;
|
182 |
+
position: relative;
|
183 |
+
top: -6px;
|
184 |
+
}
|
185 |
+
|
186 |
+
#license-manager .license-key-identity code {
|
187 |
+
display: inline-block;
|
188 |
+
padding: 2px 5px;
|
189 |
+
font-size: 16px;
|
190 |
+
}
|
191 |
+
|
192 |
+
#license-manager .license-key-description {
|
193 |
+
font-size: 12px;
|
194 |
+
}
|
195 |
+
|
196 |
+
#license-manager .license-delete-button {
|
197 |
+
float: right;
|
198 |
+
text-decoration: none;
|
199 |
+
position: relative;
|
200 |
+
top: -7px;
|
201 |
+
left: 10px;
|
202 |
+
}
|
203 |
+
|
204 |
+
#license-manager .license-synchronization-button {
|
205 |
+
float: right;
|
206 |
+
text-decoration: none;
|
207 |
+
position: relative;
|
208 |
+
top: -7px;
|
209 |
+
left: 4px;
|
210 |
+
}
|
211 |
+
|
212 |
+
#license-manager .license-details-block {
|
213 |
+
padding: 28px 35px 15px 35px;
|
214 |
+
margin-left: -35px;
|
215 |
+
width: 100%;
|
216 |
+
position: relative;
|
217 |
+
margin-top: 20px;
|
218 |
+
|
219 |
+
background: #fff;
|
220 |
+
border: 0px;
|
221 |
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
|
222 |
+
color: #333;
|
223 |
+
|
224 |
+
border-radius: 5px;
|
225 |
+
|
226 |
+
-webkit-box-sizing: content-box;
|
227 |
+
-moz-box-sizing: content-box;
|
228 |
+
box-sizing: content-box;
|
229 |
+
}
|
230 |
+
|
231 |
+
#license-manager .license-details-block p + p {
|
232 |
+
margin-top: 10px;
|
233 |
+
}
|
234 |
+
|
235 |
+
#license-manager .license-details-block a {
|
236 |
+
font-weight: bold;
|
237 |
+
}
|
238 |
+
|
239 |
+
#license-manager .license-details-block.trial-details-block {
|
240 |
+
background: #ffdede;
|
241 |
+
|
242 |
+
border: 0;
|
243 |
+
box-shadow: 0 0 7px #cf4944;
|
244 |
+
color: #a04342;
|
245 |
+
text-shadow: 1px 1px 2px #fff2f2;
|
246 |
+
}
|
247 |
+
|
248 |
+
#license-manager .license-details-block.trial-details-block a {
|
249 |
+
color: #a04342;
|
250 |
+
}
|
251 |
+
|
252 |
+
#license-manager .license-details-block.paid-details-block {
|
253 |
+
border: 0;
|
254 |
+
box-shadow: 0 0 7px #b8823b;
|
255 |
+
color: #8a6d3b;
|
256 |
+
background: #fcf8e3;
|
257 |
+
}
|
258 |
+
|
259 |
+
#license-manager .license-details-block.paid-details-block a {
|
260 |
+
color: #7a4c00;
|
261 |
+
}
|
262 |
+
|
263 |
+
#license-manager .license-details-block.gift-details-block {
|
264 |
+
background: #DFF0D8;
|
265 |
+
border: 1px solid #D6E9C6;
|
266 |
+
box-shadow: 0px 0px 5px #D6E9C6;
|
267 |
+
color: #468847;
|
268 |
+
}
|
269 |
+
|
270 |
+
#license-manager .license-details-block.gift-details-block a {
|
271 |
+
color: #468847;
|
272 |
+
}
|
273 |
+
|
274 |
+
#license-manager .license-params {
|
275 |
+
margin-top: 15px;
|
276 |
+
position: relative;
|
277 |
+
left: -2px;
|
278 |
+
}
|
279 |
+
|
280 |
+
#license-manager .license-value {
|
281 |
+
display: block;
|
282 |
+
font-size: 16px;
|
283 |
+
font-weight: bold;
|
284 |
+
}
|
285 |
+
|
286 |
+
#license-manager .license-value small {
|
287 |
+
font-weight: normal;
|
288 |
+
}
|
289 |
+
|
290 |
+
#license-manager .license-value-name {
|
291 |
+
display: block;
|
292 |
+
font-size: 12px;
|
293 |
+
}
|
294 |
+
|
295 |
+
#license-manager .license-param {
|
296 |
+
white-space: nowrap;
|
297 |
+
line-height: 130%;
|
298 |
+
padding: 10px 0 10px 35px;
|
299 |
+
vertical-align: top;
|
300 |
+
}
|
301 |
+
|
302 |
+
#license-manager .license-param-domain {
|
303 |
+
padding-left: 65px;
|
304 |
+
background: url('../img/free-license-chip.png') -3px 0px no-repeat;
|
305 |
+
}
|
306 |
+
|
307 |
+
#license-manager .trial-details-block .license-param-domain {
|
308 |
+
background: url('../img/trial-license-chip.png') -3px 0px no-repeat;
|
309 |
+
}
|
310 |
+
|
311 |
+
#license-manager .paid-details-block .license-param-domain {
|
312 |
+
background: url('../img/paid-license-chip.png') -3px 0px no-repeat;
|
313 |
+
}
|
314 |
+
|
315 |
+
#license-manager .license-details-block h3 {
|
316 |
+
padding: 0;
|
317 |
+
font-size: 22px;
|
318 |
+
margin: 0 0 16px 0;
|
319 |
+
color: #8a6d3b;
|
320 |
+
font-weight: 500;
|
321 |
+
}
|
322 |
+
|
323 |
+
#license-manager .license-details-block a {
|
324 |
+
color: #a04342;
|
325 |
+
}
|
326 |
+
|
327 |
+
#license-manager .license-input {
|
328 |
+
|
329 |
+
padding: 20px;
|
330 |
+
-webkit-border-bottom-right-radius: 5px;
|
331 |
+
-webkit-border-bottom-left-radius: 5px;
|
332 |
+
-moz-border-radius-bottomright: 5px;
|
333 |
+
-moz-border-radius-bottomleft: 5px;
|
334 |
+
border-bottom-right-radius: 5px;
|
335 |
+
border-bottom-left-radius: 5px;
|
336 |
+
}
|
337 |
+
|
338 |
+
#license-manager .license-input .btn {
|
339 |
+
text-decoration: none;
|
340 |
+
}
|
341 |
+
|
342 |
+
#license-manager .license-key-wrap {
|
343 |
+
padding-right: 110px;
|
344 |
+
}
|
345 |
+
|
346 |
+
#license-key {
|
347 |
+
width: 100%;
|
348 |
+
position: relative;
|
349 |
+
font-size: 18px;
|
350 |
+
line-height: 20px;
|
351 |
+
top: -1px;
|
352 |
+
height: 36px;
|
353 |
+
color: #000;
|
354 |
+
}
|
355 |
+
|
356 |
+
#license-submit {
|
357 |
+
float: right;
|
358 |
+
padding: 7px 14px 6px 14px;
|
359 |
+
}
|
360 |
+
|
361 |
+
#plugin-update-block {
|
362 |
+
padding-top: 10px;
|
363 |
+
font-size: 10px;
|
364 |
+
color: #666;
|
365 |
+
max-width: 700px;
|
366 |
+
margin: auto;
|
367 |
+
}
|
368 |
+
|
369 |
+
#plugin-update-block a {
|
370 |
+
color: #000;
|
371 |
+
}
|
372 |
+
|
373 |
+
.purchase-premium {
|
374 |
+
float: right;
|
375 |
+
position: relative;
|
376 |
+
top: -11px;
|
377 |
+
left: 8px;
|
378 |
+
text-decoration: none;
|
379 |
+
font-weight: bold;
|
380 |
+
background: #fffaea;
|
381 |
+
padding: 0px;
|
382 |
+
border-radius: 4px;
|
383 |
+
outline: none;
|
384 |
+
margin-top: 4px;
|
385 |
+
box-shadow: 0 0 8px #fddf67;
|
386 |
+
}
|
387 |
+
|
388 |
+
.purchase-premium .fa {
|
389 |
+
position: relative;
|
390 |
+
margin-right: 3px;
|
391 |
+
margin-left: 3px;
|
392 |
+
}
|
393 |
+
|
394 |
+
/*
|
395 |
+
* Manual Trial Activation
|
396 |
+
*/
|
397 |
+
#trial-manual .onp-container {
|
398 |
+
padding: 20px;
|
399 |
+
overflow: hidden;
|
400 |
+
}
|
401 |
+
|
402 |
+
#trial-manual ul {
|
403 |
+
margin: 0px;
|
404 |
+
padding: 0px;
|
405 |
+
margin-top: 10px;
|
406 |
+
}
|
407 |
+
|
408 |
+
#trial-manual ul li {
|
409 |
+
margin-bottom: 10px;
|
410 |
+
}
|
411 |
+
|
412 |
+
#trial-manual .license-reponse-code {
|
413 |
+
width: 100%;
|
414 |
+
height: 150px;
|
415 |
+
margin-top: 5px;
|
416 |
+
}
|
417 |
+
|
418 |
+
/*
|
419 |
+
* Manual Key Activation
|
420 |
+
*/
|
421 |
+
#activate-key-manual .onp-container {
|
422 |
+
padding: 20px;
|
423 |
+
overflow: hidden;
|
424 |
+
}
|
425 |
+
|
426 |
+
#activate-key-manual ul {
|
427 |
+
margin: 0px;
|
428 |
+
padding: 0px;
|
429 |
+
margin-top: 10px;
|
430 |
+
}
|
431 |
+
|
432 |
+
#activate-key-manual ul li {
|
433 |
+
margin-bottom: 10px;
|
434 |
+
}
|
435 |
+
|
436 |
+
#activate-key-manual .license-reponse-code {
|
437 |
+
width: 100%;
|
438 |
+
height: 150px;
|
439 |
+
margin-top: 5px;
|
440 |
+
}
|
441 |
+
|
442 |
+
/**
|
443 |
+
* FAQ
|
444 |
+
*/
|
445 |
+
|
446 |
+
#faq-block {
|
447 |
+
border-top: 1px solid #d7d7d7;
|
448 |
+
|
449 |
+
margin-top: 20px;
|
450 |
+
width: 100%;
|
451 |
+
|
452 |
+
padding: 10px 20px;
|
453 |
+
position: relative;
|
454 |
+
}
|
455 |
+
|
456 |
+
#faq-block .faq-header {
|
457 |
+
border-bottom: 1px dotted #333;
|
458 |
+
display: inline-block;
|
459 |
+
cursor: pointer;
|
460 |
+
font-weight: bold;
|
461 |
+
line-height: 16px;
|
462 |
+
font-size: 13px;
|
463 |
+
color: #333;
|
464 |
+
}
|
465 |
+
|
466 |
+
#faq-block .faq-header:hover {
|
467 |
+
border-bottom: 0px;
|
468 |
+
}
|
469 |
+
|
470 |
+
#faq-block .faq-header:focus, #faq-block .faq-header:active {
|
471 |
+
outline: 0;
|
472 |
+
}
|
473 |
+
|
474 |
+
#faq-block li > div {
|
475 |
+
display: none;
|
476 |
+
}
|
477 |
+
|
478 |
+
#faq-block p {
|
479 |
+
margin: 6px 0 10px 0;
|
480 |
+
font-size: 13px;
|
481 |
+
line-height: 170%;
|
482 |
+
}
|
483 |
+
|
484 |
+
#open-faq {
|
485 |
+
color: #000 !important;
|
486 |
+
text-decoration: none;
|
487 |
+
border-bottom: 1px dotted #000;
|
488 |
+
margin-left: 4px;
|
489 |
+
}
|
490 |
+
|
491 |
+
#open-faq:hover {
|
492 |
+
border-bottom: 0px;
|
493 |
+
}
|
494 |
+
|
495 |
+
.gray-link, .gray-link a {
|
496 |
+
color: #666666 !important;
|
497 |
+
}
|
498 |
+
|
499 |
+
/**
|
500 |
+
* A form to create a customer account
|
501 |
+
*/
|
502 |
+
|
503 |
+
.onp-single-block .onp-header {
|
504 |
+
text-align: center;
|
505 |
+
padding: 10px;
|
506 |
+
}
|
507 |
+
|
508 |
+
.onp-single-block .onp-header h4 {
|
509 |
+
font-size: 26px;
|
510 |
+
line-height: 130%;
|
511 |
+
}
|
512 |
+
|
513 |
+
.onp-single-block .onp-container {
|
514 |
+
padding: 50px 60px;
|
515 |
+
border: 1px solid #bbb;
|
516 |
+
position: relative;
|
517 |
+
}
|
518 |
+
|
519 |
+
.onp-single-block .onp-container .onp-container-header {
|
520 |
+
margin-bottom: 20px;
|
521 |
+
}
|
522 |
+
|
523 |
+
.onp-single-block .onp-container .onp-container-header h4 {
|
524 |
+
color: #000;
|
525 |
+
margin: 0px;
|
526 |
+
font-size: 20px;
|
527 |
+
}
|
528 |
+
|
529 |
+
.onp-single-block .onp-container .onp-container-header .onp-key-info {
|
530 |
+
color: #666;
|
531 |
+
}
|
532 |
+
|
533 |
+
.onp-single-block .onp-container .onp-container-header .onp-key-info .fa {
|
534 |
+
color: #777;
|
535 |
+
}
|
536 |
+
|
537 |
+
.onp-single-block .onp-container .onp-container-header .onp-icon {
|
538 |
+
position: absolute;
|
539 |
+
top: 30px;
|
540 |
+
right: 30px;
|
541 |
+
}
|
542 |
+
|
543 |
+
.onp-single-block .onp-container p,
|
544 |
+
.onp-single-block .onp-container li {
|
545 |
+
color: #333;
|
546 |
+
font-size: 14px;
|
547 |
+
}
|
548 |
+
|
549 |
+
.onp-single-block .onp-container p + p {
|
550 |
+
margin-top: 15px;
|
551 |
+
}
|
552 |
+
|
553 |
+
.onp-single-block .onp-container .onp-form {
|
554 |
+
text-align: left;
|
555 |
+
padding: 10px 0 0 0;
|
556 |
+
}
|
557 |
+
|
558 |
+
.onp-single-block #email {
|
559 |
+
font-size: 26px;
|
560 |
+
line-height: 26px;
|
561 |
+
height: 50px;
|
562 |
+
}
|
563 |
+
|
564 |
+
.onp-single-block .checkbox {
|
565 |
+
padding-left: 25px;
|
566 |
+
color: #999;
|
567 |
+
font-style: italic;
|
568 |
+
}
|
569 |
+
|
570 |
+
.onp-single-block .checkbox input {
|
571 |
+
margin-left: -25px;
|
572 |
+
}
|
573 |
+
|
574 |
+
.onp-single-block .onp-actions {
|
575 |
+
padding-top: 20px;
|
576 |
+
}
|
577 |
+
|
578 |
+
.onp-single-block .onp-actions .btn-primary {
|
579 |
+
margin-right: 15px;
|
580 |
+
}
|
581 |
+
|
582 |
+
.onp-single-block .onp-actions a.onp-cancel {
|
583 |
+
text-decoration: none;
|
584 |
+
color: #111;
|
585 |
+
}
|
586 |
+
|
587 |
+
.onp-single-block .onp-actions a.onp-cancel:hover {
|
588 |
+
text-decoration: none;
|
589 |
+
border-bottom: 1px solid #111;
|
590 |
+
background-color: #f9f9f9;
|
591 |
+
}
|
592 |
+
|
593 |
+
.onp-single-block .onp-benefits {
|
594 |
+
padding-left: 25px;
|
595 |
+
margin-top: 15px;
|
596 |
+
list-style: initial;
|
597 |
+
}
|
598 |
+
|
599 |
+
.onp-single-block .onp-login-details {
|
600 |
+
|
601 |
+
}
|
602 |
+
|
603 |
+
.onp-single-block .onp-text-seporator {
|
604 |
+
border-top: 1px solid #eee;
|
605 |
+
margin: 30px 0;
|
606 |
+
}
|
607 |
+
|
608 |
+
#create-account .onp-container {
|
609 |
+
background: #fff url("../img/create-account-bg.png") no-repeat 370px 230px !important;
|
610 |
+
}
|
611 |
+
|
612 |
+
#account-created .onp-step {
|
613 |
+
overflow: hidden;
|
614 |
+
}
|
615 |
+
|
616 |
+
#account-created .onp-steps {
|
617 |
+
padding: 25px 0 20px 10px;
|
618 |
+
}
|
619 |
+
|
620 |
+
#account-created .onp-step + .onp-step {
|
621 |
+
margin-top: 20px;
|
622 |
+
}
|
623 |
+
|
624 |
+
#account-created .onp-step .onp-num {
|
625 |
+
font-size: 25px;
|
626 |
+
line-height: 40px;
|
627 |
+
background-color: #f5f5f5;
|
628 |
+
width: 40px;
|
629 |
+
height: 40px;
|
630 |
+
display: inline-block;
|
631 |
+
border-radius: 7px;
|
632 |
+
text-align: center;
|
633 |
+
-moz-box-sizing: border-box;
|
634 |
+
box-sizing: border-box;
|
635 |
+
margin-right: 10px;
|
636 |
+
vertical-align: middle;
|
637 |
+
font-weight: bolder;
|
638 |
+
font-family: Arial, sans-serif;
|
639 |
+
}
|
640 |
+
|
641 |
+
#account-created .onp-step .onp-desc {
|
642 |
+
width: 490px;
|
643 |
+
display: inline-block;
|
644 |
+
vertical-align: middle;
|
645 |
+
line-height: 150%;
|
646 |
+
}
|
647 |
+
|
648 |
+
#finish .onp-container {
|
649 |
+
background: #fff url("../img/finish.png") no-repeat 0 -90px !important;
|
650 |
+
padding-left: 260px;
|
651 |
+
min-height: 250px;
|
652 |
+
|
653 |
+
border-bottom: 3px solid #ccc;
|
654 |
+
}
|
655 |
+
|
656 |
+
.winp-loader {
|
657 |
+
float: right;
|
658 |
+
width: 32px;
|
659 |
+
}
|
admin/assets/img/fon.jpg
ADDED
Binary file
|
admin/assets/img/instagram.png
ADDED
Binary file
|
admin/assets/img/wis.png
ADDED
Binary file
|
admin/assets/index.php
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
admin/assets/js/jr-insta-admin.js
ADDED
@@ -0,0 +1,114 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
(function($) {
|
2 |
+
|
3 |
+
$(document).ready(function($){
|
4 |
+
$('.donate-bitcoin-qr-address').hide();
|
5 |
+
$('.donate-button-link').on('click', function (e) {
|
6 |
+
e.preventDefault();
|
7 |
+
//$(this).slideUp(100);
|
8 |
+
$('.donate-bitcoin-qr-address').slideToggle();
|
9 |
+
});
|
10 |
+
|
11 |
+
// Hide Custom Url if image link is not set to custom url
|
12 |
+
$('body').on('change', '.jr-container select[id$="images_link"]', function(e){
|
13 |
+
var images_link = $(this);
|
14 |
+
if ( images_link.val() != 'custom_url' ) {
|
15 |
+
images_link.closest('.jr-container').find('input[id$="custom_url"]').val('').parent().animate({opacity: 'hide' , height: 'hide'}, 200);
|
16 |
+
} else {
|
17 |
+
images_link.closest('.jr-container').find('input[id$="custom_url"]').parent().animate({opacity: 'show' , height: 'show'}, 200);
|
18 |
+
}
|
19 |
+
});
|
20 |
+
|
21 |
+
// Modify options based on template selections
|
22 |
+
$('body').on('change', '.jr-container select[id$="template"]', function(e){
|
23 |
+
var template = $(this);
|
24 |
+
if ( template.val() == 'thumbs' || template.val() == 'thumbs-no-border' ) {
|
25 |
+
template.closest('.jr-container').find('.jr-slider-options').animate({opacity: 'hide' , height: 'hide'}, 200);
|
26 |
+
template.closest('.jr-container').find('input[id$="columns"]').closest('p').animate({opacity: 'show' , height: 'show'}, 200);
|
27 |
+
} else {
|
28 |
+
template.closest('.jr-container').find('.jr-slider-options').animate({opacity: 'show' , height: 'show'}, 200);
|
29 |
+
template.closest('.jr-container').find('input[id$="columns"]').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
|
30 |
+
}
|
31 |
+
});
|
32 |
+
|
33 |
+
// Modfiy options when search for is changed
|
34 |
+
$('body').on('change', '.jr-container input:radio[id$="search_for"]', function(e){
|
35 |
+
var search_for = $(this);
|
36 |
+
if ( search_for.val() != 'username' ) {
|
37 |
+
search_for.closest('.jr-container').find('[id$="attachment"]:checkbox').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
|
38 |
+
search_for.closest('.jr-container').find('select[id$="images_link"] option[value="user_url"]').animate({opacity: 'hide' , height: 'hide'}, 200);
|
39 |
+
search_for.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({opacity: 'hide' , height: 'hide'}, 200);
|
40 |
+
search_for.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
|
41 |
+
search_for.closest('.jr-container').find('select[id$="description"] option[value="username"]').animate({opacity: 'hide' , height: 'hide'}, 200);
|
42 |
+
search_for.closest('.jr-container').find('input[id$="blocked_users"]').closest('p').animate({opacity: 'show' , height: 'show'}, 200);
|
43 |
+
|
44 |
+
} else {
|
45 |
+
search_for.closest('.jr-container').find('[id$="attachment"]:checkbox').closest('p').animate({opacity: 'show' , height: 'show'}, 200);
|
46 |
+
search_for.closest('.jr-container').find('select[id$="images_link"] option[value="user_url"]').animate({opacity: 'show' , height: 'show'}, 200);
|
47 |
+
search_for.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({opacity: 'show' , height: 'show'}, 200);
|
48 |
+
search_for.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
|
49 |
+
search_for.closest('.jr-container').find('select[id$="description"] option[value="username"]').animate({opacity: 'show' , height: 'show'}, 200);
|
50 |
+
search_for.closest('.jr-container').find('input[id$="blocked_users"]').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
|
51 |
+
|
52 |
+
}
|
53 |
+
});
|
54 |
+
|
55 |
+
// Hide blocked images if not checked attachments
|
56 |
+
$('body').on('change', '.jr-container [id$="attachment"]:checkbox', function(e){
|
57 |
+
var attachment = $(this);
|
58 |
+
if ( this.checked ) {
|
59 |
+
attachment.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({opacity: 'show' , height: 'show'}, 200);
|
60 |
+
attachment.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
|
61 |
+
} else {
|
62 |
+
attachment.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({opacity: 'hide' , height: 'hide'}, 200);
|
63 |
+
attachment.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
|
64 |
+
}
|
65 |
+
});
|
66 |
+
|
67 |
+
// Toggle advanced options
|
68 |
+
$('body').on('click', '.jr-advanced', function(e){
|
69 |
+
e.preventDefault();
|
70 |
+
var advanced_container = $(this).parent().next();
|
71 |
+
|
72 |
+
if ( advanced_container.is(':hidden') ) {
|
73 |
+
$(this).html('[ - Close ]');
|
74 |
+
} else {
|
75 |
+
$(this).html('[ + Open ]');
|
76 |
+
}
|
77 |
+
advanced_container.toggle();
|
78 |
+
});
|
79 |
+
|
80 |
+
// Remove blocked images with ajax
|
81 |
+
$('body').on('click', '.jr-container .jr-delete-instagram-dupes', function(e){
|
82 |
+
e.preventDefault();
|
83 |
+
var $this = $(this),
|
84 |
+
username = $(this).data("username"),
|
85 |
+
ajaxNonce = $(this).closest('.jr-container').find('input[name=delete_insta_dupes_nonce]').val();
|
86 |
+
|
87 |
+
$.ajax({
|
88 |
+
type: 'POST',
|
89 |
+
url: ajaxurl,
|
90 |
+
data: {
|
91 |
+
action: 'jr_delete_insta_dupes',
|
92 |
+
username : username,
|
93 |
+
_ajax_nonce: ajaxNonce
|
94 |
+
},
|
95 |
+
beforeSend: function () {
|
96 |
+
$this.prop('disabled', true);
|
97 |
+
$this.closest('.jr-container').find('.jr-spinner').addClass( 'spinner' ).css({'visibility':'visible','float':'none'});
|
98 |
+
},
|
99 |
+
success: function(data, textStatus, XMLHttpRequest) {
|
100 |
+
$this.closest('.jr-container').find('.deleted-dupes-info').text( 'Removed Duplicates: '+ data.deleted);
|
101 |
+
},
|
102 |
+
complete: function () {
|
103 |
+
$this.prop('disabled', false);
|
104 |
+
$this.closest('.jr-container').find('.jr-spinner').addClass( 'spinner' ).css({'visibility':'hidden','float':'none'});
|
105 |
+
},
|
106 |
+
error: function(XMLHttpRequest, textStatus, errorThrown) {
|
107 |
+
//console.log(XMLHttpRequest.responseText);
|
108 |
+
}
|
109 |
+
});
|
110 |
+
});
|
111 |
+
|
112 |
+
}); // Document Ready
|
113 |
+
|
114 |
+
})(jQuery);
|
admin/assets/js/license-manager.js
ADDED
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* Этот файл содержит скрипт исполняелся во время процедур с формой лицензирования.
|
3 |
+
* Его основная роль отправка ajax запросов на проверку, активацию, деактивацию лицензии
|
4 |
+
* и вывод уведомлений об ошибка или успешно выполнении проверок.
|
5 |
+
*
|
6 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
7 |
+
* @copyright (c) 05.10.2018, Webcraftic
|
8 |
+
* @version 1.1
|
9 |
+
* @since 1.4.0
|
10 |
+
*/
|
11 |
+
|
12 |
+
|
13 |
+
jQuery(function ($) {
|
14 |
+
|
15 |
+
$(document).on('click', '.wapt-control-btn', function () {
|
16 |
+
|
17 |
+
$('.wapt-control-btn').hide();
|
18 |
+
|
19 |
+
var wrapper = $('#wapt-license-wrapper'),
|
20 |
+
loader = wrapper.data('loader');
|
21 |
+
|
22 |
+
$(this).after('<img class="wapt-loader" src="' + loader + '">');
|
23 |
+
|
24 |
+
var data = {
|
25 |
+
action: 'wapt_check_license',
|
26 |
+
_wpnonce: $('#_wpnonce').val(),
|
27 |
+
license_action: $(this).data('action'),
|
28 |
+
licensekey: ''
|
29 |
+
};
|
30 |
+
|
31 |
+
if ($(this).data('action') == 'activate') {
|
32 |
+
data.licensekey = $('#license-key').val();
|
33 |
+
}
|
34 |
+
|
35 |
+
$.ajax(ajaxurl, {
|
36 |
+
type: 'post',
|
37 |
+
dataType: 'json',
|
38 |
+
data: data,
|
39 |
+
success: function (response) {
|
40 |
+
var noticeId;
|
41 |
+
|
42 |
+
if (!response || !response.success) {
|
43 |
+
|
44 |
+
$('.wapt-control-btn').show();
|
45 |
+
$('.wapt-loader').remove();
|
46 |
+
|
47 |
+
if (response.data) {
|
48 |
+
console.log(response.data.error_message);
|
49 |
+
alert('Error: [' + response.data.error_message + ']');
|
50 |
+
} else {
|
51 |
+
console.log(response);
|
52 |
+
}
|
53 |
+
|
54 |
+
return;
|
55 |
+
}
|
56 |
+
|
57 |
+
if (response.data && response.data.message) {
|
58 |
+
alert(response.data.message);
|
59 |
+
|
60 |
+
window.location.reload();
|
61 |
+
}
|
62 |
+
},
|
63 |
+
error: function (xhr, ajaxOptions, thrownError) {
|
64 |
+
|
65 |
+
$('.wapt-control-btn').show();
|
66 |
+
$('.wapt-loader').remove();
|
67 |
+
|
68 |
+
console.log(xhr.status, xhr.responseText, thrownError);
|
69 |
+
|
70 |
+
alert('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']');
|
71 |
+
}
|
72 |
+
});
|
73 |
+
|
74 |
+
return false;
|
75 |
+
});
|
76 |
+
|
77 |
+
});
|
admin/class-wis-activation.php
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Class of activation/deactivation of the plugin. Must be registered in file includes/class.plugin.php
|
4 |
+
*
|
5 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* @copyright (c) 02.12.2018, Webcraftic
|
7 |
+
* @see Wbcr_Factory420_Activator
|
8 |
+
*
|
9 |
+
* @version 1.0.1
|
10 |
+
*/
|
11 |
+
|
12 |
+
// Exit if accessed directly
|
13 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
|
17 |
+
class WIS_Activation extends Wbcr_Factory420_Activator {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Method is executed during the activation of the plugin.
|
21 |
+
*
|
22 |
+
* @since 1.0.0
|
23 |
+
*/
|
24 |
+
public function activate() {
|
25 |
+
// Code to be executed during plugin activation
|
26 |
+
}
|
27 |
+
|
28 |
+
/**
|
29 |
+
* The method is executed during the deactivation of the plugin.
|
30 |
+
*
|
31 |
+
* @since 1.0.0
|
32 |
+
*/
|
33 |
+
public function deactivate() {
|
34 |
+
// Code to be executed during plugin deactivation
|
35 |
+
}
|
36 |
+
}
|
admin/class-wis-page.php
ADDED
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Class of plugin page. Must be registered in file admin/class-prefix-page.php
|
4 |
+
*
|
5 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* @copyright (c) 02.12.2018, Webcraftic
|
7 |
+
* @see Wbcr_FactoryPages420_AdminPage
|
8 |
+
*
|
9 |
+
* @version 1.0.0
|
10 |
+
*/
|
11 |
+
|
12 |
+
// Exit if accessed directly
|
13 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
|
17 |
+
class WIS_Page extends Wbcr_FactoryPages420_AdminPage {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Name of the template to get content of. It will be based on plugins /admin/views/ dir.
|
21 |
+
* /admin/views/tab-{$template_name}.php
|
22 |
+
*
|
23 |
+
* @var string
|
24 |
+
*/
|
25 |
+
public $template_name = "main";
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Render and return content of the template.
|
29 |
+
* /admin/views/tab-{$template_name}.php
|
30 |
+
*
|
31 |
+
* @return mixed Content of the page
|
32 |
+
*/
|
33 |
+
public function render ($name = '') {
|
34 |
+
if($name == '') $name = $this->template_name;
|
35 |
+
ob_start();
|
36 |
+
if ( is_callable( $name ) ) {
|
37 |
+
echo call_user_func( $name );
|
38 |
+
} elseif ( strpos( $name, DIRECTORY_SEPARATOR ) !== false && ( is_file( $name ) || is_file( $name . '.php' ) ) ) {
|
39 |
+
if ( is_file( $name ) ) {
|
40 |
+
$path = $name;
|
41 |
+
} else {
|
42 |
+
$path = $name . '.php';
|
43 |
+
}
|
44 |
+
} else {
|
45 |
+
$path = WIS_PLUGIN_DIR . "/admin/views/tab-{$name}.php";
|
46 |
+
}
|
47 |
+
if ( ! is_file( $path ) ) {
|
48 |
+
return '';
|
49 |
+
}
|
50 |
+
include $path;
|
51 |
+
$content = ob_get_contents();
|
52 |
+
ob_end_clean();
|
53 |
+
|
54 |
+
return $content;
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Show rendered template - $template_name
|
59 |
+
*/
|
60 |
+
public function indexAction()
|
61 |
+
{
|
62 |
+
echo $this->render();
|
63 |
+
}
|
64 |
+
|
65 |
+
}
|
66 |
+
|
67 |
+
|
admin/pages/about.php
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Exit if accessed directly
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
5 |
+
exit;
|
6 |
+
}
|
7 |
+
|
8 |
+
/**
|
9 |
+
* The page Settings.
|
10 |
+
*
|
11 |
+
* @since 1.0.0
|
12 |
+
*/
|
13 |
+
class WIS_AboutPage extends WIS_Page {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Тип страницы
|
17 |
+
* options - предназначена для создании страниц с набором опций и настроек.
|
18 |
+
* page - произвольный контент, любой html код
|
19 |
+
*
|
20 |
+
* @var string
|
21 |
+
*/
|
22 |
+
public $type = 'page';
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Menu icon (only if a page is placed as a main menu).
|
26 |
+
* For example: '~/assets/img/menu-icon.png'
|
27 |
+
* For example dashicons: '\f321'
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
public $menu_icon = '';
|
31 |
+
|
32 |
+
/**
|
33 |
+
* @var string
|
34 |
+
*/
|
35 |
+
public $page_menu_dashicon;
|
36 |
+
|
37 |
+
/**
|
38 |
+
* @param WAPT_Plugin $plugin
|
39 |
+
*/
|
40 |
+
public function __construct( $plugin ) {
|
41 |
+
$this->id = $plugin->getPrefix()."about";
|
42 |
+
$this->menu_target= $plugin->getPrefix()."settings-".$plugin->getPluginName();
|
43 |
+
$this->page_title = __( 'About Social Slider Widget', 'instagram-slider-widget' );
|
44 |
+
$this->menu_title = __( 'About', 'instagram-slider-widget' );
|
45 |
+
$this->template_name = "about";
|
46 |
+
|
47 |
+
parent::__construct( $plugin );
|
48 |
+
|
49 |
+
$this->plugin = $plugin;
|
50 |
+
}
|
51 |
+
}
|
admin/pages/license.php
ADDED
@@ -0,0 +1,202 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Exit if accessed directly
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
5 |
+
exit;
|
6 |
+
}
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Class WAPT_License_Page is used as template to display form to active premium functionality.
|
10 |
+
*
|
11 |
+
* @since 2.0.7
|
12 |
+
*/
|
13 |
+
class WIS_LicensePage extends WIS_Page {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* {@inheritdoc}
|
17 |
+
*/
|
18 |
+
public $type = "page";
|
19 |
+
|
20 |
+
/**
|
21 |
+
* {@inheritdoc}
|
22 |
+
*/
|
23 |
+
public $page_menu_dashicon = 'dashicons-admin-network';
|
24 |
+
|
25 |
+
/**
|
26 |
+
* {@inheritdoc}
|
27 |
+
*/
|
28 |
+
public $show_right_sidebar_in_options = false;
|
29 |
+
|
30 |
+
/**
|
31 |
+
* {@inheritdoc}
|
32 |
+
*/
|
33 |
+
public $page_menu_position = 0;
|
34 |
+
|
35 |
+
/**
|
36 |
+
* {@inheritdoc}
|
37 |
+
*/
|
38 |
+
public $available_for_multisite = true;
|
39 |
+
|
40 |
+
/**
|
41 |
+
* @var string Name of the paid plan.
|
42 |
+
*/
|
43 |
+
public $plan_name;
|
44 |
+
|
45 |
+
// PREMIUM SECTION
|
46 |
+
// ------------------------------------------------------------------
|
47 |
+
/**
|
48 |
+
* @since 2.0.7
|
49 |
+
* @var bool
|
50 |
+
*/
|
51 |
+
protected $is_premium;
|
52 |
+
|
53 |
+
/**
|
54 |
+
* @since 2.0.7
|
55 |
+
* @var \WBCR\Factory_413\Premium\Provider
|
56 |
+
*/
|
57 |
+
protected $premium;
|
58 |
+
|
59 |
+
/**
|
60 |
+
* @since 2.0.7
|
61 |
+
* @var bool
|
62 |
+
*/
|
63 |
+
protected $is_premium_active;
|
64 |
+
|
65 |
+
/**
|
66 |
+
* @since 2.0.7
|
67 |
+
* @var bool
|
68 |
+
*/
|
69 |
+
protected $premium_has_subscription;
|
70 |
+
|
71 |
+
/**
|
72 |
+
* @since 2.0.7
|
73 |
+
* @var \WBCR\Factory_413\Premium\Interfaces\License
|
74 |
+
*/
|
75 |
+
protected $premium_license;
|
76 |
+
|
77 |
+
// END PREMIUM SECTION
|
78 |
+
// ------------------------------------------------------------------
|
79 |
+
|
80 |
+
/**
|
81 |
+
* {@inheritdoc}
|
82 |
+
* @param Wbcr_Factory420_Plugin $plugin
|
83 |
+
*/
|
84 |
+
public function __construct ( Wbcr_Factory420_Plugin $plugin ) {
|
85 |
+
$this->plugin = $plugin;
|
86 |
+
|
87 |
+
parent::__construct( $plugin );
|
88 |
+
|
89 |
+
$this->id = $plugin->getPrefix().'license';
|
90 |
+
$this->menu_title = __( 'License', 'instagram-slider-widget' );
|
91 |
+
$this->page_title = __( 'License of APT', 'instagram-slider-widget' );
|
92 |
+
$this->template_name = "license";
|
93 |
+
$this->menu_target= $plugin->getPrefix()."settings-".$plugin->getPluginName();
|
94 |
+
$this->capabilitiy = "manage_options";
|
95 |
+
|
96 |
+
$this->premium = WIS_Plugin::app()->premium;
|
97 |
+
$this->is_premium = $this->premium->is_activate();
|
98 |
+
$this->is_premium_active = $this->premium->is_active();
|
99 |
+
$this->premium_has_subscription = $this->premium->has_paid_subscription();
|
100 |
+
$this->premium_license = $this->premium->get_license();
|
101 |
+
}
|
102 |
+
|
103 |
+
/**
|
104 |
+
* [MAGIC] Magic method that configures assets for a page.
|
105 |
+
*/
|
106 |
+
public function assets ( $scripts, $styles ) {
|
107 |
+
parent::assets( $scripts, $styles );
|
108 |
+
|
109 |
+
$this->styles->add( WIS_PLUGIN_URL . '/admin/assets/css/license-manager.css' );
|
110 |
+
|
111 |
+
$this->styles->request( array(
|
112 |
+
'bootstrap.core',
|
113 |
+
'bootstrap.form-groups',
|
114 |
+
'bootstrap.separator',
|
115 |
+
), 'bootstrap' );
|
116 |
+
|
117 |
+
$this->scripts->add( WIS_PLUGIN_URL . '/admin/assets/js/license-manager.js' );
|
118 |
+
}
|
119 |
+
|
120 |
+
/**
|
121 |
+
* Get before content.
|
122 |
+
*
|
123 |
+
* @return string Before content.
|
124 |
+
*/
|
125 |
+
protected function get_plan_description () {
|
126 |
+
return '';
|
127 |
+
}
|
128 |
+
|
129 |
+
/**
|
130 |
+
* @return string
|
131 |
+
*/
|
132 |
+
protected function get_hidden_license_key () {
|
133 |
+
if ( ! $this->is_premium ) {
|
134 |
+
return '';
|
135 |
+
}
|
136 |
+
|
137 |
+
return $this->premium_license->get_hidden_key();
|
138 |
+
}
|
139 |
+
|
140 |
+
/**
|
141 |
+
* @return string
|
142 |
+
*/
|
143 |
+
protected function get_plan () {
|
144 |
+
if ( ! $this->is_premium ) {
|
145 |
+
return 'free';
|
146 |
+
}
|
147 |
+
|
148 |
+
return $this->premium->get_plan();
|
149 |
+
}
|
150 |
+
|
151 |
+
/**
|
152 |
+
* @return mixed
|
153 |
+
*/
|
154 |
+
protected function get_expiration_days () {
|
155 |
+
return $this->premium_license->get_expiration_time( 'days' );
|
156 |
+
}
|
157 |
+
|
158 |
+
/**
|
159 |
+
* @return string
|
160 |
+
*/
|
161 |
+
protected function get_billing_cycle_readable () {
|
162 |
+
if ( ! $this->is_premium ) {
|
163 |
+
return '';
|
164 |
+
}
|
165 |
+
|
166 |
+
$billing_cycle = $this->premium->get_billing_cycle();
|
167 |
+
$billing = 'lifetime';
|
168 |
+
|
169 |
+
if ( 1 == $billing_cycle ) {
|
170 |
+
$billing = 'month';
|
171 |
+
} else if ( 12 == $billing_cycle ) {
|
172 |
+
$billing = 'year';
|
173 |
+
}
|
174 |
+
|
175 |
+
return $billing;
|
176 |
+
}
|
177 |
+
|
178 |
+
/**
|
179 |
+
* Тип лицензии, цветовое оформление для формы лицензирования
|
180 |
+
* free - бесплатная
|
181 |
+
* gift - пожизненная лицензия, лицензия на особых условиях
|
182 |
+
* trial - красный цвет, применяется для триалов, если лиценизия истекла или заблокирована
|
183 |
+
* paid - обычная оплаченная лицензия, в данный момент активна.
|
184 |
+
*
|
185 |
+
* @return string
|
186 |
+
*/
|
187 |
+
protected function get_license_type () {
|
188 |
+
if ( ! $this->is_premium ) {
|
189 |
+
return 'free';
|
190 |
+
}
|
191 |
+
|
192 |
+
$license = $this->premium_license;
|
193 |
+
|
194 |
+
if ( $license->is_lifetime() ) {
|
195 |
+
return 'gift';
|
196 |
+
} else if ( $license->get_expiration_time( 'days' ) < 1 ) {
|
197 |
+
return 'trial';
|
198 |
+
}
|
199 |
+
|
200 |
+
return 'paid';
|
201 |
+
}
|
202 |
+
}
|
admin/pages/settings.php
ADDED
@@ -0,0 +1,195 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Exit if accessed directly
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
5 |
+
exit;
|
6 |
+
}
|
7 |
+
|
8 |
+
/**
|
9 |
+
* The page Settings.
|
10 |
+
*
|
11 |
+
* @since 1.0.0
|
12 |
+
*/
|
13 |
+
class WIS_SettingsPage extends WIS_Page {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Тип страницы
|
17 |
+
* options - предназначена для создании страниц с набором опций и настроек.
|
18 |
+
* page - произвольный контент, любой html код
|
19 |
+
*
|
20 |
+
* @var string
|
21 |
+
*/
|
22 |
+
public $type = 'options';
|
23 |
+
|
24 |
+
/**
|
25 |
+
* The id of the page in the admin menu.
|
26 |
+
*
|
27 |
+
* Mainly used to navigate between pages.
|
28 |
+
*
|
29 |
+
* @since 1.0.0
|
30 |
+
* @see FactoryPages420_AdminPage
|
31 |
+
*
|
32 |
+
* @var string
|
33 |
+
*/
|
34 |
+
public $id;
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Menu icon (only if a page is placed as a main menu).
|
38 |
+
* For example: '~/assets/img/menu-icon.png'
|
39 |
+
* For example dashicons: '\f321'
|
40 |
+
* @var string
|
41 |
+
*/
|
42 |
+
public $menu_icon;
|
43 |
+
|
44 |
+
/**
|
45 |
+
* @var string
|
46 |
+
*/
|
47 |
+
public $page_menu_dashicon = 'dashicons-performance';
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Menu position (only if a page is placed as a main menu).
|
51 |
+
* @link http://codex.wordpress.org/Function_Reference/add_menu_page
|
52 |
+
* @var string
|
53 |
+
*/
|
54 |
+
public $menu_position = 58;
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Menu type. Set it to add the page to the specified type menu.
|
58 |
+
* For example: 'post'
|
59 |
+
* @var string
|
60 |
+
*/
|
61 |
+
public $menu_post_type = null;
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Visible page title.
|
65 |
+
* For example: 'License Manager'
|
66 |
+
* @var string
|
67 |
+
*/
|
68 |
+
public $page_title;
|
69 |
+
|
70 |
+
/**
|
71 |
+
* Visible title in menu.
|
72 |
+
* For example: 'License Manager'
|
73 |
+
* @var string
|
74 |
+
*/
|
75 |
+
public $menu_title;
|
76 |
+
|
77 |
+
/**
|
78 |
+
* If set, an extra sub menu will be created with another title.
|
79 |
+
* @var string
|
80 |
+
*/
|
81 |
+
public $menu_sub_title;
|
82 |
+
|
83 |
+
/**
|
84 |
+
*
|
85 |
+
* @var
|
86 |
+
*/
|
87 |
+
public $page_menu_short_description;
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Заголовок страницы, также использует в меню, как название закладки
|
91 |
+
*
|
92 |
+
* @var bool
|
93 |
+
*/
|
94 |
+
public $show_page_title = true;
|
95 |
+
|
96 |
+
/**
|
97 |
+
* @var int
|
98 |
+
*/
|
99 |
+
public $page_menu_position = 20;
|
100 |
+
|
101 |
+
|
102 |
+
/**
|
103 |
+
* @param WIS_Plugin $plugin
|
104 |
+
*/
|
105 |
+
public function __construct( $plugin ) {
|
106 |
+
$this->id = $plugin->getPrefix()."settings";
|
107 |
+
$this->page_title = __( 'Settings of Social Slider Widget', 'instagram-slider-widget' );
|
108 |
+
$this->menu_title = __( 'Settings', 'instagram-slider-widget' );
|
109 |
+
$this->menu_target= $plugin->getPrefix()."widgets-".$plugin->getPluginName();
|
110 |
+
$this->menu_icon = '~/admin/assets/img/wis.png';
|
111 |
+
$this->capabilitiy = "manage_options";
|
112 |
+
$this->template_name = "settings";
|
113 |
+
|
114 |
+
parent::__construct( $plugin );
|
115 |
+
|
116 |
+
$this->plugin = $plugin;
|
117 |
+
}
|
118 |
+
|
119 |
+
public function assets( $scripts, $styles ) {
|
120 |
+
$this->scripts->request( 'jquery' );
|
121 |
+
|
122 |
+
$this->scripts->request( [
|
123 |
+
'control.checkbox',
|
124 |
+
'control.dropdown'
|
125 |
+
], 'bootstrap' );
|
126 |
+
|
127 |
+
$this->styles->request( [
|
128 |
+
'bootstrap.core',
|
129 |
+
'bootstrap.form-group',
|
130 |
+
'bootstrap.separator',
|
131 |
+
'control.dropdown',
|
132 |
+
'control.checkbox',
|
133 |
+
], 'bootstrap' );
|
134 |
+
}
|
135 |
+
|
136 |
+
/**
|
137 |
+
* Returns options for the Basic Settings screen.
|
138 |
+
*
|
139 |
+
* @since 1.0.0
|
140 |
+
* @return array
|
141 |
+
*/
|
142 |
+
public function getOptions() {
|
143 |
+
|
144 |
+
$options = [];
|
145 |
+
|
146 |
+
$options[] = [
|
147 |
+
'type' => 'html',
|
148 |
+
'html' => '<h3 style="margin-left:0">General</h3>'
|
149 |
+
];
|
150 |
+
|
151 |
+
$options[] = [
|
152 |
+
'type' => 'separator'
|
153 |
+
];
|
154 |
+
|
155 |
+
/*
|
156 |
+
$options[] = [
|
157 |
+
'type' => 'checkbox',
|
158 |
+
'way' => 'buttons',
|
159 |
+
'name' => 'auto-generation',
|
160 |
+
'title' => __( 'Enable automatic post thumbnail generation', 'instagram-slider-widget' ),
|
161 |
+
'default' => false,
|
162 |
+
'hint' => __( 'Enable automatic post thumbnail generation', 'instagram-slider-widget' )
|
163 |
+
];
|
164 |
+
*/
|
165 |
+
|
166 |
+
return $options;
|
167 |
+
}
|
168 |
+
|
169 |
+
public function indexAction() {
|
170 |
+
|
171 |
+
// creating a form
|
172 |
+
global $form;
|
173 |
+
$form = new Wbcr_FactoryForms418_Form( [
|
174 |
+
'scope' => substr( $this->plugin->getPrefix(), 0, - 1 ),
|
175 |
+
'name' => 'setting'
|
176 |
+
], $this->plugin );
|
177 |
+
|
178 |
+
$form->setProvider( new Wbcr_FactoryForms418_OptionsValueProvider( $this->plugin ) );
|
179 |
+
|
180 |
+
$form->add( $this->getOptions() );
|
181 |
+
|
182 |
+
$wapt_saved = WIS_Plugin::app()->request->post( $this->plugin->getPrefix() . 'saved', '' );
|
183 |
+
if ( ! empty( $wapt_saved ) ) {
|
184 |
+
$wapt_nonce = WIS_Plugin::app()->request->post( $this->plugin->getPrefix() . 'nonce', '' );
|
185 |
+
if ( ! wp_verify_nonce( $wapt_nonce, $this->plugin->getPrefix() . 'settings_form' ) ) {
|
186 |
+
wp_die( 'Permission error. You can not edit this page.' );
|
187 |
+
}
|
188 |
+
$form->save();
|
189 |
+
|
190 |
+
do_action( 'wis/settings/after_form_save' );
|
191 |
+
}
|
192 |
+
|
193 |
+
parent::indexAction();
|
194 |
+
}
|
195 |
+
}
|
admin/pages/widgets.php
ADDED
@@ -0,0 +1,128 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Exit if accessed directly
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
5 |
+
exit;
|
6 |
+
}
|
7 |
+
|
8 |
+
/**
|
9 |
+
* The page Settings.
|
10 |
+
*
|
11 |
+
* @since 1.0.0
|
12 |
+
*/
|
13 |
+
class WIS_WidgetsPage extends WIS_Page {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Тип страницы
|
17 |
+
* options - предназначена для создании страниц с набором опций и настроек.
|
18 |
+
* page - произвольный контент, любой html код
|
19 |
+
*
|
20 |
+
* @var string
|
21 |
+
*/
|
22 |
+
public $type;
|
23 |
+
|
24 |
+
/**
|
25 |
+
* The id of the page in the admin menu.
|
26 |
+
*
|
27 |
+
* Mainly used to navigate between pages.
|
28 |
+
*
|
29 |
+
* @since 1.0.0
|
30 |
+
* @see FactoryPages420_AdminPage
|
31 |
+
*
|
32 |
+
* @var string
|
33 |
+
*/
|
34 |
+
public $id;
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Menu icon (only if a page is placed as a main menu).
|
38 |
+
* For example: '~/assets/img/menu-icon.png'
|
39 |
+
* For example dashicons: '\f321'
|
40 |
+
* @var string
|
41 |
+
*/
|
42 |
+
public $menu_icon;
|
43 |
+
|
44 |
+
/**
|
45 |
+
* @var string
|
46 |
+
*/
|
47 |
+
public $page_menu_dashicon = 'dashicons-performance';
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Menu position (only if a page is placed as a main menu).
|
51 |
+
* @link http://codex.wordpress.org/Function_Reference/add_menu_page
|
52 |
+
* @var string
|
53 |
+
*/
|
54 |
+
public $menu_position = 58;
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Menu type. Set it to add the page to the specified type menu.
|
58 |
+
* For example: 'post'
|
59 |
+
* @var string
|
60 |
+
*/
|
61 |
+
public $menu_post_type = null;
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Visible page title.
|
65 |
+
* For example: 'License Manager'
|
66 |
+
* @var string
|
67 |
+
*/
|
68 |
+
public $page_title;
|
69 |
+
|
70 |
+
/**
|
71 |
+
* Visible title in menu.
|
72 |
+
* For example: 'License Manager'
|
73 |
+
* @var string
|
74 |
+
*/
|
75 |
+
public $menu_title;
|
76 |
+
|
77 |
+
/**
|
78 |
+
* If set, an extra sub menu will be created with another title.
|
79 |
+
* @var string
|
80 |
+
*/
|
81 |
+
public $menu_sub_title;
|
82 |
+
|
83 |
+
/**
|
84 |
+
*
|
85 |
+
* @var
|
86 |
+
*/
|
87 |
+
public $page_menu_short_description;
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Заголовок страницы, также использует в меню, как название закладки
|
91 |
+
*
|
92 |
+
* @var bool
|
93 |
+
*/
|
94 |
+
public $show_page_title = true;
|
95 |
+
|
96 |
+
/**
|
97 |
+
* @var int
|
98 |
+
*/
|
99 |
+
public $page_menu_position = 20;
|
100 |
+
|
101 |
+
|
102 |
+
/**
|
103 |
+
* @param WIS_Plugin $plugin
|
104 |
+
*/
|
105 |
+
public function __construct( $plugin ) {
|
106 |
+
$this->id = $plugin->getPrefix()."widgets";
|
107 |
+
$this->page_title = __( 'Social Slider Widgets', 'instagram-slider-widget' );
|
108 |
+
$this->menu_title = __( 'Social Slider Widgets', 'instagram-slider-widget' );
|
109 |
+
$this->menu_sub_title = __( 'Widgets', 'instagram-slider-widget' );;
|
110 |
+
$this->menu_icon = '~/admin/assets/img/wis.png';
|
111 |
+
$this->capabilitiy = "manage_options";
|
112 |
+
$this->template_name = "widgets";
|
113 |
+
|
114 |
+
parent::__construct( $plugin );
|
115 |
+
|
116 |
+
$this->plugin = $plugin;
|
117 |
+
}
|
118 |
+
|
119 |
+
public function assets( $scripts, $styles ) {
|
120 |
+
//Widgets scripts
|
121 |
+
$this->scripts->request( 'admin-widgets' );
|
122 |
+
|
123 |
+
if ( wp_is_mobile() ) {
|
124 |
+
$this->scripts->request( 'jquery-touch-punch' );
|
125 |
+
}
|
126 |
+
|
127 |
+
}
|
128 |
+
}
|
admin/views/tab-about.php
ADDED
@@ -0,0 +1,104 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<style>
|
2 |
+
|
3 |
+
.wis-section-wrapper {
|
4 |
+
width: 100%;
|
5 |
+
margin-top: 10px;
|
6 |
+
}
|
7 |
+
|
8 |
+
.wis-section {
|
9 |
+
padding: 29px 29px 29px 29px;
|
10 |
+
}
|
11 |
+
|
12 |
+
.wis-section .container {
|
13 |
+
display: -webkit-box;
|
14 |
+
display: -webkit-flex;
|
15 |
+
display: -ms-flexbox;
|
16 |
+
display: flex;
|
17 |
+
margin-right: auto;
|
18 |
+
margin-left: auto;
|
19 |
+
position: relative;
|
20 |
+
max-width: 1140px;
|
21 |
+
/*min-height: 600px;*/
|
22 |
+
-webkit-box-align: center;
|
23 |
+
-webkit-align-items: center;
|
24 |
+
-ms-flex-align: center;
|
25 |
+
align-items: center;
|
26 |
+
}
|
27 |
+
|
28 |
+
.wis-section-intro {
|
29 |
+
background-image: url('<?php echo WIS_PLUGIN_URL;?>/admin/assets/img/fon.jpg');
|
30 |
+
background-position: bottom center;
|
31 |
+
background-size: cover;
|
32 |
+
box-shadow: 0px 0px 34px 0px rgba(107, 107, 107, 0.5);
|
33 |
+
transition: background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s;
|
34 |
+
text-align: center;
|
35 |
+
}
|
36 |
+
|
37 |
+
.wis-section-intro .container h2 {
|
38 |
+
font-size: 61px;
|
39 |
+
font-weight: 500;
|
40 |
+
text-transform: uppercase;
|
41 |
+
line-height: 1.1em;
|
42 |
+
color: #fff;
|
43 |
+
text-align: center;
|
44 |
+
}
|
45 |
+
|
46 |
+
.wis-section-intro .container p {
|
47 |
+
margin-bottom: 1.6em;
|
48 |
+
color: #fffcfc;
|
49 |
+
font-family: "Arial", Sans-serif;
|
50 |
+
font-size: 22px;
|
51 |
+
line-height: 1.3em;
|
52 |
+
letter-spacing: 1.1px;
|
53 |
+
}
|
54 |
+
|
55 |
+
.wis-section-changelog h4 {
|
56 |
+
font-size: 1.3333333333333rem;
|
57 |
+
}
|
58 |
+
|
59 |
+
.wis-section-changelog p,
|
60 |
+
.wis-section-changelog ul > li {
|
61 |
+
font-size: 15px;
|
62 |
+
}
|
63 |
+
|
64 |
+
.wis-section-changelog ul {
|
65 |
+
list-style: inherit;
|
66 |
+
margin-left: 40px;
|
67 |
+
}
|
68 |
+
|
69 |
+
#wpfooter {
|
70 |
+
position: relative !important;
|
71 |
+
}
|
72 |
+
|
73 |
+
|
74 |
+
</style>
|
75 |
+
|
76 |
+
<div class="wis-section-wrapper">
|
77 |
+
<section class="wis-section wis-section-intro">
|
78 |
+
<div class="container">
|
79 |
+
|
80 |
+
<div>
|
81 |
+
<h2><?php esc_html_e( 'Social Slider Widget', 'instagram-slider-widget' ) ?></h2>
|
82 |
+
|
83 |
+
<p><?php esc_html_e( 'We didn’t please you with updated lately. However, great news today! We are about to tell you about all the spectacular changes that are planned for our plugin!', 'instagram-slider-widget' ) ?></p>
|
84 |
+
|
85 |
+
<p><?php echo __( 'First of all, we proudly announce that a new group of developers, <span style="text-decoration: underline;"><strong>Creative Motion</strong></span>, are helping us with plugin improvement.', 'instagram-slider-widget' ) ?></p>
|
86 |
+
|
87 |
+
<p><?php esc_html_e( 'Auto Post Thumbnails has perfectly fit in our close family of popular plugins with more than 600,000 users worldwide.', 'instagram-slider-widget' ) ?></p>
|
88 |
+
|
89 |
+
<p><?php esc_html_e( 'What you can expect soon:', 'instagram-slider-widget' ) ?></p>
|
90 |
+
|
91 |
+
</div>
|
92 |
+
</div>
|
93 |
+
|
94 |
+
</section>
|
95 |
+
|
96 |
+
<section class="wis-section wis-section-changelog">
|
97 |
+
<div class="container">
|
98 |
+
<div>
|
99 |
+
<h4>1.4.4</h4>
|
100 |
+
<p><?php echo __( 'Bug fixes', 'instagram-slider-widget' ); ?></p>
|
101 |
+
</div>
|
102 |
+
</div>
|
103 |
+
</section>
|
104 |
+
</div>
|
admin/views/tab-license.php
ADDED
@@ -0,0 +1,147 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="wrap">
|
2 |
+
<div class="factory-bootstrap-421 factory-fontawesome-000">
|
3 |
+
<?php wp_nonce_field( 'license' ); ?>
|
4 |
+
<div id="wis-license-wrapper"
|
5 |
+
data-loader="<?php echo WIS_PLUGIN_URL . '/admin/assets/img/loader.gif'; ?>"
|
6 |
+
data-plugin="<?php echo get_class( $this->plugin ) ?>">
|
7 |
+
|
8 |
+
<div class="factory-bootstrap-413 onp-page-wrap <?php echo $this->get_license_type() ?>-license-manager-content"
|
9 |
+
id="license-manager">
|
10 |
+
<div>
|
11 |
+
<h3><?php printf( __( 'Activate %s', 'instagram-slider-widget' ), $this->plan_name ) ?></h3>
|
12 |
+
<?php echo $this->get_plan_description() ?>
|
13 |
+
</div>
|
14 |
+
<br>
|
15 |
+
|
16 |
+
<div class="onp-container">
|
17 |
+
<div class="license-details">
|
18 |
+
<?php if ( $this->get_license_type() == 'free' ): ?>
|
19 |
+
<a href="<?php echo $this->plugin->get_support()->get_pricing_url( true, 'license_page' ); ?>"
|
20 |
+
class="purchase-premium" target="_blank" rel="noopener">
|
21 |
+
<span class="btn btn-gold btn-inner-wrap">
|
22 |
+
<?php printf( __( 'Upgrade to Premium for $%s', 'instagram-slider-widget' ), $this->premium->get_price() ) ?>
|
23 |
+
</span>
|
24 |
+
</a>
|
25 |
+
<p><?php printf( __( 'Your current license for %1$s:', 'instagram-slider-widget' ), $this->plugin->getPluginTitle() ) ?></p>
|
26 |
+
<?php endif; ?>
|
27 |
+
<div class="license-details-block <?php echo $this->get_license_type() ?>-details-block">
|
28 |
+
<?php if ( $this->is_premium ): ?>
|
29 |
+
<a data-action="deactivate" href="#"
|
30 |
+
class="btn btn-default btn-small license-delete-button wis-control-btn">
|
31 |
+
<?php _e( 'Delete Key', 'instagram-slider-widget' ) ?>
|
32 |
+
</a>
|
33 |
+
<a data-action="sync" href="#"
|
34 |
+
class="btn btn-default btn-small license-synchronization-button wis-control-btn">
|
35 |
+
<?php _e( 'Synchronization', 'instagram-slider-widget' ) ?>
|
36 |
+
</a>
|
37 |
+
<?php endif; ?>
|
38 |
+
<h3>
|
39 |
+
<?php echo ucfirst( $this->get_plan() ); ?>
|
40 |
+
|
41 |
+
<?php if ( $this->is_premium && $this->premium_has_subscription ): ?>
|
42 |
+
<span style="font-size: 15px;">
|
43 |
+
(<?php printf( __( 'Automatic renewal, every %s', '' ), esc_attr( $this->get_billing_cycle_readable() ) ); ?>
|
44 |
+
)
|
45 |
+
</span>
|
46 |
+
<?php endif; ?>
|
47 |
+
</h3>
|
48 |
+
<?php if ( $this->is_premium ): ?>
|
49 |
+
<div class="license-key-identity">
|
50 |
+
<code><?php echo esc_attr( $this->get_hidden_license_key() ) ?></code>
|
51 |
+
</div>
|
52 |
+
<?php endif; ?>
|
53 |
+
<div class="license-key-description">
|
54 |
+
<p><?php _e( 'Public License is a GPLv2 compatible license allowing you to change and use this version of the plugin for free. Please keep in mind this license covers only free edition of the plugin. Premium versions are distributed with other type of a license.', 'instagram-slider-widget' ) ?>
|
55 |
+
</p>
|
56 |
+
<?php if ( $this->is_premium && $this->premium_has_subscription ): ?>
|
57 |
+
<p class="activate-trial-hint">
|
58 |
+
<?php _e( 'You use a paid subscription for the plugin updates. In case you don’t want to receive paid updates, please, click <a data-action="unsubscribe" class="wis-control-btn" href="#">cancel subscription</a>', 'instagram-slider-widget' ) ?>
|
59 |
+
</p>
|
60 |
+
<?php endif; ?>
|
61 |
+
|
62 |
+
<?php if ( $this->get_license_type() == 'trial' ): ?>
|
63 |
+
<p class="activate-error-hint">
|
64 |
+
<?php printf( __( 'Your license has expired, please extend the license to get updates and support.', 'instagram-slider-widget' ), '' ) ?>
|
65 |
+
</p>
|
66 |
+
<?php endif; ?>
|
67 |
+
</div>
|
68 |
+
<table class="license-params" colspacing="0" colpadding="0">
|
69 |
+
<tr>
|
70 |
+
<!--<td class="license-param license-param-domain">
|
71 |
+
<span class="license-value"><?php echo esc_attr( $_SERVER['SERVER_NAME'] ); ?></span>
|
72 |
+
<span class="license-value-name"><?php _e( 'domain', 'instagram-slider-widget' ) ?></span>
|
73 |
+
</td>-->
|
74 |
+
<td class="license-param license-param-days">
|
75 |
+
<span class="license-value"><?php echo $this->get_plan() ?></span>
|
76 |
+
<span class="license-value-name"><?php _e( 'plan', 'instagram-slider-widget' ) ?></span>
|
77 |
+
</td>
|
78 |
+
<?php if ( $this->is_premium ) : ?>
|
79 |
+
<td class="license-param license-param-sites">
|
80 |
+
<span class="license-value">
|
81 |
+
<?php echo esc_attr( $this->premium_license->get_count_active_sites() ); ?>
|
82 |
+
<?php _e( 'of', 'instagram-slider-widget' ) ?>
|
83 |
+
<?php echo esc_attr( $this->premium_license->get_sites_quota() ); ?></span>
|
84 |
+
<span class="license-value-name"><?php _e( 'active sites', 'instagram-slider-widget' ) ?></span>
|
85 |
+
</td>
|
86 |
+
<?php endif; ?>
|
87 |
+
<td class="license-param license-param-version">
|
88 |
+
<span class="license-value"><?php echo $this->plugin->getPluginVersion() ?></span>
|
89 |
+
<span class="license-value-name"><span><?php _e( 'version', 'instagram-slider-widget' ) ?></span></span>
|
90 |
+
</td>
|
91 |
+
<?php if ( $this->is_premium ): ?>
|
92 |
+
<td class="license-param license-param-days">
|
93 |
+
<?php if ( $this->get_license_type() == 'trial' ): ?>
|
94 |
+
<span class="license-value"><?php _e( 'EXPIRED!', 'instagram-slider-widget' ) ?></span>
|
95 |
+
<span class="license-value-name"><?php _e( 'please update the key', 'instagram-slider-widget' ) ?></span>
|
96 |
+
<?php else: ?>
|
97 |
+
<span class="license-value">
|
98 |
+
<?php
|
99 |
+
if ( $this->premium_license->is_lifetime() ) {
|
100 |
+
echo 'infiniate';
|
101 |
+
} else {
|
102 |
+
echo $this->get_expiration_days();
|
103 |
+
}
|
104 |
+
?>
|
105 |
+
<small> <?php _e( 'day(s)', 'instagram-slider-widget' ) ?></small>
|
106 |
+
</span>
|
107 |
+
<span class="license-value-name"><?php _e( 'remained', 'instagram-slider-widget' ) ?></span>
|
108 |
+
<?php endif; ?>
|
109 |
+
</td>
|
110 |
+
<?php endif; ?>
|
111 |
+
</tr>
|
112 |
+
</table>
|
113 |
+
</div>
|
114 |
+
</div>
|
115 |
+
<div class="license-input">
|
116 |
+
<form action="" method="post">
|
117 |
+
<?php if ( $this->is_premium ): ?>
|
118 |
+
<p><?php _e( 'Have a key to activate the premium version? Paste it here:', 'instagram-slider-widget' ) ?><p>
|
119 |
+
<?php else: ?>
|
120 |
+
<p><?php _e( 'Have a key to activate the plugin? Paste it here:', 'instagram-slider-widget' ) ?>
|
121 |
+
<p>
|
122 |
+
<?php endif; ?>
|
123 |
+
<button data-action="activate" class="btn btn-default wis-control-btn"
|
124 |
+
type="button"
|
125 |
+
id="license-submit">
|
126 |
+
<?php _e( 'Submit Key', 'instagram-slider-widget' ) ?>
|
127 |
+
</button>
|
128 |
+
<div class="license-key-wrap">
|
129 |
+
<input type="text" id="license-key" name="licensekey" value=""
|
130 |
+
class="form-control"/>
|
131 |
+
</div>
|
132 |
+
<?php if ( $this->is_premium ): ?>
|
133 |
+
<p style="margin-top: 10px;">
|
134 |
+
<?php printf( __( '<a href="%s" target="_blank" rel="noopener">Lean more</a> about the premium version and get the license key to activate it now!', 'instagram-slider-widget' ), $this->plugin->get_support()->get_pricing_url( true, 'license_page' ) ); ?>
|
135 |
+
</p>
|
136 |
+
<?php else: ?>
|
137 |
+
<p style="margin-top: 10px;">
|
138 |
+
<?php printf( __( 'Can’t find your key? Go to <a href="%s" target="_blank" rel="noopener">this page</a> and login using the e-mail address associated with your purchase.', 'instagram-slider-widget' ), $this->plugin->get_support()->get_contacts_url( true, 'license_page' ) ) ?>
|
139 |
+
</p>
|
140 |
+
<?php endif; ?>
|
141 |
+
</form>
|
142 |
+
</div>
|
143 |
+
</div>
|
144 |
+
</div>
|
145 |
+
</div>
|
146 |
+
</div>
|
147 |
+
</div>
|
admin/views/tab-settings.php
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php global $form; ?>
|
2 |
+
|
3 |
+
<div class="wrap">
|
4 |
+
<div class="factory-bootstrap-421 factory-fontawesome-000">
|
5 |
+
<h3><?php _e( 'Settings', 'insert-php' ) ?></h3>
|
6 |
+
<div class="row">
|
7 |
+
<div class="col-md-9">
|
8 |
+
<form method="post" class="form-horizontal">
|
9 |
+
<?php if ( ! empty( $wbcr_saved ) ) { ?>
|
10 |
+
<div id="message" class="alert alert-success">
|
11 |
+
<p><?php _e( 'The settings have been updated successfully!', 'insert-php' ) ?></p>
|
12 |
+
</div>
|
13 |
+
<?php } ?>
|
14 |
+
<div style="padding-top: 10px;">
|
15 |
+
<?php $form->html(); ?>
|
16 |
+
</div>
|
17 |
+
<div class="form-group form-horizontal">
|
18 |
+
<label class="col-sm-2 control-label"> </label>
|
19 |
+
<div class="control-group controls col-sm-10">
|
20 |
+
<?php wp_nonce_field( $this->plugin->getPrefix() . 'settings_form', $this->plugin->getPrefix() . 'nonce' ); ?>
|
21 |
+
<input name="<?php echo $this->plugin->getPrefix() . 'saved' ?>" class="btn btn-primary" type="submit" value="<?php _e( 'Save settings', 'insert-php' ) ?>"/>
|
22 |
+
</div>
|
23 |
+
</div>
|
24 |
+
</form>
|
25 |
+
</div>
|
26 |
+
<div class="col-md-3">
|
27 |
+
<div id="wapt-dashboard-widget" class="wapt-right-widget">
|
28 |
+
<?php
|
29 |
+
global $wbcr_isw_adinserter;
|
30 |
+
echo $wbcr_isw_adinserter->get_adverts( 'right_sidebar' );
|
31 |
+
//apply_filters( 'wbcr/inp/dashboard/widget/print', '' );
|
32 |
+
?>
|
33 |
+
</div>
|
34 |
+
</div>
|
35 |
+
</div>
|
36 |
+
</div>
|
37 |
+
</div>
|
admin/views/tab-widgets.php
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
require_once ABSPATH."wp-admin/includes/widgets.php";
|
3 |
+
$sidebars_widgets = wp_get_sidebars_widgets();
|
4 |
+
global $wp_registered_widgets, $wp_registered_sidebars;
|
5 |
+
|
6 |
+
wp_nonce_field('save-sidebar-widgets','_wpnonce_widgets');
|
7 |
+
if ( !empty( $sidebars_widgets ) )
|
8 |
+
{
|
9 |
+
foreach ($sidebars_widgets as $key => $sidebar)
|
10 |
+
{
|
11 |
+
foreach ($sidebar as $widget)
|
12 |
+
{
|
13 |
+
if(strstr($widget, 'jr_insta_slider'))
|
14 |
+
{
|
15 |
+
wp_list_widget_controls($key, $wp_registered_sidebars[$key]['name']);
|
16 |
+
}
|
17 |
+
}
|
18 |
+
}
|
19 |
+
}
|
20 |
+
?>
|
21 |
+
<script>
|
22 |
+
jQuery(document).ready(function($) {
|
23 |
+
$('.widget:not([id*="jr_insta_slider"])').remove();
|
24 |
+
//$('[id*="jr_insta_slider"]').before($('#jr_insta_shortcode').val())
|
25 |
+
$('.sidebar-name').find('button.handlediv').remove();
|
26 |
+
});
|
27 |
+
</script>
|
assets/index.php
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
includes/class-wis-plugin.php
ADDED
@@ -0,0 +1,127 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Exit if accessed directly
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
5 |
+
exit;
|
6 |
+
}
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Основной класс плагина Social Slider Widget
|
10 |
+
*
|
11 |
+
* @author Artem Prihodko <webtemyk@yandex.ru>
|
12 |
+
* @copyright (c) 2019 Webraftic Ltd
|
13 |
+
* @version 1.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
class WIS_Plugin extends Wbcr_Factory420_Plugin {
|
17 |
+
|
18 |
+
/**
|
19 |
+
* @see self::app()
|
20 |
+
* @var Wbcr_Factory420_Plugin
|
21 |
+
*/
|
22 |
+
private static $app;
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Статический метод для быстрого доступа к интерфейсу плагина.
|
26 |
+
*
|
27 |
+
* Позволяет разработчику глобально получить доступ к экземпляру класса плагина в любом месте
|
28 |
+
* плагина, но при этом разработчик не может вносить изменения в основной класс плагина.
|
29 |
+
*
|
30 |
+
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
31 |
+
* классам.
|
32 |
+
*
|
33 |
+
* @return Wbcr_Factory420_Plugin
|
34 |
+
*/
|
35 |
+
public static function app() {
|
36 |
+
return self::$app;
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* Конструктор
|
41 |
+
*
|
42 |
+
* Применяет конструктор родительского класса и записывает экземпляр текущего класса в свойство $app.
|
43 |
+
* Подробнее о свойстве $app см. self::app()
|
44 |
+
*
|
45 |
+
* @param string $plugin_path
|
46 |
+
* @param array $data
|
47 |
+
*
|
48 |
+
* @throws Exception
|
49 |
+
*/
|
50 |
+
public function __construct( $plugin_path, $data ) {
|
51 |
+
parent::__construct( $plugin_path, $data );
|
52 |
+
|
53 |
+
self::$app = $this;
|
54 |
+
|
55 |
+
if ( is_admin() ) {
|
56 |
+
// Регистрации класса активации/деактивации плагина
|
57 |
+
$this->init_activation();
|
58 |
+
|
59 |
+
// Инициализация скриптов для бэкенда
|
60 |
+
$this->admin_scripts();
|
61 |
+
|
62 |
+
//Подключение файла проверки лицензии
|
63 |
+
require( WIS_PLUGIN_DIR . '/admin/ajax/check-license.php' );
|
64 |
+
}
|
65 |
+
else
|
66 |
+
{
|
67 |
+
$this->front_scripts();
|
68 |
+
}
|
69 |
+
|
70 |
+
$this->global_scripts();
|
71 |
+
|
72 |
+
|
73 |
+
}
|
74 |
+
|
75 |
+
protected function init_activation() {
|
76 |
+
include_once( WIS_PLUGIN_DIR . '/admin/class-wis-activation.php' );
|
77 |
+
$this->registerActivation( 'WIS_Activation' );
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* Регистрирует классы страниц в плагине
|
82 |
+
*/
|
83 |
+
private function register_pages() {
|
84 |
+
// require_once WIS_PLUGIN_DIR . '/admin/class-wis-page.php';
|
85 |
+
// self::app()->registerPage( 'WIS_WidgetsPage', WIS_PLUGIN_DIR . '/admin/pages/widgets.php' );
|
86 |
+
// self::app()->registerPage( 'WIS_SettingsPage', WIS_PLUGIN_DIR . '/admin/pages/settings.php' );
|
87 |
+
// self::app()->registerPage( 'WIS_LicensePage', WIS_PLUGIN_DIR . '/admin/pages/license.php' );
|
88 |
+
// self::app()->registerPage( 'WIS_AboutPage', WIS_PLUGIN_DIR . '/admin/pages/about.php' );
|
89 |
+
}
|
90 |
+
|
91 |
+
/**
|
92 |
+
* Код для админки
|
93 |
+
*/
|
94 |
+
private function admin_scripts()
|
95 |
+
{
|
96 |
+
// Регистрация страниц
|
97 |
+
$this->register_pages();
|
98 |
+
|
99 |
+
add_action( 'admin_enqueue_scripts', [$this, 'admin_enqueue_assets'] );
|
100 |
+
}
|
101 |
+
|
102 |
+
/**
|
103 |
+
* Код для админки и фронтенда
|
104 |
+
*/
|
105 |
+
private function global_scripts() {
|
106 |
+
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* Код для админки и фронтенда
|
111 |
+
*/
|
112 |
+
private function front_scripts() {
|
113 |
+
add_action( 'wp_enqueue_scripts', [$this, 'enqueue_assets'] );
|
114 |
+
}
|
115 |
+
|
116 |
+
public function admin_enqueue_assets()
|
117 |
+
{
|
118 |
+
wp_enqueue_style( 'jr-insta-admin-styles', WIS_PLUGIN_URL.'/admin/assets/css/jr-insta-admin.css', array(), WIS_PLUGIN_VERSION );
|
119 |
+
wp_enqueue_script( 'jr-insta-admin-script', WIS_PLUGIN_URL.'/admin/assets/js/jr-insta-admin.js', array( 'jquery' ), WIS_PLUGIN_VERSION, true );
|
120 |
+
}
|
121 |
+
|
122 |
+
public function enqueue_assets()
|
123 |
+
{
|
124 |
+
wp_enqueue_style( 'instag-slider', WIS_PLUGIN_URL.'/assets/css/instag-slider.css', array(), WIS_PLUGIN_VERSION );
|
125 |
+
wp_enqueue_script( 'jquery-pllexi-slider', WIS_PLUGIN_URL.'/assets/js/jquery.flexslider-min.js', array( 'jquery' ), '2.2', false );
|
126 |
+
}
|
127 |
+
}
|
includes/class-wis_instagram_slider.php
ADDED
@@ -0,0 +1,1517 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* WIS_InstagramSlider Class
|
4 |
+
*/
|
5 |
+
class WIS_InstagramSlider extends WP_Widget {
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Plugin version, used for cache-busting of style and script file references.
|
9 |
+
*
|
10 |
+
* @var string
|
11 |
+
*/
|
12 |
+
const VERSION = '1.4.3';
|
13 |
+
const USERNAME_URL = 'https://www.instagram.com/{username}/';
|
14 |
+
const TAG_URL = 'https://www.instagram.com/explore/tags/{tag}/?__a=1';
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Initialize the plugin by registering widget and loading public scripts
|
18 |
+
*
|
19 |
+
*/
|
20 |
+
public function __construct() {
|
21 |
+
|
22 |
+
// Widget ID and Class Setup
|
23 |
+
parent::__construct( 'jr_insta_slider', __( 'Social Slider', 'instagram-slider-widget' ), array(
|
24 |
+
'classname' => 'jr-insta-slider',
|
25 |
+
'description' => __( 'A widget that displays a slider with instagram images ', 'instagram-slider-widget' )
|
26 |
+
)
|
27 |
+
);
|
28 |
+
|
29 |
+
// Shortcode
|
30 |
+
add_shortcode( 'jr_instagram', array( $this, 'shortcode' ) );
|
31 |
+
|
32 |
+
// Instgram Action to display images
|
33 |
+
add_action( 'jr_instagram', array( $this, 'instagram_images' ) );
|
34 |
+
|
35 |
+
// Enqueue Plugin Styles and scripts
|
36 |
+
add_action( 'wp_enqueue_scripts', array( $this, 'public_enqueue' ) );
|
37 |
+
|
38 |
+
// Enqueue Plugin Styles and scripts for admin pages
|
39 |
+
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue' ) );
|
40 |
+
|
41 |
+
// Ajax action to unblock images from widget
|
42 |
+
add_action( 'wp_ajax_jr_delete_insta_dupes', array( $this, 'delete_dupes' ) );
|
43 |
+
|
44 |
+
// Add new attachment field desctiptions
|
45 |
+
add_filter( 'attachment_fields_to_edit', array( $this, 'insta_attachment_fields' ) , 10, 2 );
|
46 |
+
|
47 |
+
// Add action for single cron events
|
48 |
+
add_action( 'jr_insta_cron', array( $this, 'jr_cron_trigger' ), 10 , 3 );
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Register widget on widgets init
|
53 |
+
*/
|
54 |
+
public static function register_widget() {
|
55 |
+
register_widget( __CLASS__ );
|
56 |
+
register_sidebar( array(
|
57 |
+
'name' => __( 'Social Slider - Shortcode Generator', 'instagram-slider-widget' ),
|
58 |
+
'id' => 'jr-insta-shortcodes',
|
59 |
+
'description' => __( "1. Drag Social Slider Widget here. 2. Fill in the fields and hit save. 3. Copy the shortocde generated at the bottom of the widget form and use it on posts or pages.", 'instagram-slider-widget' )
|
60 |
+
)
|
61 |
+
);
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
* Enqueue public-facing Scripts and style sheet.
|
66 |
+
*/
|
67 |
+
public function public_enqueue() {
|
68 |
+
|
69 |
+
wp_enqueue_style( 'instag-slider', WIS_PLUGIN_DIR.'/assets/css/instag-slider.css', array(), self::VERSION );
|
70 |
+
|
71 |
+
wp_enqueue_script( 'jquery-pllexi-slider', WIS_PLUGIN_DIR.'/assets/js/jquery.flexslider-min.js', array( 'jquery' ), '2.2', false );
|
72 |
+
}
|
73 |
+
|
74 |
+
/**
|
75 |
+
* Enqueue admin side scripts and styles
|
76 |
+
*
|
77 |
+
* @param string $hook
|
78 |
+
*/
|
79 |
+
public function admin_enqueue( $hook ) {
|
80 |
+
|
81 |
+
if ( 'widgets.php' != $hook ) {
|
82 |
+
return;
|
83 |
+
}
|
84 |
+
|
85 |
+
wp_enqueue_style( 'jr-insta-admin-styles', WIS_PLUGIN_DIR.'/admin/assets/css/jr-insta-admin.css', array(), self::VERSION );
|
86 |
+
wp_enqueue_script( 'jr-insta-admin-script', WIS_PLUGIN_DIR.'/admin/assets/js/jr-insta-admin.js', array( 'jquery' ), self::VERSION, true );
|
87 |
+
}
|
88 |
+
|
89 |
+
/**
|
90 |
+
* The Public view of the Widget
|
91 |
+
*
|
92 |
+
*/
|
93 |
+
public function widget( $args, $instance ) {
|
94 |
+
|
95 |
+
extract( $args );
|
96 |
+
|
97 |
+
//Our variables from the widget settings.
|
98 |
+
$title = apply_filters( 'widget_title', $instance['title'] );
|
99 |
+
|
100 |
+
echo $before_widget;
|
101 |
+
|
102 |
+
// Display the widget title
|
103 |
+
if ( $title ) {
|
104 |
+
echo $before_title . $title . $after_title;
|
105 |
+
}
|
106 |
+
|
107 |
+
do_action( 'jr_instagram', $instance );
|
108 |
+
|
109 |
+
echo $after_widget;
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Update the widget settings
|
114 |
+
*
|
115 |
+
* @param array $new_instance New instance values
|
116 |
+
* @param array $old_instance Old instance values
|
117 |
+
*
|
118 |
+
* @return array
|
119 |
+
*/
|
120 |
+
public function update( $new_instance, $instance ) {
|
121 |
+
|
122 |
+
$instance['title'] = strip_tags( $new_instance['title'] );
|
123 |
+
$instance['search_for'] = $new_instance['search_for'];
|
124 |
+
$instance['username'] = $new_instance['username'];
|
125 |
+
$instance['hashtag'] = $new_instance['hashtag'];
|
126 |
+
$instance['blocked_users'] = $new_instance['blocked_users'];
|
127 |
+
$instance['attachment'] = $new_instance['attachment'];
|
128 |
+
$instance['template'] = $new_instance['template'];
|
129 |
+
$instance['images_link'] = $new_instance['images_link'];
|
130 |
+
$instance['custom_url'] = $new_instance['custom_url'];
|
131 |
+
$instance['orderby'] = $new_instance['orderby'];
|
132 |
+
$instance['images_number'] = $new_instance['images_number'];
|
133 |
+
$instance['columns'] = $new_instance['columns'];
|
134 |
+
$instance['refresh_hour'] = $new_instance['refresh_hour'];
|
135 |
+
$instance['image_size'] = $new_instance['image_size'];
|
136 |
+
$instance['image_link_rel'] = $new_instance['image_link_rel'];
|
137 |
+
$instance['image_link_class'] = $new_instance['image_link_class'];
|
138 |
+
$instance['no_pin'] = $new_instance['no_pin'];
|
139 |
+
$instance['controls'] = $new_instance['controls'];
|
140 |
+
$instance['animation'] = $new_instance['animation'];
|
141 |
+
$instance['caption_words'] = $new_instance['caption_words'];
|
142 |
+
$instance['slidespeed'] = $new_instance['slidespeed'];
|
143 |
+
$instance['description'] = $new_instance['description'];
|
144 |
+
$instance['support_author'] = $new_instance['support_author'];
|
145 |
+
|
146 |
+
return $instance;
|
147 |
+
}
|
148 |
+
|
149 |
+
|
150 |
+
/**
|
151 |
+
* Widget Settings Form
|
152 |
+
*
|
153 |
+
*/
|
154 |
+
public function form( $instance ) {
|
155 |
+
|
156 |
+
$defaults = array(
|
157 |
+
'title' => __('Social Slider', 'instagram-slider-widget'),
|
158 |
+
'search_for' => 'username',
|
159 |
+
'username' => '',
|
160 |
+
'hashtag' => '',
|
161 |
+
'blocked_users' => '',
|
162 |
+
'attachment' => 0,
|
163 |
+
'template' => 'slider',
|
164 |
+
'images_link' => 'image_url',
|
165 |
+
'custom_url' => '',
|
166 |
+
'orderby' => 'rand',
|
167 |
+
'images_number' => 5,
|
168 |
+
'columns' => 4,
|
169 |
+
'refresh_hour' => 5,
|
170 |
+
'image_size' => 'standard',
|
171 |
+
'image_link_rel' => '',
|
172 |
+
'image_link_class' => '',
|
173 |
+
'no_pin' => 0,
|
174 |
+
'controls' => 'prev_next',
|
175 |
+
'animation' => 'slide',
|
176 |
+
'caption_words' => 100,
|
177 |
+
'slidespeed' => 7000,
|
178 |
+
'description' => array( 'username', 'time','caption' ),
|
179 |
+
'support_author' => 0
|
180 |
+
);
|
181 |
+
|
182 |
+
$instance = wp_parse_args( (array) $instance, $defaults );
|
183 |
+
|
184 |
+
?>
|
185 |
+
<div class="jr-container">
|
186 |
+
<p>
|
187 |
+
<label for="<?php echo $this->get_field_id( 'title' ); ?>"><strong><?php _e('Title:', 'instagram-slider-widget'); ?></strong></label>
|
188 |
+
<input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" />
|
189 |
+
</p>
|
190 |
+
<p>
|
191 |
+
<strong><?php _e( 'Search Instagram for:', 'instagram-slider-widget' ); ?></strong>
|
192 |
+
<span class="jr-search-for-container"><label class="jr-seach-for"><input type="radio" id="<?php echo $this->get_field_id( 'search_for' ); ?>" name="<?php echo $this->get_field_name( 'search_for' ); ?>" value="username" <?php checked( 'username', $instance['search_for'] ); ?> /> <?php _e( 'Username:', 'instagram-slider-widget' ); ?></label> <input id="<?php echo $this->get_field_id( 'username' ); ?>" class="inline-field-text" name="<?php echo $this->get_field_name( 'username' ); ?>" value="<?php echo $instance['username']; ?>" /></span>
|
193 |
+
<span class="jr-search-for-container"><label class="jr-seach-for"><input type="radio" id="<?php echo $this->get_field_id( 'search_for' ); ?>" name="<?php echo $this->get_field_name( 'search_for' ); ?>" value="hashtag" <?php checked( 'hashtag', $instance['search_for'] ); ?> /> <?php _e( 'Hashtag:', 'instagram-slider-widget' ); ?></label> <input id="<?php echo $this->get_field_id( 'hashtag' ); ?>" class="inline-field-text" name="<?php echo $this->get_field_name( 'hashtag' ); ?>" value="<?php echo $instance['hashtag']; ?>" /> <small><?php _e('without # sign', 'instagram-slider-widget'); ?></small></span>
|
194 |
+
</p>
|
195 |
+
<p class="<?php if ( 'hashtag' != $instance['search_for'] ) echo 'hidden'; ?>">
|
196 |
+
<label for="<?php echo $this->get_field_id( 'blocked_users' ); ?>"><?php _e( 'Block Users', 'instagram-slider-widget' ); ?>:</label>
|
197 |
+
<input class="widefat" id="<?php echo $this->get_field_id( 'blocked_users' ); ?>" name="<?php echo $this->get_field_name( 'blocked_users' ); ?>" value="<?php echo $instance['blocked_users']; ?>" />
|
198 |
+
<span class="jr-description"><?php _e( 'Enter usernames separated by commas whose images you don\'t want to show', 'instagram-slider-widget' ); ?></span>
|
199 |
+
</p>
|
200 |
+
<p class="<?php if ( 'username' != $instance['search_for'] ) echo 'hidden'; ?>"><strong><?php _e( 'Save in Media Library: ', 'instagram-slider-widget' ); ?></strong>
|
201 |
+
<label class="switch" for="<?php echo $this->get_field_id( 'attachment' ); ?>">
|
202 |
+
<input class="widefat" id="<?php echo $this->get_field_id( 'attachment' ); ?>" name="<?php echo $this->get_field_name( 'attachment' ); ?>" type="checkbox" value="1" <?php checked( '1', $instance['attachment'] ); ?> /><span class="slider round"></span></label>
|
203 |
+
<br><span class="jr-description"><?php _e( ' Turn on to save Instagram Images into WordPress media library.', 'instagram-slider-widget') ?></span>
|
204 |
+
<?php
|
205 |
+
if ( isset ( $instance['username'] ) && !empty($instance['username'] ) ) {
|
206 |
+
echo '<br><button class="button action jr-delete-instagram-dupes" type="button" data-username="'.$instance['username'].'"><strong>Remove</strong> duplicate images for <strong>'.$instance['username'].'</strong></button><span class="jr-spinner"></span>';
|
207 |
+
echo '<br><br><strong><span class="deleted-dupes-info"></span></strong>';
|
208 |
+
wp_nonce_field( 'jr_delete_instagram_dupes', 'delete_insta_dupes_nonce' );
|
209 |
+
}
|
210 |
+
?>
|
211 |
+
</p>
|
212 |
+
<p>
|
213 |
+
<label for="<?php echo $this->get_field_id( 'images_number' ); ?>"><strong><?php _e( 'Number of images to show:', 'instagram-slider-widget' ); ?></strong>
|
214 |
+
<input class="small-text" id="<?php echo $this->get_field_id( 'images_number' ); ?>" name="<?php echo $this->get_field_name( 'images_number' ); ?>" value="<?php echo $instance['images_number']; ?>" />
|
215 |
+
</label>
|
216 |
+
</p>
|
217 |
+
<p>
|
218 |
+
<label for="<?php echo $this->get_field_id( 'refresh_hour' ); ?>"><strong><?php _e( 'Check for new images every:', 'instagram-slider-widget' ); ?></strong>
|
219 |
+
<input class="small-text" id="<?php echo $this->get_field_id( 'refresh_hour' ); ?>" name="<?php echo $this->get_field_name( 'refresh_hour' ); ?>" value="<?php echo $instance['refresh_hour']; ?>" />
|
220 |
+
<span><?php _e('hours', 'instagram-slider-widget'); ?></span>
|
221 |
+
</label>
|
222 |
+
</p>
|
223 |
+
<p>
|
224 |
+
<label for="<?php echo $this->get_field_id( 'template' ); ?>"><strong><?php _e( 'Template', 'instagram-slider-widget' ); ?></strong>
|
225 |
+
<select class="widefat" name="<?php echo $this->get_field_name( 'template' ); ?>" id="<?php echo $this->get_field_id( 'template' ); ?>">
|
226 |
+
<option value="slider" <?php echo ($instance['template'] == 'slider') ? ' selected="selected"' : ''; ?>><?php _e( 'Slider - Normal', 'instagram-slider-widget' ); ?></option>
|
227 |
+
<option value="slider-overlay" <?php echo ($instance['template'] == 'slider-overlay') ? ' selected="selected"' : ''; ?>><?php _e( 'Slider - Overlay Text', 'instagram-slider-widget' ); ?></option>
|
228 |
+
<option value="thumbs" <?php echo ($instance['template'] == 'thumbs') ? ' selected="selected"' : ''; ?>><?php _e( 'Thumbnails', 'instagram-slider-widget' ); ?></option>
|
229 |
+
<option value="thumbs-no-border" <?php echo ($instance['template'] == 'thumbs-no-border') ? ' selected="selected"' : ''; ?>><?php _e( 'Thumbnails - Without Border', 'instagram-slider-widget' ); ?></option>
|
230 |
+
</select>
|
231 |
+
</label>
|
232 |
+
</p>
|
233 |
+
<p class="<?php if ( 'thumbs' != $instance['template'] && 'thumbs-no-border' != $instance['template'] ) echo 'hidden'; ?>">
|
234 |
+
<label for="<?php echo $this->get_field_id( 'columns' ); ?>"><strong><?php _e( 'Number of Columns:', 'instagram-slider-widget' ); ?></strong>
|
235 |
+
<input class="small-text" id="<?php echo $this->get_field_id( 'columns' ); ?>" name="<?php echo $this->get_field_name( 'columns' ); ?>" value="<?php echo $instance['columns']; ?>" />
|
236 |
+
<span class='jr-description'><?php _e('max is 10 ( only for thumbnails template )', 'instagram-slider-widget'); ?></span>
|
237 |
+
</label>
|
238 |
+
</p>
|
239 |
+
<p>
|
240 |
+
<label for="<?php echo $this->get_field_id( 'image_size' ); ?>"><strong><?php _e( 'Image format', 'instagram-slider-widget' ); ?></strong></label>
|
241 |
+
<select class="widefat" id="<?php echo $this->get_field_id( 'image_size' ); ?>" name="<?php echo $this->get_field_name( 'image_size' ); ?>">
|
242 |
+
<option value="thumbnail" <?php echo ($instance['image_size'] == 'thumbnail') ? ' selected="selected"' : ''; ?>><?php _e( 'Thumbnail - 150x150', 'instagram-slider-widget' ); ?></option>
|
243 |
+
<option value="low" <?php echo ($instance['image_size'] == 'low') ? ' selected="selected"' : ''; ?>><?php _e( 'Low - 320x320', 'instagram-slider-widget' ); ?></option>
|
244 |
+
<option value="standard" <?php echo ($instance['image_size'] == 'standard') ? ' selected="selected"' : ''; ?>><?php _e( 'Standard - 640x640', 'instagram-slider-widget' ); ?></option>
|
245 |
+
<option value="full" <?php echo ($instance['image_size'] == 'full') ? ' selected="selected"' : ''; ?>><?php _e( 'Full Size', 'instagram-slider-widget' ); ?></option>
|
246 |
+
</select>
|
247 |
+
<span class="jr-description"><?php _e( '<strong>Square - Cropped</strong> - option will show square cropped images in 640x640 pixels. <br/><strong>Original - No Crop</strong> - will display the original user uploaded image size.', 'instagram-slider-widget' ); ?></span>
|
248 |
+
</p>
|
249 |
+
<p>
|
250 |
+
<label for="<?php echo $this->get_field_id( 'orderby' ); ?>"><strong><?php _e( 'Order by', 'instagram-slider-widget' ); ?></strong>
|
251 |
+
<select class="widefat" name="<?php echo $this->get_field_name( 'orderby' ); ?>" id="<?php echo $this->get_field_id( 'orderby' ); ?>">
|
252 |
+
<option value="date-ASC" <?php selected( $instance['orderby'], 'date-ASC', true); ?>><?php _e( 'Date - Ascending', 'instagram-slider-widget' ); ?></option>
|
253 |
+
<option value="date-DESC" <?php selected( $instance['orderby'], 'date-DESC', true); ?>><?php _e( 'Date - Descending', 'instagram-slider-widget' ); ?></option>
|
254 |
+
<option value="popular-ASC" <?php selected( $instance['orderby'], 'popular-ASC', true); ?>><?php _e( 'Popularity - Ascending', 'instagram-slider-widget' ); ?></option>
|
255 |
+
<option value="popular-DESC" <?php selected( $instance['orderby'], 'popular-DESC', true); ?>><?php _e( 'Popularity - Descending', 'instagram-slider-widget' ); ?></option>
|
256 |
+
<option value="rand" <?php selected( $instance['orderby'], 'rand', true); ?>><?php _e( 'Random', 'instagram-slider-widget' ); ?></option>
|
257 |
+
</select>
|
258 |
+
</label>
|
259 |
+
</p>
|
260 |
+
<p>
|
261 |
+
<label for="<?php echo $this->get_field_id( 'images_link' ); ?>"><strong><?php _e( 'Link to', 'instagram-slider-widget' ); ?></strong>
|
262 |
+
<select class="widefat" name="<?php echo $this->get_field_name( 'images_link' ); ?>" id="<?php echo $this->get_field_id( 'images_link' ); ?>">
|
263 |
+
<option value="image_link" <?php selected( $instance['images_link'], 'image_link', true); ?>><?php _e( 'Instagram Image', 'instagram-slider-widget' ); ?></option>
|
264 |
+
<option class="<?php if ( 'hashtag' == $instance['search_for'] ) echo 'hidden'; ?>" value="user_url" <?php selected( $instance['images_link'], 'user_url', true); ?>><?php _e( 'Instagram Profile', 'instagram-slider-widget' ); ?></option>
|
265 |
+
<option value="image_url" <?php selected( $instance['images_link'], 'image_url', true); ?>><?php _e( 'Image URL', 'instagram-slider-widget' ); ?></option>
|
266 |
+
<option class="<?php if ( ( !$instance['attachment'] ) || 'hashtag' == $instance['search_for'] ) echo 'hidden'; ?>" value="attachment" <?php selected( $instance['images_link'], 'attachment', true); ?>><?php _e( 'Attachment Page', 'instagram-slider-widget' ); ?></option>
|
267 |
+
<option value="custom_url" <?php selected( $instance['images_link'], 'custom_url', true ); ?>><?php _e( 'Custom Link', 'instagram-slider-widget' ); ?></option>
|
268 |
+
<option value="none" <?php selected( $instance['images_link'], 'none', true); ?>><?php _e( 'None', 'instagram-slider-widget' ); ?></option>
|
269 |
+
</select>
|
270 |
+
</label>
|
271 |
+
</p>
|
272 |
+
<p class="<?php if ( 'custom_url' != $instance['images_link'] ) echo 'hidden'; ?>">
|
273 |
+
<label for="<?php echo $this->get_field_id( 'custom_url' ); ?>"><?php _e( 'Custom link:', 'instagram-slider-widget'); ?></label>
|
274 |
+
<input class="widefat" id="<?php echo $this->get_field_id( 'custom_url' ); ?>" name="<?php echo $this->get_field_name( 'custom_url' ); ?>" value="<?php echo $instance['custom_url']; ?>" />
|
275 |
+
<span><?php _e('* use this field only if the above option is set to <strong>Custom Link</strong>', 'instagram-slider-widget'); ?></span>
|
276 |
+
</p>
|
277 |
+
<p>
|
278 |
+
<strong>Advanced Options</strong>
|
279 |
+
<?php
|
280 |
+
$advanced_class = '';
|
281 |
+
$advanced_text = '[ - Close ]';
|
282 |
+
if ( '' == trim( $instance['image_link_rel'] ) && '' == trim( $instance['image_link_class'] ) && '' == trim( $instance['image_size'] ) ) {
|
283 |
+
$advanced_class = 'hidden';
|
284 |
+
$advanced_text = '[ + Open ]';
|
285 |
+
}
|
286 |
+
?>
|
287 |
+
<a href="#" class="jr-advanced"><?php echo $advanced_text; ?></a>
|
288 |
+
</p>
|
289 |
+
<div class="jr-advanced-input <?php echo $advanced_class; ?>">
|
290 |
+
<div class="jr-image-options">
|
291 |
+
<h4 class="jr-advanced-title"><?php _e( 'Advanced Image Options', 'instagram-slider-widget'); ?></h4>
|
292 |
+
<p>
|
293 |
+
<label for="<?php echo $this->get_field_id( 'image_link_rel' ); ?>"><?php _e( 'Image Link rel attribute', 'instagram-slider-widget' ); ?>:</label>
|
294 |
+
<input class="widefat" id="<?php echo $this->get_field_id( 'image_link_rel' ); ?>" name="<?php echo $this->get_field_name( 'image_link_rel' ); ?>" value="<?php echo $instance['image_link_rel']; ?>" />
|
295 |
+
<span class="jr-description"><?php _e( 'Specifies the relationship between the current page and the linked website', 'instagram-slider-widget' ); ?></span>
|
296 |
+
</p>
|
297 |
+
<p>
|
298 |
+
<label for="<?php echo $this->get_field_id( 'image_link_class' ); ?>"><?php _e( 'Image Link class', 'instagram-slider-widget' ); ?>:</label>
|
299 |
+
<input class="widefat" id="<?php echo $this->get_field_id( 'image_link_class' ); ?>" name="<?php echo $this->get_field_name( 'image_link_class' ); ?>" value="<?php echo $instance['image_link_class']; ?>" />
|
300 |
+
<span class="jr-description"><?php _e( 'Usefull if you are using jQuery lightbox plugins to open links', 'instagram-slider-widget' ); ?></span>
|
301 |
+
</p>
|
302 |
+
<p><strong><?php _e( 'Disable Pinning:', 'instagram-slider-widget' ); ?></strong>
|
303 |
+
<label class="switch" for="<?php echo $this->get_field_id( 'no_pin' ); ?>">
|
304 |
+
<input class="widefat" id="<?php echo $this->get_field_id( 'no_pin' ); ?>" name="<?php echo $this->get_field_name( 'no_pin' ); ?>" type="checkbox" value="1" <?php checked( '1', $instance['no_pin'] ); ?> /><span class="slider round"></span></label>
|
305 |
+
<br><span class="jr-description"><?php _e( 'Disable pinning for Pinterest on all images from this widget!', 'instagram-slider-widget') ?></span>
|
306 |
+
</p>
|
307 |
+
</div>
|
308 |
+
<div class="jr-slider-options <?php if ( 'thumbs' == $instance['template'] || 'thumbs-no-border' == $instance['template'] ) echo 'hidden'; ?>">
|
309 |
+
<h4 class="jr-advanced-title"><?php _e( 'Advanced Slider Options', 'instagram-slider-widget'); ?></h4>
|
310 |
+
<p>
|
311 |
+
<?php _e( 'Slider Navigation Controls:', 'instagram-slider-widget' ); ?><br>
|
312 |
+
<label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'controls' ); ?>" name="<?php echo $this->get_field_name( 'controls' ); ?>" value="prev_next" <?php checked( 'prev_next', $instance['controls'] ); ?> /> <?php _e( 'Prev & Next', 'instagram-slider-widget' ); ?></label>
|
313 |
+
<label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'controls' ); ?>" name="<?php echo $this->get_field_name( 'controls' ); ?>" value="numberless" <?php checked( 'numberless', $instance['controls'] ); ?> /> <?php _e( 'Dotted', 'instagram-slider-widget' ); ?></label>
|
314 |
+
<label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'controls' ); ?>" name="<?php echo $this->get_field_name( 'controls' ); ?>" value="none" <?php checked( 'none', $instance['controls'] ); ?> /> <?php _e( 'No Navigation', 'instagram-slider-widget' ); ?></label>
|
315 |
+
</p>
|
316 |
+
<p>
|
317 |
+
<?php _e( 'Slider Animation:', 'instagram-slider-widget' ); ?><br>
|
318 |
+
<label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'animation' ); ?>" name="<?php echo $this->get_field_name( 'animation' ); ?>" value="slide" <?php checked( 'slide', $instance['animation'] ); ?> /> <?php _e( 'Slide', 'instagram-slider-widget' ); ?></label>
|
319 |
+
<label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'animation' ); ?>" name="<?php echo $this->get_field_name( 'animation' ); ?>" value="fade" <?php checked( 'fade', $instance['animation'] ); ?> /> <?php _e( 'Fade', 'instagram-slider-widget' ); ?></label>
|
320 |
+
</p>
|
321 |
+
<p>
|
322 |
+
<label for="<?php echo $this->get_field_id( 'caption_words' ); ?>"><?php _e( 'Number of words in caption:', 'instagram-slider-widget' ); ?>
|
323 |
+
<input class="small-text" id="<?php echo $this->get_field_id( 'caption_words' ); ?>" name="<?php echo $this->get_field_name( 'caption_words' ); ?>" value="<?php echo $instance['caption_words']; ?>" />
|
324 |
+
</label>
|
325 |
+
</p>
|
326 |
+
<p>
|
327 |
+
<label for="<?php echo $this->get_field_id( 'slidespeed' ); ?>"><?php _e( 'Slide Speed:', 'instagram-slider-widget' ); ?>
|
328 |
+
<input class="small-text" id="<?php echo $this->get_field_id( 'slidespeed' ); ?>" name="<?php echo $this->get_field_name( 'slidespeed' ); ?>" value="<?php echo $instance['slidespeed']; ?>" />
|
329 |
+
<span><?php _e('milliseconds', 'instagram-slider-widget'); ?></span>
|
330 |
+
<span class='jr-description'><?php _e('1000 milliseconds = 1 second', 'instagram-slider-widget'); ?></span>
|
331 |
+
</label>
|
332 |
+
</p>
|
333 |
+
<p>
|
334 |
+
<label for="<?php echo $this->get_field_id('description'); ?>"><?php _e( 'Slider Text Description:', 'instagram-slider-widget' ); ?></label>
|
335 |
+
<select size=3 class='widefat' id="<?php echo $this->get_field_id('description'); ?>" name="<?php echo $this->get_field_name('description'); ?>[]" multiple="multiple">
|
336 |
+
<option class="<?php if ( 'hashtag' == $instance['search_for'] ) echo 'hidden'; ?>" value='username' <?php $this->selected( $instance['description'], 'username' ); ?>><?php _e( 'Username', 'instagram-slider-widget'); ?></option>
|
337 |
+
<option value='time'<?php $this->selected( $instance['description'], 'time' ); ?>><?php _e( 'Time', 'instagram-slider-widget'); ?></option>
|
338 |
+
<option value='caption'<?php $this->selected( $instance['description'], 'caption' ); ?>><?php _e( 'Caption', 'instagram-slider-widget'); ?></option>
|
339 |
+
</select>
|
340 |
+
<span class="jr-description"><?php _e( 'Hold ctrl and click the fields you want to show/hide on your slider. Leave all unselected to hide them all. Default all selected.', 'instagram-slider-widget') ?></span>
|
341 |
+
</p>
|
342 |
+
</div>
|
343 |
+
</div>
|
344 |
+
<?php $widget_id = preg_replace( '/[^0-9]/', '', $this->id ); if ( $widget_id != '' ) : ?>
|
345 |
+
<p>
|
346 |
+
<label for="jr_insta_shortcode"><?php _e('Shortcode of this Widget:', 'instagram-slider-widget'); ?></label>
|
347 |
+
<input id="jr_insta_shortcode" onclick="this.setSelectionRange(0, this.value.length)" type="text" class="widefat" value="[jr_instagram id="<?php echo $widget_id ?>"]" readonly="readonly" style="border:none; color:black; font-family:monospace;">
|
348 |
+
<span class="jr-description"><?php _e( 'Use this shortcode in any page or post to display images with this widget configuration!', 'instagram-slider-widget') ?></span>
|
349 |
+
</p>
|
350 |
+
<?php endif; ?>
|
351 |
+
<div class="jr-advanced-input">
|
352 |
+
<div class="jr-image-options">
|
353 |
+
<h4 class="jr-advanced-title"><?php _e( 'Help us, help you!', 'instagram-slider-widget'); ?></h4>
|
354 |
+
<p><strong><?php _e( 'Show "Powered by Link"', 'instagram-slider-widget' ); ?></strong>
|
355 |
+
<label class="switch" for="<?php echo $this->get_field_id( 'support_author' ); ?>">
|
356 |
+
<input class="widefat" id="<?php echo $this->get_field_id( 'support_author' ); ?>" name="<?php echo $this->get_field_name( 'support_author' ); ?>" type="checkbox" value="1" <?php checked( '1', $instance['support_author'] ); ?> /><span class="slider round"></span></label>
|
357 |
+
<br><span class="jr-description"><?php _e( 'When enabled, the author is notified and a backlink website is visible at the bottom of the plugin. <br> <strong>If you enable this option you will have privileged support from our team!</strong>', 'instagram-slider-widget') ?></span>
|
358 |
+
</p>
|
359 |
+
<div class="donate-buttons">
|
360 |
+
<a target="_blank" title="Donate with Paypal!" href="http://bit.ly/2EseW2p"><p class="donate"><span></span>Donate with Paypal!</p></a>
|
361 |
+
</div>
|
362 |
+
</div></div>
|
363 |
+
</div><br>
|
364 |
+
<?php
|
365 |
+
}
|
366 |
+
|
367 |
+
/**
|
368 |
+
* Selected array function echoes selected if in array
|
369 |
+
*
|
370 |
+
* @param array $haystack The array to search in
|
371 |
+
* @param string $current The string value to search in array;
|
372 |
+
*
|
373 |
+
*/
|
374 |
+
public function selected( $haystack, $current ) {
|
375 |
+
|
376 |
+
if( is_array( $haystack ) && in_array( $current, $haystack ) ) {
|
377 |
+
selected( 1, 1, true );
|
378 |
+
}
|
379 |
+
}
|
380 |
+
|
381 |
+
|
382 |
+
/**
|
383 |
+
* Add shorcode function
|
384 |
+
* @param array $atts shortcode attributes
|
385 |
+
* @return mixed
|
386 |
+
*/
|
387 |
+
public function shortcode( $atts ) {
|
388 |
+
|
389 |
+
$atts = shortcode_atts( array( 'id' => '' ), $atts, 'jr_instagram' );
|
390 |
+
$args = get_option( 'widget_jr_insta_slider' );
|
391 |
+
if ( isset($args[$atts['id']] ) ) {
|
392 |
+
$args[$atts['id']]['widget_id'] = $atts['id'];
|
393 |
+
return $this->display_images( $args[$atts['id']] );
|
394 |
+
}
|
395 |
+
}
|
396 |
+
|
397 |
+
/**
|
398 |
+
* Echoes the Display Instagram Images method
|
399 |
+
*
|
400 |
+
* @param array $args
|
401 |
+
*
|
402 |
+
* @return void
|
403 |
+
*/
|
404 |
+
public function instagram_images( $args ) {
|
405 |
+
echo $this->display_images( $args );
|
406 |
+
}
|
407 |
+
|
408 |
+
/**
|
409 |
+
* Cron Trigger Function
|
410 |
+
* @param [type] $username [description]
|
411 |
+
* @param [type] $refresh_hour [description]
|
412 |
+
* @param [type] $images [description]
|
413 |
+
* @return [type] [description]
|
414 |
+
*/
|
415 |
+
public function jr_cron_trigger( $username, $refresh_hour, $images ) {
|
416 |
+
$search_for = array();
|
417 |
+
$search_for['username'] = $username;
|
418 |
+
$this->instagram_data( $search_for, $refresh_hour, $images, true );
|
419 |
+
}
|
420 |
+
|
421 |
+
/**
|
422 |
+
* Runs the query for images and returns the html
|
423 |
+
*
|
424 |
+
* @param array $args
|
425 |
+
*
|
426 |
+
* @return string
|
427 |
+
*/
|
428 |
+
private function display_images( $args ) {
|
429 |
+
|
430 |
+
$username = isset( $args['username'] ) && !empty( $args['username'] ) ? $args['username'] : false;
|
431 |
+
$hashtag = isset( $args['hashtag'] ) && !empty( $args['hashtag'] ) ? str_replace( '#', '', $args['hashtag'] ) : false;
|
432 |
+
$blocked_users = isset( $args['blocked_users'] ) && !empty( $args['blocked_users'] ) ? $args['blocked_users'] : false;
|
433 |
+
$attachment = isset( $args['attachment'] ) ? true : false;
|
434 |
+
$template = isset( $args['template'] ) ? $args['template'] : 'slider';
|
435 |
+
$orderby = isset( $args['orderby'] ) ? $args['orderby'] : 'rand';
|
436 |
+
$images_link = isset( $args['images_link'] ) ? $args['images_link'] : 'image_url';
|
437 |
+
$custom_url = isset( $args['custom_url'] ) ? $args['custom_url'] : '';
|
438 |
+
$images_number = isset( $args['images_number'] ) ? absint( $args['images_number'] ) : 5;
|
439 |
+
$columns = isset( $args['columns'] ) ? absint( $args['columns'] ) : 4;
|
440 |
+
$refresh_hour = isset( $args['refresh_hour'] ) ? absint( $args['refresh_hour'] ) : 5;
|
441 |
+
$image_size = isset( $args['image_size'] ) ? $args['image_size'] : 'standard';
|
442 |
+
$image_link_rel = isset( $args['image_link_rel'] ) ? $args['image_link_rel'] : '';
|
443 |
+
$no_pin = isset( $args['no_pin'] ) ? $args['no_pin'] : 0;
|
444 |
+
$image_link_class = isset( $args['image_link_class'] ) ? $args['image_link_class'] : '';
|
445 |
+
$controls = isset( $args['controls'] ) ? $args['controls'] : 'prev_next';
|
446 |
+
$animation = isset( $args['animation'] ) ? $args['animation'] : 'slide';
|
447 |
+
$caption_words = isset( $args['caption_words'] ) ? $args['caption_words'] : 100;
|
448 |
+
$slidespeed = isset( $args['slidespeed'] ) ? $args['slidespeed'] : 7000;
|
449 |
+
$description = isset( $args['description'] ) ? $args['description'] : array();
|
450 |
+
$widget_id = isset( $args['widget_id'] ) ? $args['widget_id'] : preg_replace( '/[^0-9]/', '', $this->id );
|
451 |
+
$powered_by_link = isset( $args['support_author'] ) ? true : false;
|
452 |
+
|
453 |
+
if ( !empty( $description ) && !is_array( $description ) ) {
|
454 |
+
$description = explode( ',', $description );
|
455 |
+
}
|
456 |
+
|
457 |
+
if ( isset ( $args['search_for'] ) && $args['search_for'] == 'hashtag' ) {
|
458 |
+
$search = 'hashtag';
|
459 |
+
$search_for['hashtag'] = $hashtag;
|
460 |
+
$search_for['blocked_users'] = $blocked_users;
|
461 |
+
} else {
|
462 |
+
$search = 'user';
|
463 |
+
$search_for['username'] = $username;
|
464 |
+
}
|
465 |
+
|
466 |
+
if ( $refresh_hour == 0 ) {
|
467 |
+
$refresh_hour = 5;
|
468 |
+
}
|
469 |
+
|
470 |
+
$template_args = array(
|
471 |
+
'search_for' => $search,
|
472 |
+
'attachment' => $attachment,
|
473 |
+
'image_size' => $image_size,
|
474 |
+
'link_rel' => $image_link_rel,
|
475 |
+
'link_class' => $image_link_class,
|
476 |
+
'no_pin' => $no_pin,
|
477 |
+
'caption_words' => $caption_words
|
478 |
+
);
|
479 |
+
|
480 |
+
$images_div_class = 'jr-insta-thumb';
|
481 |
+
$ul_class = ( $template == 'thumbs-no-border' ) ? 'thumbnails no-border jr_col_' . $columns : 'thumbnails jr_col_' . $columns;
|
482 |
+
$slider_script = '';
|
483 |
+
|
484 |
+
if ( $template != 'thumbs' && $template != 'thumbs-no-border' ) {
|
485 |
+
|
486 |
+
$template_args['description'] = $description;
|
487 |
+
$direction_nav = ( $controls == 'prev_next' ) ? 'true' : 'false';
|
488 |
+
$control_nav = ( $controls == 'numberless' ) ? 'true': 'false';
|
489 |
+
$ul_class = 'slides';
|
490 |
+
|
491 |
+
if ( $template == 'slider' ) {
|
492 |
+
$images_div_class = 'pllexislider pllexislider-normal instaslider-nr-'. $widget_id;
|
493 |
+
$slider_script =
|
494 |
+
"<script type='text/javascript'>" . "\n" .
|
495 |
+
" jQuery(document).ready(function($) {" . "\n" .
|
496 |
+
" $('.instaslider-nr-{$widget_id}').pllexislider({" . "\n" .
|
497 |
+
" animation: '{$animation}'," . "\n" .
|
498 |
+
" slideshowSpeed: {$slidespeed}," . "\n" .
|
499 |
+
" directionNav: {$direction_nav}," . "\n" .
|
500 |
+
" controlNav: {$control_nav}," . "\n" .
|
501 |
+
" prevText: ''," . "\n" .
|
502 |
+
" nextText: ''," . "\n" .
|
503 |
+
" });" . "\n" .
|
504 |
+
" });" . "\n" .
|
505 |
+
"</script>" . "\n";
|
506 |
+
} else {
|
507 |
+
$images_div_class = 'pllexislider pllexislider-overlay instaslider-nr-'. $widget_id;
|
508 |
+
$slider_script =
|
509 |
+
"<script type='text/javascript'>" . "\n" .
|
510 |
+
" jQuery(document).ready(function($) {" . "\n" .
|
511 |
+
" $('.instaslider-nr-{$widget_id}').pllexislider({" . "\n" .
|
512 |
+
" animation: '{$animation}'," . "\n" .
|
513 |
+
" slideshowSpeed: {$slidespeed}," . "\n" .
|
514 |
+
" directionNav: {$direction_nav}," . "\n" .
|
515 |
+
" controlNav: {$control_nav}," . "\n" .
|
516 |
+
" prevText: ''," . "\n" .
|
517 |
+
" nextText: ''," . "\n" .
|
518 |
+
" start: function(slider){" . "\n" .
|
519 |
+
" slider.hover(" . "\n" .
|
520 |
+
" function () {" . "\n" .
|
521 |
+
" slider.find('.jr-insta-datacontainer, .pllex-control-nav, .pllex-direction-nav').stop(true,true).fadeIn();" . "\n" .
|
522 |
+
" }," . "\n" .
|
523 |
+
" function () {" . "\n" .
|
524 |
+
" slider.find('.jr-insta-datacontainer, .pllex-control-nav, .pllex-direction-nav').stop(true,true).fadeOut();" . "\n" .
|
525 |
+
" }" . "\n" .
|
526 |
+
" );" . "\n" .
|
527 |
+
" }" . "\n" .
|
528 |
+
" });" . "\n" .
|
529 |
+
" });" . "\n" .
|
530 |
+
"</script>" . "\n";
|
531 |
+
}
|
532 |
+
}
|
533 |
+
|
534 |
+
$images_div = "<div class='{$images_div_class}'>\n";
|
535 |
+
$images_ul = "<ul class='no-bullet {$ul_class}'>\n";
|
536 |
+
|
537 |
+
$output = __( 'No images found! <br> Try some other hashtag or username', 'instagram-slider-widget' );
|
538 |
+
|
539 |
+
if ( ( $search == 'user' && $attachment ) ) {
|
540 |
+
|
541 |
+
if ( !wp_next_scheduled( 'jr_insta_cron', array( $search_for['username'], $refresh_hour, $images_number ) ) ) {
|
542 |
+
wp_schedule_single_event( time(), 'jr_insta_cron', array( $search_for['username'], $refresh_hour, $images_number ) );
|
543 |
+
}
|
544 |
+
|
545 |
+
$opt_name = 'jr_insta_' . md5( $search . '_' . $search_for['username'] );
|
546 |
+
$attachment_ids = (array) get_option( $opt_name );
|
547 |
+
|
548 |
+
$query_args = array(
|
549 |
+
'post_type' => 'attachment',
|
550 |
+
'post_status' => 'inherit',
|
551 |
+
'post_mime_type' => 'image',
|
552 |
+
'posts_per_page' => $images_number,
|
553 |
+
'no_found_rows' => true
|
554 |
+
);
|
555 |
+
|
556 |
+
if ( $orderby != 'rand' ) {
|
557 |
+
|
558 |
+
$orderby = explode( '-', $orderby );
|
559 |
+
$meta_key = $orderby[0] == 'date' ? 'jr_insta_timestamp' : 'jr_insta_popularity';
|
560 |
+
|
561 |
+
$query_args['meta_key'] = $meta_key;
|
562 |
+
$query_args['orderby'] = 'meta_value_num';
|
563 |
+
$query_args['order'] = $orderby[1];
|
564 |
+
}
|
565 |
+
|
566 |
+
if ( isset( $attachment_ids['saved_images'] ) && !empty( $attachment_ids['saved_images'] ) ) {
|
567 |
+
|
568 |
+
$query_args['post__in'] = $attachment_ids['saved_images'];
|
569 |
+
|
570 |
+
} else {
|
571 |
+
|
572 |
+
$query_args['meta_query'] = array(
|
573 |
+
array(
|
574 |
+
'key' => 'jr_insta_username',
|
575 |
+
'value' => $username,
|
576 |
+
'compare' => '='
|
577 |
+
)
|
578 |
+
);
|
579 |
+
}
|
580 |
+
|
581 |
+
$instagram_images = new WP_Query( $query_args );
|
582 |
+
|
583 |
+
if ( $instagram_images->have_posts() ) {
|
584 |
+
|
585 |
+
$output = $slider_script . $images_div . $images_ul;
|
586 |
+
|
587 |
+
while ( $instagram_images->have_posts() ) : $instagram_images->the_post();
|
588 |
+
|
589 |
+
$id = get_the_id();
|
590 |
+
|
591 |
+
if ( 'image_link' == $images_link ) {
|
592 |
+
$template_args['link_to'] = get_post_meta( $id, 'jr_insta_link', true );
|
593 |
+
} elseif ( 'user_url' == $images_link ) {
|
594 |
+
$template_args['link_to'] = 'https://www.instagram.com/' . $username . '/';
|
595 |
+
} elseif ( 'image_url' == $images_link ) {
|
596 |
+
$template_args['link_to'] = wp_get_attachment_url( $id );
|
597 |
+
} elseif ( 'attachment' == $images_link ) {
|
598 |
+
$template_args['link_to'] = get_permalink( $id );
|
599 |
+
} elseif ( 'custom_url' == $images_link ) {
|
600 |
+
$template_args['link_to'] = $custom_url;
|
601 |
+
}
|
602 |
+
|
603 |
+
$image_thumb_url = get_post_meta( $id, 'jr_insta_sizes', true );
|
604 |
+
$template_args['image'] = $image_thumb_url[$image_size];
|
605 |
+
|
606 |
+
$output .= $this->get_template( $template, $template_args );
|
607 |
+
|
608 |
+
endwhile;
|
609 |
+
|
610 |
+
$output .= "</ul>\n</div>" . $this->powered_by_link( $powered_by_link );
|
611 |
+
|
612 |
+
} else {
|
613 |
+
|
614 |
+
$images_data = $this->instagram_data( $search_for, $refresh_hour, $images_number, false );
|
615 |
+
|
616 |
+
if ( is_array( $images_data ) && !empty( $images_data ) ) {
|
617 |
+
|
618 |
+
if ( $orderby != 'rand' ) {
|
619 |
+
|
620 |
+
$func = $orderby[0] == 'date' ? 'sort_timestamp_' . $orderby[1] : 'sort_popularity_' . $orderby[1];
|
621 |
+
|
622 |
+
usort( $images_data, array( $this, $func ) );
|
623 |
+
|
624 |
+
} else {
|
625 |
+
|
626 |
+
shuffle( $images_data );
|
627 |
+
}
|
628 |
+
|
629 |
+
$output = $slider_script . $images_div . $images_ul;
|
630 |
+
|
631 |
+
foreach ( $images_data as $image_data ) {
|
632 |
+
|
633 |
+
if ( 'image_link' == $images_link ) {
|
634 |
+
$template_args['link_to'] = $image_data['link'];
|
635 |
+
} elseif ( 'user_url' == $images_link ) {
|
636 |
+
$template_args['link_to'] = 'https://www.instagram.com/' . $username . '/';
|
637 |
+
} elseif ( 'image_url' == $images_link ) {
|
638 |
+
$template_args['link_to'] = $image_data['url'];
|
639 |
+
} elseif ( 'custom_url' == $images_link ) {
|
640 |
+
$template_args['link_to'] = $custom_url;
|
641 |
+
}
|
642 |
+
|
643 |
+
$template_args['image'] = $image_data['sizes'][$image_size];
|
644 |
+
$template_args['caption'] = $image_data['caption'];
|
645 |
+
$template_args['timestamp'] = $image_data['timestamp'];
|
646 |
+
$template_args['username'] = isset( $image_data['username'] ) ? $image_data['username'] : '';
|
647 |
+
$template_args['attachment'] = false;
|
648 |
+
|
649 |
+
$output .= $this->get_template( $template, $template_args );
|
650 |
+
}
|
651 |
+
|
652 |
+
$output .= "</ul>\n</div>" . $this->powered_by_link( $powered_by_link );
|
653 |
+
}
|
654 |
+
|
655 |
+
}
|
656 |
+
|
657 |
+
wp_reset_postdata();
|
658 |
+
|
659 |
+
} else {
|
660 |
+
|
661 |
+
$images_data = $this->instagram_data( $search_for, $refresh_hour, $images_number, false );
|
662 |
+
|
663 |
+
if ( is_array( $images_data ) && !empty( $images_data ) ) {
|
664 |
+
|
665 |
+
if ( $orderby != 'rand' ) {
|
666 |
+
|
667 |
+
$orderby = explode( '-', $orderby );
|
668 |
+
$func = $orderby[0] == 'date' ? 'sort_timestamp_' . $orderby[1] : 'sort_popularity_' . $orderby[1];
|
669 |
+
|
670 |
+
usort( $images_data, array( $this, $func ) );
|
671 |
+
|
672 |
+
} else {
|
673 |
+
|
674 |
+
shuffle( $images_data );
|
675 |
+
}
|
676 |
+
|
677 |
+
$output = $slider_script . $images_div . $images_ul;
|
678 |
+
|
679 |
+
foreach ( $images_data as $image_data ) {
|
680 |
+
|
681 |
+
if ( 'image_link' == $images_link ) {
|
682 |
+
$template_args['link_to'] = $image_data['link'];
|
683 |
+
} elseif ( 'user_url' == $images_link ) {
|
684 |
+
$template_args['link_to'] = 'https://www.instagram.com/' . $username . '/';
|
685 |
+
} elseif ( 'image_url' == $images_link ) {
|
686 |
+
$template_args['link_to'] = $image_data['url'];
|
687 |
+
} elseif ( 'custom_url' == $images_link ) {
|
688 |
+
$template_args['link_to'] = $custom_url;
|
689 |
+
}
|
690 |
+
|
691 |
+
$template_args['image'] = $image_data['sizes'][$image_size];
|
692 |
+
$template_args['caption'] = $image_data['caption'];
|
693 |
+
$template_args['timestamp'] = $image_data['timestamp'];
|
694 |
+
$template_args['username'] = isset( $image_data['username'] ) ? $image_data['username'] : '';
|
695 |
+
|
696 |
+
$output .= $this->get_template( $template, $template_args );
|
697 |
+
}
|
698 |
+
|
699 |
+
$output .= "</ul>\n</div>" . $this->powered_by_link( $powered_by_link );
|
700 |
+
}
|
701 |
+
}
|
702 |
+
|
703 |
+
return $output;
|
704 |
+
|
705 |
+
}
|
706 |
+
|
707 |
+
|
708 |
+
/**
|
709 |
+
* Function to display Templates styles
|
710 |
+
*
|
711 |
+
* @param string $template
|
712 |
+
* @param array $args
|
713 |
+
*
|
714 |
+
* return mixed
|
715 |
+
*/
|
716 |
+
private function get_template( $template, $args ) {
|
717 |
+
|
718 |
+
$link_to = isset( $args['link_to'] ) ? $args['link_to'] : false;
|
719 |
+
$image_url = isset( $args['image'] ) ? $args['image'] : false;
|
720 |
+
|
721 |
+
if ( ( $args['search_for'] == 'user' && $args['attachment'] !== true ) || $args['search_for'] == 'hashtag' ) {
|
722 |
+
$caption = $args['caption'];
|
723 |
+
$time = $args['timestamp'];
|
724 |
+
$username = $args['username'];
|
725 |
+
} else {
|
726 |
+
$attach_id = get_the_id();
|
727 |
+
$caption = get_the_excerpt();
|
728 |
+
$time = get_post_meta( $attach_id, 'jr_insta_timestamp', true );
|
729 |
+
$username = get_post_meta( $attach_id, 'jr_insta_username', true );
|
730 |
+
}
|
731 |
+
|
732 |
+
$short_caption = wp_trim_words( $caption, 10, '' );
|
733 |
+
$short_caption = preg_replace("/[^A-Za-z0-9?! ]/","", $short_caption);
|
734 |
+
$caption = wp_trim_words( $caption, $args['caption_words'], '' );
|
735 |
+
$nopin = ( 1 == $args['no_pin'] ) ? 'nopin="nopin"' : '';
|
736 |
+
|
737 |
+
$image_src = '<img src="' . $image_url . '" alt="' . $short_caption . '" title="' . $short_caption . '" '. $nopin . '/>';
|
738 |
+
$image_output = $image_src;
|
739 |
+
|
740 |
+
if ( $link_to ) {
|
741 |
+
$image_output = '<a href="' . $link_to . '" target="_blank"';
|
742 |
+
|
743 |
+
if ( ! empty( $args['link_rel'] ) ) {
|
744 |
+
$image_output .= ' rel="' . $args['link_rel'] . '"';
|
745 |
+
}
|
746 |
+
|
747 |
+
if ( ! empty( $args['link_class'] ) ) {
|
748 |
+
$image_output .= ' class="' . $args['link_class'] . '"';
|
749 |
+
}
|
750 |
+
$image_output .= ' title="' . $short_caption . '">' . $image_src . '</a>';
|
751 |
+
}
|
752 |
+
|
753 |
+
$output = '';
|
754 |
+
|
755 |
+
// Template : Normal Slider
|
756 |
+
if ( $template == 'slider' ) {
|
757 |
+
|
758 |
+
$output .= "<li>";
|
759 |
+
|
760 |
+
$output .= $image_output;
|
761 |
+
|
762 |
+
if ( is_array( $args['description'] ) && count( $args['description'] ) >= 1 ) {
|
763 |
+
|
764 |
+
$output .= "<div class='jr-insta-datacontainer'>\n";
|
765 |
+
|
766 |
+
if ( $time && in_array( 'time', $args['description'] ) ) {
|
767 |
+
$time = human_time_diff( $time );
|
768 |
+
$output .= "<span class='jr-insta-time'>{$time} ago</span>\n";
|
769 |
+
}
|
770 |
+
if ( in_array( 'username', $args['description'] ) && $username ) {
|
771 |
+
$output .= "<span class='jr-insta-username'>by <a rel='nofollow' href='https://www.instagram.com/{$username}/' target='_blank'>{$username}</a></span>\n";
|
772 |
+
}
|
773 |
+
|
774 |
+
if ( $caption != '' && in_array( 'caption', $args['description'] ) ) {
|
775 |
+
$caption = preg_replace( '/@([a-z0-9_]+)/i', ' <a href="https://www.instagram.com/$1/" rel="nofollow" target="_blank">@$1</a> ', $caption );
|
776 |
+
$caption = preg_replace( '/\#([a-zA-Z0-9_-]+)/i', ' <a href="https://www.instagram.com/explore/tags/$1/" rel="nofollow" target="_blank">$0</a> ', $caption);
|
777 |
+
$output .= "<span class='jr-insta-caption'>{$caption}</span>\n";
|
778 |
+
}
|
779 |
+
|
780 |
+
$output .= "</div>\n";
|
781 |
+
}
|
782 |
+
|
783 |
+
$output .= "</li>";
|
784 |
+
|
785 |
+
// Template : Slider with text Overlay on mouse over
|
786 |
+
} elseif ( $template == 'slider-overlay' ) {
|
787 |
+
|
788 |
+
$output .= "<li>";
|
789 |
+
|
790 |
+
$output .= $image_output;
|
791 |
+
|
792 |
+
if ( is_array( $args['description'] ) && count( $args['description'] ) >= 1 ) {
|
793 |
+
|
794 |
+
$output .= "<div class='jr-insta-wrap'>\n";
|
795 |
+
|
796 |
+
$output .= "<div class='jr-insta-datacontainer'>\n";
|
797 |
+
|
798 |
+
if ( $time && in_array( 'time', $args['description'] ) ) {
|
799 |
+
$time = human_time_diff( $time );
|
800 |
+
$output .= "<span class='jr-insta-time'>{$time} ago</span>\n";
|
801 |
+
}
|
802 |
+
|
803 |
+
if ( in_array( 'username', $args['description'] ) && $username ) {
|
804 |
+
$output .= "<span class='jr-insta-username'>by <a rel='nofollow' target='_blank' href='https://www.instagram.com/{$username}/'>{$username}</a></span>\n";
|
805 |
+
}
|
806 |
+
|
807 |
+
if ( $caption != '' && in_array( 'caption', $args['description'] ) ) {
|
808 |
+
$caption = preg_replace( '/@([a-z0-9_]+)/i', ' <a href="https://www.instagram.com/$1/" rel="nofollow" target="_blank">@$1</a> ', $caption );
|
809 |
+
$caption = preg_replace( '/\#([a-zA-Z0-9_-]+)/i', ' <a href="https://www.instagram.com/explore/tags/$1/" rel="nofollow" target="_blank">$0</a> ', $caption);
|
810 |
+
$output .= "<span class='jr-insta-caption'>{$caption}</span>\n";
|
811 |
+
}
|
812 |
+
|
813 |
+
$output .= "</div>\n";
|
814 |
+
|
815 |
+
$output .= "</div>\n";
|
816 |
+
}
|
817 |
+
|
818 |
+
$output .= "</li>";
|
819 |
+
|
820 |
+
// Template : Thumbnails no text
|
821 |
+
} elseif ( $template == 'thumbs' || $template == 'thumbs-no-border' ) {
|
822 |
+
|
823 |
+
$output .= "<li>";
|
824 |
+
$output .= $image_output;
|
825 |
+
$output .= "</li>";
|
826 |
+
|
827 |
+
} else {
|
828 |
+
|
829 |
+
$output .= 'This template does not exist!';
|
830 |
+
}
|
831 |
+
|
832 |
+
return $output;
|
833 |
+
}
|
834 |
+
|
835 |
+
|
836 |
+
/**
|
837 |
+
* Trigger refresh for new data
|
838 |
+
* @param bolean $instaData
|
839 |
+
* @param array $old_args
|
840 |
+
* @param array $new_args
|
841 |
+
* @return bolean
|
842 |
+
*/
|
843 |
+
private function trigger_refresh_data( $instaData, $old_args, $new_args ) {
|
844 |
+
|
845 |
+
$trigger = 0;
|
846 |
+
|
847 |
+
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
|
848 |
+
return false;
|
849 |
+
}
|
850 |
+
|
851 |
+
if ( false === $instaData ) {
|
852 |
+
$trigger = 1;
|
853 |
+
}
|
854 |
+
|
855 |
+
|
856 |
+
if ( isset( $old_args['saved_images'] ) ) {
|
857 |
+
unset($old_args['saved_images']);
|
858 |
+
}
|
859 |
+
|
860 |
+
if ( isset( $old_args['deleted_images'] ) ) {
|
861 |
+
unset($old_args['deleted_images']);
|
862 |
+
}
|
863 |
+
|
864 |
+
if ( is_array( $old_args ) && is_array( $new_args ) && array_diff( $old_args, $new_args ) !== array_diff( $new_args, $old_args ) ) {
|
865 |
+
$trigger = 1;
|
866 |
+
}
|
867 |
+
|
868 |
+
if ( $trigger == 1 ) {
|
869 |
+
return true;
|
870 |
+
}
|
871 |
+
|
872 |
+
return false;
|
873 |
+
}
|
874 |
+
|
875 |
+
|
876 |
+
/**
|
877 |
+
* Show powered by link at the end of the plugin
|
878 |
+
* @param [type] $support_author [description]
|
879 |
+
* @return [type] [description]
|
880 |
+
*/
|
881 |
+
function powered_by_link( $support_author ) {
|
882 |
+
|
883 |
+
if ( $support_author ) {
|
884 |
+
$link = $this->domain_data();
|
885 |
+
|
886 |
+
if ( isset( $link['text'] ) && !empty( $link['text'] ) && isset( $link['domain'] ) && !empty( $link['domain'] ) ) {
|
887 |
+
$link = '<div style="clear:both;text-align:right;font-size:10px;" >Powered by <a href="'.$link['domain'].'" target="_blank">'.$link['text'].'</a></div>';
|
888 |
+
} else if ( isset( $link['text'] ) && !empty( $link['text'] ) ) {
|
889 |
+
$link = '<div style="clear:both;text-align:right;font-size:10px;" >Powered by '.$link['text'].'</div>';
|
890 |
+
} else {
|
891 |
+
$link = '';
|
892 |
+
}
|
893 |
+
|
894 |
+
return $link;
|
895 |
+
}
|
896 |
+
return false;
|
897 |
+
}
|
898 |
+
|
899 |
+
|
900 |
+
/**
|
901 |
+
* Stores the fetched data from instagram in WordPress DB using transients
|
902 |
+
*
|
903 |
+
* @param string $username Instagram Username to fetch images from
|
904 |
+
* @param string $cache_hours Cache hours for transient
|
905 |
+
* @param string $nr_images Nr of images to fetch from instagram
|
906 |
+
*
|
907 |
+
* @return array of localy saved instagram data
|
908 |
+
*/
|
909 |
+
private function instagram_data( $search_for, $cache_hours, $nr_images, $attachment ) {
|
910 |
+
|
911 |
+
$nr_images = $nr_images <= 12 ? $nr_images : 12;
|
912 |
+
$blocked_users = isset( $search_for['blocked_users'] ) && !empty( $search_for['blocked_users'] ) ? $search_for['blocked_users'] : false;
|
913 |
+
if ( isset( $search_for['username'] ) && !empty( $search_for['username'] ) ) {
|
914 |
+
$search = 'user';
|
915 |
+
$search_string = $search_for['username'];
|
916 |
+
} elseif ( isset( $search_for['hashtag'] ) && !empty( $search_for['hashtag'] ) ) {
|
917 |
+
$search = 'hashtag';
|
918 |
+
$search_string = $search_for['hashtag'];
|
919 |
+
$blocked_users_array = $blocked_users ? $this->get_ids_from_usernames( $blocked_users ) : array();
|
920 |
+
} else {
|
921 |
+
return __( 'Nothing to search for', 'instagram-slider-widget');
|
922 |
+
}
|
923 |
+
|
924 |
+
$opt_name = 'jr_insta_' . md5( $search . '_' . $search_string );
|
925 |
+
$instaData = get_transient( $opt_name );
|
926 |
+
$old_opts = (array) get_option( $opt_name );
|
927 |
+
$new_opts = array(
|
928 |
+
'search' => $search,
|
929 |
+
'search_string' => $search_string,
|
930 |
+
'blocked_users' => $blocked_users,
|
931 |
+
'cache_hours' => $cache_hours,
|
932 |
+
'nr_images' => $nr_images,
|
933 |
+
'attachment' => $attachment
|
934 |
+
);
|
935 |
+
|
936 |
+
if ( true === $this->trigger_refresh_data( $instaData, $old_opts, $new_opts ) ) {
|
937 |
+
|
938 |
+
$instaData = array();
|
939 |
+
$old_opts['search'] = $search;
|
940 |
+
$old_opts['search_string'] = $search_string;
|
941 |
+
$old_opts['blocked_users'] = $blocked_users;
|
942 |
+
$old_opts['cache_hours'] = $cache_hours;
|
943 |
+
$old_opts['nr_images'] = $nr_images;
|
944 |
+
$old_opts['attachment'] = $attachment;
|
945 |
+
|
946 |
+
if ( 'user' == $search ) {
|
947 |
+
|
948 |
+
$url = str_replace( '{username}', urlencode( trim( $search_string ) ), self::USERNAME_URL );
|
949 |
+
$response = wp_remote_get( $url, array( 'sslverify' => false, 'timeout' => 60 ) );
|
950 |
+
|
951 |
+
$json = str_replace( 'window._sharedData = ', '', strstr( $response['body'], 'window._sharedData = ' ) );
|
952 |
+
|
953 |
+
// Compatibility for version of php where strstr() doesnt accept third parameter
|
954 |
+
if ( version_compare( PHP_VERSION, '5.3.0', '>=' ) ) {
|
955 |
+
$json = strstr( $json, '</script>', true );
|
956 |
+
} else {
|
957 |
+
$json = substr( $json, 0, strpos( $json, '</script>' ) );
|
958 |
+
}
|
959 |
+
$json = rtrim( $json, ';' );
|
960 |
+
|
961 |
+
// Function json_last_error() is not available before PHP * 5.3.0 version
|
962 |
+
if ( function_exists( 'json_last_error' ) ) {
|
963 |
+
|
964 |
+
( $results = json_decode( $json, true ) ) && json_last_error() == JSON_ERROR_NONE;
|
965 |
+
|
966 |
+
} else {
|
967 |
+
$results = json_decode( $json, true );
|
968 |
+
}
|
969 |
+
|
970 |
+
} else {
|
971 |
+
$url = str_replace( '{tag}', urlencode( trim( $search_string ) ), self::TAG_URL );
|
972 |
+
$response = wp_remote_get( $url, array( 'sslverify' => false, 'timeout' => 60 ) );
|
973 |
+
$results = json_decode( $response['body'], true );
|
974 |
+
|
975 |
+
}
|
976 |
+
|
977 |
+
if ( is_wp_error( $response ) ) {
|
978 |
+
|
979 |
+
return $response->get_error_message();
|
980 |
+
}
|
981 |
+
|
982 |
+
if ( $response['response']['code'] == 200 ) {
|
983 |
+
|
984 |
+
if ( $results && is_array( $results ) ) {
|
985 |
+
|
986 |
+
if ( 'user' == $search ) {
|
987 |
+
$entry_data = isset($results['entry_data']['ProfilePage'][0]['graphql']['user']['edge_owner_to_timeline_media']['edges']) ? $results['entry_data']['ProfilePage'][0]['graphql']['user']['edge_owner_to_timeline_media']['edges'] : array();
|
988 |
+
} else {
|
989 |
+
$entry_data = isset( $results['graphql']['hashtag']['edge_hashtag_to_media']['edges'] ) ? $results['graphql']['hashtag']['edge_hashtag_to_media']['edges'] : array();
|
990 |
+
}
|
991 |
+
|
992 |
+
if ( empty( $entry_data ) ) {
|
993 |
+
return __( 'No images found', 'instagram-slider-widget');
|
994 |
+
}
|
995 |
+
|
996 |
+
foreach ( $entry_data as $current => $result ) {
|
997 |
+
|
998 |
+
$result = $result['node'];
|
999 |
+
|
1000 |
+
if ( 'hashtag' == $search ) {
|
1001 |
+
|
1002 |
+
if ( in_array( $result['owner']['id'], $blocked_users_array ) ) {
|
1003 |
+
$nr_images++;
|
1004 |
+
continue;
|
1005 |
+
}
|
1006 |
+
}
|
1007 |
+
|
1008 |
+
if ( $result['is_video'] == true ) {
|
1009 |
+
$nr_images++;
|
1010 |
+
continue;
|
1011 |
+
}
|
1012 |
+
|
1013 |
+
|
1014 |
+
if ( $current >= $nr_images ) {
|
1015 |
+
break;
|
1016 |
+
}
|
1017 |
+
|
1018 |
+
$image_data = $this->media_model( $result );
|
1019 |
+
|
1020 |
+
if ( 'user' == $search ) {
|
1021 |
+
$image_data['username'] = $search_string;
|
1022 |
+
}
|
1023 |
+
|
1024 |
+
if ( ( $search == 'hashtag' ) || ( $search == 'user' && !$attachment ) ) {
|
1025 |
+
|
1026 |
+
$instaData[] = $image_data;
|
1027 |
+
|
1028 |
+
} else {
|
1029 |
+
|
1030 |
+
if ( isset( $old_opts['saved_images'][$image_data['id']] ) ) {
|
1031 |
+
|
1032 |
+
if ( is_string( get_post_status( $old_opts['saved_images'][$image_data['id']] ) ) ) {
|
1033 |
+
|
1034 |
+
$this->update_wp_attachment( $old_opts['saved_images'][$image_data['id']], $image_data );
|
1035 |
+
|
1036 |
+
$instaData[$image_data['id']] = $old_opts['saved_images'][$image_data['id']];
|
1037 |
+
|
1038 |
+
} else {
|
1039 |
+
unset( $old_opts['saved_images'][$image_data['id']] );
|
1040 |
+
}
|
1041 |
+
|
1042 |
+
} else {
|
1043 |
+
|
1044 |
+
$id = $this->save_wp_attachment( $image_data );
|
1045 |
+
|
1046 |
+
if ( $id && is_numeric( $id ) ) {
|
1047 |
+
|
1048 |
+
$old_opts['saved_images'][$image_data['id']] = $id;
|
1049 |
+
|
1050 |
+
$instaData[$image_data['id']] = $id;
|
1051 |
+
|
1052 |
+
} else {
|
1053 |
+
|
1054 |
+
return $id;
|
1055 |
+
}
|
1056 |
+
|
1057 |
+
} // end isset $saved_images
|
1058 |
+
|
1059 |
+
} // false to save attachments
|
1060 |
+
|
1061 |
+
} // end -> foreach
|
1062 |
+
|
1063 |
+
} // end -> ( $results ) && is_array( $results ) )
|
1064 |
+
|
1065 |
+
} else {
|
1066 |
+
|
1067 |
+
return $response['response']['message'];
|
1068 |
+
|
1069 |
+
} // end -> $response['response']['code'] === 200 )
|
1070 |
+
|
1071 |
+
update_option( $opt_name, $old_opts );
|
1072 |
+
|
1073 |
+
if ( is_array( $instaData ) && !empty( $instaData ) ) {
|
1074 |
+
|
1075 |
+
set_transient( $opt_name, $instaData, $cache_hours * 60 * 60 );
|
1076 |
+
}
|
1077 |
+
|
1078 |
+
} // end -> false === $instaData
|
1079 |
+
|
1080 |
+
return $instaData;
|
1081 |
+
}
|
1082 |
+
|
1083 |
+
|
1084 |
+
/**
|
1085 |
+
* @param string $imageUrl
|
1086 |
+
*
|
1087 |
+
* @return array
|
1088 |
+
*/
|
1089 |
+
private function get_thumbnail_urls( $thumbnails ) {
|
1090 |
+
|
1091 |
+
$image_thumbnails = array();
|
1092 |
+
|
1093 |
+
foreach ( $thumbnails as $thumbnail ) {
|
1094 |
+
|
1095 |
+
switch ( $thumbnail['config_width'] ) {
|
1096 |
+
case '150':
|
1097 |
+
$image_thumbnails['thumbnail'] = $thumbnail['src'];
|
1098 |
+
break;
|
1099 |
+
case '320':
|
1100 |
+
$image_thumbnails['low'] = $thumbnail['src'];
|
1101 |
+
break;
|
1102 |
+
case '640':
|
1103 |
+
$image_thumbnails['standard'] = $thumbnail['src'];
|
1104 |
+
break;
|
1105 |
+
}
|
1106 |
+
}
|
1107 |
+
|
1108 |
+
return $image_thumbnails;
|
1109 |
+
}
|
1110 |
+
|
1111 |
+
|
1112 |
+
/**
|
1113 |
+
* Media Model
|
1114 |
+
* @param [type] $medias_array [description]
|
1115 |
+
* @return [type] [description]
|
1116 |
+
*/
|
1117 |
+
private function media_model( $medias_array ) {
|
1118 |
+
|
1119 |
+
$medias_model = array();
|
1120 |
+
|
1121 |
+
foreach ( $medias_array as $prop => $value ) {
|
1122 |
+
|
1123 |
+
switch ( $prop ) {
|
1124 |
+
case 'id':
|
1125 |
+
$medias_model['id'] = $value;
|
1126 |
+
break;
|
1127 |
+
case 'code':
|
1128 |
+
case 'shortcode':
|
1129 |
+
$medias_model['code'] = $value;
|
1130 |
+
$medias_model['link'] = 'https://www.instagram.com/p/'. $value . '/';
|
1131 |
+
break;
|
1132 |
+
case 'owner':
|
1133 |
+
$medias_model['user_id'] = $value['id'];
|
1134 |
+
break;
|
1135 |
+
case 'caption':
|
1136 |
+
$medias_model['caption'] = $this->sanitize( $value );
|
1137 |
+
break;
|
1138 |
+
case 'edge_media_to_caption':
|
1139 |
+
if ( !empty( $value['edges'] ) ) {
|
1140 |
+
$first_caption = $value['edges'][0];
|
1141 |
+
if ( isset( $first_caption['node']['text'] ) ) {
|
1142 |
+
$medias_model['caption'] = $this->sanitize( $value['edges'][0]['node']['text'] );
|
1143 |
+
}
|
1144 |
+
}
|
1145 |
+
break;
|
1146 |
+
case 'date':
|
1147 |
+
case 'taken_at_timestamp':
|
1148 |
+
$medias_model['timestamp'] = (float) $value;
|
1149 |
+
break;
|
1150 |
+
case 'dimensions':
|
1151 |
+
$medias_model['height'] = $value['height'];
|
1152 |
+
$medias_model['width'] = $value['width'];
|
1153 |
+
break;
|
1154 |
+
case 'display_url':
|
1155 |
+
case 'display_src':
|
1156 |
+
$medias_model['url'] = $value;
|
1157 |
+
if ( isset( $medias_model['sizes'] ) ) {
|
1158 |
+
$medias_model['sizes']['full'] = $value;
|
1159 |
+
}
|
1160 |
+
break;
|
1161 |
+
case 'edge_liked_by':
|
1162 |
+
case 'likes':
|
1163 |
+
$medias_model['likes_count'] = $value['count'];
|
1164 |
+
break;
|
1165 |
+
case 'edge_media_to_comment':
|
1166 |
+
case 'comments':
|
1167 |
+
$medias_model['comment_count'] = $value['count'];
|
1168 |
+
break;
|
1169 |
+
case 'thumbnail_resources':
|
1170 |
+
$medias_model['sizes'] = $this->get_thumbnail_urls( $value );
|
1171 |
+
if ( isset( $medias_model['url'] ) ) {
|
1172 |
+
$medias_model['sizes']['full'] = $medias_model['url'];
|
1173 |
+
}
|
1174 |
+
break;
|
1175 |
+
}
|
1176 |
+
|
1177 |
+
if ( isset( $medias_model['comment_count'] ) && isset( $medias_model['likes_count'] ) ) {
|
1178 |
+
$medias_model['popularity'] = (int) ( $medias_model['comment_count'] ) + ( $medias_model['likes_count'] );
|
1179 |
+
}
|
1180 |
+
}
|
1181 |
+
|
1182 |
+
return $medias_model;
|
1183 |
+
}
|
1184 |
+
|
1185 |
+
|
1186 |
+
/**
|
1187 |
+
* Remove Duplicates
|
1188 |
+
* @return [type] [description]
|
1189 |
+
*/
|
1190 |
+
private function clean_duplicates( $username ) {
|
1191 |
+
|
1192 |
+
$savedinsta_args = array(
|
1193 |
+
'post_type' => 'attachment',
|
1194 |
+
'post_status' => 'inherit',
|
1195 |
+
'post_mime_type' => 'image',
|
1196 |
+
'orderby' => 'rand',
|
1197 |
+
'posts_per_page' => -1,
|
1198 |
+
'meta_query' => array(
|
1199 |
+
array(
|
1200 |
+
'key' => 'jr_insta_username',
|
1201 |
+
'compare' => '=',
|
1202 |
+
'value' => $username
|
1203 |
+
),
|
1204 |
+
),
|
1205 |
+
);
|
1206 |
+
|
1207 |
+
$savedinsta = new WP_Query( $savedinsta_args );
|
1208 |
+
|
1209 |
+
$opt_name = 'jr_insta_' . md5( 'user' . '_' . $username );
|
1210 |
+
|
1211 |
+
$attachment_ids = (array) get_option( $opt_name );
|
1212 |
+
|
1213 |
+
$deleted_count = 0;
|
1214 |
+
|
1215 |
+
foreach ( $savedinsta->posts as $post ) {
|
1216 |
+
|
1217 |
+
if ( !in_array( $post->ID, $attachment_ids['saved_images'] ) ) {
|
1218 |
+
|
1219 |
+
if ( false !== wp_delete_attachment( $post->ID, true ) ) {
|
1220 |
+
$deleted_count++;
|
1221 |
+
}
|
1222 |
+
}
|
1223 |
+
}
|
1224 |
+
|
1225 |
+
wp_reset_postdata();
|
1226 |
+
|
1227 |
+
return $deleted_count;
|
1228 |
+
}
|
1229 |
+
|
1230 |
+
/**
|
1231 |
+
* Ajax Call to unblock images
|
1232 |
+
* @return void
|
1233 |
+
*/
|
1234 |
+
public function delete_dupes() {
|
1235 |
+
|
1236 |
+
if (function_exists('check_ajax_referer')) {
|
1237 |
+
check_ajax_referer( 'jr_delete_instagram_dupes' );
|
1238 |
+
}
|
1239 |
+
|
1240 |
+
$post = $_POST;
|
1241 |
+
$return = array(
|
1242 |
+
'deleted' => $this->clean_duplicates( $post['username'] )
|
1243 |
+
);
|
1244 |
+
|
1245 |
+
wp_send_json( $return );
|
1246 |
+
}
|
1247 |
+
|
1248 |
+
/**
|
1249 |
+
* Get Instagram Ids from Usernames into array
|
1250 |
+
* @param string $usernames Comma separated string with instagram users
|
1251 |
+
* @return array An array with instagram ids
|
1252 |
+
*/
|
1253 |
+
private function get_ids_from_usernames( $usernames ) {
|
1254 |
+
|
1255 |
+
$users = explode( ',', trim( $usernames ) );
|
1256 |
+
$user_ids = (array) get_transient( 'jr_insta_user_ids' );
|
1257 |
+
$return_ids = array();
|
1258 |
+
|
1259 |
+
if ( is_array( $users ) && !empty( $users ) ) {
|
1260 |
+
|
1261 |
+
foreach ( $users as $user ) {
|
1262 |
+
|
1263 |
+
if ( isset( $user_ids[$user] ) ) {
|
1264 |
+
continue;
|
1265 |
+
}
|
1266 |
+
|
1267 |
+
$url = str_replace( '{username}', urlencode( trim( $user ) ), self::USERNAME_URL );
|
1268 |
+
$response = wp_remote_get( $url, array( 'sslverify' => false, 'timeout' => 60 ) );
|
1269 |
+
|
1270 |
+
if ( is_wp_error( $response ) ) {
|
1271 |
+
|
1272 |
+
return $response->get_error_message();
|
1273 |
+
}
|
1274 |
+
|
1275 |
+
if ( $response['response']['code'] == 200 ) {
|
1276 |
+
|
1277 |
+
$results = json_decode( $response['body'], true );
|
1278 |
+
|
1279 |
+
if ( $results && is_array( $results ) ) {
|
1280 |
+
|
1281 |
+
$user_id = isset( $results['user']['id'] ) ? $results['user']['id'] : false;
|
1282 |
+
|
1283 |
+
if ( $user_id ) {
|
1284 |
+
|
1285 |
+
$user_ids[$user] = $user_id;
|
1286 |
+
|
1287 |
+
set_transient( 'jr_insta_user_ids', $user_ids );
|
1288 |
+
}
|
1289 |
+
}
|
1290 |
+
}
|
1291 |
+
}
|
1292 |
+
}
|
1293 |
+
|
1294 |
+
foreach ( $users as $user ) {
|
1295 |
+
if ( isset( $user_ids[$user] ) ) {
|
1296 |
+
$return_ids[] = $user_ids[$user];
|
1297 |
+
}
|
1298 |
+
}
|
1299 |
+
|
1300 |
+
return $return_ids;
|
1301 |
+
}
|
1302 |
+
|
1303 |
+
|
1304 |
+
/**
|
1305 |
+
* Updates attachment using the id
|
1306 |
+
* @param int $attachment_ID
|
1307 |
+
* @param array image_data
|
1308 |
+
* @return void
|
1309 |
+
*/
|
1310 |
+
private function update_wp_attachment( $attachment_ID, $image_data ) {
|
1311 |
+
update_post_meta( $attachment_ID, 'jr_insta_popularity', $image_data['popularity'] );
|
1312 |
+
update_post_meta( $attachment_ID, 'jr_insta_likes_count', $image_data['likes_count'] );
|
1313 |
+
update_post_meta( $attachment_ID, 'jr_insta_comment_count', $image_data['comment_count'] );
|
1314 |
+
}
|
1315 |
+
|
1316 |
+
/**
|
1317 |
+
* Save Instagram images to upload folder and ads to media.
|
1318 |
+
* If the upload fails it returns the remote image url.
|
1319 |
+
*
|
1320 |
+
* @param string $url Url of image to download
|
1321 |
+
* @param string $file File path for image
|
1322 |
+
*
|
1323 |
+
* @return string $url Url to image
|
1324 |
+
*/
|
1325 |
+
private function save_wp_attachment( $image_data ) {
|
1326 |
+
|
1327 |
+
$image_info = pathinfo( $image_data['url'] );
|
1328 |
+
|
1329 |
+
if ( !in_array( $image_info['extension'], array( 'jpg', 'jpe', 'jpeg' ) ) ) {
|
1330 |
+
return false;
|
1331 |
+
}
|
1332 |
+
|
1333 |
+
$attachment = array(
|
1334 |
+
'guid' => $image_data['url'],
|
1335 |
+
'post_mime_type' => 'image/jpeg',
|
1336 |
+
'post_title' => preg_replace( '/\.[^.]+$/', '', $image_info['basename'] ),
|
1337 |
+
'post_excerpt' => $image_data['caption']
|
1338 |
+
);
|
1339 |
+
|
1340 |
+
$attachment_metadata = array( 'width' => $image_data['width'], 'height' => $image_data['height'], 'file' => $image_info['basename'] );
|
1341 |
+
$attachment_metadata['sizes'] = array( 'full' => $attachment_metadata );
|
1342 |
+
$id = wp_insert_attachment( $attachment );
|
1343 |
+
wp_update_attachment_metadata( $id, $attachment_metadata );
|
1344 |
+
|
1345 |
+
|
1346 |
+
unset( $image_data['caption'] );
|
1347 |
+
|
1348 |
+
foreach ( $image_data as $meta_key => $meta_value ) {
|
1349 |
+
update_post_meta( $id, 'jr_insta_' . $meta_key, $meta_value );
|
1350 |
+
}
|
1351 |
+
|
1352 |
+
return $id;
|
1353 |
+
}
|
1354 |
+
|
1355 |
+
/**
|
1356 |
+
* Add new attachment Description only for instgram images
|
1357 |
+
*
|
1358 |
+
* @param array $form_fields
|
1359 |
+
* @param object $post
|
1360 |
+
*
|
1361 |
+
* @return array
|
1362 |
+
*/
|
1363 |
+
public function insta_attachment_fields( $form_fields, $post ) {
|
1364 |
+
|
1365 |
+
$instagram_username = get_post_meta( $post->ID, 'jr_insta_username', true );
|
1366 |
+
|
1367 |
+
if ( !empty( $instagram_username ) ) {
|
1368 |
+
|
1369 |
+
$form_fields["jr_insta_username"] = array(
|
1370 |
+
"label" => __( "Instagram Username" ),
|
1371 |
+
"input" => "html",
|
1372 |
+
"html" => "<span style='line-height:31px'><a target='_blank' href='https://www.instagram.com/{$instagram_username}/'>{$instagram_username}</a></span>"
|
1373 |
+
);
|
1374 |
+
|
1375 |
+
$instagram_link = get_post_meta( $post->ID, 'jr_insta_link', true );
|
1376 |
+
if ( !empty( $instagram_link ) ) {
|
1377 |
+
$form_fields["jr_insta_link"] = array(
|
1378 |
+
"label" => __( "Instagram Image" ),
|
1379 |
+
"input" => "html",
|
1380 |
+
"html" => "<span style='line-height:31px'><a target='_blank' href='{$instagram_link}'>{$instagram_link}</a></span>"
|
1381 |
+
);
|
1382 |
+
}
|
1383 |
+
|
1384 |
+
$instagram_date = get_post_meta( $post->ID, 'jr_insta_timestamp', true );
|
1385 |
+
if ( !empty( $instagram_date ) ) {
|
1386 |
+
$instagram_date = date( "F j, Y, g:i a", $instagram_date );
|
1387 |
+
$form_fields["jr_insta_time"] = array(
|
1388 |
+
"label" => __( "Posted on Instagram" ),
|
1389 |
+
"input" => "html",
|
1390 |
+
"html" => "<span style='line-height:31px'>{$instagram_date}</span>"
|
1391 |
+
);
|
1392 |
+
}
|
1393 |
+
}
|
1394 |
+
|
1395 |
+
return $form_fields;
|
1396 |
+
}
|
1397 |
+
|
1398 |
+
/**
|
1399 |
+
* Sort Function for timestamp Ascending
|
1400 |
+
*/
|
1401 |
+
public function sort_timestamp_ASC( $a, $b ) {
|
1402 |
+
return $a['timestamp'] > $b['timestamp'];
|
1403 |
+
}
|
1404 |
+
|
1405 |
+
/**
|
1406 |
+
* Sort Function for timestamp Descending
|
1407 |
+
*/
|
1408 |
+
public function sort_timestamp_DESC( $a, $b ) {
|
1409 |
+
return $a['timestamp'] < $b['timestamp'];
|
1410 |
+
}
|
1411 |
+
|
1412 |
+
/**
|
1413 |
+
* Sort Function for popularity Ascending
|
1414 |
+
*/
|
1415 |
+
public function sort_popularity_ASC( $a, $b ) {
|
1416 |
+
return $a['popularity'] > $b['popularity'];
|
1417 |
+
}
|
1418 |
+
|
1419 |
+
/**
|
1420 |
+
* Sort Function for popularity Descending
|
1421 |
+
*/
|
1422 |
+
public function sort_popularity_DESC( $a, $b ) {
|
1423 |
+
return $a['popularity'] < $b['popularity'];
|
1424 |
+
}
|
1425 |
+
|
1426 |
+
/**
|
1427 |
+
* Plugin Data for better compatibility and Support
|
1428 |
+
*
|
1429 |
+
*/
|
1430 |
+
public function domain_data() {
|
1431 |
+
|
1432 |
+
if ( false === $domain_data = get_transient( 'jr_domain_info' ) ) {
|
1433 |
+
|
1434 |
+
$theme = wp_get_theme();
|
1435 |
+
$domain = get_site_url();
|
1436 |
+
$plugin = self::VERSION;
|
1437 |
+
$url = 'http://jrwebstudio.com/wp-admin/admin-post.php';
|
1438 |
+
|
1439 |
+
$response = wp_safe_remote_post( $url, array(
|
1440 |
+
'method' => 'POST',
|
1441 |
+
'timeout' => 45,
|
1442 |
+
'redirection' => 5,
|
1443 |
+
'httpversion' => '1.1',
|
1444 |
+
'blocking' => true,
|
1445 |
+
'user-agent' => 'Mozilla/4.0',
|
1446 |
+
'headers' => array(),
|
1447 |
+
'cookies' => array(),
|
1448 |
+
'body' => array(
|
1449 |
+
'action' => 'insta_users',
|
1450 |
+
'domain' => $domain,
|
1451 |
+
'theme_name' => $theme->get( 'Name' ),
|
1452 |
+
'theme_version' => $theme->get( 'Version' ),
|
1453 |
+
'plugin_version' => $plugin,
|
1454 |
+
'timestamp' => time()
|
1455 |
+
)
|
1456 |
+
)
|
1457 |
+
);
|
1458 |
+
|
1459 |
+
if ( $response['response']['code'] == 200 ) {
|
1460 |
+
$domain_data = json_decode( wp_remote_retrieve_body( $response ), true );
|
1461 |
+
if ( is_array( $domain_data) && !empty( $domain_data) ) {
|
1462 |
+
set_transient( 'jr_domain_info', $domain_data, WEEK_IN_SECONDS );
|
1463 |
+
}
|
1464 |
+
}
|
1465 |
+
}
|
1466 |
+
|
1467 |
+
return $domain_data;
|
1468 |
+
}
|
1469 |
+
|
1470 |
+
/**
|
1471 |
+
* Sanitize 4-byte UTF8 chars; no full utf8mb4 support in drupal7+mysql stack.
|
1472 |
+
* This solution runs in O(n) time BUT assumes that all incoming input is
|
1473 |
+
* strictly UTF8.
|
1474 |
+
*
|
1475 |
+
* @param string $input The input to be sanitised
|
1476 |
+
*
|
1477 |
+
* @return the sanitized input
|
1478 |
+
*/
|
1479 |
+
private function sanitize( $input ) {
|
1480 |
+
|
1481 |
+
if ( !empty( $input ) ) {
|
1482 |
+
$utf8_2byte = 0xC0 /*1100 0000*/ ;
|
1483 |
+
$utf8_2byte_bmask = 0xE0 /*1110 0000*/ ;
|
1484 |
+
$utf8_3byte = 0xE0 /*1110 0000*/ ;
|
1485 |
+
$utf8_3byte_bmask = 0XF0 /*1111 0000*/ ;
|
1486 |
+
$utf8_4byte = 0xF0 /*1111 0000*/ ;
|
1487 |
+
$utf8_4byte_bmask = 0xF8 /*1111 1000*/ ;
|
1488 |
+
|
1489 |
+
$sanitized = "";
|
1490 |
+
$len = strlen( $input );
|
1491 |
+
for ( $i = 0; $i < $len; ++$i ) {
|
1492 |
+
|
1493 |
+
$mb_char = $input[$i]; // Potentially a multibyte sequence
|
1494 |
+
$byte = ord( $mb_char );
|
1495 |
+
|
1496 |
+
if ( ( $byte & $utf8_2byte_bmask ) == $utf8_2byte ) {
|
1497 |
+
$mb_char .= $input[++$i];
|
1498 |
+
} else if ( ( $byte & $utf8_3byte_bmask ) == $utf8_3byte ) {
|
1499 |
+
$mb_char .= $input[++$i];
|
1500 |
+
$mb_char .= $input[++$i];
|
1501 |
+
} else if ( ( $byte & $utf8_4byte_bmask ) == $utf8_4byte ) {
|
1502 |
+
// Replace with ? to avoid MySQL exception
|
1503 |
+
$mb_char = '';
|
1504 |
+
$i += 3;
|
1505 |
+
}
|
1506 |
+
|
1507 |
+
$sanitized .= $mb_char;
|
1508 |
+
}
|
1509 |
+
|
1510 |
+
$input = $sanitized;
|
1511 |
+
}
|
1512 |
+
|
1513 |
+
return $input;
|
1514 |
+
}
|
1515 |
+
|
1516 |
+
} // end of class WIS_InstagramSlider
|
1517 |
+
?>
|
instaram_slider.php
CHANGED
@@ -1,1518 +1,153 @@
|
|
1 |
<?php
|
2 |
/*
|
3 |
-
Plugin Name:
|
4 |
-
Plugin URI:
|
5 |
-
Version: 1.
|
6 |
-
Description:
|
7 |
-
Author:
|
8 |
-
Author URI:
|
9 |
-
|
|
|
|
|
|
|
10 |
*/
|
11 |
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
|
17 |
/**
|
18 |
-
*
|
|
|
19 |
*/
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
public function __construct() {
|
38 |
-
|
39 |
-
// Widget ID and Class Setup
|
40 |
-
parent::__construct( 'jr_insta_slider', __( 'Instagram Slider', 'jrinstaslider' ), array(
|
41 |
-
'classname' => 'jr-insta-slider',
|
42 |
-
'description' => __( 'A widget that displays a slider with instagram images ', 'jrinstaslider' )
|
43 |
-
)
|
44 |
-
);
|
45 |
-
|
46 |
-
// Shortcode
|
47 |
-
add_shortcode( 'jr_instagram', array( $this, 'shortcode' ) );
|
48 |
-
|
49 |
-
// Instgram Action to display images
|
50 |
-
add_action( 'jr_instagram', array( $this, 'instagram_images' ) );
|
51 |
-
|
52 |
-
// Enqueue Plugin Styles and scripts
|
53 |
-
add_action( 'wp_enqueue_scripts', array( $this, 'public_enqueue' ) );
|
54 |
-
|
55 |
-
// Enqueue Plugin Styles and scripts for admin pages
|
56 |
-
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue' ) );
|
57 |
-
|
58 |
-
// Ajax action to unblock images from widget
|
59 |
-
add_action( 'wp_ajax_jr_delete_insta_dupes', array( $this, 'delete_dupes' ) );
|
60 |
-
|
61 |
-
// Add new attachment field desctiptions
|
62 |
-
add_filter( 'attachment_fields_to_edit', array( $this, 'insta_attachment_fields' ) , 10, 2 );
|
63 |
-
|
64 |
-
// Add action for single cron events
|
65 |
-
add_action( 'jr_insta_cron', array( $this, 'jr_cron_trigger' ), 10 , 3 );
|
66 |
-
}
|
67 |
-
|
68 |
-
/**
|
69 |
-
* Register widget on windgets init
|
70 |
-
*/
|
71 |
-
public static function register_widget() {
|
72 |
-
register_widget( __CLASS__ );
|
73 |
-
register_sidebar( array(
|
74 |
-
'name' => __( 'Instagram Slider - Shortcode Generator', 'jrinstaslider' ),
|
75 |
-
'id' => 'jr-insta-shortcodes',
|
76 |
-
'description' => __( "1. Drag Instagram Slider widget here. 2. Fill in the fields and hit save. 3. Copy the shortocde generated at the bottom of the widget form and use it on posts or pages.", 'jrinstaslider' )
|
77 |
-
)
|
78 |
-
);
|
79 |
-
}
|
80 |
-
|
81 |
-
/**
|
82 |
-
* Enqueue public-facing Scripts and style sheet.
|
83 |
-
*/
|
84 |
-
public function public_enqueue() {
|
85 |
-
|
86 |
-
wp_enqueue_style( 'instag-slider', plugins_url( 'assets/css/instag-slider.css', __FILE__ ), array(), self::VERSION );
|
87 |
-
|
88 |
-
wp_enqueue_script( 'jquery-pllexi-slider', plugins_url( 'assets/js/jquery.flexslider-min.js', __FILE__ ), array( 'jquery' ), '2.2', false );
|
89 |
-
}
|
90 |
-
|
91 |
-
/**
|
92 |
-
* Enqueue admin side scripts and styles
|
93 |
-
*
|
94 |
-
* @param string $hook
|
95 |
-
*/
|
96 |
-
public function admin_enqueue( $hook ) {
|
97 |
-
|
98 |
-
if ( 'widgets.php' != $hook ) {
|
99 |
-
return;
|
100 |
-
}
|
101 |
-
|
102 |
-
wp_enqueue_style( 'jr-insta-admin-styles', plugins_url( 'assets/css/jr-insta-admin.css', __FILE__ ), array(), self::VERSION );
|
103 |
-
wp_enqueue_script( 'jr-insta-admin-script', plugins_url( 'assets/js/jr-insta-admin.js', __FILE__ ), array( 'jquery' ), self::VERSION, true );
|
104 |
-
}
|
105 |
-
|
106 |
-
/**
|
107 |
-
* The Public view of the Widget
|
108 |
-
*
|
109 |
-
* @return mixed
|
110 |
-
*/
|
111 |
-
public function widget( $args, $instance ) {
|
112 |
-
|
113 |
-
extract( $args );
|
114 |
-
|
115 |
-
//Our variables from the widget settings.
|
116 |
-
$title = apply_filters( 'widget_title', $instance['title'] );
|
117 |
-
|
118 |
-
echo $before_widget;
|
119 |
-
|
120 |
-
// Display the widget title
|
121 |
-
if ( $title ) {
|
122 |
-
echo $before_title . $title . $after_title;
|
123 |
-
}
|
124 |
-
|
125 |
-
do_action( 'jr_instagram', $instance );
|
126 |
-
|
127 |
-
echo $after_widget;
|
128 |
-
}
|
129 |
-
|
130 |
-
/**
|
131 |
-
* Update the widget settings
|
132 |
-
*
|
133 |
-
* @param array $new_instance New instance values
|
134 |
-
* @param array $old_instance Old instance values
|
135 |
-
*
|
136 |
-
* @return array
|
137 |
-
*/
|
138 |
-
public function update( $new_instance, $instance ) {
|
139 |
-
|
140 |
-
$instance['title'] = strip_tags( $new_instance['title'] );
|
141 |
-
$instance['search_for'] = $new_instance['search_for'];
|
142 |
-
$instance['username'] = $new_instance['username'];
|
143 |
-
$instance['hashtag'] = $new_instance['hashtag'];
|
144 |
-
$instance['blocked_users'] = $new_instance['blocked_users'];
|
145 |
-
$instance['attachment'] = $new_instance['attachment'];
|
146 |
-
$instance['template'] = $new_instance['template'];
|
147 |
-
$instance['images_link'] = $new_instance['images_link'];
|
148 |
-
$instance['custom_url'] = $new_instance['custom_url'];
|
149 |
-
$instance['orderby'] = $new_instance['orderby'];
|
150 |
-
$instance['images_number'] = $new_instance['images_number'];
|
151 |
-
$instance['columns'] = $new_instance['columns'];
|
152 |
-
$instance['refresh_hour'] = $new_instance['refresh_hour'];
|
153 |
-
$instance['image_size'] = $new_instance['image_size'];
|
154 |
-
$instance['image_link_rel'] = $new_instance['image_link_rel'];
|
155 |
-
$instance['image_link_class'] = $new_instance['image_link_class'];
|
156 |
-
$instance['no_pin'] = $new_instance['no_pin'];
|
157 |
-
$instance['controls'] = $new_instance['controls'];
|
158 |
-
$instance['animation'] = $new_instance['animation'];
|
159 |
-
$instance['caption_words'] = $new_instance['caption_words'];
|
160 |
-
$instance['slidespeed'] = $new_instance['slidespeed'];
|
161 |
-
$instance['description'] = $new_instance['description'];
|
162 |
-
$instance['support_author'] = $new_instance['support_author'];
|
163 |
-
|
164 |
-
return $instance;
|
165 |
-
}
|
166 |
-
|
167 |
-
|
168 |
-
/**
|
169 |
-
* Widget Settings Form
|
170 |
-
*
|
171 |
-
* @return mixed
|
172 |
-
*/
|
173 |
-
public function form( $instance ) {
|
174 |
-
|
175 |
-
$defaults = array(
|
176 |
-
'title' => __('Instagram Slider', 'jrinstaslider'),
|
177 |
-
'search_for' => 'username',
|
178 |
-
'username' => '',
|
179 |
-
'hashtag' => '',
|
180 |
-
'blocked_users' => '',
|
181 |
-
'attachment' => 0,
|
182 |
-
'template' => 'slider',
|
183 |
-
'images_link' => 'image_url',
|
184 |
-
'custom_url' => '',
|
185 |
-
'orderby' => 'rand',
|
186 |
-
'images_number' => 5,
|
187 |
-
'columns' => 4,
|
188 |
-
'refresh_hour' => 5,
|
189 |
-
'image_size' => 'standard',
|
190 |
-
'image_link_rel' => '',
|
191 |
-
'image_link_class' => '',
|
192 |
-
'no_pin' => 0,
|
193 |
-
'controls' => 'prev_next',
|
194 |
-
'animation' => 'slide',
|
195 |
-
'caption_words' => 100,
|
196 |
-
'slidespeed' => 7000,
|
197 |
-
'description' => array( 'username', 'time','caption' ),
|
198 |
-
'support_author' => 0
|
199 |
-
);
|
200 |
-
|
201 |
-
$instance = wp_parse_args( (array) $instance, $defaults );
|
202 |
-
|
203 |
-
?>
|
204 |
-
<div class="jr-container">
|
205 |
-
<p>
|
206 |
-
<label for="<?php echo $this->get_field_id( 'title' ); ?>"><strong><?php _e('Title:', 'jrinstaslider'); ?></strong></label>
|
207 |
-
<input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" />
|
208 |
-
</p>
|
209 |
-
<p>
|
210 |
-
<strong><?php _e( 'Search Instagram for:', 'jrinstaslider' ); ?></strong>
|
211 |
-
<span class="jr-search-for-container"><label class="jr-seach-for"><input type="radio" id="<?php echo $this->get_field_id( 'search_for' ); ?>" name="<?php echo $this->get_field_name( 'search_for' ); ?>" value="username" <?php checked( 'username', $instance['search_for'] ); ?> /> <?php _e( 'Username:', 'jrinstaslider' ); ?></label> <input id="<?php echo $this->get_field_id( 'username' ); ?>" class="inline-field-text" name="<?php echo $this->get_field_name( 'username' ); ?>" value="<?php echo $instance['username']; ?>" /></span>
|
212 |
-
<span class="jr-search-for-container"><label class="jr-seach-for"><input type="radio" id="<?php echo $this->get_field_id( 'search_for' ); ?>" name="<?php echo $this->get_field_name( 'search_for' ); ?>" value="hashtag" <?php checked( 'hashtag', $instance['search_for'] ); ?> /> <?php _e( 'Hashtag:', 'jrinstaslider' ); ?></label> <input id="<?php echo $this->get_field_id( 'hashtag' ); ?>" class="inline-field-text" name="<?php echo $this->get_field_name( 'hashtag' ); ?>" value="<?php echo $instance['hashtag']; ?>" /> <small><?php _e('without # sign', 'jrinstaslider'); ?></small></span>
|
213 |
-
</p>
|
214 |
-
<p class="<?php if ( 'hashtag' != $instance['search_for'] ) echo 'hidden'; ?>">
|
215 |
-
<label for="<?php echo $this->get_field_id( 'blocked_users' ); ?>"><?php _e( 'Block Users', 'jrinstaslider' ); ?>:</label>
|
216 |
-
<input class="widefat" id="<?php echo $this->get_field_id( 'blocked_users' ); ?>" name="<?php echo $this->get_field_name( 'blocked_users' ); ?>" value="<?php echo $instance['blocked_users']; ?>" />
|
217 |
-
<span class="jr-description"><?php _e( 'Enter usernames separated by commas whose images you don\'t want to show', 'jrinstaslider' ); ?></span>
|
218 |
-
</p>
|
219 |
-
<p class="<?php if ( 'username' != $instance['search_for'] ) echo 'hidden'; ?>"><strong><?php _e( 'Save in Media Library: ', 'jrinstaslider' ); ?></strong>
|
220 |
-
<label class="switch" for="<?php echo $this->get_field_id( 'attachment' ); ?>">
|
221 |
-
<input class="widefat" id="<?php echo $this->get_field_id( 'attachment' ); ?>" name="<?php echo $this->get_field_name( 'attachment' ); ?>" type="checkbox" value="1" <?php checked( '1', $instance['attachment'] ); ?> /><span class="slider round"></span></label>
|
222 |
-
<br><span class="jr-description"><?php _e( ' Turn on to save Instagram Images into WordPress media library.', 'jrinstaslider') ?></span>
|
223 |
-
<?php
|
224 |
-
if ( isset ( $instance['username'] ) && !empty($instance['username'] ) ) {
|
225 |
-
echo '<br><button class="button action jr-delete-instagram-dupes" type="button" data-username="'.$instance['username'].'"><strong>Remove</strong> duplicate images for <strong>'.$instance['username'].'</strong></button><span class="jr-spinner"></span>';
|
226 |
-
echo '<br><br><strong><span class="deleted-dupes-info"></span></strong>';
|
227 |
-
wp_nonce_field( 'jr_delete_instagram_dupes', 'delete_insta_dupes_nonce' );
|
228 |
-
}
|
229 |
-
?>
|
230 |
-
</p>
|
231 |
-
<p>
|
232 |
-
<label for="<?php echo $this->get_field_id( 'images_number' ); ?>"><strong><?php _e( 'Number of images to show:', 'jrinstaslider' ); ?></strong>
|
233 |
-
<input class="small-text" id="<?php echo $this->get_field_id( 'images_number' ); ?>" name="<?php echo $this->get_field_name( 'images_number' ); ?>" value="<?php echo $instance['images_number']; ?>" />
|
234 |
-
</label>
|
235 |
-
</p>
|
236 |
-
<p>
|
237 |
-
<label for="<?php echo $this->get_field_id( 'refresh_hour' ); ?>"><strong><?php _e( 'Check for new images every:', 'jrinstaslider' ); ?></strong>
|
238 |
-
<input class="small-text" id="<?php echo $this->get_field_id( 'refresh_hour' ); ?>" name="<?php echo $this->get_field_name( 'refresh_hour' ); ?>" value="<?php echo $instance['refresh_hour']; ?>" />
|
239 |
-
<span><?php _e('hours', 'jrinstaslider'); ?></span>
|
240 |
-
</label>
|
241 |
-
</p>
|
242 |
-
<p>
|
243 |
-
<label for="<?php echo $this->get_field_id( 'template' ); ?>"><strong><?php _e( 'Template', 'jrinstaslider' ); ?></strong>
|
244 |
-
<select class="widefat" name="<?php echo $this->get_field_name( 'template' ); ?>" id="<?php echo $this->get_field_id( 'template' ); ?>">
|
245 |
-
<option value="slider" <?php echo ($instance['template'] == 'slider') ? ' selected="selected"' : ''; ?>><?php _e( 'Slider - Normal', 'jrinstaslider' ); ?></option>
|
246 |
-
<option value="slider-overlay" <?php echo ($instance['template'] == 'slider-overlay') ? ' selected="selected"' : ''; ?>><?php _e( 'Slider - Overlay Text', 'jrinstaslider' ); ?></option>
|
247 |
-
<option value="thumbs" <?php echo ($instance['template'] == 'thumbs') ? ' selected="selected"' : ''; ?>><?php _e( 'Thumbnails', 'jrinstaslider' ); ?></option>
|
248 |
-
<option value="thumbs-no-border" <?php echo ($instance['template'] == 'thumbs-no-border') ? ' selected="selected"' : ''; ?>><?php _e( 'Thumbnails - Without Border', 'jrinstaslider' ); ?></option>
|
249 |
-
</select>
|
250 |
-
</label>
|
251 |
-
</p>
|
252 |
-
<p class="<?php if ( 'thumbs' != $instance['template'] && 'thumbs-no-border' != $instance['template'] ) echo 'hidden'; ?>">
|
253 |
-
<label for="<?php echo $this->get_field_id( 'columns' ); ?>"><strong><?php _e( 'Number of Columns:', 'jrinstaslider' ); ?></strong>
|
254 |
-
<input class="small-text" id="<?php echo $this->get_field_id( 'columns' ); ?>" name="<?php echo $this->get_field_name( 'columns' ); ?>" value="<?php echo $instance['columns']; ?>" />
|
255 |
-
<span class='jr-description'><?php _e('max is 10 ( only for thumbnails template )', 'jrinstaslider'); ?></span>
|
256 |
-
</label>
|
257 |
-
</p>
|
258 |
-
<p>
|
259 |
-
<label for="<?php echo $this->get_field_id( 'image_size' ); ?>"><strong><?php _e( 'Image format', 'jrinstaslider' ); ?></strong></label>
|
260 |
-
<select class="widefat" id="<?php echo $this->get_field_id( 'image_size' ); ?>" name="<?php echo $this->get_field_name( 'image_size' ); ?>">
|
261 |
-
<option value="thumbnail" <?php echo ($instance['image_size'] == 'thumbnail') ? ' selected="selected"' : ''; ?>><?php _e( 'Thumbnail - 150x150', 'jrinstaslider' ); ?></option>
|
262 |
-
<option value="low" <?php echo ($instance['image_size'] == 'low') ? ' selected="selected"' : ''; ?>><?php _e( 'Low - 320x320', 'jrinstaslider' ); ?></option>
|
263 |
-
<option value="standard" <?php echo ($instance['image_size'] == 'standard') ? ' selected="selected"' : ''; ?>><?php _e( 'Standard - 640x640', 'jrinstaslider' ); ?></option>
|
264 |
-
<option value="full" <?php echo ($instance['image_size'] == 'full') ? ' selected="selected"' : ''; ?>><?php _e( 'Full Size', 'jrinstaslider' ); ?></option>
|
265 |
-
</select>
|
266 |
-
<span class="jr-description"><?php _e( '<strong>Square - Cropped</strong> - option will show square cropped images in 640x640 pixels. <br/><strong>Original - No Crop</strong> - will display the original user uploaded image size.', 'jrinstaslider' ); ?></span>
|
267 |
-
</p>
|
268 |
-
<p>
|
269 |
-
<label for="<?php echo $this->get_field_id( 'orderby' ); ?>"><strong><?php _e( 'Order by', 'jrinstaslider' ); ?></strong>
|
270 |
-
<select class="widefat" name="<?php echo $this->get_field_name( 'orderby' ); ?>" id="<?php echo $this->get_field_id( 'orderby' ); ?>">
|
271 |
-
<option value="date-ASC" <?php selected( $instance['orderby'], 'date-ASC', true); ?>><?php _e( 'Date - Ascending', 'jrinstaslider' ); ?></option>
|
272 |
-
<option value="date-DESC" <?php selected( $instance['orderby'], 'date-DESC', true); ?>><?php _e( 'Date - Descending', 'jrinstaslider' ); ?></option>
|
273 |
-
<option value="popular-ASC" <?php selected( $instance['orderby'], 'popular-ASC', true); ?>><?php _e( 'Popularity - Ascending', 'jrinstaslider' ); ?></option>
|
274 |
-
<option value="popular-DESC" <?php selected( $instance['orderby'], 'popular-DESC', true); ?>><?php _e( 'Popularity - Descending', 'jrinstaslider' ); ?></option>
|
275 |
-
<option value="rand" <?php selected( $instance['orderby'], 'rand', true); ?>><?php _e( 'Random', 'jrinstaslider' ); ?></option>
|
276 |
-
</select>
|
277 |
-
</label>
|
278 |
-
</p>
|
279 |
-
<p>
|
280 |
-
<label for="<?php echo $this->get_field_id( 'images_link' ); ?>"><strong><?php _e( 'Link to', 'jrinstaslider' ); ?></strong>
|
281 |
-
<select class="widefat" name="<?php echo $this->get_field_name( 'images_link' ); ?>" id="<?php echo $this->get_field_id( 'images_link' ); ?>">
|
282 |
-
<option value="image_link" <?php selected( $instance['images_link'], 'image_link', true); ?>><?php _e( 'Instagram Image', 'jrinstaslider' ); ?></option>
|
283 |
-
<option class="<?php if ( 'hashtag' == $instance['search_for'] ) echo 'hidden'; ?>" value="user_url" <?php selected( $instance['images_link'], 'user_url', true); ?>><?php _e( 'Instagram Profile', 'jrinstaslider' ); ?></option>
|
284 |
-
<option value="image_url" <?php selected( $instance['images_link'], 'image_url', true); ?>><?php _e( 'Image URL', 'jrinstaslider' ); ?></option>
|
285 |
-
<option class="<?php if ( ( !$instance['attachment'] ) || 'hashtag' == $instance['search_for'] ) echo 'hidden'; ?>" value="attachment" <?php selected( $instance['images_link'], 'attachment', true); ?>><?php _e( 'Attachment Page', 'jrinstaslider' ); ?></option>
|
286 |
-
<option value="custom_url" <?php selected( $instance['images_link'], 'custom_url', true ); ?>><?php _e( 'Custom Link', 'jrinstaslider' ); ?></option>
|
287 |
-
<option value="none" <?php selected( $instance['images_link'], 'none', true); ?>><?php _e( 'None', 'jrinstaslider' ); ?></option>
|
288 |
-
</select>
|
289 |
-
</label>
|
290 |
-
</p>
|
291 |
-
<p class="<?php if ( 'custom_url' != $instance['images_link'] ) echo 'hidden'; ?>">
|
292 |
-
<label for="<?php echo $this->get_field_id( 'custom_url' ); ?>"><?php _e( 'Custom link:', 'jrinstaslider'); ?></label>
|
293 |
-
<input class="widefat" id="<?php echo $this->get_field_id( 'custom_url' ); ?>" name="<?php echo $this->get_field_name( 'custom_url' ); ?>" value="<?php echo $instance['custom_url']; ?>" />
|
294 |
-
<span><?php _e('* use this field only if the above option is set to <strong>Custom Link</strong>', 'jrinstaslider'); ?></span>
|
295 |
-
</p>
|
296 |
-
<p>
|
297 |
-
<strong>Advanced Options</strong>
|
298 |
-
<?php
|
299 |
-
$advanced_class = '';
|
300 |
-
$advanced_text = '[ - Close ]';
|
301 |
-
if ( '' == trim( $instance['image_link_rel'] ) && '' == trim( $instance['image_link_class'] ) && '' == trim( $instance['image_size'] ) ) {
|
302 |
-
$advanced_class = 'hidden';
|
303 |
-
$advanced_text = '[ + Open ]';
|
304 |
-
}
|
305 |
-
?>
|
306 |
-
<a href="#" class="jr-advanced"><?php echo $advanced_text; ?></a>
|
307 |
-
</p>
|
308 |
-
<div class="jr-advanced-input <?php echo $advanced_class; ?>">
|
309 |
-
<div class="jr-image-options">
|
310 |
-
<h4 class="jr-advanced-title"><?php _e( 'Advanced Image Options', 'jrinstaslider'); ?></h4>
|
311 |
-
<p>
|
312 |
-
<label for="<?php echo $this->get_field_id( 'image_link_rel' ); ?>"><?php _e( 'Image Link rel attribute', 'jrinstaslider' ); ?>:</label>
|
313 |
-
<input class="widefat" id="<?php echo $this->get_field_id( 'image_link_rel' ); ?>" name="<?php echo $this->get_field_name( 'image_link_rel' ); ?>" value="<?php echo $instance['image_link_rel']; ?>" />
|
314 |
-
<span class="jr-description"><?php _e( 'Specifies the relationship between the current page and the linked website', 'jrinstaslider' ); ?></span>
|
315 |
-
</p>
|
316 |
-
<p>
|
317 |
-
<label for="<?php echo $this->get_field_id( 'image_link_class' ); ?>"><?php _e( 'Image Link class', 'jrinstaslider' ); ?>:</label>
|
318 |
-
<input class="widefat" id="<?php echo $this->get_field_id( 'image_link_class' ); ?>" name="<?php echo $this->get_field_name( 'image_link_class' ); ?>" value="<?php echo $instance['image_link_class']; ?>" />
|
319 |
-
<span class="jr-description"><?php _e( 'Usefull if you are using jQuery lightbox plugins to open links', 'jrinstaslider' ); ?></span>
|
320 |
-
</p>
|
321 |
-
<p><strong><?php _e( 'Disable Pinning:', 'jrinstaslider' ); ?></strong>
|
322 |
-
<label class="switch" for="<?php echo $this->get_field_id( 'no_pin' ); ?>">
|
323 |
-
<input class="widefat" id="<?php echo $this->get_field_id( 'no_pin' ); ?>" name="<?php echo $this->get_field_name( 'no_pin' ); ?>" type="checkbox" value="1" <?php checked( '1', $instance['no_pin'] ); ?> /><span class="slider round"></span></label>
|
324 |
-
<br><span class="jr-description"><?php _e( 'Disable pinning for Pinterest on all images from this widget!', 'jrinstaslider') ?></span>
|
325 |
-
</p>
|
326 |
-
</div>
|
327 |
-
<div class="jr-slider-options <?php if ( 'thumbs' == $instance['template'] || 'thumbs-no-border' == $instance['template'] ) echo 'hidden'; ?>">
|
328 |
-
<h4 class="jr-advanced-title"><?php _e( 'Advanced Slider Options', 'jrinstaslider'); ?></h4>
|
329 |
-
<p>
|
330 |
-
<?php _e( 'Slider Navigation Controls:', 'jrinstaslider' ); ?><br>
|
331 |
-
<label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'controls' ); ?>" name="<?php echo $this->get_field_name( 'controls' ); ?>" value="prev_next" <?php checked( 'prev_next', $instance['controls'] ); ?> /> <?php _e( 'Prev & Next', 'jrinstaslider' ); ?></label>
|
332 |
-
<label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'controls' ); ?>" name="<?php echo $this->get_field_name( 'controls' ); ?>" value="numberless" <?php checked( 'numberless', $instance['controls'] ); ?> /> <?php _e( 'Dotted', 'jrinstaslider' ); ?></label>
|
333 |
-
<label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'controls' ); ?>" name="<?php echo $this->get_field_name( 'controls' ); ?>" value="none" <?php checked( 'none', $instance['controls'] ); ?> /> <?php _e( 'No Navigation', 'jrinstaslider' ); ?></label>
|
334 |
-
</p>
|
335 |
-
<p>
|
336 |
-
<?php _e( 'Slider Animation:', 'jrinstaslider' ); ?><br>
|
337 |
-
<label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'animation' ); ?>" name="<?php echo $this->get_field_name( 'animation' ); ?>" value="slide" <?php checked( 'slide', $instance['animation'] ); ?> /> <?php _e( 'Slide', 'jrinstaslider' ); ?></label>
|
338 |
-
<label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'animation' ); ?>" name="<?php echo $this->get_field_name( 'animation' ); ?>" value="fade" <?php checked( 'fade', $instance['animation'] ); ?> /> <?php _e( 'Fade', 'jrinstaslider' ); ?></label>
|
339 |
-
</p>
|
340 |
-
<p>
|
341 |
-
<label for="<?php echo $this->get_field_id( 'caption_words' ); ?>"><?php _e( 'Number of words in caption:', 'jrinstaslider' ); ?>
|
342 |
-
<input class="small-text" id="<?php echo $this->get_field_id( 'caption_words' ); ?>" name="<?php echo $this->get_field_name( 'caption_words' ); ?>" value="<?php echo $instance['caption_words']; ?>" />
|
343 |
-
</label>
|
344 |
-
</p>
|
345 |
-
<p>
|
346 |
-
<label for="<?php echo $this->get_field_id( 'slidespeed' ); ?>"><?php _e( 'Slide Speed:', 'jrinstaslider' ); ?>
|
347 |
-
<input class="small-text" id="<?php echo $this->get_field_id( 'slidespeed' ); ?>" name="<?php echo $this->get_field_name( 'slidespeed' ); ?>" value="<?php echo $instance['slidespeed']; ?>" />
|
348 |
-
<span><?php _e('milliseconds', 'jrinstaslider'); ?></span>
|
349 |
-
<span class='jr-description'><?php _e('1000 milliseconds = 1 second', 'jrinstaslider'); ?></span>
|
350 |
-
</label>
|
351 |
-
</p>
|
352 |
-
<p>
|
353 |
-
<label for="<?php echo $this->get_field_id('description'); ?>"><?php _e( 'Slider Text Description:', 'jrinstaslider' ); ?></label>
|
354 |
-
<select size=3 class='widefat' id="<?php echo $this->get_field_id('description'); ?>" name="<?php echo $this->get_field_name('description'); ?>[]" multiple="multiple">
|
355 |
-
<option class="<?php if ( 'hashtag' == $instance['search_for'] ) echo 'hidden'; ?>" value='username' <?php $this->selected( $instance['description'], 'username' ); ?>><?php _e( 'Username', 'jrinstaslider'); ?></option>
|
356 |
-
<option value='time'<?php $this->selected( $instance['description'], 'time' ); ?>><?php _e( 'Time', 'jrinstaslider'); ?></option>
|
357 |
-
<option value='caption'<?php $this->selected( $instance['description'], 'caption' ); ?>><?php _e( 'Caption', 'jrinstaslider'); ?></option>
|
358 |
-
</select>
|
359 |
-
<span class="jr-description"><?php _e( 'Hold ctrl and click the fields you want to show/hide on your slider. Leave all unselected to hide them all. Default all selected.', 'jrinstaslider') ?></span>
|
360 |
-
</p>
|
361 |
-
</div>
|
362 |
-
</div>
|
363 |
-
<?php $widget_id = preg_replace( '/[^0-9]/', '', $this->id ); if ( $widget_id != '' ) : ?>
|
364 |
-
<p>
|
365 |
-
<label for="jr_insta_shortcode"><?php _e('Shortcode of this Widget:', 'jrinstaslider'); ?></label>
|
366 |
-
<input id="jr_insta_shortcode" onclick="this.setSelectionRange(0, this.value.length)" type="text" class="widefat" value="[jr_instagram id="<?php echo $widget_id ?>"]" readonly="readonly" style="border:none; color:black; font-family:monospace;">
|
367 |
-
<span class="jr-description"><?php _e( 'Use this shortcode in any page or post to display images with this widget configuration!', 'jrinstaslider') ?></span>
|
368 |
-
</p>
|
369 |
-
<?php endif; ?>
|
370 |
-
<div class="jr-advanced-input">
|
371 |
-
<div class="jr-image-options">
|
372 |
-
<h4 class="jr-advanced-title"><?php _e( 'Help us, help you!', 'jrinstaslider'); ?></h4>
|
373 |
-
<p><strong><?php _e( 'Show "Powered by Link"', 'jrinstaslider' ); ?></strong>
|
374 |
-
<label class="switch" for="<?php echo $this->get_field_id( 'support_author' ); ?>">
|
375 |
-
<input class="widefat" id="<?php echo $this->get_field_id( 'support_author' ); ?>" name="<?php echo $this->get_field_name( 'support_author' ); ?>" type="checkbox" value="1" <?php checked( '1', $instance['support_author'] ); ?> /><span class="slider round"></span></label>
|
376 |
-
<br><span class="jr-description"><?php _e( 'When enabled, the author is notified and a backlink website is visible at the bottom of the plugin. <br> <strong>If you enable this option you will have privileged support from our team!</strong>', 'jrinstaslider') ?></span>
|
377 |
-
</p>
|
378 |
-
<div class="donate-buttons">
|
379 |
-
<a target="_blank" title="Donate with Paypal!" href="http://bit.ly/2EseW2p"><p class="donate"><span></span>Donate with Paypal!</p></a>
|
380 |
-
</div>
|
381 |
-
</div></div>
|
382 |
-
</div><br>
|
383 |
-
<?php
|
384 |
-
}
|
385 |
-
|
386 |
-
/**
|
387 |
-
* Selected array function echoes selected if in array
|
388 |
-
*
|
389 |
-
* @param array $haystack The array to search in
|
390 |
-
* @param string $current The string value to search in array;
|
391 |
-
*
|
392 |
-
* @return string
|
393 |
-
*/
|
394 |
-
public function selected( $haystack, $current ) {
|
395 |
-
|
396 |
-
if( is_array( $haystack ) && in_array( $current, $haystack ) ) {
|
397 |
-
selected( 1, 1, true );
|
398 |
-
}
|
399 |
-
}
|
400 |
-
|
401 |
-
|
402 |
-
/**
|
403 |
-
* Add shorcode function
|
404 |
-
* @param array $atts shortcode attributes
|
405 |
-
* @return mixed
|
406 |
-
*/
|
407 |
-
public function shortcode( $atts ) {
|
408 |
-
|
409 |
-
$atts = shortcode_atts( array( 'id' => '' ), $atts, 'jr_instagram' );
|
410 |
-
$args = get_option( 'widget_jr_insta_slider' );
|
411 |
-
if ( isset($args[$atts['id']] ) ) {
|
412 |
-
$args[$atts['id']]['widget_id'] = $atts['id'];
|
413 |
-
return $this->display_images( $args[$atts['id']] );
|
414 |
-
}
|
415 |
-
}
|
416 |
-
|
417 |
-
/**
|
418 |
-
* Echoes the Display Instagram Images method
|
419 |
-
*
|
420 |
-
* @param array $args
|
421 |
-
*
|
422 |
-
* @return void
|
423 |
-
*/
|
424 |
-
public function instagram_images( $args ) {
|
425 |
-
echo $this->display_images( $args );
|
426 |
-
}
|
427 |
-
|
428 |
-
/**
|
429 |
-
* Cron Trigger Function
|
430 |
-
* @param [type] $username [description]
|
431 |
-
* @param [type] $refresh_hour [description]
|
432 |
-
* @param [type] $images [description]
|
433 |
-
* @return [type] [description]
|
434 |
-
*/
|
435 |
-
public function jr_cron_trigger( $username, $refresh_hour, $images ) {
|
436 |
-
$search_for = array();
|
437 |
-
$search_for['username'] = $username;
|
438 |
-
$this->instagram_data( $search_for, $refresh_hour, $images, true );
|
439 |
-
}
|
440 |
-
|
441 |
-
/**
|
442 |
-
* Runs the query for images and returns the html
|
443 |
-
*
|
444 |
-
* @param array $args
|
445 |
-
*
|
446 |
-
* @return string
|
447 |
-
*/
|
448 |
-
private function display_images( $args ) {
|
449 |
-
|
450 |
-
$username = isset( $args['username'] ) && !empty( $args['username'] ) ? $args['username'] : false;
|
451 |
-
$hashtag = isset( $args['hashtag'] ) && !empty( $args['hashtag'] ) ? str_replace( '#', '', $args['hashtag'] ) : false;
|
452 |
-
$blocked_users = isset( $args['blocked_users'] ) && !empty( $args['blocked_users'] ) ? $args['blocked_users'] : false;
|
453 |
-
$attachment = isset( $args['attachment'] ) ? true : false;
|
454 |
-
$template = isset( $args['template'] ) ? $args['template'] : 'slider';
|
455 |
-
$orderby = isset( $args['orderby'] ) ? $args['orderby'] : 'rand';
|
456 |
-
$images_link = isset( $args['images_link'] ) ? $args['images_link'] : 'image_url';
|
457 |
-
$custom_url = isset( $args['custom_url'] ) ? $args['custom_url'] : '';
|
458 |
-
$images_number = isset( $args['images_number'] ) ? absint( $args['images_number'] ) : 5;
|
459 |
-
$columns = isset( $args['columns'] ) ? absint( $args['columns'] ) : 4;
|
460 |
-
$refresh_hour = isset( $args['refresh_hour'] ) ? absint( $args['refresh_hour'] ) : 5;
|
461 |
-
$image_size = isset( $args['image_size'] ) ? $args['image_size'] : 'standard';
|
462 |
-
$image_link_rel = isset( $args['image_link_rel'] ) ? $args['image_link_rel'] : '';
|
463 |
-
$no_pin = isset( $args['no_pin'] ) ? $args['no_pin'] : 0;
|
464 |
-
$image_link_class = isset( $args['image_link_class'] ) ? $args['image_link_class'] : '';
|
465 |
-
$controls = isset( $args['controls'] ) ? $args['controls'] : 'prev_next';
|
466 |
-
$animation = isset( $args['animation'] ) ? $args['animation'] : 'slide';
|
467 |
-
$caption_words = isset( $args['caption_words'] ) ? $args['caption_words'] : 100;
|
468 |
-
$slidespeed = isset( $args['slidespeed'] ) ? $args['slidespeed'] : 7000;
|
469 |
-
$description = isset( $args['description'] ) ? $args['description'] : array();
|
470 |
-
$widget_id = isset( $args['widget_id'] ) ? $args['widget_id'] : preg_replace( '/[^0-9]/', '', $this->id );
|
471 |
-
$powered_by_link = isset( $args['support_author'] ) ? true : false;
|
472 |
-
|
473 |
-
if ( !empty( $description ) && !is_array( $description ) ) {
|
474 |
-
$description = explode( ',', $description );
|
475 |
-
}
|
476 |
-
|
477 |
-
if ( isset ( $args['search_for'] ) && $args['search_for'] == 'hashtag' ) {
|
478 |
-
$search = 'hashtag';
|
479 |
-
$search_for['hashtag'] = $hashtag;
|
480 |
-
$search_for['blocked_users'] = $blocked_users;
|
481 |
-
} else {
|
482 |
-
$search = 'user';
|
483 |
-
$search_for['username'] = $username;
|
484 |
-
}
|
485 |
-
|
486 |
-
if ( $refresh_hour == 0 ) {
|
487 |
-
$refresh_hour = 5;
|
488 |
-
}
|
489 |
-
|
490 |
-
$template_args = array(
|
491 |
-
'search_for' => $search,
|
492 |
-
'attachment' => $attachment,
|
493 |
-
'image_size' => $image_size,
|
494 |
-
'link_rel' => $image_link_rel,
|
495 |
-
'link_class' => $image_link_class,
|
496 |
-
'no_pin' => $no_pin,
|
497 |
-
'caption_words' => $caption_words
|
498 |
-
);
|
499 |
-
|
500 |
-
$images_div_class = 'jr-insta-thumb';
|
501 |
-
$ul_class = ( $template == 'thumbs-no-border' ) ? 'thumbnails no-border jr_col_' . $columns : 'thumbnails jr_col_' . $columns;
|
502 |
-
$slider_script = '';
|
503 |
-
|
504 |
-
if ( $template != 'thumbs' && $template != 'thumbs-no-border' ) {
|
505 |
-
|
506 |
-
$template_args['description'] = $description;
|
507 |
-
$direction_nav = ( $controls == 'prev_next' ) ? 'true' : 'false';
|
508 |
-
$control_nav = ( $controls == 'numberless' ) ? 'true': 'false';
|
509 |
-
$ul_class = 'slides';
|
510 |
-
|
511 |
-
if ( $template == 'slider' ) {
|
512 |
-
$images_div_class = 'pllexislider pllexislider-normal instaslider-nr-'. $widget_id;
|
513 |
-
$slider_script =
|
514 |
-
"<script type='text/javascript'>" . "\n" .
|
515 |
-
" jQuery(document).ready(function($) {" . "\n" .
|
516 |
-
" $('.instaslider-nr-{$widget_id}').pllexislider({" . "\n" .
|
517 |
-
" animation: '{$animation}'," . "\n" .
|
518 |
-
" slideshowSpeed: {$slidespeed}," . "\n" .
|
519 |
-
" directionNav: {$direction_nav}," . "\n" .
|
520 |
-
" controlNav: {$control_nav}," . "\n" .
|
521 |
-
" prevText: ''," . "\n" .
|
522 |
-
" nextText: ''," . "\n" .
|
523 |
-
" });" . "\n" .
|
524 |
-
" });" . "\n" .
|
525 |
-
"</script>" . "\n";
|
526 |
-
} else {
|
527 |
-
$images_div_class = 'pllexislider pllexislider-overlay instaslider-nr-'. $widget_id;
|
528 |
-
$slider_script =
|
529 |
-
"<script type='text/javascript'>" . "\n" .
|
530 |
-
" jQuery(document).ready(function($) {" . "\n" .
|
531 |
-
" $('.instaslider-nr-{$widget_id}').pllexislider({" . "\n" .
|
532 |
-
" animation: '{$animation}'," . "\n" .
|
533 |
-
" slideshowSpeed: {$slidespeed}," . "\n" .
|
534 |
-
" directionNav: {$direction_nav}," . "\n" .
|
535 |
-
" controlNav: {$control_nav}," . "\n" .
|
536 |
-
" prevText: ''," . "\n" .
|
537 |
-
" nextText: ''," . "\n" .
|
538 |
-
" start: function(slider){" . "\n" .
|
539 |
-
" slider.hover(" . "\n" .
|
540 |
-
" function () {" . "\n" .
|
541 |
-
" slider.find('.jr-insta-datacontainer, .pllex-control-nav, .pllex-direction-nav').stop(true,true).fadeIn();" . "\n" .
|
542 |
-
" }," . "\n" .
|
543 |
-
" function () {" . "\n" .
|
544 |
-
" slider.find('.jr-insta-datacontainer, .pllex-control-nav, .pllex-direction-nav').stop(true,true).fadeOut();" . "\n" .
|
545 |
-
" }" . "\n" .
|
546 |
-
" );" . "\n" .
|
547 |
-
" }" . "\n" .
|
548 |
-
" });" . "\n" .
|
549 |
-
" });" . "\n" .
|
550 |
-
"</script>" . "\n";
|
551 |
-
}
|
552 |
-
}
|
553 |
-
|
554 |
-
$images_div = "<div class='{$images_div_class}'>\n";
|
555 |
-
$images_ul = "<ul class='no-bullet {$ul_class}'>\n";
|
556 |
-
|
557 |
-
$output = __( 'No images found! <br> Try some other hashtag or username', 'jrinstaslider' );
|
558 |
-
|
559 |
-
if ( ( $search == 'user' && $attachment ) ) {
|
560 |
-
|
561 |
-
if ( !wp_next_scheduled( 'jr_insta_cron', array( $search_for['username'], $refresh_hour, $images_number ) ) ) {
|
562 |
-
wp_schedule_single_event( time(), 'jr_insta_cron', array( $search_for['username'], $refresh_hour, $images_number ) );
|
563 |
-
}
|
564 |
-
|
565 |
-
$opt_name = 'jr_insta_' . md5( $search . '_' . $search_for['username'] );
|
566 |
-
$attachment_ids = (array) get_option( $opt_name );
|
567 |
-
|
568 |
-
$query_args = array(
|
569 |
-
'post_type' => 'attachment',
|
570 |
-
'post_status' => 'inherit',
|
571 |
-
'post_mime_type' => 'image',
|
572 |
-
'posts_per_page' => $images_number,
|
573 |
-
'no_found_rows' => true
|
574 |
-
);
|
575 |
-
|
576 |
-
if ( $orderby != 'rand' ) {
|
577 |
-
|
578 |
-
$orderby = explode( '-', $orderby );
|
579 |
-
$meta_key = $orderby[0] == 'date' ? 'jr_insta_timestamp' : 'jr_insta_popularity';
|
580 |
-
|
581 |
-
$query_args['meta_key'] = $meta_key;
|
582 |
-
$query_args['orderby'] = 'meta_value_num';
|
583 |
-
$query_args['order'] = $orderby[1];
|
584 |
-
}
|
585 |
-
|
586 |
-
if ( isset( $attachment_ids['saved_images'] ) && !empty( $attachment_ids['saved_images'] ) ) {
|
587 |
-
|
588 |
-
$query_args['post__in'] = $attachment_ids['saved_images'];
|
589 |
-
|
590 |
-
} else {
|
591 |
-
|
592 |
-
$query_args['meta_query'] = array(
|
593 |
-
array(
|
594 |
-
'key' => 'jr_insta_username',
|
595 |
-
'value' => $username,
|
596 |
-
'compare' => '='
|
597 |
-
)
|
598 |
-
);
|
599 |
-
}
|
600 |
-
|
601 |
-
$instagram_images = new WP_Query( $query_args );
|
602 |
-
|
603 |
-
if ( $instagram_images->have_posts() ) {
|
604 |
-
|
605 |
-
$output = $slider_script . $images_div . $images_ul;
|
606 |
-
|
607 |
-
while ( $instagram_images->have_posts() ) : $instagram_images->the_post();
|
608 |
-
|
609 |
-
$id = get_the_id();
|
610 |
-
|
611 |
-
if ( 'image_link' == $images_link ) {
|
612 |
-
$template_args['link_to'] = get_post_meta( $id, 'jr_insta_link', true );
|
613 |
-
} elseif ( 'user_url' == $images_link ) {
|
614 |
-
$template_args['link_to'] = 'https://www.instagram.com/' . $username . '/';
|
615 |
-
} elseif ( 'image_url' == $images_link ) {
|
616 |
-
$template_args['link_to'] = wp_get_attachment_url( $id );
|
617 |
-
} elseif ( 'attachment' == $images_link ) {
|
618 |
-
$template_args['link_to'] = get_permalink( $id );
|
619 |
-
} elseif ( 'custom_url' == $images_link ) {
|
620 |
-
$template_args['link_to'] = $custom_url;
|
621 |
-
}
|
622 |
-
|
623 |
-
$image_thumb_url = get_post_meta( $id, 'jr_insta_sizes', true );
|
624 |
-
$template_args['image'] = $image_thumb_url[$image_size];
|
625 |
-
|
626 |
-
$output .= $this->get_template( $template, $template_args );
|
627 |
-
|
628 |
-
endwhile;
|
629 |
-
|
630 |
-
$output .= "</ul>\n</div>" . $this->powered_by_link( $powered_by_link );
|
631 |
-
|
632 |
-
} else {
|
633 |
-
|
634 |
-
$images_data = $this->instagram_data( $search_for, $refresh_hour, $images_number, false );
|
635 |
-
|
636 |
-
if ( is_array( $images_data ) && !empty( $images_data ) ) {
|
637 |
-
|
638 |
-
if ( $orderby != 'rand' ) {
|
639 |
-
|
640 |
-
$func = $orderby[0] == 'date' ? 'sort_timestamp_' . $orderby[1] : 'sort_popularity_' . $orderby[1];
|
641 |
-
|
642 |
-
usort( $images_data, array( $this, $func ) );
|
643 |
-
|
644 |
-
} else {
|
645 |
-
|
646 |
-
shuffle( $images_data );
|
647 |
-
}
|
648 |
-
|
649 |
-
$output = $slider_script . $images_div . $images_ul;
|
650 |
-
|
651 |
-
foreach ( $images_data as $image_data ) {
|
652 |
-
|
653 |
-
if ( 'image_link' == $images_link ) {
|
654 |
-
$template_args['link_to'] = $image_data['link'];
|
655 |
-
} elseif ( 'user_url' == $images_link ) {
|
656 |
-
$template_args['link_to'] = 'https://www.instagram.com/' . $username . '/';
|
657 |
-
} elseif ( 'image_url' == $images_link ) {
|
658 |
-
$template_args['link_to'] = $image_data['url'];
|
659 |
-
} elseif ( 'custom_url' == $images_link ) {
|
660 |
-
$template_args['link_to'] = $custom_url;
|
661 |
-
}
|
662 |
-
|
663 |
-
$template_args['image'] = $image_data['sizes'][$image_size];
|
664 |
-
$template_args['caption'] = $image_data['caption'];
|
665 |
-
$template_args['timestamp'] = $image_data['timestamp'];
|
666 |
-
$template_args['username'] = isset( $image_data['username'] ) ? $image_data['username'] : '';
|
667 |
-
$template_args['attachment'] = false;
|
668 |
-
|
669 |
-
$output .= $this->get_template( $template, $template_args );
|
670 |
-
}
|
671 |
-
|
672 |
-
$output .= "</ul>\n</div>" . $this->powered_by_link( $powered_by_link );
|
673 |
-
}
|
674 |
-
|
675 |
-
}
|
676 |
-
|
677 |
-
wp_reset_postdata();
|
678 |
-
|
679 |
-
} else {
|
680 |
-
|
681 |
-
$images_data = $this->instagram_data( $search_for, $refresh_hour, $images_number, false );
|
682 |
-
|
683 |
-
if ( is_array( $images_data ) && !empty( $images_data ) ) {
|
684 |
-
|
685 |
-
if ( $orderby != 'rand' ) {
|
686 |
-
|
687 |
-
$orderby = explode( '-', $orderby );
|
688 |
-
$func = $orderby[0] == 'date' ? 'sort_timestamp_' . $orderby[1] : 'sort_popularity_' . $orderby[1];
|
689 |
-
|
690 |
-
usort( $images_data, array( $this, $func ) );
|
691 |
-
|
692 |
-
} else {
|
693 |
-
|
694 |
-
shuffle( $images_data );
|
695 |
-
}
|
696 |
-
|
697 |
-
$output = $slider_script . $images_div . $images_ul;
|
698 |
-
|
699 |
-
foreach ( $images_data as $image_data ) {
|
700 |
-
|
701 |
-
if ( 'image_link' == $images_link ) {
|
702 |
-
$template_args['link_to'] = $image_data['link'];
|
703 |
-
} elseif ( 'user_url' == $images_link ) {
|
704 |
-
$template_args['link_to'] = 'https://www.instagram.com/' . $username . '/';
|
705 |
-
} elseif ( 'image_url' == $images_link ) {
|
706 |
-
$template_args['link_to'] = $image_data['url'];
|
707 |
-
} elseif ( 'custom_url' == $images_link ) {
|
708 |
-
$template_args['link_to'] = $custom_url;
|
709 |
-
}
|
710 |
-
|
711 |
-
$template_args['image'] = $image_data['sizes'][$image_size];
|
712 |
-
$template_args['caption'] = $image_data['caption'];
|
713 |
-
$template_args['timestamp'] = $image_data['timestamp'];
|
714 |
-
$template_args['username'] = isset( $image_data['username'] ) ? $image_data['username'] : '';
|
715 |
-
|
716 |
-
$output .= $this->get_template( $template, $template_args );
|
717 |
-
}
|
718 |
-
|
719 |
-
$output .= "</ul>\n</div>" . $this->powered_by_link( $powered_by_link );
|
720 |
-
}
|
721 |
-
}
|
722 |
-
|
723 |
-
return $output;
|
724 |
-
|
725 |
-
}
|
726 |
-
|
727 |
-
|
728 |
-
/**
|
729 |
-
* Function to display Templates styles
|
730 |
-
*
|
731 |
-
* @param string $template
|
732 |
-
* @param array $args
|
733 |
-
*
|
734 |
-
* return mixed
|
735 |
-
*/
|
736 |
-
private function get_template( $template, $args ) {
|
737 |
-
|
738 |
-
$link_to = isset( $args['link_to'] ) ? $args['link_to'] : false;
|
739 |
-
$image_url = isset( $args['image'] ) ? $args['image'] : false;
|
740 |
-
|
741 |
-
if ( ( $args['search_for'] == 'user' && $args['attachment'] !== true ) || $args['search_for'] == 'hashtag' ) {
|
742 |
-
$caption = $args['caption'];
|
743 |
-
$time = $args['timestamp'];
|
744 |
-
$username = $args['username'];
|
745 |
-
} else {
|
746 |
-
$attach_id = get_the_id();
|
747 |
-
$caption = get_the_excerpt();
|
748 |
-
$time = get_post_meta( $attach_id, 'jr_insta_timestamp', true );
|
749 |
-
$username = get_post_meta( $attach_id, 'jr_insta_username', true );
|
750 |
-
}
|
751 |
-
|
752 |
-
$short_caption = wp_trim_words( $caption, 10, '' );
|
753 |
-
$short_caption = preg_replace("/[^A-Za-z0-9?! ]/","", $short_caption);
|
754 |
-
$caption = wp_trim_words( $caption, $args['caption_words'], '' );
|
755 |
-
$nopin = ( 1 == $args['no_pin'] ) ? 'nopin="nopin"' : '';
|
756 |
-
|
757 |
-
$image_src = '<img src="' . $image_url . '" alt="' . $short_caption . '" title="' . $short_caption . '" '. $nopin . '/>';
|
758 |
-
$image_output = $image_src;
|
759 |
-
|
760 |
-
if ( $link_to ) {
|
761 |
-
$image_output = '<a href="' . $link_to . '" target="_blank"';
|
762 |
-
|
763 |
-
if ( ! empty( $args['link_rel'] ) ) {
|
764 |
-
$image_output .= ' rel="' . $args['link_rel'] . '"';
|
765 |
-
}
|
766 |
-
|
767 |
-
if ( ! empty( $args['link_class'] ) ) {
|
768 |
-
$image_output .= ' class="' . $args['link_class'] . '"';
|
769 |
-
}
|
770 |
-
$image_output .= ' title="' . $short_caption . '">' . $image_src . '</a>';
|
771 |
-
}
|
772 |
-
|
773 |
-
$output = '';
|
774 |
-
|
775 |
-
// Template : Normal Slider
|
776 |
-
if ( $template == 'slider' ) {
|
777 |
-
|
778 |
-
$output .= "<li>";
|
779 |
-
|
780 |
-
$output .= $image_output;
|
781 |
-
|
782 |
-
if ( is_array( $args['description'] ) && count( $args['description'] ) >= 1 ) {
|
783 |
-
|
784 |
-
$output .= "<div class='jr-insta-datacontainer'>\n";
|
785 |
-
|
786 |
-
if ( $time && in_array( 'time', $args['description'] ) ) {
|
787 |
-
$time = human_time_diff( $time );
|
788 |
-
$output .= "<span class='jr-insta-time'>{$time} ago</span>\n";
|
789 |
-
}
|
790 |
-
if ( in_array( 'username', $args['description'] ) && $username ) {
|
791 |
-
$output .= "<span class='jr-insta-username'>by <a rel='nofollow' href='https://www.instagram.com/{$username}/' target='_blank'>{$username}</a></span>\n";
|
792 |
-
}
|
793 |
-
|
794 |
-
if ( $caption != '' && in_array( 'caption', $args['description'] ) ) {
|
795 |
-
$caption = preg_replace( '/@([a-z0-9_]+)/i', ' <a href="https://www.instagram.com/$1/" rel="nofollow" target="_blank">@$1</a> ', $caption );
|
796 |
-
$caption = preg_replace( '/\#([a-zA-Z0-9_-]+)/i', ' <a href="https://www.instagram.com/explore/tags/$1/" rel="nofollow" target="_blank">$0</a> ', $caption);
|
797 |
-
$output .= "<span class='jr-insta-caption'>{$caption}</span>\n";
|
798 |
-
}
|
799 |
-
|
800 |
-
$output .= "</div>\n";
|
801 |
-
}
|
802 |
-
|
803 |
-
$output .= "</li>";
|
804 |
-
|
805 |
-
// Template : Slider with text Overlay on mouse over
|
806 |
-
} elseif ( $template == 'slider-overlay' ) {
|
807 |
-
|
808 |
-
$output .= "<li>";
|
809 |
-
|
810 |
-
$output .= $image_output;
|
811 |
-
|
812 |
-
if ( is_array( $args['description'] ) && count( $args['description'] ) >= 1 ) {
|
813 |
-
|
814 |
-
$output .= "<div class='jr-insta-wrap'>\n";
|
815 |
-
|
816 |
-
$output .= "<div class='jr-insta-datacontainer'>\n";
|
817 |
-
|
818 |
-
if ( $time && in_array( 'time', $args['description'] ) ) {
|
819 |
-
$time = human_time_diff( $time );
|
820 |
-
$output .= "<span class='jr-insta-time'>{$time} ago</span>\n";
|
821 |
-
}
|
822 |
-
|
823 |
-
if ( in_array( 'username', $args['description'] ) && $username ) {
|
824 |
-
$output .= "<span class='jr-insta-username'>by <a rel='nofollow' target='_blank' href='https://www.instagram.com/{$username}/'>{$username}</a></span>\n";
|
825 |
-
}
|
826 |
-
|
827 |
-
if ( $caption != '' && in_array( 'caption', $args['description'] ) ) {
|
828 |
-
$caption = preg_replace( '/@([a-z0-9_]+)/i', ' <a href="https://www.instagram.com/$1/" rel="nofollow" target="_blank">@$1</a> ', $caption );
|
829 |
-
$caption = preg_replace( '/\#([a-zA-Z0-9_-]+)/i', ' <a href="https://www.instagram.com/explore/tags/$1/" rel="nofollow" target="_blank">$0</a> ', $caption);
|
830 |
-
$output .= "<span class='jr-insta-caption'>{$caption}</span>\n";
|
831 |
-
}
|
832 |
-
|
833 |
-
$output .= "</div>\n";
|
834 |
-
|
835 |
-
$output .= "</div>\n";
|
836 |
-
}
|
837 |
-
|
838 |
-
$output .= "</li>";
|
839 |
-
|
840 |
-
// Template : Thumbnails no text
|
841 |
-
} elseif ( $template == 'thumbs' || $template == 'thumbs-no-border' ) {
|
842 |
-
|
843 |
-
$output .= "<li>";
|
844 |
-
$output .= $image_output;
|
845 |
-
$output .= "</li>";
|
846 |
-
|
847 |
-
} else {
|
848 |
-
|
849 |
-
$output .= 'This template does not exist!';
|
850 |
-
}
|
851 |
-
|
852 |
-
return $output;
|
853 |
-
}
|
854 |
-
|
855 |
-
|
856 |
-
/**
|
857 |
-
* Trigger refresh for new data
|
858 |
-
* @param bolean $instaData
|
859 |
-
* @param array $old_args
|
860 |
-
* @param array $new_args
|
861 |
-
* @return bolean
|
862 |
-
*/
|
863 |
-
private function trigger_refresh_data( $instaData, $old_args, $new_args ) {
|
864 |
-
|
865 |
-
$trigger = 0;
|
866 |
-
|
867 |
-
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
|
868 |
-
return false;
|
869 |
-
}
|
870 |
|
871 |
-
if ( false === $instaData ) {
|
872 |
-
$trigger = 1;
|
873 |
-
}
|
874 |
-
|
875 |
|
876 |
-
if ( isset( $old_args['saved_images'] ) ) {
|
877 |
-
unset($old_args['saved_images']);
|
878 |
-
}
|
879 |
|
880 |
-
if ( isset( $old_args['deleted_images'] ) ) {
|
881 |
-
unset($old_args['deleted_images']);
|
882 |
-
}
|
883 |
|
884 |
-
|
885 |
-
|
886 |
-
|
887 |
-
|
888 |
-
|
889 |
-
|
890 |
-
|
891 |
-
|
892 |
-
|
893 |
-
|
894 |
-
|
895 |
-
|
896 |
-
|
897 |
-
|
898 |
-
|
899 |
-
|
900 |
-
|
901 |
-
|
902 |
-
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
-
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
912 |
-
|
913 |
-
|
914 |
-
|
915 |
-
|
916 |
-
return false;
|
917 |
-
}
|
918 |
-
|
919 |
-
|
920 |
-
/**
|
921 |
-
* Stores the fetched data from instagram in WordPress DB using transients
|
922 |
-
*
|
923 |
-
* @param string $username Instagram Username to fetch images from
|
924 |
-
* @param string $cache_hours Cache hours for transient
|
925 |
-
* @param string $nr_images Nr of images to fetch from instagram
|
926 |
-
*
|
927 |
-
* @return array of localy saved instagram data
|
928 |
-
*/
|
929 |
-
private function instagram_data( $search_for, $cache_hours, $nr_images, $attachment ) {
|
930 |
-
|
931 |
-
$nr_images = $nr_images <= 12 ? $nr_images : 12;
|
932 |
-
$blocked_users = isset( $search_for['blocked_users'] ) && !empty( $search_for['blocked_users'] ) ? $search_for['blocked_users'] : false;
|
933 |
-
if ( isset( $search_for['username'] ) && !empty( $search_for['username'] ) ) {
|
934 |
-
$search = 'user';
|
935 |
-
$search_string = $search_for['username'];
|
936 |
-
} elseif ( isset( $search_for['hashtag'] ) && !empty( $search_for['hashtag'] ) ) {
|
937 |
-
$search = 'hashtag';
|
938 |
-
$search_string = $search_for['hashtag'];
|
939 |
-
$blocked_users_array = $blocked_users ? $this->get_ids_from_usernames( $blocked_users ) : array();
|
940 |
-
} else {
|
941 |
-
return __( 'Nothing to search for', 'jrinstaslider');
|
942 |
-
}
|
943 |
-
|
944 |
-
$opt_name = 'jr_insta_' . md5( $search . '_' . $search_string );
|
945 |
-
$instaData = get_transient( $opt_name );
|
946 |
-
$old_opts = (array) get_option( $opt_name );
|
947 |
-
$new_opts = array(
|
948 |
-
'search' => $search,
|
949 |
-
'search_string' => $search_string,
|
950 |
-
'blocked_users' => $blocked_users,
|
951 |
-
'cache_hours' => $cache_hours,
|
952 |
-
'nr_images' => $nr_images,
|
953 |
-
'attachment' => $attachment
|
954 |
-
);
|
955 |
-
|
956 |
-
if ( true === $this->trigger_refresh_data( $instaData, $old_opts, $new_opts ) ) {
|
957 |
-
|
958 |
-
$instaData = array();
|
959 |
-
$old_opts['search'] = $search;
|
960 |
-
$old_opts['search_string'] = $search_string;
|
961 |
-
$old_opts['blocked_users'] = $blocked_users;
|
962 |
-
$old_opts['cache_hours'] = $cache_hours;
|
963 |
-
$old_opts['nr_images'] = $nr_images;
|
964 |
-
$old_opts['attachment'] = $attachment;
|
965 |
-
|
966 |
-
if ( 'user' == $search ) {
|
967 |
-
$url = str_replace( '{username}', urlencode( trim( $search_string ) ), self::USERNAME_URL );
|
968 |
-
$response = wp_remote_get( $url, array( 'sslverify' => false, 'timeout' => 60 ) );
|
969 |
-
} else {
|
970 |
-
$url = str_replace( '{tag}', urlencode( trim( $search_string ) ), self::TAG_URL );
|
971 |
-
$response = wp_remote_get( $url, array( 'sslverify' => false, 'timeout' => 60 ) );
|
972 |
-
|
973 |
-
}
|
974 |
-
|
975 |
-
if ( is_wp_error( $response ) ) {
|
976 |
-
|
977 |
-
return $response->get_error_message();
|
978 |
-
}
|
979 |
-
|
980 |
-
if ( $response['response']['code'] == 200 ) {
|
981 |
-
|
982 |
-
$results = json_decode( $response['body'], true );
|
983 |
-
|
984 |
-
if ( $results && is_array( $results ) ) {
|
985 |
-
|
986 |
-
if ( 'user' == $search ) {
|
987 |
-
$entry_data = isset($results['graphql']['user']['edge_owner_to_timeline_media']['edges']) ? $results['graphql']['user']['edge_owner_to_timeline_media']['edges'] : array();
|
988 |
-
} else {
|
989 |
-
$entry_data = isset( $results['graphql']['hashtag']['edge_hashtag_to_media']['edges'] ) ? $results['graphql']['hashtag']['edge_hashtag_to_media']['edges'] : array();
|
990 |
-
}
|
991 |
-
|
992 |
-
|
993 |
-
if ( empty( $entry_data ) ) {
|
994 |
-
return __( 'No images found', 'jrinstaslider');
|
995 |
-
}
|
996 |
-
|
997 |
-
foreach ( $entry_data as $current => $result ) {
|
998 |
-
|
999 |
-
|
1000 |
-
$result = $result['node'];
|
1001 |
-
|
1002 |
-
if ( 'hashtag' == $search ) {
|
1003 |
-
|
1004 |
-
if ( in_array( $result['owner']['id'], $blocked_users_array ) ) {
|
1005 |
-
$nr_images++;
|
1006 |
-
continue;
|
1007 |
-
}
|
1008 |
-
}
|
1009 |
-
|
1010 |
-
if ( $result['is_video'] == true ) {
|
1011 |
-
$nr_images++;
|
1012 |
-
continue;
|
1013 |
-
}
|
1014 |
-
|
1015 |
-
|
1016 |
-
if ( $current >= $nr_images ) {
|
1017 |
-
break;
|
1018 |
-
}
|
1019 |
-
|
1020 |
-
$image_data = $this->media_model( $result );
|
1021 |
-
|
1022 |
-
if ( 'user' == $search ) {
|
1023 |
-
$image_data['username'] = $search_string;
|
1024 |
-
}
|
1025 |
-
|
1026 |
-
if ( ( $search == 'hashtag' ) || ( $search == 'user' && !$attachment ) ) {
|
1027 |
-
|
1028 |
-
$instaData[] = $image_data;
|
1029 |
-
|
1030 |
-
} else {
|
1031 |
-
|
1032 |
-
if ( isset( $old_opts['saved_images'][$image_data['id']] ) ) {
|
1033 |
-
|
1034 |
-
if ( is_string( get_post_status( $old_opts['saved_images'][$image_data['id']] ) ) ) {
|
1035 |
-
|
1036 |
-
$this->update_wp_attachment( $old_opts['saved_images'][$image_data['id']], $image_data );
|
1037 |
-
|
1038 |
-
$instaData[$image_data['id']] = $old_opts['saved_images'][$image_data['id']];
|
1039 |
-
|
1040 |
-
} else {
|
1041 |
-
unset( $old_opts['saved_images'][$image_data['id']] );
|
1042 |
-
}
|
1043 |
-
|
1044 |
-
} else {
|
1045 |
-
|
1046 |
-
$id = $this->save_wp_attachment( $image_data );
|
1047 |
-
|
1048 |
-
if ( $id && is_numeric( $id ) ) {
|
1049 |
-
|
1050 |
-
$old_opts['saved_images'][$image_data['id']] = $id;
|
1051 |
-
|
1052 |
-
$instaData[$image_data['id']] = $id;
|
1053 |
-
|
1054 |
-
} else {
|
1055 |
-
|
1056 |
-
return $id;
|
1057 |
-
}
|
1058 |
-
|
1059 |
-
} // end isset $saved_images
|
1060 |
-
|
1061 |
-
} // false to save attachments
|
1062 |
-
|
1063 |
-
} // end -> foreach
|
1064 |
-
|
1065 |
-
} // end -> ( $results ) && is_array( $results ) )
|
1066 |
-
|
1067 |
-
} else {
|
1068 |
-
|
1069 |
-
return $response['response']['message'];
|
1070 |
-
|
1071 |
-
} // end -> $response['response']['code'] === 200 )
|
1072 |
-
|
1073 |
-
update_option( $opt_name, $old_opts );
|
1074 |
-
|
1075 |
-
if ( is_array( $instaData ) && !empty( $instaData ) ) {
|
1076 |
-
|
1077 |
-
set_transient( $opt_name, $instaData, $cache_hours * 60 * 60 );
|
1078 |
-
}
|
1079 |
-
|
1080 |
-
} // end -> false === $instaData
|
1081 |
-
|
1082 |
-
return $instaData;
|
1083 |
-
}
|
1084 |
-
|
1085 |
-
|
1086 |
-
/**
|
1087 |
-
* @param string $imageUrl
|
1088 |
-
*
|
1089 |
-
* @return array
|
1090 |
-
*/
|
1091 |
-
private function get_thumbnail_urls( $thumbnails ) {
|
1092 |
-
|
1093 |
-
$image_thumbnails = array();
|
1094 |
-
|
1095 |
-
foreach ( $thumbnails as $thumbnail ) {
|
1096 |
-
|
1097 |
-
switch ( $thumbnail['config_width'] ) {
|
1098 |
-
case '150':
|
1099 |
-
$image_thumbnails['thumbnail'] = $thumbnail['src'];
|
1100 |
-
break;
|
1101 |
-
case '320':
|
1102 |
-
$image_thumbnails['low'] = $thumbnail['src'];
|
1103 |
-
break;
|
1104 |
-
case '640':
|
1105 |
-
$image_thumbnails['standard'] = $thumbnail['src'];
|
1106 |
-
break;
|
1107 |
-
}
|
1108 |
-
}
|
1109 |
-
|
1110 |
-
return $image_thumbnails;
|
1111 |
-
}
|
1112 |
-
|
1113 |
-
|
1114 |
-
/**
|
1115 |
-
* Media Model
|
1116 |
-
* @param [type] $medias_array [description]
|
1117 |
-
* @return [type] [description]
|
1118 |
-
*/
|
1119 |
-
private function media_model( $medias_array ) {
|
1120 |
-
|
1121 |
-
$medias_model = array();
|
1122 |
-
|
1123 |
-
foreach ( $medias_array as $prop => $value ) {
|
1124 |
-
|
1125 |
-
switch ( $prop ) {
|
1126 |
-
case 'id':
|
1127 |
-
$medias_model['id'] = $value;
|
1128 |
-
break;
|
1129 |
-
case 'code':
|
1130 |
-
case 'shortcode':
|
1131 |
-
$medias_model['code'] = $value;
|
1132 |
-
$medias_model['link'] = 'https://www.instagram.com/p/'. $value . '/';
|
1133 |
-
break;
|
1134 |
-
case 'owner':
|
1135 |
-
$medias_model['user_id'] = $value['id'];
|
1136 |
-
break;
|
1137 |
-
case 'caption':
|
1138 |
-
$medias_model['caption'] = $this->sanitize( $value );
|
1139 |
-
break;
|
1140 |
-
case 'edge_media_to_caption':
|
1141 |
-
if ( !empty( $value['edges'] ) ) {
|
1142 |
-
$first_caption = $value['edges'][0];
|
1143 |
-
if ( isset( $first_caption['node']['text'] ) ) {
|
1144 |
-
$medias_model['caption'] = $this->sanitize( $value['edges'][0]['node']['text'] );
|
1145 |
-
}
|
1146 |
-
}
|
1147 |
-
break;
|
1148 |
-
case 'date':
|
1149 |
-
case 'taken_at_timestamp':
|
1150 |
-
$medias_model['timestamp'] = (float) $value;
|
1151 |
-
break;
|
1152 |
-
case 'dimensions':
|
1153 |
-
$medias_model['height'] = $value['height'];
|
1154 |
-
$medias_model['width'] = $value['width'];
|
1155 |
-
break;
|
1156 |
-
case 'display_url':
|
1157 |
-
case 'display_src':
|
1158 |
-
$medias_model['url'] = $value;
|
1159 |
-
if ( isset( $medias_model['sizes'] ) ) {
|
1160 |
-
$medias_model['sizes']['full'] = $value;
|
1161 |
-
}
|
1162 |
-
break;
|
1163 |
-
case 'edge_liked_by':
|
1164 |
-
case 'likes':
|
1165 |
-
$medias_model['likes_count'] = $value['count'];
|
1166 |
-
break;
|
1167 |
-
case 'edge_media_to_comment':
|
1168 |
-
case 'comments':
|
1169 |
-
$medias_model['comment_count'] = $value['count'];
|
1170 |
-
break;
|
1171 |
-
case 'thumbnail_resources':
|
1172 |
-
$medias_model['sizes'] = $this->get_thumbnail_urls( $value );
|
1173 |
-
if ( isset( $medias_model['url'] ) ) {
|
1174 |
-
$medias_model['sizes']['full'] = $medias_model['url'];
|
1175 |
-
}
|
1176 |
-
break;
|
1177 |
-
}
|
1178 |
-
|
1179 |
-
if ( isset( $medias_model['comment_count'] ) && isset( $medias_model['likes_count'] ) ) {
|
1180 |
-
$medias_model['popularity'] = (int) ( $medias_model['comment_count'] ) + ( $medias_model['likes_count'] );
|
1181 |
-
}
|
1182 |
-
}
|
1183 |
-
|
1184 |
-
return $medias_model;
|
1185 |
-
}
|
1186 |
-
|
1187 |
-
|
1188 |
-
/**
|
1189 |
-
* Remove Duplicates
|
1190 |
-
* @return [type] [description]
|
1191 |
-
*/
|
1192 |
-
private function clean_duplicates( $username ) {
|
1193 |
-
|
1194 |
-
$savedinsta_args = array(
|
1195 |
-
'post_type' => 'attachment',
|
1196 |
-
'post_status' => 'inherit',
|
1197 |
-
'post_mime_type' => 'image',
|
1198 |
-
'orderby' => 'rand',
|
1199 |
-
'posts_per_page' => -1,
|
1200 |
-
'meta_query' => array(
|
1201 |
-
array(
|
1202 |
-
'key' => 'jr_insta_username',
|
1203 |
-
'compare' => '=',
|
1204 |
-
'value' => $username
|
1205 |
-
),
|
1206 |
-
),
|
1207 |
-
);
|
1208 |
-
|
1209 |
-
$savedinsta = new WP_Query( $savedinsta_args );
|
1210 |
-
|
1211 |
-
$opt_name = 'jr_insta_' . md5( 'user' . '_' . $username );
|
1212 |
-
|
1213 |
-
$attachment_ids = (array) get_option( $opt_name );
|
1214 |
-
|
1215 |
-
$deleted_count = 0;
|
1216 |
-
|
1217 |
-
foreach ( $savedinsta->posts as $post ) {
|
1218 |
-
|
1219 |
-
if ( !in_array( $post->ID, $attachment_ids['saved_images'] ) ) {
|
1220 |
-
|
1221 |
-
if ( false !== wp_delete_attachment( $post->ID, true ) ) {
|
1222 |
-
$deleted_count++;
|
1223 |
-
}
|
1224 |
-
}
|
1225 |
-
}
|
1226 |
-
|
1227 |
-
wp_reset_postdata();
|
1228 |
-
|
1229 |
-
return $deleted_count;
|
1230 |
-
}
|
1231 |
-
|
1232 |
-
/**
|
1233 |
-
* Ajax Call to unblock images
|
1234 |
-
* @return void
|
1235 |
-
*/
|
1236 |
-
public function delete_dupes() {
|
1237 |
-
|
1238 |
-
if (function_exists('check_ajax_referer')) {
|
1239 |
-
check_ajax_referer( 'jr_delete_instagram_dupes' );
|
1240 |
-
}
|
1241 |
-
|
1242 |
-
$post = $_POST;
|
1243 |
-
$return = array(
|
1244 |
-
'deleted' => $this->clean_duplicates( $post['username'] )
|
1245 |
-
);
|
1246 |
-
|
1247 |
-
wp_send_json( $return );
|
1248 |
-
}
|
1249 |
-
|
1250 |
-
/**
|
1251 |
-
* Get Instagram Ids from Usernames into array
|
1252 |
-
* @param string $usernames Comma separated string with instagram users
|
1253 |
-
* @return array An array with instagram ids
|
1254 |
-
*/
|
1255 |
-
private function get_ids_from_usernames( $usernames ) {
|
1256 |
-
|
1257 |
-
$users = explode( ',', trim( $usernames ) );
|
1258 |
-
$user_ids = (array) get_transient( 'jr_insta_user_ids' );
|
1259 |
-
$return_ids = array();
|
1260 |
-
|
1261 |
-
if ( is_array( $users ) && !empty( $users ) ) {
|
1262 |
-
|
1263 |
-
foreach ( $users as $user ) {
|
1264 |
-
|
1265 |
-
if ( isset( $user_ids[$user] ) ) {
|
1266 |
-
continue;
|
1267 |
-
}
|
1268 |
-
|
1269 |
-
$url = str_replace( '{username}', urlencode( trim( $user ) ), self::USERNAME_URL );
|
1270 |
-
$response = wp_remote_get( $url, array( 'sslverify' => false, 'timeout' => 60 ) );
|
1271 |
-
|
1272 |
-
if ( is_wp_error( $response ) ) {
|
1273 |
-
|
1274 |
-
return $response->get_error_message();
|
1275 |
-
}
|
1276 |
-
|
1277 |
-
if ( $response['response']['code'] == 200 ) {
|
1278 |
-
|
1279 |
-
$results = json_decode( $response['body'], true );
|
1280 |
-
|
1281 |
-
if ( $results && is_array( $results ) ) {
|
1282 |
-
|
1283 |
-
$user_id = isset( $results['user']['id'] ) ? $results['user']['id'] : false;
|
1284 |
-
|
1285 |
-
if ( $user_id ) {
|
1286 |
-
|
1287 |
-
$user_ids[$user] = $user_id;
|
1288 |
-
|
1289 |
-
set_transient( 'jr_insta_user_ids', $user_ids );
|
1290 |
-
}
|
1291 |
-
}
|
1292 |
-
}
|
1293 |
-
}
|
1294 |
-
}
|
1295 |
-
|
1296 |
-
foreach ( $users as $user ) {
|
1297 |
-
if ( isset( $user_ids[$user] ) ) {
|
1298 |
-
$return_ids[] = $user_ids[$user];
|
1299 |
-
}
|
1300 |
-
}
|
1301 |
-
|
1302 |
-
return $return_ids;
|
1303 |
-
}
|
1304 |
-
|
1305 |
-
|
1306 |
-
/**
|
1307 |
-
* Updates attachment using the id
|
1308 |
-
* @param int $attachment_ID
|
1309 |
-
* @param array image_data
|
1310 |
-
* @return void
|
1311 |
-
*/
|
1312 |
-
private function update_wp_attachment( $attachment_ID, $image_data ) {
|
1313 |
-
update_post_meta( $attachment_ID, 'jr_insta_popularity', $image_data['popularity'] );
|
1314 |
-
update_post_meta( $attachment_ID, 'jr_insta_likes_count', $image_data['likes_count'] );
|
1315 |
-
update_post_meta( $attachment_ID, 'jr_insta_comment_count', $image_data['comment_count'] );
|
1316 |
-
}
|
1317 |
-
|
1318 |
-
/**
|
1319 |
-
* Save Instagram images to upload folder and ads to media.
|
1320 |
-
* If the upload fails it returns the remote image url.
|
1321 |
-
*
|
1322 |
-
* @param string $url Url of image to download
|
1323 |
-
* @param string $file File path for image
|
1324 |
-
*
|
1325 |
-
* @return string $url Url to image
|
1326 |
-
*/
|
1327 |
-
private function save_wp_attachment( $image_data ) {
|
1328 |
-
|
1329 |
-
$image_info = pathinfo( $image_data['url'] );
|
1330 |
-
|
1331 |
-
if ( !in_array( $image_info['extension'], array( 'jpg', 'jpe', 'jpeg' ) ) ) {
|
1332 |
-
return false;
|
1333 |
-
}
|
1334 |
-
|
1335 |
-
$attachment = array(
|
1336 |
-
'guid' => $image_data['url'],
|
1337 |
-
'post_mime_type' => 'image/jpeg',
|
1338 |
-
'post_title' => preg_replace( '/\.[^.]+$/', '', $image_info['basename'] ),
|
1339 |
-
'post_excerpt' => $image_data['caption']
|
1340 |
-
);
|
1341 |
-
|
1342 |
-
$attachment_metadata = array( 'width' => $image_data['width'], 'height' => $image_data['height'], 'file' => $image_info['basename'] );
|
1343 |
-
$attachment_metadata['sizes'] = array( 'full' => $attachment_metadata );
|
1344 |
-
$id = wp_insert_attachment( $attachment );
|
1345 |
-
wp_update_attachment_metadata( $id, $attachment_metadata );
|
1346 |
-
|
1347 |
-
|
1348 |
-
unset( $image_data['caption'] );
|
1349 |
-
|
1350 |
-
foreach ( $image_data as $meta_key => $meta_value ) {
|
1351 |
-
update_post_meta( $id, 'jr_insta_' . $meta_key, $meta_value );
|
1352 |
-
}
|
1353 |
-
|
1354 |
-
return $id;
|
1355 |
-
}
|
1356 |
-
|
1357 |
-
/**
|
1358 |
-
* Add new attachment Description only for instgram images
|
1359 |
-
*
|
1360 |
-
* @param array $form_fields
|
1361 |
-
* @param object $post
|
1362 |
-
*
|
1363 |
-
* @return array
|
1364 |
-
*/
|
1365 |
-
public function insta_attachment_fields( $form_fields, $post ) {
|
1366 |
-
|
1367 |
-
$instagram_username = get_post_meta( $post->ID, 'jr_insta_username', true );
|
1368 |
-
|
1369 |
-
if ( !empty( $instagram_username ) ) {
|
1370 |
-
|
1371 |
-
$form_fields["jr_insta_username"] = array(
|
1372 |
-
"label" => __( "Instagram Username" ),
|
1373 |
-
"input" => "html",
|
1374 |
-
"html" => "<span style='line-height:31px'><a target='_blank' href='https://www.instagram.com/{$instagram_username}/'>{$instagram_username}</a></span>"
|
1375 |
-
);
|
1376 |
-
|
1377 |
-
$instagram_link = get_post_meta( $post->ID, 'jr_insta_link', true );
|
1378 |
-
if ( !empty( $instagram_link ) ) {
|
1379 |
-
$form_fields["jr_insta_link"] = array(
|
1380 |
-
"label" => __( "Instagram Image" ),
|
1381 |
-
"input" => "html",
|
1382 |
-
"html" => "<span style='line-height:31px'><a target='_blank' href='{$instagram_link}'>{$instagram_link}</a></span>"
|
1383 |
-
);
|
1384 |
-
}
|
1385 |
-
|
1386 |
-
$instagram_date = get_post_meta( $post->ID, 'jr_insta_timestamp', true );
|
1387 |
-
if ( !empty( $instagram_date ) ) {
|
1388 |
-
$instagram_date = date( "F j, Y, g:i a", $instagram_date );
|
1389 |
-
$form_fields["jr_insta_time"] = array(
|
1390 |
-
"label" => __( "Posted on Instagram" ),
|
1391 |
-
"input" => "html",
|
1392 |
-
"html" => "<span style='line-height:31px'>{$instagram_date}</span>"
|
1393 |
-
);
|
1394 |
-
}
|
1395 |
-
}
|
1396 |
-
|
1397 |
-
return $form_fields;
|
1398 |
-
}
|
1399 |
-
|
1400 |
-
/**
|
1401 |
-
* Sort Function for timestamp Ascending
|
1402 |
-
*/
|
1403 |
-
public function sort_timestamp_ASC( $a, $b ) {
|
1404 |
-
return $a['timestamp'] > $b['timestamp'];
|
1405 |
-
}
|
1406 |
-
|
1407 |
-
/**
|
1408 |
-
* Sort Function for timestamp Descending
|
1409 |
-
*/
|
1410 |
-
public function sort_timestamp_DESC( $a, $b ) {
|
1411 |
-
return $a['timestamp'] < $b['timestamp'];
|
1412 |
-
}
|
1413 |
-
|
1414 |
-
/**
|
1415 |
-
* Sort Function for popularity Ascending
|
1416 |
-
*/
|
1417 |
-
public function sort_popularity_ASC( $a, $b ) {
|
1418 |
-
return $a['popularity'] > $b['popularity'];
|
1419 |
-
}
|
1420 |
-
|
1421 |
-
/**
|
1422 |
-
* Sort Function for popularity Descending
|
1423 |
-
*/
|
1424 |
-
public function sort_popularity_DESC( $a, $b ) {
|
1425 |
-
return $a['popularity'] < $b['popularity'];
|
1426 |
-
}
|
1427 |
-
|
1428 |
-
/**
|
1429 |
-
* Plugin Data for better compatibility and Support
|
1430 |
-
*
|
1431 |
-
*/
|
1432 |
-
public function domain_data() {
|
1433 |
-
|
1434 |
-
if ( false === $domain_data = get_transient( 'jr_domain_info' ) ) {
|
1435 |
-
|
1436 |
-
$theme = wp_get_theme();
|
1437 |
-
$domain = get_site_url();
|
1438 |
-
$plugin = self::VERSION;
|
1439 |
-
$url = 'http://jrwebstudio.com/wp-admin/admin-post.php';
|
1440 |
-
|
1441 |
-
$response = wp_safe_remote_post( $url, array(
|
1442 |
-
'method' => 'POST',
|
1443 |
-
'timeout' => 45,
|
1444 |
-
'redirection' => 5,
|
1445 |
-
'httpversion' => '1.1',
|
1446 |
-
'blocking' => true,
|
1447 |
-
'user-agent' => 'Mozilla/4.0',
|
1448 |
-
'headers' => array(),
|
1449 |
-
'cookies' => array(),
|
1450 |
-
'body' => array(
|
1451 |
-
'action' => 'insta_users',
|
1452 |
-
'domain' => $domain,
|
1453 |
-
'theme_name' => $theme->get( 'Name' ),
|
1454 |
-
'theme_version' => $theme->get( 'Version' ),
|
1455 |
-
'plugin_version' => $plugin,
|
1456 |
-
'timestamp' => time()
|
1457 |
-
)
|
1458 |
-
)
|
1459 |
-
);
|
1460 |
-
|
1461 |
-
if ( $response['response']['code'] == 200 ) {
|
1462 |
-
$domain_data = json_decode( wp_remote_retrieve_body( $response ), true );
|
1463 |
-
if ( is_array( $domain_data) && !empty( $domain_data) ) {
|
1464 |
-
set_transient( 'jr_domain_info', $domain_data, WEEK_IN_SECONDS );
|
1465 |
-
}
|
1466 |
-
}
|
1467 |
-
}
|
1468 |
-
|
1469 |
-
return $domain_data;
|
1470 |
-
}
|
1471 |
-
|
1472 |
-
/**
|
1473 |
-
* Sanitize 4-byte UTF8 chars; no full utf8mb4 support in drupal7+mysql stack.
|
1474 |
-
* This solution runs in O(n) time BUT assumes that all incoming input is
|
1475 |
-
* strictly UTF8.
|
1476 |
-
*
|
1477 |
-
* @param string $input The input to be sanitised
|
1478 |
-
*
|
1479 |
-
* @return the sanitized input
|
1480 |
-
*/
|
1481 |
-
private function sanitize( $input ) {
|
1482 |
-
|
1483 |
-
if ( !empty( $input ) ) {
|
1484 |
-
$utf8_2byte = 0xC0 /*1100 0000*/ ;
|
1485 |
-
$utf8_2byte_bmask = 0xE0 /*1110 0000*/ ;
|
1486 |
-
$utf8_3byte = 0xE0 /*1110 0000*/ ;
|
1487 |
-
$utf8_3byte_bmask = 0XF0 /*1111 0000*/ ;
|
1488 |
-
$utf8_4byte = 0xF0 /*1111 0000*/ ;
|
1489 |
-
$utf8_4byte_bmask = 0xF8 /*1111 1000*/ ;
|
1490 |
-
|
1491 |
-
$sanitized = "";
|
1492 |
-
$len = strlen( $input );
|
1493 |
-
for ( $i = 0; $i < $len; ++$i ) {
|
1494 |
-
|
1495 |
-
$mb_char = $input[$i]; // Potentially a multibyte sequence
|
1496 |
-
$byte = ord( $mb_char );
|
1497 |
-
|
1498 |
-
if ( ( $byte & $utf8_2byte_bmask ) == $utf8_2byte ) {
|
1499 |
-
$mb_char .= $input[++$i];
|
1500 |
-
} else if ( ( $byte & $utf8_3byte_bmask ) == $utf8_3byte ) {
|
1501 |
-
$mb_char .= $input[++$i];
|
1502 |
-
$mb_char .= $input[++$i];
|
1503 |
-
} else if ( ( $byte & $utf8_4byte_bmask ) == $utf8_4byte ) {
|
1504 |
-
// Replace with ? to avoid MySQL exception
|
1505 |
-
$mb_char = '';
|
1506 |
-
$i += 3;
|
1507 |
-
}
|
1508 |
-
|
1509 |
-
$sanitized .= $mb_char;
|
1510 |
-
}
|
1511 |
-
|
1512 |
-
$input = $sanitized;
|
1513 |
-
}
|
1514 |
-
|
1515 |
-
return $input;
|
1516 |
-
}
|
1517 |
-
|
1518 |
-
} // end of class JR_InstagramSlider
|
1 |
<?php
|
2 |
/*
|
3 |
+
Plugin Name: Social Slider Widget
|
4 |
+
Plugin URI: https://cm-wp.com/instagram-slider-widget/
|
5 |
+
Version: 1.5.0
|
6 |
+
Description: Social Slider Widget is a responsive slider widget that shows 12 latest images from a public Instagram user and up to 18 images from a hashtag.
|
7 |
+
Author: creativemotion
|
8 |
+
Author URI: https://cm-wp.com/
|
9 |
+
Text Domain: instagram-slider-widget
|
10 |
+
Domain Path: /languages
|
11 |
+
License: GPL2
|
12 |
+
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
13 |
*/
|
14 |
|
15 |
+
// Exit if accessed directly
|
16 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
17 |
+
exit;
|
18 |
+
}
|
19 |
+
|
20 |
+
// Подключаем класс проверки совместимости
|
21 |
+
require_once( dirname( __FILE__ ) . '/libs/factory/core/includes/class-factory-requirements.php' );
|
22 |
+
|
23 |
+
$plugin_info = array(
|
24 |
+
'prefix' => 'wis_', // Префикс для базы данных и полей формы. Строка должна соответствовать условию [A-z0-9_].
|
25 |
+
'plugin_name' => 'wbcr_isw', // Кодовое название плагина, используется как уникальный идентификатор. Строка должна соответствовать условию [A-z0-9_].
|
26 |
+
'plugin_title' => __( 'Social Slider Widget', 'instagram-slider-widget' ), // Название плагина. То же что и Plugin Name. Используется в интерфейсе и сообщениях.
|
27 |
+
'plugin_text_domain' => 'instagram-slider-widget', // Идентификатор перевода, указывается в load_plugin_textdomain()
|
28 |
+
|
29 |
+
// Служба поддержки
|
30 |
+
// Указываем ссылки и имена страниц сайта плагина, чтобы иметь к ним доступ внутри плагина.
|
31 |
+
'support_details' => array(
|
32 |
+
'url' => 'https://cm-wp.com/instagram-slider-widget',// Ссылка на сайт плагина
|
33 |
+
'pages_map' => array(
|
34 |
+
'features' => 'premium-features', // {site}/premium-features "страница возможности"
|
35 |
+
'pricing' => 'pricing', // {site}/prices страница "цены"
|
36 |
+
'support' => 'support', // {site}/support страница "служба поддержки"
|
37 |
+
'docs' => 'docs' // {site}/docs страница "документация"
|
38 |
+
)
|
39 |
+
),
|
40 |
+
|
41 |
+
// Настройка обновлений плагина
|
42 |
+
// Имеется ввиду настройка обновлений из удаленного репозитория. Это может быть wordpress.org, freemius.com, codecanyon.com
|
43 |
+
'has_updates' => true, // Нужно ли проверять обновления для этого плагина
|
44 |
+
'updates_settings' => array(
|
45 |
+
'repository' => 'wordpress', // Тип репозитория из которого получаем обновления. Может быть wordpress, freemius
|
46 |
+
'slug' => 'instagram-slider-widget', // Слаг плагина в удаленном репозитории
|
47 |
+
'maybe_rollback' => true, // Можно ли делать откат к предыдущей версии плагина?
|
48 |
+
'rollback_settings' => array(
|
49 |
+
'prev_stable_version' => '0.0.0' // Нужно указать предыдущую стабильную версию, к которой нужно сделать откат.
|
50 |
+
)
|
51 |
+
),
|
52 |
+
|
53 |
+
// Настройка премиум плагина
|
54 |
+
// Сюда входят настройки лицензирования и премиум обновлений плагина и его надстройки
|
55 |
+
'has_premium' => false, // Есть ли у текущего плагина премиум? Если false, премиум модуль загружен не будет
|
56 |
+
'license_settings' => array(
|
57 |
+
'provider' => '', // Тип лицензионного поставщика, может быть freemius, codecanyon, templatemonster
|
58 |
+
'slug' => 'instagram-slider-widget', // Слаг плагина в выбранном поставщике лицензий и обновлений
|
59 |
+
'plugin_id' => '', // ID плагина в freemius.com
|
60 |
+
'public_key' => '', // Публичный ключ плагина в freemius.com
|
61 |
+
'price' => 0, // Минимальная цена плагина, выводится в рекламных блоках
|
62 |
+
// Настройка обновлений премиум плагина
|
63 |
+
'updates_settings' => array(
|
64 |
+
'maybe_rollback' => true, // Можно ли делать откат к предыдущей версии плагина?
|
65 |
+
'rollback_settings' => array(
|
66 |
+
'prev_stable_version' => '0.0.0' // Нужно указать предыдущую стабильную версию, к которой нужно сделать откат.
|
67 |
+
)
|
68 |
+
)
|
69 |
+
),
|
70 |
+
|
71 |
+
// Настройки рекламы от CreativeMotion
|
72 |
+
'render_adverts' => true, // Показывать рекламу CreativeMotion в админке Wordpress?
|
73 |
+
'adverts_settings' => array(
|
74 |
+
'dashboard_widget' => true, // если true, показывать виджет новостей на страницу Dashboard
|
75 |
+
'right_sidebar' => true, // если true, показывать виджет в правом сайбаре интерфейса плагина
|
76 |
+
'notice' => true, // если true, показывать сквозное уведомление на всех страницах админ панели Wordpress
|
77 |
+
),
|
78 |
+
|
79 |
+
// Подключаемые модуль фреймворка
|
80 |
+
// Необходимые для ускоренной разработки продуктов Webcrfatic
|
81 |
+
'load_factory_modules' => array(
|
82 |
+
array( 'libs/factory/bootstrap', 'factory_bootstrap_421', 'admin' ), // Модуль позволяет использовать различные js виджеты и стили оформление форм.
|
83 |
+
array( 'libs/factory/forms', 'factory_forms_418', 'admin' ), // Модуль позволяет быстро создавать формы и готовые поля настроек
|
84 |
+
array( 'libs/factory/pages', 'factory_pages_420', 'admin' ), // Модуль позволяет создавать страницы плагина, в том числе шаблонизированные страницы
|
85 |
+
array( 'libs/factory/freemius', 'factory_freemius_108', 'all' ), // Модуль для работы с freemius.com, содержит api библиотеку и провайдеры для премиум менеджера
|
86 |
+
array( 'libs/factory/adverts', 'factory_adverts_102', 'admin') // Модуль для показа рекламы в админпанели Wordpress, вся реклама вытягивается через API Creative Motion
|
87 |
+
)
|
88 |
+
);
|
89 |
+
|
90 |
+
$wis_compatibility = new Wbcr_Factory420_Requirements( __FILE__, array_merge( $plugin_info, array(
|
91 |
+
'plugin_already_activate' => defined( 'WIS_PLUGIN_ACTIVE' ),
|
92 |
+
'required_php_version' => '5.4',
|
93 |
+
'required_wp_version' => '4.2.0',
|
94 |
+
'required_clearfy_check_component' => false
|
95 |
+
) ) );
|
96 |
|
97 |
/**
|
98 |
+
* If the plugin is compatible, then it will continue its work, otherwise it will be stopped,
|
99 |
+
* and the user will throw a warning.
|
100 |
*/
|
101 |
+
if ( ! $wis_compatibility->check() ) {
|
102 |
+
return;
|
103 |
+
}
|
104 |
+
/********************************************/
|
105 |
+
// Устанавливает статус плагина, как активный
|
106 |
+
define( 'WIS_PLUGIN_ACTIVE', true );
|
107 |
+
// Версия плагина
|
108 |
+
define( 'WIS_PLUGIN_VERSION', $wis_compatibility->get_plugin_version() );
|
109 |
+
define( 'WIS_PLUGIN_FILE', __FILE__ );
|
110 |
+
define( 'WIS_ABSPATH', dirname( __FILE__ ) );
|
111 |
+
define( 'WIS_PLUGIN_BASENAME', plugin_basename( __FILE__ ));
|
112 |
+
define( 'WIS_PLUGIN_SLUG', dirname(plugin_basename( __FILE__ )));
|
113 |
+
// Ссылка к директории плагина
|
114 |
+
define( 'WIS_PLUGIN_URL', plugins_url( null, __FILE__ ) );
|
115 |
+
// Директория плагина
|
116 |
+
define( 'WIS_PLUGIN_DIR', dirname( __FILE__ ) );
|
117 |
+
/********************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
118 |
|
|
|
|
|
|
|
|
|
119 |
|
|
|
|
|
|
|
120 |
|
|
|
|
|
|
|
121 |
|
122 |
+
/**
|
123 |
+
* -----------------------------------------------------------------------------
|
124 |
+
* PLUGIN INIT
|
125 |
+
* -----------------------------------------------------------------------------
|
126 |
+
*/
|
127 |
+
require_once( WIS_PLUGIN_DIR . '/libs/factory/core/boot.php' );
|
128 |
+
require_once( WIS_PLUGIN_DIR . '/includes/class-wis-plugin.php' );
|
129 |
+
|
130 |
+
try {
|
131 |
+
new WIS_Plugin( __FILE__, array_merge( $plugin_info, array(
|
132 |
+
'plugin_version' => WIS_PLUGIN_VERSION
|
133 |
+
) ) );
|
134 |
+
} catch( Exception $e ) {
|
135 |
+
// Plugin wasn't initialized due to an error
|
136 |
+
define( 'WIS_PLUGIN_THROW_ERROR', true );
|
137 |
+
|
138 |
+
$wis_plugin_error_func = function () use ( $e ) {
|
139 |
+
$error = sprintf( "The %s plugin has stopped. <b>Error:</b> %s Code: %s", 'Social Slider Widget', $e->getMessage(), $e->getCode() );
|
140 |
+
echo '<div class="notice notice-error"><p>' . $error . '</p></div>';
|
141 |
+
};
|
142 |
+
|
143 |
+
add_action( 'admin_notices', $wis_plugin_error_func );
|
144 |
+
add_action( 'network_admin_notices', $wis_plugin_error_func );
|
145 |
+
}
|
146 |
+
|
147 |
+
/*******************************************************************************/
|
148 |
+
/**
|
149 |
+
* On widgets Init register Widget
|
150 |
+
*/
|
151 |
+
require_once "includes/class-wis_instagram_slider.php";
|
152 |
+
add_action( 'widgets_init', array( 'WIS_InstagramSlider', 'register_widget' ) );
|
153 |
+
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/adverts/assets/index.php
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
libs/factory/adverts/assets/js/index.php
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
libs/factory/adverts/assets/js/script.js
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready( function($) {
|
2 |
+
// Отправдяем запрос на маркировку нотиса, если пользователь его закрыл
|
3 |
+
$( '.wbcr-advt-notice' ).click( function() {
|
4 |
+
$.post(
|
5 |
+
ajaxurl,
|
6 |
+
{
|
7 |
+
action: 'wbcr_advt_mark_notice'
|
8 |
+
},
|
9 |
+
function(data) {
|
10 |
+
}
|
11 |
+
);
|
12 |
+
});
|
13 |
+
});
|
libs/factory/adverts/boot.php
ADDED
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
use WBCR\Factory_Adverts_102\Base;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Factory Adverts
|
7 |
+
*
|
8 |
+
* @author Alexander Vitkalov <nechin.va@gmail.com>
|
9 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
10 |
+
* @since 1.0.0
|
11 |
+
*
|
12 |
+
* @package factory-ad-inserter
|
13 |
+
* @copyright (c) 2019, Webcraftic Ltd
|
14 |
+
*
|
15 |
+
* @version 1.2.3
|
16 |
+
*/
|
17 |
+
|
18 |
+
// Exit if accessed directly
|
19 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
20 |
+
exit;
|
21 |
+
}
|
22 |
+
|
23 |
+
if ( defined( 'FACTORY_ADVERTS_102_LOADED' ) || ( defined( 'FACTORY_ADVERTS_BLOCK' ) && FACTORY_ADVERTS_BLOCK ) ) {
|
24 |
+
return;
|
25 |
+
}
|
26 |
+
|
27 |
+
# Устанавливаем константу, что модуль уже загружен
|
28 |
+
define( 'FACTORY_ADVERTS_102_LOADED', true );
|
29 |
+
|
30 |
+
# Устанавливаем версию модуля
|
31 |
+
define( 'FACTORY_ADVERTS_102_VERSION', '1.0.2' );
|
32 |
+
|
33 |
+
# Регистрируем тектовый домен, для интернализации интерфейса модуля
|
34 |
+
load_plugin_textdomain( 'wbcr_factory_adverts_102', false, dirname( plugin_basename( __FILE__ ) ) . '/langs' );
|
35 |
+
|
36 |
+
# Устанавливаем директорию модуля
|
37 |
+
define( 'FACTORY_ADVERTS_102_DIR', dirname( __FILE__ ) );
|
38 |
+
|
39 |
+
# Устанавливаем url модуля
|
40 |
+
define( 'FACTORY_ADVERTS_102_URL', plugins_url( null, __FILE__ ) );
|
41 |
+
|
42 |
+
require_once( FACTORY_ADVERTS_102_DIR . '/includes/class-rest-request.php' );
|
43 |
+
require_once( FACTORY_ADVERTS_102_DIR . '/includes/class-base.php' );
|
44 |
+
|
45 |
+
/**
|
46 |
+
* @param Wbcr_Factory420_Plugin $plugin
|
47 |
+
*/
|
48 |
+
add_action( 'wbcr_factory_adverts_102_plugin_created', function ( $plugin ) {
|
49 |
+
$plugin->set_adverts_manager( "WBCR\Factory_Adverts_102\Base" );
|
50 |
+
} );
|
libs/factory/adverts/includes/class-adverts-base.php
ADDED
@@ -0,0 +1,261 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WBCR\Factory_Adverts_102;
|
4 |
+
|
5 |
+
// Exit if accessed directly
|
6 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
7 |
+
exit;
|
8 |
+
}
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Base class for adverts module.
|
12 |
+
*
|
13 |
+
* Contains methods for retrieving banner data for a specific position.
|
14 |
+
* With this class user cat get advert content for a specific position.
|
15 |
+
* This class use functional design pattern.
|
16 |
+
* It used in the main plugin file. Also some methods may used in any place of plugin.
|
17 |
+
*
|
18 |
+
* Example (main plugin file):
|
19 |
+
* // FRAMEWORK MODULES
|
20 |
+
* 'load_factory_modules' => array(
|
21 |
+
* ...
|
22 |
+
* array( 'libs/factory/adverts', 'factory_adverts_102', 'admin' ),
|
23 |
+
* ),
|
24 |
+
*
|
25 |
+
* if ( is_admin() ) {
|
26 |
+
* global $wbcr_PLUGIN_NAME_adinserter;
|
27 |
+
*
|
28 |
+
* $wbcr_PLUGIN_NAME_adinserter = new WBCR\Factory_Adverts_102\Base(
|
29 |
+
* __FILE__,
|
30 |
+
* array_merge(
|
31 |
+
* $plugin_info,
|
32 |
+
* array(
|
33 |
+
* 'dashboard_widget' => true, // show dashboard widget (default: false)
|
34 |
+
* 'right_sidebar' => true, // show adverts sidebar (default: false)
|
35 |
+
* 'notice' => true, // show notice message (default: false)
|
36 |
+
* )
|
37 |
+
* )
|
38 |
+
* );
|
39 |
+
* }
|
40 |
+
*
|
41 |
+
* Example (in any place):
|
42 |
+
* <?php
|
43 |
+
* global $wbcr_PLUGIN_NAME_adinserter;
|
44 |
+
* echo $wbcr_PLUGIN_NAME_adinserter->get_adverts( 'right_sidebar' );
|
45 |
+
* ?>
|
46 |
+
*
|
47 |
+
* Replace in the variable the phrase PLUGIN_NAME with the current plugin name!
|
48 |
+
*
|
49 |
+
* @author Alexander Vitkalov <nechin.va@gmail.com>
|
50 |
+
* @since 1.0.0 Added
|
51 |
+
* @package factory-adverts
|
52 |
+
* @copyright (c) 2019 Webcraftic Ltd
|
53 |
+
*/
|
54 |
+
class Base {
|
55 |
+
|
56 |
+
/*
|
57 |
+
* Contain array data with the plugin information and the module settings.
|
58 |
+
* Mainly used to get the name of the plugin and how to get the adverts blocks.
|
59 |
+
*
|
60 |
+
* @since 1.0.0 Added
|
61 |
+
*
|
62 |
+
* @var array Example: array(
|
63 |
+
* 'prefix' => 'wbcr_inp_',
|
64 |
+
* 'plugin_name' => 'wbcr_insert_php',
|
65 |
+
* 'plugin_title' => 'Woody ad snippets',
|
66 |
+
* 'plugin_text_domain' => 'insert-php',
|
67 |
+
* 'dashboard_widget' => true,
|
68 |
+
* 'right_sidebar' => true,
|
69 |
+
* 'notice' => true,
|
70 |
+
* ...
|
71 |
+
* )
|
72 |
+
*
|
73 |
+
*/
|
74 |
+
private $data = [];
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Wbcr_Factory_Adinserter constructor.
|
78 |
+
*
|
79 |
+
* - Store plugin information and settings.
|
80 |
+
* - Add filter and actions.
|
81 |
+
* - Include dashboard widget.
|
82 |
+
*
|
83 |
+
* @since 1.0.0 Added
|
84 |
+
*
|
85 |
+
* @param string $plugin_path Path to plugin base file
|
86 |
+
* @param array $data Array data with plugin information and settings (@see $data property example)
|
87 |
+
*/
|
88 |
+
public function __construct( $plugin_path, $data ) {
|
89 |
+
$this->data = $data;
|
90 |
+
|
91 |
+
add_filter( 'wbcr/factory/pages/impressive/widgets', [ $this, 'register_widgets' ], 10, 3 );
|
92 |
+
|
93 |
+
add_action( 'init', [ $this, 'add_notices' ] );
|
94 |
+
add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ] );
|
95 |
+
add_action( 'wp_ajax_wbcr_advt_mark_notice', [ $this, 'mark_notice' ] );
|
96 |
+
|
97 |
+
$this->include_dashboard();
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* Include dashboard widget
|
102 |
+
*
|
103 |
+
* Include functionality the output of the widget on the dashboard.
|
104 |
+
* Only one dashboard widget must be shown for some plugins with this setting (dashboard_widget).
|
105 |
+
*
|
106 |
+
* @since 1.0.0 Added
|
107 |
+
*/
|
108 |
+
private function include_dashboard() {
|
109 |
+
if ( isset( $this->data['dashboard_widget'] ) && $this->data['dashboard_widget'] && ! defined( 'FACTORY_ADVERTS_DASHBOARD_WIDGET' ) ) {
|
110 |
+
/**
|
111 |
+
* Dashboard widget is displays.
|
112 |
+
*
|
113 |
+
* Used only in this function.
|
114 |
+
*
|
115 |
+
* @since 1.0.0
|
116 |
+
* @var boolean Notes that the dashboard widget already displays.
|
117 |
+
*/
|
118 |
+
define( 'FACTORY_ADVERTS_DASHBOARD_WIDGET', true );
|
119 |
+
require_once FACTORY_ADVERTS_102_DIR . '/includes/class-adverts-dashboard-widget.php';
|
120 |
+
|
121 |
+
new Dashboard_Widget( $this->data['plugin_name'] );
|
122 |
+
}
|
123 |
+
}
|
124 |
+
|
125 |
+
/**
|
126 |
+
* Get advert content for selected position.
|
127 |
+
*
|
128 |
+
* @since 1.0.0 Added
|
129 |
+
*
|
130 |
+
* @param string $position The position for advert
|
131 |
+
*
|
132 |
+
* @return string
|
133 |
+
*/
|
134 |
+
private function get_content( $position ) {
|
135 |
+
$request = new Rest_Request( $this->data['plugin_name'], $position );
|
136 |
+
|
137 |
+
return $request->get_content();
|
138 |
+
}
|
139 |
+
|
140 |
+
/**
|
141 |
+
* Register widgets.
|
142 |
+
*
|
143 |
+
* Depending on the settings, register new widgets.
|
144 |
+
*
|
145 |
+
* @since 1.0.0 Added
|
146 |
+
*
|
147 |
+
* @param array $widgets Already existing registered widgets
|
148 |
+
* @param string $position Position for the widget
|
149 |
+
* @param string $plugin Plugin object for which the hook is run
|
150 |
+
*
|
151 |
+
* @return array array(
|
152 |
+
* 'adverts_widget' => '<p></p>',
|
153 |
+
* 'businnes_suggetion' => '<p></p>',
|
154 |
+
* 'support' => '<p></p>',
|
155 |
+
* ...
|
156 |
+
* )
|
157 |
+
*/
|
158 |
+
public function register_widgets( $widgets, $position, $plugin ) {
|
159 |
+
if ( $plugin->getPluginName() == $this->data['plugin_name'] && ! empty( $this->data ) && 'right' == $position ) {
|
160 |
+
if ( isset( $this->data['right_sidebar'] ) && $this->data['right_sidebar'] ) {
|
161 |
+
$content = $this->get_content( 'right_sidebar' );
|
162 |
+
|
163 |
+
$widgets['adverts_widget'] = $content;
|
164 |
+
}
|
165 |
+
|
166 |
+
if ( isset( $this->data['businnes_suggetion'] ) && $this->data['businnes_suggetion'] ) {
|
167 |
+
$content = $this->get_content( 'businnes_suggetion' );
|
168 |
+
|
169 |
+
$widgets['businnes_suggetion'] = $content;
|
170 |
+
}
|
171 |
+
|
172 |
+
if ( isset( $this->data['support'] ) && $this->data['support'] ) {
|
173 |
+
$content = $this->get_content( 'support' );
|
174 |
+
|
175 |
+
$widgets['support'] = $content;
|
176 |
+
}
|
177 |
+
}
|
178 |
+
|
179 |
+
return $widgets;
|
180 |
+
}
|
181 |
+
|
182 |
+
/**
|
183 |
+
* Add notice message.
|
184 |
+
*
|
185 |
+
* Only one notice must be shown for some plugins with this setting (notice).
|
186 |
+
*
|
187 |
+
* @since 1.0.0 Added
|
188 |
+
*/
|
189 |
+
public function add_notices() {
|
190 |
+
if ( isset( $this->data['notice'] ) && $this->data['notice'] && ! defined( 'FACTORY_ADINSERTER_NOTICE' ) ) {
|
191 |
+
/**
|
192 |
+
* Notice is displays.
|
193 |
+
*
|
194 |
+
* Used only in this function.
|
195 |
+
*
|
196 |
+
* @since 1.0.0
|
197 |
+
* @var boolean Notes that the notice already displays.
|
198 |
+
*/
|
199 |
+
define( 'FACTORY_ADINSERTER_NOTICE', true );
|
200 |
+
|
201 |
+
$content = $this->get_content( 'notice' );
|
202 |
+
$hash = md5( $content );
|
203 |
+
|
204 |
+
/* If the notice has not been closed by the user or the content of the notice has changed,
|
205 |
+
then we show the notice. */
|
206 |
+
if ( ! get_option( 'wbcr-advt-notice-' . $this->data['plugin_name'] ) || get_option( 'wbcr-advt-notice-hash-' . $this->data['plugin_name'] ) != $hash ) {
|
207 |
+
update_option( 'wbcr-advt-notice-' . $this->data['plugin_name'], false );
|
208 |
+
update_option( 'wbcr-advt-notice-hash-' . $this->data['plugin_name'], $hash );
|
209 |
+
add_action( 'admin_notices', function () {
|
210 |
+
echo $this->get_content( 'notice' );
|
211 |
+
} );
|
212 |
+
}
|
213 |
+
}
|
214 |
+
}
|
215 |
+
|
216 |
+
/**
|
217 |
+
* Add javascript file.
|
218 |
+
*
|
219 |
+
* File contains code for intercept the click event and post ajax request.
|
220 |
+
*
|
221 |
+
* @since 1.0.0 Added
|
222 |
+
*/
|
223 |
+
public function enqueue_scripts() {
|
224 |
+
if ( isset( $this->data['notice'] ) && $this->data['notice'] && ! get_option( 'wbcr-advt-notice-' . $this->data['plugin_name'] ) ) {
|
225 |
+
wp_enqueue_script( 'factory-adverts-notice', FACTORY_ADVERTS_102_URL . '/assets/js/script.js' );
|
226 |
+
}
|
227 |
+
}
|
228 |
+
|
229 |
+
/**
|
230 |
+
* Mark notice closed for this plugin.
|
231 |
+
*
|
232 |
+
* Callback for ajax action. Execute when user close the notice.
|
233 |
+
*
|
234 |
+
* @since 1.0.0 Added
|
235 |
+
* @see enqueue_scripts()
|
236 |
+
*/
|
237 |
+
public function mark_notice() {
|
238 |
+
update_option( 'wbcr-advt-notice-' . $this->data['plugin_name'], true );
|
239 |
+
exit();
|
240 |
+
}
|
241 |
+
|
242 |
+
/**
|
243 |
+
* Directly get advert content for selected position.
|
244 |
+
*
|
245 |
+
* @since 1.0.0 Added
|
246 |
+
*
|
247 |
+
* @param string $position Custom position name
|
248 |
+
*
|
249 |
+
* @return string
|
250 |
+
*/
|
251 |
+
public function get_adverts( $position ) {
|
252 |
+
$content = '';
|
253 |
+
|
254 |
+
if ( $position ) {
|
255 |
+
$content = $this->get_content( $position );
|
256 |
+
}
|
257 |
+
|
258 |
+
return $content;
|
259 |
+
}
|
260 |
+
|
261 |
+
}
|
libs/factory/adverts/includes/class-adverts-dashboard-widget.php
ADDED
@@ -0,0 +1,107 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WBCR\Factory_Adverts_102;
|
4 |
+
|
5 |
+
// Exit if accessed directly
|
6 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
7 |
+
exit;
|
8 |
+
}
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Adverts Dashboard Widget.
|
12 |
+
*
|
13 |
+
* Adds a widget with a banner or a list of news.
|
14 |
+
*
|
15 |
+
* @author Alexander Vitkalov <nechin.va@gmail.com>
|
16 |
+
* @since 1.0.0 Added
|
17 |
+
* @package factory-adverts
|
18 |
+
* @copyright (c) 2019 Webcraftic Ltd
|
19 |
+
*/
|
20 |
+
class Dashboard_Widget extends Rest_Request {
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Dashboard_Widget constructor.
|
24 |
+
*
|
25 |
+
* Call parent constructor. Registration hooks.
|
26 |
+
*
|
27 |
+
* @since 1.0.0 Added
|
28 |
+
*
|
29 |
+
* @param string $plugin_name Plugin name from parameter plugin_name
|
30 |
+
*/
|
31 |
+
public function __construct( $plugin_name ) {
|
32 |
+
parent::__construct( $plugin_name, 'dashboard' );
|
33 |
+
|
34 |
+
$this->register_hooks();
|
35 |
+
}
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Registration hooks.
|
39 |
+
*
|
40 |
+
* @since 1.0.0 Added
|
41 |
+
*/
|
42 |
+
public function register_hooks() {
|
43 |
+
add_action( 'wp_dashboard_setup', array( $this, 'add_dashboard_widgets' ) );
|
44 |
+
}
|
45 |
+
|
46 |
+
/**
|
47 |
+
* Add the News widget to the dashboard.
|
48 |
+
*
|
49 |
+
* @since 1.0.0 Added
|
50 |
+
*/
|
51 |
+
public function add_dashboard_widgets() {
|
52 |
+
$widget_id = 'wbcr-adinserter-dashboard-widget';
|
53 |
+
wp_add_dashboard_widget(
|
54 |
+
$widget_id,
|
55 |
+
__( 'News', '' ),
|
56 |
+
array( $this, 'dashboard_widget_adverts' )
|
57 |
+
);
|
58 |
+
|
59 |
+
/**
|
60 |
+
* Set dashboard widget first in order
|
61 |
+
*
|
62 |
+
* @since 1.2.3 Added
|
63 |
+
*/
|
64 |
+
global $wp_meta_boxes;
|
65 |
+
|
66 |
+
$normal_core = $wp_meta_boxes['dashboard']['normal']['core'];
|
67 |
+
$widget_backup = array( $widget_id => $normal_core[ $widget_id ] );
|
68 |
+
unset( $normal_core[ $widget_id ] );
|
69 |
+
$sorted_core = array_merge( $widget_backup, $normal_core );
|
70 |
+
|
71 |
+
$wp_meta_boxes['dashboard']['normal']['core'] = $sorted_core;
|
72 |
+
}
|
73 |
+
|
74 |
+
/**
|
75 |
+
* Create the function to output the contents of the Dashboard Widget.
|
76 |
+
*
|
77 |
+
* @since 1.0.0 Added
|
78 |
+
*/
|
79 |
+
public function dashboard_widget_adverts() {
|
80 |
+
$content = $this->get_content();
|
81 |
+
if ( ! empty( $content ) ) {
|
82 |
+
?>
|
83 |
+
<div class="wordpress-news hide-if-no-js">
|
84 |
+
<?php $this->show_adverts( $content ); ?>
|
85 |
+
</div>
|
86 |
+
<?php
|
87 |
+
}
|
88 |
+
}
|
89 |
+
|
90 |
+
/**
|
91 |
+
* Output advert content.
|
92 |
+
*
|
93 |
+
* @since 1.0.0 Added
|
94 |
+
*
|
95 |
+
* @param $content string
|
96 |
+
*/
|
97 |
+
public function show_adverts( $content ) {
|
98 |
+
if ( ! empty( $content ) ) :
|
99 |
+
?>
|
100 |
+
<div class="rss-widget">
|
101 |
+
<?php echo $content; ?>
|
102 |
+
</div>
|
103 |
+
<?php
|
104 |
+
endif;
|
105 |
+
}
|
106 |
+
|
107 |
+
}
|
libs/factory/adverts/includes/class-adverts-rest-request.php
ADDED
@@ -0,0 +1,180 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WBCR\Factory_Adverts_102;
|
4 |
+
|
5 |
+
// Exit if accessed directly
|
6 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
7 |
+
exit;
|
8 |
+
}
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Factory request class.
|
12 |
+
*
|
13 |
+
* Performs a server request, retrieves banner data and stores it in the cache.
|
14 |
+
*
|
15 |
+
* @author Alexander Vitkalov <nechin.va@gmail.com>
|
16 |
+
* @since 1.0.0 Added
|
17 |
+
* @package factory-adverts
|
18 |
+
* @copyright (c) 2019 Webcraftic Ltd
|
19 |
+
*/
|
20 |
+
class Rest_Request {
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Rest route path.
|
24 |
+
*
|
25 |
+
* Define rest route path for rest request.
|
26 |
+
*
|
27 |
+
* @since 1.0.0
|
28 |
+
* @var string
|
29 |
+
* @uses do_rest_request()
|
30 |
+
*/
|
31 |
+
const FACTORY_ADVERTS_REST_ROUTE = '/adverds/v1/advt';
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Plugin name.
|
35 |
+
*
|
36 |
+
* Set on class initialization from parameter plugin_name.
|
37 |
+
* Used as query parameter in rest request.
|
38 |
+
*
|
39 |
+
* @since 1.0.0 Added
|
40 |
+
*
|
41 |
+
* @var string
|
42 |
+
*/
|
43 |
+
private $plugin_name = '';
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Adverts position.
|
47 |
+
*
|
48 |
+
* Position for advert (dashboard_widget, right_sidebar, notice, businnes_suggetion, support)
|
49 |
+
*
|
50 |
+
* Set on class initialization.
|
51 |
+
* Used as query parameter in rest request.
|
52 |
+
*
|
53 |
+
* @since 1.0.0 Added
|
54 |
+
*
|
55 |
+
* @var string
|
56 |
+
*/
|
57 |
+
private $ad_position = '';
|
58 |
+
|
59 |
+
/**
|
60 |
+
* Request constructor.
|
61 |
+
*
|
62 |
+
* Variable initialization.
|
63 |
+
*
|
64 |
+
* @since 1.0.0 Added
|
65 |
+
*
|
66 |
+
* @param string $plugin_name Plugin name from parameter plugin_name
|
67 |
+
* @param string $position Position for advert
|
68 |
+
*/
|
69 |
+
public function __construct( $plugin_name, $position ) {
|
70 |
+
$this->plugin_name = $plugin_name;
|
71 |
+
$this->ad_position = $position;
|
72 |
+
}
|
73 |
+
|
74 |
+
/**
|
75 |
+
* Get key for cached data.
|
76 |
+
*
|
77 |
+
* Used for store and get cached data for current plugin and position.
|
78 |
+
*
|
79 |
+
* @since 1.0.0 Added
|
80 |
+
*
|
81 |
+
* @return string
|
82 |
+
*/
|
83 |
+
private function get_key() {
|
84 |
+
return md5( self::FACTORY_ADVERTS_REST_ROUTE . $this->plugin_name . $this->ad_position );
|
85 |
+
}
|
86 |
+
|
87 |
+
/**
|
88 |
+
* Get data from cache.
|
89 |
+
*
|
90 |
+
* If data in the cache, not empty and not expired, then get data from cache. Or get data from server.
|
91 |
+
*
|
92 |
+
* @since 1.0.0 Added
|
93 |
+
*
|
94 |
+
* @return mixed array(
|
95 |
+
* 'plugin' => 'wbcr_insert_php',
|
96 |
+
* 'content' => '<p></p>',
|
97 |
+
* 'expires' => 1563542199,
|
98 |
+
* );
|
99 |
+
*/
|
100 |
+
private function get_cache() {
|
101 |
+
|
102 |
+
$cached_data = defined( 'FACTORY_ADVERTS_DEBUG' ) && FACTORY_ADVERTS_DEBUG ? false : get_option( $this->get_key() );
|
103 |
+
|
104 |
+
if ( empty( $cached_data ) || ! isset( $cached_data['expires'] ) || ! isset( $cached_data['content'] ) || empty( $cached_data['expires'] ) || $cached_data['expires'] <= current_time( 'timestamp' ) ) {
|
105 |
+
$data = $this->do_rest_request();
|
106 |
+
|
107 |
+
if ( ! empty( $data ) && isset( $data['content'] ) && isset( $data['expires'] ) ) {
|
108 |
+
update_option( $this->get_key(), $data );
|
109 |
+
}
|
110 |
+
} else {
|
111 |
+
$data = $cached_data;
|
112 |
+
}
|
113 |
+
|
114 |
+
return $data;
|
115 |
+
}
|
116 |
+
|
117 |
+
/**
|
118 |
+
* Get adverts content.
|
119 |
+
*
|
120 |
+
* @since 1.0.0 Added
|
121 |
+
*
|
122 |
+
* @return string
|
123 |
+
*/
|
124 |
+
public function get_content() {
|
125 |
+
$content = '';
|
126 |
+
|
127 |
+
$data = $this->get_cache();
|
128 |
+
|
129 |
+
if ( $data && isset( $data['content'] ) ) {
|
130 |
+
$content = $data['content'];
|
131 |
+
}
|
132 |
+
|
133 |
+
return $content;
|
134 |
+
}
|
135 |
+
|
136 |
+
/**
|
137 |
+
* Performs rest api request.
|
138 |
+
*
|
139 |
+
* If defined WBCR_ADINSERTER_REST_URL, then data requested from the remote server.
|
140 |
+
* Otherwise data will be requested from the same server.
|
141 |
+
* Defined in boot.php
|
142 |
+
*
|
143 |
+
* In some case on the server (Apache) in the .htaccess must be set
|
144 |
+
* RewriteRule ^wp-json/(.*)[?](.*) /?rest_route=/$1&$2 [L]
|
145 |
+
*
|
146 |
+
* @since 1.0.0 Added
|
147 |
+
*
|
148 |
+
* @return mixed array(
|
149 |
+
* 'plugin' => 'wbcr_insert_php',
|
150 |
+
* 'content' => '<p></p>',
|
151 |
+
* 'expires' => 1563542199,
|
152 |
+
* );
|
153 |
+
*/
|
154 |
+
private function do_rest_request() {
|
155 |
+
$empty_data = [
|
156 |
+
'plugin' => $this->plugin_name,
|
157 |
+
'content' => '',
|
158 |
+
'expires' => current_time( 'timestamp' ) + 60 * 60,
|
159 |
+
];
|
160 |
+
|
161 |
+
$url = site_url();
|
162 |
+
if ( defined( 'WBCR_ADINSERTER_REST_URL' ) && '' != WBCR_ADINSERTER_REST_URL ) {
|
163 |
+
$url = WBCR_ADINSERTER_REST_URL;
|
164 |
+
}
|
165 |
+
|
166 |
+
// Remote rest request
|
167 |
+
$url = rtrim( $url, '/' ) . '/wp-json' . self::FACTORY_ADVERTS_REST_ROUTE;
|
168 |
+
$url = add_query_arg( 'plugin', $this->plugin_name, $url );
|
169 |
+
$url = add_query_arg( 'position', $this->ad_position, $url );
|
170 |
+
|
171 |
+
$response = wp_remote_get( $url );
|
172 |
+
|
173 |
+
$code = wp_remote_retrieve_response_code( $response );
|
174 |
+
$body = wp_remote_retrieve_body( $response );
|
175 |
+
$data = (array) json_decode( $body );
|
176 |
+
|
177 |
+
return 200 == $code && $data && isset( $data['expires'] ) ? $data : $empty_data;
|
178 |
+
}
|
179 |
+
|
180 |
+
}
|
libs/factory/adverts/includes/class-base.php
ADDED
@@ -0,0 +1,323 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WBCR\Factory_Adverts_102;
|
4 |
+
|
5 |
+
// Exit if accessed directly
|
6 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
7 |
+
exit;
|
8 |
+
}
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Base class for adverts module.
|
12 |
+
*
|
13 |
+
* Contains methods for retrieving banner data for a specific position.
|
14 |
+
* With this class user cat get advert content for a specific position.
|
15 |
+
* This class use functional design pattern.
|
16 |
+
*
|
17 |
+
* @author Alexander Vitkalov <nechin.va@gmail.com>
|
18 |
+
* @since 1.0.0 Added
|
19 |
+
* @package factory-adverts
|
20 |
+
* @copyright (c) 2019 Webcraftic Ltd
|
21 |
+
*/
|
22 |
+
class Base {
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Экзепляр плагина с которым взаимодействует этот модуль
|
26 |
+
*
|
27 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
28 |
+
* @since 1.0.1
|
29 |
+
* @var \Wbcr_Factory420_Plugin
|
30 |
+
*/
|
31 |
+
private $plugin;
|
32 |
+
|
33 |
+
/*
|
34 |
+
* Contain array data with the plugin information and the module settings.
|
35 |
+
* Mainly used to get the name of the plugin and how to get the adverts blocks.
|
36 |
+
*
|
37 |
+
* @since 1.0.0 Added
|
38 |
+
*
|
39 |
+
* @var array Example: array(
|
40 |
+
* 'prefix' => 'wbcr_inp_',
|
41 |
+
* 'plugin_name' => 'wbcr_insert_php',
|
42 |
+
* 'plugin_title' => 'Woody ad snippets',
|
43 |
+
* 'plugin_text_domain' => 'insert-php',
|
44 |
+
* 'dashboard_widget' => true,
|
45 |
+
* 'right_sidebar' => true,
|
46 |
+
* 'notice' => true,
|
47 |
+
* ...
|
48 |
+
* )
|
49 |
+
*
|
50 |
+
*/
|
51 |
+
private $settings = [];
|
52 |
+
|
53 |
+
/**
|
54 |
+
* Экземпляр класса для работы API CreativeMotion
|
55 |
+
*
|
56 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
57 |
+
* @since 1.0.1
|
58 |
+
* @var \WBCR\Factory_Adverts_102\Creative_Motion_API
|
59 |
+
*/
|
60 |
+
private $api;
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Сохраняем уже полученные данные, для объектного кеширования
|
64 |
+
*
|
65 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
66 |
+
* @since 1.0.1
|
67 |
+
* @var array
|
68 |
+
*/
|
69 |
+
private $placements = [];
|
70 |
+
|
71 |
+
/**
|
72 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
73 |
+
* @since 1.0.1
|
74 |
+
* @var array
|
75 |
+
*/
|
76 |
+
private $errors = [];
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Wbcr_Factory_Adinserter constructor.
|
80 |
+
*
|
81 |
+
* - Store plugin information and settings.
|
82 |
+
* - Add filter and actions.
|
83 |
+
* - Include dashboard widget.
|
84 |
+
*
|
85 |
+
* @since 1.0.0 Added
|
86 |
+
*
|
87 |
+
* @param \Wbcr_Factory420_Plugin $plugin
|
88 |
+
*/
|
89 |
+
public function __construct( \Wbcr_Factory420_Plugin $plugin, $settings ) {
|
90 |
+
$this->plugin = $plugin;
|
91 |
+
|
92 |
+
$this->settings = wp_parse_args( $settings, [
|
93 |
+
'dashboard_widget' => false, // show dashboard widget (default: false)
|
94 |
+
'right_sidebar' => false, // show adverts sidebar (default: false)
|
95 |
+
'notice' => false, // show notice message (default: false),
|
96 |
+
'business_suggetion' => false,
|
97 |
+
'support' => false
|
98 |
+
] );
|
99 |
+
|
100 |
+
$this->api = new Creative_Motion_API( $this->plugin );
|
101 |
+
|
102 |
+
add_filter( 'wbcr/factory/pages/impressive/widgets', [ $this, 'register_plugin_widgets' ], 10, 3 );
|
103 |
+
add_action( 'wbcr_factory_notices_000_list', [ $this, 'register_plugin_notice' ], 10, 2 );
|
104 |
+
add_action( 'current_screen', [ $this, 'register_dashboard_widget' ], 10, 2 );
|
105 |
+
}
|
106 |
+
|
107 |
+
/**
|
108 |
+
* Directly get advert content for selected position.
|
109 |
+
*
|
110 |
+
* @since 1.0.1 Rename method. Content should now be printed.
|
111 |
+
* @since 1.0.0 Added
|
112 |
+
*
|
113 |
+
* @param string $position Custom position name
|
114 |
+
*
|
115 |
+
* @return void
|
116 |
+
*/
|
117 |
+
public function render_placement( $position = 'right_sidebar' ) {
|
118 |
+
$content = '';
|
119 |
+
|
120 |
+
if ( $position ) {
|
121 |
+
$content = $this->get_content( $position );
|
122 |
+
}
|
123 |
+
|
124 |
+
echo $content;
|
125 |
+
}
|
126 |
+
|
127 |
+
/**
|
128 |
+
* Register widgets.
|
129 |
+
*
|
130 |
+
* Depending on the settings, register new widgets.
|
131 |
+
*
|
132 |
+
* @since 1.0.0 Added
|
133 |
+
*
|
134 |
+
* @param array $widgets Already existing registered widgets
|
135 |
+
* @param string $position Position for the widget
|
136 |
+
* @param string $plugin Plugin object for which the hook is run
|
137 |
+
*
|
138 |
+
* @return array array(
|
139 |
+
* 'adverts_widget' => '<p></p>',
|
140 |
+
* 'business_suggetion' => '<p></p>',
|
141 |
+
* 'support' => '<p></p>',
|
142 |
+
* ...
|
143 |
+
* )
|
144 |
+
*/
|
145 |
+
public function register_plugin_widgets( $widgets, $position, $plugin ) {
|
146 |
+
if ( $plugin->getPluginName() == $this->plugin->getPluginName() && 'right' == $position ) {
|
147 |
+
|
148 |
+
if ( $this->settings['right_sidebar'] ) {
|
149 |
+
$content = $this->get_content( 'right_sidebar' );
|
150 |
+
$widgets['adverts_widget'] = $content;
|
151 |
+
|
152 |
+
if ( empty( $widgets['adverts_widget'] ) ) {
|
153 |
+
if ( defined( 'FACTORY_ADVERTS_DEBUG' ) && FACTORY_ADVERTS_DEBUG ) {
|
154 |
+
$debug_message = '<div style="background: #fff4f1;padding: 10px;color: #a58074;">';
|
155 |
+
$debug_message .= $this->get_debug_message( 'right_sidebar' );
|
156 |
+
$debug_message .= '</div>';
|
157 |
+
|
158 |
+
$widgets['adverts_widget'] = $debug_message;
|
159 |
+
} else {
|
160 |
+
unset( $widgets['adverts_widget'] );
|
161 |
+
}
|
162 |
+
}
|
163 |
+
}
|
164 |
+
|
165 |
+
if ( $this->settings['business_suggetion'] ) {
|
166 |
+
$content = $this->get_content( 'business_suggetion' );
|
167 |
+
|
168 |
+
if ( ! empty( $content ) ) {
|
169 |
+
$widgets['business_suggetion'] = $content;
|
170 |
+
}
|
171 |
+
}
|
172 |
+
|
173 |
+
if ( $this->settings['support'] ) {
|
174 |
+
$content = $this->get_content( 'support' );
|
175 |
+
|
176 |
+
if ( ! empty( $content ) ) {
|
177 |
+
$widgets['support'] = $content;
|
178 |
+
}
|
179 |
+
}
|
180 |
+
}
|
181 |
+
|
182 |
+
return $widgets;
|
183 |
+
}
|
184 |
+
|
185 |
+
/**
|
186 |
+
* Регистрирует уведомление для текущего плагина
|
187 |
+
*
|
188 |
+
* Мы добавляем уведомления в массив всех уведомлений плагина с ключем 'adverts_notice',
|
189 |
+
* то есть если другие плагины, тоже добавят свои рекламные уведомления, они просто
|
190 |
+
* будут перезаписывать друг друга, в итоге будет отображено только одно рекламное
|
191 |
+
* уведомеление. Это нужно для того, чтобы ограничить пользователя от спама.
|
192 |
+
*
|
193 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
194 |
+
*
|
195 |
+
* @since 1.0.1 Переделан полностью под интферфейс фреймворка. Используем встроенную систему уведомлений.
|
196 |
+
* @since 1.0.0 Added
|
197 |
+
*
|
198 |
+
* @param array $notices Массив со списком всех уведомлений, которые будут напечатыны в админ панели
|
199 |
+
* @param string $plugin_name Имя плагина, передано для того, чтобы выводить уведомления условно, только для конкретного плагина
|
200 |
+
*/
|
201 |
+
public function register_plugin_notice( $notices, $plugin_name ) {
|
202 |
+
if ( $plugin_name !== $this->plugin->getPluginName() ) {
|
203 |
+
return $notices;
|
204 |
+
}
|
205 |
+
|
206 |
+
if ( $this->settings['notice'] ) {
|
207 |
+
$notice_content = $this->get_content( 'notice' );
|
208 |
+
|
209 |
+
if ( empty( $notice_content ) ) {
|
210 |
+
# Информация для отладки
|
211 |
+
if ( defined( 'FACTORY_ADVERTS_DEBUG' ) && FACTORY_ADVERTS_DEBUG ) {
|
212 |
+
$debug_message = $this->get_debug_message( 'notice' );
|
213 |
+
|
214 |
+
$notices['adverts_notice'] = [
|
215 |
+
'id' => 'adverts_debug',
|
216 |
+
'type' => 'error',
|
217 |
+
'dismissible' => false,
|
218 |
+
'where' => [ 'plugins', 'themes', 'dashboard', 'edit' ],
|
219 |
+
'dismiss_expires' => 0,
|
220 |
+
'text' => '<p><b>' . $this->plugin->getPluginTitle() . '</b>:<br>' . $debug_message . '</p>'
|
221 |
+
];
|
222 |
+
}
|
223 |
+
|
224 |
+
return $notices;
|
225 |
+
}
|
226 |
+
|
227 |
+
$hash = md5( $notice_content );
|
228 |
+
|
229 |
+
$notices['adverts_notice'] = [
|
230 |
+
'id' => 'adverts_' . $hash,
|
231 |
+
'type' => 'success',
|
232 |
+
'dismissible' => true,
|
233 |
+
'where' => [ 'plugins', 'themes', 'dashboard', 'edit' ],
|
234 |
+
'dismiss_expires' => 0,
|
235 |
+
'text' => '<p><b>' . $this->plugin->getPluginTitle() . '</b>:<br>' . $notice_content . '</p>'
|
236 |
+
];
|
237 |
+
}
|
238 |
+
|
239 |
+
return $notices;
|
240 |
+
}
|
241 |
+
|
242 |
+
/**
|
243 |
+
* Include dashboard widget
|
244 |
+
*
|
245 |
+
* Include functionality the output of the widget on the dashboard.
|
246 |
+
* Only one dashboard widget must be shown for some plugins with this setting (dashboard_widget).
|
247 |
+
*
|
248 |
+
* @since 1.0.0 Added
|
249 |
+
*/
|
250 |
+
public function register_dashboard_widget() {
|
251 |
+
if ( $this->settings['dashboard_widget'] && current_user_can( 'manage_options' ) ) {
|
252 |
+
$current_screen = get_current_screen();
|
253 |
+
|
254 |
+
if ( 'dashboard' !== $current_screen->id ) {
|
255 |
+
return;
|
256 |
+
}
|
257 |
+
|
258 |
+
$content = $this->get_content( 'dashboard_widget' );
|
259 |
+
|
260 |
+
if ( empty( $content ) && defined( 'FACTORY_ADVERTS_DEBUG' ) && FACTORY_ADVERTS_DEBUG ) {
|
261 |
+
$content = $this->get_debug_message( 'dashboard_widget' );
|
262 |
+
}
|
263 |
+
|
264 |
+
require_once FACTORY_ADVERTS_102_DIR . '/includes/class-dashboard-widget.php';
|
265 |
+
new Dashboard_Widget( $this->plugin, $content );
|
266 |
+
}
|
267 |
+
}
|
268 |
+
|
269 |
+
/**
|
270 |
+
* Позволяет получить сообщение об ошибках
|
271 |
+
*
|
272 |
+
* Метод проверяет последние ошибки, которые могли произойти в результате api запроса.
|
273 |
+
* Если ошибки есть, он выводит предупреждение и список последних ошибок. Если ошибок нет,
|
274 |
+
* метод вернет просто предупреждение, что реклама не настроена.
|
275 |
+
*
|
276 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
277 |
+
* @since 1.0.1
|
278 |
+
*
|
279 |
+
* @param string $position Position for the widget
|
280 |
+
*
|
281 |
+
* @return string Возвращает сообщение с последниеми ошибками для отладки
|
282 |
+
*/
|
283 |
+
private function get_debug_message( $position ) {
|
284 |
+
$debug_massage = 'Plugin ads not configured or server unavailable. See full error report below.<br>';
|
285 |
+
|
286 |
+
if ( isset( $this->errors[ $position ] ) && ! empty( $this->errors ) ) {
|
287 |
+
$debug_massage .= '<b>Last errors:</b><br>';
|
288 |
+
foreach ( $this->errors[ $position ] as $error_code => $error_message ) {
|
289 |
+
$debug_massage .= 'Code: ' . $error_code . ' Error: ' . $error_message . '<br>';
|
290 |
+
}
|
291 |
+
}
|
292 |
+
|
293 |
+
return $debug_massage;
|
294 |
+
}
|
295 |
+
|
296 |
+
/**
|
297 |
+
* Get advert content for selected position.
|
298 |
+
*
|
299 |
+
* @since 1.0.1 Полностью переписан
|
300 |
+
* @since 1.0.0 Added
|
301 |
+
*
|
302 |
+
* @param string $position The position for advert
|
303 |
+
*
|
304 |
+
* @return string
|
305 |
+
*/
|
306 |
+
private function get_content( $position ) {
|
307 |
+
if ( isset( $this->placements[ $position ] ) ) {
|
308 |
+
return $this->placements[ $position ];
|
309 |
+
}
|
310 |
+
|
311 |
+
$content = $this->api->get_content( $position );
|
312 |
+
|
313 |
+
if ( is_wp_error( $content ) ) {
|
314 |
+
$this->errors[ $position ][ $content->get_error_code() ] = $content->get_error_message();
|
315 |
+
|
316 |
+
return null;
|
317 |
+
}
|
318 |
+
|
319 |
+
$this->placements[ $position ] = $content;
|
320 |
+
|
321 |
+
return $content;
|
322 |
+
}
|
323 |
+
}
|
libs/factory/adverts/includes/class-dashboard-widget.php
ADDED
@@ -0,0 +1,99 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WBCR\Factory_Adverts_102;
|
4 |
+
|
5 |
+
// Exit if accessed directly
|
6 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
7 |
+
exit;
|
8 |
+
}
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Adverts Dashboard Widget.
|
12 |
+
*
|
13 |
+
* Adds a widget with a banner or a list of news.
|
14 |
+
*
|
15 |
+
* @author Alexander Vitkalov <nechin.va@gmail.com>
|
16 |
+
* @since 1.0.0 Added
|
17 |
+
* @package factory-adverts
|
18 |
+
* @copyright (c) 2019 Webcraftic Ltd
|
19 |
+
*/
|
20 |
+
class Dashboard_Widget {
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Контент, который должен быть напечатан внутри дашбоард виджета
|
24 |
+
*
|
25 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
26 |
+
* @since 1.0.1
|
27 |
+
* @var string
|
28 |
+
*/
|
29 |
+
private $content;
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Экзепляр плагина с которым взаимодействует этот модуль
|
33 |
+
*
|
34 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
35 |
+
* @since 1.0.1
|
36 |
+
* @var \Wbcr_Factory420_Plugin
|
37 |
+
*/
|
38 |
+
private $plugin;
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Dashboard_Widget constructor.
|
42 |
+
*
|
43 |
+
* Call parent constructor. Registration hooks.
|
44 |
+
*
|
45 |
+
* @since 1.0.0 Added
|
46 |
+
*
|
47 |
+
* @param \Wbcr_Factory420_Plugin $plugin
|
48 |
+
* @param string $content
|
49 |
+
*/
|
50 |
+
public function __construct( \Wbcr_Factory420_Plugin $plugin, $content ) {
|
51 |
+
|
52 |
+
$this->plugin = $plugin;
|
53 |
+
$this->content = $content;
|
54 |
+
|
55 |
+
if ( ! empty( $this->content ) ) {
|
56 |
+
add_action( 'wp_dashboard_setup', [ $this, 'add_dashboard_widgets' ], 999 );
|
57 |
+
}
|
58 |
+
}
|
59 |
+
|
60 |
+
/**
|
61 |
+
* Add the News widget to the dashboard.
|
62 |
+
*
|
63 |
+
* @since 1.0.0 Added
|
64 |
+
*/
|
65 |
+
public function add_dashboard_widgets() {
|
66 |
+
global $wp_meta_boxes;
|
67 |
+
|
68 |
+
$widget_id = 'wbcr-factory-adverts-widget';
|
69 |
+
|
70 |
+
wp_add_dashboard_widget( $widget_id, $this->plugin->getPluginTitle() . ' News', [
|
71 |
+
$this,
|
72 |
+
'print_widget_content'
|
73 |
+
] );
|
74 |
+
|
75 |
+
# Set dashboard widget first in order
|
76 |
+
$normal_core = $wp_meta_boxes['dashboard']['normal']['core'];
|
77 |
+
$widget_backup = [ $widget_id => $normal_core[ $widget_id ] ];
|
78 |
+
unset( $normal_core[ $widget_id ] );
|
79 |
+
$sorted_core = array_merge( $widget_backup, $normal_core );
|
80 |
+
|
81 |
+
$wp_meta_boxes['dashboard']['normal']['core'] = $sorted_core;
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* Create the function to output the contents of the Dashboard Widget.
|
86 |
+
*
|
87 |
+
* @since 1.0.0 Added
|
88 |
+
*/
|
89 |
+
public function print_widget_content() {
|
90 |
+
?>
|
91 |
+
<div class="wordpress-news hide-if-no-js">
|
92 |
+
<div class="rss-widget">
|
93 |
+
<?php echo $this->content; ?>
|
94 |
+
</div>
|
95 |
+
</div>
|
96 |
+
<?php
|
97 |
+
|
98 |
+
}
|
99 |
+
}
|
libs/factory/adverts/includes/class-rest-request.php
ADDED
@@ -0,0 +1,197 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WBCR\Factory_Adverts_102;
|
4 |
+
|
5 |
+
// Exit if accessed directly
|
6 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
7 |
+
exit;
|
8 |
+
}
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Factory request class.
|
12 |
+
*
|
13 |
+
* Performs a server request, retrieves banner data and stores it in the cache.
|
14 |
+
*
|
15 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
16 |
+
* @author Alexander Vitkalov <nechin.va@gmail.com>
|
17 |
+
*
|
18 |
+
* @since 1.0.1 Изменил имя класса и доработал его.
|
19 |
+
* @since 1.0.0 Added
|
20 |
+
*
|
21 |
+
* @package factory-adverts
|
22 |
+
* @copyright (c) 2019 Webcraftic Ltd
|
23 |
+
*/
|
24 |
+
class Creative_Motion_API {
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Rest request url.
|
28 |
+
*
|
29 |
+
* Define rest request url for rest request to remote server.
|
30 |
+
*
|
31 |
+
* @since 1.2.1
|
32 |
+
*/
|
33 |
+
const SERVER_URL = 'https://api.cm-wp.com';
|
34 |
+
|
35 |
+
/**
|
36 |
+
* Rest route path.
|
37 |
+
*
|
38 |
+
* Define rest route path for rest request.
|
39 |
+
*
|
40 |
+
* @since 1.0.0
|
41 |
+
*/
|
42 |
+
const REST_ROUTE = '/adverds/v1/advt';
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Интервал между запросами по умолчанию
|
46 |
+
*
|
47 |
+
* Значение в часах.
|
48 |
+
*
|
49 |
+
* @since 1.0.1
|
50 |
+
*/
|
51 |
+
const DEFAULT_REQUESTS_INTERVAL = 24;
|
52 |
+
|
53 |
+
/**
|
54 |
+
* Интервал между запросами, если сервер недоступен
|
55 |
+
*
|
56 |
+
* Значение в часах.
|
57 |
+
*
|
58 |
+
* @since 1.0.1
|
59 |
+
*/
|
60 |
+
const SERVER_UNAVAILABLE_INTERVAL = 4;
|
61 |
+
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Экзепляр плагина с которым взаимодействует этот модуль
|
65 |
+
*
|
66 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
67 |
+
* @since 1.0.1
|
68 |
+
* @var \Wbcr_Factory420_Plugin
|
69 |
+
*/
|
70 |
+
private $plugin;
|
71 |
+
|
72 |
+
|
73 |
+
/**
|
74 |
+
* Request constructor.
|
75 |
+
*
|
76 |
+
* Variable initialization.
|
77 |
+
*
|
78 |
+
* @since 1.0.0 Added
|
79 |
+
*
|
80 |
+
* @param \Wbcr_Factory420_Plugin $plugin_name
|
81 |
+
*/
|
82 |
+
public function __construct( \Wbcr_Factory420_Plugin $plugin ) {
|
83 |
+
$this->plugin = $plugin;
|
84 |
+
}
|
85 |
+
|
86 |
+
/**
|
87 |
+
* Get adverts content.
|
88 |
+
*
|
89 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
90 |
+
* @since 1.0.1
|
91 |
+
*
|
92 |
+
* @param $position
|
93 |
+
*
|
94 |
+
* @return string|\WP_Error
|
95 |
+
*/
|
96 |
+
public function get_content( $position ) {
|
97 |
+
$data = $this->get_cache( $position );
|
98 |
+
|
99 |
+
if ( is_wp_error( $data ) ) {
|
100 |
+
return $data;
|
101 |
+
}
|
102 |
+
|
103 |
+
return strip_tags( $data['content'], '<b>,<a>,<i>,<strong>,<img>,<ul>,<ol>,<li>' );
|
104 |
+
}
|
105 |
+
|
106 |
+
/**
|
107 |
+
* Get data from cache.
|
108 |
+
*
|
109 |
+
* If data in the cache, not empty and not expired, then get data from cache. Or get data from server.
|
110 |
+
*
|
111 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
112 |
+
*
|
113 |
+
* @since 1.0.1 Полностью переписан, с перехватом api ошибок
|
114 |
+
* @since 1.0.0 Added
|
115 |
+
*
|
116 |
+
* @return mixed array(
|
117 |
+
* 'plugin' => 'wbcr_insert_php',
|
118 |
+
* 'content' => '<p></p>',
|
119 |
+
* 'expires' => 1563542199,
|
120 |
+
* );
|
121 |
+
*/
|
122 |
+
private function get_cache( $position ) {
|
123 |
+
|
124 |
+
if ( defined( 'FACTORY_ADVERTS_DEBUG' ) && FACTORY_ADVERTS_DEBUG ) {
|
125 |
+
return $this->do_api_request( $position );
|
126 |
+
}
|
127 |
+
|
128 |
+
$key = $this->plugin->getPrefix() . md5( $position . 'advert_transient_' );
|
129 |
+
|
130 |
+
$cached = get_transient( $key );
|
131 |
+
|
132 |
+
if ( $cached !== false ) {
|
133 |
+
if ( isset( $cached['error_code'] ) && isset( $cached['error'] ) ) {
|
134 |
+
return new \WP_Error( $cached['error_code'], $cached['error'] );
|
135 |
+
}
|
136 |
+
|
137 |
+
return $cached;
|
138 |
+
}
|
139 |
+
|
140 |
+
$data = $this->do_api_request( $position );
|
141 |
+
|
142 |
+
if ( is_wp_error( $data ) ) {
|
143 |
+
set_transient( $key, [
|
144 |
+
'error' => $data->get_error_message(),
|
145 |
+
'error_code' => $data->get_error_code()
|
146 |
+
], self::SERVER_UNAVAILABLE_INTERVAL * HOUR_IN_SECONDS );
|
147 |
+
|
148 |
+
return $data;
|
149 |
+
}
|
150 |
+
|
151 |
+
set_transient( $key, $data, $data['expires'] );
|
152 |
+
|
153 |
+
return $data;
|
154 |
+
}
|
155 |
+
|
156 |
+
/**
|
157 |
+
* Performs rest api request.
|
158 |
+
*
|
159 |
+
* In some case on the server (Apache) in the .htaccess must be set
|
160 |
+
* RewriteRule ^wp-json/(.*)[?](.*) /?rest_route=/$1&$2 [L]
|
161 |
+
*
|
162 |
+
* @since 1.0.1 Добавлен перехват ошибок, рефакторинг кода.
|
163 |
+
* @since 1.0.0 Added
|
164 |
+
*
|
165 |
+
* @return mixed array(
|
166 |
+
* 'plugin' => 'wbcr_insert_php',
|
167 |
+
* 'content' => '<p></p>',
|
168 |
+
* 'expires' => 1563542199,
|
169 |
+
* );
|
170 |
+
*/
|
171 |
+
private function do_api_request( $position ) {
|
172 |
+
$default_result = [
|
173 |
+
'content' => '',
|
174 |
+
'expires' => self::DEFAULT_REQUESTS_INTERVAL * HOUR_IN_SECONDS,
|
175 |
+
];
|
176 |
+
|
177 |
+
$url = untrailingslashit( self::SERVER_URL ) . '/wp-json' . self::REST_ROUTE;
|
178 |
+
$url = add_query_arg( [ 'plugin' => $this->plugin->getPluginName(), 'position' => $position ], $url );
|
179 |
+
|
180 |
+
$response = wp_remote_get( $url );
|
181 |
+
|
182 |
+
$code = wp_remote_retrieve_response_code( $response );
|
183 |
+
$body = wp_remote_retrieve_body( $response );
|
184 |
+
|
185 |
+
$data = @json_decode( $body, true );
|
186 |
+
|
187 |
+
if ( is_wp_error( $response ) ) {
|
188 |
+
return $response;
|
189 |
+
}
|
190 |
+
|
191 |
+
if ( 200 !== $code ) {
|
192 |
+
return new \WP_Error( 'http_request_error', 'Failed request to the remote server. Code: ' . $code );
|
193 |
+
}
|
194 |
+
|
195 |
+
return wp_parse_args( $data, $default_result );
|
196 |
+
}
|
197 |
+
}
|
libs/factory/adverts/includes/index.php
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
libs/factory/adverts/index.php
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
libs/factory/adverts/langs/wbcr_factory_adverts_102-ru_RU.mo
ADDED
Binary file
|
libs/factory/adverts/langs/wbcr_factory_adverts_102-ru_RU.po
ADDED
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: factory_forms\n"
|
4 |
+
"POT-Creation-Date: 2018-10-16 22:44+0300\n"
|
5 |
+
"PO-Revision-Date: 2018-10-16 22:45+0300\n"
|
6 |
+
"Last-Translator: \n"
|
7 |
+
"Language-Team: Alex Kovalev <alex.kovalevv@gmail.com>\n"
|
8 |
+
"Language: ru_RU\n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"X-Generator: Poedit 2.1.1\n"
|
13 |
+
"X-Poedit-Basepath: ..\n"
|
14 |
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
15 |
+
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
16 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
|
18 |
+
"X-Poedit-SearchPath-0: .\n"
|
19 |
+
|
20 |
+
#: includes/check-compatibility.php:80
|
21 |
+
msgid "warning"
|
22 |
+
msgstr "предупреждение"
|
23 |
+
|
24 |
+
#: includes/check-compatibility.php:82
|
25 |
+
#, php-format
|
26 |
+
msgid "The %s plugin has stopped."
|
27 |
+
msgstr "Работа плагина %s была остановлена."
|
28 |
+
|
29 |
+
#: includes/check-compatibility.php:83
|
30 |
+
msgid "Possible reasons:"
|
31 |
+
msgstr "Возможные причины:"
|
32 |
+
|
33 |
+
#: includes/check-compatibility.php:89
|
34 |
+
#, php-format
|
35 |
+
msgid "You need to update the PHP version to %s or higher!"
|
36 |
+
msgstr "Вам нужно обновить версию PHP до %s или выше!"
|
37 |
+
|
38 |
+
#: includes/check-compatibility.php:94
|
39 |
+
#, php-format
|
40 |
+
msgid "You need to update WordPress to %s or higher!"
|
41 |
+
msgstr "Вам нужно обновить WordPress до %s или выше!"
|
42 |
+
|
43 |
+
#: includes/functions.php:132
|
44 |
+
#, php-format
|
45 |
+
msgid ""
|
46 |
+
"%1$s is <strong>deprecated</strong> since version %2$s! Use %3$s instead."
|
47 |
+
msgstr ""
|
48 |
+
"%1$s является <strong>устаревшим,</strong> начиная с версии %2$s в "
|
49 |
+
"Wordpress! Используйте %3$s."
|
50 |
+
|
51 |
+
#: includes/functions.php:134
|
52 |
+
#, php-format
|
53 |
+
msgid ""
|
54 |
+
"%1$s is <strong>deprecated</strong> since version %2$s with no alternative "
|
55 |
+
"available."
|
56 |
+
msgstr ""
|
57 |
+
"%1$s был вызван с параметром, который является <strong>устаревшими</strong> "
|
58 |
+
"начиная с версии %2$s , в настоящее время доступных альтернатив нет."
|
59 |
+
|
60 |
+
#: includes/plugin.class.php:202 includes/plugin.class.php:237
|
61 |
+
msgid ""
|
62 |
+
"You are trying to call this earlier than the plugin menu will be registered."
|
63 |
+
msgstr ""
|
64 |
+
"Вы пытаетесь вызвать это раньше, чем будет зарегистрировано меню плагина."
|
65 |
+
|
66 |
+
#: includes/plugin.class.php:220
|
67 |
+
msgid ""
|
68 |
+
"You are trying to get a link to a page that does not have multisite mode. "
|
69 |
+
"Clicking this link will lead the user to a non-existent page."
|
70 |
+
msgstr ""
|
71 |
+
"Вы пытаетесь получить ссылку на страницу, которая не имеет "
|
72 |
+
"многопользовательского режима. Щелчок по этой ссылке приведет пользователя "
|
73 |
+
"к несуществующей странице."
|
74 |
+
|
75 |
+
#: includes/plugin.class.php:222
|
76 |
+
msgid ""
|
77 |
+
"Trying to get a link to an unregistered page. You are trying to call this "
|
78 |
+
"earlier than the plugin menu will be registered."
|
79 |
+
msgstr ""
|
80 |
+
"Попытка получить ссылку на незарегистрированную страницу. Вы пытаетесь "
|
81 |
+
"вызвать это раньше, чем будет зарегистрировано меню плагина."
|
82 |
+
|
83 |
+
|
libs/factory/adverts/readme.txt
ADDED
@@ -0,0 +1,98 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== Plugin Name ===
|
2 |
+
Contributors: nechii
|
3 |
+
Tags: ad, advertisment, module
|
4 |
+
Requires at least: 4.2
|
5 |
+
Tested up to: 5.2
|
6 |
+
Stable tag: 1.2.0
|
7 |
+
Requires PHP: 5.4
|
8 |
+
|
9 |
+
Module adds ad units to plugins.
|
10 |
+
|
11 |
+
== Description ==
|
12 |
+
|
13 |
+
The module allows you to add the specified ad blocks to the plugins.
|
14 |
+
|
15 |
+
Managing and storing the content of each block occurs in special side plugin.
|
16 |
+
|
17 |
+
To add the necessary blocks, you need to add the following code to the main plugin file:
|
18 |
+
if ( is_admin() ) {
|
19 |
+
global $wbcr_plugin_name_adinserter;
|
20 |
+
|
21 |
+
$wbcr_plugin_name_adinserter = new WBCR\Factory_Adverts_000\Base(
|
22 |
+
__FILE__,
|
23 |
+
array_merge(
|
24 |
+
$plugin_info,
|
25 |
+
array(
|
26 |
+
'dashboard_widget' => true, // show dashboard widget (default: false)
|
27 |
+
'right_sidebar' => true, // show adverts sidebar (default: false)
|
28 |
+
'notice' => true, // show notice message (default: false)
|
29 |
+
)
|
30 |
+
)
|
31 |
+
);
|
32 |
+
}
|
33 |
+
In this example, three ad blocks will be added: dashboard_widget, right_sidebar and notice.
|
34 |
+
|
35 |
+
It is possible to add an ad block manually. To do this, in the specific place of the code you need to insert the following code:
|
36 |
+
global $wbcr_plugin_name_adinserter;
|
37 |
+
echo $wbcr_plugin_name_adinserter->get_adverts( 'right_sidebar' );
|
38 |
+
In this example will be displayed content for ad block 'right_sidebar';
|
39 |
+
|
40 |
+
== Changelog ==
|
41 |
+
|
42 |
+
= 1.2.3 =
|
43 |
+
* Set dashboard widget first in order
|
44 |
+
|
45 |
+
= 1.2.2 =
|
46 |
+
* Changed the name of a global variable and its use rule
|
47 |
+
|
48 |
+
= 1.2.1 =
|
49 |
+
* Moved constant for rest request url from wp-config.php to boot.php
|
50 |
+
|
51 |
+
= 1.2.0 =
|
52 |
+
* Removed rest request. Only get request available.
|
53 |
+
* Cleaning and refactoring code.
|
54 |
+
|
55 |
+
= 1.1.0 =
|
56 |
+
* Add new notice functions.
|
57 |
+
* Cleaning and refactoring code.
|
58 |
+
|
59 |
+
= 1.0.0 =
|
60 |
+
* Cleaning and refactoring code.
|
61 |
+
* Add doc blocks.
|
62 |
+
* Some fixes and changes.
|
63 |
+
|
64 |
+
= 0.9.0 =
|
65 |
+
* Added new blocks.
|
66 |
+
* Fixed widget functions.
|
67 |
+
|
68 |
+
= 0.8.0 =
|
69 |
+
* Added notice block.
|
70 |
+
* Added constants for unique dashboard notice.
|
71 |
+
* Fixed widget functions.
|
72 |
+
|
73 |
+
= 0.7.0 =
|
74 |
+
* Added constants for unique dashboard widget.
|
75 |
+
* Fixed widget functions.
|
76 |
+
|
77 |
+
= 0.6.0 =
|
78 |
+
* Improve widget functions.
|
79 |
+
* Fixed cache functions.
|
80 |
+
|
81 |
+
= 0.5.0 =
|
82 |
+
* Added default rest response.
|
83 |
+
* Fixed rest request.
|
84 |
+
|
85 |
+
= 0.4.0 =
|
86 |
+
* Fixed rest request response.
|
87 |
+
* Fixed base functions.
|
88 |
+
|
89 |
+
= 0.3.0 =
|
90 |
+
* Improve rest request.
|
91 |
+
* Fixed requests functions.
|
92 |
+
|
93 |
+
= 0.2.0 =
|
94 |
+
* Added expiration time for cached data.
|
95 |
+
* Fixed cache functions.
|
96 |
+
|
97 |
+
= 0.1.0 =
|
98 |
+
* Version with base functions.
|
libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 .factory-accordion{margin:0 0 30px;border-top:1px solid #DDD;border-right:1px solid #DDD;border-left:1px solid #DDD;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.factory-bootstrap-421 .factory-accordion>h3{border-bottom:1px solid #DDD;cursor:pointer;padding:8px 15px;margin:0}.factory-bootstrap-421 .factory-accordion>div{display:none;margin:0;border-bottom:1px solid #DDD}.factory-bootstrap-421 .factory-accordion-item{display:none}.factory-bootstrap-421 .inner-factory-accordion-item{padding:10px 0}.factory-bootstrap-421 .factory-accordion>h3.active:hover{cursor:default}
|
libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 .btn-primary{background:#e1a948;border-color:#d39323;color:#fff;-webkit-box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-421 .btn-primary:focus,.factory-bootstrap-421 .btn-primary:hover{background:#db9825;border-color:#bd831f;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8be74,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8be74,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-421 .btn-primary:active{background:#db9825;border-color:#bd831f;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-421 .btn-primary:disabled,.factory-bootstrap-421 .btn-primary[disabled]{color:#d1cdc7!important;background:#db9825!important;border-color:#bd831f!important;text-shadow:none!important}.factory-bootstrap-421 .btn-group .btn.active.value{background-color:#e1a948;-webkit-box-shadow:inset 0 1px 2px #d39323;box-shadow:inset 0 1px 2px #d39323;border-top:1px solid #d39323;border-bottom:1px solid #d39323;border-left:1px solid #d39323}.factory-bootstrap-421 .pagination>.active>a,.factory-bootstrap-421 .pagination>.active>a:focus,.factory-bootstrap-421 .pagination>.active>a:hover,.factory-bootstrap-421 .pagination>.active>span,.factory-bootstrap-421 .pagination>.active>span:focus,.factory-bootstrap-421 .pagination>.active>span:hover{background-color:#e1a948;border-color:#d39323}
|
libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 .btn-primary{background:#c7a589;border-color:#b78a66;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-421 .btn-primary:focus,.factory-bootstrap-421 .btn-primary:hover{background:#ba906d;border-color:#ae7d55;color:#fff;-webkit-box-shadow:inset 0 1px 0 #d7bfac,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #d7bfac,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-421 .btn-primary:active{background:#ba906d;border-color:#ae7d55;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-421 .btn-primary:disabled,.factory-bootstrap-421 .btn-primary[disabled]{color:#d1cbc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.factory-bootstrap-421 .btn-group .btn.active.value{background-color:#c7a589;-webkit-box-shadow:inset 0 1px 2px #b78a66;box-shadow:inset 0 1px 2px #b78a66;border-top:1px solid #b78a66;border-bottom:1px solid #b78a66;border-left:1px solid #b78a66}.factory-bootstrap-421 .pagination>.active>a,.factory-bootstrap-421 .pagination>.active>a:focus,.factory-bootstrap-421 .pagination>.active>a:hover,.factory-bootstrap-421 .pagination>.active>span,.factory-bootstrap-421 .pagination>.active>span:focus,.factory-bootstrap-421 .pagination>.active>span:hover{background-color:#c7a589;border-color:#b78a66}
|
libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 article,.factory-bootstrap-421 aside,.factory-bootstrap-421 details,.factory-bootstrap-421 figcaption,.factory-bootstrap-421 figure,.factory-bootstrap-421 footer,.factory-bootstrap-421 header,.factory-bootstrap-421 hgroup,.factory-bootstrap-421 main,.factory-bootstrap-421 nav,.factory-bootstrap-421 section,.factory-bootstrap-421 summary{display:block}.factory-bootstrap-421 audio,.factory-bootstrap-421 canvas,.factory-bootstrap-421 video{display:inline-block}.factory-bootstrap-421 audio:not([controls]){display:none;height:0}.factory-bootstrap-421 [hidden],.factory-bootstrap-421 template{display:none}.factory-bootstrap-421 body{margin:0}.factory-bootstrap-421 a{background:0 0}.factory-bootstrap-421 a:focus{outline:thin dotted}.factory-bootstrap-421 a:active,.factory-bootstrap-421 a:hover{outline:0}.factory-bootstrap-421 h1{margin:.67em 0}.factory-bootstrap-421 b,.factory-bootstrap-421 strong{font-weight:700}.factory-bootstrap-421 dfn{font-style:italic}.factory-bootstrap-421 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-421 mark{color:#000;background:#ff0}.factory-bootstrap-421 code,.factory-bootstrap-421 kbd,.factory-bootstrap-421 pre,.factory-bootstrap-421 samp{font-size:1em}.factory-bootstrap-421 pre{white-space:pre-wrap}.factory-bootstrap-421 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-421 sub,.factory-bootstrap-421 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-421 sup{top:-.5em}.factory-bootstrap-421 sub{bottom:-.25em}.factory-bootstrap-421 img{border:0}.factory-bootstrap-421 svg:not(:root){overflow:hidden}.factory-bootstrap-421 figure{margin:0}.factory-bootstrap-421 button,.factory-bootstrap-421 input,.factory-bootstrap-421 select,.factory-bootstrap-421 textarea{margin:0}.factory-bootstrap-421 button,.factory-bootstrap-421 select{text-transform:none}.factory-bootstrap-421 select{padding-right:4px!important}.factory-bootstrap-421 button,.factory-bootstrap-421 input[type=reset],.factory-bootstrap-421 input[type=submit],html .factory-bootstrap-421 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-421 button[disabled],html .factory-bootstrap-421 input[disabled]{cursor:default}.factory-bootstrap-421 input[type=checkbox],.factory-bootstrap-421 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-421 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-421 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-421 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-421 button::-moz-focus-inner,.factory-bootstrap-421 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-421 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-421 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-421 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-421 a,.factory-bootstrap-421 a:visited{text-decoration:underline}.factory-bootstrap-421 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-421 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-421 a[href^="javascript:"]:after,.factory-bootstrap-421 a[href^="#"]:after{content:""}.factory-bootstrap-421 blockquote,.factory-bootstrap-421 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-421 thead{display:table-header-group}.factory-bootstrap-421 img,.factory-bootstrap-421 tr{page-break-inside:avoid}.factory-bootstrap-421 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-421 h2,.factory-bootstrap-421 h3,.factory-bootstrap-421 p{orphans:3;widows:3}.factory-bootstrap-421 h2,.factory-bootstrap-421 h3{page-break-after:avoid}.factory-bootstrap-421 select{background:#fff!important}.factory-bootstrap-421 .navbar{display:none}.factory-bootstrap-421 .table td,.factory-bootstrap-421 .table th{background-color:#fff!important}.factory-bootstrap-421 .btn>.caret,.factory-bootstrap-421 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-421 .label{border:1px solid #000}.factory-bootstrap-421 .table{border-collapse:collapse!important}.factory-bootstrap-421 .table-bordered td,.factory-bootstrap-421 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-421 *,.factory-bootstrap-421 :after,.factory-bootstrap-421 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-421{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-421 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-421 button,.factory-bootstrap-421 input,.factory-bootstrap-421 select,.factory-bootstrap-421 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-421 img{vertical-align:middle}.factory-bootstrap-421 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-421 .img-rounded{border-radius:6px}.factory-bootstrap-421 .img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.factory-bootstrap-421 .img-circle{border-radius:50%}.factory-bootstrap-421 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-421 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-421 .h1,.factory-bootstrap-421 .h2,.factory-bootstrap-421 .h3,.factory-bootstrap-421 .h4,.factory-bootstrap-421 .h5,.factory-bootstrap-421 .h6,.factory-bootstrap-421 h1,.factory-bootstrap-421 h2,.factory-bootstrap-421 h3,.factory-bootstrap-421 h4,.factory-bootstrap-421 h5,.factory-bootstrap-421 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-421 .h1 .small,.factory-bootstrap-421 .h1 small,.factory-bootstrap-421 .h2 .small,.factory-bootstrap-421 .h2 small,.factory-bootstrap-421 .h3 .small,.factory-bootstrap-421 .h3 small,.factory-bootstrap-421 .h4 .small,.factory-bootstrap-421 .h4 small,.factory-bootstrap-421 .h5 .small,.factory-bootstrap-421 .h5 small,.factory-bootstrap-421 .h6 .small,.factory-bootstrap-421 .h6 small,.factory-bootstrap-421 h1 .small,.factory-bootstrap-421 h1 small,.factory-bootstrap-421 h2 .small,.factory-bootstrap-421 h2 small,.factory-bootstrap-421 h3 .small,.factory-bootstrap-421 h3 small,.factory-bootstrap-421 h4 .small,.factory-bootstrap-421 h4 small,.factory-bootstrap-421 h5 .small,.factory-bootstrap-421 h5 small,.factory-bootstrap-421 h6 .small,.factory-bootstrap-421 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-421 h1,.factory-bootstrap-421 h2,.factory-bootstrap-421 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-421 h1 .small,.factory-bootstrap-421 h1 small,.factory-bootstrap-421 h2 .small,.factory-bootstrap-421 h2 small,.factory-bootstrap-421 h3 .small,.factory-bootstrap-421 h3 small{font-size:65%}.factory-bootstrap-421 h4,.factory-bootstrap-421 h5,.factory-bootstrap-421 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-421 h4 .small,.factory-bootstrap-421 h4 small,.factory-bootstrap-421 h5 .small,.factory-bootstrap-421 h5 small,.factory-bootstrap-421 h6 .small,.factory-bootstrap-421 h6 small{font-size:75%}.factory-bootstrap-421 .h1,.factory-bootstrap-421 h1{font-size:36px}.factory-bootstrap-421 .h2,.factory-bootstrap-421 h2{font-size:30px}.factory-bootstrap-421 .h3,.factory-bootstrap-421 h3{font-size:24px}.factory-bootstrap-421 .h4,.factory-bootstrap-421 h4{font-size:18px}.factory-bootstrap-421 .h5,.factory-bootstrap-421 h5{font-size:14px}.factory-bootstrap-421 .h6,.factory-bootstrap-421 h6{font-size:12px}.factory-bootstrap-421 p{margin:0 0 10px}.factory-bootstrap-421 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-421 .small,.factory-bootstrap-421 small{font-size:85%}.factory-bootstrap-421 cite{font-style:normal}.factory-bootstrap-421 .text-muted{color:#999}.factory-bootstrap-421 .text-primary{color:#428bca}.factory-bootstrap-421 .text-primary:hover{color:#3071a9}.factory-bootstrap-421 .text-warning{color:#8a6d3b}.factory-bootstrap-421 .text-warning:hover{color:#66512c}.factory-bootstrap-421 .text-danger{color:#a94442}.factory-bootstrap-421 .text-danger:hover{color:#843534}.factory-bootstrap-421 .text-success{color:#3c763d}.factory-bootstrap-421 .text-success:hover{color:#2b542c}.factory-bootstrap-421 .text-info{color:#31708f}.factory-bootstrap-421 .text-info:hover{color:#245269}.factory-bootstrap-421 .text-left{text-align:left}.factory-bootstrap-421 .text-right{text-align:right}.factory-bootstrap-421 .text-center{text-align:center}.factory-bootstrap-421 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-421 ol,.factory-bootstrap-421 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-421 ol ol,.factory-bootstrap-421 ol ul,.factory-bootstrap-421 ul ol,.factory-bootstrap-421 ul ul{margin-bottom:0}.factory-bootstrap-421 .list-inline,.factory-bootstrap-421 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-421 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-421 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-421 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-421 dd,.factory-bootstrap-421 dt{line-height:1.428571429}.factory-bootstrap-421 dt{font-weight:700}.factory-bootstrap-421 dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:after,.dl-horizontal dd:before{display:table;content:" "}.dl-horizontal dd:after{clear:both}}.factory-bootstrap-421 abbr[data-original-title],.factory-bootstrap-421 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-421 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-421 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-421 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-421 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-421 blockquote .small,.factory-bootstrap-421 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-421 blockquote .small:before,.factory-bootstrap-421 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-421 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-421 blockquote.pull-right .small,.factory-bootstrap-421 blockquote.pull-right p,.factory-bootstrap-421 blockquote.pull-right small{text-align:right}.factory-bootstrap-421 blockquote.pull-right .small:before,.factory-bootstrap-421 blockquote.pull-right small:before{content:''}.factory-bootstrap-421 blockquote.pull-right .small:after,.factory-bootstrap-421 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-421 blockquote:after,.factory-bootstrap-421 blockquote:before{content:""}.factory-bootstrap-421 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-421 code,.factory-bootstrap-421 kbd,.factory-bootstrap-421 pre,.factory-bootstrap-421 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-421 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-421 pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.factory-bootstrap-421 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-421 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-421 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-421 .container:after,.factory-bootstrap-421 .container:before{display:table;content:" "}.factory-bootstrap-421 .container:after{clear:both}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.factory-bootstrap-421 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-421 .row:after,.factory-bootstrap-421 .row:before{display:table;content:" "}.factory-bootstrap-421 .row:after{clear:both}.factory-bootstrap-421 .col-lg-1,.factory-bootstrap-421 .col-lg-10,.factory-bootstrap-421 .col-lg-11,.factory-bootstrap-421 .col-lg-12,.factory-bootstrap-421 .col-lg-2,.factory-bootstrap-421 .col-lg-3,.factory-bootstrap-421 .col-lg-4,.factory-bootstrap-421 .col-lg-5,.factory-bootstrap-421 .col-lg-6,.factory-bootstrap-421 .col-lg-7,.factory-bootstrap-421 .col-lg-8,.factory-bootstrap-421 .col-lg-9,.factory-bootstrap-421 .col-md-1,.factory-bootstrap-421 .col-md-10,.factory-bootstrap-421 .col-md-11,.factory-bootstrap-421 .col-md-12,.factory-bootstrap-421 .col-md-2,.factory-bootstrap-421 .col-md-3,.factory-bootstrap-421 .col-md-4,.factory-bootstrap-421 .col-md-5,.factory-bootstrap-421 .col-md-6,.factory-bootstrap-421 .col-md-7,.factory-bootstrap-421 .col-md-8,.factory-bootstrap-421 .col-md-9,.factory-bootstrap-421 .col-sm-1,.factory-bootstrap-421 .col-sm-10,.factory-bootstrap-421 .col-sm-11,.factory-bootstrap-421 .col-sm-12,.factory-bootstrap-421 .col-sm-2,.factory-bootstrap-421 .col-sm-3,.factory-bootstrap-421 .col-sm-4,.factory-bootstrap-421 .col-sm-5,.factory-bootstrap-421 .col-sm-6,.factory-bootstrap-421 .col-sm-7,.factory-bootstrap-421 .col-sm-8,.factory-bootstrap-421 .col-sm-9,.factory-bootstrap-421 .col-xs-1,.factory-bootstrap-421 .col-xs-10,.factory-bootstrap-421 .col-xs-11,.factory-bootstrap-421 .col-xs-12,.factory-bootstrap-421 .col-xs-2,.factory-bootstrap-421 .col-xs-3,.factory-bootstrap-421 .col-xs-4,.factory-bootstrap-421 .col-xs-5,.factory-bootstrap-421 .col-xs-6,.factory-bootstrap-421 .col-xs-7,.factory-bootstrap-421 .col-xs-8,.factory-bootstrap-421 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-421 .col-xs-1,.factory-bootstrap-421 .col-xs-10,.factory-bootstrap-421 .col-xs-11,.factory-bootstrap-421 .col-xs-12,.factory-bootstrap-421 .col-xs-2,.factory-bootstrap-421 .col-xs-3,.factory-bootstrap-421 .col-xs-4,.factory-bootstrap-421 .col-xs-5,.factory-bootstrap-421 .col-xs-6,.factory-bootstrap-421 .col-xs-7,.factory-bootstrap-421 .col-xs-8,.factory-bootstrap-421 .col-xs-9{float:left}.factory-bootstrap-421 .col-xs-12{width:100%}.factory-bootstrap-421 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-421 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-421 .col-xs-9{width:75%}.factory-bootstrap-421 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-421 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-421 .col-xs-6{width:50%}.factory-bootstrap-421 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-421 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-421 .col-xs-3{width:25%}.factory-bootstrap-421 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-421 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-421 .col-xs-pull-12{right:100%}.factory-bootstrap-421 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-421 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-421 .col-xs-pull-9{right:75%}.factory-bootstrap-421 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-421 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-421 .col-xs-pull-6{right:50%}.factory-bootstrap-421 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-421 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-421 .col-xs-pull-3{right:25%}.factory-bootstrap-421 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-421 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-421 .col-xs-pull-0{right:0}.factory-bootstrap-421 .col-xs-push-12{left:100%}.factory-bootstrap-421 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-421 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-421 .col-xs-push-9{left:75%}.factory-bootstrap-421 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-421 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-421 .col-xs-push-6{left:50%}.factory-bootstrap-421 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-421 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-421 .col-xs-push-3{left:25%}.factory-bootstrap-421 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-421 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-421 .col-xs-push-0{left:0}.factory-bootstrap-421 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-421 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-421 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-421 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-421 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-421 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-421 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-421 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-421 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-421 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-421 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-421 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-421 .col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666666666666%}.col-sm-10{width:83.33333333333334%}.col-sm-9{width:75%}.col-sm-8{width:66.66666666666666%}.col-sm-7{width:58.333333333333336%}.col-sm-6{width:50%}.col-sm-5{width:41.66666666666667%}.col-sm-4{width:33.33333333333333%}.col-sm-3{width:25%}.col-sm-2{width:16.666666666666664%}.col-sm-1{width:8.333333333333332%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666666666666%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666666666666%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666666666666%}.col-md-10{width:83.33333333333334%}.col-md-9{width:75%}.col-md-8{width:66.66666666666666%}.col-md-7{width:58.333333333333336%}.col-md-6{width:50%}.col-md-5{width:41.66666666666667%}.col-md-4{width:33.33333333333333%}.col-md-3{width:25%}.col-md-2{width:16.666666666666664%}.col-md-1{width:8.333333333333332%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666666666666%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666666666666%}.col-md-push-10{left:83.33333333333334%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666666666666%}.col-md-push-7{left:58.333333333333336%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666666666667%}.col-md-push-4{left:33.33333333333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.666666666666664%}.col-md-push-1{left:8.333333333333332%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666666666666%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666666666666%}.col-lg-10{width:83.33333333333334%}.col-lg-9{width:75%}.col-lg-8{width:66.66666666666666%}.col-lg-7{width:58.333333333333336%}.col-lg-6{width:50%}.col-lg-5{width:41.66666666666667%}.col-lg-4{width:33.33333333333333%}.col-lg-3{width:25%}.col-lg-2{width:16.666666666666664%}.col-lg-1{width:8.333333333333332%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666666666666%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666666666666%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-0{margin-left:0}}.factory-bootstrap-421 table{max-width:100%;background-color:transparent}.factory-bootstrap-421 th{text-align:left}.factory-bootstrap-421 .table{width:100%;margin-bottom:20px}.factory-bootstrap-421 .table>tbody>tr>td,.factory-bootstrap-421 .table>tbody>tr>th,.factory-bootstrap-421 .table>tfoot>tr>td,.factory-bootstrap-421 .table>tfoot>tr>th,.factory-bootstrap-421 .table>thead>tr>td,.factory-bootstrap-421 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-421 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-421 .table>caption+thead>tr:first-child>td,.factory-bootstrap-421 .table>caption+thead>tr:first-child>th,.factory-bootstrap-421 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-421 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-421 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-421 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-421 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-421 .table .table{background-color:#fff}.factory-bootstrap-421 .table-condensed>tbody>tr>td,.factory-bootstrap-421 .table-condensed>tbody>tr>th,.factory-bootstrap-421 .table-condensed>tfoot>tr>td,.factory-bootstrap-421 .table-condensed>tfoot>tr>th,.factory-bootstrap-421 .table-condensed>thead>tr>td,.factory-bootstrap-421 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-421 .table-bordered,.factory-bootstrap-421 .table-bordered>tbody>tr>td,.factory-bootstrap-421 .table-bordered>tbody>tr>th,.factory-bootstrap-421 .table-bordered>tfoot>tr>td,.factory-bootstrap-421 .table-bordered>tfoot>tr>th,.factory-bootstrap-421 .table-bordered>thead>tr>td,.factory-bootstrap-421 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-421 .table-bordered>thead>tr>td,.factory-bootstrap-421 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-421 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-421 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-421 .table-hover>tbody>tr:hover>td,.factory-bootstrap-421 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-421 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-421 table td[class*=col-],.factory-bootstrap-421 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-421 .table>tbody>.active>td,.factory-bootstrap-421 .table>tbody>.active>th,.factory-bootstrap-421 .table>tbody>tr>.active,.factory-bootstrap-421 .table>tfoot>.active>td,.factory-bootstrap-421 .table>tfoot>.active>th,.factory-bootstrap-421 .table>tfoot>tr>.active,.factory-bootstrap-421 .table>thead>.active>td,.factory-bootstrap-421 .table>thead>.active>th,.factory-bootstrap-421 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-421 .table-hover>tbody>.active:hover>td,.factory-bootstrap-421 .table-hover>tbody>.active:hover>th,.factory-bootstrap-421 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-421 .table>tbody>.success>td,.factory-bootstrap-421 .table>tbody>.success>th,.factory-bootstrap-421 .table>tbody>tr>.success,.factory-bootstrap-421 .table>tfoot>.success>td,.factory-bootstrap-421 .table>tfoot>.success>th,.factory-bootstrap-421 .table>tfoot>tr>.success,.factory-bootstrap-421 .table>thead>.success>td,.factory-bootstrap-421 .table>thead>.success>th,.factory-bootstrap-421 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-421 .table-hover>tbody>.success:hover>td,.factory-bootstrap-421 .table-hover>tbody>.success:hover>th,.factory-bootstrap-421 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-421 .table>tbody>.danger>td,.factory-bootstrap-421 .table>tbody>.danger>th,.factory-bootstrap-421 .table>tbody>tr>.danger,.factory-bootstrap-421 .table>tfoot>.danger>td,.factory-bootstrap-421 .table>tfoot>.danger>th,.factory-bootstrap-421 .table>tfoot>tr>.danger,.factory-bootstrap-421 .table>thead>.danger>td,.factory-bootstrap-421 .table>thead>.danger>th,.factory-bootstrap-421 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-421 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-421 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-421 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-421 .table>tbody>.warning>td,.factory-bootstrap-421 .table>tbody>.warning>th,.factory-bootstrap-421 .table>tbody>tr>.warning,.factory-bootstrap-421 .table>tfoot>.warning>td,.factory-bootstrap-421 .table>tfoot>.warning>th,.factory-bootstrap-421 .table>tfoot>tr>.warning,.factory-bootstrap-421 .table>thead>.warning>td,.factory-bootstrap-421 .table>thead>.warning>th,.factory-bootstrap-421 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-421 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-421 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-421 .table-hover>tbody>tr>.warning:hover{background-color:#faf2cc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}.factory-bootstrap-421 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-421 legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-421 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-421 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-421 input[type=checkbox],.factory-bootstrap-421 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-421 input[type=file]{display:block}.factory-bootstrap-421 select[multiple],.factory-bootstrap-421 select[size]{height:auto}.factory-bootstrap-421 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-421 input[type=checkbox]:focus,.factory-bootstrap-421 input[type=file]:focus,.factory-bootstrap-421 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-421 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-421 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-421 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-421 .form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.factory-bootstrap-421 .form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-421 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-421 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-421 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-421 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-421 .form-control[disabled],.factory-bootstrap-421 .form-control[readonly],.factory-bootstrap-421 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-421 textarea.form-control{height:auto}.factory-bootstrap-421 .form-group{margin-bottom:15px}.factory-bootstrap-421 .checkbox,.factory-bootstrap-421 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-421 .checkbox label,.factory-bootstrap-421 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-421 .checkbox input[type=checkbox],.factory-bootstrap-421 .checkbox-inline input[type=checkbox],.factory-bootstrap-421 .radio input[type=radio],.factory-bootstrap-421 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-421 .checkbox+.checkbox,.factory-bootstrap-421 .radio+.radio{margin-top:-5px}.factory-bootstrap-421 .checkbox-inline,.factory-bootstrap-421 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-421 .checkbox-inline+.checkbox-inline,.factory-bootstrap-421 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-421 .checkbox-inline[disabled],.factory-bootstrap-421 .checkbox[disabled],.factory-bootstrap-421 .radio-inline[disabled],.factory-bootstrap-421 .radio[disabled],.factory-bootstrap-421 fieldset[disabled] .checkbox,.factory-bootstrap-421 fieldset[disabled] .checkbox-inline,.factory-bootstrap-421 fieldset[disabled] .radio,.factory-bootstrap-421 fieldset[disabled] .radio-inline,.factory-bootstrap-421 fieldset[disabled] input[type=checkbox],.factory-bootstrap-421 fieldset[disabled] input[type=radio],.factory-bootstrap-421 input[type=checkbox][disabled],.factory-bootstrap-421 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-421 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-421 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-421 textarea.input-sm{height:auto}.factory-bootstrap-421 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-421 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-421 textarea.input-lg{height:auto}.factory-bootstrap-421 .has-warning .checkbox,.factory-bootstrap-421 .has-warning .checkbox-inline,.factory-bootstrap-421 .has-warning .control-label,.factory-bootstrap-421 .has-warning .help-block,.factory-bootstrap-421 .has-warning .radio,.factory-bootstrap-421 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-421 .has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-421 .has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.factory-bootstrap-421 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-421 .has-error .checkbox,.factory-bootstrap-421 .has-error .checkbox-inline,.factory-bootstrap-421 .has-error .control-label,.factory-bootstrap-421 .has-error .help-block,.factory-bootstrap-421 .has-error .radio,.factory-bootstrap-421 .has-error .radio-inline{color:#a94442}.factory-bootstrap-421 .controls{display:block}.factory-bootstrap-421 .has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-421 .has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.factory-bootstrap-421 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-421 .has-success .checkbox,.factory-bootstrap-421 .has-success .checkbox-inline,.factory-bootstrap-421 .has-success .control-label,.factory-bootstrap-421 .has-success .help-block,.factory-bootstrap-421 .has-success .radio,.factory-bootstrap-421 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-421 .has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-421 .has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.factory-bootstrap-421 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-421 .form-control-static{margin-bottom:0}.factory-bootstrap-421 .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373;font-weight:400}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block}.form-inline select.form-control{width:auto}.form-inline .checkbox,.form-inline .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{float:none;margin-left:0}}.factory-bootstrap-421 .form-horizontal .checkbox,.factory-bootstrap-421 .form-horizontal .checkbox-inline,.factory-bootstrap-421 .form-horizontal .control-label,.factory-bootstrap-421 .form-horizontal .radio,.factory-bootstrap-421 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-421 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-421 .form-horizontal .checkbox,.factory-bootstrap-421 .form-horizontal .radio{min-height:27px}.factory-bootstrap-421 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-421 .form-horizontal .form-group:after,.factory-bootstrap-421 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-421 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-421 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-421 .btn{display:inline-block;padding:5px 12px;margin-bottom:0;font-size:13px;font-weight:400;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.factory-bootstrap-421 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-421 .btn{text-decoration:none}.factory-bootstrap-421 .btn:focus,.factory-bootstrap-421 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-421 .btn.disabled,.factory-bootstrap-421 .btn[disabled],.factory-bootstrap-421 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-421 .btn-default.active,.factory-bootstrap-421 .btn-default:active,.factory-bootstrap-421 .btn-default:focus,.factory-bootstrap-421 .btn-default:hover,.factory-bootstrap-421 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-421 .btn-default.active,.factory-bootstrap-421 .btn-default:active,.factory-bootstrap-421 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-421 .btn-default.disabled,.factory-bootstrap-421 .btn-default.disabled.active,.factory-bootstrap-421 .btn-default.disabled:active,.factory-bootstrap-421 .btn-default.disabled:focus,.factory-bootstrap-421 .btn-default.disabled:hover,.factory-bootstrap-421 .btn-default[disabled],.factory-bootstrap-421 .btn-default[disabled].active,.factory-bootstrap-421 .btn-default[disabled]:active,.factory-bootstrap-421 .btn-default[disabled]:focus,.factory-bootstrap-421 .btn-default[disabled]:hover,.factory-bootstrap-421 fieldset[disabled] .btn-default,.factory-bootstrap-421 fieldset[disabled] .btn-default.active,.factory-bootstrap-421 fieldset[disabled] .btn-default:active,.factory-bootstrap-421 fieldset[disabled] .btn-default:focus,.factory-bootstrap-421 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-421 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-421 .btn-primary.active,.factory-bootstrap-421 .btn-primary:active,.factory-bootstrap-421 .btn-primary:focus,.factory-bootstrap-421 .btn-primary:hover,.factory-bootstrap-421 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-421 .btn-primary.active,.factory-bootstrap-421 .btn-primary:active,.factory-bootstrap-421 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-421 .btn-primary.disabled,.factory-bootstrap-421 .btn-primary.disabled.active,.factory-bootstrap-421 .btn-primary.disabled:active,.factory-bootstrap-421 .btn-primary.disabled:focus,.factory-bootstrap-421 .btn-primary.disabled:hover,.factory-bootstrap-421 .btn-primary[disabled],.factory-bootstrap-421 .btn-primary[disabled].active,.factory-bootstrap-421 .btn-primary[disabled]:active,.factory-bootstrap-421 .btn-primary[disabled]:focus,.factory-bootstrap-421 .btn-primary[disabled]:hover,.factory-bootstrap-421 fieldset[disabled] .btn-primary,.factory-bootstrap-421 fieldset[disabled] .btn-primary.active,.factory-bootstrap-421 fieldset[disabled] .btn-primary:active,.factory-bootstrap-421 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-421 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-421 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-421 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-421 .btn-warning.active,.factory-bootstrap-421 .btn-warning:active,.factory-bootstrap-421 .btn-warning:focus,.factory-bootstrap-421 .btn-warning:hover,.factory-bootstrap-421 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-421 .btn-warning.active,.factory-bootstrap-421 .btn-warning:active,.factory-bootstrap-421 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-421 .btn-warning.disabled,.factory-bootstrap-421 .btn-warning.disabled.active,.factory-bootstrap-421 .btn-warning.disabled:active,.factory-bootstrap-421 .btn-warning.disabled:focus,.factory-bootstrap-421 .btn-warning.disabled:hover,.factory-bootstrap-421 .btn-warning[disabled],.factory-bootstrap-421 .btn-warning[disabled].active,.factory-bootstrap-421 .btn-warning[disabled]:active,.factory-bootstrap-421 .btn-warning[disabled]:focus,.factory-bootstrap-421 .btn-warning[disabled]:hover,.factory-bootstrap-421 fieldset[disabled] .btn-warning,.factory-bootstrap-421 fieldset[disabled] .btn-warning.active,.factory-bootstrap-421 fieldset[disabled] .btn-warning:active,.factory-bootstrap-421 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-421 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-421 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-421 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-421 .btn-success.active,.factory-bootstrap-421 .btn-success:active,.factory-bootstrap-421 .btn-success:focus,.factory-bootstrap-421 .btn-success:hover,.factory-bootstrap-421 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-421 .btn-success.active,.factory-bootstrap-421 .btn-success:active,.factory-bootstrap-421 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-421 .btn-success.disabled,.factory-bootstrap-421 .btn-success.disabled.active,.factory-bootstrap-421 .btn-success.disabled:active,.factory-bootstrap-421 .btn-success.disabled:focus,.factory-bootstrap-421 .btn-success.disabled:hover,.factory-bootstrap-421 .btn-success[disabled],.factory-bootstrap-421 .btn-success[disabled].active,.factory-bootstrap-421 .btn-success[disabled]:active,.factory-bootstrap-421 .btn-success[disabled]:focus,.factory-bootstrap-421 .btn-success[disabled]:hover,.factory-bootstrap-421 fieldset[disabled] .btn-success,.factory-bootstrap-421 fieldset[disabled] .btn-success.active,.factory-bootstrap-421 fieldset[disabled] .btn-success:active,.factory-bootstrap-421 fieldset[disabled] .btn-success:focus,.factory-bootstrap-421 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-421 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-421 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-421 .btn-info.active,.factory-bootstrap-421 .btn-info:active,.factory-bootstrap-421 .btn-info:focus,.factory-bootstrap-421 .btn-info:hover,.factory-bootstrap-421 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-421 .btn-info.active,.factory-bootstrap-421 .btn-info:active,.factory-bootstrap-421 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-421 .btn-info.disabled,.factory-bootstrap-421 .btn-info.disabled.active,.factory-bootstrap-421 .btn-info.disabled:active,.factory-bootstrap-421 .btn-info.disabled:focus,.factory-bootstrap-421 .btn-info.disabled:hover,.factory-bootstrap-421 .btn-info[disabled],.factory-bootstrap-421 .btn-info[disabled].active,.factory-bootstrap-421 .btn-info[disabled]:active,.factory-bootstrap-421 .btn-info[disabled]:focus,.factory-bootstrap-421 .btn-info[disabled]:hover,.factory-bootstrap-421 fieldset[disabled] .btn-info,.factory-bootstrap-421 fieldset[disabled] .btn-info.active,.factory-bootstrap-421 fieldset[disabled] .btn-info:active,.factory-bootstrap-421 fieldset[disabled] .btn-info:focus,.factory-bootstrap-421 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-421 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-421 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-421 .btn-link,.factory-bootstrap-421 .btn-link:active,.factory-bootstrap-421 .btn-link[disabled],.factory-bootstrap-421 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-421 .btn-link,.factory-bootstrap-421 .btn-link:active,.factory-bootstrap-421 .btn-link:focus,.factory-bootstrap-421 .btn-link:hover{border-color:transparent}.factory-bootstrap-421 .btn-link:focus,.factory-bootstrap-421 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-421 .btn-link[disabled]:focus,.factory-bootstrap-421 .btn-link[disabled]:hover,.factory-bootstrap-421 fieldset[disabled] .btn-link:focus,.factory-bootstrap-421 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-421 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-421 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-421 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-421 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-421 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-421 input[type=button].btn-block,.factory-bootstrap-421 input[type=reset].btn-block,.factory-bootstrap-421 input[type=submit].btn-block{width:100%}.factory-bootstrap-421 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-421 .fade.in{opacity:1}.factory-bootstrap-421 .collapse{display:none}.factory-bootstrap-421 .collapse.in{display:block}.factory-bootstrap-421 .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular) format('svg')}.factory-bootstrap-421 .glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:400;line-height:1;-moz-osx-font-smoothing:grayscale}.factory-bootstrap-421 .glyphicon:empty{width:1em}.factory-bootstrap-421 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-421 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-421 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-421 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-421 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-421 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-421 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-421 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-421 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-421 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-421 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-421 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-421 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-421 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-421 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-421 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-421 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-421 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-421 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-421 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-421 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-421 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-421 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-421 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-421 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-421 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-421 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-421 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-421 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-421 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-421 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-421 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-421 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-421 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-421 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-421 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-421 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-421 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-421 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-421 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-421 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-421 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-421 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-421 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-421 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-421 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-421 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-421 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-421 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-421 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-421 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-421 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-421 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-421 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-421 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-421 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-421 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-421 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-421 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-421 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-421 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-421 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-421 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-421 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-421 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-421 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-421 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-421 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-421 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-421 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-421 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-421 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-421 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-421 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-421 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-421 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-421 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-421 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-421 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-421 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-421 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-421 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-421 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-421 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-421 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-421 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-421 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-421 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-421 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-421 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-421 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-421 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-421 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-421 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-421 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-421 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-421 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-421 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-421 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-421 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-421 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-421 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-421 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-421 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-421 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-421 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-421 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-421 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-421 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-421 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-421 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-421 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-421 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-421 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-421 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-421 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-421 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-421 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-421 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-421 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-421 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-421 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-421 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-421 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-421 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-421 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-421 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-421 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-421 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-421 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-421 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-421 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-421 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-421 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-421 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-421 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-421 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-421 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-421 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-421 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-421 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-421 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-421 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-421 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-421 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-421 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-421 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-421 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-421 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-421 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-421 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-421 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-421 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-421 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-421 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-421 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-421 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-421 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-421 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-421 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-421 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-421 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-421 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-421 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-421 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-421 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-421 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-421 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-421 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-421 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-421 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-421 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-421 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-421 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-421 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-421 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-421 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-421 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-421 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-421 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-421 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-421 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-421 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-421 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-421 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-421 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-421 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-421 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-421 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-421 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-421 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-421 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-421 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-421 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-421 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-421 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-421 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-421 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-421 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-421 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-421 .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.factory-bootstrap-421 .dropdown{position:relative}.factory-bootstrap-421 .dropdown-toggle:focus{outline:0}.factory-bootstrap-421 .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.factory-bootstrap-421 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-421 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-421 .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;color:#333;white-space:nowrap}.factory-bootstrap-421 .dropdown-menu>li>a:focus,.factory-bootstrap-421 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-421 .dropdown-menu>.active>a,.factory-bootstrap-421 .dropdown-menu>.active>a:focus,.factory-bootstrap-421 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-421 .dropdown-menu>.disabled>a,.factory-bootstrap-421 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-421 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-421 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-421 .dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-421 .open>.dropdown-menu{display:block}.factory-bootstrap-421 .open>a{outline:0}.factory-bootstrap-421 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-421 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-421 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-421 .dropup .caret,.factory-bootstrap-421 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-421 .dropup .dropdown-menu,.factory-bootstrap-421 .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.factory-bootstrap-421 .btn-group,.factory-bootstrap-421 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-421 .btn-group-vertical>.btn,.factory-bootstrap-421 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-421 .btn-group-vertical>.btn.active,.factory-bootstrap-421 .btn-group-vertical>.btn:active,.factory-bootstrap-421 .btn-group-vertical>.btn:focus,.factory-bootstrap-421 .btn-group-vertical>.btn:hover,.factory-bootstrap-421 .btn-group>.btn.active,.factory-bootstrap-421 .btn-group>.btn:active,.factory-bootstrap-421 .btn-group>.btn:focus,.factory-bootstrap-421 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-421 .btn-group-vertical>.btn:focus,.factory-bootstrap-421 .btn-group>.btn:focus{outline:0}.factory-bootstrap-421 .btn-group .btn+.btn,.factory-bootstrap-421 .btn-group .btn+.btn-group,.factory-bootstrap-421 .btn-group .btn-group+.btn,.factory-bootstrap-421 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-421 .btn-toolbar:after,.factory-bootstrap-421 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-421 .btn-toolbar:after{clear:both}.factory-bootstrap-421 .btn-toolbar .btn-group{float:left}.factory-bootstrap-421 .btn-toolbar>.btn+.btn,.factory-bootstrap-421 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-421 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-421 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-421 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-421 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-421 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-421 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-421 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-421 .btn-group>.btn-group{float:left}.factory-bootstrap-421 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-421 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-421 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-421 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-421 .btn-group .dropdown-toggle:active,.factory-bootstrap-421 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-421 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-421 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-421 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-421 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-421 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-421 .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.factory-bootstrap-421 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-421 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-421 .btn-group .btn.active.value{text-shadow:none;color:#fff;background-color:#33aad5;-webkit-box-shadow:inset 0 1px 1px #0074a2;box-shadow:inset 0 1px 3px #0074a2;border-top:1px solid #0074a2;border-bottom:1px solid #0074a2;border-left:1px solid #0074a2}.factory-bootstrap-421 .btn .caret{margin-left:0}.factory-bootstrap-421 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-421 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-421 .btn-group-vertical>.btn,.factory-bootstrap-421 .btn-group-vertical>.btn-group,.factory-bootstrap-421 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-421 .btn-group-vertical>.btn-group:after,.factory-bootstrap-421 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-421 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-421 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-421 .btn-group-vertical>.btn+.btn,.factory-bootstrap-421 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-421 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-421 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-421 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-421 .btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-421 .btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.factory-bootstrap-421 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-421 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-421 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-421 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-421 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-421 .btn-group-justified>.btn,.factory-bootstrap-421 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-421 .btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=checkbox],[data-toggle=buttons]>.btn>input[type=radio]{display:none}.factory-bootstrap-421 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-421 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-421 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-421 .input-group-lg>.form-control,.factory-bootstrap-421 .input-group-lg>.input-group-addon,.factory-bootstrap-421 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-421 select.input-group-lg>.form-control,.factory-bootstrap-421 select.input-group-lg>.input-group-addon,.factory-bootstrap-421 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-421 textarea.input-group-lg>.form-control,.factory-bootstrap-421 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-421 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-421 .input-group-sm>.form-control,.factory-bootstrap-421 .input-group-sm>.input-group-addon,.factory-bootstrap-421 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-421 select.input-group-sm>.form-control,.factory-bootstrap-421 select.input-group-sm>.input-group-addon,.factory-bootstrap-421 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-421 textarea.input-group-sm>.form-control,.factory-bootstrap-421 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-421 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-421 .input-group .form-control,.factory-bootstrap-421 .input-group-addon,.factory-bootstrap-421 .input-group-btn{display:table-cell}.factory-bootstrap-421 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-421 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-421 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-421 .input-group-addon,.factory-bootstrap-421 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-421 .input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.factory-bootstrap-421 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-421 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-421 .input-group-addon input[type=checkbox],.factory-bootstrap-421 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-421 .input-group .form-control:first-child,.factory-bootstrap-421 .input-group-addon:first-child,.factory-bootstrap-421 .input-group-btn:first-child>.btn,.factory-bootstrap-421 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-421 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-421 .input-group-addon:first-child{border-right:0}.factory-bootstrap-421 .input-group .form-control:last-child,.factory-bootstrap-421 .input-group-addon:last-child,.factory-bootstrap-421 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-421 .input-group-btn:last-child>.btn,.factory-bootstrap-421 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-421 .input-group-addon:last-child{border-left:0}.factory-bootstrap-421 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-421 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-421 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-421 .input-group-btn>.btn{position:relative}.factory-bootstrap-421 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-421 .input-group-btn>.btn:active,.factory-bootstrap-421 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-421 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-421 .nav:after,.factory-bootstrap-421 .nav:before{display:table;content:" "}.factory-bootstrap-421 .nav:after{clear:both}.factory-bootstrap-421 .nav>li{position:relative;display:block}.factory-bootstrap-421 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-421 .nav>li>a:focus,.factory-bootstrap-421 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-421 .nav>li.disabled>a{color:#999}.factory-bootstrap-421 .nav>li.disabled>a:focus,.factory-bootstrap-421 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-421 .nav .open>a,.factory-bootstrap-421 .nav .open>a:focus,.factory-bootstrap-421 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-421 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-421 .nav>li>a>img{max-width:none}.factory-bootstrap-421 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-421 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-421 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-421 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-421 .nav-tabs>li.active>a,.factory-bootstrap-421 .nav-tabs>li.active>a:focus,.factory-bootstrap-421 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-421 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-421 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-421 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-421 .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.factory-bootstrap-421 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-421 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-421 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-421 .nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.factory-bootstrap-421 .nav-pills>li{float:left}.factory-bootstrap-421 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-421 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-421 .nav-pills>li.active>a,.factory-bootstrap-421 .nav-pills>li.active>a:focus,.factory-bootstrap-421 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-421 .nav-stacked>li{float:none}.factory-bootstrap-421 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-421 .nav-justified{width:100%}.factory-bootstrap-421 .nav-justified>li{float:none}.factory-bootstrap-421 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-421 .nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.factory-bootstrap-421 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-421 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-421 .nav-tabs-justified>.active>a,.factory-bootstrap-421 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-421 .nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.factory-bootstrap-421 .tab-content>.tab-pane{display:none}.factory-bootstrap-421 .tab-content>.active{display:block}.factory-bootstrap-421 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-421 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-421 .navbar:after,.factory-bootstrap-421 .navbar:before{display:table;content:" "}.factory-bootstrap-421 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-421 .navbar-header:after,.factory-bootstrap-421 .navbar-header:before{display:table;content:" "}.factory-bootstrap-421 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-421 .navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.factory-bootstrap-421 .navbar-collapse:after,.factory-bootstrap-421 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-421 .navbar-collapse:after{clear:both}.factory-bootstrap-421 .navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.factory-bootstrap-421 .container>.navbar-collapse,.factory-bootstrap-421 .container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.factory-bootstrap-421 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-421 .navbar-fixed-bottom,.factory-bootstrap-421 .navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.factory-bootstrap-421 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-421 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-421 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-421 .navbar-brand:focus,.factory-bootstrap-421 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-421 .navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.factory-bootstrap-421 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-421 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-421 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-421 .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.factory-bootstrap-421 .navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block}.navbar-form select.form-control{width:auto}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{float:none;margin-left:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.factory-bootstrap-421 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-421 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-421 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-421 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-421 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-421 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-421 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-421 .navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.factory-bootstrap-421 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-421 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-421 .navbar-default .navbar-brand:focus,.factory-bootstrap-421 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-421 .navbar-default .navbar-nav>li>a,.factory-bootstrap-421 .navbar-default .navbar-text{color:#777}.factory-bootstrap-421 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-421 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-421 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-421 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-421 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-421 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-421 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-421 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-421 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-421 .navbar-default .navbar-toggle:focus,.factory-bootstrap-421 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-421 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-421 .navbar-default .navbar-collapse,.factory-bootstrap-421 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-421 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-421 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-421 .navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.factory-bootstrap-421 .navbar-default .navbar-link{color:#777}.factory-bootstrap-421 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-421 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-421 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-421 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-421 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-421 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-421 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-421 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-421 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-421 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-421 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-421 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-421 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-421 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-421 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-421 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-421 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-421 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-421 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-421 .navbar-inverse .navbar-collapse,.factory-bootstrap-421 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-421 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-421 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-421 .navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.factory-bootstrap-421 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-421 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-421 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-421 .breadcrumb>li{display:inline-block}.factory-bootstrap-421 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-421 .breadcrumb>.active{color:#999}.factory-bootstrap-421 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-421 .pagination>li{display:inline}.factory-bootstrap-421 .pagination>li>a,.factory-bootstrap-421 .pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-421 .pagination>li:first-child>a,.factory-bootstrap-421 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-421 .pagination>li:last-child>a,.factory-bootstrap-421 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-421 .pagination>li>a:focus,.factory-bootstrap-421 .pagination>li>a:hover,.factory-bootstrap-421 .pagination>li>span:focus,.factory-bootstrap-421 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-421 .pagination>.active>a,.factory-bootstrap-421 .pagination>.active>a:focus,.factory-bootstrap-421 .pagination>.active>a:hover,.factory-bootstrap-421 .pagination>.active>span,.factory-bootstrap-421 .pagination>.active>span:focus,.factory-bootstrap-421 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-421 .pagination>.disabled>a,.factory-bootstrap-421 .pagination>.disabled>a:focus,.factory-bootstrap-421 .pagination>.disabled>a:hover,.factory-bootstrap-421 .pagination>.disabled>span,.factory-bootstrap-421 .pagination>.disabled>span:focus,.factory-bootstrap-421 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-421 .pagination-lg>li>a,.factory-bootstrap-421 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-421 .pagination-lg>li:first-child>a,.factory-bootstrap-421 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-421 .pagination-lg>li:last-child>a,.factory-bootstrap-421 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-421 .pagination-sm>li>a,.factory-bootstrap-421 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-421 .pagination-sm>li:first-child>a,.factory-bootstrap-421 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-421 .pagination-sm>li:last-child>a,.factory-bootstrap-421 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-421 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-421 .pager:after,.factory-bootstrap-421 .pager:before{display:table;content:" "}.factory-bootstrap-421 .pager:after{clear:both}.factory-bootstrap-421 .pager li{display:inline}.factory-bootstrap-421 .pager li>a,.factory-bootstrap-421 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-421 .pager li>a:focus,.factory-bootstrap-421 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-421 .pager .next>a,.factory-bootstrap-421 .pager .next>span{float:right}.factory-bootstrap-421 .pager .previous>a,.factory-bootstrap-421 .pager .previous>span{float:left}.factory-bootstrap-421 .pager .disabled>a,.factory-bootstrap-421 .pager .disabled>a:focus,.factory-bootstrap-421 .pager .disabled>a:hover,.factory-bootstrap-421 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-421 .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.factory-bootstrap-421 .label[href]:focus,.factory-bootstrap-421 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-421 .label:empty{display:none}.factory-bootstrap-421 .btn .label{position:relative;top:-1px}.factory-bootstrap-421 .label-default{background-color:#999}.factory-bootstrap-421 .label-default[href]:focus,.factory-bootstrap-421 .label-default[href]:hover{background-color:gray}.factory-bootstrap-421 .label-primary{background-color:#428bca}.factory-bootstrap-421 .label-primary[href]:focus,.factory-bootstrap-421 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-421 .label-success{background-color:#5cb85c}.factory-bootstrap-421 .label-success[href]:focus,.factory-bootstrap-421 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-421 .label-info{background-color:#5bc0de}.factory-bootstrap-421 .label-info[href]:focus,.factory-bootstrap-421 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-421 .label-warning{background-color:#f0ad4e}.factory-bootstrap-421 .label-warning[href]:focus,.factory-bootstrap-421 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-421 .label-danger{background-color:#d9534f}.factory-bootstrap-421 .label-danger[href]:focus,.factory-bootstrap-421 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-421 .badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#999;border-radius:10px}.factory-bootstrap-421 .badge:empty{display:none}.factory-bootstrap-421 .btn .badge{position:relative;top:-1px}.factory-bootstrap-421 a.badge:focus,.factory-bootstrap-421 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-421 .nav-pills>.active>a>.badge,.factory-bootstrap-421 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-421 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-421 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-421 .jumbotron .h1,.factory-bootstrap-421 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-421 .jumbotron p{line-height:1.4}.factory-bootstrap-421 .container .jumbotron{border-radius:6px}.factory-bootstrap-421 .jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.factory-bootstrap-421 .thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.factory-bootstrap-421 .thumbnail a>img,.factory-bootstrap-421 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-421 a.thumbnail.active,.factory-bootstrap-421 a.thumbnail:focus,.factory-bootstrap-421 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-421 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-421 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-421 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-421 .alert .alert-link{font-weight:700}.factory-bootstrap-421 .alert>p,.factory-bootstrap-421 .alert>ul{margin-bottom:0}.factory-bootstrap-421 .alert>p+p{margin-top:5px}.factory-bootstrap-421 .alert-dismissable{padding-right:35px}.factory-bootstrap-421 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-421 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-421 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-421 .alert-info .alert-link{color:#245269}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.factory-bootstrap-421 .progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.factory-bootstrap-421 .progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#2ea2cc;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.factory-bootstrap-421 .progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.factory-bootstrap-421 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-421 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-421 .progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-421 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-421 .progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-421 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-421 .progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-421 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-421 .progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-421 .media,.factory-bootstrap-421 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-421 .media,.factory-bootstrap-421 .media .media{margin-top:15px}.factory-bootstrap-421 .media:first-child{margin-top:0}.factory-bootstrap-421 .media-object{display:block}.factory-bootstrap-421 .media-heading{margin:0 0 5px}.factory-bootstrap-421 .media>.pull-left{margin-right:10px}.factory-bootstrap-421 .media>.pull-right{margin-left:10px}.factory-bootstrap-421 .media-list{padding-left:0;list-style:none}.factory-bootstrap-421 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-421 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-421 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-421 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-421 .list-group-item>.badge{float:right}.factory-bootstrap-421 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-421 a.list-group-item{color:#555}.factory-bootstrap-421 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-421 a.list-group-item:focus,.factory-bootstrap-421 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-421 a.list-group-item.active,.factory-bootstrap-421 a.list-group-item.active:focus,.factory-bootstrap-421 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-421 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-421 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-421 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-421 a.list-group-item.active .list-group-item-text,.factory-bootstrap-421 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-421 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-421 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-421 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-421 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-421 .panel-body{padding:15px}.factory-bootstrap-421 .panel-body:after,.factory-bootstrap-421 .panel-body:before{display:table;content:" "}.factory-bootstrap-421 .panel-body:after{clear:both}.factory-bootstrap-421 .panel>.list-group{margin-bottom:0}.factory-bootstrap-421 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-421 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-421 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-421 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-421 .panel>.table,.factory-bootstrap-421 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-421 .panel>.panel-body+.table,.factory-bootstrap-421 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-421 .panel>.table>tbody:first-child td,.factory-bootstrap-421 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-421 .panel>.table-bordered,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-421 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-421 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-421 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-421 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-421 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-421 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-421 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-421 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-421 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-421 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-421 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-421 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-421 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-421 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-421 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-421 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-421 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-421 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-421 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-421 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-421 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-421 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-421 .panel-title>a{color:inherit}.factory-bootstrap-421 .panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.factory-bootstrap-421 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-421 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-421 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-421 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-421 .panel-group .panel-footer{border-top:0}.factory-bootstrap-421 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-421 .panel-default{border-color:#ddd}.factory-bootstrap-421 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-421 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-421 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-421 .panel-primary{border-color:#428bca}.factory-bootstrap-421 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-421 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-421 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-421 .panel-success{border-color:#d6e9c6}.factory-bootstrap-421 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-421 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-421 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-421 .panel-warning{border-color:#faebcc}.factory-bootstrap-421 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-421 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-421 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-421 .panel-danger{border-color:#ebccd1}.factory-bootstrap-421 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-421 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-421 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-421 .panel-info{border-color:#bce8f1}.factory-bootstrap-421 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-421 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-421 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-421 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-421 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-421 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-421 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-421 .close{float:right;font-size:14px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.3;filter:alpha(opacity=30)}.factory-bootstrap-421 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-421 .close:focus,.factory-bootstrap-421 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-421 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-421 .modal-open{overflow:hidden}.factory-bootstrap-421 .modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll;width:auto;margin-left:0;background-color:transparent;border:0}.factory-bootstrap-421 .modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.factory-bootstrap-421 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-421 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-421 .modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box}.factory-bootstrap-421 .modal-backdrop,.factory-bootstrap-421-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-421 .modal-backdrop.fade,.factory-bootstrap-421-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-421 .modal-backdrop.in,.factory-bootstrap-421-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-421 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-421 .modal-header .close{margin-top:-2px}.factory-bootstrap-421 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-421 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-421 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-421 .modal-footer:after,.factory-bootstrap-421 .modal-footer:before{display:table;content:" "}.factory-bootstrap-421 .modal-footer:after{clear:both}.factory-bootstrap-421 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-421 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-421 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-421 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-421 .modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}}.factory-bootstrap-421 .tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.factory-bootstrap-421 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-421 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-421 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-421 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-421 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-421 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-421 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-421 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-421 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-421 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-421 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-421 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-421 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-421 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-421 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-421 .popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);background-clip:padding-box}.factory-bootstrap-421 .popover.top{margin-top:-10px}.factory-bootstrap-421 .popover.right{margin-left:10px}.factory-bootstrap-421 .popover.bottom{margin-top:10px}.factory-bootstrap-421 .popover.left{margin-left:-10px}.factory-bootstrap-421 .popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.factory-bootstrap-421 .popover-content{padding:9px 14px}.factory-bootstrap-421 .popover .arrow,.factory-bootstrap-421 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-421 .popover .arrow{border-width:11px}.factory-bootstrap-421 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-421 .popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.factory-bootstrap-421 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-421 .popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.factory-bootstrap-421 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-421 .popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);border-top-width:0}.factory-bootstrap-421 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-421 .popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,.25);border-right-width:0}.factory-bootstrap-421 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-421 .carousel{position:relative}.factory-bootstrap-421 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-421 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-421 .carousel-inner>.item>a>img,.factory-bootstrap-421 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-421 .carousel-inner>.active,.factory-bootstrap-421 .carousel-inner>.next,.factory-bootstrap-421 .carousel-inner>.prev{display:block}.factory-bootstrap-421 .carousel-inner>.active{left:0}.factory-bootstrap-421 .carousel-inner>.next,.factory-bootstrap-421 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-421 .carousel-inner>.next{left:100%}.factory-bootstrap-421 .carousel-inner>.prev{left:-100%}.factory-bootstrap-421 .carousel-inner>.next.left,.factory-bootstrap-421 .carousel-inner>.prev.right{left:0}.factory-bootstrap-421 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-421 .carousel-inner>.active.right{left:100%}.factory-bootstrap-421 .carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-421 .carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.factory-bootstrap-421 .carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.factory-bootstrap-421 .carousel-control:focus,.factory-bootstrap-421 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-421 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-421 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-421 .carousel-control .icon-next,.factory-bootstrap-421 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-421 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-421 .carousel-control .icon-prev{left:50%}.factory-bootstrap-421 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-421 .carousel-control .icon-next{right:50%}.factory-bootstrap-421 .carousel-control .icon-next,.factory-bootstrap-421 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-421 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-421 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-421 .carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.factory-bootstrap-421 .carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.factory-bootstrap-421 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-421 .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.factory-bootstrap-421 .carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicons-chevron-left,.carousel-control .glyphicons-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.factory-bootstrap-421 .clearfix:after,.factory-bootstrap-421 .clearfix:before{display:table;content:" "}.factory-bootstrap-421 .clearfix:after{clear:both}.factory-bootstrap-421 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-421 .pull-right{float:right!important}.factory-bootstrap-421 .pull-left{float:left!important}.factory-bootstrap-421 .hide{display:none!important}.factory-bootstrap-421 .show{display:block!important}.factory-bootstrap-421 .invisible{visibility:hidden}.factory-bootstrap-421 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-421 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-421 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-421 .visible-lg,.factory-bootstrap-421 .visible-md,.factory-bootstrap-421 .visible-sm,.factory-bootstrap-421 .visible-xs,.factory-bootstrap-421 td.visible-lg,.factory-bootstrap-421 td.visible-md,.factory-bootstrap-421 td.visible-sm,.factory-bootstrap-421 td.visible-xs,.factory-bootstrap-421 th.visible-lg,.factory-bootstrap-421 th.visible-md,.factory-bootstrap-421 th.visible-sm,.factory-bootstrap-421 th.visible-xs,.factory-bootstrap-421 tr.visible-lg,.factory-bootstrap-421 tr.visible-md,.factory-bootstrap-421 tr.visible-sm,.factory-bootstrap-421 tr.visible-xs{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}table.visible-xs.visible-sm{display:table}tr.visible-xs.visible-sm{display:table-row!important}td.visible-xs.visible-sm,th.visible-xs.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}table.visible-xs.visible-md{display:table}tr.visible-xs.visible-md{display:table-row!important}td.visible-xs.visible-md,th.visible-xs.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-xs.visible-lg{display:block!important}table.visible-xs.visible-lg{display:table}tr.visible-xs.visible-lg{display:table-row!important}td.visible-xs.visible-lg,th.visible-xs.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-sm.visible-xs{display:block!important}table.visible-sm.visible-xs{display:table}tr.visible-sm.visible-xs{display:table-row!important}td.visible-sm.visible-xs,th.visible-sm.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}table.visible-sm.visible-md{display:table}tr.visible-sm.visible-md{display:table-row!important}td.visible-sm.visible-md,th.visible-sm.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-sm.visible-lg{display:block!important}table.visible-sm.visible-lg{display:table}tr.visible-sm.visible-lg{display:table-row!important}td.visible-sm.visible-lg,th.visible-sm.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-md.visible-xs{display:block!important}table.visible-md.visible-xs{display:table}tr.visible-md.visible-xs{display:table-row!important}td.visible-md.visible-xs,th.visible-md.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}table.visible-md.visible-sm{display:table}tr.visible-md.visible-sm{display:table-row!important}td.visible-md.visible-sm,th.visible-md.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-md.visible-lg{display:block!important}table.visible-md.visible-lg{display:table}tr.visible-md.visible-lg{display:table-row!important}td.visible-md.visible-lg,th.visible-md.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-lg.visible-xs{display:block!important}table.visible-lg.visible-xs{display:table}tr.visible-lg.visible-xs{display:table-row!important}td.visible-lg.visible-xs,th.visible-lg.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}table.visible-lg.visible-sm{display:table}tr.visible-lg.visible-sm{display:table-row!important}td.visible-lg.visible-sm,th.visible-lg.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}table.visible-lg.visible-md{display:table}tr.visible-lg.visible-md{display:table-row!important}td.visible-lg.visible-md,th.visible-lg.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}.factory-bootstrap-421 .hidden-xs{display:block!important}.factory-bootstrap-421 table.hidden-xs{display:table}.factory-bootstrap-421 tr.hidden-xs{display:table-row!important}.factory-bootstrap-421 td.hidden-xs,.factory-bootstrap-421 th.hidden-xs{display:table-cell!important}@media (max-width:767px){.hidden-xs,td.hidden-xs,th.hidden-xs,tr.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm,th.hidden-xs.hidden-sm,tr.hidden-xs.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md,td.hidden-xs.hidden-md,th.hidden-xs.hidden-md,tr.hidden-xs.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg,th.hidden-xs.hidden-lg,tr.hidden-xs.hidden-lg{display:none!important}}.factory-bootstrap-421 .hidden-sm{display:block!important}.factory-bootstrap-421 table.hidden-sm{display:table}.factory-bootstrap-421 tr.hidden-sm{display:table-row!important}.factory-bootstrap-421 td.hidden-sm,.factory-bootstrap-421 th.hidden-sm{display:table-cell!important}@media (max-width:767px){.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs,th.hidden-sm.hidden-xs,tr.hidden-sm.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm,td.hidden-sm,th.hidden-sm,tr.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md,td.hidden-sm.hidden-md,th.hidden-sm.hidden-md,tr.hidden-sm.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg,th.hidden-sm.hidden-lg,tr.hidden-sm.hidden-lg{display:none!important}}.factory-bootstrap-421 .hidden-md{display:block!important}.factory-bootstrap-421 table.hidden-md{display:table}.factory-bootstrap-421 tr.hidden-md{display:table-row!important}.factory-bootstrap-421 td.hidden-md,.factory-bootstrap-421 th.hidden-md{display:table-cell!important}@media (max-width:767px){.hidden-md.hidden-xs,td.hidden-md.hidden-xs,th.hidden-md.hidden-xs,tr.hidden-md.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-md.hidden-sm,td.hidden-md.hidden-sm,th.hidden-md.hidden-sm,tr.hidden-md.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md,td.hidden-md,th.hidden-md,tr.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-md.hidden-lg,td.hidden-md.hidden-lg,th.hidden-md.hidden-lg,tr.hidden-md.hidden-lg{display:none!important}}.factory-bootstrap-421 .hidden-lg{display:block!important}.factory-bootstrap-421 table.hidden-lg{display:table}.factory-bootstrap-421 tr.hidden-lg{display:table-row!important}.factory-bootstrap-421 td.hidden-lg,.factory-bootstrap-421 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-421 .hidden-lg.hidden-xs,.factory-bootstrap-421 td.hidden-lg.hidden-xs,.factory-bootstrap-421 th.hidden-lg.hidden-xs,.factory-bootstrap-421 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-421 .hidden-lg.hidden-sm,.factory-bootstrap-421 td.hidden-lg.hidden-sm,.factory-bootstrap-421 th.hidden-lg.hidden-sm,.factory-bootstrap-421 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-421 .hidden-lg.hidden-md,.factory-bootstrap-421 td.hidden-lg.hidden-md,.factory-bootstrap-421 th.hidden-lg.hidden-md,.factory-bootstrap-421 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-421 .hidden-lg,.factory-bootstrap-421 td.hidden-lg,.factory-bootstrap-421 th.hidden-lg,.factory-bootstrap-421 tr.hidden-lg{display:none!important}}.factory-bootstrap-421 .visible-print,.factory-bootstrap-421 td.visible-print,.factory-bootstrap-421 th.visible-print,.factory-bootstrap-421 tr.visible-print{display:none!important}@media print{.factory-bootstrap-421 .visible-print{display:block!important}.factory-bootstrap-421 table.visible-print{display:table}.factory-bootstrap-421 tr.visible-print{display:table-row!important}.factory-bootstrap-421 td.visible-print,.factory-bootstrap-421 th.visible-print{display:table-cell!important}.factory-bootstrap-421 .hidden-print,.factory-bootstrap-421 td.hidden-print,.factory-bootstrap-421 th.hidden-print,.factory-bootstrap-421 tr.hidden-print{display:none!important}}/*!
|
12 |
+
* Factory Default Bootstrap Theme
|
13 |
+
*
|
14 |
+
* The code is based on Bootstrap v2.1.1
|
15 |
+
*
|
16 |
+
* Bootstrap v3.0.3 (http://getbootstrap.com)
|
17 |
+
* Copyright 2013 Twitter, Inc.
|
18 |
+
* Licensed under http://www.apache.org/licenses/LICENSE-2.0
|
19 |
+
*
|
20 |
+
* @author Paul Kashtanoff <paul@byonepress.com>
|
21 |
+
* @copyright (c) 2013, OnePress Ltd
|
22 |
+
*
|
23 |
+
* @package factory-bootstrap
|
24 |
+
* @since 1.0.0
|
25 |
+
*/.factory-bootstrap-421 .btn-danger,.factory-bootstrap-421 .btn-default,.factory-bootstrap-421 .btn-info,.factory-bootstrap-421 .btn-primary,.factory-bootstrap-421 .btn-success,.factory-bootstrap-421 .btn-warning{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-421 .btn-danger.active,.factory-bootstrap-421 .btn-danger:active,.factory-bootstrap-421 .btn-default.active,.factory-bootstrap-421 .btn-default:active,.factory-bootstrap-421 .btn-info.active,.factory-bootstrap-421 .btn-info:active,.factory-bootstrap-421 .btn-primary.active,.factory-bootstrap-421 .btn-primary:active,.factory-bootstrap-421 .btn-success.active,.factory-bootstrap-421 .btn-success:active,.factory-bootstrap-421 .btn-warning.active,.factory-bootstrap-421 .btn-warning:active{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.1);box-shadow:inset 0 1px 1px rgba(0,0,0,.1)}.factory-bootstrap-421 .btn.active,.factory-bootstrap-421 .btn:active{background-image:none}.factory-bootstrap-421 .btn-default{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);vertical-align:top}.factory-bootstrap-421 .btn-default.active,.factory-bootstrap-421 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-421 .btn-gold{font-weight:700;padding:7px 12px;cursor:pointer;line-height:16px;display:inline-block;border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px;box-shadow:#e3e3e3 0 1px 1px;-moz-box-shadow:0 1px 1px rgba(000,000,000,.1),inset 0 1px 1px rgba(255,255,255,.7);-webkit-box-shadow:0 1px 1px rgba(000,000,000,.1),inset 0 1px 1px rgba(255,255,255,.7);text-shadow:1px 1px 0 #ffe8b2;color:#7c5d1b;border:1px solid #d6a437;background:#feeb80}.factory-bootstrap-421 .btn-gold:focus,.factory-bootstrap-421 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-421 .btn-gold.active,.factory-bootstrap-421 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-421 .btn-primary{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none}.factory-bootstrap-421 .btn-primary:focus,.factory-bootstrap-421 .btn-primary:hover{background:#1e8cbe;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff}.factory-bootstrap-421 .btn-primary.active,.factory-bootstrap-421 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-421 .btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);background-repeat:repeat-x;border-color:#3e8f3e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-421 .btn-success:focus,.factory-bootstrap-421 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-421 .btn-success.active,.factory-bootstrap-421 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-421 .btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);background-repeat:repeat-x;border-color:#e38d13;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-421 .btn-warning:focus,.factory-bootstrap-421 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-421 .btn-warning.active,.factory-bootstrap-421 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-421 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-421 .btn-danger.active,.factory-bootstrap-421 .btn-danger:active,.factory-bootstrap-421 .btn-danger:focus,.factory-bootstrap-421 .btn-danger:hover,.factory-bootstrap-421 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-421 .btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);background-repeat:repeat-x;border-color:#28a4c9;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-421 .btn-info:focus,.factory-bootstrap-421 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-421 .btn-info.active,.factory-bootstrap-421 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-421 .img-thumbnail,.factory-bootstrap-421 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-421 .dropdown-menu>li>a:focus,.factory-bootstrap-421 .dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.factory-bootstrap-421 .dropdown-menu>.active>a,.factory-bootstrap-421 .dropdown-menu>.active>a:focus,.factory-bootstrap-421 .dropdown-menu>.active>a:hover{background-color:#357ebd;background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.factory-bootstrap-421 .navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.factory-bootstrap-421 .navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f3f3f3 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.factory-bootstrap-421 .navbar-brand,.factory-bootstrap-421 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-421 .navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-421 .navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#222 0,#282828 100%);background-image:linear-gradient(to bottom,#222 0,#282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.factory-bootstrap-421 .navbar-inverse .navbar-brand,.factory-bootstrap-421 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-421 .navbar-fixed-bottom,.factory-bootstrap-421 .navbar-fixed-top,.factory-bootstrap-421 .navbar-static-top{border-radius:0}.factory-bootstrap-421 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-421 .alert .actions{padding-top:10px}.factory-bootstrap-421 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-421 .alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0)}.factory-bootstrap-421 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-421 .alert-normal,.factory-bootstrap-421 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-421 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-421 .alert-danger a:not(.btn),.factory-bootstrap-421 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-421 .progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0)}.factory-bootstrap-421 .progress-bar{background-image:-webkit-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0)}.factory-bootstrap-421 .progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0)}.factory-bootstrap-421 .progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0)}.factory-bootstrap-421 .progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0)}.factory-bootstrap-421 .progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0)}.factory-bootstrap-421 .list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-421 .list-group-item.active,.factory-bootstrap-421 .list-group-item.active:focus,.factory-bootstrap-421 .list-group-item.active:hover{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0)}.factory-bootstrap-421 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-421 .panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.factory-bootstrap-421 .panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.factory-bootstrap-421 .panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0)}.factory-bootstrap-421 .panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0)}.factory-bootstrap-421 .panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0)}.factory-bootstrap-421 .panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0)}.factory-bootstrap-421 .well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}.factory-bootstrap-421 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-421 .factory-hidden{display:none}.factory-bootstrap-421 .factory-ajax-loader{width:25px;height:25px;background:url(../assets/images/loader-sm-tr.gif)}.factory-control-error{background-color:rgba(0,0,0,.8);white-space:normal;z-index:10;font-weight:400;line-height:150%;border-radius:4px;color:#fff;font-size:13px;margin-top:5px;padding:4px 10px 3px;max-width:500px;display:inline-block}.factory-control-error i{margin:0 7px 0 1px}
|
libs/factory/bootstrap/assets/css-min/bootstrap.datepicker.min.css
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
/*!
|
12 |
+
* Datepicker for Bootstrap v1.5.0-dev (https://github.com/eternicode/bootstrap-datepicker)
|
13 |
+
*
|
14 |
+
* Copyright 2012 Stefan Petre
|
15 |
+
* Improvements by Andrew Rowls
|
16 |
+
* Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
|
17 |
+
*/.datepicker{border-radius:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker.datepicker-rtl{direction:rtl}.datepicker.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0}.datepicker-dropdown:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-top:0;border-bottom-color:rgba(0,0,0,.2);position:absolute}.datepicker-dropdown:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;border-top:0;position:absolute}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-top:before{top:-7px}.datepicker-dropdown.datepicker-orient-top:after{top:-6px}.datepicker-dropdown.datepicker-orient-bottom:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.datepicker-dropdown.datepicker-orient-bottom:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker>div{display:none}.datepicker.days .datepicker-days,.datepicker.months .datepicker-months,.datepicker.years .datepicker-years{display:block}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker table tr td,.datepicker table tr th{text-align:center;width:30px;height:30px;border-radius:4px;border:0}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.day.focused,.datepicker table tr td.day:hover{background:#eee;cursor:pointer}.datepicker table tr td.new,.datepicker table tr td.old{color:#999}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td.today,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today:hover{color:#000;background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.disabled:hover:focus,.datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today:active,.datepicker table tr td.today:focus,.datepicker table tr td.today:hover,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active,.datepicker table tr td.today:hover:focus,.datepicker table tr td.today:hover:hover,.open .dropdown-toggle.datepicker table tr td.today,.open .dropdown-toggle.datepicker table tr td.today.disabled,.open .dropdown-toggle.datepicker table tr td.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.today:hover{color:#000;background-color:#ffcd70;border-color:#f59e00}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today:active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active,.open .dropdown-toggle.datepicker table tr td.today,.open .dropdown-toggle.datepicker table tr td.today.disabled,.open .dropdown-toggle.datepicker table tr td.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.today:hover{background-image:none}.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled.disabled,.datepicker table tr td.today.disabled.disabled.active,.datepicker table tr td.today.disabled.disabled:active,.datepicker table tr td.today.disabled.disabled:focus,.datepicker table tr td.today.disabled.disabled:hover,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.disabled,.datepicker table tr td.today.disabled:hover.disabled.active,.datepicker table tr td.today.disabled:hover.disabled:active,.datepicker table tr td.today.disabled:hover.disabled:focus,.datepicker table tr td.today.disabled:hover.disabled:hover,.datepicker table tr td.today.disabled:hover[disabled],.datepicker table tr td.today.disabled:hover[disabled].active,.datepicker table tr td.today.disabled:hover[disabled]:active,.datepicker table tr td.today.disabled:hover[disabled]:focus,.datepicker table tr td.today.disabled:hover[disabled]:hover,.datepicker table tr td.today.disabled[disabled],.datepicker table tr td.today.disabled[disabled].active,.datepicker table tr td.today.disabled[disabled]:active,.datepicker table tr td.today.disabled[disabled]:focus,.datepicker table tr td.today.disabled[disabled]:hover,.datepicker table tr td.today:hover.disabled,.datepicker table tr td.today:hover.disabled.active,.datepicker table tr td.today:hover.disabled:active,.datepicker table tr td.today:hover.disabled:focus,.datepicker table tr td.today:hover.disabled:hover,.datepicker table tr td.today:hover[disabled],.datepicker table tr td.today:hover[disabled].active,.datepicker table tr td.today:hover[disabled]:active,.datepicker table tr td.today:hover[disabled]:focus,.datepicker table tr td.today:hover[disabled]:hover,.datepicker table tr td.today[disabled],.datepicker table tr td.today[disabled].active,.datepicker table tr td.today[disabled]:active,.datepicker table tr td.today[disabled]:focus,.datepicker table tr td.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.today,fieldset[disabled] .datepicker table tr td.today.active,fieldset[disabled] .datepicker table tr td.today.disabled,fieldset[disabled] .datepicker table tr td.today.disabled.active,fieldset[disabled] .datepicker table tr td.today.disabled:active,fieldset[disabled] .datepicker table tr td.today.disabled:focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover,fieldset[disabled] .datepicker table tr td.today.disabled:hover.active,fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.today:active,fieldset[disabled] .datepicker table tr td.today:focus,fieldset[disabled] .datepicker table tr td.today:hover,fieldset[disabled] .datepicker table tr td.today:hover.active,fieldset[disabled] .datepicker table tr td.today:hover:active,fieldset[disabled] .datepicker table tr td.today:hover:focus,fieldset[disabled] .datepicker table tr td.today:hover:hover{background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today:hover:hover{color:#000}.datepicker table tr td.today.active:hover{color:#fff}.datepicker table tr td.range,.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:hover,.datepicker table tr td.range:hover{background:#eee;border-radius:0}.datepicker table tr td.range.today,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today:hover{color:#000;background-color:#f7ca77;border-color:#f1a417;border-radius:0}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.disabled:hover:focus,.datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:focus,.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today:hover:focus,.datepicker table tr td.range.today:hover:hover,.open .dropdown-toggle.datepicker table tr td.range.today,.open .dropdown-toggle.datepicker table tr td.range.today.disabled,.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.range.today:hover{color:#000;background-color:#f4bb51;border-color:#bf800c}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active,.open .dropdown-toggle.datepicker table tr td.range.today,.open .dropdown-toggle.datepicker table tr td.range.today.disabled,.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.range.today:hover{background-image:none}.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled.disabled,.datepicker table tr td.range.today.disabled.disabled.active,.datepicker table tr td.range.today.disabled.disabled:active,.datepicker table tr td.range.today.disabled.disabled:focus,.datepicker table tr td.range.today.disabled.disabled:hover,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.disabled,.datepicker table tr td.range.today.disabled:hover.disabled.active,.datepicker table tr td.range.today.disabled:hover.disabled:active,.datepicker table tr td.range.today.disabled:hover.disabled:focus,.datepicker table tr td.range.today.disabled:hover.disabled:hover,.datepicker table tr td.range.today.disabled:hover[disabled],.datepicker table tr td.range.today.disabled:hover[disabled].active,.datepicker table tr td.range.today.disabled:hover[disabled]:active,.datepicker table tr td.range.today.disabled:hover[disabled]:focus,.datepicker table tr td.range.today.disabled:hover[disabled]:hover,.datepicker table tr td.range.today.disabled[disabled],.datepicker table tr td.range.today.disabled[disabled].active,.datepicker table tr td.range.today.disabled[disabled]:active,.datepicker table tr td.range.today.disabled[disabled]:focus,.datepicker table tr td.range.today.disabled[disabled]:hover,.datepicker table tr td.range.today:hover.disabled,.datepicker table tr td.range.today:hover.disabled.active,.datepicker table tr td.range.today:hover.disabled:active,.datepicker table tr td.range.today:hover.disabled:focus,.datepicker table tr td.range.today:hover.disabled:hover,.datepicker table tr td.range.today:hover[disabled],.datepicker table tr td.range.today:hover[disabled].active,.datepicker table tr td.range.today:hover[disabled]:active,.datepicker table tr td.range.today:hover[disabled]:focus,.datepicker table tr td.range.today:hover[disabled]:hover,.datepicker table tr td.range.today[disabled],.datepicker table tr td.range.today[disabled].active,.datepicker table tr td.range.today[disabled]:active,.datepicker table tr td.range.today[disabled]:focus,.datepicker table tr td.range.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.today,fieldset[disabled] .datepicker table tr td.range.today.active,fieldset[disabled] .datepicker table tr td.range.today.disabled,fieldset[disabled] .datepicker table tr td.range.today.disabled.active,fieldset[disabled] .datepicker table tr td.range.today.disabled:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.range.today:active,fieldset[disabled] .datepicker table tr td.range.today:focus,fieldset[disabled] .datepicker table tr td.range.today:hover,fieldset[disabled] .datepicker table tr td.range.today:hover.active,fieldset[disabled] .datepicker table tr td.range.today:hover:active,fieldset[disabled] .datepicker table tr td.range.today:hover:focus,fieldset[disabled] .datepicker table tr td.range.today:hover:hover{background-color:#f7ca77;border-color:#f1a417}.datepicker table tr td.selected,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected:hover{color:#fff;background-color:#999;border-color:#555;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.disabled:hover:focus,.datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected:active,.datepicker table tr td.selected:focus,.datepicker table tr td.selected:hover,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected:hover:focus,.datepicker table tr td.selected:hover:hover,.open .dropdown-toggle.datepicker table tr td.selected,.open .dropdown-toggle.datepicker table tr td.selected.disabled,.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover,.open .dropdown-toggle.datepicker table tr td.selected:hover{color:#fff;background-color:#858585;border-color:#373737}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active,.open .dropdown-toggle.datepicker table tr td.selected,.open .dropdown-toggle.datepicker table tr td.selected.disabled,.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover,.open .dropdown-toggle.datepicker table tr td.selected:hover{background-image:none}.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled.disabled,.datepicker table tr td.selected.disabled.disabled.active,.datepicker table tr td.selected.disabled.disabled:active,.datepicker table tr td.selected.disabled.disabled:focus,.datepicker table tr td.selected.disabled.disabled:hover,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.disabled,.datepicker table tr td.selected.disabled:hover.disabled.active,.datepicker table tr td.selected.disabled:hover.disabled:active,.datepicker table tr td.selected.disabled:hover.disabled:focus,.datepicker table tr td.selected.disabled:hover.disabled:hover,.datepicker table tr td.selected.disabled:hover[disabled],.datepicker table tr td.selected.disabled:hover[disabled].active,.datepicker table tr td.selected.disabled:hover[disabled]:active,.datepicker table tr td.selected.disabled:hover[disabled]:focus,.datepicker table tr td.selected.disabled:hover[disabled]:hover,.datepicker table tr td.selected.disabled[disabled],.datepicker table tr td.selected.disabled[disabled].active,.datepicker table tr td.selected.disabled[disabled]:active,.datepicker table tr td.selected.disabled[disabled]:focus,.datepicker table tr td.selected.disabled[disabled]:hover,.datepicker table tr td.selected:hover.disabled,.datepicker table tr td.selected:hover.disabled.active,.datepicker table tr td.selected:hover.disabled:active,.datepicker table tr td.selected:hover.disabled:focus,.datepicker table tr td.selected:hover.disabled:hover,.datepicker table tr td.selected:hover[disabled],.datepicker table tr td.selected:hover[disabled].active,.datepicker table tr td.selected:hover[disabled]:active,.datepicker table tr td.selected:hover[disabled]:focus,.datepicker table tr td.selected:hover[disabled]:hover,.datepicker table tr td.selected[disabled],.datepicker table tr td.selected[disabled].active,.datepicker table tr td.selected[disabled]:active,.datepicker table tr td.selected[disabled]:focus,.datepicker table tr td.selected[disabled]:hover,fieldset[disabled] .datepicker table tr td.selected,fieldset[disabled] .datepicker table tr td.selected.active,fieldset[disabled] .datepicker table tr td.selected.disabled,fieldset[disabled] .datepicker table tr td.selected.disabled.active,fieldset[disabled] .datepicker table tr td.selected.disabled:active,fieldset[disabled] .datepicker table tr td.selected.disabled:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover,fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.selected:active,fieldset[disabled] .datepicker table tr td.selected:focus,fieldset[disabled] .datepicker table tr td.selected:hover,fieldset[disabled] .datepicker table tr td.selected:hover.active,fieldset[disabled] .datepicker table tr td.selected:hover:active,fieldset[disabled] .datepicker table tr td.selected:hover:focus,fieldset[disabled] .datepicker table tr td.selected:hover:hover{background-color:#999;border-color:#555}.datepicker table tr td.active,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.disabled:hover:focus,.datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active:active,.datepicker table tr td.active:focus,.datepicker table tr td.active:hover,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active,.datepicker table tr td.active:hover:focus,.datepicker table tr td.active:hover:hover,.open .dropdown-toggle.datepicker table tr td.active,.open .dropdown-toggle.datepicker table tr td.active.disabled,.open .dropdown-toggle.datepicker table tr td.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td.active:hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active:active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active,.open .dropdown-toggle.datepicker table tr td.active,.open .dropdown-toggle.datepicker table tr td.active.disabled,.open .dropdown-toggle.datepicker table tr td.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td.active:hover{background-image:none}.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled.disabled,.datepicker table tr td.active.disabled.disabled.active,.datepicker table tr td.active.disabled.disabled:active,.datepicker table tr td.active.disabled.disabled:focus,.datepicker table tr td.active.disabled.disabled:hover,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.disabled,.datepicker table tr td.active.disabled:hover.disabled.active,.datepicker table tr td.active.disabled:hover.disabled:active,.datepicker table tr td.active.disabled:hover.disabled:focus,.datepicker table tr td.active.disabled:hover.disabled:hover,.datepicker table tr td.active.disabled:hover[disabled],.datepicker table tr td.active.disabled:hover[disabled].active,.datepicker table tr td.active.disabled:hover[disabled]:active,.datepicker table tr td.active.disabled:hover[disabled]:focus,.datepicker table tr td.active.disabled:hover[disabled]:hover,.datepicker table tr td.active.disabled[disabled],.datepicker table tr td.active.disabled[disabled].active,.datepicker table tr td.active.disabled[disabled]:active,.datepicker table tr td.active.disabled[disabled]:focus,.datepicker table tr td.active.disabled[disabled]:hover,.datepicker table tr td.active:hover.disabled,.datepicker table tr td.active:hover.disabled.active,.datepicker table tr td.active:hover.disabled:active,.datepicker table tr td.active:hover.disabled:focus,.datepicker table tr td.active:hover.disabled:hover,.datepicker table tr td.active:hover[disabled],.datepicker table tr td.active:hover[disabled].active,.datepicker table tr td.active:hover[disabled]:active,.datepicker table tr td.active:hover[disabled]:focus,.datepicker table tr td.active:hover[disabled]:hover,.datepicker table tr td.active[disabled],.datepicker table tr td.active[disabled].active,.datepicker table tr td.active[disabled]:active,.datepicker table tr td.active[disabled]:focus,.datepicker table tr td.active[disabled]:hover,fieldset[disabled] .datepicker table tr td.active,fieldset[disabled] .datepicker table tr td.active.active,fieldset[disabled] .datepicker table tr td.active.disabled,fieldset[disabled] .datepicker table tr td.active.disabled.active,fieldset[disabled] .datepicker table tr td.active.disabled:active,fieldset[disabled] .datepicker table tr td.active.disabled:focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover,fieldset[disabled] .datepicker table tr td.active.disabled:hover.active,fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.active:active,fieldset[disabled] .datepicker table tr td.active:focus,fieldset[disabled] .datepicker table tr td.active:hover,fieldset[disabled] .datepicker table tr td.active:hover.active,fieldset[disabled] .datepicker table tr td.active:hover:active,fieldset[disabled] .datepicker table tr td.active:hover:focus,fieldset[disabled] .datepicker table tr td.active:hover:hover{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;border-radius:4px}.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.disabled:hover:focus,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active:active,.datepicker table tr td span.active:focus,.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active:hover:focus,.datepicker table tr td span.active:hover:hover,.open .dropdown-toggle.datepicker table tr td span.active,.open .dropdown-toggle.datepicker table tr td span.active.disabled,.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td span.active:hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active,.open .dropdown-toggle.datepicker table tr td span.active,.open .dropdown-toggle.datepicker table tr td span.active.disabled,.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td span.active:hover{background-image:none}.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled.disabled,.datepicker table tr td span.active.disabled.disabled.active,.datepicker table tr td span.active.disabled.disabled:active,.datepicker table tr td span.active.disabled.disabled:focus,.datepicker table tr td span.active.disabled.disabled:hover,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.disabled,.datepicker table tr td span.active.disabled:hover.disabled.active,.datepicker table tr td span.active.disabled:hover.disabled:active,.datepicker table tr td span.active.disabled:hover.disabled:focus,.datepicker table tr td span.active.disabled:hover.disabled:hover,.datepicker table tr td span.active.disabled:hover[disabled],.datepicker table tr td span.active.disabled:hover[disabled].active,.datepicker table tr td span.active.disabled:hover[disabled]:active,.datepicker table tr td span.active.disabled:hover[disabled]:focus,.datepicker table tr td span.active.disabled:hover[disabled]:hover,.datepicker table tr td span.active.disabled[disabled],.datepicker table tr td span.active.disabled[disabled].active,.datepicker table tr td span.active.disabled[disabled]:active,.datepicker table tr td span.active.disabled[disabled]:focus,.datepicker table tr td span.active.disabled[disabled]:hover,.datepicker table tr td span.active:hover.disabled,.datepicker table tr td span.active:hover.disabled.active,.datepicker table tr td span.active:hover.disabled:active,.datepicker table tr td span.active:hover.disabled:focus,.datepicker table tr td span.active:hover.disabled:hover,.datepicker table tr td span.active:hover[disabled],.datepicker table tr td span.active:hover[disabled].active,.datepicker table tr td span.active:hover[disabled]:active,.datepicker table tr td span.active:hover[disabled]:focus,.datepicker table tr td span.active:hover[disabled]:hover,.datepicker table tr td span.active[disabled],.datepicker table tr td span.active[disabled].active,.datepicker table tr td span.active[disabled]:active,.datepicker table tr td span.active[disabled]:focus,.datepicker table tr td span.active[disabled]:hover,fieldset[disabled] .datepicker table tr td span.active,fieldset[disabled] .datepicker table tr td span.active.active,fieldset[disabled] .datepicker table tr td span.active.disabled,fieldset[disabled] .datepicker table tr td span.active.disabled.active,fieldset[disabled] .datepicker table tr td span.active.disabled:active,fieldset[disabled] .datepicker table tr td span.active.disabled:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td span.active:active,fieldset[disabled] .datepicker table tr td span.active:focus,fieldset[disabled] .datepicker table tr td span.active:hover,fieldset[disabled] .datepicker table tr td span.active:hover.active,fieldset[disabled] .datepicker table tr td span.active:hover:active,fieldset[disabled] .datepicker table tr td span.active:hover:focus,fieldset[disabled] .datepicker table tr td span.active:hover:hover{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span.new,.datepicker table tr td span.old{color:#999}.datepicker .datepicker-switch{width:145px}.datepicker tfoot tr th,.datepicker thead tr:first-child th{cursor:pointer}.datepicker tfoot tr th:hover,.datepicker thead tr:first-child th:hover{background:#eee}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.datepicker thead tr:first-child .cw{cursor:default;background-color:transparent}.input-group.date .input-group-addon{cursor:pointer}.input-daterange{width:100%}.input-daterange input{text-align:center}.input-daterange input:first-child{border-radius:3px 0 0 3px}.input-daterange input:last-child{border-radius:0 3px 3px 0}.input-daterange .input-group-addon{width:auto;min-width:16px;padding:4px 5px;font-weight:400;line-height:1.42857143;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:solid #ccc;border-width:1px 0;margin-left:-5px;margin-right:-5px}.datepicker.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;*border-right-width:2px;*border-bottom-width:2px;color:#333;font-size:13px;line-height:1.42857143}.datepicker.datepicker-inline td,.datepicker.datepicker-inline th,.datepicker.dropdown-menu td,.datepicker.dropdown-menu th{padding:0 5px}
|
libs/factory/bootstrap/assets/css-min/bootstrap.datetimepicker.min.css
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
/*!
|
12 |
+
* Datetimepicker for Bootstrap 3
|
13 |
+
* version : 4.17.47
|
14 |
+
* https://github.com/Eonasdan/bootstrap-datetimepicker/
|
15 |
+
*/.factory-bootstrap-421 .bootstrap-datetimepicker-widget{list-style:none}.factory-bootstrap-421 .bootstrap-datetimepicker-widget.dropdown-menu{display:block;margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.factory-bootstrap-421 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.factory-bootstrap-421 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.factory-bootstrap-421 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.factory-bootstrap-421 .bootstrap-datetimepicker-widget.dropdown-menu:after,.factory-bootstrap-421 .bootstrap-datetimepicker-widget.dropdown-menu:before{content:'';display:inline-block;position:absolute}.factory-bootstrap-421 .bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);top:-7px;left:7px}.factory-bootstrap-421 .bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;top:-6px;left:8px}.factory-bootstrap-421 .bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,.2);bottom:-7px;left:6px}.factory-bootstrap-421 .bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;bottom:-6px;left:7px}.factory-bootstrap-421 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.factory-bootstrap-421 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.factory-bootstrap-421 .bootstrap-datetimepicker-widget .list-unstyled{margin:0}.factory-bootstrap-421 .bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.factory-bootstrap-421 .bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.factory-bootstrap-421 .bootstrap-datetimepicker-widget .timepicker-hour,.factory-bootstrap-421 .bootstrap-datetimepicker-widget .timepicker-minute,.factory-bootstrap-421 .bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:700;font-size:1.2em;margin:0}.factory-bootstrap-421 .bootstrap-datetimepicker-widget button[data-action]{padding:6px}.factory-bootstrap-421 .bootstrap-datetimepicker-widget .btn[data-action=incrementHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Hours"}.factory-bootstrap-421 .bootstrap-datetimepicker-widget .btn[data-action=incrementMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Minutes"}.factory-bootstrap-421 .bootstrap-datetimepicker-widget .btn[data-action=decrementHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Hours"}.factory-bootstrap-421 .bootstrap-datetimepicker-widget .btn[data-action=decrementMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Minutes"}.factory-bootstrap-421 .bootstrap-datetimepicker-widget .btn[data-action=showHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Hours"}.factory-bootstrap-421 .bootstrap-datetimepicker-widget .btn[data-action=showMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Minutes"}.factory-bootstrap-421 .bootstrap-datetimepicker-widget .btn[data-action=togglePeriod]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle AM/PM"}.factory-bootstrap-421 .bootstrap-datetimepicker-widget .btn[data-action=clear]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Clear the picker"}.factory-bootstrap-421 .bootstrap-datetimepicker-widget .btn[data-action=today]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Set the date to today"}.factory-bootstrap-421 .bootstrap-datetimepicker-widget .picker-switch{text-align:center}.factory-bootstrap-421 .bootstrap-datetimepicker-widget .picker-switch::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle Date and Time Screens"}.factory-bootstrap-421 .bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.factory-bootstrap-421 .bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table{width:100%;margin:0}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td,.factory-bootstrap-421 .bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table th.disabled,.factory-bootstrap-421 .bootstrap-datetimepicker-widget table th.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table th.prev::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Previous Month"}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table th.next::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Next Month"}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#777}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.day:hover,.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.hour:hover,.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.minute:hover,.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.new,.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.old{color:#777}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.today{position:relative}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#337ab7;border-top-color:rgba(0,0,0,.2);position:absolute;bottom:4px;right:4px}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.active,.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.active:hover{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.disabled,.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:4px}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td span:hover{background:#eee}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td span.active{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td span.old{color:#777}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td span.disabled,.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td span.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-421 .bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.factory-bootstrap-421 .bootstrap-datetimepicker-widget.wider{width:21em}.factory-bootstrap-421 .bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em!important}.factory-bootstrap-421 .input-group.date .input-group-addon{cursor:pointer}.factory-bootstrap-421 .sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}
|
libs/factory/bootstrap/assets/css-min/bootstrap.ectoplasm.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 .btn-primary{background:#a3b745;border-color:#839237;color:#fff;-webkit-box-shadow:inset 0 1px 0 #c0cd7b,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #c0cd7b,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-421 .btn-primary:focus,.factory-bootstrap-421 .btn-primary:hover{background:#89993a;border-color:#727f30;color:#fff;-webkit-box-shadow:inset 0 1px 0 #b7c669,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #b7c669,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-421 .btn-primary:active{background:#89993a;border-color:#727f30;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-421 .btn-primary:disabled,.factory-bootstrap-421 .btn-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.factory-bootstrap-421 .btn-group .btn.active.value{background-color:#a3b745;-webkit-box-shadow:inset 0 1px 2px #839237;box-shadow:inset 0 1px 2px #839237;border-top:1px solid #839237;border-bottom:1px solid #839237;border-left:1px solid #839237}.factory-bootstrap-421 .pagination>.active>a,.factory-bootstrap-421 .pagination>.active>a:focus,.factory-bootstrap-421 .pagination>.active>a:hover,.factory-bootstrap-421 .pagination>.active>span,.factory-bootstrap-421 .pagination>.active>span:focus,.factory-bootstrap-421 .pagination>.active>span:hover{background-color:#a3b745;border-color:#839237}
|
libs/factory/bootstrap/assets/css-min/bootstrap.form-group.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 .factory-form-group .factory-legend{padding:9px 12px;background-color:#f9f9f9}.factory-bootstrap-421 .factory-form-group .factory-title{font-weight:700;font-size:14px;line-height:14px;color:#555;margin:0}.factory-bootstrap-421 .factory-form-group .factory-hint-icon{display:block;width:16px;height:16px;line-height:13px;padding:0;font-size:11px;text-align:center;position:absolute;top:-5px;right:-3px;color:#fff;background:#E91E63;border-radius:3px}.factory-bootstrap-421 .factory-form-group .factory-hint-icon.factory-hint-icon-green{background:#8bc34a}.factory-bootstrap-421 .factory-form-group .factory-hint-icon.factory-hint-icon-grey{background:#9e9e9e}.factory-bootstrap-421 .factory-form-group .factory-hint-icon.factory-hint-icon-red{background:#E91E63}.factory-bootstrap-421 .factory-form-group .factory-hint{margin:0;font-size:12px;line-height:16px;margin-top:6px}.factory-bootstrap-421 .factory-form-group+.factory-form-group{margin-top:30px}.factory-bootstrap-421 .factory-form-group legend+.control-group{margin-top:0}
|
libs/factory/bootstrap/assets/css-min/bootstrap.form-metabox.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-form-metabox{padding:15px 10px 10px}.factory-form-metabox .control-group:last-child{margin-bottom:0}#side-sortables .factory-bootstrap-421 .control-label{float:left;width:100%;text-align:left;position:relative;top:1px}#side-sortables .factory-bootstrap-421 .control-icon{float:left;margin:0 6px 0 0}#side-sortables .factory-bootstrap-421 input{float:right;position:relative;top:-25px}#side-sortables .factory-bootstrap-421 .col-sm-10{margin:0;width:100%}#side-sortables .factory-bootstrap-421 .form-group{float:none;width:auto;overflow:auto;margin-bottom:0;border-top:1px solid #f7f7f7;padding-top:15px;margin-top:15px}#side-sortables .factory-bootstrap-421 .form-group:first-child{border-top:0;padding-top:0;margin-top:0}
|
libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 .btn-primary{background:#04a4cc;border-color:#037c9a;color:#fff;-webkit-box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-421 .btn-primary:focus,.factory-bootstrap-421 .btn-primary:hover{background:#0384a4;border-color:#036881;color:#fff;-webkit-box-shadow:inset 0 1px 0 #09cafa,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #09cafa,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-421 .btn-primary:active{background:#0384a4;border-color:#036881;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-421 .btn-primary:disabled,.factory-bootstrap-421 .btn-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.factory-bootstrap-421 .btn-group .btn.active.value{background-color:#04a4cc;-webkit-box-shadow:inset 0 1px 2px #037c9a;box-shadow:inset 0 1px 2px #037c9a;border-top:1px solid #037c9a;border-bottom:1px solid #037c9a;border-left:1px solid #037c9a}.factory-bootstrap-421 .pagination>.active>a,.factory-bootstrap-421 .pagination>.active>a:focus,.factory-bootstrap-421 .pagination>.active>a:hover,.factory-bootstrap-421 .pagination>.active>span,.factory-bootstrap-421 .pagination>.active>span:focus,.factory-bootstrap-421 .pagination>.active>span:hover{background-color:#04a4cc;border-color:#037c9a}
|
libs/factory/bootstrap/assets/css-min/bootstrap.midnight.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 .btn-primary{background:#e14d43;border-color:#d02a21;color:#fff;-webkit-box-shadow:inset 0 1px 0 #ec8a85,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ec8a85,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-421 .btn-primary:focus,.factory-bootstrap-421 .btn-primary:hover{background:#d92c23;border-color:#ba251e;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8756f,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8756f,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-421 .btn-primary:active{background:#d92c23;border-color:#ba251e;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-421 .btn-primary:disabled,.factory-bootstrap-421 .btn-primary[disabled]{color:#d1c7c7!important;background:#d92c23!important;border-color:#ba251e!important;text-shadow:none!important}.factory-bootstrap-421 .btn-group .btn.active.value{background-color:#e14d43;-webkit-box-shadow:inset 0 1px 2px #d02a21;box-shadow:inset 0 1px 2px #d02a21;border-top:1px solid #d02a21;border-bottom:1px solid #d02a21;border-left:1px solid #d02a21}.factory-bootstrap-421 .pagination>.active>a,.factory-bootstrap-421 .pagination>.active>a:focus,.factory-bootstrap-421 .pagination>.active>a:hover,.factory-bootstrap-421 .pagination>.active>span,.factory-bootstrap-421 .pagination>.active>span:focus,.factory-bootstrap-421 .pagination>.active>span:hover{background-color:#e14d43;border-color:#d02a21}
|
libs/factory/bootstrap/assets/css-min/bootstrap.ocean.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 .btn-primary{background:#9ebaa0;border-color:#80a583;color:#fff;-webkit-box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-421 .btn-primary:focus,.factory-bootstrap-421 .btn-primary:hover{background:#86a988;border-color:#719a74;color:#fff;-webkit-box-shadow:inset 0 1px 0 #bccfbd,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #bccfbd,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-421 .btn-primary:active{background:#86a988;border-color:#719a74;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-421 .btn-primary:disabled,.factory-bootstrap-421 .btn-primary[disabled]{color:#c7d1c8!important;background:#86a988!important;border-color:#719a74!important;text-shadow:none!important}.factory-bootstrap-421 .btn-group .btn.active.value{background-color:#9ebaa0;-webkit-box-shadow:inset 0 1px 2px #80a583;box-shadow:inset 0 1px 2px #80a583;border-top:1px solid #80a583;border-bottom:1px solid #80a583;border-left:1px solid #80a583}.factory-bootstrap-421 .pagination>.active>a,.factory-bootstrap-421 .pagination>.active>a:focus,.factory-bootstrap-421 .pagination>.active>a:hover,.factory-bootstrap-421 .pagination>.active>span,.factory-bootstrap-421 .pagination>.active>span:focus,.factory-bootstrap-421 .pagination>.active>span:hover{background-color:#9ebaa0;border-color:#80a583}
|
libs/factory/bootstrap/assets/css-min/bootstrap.separator.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 .factory-separator{border-bottom:1px solid #f9f9f9;border-top:1px solid #d1d1d1;margin-bottom:25px}
|
libs/factory/bootstrap/assets/css-min/bootstrap.sunrise.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 .btn-primary{background:#dd823b;border-color:#c36822;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8ab7c,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8ab7c,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-421 .btn-primary:focus,.factory-bootstrap-421 .btn-primary:hover{background:#cc6c23;border-color:#ad5c1e;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e59d66,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e59d66,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-421 .btn-primary:active{background:#cc6c23;border-color:#ad5c1e;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-421 .btn-primary:disabled,.factory-bootstrap-421 .btn-primary[disabled]{color:#d1cbc7!important;background:#cc6c23!important;border-color:#ad5c1e!important;text-shadow:none!important}.factory-bootstrap-421 .btn-group .btn.active.value{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}.factory-bootstrap-421 .pagination>.active>a,.factory-bootstrap-421 .pagination>.active>a:focus,.factory-bootstrap-421 .pagination>.active>a:hover,.factory-bootstrap-421 .pagination>.active>span,.factory-bootstrap-421 .pagination>.active>span:focus,.factory-bootstrap-421 .pagination>.active>span:hover{background-color:#dd823b;border-color:#c36822}
|
libs/factory/bootstrap/assets/css-min/bootstrap.tab.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 .factory-tab{overflow:hidden;margin-bottom:25px}.factory-bootstrap-421 .factory-tab .form-group{overflow:hidden}.factory-bootstrap-421 .factory-tab+.form-group{margin-top:30px}.factory-bootstrap-421 .nav-tabs a{text-decoration:none}.factory-bootstrap-421 .factory-align-horizontal .nav-tabs{border-bottom:0}.factory-bootstrap-421 .factory-align-vertical .factory-headers{float:left;width:150px}.factory-bootstrap-421 .factory-align-vertical .factory-headers .nav-tabs{border-bottom:0;display:block;margin:0;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px}.factory-bootstrap-421 .factory-tab .factory-bodies{background-color:#fff;-webkit-border-radius:0 3px 3px;-moz-border-radius:0 3px 3px;border-radius:0 3px 3px;border:1px solid #DDD;padding:30px 15px 25px 10px}.factory-bootstrap-421 .factory-align-vertical .factory-bodies{min-height:250px;margin-left:150px}.factory-bootstrap-421 .factory-align-vertical .factory-bodies .actory-tab-item{clear:both}.factory-bootstrap-421 .form-horizontal .factory-align-vertical .form-group{margin-left:-5px}.factory-bootstrap-421 .factory-align-vertical .nav-tabs li{float:none}.factory-bootstrap-421 .factory-align-vertical .nav-tabs li a{margin-right:-1px;margin-bottom:0;position:relative;z-index:10;padding:10px 0 9px 15px;-webkit-border-radius:3px;-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;-moz-border-radius:3px;-moz-border-radius-topright:0;-moz-border-radius-bottomright:0;border-radius:3px;border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-421 .factory-align-vertical .nav-tabs>.active>a{border:1px solid #DDD!important;border-right:1px solid #fff!important}.factory-bootstrap-421 .factory-align-vertical .nav-tabs>li a:hover{color:#21759B;z-index:5;border-color:transparent}.factory-bootstrap-421 .factory-align-vertical .control-label{width:20%;max-width:140px}.factory-bootstrap-421 .factory-align-vertical .control-group{width:80%}.factory-bootstrap-421 .factory-align-vertical .control-group input[type=text],.factory-bootstrap-421 .factory-align-vertical .control-group textarea{width:90%}
|
libs/factory/bootstrap/assets/css-min/bootstrap.wp-editor.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 .wp-editor-wrap *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-421 .wp-editor-wrap .button,.factory-bootstrap-421 .wp-editor-wrap input,.factory-bootstrap-421 .wp-editor-wrap textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-421 .switch-html,.factory-bootstrap-421 .switch-tmce{color:#777}.factory-bootstrap-421 .html-active .switch-html,.factory-bootstrap-421 .tmce-active .switch-tmce{color:#555}.factory-bootstrap-421 .switch-html:hover,.factory-bootstrap-421 .switch-tmce:hover{color:#777}
|
libs/factory/bootstrap/assets/css-min/control.checkbox.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
#side-sortables .factory-bootstrap-421 .factory-buttons-way{float:right;position:relative;top:-25px;left:5px;border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-421 .factory-buttons-way{border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-421 .factory-buttons-way button{padding-left:10px;padding-right:10px}.factory-bootstrap-421 .factory-buttons-way .factory-on.active{text-shadow:none;color:#fff;background-color:#33aad5;-webkit-box-shadow:inset 0 1px 1px #0074a2;box-shadow:inset 0 1px 3px #0074a2;border-top:1px solid #0074a2;border-bottom:1px solid #0074a2;border-left:1px solid #0074a2}.factory-bootstrap-421 .factory-checkbox-tumbler-hint{margin-top:5px}.factory-bootstrap-421 .factory-checkbox-tumbler-hint .factory-tumbler-content{display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-421 .factory-buttons-way .factory-on.active{background-color:#04a4cc;-webkit-box-shadow:inset 0 1px 2px #037c9a;box-shadow:inset 0 1px 2px #037c9a;border-top:1px solid #037c9a;border-bottom:1px solid #037c9a;border-left:1px solid #037c9a}.admin-color-blue .factory-bootstrap-421 .factory-buttons-way .factory-on.active{background-color:#e1a948;-webkit-box-shadow:inset 0 1px 2px #d39323;box-shadow:inset 0 1px 2px #d39323;border-top:1px solid #d39323;border-bottom:1px solid #d39323;border-left:1px solid #d39323}.admin-color-coffee .factory-bootstrap-421 .factory-buttons-way .factory-on.active{background-color:#c7a589;-webkit-box-shadow:inset 0 1px 2px #b78a66;box-shadow:inset 0 1px 2px #b78a66;border-top:1px solid #b78a66;border-bottom:1px solid #b78a66;border-left:1px solid #b78a66}.admin-color-ectoplasm .factory-bootstrap-421 .factory-buttons-way .factory-on.active{background-color:#a3b745;-webkit-box-shadow:inset 0 1px 2px #839237;box-shadow:inset 0 1px 2px #839237;border-top:1px solid #839237;border-bottom:1px solid #839237;border-left:1px solid #839237}.admin-color-midnight .factory-bootstrap-421 .factory-buttons-way .factory-on.active{background-color:#e14d43;-webkit-box-shadow:inset 0 1px 2px #d02a21;box-shadow:inset 0 1px 2px #d02a21;border-top:1px solid #d02a21;border-bottom:1px solid #d02a21;border-left:1px solid #d02a21}.admin-color-ocean .factory-bootstrap-421 .factory-buttons-way .factory-on.active{background-color:#9ebaa0;-webkit-box-shadow:inset 0 1px 2px #80a583;box-shadow:inset 0 1px 2px #80a583;border-top:1px solid #80a583;border-bottom:1px solid #80a583;border-left:1px solid #80a583}.admin-color-sunrise .factory-bootstrap-421 .factory-buttons-way .factory-on.active{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}
|
libs/factory/bootstrap/assets/css-min/control.color-and-opacity.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 .factory-control-row{padding-left:105px;position:relative}.factory-bootstrap-421 .factory-control-row .factory-color-wrap{position:absolute;left:0;top:0}.factory-bootstrap-421 .factory-control-row .factory-opacity-wrap{width:100%}.factory-bootstrap-421 .iris-picker{margin-top:10px}
|
libs/factory/bootstrap/assets/css-min/control.color.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 .factory-color{position:relative}.factory-bootstrap-421 .factory-color .factory-color-hex{display:inline-block;width:65px;text-align:left;vertical-align:top;border-top-right-radius:3px;border-bottom-right-radius:3px;border-radius:3px;z-index:1;position:relative;margin-left:26px;border-top-left-radius:0;border-bottom-left-radius:0}.factory-bootstrap-421 .factory-color .factory-background,.factory-bootstrap-421 .factory-color .factory-pattern{cursor:pointer;height:26px;width:26px;position:absolute;border-radius:5px;background:transparent url(../../images/color_picker_pattern.jpg) center center repeat;-moz-box-sizing:border-box;box-sizing:border-box;border-bottom:2px solid rgba(0,0,0,.34);z-index:1;border-top-right-radius:0!important;border-bottom-right-radius:0!important}.factory-bootstrap-421 .factory-color .factory-background{z-index:2;border-radius:3px}
|
libs/factory/bootstrap/assets/css-min/control.dropdown-and-colors.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 .factory-dropdown-and-colors .factory-colors-wrap,.factory-bootstrap-421 .factory-dropdown-and-colors .factory-dropdown-wrap{display:inline-block}.factory-bootstrap-421 .factory-dropdown-and-colors .factory-dropdown-wrap{min-width:200px;max-width:300px}
|
libs/factory/bootstrap/assets/css-min/control.dropdown.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 .factory-dropdown.factory-buttons-way .fa{margin-right:6px;position:relative}.factory-bootstrap-421 .factory-dropdown.factory-buttons-way{border:0;border-radius:0}.factory-bootstrap-421 .factory-hints .factory-hint{margin-top:5px;display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-421 .factory-dropdown.factory-buttons-way .active{background-color:#04a4cc;-webkit-box-shadow:inset 0 1px 2px #037c9a;box-shadow:inset 0 1px 2px #037c9a;border-top:1px solid #037c9a;border-bottom:1px solid #037c9a;border-left:1px solid #037c9a}.admin-color-blue .factory-bootstrap-421 .factory-dropdown.factory-buttons-way .active{background-color:#e1a948;-webkit-box-shadow:inset 0 1px 2px #d39323;box-shadow:inset 0 1px 2px #d39323;border-top:1px solid #d39323;border-bottom:1px solid #d39323;border-left:1px solid #d39323}.admin-color-coffee .factory-bootstrap-421 .factory-dropdown.factory-buttons-way .active{background-color:#c7a589;-webkit-box-shadow:inset 0 1px 2px #b78a66;box-shadow:inset 0 1px 2px #b78a66;border-top:1px solid #b78a66;border-bottom:1px solid #b78a66;border-left:1px solid #b78a66}.admin-color-ectoplasm .factory-bootstrap-421 .factory-dropdown.factory-buttons-way .active{background-color:#a3b745;-webkit-box-shadow:inset 0 1px 2px #839237;box-shadow:inset 0 1px 2px #839237;border-top:1px solid #839237;border-bottom:1px solid #839237;border-left:1px solid #839237}.admin-color-midnight .factory-bootstrap-421 .factory-dropdown.factory-buttons-way .active{background-color:#e14d43;-webkit-box-shadow:inset 0 1px 2px #d02a21;box-shadow:inset 0 1px 2px #d02a21;border-top:1px solid #d02a21;border-bottom:1px solid #d02a21;border-left:1px solid #d02a21}.admin-color-ocean .factory-bootstrap-421 .factory-dropdown.factory-buttons-way .active{background-color:#9ebaa0;-webkit-box-shadow:inset 0 1px 2px #80a583;box-shadow:inset 0 1px 2px #80a583;border-top:1px solid #80a583;border-bottom:1px solid #80a583;border-left:1px solid #80a583}.admin-color-sunrise .factory-bootstrap-421 .factory-dropdown.factory-buttons-way .active{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}.factory-bootstrap-421 .factory-dropdown.factory-ddslick-way .dd-select{background-color:#fff!important}.factory-bootstrap-421 .factory-dropdown.factory-ddslick-way label{margin-bottom:1px}.factory-bootstrap-421 .factory-dropdown.factory-ddslick-way .dd-option,.factory-bootstrap-421 .factory-dropdown.factory-ddslick-way .dd-selected{padding:8px 12px 8px 11px!important}
|
libs/factory/bootstrap/assets/css-min/control.fonts.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 .factory-font .factory-control-row{padding:0;vertical-align:top}.factory-bootstrap-421 .factory-font .factory-color-wrap{position:static;display:inline-block;vertical-align:top}.factory-bootstrap-421 .factory-font .factory-size-wrap{display:inline-block;width:70px;vertical-align:top}.factory-bootstrap-421 .iris-picker{margin-top:10px}.factory-bootstrap-421 .factory-font .factory-family-wrap{padding-bottom:10px}.factory-bootstrap-421 .factory-font .chosen-results{max-height:150px}
|
libs/factory/bootstrap/assets/css-min/control.list.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 .factory-list li input{margin:0 5px 0 0;position:relative;top:1px;outline:0!important}.factory-bootstrap-421 .factory-list li span{vertical-align:bottom;line-height:100%}.factory-bootstrap-421 .factory-list .factory-error{position:relative;display:inline-block}.factory-bootstrap-421 .factory-list .factory-error i{color:#f47665;margin:0 7px 0 1px;cursor:help}.factory-bootstrap-421 .factory-list .factory-error-text{display:none;position:absolute;width:300px}.factory-bootstrap-421 .factory-list .factory-error-text,.factory-bootstrap-421 .factory-list-error{background-color:rgba(0,0,0,.8);white-space:normal;z-index:10;padding:10px 12px 12px;font-weight:400;line-height:150%;border-radius:4px;color:#fff;font-size:13px;margin-top:2px}.factory-bootstrap-421 .factory-list-error{padding:5px 10px;max-width:500px;display:inline-block}.factory-bootstrap-421 .factory-list-error i{margin:0 7px 0 1px}.factory-bootstrap-421 .factory-list .factory-error-text a{color:#fff;font-weight:700}.factory-bootstrap-421 .factory-list .factory-has-error:hover .factory-error-text{display:block}.factory-bootstrap-421 .factory-list .factory-has-error{cursor:default}.opanda-connect-buttons .opanda-has-error .opanda-error{display:inline-block}.factory-bootstrap-421 .factory-checklist-way.factory-empty{font-style:italic;margin-top:7px}
|
libs/factory/bootstrap/assets/css-min/control.multiple-textbox.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 .factory-mtextbox-item{position:relative;margin-bottom:5px}.factory-bootstrap-421 .factory-mtextbox-item input,.factory-mtextbox-remove-item{display:inline-block}.factory-bootstrap-421 .factory-mtextbox-item .factory-mtextbox-remove-item{position:absolute;top:0;right:0;bottom:0;width:40px;border-radius:0 3px 3px 0;outline:0}.factory-bootstrap-421 .factory-mtextbox-item .factory-mtextbox-remove-item:focus,.factory-bootstrap-421 .factory-mtextbox-item .factory-mtextbox-remove-item:hover{box-shadow:none;outline:0}.factory-bootstrap-421 .factory-mtextbox-add-item{display:block;margin-top:10px}
|
libs/factory/bootstrap/assets/css-min/control.pattern.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 .factory-pattern .factory-pattern-controls{vertical-align:middle}.factory-bootstrap-421 .factory-pattern .factory-preview-wrap{display:inline-block;vertical-align:middle}.factory-bootstrap-421 .factory-pattern .factory-preview{width:100px;height:26px;background:transparent url(../assets/images/color_picker_pattern.jpg) repeat;border:0;border-radius:3px;cursor:pointer;-moz-box-sizing:border-box;box-sizing:border-box;border-bottom:2px solid rgba(0,0,0,.34)!important;position:relative}.factory-bootstrap-421 .factory-pattern .factory-preview.factory-empty{background:transparent url(../assets/images/color_picker_pattern.jpg) repeat!important}.factory-bootstrap-421 .factory-pattern .factory-preview span{position:absolute;top:0;left:76px;background:#111;width:26px;height:26px;border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;-webkit-border-radius:0 3px 3px 0;z-index:99;border-bottom:2px solid #000}.factory-bootstrap-421 .factory-pattern .factory-preview span:hover{background:#161616}.factory-bootstrap-421 .factory-pattern .factory-preview span:after{content:'';width:0;height:0;border:transparent solid 5px;border-top-color:#96a6a6;position:absolute;top:10px;right:7px;z-index:1}.factory-bootstrap-421 .factory-pattern.factory-patterns-panel-active .factory-preview span:after{border-top-color:transparent;border-bottom-color:#96a6a6;top:4px}.factory-bootstrap-421 .factory-pattern .factory-color-panel{padding:10px;margin-top:10px;background:rgba(255,255,255,.04);border-radius:3px;display:none}.factory-bootstrap-421 .factory-pattern.factory-color-panel-active .factory-color-panel{display:block}.factory-bootstrap-421 .factory-pattern .factory-color-label{margin-right:5px}.factory-bootstrap-421 .factory-pattern .factory-color,.factory-bootstrap-421 .factory-pattern .factory-color-label{display:inline-block;vertical-align:middle}.factory-bootstrap-421 .factory-pattern .factory-color-panel .factory-hint{margin-top:7px}.factory-bootstrap-421 .factory-pattern .factory-patterns-panel{display:none;margin-top:10px;padding:2px 0 0;border-top:1px solid #272727;overflow:visible}.factory-bootstrap-421 .factory-pattern .factory-patterns-group{clear:both;padding:2px 0 0;border-bottom:1px solid #272727;padding-bottom:10px}.factory-bootstrap-421 .factory-pattern .factory-patterns-group-title{margin-top:10px}.factory-bootstrap-421 .factory-pattern .factory-patterns-row{padding-top:10px}.factory-bootstrap-421 .factory-pattern.factory-patterns-panel-active .factory-patterns-panel{display:block}.factory-bootstrap-421 .factory-pattern .factory-patterns-item,.factory-bootstrap-421 .factory-pattern .factory-patterns-item div{width:46px;height:46px}.factory-bootstrap-421 .factory-pattern .factory-patterns-item{display:inline-block;cursor:pointer;position:relative;vertical-align:top}.factory-bootstrap-421 .factory-pattern .factory-patterns-item+.factory-patterns-item{margin-left:10px}.factory-bootstrap-421 .factory-pattern .factory-patterns-item div{position:absolute;border-radius:100%;border:4px solid #333}.factory-bootstrap-421 .factory-pattern .factory-patterns-item:hover .factory-pattern-holder{width:64px;height:64px;top:-10px;left:-10px;border:1px solid #333;z-index:10}.factory-bootstrap-421 .factory-pattern .factory-no-preview{background:#2f2f2f;line-height:46px;border-radius:100%;text-align:center;font-size:20px}.factory-bootstrap-421 .factory-pattern .factory-no-preview:hover{background:#333}.factory-bootstrap-421 .factory-pattern .factory-button .fa{font-size:14px;margin-right:1px}.factory-bootstrap-421 .factory-pattern .factory-button span{position:relative;top:-1px}.factory-bootstrap-421 .factory-pattern .factory-button+.factory-button{margin-left:3px}.factory-bootstrap-421 .factory-pattern .factory-change-color-btn{margin-left:5px}
|
libs/factory/bootstrap/assets/css-min/control.radio-colors.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 .factory-from-radio-label,.factory-bootstrap-421 .factory-from-radio-label>span{-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;transition:all .3s}.factory-bootstrap-421 .factory-from-radio-label{position:relative;width:30px;height:30px;border-radius:3px;background-color:#fff;border:1px solid rgba(0,0,0,.1)}.factory-bootstrap-421 .factory-from-radio-label:hover{background-color:#f5f2f2;border:1px solid rgba(0,0,0,.2)}.factory-bootstrap-421 .factory-from-radio-label>span{display:block;position:absolute;top:2px;left:2px;right:2px;bottom:2px;text-indent:-9999px;background-color:#fff}.factory-bootstrap-421 .factory-from-radio-label .factory-radio-color:checked+span{border:5px solid #fff}.factory-bootstrap-421 .factory-radio-color{opacity:0}
|
libs/factory/bootstrap/assets/css-min/holder.conrol-group.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-control-group .factory-header{margin-bottom:7px;display:block}.factory-control-group-nav{width:284px;margin:10px 8px}.factory-control-group-nav li{display:inline-block;padding:8px 15px;margin:0;background-color:#444;color:#fff;border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px;cursor:pointer}.factory-control-group-nav li.current{background-color:#222}.factory-control-group-item{display:none}.factory-control-group-item.current{display:block}
|
libs/factory/bootstrap/assets/css-min/holder.more-link.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 .factory-more-link-content{border-top:1px dashed #DDD;padding-top:25px;width:100%;padding-right:20px;position:relative}.factory-bootstrap-421 .factory-tab .factory-more-link-show{display:inline-block;text-decoration:none;border-bottom:1px dotted #21759b;position:relative}.factory-bootstrap-421 .factory-tab .factory-more-link-show:hover{border-color:#d54e21}.factory-bootstrap-421 .factory-tab .factory-more-link-hide{position:absolute;margin-top:-35px;background-color:#fff;padding:0 5px;right:20px;color:#bbb;text-decoration:none}.factory-bootstrap-421 .factory-tab .factory-more-link-hide:hover{color:#999}
|
libs/factory/bootstrap/assets/css-min/plugin.chosen.min.css
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
/*!
|
12 |
+
Chosen, a Select Box Enhancer for jQuery and Prototype
|
13 |
+
by Patrick Filler for Harvest, http://getharvest.com
|
14 |
+
|
15 |
+
Version 1.1.0
|
16 |
+
Full source at https://github.com/harvesthq/chosen
|
17 |
+
Copyright (c) 2011 Harvest http://getharvest.com
|
18 |
+
|
19 |
+
MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
|
20 |
+
This file is generated by `grunt build`, do not edit it by hand.
|
21 |
+
*/.chosen-container{position:relative;display:inline-block;vertical-align:middle;font-size:13px;zoom:1;*display:inline;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chosen-container .chosen-drop{position:absolute;top:100%;left:-9999px;z-index:1010;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;border:1px solid #aaa;border-top:0;background:#fff;box-shadow:0 4px 5px rgba(0,0,0,.15)}.chosen-container.chosen-with-drop .chosen-drop{left:0}.chosen-container a{cursor:pointer}.chosen-container-single .chosen-single{position:relative;display:block;overflow:hidden;padding:0 0 0 8px;height:23px;border:1px solid #aaa;border-radius:5px;background:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#fff),color-stop(50%,#f6f6f6),color-stop(52%,#eee),color-stop(100%,#f4f4f4));background:-webkit-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:-moz-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:-o-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background-clip:padding-box;box-shadow:0 0 3px #fff inset,0 1px 1px rgba(0,0,0,.1);color:#444;text-decoration:none;white-space:nowrap;line-height:24px;-moz-box-sizing:border-box;box-sizing:border-box}.chosen-container-single .chosen-default{color:#999}.chosen-container-single .chosen-single span{display:block;overflow:hidden;margin-right:26px;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:6px;right:26px;display:block;width:12px;height:12px;background:url(../../images/chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-single .chosen-single abbr:hover,.chosen-container-single.chosen-disabled .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;width:18px;height:100%}.chosen-container-single .chosen-single div b{display:block;width:100%;height:100%;background:url(../../images/chosen-sprite.png) no-repeat 0 2px}.chosen-container-single .chosen-search{position:relative;z-index:1010;margin:0;padding:3px 4px;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:1px 0;padding:4px 20px 4px 5px;width:100%;height:auto;outline:0;border:1px solid #aaa;background:#fff url(../../images/chosen-sprite.png) no-repeat 100% -20px;font-size:1em;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-single .chosen-drop{margin-top:-1px;border-radius:0 0 4px 4px;background-clip:padding-box}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;left:-9999px}.chosen-container .chosen-results{position:relative;overflow-x:hidden;overflow-y:auto;margin:0 4px 4px 0;padding:0 0 0 4px;max-height:240px;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;margin:0;padding:5px 6px;list-style:none;line-height:15px;-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{background-color:#3875d7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#3875d7),color-stop(90%,#2a62bc));background-image:-webkit-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:-moz-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:-o-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:linear-gradient(#3875d7 20%,#2a62bc 90%);color:#fff}.chosen-container .chosen-results li.no-results{display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;width:100%;height:auto!important;height:1%;border:1px solid #aaa;background-color:#fff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(1%,#eee),color-stop(15%,#fff));background-image:-webkit-linear-gradient(#eee 1%,#fff 15%);background-image:-moz-linear-gradient(#eee 1%,#fff 15%);background-image:-o-linear-gradient(#eee 1%,#fff 15%);background-image:linear-gradient(#eee 1%,#fff 15%);cursor:text}.chosen-container-multi .chosen-choices li{float:left;list-style:none}.chosen-container-multi .chosen-choices li.search-field{margin:0;padding:0;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{margin:1px 0;padding:5px;height:15px;outline:0;border:0!important;background:transparent!important;box-shadow:none;color:#666;font-size:100%;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-multi .chosen-choices li.search-field .default{color:#999}.chosen-container-multi .chosen-choices li.search-choice{position:relative;margin:3px 0 3px 5px;padding:3px 20px 3px 5px;border:1px solid #aaa;border-radius:3px;background-color:#e4e4e4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-o-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-clip:padding-box;box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);color:#333;line-height:13px;cursor:default}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:4px;right:3px;display:block;width:12px;height:12px;background:url(../../images/chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{background-position:-42px -10px}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;border:1px solid #ccc;background-color:#e4e4e4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-o-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);color:#666}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}.chosen-container-multi .chosen-results{margin:0;padding:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #aaa;-moz-border-radius-bottomright:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#eee),color-stop(80%,#fff));background-image:-webkit-linear-gradient(#eee 20%,#fff 80%);background-image:-moz-linear-gradient(#eee 20%,#fff 80%);background-image:-o-linear-gradient(#eee 20%,#fff 80%);background-image:linear-gradient(#eee 20%,#fff 80%);box-shadow:0 1px 0 #fff inset}.chosen-container-active.chosen-with-drop .chosen-single div{border-left:0;background:0 0}.chosen-container-active.chosen-with-drop .chosen-single div b{background-position:-18px 2px}.chosen-container-active .chosen-choices{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#111!important}.chosen-disabled{opacity:.5!important;cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close,.chosen-disabled .chosen-single{cursor:default}.chosen-rtl{text-align:right}.chosen-rtl .chosen-single{overflow:visible;padding:0 8px 0 0}.chosen-rtl .chosen-single span{margin-right:0;margin-left:26px;direction:rtl}.chosen-rtl .chosen-single-with-deselect span{margin-left:38px}.chosen-rtl .chosen-single div{right:auto;left:3px}.chosen-rtl .chosen-single abbr{right:auto;left:26px}.chosen-rtl .chosen-choices li{float:right}.chosen-rtl .chosen-choices li.search-field input[type=text]{direction:rtl}.chosen-rtl .chosen-choices li.search-choice{margin:3px 5px 3px 0;padding:3px 5px 3px 19px}.chosen-rtl .chosen-choices li.search-choice .search-choice-close{right:auto;left:4px}.chosen-rtl .chosen-drop,.chosen-rtl.chosen-container-single-nosearch .chosen-search{left:9999px}.chosen-rtl.chosen-container-single .chosen-results{margin:0 0 4px 4px;padding:0 4px 0 0}.chosen-rtl .chosen-results li.group-option{padding-right:15px;padding-left:0}.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div{border-right:0}.chosen-rtl .chosen-search input[type=text]{padding:4px 5px 4px 20px;background:#fff url(../../images/chosen-sprite.png) no-repeat -30px -20px;direction:rtl}.chosen-rtl.chosen-container-single .chosen-single div b{background-position:6px 2px}.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b{background-position:-12px 2px}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-resolution:144dpi){.chosen-container .chosen-results-scroll-down span,.chosen-container .chosen-results-scroll-up span,.chosen-container-multi .chosen-choices .search-choice .search-choice-close,.chosen-container-single .chosen-search input[type=text],.chosen-container-single .chosen-single abbr,.chosen-container-single .chosen-single div b,.chosen-rtl .chosen-search input[type=text]{background-image:url(../../images/chosen-sprite@2x.png)!important;background-size:52px 37px!important;background-repeat:no-repeat!important}}
|
libs/factory/bootstrap/assets/css-min/plugin.gradient-picker.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 .factory-gradient-picker-wrap{margin-bottom:20px}.factory-bootstrap-421 .gradientPicker-preview{width:100%;height:30px;border-radius:3px;background:transparent url(../../images/color_picker_pattern.jpg) repeat}.factory-bootstrap-421 .factory-color-picker-container{display:none;padding-top:15px}.factory-bootstrap-421 .factory-point,.factory-bootstrap-421 .factory-point-color{position:absolute;width:10px;height:10px;border:0;font-size:0;border-radius:50% 50% 100% 100%;-moz-border-radius:50% 50% 100% 100%;-webkit-border-radius:50% 50% 100% 100%;cursor:pointer;overflow:hidden}.factory-bootstrap-421 .factory-point-color{border-radius:0}.factory-bootstrap-421 .factory-point{background:transparent url(../../images/color_picker_pattern.jpg) repeat}.factory-bootstrap-421 .factory-current-point{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.factory-bootstrap-421 .factory-points{position:relative;height:10px;width:100%;cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ1JREFUeNq8VAEKwCAITOn%2FX3ZzTBCxUicTBsvsOO9EIKJhAwCe5H0H4xBvLQgOegV8yZ8AZwJHc8zKI4c53bk6IGNqMH3GCJuMlkeG4p4G1e5Lq1KXatmCM7AdrbLLq7FC0agycx7oXOmk8%2FY%2FPNjRR7s6ZFHFqY5AcasLFDPtpAC7WH7aNkxgO9gdLNv3oWdKiKXX7r8bu6rlJcAA9ZRfMt5oHoIAAAAASUVORK5CYII%3D) 5 0,pointer}.factory-bootstrap-421 .gradientPicker-iris-wrap{display:none;position:absolute;left:0;top:78px;width:212px;height:212px;background:#111;border:1px solid #222;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;z-index:9999}.factory-bootstrap-421 .gradientPicker-iris-wrap .iris-border,.factory-bootstrap-421 .gradientPicker-iris-wrap .iris-picker{border:0;background:#111}.factory-bootstrap-421 .gradientPicker-pallets{padding:8px 0 3px;margin-bottom:10px;border-bottom:1px solid #323232;border-top:1px solid #323232;font-size:0;line-height:0;text-align:center}.factory-bootstrap-421 .factory-preset-gradient,.factory-bootstrap-421 .factory-secondary-color{width:22px;height:22px;border-radius:100%}.factory-bootstrap-421 .factory-preset-gradient{display:inline-block;cursor:pointer;margin-bottom:3px;position:relative}.factory-bootstrap-421 .factory-preset-gradient:hover{opacity:.9}.factory-bootstrap-421 .factory-preset-gradient+.factory-preset-gradient{margin-left:5px}.factory-bootstrap-421 .factory-secondary-color-wrap{width:11px;height:22px;position:absolute;overflow:hidden;right:0}.factory-bootstrap-421 .factory-secondary-color{position:absolute;left:-11px;background-color:red}.factory-bootstrap-421 .gradientPicker-filldirection{width:200px;margin-top:5px}.factory-bootstrap-421 .gradientPicker-ptConfig .color-chooser{float:left}.factory-bootstrap-421 .factory-color-picker-container .factory-slider{padding-left:75px;padding-right:60px;position:relative}.factory-bootstrap-421 .factory-color-picker-container .factory-color-hex{top:0;left:0;position:absolute;width:65px}
|
libs/factory/bootstrap/assets/css-min/plugin.nouislider.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.noUi-target,.noUi-target *{-webkit-touch-callout:none;-webkit-user-select:none;-ms-touch-action:none;-ms-user-select:none;-moz-user-select:none;-moz-box-sizing:border-box;box-sizing:border-box}.noUi-base{width:100%;height:100%;position:relative}.noUi-origin{position:absolute;right:0;top:0;left:0;bottom:0}.noUi-handle{position:relative;z-index:1}.noUi-stacking .noUi-handle{z-index:10}.noUi-stacking+.noUi-origin{*z-index:-1}.noUi-state-tap .noUi-origin{-webkit-transition:left .3s,top .3s;transition:left .3s,top .3s}.noUi-state-drag *{cursor:inherit!important}.noUi-horizontal{height:18px}.noUi-horizontal .noUi-handle{width:34px;height:28px;left:-17px;top:-6px}.noUi-horizontal.noUi-extended{padding:0 15px}.noUi-horizontal.noUi-extended .noUi-origin{right:-15px}.noUi-vertical{width:18px}.noUi-vertical .noUi-handle{width:28px;height:34px;left:-6px;top:-17px}.noUi-vertical.noUi-extended{padding:15px 0}.noUi-vertical.noUi-extended .noUi-origin{bottom:-15px}.noUi-background{background:#FAFAFA;box-shadow:inset 0 1px 1px #f0f0f0}.noUi-connect{background:#3FB8AF;box-shadow:inset 0 0 3px rgba(51,51,51,.45);-webkit-transition:background 450ms;transition:background 450ms}.noUi-origin{border-radius:2px}.noUi-target{border-radius:4px;border:1px solid #D3D3D3;box-shadow:inset 0 1px 1px #F0F0F0,0 3px 6px -5px #BBB}.noUi-target.noUi-connect{box-shadow:inset 0 0 3px rgba(51,51,51,.45),0 3px 6px -5px #BBB}.noUi-dragable{cursor:w-resize}.noUi-vertical .noUi-dragable{cursor:n-resize}.noUi-handle{border:1px solid #D9D9D9;border-radius:3px;background:#FFF;cursor:default;box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #EBEBEB,0 3px 6px -3px #BBB}.noUi-active{box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #DDD,0 3px 6px -3px #BBB}.noUi-handle:after,.noUi-handle:before{content:"";display:block;position:absolute;height:14px;width:1px;background:#E8E7E6;left:14px;top:6px}.noUi-handle:after{left:17px}.noUi-vertical .noUi-handle:after,.noUi-vertical .noUi-handle:before{width:14px;height:1px;left:6px;top:14px}.noUi-vertical .noUi-handle:after{top:17px}[disabled] .noUi-connect,[disabled].noUi-connect{background:#B8B8B8}[disabled] .noUi-handle{cursor:not-allowed}
|
libs/factory/bootstrap/assets/css-min/plugin.paddings-editor.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
.factory-bootstrap-421 .factory-paddings-editor{padding-left:135px;height:90px;position:relative}.factory-bootstrap-421 .factory-paddings-editor .factory-rectangle{width:120px;height:90px;border-radius:10px;background-color:#a6b6b6;overflow:hidden;cursor:pointer;-moz-box-sizing:content-box;box-sizing:content-box;position:absolute;top:0;left:0}.factory-bootstrap-421 .factory-paddings-editor .factory-side{width:100%;height:100%;position:absolute}.factory-bootstrap-421 .factory-paddings-editor .factory-side-center{width:30px;height:30px;border-radius:100%;background-color:#bac9c9;position:absolute;top:30px;left:45px;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-421 .factory-paddings-editor .factory-side-center:hover{background-color:#c0cece}.factory-bootstrap-421 .factory-paddings-editor .factory-side-center.factory-active{background-color:#829595}.factory-bootstrap-421 .factory-paddings-editor .factory-side-top{height:30px;top:0;left:0}.factory-bootstrap-421 .factory-paddings-editor .factory-side-right{width:45px;top:0;right:0}.factory-bootstrap-421 .factory-paddings-editor .factory-side-bottom{height:30px;bottom:0;left:0}.factory-bootstrap-421 .factory-paddings-editor .factory-side-left{width:45px;top:0;left:0}.factory-bootstrap-421 .factory-paddings-editor .factory-rectangle .factory-visible-value{color:#1b1f1f;background-color:rgba(255,255,255,.3);border-radius:3px;padding:2px;line-height:13px;display:inline-block}.factory-bootstrap-421 .factory-paddings-editor .factory-rectangle .factory-side.factory-active .factory-visible-value{background-color:rgba(255,255,255,.3);border-radius:3px;padding:2px;line-height:13px;display:inline-block}.factory-bootstrap-421 .factory-paddings-editor .factory-visible-value em{font-style:normal}.factory-bootstrap-421 .factory-paddings-editor .factory-side-bottom,.factory-bootstrap-421 .factory-paddings-editor .factory-side-top{text-align:center;line-height:30px}.factory-bootstrap-421 .factory-paddings-editor .factory-side-left,.factory-bootstrap-421 .factory-paddings-editor .factory-side-right{line-height:90px;text-align:center}.factory-bootstrap-421 .factory-paddings-editor .factory-slider-container{font-style:italic}.factory-bootstrap-421 .factory-paddings-editor .factory-slider{padding-right:0;margin-top:7px}
|
libs/factory/bootstrap/assets/images/chosen-sprite.png
ADDED
Binary file
|
libs/factory/bootstrap/assets/images/chosen-sprite@2x.png
ADDED
Binary file
|
libs/factory/bootstrap/assets/images/color_picker_pattern.jpg
ADDED
Binary file
|
libs/factory/bootstrap/assets/images/drop-menu_arrow.png
ADDED
Binary file
|
libs/factory/bootstrap/assets/images/loader-sm-f6f6f6.gif
ADDED
Binary file
|
libs/factory/bootstrap/assets/images/loader-sm-tr.gif
ADDED
Binary file
|
libs/factory/bootstrap/assets/images/no-pattern-background-control.png
ADDED
Binary file
|
libs/factory/bootstrap/assets/js-min/bootstrap.accordion.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
!function(a,b,c,d){"use strict";a.fn.factoryBootstrap421_accordion=function(){return this.each(function(){var b=a(this),c=!1;a("."+b.attr("class")+" > div:first").show(),a("."+b.attr("class")+" > div:first").add("."+b.attr("class")+" > h3:first").addClass("active"),a("."+b.attr("class")+" > h3").on("click",function(){var d=a(this),e=d.next();return d.hasClass("active")||c||(c=!0,d.parent().children("div").slideUp(500),a("."+b.attr("class")+" > h3").removeClass("active"),d.addClass("active"),e.addClass("active").slideDown({duration:500,complete:function(){c=!1,b.trigger("shown.bs.accordion",[d])},progress:function(){b.trigger("progress.bs.accordion",[d])}})),!1})})},a(function(){a(".factory-bootstrap-421 .factory-accordion").factoryBootstrap421_accordion()})}(jQuery,window,document);
|
libs/factory/bootstrap/assets/js-min/bootstrap.affix.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/bootstrap.alert.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(jQuery);
|
libs/factory/bootstrap/assets/js-min/bootstrap.button.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]'),b=!0;if(a.length){var c=this.$element.find("input");"radio"===c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?b=!1:a.find(".active").removeClass("active")),b&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}b&&this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/bootstrap.carousel.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid.bs.carousel",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid.bs.carousel")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid.bs.carousel")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/bootstrap.collapse.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},a.fn.factoryBootstrap421_collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.factoryBootstrap421_collapse.Constructor=b,a(document).on("click.bs.collapse.data-api","[data-toggle=factory-collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=factory-collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/bootstrap.datepicker.min.js
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
/*!
|
11 |
+
* Datepicker for Bootstrap v1.5.0-dev (https://github.com/eternicode/bootstrap-datepicker)
|
12 |
+
*
|
13 |
+
* Copyright 2012 Stefan Petre
|
14 |
+
* Improvements by Andrew Rowls
|
15 |
+
* Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
|
16 |
+
*/
|
17 |
+
!function(a,b){function c(){return new Date(Date.UTC.apply(Date,arguments))}function d(){var a=new Date;return c(a.getFullYear(),a.getMonth(),a.getDate())}function e(a,b){return a.getUTCFullYear()===b.getUTCFullYear()&&a.getUTCMonth()===b.getUTCMonth()&&a.getUTCDate()===b.getUTCDate()}function f(a){return function(){return this[a].apply(this,arguments)}}function g(b,c){function d(a,b){return b.toLowerCase()}var e,f=a(b).data(),g={},h=new RegExp("^"+c.toLowerCase()+"([A-Z])");c=new RegExp("^"+c.toLowerCase());for(var i in f)c.test(i)&&(e=i.replace(h,d),g[e]=f[i]);return g}function h(b){var c={};if(p[b]||(b=b.split("-")[0],p[b])){var d=p[b];return a.each(o,function(a,b){b in d&&(c[b]=d[b])}),c}}var i=function(){var b={get:function(a){return this.slice(a)[0]},contains:function(a){for(var b=a&&a.valueOf(),c=0,d=this.length;d>c;c++)if(this[c].valueOf()===b)return c;return-1},remove:function(a){this.splice(a,1)},replace:function(b){b&&(a.isArray(b)||(b=[b]),this.clear(),this.push.apply(this,b))},clear:function(){this.length=0},copy:function(){var a=new i;return a.replace(this),a}};return function(){var c=[];return c.push.apply(c,arguments),a.extend(c,b),c}}(),j=function(b,c){this._process_options(c),this.dates=new i,this.viewDate=this.o.defaultViewDate,this.focusDate=null,this.element=a(b),this.isInline=!1,this.isInput=this.element.is("input"),this.component=this.element.hasClass("date")?this.element.find(".add-on, .input-group-addon, .btn"):!1,this.hasInput=this.component&&this.element.find("input").length,this.component&&0===this.component.length&&(this.component=!1),this.picker=a(q.template),this._buildEvents(),this._attachEvents(),this.isInline?this.picker.addClass("datepicker-inline").appendTo(this.element):this.picker.addClass("datepicker-dropdown dropdown-menu"),this.o.rtl&&this.picker.addClass("datepicker-rtl"),this.viewMode=this.o.startView,this.o.calendarWeeks&&this.picker.find("tfoot .today, tfoot .clear").attr("colspan",function(a,b){return parseInt(b)+1}),this._allow_update=!1,this.setStartDate(this._o.startDate),this.setEndDate(this._o.endDate),this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled),this.setDatesDisabled(this.o.datesDisabled),this.fillDow(),this.fillMonths(),this._allow_update=!0,this.update(),this.showMode(),this.isInline&&this.show()};j.prototype={constructor:j,_process_options:function(e){this._o=a.extend({},this._o,e);var f=this.o=a.extend({},this._o),g=f.language;switch(p[g]||(g=g.split("-")[0],p[g]||(g=n.language)),f.language=g,f.startView){case 2:case"decade":f.startView=2;break;case 1:case"year":f.startView=1;break;default:f.startView=0}switch(f.minViewMode){case 1:case"months":f.minViewMode=1;break;case 2:case"years":f.minViewMode=2;break;default:f.minViewMode=0}f.startView=Math.max(f.startView,f.minViewMode),f.multidate!==!0&&(f.multidate=Number(f.multidate)||!1,f.multidate!==!1&&(f.multidate=Math.max(0,f.multidate))),f.multidateSeparator=String(f.multidateSeparator),f.weekStart%=7,f.weekEnd=(f.weekStart+6)%7;var h=q.parseFormat(f.format);if(f.startDate!==-(1/0)&&(f.startDate?f.startDate instanceof Date?f.startDate=this._local_to_utc(this._zero_time(f.startDate)):f.startDate=q.parseDate(f.startDate,h,f.language):f.startDate=-(1/0)),f.endDate!==1/0&&(f.endDate?f.endDate instanceof Date?f.endDate=this._local_to_utc(this._zero_time(f.endDate)):f.endDate=q.parseDate(f.endDate,h,f.language):f.endDate=1/0),f.daysOfWeekDisabled=f.daysOfWeekDisabled||[],a.isArray(f.daysOfWeekDisabled)||(f.daysOfWeekDisabled=f.daysOfWeekDisabled.split(/[,\s]*/)),f.daysOfWeekDisabled=a.map(f.daysOfWeekDisabled,function(a){return parseInt(a,10)}),f.datesDisabled=f.datesDisabled||[],!a.isArray(f.datesDisabled)){var i=[];i.push(q.parseDate(f.datesDisabled,h,f.language)),f.datesDisabled=i}f.datesDisabled=a.map(f.datesDisabled,function(a){return q.parseDate(a,h,f.language)});var j=String(f.orientation).toLowerCase().split(/\s+/g),k=f.orientation.toLowerCase();if(j=a.grep(j,function(a){return/^auto|left|right|top|bottom$/.test(a)}),f.orientation={x:"auto",y:"auto"},k&&"auto"!==k)if(1===j.length)switch(j[0]){case"top":case"bottom":f.orientation.y=j[0];break;case"left":case"right":f.orientation.x=j[0]}else k=a.grep(j,function(a){return/^left|right$/.test(a)}),f.orientation.x=k[0]||"auto",k=a.grep(j,function(a){return/^top|bottom$/.test(a)}),f.orientation.y=k[0]||"auto";else;if(f.defaultViewDate){var l=f.defaultViewDate.year||(new Date).getFullYear(),m=f.defaultViewDate.month||0,o=f.defaultViewDate.day||1;f.defaultViewDate=c(l,m,o)}else f.defaultViewDate=d();f.showOnFocus=f.showOnFocus!==b?f.showOnFocus:!0},_events:[],_secondaryEvents:[],_applyEvents:function(a){for(var c,d,e,f=0;f<a.length;f++)c=a[f][0],2===a[f].length?(d=b,e=a[f][1]):3===a[f].length&&(d=a[f][1],e=a[f][2]),c.on(e,d)},_unapplyEvents:function(a){for(var c,d,e,f=0;f<a.length;f++)c=a[f][0],2===a[f].length?(e=b,d=a[f][1]):3===a[f].length&&(e=a[f][1],d=a[f][2]),c.off(d,e)},_buildEvents:function(){var b={keyup:a.proxy(function(b){-1===a.inArray(b.keyCode,[27,37,39,38,40,32,13,9])&&this.update()},this),keydown:a.proxy(this.keydown,this),paste:a.proxy(this.paste,this)};this.o.showOnFocus===!0&&(b.focus=a.proxy(this.show,this)),this.isInput?this._events=[[this.element,b]]:this.component&&this.hasInput?this._events=[[this.element.find("input"),b],[this.component,{click:a.proxy(this.show,this)}]]:this.element.is("div")?this.isInline=!0:this._events=[[this.element,{click:a.proxy(this.show,this)}]],this._events.push([this.element,"*",{blur:a.proxy(function(a){this._focused_from=a.target},this)}],[this.element,{blur:a.proxy(function(a){this._focused_from=a.target},this)}]),this.o.immediateUpdates&&this._events.push([this.element,{"changeYear changeMonth":a.proxy(function(a){this.update(a.date)},this)}]),this._secondaryEvents=[[this.picker,{click:a.proxy(this.click,this)}],[a(window),{resize:a.proxy(this.place,this)}],[a(document),{mousedown:a.proxy(function(b){this.element.is(b.target)||this.element.find(b.target).length||this.picker.is(b.target)||this.picker.find(b.target).length||a(this.picker).hide()},this)}]]},_attachEvents:function(){this._detachEvents(),this._applyEvents(this._events)},_detachEvents:function(){this._unapplyEvents(this._events)},_attachSecondaryEvents:function(){this._detachSecondaryEvents(),this._applyEvents(this._secondaryEvents)},_detachSecondaryEvents:function(){this._unapplyEvents(this._secondaryEvents)},_trigger:function(b,c){var d=c||this.dates.get(-1),e=this._utc_to_local(d);this.element.trigger({type:b,date:e,dates:a.map(this.dates,this._utc_to_local),format:a.proxy(function(a,b){0===arguments.length?(a=this.dates.length-1,b=this.o.format):"string"==typeof a&&(b=a,a=this.dates.length-1),b=b||this.o.format;var c=this.dates.get(a);return q.formatDate(c,b,this.o.language)},this)})},show:function(){return this.element.attr("readonly")&&this.o.enableOnReadonly===!1?void 0:(this.isInline||this.picker.appendTo(this.o.container),this.place(),this.picker.show(),this._attachSecondaryEvents(),this._trigger("show"),(window.navigator.msMaxTouchPoints||"ontouchstart"in document)&&this.o.disableTouchKeyboard&&a(this.element).blur(),this)},hide:function(){return this.isInline?this:this.picker.is(":visible")?(this.focusDate=null,this.picker.hide().detach(),this._detachSecondaryEvents(),this.viewMode=this.o.startView,this.showMode(),this.o.forceParse&&(this.isInput&&this.element.val()||this.hasInput&&this.element.find("input").val())&&this.setValue(),this._trigger("hide"),this):this},remove:function(){return this.hide(),this._detachEvents(),this._detachSecondaryEvents(),this.picker.remove(),delete this.element.data().datepicker,this.isInput||delete this.element.data().date,this},paste:function(b){var c;if(b.originalEvent.clipboardData&&b.originalEvent.clipboardData.types&&-1!==a.inArray("text/plain",b.originalEvent.clipboardData.types))c=b.originalEvent.clipboardData.getData("text/plain");else{if(!window.clipboardData)return;c=window.clipboardData.getData("Text")}this.setDate(c),this.update(),b.preventDefault()},_utc_to_local:function(a){return a&&new Date(a.getTime()+6e4*a.getTimezoneOffset())},_local_to_utc:function(a){return a&&new Date(a.getTime()-6e4*a.getTimezoneOffset())},_zero_time:function(a){return a&&new Date(a.getFullYear(),a.getMonth(),a.getDate())},_zero_utc_time:function(a){return a&&new Date(Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate()))},getDates:function(){return a.map(this.dates,this._utc_to_local)},getUTCDates:function(){return a.map(this.dates,function(a){return new Date(a)})},getDate:function(){return this._utc_to_local(this.getUTCDate())},getUTCDate:function(){var a=this.dates.get(-1);return"undefined"!=typeof a?new Date(a):null},clearDates:function(){var a;this.isInput?a=this.element:this.component&&(a=this.element.find("input")),a&&a.val("").change(),this.update(),this._trigger("changeDate"),this.o.autoclose&&this.hide()},setDates:function(){var b=a.isArray(arguments[0])?arguments[0]:arguments;return this.update.apply(this,b),this._trigger("changeDate"),this.setValue(),this},setUTCDates:function(){var b=a.isArray(arguments[0])?arguments[0]:arguments;return this.update.apply(this,a.map(b,this._utc_to_local)),this._trigger("changeDate"),this.setValue(),this},setDate:f("setDates"),setUTCDate:f("setUTCDates"),setValue:function(){var a=this.getFormattedDate();return this.isInput?this.element.val(a).change():this.component&&this.element.find("input").val(a).change(),this},getFormattedDate:function(c){c===b&&(c=this.o.format);var d=this.o.language;return a.map(this.dates,function(a){return q.formatDate(a,c,d)}).join(this.o.multidateSeparator)},setStartDate:function(a){return this._process_options({startDate:a}),this.update(),this.updateNavArrows(),this},setEndDate:function(a){return this._process_options({endDate:a}),this.update(),this.updateNavArrows(),this},setDaysOfWeekDisabled:function(a){return this._process_options({daysOfWeekDisabled:a}),this.update(),this.updateNavArrows(),this},setDatesDisabled:function(a){this._process_options({datesDisabled:a}),this.update(),this.updateNavArrows()},place:function(){if(this.isInline)return this;var b=this.picker.outerWidth(),c=this.picker.outerHeight(),d=10,e=a(this.o.container).width(),f=a(this.o.container).height(),g=a(this.o.container).scrollTop(),h=a(this.o.container).offset(),i=[];this.element.parents().each(function(){var b=a(this).css("z-index");"auto"!==b&&0!==b&&i.push(parseInt(b))});var j=Math.max.apply(Math,i)+10,k=this.component?this.component.parent().offset():this.element.offset(),l=this.component?this.component.outerHeight(!0):this.element.outerHeight(!1),m=this.component?this.component.outerWidth(!0):this.element.outerWidth(!1),n=k.left-h.left,o=k.top-h.top;this.picker.removeClass("datepicker-orient-top datepicker-orient-bottom datepicker-orient-right datepicker-orient-left"),"auto"!==this.o.orientation.x?(this.picker.addClass("datepicker-orient-"+this.o.orientation.x),"right"===this.o.orientation.x&&(n-=b-m)):k.left<0?(this.picker.addClass("datepicker-orient-left"),n-=k.left-d):n+b>e?(this.picker.addClass("datepicker-orient-right"),n=k.left+m-b):this.picker.addClass("datepicker-orient-left");var p,q,r=this.o.orientation.y;if("auto"===r&&(p=-g+o-c,q=g+f-(o+l+c),r=Math.max(p,q)===q?"top":"bottom"),this.picker.addClass("datepicker-orient-"+r),"top"===r?o+=l:o-=c+parseInt(this.picker.css("padding-top")),this.o.rtl){var s=e-(n+m);this.picker.css({top:o,right:s,zIndex:j})}else this.picker.css({top:o,left:n,zIndex:j});return this},_allow_update:!0,update:function(){if(!this._allow_update)return this;var b=this.dates.copy(),c=[],d=!1;return arguments.length?(a.each(arguments,a.proxy(function(a,b){b instanceof Date&&(b=this._local_to_utc(b)),c.push(b)},this)),d=!0):(c=this.isInput?this.element.val():this.element.data("date")||this.element.find("input").val(),c=c&&this.o.multidate?c.split(this.o.multidateSeparator):[c],delete this.element.data().date),c=a.map(c,a.proxy(function(a){return q.parseDate(a,this.o.format,this.o.language)},this)),c=a.grep(c,a.proxy(function(a){return a<this.o.startDate||a>this.o.endDate||!a},this),!0),this.dates.replace(c),this.dates.length?this.viewDate=new Date(this.dates.get(-1)):this.viewDate<this.o.startDate?this.viewDate=new Date(this.o.startDate):this.viewDate>this.o.endDate&&(this.viewDate=new Date(this.o.endDate)),d?this.setValue():c.length&&String(b)!==String(this.dates)&&this._trigger("changeDate"),!this.dates.length&&b.length&&this._trigger("clearDate"),this.fill(),this},fillDow:function(){var a=this.o.weekStart,b="<tr>";if(this.o.calendarWeeks){this.picker.find(".datepicker-days thead tr:first-child .datepicker-switch").attr("colspan",function(a,b){return parseInt(b)+1});var c='<th class="cw"> </th>';b+=c}for(;a<this.o.weekStart+7;)b+='<th class="dow">'+p[this.o.language].daysMin[a++%7]+"</th>";b+="</tr>",this.picker.find(".datepicker-days thead").append(b)},fillMonths:function(){for(var a="",b=0;12>b;)a+='<span class="month">'+p[this.o.language].monthsShort[b++]+"</span>";this.picker.find(".datepicker-months td").html(a)},setRange:function(b){b&&b.length?this.range=a.map(b,function(a){return a.valueOf()}):delete this.range,this.fill()},getClassNames:function(b){var c=[],d=this.viewDate.getUTCFullYear(),f=this.viewDate.getUTCMonth(),g=new Date;return b.getUTCFullYear()<d||b.getUTCFullYear()===d&&b.getUTCMonth()<f?c.push("old"):(b.getUTCFullYear()>d||b.getUTCFullYear()===d&&b.getUTCMonth()>f)&&c.push("new"),this.focusDate&&b.valueOf()===this.focusDate.valueOf()&&c.push("focused"),this.o.todayHighlight&&b.getUTCFullYear()===g.getFullYear()&&b.getUTCMonth()===g.getMonth()&&b.getUTCDate()===g.getDate()&&c.push("today"),-1!==this.dates.contains(b)&&c.push("active"),(b.valueOf()<this.o.startDate||b.valueOf()>this.o.endDate||-1!==a.inArray(b.getUTCDay(),this.o.daysOfWeekDisabled))&&c.push("disabled"),this.o.datesDisabled.length>0&&a.grep(this.o.datesDisabled,function(a){return e(b,a)}).length>0&&c.push("disabled","disabled-date"),this.range&&(b>this.range[0]&&b<this.range[this.range.length-1]&&c.push("range"),-1!==a.inArray(b.valueOf(),this.range)&&c.push("selected")),c},fill:function(){var d,e=new Date(this.viewDate),f=e.getUTCFullYear(),g=e.getUTCMonth(),h=this.o.startDate!==-(1/0)?this.o.startDate.getUTCFullYear():-(1/0),i=this.o.startDate!==-(1/0)?this.o.startDate.getUTCMonth():-(1/0),j=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,k=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,l=p[this.o.language].today||p.en.today||"",m=p[this.o.language].clear||p.en.clear||"";if(!isNaN(f)&&!isNaN(g)){this.picker.find(".datepicker-days thead .datepicker-switch").text(p[this.o.language].months[g]+" "+f),this.picker.find("tfoot .today").text(l).toggle(this.o.todayBtn!==!1),this.picker.find("tfoot .clear").text(m).toggle(this.o.clearBtn!==!1),this.updateNavArrows(),this.fillMonths();var n=c(f,g-1,28),o=q.getDaysInMonth(n.getUTCFullYear(),n.getUTCMonth());n.setUTCDate(o),n.setUTCDate(o-(n.getUTCDay()-this.o.weekStart+7)%7);var r=new Date(n);r.setUTCDate(r.getUTCDate()+42),r=r.valueOf();for(var s,t=[];n.valueOf()<r;){if(n.getUTCDay()===this.o.weekStart&&(t.push("<tr>"),this.o.calendarWeeks)){var u=new Date(+n+(this.o.weekStart-n.getUTCDay()-7)%7*864e5),v=new Date(Number(u)+(11-u.getUTCDay())%7*864e5),w=new Date(Number(w=c(v.getUTCFullYear(),0,1))+(11-w.getUTCDay())%7*864e5),x=(v-w)/864e5/7+1;t.push('<td class="cw">'+x+"</td>")}if(s=this.getClassNames(n),s.push("day"),this.o.beforeShowDay!==a.noop){var y=this.o.beforeShowDay(this._utc_to_local(n));y===b?y={}:"boolean"==typeof y?y={enabled:y}:"string"==typeof y&&(y={classes:y}),y.enabled===!1&&s.push("disabled"),y.classes&&(s=s.concat(y.classes.split(/\s+/))),y.tooltip&&(d=y.tooltip)}s=a.unique(s),t.push('<td class="'+s.join(" ")+'"'+(d?' title="'+d+'"':"")+">"+n.getUTCDate()+"</td>"),d=null,n.getUTCDay()===this.o.weekEnd&&t.push("</tr>"),n.setUTCDate(n.getUTCDate()+1)}this.picker.find(".datepicker-days tbody").empty().append(t.join(""));var z=this.picker.find(".datepicker-months").find("th:eq(1)").text(f).end().find("span").removeClass("active");if(a.each(this.dates,function(a,b){b.getUTCFullYear()===f&&z.eq(b.getUTCMonth()).addClass("active")}),(h>f||f>j)&&z.addClass("disabled"),f===h&&z.slice(0,i).addClass("disabled"),f===j&&z.slice(k+1).addClass("disabled"),this.o.beforeShowMonth!==a.noop){var A=this;a.each(z,function(b,c){if(!a(c).hasClass("disabled")){var d=new Date(f,b,1),e=A.o.beforeShowMonth(d);e===!1&&a(c).addClass("disabled")}})}t="",f=10*parseInt(f/10,10);var B=this.picker.find(".datepicker-years").find("th:eq(1)").text(f+"-"+(f+9)).end().find("td");f-=1;for(var C,D=a.map(this.dates,function(a){return a.getUTCFullYear()}),E=-1;11>E;E++)C=["year"],-1===E?C.push("old"):10===E&&C.push("new"),-1!==a.inArray(f,D)&&C.push("active"),(h>f||f>j)&&C.push("disabled"),t+='<span class="'+C.join(" ")+'">'+f+"</span>",f+=1;B.html(t)}},updateNavArrows:function(){if(this._allow_update){var a=new Date(this.viewDate),b=a.getUTCFullYear(),c=a.getUTCMonth();switch(this.viewMode){case 0:this.o.startDate!==-(1/0)&&b<=this.o.startDate.getUTCFullYear()&&c<=this.o.startDate.getUTCMonth()?this.picker.find(".prev").css({visibility:"hidden"}):this.picker.find(".prev").css({visibility:"visible"}),this.o.endDate!==1/0&&b>=this.o.endDate.getUTCFullYear()&&c>=this.o.endDate.getUTCMonth()?this.picker.find(".next").css({visibility:"hidden"}):this.picker.find(".next").css({visibility:"visible"});break;case 1:case 2:this.o.startDate!==-(1/0)&&b<=this.o.startDate.getUTCFullYear()?this.picker.find(".prev").css({visibility:"hidden"}):this.picker.find(".prev").css({visibility:"visible"}),this.o.endDate!==1/0&&b>=this.o.endDate.getUTCFullYear()?this.picker.find(".next").css({visibility:"hidden"}):this.picker.find(".next").css({visibility:"visible"})}}},click:function(b){b.preventDefault();var d,e,f,g=a(b.target).closest("span, td, th");if(1===g.length)switch(g[0].nodeName.toLowerCase()){case"th":switch(g[0].className){case"datepicker-switch":this.showMode(1);break;case"prev":case"next":var h=q.modes[this.viewMode].navStep*("prev"===g[0].className?-1:1);switch(this.viewMode){case 0:this.viewDate=this.moveMonth(this.viewDate,h),this._trigger("changeMonth",this.viewDate);break;case 1:case 2:this.viewDate=this.moveYear(this.viewDate,h),1===this.viewMode&&this._trigger("changeYear",this.viewDate)}this.fill();break;case"today":var i=new Date;i=c(i.getFullYear(),i.getMonth(),i.getDate(),0,0,0),this.showMode(-2);var j="linked"===this.o.todayBtn?null:"view";this._setDate(i,j);break;case"clear":this.clearDates()}break;case"span":g.hasClass("disabled")||(this.viewDate.setUTCDate(1),g.hasClass("month")?(f=1,e=g.parent().find("span").index(g),d=this.viewDate.getUTCFullYear(),this.viewDate.setUTCMonth(e),this._trigger("changeMonth",this.viewDate),1===this.o.minViewMode?(this._setDate(c(d,e,f)),this.showMode()):this.showMode(-1)):(f=1,e=0,d=parseInt(g.text(),10)||0,this.viewDate.setUTCFullYear(d),this._trigger("changeYear",this.viewDate),2===this.o.minViewMode&&this._setDate(c(d,e,f)),this.showMode(-1)),this.fill());break;case"td":g.hasClass("day")&&!g.hasClass("disabled")&&(f=parseInt(g.text(),10)||1,d=this.viewDate.getUTCFullYear(),e=this.viewDate.getUTCMonth(),g.hasClass("old")?0===e?(e=11,d-=1):e-=1:g.hasClass("new")&&(11===e?(e=0,d+=1):e+=1),this._setDate(c(d,e,f)))}this.picker.is(":visible")&&this._focused_from&&a(this._focused_from).focus(),delete this._focused_from},_toggle_multidate:function(a){var b=this.dates.contains(a);if(a||this.dates.clear(),-1!==b?(this.o.multidate===!0||this.o.multidate>1||this.o.toggleActive)&&this.dates.remove(b):this.o.multidate===!1?(this.dates.clear(),this.dates.push(a)):this.dates.push(a),"number"==typeof this.o.multidate)for(;this.dates.length>this.o.multidate;)this.dates.remove(0)},_setDate:function(a,b){b&&"date"!==b||this._toggle_multidate(a&&new Date(a)),b&&"view"!==b||(this.viewDate=a&&new Date(a)),this.fill(),this.setValue(),b&&"view"===b||this._trigger("changeDate");var c;this.isInput?c=this.element:this.component&&(c=this.element.find("input")),c&&c.change(),!this.o.autoclose||b&&"date"!==b||this.hide()},moveMonth:function(a,c){if(!a)return b;if(!c)return a;var d,e,f=new Date(a.valueOf()),g=f.getUTCDate(),h=f.getUTCMonth(),i=Math.abs(c);if(c=c>0?1:-1,1===i)e=-1===c?function(){return f.getUTCMonth()===h}:function(){return f.getUTCMonth()!==d},d=h+c,f.setUTCMonth(d),(0>d||d>11)&&(d=(d+12)%12);else{for(var j=0;i>j;j++)f=this.moveMonth(f,c);d=f.getUTCMonth(),f.setUTCDate(g),e=function(){return d!==f.getUTCMonth()}}for(;e();)f.setUTCDate(--g),f.setUTCMonth(d);return f},moveYear:function(a,b){return this.moveMonth(a,12*b)},dateWithinRange:function(a){return a>=this.o.startDate&&a<=this.o.endDate},keydown:function(a){if(!this.picker.is(":visible"))return void((40===a.keyCode||27===a.keyCode)&&this.show());var b,c,e,f=!1,g=this.focusDate||this.viewDate;switch(a.keyCode){case 27:this.focusDate?(this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill()):this.hide(),a.preventDefault();break;case 37:case 39:if(!this.o.keyboardNavigation)break;b=37===a.keyCode?-1:1,a.ctrlKey?(c=this.moveYear(this.dates.get(-1)||d(),b),e=this.moveYear(g,b),this._trigger("changeYear",this.viewDate)):a.shiftKey?(c=this.moveMonth(this.dates.get(-1)||d(),b),e=this.moveMonth(g,b),this._trigger("changeMonth",this.viewDate)):(c=new Date(this.dates.get(-1)||d()),c.setUTCDate(c.getUTCDate()+b),e=new Date(g),e.setUTCDate(g.getUTCDate()+b)),this.dateWithinRange(e)&&(this.focusDate=this.viewDate=e,this.setValue(),this.fill(),a.preventDefault());break;case 38:case 40:if(!this.o.keyboardNavigation)break;b=38===a.keyCode?-1:1,a.ctrlKey?(c=this.moveYear(this.dates.get(-1)||d(),b),e=this.moveYear(g,b),this._trigger("changeYear",this.viewDate)):a.shiftKey?(c=this.moveMonth(this.dates.get(-1)||d(),b),e=this.moveMonth(g,b),this._trigger("changeMonth",this.viewDate)):(c=new Date(this.dates.get(-1)||d()),c.setUTCDate(c.getUTCDate()+7*b),e=new Date(g),e.setUTCDate(g.getUTCDate()+7*b)),this.dateWithinRange(e)&&(this.focusDate=this.viewDate=e,this.setValue(),this.fill(),a.preventDefault());break;case 32:break;case 13:g=this.focusDate||this.dates.get(-1)||this.viewDate,this.o.keyboardNavigation&&(this._toggle_multidate(g),f=!0),this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.setValue(),this.fill(),this.picker.is(":visible")&&(a.preventDefault(),"function"==typeof a.stopPropagation?a.stopPropagation():a.cancelBubble=!0,this.o.autoclose&&this.hide());break;case 9:this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill(),this.hide()}if(f){this.dates.length?this._trigger("changeDate"):this._trigger("clearDate");var h;this.isInput?h=this.element:this.component&&(h=this.element.find("input")),h&&h.change()}},showMode:function(a){a&&(this.viewMode=Math.max(this.o.minViewMode,Math.min(2,this.viewMode+a))),this.picker.children("div").hide().filter(".datepicker-"+q.modes[this.viewMode].clsName).css("display","block"),this.updateNavArrows()}};var k=function(b,c){this.element=a(b),this.inputs=a.map(c.inputs,function(a){return a.jquery?a[0]:a}),delete c.inputs,m.call(a(this.inputs),c).on("changeDate",a.proxy(this.dateUpdated,this)),this.pickers=a.map(this.inputs,function(b){return a(b).data("datepicker")}),this.updateDates()};k.prototype={updateDates:function(){this.dates=a.map(this.pickers,function(a){return a.getUTCDate()}),this.updateRanges()},updateRanges:function(){var b=a.map(this.dates,function(a){return a.valueOf()});a.each(this.pickers,function(a,c){c.setRange(b)})},dateUpdated:function(b){if(!this.updating){this.updating=!0;var c=a(b.target).data("datepicker"),d=c.getUTCDate(),e=a.inArray(b.target,this.inputs),f=e-1,g=e+1,h=this.inputs.length;if(-1!==e){if(a.each(this.pickers,function(a,b){b.getUTCDate()||b.setUTCDate(d)}),d<this.dates[f])for(;f>=0&&d<this.dates[f];)this.pickers[f--].setUTCDate(d);else if(d>this.dates[g])for(;h>g&&d>this.dates[g];)this.pickers[g++].setUTCDate(d);this.updateDates(),delete this.updating}}},remove:function(){a.map(this.pickers,function(a){a.remove()}),delete this.element.data().datepicker}};var l=a.fn.datepicker,m=function(c){var d=Array.apply(null,arguments);d.shift();var e;return this.each(function(){var f=a(this),i=f.data("datepicker"),l="object"==typeof c&&c;if(!i){var m=g(this,"date"),o=a.extend({},n,m,l),p=h(o.language),q=a.extend({},n,p,m,l);if(f.hasClass("input-daterange")||q.inputs){var r={inputs:q.inputs||f.find("input").toArray()};f.data("datepicker",i=new k(this,a.extend(q,r)))}else f.data("datepicker",i=new j(this,q))}return"string"==typeof c&&"function"==typeof i[c]&&(e=i[c].apply(i,d),e!==b)?!1:void 0}),e!==b?e:this};a.fn.datepicker=m;var n=a.fn.datepicker.defaults={autoclose:!1,beforeShowDay:a.noop,beforeShowMonth:a.noop,calendarWeeks:!1,clearBtn:!1,toggleActive:!1,daysOfWeekDisabled:[],datesDisabled:[],endDate:1/0,forceParse:!0,format:"mm/dd/yyyy",keyboardNavigation:!0,language:"en",minViewMode:0,multidate:!1,multidateSeparator:",",orientation:"auto",rtl:!1,startDate:-(1/0),startView:0,todayBtn:!1,todayHighlight:!1,weekStart:0,disableTouchKeyboard:!1,enableOnReadonly:!0,container:"body",immediateUpdates:!1},o=a.fn.datepicker.locale_opts=["format","rtl","weekStart"];a.fn.datepicker.Constructor=j;var p=a.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear"},ru:{days:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],daysShort:["Вск","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Сегодня",clear:"Очистить",format:"dd/mm/yyyy",weekStart:1,monthsTitle:"Месяцы"}},q={modes:[{clsName:"days",navFnc:"Month",navStep:1},{clsName:"months",navFnc:"FullYear",navStep:1},{clsName:"years",navFnc:"FullYear",navStep:10}],isLeapYear:function(a){return a%4===0&&a%100!==0||a%400===0},getDaysInMonth:function(a,b){return[31,q.isLeapYear(a)?29:28,31,30,31,30,31,31,30,31,30,31][b]},validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\[\u3400-\u9fff-`{-~\t\n\r]+/g,parseFormat:function(a){var b=a.replace(this.validParts,"\x00").split("\x00"),c=a.match(this.validParts);if(!b||!b.length||!c||0===c.length)throw new Error("Invalid date format.");return{separators:b,parts:c}},parseDate:function(d,e,f){function g(){var a=this.slice(0,m[k].length),b=m[k].slice(0,a.length);return a.toLowerCase()===b.toLowerCase()}if(!d)return b;if(d instanceof Date)return d;"string"==typeof e&&(e=q.parseFormat(e));var h,i,k,l=/([\-+]\d+)([dmwy])/,m=d.match(/([\-+]\d+)([dmwy])/g);if(/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(d)){for(d=new Date,k=0;k<m.length;k++)switch(h=l.exec(m[k]),i=parseInt(h[1]),h[2]){case"d":d.setUTCDate(d.getUTCDate()+i);break;case"m":d=j.prototype.moveMonth.call(j.prototype,d,i);break;case"w":d.setUTCDate(d.getUTCDate()+7*i);break;case"y":d=j.prototype.moveYear.call(j.prototype,d,i)}return c(d.getUTCFullYear(),d.getUTCMonth(),d.getUTCDate(),0,0,0)}m=d&&d.match(this.nonpunctuation)||[],d=new Date;var n,o,r={},s=["yyyy","yy","M","MM","m","mm","d","dd"],t={yyyy:function(a,b){return a.setUTCFullYear(b)},yy:function(a,b){return a.setUTCFullYear(2e3+b)},m:function(a,b){if(isNaN(a))return a;for(b-=1;0>b;)b+=12;for(b%=12,a.setUTCMonth(b);a.getUTCMonth()!==b;)a.setUTCDate(a.getUTCDate()-1);return a},d:function(a,b){return a.setUTCDate(b)}};t.M=t.MM=t.mm=t.m,t.dd=t.d,d=c(d.getFullYear(),d.getMonth(),d.getDate(),0,0,0);var u=e.parts.slice();if(m.length!==u.length&&(u=a(u).filter(function(b,c){return-1!==a.inArray(c,s)}).toArray()),m.length===u.length){var v;for(k=0,v=u.length;v>k;k++){if(n=parseInt(m[k],10),h=u[k],isNaN(n))switch(h){case"MM":o=a(p[f].months).filter(g),n=a.inArray(o[0],p[f].months)+1;break;case"M":o=a(p[f].monthsShort).filter(g),n=a.inArray(o[0],p[f].monthsShort)+1}r[h]=n}var w,x;for(k=0;k<s.length;k++)x=s[k],x in r&&!isNaN(r[x])&&(w=new Date(d),t[x](w,r[x]),isNaN(w)||(d=w))}return d},formatDate:function(b,c,d){if(!b)return"";"string"==typeof c&&(c=q.parseFormat(c));var e={d:b.getUTCDate(),D:p[d].daysShort[b.getUTCDay()],DD:p[d].days[b.getUTCDay()],m:b.getUTCMonth()+1,M:p[d].monthsShort[b.getUTCMonth()],MM:p[d].months[b.getUTCMonth()],yy:b.getUTCFullYear().toString().substring(2),yyyy:b.getUTCFullYear()};e.dd=(e.d<10?"0":"")+e.d,e.mm=(e.m<10?"0":"")+e.m,b=[];for(var f=a.extend([],c.separators),g=0,h=c.parts.length;h>=g;g++)f.length&&b.push(f.shift()),b.push(e[c.parts[g]]);return b.join("")},headTemplate:'<thead><tr><th class="prev">«</th><th colspan="5" class="datepicker-switch"></th><th class="next">»</th></tr></thead>',contTemplate:'<tbody><tr><td colspan="7"></td></tr></tbody>',footTemplate:'<tfoot><tr><th colspan="7" class="today"></th></tr><tr><th colspan="7" class="clear"></th></tr></tfoot>'};q.template='<div class="datepicker"><div class="datepicker-days"><table class=" table-condensed">'+q.headTemplate+"<tbody></tbody>"+q.footTemplate+'</table></div><div class="datepicker-months"><table class="table-condensed">'+q.headTemplate+q.contTemplate+q.footTemplate+'</table></div><div class="datepicker-years"><table class="table-condensed">'+q.headTemplate+q.contTemplate+q.footTemplate+"</table></div></div>",a.fn.datepicker.DPGlobal=q,a.fn.datepicker.noConflict=function(){return a.fn.datepicker=l,this},a.fn.datepicker.version="1.4.1-dev",a(document).on("focus.datepicker.data-api click.datepicker.data-api",'[data-provide="datepicker"]',function(b){var c=a(this);c.data("datepicker")||(b.preventDefault(),m.call(c,"show"))}),a(function(){m.call(a('[data-provide="datepicker-inline"]'))})}(window.jQuery);
|
libs/factory/bootstrap/assets/js-min/bootstrap.datetimepicker.min.js
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
/*! version : 4.17.47
|
11 |
+
=========================================================
|
12 |
+
bootstrap-datetimejs
|
13 |
+
https://github.com/Eonasdan/bootstrap-datetimepicker
|
14 |
+
Copyright (c) 2015 Jonathan Peterson
|
15 |
+
=========================================================
|
16 |
+
*/
|
17 |
+
!function(a){"use strict";if("function"==typeof define&&define.amd)define(["jquery","moment"],a);else if("object"==typeof exports)module.exports=a(require("jquery"),require("moment"));else{if("undefined"==typeof jQuery)throw"bootstrap-datetimepicker requires jQuery to be loaded first";if("undefined"==typeof moment)throw"bootstrap-datetimepicker requires Moment.js to be loaded first";a(jQuery,moment)}}(function(a,b){"use strict";if(!b)throw new Error("bootstrap-datetimepicker requires Moment.js to be loaded first");var c=function(c,d){var e,f,g,h,i,j,k,l={},m=!0,n=!1,o=!1,p=0,q=[{clsName:"days",navFnc:"M",navStep:1},{clsName:"months",navFnc:"y",navStep:1},{clsName:"years",navFnc:"y",navStep:10},{clsName:"decades",navFnc:"y",navStep:100}],r=["days","months","years","decades"],s=["top","bottom","auto"],t=["left","right","auto"],u=["default","top","bottom"],v={up:38,38:"up",down:40,40:"down",left:37,37:"left",right:39,39:"right",tab:9,9:"tab",escape:27,27:"escape",enter:13,13:"enter",pageUp:33,33:"pageUp",pageDown:34,34:"pageDown",shift:16,16:"shift",control:17,17:"control",space:32,32:"space",t:84,84:"t","delete":46,46:"delete"},w={},x=function(){return void 0!==b.tz&&void 0!==d.timeZone&&null!==d.timeZone&&""!==d.timeZone},y=function(a){var c;return c=void 0===a||null===a?b():b.isDate(a)||b.isMoment(a)?b(a):x()?b.tz(a,j,d.useStrict,d.timeZone):b(a,j,d.useStrict),x()&&c.tz(d.timeZone),c},z=function(a){if("string"!=typeof a||a.length>1)throw new TypeError("isEnabled expects a single character string parameter");switch(a){case"y":return-1!==i.indexOf("Y");case"M":return-1!==i.indexOf("M");case"d":return-1!==i.toLowerCase().indexOf("d");case"h":case"H":return-1!==i.toLowerCase().indexOf("h");case"m":return-1!==i.indexOf("m");case"s":return-1!==i.indexOf("s");default:return!1}},A=function(){return z("h")||z("m")||z("s")},B=function(){return z("y")||z("M")||z("d")},C=function(){var b=a("<thead>").append(a("<tr>").append(a("<th>").addClass("prev").attr("data-action","previous").append(a("<span>").addClass(d.icons.previous))).append(a("<th>").addClass("picker-switch").attr("data-action","pickerSwitch").attr("colspan",d.calendarWeeks?"6":"5")).append(a("<th>").addClass("next").attr("data-action","next").append(a("<span>").addClass(d.icons.next)))),c=a("<tbody>").append(a("<tr>").append(a("<td>").attr("colspan",d.calendarWeeks?"8":"7")));return[a("<div>").addClass("datepicker-days").append(a("<table>").addClass("table-condensed").append(b).append(a("<tbody>"))),a("<div>").addClass("datepicker-months").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone())),a("<div>").addClass("datepicker-years").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone())),a("<div>").addClass("datepicker-decades").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone()))]},D=function(){var b=a("<tr>"),c=a("<tr>"),e=a("<tr>");return z("h")&&(b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementHour}).addClass("btn").attr("data-action","incrementHours").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-hour").attr({"data-time-component":"hours",title:d.tooltips.pickHour}).attr("data-action","showHours"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementHour}).addClass("btn").attr("data-action","decrementHours").append(a("<span>").addClass(d.icons.down))))),z("m")&&(z("h")&&(b.append(a("<td>").addClass("separator")),c.append(a("<td>").addClass("separator").html(":")),e.append(a("<td>").addClass("separator"))),b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementMinute}).addClass("btn").attr("data-action","incrementMinutes").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-minute").attr({"data-time-component":"minutes",title:d.tooltips.pickMinute}).attr("data-action","showMinutes"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementMinute}).addClass("btn").attr("data-action","decrementMinutes").append(a("<span>").addClass(d.icons.down))))),z("s")&&(z("m")&&(b.append(a("<td>").addClass("separator")),c.append(a("<td>").addClass("separator").html(":")),e.append(a("<td>").addClass("separator"))),b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementSecond}).addClass("btn").attr("data-action","incrementSeconds").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-second").attr({"data-time-component":"seconds",title:d.tooltips.pickSecond}).attr("data-action","showSeconds"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementSecond}).addClass("btn").attr("data-action","decrementSeconds").append(a("<span>").addClass(d.icons.down))))),h||(b.append(a("<td>").addClass("separator")),c.append(a("<td>").append(a("<button>").addClass("btn btn-primary").attr({"data-action":"togglePeriod",tabindex:"-1",title:d.tooltips.togglePeriod}))),e.append(a("<td>").addClass("separator"))),a("<div>").addClass("timepicker-picker").append(a("<table>").addClass("table-condensed").append([b,c,e]))},E=function(){var b=a("<div>").addClass("timepicker-hours").append(a("<table>").addClass("table-condensed")),c=a("<div>").addClass("timepicker-minutes").append(a("<table>").addClass("table-condensed")),d=a("<div>").addClass("timepicker-seconds").append(a("<table>").addClass("table-condensed")),e=[D()];return z("h")&&e.push(b),z("m")&&e.push(c),z("s")&&e.push(d),e},F=function(){var b=[];return d.showTodayButton&&b.push(a("<td>").append(a("<a>").attr({"data-action":"today",title:d.tooltips.today}).append(a("<span>").addClass(d.icons.today)))),!d.sideBySide&&B()&&A()&&b.push(a("<td>").append(a("<a>").attr({"data-action":"togglePicker",title:d.tooltips.selectTime}).append(a("<span>").addClass(d.icons.time)))),d.showClear&&b.push(a("<td>").append(a("<a>").attr({"data-action":"clear",title:d.tooltips.clear}).append(a("<span>").addClass(d.icons.clear)))),d.showClose&&b.push(a("<td>").append(a("<a>").attr({"data-action":"close",title:d.tooltips.close}).append(a("<span>").addClass(d.icons.close)))),a("<table>").addClass("table-condensed").append(a("<tbody>").append(a("<tr>").append(b)))},G=function(){var b=a("<div>").addClass("bootstrap-datetimepicker-widget dropdown-menu"),c=a("<div>").addClass("datepicker").append(C()),e=a("<div>").addClass("timepicker").append(E()),f=a("<ul>").addClass("list-unstyled"),g=a("<li>").addClass("picker-switch"+(d.collapse?" accordion-toggle":"")).append(F());return d.inline&&b.removeClass("dropdown-menu"),h&&b.addClass("usetwentyfour"),z("s")&&!h&&b.addClass("wider"),d.sideBySide&&B()&&A()?(b.addClass("timepicker-sbs"),"top"===d.toolbarPlacement&&b.append(g),b.append(a("<div>").addClass("row").append(c.addClass("col-md-6")).append(e.addClass("col-md-6"))),"bottom"===d.toolbarPlacement&&b.append(g),b):("top"===d.toolbarPlacement&&f.append(g),B()&&f.append(a("<li>").addClass(d.collapse&&A()?"collapse in":"").append(c)),"default"===d.toolbarPlacement&&f.append(g),A()&&f.append(a("<li>").addClass(d.collapse&&B()?"collapse":"").append(e)),"bottom"===d.toolbarPlacement&&f.append(g),b.append(f))},H=function(){var b,e={};return b=c.is("input")||d.inline?c.data():c.find("input").data(),b.dateOptions&&b.dateOptions instanceof Object&&(e=a.extend(!0,e,b.dateOptions)),a.each(d,function(a){var c="date"+a.charAt(0).toUpperCase()+a.slice(1);void 0!==b[c]&&(e[a]=b[c])}),e},I=function(){var b,e=(n||c).position(),f=(n||c).offset(),g=d.widgetPositioning.vertical,h=d.widgetPositioning.horizontal;if(d.widgetParent)b=d.widgetParent.append(o);else if(c.is("input"))b=c.after(o).parent();else{if(d.inline)return void(b=c.append(o));b=c,c.children().first().after(o)}if("auto"===g&&(g=f.top+1.5*o.height()>=a(window).height()+a(window).scrollTop()&&o.height()+c.outerHeight()<f.top?"top":"bottom"),"auto"===h&&(h=b.width()<f.left+o.outerWidth()/2&&f.left+o.outerWidth()>a(window).width()?"right":"left"),"top"===g?o.addClass("top").removeClass("bottom"):o.addClass("bottom").removeClass("top"),"right"===h?o.addClass("pull-right"):o.removeClass("pull-right"),"static"===b.css("position")&&(b=b.parents().filter(function(){return"static"!==a(this).css("position")}).first()),0===b.length)throw new Error("datetimepicker component should be placed within a non-static positioned container");o.css({top:"top"===g?"auto":e.top+c.outerHeight(),bottom:"top"===g?b.outerHeight()-(b===c?0:e.top):"auto",left:"left"===h?b===c?0:e.left:"auto",right:"left"===h?"auto":b.outerWidth()-c.outerWidth()-(b===c?0:e.left)})},J=function(a){"dp.change"===a.type&&(a.date&&a.date.isSame(a.oldDate)||!a.date&&!a.oldDate)||c.trigger(a)},K=function(a){"y"===a&&(a="YYYY"),J({type:"dp.update",change:a,viewDate:f.clone()})},L=function(a){o&&(a&&(k=Math.max(p,Math.min(3,k+a))),o.find(".datepicker > div").hide().filter(".datepicker-"+q[k].clsName).show())},M=function(){var b=a("<tr>"),c=f.clone().startOf("w").startOf("d");for(d.calendarWeeks===!0&&b.append(a("<th>").addClass("cw").text("#"));c.isBefore(f.clone().endOf("w"));)b.append(a("<th>").addClass("dow").text(c.format("dd"))),c.add(1,"d");o.find(".datepicker-days thead").append(b)},N=function(a){return d.disabledDates[a.format("YYYY-MM-DD")]===!0},O=function(a){return d.enabledDates[a.format("YYYY-MM-DD")]===!0},P=function(a){return d.disabledHours[a.format("H")]===!0},Q=function(a){return d.enabledHours[a.format("H")]===!0},R=function(b,c){if(!b.isValid())return!1;if(d.disabledDates&&"d"===c&&N(b))return!1;if(d.enabledDates&&"d"===c&&!O(b))return!1;if(d.minDate&&b.isBefore(d.minDate,c))return!1;if(d.maxDate&&b.isAfter(d.maxDate,c))return!1;if(d.daysOfWeekDisabled&&"d"===c&&-1!==d.daysOfWeekDisabled.indexOf(b.day()))return!1;if(d.disabledHours&&("h"===c||"m"===c||"s"===c)&&P(b))return!1;if(d.enabledHours&&("h"===c||"m"===c||"s"===c)&&!Q(b))return!1;if(d.disabledTimeIntervals&&("h"===c||"m"===c||"s"===c)){var e=!1;if(a.each(d.disabledTimeIntervals,function(){return b.isBetween(this[0],this[1])?(e=!0,!1):void 0}),e)return!1}return!0},S=function(){for(var b=[],c=f.clone().startOf("y").startOf("d");c.isSame(f,"y");)b.push(a("<span>").attr("data-action","selectMonth").addClass("month").text(c.format("MMM"))),c.add(1,"M");o.find(".datepicker-months td").empty().append(b)},T=function(){var b=o.find(".datepicker-months"),c=b.find("th"),g=b.find("tbody").find("span");c.eq(0).find("span").attr("title",d.tooltips.prevYear),c.eq(1).attr("title",d.tooltips.selectYear),c.eq(2).find("span").attr("title",d.tooltips.nextYear),b.find(".disabled").removeClass("disabled"),R(f.clone().subtract(1,"y"),"y")||c.eq(0).addClass("disabled"),c.eq(1).text(f.year()),R(f.clone().add(1,"y"),"y")||c.eq(2).addClass("disabled"),g.removeClass("active"),e.isSame(f,"y")&&!m&&g.eq(e.month()).addClass("active"),g.each(function(b){R(f.clone().month(b),"M")||a(this).addClass("disabled")})},U=function(){var a=o.find(".datepicker-years"),b=a.find("th"),c=f.clone().subtract(5,"y"),g=f.clone().add(6,"y"),h="";for(b.eq(0).find("span").attr("title",d.tooltips.prevDecade),b.eq(1).attr("title",d.tooltips.selectDecade),b.eq(2).find("span").attr("title",d.tooltips.nextDecade),a.find(".disabled").removeClass("disabled"),d.minDate&&d.minDate.isAfter(c,"y")&&b.eq(0).addClass("disabled"),b.eq(1).text(c.year()+"-"+g.year()),d.maxDate&&d.maxDate.isBefore(g,"y")&&b.eq(2).addClass("disabled");!c.isAfter(g,"y");)h+='<span data-action="selectYear" class="year'+(c.isSame(e,"y")&&!m?" active":"")+(R(c,"y")?"":" disabled")+'">'+c.year()+"</span>",c.add(1,"y");a.find("td").html(h)},V=function(){var a,c=o.find(".datepicker-decades"),g=c.find("th"),h=b({y:f.year()-f.year()%100-1}),i=h.clone().add(100,"y"),j=h.clone(),k=!1,l=!1,m="";for(g.eq(0).find("span").attr("title",d.tooltips.prevCentury),g.eq(2).find("span").attr("title",d.tooltips.nextCentury),c.find(".disabled").removeClass("disabled"),(h.isSame(b({y:1900}))||d.minDate&&d.minDate.isAfter(h,"y"))&&g.eq(0).addClass("disabled"),g.eq(1).text(h.year()+"-"+i.year()),(h.isSame(b({y:2e3}))||d.maxDate&&d.maxDate.isBefore(i,"y"))&&g.eq(2).addClass("disabled");!h.isAfter(i,"y");)a=h.year()+12,k=d.minDate&&d.minDate.isAfter(h,"y")&&d.minDate.year()<=a,l=d.maxDate&&d.maxDate.isAfter(h,"y")&&d.maxDate.year()<=a,m+='<span data-action="selectDecade" class="decade'+(e.isAfter(h)&&e.year()<=a?" active":"")+(R(h,"y")||k||l?"":" disabled")+'" data-selection="'+(h.year()+6)+'">'+(h.year()+1)+" - "+(h.year()+12)+"</span>",h.add(12,"y");m+="<span></span><span></span><span></span>",c.find("td").html(m),g.eq(1).text(j.year()+1+"-"+h.year())},W=function(){var b,c,g,h=o.find(".datepicker-days"),i=h.find("th"),j=[],k=[];if(B()){for(i.eq(0).find("span").attr("title",d.tooltips.prevMonth),i.eq(1).attr("title",d.tooltips.selectMonth),i.eq(2).find("span").attr("title",d.tooltips.nextMonth),h.find(".disabled").removeClass("disabled"),i.eq(1).text(f.format(d.dayViewHeaderFormat)),R(f.clone().subtract(1,"M"),"M")||i.eq(0).addClass("disabled"),R(f.clone().add(1,"M"),"M")||i.eq(2).addClass("disabled"),b=f.clone().startOf("M").startOf("w").startOf("d"),g=0;42>g;g++)0===b.weekday()&&(c=a("<tr>"),d.calendarWeeks&&c.append('<td class="cw">'+b.week()+"</td>"),j.push(c)),k=["day"],b.isBefore(f,"M")&&k.push("old"),b.isAfter(f,"M")&&k.push("new"),b.isSame(e,"d")&&!m&&k.push("active"),R(b,"d")||k.push("disabled"),b.isSame(y(),"d")&&k.push("today"),(0===b.day()||6===b.day())&&k.push("weekend"),J({type:"dp.classify",date:b,classNames:k}),c.append('<td data-action="selectDay" data-day="'+b.format("L")+'" class="'+k.join(" ")+'">'+b.date()+"</td>"),b.add(1,"d");h.find("tbody").empty().append(j),T(),U(),V()}},X=function(){var b=o.find(".timepicker-hours table"),c=f.clone().startOf("d"),d=[],e=a("<tr>");for(f.hour()>11&&!h&&c.hour(12);c.isSame(f,"d")&&(h||f.hour()<12&&c.hour()<12||f.hour()>11);)c.hour()%4===0&&(e=a("<tr>"),d.push(e)),e.append('<td data-action="selectHour" class="hour'+(R(c,"h")?"":" disabled")+'">'+c.format(h?"HH":"hh")+"</td>"),c.add(1,"h");b.empty().append(d)},Y=function(){for(var b=o.find(".timepicker-minutes table"),c=f.clone().startOf("h"),e=[],g=a("<tr>"),h=1===d.stepping?5:d.stepping;f.isSame(c,"h");)c.minute()%(4*h)===0&&(g=a("<tr>"),e.push(g)),g.append('<td data-action="selectMinute" class="minute'+(R(c,"m")?"":" disabled")+'">'+c.format("mm")+"</td>"),c.add(h,"m");b.empty().append(e)},Z=function(){for(var b=o.find(".timepicker-seconds table"),c=f.clone().startOf("m"),d=[],e=a("<tr>");f.isSame(c,"m");)c.second()%20===0&&(e=a("<tr>"),d.push(e)),e.append('<td data-action="selectSecond" class="second'+(R(c,"s")?"":" disabled")+'">'+c.format("ss")+"</td>"),c.add(5,"s");b.empty().append(d)},$=function(){var a,b,c=o.find(".timepicker span[data-time-component]");h||(a=o.find(".timepicker [data-action=togglePeriod]"),b=e.clone().add(e.hours()>=12?-12:12,"h"),a.text(e.format("A")),R(b,"h")?a.removeClass("disabled"):a.addClass("disabled")),c.filter("[data-time-component=hours]").text(e.format(h?"HH":"hh")),c.filter("[data-time-component=minutes]").text(e.format("mm")),c.filter("[data-time-component=seconds]").text(e.format("ss")),X(),Y(),Z()},_=function(){o&&(W(),$())},aa=function(a){var b=m?null:e;if(!a)return m=!0,g.val(""),c.data("date",""),J({type:"dp.change",date:!1,oldDate:b}),void _();if(a=a.clone().locale(d.locale),x()&&a.tz(d.timeZone),1!==d.stepping)for(a.minutes(Math.round(a.minutes()/d.stepping)*d.stepping).seconds(0);d.minDate&&a.isBefore(d.minDate);)a.add(d.stepping,"minutes");R(a)?(e=a,f=e.clone(),g.val(e.format(i)),c.data("date",e.format(i)),m=!1,_(),J({type:"dp.change",date:e.clone(),oldDate:b})):(d.keepInvalid?J({type:"dp.change",date:a,oldDate:b}):g.val(m?"":e.format(i)),J({type:"dp.error",date:a,oldDate:b}))},ba=function(){var b=!1;return o?(o.find(".collapse").each(function(){var c=a(this).data("collapse");return c&&c.transitioning?(b=!0,!1):!0}),b?l:(n&&n.hasClass("btn")&&n.toggleClass("active"),o.hide(),a(window).off("resize",I),o.off("click","[data-action]"),o.off("mousedown",!1),o.remove(),o=!1,J({type:"dp.hide",date:e.clone()}),g.blur(),f=e.clone(),l)):l},ca=function(){aa(null)},da=function(a){return void 0===d.parseInputDate?(!b.isMoment(a)||a instanceof Date)&&(a=y(a)):a=d.parseInputDate(a),a},ea={next:function(){var a=q[k].navFnc;f.add(q[k].navStep,a),W(),K(a)},previous:function(){var a=q[k].navFnc;f.subtract(q[k].navStep,a),W(),K(a)},pickerSwitch:function(){L(1)},selectMonth:function(b){var c=a(b.target).closest("tbody").find("span").index(a(b.target));f.month(c),k===p?(aa(e.clone().year(f.year()).month(f.month())),d.inline||ba()):(L(-1),W()),K("M")},selectYear:function(b){var c=parseInt(a(b.target).text(),10)||0;f.year(c),k===p?(aa(e.clone().year(f.year())),d.inline||ba()):(L(-1),W()),K("YYYY")},selectDecade:function(b){var c=parseInt(a(b.target).data("selection"),10)||0;f.year(c),k===p?(aa(e.clone().year(f.year())),d.inline||ba()):(L(-1),W()),K("YYYY")},selectDay:function(b){var c=f.clone();a(b.target).is(".old")&&c.subtract(1,"M"),a(b.target).is(".new")&&c.add(1,"M"),aa(c.date(parseInt(a(b.target).text(),10))),A()||d.keepOpen||d.inline||ba()},incrementHours:function(){var a=e.clone().add(1,"h");R(a,"h")&&aa(a)},incrementMinutes:function(){var a=e.clone().add(d.stepping,"m");R(a,"m")&&aa(a)},incrementSeconds:function(){var a=e.clone().add(1,"s");R(a,"s")&&aa(a)},decrementHours:function(){var a=e.clone().subtract(1,"h");R(a,"h")&&aa(a)},decrementMinutes:function(){var a=e.clone().subtract(d.stepping,"m");R(a,"m")&&aa(a)},decrementSeconds:function(){var a=e.clone().subtract(1,"s");R(a,"s")&&aa(a)},togglePeriod:function(){aa(e.clone().add(e.hours()>=12?-12:12,"h"))},togglePicker:function(b){var c,e=a(b.target),f=e.closest("ul"),g=f.find(".in"),h=f.find(".collapse:not(.in)");if(g&&g.length){if(c=g.data("collapse"),c&&c.transitioning)return;g.collapse?(g.collapse("hide"),h.collapse("show")):(g.removeClass("in"),h.addClass("in")),e.is("span")?e.toggleClass(d.icons.time+" "+d.icons.date):e.find("span").toggleClass(d.icons.time+" "+d.icons.date)}},showPicker:function(){o.find(".timepicker > div:not(.timepicker-picker)").hide(),o.find(".timepicker .timepicker-picker").show()},showHours:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-hours").show()},showMinutes:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-minutes").show()},showSeconds:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-seconds").show()},selectHour:function(b){var c=parseInt(a(b.target).text(),10);h||(e.hours()>=12?12!==c&&(c+=12):12===c&&(c=0)),aa(e.clone().hours(c)),ea.showPicker.call(l)},selectMinute:function(b){aa(e.clone().minutes(parseInt(a(b.target).text(),10))),ea.showPicker.call(l)},selectSecond:function(b){aa(e.clone().seconds(parseInt(a(b.target).text(),10))),ea.showPicker.call(l)},clear:ca,today:function(){var a=y();R(a,"d")&&aa(a)},close:ba},fa=function(b){return a(b.currentTarget).is(".disabled")?!1:(ea[a(b.currentTarget).data("action")].apply(l,arguments),!1)},ga=function(){var b,c={year:function(a){return a.month(0).date(1).hours(0).seconds(0).minutes(0)},month:function(a){return a.date(1).hours(0).seconds(0).minutes(0)},day:function(a){return a.hours(0).seconds(0).minutes(0)},hour:function(a){return a.seconds(0).minutes(0)},minute:function(a){return a.seconds(0)}};return g.prop("disabled")||!d.ignoreReadonly&&g.prop("readonly")||o?l:(void 0!==g.val()&&0!==g.val().trim().length?aa(da(g.val().trim())):m&&d.useCurrent&&(d.inline||g.is("input")&&0===g.val().trim().length)&&(b=y(),"string"==typeof d.useCurrent&&(b=c[d.useCurrent](b)),aa(b)),o=G(),M(),S(),o.find(".timepicker-hours").hide(),o.find(".timepicker-minutes").hide(),o.find(".timepicker-seconds").hide(),_(),L(),a(window).on("resize",I),o.on("click","[data-action]",fa),o.on("mousedown",!1),n&&n.hasClass("btn")&&n.toggleClass("active"),I(),o.show(),d.focusOnShow&&!g.is(":focus")&&g.focus(),J({type:"dp.show"}),l)},ha=function(){return o?ba():ga()},ia=function(a){var b,c,e,f,g=null,h=[],i={},j=a.which,k="p";w[j]=k;for(b in w)w.hasOwnProperty(b)&&w[b]===k&&(h.push(b),parseInt(b,10)!==j&&(i[b]=!0));for(b in d.keyBinds)if(d.keyBinds.hasOwnProperty(b)&&"function"==typeof d.keyBinds[b]&&(e=b.split(" "),e.length===h.length&&v[j]===e[e.length-1])){for(f=!0,c=e.length-2;c>=0;c--)if(!(v[e[c]]in i)){f=!1;break}if(f){g=d.keyBinds[b];break}}g&&(g.call(l,o),a.stopPropagation(),a.preventDefault())},ja=function(a){w[a.which]="r",a.stopPropagation(),a.preventDefault()},ka=function(b){var c=a(b.target).val().trim(),d=c?da(c):null;return aa(d),b.stopImmediatePropagation(),!1},la=function(){g.on({change:ka,blur:d.debug?"":ba,keydown:ia,keyup:ja,focus:d.allowInputToggle?ga:""}),c.is("input")?g.on({focus:ga}):n&&(n.on("click",ha),n.on("mousedown",!1))},ma=function(){g.off({change:ka,blur:blur,keydown:ia,keyup:ja,focus:d.allowInputToggle?ba:""}),c.is("input")?g.off({focus:ga}):n&&(n.off("click",ha),n.off("mousedown",!1))},na=function(b){var c={};return a.each(b,function(){var a=da(this);a.isValid()&&(c[a.format("YYYY-MM-DD")]=!0)}),Object.keys(c).length?c:!1},oa=function(b){var c={};return a.each(b,function(){c[this]=!0}),Object.keys(c).length?c:!1},pa=function(){var a=d.format||"L LT";i=a.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){var b=e.localeData().longDateFormat(a)||a;return b.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){return e.localeData().longDateFormat(a)||a})}),j=d.extraFormats?d.extraFormats.slice():[],j.indexOf(a)<0&&j.indexOf(i)<0&&j.push(i),h=i.toLowerCase().indexOf("a")<1&&i.replace(/\[.*?\]/g,"").indexOf("h")<1,z("y")&&(p=2),z("M")&&(p=1),z("d")&&(p=0),k=Math.max(p,k),m||aa(e)};if(l.destroy=function(){ba(),ma(),c.removeData("DateTimePicker"),c.removeData("date")},l.toggle=ha,l.show=ga,l.hide=ba,l.disable=function(){return ba(),n&&n.hasClass("btn")&&n.addClass("disabled"),g.prop("disabled",!0),l},l.enable=function(){return n&&n.hasClass("btn")&&n.removeClass("disabled"),g.prop("disabled",!1),l},l.ignoreReadonly=function(a){if(0===arguments.length)return d.ignoreReadonly;if("boolean"!=typeof a)throw new TypeError("ignoreReadonly () expects a boolean parameter");return d.ignoreReadonly=a,l},l.options=function(b){if(0===arguments.length)return a.extend(!0,{},d);if(!(b instanceof Object))throw new TypeError("options() options parameter should be an object");return a.extend(!0,d,b),a.each(d,function(a,b){if(void 0===l[a])throw new TypeError("option "+a+" is not recognized!");l[a](b)}),l},l.date=function(a){if(0===arguments.length)return m?null:e.clone();if(!(null===a||"string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("date() parameter must be one of [null, string, moment or Date]");return aa(null===a?null:da(a)),l},l.format=function(a){if(0===arguments.length)return d.format;if("string"!=typeof a&&("boolean"!=typeof a||a!==!1))throw new TypeError("format() expects a string or boolean:false parameter "+a);return d.format=a,i&&pa(),l},l.timeZone=function(a){if(0===arguments.length)return d.timeZone;if("string"!=typeof a)throw new TypeError("newZone() expects a string parameter");return d.timeZone=a,l},l.dayViewHeaderFormat=function(a){if(0===arguments.length)return d.dayViewHeaderFormat;if("string"!=typeof a)throw new TypeError("dayViewHeaderFormat() expects a string parameter");return d.dayViewHeaderFormat=a,l},l.extraFormats=function(a){if(0===arguments.length)return d.extraFormats;if(a!==!1&&!(a instanceof Array))throw new TypeError("extraFormats() expects an array or false parameter");return d.extraFormats=a,j&&pa(),l},l.disabledDates=function(b){if(0===arguments.length)return d.disabledDates?a.extend({},d.disabledDates):d.disabledDates;if(!b)return d.disabledDates=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledDates() expects an array parameter");return d.disabledDates=na(b),d.enabledDates=!1,_(),l},l.enabledDates=function(b){if(0===arguments.length)return d.enabledDates?a.extend({},d.enabledDates):d.enabledDates;if(!b)return d.enabledDates=!1,_(),l;if(!(b instanceof Array))throw new TypeError("enabledDates() expects an array parameter");return d.enabledDates=na(b),d.disabledDates=!1,_(),l},l.daysOfWeekDisabled=function(a){if(0===arguments.length)return d.daysOfWeekDisabled.splice(0);if("boolean"==typeof a&&!a)return d.daysOfWeekDisabled=!1,_(),l;if(!(a instanceof Array))throw new TypeError("daysOfWeekDisabled() expects an array parameter");if(d.daysOfWeekDisabled=a.reduce(function(a,b){return b=parseInt(b,10),b>6||0>b||isNaN(b)?a:(-1===a.indexOf(b)&&a.push(b),a)},[]).sort(),d.useCurrent&&!d.keepInvalid){for(var b=0;!R(e,"d");){if(e.add(1,"d"),31===b)throw"Tried 31 times to find a valid date";b++}aa(e)}return _(),l},l.maxDate=function(a){if(0===arguments.length)return d.maxDate?d.maxDate.clone():d.maxDate;if("boolean"==typeof a&&a===!1)return d.maxDate=!1,_(),l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=y());var b=da(a);if(!b.isValid())throw new TypeError("maxDate() Could not parse date parameter: "+a);if(d.minDate&&b.isBefore(d.minDate))throw new TypeError("maxDate() date parameter is before options.minDate: "+b.format(i));return d.maxDate=b,d.useCurrent&&!d.keepInvalid&&e.isAfter(a)&&aa(d.maxDate),f.isAfter(b)&&(f=b.clone().subtract(d.stepping,"m")),_(),l},l.minDate=function(a){if(0===arguments.length)return d.minDate?d.minDate.clone():d.minDate;if("boolean"==typeof a&&a===!1)return d.minDate=!1,_(),l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=y());var b=da(a);if(!b.isValid())throw new TypeError("minDate() Could not parse date parameter: "+a);if(d.maxDate&&b.isAfter(d.maxDate))throw new TypeError("minDate() date parameter is after options.maxDate: "+b.format(i));return d.minDate=b,d.useCurrent&&!d.keepInvalid&&e.isBefore(a)&&aa(d.minDate),f.isBefore(b)&&(f=b.clone().add(d.stepping,"m")),_(),l},l.defaultDate=function(a){if(0===arguments.length)return d.defaultDate?d.defaultDate.clone():d.defaultDate;if(!a)return d.defaultDate=!1,l;"string"==typeof a&&(a="now"===a||"moment"===a?y():y(a));var b=da(a);if(!b.isValid())throw new TypeError("defaultDate() Could not parse date parameter: "+a);if(!R(b))throw new TypeError("defaultDate() date passed is invalid according to component setup validations");return d.defaultDate=b,(d.defaultDate&&d.inline||""===g.val().trim())&&aa(d.defaultDate),l},l.locale=function(a){if(0===arguments.length)return d.locale;if(!b.localeData(a))throw new TypeError("locale() locale "+a+" is not loaded from moment locales!");return d.locale=a,e.locale(d.locale),f.locale(d.locale),i&&pa(),o&&(ba(),ga()),l},l.stepping=function(a){return 0===arguments.length?d.stepping:(a=parseInt(a,10),(isNaN(a)||1>a)&&(a=1),d.stepping=a,l)},l.useCurrent=function(a){var b=["year","month","day","hour","minute"];if(0===arguments.length)return d.useCurrent;if("boolean"!=typeof a&&"string"!=typeof a)throw new TypeError("useCurrent() expects a boolean or string parameter");if("string"==typeof a&&-1===b.indexOf(a.toLowerCase()))throw new TypeError("useCurrent() expects a string parameter of "+b.join(", "));return d.useCurrent=a,l},l.collapse=function(a){if(0===arguments.length)return d.collapse;if("boolean"!=typeof a)throw new TypeError("collapse() expects a boolean parameter");return d.collapse===a?l:(d.collapse=a,o&&(ba(),ga()),l)},l.icons=function(b){if(0===arguments.length)return a.extend({},d.icons);if(!(b instanceof Object))throw new TypeError("icons() expects parameter to be an Object");return a.extend(d.icons,b),o&&(ba(),ga()),l},l.tooltips=function(b){if(0===arguments.length)return a.extend({},d.tooltips);if(!(b instanceof Object))throw new TypeError("tooltips() expects parameter to be an Object");return a.extend(d.tooltips,b),o&&(ba(),ga()),l},l.useStrict=function(a){if(0===arguments.length)return d.useStrict;if("boolean"!=typeof a)throw new TypeError("useStrict() expects a boolean parameter");return d.useStrict=a,l},l.sideBySide=function(a){if(0===arguments.length)return d.sideBySide;if("boolean"!=typeof a)throw new TypeError("sideBySide() expects a boolean parameter");return d.sideBySide=a,o&&(ba(),ga()),l},l.viewMode=function(a){if(0===arguments.length)return d.viewMode;if("string"!=typeof a)throw new TypeError("viewMode() expects a string parameter");if(-1===r.indexOf(a))throw new TypeError("viewMode() parameter must be one of ("+r.join(", ")+") value");return d.viewMode=a,k=Math.max(r.indexOf(a),p),L(),l},l.toolbarPlacement=function(a){if(0===arguments.length)return d.toolbarPlacement;if("string"!=typeof a)throw new TypeError("toolbarPlacement() expects a string parameter");if(-1===u.indexOf(a))throw new TypeError("toolbarPlacement() parameter must be one of ("+u.join(", ")+") value");return d.toolbarPlacement=a,o&&(ba(),ga()),l},l.widgetPositioning=function(b){if(0===arguments.length)return a.extend({},d.widgetPositioning);if("[object Object]"!=={}.toString.call(b))throw new TypeError("widgetPositioning() expects an object variable");if(b.horizontal){if("string"!=typeof b.horizontal)throw new TypeError("widgetPositioning() horizontal variable must be a string");if(b.horizontal=b.horizontal.toLowerCase(),-1===t.indexOf(b.horizontal))throw new TypeError("widgetPositioning() expects horizontal parameter to be one of ("+t.join(", ")+")");d.widgetPositioning.horizontal=b.horizontal}if(b.vertical){if("string"!=typeof b.vertical)throw new TypeError("widgetPositioning() vertical variable must be a string");if(b.vertical=b.vertical.toLowerCase(),-1===s.indexOf(b.vertical))throw new TypeError("widgetPositioning() expects vertical parameter to be one of ("+s.join(", ")+")");d.widgetPositioning.vertical=b.vertical}return _(),l},l.calendarWeeks=function(a){if(0===arguments.length)return d.calendarWeeks;if("boolean"!=typeof a)throw new TypeError("calendarWeeks() expects parameter to be a boolean value");return d.calendarWeeks=a,_(),l},l.showTodayButton=function(a){if(0===arguments.length)return d.showTodayButton;if("boolean"!=typeof a)throw new TypeError("showTodayButton() expects a boolean parameter");return d.showTodayButton=a,o&&(ba(),ga()),l},l.showClear=function(a){if(0===arguments.length)return d.showClear;if("boolean"!=typeof a)throw new TypeError("showClear() expects a boolean parameter");return d.showClear=a,o&&(ba(),ga()),l},l.widgetParent=function(b){if(0===arguments.length)return d.widgetParent;if("string"==typeof b&&(b=a(b)),null!==b&&"string"!=typeof b&&!(b instanceof a))throw new TypeError("widgetParent() expects a string or a jQuery object parameter");return d.widgetParent=b,o&&(ba(),ga()),l},l.keepOpen=function(a){if(0===arguments.length)return d.keepOpen;if("boolean"!=typeof a)throw new TypeError("keepOpen() expects a boolean parameter");return d.keepOpen=a,l},l.focusOnShow=function(a){if(0===arguments.length)return d.focusOnShow;if("boolean"!=typeof a)throw new TypeError("focusOnShow() expects a boolean parameter");return d.focusOnShow=a,l},l.inline=function(a){if(0===arguments.length)return d.inline;if("boolean"!=typeof a)throw new TypeError("inline() expects a boolean parameter");return d.inline=a,l},l.clear=function(){return ca(),l},l.keyBinds=function(a){return 0===arguments.length?d.keyBinds:(d.keyBinds=a,l)},l.getMoment=function(a){return y(a)},l.debug=function(a){if("boolean"!=typeof a)throw new TypeError("debug() expects a boolean parameter");return d.debug=a,l},l.allowInputToggle=function(a){if(0===arguments.length)return d.allowInputToggle;if("boolean"!=typeof a)throw new TypeError("allowInputToggle() expects a boolean parameter");return d.allowInputToggle=a,l},l.showClose=function(a){if(0===arguments.length)return d.showClose;if("boolean"!=typeof a)throw new TypeError("showClose() expects a boolean parameter");return d.showClose=a,l},l.keepInvalid=function(a){if(0===arguments.length)return d.keepInvalid;if("boolean"!=typeof a)throw new TypeError("keepInvalid() expects a boolean parameter");
|
18 |
+
return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length)return d.datepickerInput;if("string"!=typeof a)throw new TypeError("datepickerInput() expects a string parameter");return d.datepickerInput=a,l},l.parseInputDate=function(a){if(0===arguments.length)return d.parseInputDate;if("function"!=typeof a)throw new TypeError("parseInputDate() sholud be as function");return d.parseInputDate=a,l},l.disabledTimeIntervals=function(b){if(0===arguments.length)return d.disabledTimeIntervals?a.extend({},d.disabledTimeIntervals):d.disabledTimeIntervals;if(!b)return d.disabledTimeIntervals=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledTimeIntervals() expects an array parameter");return d.disabledTimeIntervals=b,_(),l},l.disabledHours=function(b){if(0===arguments.length)return d.disabledHours?a.extend({},d.disabledHours):d.disabledHours;if(!b)return d.disabledHours=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledHours() expects an array parameter");if(d.disabledHours=oa(b),d.enabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!R(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}aa(e)}return _(),l},l.enabledHours=function(b){if(0===arguments.length)return d.enabledHours?a.extend({},d.enabledHours):d.enabledHours;if(!b)return d.enabledHours=!1,_(),l;if(!(b instanceof Array))throw new TypeError("enabledHours() expects an array parameter");if(d.enabledHours=oa(b),d.disabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!R(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}aa(e)}return _(),l},l.viewDate=function(a){if(0===arguments.length)return f.clone();if(!a)return f=e.clone(),l;if(!("string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("viewDate() parameter must be one of [string, moment or Date]");return f=da(a),K(),l},c.is("input"))g=c;else if(g=c.find(d.datepickerInput),0===g.length)g=c.find("input");else if(!g.is("input"))throw new Error('CSS class "'+d.datepickerInput+'" cannot be applied to non input element');if(c.hasClass("input-group")&&(n=0===c.find(".datepickerbutton").length?c.find(".input-group-addon"):c.find(".datepickerbutton")),!d.inline&&!g.is("input"))throw new Error("Could not initialize DateTimePicker without an input element");return e=y(),f=e.clone(),a.extend(!0,d,H()),l.options(d),pa(),la(),g.prop("disabled")&&l.disable(),g.is("input")&&0!==g.val().trim().length?aa(da(g.val().trim())):d.defaultDate&&void 0===g.attr("placeholder")&&aa(d.defaultDate),d.inline&&ga(),l};return a.fn.factoryBootstrap421_DatetimePickerControl=function(b){b=b||{};var d,e=Array.prototype.slice.call(arguments,1),f=!0,g=["destroy","hide","show","toggle"];if("object"==typeof b)return this.each(function(){var d,e=a(this);e.data("DateTimePicker")||(d=a.extend(!0,{},a.fn.factoryBootstrap421_DatetimePickerControl.defaults,b),e.data("DateTimePicker",c(e,d)))});if("string"==typeof b)return this.each(function(){var c=a(this),g=c.data("DateTimePicker");if(!g)throw new Error('bootstrap-datetimepicker("'+b+'") method was called on an element that is not using DateTimePicker');d=g[b].apply(g,e),f=d===g}),f||a.inArray(b,g)>-1?this:d;throw new TypeError("Invalid arguments for DateTimePicker: "+b)},a.fn.factoryBootstrap421_DatetimePickerControl.defaults={timeZone:"",format:!1,dayViewHeaderFormat:"MMMM YYYY",extraFormats:!1,stepping:1,minDate:!1,maxDate:!1,useCurrent:!0,collapse:!0,locale:b.locale(),defaultDate:!1,disabledDates:!1,enabledDates:!1,icons:{time:"fa fa-clock-o",date:"fa fa-calendar",up:"fa fa-arrow-up",down:"fa fa-arrow-down",previous:"fa fa-arrow-left",next:"fa fa-arrow-right",today:"fa fa-thumb-tack",clear:"fa fa-trash",close:"fa fa-times"},tooltips:{today:"Go to today",clear:"Clear selection",close:"Close the picker",selectMonth:"Select Month",prevMonth:"Previous Month",nextMonth:"Next Month",selectYear:"Select Year",prevYear:"Previous Year",nextYear:"Next Year",selectDecade:"Select Decade",prevDecade:"Previous Decade",nextDecade:"Next Decade",prevCentury:"Previous Century",nextCentury:"Next Century",pickHour:"Pick Hour",incrementHour:"Increment Hour",decrementHour:"Decrement Hour",pickMinute:"Pick Minute",incrementMinute:"Increment Minute",decrementMinute:"Decrement Minute",pickSecond:"Pick Second",incrementSecond:"Increment Second",decrementSecond:"Decrement Second",togglePeriod:"Toggle Period",selectTime:"Select Time"},useStrict:!1,sideBySide:!1,daysOfWeekDisabled:!1,calendarWeeks:!1,viewMode:"days",toolbarPlacement:"default",showTodayButton:!1,showClear:!1,showClose:!1,widgetPositioning:{horizontal:"auto",vertical:"auto"},widgetParent:null,ignoreReadonly:!1,keepOpen:!1,focusOnShow:!0,inline:!1,keepInvalid:!1,datepickerInput:".datepickerinput",keyBinds:{up:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(7,"d")):this.date(b.clone().add(this.stepping(),"m"))}},down:function(a){if(!a)return void this.show();var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(7,"d")):this.date(b.clone().subtract(this.stepping(),"m"))},"control up":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(1,"y")):this.date(b.clone().add(1,"h"))}},"control down":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(1,"y")):this.date(b.clone().subtract(1,"h"))}},left:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"d"))}},right:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"d"))}},pageUp:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"M"))}},pageDown:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"M"))}},enter:function(){this.hide()},escape:function(){this.hide()},"control space":function(a){a&&a.find(".timepicker").is(":visible")&&a.find('.btn[data-action="togglePeriod"]').click()},t:function(){this.date(this.getMoment())},"delete":function(){this.clear()}},debug:!1,allowInputToggle:!1,disabledTimeIntervals:!1,disabledHours:!1,enabledHours:!1,viewDate:!1},a.fn.factoryBootstrap421_DatetimePickerControl}),function(a){a(function(){a(".factory-bootstrap-421 .factory-datetimepicker").factoryBootstrap421_DatetimePickerControl(),a(".factory-bootstrap-421 .factory-datetimepicker-range-0").factoryBootstrap421_DatetimePickerControl(),a(".factory-bootstrap-421 .factory-datetimepicker-range-1").factoryBootstrap421_DatetimePickerControl({useCurrent:!1}),a(".factory-bootstrap-421 .factory-datetimepicker-range-0").on("dp.change",function(b){a(".factory-bootstrap-421 .factory-datetimepicker-range-1").data("DateTimePicker").minDate(b.date)}),a(".factory-bootstrap-421 .factory-datetimepicker-range-1").on("dp.change",function(b){a(".factory-bootstrap-421 .factory-datetimepicker-range-0").data("DateTimePicker").maxDate(b.date)})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/bootstrap.dropdown.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=factory-dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}},a.fn.factoryBootstrap421_dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new f(this)),"string"==typeof b&&d[b].call(c)})},a.fn.factoryBootstrap421_dropdown.Constructor=f,a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu]",f.prototype.keydown)}(jQuery);
|
libs/factory/bootstrap/assets/js-min/bootstrap.modal.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="factory-bootstrap-421-modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.factoryBootstrap421_modal;a.fn.factoryBootstrap421_modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.factoryBootstrap421_modal.Constructor=b,a.fn.factoryBootstrap421_modal.noConflict=function(){return a.fn.factoryBootstrap421_modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="factory-modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("factory-modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.factoryBootstrap421_modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/bootstrap.popover.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
+function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");b.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(jQuery);
|
libs/factory/bootstrap/assets/js-min/bootstrap.scrollspy.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(a(c).is("body")?window:c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/bootstrap.tab.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/bootstrap.tooltip.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focus",i="hover"==g?"mouseleave":"blur";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this.tip();this.setContent(),this.options.animation&&c.addClass("fade");var d="function"==typeof this.options.placement?this.options.placement.call(this,c[0],this.$element[0]):this.options.placement,e=/\s?auto?\s?/i,f=e.test(d);f&&(d=d.replace(e,"")||"top"),c.detach().css({top:0,left:0,display:"block"}).addClass(d),this.options.container?c.appendTo(this.options.container):c.insertAfter(this.$element);var g=this.getPosition(),h=c[0].offsetWidth,i=c[0].offsetHeight;if(f){var j=this.$element.parent(),k=d,l=document.documentElement.scrollTop||document.body.scrollTop,m="body"==this.options.container?window.innerWidth:j.outerWidth(),n="body"==this.options.container?window.innerHeight:j.outerHeight(),o="body"==this.options.container?0:j.offset().left;d="bottom"==d&&g.top+g.height+i-l>n?"top":"top"==d&&g.top-l-i<0?"bottom":"right"==d&&g.right+h>m?"left":"left"==d&&g.left-h<o?"right":d,c.removeClass(k).addClass(d)}var p=this.getCalculatedOffset(d,g,h,i);this.applyPlacement(p,d),this.$element.trigger("shown.bs."+this.type)}},b.prototype.applyPlacement=function(a,b){var c,d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),a.top=a.top+g,a.left=a.left+h,d.offset(a).addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;if("top"==b&&j!=f&&(c=!0,a.top=a.top+f-j),/bottom|top/.test(b)){var k=0;a.left<0&&(k=-2*a.left,a.left=0,d.offset(a),i=d[0].offsetWidth,j=d[0].offsetHeight),this.replaceArrow(k-e+i,i,"left")}else this.replaceArrow(j-f,j,"top");c&&d.offset(a)},b.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},b.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach()}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,b).emulateTransitionEnd(150):b(),this.$element.trigger("hidden.bs."+this.type),this)},b.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},b.prototype.hasContent=function(){return this.getTitle()},b.prototype.getPosition=function(){var b=this.$element[0];return a.extend({},"function"==typeof b.getBoundingClientRect?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},b.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},b.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},b.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},b.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},b.prototype.enable=function(){this.enabled=!0},b.prototype.disable=function(){this.enabled=!1},b.prototype.toggleEnabled=function(){this.enabled=!this.enabled},b.prototype.toggle=function(b){var c=b?a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type):this;c.tip().hasClass("in")?c.leave(c):c.enter(c)},b.prototype.destroy=function(){this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof c&&c;e||d.data("bs.tooltip",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this},a(function(){a('[data-toggle="factory-tooltip"]').tooltip({html:!0})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/bootstrap.transition.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()}),a(function(){a(function(){a.support.transition=b()})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.checkbox.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
!function(a){var b=function(b){var c=this;this.$element=a(b),this.$result=this.$element.find(".factory-result"),this.$on=this.$element.find(".factory-on"),this.$off=this.$element.find(".factory-off");var d=this.$element.is(".factory-tumbler"),e=this.$element.is(".factory-has-tumbler-hint"),f=this.$element.data("tumbler-function"),g=this.$element.data("tumbler-delay");g||(g=3e3),this.callByPath=function(a,b){for(var c=a.split("."),d=window,e=0;e<c.length;e++)d=d[c[e]];d.apply(d,b)},this.$on.click(function(){return c.$off.removeClass("active"),c.$on.addClass("active"),d?setTimeout(function(){c.$on.removeClass("active"),c.$off.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.attr("checked","checked"),c.$result.val(1),c.$result.trigger("change")),!1}),this.$off.click(function(){return c.$on.removeClass("active"),c.$off.addClass("active"),d?setTimeout(function(){c.$off.removeClass("active"),c.$on.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.removeAttr("checked"),c.$result.val(0),c.$result.trigger("change")),!1}),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){(void 0!==window.__factory_checkbox_control_events_off_data||void 0!==window.__factory_checkbox_control_events_on_data)&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.prop("checked"),f=window.__factory_checkbox_control_events_on_data[d],g=window.__factory_checkbox_control_events_off_data[d];if(f||g){var h,i;void 0===window.__factory_checkbox_control_detach_elements&&(window.__factory_checkbox_control_detach_elements={}),h=window.__factory_checkbox_control_detach_elements,i=e?f:g;for(var j in i)if(i.hasOwnProperty(j)){var k,l=i[j];a.isArray(l)||(k=c.hashCode(d+l));var m;switch(j){case"hide":"string"==typeof l&&a(l).hide(0);break;case"show":"string"==typeof l&&a(l).fadeIn(200);break;case"detach":"string"==typeof l&&a(l).each(function(b){h[k]||(h[k]={}),h[k][b]||(h[k][b]={}),h[k][b].recovery_contanier=a(this).parent(),h[k][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(h[k]){for(var n in h[k])h[k].hasOwnProperty(n)&&h[k][n].recovery_contanier&&h[k][n].element&&h[k][n].recovery_contanier.append(h[k][n].element);delete h[k]}break;case"removeClasses":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&l[m]&&a(m).removeClass(l[m]);break;case"addClasses":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&l[m]&&a(m).addClass(l[m]);break;case"setValue":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&void 0!==l[m]&&null!==l[m]&&(console.log(l[m]),a(m).val(l[m]))}}}},this.executeEvents(this.$result)};a.fn.factoryBootstrap421_checkboxControl=function(c){if("string"==typeof c){var d=a(this).data("factory.checkbox.control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.checkbox.control");d||c.data("factory.checkbox.control",d=new b(this))})},a.fn.factoryBootstrap421_checkboxControl.Constructor=b,a(function(){a(".factory-bootstrap-421 .factory-checkbox.factory-buttons-way").factoryBootstrap421_checkboxControl()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.color-and-opacity.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
!function(a,b){a(function(){a(function(){a(".factory-bootstrap-421 .factory-color-and-opacity").each(function(){var b=a(this),c=b.find(".factory-color"),d=b.find(".factory-integer");d.change(function(){var a=d.find(".factory-result").val()/100;c.find(".factory-background").css("opacity",a)}),d.change(),d.on("click.color.factory",function(a){a.stopPropagation()})})})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.color.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
!function(a){a.widget("factoryBootstrap421.colorControl",{_create:function(){this.$element=this.element,this.$picker=this.$element.find(".factory-color-hex"),this.$preview=this.$element.find(".factory-preview"),this.$background=this.$element.find(".factory-background"),this._init()},_init:function(b){var c=this,d={width:216,palettes:["#16a086","#27ae61","#2a80b9","#8f44ad","#2d3e50","#f49c14","#c1392b","#bec3c7"],hide:!0,change:function(a,b){c.$background.css({background:b.color.toString()}),c.$element.trigger("change.color.factory",[b.color.toString()]),c.$element.trigger("updated.color.factory",[b.color.toString()])}},e=this.$element.data("picker-target");e&&(d.target=a(e)),this.$picker.factoryBootstrap421_iris(d),this.$picker.off("focus"),a(document).on("click.color.factory",function(){c.$picker.factoryBootstrap421_iris("hide")}),this.$picker.add(this.$background).on("click.color.factory",function(a){a.stopPropagation(),c.$picker.factoryBootstrap421_iris("show")})},togglePicker:function(){this.$element.hasClass("factory-picker-active")?this.hidePicker():this.showPicker()},hidePicker:function(){this.$element.removeClass("factory-picker-active"),this.$picker.factoryBootstrap421_iris("hide")},showPicker:function(){this.$element.addClass("factory-picker-active"),this.$picker.factoryBootstrap421_iris("show")},getValue:function(){return this.$picker.val()},setValue:function(a,b){this.$picker.val(a),b&&self.$picker.trigger("change")}}),a(function(){a.widget.bridge("factoryBootstrap421_colorControl",a.factoryBootstrap421.colorControl),a(".factory-bootstrap-421 .factory-color").factoryBootstrap421_colorControl({})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.dropdown-and-colors.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
!function(a){var b=function(b){var c=a(b),d=c.find(".factory-colors-inner-wrap");c.find("select").change(function(){var b=c.find("select option:selected"),e=b.data("colors"),f=d.data("radio-name");if(f&&e){d.html("");for(var g=0;g<e.length;g++){var h=e[g],i=a('<span class="factory-form-radio-item"><label class="factory-from-radio-label"><input type="radio" name="'+f+'" class="factory-radio-color" value="'+h[0]+'" checked="checked"><span style="background-color:'+h[1]+'"></span></label></span>');d.append(i)}}})};a.fn.factoryBootstrap421_dropdownAndColors=function(c){if("string"==typeof c){var d=a(this).data("factory.dropdownAndColors.control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.dropdownAndColors.control");d||c.data("factory.dropdownAndColors.control",d=new b(this))})},a.fn.factoryBootstrap421_dropdownAndColors.Constructor=b,a(function(){a(".factory-bootstrap-421 .factory-dropdown-and-colors").factoryBootstrap421_dropdownAndColors()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.dropdown.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
!function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name")||this.$element.attr("name"),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){void 0!==window.factory_dropdown_control_events_data&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.val(),f=window.factory_dropdown_control_events_data[d];if(f&&f[e]){var g;void 0===window.__factory_dropdown_control_detach_elements&&(window.__factory_dropdown_control_detach_elements={}),g=window.__factory_dropdown_control_detach_elements;for(var h in f[e])if(f[e].hasOwnProperty(h)){var i,j=f[e][h];switch(a.isArray(j)||(i=c.hashCode(d+j)),h){case"hide":"string"==typeof j&&a(j).hide(0);break;case"show":"string"==typeof j&&a(j).fadeIn(200);break;case"detach":"string"==typeof j&&a(j).each(function(b){g[i]||(g[i]={}),g[i][b]||(g[i][b]={}),g[i][b].recovery_contanier=a(this).parent(),g[i][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(g[i]){for(var k in g[i])g[i].hasOwnProperty(k)&&g[i][k].recovery_contanier&&g[i][k].element&&g[i][k].recovery_contanier.append(g[i][k].element);delete g[i]}break;case"removeClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).removeClass(j[l]);break;case"addClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).addClass(j[l])}}}},"buttons"===this.way)this.$result=this.$element.find(".factory-result"),this.$hints=this.$element.find(".factory-hints"),this.$buttons=this.$element.find(".btn"),c.executeEvents(this.$result),this.$buttons.click(function(){var b=a(this).data("value");return c.$buttons.removeClass("active"),a(this).addClass("active"),c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+b).fadeIn(),c.$result.val(b),c.$result.trigger("change"),!1});else if("ddslick"===this.way){c.executeEvents(c.$element.find(".factory-result"));var d=window["factory_"+this.name+"_data"],e=this.$element.find(".factory-ddslick"),f=this.$element.data("width")||300,g=this.$element.data("align")||"right";a(d).each(function(){return this.imageHoverSrc?void(a("<img/>")[0].src=this.imageHoverSrc):!0}),e.ddslick({data:d,width:f,imagePosition:g,selectText:"- select -",onSelected:function(a){a.selectedData.imageHoverSrc&&c.$element.find(".dd-selected-image").attr("src",a.selectedData.imageHoverSrc);var b=c.$element.find(".factory-result").val(a.selectedData.value);b.change()}})}else{c.executeEvents(this.$element),this.$hints=this.$element.next(),this.$hints.hasClass("factory-hints")&&(this.$element.change(function(){return c.updateHints(),!1}),this.updateHints=function(){var a=c.$element.val();c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+a).show()},c.updateHints()),this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(a){console&&console.log&&console.log(a.responseText),c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length)for(var d in a){var e=a[d];c.addListItem(e)}else this.$element.append("<option>"+b.emptyList+"</li>");this.$element.trigger("factory-loaded")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<option />").attr("value",b.value).text(b.title).appendTo(this.$element),e=c.getAjaxData();e.selected&&e.selected==b.value&&d.attr("selected","selected")},this.showError=function(b){this.clearList();var d=a("<div class='factory-control-error'></div>").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),e=c.getAjaxData();this.$element.append("<option>"+e.emptyList+"</li>"),this.$element.after(d),this.$element.addClass("factory-has-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var h=this.$element.data("ajax");h&&this.loadData()}};a.fn.factoryBootstrap421_dropdownControl=function(c){if("string"==typeof c){var d=a(this).data("factory.dropdown.control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.dropdown.control");d||c.data("factory.dropdown.control",d=new b(this))})},a.fn.factoryBootstrap421_dropdownControl.Constructor=b,a(function(){a(".factory-bootstrap-421 .factory-dropdown").factoryBootstrap421_dropdownControl()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.fonts.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
!function(a){a.widget("factoryBootstrap421.fontControl",{_create:function(){this.$element=this.element,this.$family=this.$element.find(".factory-family-wrap select"),this.$googleFontData=this.$element.find(".factory-google-font-data"),this.fontSelectorName=this.$family.attr("name"),this.googleFontsOptions={frameName:this.element.data("google-fonts-frame-name")},this.googleFontsOptions.frameName||(this.googleFontsOptions.frameName="preview"),this._initUI(),this._bindEvents()},_initUI:function(){this.$family.chosen()},_bindEvents:function(){var a=this;this.$family.change(function(b){var c=a._getCurrentOption(),d=c.data("google-font");if(d){var e=c.data("family"),f=c.data("variants").split(","),g=c.data("subsets").split(",");a._loadGoogleFont(e,f,g)}else a.$googleFontData.val("")})},_getCurrentOption:function(){var a=this.$family.val();return this._getOptionByValue(a)},_getOptionByValue:function(a){var b=this.$family.find("option[value='"+a+"']");return b},_loadGoogleFont:function(b,c,d){var c=this._filterGoogleFontVariantsBeforeLoading(b,c,d),d=this._filterGoogleFontSubsetsBeforeLoading(b,c,d);this.$googleFontData.val(this._encode64(JSON.stringify({name:b,styles:c,subsets:d})));var e=this._getTargetToLoadGoogleFont(),f=this.fontSelectorName+"-font-loader",g=e.find("#"+f);e.find("#"+f).length>0&&g.remove();var h="http://fonts.googleapis.com/css";c&&c.length&&(b=b+":"+c.join(",")),h=h+"?family="+b,d&&d.length&&(h=h+"&subset="+d.join(",")),a('<link id="'+f+'" rel="stylesheet" type="text/css" href="'+h+'" >').appendTo(e)},_filterGoogleFontVariantsBeforeLoading:function(b,c,d){var e=this;return a(document).trigger("factory-filter-google-font-variants",[c,e.$element,b,d]),c},_filterGoogleFontSubsetsBeforeLoading:function(b,c,d){var e=this;return a(document).trigger("factory-filter-google-font-subsets",[d,e.$element,c,d]),d},_getTargetToLoadGoogleFont:function(){var b=this.googleFontsOptions.frameName,c=a("head");if(b){var d=a('iframe[name="'+b+'"]');if(0===d.length)return console.error("The preview container not found.");c=d.contents().find("head")}return c},_base64KeyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",_encode64:function(a){a=escape(a);var b,c,d,e,f,g="",h="",i="",j=0;do b=a.charCodeAt(j++),c=a.charCodeAt(j++),h=a.charCodeAt(j++),d=b>>2,e=(3&b)<<4|c>>4,f=(15&c)<<2|h>>6,i=63&h,isNaN(c)?f=i=64:isNaN(h)&&(i=64),g=g+this._base64KeyStr.charAt(d)+this._base64KeyStr.charAt(e)+this._base64KeyStr.charAt(f)+this._base64KeyStr.charAt(i),b=c=h="",d=e=f=i="";while(j<a.length);return g}}),a(function(){a.widget.bridge("factoryBootstrap421_fontControl",a.factoryBootstrap421.fontControl),a(".factory-bootstrap-421 .factory-font").factoryBootstrap421_fontControl({})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.gradient.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
!function(a){var b=function(b){this.$element=a(b),this.$picker=this.$element.find(".factory-gradient-picker"),this.$result=this.$element.find(".factory-result"),this.init()};b.prototype.init=function(){var a=this,b=this.$element.data("directions"),c=this.$element.data("points"),d=c?c.split(","):[];this.$picker.gradientPicker({change:function(b,c){a.$result.val(c).trigger("keyup")},fillDirection:b,controlPoints:d})},a.fn.factoryBootstrap421_gradientControl=function(c){return this.each(function(){var d=a(this),e=d.data("factory.gradient-control");e||d.data("factory.gradient-control",e=new b(this)),"string"==typeof c&&e[c].call(e)})},a.fn.factoryBootstrap421_gradientControl.Constructor=b,a(function(){a(".factory-bootstrap-421 .factory-gradient").factoryBootstrap421_gradientControl()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.integer.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
!function(a){var b=function(b){this.$element=a(b),this.$element.hasClass("factory-has-slider")&&this.createSlider()};b.prototype.createSlider=function(){var a=this,b=this.$element.find(".factory-slider-container");this.$bar=b.find(".factory-bar"),this.$result=b.find(".factory-result"),this.$visibleValue=b.find(".factory-visible-value"),this.units=b.data("units"),this.rangeStart=b.data("range-start"),this.rangeEnd=b.data("range-end"),this.step=b.data("step"),this.step||(this.step=1);var c=this.$result.val();this.$bar.noUiSlider({start:parseInt(c),range:{min:a.rangeStart,max:a.rangeEnd},connect:"lower",step:a.step}),this.$bar.on("slide set",function(){a.setValue(parseInt(a.$bar.val()))})},b.prototype.setValue=function(a,b){this.$result.val(a),this.$visibleValue.length>0&&(this.units?this.$visibleValue.text(a+this.units):this.$visibleValue.text(a)),b&&this.$bar.noUiSlider({start:a},!0),this.$result.trigger("keyup"),this.$element.trigger("change")},b.prototype.getValue=function(){return this.$result.val()},b.prototype.api=function(){return this},a.fn.factoryBootstrap421_integerControl=function(c){if("string"==typeof c){var d=a(this).data("factory.integer-control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.integer-control");d||c.data("factory.integer-control",d=new b(this))})},a.fn.factoryBootstrap421_integerControl.Constructor=b,a(function(){a(".factory-bootstrap-421 .factory-integer").factoryBootstrap421_integerControl()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.list.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
!function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name"),"checklist"===this.way){this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(){c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length){this.$element.removeClass("factory-empty");for(var d in a){var e=a[d];c.addListItem(e)}}else this.$element.addClass("factory-empty"),this.$element.append("<li>"+b.emptyList+"</li>")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<li>"),e=a("<label>").attr("for","factory-checklist-"+c.name+"-"+b.value).appendTo(d),f=a("<span>").appendTo(e),g=a("<input />").attr("type","checkbox").attr("name",c.name+"[]").val(b.value).attr("id","factory-checklist-"+c.name+"-"+b.value).appendTo(f),h=(a("<span>"+b.title+"</span>").appendTo(e),c.getAjaxData());h.selected.length&&a.inArray(b.value,h.selected)>=0&&g.attr("checked","checked"),this.$element.append(d)},this.showError=function(b){this.$element.html("").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),this.$element.addClass("factory-list-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var d=this.$element.data("ajax");d&&this.loadData()}};a.fn.factoryBootstrap421_listControl=function(c){if("string"==typeof c){var d=a(this).data("factory.list.control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.list.control");d||c.data("factory.list.control",d=new b(this))})},a.fn.factoryBootstrap421_listControl.Constructor=b,a(function(){a(".factory-bootstrap-421 .factory-list").factoryBootstrap421_listControl()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.multiple-textbox.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
!function(a){"use strict";var b=function(b){this.$element=a(b);var c=a(".factory-mtextbox-item",this.$element).eq(0).clone(!0);a(".factory-mtextbox-add-item",this.$element).on("click",function(){var b=a(this).closest(".factory-multiple-textbox-group").find(".factory-mtextbox-items"),d=c.clone(!0),e=a('<button class="btn btn-default btn-small factory-mtextbox-remove-item"><i class="fa fa-times" aria-hidden="true"></i></button>');return b.append(d.append(e)),d.find('input[type="text"]').val("").focus(),!1}),a(document).on("click",".factory-mtextbox-remove-item",function(){return a(this).closest(".factory-mtextbox-item").remove(),!1})};a.fn.factoryBootstrap421_MultipleTextboxControl=function(){return this.each(function(){new b(this)})},a(function(){a(".factory-bootstrap-421 .factory-multiple-textbox-group").factoryBootstrap421_MultipleTextboxControl()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.pattern.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
!function(a){a.widget("factoryBootstrap421.patternControl",{_create:function(){this.$element=this.element,this.$preview=this.$element.find(".factory-preview"),this.$patternResult=this.$element.find(".factory-pattern-result"),this.$colorResult=this.$element.find(".factory-color-result"),this.$patterns=this.$element.find(".factory-patterns-panel"),this.$patternItems=this.$element.find(".factory-patterns-item"),this.$btnUpload=this.$element.find(".factory-upload-btn"),this.$btnChangeColor=this.$element.find(".factory-change-color-btn"),this.$colorPanel=this.$element.find(".factory-color-panel"),this.$colorContol=this.$element.find(".factory-color"),this._initMainPanel(),this._initColorPickerPanel(),this._initPatternsPanel()},_initMainPanel:function(){var a=this;this.$preview.on("click",function(){return a.togglePatternsPanel(),!1}),this.$btnChangeColor.on("click",function(){return a.toggleColorPanel(),!1})},togglePatternsPanel:function(){this.$element.hasClass("factory-patterns-panel-active")?this.hidePatternsPanel():this.showPatternsPanel()},hidePatternsPanel:function(){this.$element.removeClass("factory-patterns-panel-active")},showPatternsPanel:function(){this.$element.addClass("factory-patterns-panel-active")},hasColor:function(){return this.$element.hasClass("factory-color-panel-active")},toggleColorPanel:function(){this.hasColor()?this.hideColorPanel():this.showColorPanel()},hideColorPanel:function(){this.$element.removeClass("factory-color-panel-active"),this.$btnChangeColor.removeClass("button-active"),this.$colorResult.val(""),this.$colorResult.trigger("change"),this.$element.trigger("change")},showColorPanel:function(){this.$element.addClass("factory-color-panel-active"),this.$btnChangeColor.addClass("button-active"),this.$colorResult.val(this.$colorContol.factoryBootstrap421_colorControl("getValue")),this.$colorResult.trigger("change"),this.$element.trigger("change")},_initColorPickerPanel:function(){var a=this;this.$colorContol.bind("updated.color.factory",function(b,c){return a.$colorResult.val(c),!1})},_initPatternsPanel:function(){var b=this,c=!0,d=wp.media.editor.send.attachment;this.$btnUpload.on("click",function(){return c=!0,wp.media.editor.send.attachment=function(a,e){return c?(b.$preview.css({background:"url("+e.url+") repeat",border:"0",fontSize:"0"}),void b.$patternResult.attr("value",e.url).trigger("change")):d.apply(this,[a,e])},wp.media.editor.open(b.$btnUpload),a(".add_media").on("click",function(){c=!1}),!1}),this.$patternItems.on("click",function(){if(a(this).data("pattern")){var c=a(this).data("pattern");b.$preview.removeClass("factory-empty"),b.$preview.css({background:"url("+c+") repeat"}),b.$patternResult.attr("value",c).trigger("change")}})}}),a(function(){a.widget.bridge("factoryBootstrap421_patternControl",a.factoryBootstrap421.patternControl),a(".factory-bootstrap-421 .factory-pattern").factoryBootstrap421_patternControl({})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/global.color-functions.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
function hexToRgb(a){var b=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;a=a.replace(b,function(a,b,c,d){return b+b+c+c+d+d});var c=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);return c?{r:parseInt(c[1],16),g:parseInt(c[2],16),b:parseInt(c[3],16)}:null}function rgb2hex(a){return a=a.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/),"#"+("0"+parseInt(a[1],10).toString(16)).slice(-2)+("0"+parseInt(a[2],10).toString(16)).slice(-2)+("0"+parseInt(a[3],10).toString(16)).slice(-2)}
|
libs/factory/bootstrap/assets/js-min/holder.conrol-group.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
!function(a){a(document).ready(function(){a(".factory-control-group-nav-label").on("click",function(){var b=a(this).parents(".factory-control-group");return a(this).hasClass("active")||(a(".factory-control-group-nav-label",b).add(".factory-control-group-item",b).removeClass("current"),a(".factory-control-is-active",b).val(0),a(this).add(a("."+a(this).data("control-id"),b)).addClass("current"),b.children('input[type="hidden"]').val(a(this).data("control-name")).trigger("change"),a(".factory-control-is-active",a("."+a(this).data("control-id"),b)).val(1)),!1})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/holder.more-link.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
!function(a,b,c,d){"use strict";var e="factoryBootstrap421_moreLink";a.fn[e]=function(b,c){return this.each(function(){var b=a(this);b.find(".factory-more-link-show").click(function(){return a(a(this).attr("href")).fadeIn(),a(this).hide(),!1}),b.find(".factory-more-link-hide").click(function(){var b=a(a(this).attr("href"));return b.fadeOut(300,function(){b.parents(".factory-more-link").find(".factory-more-link-show").show()}),!1})})},a(function(){a(".factory-bootstrap-421 .factory-more-link").factoryBootstrap421_moreLink()})}(jQuery,window,document);
|
libs/factory/bootstrap/assets/js-min/plugin.chosen.min.js
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
/*!
|
11 |
+
Chosen, a Select Box Enhancer for jQuery and Prototype
|
12 |
+
by Patrick Filler for Harvest, http://getharvest.com
|
13 |
+
|
14 |
+
Version 1.1.0
|
15 |
+
Full source at https://github.com/harvesthq/chosen
|
16 |
+
Copyright (c) 2011 Harvest http://getharvest.com
|
17 |
+
|
18 |
+
MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
|
19 |
+
This file is generated by `grunt build`, do not edit it by hand.
|
20 |
+
*/
|
21 |
+
(function(){var a,b,c,d,e,f={}.hasOwnProperty,g=function(a,b){function c(){this.constructor=a}for(var d in b)f.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};d=function(){function a(){this.options_index=0,this.parsed=[]}return a.prototype.add_node=function(a){return"OPTGROUP"===a.nodeName.toUpperCase()?this.add_group(a):this.add_option(a)},a.prototype.add_group=function(a){var b,c,d,e,f,g;for(b=this.parsed.length,this.parsed.push({array_index:b,group:!0,label:this.escapeExpression(a.label),children:0,disabled:a.disabled}),f=a.childNodes,g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(this.add_option(c,b,a.disabled));return g},a.prototype.add_option=function(a,b,c){return"OPTION"===a.nodeName.toUpperCase()?(""!==a.text?(null!=b&&(this.parsed[b].children+=1),this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,value:a.value,text:a.text,html:a.innerHTML,selected:a.selected,disabled:c===!0?c:a.disabled,group_array_index:b,classes:a.className,style:a.style.cssText})):this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,empty:!0}),this.options_index+=1):void 0},a.prototype.escapeExpression=function(a){var b,c;return null==a||a===!1?"":/[\&\<\>\"\'\`]/.test(a)?(b={"<":"<",">":">",'"':""","'":"'","`":"`"},c=/&(?!\w+;)|[\<\>\"\'\`]/g,a.replace(c,function(a){return b[a]||"&"})):a},a}(),d.select_to_array=function(a){var b,c,e,f,g;for(c=new d,g=a.childNodes,e=0,f=g.length;f>e;e++)b=g[e],c.add_node(b);return c.parsed},b=function(){function a(b,c){this.form_field=b,this.options=null!=c?c:{},a.browser_is_supported()&&(this.is_multiple=this.form_field.multiple,this.set_default_text(),this.set_default_values(),this.setup(),this.set_up_html(),this.register_observers())}return a.prototype.set_default_values=function(){var a=this;return this.click_test_action=function(b){return a.test_active_click(b)},this.activate_action=function(b){return a.activate_field(b)},this.active_field=!1,this.mouse_on_container=!1,this.results_showing=!1,this.result_highlighted=null,this.allow_single_deselect=null!=this.options.allow_single_deselect&&null!=this.form_field.options[0]&&""===this.form_field.options[0].text?this.options.allow_single_deselect:!1,this.disable_search_threshold=this.options.disable_search_threshold||0,this.disable_search=this.options.disable_search||!1,this.enable_split_word_search=null!=this.options.enable_split_word_search?this.options.enable_split_word_search:!0,this.group_search=null!=this.options.group_search?this.options.group_search:!0,this.search_contains=this.options.search_contains||!1,this.single_backstroke_delete=null!=this.options.single_backstroke_delete?this.options.single_backstroke_delete:!0,this.max_selected_options=this.options.max_selected_options||1/0,this.inherit_select_classes=this.options.inherit_select_classes||!1,this.display_selected_options=null!=this.options.display_selected_options?this.options.display_selected_options:!0,this.display_disabled_options=null!=this.options.display_disabled_options?this.options.display_disabled_options:!0},a.prototype.set_default_text=function(){return this.form_field.getAttribute("data-placeholder")?this.default_text=this.form_field.getAttribute("data-placeholder"):this.is_multiple?this.default_text=this.options.placeholder_text_multiple||this.options.placeholder_text||a.default_multiple_text:this.default_text=this.options.placeholder_text_single||this.options.placeholder_text||a.default_single_text,this.results_none_found=this.form_field.getAttribute("data-no_results_text")||this.options.no_results_text||a.default_no_result_text},a.prototype.mouse_enter=function(){return this.mouse_on_container=!0},a.prototype.mouse_leave=function(){return this.mouse_on_container=!1},a.prototype.input_focus=function(a){var b=this;if(this.is_multiple){if(!this.active_field)return setTimeout(function(){return b.container_mousedown()},50)}else if(!this.active_field)return this.activate_field()},a.prototype.input_blur=function(a){var b=this;return this.mouse_on_container?void 0:(this.active_field=!1,setTimeout(function(){return b.blur_test()},100))},a.prototype.results_option_build=function(a){var b,c,d,e,f;for(b="",f=this.results_data,d=0,e=f.length;e>d;d++)c=f[d],b+=c.group?this.result_add_group(c):this.result_add_option(c),(null!=a?a.first:void 0)&&(c.selected&&this.is_multiple?this.choice_build(c):c.selected&&!this.is_multiple&&this.single_set_selected_text(c.text));return b},a.prototype.result_add_option=function(a){var b,c;return a.search_match&&this.include_option_in_results(a)?(b=[],a.disabled||a.selected&&this.is_multiple||b.push("active-result"),!a.disabled||a.selected&&this.is_multiple||b.push("disabled-result"),a.selected&&b.push("result-selected"),null!=a.group_array_index&&b.push("group-option"),""!==a.classes&&b.push(a.classes),c=document.createElement("li"),c.className=b.join(" "),c.style.cssText=a.style,c.setAttribute("data-option-array-index",a.array_index),c.innerHTML=a.search_text,this.outerHTML(c)):""},a.prototype.result_add_group=function(a){var b;return(a.search_match||a.group_match)&&a.active_options>0?(b=document.createElement("li"),b.className="group-result",b.innerHTML=a.search_text,this.outerHTML(b)):""},a.prototype.results_update_field=function(){return this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing?this.winnow_results():void 0},a.prototype.reset_single_select_options=function(){var a,b,c,d,e;for(d=this.results_data,e=[],b=0,c=d.length;c>b;b++)a=d[b],a.selected?e.push(a.selected=!1):e.push(void 0);return e},a.prototype.results_toggle=function(){return this.results_showing?this.results_hide():this.results_show()},a.prototype.results_search=function(a){return this.results_showing?this.winnow_results():this.results_show()},a.prototype.winnow_results=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m;for(this.no_results_clear(),e=0,g=this.get_search_text(),a=g.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),d=this.search_contains?"":"^",c=new RegExp(d+a,"i"),j=new RegExp(a,"i"),m=this.results_data,k=0,l=m.length;l>k;k++)b=m[k],b.search_match=!1,f=null,this.include_option_in_results(b)&&(b.group&&(b.group_match=!1,b.active_options=0),null!=b.group_array_index&&this.results_data[b.group_array_index]&&(f=this.results_data[b.group_array_index],0===f.active_options&&f.search_match&&(e+=1),f.active_options+=1),(!b.group||this.group_search)&&(b.search_text=b.group?b.label:b.html,b.search_match=this.search_string_match(b.search_text,c),b.search_match&&!b.group&&(e+=1),b.search_match?(g.length&&(h=b.search_text.search(j),i=b.search_text.substr(0,h+g.length)+"</em>"+b.search_text.substr(h+g.length),b.search_text=i.substr(0,h)+"<em>"+i.substr(h)),null!=f&&(f.group_match=!0)):null!=b.group_array_index&&this.results_data[b.group_array_index].search_match&&(b.search_match=!0)));return this.result_clear_highlight(),1>e&&g.length?(this.update_results_content(""),this.no_results(g)):(this.update_results_content(this.results_option_build()),this.winnow_results_set_highlight())},a.prototype.search_string_match=function(a,b){var c,d,e,f;if(b.test(a))return!0;if(this.enable_split_word_search&&(a.indexOf(" ")>=0||0===a.indexOf("["))&&(d=a.replace(/\[|\]/g,"").split(" "),d.length))for(e=0,f=d.length;f>e;e++)if(c=d[e],b.test(c))return!0},a.prototype.choices_count=function(){var a,b,c,d;if(null!=this.selected_option_count)return this.selected_option_count;for(this.selected_option_count=0,d=this.form_field.options,b=0,c=d.length;c>b;b++)a=d[b],a.selected&&(this.selected_option_count+=1);return this.selected_option_count},a.prototype.choices_click=function(a){return a.preventDefault(),this.results_showing||this.is_disabled?void 0:this.results_show()},a.prototype.keyup_checker=function(a){var b,c;switch(b=null!=(c=a.which)?c:a.keyCode,this.search_field_scale(),b){case 8:if(this.is_multiple&&this.backstroke_length<1&&this.choices_count()>0)return this.keydown_backstroke();if(!this.pending_backstroke)return this.result_clear_highlight(),this.results_search();break;case 13:if(a.preventDefault(),this.results_showing)return this.result_select(a);break;case 27:return this.results_showing&&this.results_hide(),!0;case 9:case 38:case 40:case 16:case 91:case 17:break;default:return this.results_search()}},a.prototype.clipboard_event_checker=function(a){var b=this;return setTimeout(function(){return b.results_search()},50)},a.prototype.container_width=function(){return null!=this.options.width?this.options.width:""+this.form_field.offsetWidth+"px"},a.prototype.include_option_in_results=function(a){return this.is_multiple&&!this.display_selected_options&&a.selected?!1:!this.display_disabled_options&&a.disabled?!1:a.empty?!1:!0},a.prototype.search_results_touchstart=function(a){return this.touch_started=!0,this.search_results_mouseover(a)},a.prototype.search_results_touchmove=function(a){return this.touch_started=!1,this.search_results_mouseout(a)},a.prototype.search_results_touchend=function(a){return this.touch_started?this.search_results_mouseup(a):void 0},a.prototype.outerHTML=function(a){var b;return a.outerHTML?a.outerHTML:(b=document.createElement("div"),b.appendChild(a),b.innerHTML)},a.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?document.documentMode>=8:/iP(od|hone)/i.test(window.navigator.userAgent)?!1:/Android/i.test(window.navigator.userAgent)&&/Mobile/i.test(window.navigator.userAgent)?!1:!0},a.default_multiple_text="Select Some Options",a.default_single_text="Select an Option",a.default_no_result_text="No results match",a}(),a=jQuery,a.fn.extend({chosen:function(d){return b.browser_is_supported()?this.each(function(b){var e,f;e=a(this),f=e.data("chosen"),"destroy"===d&&f?f.destroy():f||e.data("chosen",new c(this,d))}):this}}),c=function(b){function c(){return e=c.__super__.constructor.apply(this,arguments)}return g(c,b),c.prototype.setup=function(){return this.form_field_jq=a(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex,this.is_rtl=this.form_field_jq.hasClass("chosen-rtl")},c.prototype.set_up_html=function(){var b,c;return b=["chosen-container"],b.push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&b.push(this.form_field.className),this.is_rtl&&b.push("chosen-rtl"),c={"class":b.join(" "),style:"width: "+this.container_width()+";",title:this.form_field.title},this.form_field.id.length&&(c.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=a("<div />",c),this.is_multiple?this.container.html('<ul class="chosen-choices"><li class="search-field"><input type="text" value="'+this.default_text+'" class="default" autocomplete="off" style="width:25px;" /></li></ul><div class="chosen-drop"><ul class="chosen-results"></ul></div>'):this.container.html('<a class="chosen-single chosen-default" tabindex="-1"><span>'+this.default_text+'</span><div><b></b></div></a><div class="chosen-drop"><div class="chosen-search"><input type="text" autocomplete="off" /></div><ul class="chosen-results"></ul></div>'),this.form_field_jq.hide().after(this.container),this.dropdown=this.container.find("div.chosen-drop").first(),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chosen-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chosen-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chosen-search").first(),this.selected_item=this.container.find(".chosen-single").first()),this.results_build(),this.set_tab_index(),this.set_label_behavior(),this.form_field_jq.trigger("chosen:ready",{chosen:this})},c.prototype.register_observers=function(){var a=this;return this.container.bind("mousedown.chosen",function(b){a.container_mousedown(b)}),this.container.bind("mouseup.chosen",function(b){a.container_mouseup(b)}),this.container.bind("mouseenter.chosen",function(b){a.mouse_enter(b)}),this.container.bind("mouseleave.chosen",function(b){a.mouse_leave(b)}),this.search_results.bind("mouseup.chosen",function(b){a.search_results_mouseup(b)}),this.search_results.bind("mouseover.chosen",function(b){a.search_results_mouseover(b)}),this.search_results.bind("mouseout.chosen",function(b){a.search_results_mouseout(b)}),this.search_results.bind("mousewheel.chosen DOMMouseScroll.chosen",function(b){a.search_results_mousewheel(b)}),this.search_results.bind("touchstart.chosen",function(b){a.search_results_touchstart(b)}),this.search_results.bind("touchmove.chosen",function(b){a.search_results_touchmove(b)}),this.search_results.bind("touchend.chosen",function(b){a.search_results_touchend(b)}),this.form_field_jq.bind("chosen:updated.chosen",function(b){a.results_update_field(b)}),this.form_field_jq.bind("chosen:activate.chosen",function(b){a.activate_field(b)}),this.form_field_jq.bind("chosen:open.chosen",function(b){a.container_mousedown(b)}),this.form_field_jq.bind("chosen:close.chosen",function(b){a.input_blur(b)}),this.search_field.bind("blur.chosen",function(b){a.input_blur(b)}),this.search_field.bind("keyup.chosen",function(b){a.keyup_checker(b)}),this.search_field.bind("keydown.chosen",function(b){a.keydown_checker(b)}),this.search_field.bind("focus.chosen",function(b){a.input_focus(b)}),this.search_field.bind("cut.chosen",function(b){a.clipboard_event_checker(b)}),this.search_field.bind("paste.chosen",function(b){a.clipboard_event_checker(b)}),this.is_multiple?this.search_choices.bind("click.chosen",function(b){a.choices_click(b)}):this.container.bind("click.chosen",function(a){a.preventDefault()})},c.prototype.destroy=function(){return a(this.container[0].ownerDocument).unbind("click.chosen",this.click_test_action),this.search_field[0].tabIndex&&(this.form_field_jq[0].tabIndex=this.search_field[0].tabIndex),this.container.remove(),this.form_field_jq.removeData("chosen"),this.form_field_jq.show()},c.prototype.search_field_disabled=function(){return this.is_disabled=this.form_field_jq[0].disabled,this.is_disabled?(this.container.addClass("chosen-disabled"),this.search_field[0].disabled=!0,this.is_multiple||this.selected_item.unbind("focus.chosen",this.activate_action),this.close_field()):(this.container.removeClass("chosen-disabled"),this.search_field[0].disabled=!1,this.is_multiple?void 0:this.selected_item.bind("focus.chosen",this.activate_action))},c.prototype.container_mousedown=function(b){return this.is_disabled||(b&&"mousedown"===b.type&&!this.results_showing&&b.preventDefault(),null!=b&&a(b.target).hasClass("search-choice-close"))?void 0:(this.active_field?this.is_multiple||!b||a(b.target)[0]!==this.selected_item[0]&&!a(b.target).parents("a.chosen-single").length||(b.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),a(this.container[0].ownerDocument).bind("click.chosen",this.click_test_action),this.results_show()),this.activate_field())},c.prototype.container_mouseup=function(a){return"ABBR"!==a.target.nodeName||this.is_disabled?void 0:this.results_reset(a)},c.prototype.search_results_mousewheel=function(a){var b;return a.originalEvent&&(b=-a.originalEvent.wheelDelta||a.originalEvent.detail),null!=b?(a.preventDefault(),"DOMMouseScroll"===a.type&&(b=40*b),this.search_results.scrollTop(b+this.search_results.scrollTop())):void 0},c.prototype.blur_test=function(a){return!this.active_field&&this.container.hasClass("chosen-container-active")?this.close_field():void 0},c.prototype.close_field=function(){return a(this.container[0].ownerDocument).unbind("click.chosen",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass("chosen-container-active"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale()},c.prototype.activate_field=function(){return this.container.addClass("chosen-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val()),this.search_field.focus()},c.prototype.test_active_click=function(b){var c;return c=a(b.target).closest(".chosen-container"),c.length&&this.container[0]===c[0]?this.active_field=!0:this.close_field()},c.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=d.select_to_array(this.form_field),this.is_multiple?this.search_choices.find("li.search-choice").remove():this.is_multiple||(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?(this.search_field[0].readOnly=!0,this.container.addClass("chosen-container-single-nosearch")):(this.search_field[0].readOnly=!1,this.container.removeClass("chosen-container-single-nosearch"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},c.prototype.result_do_highlight=function(a){var b,c,d,e,f;if(a.length){if(this.result_clear_highlight(),this.result_highlight=a,this.result_highlight.addClass("highlighted"),d=parseInt(this.search_results.css("maxHeight"),10),f=this.search_results.scrollTop(),e=d+f,c=this.result_highlight.position().top+this.search_results.scrollTop(),b=c+this.result_highlight.outerHeight(),b>=e)return this.search_results.scrollTop(b-d>0?b-d:0);if(f>c)return this.search_results.scrollTop(c)}},c.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClass("highlighted"),this.result_highlight=null},c.prototype.results_show=function(){return this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.container.addClass("chosen-with-drop"),this.results_showing=!0,this.search_field.focus(),this.search_field.val(this.search_field.val()),this.winnow_results(),this.form_field_jq.trigger("chosen:showing_dropdown",{chosen:this}))},c.prototype.update_results_content=function(a){return this.search_results.html(a)},c.prototype.results_hide=function(){return this.results_showing&&(this.result_clear_highlight(),this.container.removeClass("chosen-with-drop"),this.form_field_jq.trigger("chosen:hiding_dropdown",{chosen:this})),this.results_showing=!1},c.prototype.set_tab_index=function(a){var b;return this.form_field.tabIndex?(b=this.form_field.tabIndex,this.form_field.tabIndex=-1,this.search_field[0].tabIndex=b):void 0},c.prototype.set_label_behavior=function(){var b=this;return this.form_field_label=this.form_field_jq.parents("label"),!this.form_field_label.length&&this.form_field.id.length&&(this.form_field_label=a("label[for='"+this.form_field.id+"']")),this.form_field_label.length>0?this.form_field_label.bind("click.chosen",function(a){return b.is_multiple?b.container_mousedown(a):b.activate_field()}):void 0},c.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass("default")):(this.search_field.val(""),this.search_field.removeClass("default"))},c.prototype.search_results_mouseup=function(b){var c;return c=a(b.target).hasClass("active-result")?a(b.target):a(b.target).parents(".active-result").first(),c.length?(this.result_highlight=c,this.result_select(b),this.search_field.focus()):void 0},c.prototype.search_results_mouseover=function(b){var c;return c=a(b.target).hasClass("active-result")?a(b.target):a(b.target).parents(".active-result").first(),c?this.result_do_highlight(c):void 0},c.prototype.search_results_mouseout=function(b){return a(b.target).hasClass("active-result")?this.result_clear_highlight():void 0},c.prototype.choice_build=function(b){var c,d,e=this;return c=a("<li />",{"class":"search-choice"}).html("<span>"+b.html+"</span>"),b.disabled?c.addClass("search-choice-disabled"):(d=a("<a />",{"class":"search-choice-close","data-option-array-index":b.array_index}),d.bind("click.chosen",function(a){return e.choice_destroy_link_click(a)}),c.append(d)),this.search_container.before(c)},c.prototype.choice_destroy_link_click=function(b){return b.preventDefault(),b.stopPropagation(),this.is_disabled?void 0:this.choice_destroy(a(b.target))},c.prototype.choice_destroy=function(a){return this.result_deselect(a[0].getAttribute("data-option-array-index"))?(this.show_search_field_default(),this.is_multiple&&this.choices_count()>0&&this.search_field.val().length<1&&this.results_hide(),a.parents("li").first().remove(),this.search_field_scale()):void 0},c.prototype.results_reset=function(){return this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.form_field_jq.trigger("change"),this.active_field?this.results_hide():void 0},c.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find("abbr").remove()},c.prototype.result_select=function(a){var b,c;return this.result_highlight?(b=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?b.removeClass("active-result"):this.reset_single_select_options(),c=this.results_data[b[0].getAttribute("data-option-array-index")],c.selected=!0,this.form_field.options[c.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(c):this.single_set_selected_text(c.text),(a.metaKey||a.ctrlKey)&&this.is_multiple||this.results_hide(),this.search_field.val(""),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.form_field_jq.trigger("change",{selected:this.form_field.options[c.options_index].value}),this.current_selectedIndex=this.form_field.selectedIndex,this.search_field_scale())):void 0},c.prototype.single_set_selected_text=function(a){return null==a&&(a=this.default_text),a===this.default_text?this.selected_item.addClass("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClass("chosen-default")),this.selected_item.find("span").text(a)},c.prototype.result_deselect=function(a){var b;return b=this.results_data[a],this.form_field.options[b.options_index].disabled?!1:(b.selected=!1,this.form_field.options[b.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.form_field_jq.trigger("change",{deselected:this.form_field.options[b.options_index].value}),this.search_field_scale(),!0)},c.prototype.single_deselect_control_build=function(){return this.allow_single_deselect?(this.selected_item.find("abbr").length||this.selected_item.find("span").first().after('<abbr class="search-choice-close"></abbr>'),this.selected_item.addClass("chosen-single-with-deselect")):void 0},c.prototype.get_search_text=function(){return this.search_field.val()===this.default_text?"":a("<div/>").text(a.trim(this.search_field.val())).html()},c.prototype.winnow_results_set_highlight=function(){var a,b;return b=this.is_multiple?[]:this.search_results.find(".result-selected.active-result"),a=b.length?b.first():this.search_results.find(".active-result").first(),null!=a?this.result_do_highlight(a):void 0},c.prototype.no_results=function(b){var c;return c=a('<li class="no-results">'+this.results_none_found+' "<span></span>"</li>'),c.find("span").first().html(b),this.search_results.append(c),this.form_field_jq.trigger("chosen:no_results",{chosen:this})},c.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},c.prototype.keydown_arrow=function(){var a;return this.results_showing&&this.result_highlight?(a=this.result_highlight.nextAll("li.active-result").first())?this.result_do_highlight(a):void 0:this.results_show()},c.prototype.keyup_arrow=function(){var a;return this.results_showing||this.is_multiple?this.result_highlight?(a=this.result_highlight.prevAll("li.active-result"),a.length?this.result_do_highlight(a.first()):(this.choices_count()>0&&this.results_hide(),this.result_clear_highlight())):void 0:this.results_show()},c.prototype.keydown_backstroke=function(){var a;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke()):(a=this.search_container.siblings("li.search-choice").last(),a.length&&!a.hasClass("search-choice-disabled")?(this.pending_backstroke=a,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass("search-choice-focus")):void 0)},c.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},c.prototype.keydown_checker=function(a){var b,c;switch(b=null!=(c=a.which)?c:a.keyCode,this.search_field_scale(),8!==b&&this.pending_backstroke&&this.clear_backstroke(),b){case 8:this.backstroke_length=this.search_field.val().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(a),this.mouse_on_container=!1;break;case 13:a.preventDefault();break;case 38:a.preventDefault(),this.keyup_arrow();break;case 40:a.preventDefault(),this.keydown_arrow()}},c.prototype.search_field_scale=function(){var b,c,d,e,f,g,h,i,j;if(this.is_multiple){for(d=0,h=0,f="position:absolute; left: -1000px; top: -1000px; display:none;",g=["font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"],i=0,j=g.length;j>i;i++)e=g[i],f+=e+":"+this.search_field.css(e)+";";return b=a("<div />",{style:f}),b.text(this.search_field.val()),a("body").append(b),h=b.width()+25,b.remove(),c=this.container.outerWidth(),h>c-10&&(h=c-10),this.search_field.css({width:h+"px"})}},c}(b)}).call(this);
|
libs/factory/bootstrap/assets/js-min/plugin.color.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
!function(a,b){var c=function(a,b){return this instanceof c?this._init(a,b):new c(a,b)};c.fn=c.prototype={_color:0,_alpha:1,error:!1,_hsl:{h:0,s:0,l:0},_hsv:{h:0,s:0,v:0},_hSpace:"hsl",_init:function(a){var c="noop";switch(typeof a){case"object":return a.a!==b&&this.a(a.a),c=a.r!==b?"fromRgb":a.l!==b?"fromHsl":a.v!==b?"fromHsv":c,this[c](a);case"string":return this.fromCSS(a);case"number":return this.fromInt(parseInt(a,10))}return this},_error:function(){return this.error=!0,this},clone:function(){for(var a=new c(this.toInt()),b=["_alpha","_hSpace","_hsl","_hsv","error"],d=b.length-1;d>=0;d--)a[b[d]]=this[b[d]];return a},setHSpace:function(a){return this._hSpace="hsv"===a?a:"hsl",this},noop:function(){return this},fromCSS:function(a){var b,c=/^(rgb|hs(l|v))a?\(/;if(this.error=!1,a=a.replace(/^\s+/,"").replace(/\s+$/,"").replace(/;$/,""),a.match(c)&&a.match(/\)$/)){if(b=a.replace(/(\s|%)/g,"").replace(c,"").replace(/,?\);?$/,"").split(","),b.length<3)return this._error();if(4===b.length&&(this.a(parseFloat(b.pop())),this.error))return this;for(var d=b.length-1;d>=0;d--)if(b[d]=parseInt(b[d],10),isNaN(b[d]))return this._error();return a.match(/^rgb/)?this.fromRgb({r:b[0],g:b[1],b:b[2]}):a.match(/^hsv/)?this.fromHsv({h:b[0],s:b[1],v:b[2]}):this.fromHsl({h:b[0],s:b[1],l:b[2]})}return this.fromHex(a)},fromRgb:function(a,c){return"object"!=typeof a||a.r===b||a.g===b||a.b===b?this._error():(this.error=!1,this.fromInt(parseInt((a.r<<16)+(a.g<<8)+a.b,10),c))},fromHex:function(a){return a=a.replace(/^#/,"").replace(/^0x/,""),3===a.length&&(a=a[0]+a[0]+a[1]+a[1]+a[2]+a[2]),this.error=!/^[0-9A-F]{6}$/i.test(a),this.fromInt(parseInt(a,16))},fromHsl:function(a){var c,d,e,f,g,h,i,j;return"object"!=typeof a||a.h===b||a.s===b||a.l===b?this._error():(this._hsl=a,this._hSpace="hsl",h=a.h/360,i=a.s/100,j=a.l/100,0===i?c=d=e=j:(f=.5>j?j*(1+i):j+i-j*i,g=2*j-f,c=this.hue2rgb(g,f,h+1/3),d=this.hue2rgb(g,f,h),e=this.hue2rgb(g,f,h-1/3)),this.fromRgb({r:255*c,g:255*d,b:255*e},!0))},fromHsv:function(a){var c,d,e,f,g,h,i,j,k,l,m;if("object"!=typeof a||a.h===b||a.s===b||a.v===b)return this._error();switch(this._hsv=a,this._hSpace="hsv",c=a.h/360,d=a.s/100,e=a.v/100,i=Math.floor(6*c),j=6*c-i,k=e*(1-d),l=e*(1-j*d),m=e*(1-(1-j)*d),i%6){case 0:f=e,g=m,h=k;break;case 1:f=l,g=e,h=k;break;case 2:f=k,g=e,h=m;break;case 3:f=k,g=l,h=e;break;case 4:f=m,g=k,h=e;break;case 5:f=e,g=k,h=l}return this.fromRgb({r:255*f,g:255*g,b:255*h},!0)},fromInt:function(a,c){return this._color=parseInt(a,10),isNaN(this._color)&&(this._color=0),this._color>16777215?this._color=16777215:this._color<0&&(this._color=0),c===b&&(this._hsv.h=this._hsv.s=this._hsl.h=this._hsl.s=0),this},hue2rgb:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},toString:function(){var a=parseInt(this._color,10).toString(16);if(this.error)return"";if(a.length<6)for(var b=6-a.length-1;b>=0;b--)a="0"+a;return"#"+a},toCSS:function(a,b){switch(a=a||"hex",b=parseFloat(b||this._alpha),a){case"rgb":case"rgba":var c=this.toRgb();return 1>b?"rgba( "+c.r+", "+c.g+", "+c.b+", "+b+" )":"rgb( "+c.r+", "+c.g+", "+c.b+" )";case"hsl":case"hsla":var d=this.toHsl();return 1>b?"hsla( "+d.h+", "+d.s+"%, "+d.l+"%, "+b+" )":"hsl( "+d.h+", "+d.s+"%, "+d.l+"% )";default:return this.toString()}},toRgb:function(){return{r:255&this._color>>16,g:255&this._color>>8,b:255&this._color}},toHsl:function(){var a,b,c=this.toRgb(),d=c.r/255,e=c.g/255,f=c.b/255,g=Math.max(d,e,f),h=Math.min(d,e,f),i=(g+h)/2;if(g===h)a=b=0;else{var j=g-h;switch(b=i>.5?j/(2-g-h):j/(g+h),g){case d:a=(e-f)/j+(f>e?6:0);break;case e:a=(f-d)/j+2;break;case f:a=(d-e)/j+4}a/=6}return a=Math.round(360*a),0===a&&this._hsl.h!==a&&(a=this._hsl.h),b=Math.round(100*b),0===b&&this._hsl.s&&(b=this._hsl.s),{h:a,s:b,l:Math.round(100*i)}},toHsv:function(){var a,b,c=this.toRgb(),d=c.r/255,e=c.g/255,f=c.b/255,g=Math.max(d,e,f),h=Math.min(d,e,f),i=g,j=g-h;if(b=0===g?0:j/g,g===h)a=b=0;else{switch(g){case d:a=(e-f)/j+(f>e?6:0);break;case e:a=(f-d)/j+2;break;case f:a=(d-e)/j+4}a/=6}return a=Math.round(360*a),0===a&&this._hsv.h!==a&&(a=this._hsv.h),b=Math.round(100*b),0===b&&this._hsv.s&&(b=this._hsv.s),{h:a,s:b,v:Math.round(100*i)}},toInt:function(){return this._color},toIEOctoHex:function(){var a=this.toString(),b=parseInt(255*this._alpha,10).toString(16);return 1===b.length&&(b="0"+b),"#"+b+a.replace(/^#/,"")},toLuminosity:function(){var a=this.toRgb();return.2126*Math.pow(a.r/255,2.2)+.7152*Math.pow(a.g/255,2.2)+.0722*Math.pow(a.b/255,2.2)},getDistanceLuminosityFrom:function(a){if(!(a instanceof c))throw"getDistanceLuminosityFrom requires a Color object";var b=this.toLuminosity(),d=a.toLuminosity();return b>d?(b+.05)/(d+.05):(d+.05)/(b+.05)},getMaxContrastColor:function(){var a=this.toLuminosity(),b=a>=.5?"000000":"ffffff";return new c(b)},getReadableContrastingColor:function(a,d){if(!a instanceof c)return this;var e=d===b?5:d,f=a.getDistanceLuminosityFrom(this),g=a.getMaxContrastColor(),h=g.getDistanceLuminosityFrom(a);if(e>=h)return g;if(f>=e)return this;for(var i=0===g.toInt()?-1:1;e>f&&(this.l(i,!0),f=this.getDistanceLuminosityFrom(a),0!==this._color&&16777215!==this._color););return this},a:function(a){if(a===b)return this._alpha;var c=parseFloat(a);return isNaN(c)?this._error():(this._alpha=c,this)},darken:function(a){return a=a||5,this.l(-a,!0)},lighten:function(a){return a=a||5,this.l(a,!0)},saturate:function(a){return a=a||15,this.s(a,!0)},desaturate:function(a){return a=a||15,this.s(-a,!0)},toGrayscale:function(){return this.setHSpace("hsl").s(0)},getComplement:function(){return this.h(180,!0)},getSplitComplement:function(a){a=a||1;var b=180+30*a;return this.h(b,!0)},getAnalog:function(a){a=a||1;var b=30*a;return this.h(b,!0)},getTetrad:function(a){a=a||1;var b=60*a;return this.h(b,!0)},getTriad:function(a){a=a||1;var b=120*a;return this.h(b,!0)},_partial:function(a){var c=d[a];return function(d,e){var f=this._spaceFunc("to",c.space);return d===b?f[a]:(e===!0&&(d=f[a]+d),c.mod&&(d%=c.mod),c.range&&(d=d<c.range[0]?c.range[0]:d>c.range[1]?c.range[1]:d),f[a]=d,this._spaceFunc("from",c.space,f))}},_spaceFunc:function(a,b,c){var d=b||this._hSpace,e=a+d.charAt(0).toUpperCase()+d.substr(1);return this[e](c)}};var d={h:{mod:360},s:{range:[0,100]},l:{space:"hsl",range:[0,100]},v:{space:"hsv",range:[0,100]},r:{space:"rgb",range:[0,255]},g:{space:"rgb",range:[0,255]},b:{space:"rgb",range:[0,255]}};for(var e in d)d.hasOwnProperty(e)&&(c.fn[e]=c.fn._partial(e));"object"==typeof exports?module.exports=c:a.Color=c}(this);
|
libs/factory/bootstrap/assets/js-min/plugin.ddslick.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
!function(a){function b(a,b){var c=a.data("ddslick"),f=a.find(".dd-selected"),g=f.siblings(".dd-selected-value"),h=(a.find(".dd-options"),f.siblings(".dd-pointer"),a.find(".dd-option").eq(b)),i=h.closest("li"),j=c.settings,k=c.settings.data[b];a.find(".dd-option").removeClass("dd-option-selected"),h.addClass("dd-option-selected"),c.selectedIndex=b,c.selectedItem=i,c.selectedData=k,j.showSelectedHTML?f.html((k.imageSrc?'<img class="dd-selected-image'+("right"==j.imagePosition?" dd-image-right":"")+'" src="'+k.imageSrc+'" />':"")+(k.text?'<label class="dd-selected-text">'+k.text+"</label>":"")+(k.description?'<small class="dd-selected-description dd-desc'+(j.truncateDescription?" dd-selected-description-truncated":"")+'" >'+k.description+"</small>":"")):f.html(k.text),g.val(k.value),c.original.val(k.value),a.data("ddslick",c),d(a),e(a),"function"==typeof j.onSelected&&j.onSelected.call(this,c)}function c(b){var c=b.find(".dd-select"),d=c.siblings(".dd-options"),e=c.find(".dd-pointer"),g=d.is(":visible");a(".dd-click-off-close").not(d).slideUp(50),a(".dd-pointer").removeClass("dd-pointer-up"),g?(d.slideUp("fast"),e.removeClass("dd-pointer-up")):(d.slideDown("fast"),e.addClass("dd-pointer-up")),f(b)}function d(a){a.find(".dd-options").slideUp(50),a.find(".dd-pointer").removeClass("dd-pointer-up").removeClass("dd-pointer-up")}function e(a){var b=a.find(".dd-select").css("height"),c=a.find(".dd-selected-description"),d=a.find(".dd-selected-image");c.length<=0&&d.length>0&&a.find(".dd-selected-text").css("lineHeight",b)}function f(b){b.find(".dd-option").each(function(){var c=a(this),d=c.css("height"),e=c.find(".dd-option-description"),f=b.find(".dd-option-image");e.length<=0&&f.length>0&&c.find(".dd-option-text").css("lineHeight",d)})}a.fn.ddslick=function(b){return g[b]?g[b].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof b&&b?void a.error("Method "+b+" does not exists."):g.init.apply(this,arguments)};var g={},h={data:[],keepJSONItemsOnTop:!1,width:260,height:null,background:"#eee",selectText:"",defaultSelectedIndex:null,truncateDescription:!0,imagePosition:"left",showSelectedHTML:!0,clickOffToClose:!0,onSelected:function(){}},i='<div class="dd-select"><input class="dd-selected-value" type="hidden" /><a class="dd-selected"></a><span class="dd-pointer dd-pointer-down"></span></div>',j='<ul class="dd-options"></ul>',k='<style id="css-ddslick" type="text/css">.dd-select{ border-radius:2px; border:solid 1px #ccc; position:relative; cursor:pointer;}.dd-desc { color:#aaa; display:block; overflow: hidden; font-weight:normal; line-height: 1.4em; }.dd-selected{ overflow:hidden; display:block; padding:10px; font-weight:bold;}.dd-pointer{ width:0; height:0; position:absolute; right:10px; top:50%; margin-top:-3px;}.dd-pointer-down{ border:solid 5px transparent; border-top:solid 5px #000; }.dd-pointer-up{border:solid 5px transparent !important; border-bottom:solid 5px #000 !important; margin-top:-8px;}.dd-options{ border:solid 1px #ccc; border-top:none; list-style:none; box-shadow:0px 1px 5px #ddd; display:none; position:absolute; z-index:2000; margin:0; padding:0;background:#fff; overflow:auto;}.dd-option{ padding:10px; display:block; border-bottom:solid 1px #ddd; overflow:hidden; text-decoration:none; color:#333; cursor:pointer;-webkit-transition: all 0.25s ease-in-out; -moz-transition: all 0.25s ease-in-out;-o-transition: all 0.25s ease-in-out;-ms-transition: all 0.25s ease-in-out; }.dd-options > li:last-child > .dd-option{ border-bottom:none;}.dd-option:hover{ background:#f3f3f3; color:#000;}.dd-selected-description-truncated { text-overflow: ellipsis; white-space:nowrap; }.dd-option-selected { background:#f6f6f6; }.dd-option-image, .dd-selected-image { vertical-align:middle; float:left; margin-right:5px; max-width:64px;}.dd-image-right { float:right; margin-right:15px; margin-left:5px;}.dd-container{ position:relative;} .dd-selected-text { font-weight:bold}</style>';a("#css-ddslick").length<=0&&a(k).appendTo("head"),g.init=function(d){var d=a.extend({},h,d);return this.each(function(){var e=a(this),f=e.data("ddslick");if(!f){var g=[];d.data;e.find("option").each(function(){var b=a(this),c=b.data();g.push({text:a.trim(b.text()),value:b.val(),selected:b.is(":selected"),description:c.description,imageSrc:c.imagesrc})}),d.keepJSONItemsOnTop?a.merge(d.data,g):d.data=a.merge(g,d.data);var h=e,k=a('<div id="'+e.attr("id")+'"></div>');e.replaceWith(k),e=k,e.addClass("dd-container").append(i).append(j);var g=e.find(".dd-select"),l=e.find(".dd-options");l.css({width:d.width}),g.css({width:d.width,background:d.background}),e.css({width:d.width}),null!=d.height&&l.css({height:d.height,overflow:"auto"}),a.each(d.data,function(a,b){b.selected&&(d.defaultSelectedIndex=a),l.append('<li><a class="dd-option">'+(b.value?' <input class="dd-option-value" type="hidden" value="'+b.value+'" />':"")+(b.imageSrc?' <img class="dd-option-image'+("right"==d.imagePosition?" dd-image-right":"")+'" src="'+b.imageSrc+'" />':"")+(b.text?' <label class="dd-option-text">'+b.text+"</label>":"")+(b.description?' <small class="dd-option-description dd-desc">'+b.description+"</small>":"")+"</a></li>")});var m={settings:d,original:h,selectedIndex:-1,selectedItem:null,selectedData:null};if(e.data("ddslick",m),d.selectText.length>0&&null==d.defaultSelectedIndex)e.find(".dd-selected").html(d.selectText);else{var n=null!=d.defaultSelectedIndex&&d.defaultSelectedIndex>=0&&d.defaultSelectedIndex<d.data.length?d.defaultSelectedIndex:0;b(e,n)}e.find(".dd-select").on("click.ddslick",function(){c(e)}),e.find(".dd-option").on("click.ddslick",function(){b(e,a(this).closest("li").index())}),d.clickOffToClose&&(l.addClass("dd-click-off-close"),e.on("click.ddslick",function(a){a.stopPropagation()}),a("body").on("click",function(){a(".dd-click-off-close").slideUp(50).siblings(".dd-select").find(".dd-pointer").removeClass("dd-pointer-up")}))}})},g.select=function(c){return this.each(function(){c.index&&b(a(this),c.index)})},g.open=function(){return this.each(function(){var b=a(this),d=b.data("ddslick");d&&c(b)})},g.close=function(){return this.each(function(){var b=a(this),c=b.data("ddslick");c&&d(b)})},g.destroy=function(){return this.each(function(){var b=a(this),c=b.data("ddslick");if(c){var d=c.original;b.removeData("ddslick").unbind(".ddslick").replaceWith(d)}})}}(jQuery);
|
libs/factory/bootstrap/assets/js-min/plugin.gradient-picker.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
!function($){function ctrlPtComparator(a,b){return a.position-b.position}function bind(a,b){return"function"==typeof a.bind?a.bind(b):function(){a.apply(b,arguments)}}function GradientSelection(a,b){var c=this;this.$el=a,this.$presets=this.$el.find(".gradientPicker-pallets"),this.$presetsItems=this.$presets.find(".factory-preset-gradient"),this.$preview=this.$el.find(".gradientPicker-preview"),this.$pointsContainer=this.$el.find(".factory-points"),this.$colorPickerContainer=this.$el.find(".factory-color-picker-container"),this.$colorPicker=this.$el.find(".factory-color-picker"),this.$colorHex=this.$el.find(".factory-color-hex"),this.$opacitySliderContainer=this.$el.find(".factory-slider-container"),this.$opacitySlider=this.$el.find(".factory-bar"),this.$el.css("position","relative"),this.opts=b,this._createPresetGradients(),this._createPreview(),this._createColorPicker(),this._createDirectionDropdown(),this.controlPoints=[],b.controlPoints=b.controlPoints||[];for(var d=0;d<b.controlPoints.length;++d){var e=this.createCtrlPt(b.controlPoints[d]);this.controlPoints.push(e)}0===this.controlPoints.length&&(this.controlPoints.push(this.createCtrlPt(this.$presetsItems.data("primary")+" 0% 1")),this.controlPoints.push(this.createCtrlPt(this.$presetsItems.data("secondary")+" 100% 1"))),$(document).on("click.gp.factory",function(){c.hideColorPicker()}),this.$colorPickerContainer.on("click.gp.factory",function(a){a.stopPropagation()}),this.$pointsContainer.on("click.gp.factory",function(a){a.stopPropagation(),c.placePoint(a)}),this.updatePreview()}function ControlPoint(a,b,c){var d=this;if(this.parent=a,this.$container=a.$pointsContainer,this.$el=$('<span class="factory-point"></span>'),this.$pointColor=$('<span class="factory-point-color"></span>').appendTo(this.$el),this.$container.append(this.$el),"string"==typeof b?(b=b.split(" "),this.position=parseFloat(b[1])/100,this.color=b[0],this.opacity=b[2]):(this.position=b.position,this.color=b.color,this.opacity=b.opacity),this.outerWidth=this.$el.outerWidth(),this.$pointColor.css({"background-color":d.color,opacity:d.opacity}),"horizontal"===c){var e=(d.$container.width()-this.$el.outerWidth())*this.position;this.$el.css("left",e)}else{var f=(d.$container.height()-this.$el.outerHeight())*this.position;this.$el.css("top",f)}this.drag=bind(this.drag,this),this.stop=bind(this.stop,this),this.$el.disableSelection().css("webkit-user-select","none").draggable({axis:"horizontal"===c?"x":"y",drag:this.drag,stop:this.stop,containment:d.$container,cancel:null}),this.$el.on("click.gp.factory",function(a){d.parent.currentPoint===d?d.parent.hideColorPicker(d):d.parent.showColorPicker(d),a.stopPropagation()})}$.event.special.destroyed||($.event.special.destroyed={remove:function(a){a.handler&&a.handler()}});var agent=window.navigator.userAgent,browserPrefix=["-webkit-","-moz-","-ms-"],x,y=0;GradientSelection.prototype={_createPresetGradients:function(){var a=this;this.$presetsItems.each(function(){var a=$(this),b=$('<span class="factory-secondary-color-wrap"></span>').appendTo(a),c=$('<span class="factory-secondary-color"></span>').appendTo(b);a.css("background",a.data("primary")),c.css("background",a.data("secondary"))}),this.$presetsItems.click(function(){var b=$(this).data("primary"),c=$(this).data("secondary");a.setGradient([b+" 0% 1",c+" 100% 1"])})},_createPreview:function(){var a=this.$preview[0];a.width=0===a.clientWidth?210:a.clientWidth,a.height=0===a.clientHeight?30:a.clientHeight,this.g2d=a.getContext("2d")},_createColorPicker:function(){var a=this;this.$colorPicker.factoryBootstrap421_iris({width:217,palettes:["#16a086","#27ae61","#2a80b9","#8f44ad","#2d3e50","#f49c14","#c1392b","#bec3c7"],hide:!0,change:function(b,c){a.currentPoint.updateColor(c.color.toString()),a._colorLock||a.$colorHex.val(c.color.toString())}}),a.$colorHex.on("change paste keyup",function(){a._colorLock=!0,a.$colorPicker.factoryBootstrap421_iris("color",a.$colorHex.val()),a._cancelColorLock()}),this.$opacitySlider.noUiSlider({start:100,range:{min:0,max:100},step:1}),this.$opacitySlider.on("slide",function(){var b=parseInt(a.$opacitySlider.val()),c=b+"%";a.$opacitySliderContainer.find(".factory-visible-value").text(c),a.currentPoint.updateOpacity(b/100)}),this.$opacitySlider.on("set",function(){a.$result.val(a.getValue()),a.$result.trigger("change")})},_repeatColorLock:!1,_colorLock:!1,_colorLockTimer:!1,_cancelColorLock:function(a){var b=this;return b._colorLockTimer&&!a?(this._repeatColorLock=!0,!1):void(this._colorLockTimer=setTimeout(function(){return b._repeatColorLock?(b._repeatColorLock=!1,b._cancelColorLock(!0),!1):(b._colorLock=!1,b._colorLockTimer=!1,void(b._repeatColorLock=!1))},500))},_createDirectionDropdown:function(){var a=this,b=factory&&factory.res&&factory.res.resVertical||"vertical",c=factory&&factory.res&&factory.res.resHorizontal||"horizontal";this.$directionDropdown=$('<select class="gradientPicker-filldirection"><option value="vertical"'+("top"===a.opts.fillDirection?" selected":"")+">"+b+'</option><option value="horizontal"'+("left"===a.opts.fillDirection?" selected":"")+">"+c+"</option></select>"),this.$el.append(this.$directionDropdown),this.$directionDropdown.chosen(),this.$directionDropdown.change(function(){a.setGradientDirection($(this).val())})},showColorPicker:function(a){this.currentPoint=a,$(".factory-current-point").removeClass("factory-current-point"),a.$el.addClass("factory-current-point"),this.$colorPickerContainer.show(),this.$colorPicker.factoryBootstrap421_iris("show"),this.$colorPicker.factoryBootstrap421_iris("option","color",a.color),this.$opacitySlider.val(100*a.opacity),this.$opacitySlider.trigger("slide")},hideColorPicker:function(){$(".factory-current-point").removeClass("factory-current-point"),this.currentPoint=!1,this.$colorPickerContainer.hide()},isColorPickerShown:function(){return this.currentPoint},docClicked:function(){$(".gradientPicker-iris-wrap").hide(),$(".gradientPicker-ctrlPt").removeClass("open")},createCtrlPt:function(a){return new ControlPoint(this,a,this.opts.orientation)},updateOptions:function(a,b){if($.extend(this.opts,a),b){this.controlPoints=[],this.$pointsContainer.html("");for(var c=0;c<this.opts.controlPoints.length;++c){var d=this.createCtrlPt(this.opts.controlPoints[c]);this.controlPoints.push(d)}}switch(this.updatePreview(),this.opts.fillDirection){case"top":fillDirectCheck="horizontal";break;case"left":fillDirectCheck="vertical";break;default:fillDirectCheck=!1}fillDirectCheck&&$(".gradientPicker-filldirection",this.$el).find('option[value="'+fillDirectCheck+'"]').prop("selected",!0)},updatePreview:function(){var a=[];if(this.controlPoints.sort(ctrlPtComparator),this.g2d.clearRect(0,0,this.g2d.canvas.width,this.g2d.canvas.height),"horizontal"===this.opts.orientation)for(var b=this.g2d.createLinearGradient(0,0,this.g2d.canvas.width,0),c=0;c<this.controlPoints.length;++c){var d=this.controlPoints[c];b.addColorStop(d.position,"rgba("+hexToRgb(d.color).r+","+hexToRgb(d.color).g+","+hexToRgb(d.color).b+", "+d.opacity+")"),a.push({position:d.position,color:d.color,opacity:d.opacity})}if(this.g2d.fillStyle=b,this.g2d.fillRect(0,0,this.g2d.canvas.width,this.g2d.canvas.height),this.opts.generateStyles)var e=this._generatePreviewStyles();this.opts.change(a,e)},removeControlPoint:function(a){var b=this.controlPoints.indexOf(a);-1!=b&&(this.controlPoints.splice(b,1),a.$el.remove())},placePoint:function(a){a.stopPropagation();var b=$(a.target).offset(),c=a.pageX-b.left,d=a.pageY-b.top,e=this.g2d.getImageData(c,d,1,1),f="rgb("+e.data[0]+","+e.data[1]+","+e.data[2]+")",g=1/255*e.data[3],h=this.createCtrlPt({position:c/this.g2d.canvas.width,color:rgb2hex(f),opacity:g});this.controlPoints.push(h),this.controlPoints.sort(ctrlPtComparator),this.showColorPicker(h)},setGradient:function(a){this.updateOptions({controlPoints:a},!0),this.updatePreview()},setGradientDirection:function(a){switch(a){case"horizontal":this.updateOptions({type:"linear",fillDirection:"top"},!1);break;case"vertical":this.updateOptions({type:"linear",fillDirection:"left"},!1)}},_generatePreviewStyles:function(){var a={};a.filldirection=this.opts.fillDirection,a.color_points=[];for(var b=0;b<this.controlPoints.length;++b){var c=this.controlPoints[b];a.color_points.push(c.color+" "+(100*c.position|0)+"% "+c.opacity)}return JSON.stringify(a)},_genPalletsBackground:function(a,b){return cssRules="linear-gradient(90deg, "+a+" 0%, "+b+" 100%)",agent.indexOf("WebKit")>=0?crossBrowserRule=browserPrefix[0]+cssRules:agent.indexOf("Mozilla")>=0?crossBrowserRule=browserPrefix[1]+cssRules:agent.indexOf("Microsoft")>=0?crossBrowserRule=browserPrefix[2]+cssRules:crossBrowserRule=cssRules,crossBrowserRule}},ControlPoint.prototype={updateColor:function(a){this.color=a,this.$pointColor.css("background-color",a),this.parent.updatePreview()},updateOpacity:function(a){this.opacity=a,this.$pointColor.css("opacity",a),this.parent.updatePreview()},drag:function(e,ui){var stopPointPosition=eval(this.$el.parent().offset().top+this.$el.parent().height()+20);e.pageY>stopPointPosition&&this.remove();var left=ui.position.left;this.position=left/(this.$container.width()-this.outerWidth),this.parent.updatePreview()},stop:function(){this.parent.updatePreview()},remove:function(){this.parent.removeControlPoint(this),this.parent.hideColorPicker(),this.parent.updatePreview()}};var methods={init:function(a){a=$.extend({controlPoints:["#FFF 0% 1","#000 100% 1"],orientation:"horizontal",type:"linear",fillDirection:"left",generateStyles:!0,change:function(){}},a),this.each(function(){var b=$(this),c=new GradientSelection(b,a);b.data("gradientPicker-sel",c)})},update:function(a){this.each(function(){var b=$(this),c=b.data("gradientPicker-sel");null!=c&&c.updateOptions(a,!0)})}};$.fn.gradientPicker=function(a,b){"string"==typeof a&&"init"!==a?methods[a].call(this,b):(b=a,methods.init.call(this,b))}}(jQuery);
|
libs/factory/bootstrap/assets/js-min/plugin.iris.min.js
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
/*! Iris Color Picker - v1.0.4 - 2013-11-18
|
11 |
+
* https://github.com/Automattic/Iris
|
12 |
+
* Copyright (c) 2013 Matt Wiebe; Licensed GPLv2 */
|
13 |
+
!function(a,b){function c(){var b,c;j?k="filter":(b=a('<div id="iris-gradtest" />'),c="linear-gradient(top,#fff,#000)",a.each(l,function(a,d){return b.css("backgroundImage",d+c),b.css("backgroundImage").match("gradient")?(k=a,!1):void 0}),k===!1&&(b.css("background","-webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#000))"),b.css("backgroundImage").match("gradient")&&(k="webkit")),b.remove())}function d(b,c){return b="top"===b?"top":"left",c=a.isArray(c)?c:Array.prototype.slice.call(arguments,1),"webkit"===k?f(b,c):l[k]+"linear-gradient("+b+", "+c.join(", ")+")"}function e(b,c){var d,e,f,h,i,j,k,l,m;b="top"===b?"top":"left",c=a.isArray(c)?c:Array.prototype.slice.call(arguments,1),d="top"===b?0:1,e=a(this),f=c.length-1,h="filter",i=1===d?"left":"top",j=1===d?"right":"bottom",k=1===d?"height":"width",l='<div class="iris-ie-gradient-shim" style="position:absolute;'+k+":100%;"+i+":%start%;"+j+":%end%;"+h+':%filter%;" data-color:"%color%"></div>',m="","static"===e.css("position")&&e.css({position:"relative"}),c=g(c),a.each(c,function(a,b){var e,g,h;return a===f?!1:(e=c[a+1],void(b.stop!==e.stop&&(g=100-parseFloat(e.stop)+"%",b.octoHex=new Color(b.color).toIEOctoHex(),e.octoHex=new Color(e.color).toIEOctoHex(),h="progid:DXImageTransform.Microsoft.Gradient(GradientType="+d+", StartColorStr='"+b.octoHex+"', EndColorStr='"+e.octoHex+"')",m+=l.replace("%start%",b.stop).replace("%end%",g).replace("%filter%",h))))}),e.find(".iris-ie-gradient-shim").remove(),a(m).prependTo(e)}function f(b,c){var d=[];return b="top"===b?"0% 0%,0% 100%,":"0% 100%,100% 100%,",c=g(c),a.each(c,function(a,b){d.push("color-stop("+parseFloat(b.stop)/100+", "+b.color+")")}),"-webkit-gradient(linear,"+b+d.join(",")+")"}function g(b){var c=[],d=[],e=[],f=b.length-1;return a.each(b,function(a,b){var e=b,f=!1,g=b.match(/1?[0-9]{1,2}%$/);g&&(e=b.replace(/\s?1?[0-9]{1,2}%$/,""),f=g.shift()),c.push(e),d.push(f)}),d[0]===!1&&(d[0]="0%"),d[f]===!1&&(d[f]="100%"),d=h(d),a.each(d,function(a){e[a]={color:c[a],stop:d[a]}}),e}function h(b){var c,d,e,f,g=0,i=b.length-1,j=0,k=!1;if(b.length<=2||a.inArray(!1,b)<0)return b;for(;j<b.length-1;)k||b[j]!==!1?k&&b[j]!==!1&&(i=j,j=b.length):(g=j-1,k=!0),j++;for(d=i-g,f=parseInt(b[g].replace("%"),10),c=(parseFloat(b[i].replace("%"))-f)/d,j=g+1,e=1;i>j;)b[j]=f+e*c+"%",e++,j++;return h(b)}var i,j,k,l,m,n,o,p,q;return i='<div class="iris-picker"><div class="iris-picker-inner"><div class="iris-square"><a class="iris-square-value" href="#"><span class="iris-square-handle ui-slider-handle"></span></a><div class="iris-square-inner iris-square-horiz"></div><div class="iris-square-inner iris-square-vert"></div></div><div class="iris-slider iris-strip"><div class="iris-slider-offset"></div></div></div></div>',o=navigator.userAgent.toLowerCase(),p="Microsoft Internet Explorer"===navigator.appName,q=p?parseFloat(o.match(/msie ([0-9]{1,}[\.0-9]{0,})/)[1]):0,j=p&&10>q,k=!1,l=["-moz-","-webkit-","-o-","-ms-"],m='.iris-picker{display:block;position:relative}.iris-picker,.iris-picker *{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input+.iris-picker{margin-top:4px}.iris-error{background-color:#ffafaf}.iris-border{border-radius:3px;border:1px solid #aaa;width:200px;background-color:#fff}.iris-picker-inner{position:absolute;top:0;right:0;left:0;bottom:0}.iris-border .iris-picker-inner{top:10px;right:10px;left:10px;bottom:10px}.iris-picker .iris-square-inner{position:absolute;left:0;right:0;top:0;bottom:0}.iris-picker .iris-square,.iris-picker .iris-slider,.iris-picker .iris-square-inner,.iris-picker .iris-palette{border-radius:3px;box-shadow:inset 0 0 5px rgba(0,0,0,.4);height:100%;width:12.5%;float:left;margin-right:5%}.iris-picker .iris-square{width:76%;margin-right:10%;position:relative}.iris-picker .iris-square-inner{width:auto;margin:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-square-inner,.iris-ie-9 .iris-palette{box-shadow:none;border-radius:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-palette{outline:1px solid rgba(0,0,0,.1)}.iris-ie-lt9 .iris-square,.iris-ie-lt9 .iris-slider,.iris-ie-lt9 .iris-square-inner,.iris-ie-lt9 .iris-palette{outline:1px solid #aaa}.iris-ie-lt9 .iris-square .ui-slider-handle{outline:1px solid #aaa;background-color:#fff;-ms-filter:"alpha(Opacity=30)"}.iris-ie-lt9 .iris-square .iris-square-handle{background:0;border:3px solid #fff;-ms-filter:"alpha(Opacity=50)"}.iris-picker .iris-strip{margin-right:0;position:relative}.iris-picker .iris-strip .ui-slider-handle{position:absolute;background:0;margin:0;right:-3px;left:-3px;border:4px solid #aaa;border-width:4px 3px;width:auto;height:6px;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.iris-strip .ui-slider-handle:before{content:" ";position:absolute;left:-2px;right:-2px;top:-3px;bottom:-3px;border:2px solid #fff;border-radius:3px}.iris-picker .iris-slider-offset{position:absolute;top:11px;left:0;right:0;bottom:-3px;width:auto;height:auto;background:transparent;border:0;top:none;border-radius:0}.iris-picker .iris-square-handle{background:transparent;border:5px solid #aaa;border-radius:50%;border-color:rgba(128,128,128,.5);box-shadow:none;width:12px;height:12px;position:absolute;left:-10px;top:-10px;cursor:move;opacity:1;z-index:10}.iris-picker .ui-state-focus .iris-square-handle{opacity:.8}.iris-picker .iris-square-handle:hover{border-color:#999}.iris-picker .iris-square-value:focus .iris-square-handle{box-shadow:0 0 2px rgba(0,0,0,.75);opacity:.8}.iris-picker .iris-square-handle:hover::after{border-color:#fff}.iris-picker .iris-square-handle::after{position:absolute;bottom:-4px;right:-4px;left:-4px;top:-4px;border:3px solid #f9f9f9;border-color:rgba(255,255,255,.8);border-radius:50%;content:" "}.iris-picker .iris-square-value{width:8px;height:8px;position:absolute}.iris-ie-lt9 .iris-square-value,.iris-mozilla .iris-square-value{width:1px;height:1px}.iris-palette-container{position:absolute;bottom:0;left:0;margin:0;padding:0}.iris-border .iris-palette-container{left:10px;bottom:10px}.iris-picker .iris-palette{margin:0;cursor:pointer}',j&&7>=q?(a.fn.iris=a.noop,void(a.support.iris=!1)):(a.support.factoryBootstrap421_iris=!0,a.fn.factoryBootstrap421_gradient=function(){var b=arguments;return this.each(function(){j?e.apply(this,b):a(this).css("backgroundImage",d.apply(this,b))})},a.fn.factoryBootstrap421_raninbowGradient=function(b,c){var d,e,f,g;for(b=b||"top",d=a.extend({},{s:100,l:50},c),e="hsl(%h%,"+d.s+"%,"+d.l+"%)",f=0,g=[];360>=f;)g.push(e.replace("%h%",f)),f+=30;return this.each(function(){a(this).factoryBootstrap421_gradient(b,g)})},n={options:{color:!1,mode:"hsl",controls:{horiz:"s",vert:"l",strip:"h"},hide:!0,border:!0,target:!1,width:200,palettes:!1},_color:"",_palettes:["#000","#fff","#d33","#d93","#ee2","#81d742","#1e73be","#8224e3"],_inited:!1,_defaultHSLControls:{horiz:"s",vert:"l",strip:"h"},_defaultHSVControls:{horiz:"h",vert:"v",strip:"s"},_scale:{h:360,s:100,l:100,v:100},_create:function(){var b=this,d=b.element,e=b.options.color||d.val();k===!1&&c(),d.is("input")?(b.options.target?b.picker=a(i).appendTo(b.options.target):b.picker=a(i).insertAfter(d),b._addInputListeners(d)):(d.append(i),b.picker=d.find(".iris-picker")),p?9===q?b.picker.addClass("iris-ie-9"):8>=q&&b.picker.addClass("iris-ie-lt9"):o.indexOf("compatible")<0&&o.indexOf("khtml")<0&&o.match(/mozilla/)&&b.picker.addClass("iris-mozilla"),b.options.palettes&&b._addPalettes(),b._color=new Color(e).setHSpace(b.options.mode),b.options.color=b._color.toString(),b.controls={square:b.picker.find(".iris-square"),squareDrag:b.picker.find(".iris-square-value"),horiz:b.picker.find(".iris-square-horiz"),vert:b.picker.find(".iris-square-vert"),strip:b.picker.find(".iris-strip"),stripSlider:b.picker.find(".iris-strip .iris-slider-offset")},"hsv"===b.options.mode&&b._has("l",b.options.controls)?b.options.controls=b._defaultHSVControls:"hsl"===b.options.mode&&b._has("v",b.options.controls)&&(b.options.controls=b._defaultHSLControls),b.hue=b._color.h(),b.options.hide&&b.picker.hide(),b.options.border&&b.picker.addClass("iris-border"),b._initControls(),b.active="external",b._dimensions(),b._change()},_has:function(b,c){var d=!1;return a.each(c,function(a,c){return b===c?(d=!0,!1):void 0}),d},_addPalettes:function(){var b=a('<div class="iris-palette-container" />'),c=a('<a class="iris-palette" tabindex="0" />'),d=a.isArray(this.options.palettes)?this.options.palettes:this._palettes;this.picker.find(".iris-palette-container").length&&(b=this.picker.find(".iris-palette-container").detach().html("")),a.each(d,function(a,d){c.clone().data("color",d).css("backgroundColor",d).appendTo(b).height(10).width(10)}),this.picker.append(b)},_paint:function(){var a=this;a._paintDimension("top","strip"),a._paintDimension("top","vert"),a._paintDimension("left","horiz")},_paintDimension:function(a,b){var c,d=this,e=d._color,f=d.options.mode,g=d._getHSpaceColor(),h=d.controls[b],i=d.options.controls;if(b!==d.active&&("square"!==d.active||"strip"===b))switch(i[b]){case"h":if("hsv"===f){switch(g=e.clone(),b){case"horiz":g[i.vert](100);break;case"vert":g[i.horiz](100);break;case"strip":g.setHSpace("hsl")}c=g.toHsl()}else c="strip"===b?{s:g.s,l:g.l}:{s:100,l:g.l};h.factoryBootstrap421_raninbowGradient(a,c);break;case"s":"hsv"===f?"vert"===b?c=[e.clone().a(0).s(0).toCSS("rgba"),e.clone().a(1).s(0).toCSS("rgba")]:"strip"===b?c=[e.clone().s(100).toCSS("hsl"),e.clone().s(0).toCSS("hsl")]:"horiz"===b&&(c=["#fff","hsl("+g.h+",100%,50%)"]):c="vert"===b&&"h"===d.options.controls.horiz?["hsla(0, 0%, "+g.l+"%, 0)","hsla(0, 0%, "+g.l+"%, 1)"]:["hsl("+g.h+",0%,50%)","hsl("+g.h+",100%,50%)"],h.factoryBootstrap421_gradient(a,c);break;case"l":c="strip"===b?["hsl("+g.h+",100%,100%)","hsl("+g.h+", "+g.s+"%,50%)","hsl("+g.h+",100%,0%)"]:["#fff","rgba(255,255,255,0) 50%","rgba(0,0,0,0) 50%","rgba(0,0,0,1)"],h.factoryBootstrap421_gradient(a,c);break;case"v":c="strip"===b?[e.clone().v(100).toCSS(),e.clone().v(0).toCSS()]:["rgba(0,0,0,0)","#000"],h.factoryBootstrap421_gradient(a,c)}},_getHSpaceColor:function(){return"hsv"===this.options.mode?this._color.toHsv():this._color.toHsl()},_dimensions:function(b){var c,d,e,f,g=this,h=g.options,i=g.controls,j=i.square,k=g.picker.find(".iris-strip"),l="77.5%",m="12%",n=20,o=h.border?h.width-n:h.width,p=a.isArray(h.palettes)?h.palettes.length:g._palettes.length;return b&&(j.css("width",""),k.css("width",""),g.picker.css({width:"",height:""})),l=o*(parseFloat(l)/100),m=o*(parseFloat(m)/100),c=h.border?l+n:l,j.width(l).height(l),k.height(l).width(m),g.picker.css({width:h.width,height:c}),h.palettes?(d=2*l/100,f=l-(p-1)*d,e=f/p,g.picker.find(".iris-palette").each(function(b){var c=0===b?0:d;a(this).css({width:e,height:e,marginLeft:c})}),g.picker.css("paddingBottom",e+d),void k.height(e+d+l)):g.picker.css("paddingBottom","")},_addInputListeners:function(a){var b=this,c=100,d=function(c){var d=new Color(a.val()),e=a.val().replace(/^#/,"");a.removeClass("iris-error"),d.error?""!==e&&a.addClass("iris-error"):d.toString()!==b._color.toString()&&("keyup"===c.type&&e.match(/^[0-9a-fA-F]{3}$/)||b._setOption("color",d.toString()))};a.on("change",d).on("keyup",b._debounce(d,c)),b.options.hide&&a.one("focus",function(){b.show()})},_initControls:function(){var b=this,c=b.controls,d=c.square,e=b.options.controls,f=b._scale[e.strip];c.stripSlider.slider({orientation:"vertical",max:f,slide:function(a,c){b.active="strip","h"===e.strip&&(c.value=f-c.value),b._color[e.strip](c.value),b._change.apply(b,arguments)}}),c.squareDrag.draggable({containment:"parent",zIndex:1e3,cursor:"move",drag:function(a,c){b._squareDrag(a,c)},start:function(){d.addClass("iris-dragging"),a(this).addClass("ui-state-focus")},stop:function(){d.removeClass("iris-dragging"),a(this).removeClass("ui-state-focus")}}).on("mousedown mouseup",function(c){var d="ui-state-focus";c.preventDefault(),"mousedown"===c.type?(b.picker.find("."+d).removeClass(d).blur(),a(this).addClass(d).focus()):a(this).removeClass(d)}).on("keydown",function(a){var d=c.square,e=c.squareDrag,f=e.position(),g=b.options.width/100;switch(a.altKey&&(g*=10),a.keyCode){case 37:f.left-=g;break;case 38:f.top-=g;break;case 39:f.left+=g;break;case 40:f.top+=g;break;default:return!0}f.left=Math.max(0,Math.min(f.left,d.width())),f.top=Math.max(0,Math.min(f.top,d.height())),e.css(f),b._squareDrag(a,{position:f}),a.preventDefault()}),d.mousedown(function(c){var d,e;1===c.which&&a(c.target).is("div")&&(d=b.controls.square.offset(),e={top:c.pageY-d.top,left:c.pageX-d.left},c.preventDefault(),b._squareDrag(c,{position:e}),c.target=b.controls.squareDrag.get(0),b.controls.squareDrag.css(e).trigger(c))}),b.options.palettes&&b._paletteListeners()},_paletteListeners:function(){var b=this;b.picker.find(".iris-palette-container").on("click.palette",".iris-palette",function(){b._color.fromCSS(a(this).data("color")),b.active="external",b._change()}).on("keydown.palette",".iris-palette",function(b){return 13!==b.keyCode&&32!==b.keyCode?!0:(b.stopPropagation(),void a(this).click())})},_squareDrag:function(a,b){var c=this,d=c.options.controls,e=c._squareDimensions(),f=Math.round((e.h-b.position.top)/e.h*c._scale[d.vert]),g=c._scale[d.horiz]-Math.round((e.w-b.position.left)/e.w*c._scale[d.horiz]);c._color[d.horiz](g)[d.vert](f),c.active="square",c._change.apply(c,arguments)},_setOption:function(b,c){var d,e,f,g=this,h=g.options[b],i=!1;switch(g.options[b]=c,b){case"color":c=""+c,d=c.replace(/^#/,""),e=new Color(c).setHSpace(g.options.mode),e.error?g.options[b]=h:(g._color=e,g.options.color=g.options[b]=g._color.toString(),g.active="external",g._change());break;case"palettes":i=!0,c?g._addPalettes():g.picker.find(".iris-palette-container").remove(),h||g._paletteListeners();break;case"width":i=!0;break;case"border":i=!0,f=c?"addClass":"removeClass",g.picker[f]("iris-border");break;case"mode":case"controls":if(h===c)return;return f=g.element,h=g.options,h.hide=!g.picker.is(":visible"),g.destroy(),g.picker.remove(),a(g.element).iris(h)}i&&g._dimensions(!0)},_squareDimensions:function(a){var c,d,e=this.controls.square;return a!==b&&e.data("dimensions")?e.data("dimensions"):(d=this.controls.squareDrag,c={w:e.width(),h:e.height()},e.data("dimensions",c),c)},_isNonHueControl:function(a,b){return"square"===a&&"h"===this.options.controls.strip?!0:"external"===b||"h"===b&&"strip"===a?!1:!0},_change:function(){var b=this,c=b.controls,d=b._getHSpaceColor(),e=["square","strip"],f=b.options.controls,g=f[b.active]||"external",h=b.hue;"strip"===b.active?e=[]:"external"!==b.active&&e.pop(),a.each(e,function(a,e){var g,h,i;if(e!==b.active)switch(e){case"strip":g="h"===f.strip?b._scale[f.strip]-d[f.strip]:d[f.strip],c.stripSlider.slider("value",g);break;case"square":h=b._squareDimensions(),i={left:d[f.horiz]/b._scale[f.horiz]*h.w,top:h.h-d[f.vert]/b._scale[f.vert]*h.h},b.controls.squareDrag.css(i)}}),d.h!==h&&b._isNonHueControl(b.active,g)&&b._color.h(h),b.hue=b._color.h(),b.options.color=b._color.toString(),b._inited&&b._trigger("change",{type:b.active},{color:b._color}),b.element.is(":input")&&!b._color.error&&(b.element.removeClass("iris-error"),b.element.val()!==b._color.toString()&&b.element.val(b._color.toString())),b._paint(),b._inited=!0,b.active=!1},_debounce:function(a,b,c){var d,e;return function(){var f,g,h=this,i=arguments;return f=function(){d=null,c||(e=a.apply(h,i))},g=c&&!d,clearTimeout(d),d=setTimeout(f,b),g&&(e=a.apply(h,i)),e}},show:function(){this.picker.show()},hide:function(){this.picker.hide()},toggle:function(){this.picker.toggle()},color:function(a){return a===!0?this._color.clone():a===b?this._color.toString():void this.option("color",a)}},a.widget("a8c.factoryBootstrap421_iris",n),void a('<style id="iris-css">'+m+"</style>").appendTo("head"))}(jQuery);
|
libs/factory/bootstrap/assets/js-min/plugin.moment-with-locales.min.js
ADDED
@@ -0,0 +1,526 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){"use strict";function a(){return ze.apply(null,arguments)}function b(a){ze=a}function c(a){return a instanceof Array||"[object Array]"===Object.prototype.toString.call(a)}function d(a){return null!=a&&"[object Object]"===Object.prototype.toString.call(a)}function e(a){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(a).length;var b;for(b in a)if(a.hasOwnProperty(b))return!1;return!0}function f(a){return void 0===a}function g(a){return"number"==typeof a||"[object Number]"===Object.prototype.toString.call(a)}function h(a){return a instanceof Date||"[object Date]"===Object.prototype.toString.call(a)}function i(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function j(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function k(a,b){for(var c in b)j(b,c)&&(a[c]=b[c]);return j(b,"toString")&&(a.toString=b.toString),j(b,"valueOf")&&(a.valueOf=b.valueOf),a}function l(a,b,c,d){return yb(a,b,c,d,!0).utc()}function m(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}}function n(a){return null==a._pf&&(a._pf=m()),a._pf}function o(a){if(null==a._isValid){var b=n(a),c=Ae.call(b.parsedDateParts,function(a){return null!=a}),d=!isNaN(a._d.getTime())&&b.overflow<0&&!b.empty&&!b.invalidMonth&&!b.invalidWeekday&&!b.weekdayMismatch&&!b.nullInput&&!b.invalidFormat&&!b.userInvalidated&&(!b.meridiem||b.meridiem&&c);if(a._strict&&(d=d&&0===b.charsLeftOver&&0===b.unusedTokens.length&&void 0===b.bigHour),null!=Object.isFrozen&&Object.isFrozen(a))return d;a._isValid=d}return a._isValid}function p(a){var b=l(NaN);return null!=a?k(n(b),a):n(b).userInvalidated=!0,b}function q(a,b){var c,d,e;if(f(b._isAMomentObject)||(a._isAMomentObject=b._isAMomentObject),f(b._i)||(a._i=b._i),f(b._f)||(a._f=b._f),f(b._l)||(a._l=b._l),f(b._strict)||(a._strict=b._strict),f(b._tzm)||(a._tzm=b._tzm),f(b._isUTC)||(a._isUTC=b._isUTC),f(b._offset)||(a._offset=b._offset),f(b._pf)||(a._pf=n(b)),f(b._locale)||(a._locale=b._locale),Be.length>0)for(c=0;c<Be.length;c++)d=Be[c],e=b[d],f(e)||(a[d]=e);return a}function r(b){q(this,b),this._d=new Date(null!=b._d?b._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),Ce===!1&&(Ce=!0,a.updateOffset(this),Ce=!1)}function s(a){return a instanceof r||null!=a&&null!=a._isAMomentObject}function t(a){return 0>a?Math.ceil(a)||0:Math.floor(a)}function u(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=t(b)),c}function v(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&u(a[d])!==u(b[d]))&&g++;return g+f}function w(b){a.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+b)}function x(b,c){var d=!0;return k(function(){if(null!=a.deprecationHandler&&a.deprecationHandler(null,b),d){for(var e,f=[],g=0;g<arguments.length;g++){if(e="","object"==typeof arguments[g]){e+="\n["+g+"] ";for(var h in arguments[0])e+=h+": "+arguments[0][h]+", ";e=e.slice(0,-2)}else e=arguments[g];f.push(e)}w(b+"\nArguments: "+Array.prototype.slice.call(f).join("")+"\n"+(new Error).stack),d=!1}return c.apply(this,arguments)},c)}function y(b,c){null!=a.deprecationHandler&&a.deprecationHandler(b,c),De[b]||(w(c),De[b]=!0)}function z(a){return a instanceof Function||"[object Function]"===Object.prototype.toString.call(a)}function A(a){var b,c;for(c in a)b=a[c],z(b)?this[c]=b:this["_"+c]=b;this._config=a,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)}function B(a,b){var c,e=k({},a);for(c in b)j(b,c)&&(d(a[c])&&d(b[c])?(e[c]={},k(e[c],a[c]),k(e[c],b[c])):null!=b[c]?e[c]=b[c]:delete e[c]);for(c in a)j(a,c)&&!j(b,c)&&d(a[c])&&(e[c]=k({},e[c]));return e}function C(a){null!=a&&this.set(a)}function D(a,b,c){var d=this._calendar[a]||this._calendar.sameElse;return z(d)?d.call(b,c):d}function E(a){var b=this._longDateFormat[a],c=this._longDateFormat[a.toUpperCase()];return b||!c?b:(this._longDateFormat[a]=c.replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a])}function F(){return this._invalidDate}function G(a){return this._ordinal.replace("%d",a)}function H(a,b,c,d){var e=this._relativeTime[c];return z(e)?e(a,b,c,d):e.replace(/%d/i,a)}function I(a,b){var c=this._relativeTime[a>0?"future":"past"];return z(c)?c(b):c.replace(/%s/i,b)}function J(a,b){var c=a.toLowerCase();Le[c]=Le[c+"s"]=Le[b]=a}function K(a){return"string"==typeof a?Le[a]||Le[a.toLowerCase()]:void 0}function L(a){var b,c,d={};for(c in a)j(a,c)&&(b=K(c),b&&(d[b]=a[c]));return d}function M(a,b){Me[a]=b}function N(a){var b=[];for(var c in a)b.push({unit:c,priority:Me[c]});return b.sort(function(a,b){return a.priority-b.priority}),b}function O(a,b,c){var d=""+Math.abs(a),e=b-d.length,f=a>=0;return(f?c?"+":"":"-")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}function P(a,b,c,d){var e=d;"string"==typeof d&&(e=function(){return this[d]()}),a&&(Qe[a]=e),b&&(Qe[b[0]]=function(){return O(e.apply(this,arguments),b[1],b[2])}),c&&(Qe[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function Q(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function R(a){var b,c,d=a.match(Ne);for(b=0,c=d.length;c>b;b++)Qe[d[b]]?d[b]=Qe[d[b]]:d[b]=Q(d[b]);return function(b){var e,f="";for(e=0;c>e;e++)f+=z(d[e])?d[e].call(b,a):d[e];return f}}function S(a,b){return a.isValid()?(b=T(b,a.localeData()),Pe[b]=Pe[b]||R(b),Pe[b](a)):a.localeData().invalidDate()}function T(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Oe.lastIndex=0;d>=0&&Oe.test(a);)a=a.replace(Oe,c),Oe.lastIndex=0,d-=1;return a}function U(a,b,c){gf[a]=z(b)?b:function(a,d){return a&&c?c:b}}function V(a,b){return j(gf,a)?gf[a](b._strict,b._locale):new RegExp(W(a))}function W(a){return X(a.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e}))}function X(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Y(a,b){var c,d=b;for("string"==typeof a&&(a=[a]),g(b)&&(d=function(a,c){c[b]=u(a)}),c=0;c<a.length;c++)hf[a[c]]=d}function Z(a,b){Y(a,function(a,c,d,e){d._w=d._w||{},b(a,d._w,d,e)})}function $(a,b,c){null!=b&&j(hf,a)&&hf[a](b,c._a,c,a)}function _(a){return aa(a)?366:365}function aa(a){return a%4===0&&a%100!==0||a%400===0}function ba(){return aa(this.year())}function ca(b,c){return function(d){return null!=d?(ea(this,b,d),a.updateOffset(this,c),this):da(this,b)}}function da(a,b){return a.isValid()?a._d["get"+(a._isUTC?"UTC":"")+b]():NaN}function ea(a,b,c){a.isValid()&&!isNaN(c)&&("FullYear"===b&&aa(a.year())&&1===a.month()&&29===a.date()?a._d["set"+(a._isUTC?"UTC":"")+b](c,a.month(),ia(c,a.month())):a._d["set"+(a._isUTC?"UTC":"")+b](c))}function fa(a){return a=K(a),z(this[a])?this[a]():this}function ga(a,b){if("object"==typeof a){a=L(a);for(var c=N(a),d=0;d<c.length;d++)this[c[d].unit](a[c[d].unit])}else if(a=K(a),z(this[a]))return this[a](b);return this}function ha(a,b){return(a%b+b)%b}function ia(a,b){if(isNaN(a)||isNaN(b))return NaN;var c=ha(b,12);return a+=(b-c)/12,1===c?aa(a)?29:28:31-c%7%2}function ja(a,b){return a?c(this._months)?this._months[a.month()]:this._months[(this._months.isFormat||uf).test(b)?"format":"standalone"][a.month()]:c(this._months)?this._months:this._months.standalone}function ka(a,b){return a?c(this._monthsShort)?this._monthsShort[a.month()]:this._monthsShort[uf.test(b)?"format":"standalone"][a.month()]:c(this._monthsShort)?this._monthsShort:this._monthsShort.standalone}function la(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],d=0;12>d;++d)f=l([2e3,d]),this._shortMonthsParse[d]=this.monthsShort(f,"").toLocaleLowerCase(),this._longMonthsParse[d]=this.months(f,"").toLocaleLowerCase();return c?"MMM"===b?(e=sf.call(this._shortMonthsParse,g),-1!==e?e:null):(e=sf.call(this._longMonthsParse,g),-1!==e?e:null):"MMM"===b?(e=sf.call(this._shortMonthsParse,g),-1!==e?e:(e=sf.call(this._longMonthsParse,g),-1!==e?e:null)):(e=sf.call(this._longMonthsParse,g),-1!==e?e:(e=sf.call(this._shortMonthsParse,g),-1!==e?e:null))}function ma(a,b,c){var d,e,f;if(this._monthsParseExact)return la.call(this,a,b,c);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),d=0;12>d;d++){if(e=l([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}}function na(a,b){var c;if(!a.isValid())return a;if("string"==typeof b)if(/^\d+$/.test(b))b=u(b);else if(b=a.localeData().monthsParse(b),!g(b))return a;return c=Math.min(a.date(),ia(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a}function oa(b){return null!=b?(na(this,b),a.updateOffset(this,!0),this):da(this,"Month")}function pa(){return ia(this.year(),this.month())}function qa(a){return this._monthsParseExact?(j(this,"_monthsRegex")||sa.call(this),a?this._monthsShortStrictRegex:this._monthsShortRegex):(j(this,"_monthsShortRegex")||(this._monthsShortRegex=xf),this._monthsShortStrictRegex&&a?this._monthsShortStrictRegex:this._monthsShortRegex)}function ra(a){return this._monthsParseExact?(j(this,"_monthsRegex")||sa.call(this),a?this._monthsStrictRegex:this._monthsRegex):(j(this,"_monthsRegex")||(this._monthsRegex=yf),this._monthsStrictRegex&&a?this._monthsStrictRegex:this._monthsRegex)}function sa(){function a(a,b){return b.length-a.length}var b,c,d=[],e=[],f=[];for(b=0;12>b;b++)c=l([2e3,b]),d.push(this.monthsShort(c,"")),e.push(this.months(c,"")),f.push(this.months(c,"")),f.push(this.monthsShort(c,""));for(d.sort(a),e.sort(a),f.sort(a),b=0;12>b;b++)d[b]=X(d[b]),e[b]=X(e[b]);for(b=0;24>b;b++)f[b]=X(f[b]);this._monthsRegex=new RegExp("^("+f.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+e.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+d.join("|")+")","i")}function ta(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 100>a&&a>=0&&isFinite(h.getFullYear())&&h.setFullYear(a),h}function ua(a){var b=new Date(Date.UTC.apply(null,arguments));return 100>a&&a>=0&&isFinite(b.getUTCFullYear())&&b.setUTCFullYear(a),b}function va(a,b,c){var d=7+b-c,e=(7+ua(a,0,d).getUTCDay()-b)%7;return-e+d-1}function wa(a,b,c,d,e){var f,g,h=(7+c-d)%7,i=va(a,d,e),j=1+7*(b-1)+h+i;return 0>=j?(f=a-1,g=_(f)+j):j>_(a)?(f=a+1,g=j-_(a)):(f=a,g=j),{year:f,dayOfYear:g}}function xa(a,b,c){var d,e,f=va(a.year(),b,c),g=Math.floor((a.dayOfYear()-f-1)/7)+1;return 1>g?(e=a.year()-1,d=g+ya(e,b,c)):g>ya(a.year(),b,c)?(d=g-ya(a.year(),b,c),e=a.year()+1):(e=a.year(),d=g),{week:d,year:e}}function ya(a,b,c){var d=va(a,b,c),e=va(a+1,b,c);return(_(a)-d+e)/7}function za(a){return xa(a,this._week.dow,this._week.doy).week}function Aa(){return this._week.dow}function Ba(){return this._week.doy}function Ca(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")}function Da(a){var b=xa(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")}function Ea(a,b){return"string"!=typeof a?a:isNaN(a)?(a=b.weekdaysParse(a),"number"==typeof a?a:null):parseInt(a,10)}function Fa(a,b){return"string"==typeof a?b.weekdaysParse(a)%7||7:isNaN(a)?null:a}function Ga(a,b){return a?c(this._weekdays)?this._weekdays[a.day()]:this._weekdays[this._weekdays.isFormat.test(b)?"format":"standalone"][a.day()]:c(this._weekdays)?this._weekdays:this._weekdays.standalone}function Ha(a){return a?this._weekdaysShort[a.day()]:this._weekdaysShort}function Ia(a){return a?this._weekdaysMin[a.day()]:this._weekdaysMin}function Ja(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],d=0;7>d;++d)f=l([2e3,1]).day(d),this._minWeekdaysParse[d]=this.weekdaysMin(f,"").toLocaleLowerCase(),this._shortWeekdaysParse[d]=this.weekdaysShort(f,"").toLocaleLowerCase(),this._weekdaysParse[d]=this.weekdays(f,"").toLocaleLowerCase();return c?"dddd"===b?(e=sf.call(this._weekdaysParse,g),-1!==e?e:null):"ddd"===b?(e=sf.call(this._shortWeekdaysParse,g),-1!==e?e:null):(e=sf.call(this._minWeekdaysParse,g),-1!==e?e:null):"dddd"===b?(e=sf.call(this._weekdaysParse,g),-1!==e?e:(e=sf.call(this._shortWeekdaysParse,g),-1!==e?e:(e=sf.call(this._minWeekdaysParse,g),-1!==e?e:null))):"ddd"===b?(e=sf.call(this._shortWeekdaysParse,g),-1!==e?e:(e=sf.call(this._weekdaysParse,g),-1!==e?e:(e=sf.call(this._minWeekdaysParse,g),-1!==e?e:null))):(e=sf.call(this._minWeekdaysParse,g),-1!==e?e:(e=sf.call(this._weekdaysParse,g),-1!==e?e:(e=sf.call(this._shortWeekdaysParse,g),-1!==e?e:null)))}function Ka(a,b,c){var d,e,f;if(this._weekdaysParseExact)return Ja.call(this,a,b,c);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),d=0;7>d;d++){if(e=l([2e3,1]).day(d),c&&!this._fullWeekdaysParse[d]&&(this._fullWeekdaysParse[d]=new RegExp("^"+this.weekdays(e,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[d]=new RegExp("^"+this.weekdaysShort(e,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[d]=new RegExp("^"+this.weekdaysMin(e,"").replace(".",".?")+"$","i")),this._weekdaysParse[d]||(f="^"+this.weekdays(e,"")+"|^"+this.weekdaysShort(e,"")+"|^"+this.weekdaysMin(e,""),this._weekdaysParse[d]=new RegExp(f.replace(".",""),"i")),c&&"dddd"===b&&this._fullWeekdaysParse[d].test(a))return d;if(c&&"ddd"===b&&this._shortWeekdaysParse[d].test(a))return d;if(c&&"dd"===b&&this._minWeekdaysParse[d].test(a))return d;if(!c&&this._weekdaysParse[d].test(a))return d}}function La(a){if(!this.isValid())return null!=a?this:NaN;var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=Ea(a,this.localeData()),this.add(a-b,"d")):b}function Ma(a){if(!this.isValid())return null!=a?this:NaN;var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")}function Na(a){if(!this.isValid())return null!=a?this:NaN;if(null!=a){var b=Fa(a,this.localeData());return this.day(this.day()%7?b:b-7)}return this.day()||7}function Oa(a){return this._weekdaysParseExact?(j(this,"_weekdaysRegex")||Ra.call(this),a?this._weekdaysStrictRegex:this._weekdaysRegex):(j(this,"_weekdaysRegex")||(this._weekdaysRegex=Df),this._weekdaysStrictRegex&&a?this._weekdaysStrictRegex:this._weekdaysRegex)}function Pa(a){return this._weekdaysParseExact?(j(this,"_weekdaysRegex")||Ra.call(this),a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(j(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Ef),this._weekdaysShortStrictRegex&&a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Qa(a){return this._weekdaysParseExact?(j(this,"_weekdaysRegex")||Ra.call(this),a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(j(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Ff),this._weekdaysMinStrictRegex&&a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Ra(){function a(a,b){return b.length-a.length}var b,c,d,e,f,g=[],h=[],i=[],j=[];for(b=0;7>b;b++)c=l([2e3,1]).day(b),d=this.weekdaysMin(c,""),e=this.weekdaysShort(c,""),f=this.weekdays(c,""),g.push(d),h.push(e),i.push(f),j.push(d),j.push(e),j.push(f);for(g.sort(a),h.sort(a),i.sort(a),j.sort(a),b=0;7>b;b++)h[b]=X(h[b]),i[b]=X(i[b]),j[b]=X(j[b]);this._weekdaysRegex=new RegExp("^("+j.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+g.join("|")+")","i")}function Sa(){return this.hours()%12||12}function Ta(){return this.hours()||24}function Ua(a,b){P(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function Va(a,b){return b._meridiemParse}function Wa(a){return"p"===(a+"").toLowerCase().charAt(0)}function Xa(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"}function Ya(a){return a?a.toLowerCase().replace("_","-"):a}function Za(a){for(var b,c,d,e,f=0;f<a.length;){for(e=Ya(a[f]).split("-"),b=e.length,c=Ya(a[f+1]),c=c?c.split("-"):null;b>0;){if(d=$a(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&v(e,c,!0)>=b-1)break;b--}f++}return null}function $a(a){var b=null;if(!Kf[a]&&"undefined"!=typeof module&&module&&module.exports)try{b=Gf._abbr;var c=require;c("./locale/"+a),_a(b)}catch(d){}return Kf[a]}function _a(a,b){var c;return a&&(c=f(b)?cb(a):ab(a,b),c&&(Gf=c)),Gf._abbr}function ab(a,b){if(null!==b){var c=Jf;if(b.abbr=a,null!=Kf[a])y("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),c=Kf[a]._config;else if(null!=b.parentLocale){if(null==Kf[b.parentLocale])return Lf[b.parentLocale]||(Lf[b.parentLocale]=[]),Lf[b.parentLocale].push({name:a,config:b}),null;c=Kf[b.parentLocale]._config}return Kf[a]=new C(B(c,b)),Lf[a]&&Lf[a].forEach(function(a){ab(a.name,a.config)}),_a(a),Kf[a]}return delete Kf[a],null}function bb(a,b){if(null!=b){var c,d,e=Jf;d=$a(a),null!=d&&(e=d._config),b=B(e,b),c=new C(b),c.parentLocale=Kf[a],Kf[a]=c,_a(a)}else null!=Kf[a]&&(null!=Kf[a].parentLocale?Kf[a]=Kf[a].parentLocale:null!=Kf[a]&&delete Kf[a]);return Kf[a]}function cb(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return Gf;if(!c(a)){if(b=$a(a))return b;a=[a]}return Za(a)}function db(){return Ee(Kf)}function eb(a){var b,c=a._a;return c&&-2===n(a).overflow&&(b=c[kf]<0||c[kf]>11?kf:c[lf]<1||c[lf]>ia(c[jf],c[kf])?lf:c[mf]<0||c[mf]>24||24===c[mf]&&(0!==c[nf]||0!==c[of]||0!==c[pf])?mf:c[nf]<0||c[nf]>59?nf:c[of]<0||c[of]>59?of:c[pf]<0||c[pf]>999?pf:-1,n(a)._overflowDayOfYear&&(jf>b||b>lf)&&(b=lf),n(a)._overflowWeeks&&-1===b&&(b=qf),n(a)._overflowWeekday&&-1===b&&(b=rf),n(a).overflow=b),a}function fb(a,b,c){return null!=a?a:null!=b?b:c}function gb(b){var c=new Date(a.now());return b._useUTC?[c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate()]:[c.getFullYear(),c.getMonth(),c.getDate()]}function hb(a){var b,c,d,e,f=[];if(!a._d){for(d=gb(a),a._w&&null==a._a[lf]&&null==a._a[kf]&&ib(a),null!=a._dayOfYear&&(e=fb(a._a[jf],d[jf]),(a._dayOfYear>_(e)||0===a._dayOfYear)&&(n(a)._overflowDayOfYear=!0),c=ua(e,0,a._dayOfYear),a._a[kf]=c.getUTCMonth(),a._a[lf]=c.getUTCDate()),b=0;3>b&&null==a._a[b];++b)a._a[b]=f[b]=d[b];for(;7>b;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[mf]&&0===a._a[nf]&&0===a._a[of]&&0===a._a[pf]&&(a._nextDay=!0,a._a[mf]=0),a._d=(a._useUTC?ua:ta).apply(null,f),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[mf]=24),a._w&&"undefined"!=typeof a._w.d&&a._w.d!==a._d.getDay()&&(n(a).weekdayMismatch=!0)}}function ib(a){var b,c,d,e,f,g,h,i;if(b=a._w,null!=b.GG||null!=b.W||null!=b.E)f=1,g=4,c=fb(b.GG,a._a[jf],xa(zb(),1,4).year),d=fb(b.W,1),e=fb(b.E,1),(1>e||e>7)&&(i=!0);else{f=a._locale._week.dow,g=a._locale._week.doy;var j=xa(zb(),f,g);c=fb(b.gg,a._a[jf],j.year),d=fb(b.w,j.week),null!=b.d?(e=b.d,(0>e||e>6)&&(i=!0)):null!=b.e?(e=b.e+f,(b.e<0||b.e>6)&&(i=!0)):e=f}1>d||d>ya(c,f,g)?n(a)._overflowWeeks=!0:null!=i?n(a)._overflowWeekday=!0:(h=wa(c,d,e,f,g),a._a[jf]=h.year,a._dayOfYear=h.dayOfYear)}function jb(a){var b,c,d,e,f,g,h=a._i,i=Mf.exec(h)||Nf.exec(h);if(i){for(n(a).iso=!0,b=0,c=Pf.length;c>b;b++)if(Pf[b][1].exec(i[1])){e=Pf[b][0],d=Pf[b][2]!==!1;break}if(null==e)return void(a._isValid=!1);if(i[3]){for(b=0,c=Qf.length;c>b;b++)if(Qf[b][1].exec(i[3])){f=(i[2]||" ")+Qf[b][0];break}if(null==f)return void(a._isValid=!1)}if(!d&&null!=f)return void(a._isValid=!1);if(i[4]){if(!Of.exec(i[4]))return void(a._isValid=!1);g="Z"}a._f=e+(f||"")+(g||""),rb(a)}else a._isValid=!1}function kb(a,b,c,d,e,f){var g=[lb(a),wf.indexOf(b),parseInt(c,10),parseInt(d,10),parseInt(e,10)];return f&&g.push(parseInt(f,10)),g}function lb(a){var b=parseInt(a,10);return 49>=b?2e3+b:999>=b?1900+b:b}function mb(a){return a.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}function nb(a,b,c){if(a){var d=Bf.indexOf(a),e=new Date(b[0],b[1],b[2]).getDay();if(d!==e)return n(c).weekdayMismatch=!0,c._isValid=!1,!1}return!0}function ob(a,b,c){if(a)return Tf[a];if(b)return 0;var d=parseInt(c,10),e=d%100,f=(d-e)/100;return 60*f+e}function pb(a){var b=Sf.exec(mb(a._i));if(b){var c=kb(b[4],b[3],b[2],b[5],b[6],b[7]);if(!nb(b[1],c,a))return;a._a=c,a._tzm=ob(b[8],b[9],b[10]),a._d=ua.apply(null,a._a),a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),n(a).rfc2822=!0}else a._isValid=!1}function qb(b){var c=Rf.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(jb(b),void(b._isValid===!1&&(delete b._isValid,pb(b),b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b)))))}function rb(b){if(b._f===a.ISO_8601)return void jb(b);if(b._f===a.RFC_2822)return void pb(b);b._a=[],n(b).empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,j=0;for(e=T(b._f,b._locale).match(Ne)||[],c=0;c<e.length;c++)f=e[c],d=(h.match(V(f,b))||[])[0],d&&(g=h.substr(0,h.indexOf(d)),g.length>0&&n(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),j+=d.length),Qe[f]?(d?n(b).empty=!1:n(b).unusedTokens.push(f),$(f,d,b)):b._strict&&!d&&n(b).unusedTokens.push(f);n(b).charsLeftOver=i-j,h.length>0&&n(b).unusedInput.push(h),b._a[mf]<=12&&n(b).bigHour===!0&&b._a[mf]>0&&(n(b).bigHour=void 0),n(b).parsedDateParts=b._a.slice(0),n(b).meridiem=b._meridiem,b._a[mf]=sb(b._locale,b._a[mf],b._meridiem),hb(b),eb(b)}function sb(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&12>b&&(b+=12),d||12!==b||(b=0),b):b}function tb(a){var b,c,d,e,f;if(0===a._f.length)return n(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=0;e<a._f.length;e++)f=0,b=q({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._f=a._f[e],rb(b),o(b)&&(f+=n(b).charsLeftOver,f+=10*n(b).unusedTokens.length,n(b).score=f,(null==d||d>f)&&(d=f,c=b));k(a,c||b)}function ub(a){if(!a._d){var b=L(a._i);a._a=i([b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],function(a){return a&&parseInt(a,10)}),hb(a)}}function vb(a){var b=new r(eb(wb(a)));return b._nextDay&&(b.add(1,"d"),b._nextDay=void 0),b}function wb(a){var b=a._i,d=a._f;return a._locale=a._locale||cb(a._l),null===b||void 0===d&&""===b?p({nullInput:!0}):("string"==typeof b&&(a._i=b=a._locale.preparse(b)),s(b)?new r(eb(b)):(h(b)?a._d=b:c(d)?tb(a):d?rb(a):xb(a),o(a)||(a._d=null),a))}function xb(b){var e=b._i;f(e)?b._d=new Date(a.now()):h(e)?b._d=new Date(e.valueOf()):"string"==typeof e?qb(b):c(e)?(b._a=i(e.slice(0),function(a){return parseInt(a,10)}),hb(b)):d(e)?ub(b):g(e)?b._d=new Date(e):a.createFromInputFallback(b)}function yb(a,b,f,g,h){var i={};return(f===!0||f===!1)&&(g=f,f=void 0),(d(a)&&e(a)||c(a)&&0===a.length)&&(a=void 0),i._isAMomentObject=!0,i._useUTC=i._isUTC=h,i._l=f,i._i=a,i._f=b,i._strict=g,vb(i)}function zb(a,b,c,d){return yb(a,b,c,d,!1)}function Ab(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return zb();for(d=b[0],e=1;e<b.length;++e)(!b[e].isValid()||b[e][a](d))&&(d=b[e]);return d}function Bb(){var a=[].slice.call(arguments,0);return Ab("isBefore",a)}function Cb(){var a=[].slice.call(arguments,0);return Ab("isAfter",a)}function Db(a){for(var b in a)if(-1===sf.call(Xf,b)||null!=a[b]&&isNaN(a[b]))return!1;for(var c=!1,d=0;d<Xf.length;++d)if(a[Xf[d]]){if(c)return!1;parseFloat(a[Xf[d]])!==u(a[Xf[d]])&&(c=!0)}return!0}function Eb(){return this._isValid}function Fb(){return Yb(NaN)}function Gb(a){var b=L(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._isValid=Db(b),this._milliseconds=+k+1e3*j+6e4*i+1e3*h*60*60,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=cb(),this._bubble()}function Hb(a){return a instanceof Gb}function Ib(a){return 0>a?-1*Math.round(-1*a):Math.round(a)}function Jb(a,b){P(a,0,0,function(){var a=this.utcOffset(),c="+";return 0>a&&(a=-a,c="-"),c+O(~~(a/60),2)+b+O(~~a%60,2)})}function Kb(a,b){var c=(b||"").match(a);if(null===c)return null;var d=c[c.length-1]||[],e=(d+"").match(Yf)||["-",0,0],f=+(60*e[1])+u(e[2]);return 0===f?0:"+"===e[0]?f:-f}function Lb(b,c){var d,e;return c._isUTC?(d=c.clone(),e=(s(b)||h(b)?b.valueOf():zb(b).valueOf())-d.valueOf(),d._d.setTime(d._d.valueOf()+e),a.updateOffset(d,!1),d):zb(b).local()}function Mb(a){return 15*-Math.round(a._d.getTimezoneOffset()/15)}function Nb(b,c,d){var e,f=this._offset||0;if(!this.isValid())return null!=b?this:NaN;if(null!=b){if("string"==typeof b){if(b=Kb(df,b),null===b)return this}else Math.abs(b)<16&&!d&&(b=60*b);return!this._isUTC&&c&&(e=Mb(this)),this._offset=b,this._isUTC=!0,null!=e&&this.add(e,"m"),f!==b&&(!c||this._changeInProgress?bc(this,Yb(b-f,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?f:Mb(this)}function Ob(a,b){return null!=a?("string"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}function Pb(a){return this.utcOffset(0,a)}function Qb(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(Mb(this),"m")),this}function Rb(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var a=Kb(cf,this._i);null!=a?this.utcOffset(a):this.utcOffset(0,!0)}return this}function Sb(a){return this.isValid()?(a=a?zb(a).utcOffset():0,(this.utcOffset()-a)%60===0):!1}function Tb(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ub(){if(!f(this._isDSTShifted))return this._isDSTShifted;var a={};if(q(a,this),a=wb(a),a._a){var b=a._isUTC?l(a._a):zb(a._a);this._isDSTShifted=this.isValid()&&v(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Vb(){return this.isValid()?!this._isUTC:!1}function Wb(){return this.isValid()?this._isUTC:!1}function Xb(){return this.isValid()?this._isUTC&&0===this._offset:!1}function Yb(a,b){var c,d,e,f=a,h=null;return Hb(a)?f={ms:a._milliseconds,d:a._days,M:a._months}:g(a)?(f={},b?f[b]=a:f.milliseconds=a):(h=Zf.exec(a))?(c="-"===h[1]?-1:1,f={y:0,d:u(h[lf])*c,h:u(h[mf])*c,m:u(h[nf])*c,s:u(h[of])*c,ms:u(Ib(1e3*h[pf]))*c}):(h=$f.exec(a))?(c="-"===h[1]?-1:("+"===h[1],1),f={y:Zb(h[2],c),M:Zb(h[3],c),w:Zb(h[4],c),d:Zb(h[5],c),h:Zb(h[6],c),m:Zb(h[7],c),s:Zb(h[8],c)}):null==f?f={}:"object"==typeof f&&("from"in f||"to"in f)&&(e=_b(zb(f.from),zb(f.to)),f={},f.ms=e.milliseconds,f.M=e.months),d=new Gb(f),Hb(a)&&j(a,"_locale")&&(d._locale=a._locale),d}function Zb(a,b){var c=a&&parseFloat(a.replace(",","."));return(isNaN(c)?0:c)*b}function $b(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function _b(a,b){var c;return a.isValid()&&b.isValid()?(b=Lb(b,a),a.isBefore(b)?c=$b(a,b):(c=$b(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c):{milliseconds:0,months:0}}function ac(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(y(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=Yb(c,d),bc(this,e,a),this}}function bc(b,c,d,e){var f=c._milliseconds,g=Ib(c._days),h=Ib(c._months);b.isValid()&&(e=null==e?!0:e,h&&na(b,da(b,"Month")+h*d),g&&ea(b,"Date",da(b,"Date")+g*d),f&&b._d.setTime(b._d.valueOf()+f*d),e&&a.updateOffset(b,g||h))}function cc(a,b){var c=a.diff(b,"days",!0);return-6>c?"sameElse":-1>c?"lastWeek":0>c?"lastDay":1>c?"sameDay":2>c?"nextDay":7>c?"nextWeek":"sameElse"}function dc(b,c){var d=b||zb(),e=Lb(d,this).startOf("day"),f=a.calendarFormat(this,e)||"sameElse",g=c&&(z(c[f])?c[f].call(this,d):c[f]);return this.format(g||this.localeData().calendar(f,this,zb(d)))}function ec(){return new r(this)}function fc(a,b){var c=s(a)?a:zb(a);return this.isValid()&&c.isValid()?(b=K(f(b)?"millisecond":b),"millisecond"===b?this.valueOf()>c.valueOf():c.valueOf()<this.clone().startOf(b).valueOf()):!1}function gc(a,b){var c=s(a)?a:zb(a);return this.isValid()&&c.isValid()?(b=K(f(b)?"millisecond":b),"millisecond"===b?this.valueOf()<c.valueOf():this.clone().endOf(b).valueOf()<c.valueOf()):!1}function hc(a,b,c,d){return d=d||"()",("("===d[0]?this.isAfter(a,c):!this.isBefore(a,c))&&(")"===d[1]?this.isBefore(b,c):!this.isAfter(b,c))}function ic(a,b){var c,d=s(a)?a:zb(a);return this.isValid()&&d.isValid()?(b=K(b||"millisecond"),"millisecond"===b?this.valueOf()===d.valueOf():(c=d.valueOf(),this.clone().startOf(b).valueOf()<=c&&c<=this.clone().endOf(b).valueOf())):!1}function jc(a,b){return this.isSame(a,b)||this.isAfter(a,b)}function kc(a,b){return this.isSame(a,b)||this.isBefore(a,b)}function lc(a,b,c){var d,e,f;if(!this.isValid())return NaN;if(d=Lb(a,this),!d.isValid())return NaN;switch(e=6e4*(d.utcOffset()-this.utcOffset()),b=K(b)){case"year":f=mc(this,d)/12;break;case"month":f=mc(this,d);break;case"quarter":f=mc(this,d)/3;break;case"second":f=(this-d)/1e3;break;case"minute":f=(this-d)/6e4;break;case"hour":f=(this-d)/36e5;break;case"day":f=(this-d-e)/864e5;break;case"week":f=(this-d-e)/6048e5;break;default:f=this-d}return c?f:t(f)}function mc(a,b){var c,d,e=12*(b.year()-a.year())+(b.month()-a.month()),f=a.clone().add(e,"months");return 0>b-f?(c=a.clone().add(e-1,"months"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,"months"),d=(b-f)/(c-f)),-(e+d)||0}function nc(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function oc(){if(!this.isValid())return null;var a=this.clone().utc();return a.year()<0||a.year()>9999?S(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):z(Date.prototype.toISOString)?this.toDate().toISOString():S(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function pc(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var a="moment",b="";this.isLocal()||(a=0===this.utcOffset()?"moment.utc":"moment.parseZone",b="Z");var c="["+a+'("]',d=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",e="-MM-DD[T]HH:mm:ss.SSS",f=b+'[")]';return this.format(c+d+e+f)}function qc(b){b||(b=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var c=S(this,b);return this.localeData().postformat(c)}function rc(a,b){return this.isValid()&&(s(a)&&a.isValid()||zb(a).isValid())?Yb({to:this,from:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function sc(a){return this.from(zb(),a)}function tc(a,b){return this.isValid()&&(s(a)&&a.isValid()||zb(a).isValid())?Yb({from:this,to:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function uc(a){return this.to(zb(),a)}function vc(a){var b;return void 0===a?this._locale._abbr:(b=cb(a),null!=b&&(this._locale=b),this)}function wc(){return this._locale}function xc(a){switch(a=K(a)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a&&this.weekday(0),"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this}function yc(a){return a=K(a),void 0===a||"millisecond"===a?this:("date"===a&&(a="day"),this.startOf(a).add(1,"isoWeek"===a?"week":a).subtract(1,"ms"))}function zc(){return this._d.valueOf()-6e4*(this._offset||0)}function Ac(){
|
11 |
+
return Math.floor(this.valueOf()/1e3)}function Bc(){return new Date(this.valueOf())}function Cc(){var a=this;return[a.year(),a.month(),a.date(),a.hour(),a.minute(),a.second(),a.millisecond()]}function Dc(){var a=this;return{years:a.year(),months:a.month(),date:a.date(),hours:a.hours(),minutes:a.minutes(),seconds:a.seconds(),milliseconds:a.milliseconds()}}function Ec(){return this.isValid()?this.toISOString():null}function Fc(){return o(this)}function Gc(){return k({},n(this))}function Hc(){return n(this).overflow}function Ic(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Jc(a,b){P(0,[a,a.length],0,b)}function Kc(a){return Oc.call(this,a,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function Lc(a){return Oc.call(this,a,this.isoWeek(),this.isoWeekday(),1,4)}function Mc(){return ya(this.year(),1,4)}function Nc(){var a=this.localeData()._week;return ya(this.year(),a.dow,a.doy)}function Oc(a,b,c,d,e){var f;return null==a?xa(this,d,e).year:(f=ya(a,d,e),b>f&&(b=f),Pc.call(this,a,b,c,d,e))}function Pc(a,b,c,d,e){var f=wa(a,b,c,d,e),g=ua(f.year,0,f.dayOfYear);return this.year(g.getUTCFullYear()),this.month(g.getUTCMonth()),this.date(g.getUTCDate()),this}function Qc(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)}function Rc(a){var b=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")}function Sc(a,b){b[pf]=u(1e3*("0."+a))}function Tc(){return this._isUTC?"UTC":""}function Uc(){return this._isUTC?"Coordinated Universal Time":""}function Vc(a){return zb(1e3*a)}function Wc(){return zb.apply(null,arguments).parseZone()}function Xc(a){return a}function Yc(a,b,c,d){var e=cb(),f=l().set(d,b);return e[c](f,a)}function Zc(a,b,c){if(g(a)&&(b=a,a=void 0),a=a||"",null!=b)return Yc(a,b,c,"month");var d,e=[];for(d=0;12>d;d++)e[d]=Yc(a,d,c,"month");return e}function $c(a,b,c,d){"boolean"==typeof a?(g(b)&&(c=b,b=void 0),b=b||""):(b=a,c=b,a=!1,g(b)&&(c=b,b=void 0),b=b||"");var e=cb(),f=a?e._week.dow:0;if(null!=c)return Yc(b,(c+f)%7,d,"day");var h,i=[];for(h=0;7>h;h++)i[h]=Yc(b,(h+f)%7,d,"day");return i}function _c(a,b){return Zc(a,b,"months")}function ad(a,b){return Zc(a,b,"monthsShort")}function bd(a,b,c){return $c(a,b,c,"weekdays")}function cd(a,b,c){return $c(a,b,c,"weekdaysShort")}function dd(a,b,c){return $c(a,b,c,"weekdaysMin")}function ed(){var a=this._data;return this._milliseconds=jg(this._milliseconds),this._days=jg(this._days),this._months=jg(this._months),a.milliseconds=jg(a.milliseconds),a.seconds=jg(a.seconds),a.minutes=jg(a.minutes),a.hours=jg(a.hours),a.months=jg(a.months),a.years=jg(a.years),this}function fd(a,b,c,d){var e=Yb(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function gd(a,b){return fd(this,a,b,1)}function hd(a,b){return fd(this,a,b,-1)}function id(a){return 0>a?Math.floor(a):Math.ceil(a)}function jd(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data;return f>=0&&g>=0&&h>=0||0>=f&&0>=g&&0>=h||(f+=864e5*id(ld(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=t(f/1e3),i.seconds=a%60,b=t(a/60),i.minutes=b%60,c=t(b/60),i.hours=c%24,g+=t(c/24),e=t(kd(g)),h+=e,g-=id(ld(e)),d=t(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function kd(a){return 4800*a/146097}function ld(a){return 146097*a/4800}function md(a){if(!this.isValid())return NaN;var b,c,d=this._milliseconds;if(a=K(a),"month"===a||"year"===a)return b=this._days+d/864e5,c=this._months+kd(b),"month"===a?c:c/12;switch(b=this._days+Math.round(ld(this._months)),a){case"week":return b/7+d/6048e5;case"day":return b+d/864e5;case"hour":return 24*b+d/36e5;case"minute":return 1440*b+d/6e4;case"second":return 86400*b+d/1e3;case"millisecond":return Math.floor(864e5*b)+d;default:throw new Error("Unknown unit "+a)}}function nd(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*u(this._months/12):NaN}function od(a){return function(){return this.as(a)}}function pd(){return Yb(this)}function qd(a){return a=K(a),this.isValid()?this[a+"s"]():NaN}function rd(a){return function(){return this.isValid()?this._data[a]:NaN}}function sd(){return t(this.days()/7)}function td(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function ud(a,b,c){var d=Yb(a).abs(),e=zg(d.as("s")),f=zg(d.as("m")),g=zg(d.as("h")),h=zg(d.as("d")),i=zg(d.as("M")),j=zg(d.as("y")),k=e<=Ag.ss&&["s",e]||e<Ag.s&&["ss",e]||1>=f&&["m"]||f<Ag.m&&["mm",f]||1>=g&&["h"]||g<Ag.h&&["hh",g]||1>=h&&["d"]||h<Ag.d&&["dd",h]||1>=i&&["M"]||i<Ag.M&&["MM",i]||1>=j&&["y"]||["yy",j];return k[2]=b,k[3]=+a>0,k[4]=c,td.apply(null,k)}function vd(a){return void 0===a?zg:"function"==typeof a?(zg=a,!0):!1}function wd(a,b){return void 0===Ag[a]?!1:void 0===b?Ag[a]:(Ag[a]=b,"s"===a&&(Ag.ss=b-1),!0)}function xd(a){if(!this.isValid())return this.localeData().invalidDate();var b=this.localeData(),c=ud(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function yd(a){return(a>0)-(0>a)||+a}function zd(){if(!this.isValid())return this.localeData().invalidDate();var a,b,c,d=Bg(this._milliseconds)/1e3,e=Bg(this._days),f=Bg(this._months);a=t(d/60),b=t(a/60),d%=60,a%=60,c=t(f/12),f%=12;var g=c,h=f,i=e,j=b,k=a,l=d?d.toFixed(3).replace(/\.?0+$/,""):"",m=this.asSeconds();if(!m)return"P0D";var n=0>m?"-":"",o=yd(this._months)!==yd(m)?"-":"",p=yd(this._days)!==yd(m)?"-":"",q=yd(this._milliseconds)!==yd(m)?"-":"";return n+"P"+(g?o+g+"Y":"")+(h?o+h+"M":"")+(i?p+i+"D":"")+(j||k||l?"T":"")+(j?q+j+"H":"")+(k?q+k+"M":"")+(l?q+l+"S":"")}
|
12 |
+
//! moment.js locale configuration
|
13 |
+
//! locale : Belarusian [be]
|
14 |
+
//! author : Dmitry Demidov : https://github.com/demidov91
|
15 |
+
//! author: Praleska: http://praleska.pro/
|
16 |
+
//! Author : Menelion Elensúle : https://github.com/Oire
|
17 |
+
function Ad(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function Bd(a,b,c){var d={mm:b?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:b?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===c?b?"хвіліна":"хвіліну":"h"===c?b?"гадзіна":"гадзіну":a+" "+Ad(d[c],+a)}
|
18 |
+
//! moment.js locale configuration
|
19 |
+
//! locale : Breton [br]
|
20 |
+
//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
|
21 |
+
function Cd(a,b,c){var d={mm:"munutenn",MM:"miz",dd:"devezh"};return a+" "+Fd(d[c],a)}function Dd(a){switch(Ed(a)){case 1:case 3:case 4:case 5:case 9:return a+" bloaz";default:return a+" vloaz"}}function Ed(a){return a>9?Ed(a%10):a}function Fd(a,b){return 2===b?Gd(a):a}function Gd(a){var b={m:"v",b:"v",d:"z"};return void 0===b[a.charAt(0)]?a:b[a.charAt(0)]+a.substring(1)}
|
22 |
+
//! moment.js locale configuration
|
23 |
+
//! locale : Bosnian [bs]
|
24 |
+
//! author : Nedim Cholich : https://github.com/frontyard
|
25 |
+
//! based on (hr) translation by Bojan Marković
|
26 |
+
function Hd(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}function Id(a){return a>1&&5>a&&1!==~~(a/10)}function Jd(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"pár sekund":"pár sekundami";case"m":return b?"minuta":d?"minutu":"minutou";case"mm":return b||d?e+(Id(a)?"minuty":"minut"):e+"minutami";case"h":return b?"hodina":d?"hodinu":"hodinou";case"hh":return b||d?e+(Id(a)?"hodiny":"hodin"):e+"hodinami";case"d":return b||d?"den":"dnem";case"dd":return b||d?e+(Id(a)?"dny":"dní"):e+"dny";case"M":return b||d?"měsíc":"měsícem";case"MM":return b||d?e+(Id(a)?"měsíce":"měsíců"):e+"měsíci";case"y":return b||d?"rok":"rokem";case"yy":return b||d?e+(Id(a)?"roky":"let"):e+"lety"}}
|
27 |
+
//! moment.js locale configuration
|
28 |
+
//! locale : German (Austria) [de-at]
|
29 |
+
//! author : lluchs : https://github.com/lluchs
|
30 |
+
//! author: Menelion Elensúle: https://github.com/Oire
|
31 |
+
//! author : Martin Groller : https://github.com/MadMG
|
32 |
+
//! author : Mikolaj Dadela : https://github.com/mik01aj
|
33 |
+
function Kd(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]}
|
34 |
+
//! moment.js locale configuration
|
35 |
+
//! locale : German (Switzerland) [de-ch]
|
36 |
+
//! author : sschueller : https://github.com/sschueller
|
37 |
+
function Ld(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]}
|
38 |
+
//! moment.js locale configuration
|
39 |
+
//! locale : German [de]
|
40 |
+
//! author : lluchs : https://github.com/lluchs
|
41 |
+
//! author: Menelion Elensúle: https://github.com/Oire
|
42 |
+
//! author : Mikolaj Dadela : https://github.com/mik01aj
|
43 |
+
function Md(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]}
|
44 |
+
//! moment.js locale configuration
|
45 |
+
//! locale : Estonian [et]
|
46 |
+
//! author : Henry Kehlmann : https://github.com/madhenry
|
47 |
+
//! improvements : Illimar Tambek : https://github.com/ragulka
|
48 |
+
function Nd(a,b,c,d){var e={s:["mõne sekundi","mõni sekund","paar sekundit"],m:["ühe minuti","üks minut"],mm:[a+" minuti",a+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[a+" tunni",a+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[a+" kuu",a+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[a+" aasta",a+" aastat"]};return b?e[c][2]?e[c][2]:e[c][1]:d?e[c][0]:e[c][1]}function Od(a,b,c,d){var e="";switch(c){case"s":return d?"muutaman sekunnin":"muutama sekunti";case"m":return d?"minuutin":"minuutti";case"mm":e=d?"minuutin":"minuuttia";break;case"h":return d?"tunnin":"tunti";case"hh":e=d?"tunnin":"tuntia";break;case"d":return d?"päivän":"päivä";case"dd":e=d?"päivän":"päivää";break;case"M":return d?"kuukauden":"kuukausi";case"MM":e=d?"kuukauden":"kuukautta";break;case"y":return d?"vuoden":"vuosi";case"yy":e=d?"vuoden":"vuotta"}return e=Pd(a,d)+" "+e}function Pd(a,b){return 10>a?b?kh[a]:jh[a]:a}
|
49 |
+
//! moment.js locale configuration
|
50 |
+
//! locale : Konkani Latin script [gom-latn]
|
51 |
+
//! author : The Discoverer : https://github.com/WikiDiscoverer
|
52 |
+
function Qd(a,b,c,d){var e={s:["thodde secondanim","thodde second"],m:["eka mintan","ek minute"],mm:[a+" mintanim",a+" mintam"],h:["eka horan","ek hor"],hh:[a+" horanim",a+" hor"],d:["eka disan","ek dis"],dd:[a+" disanim",a+" dis"],M:["eka mhoinean","ek mhoino"],MM:[a+" mhoineanim",a+" mhoine"],y:["eka vorsan","ek voros"],yy:[a+" vorsanim",a+" vorsam"]};return b?e[c][0]:e[c][1]}
|
53 |
+
//! moment.js locale configuration
|
54 |
+
//! locale : Croatian [hr]
|
55 |
+
//! author : Bojan Marković : https://github.com/bmarkovic
|
56 |
+
function Rd(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}function Sd(a,b,c,d){var e=a;switch(c){case"s":return d||b?"néhány másodperc":"néhány másodperce";case"m":return"egy"+(d||b?" perc":" perce");case"mm":return e+(d||b?" perc":" perce");case"h":return"egy"+(d||b?" óra":" órája");case"hh":return e+(d||b?" óra":" órája");case"d":return"egy"+(d||b?" nap":" napja");case"dd":return e+(d||b?" nap":" napja");case"M":return"egy"+(d||b?" hónap":" hónapja");case"MM":return e+(d||b?" hónap":" hónapja");case"y":return"egy"+(d||b?" év":" éve");case"yy":return e+(d||b?" év":" éve")}return""}function Td(a){return(a?"":"[múlt] ")+"["+wh[this.day()]+"] LT[-kor]"}
|
57 |
+
//! moment.js locale configuration
|
58 |
+
//! locale : Icelandic [is]
|
59 |
+
//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik
|
60 |
+
function Ud(a){return a%100===11?!0:a%10===1?!1:!0}function Vd(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"nokkrar sekúndur":"nokkrum sekúndum";case"m":return b?"mínúta":"mínútu";case"mm":return Ud(a)?e+(b||d?"mínútur":"mínútum"):b?e+"mínúta":e+"mínútu";case"hh":return Ud(a)?e+(b||d?"klukkustundir":"klukkustundum"):e+"klukkustund";case"d":return b?"dagur":d?"dag":"degi";case"dd":return Ud(a)?b?e+"dagar":e+(d?"daga":"dögum"):b?e+"dagur":e+(d?"dag":"degi");case"M":return b?"mánuður":d?"mánuð":"mánuði";case"MM":return Ud(a)?b?e+"mánuðir":e+(d?"mánuði":"mánuðum"):b?e+"mánuður":e+(d?"mánuð":"mánuði");case"y":return b||d?"ár":"ári";case"yy":return Ud(a)?e+(b||d?"ár":"árum"):e+(b||d?"ár":"ári")}}
|
61 |
+
//! moment.js locale configuration
|
62 |
+
//! locale : Luxembourgish [lb]
|
63 |
+
//! author : mweimerskirch : https://github.com/mweimerskirch
|
64 |
+
//! author : David Raison : https://github.com/kwisatz
|
65 |
+
function Wd(a,b,c,d){var e={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return b?e[c][0]:e[c][1]}function Xd(a){var b=a.substr(0,a.indexOf(" "));return Zd(b)?"a "+a:"an "+a}function Yd(a){var b=a.substr(0,a.indexOf(" "));return Zd(b)?"viru "+a:"virun "+a}function Zd(a){if(a=parseInt(a,10),isNaN(a))return!1;if(0>a)return!0;if(10>a)return a>=4&&7>=a?!0:!1;if(100>a){var b=a%10,c=a/10;return Zd(0===b?c:b)}if(1e4>a){for(;a>=10;)a/=10;return Zd(a)}return a/=1e3,Zd(a)}function $d(a,b,c,d){return b?"kelios sekundės":d?"kelių sekundžių":"kelias sekundes"}function _d(a,b,c,d){return b?be(c)[0]:d?be(c)[1]:be(c)[2]}function ae(a){return a%10===0||a>10&&20>a}function be(a){return Bh[a].split("_")}function ce(a,b,c,d){var e=a+" ";return 1===a?e+_d(a,b,c[0],d):b?e+(ae(a)?be(c)[1]:be(c)[0]):d?e+be(c)[1]:e+(ae(a)?be(c)[1]:be(c)[2])}function de(a,b,c){return c?b%10===1&&b%100!==11?a[2]:a[3]:b%10===1&&b%100!==11?a[0]:a[1]}function ee(a,b,c){return a+" "+de(Ch[c],a,b)}function fe(a,b,c){return de(Ch[c],a,b)}function ge(a,b){return b?"dažas sekundes":"dažām sekundēm"}function he(a,b,c,d){var e="";if(b)switch(c){case"s":e="काही सेकंद";break;case"m":e="एक मिनिट";break;case"mm":e="%d मिनिटे";break;case"h":e="एक तास";break;case"hh":e="%d तास";break;case"d":e="एक दिवस";break;case"dd":e="%d दिवस";break;case"M":e="एक महिना";break;case"MM":e="%d महिने";break;case"y":e="एक वर्ष";break;case"yy":e="%d वर्षे"}else switch(c){case"s":e="काही सेकंदां";break;case"m":e="एका मिनिटा";break;case"mm":e="%d मिनिटां";break;case"h":e="एका तासा";break;case"hh":e="%d तासां";break;case"d":e="एका दिवसा";break;case"dd":e="%d दिवसां";break;case"M":e="एका महिन्या";break;case"MM":e="%d महिन्यां";break;case"y":e="एका वर्षा";break;case"yy":e="%d वर्षां"}return e.replace(/%d/i,a)}function ie(a){return 5>a%10&&a%10>1&&~~(a/10)%10!==1}function je(a,b,c){var d=a+" ";switch(c){case"m":return b?"minuta":"minutę";case"mm":return d+(ie(a)?"minuty":"minut");case"h":return b?"godzina":"godzinę";case"hh":return d+(ie(a)?"godziny":"godzin");case"MM":return d+(ie(a)?"miesiące":"miesięcy");case"yy":return d+(ie(a)?"lata":"lat")}}
|
66 |
+
//! moment.js locale configuration
|
67 |
+
//! locale : Romanian [ro]
|
68 |
+
//! author : Vlad Gurdiga : https://github.com/gurdiga
|
69 |
+
//! author : Valentin Agachi : https://github.com/avaly
|
70 |
+
function ke(a,b,c){var d={mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},e=" ";return(a%100>=20||a>=100&&a%100===0)&&(e=" de "),a+e+d[c]}
|
71 |
+
//! moment.js locale configuration
|
72 |
+
//! locale : Russian [ru]
|
73 |
+
//! author : Viktorminator : https://github.com/Viktorminator
|
74 |
+
//! Author : Menelion Elensúle : https://github.com/Oire
|
75 |
+
//! author : Коренберг Марк : https://github.com/socketpair
|
76 |
+
function le(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function me(a,b,c){var d={mm:b?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===c?b?"минута":"минуту":a+" "+le(d[c],+a)}function ne(a){return a>1&&5>a}function oe(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"pár sekúnd":"pár sekundami";case"m":return b?"minúta":d?"minútu":"minútou";case"mm":return b||d?e+(ne(a)?"minúty":"minút"):e+"minútami";case"h":return b?"hodina":d?"hodinu":"hodinou";case"hh":return b||d?e+(ne(a)?"hodiny":"hodín"):e+"hodinami";case"d":return b||d?"deň":"dňom";case"dd":return b||d?e+(ne(a)?"dni":"dní"):e+"dňami";case"M":return b||d?"mesiac":"mesiacom";case"MM":return b||d?e+(ne(a)?"mesiace":"mesiacov"):e+"mesiacmi";case"y":return b||d?"rok":"rokom";case"yy":return b||d?e+(ne(a)?"roky":"rokov"):e+"rokmi"}}
|
77 |
+
//! moment.js locale configuration
|
78 |
+
//! locale : Slovenian [sl]
|
79 |
+
//! author : Robert Sedovšek : https://github.com/sedovsek
|
80 |
+
function pe(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"nekaj sekund":"nekaj sekundami";case"m":return b?"ena minuta":"eno minuto";case"mm":return e+=1===a?b?"minuta":"minuto":2===a?b||d?"minuti":"minutama":5>a?b||d?"minute":"minutami":b||d?"minut":"minutami";case"h":return b?"ena ura":"eno uro";case"hh":return e+=1===a?b?"ura":"uro":2===a?b||d?"uri":"urama":5>a?b||d?"ure":"urami":b||d?"ur":"urami";case"d":return b||d?"en dan":"enim dnem";case"dd":return e+=1===a?b||d?"dan":"dnem":2===a?b||d?"dni":"dnevoma":b||d?"dni":"dnevi";case"M":return b||d?"en mesec":"enim mesecem";case"MM":return e+=1===a?b||d?"mesec":"mesecem":2===a?b||d?"meseca":"mesecema":5>a?b||d?"mesece":"meseci":b||d?"mesecev":"meseci";case"y":return b||d?"eno leto":"enim letom";case"yy":return e+=1===a?b||d?"leto":"letom":2===a?b||d?"leti":"letoma":5>a?b||d?"leta":"leti":b||d?"let":"leti"}}function qe(a){var b=a;return b=-1!==a.indexOf("jaj")?b.slice(0,-3)+"leS":-1!==a.indexOf("jar")?b.slice(0,-3)+"waQ":-1!==a.indexOf("DIS")?b.slice(0,-3)+"nem":b+" pIq"}function re(a){var b=a;return b=-1!==a.indexOf("jaj")?b.slice(0,-3)+"Hu’":-1!==a.indexOf("jar")?b.slice(0,-3)+"wen":-1!==a.indexOf("DIS")?b.slice(0,-3)+"ben":b+" ret"}function se(a,b,c,d){var e=te(a);switch(c){case"mm":return e+" tup";case"hh":return e+" rep";case"dd":return e+" jaj";case"MM":return e+" jar";case"yy":return e+" DIS"}}function te(a){var b=Math.floor(a%1e3/100),c=Math.floor(a%100/10),d=a%10,e="";return b>0&&(e+=di[b]+"vatlh"),c>0&&(e+=(""!==e?" ":"")+di[c]+"maH"),d>0&&(e+=(""!==e?" ":"")+di[d]),""===e?"pagh":e}function ue(a,b,c,d){var e={s:["viensas secunds","'iensas secunds"],m:["'n míut","'iens míut"],mm:[a+" míuts",""+a+" míuts"],h:["'n þora","'iensa þora"],hh:[a+" þoras",""+a+" þoras"],d:["'n ziua","'iensa ziua"],dd:[a+" ziuas",""+a+" ziuas"],M:["'n mes","'iens mes"],MM:[a+" mesen",""+a+" mesen"],y:["'n ar","'iens ar"],yy:[a+" ars",""+a+" ars"]};return d?e[c][0]:b?e[c][0]:e[c][1]}
|
81 |
+
//! moment.js locale configuration
|
82 |
+
//! locale : Ukrainian [uk]
|
83 |
+
//! author : zemlanin : https://github.com/zemlanin
|
84 |
+
//! Author : Menelion Elensúle : https://github.com/Oire
|
85 |
+
function ve(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function we(a,b,c){var d={mm:b?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:b?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===c?b?"хвилина":"хвилину":"h"===c?b?"година":"годину":a+" "+ve(d[c],+a)}function xe(a,b){var c={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};if(!a)return c.nominative;var d=/(\[[ВвУу]\]) ?dddd/.test(b)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(b)?"genitive":"nominative";return c[d][a.day()]}function ye(a){return function(){return a+"о"+(11===this.hours()?"б":"")+"] LT"}}var ze,Ae;Ae=Array.prototype.some?Array.prototype.some:function(a){for(var b=Object(this),c=b.length>>>0,d=0;c>d;d++)if(d in b&&a.call(this,b[d],d,b))return!0;return!1};var Be=a.momentProperties=[],Ce=!1,De={};a.suppressDeprecationWarnings=!1,a.deprecationHandler=null;var Ee;Ee=Object.keys?Object.keys:function(a){var b,c=[];for(b in a)j(a,b)&&c.push(b);return c};var Fe={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Ge={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},He="Invalid date",Ie="%d",Je=/\d{1,2}/,Ke={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Le={},Me={},Ne=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Oe=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Pe={},Qe={},Re=/\d/,Se=/\d\d/,Te=/\d{3}/,Ue=/\d{4}/,Ve=/[+-]?\d{6}/,We=/\d\d?/,Xe=/\d\d\d\d?/,Ye=/\d\d\d\d\d\d?/,Ze=/\d{1,3}/,$e=/\d{1,4}/,_e=/[+-]?\d{1,6}/,af=/\d+/,bf=/[+-]?\d+/,cf=/Z|[+-]\d\d:?\d\d/gi,df=/Z|[+-]\d\d(?::?\d\d)?/gi,ef=/[+-]?\d+(\.\d{1,3})?/,ff=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,gf={},hf={},jf=0,kf=1,lf=2,mf=3,nf=4,of=5,pf=6,qf=7,rf=8;P("Y",0,0,function(){var a=this.year();return 9999>=a?""+a:"+"+a}),P(0,["YY",2],0,function(){return this.year()%100}),P(0,["YYYY",4],0,"year"),P(0,["YYYYY",5],0,"year"),P(0,["YYYYYY",6,!0],0,"year"),J("year","y"),M("year",1),U("Y",bf),U("YY",We,Se),U("YYYY",$e,Ue),U("YYYYY",_e,Ve),U("YYYYYY",_e,Ve),Y(["YYYYY","YYYYYY"],jf),Y("YYYY",function(b,c){c[jf]=2===b.length?a.parseTwoDigitYear(b):u(b)}),Y("YY",function(b,c){c[jf]=a.parseTwoDigitYear(b)}),Y("Y",function(a,b){b[jf]=parseInt(a,10)}),a.parseTwoDigitYear=function(a){return u(a)+(u(a)>68?1900:2e3)};var sf,tf=ca("FullYear",!0);sf=Array.prototype.indexOf?Array.prototype.indexOf:function(a){var b;for(b=0;b<this.length;++b)if(this[b]===a)return b;return-1},P("M",["MM",2],"Mo",function(){return this.month()+1}),P("MMM",0,0,function(a){return this.localeData().monthsShort(this,a)}),P("MMMM",0,0,function(a){return this.localeData().months(this,a)}),J("month","M"),M("month",8),U("M",We),U("MM",We,Se),U("MMM",function(a,b){return b.monthsShortRegex(a)}),U("MMMM",function(a,b){return b.monthsRegex(a)}),Y(["M","MM"],function(a,b){b[kf]=u(a)-1}),Y(["MMM","MMMM"],function(a,b,c,d){var e=c._locale.monthsParse(a,d,c._strict);null!=e?b[kf]=e:n(c).invalidMonth=a});var uf=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,vf="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),wf="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),xf=ff,yf=ff;P("w",["ww",2],"wo","week"),P("W",["WW",2],"Wo","isoWeek"),J("week","w"),J("isoWeek","W"),M("week",5),M("isoWeek",5),U("w",We),U("ww",We,Se),U("W",We),U("WW",We,Se),Z(["w","ww","W","WW"],function(a,b,c,d){b[d.substr(0,1)]=u(a)});var zf={dow:0,doy:6};P("d",0,"do","day"),P("dd",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),P("ddd",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),P("dddd",0,0,function(a){return this.localeData().weekdays(this,a)}),P("e",0,0,"weekday"),P("E",0,0,"isoWeekday"),J("day","d"),J("weekday","e"),J("isoWeekday","E"),M("day",11),M("weekday",11),M("isoWeekday",11),U("d",We),U("e",We),U("E",We),U("dd",function(a,b){return b.weekdaysMinRegex(a)}),U("ddd",function(a,b){return b.weekdaysShortRegex(a)}),U("dddd",function(a,b){return b.weekdaysRegex(a)}),Z(["dd","ddd","dddd"],function(a,b,c,d){var e=c._locale.weekdaysParse(a,d,c._strict);null!=e?b.d=e:n(c).invalidWeekday=a}),Z(["d","e","E"],function(a,b,c,d){b[d]=u(a)});var Af="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Bf="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Cf="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Df=ff,Ef=ff,Ff=ff;P("H",["HH",2],0,"hour"),P("h",["hh",2],0,Sa),P("k",["kk",2],0,Ta),P("hmm",0,0,function(){return""+Sa.apply(this)+O(this.minutes(),2)}),P("hmmss",0,0,function(){return""+Sa.apply(this)+O(this.minutes(),2)+O(this.seconds(),2)}),P("Hmm",0,0,function(){return""+this.hours()+O(this.minutes(),2)}),P("Hmmss",0,0,function(){return""+this.hours()+O(this.minutes(),2)+O(this.seconds(),2)}),Ua("a",!0),Ua("A",!1),J("hour","h"),M("hour",13),U("a",Va),U("A",Va),U("H",We),U("h",We),U("k",We),U("HH",We,Se),U("hh",We,Se),U("kk",We,Se),U("hmm",Xe),U("hmmss",Ye),U("Hmm",Xe),U("Hmmss",Ye),Y(["H","HH"],mf),Y(["k","kk"],function(a,b,c){var d=u(a);b[mf]=24===d?0:d}),Y(["a","A"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),Y(["h","hh"],function(a,b,c){b[mf]=u(a),n(c).bigHour=!0}),Y("hmm",function(a,b,c){var d=a.length-2;b[mf]=u(a.substr(0,d)),b[nf]=u(a.substr(d)),n(c).bigHour=!0}),Y("hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[mf]=u(a.substr(0,d)),b[nf]=u(a.substr(d,2)),b[of]=u(a.substr(e)),n(c).bigHour=!0}),Y("Hmm",function(a,b,c){var d=a.length-2;b[mf]=u(a.substr(0,d)),b[nf]=u(a.substr(d))}),Y("Hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[mf]=u(a.substr(0,d)),b[nf]=u(a.substr(d,2)),b[of]=u(a.substr(e))});var Gf,Hf=/[ap]\.?m?\.?/i,If=ca("Hours",!0),Jf={calendar:Fe,longDateFormat:Ge,invalidDate:He,ordinal:Ie,dayOfMonthOrdinalParse:Je,relativeTime:Ke,months:vf,monthsShort:wf,week:zf,weekdays:Af,weekdaysMin:Cf,weekdaysShort:Bf,meridiemParse:Hf},Kf={},Lf={},Mf=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Nf=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Of=/Z|[+-]\d\d(?::?\d\d)?/,Pf=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Qf=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Rf=/^\/?Date\((\-?\d+)/i,Sf=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,Tf={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};a.createFromInputFallback=x("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),a.ISO_8601=function(){},a.RFC_2822=function(){};var Uf=x("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var a=zb.apply(null,arguments);return this.isValid()&&a.isValid()?this>a?this:a:p()}),Vf=x("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var a=zb.apply(null,arguments);return this.isValid()&&a.isValid()?a>this?this:a:p()}),Wf=function(){return Date.now?Date.now():+new Date},Xf=["year","quarter","month","week","day","hour","minute","second","millisecond"];Jb("Z",":"),Jb("ZZ",""),U("Z",df),U("ZZ",df),Y(["Z","ZZ"],function(a,b,c){c._useUTC=!0,c._tzm=Kb(df,a)});var Yf=/([\+\-]|\d\d)/gi;a.updateOffset=function(){};var Zf=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,$f=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;Yb.fn=Gb.prototype,Yb.invalid=Fb;var _f=ac(1,"add"),ag=ac(-1,"subtract");a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",a.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var bg=x("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(a){return void 0===a?this.localeData():this.locale(a)});P(0,["gg",2],0,function(){return this.weekYear()%100}),P(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Jc("gggg","weekYear"),Jc("ggggg","weekYear"),Jc("GGGG","isoWeekYear"),Jc("GGGGG","isoWeekYear"),J("weekYear","gg"),J("isoWeekYear","GG"),M("weekYear",1),M("isoWeekYear",1),U("G",bf),U("g",bf),U("GG",We,Se),U("gg",We,Se),U("GGGG",$e,Ue),U("gggg",$e,Ue),U("GGGGG",_e,Ve),U("ggggg",_e,Ve),Z(["gggg","ggggg","GGGG","GGGGG"],function(a,b,c,d){b[d.substr(0,2)]=u(a)}),Z(["gg","GG"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),P("Q",0,"Qo","quarter"),J("quarter","Q"),M("quarter",7),U("Q",Re),Y("Q",function(a,b){b[kf]=3*(u(a)-1)}),P("D",["DD",2],"Do","date"),J("date","D"),M("date",9),U("D",We),U("DD",We,Se),U("Do",function(a,b){return a?b._dayOfMonthOrdinalParse||b._ordinalParse:b._dayOfMonthOrdinalParseLenient}),Y(["D","DD"],lf),Y("Do",function(a,b){b[lf]=u(a.match(We)[0],10)});var cg=ca("Date",!0);P("DDD",["DDDD",3],"DDDo","dayOfYear"),J("dayOfYear","DDD"),M("dayOfYear",4),U("DDD",Ze),U("DDDD",Te),Y(["DDD","DDDD"],function(a,b,c){c._dayOfYear=u(a)}),P("m",["mm",2],0,"minute"),J("minute","m"),M("minute",14),U("m",We),U("mm",We,Se),Y(["m","mm"],nf);var dg=ca("Minutes",!1);P("s",["ss",2],0,"second"),J("second","s"),M("second",15),U("s",We),U("ss",We,Se),Y(["s","ss"],of);var eg=ca("Seconds",!1);P("S",0,0,function(){return~~(this.millisecond()/100)}),P(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),P(0,["SSS",3],0,"millisecond"),P(0,["SSSS",4],0,function(){return 10*this.millisecond()}),P(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),P(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),P(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),P(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),P(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),J("millisecond","ms"),M("millisecond",16),U("S",Ze,Re),U("SS",Ze,Se),U("SSS",Ze,Te);var fg;for(fg="SSSS";fg.length<=9;fg+="S")U(fg,af);for(fg="S";fg.length<=9;fg+="S")Y(fg,Sc);var gg=ca("Milliseconds",!1);P("z",0,0,"zoneAbbr"),P("zz",0,0,"zoneName");var hg=r.prototype;hg.add=_f,hg.calendar=dc,hg.clone=ec,hg.diff=lc,hg.endOf=yc,hg.format=qc,hg.from=rc,hg.fromNow=sc,hg.to=tc,hg.toNow=uc,hg.get=fa,hg.invalidAt=Hc,hg.isAfter=fc,hg.isBefore=gc,hg.isBetween=hc,hg.isSame=ic,hg.isSameOrAfter=jc,hg.isSameOrBefore=kc,hg.isValid=Fc,hg.lang=bg,hg.locale=vc,hg.localeData=wc,hg.max=Vf,hg.min=Uf,hg.parsingFlags=Gc,hg.set=ga,hg.startOf=xc,hg.subtract=ag,hg.toArray=Cc,hg.toObject=Dc,hg.toDate=Bc,hg.toISOString=oc,hg.inspect=pc,hg.toJSON=Ec,hg.toString=nc,hg.unix=Ac,hg.valueOf=zc,hg.creationData=Ic,hg.year=tf,hg.isLeapYear=ba,hg.weekYear=Kc,hg.isoWeekYear=Lc,hg.quarter=hg.quarters=Qc,hg.month=oa,hg.daysInMonth=pa,hg.week=hg.weeks=Ca,hg.isoWeek=hg.isoWeeks=Da,hg.weeksInYear=Nc,hg.isoWeeksInYear=Mc,hg.date=cg,hg.day=hg.days=La,hg.weekday=Ma,hg.isoWeekday=Na,hg.dayOfYear=Rc,hg.hour=hg.hours=If,hg.minute=hg.minutes=dg,hg.second=hg.seconds=eg,hg.millisecond=hg.milliseconds=gg,hg.utcOffset=Nb,hg.utc=Pb,hg.local=Qb,hg.parseZone=Rb,hg.hasAlignedHourOffset=Sb,hg.isDST=Tb,hg.isLocal=Vb,hg.isUtcOffset=Wb,hg.isUtc=Xb,hg.isUTC=Xb,hg.zoneAbbr=Tc,hg.zoneName=Uc,hg.dates=x("dates accessor is deprecated. Use date instead.",cg),hg.months=x("months accessor is deprecated. Use month instead",oa),hg.years=x("years accessor is deprecated. Use year instead",tf),hg.zone=x("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Ob),hg.isDSTShifted=x("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Ub);var ig=C.prototype;ig.calendar=D,ig.longDateFormat=E,ig.invalidDate=F,ig.ordinal=G,ig.preparse=Xc,ig.postformat=Xc,ig.relativeTime=H,ig.pastFuture=I,ig.set=A,ig.months=ja,ig.monthsShort=ka,ig.monthsParse=ma,ig.monthsRegex=ra,ig.monthsShortRegex=qa,ig.week=za,ig.firstDayOfYear=Ba,ig.firstDayOfWeek=Aa,ig.weekdays=Ga,ig.weekdaysMin=Ia,ig.weekdaysShort=Ha,ig.weekdaysParse=Ka,ig.weekdaysRegex=Oa,ig.weekdaysShortRegex=Pa,ig.weekdaysMinRegex=Qa,ig.isPM=Wa,ig.meridiem=Xa,_a("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===u(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),a.lang=x("moment.lang is deprecated. Use moment.locale instead.",_a),a.langData=x("moment.langData is deprecated. Use moment.localeData instead.",cb);var jg=Math.abs,kg=od("ms"),lg=od("s"),mg=od("m"),ng=od("h"),og=od("d"),pg=od("w"),qg=od("M"),rg=od("y"),sg=rd("milliseconds"),tg=rd("seconds"),ug=rd("minutes"),vg=rd("hours"),wg=rd("days"),xg=rd("months"),yg=rd("years"),zg=Math.round,Ag={ss:44,s:45,m:45,h:22,d:26,M:11},Bg=Math.abs,Cg=Gb.prototype;Cg.isValid=Eb,Cg.abs=ed,Cg.add=gd,Cg.subtract=hd,Cg.as=md,Cg.asMilliseconds=kg,Cg.asSeconds=lg,Cg.asMinutes=mg,Cg.asHours=ng,Cg.asDays=og,Cg.asWeeks=pg,Cg.asMonths=qg,Cg.asYears=rg,Cg.valueOf=nd,Cg._bubble=jd,Cg.clone=pd,Cg.get=qd,Cg.milliseconds=sg,Cg.seconds=tg,Cg.minutes=ug,Cg.hours=vg,Cg.days=wg,Cg.weeks=sd,Cg.months=xg,Cg.years=yg,Cg.humanize=xd,Cg.toISOString=zd,Cg.toString=zd,Cg.toJSON=zd,Cg.locale=vc,Cg.localeData=wc,Cg.toIsoString=x("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",zd),Cg.lang=bg,P("X",0,0,"unix"),P("x",0,0,"valueOf"),U("x",bf),U("X",ef),Y("X",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),Y("x",function(a,b,c){c._d=new Date(u(a))}),
|
86 |
+
//! moment.js
|
87 |
+
//! version : 2.19.2
|
88 |
+
//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
|
89 |
+
//! license : MIT
|
90 |
+
//! momentjs.com
|
91 |
+
a.version="2.19.2",b(zb),a.fn=hg,a.min=Bb,a.max=Cb,a.now=Wf,a.utc=l,a.unix=Vc,a.months=_c,a.isDate=h,a.locale=_a,a.invalid=p,a.duration=Yb,a.isMoment=s,a.weekdays=bd,a.parseZone=Wc,a.localeData=cb,a.isDuration=Hb,a.monthsShort=ad,a.weekdaysMin=dd,a.defineLocale=ab,a.updateLocale=bb,a.locales=db,a.weekdaysShort=cd,a.normalizeUnits=K,a.relativeTimeRounding=vd,a.relativeTimeThreshold=wd,a.calendarFormat=cc,a.prototype=hg,
|
92 |
+
//! moment.js locale configuration
|
93 |
+
//! locale : Afrikaans [af]
|
94 |
+
//! author : Werner Mollentze : https://github.com/wernerm
|
95 |
+
a.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(a){return/^nm$/i.test(a)},meridiem:function(a,b,c){return 12>a?c?"vm":"VM":c?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}}),
|
96 |
+
//! moment.js locale configuration
|
97 |
+
//! locale : Arabic (Algeria) [ar-dz]
|
98 |
+
//! author : Noureddine LOUAHEDJ : https://github.com/noureddineme
|
99 |
+
a.defineLocale("ar-dz",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"أح_إث_ثلا_أر_خم_جم_سب".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:4}}),
|
100 |
+
//! moment.js locale configuration
|
101 |
+
//! locale : Arabic (Kuwait) [ar-kw]
|
102 |
+
//! author : Nusret Parlak: https://github.com/nusretparlak
|
103 |
+
a.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}});
|
104 |
+
//! moment.js locale configuration
|
105 |
+
//! locale : Arabic (Lybia) [ar-ly]
|
106 |
+
//! author : Ali Hmer: https://github.com/kikoanis
|
107 |
+
var Dg={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},Eg=function(a){return 0===a?0:1===a?1:2===a?2:a%100>=3&&10>=a%100?3:a%100>=11?4:5},Fg={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},Gg=function(a){return function(b,c,d,e){var f=Eg(b),g=Fg[a][Eg(b)];return 2===f&&(g=g[c?0:1]),g.replace(/%d/i,b)}},Hg=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];a.defineLocale("ar-ly",{months:Hg,monthsShort:Hg,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:Gg("s"),m:Gg("m"),mm:Gg("m"),h:Gg("h"),hh:Gg("h"),d:Gg("d"),dd:Gg("d"),M:Gg("M"),MM:Gg("M"),y:Gg("y"),yy:Gg("y")},preparse:function(a){return a.replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return Dg[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}}),
|
108 |
+
//! moment.js locale configuration
|
109 |
+
//! locale : Arabic (Morocco) [ar-ma]
|
110 |
+
//! author : ElFadili Yassine : https://github.com/ElFadiliY
|
111 |
+
//! author : Abdel Said : https://github.com/abdelsaid
|
112 |
+
a.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}});
|
113 |
+
//! moment.js locale configuration
|
114 |
+
//! locale : Arabic (Saudi Arabia) [ar-sa]
|
115 |
+
//! author : Suhail Alkowaileet : https://github.com/xsoh
|
116 |
+
var Ig={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},Jg={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};a.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(a){return a.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return Jg[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return Ig[a]}).replace(/,/g,"،")},week:{dow:0,doy:6}}),
|
117 |
+
//! moment.js locale configuration
|
118 |
+
//! locale : Arabic (Tunisia) [ar-tn]
|
119 |
+
//! author : Nader Toukabri : https://github.com/naderio
|
120 |
+
a.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}});
|
121 |
+
//! moment.js locale configuration
|
122 |
+
//! locale : Arabic [ar]
|
123 |
+
//! author : Abdel Said: https://github.com/abdelsaid
|
124 |
+
//! author : Ahmed Elkhatib
|
125 |
+
//! author : forabi https://github.com/forabi
|
126 |
+
var Kg={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},Lg={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},Mg=function(a){return 0===a?0:1===a?1:2===a?2:a%100>=3&&10>=a%100?3:a%100>=11?4:5},Ng={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},Og=function(a){return function(b,c,d,e){var f=Mg(b),g=Ng[a][Mg(b)];return 2===f&&(g=g[c?0:1]),g.replace(/%d/i,b)}},Pg=["كانون الثاني يناير","شباط فبراير","آذار مارس","نيسان أبريل","أيار مايو","حزيران يونيو","تموز يوليو","آب أغسطس","أيلول سبتمبر","تشرين الأول أكتوبر","تشرين الثاني نوفمبر","كانون الأول ديسمبر"];a.defineLocale("ar",{months:Pg,monthsShort:Pg,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:Og("s"),m:Og("m"),mm:Og("m"),h:Og("h"),hh:Og("h"),d:Og("d"),dd:Og("d"),M:Og("M"),MM:Og("M"),y:Og("y"),yy:Og("y")},preparse:function(a){return a.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return Lg[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return Kg[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}});
|
127 |
+
//! moment.js locale configuration
|
128 |
+
//! locale : Azerbaijani [az]
|
129 |
+
//! author : topchiyev : https://github.com/topchiyev
|
130 |
+
var Qg={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};a.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(a){return/^(gündüz|axşam)$/.test(a)},meridiem:function(a,b,c){return 4>a?"gecə":12>a?"səhər":17>a?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(a){if(0===a)return a+"-ıncı";var b=a%10,c=a%100-b,d=a>=100?100:null;return a+(Qg[b]||Qg[c]||Qg[d])},week:{dow:1,doy:7}}),a.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:Bd,mm:Bd,h:Bd,hh:Bd,d:"дзень",dd:Bd,M:"месяц",MM:Bd,y:"год",yy:Bd},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(a){return/^(дня|вечара)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночы":12>a?"раніцы":17>a?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a%10!==2&&a%10!==3||a%100===12||a%100===13?a+"-ы":a+"-і";case"D":return a+"-га";default:return a}},week:{dow:1,doy:7}}),
|
131 |
+
//! moment.js locale configuration
|
132 |
+
//! locale : Bulgarian [bg]
|
133 |
+
//! author : Krasen Borisov : https://github.com/kraz
|
134 |
+
a.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&20>c?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}}),
|
135 |
+
//! moment.js locale configuration
|
136 |
+
//! locale : Bambara [bm]
|
137 |
+
//! author : Estelle Comment : https://github.com/estellecomment
|
138 |
+
a.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}});
|
139 |
+
//! moment.js locale configuration
|
140 |
+
//! locale : Bengali [bn]
|
141 |
+
//! author : Kaushik Gandhi : https://github.com/kaushikgandhi
|
142 |
+
var Rg={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},Sg={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};a.defineLocale("bn",{months:"জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(a){return a.replace(/[১২৩৪৫৬৭৮৯০]/g,function(a){return Sg[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Rg[a]})},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(a,b){return 12===a&&(a=0),"রাত"===b&&a>=4||"দুপুর"===b&&5>a||"বিকাল"===b?a+12:a},meridiem:function(a,b,c){return 4>a?"রাত":10>a?"সকাল":17>a?"দুপুর":20>a?"বিকাল":"রাত"},week:{dow:0,doy:6}});
|
143 |
+
//! moment.js locale configuration
|
144 |
+
//! locale : Tibetan [bo]
|
145 |
+
//! author : Thupten N. Chakrishar : https://github.com/vajradog
|
146 |
+
var Tg={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},Ug={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};a.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(a){return a.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,function(a){return Ug[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Tg[a]})},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(a,b){return 12===a&&(a=0),"མཚན་མོ"===b&&a>=4||"ཉིན་གུང"===b&&5>a||"དགོང་དག"===b?a+12:a},meridiem:function(a,b,c){return 4>a?"མཚན་མོ":10>a?"ཞོགས་ཀས":17>a?"ཉིན་གུང":20>a?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}}),a.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",m:"ur vunutenn",mm:Cd,h:"un eur",hh:"%d eur",d:"un devezh",dd:Cd,M:"ur miz",MM:Cd,y:"ur bloaz",yy:Dd},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(a){var b=1===a?"añ":"vet";return a+b},week:{dow:1,doy:4}}),a.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:Hd,mm:Hd,h:Hd,hh:Hd,d:"dan",dd:Hd,M:"mjesec",MM:Hd,y:"godinu",yy:Hd},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),
|
147 |
+
//! moment.js locale configuration
|
148 |
+
//! locale : Catalan [ca]
|
149 |
+
//! author : Juan G. Hurtado : https://github.com/juanghurtado
|
150 |
+
a.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(a,b){var c=1===a?"r":2===a?"n":3===a?"r":4===a?"t":"è";return("w"===b||"W"===b)&&(c="a"),a+c},week:{dow:1,doy:4}});
|
151 |
+
//! moment.js locale configuration
|
152 |
+
//! locale : Czech [cs]
|
153 |
+
//! author : petrbela : https://github.com/petrbela
|
154 |
+
var Vg="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),Wg="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_");a.defineLocale("cs",{months:Vg,monthsShort:Wg,monthsParse:function(a,b){var c,d=[];for(c=0;12>c;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(Vg,Wg),shortMonthsParse:function(a){var b,c=[];for(b=0;12>b;b++)c[b]=new RegExp("^"+a[b]+"$","i");return c}(Wg),longMonthsParse:function(a){var b,c=[];for(b=0;12>b;b++)c[b]=new RegExp("^"+a[b]+"$","i");return c}(Vg),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:Jd,m:Jd,mm:Jd,h:Jd,hh:Jd,d:Jd,dd:Jd,M:Jd,MM:Jd,y:Jd,yy:Jd},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),
|
155 |
+
//! moment.js locale configuration
|
156 |
+
//! locale : Chuvash [cv]
|
157 |
+
//! author : Anatoly Mironov : https://github.com/mirontoli
|
158 |
+
a.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(a){var b=/сехет$/i.exec(a)?"рен":/ҫул$/i.exec(a)?"тан":"ран";return a+b},past:"%s каялла",s:"пӗр-ик ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}}),
|
159 |
+
//! moment.js locale configuration
|
160 |
+
//! locale : Welsh [cy]
|
161 |
+
//! author : Robert Allen : https://github.com/robgallen
|
162 |
+
//! author : https://github.com/ryangreaves
|
163 |
+
a.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(a){var b=a,c="",d=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"];return b>20?c=40===b||50===b||60===b||80===b||100===b?"fed":"ain":b>0&&(c=d[b]),a+c},week:{dow:1,doy:4}}),
|
164 |
+
//! moment.js locale configuration
|
165 |
+
//! locale : Danish [da]
|
166 |
+
//! author : Ulrik Nielsen : https://github.com/mrbase
|
167 |
+
a.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:Kd,mm:"%d Minuten",h:Kd,hh:"%d Stunden",d:Kd,dd:Kd,M:Kd,MM:Kd,y:Kd,yy:Kd},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH.mm",LLLL:"dddd, D. MMMM YYYY HH.mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:Ld,mm:"%d Minuten",h:Ld,hh:"%d Stunden",d:Ld,dd:Ld,M:Ld,MM:Ld,y:Ld,yy:Ld},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:Md,mm:"%d Minuten",h:Md,hh:"%d Stunden",d:Md,dd:Md,M:Md,MM:Md,y:Md,yy:Md},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});
|
168 |
+
//! moment.js locale configuration
|
169 |
+
//! locale : Maldivian [dv]
|
170 |
+
//! author : Jawish Hameed : https://github.com/jawish
|
171 |
+
var Xg=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],Yg=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];a.defineLocale("dv",{months:Xg,monthsShort:Xg,weekdays:Yg,weekdaysShort:Yg,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(a){return"މފ"===a},meridiem:function(a,b,c){return 12>a?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(a){return a.replace(/،/g,",")},postformat:function(a){return a.replace(/,/g,"،")},week:{dow:7,doy:12}}),
|
172 |
+
//! moment.js locale configuration
|
173 |
+
//! locale : Greek [el]
|
174 |
+
//! author : Aggelos Karalias : https://github.com/mehiel
|
175 |
+
a.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(a,b){return a?"string"==typeof b&&/D/.test(b.substring(0,b.indexOf("MMMM")))?this._monthsGenitiveEl[a.month()]:this._monthsNominativeEl[a.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(a,b,c){return a>11?c?"μμ":"ΜΜ":c?"πμ":"ΠΜ"},isPM:function(a){return"μ"===(a+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(a,b){var c=this._calendarEl[a],d=b&&b.hours();return z(c)&&(c=c.apply(b)),c.replace("{}",d%12===1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}}),
|
176 |
+
//! moment.js locale configuration
|
177 |
+
//! locale : English (Australia) [en-au]
|
178 |
+
//! author : Jared Morse : https://github.com/jarcoal
|
179 |
+
a.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),
|
180 |
+
//! moment.js locale configuration
|
181 |
+
//! locale : English (Canada) [en-ca]
|
182 |
+
//! author : Jonathan Abourbih : https://github.com/jonbca
|
183 |
+
a.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),
|
184 |
+
//! moment.js locale configuration
|
185 |
+
//! locale : English (United Kingdom) [en-gb]
|
186 |
+
//! author : Chris Gedrim : https://github.com/chrisgedrim
|
187 |
+
a.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),
|
188 |
+
//! moment.js locale configuration
|
189 |
+
//! locale : English (Ireland) [en-ie]
|
190 |
+
//! author : Chris Cartlidge : https://github.com/chriscartlidge
|
191 |
+
a.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),
|
192 |
+
//! moment.js locale configuration
|
193 |
+
//! locale : English (New Zealand) [en-nz]
|
194 |
+
//! author : Luke McGregor : https://github.com/lukemcgregor
|
195 |
+
a.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),
|
196 |
+
//! moment.js locale configuration
|
197 |
+
//! locale : Esperanto [eo]
|
198 |
+
//! author : Colin Dean : https://github.com/colindean
|
199 |
+
//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia
|
200 |
+
//! comment : miestasmia corrected the translation by colindean
|
201 |
+
a.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-a de] MMMM, YYYY",LLL:"D[-a de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-a de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(a){return"p"===a.charAt(0).toLowerCase()},meridiem:function(a,b,c){return a>11?c?"p.t.m.":"P.T.M.":c?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}});
|
202 |
+
//! moment.js locale configuration
|
203 |
+
//! locale : Spanish (Dominican Republic) [es-do]
|
204 |
+
var Zg="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),$g="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),_g=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],ah=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;a.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(a,b){return a?/-MMM-/.test(b)?$g[a.month()]:Zg[a.month()]:Zg},monthsRegex:ah,monthsShortRegex:ah,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:_g,longMonthsParse:_g,shortMonthsParse:_g,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});
|
205 |
+
//! moment.js locale configuration
|
206 |
+
//! locale : Spanish(United State) [es-us]
|
207 |
+
//! author : bustta : https://github.com/bustta
|
208 |
+
var bh="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),ch="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_");a.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(a,b){return a?/-MMM-/.test(b)?ch[a.month()]:bh[a.month()]:bh},monthsParseExact:!0,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"MM/DD/YYYY",LL:"MMMM [de] D [de] YYYY",LLL:"MMMM [de] D [de] YYYY H:mm",LLLL:"dddd, MMMM [de] D [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}});
|
209 |
+
//! moment.js locale configuration
|
210 |
+
//! locale : Spanish [es]
|
211 |
+
//! author : Julio Napurí : https://github.com/julionc
|
212 |
+
var dh="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),eh="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),fh=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],gh=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;a.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(a,b){return a?/-MMM-/.test(b)?eh[a.month()]:dh[a.month()]:dh},monthsRegex:gh,monthsShortRegex:gh,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:fh,longMonthsParse:fh,shortMonthsParse:fh,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}}),a.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:Nd,m:Nd,mm:Nd,h:Nd,hh:Nd,d:Nd,dd:"%d päeva",M:Nd,MM:Nd,y:Nd,yy:Nd},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),
|
213 |
+
//! moment.js locale configuration
|
214 |
+
//! locale : Basque [eu]
|
215 |
+
//! author : Eneko Illarramendi : https://github.com/eillarra
|
216 |
+
a.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});
|
217 |
+
//! moment.js locale configuration
|
218 |
+
//! locale : Persian [fa]
|
219 |
+
//! author : Ebrahim Byagowi : https://github.com/ebraminio
|
220 |
+
var hh={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},ih={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};a.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysShort:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(a){return/بعد از ظهر/.test(a)},meridiem:function(a,b,c){return 12>a?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(a){return a.replace(/[۰-۹]/g,function(a){return ih[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return hh[a]}).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}});
|
221 |
+
//! moment.js locale configuration
|
222 |
+
//! locale : Finnish [fi]
|
223 |
+
//! author : Tarmo Aidantausta : https://github.com/bleadof
|
224 |
+
var jh="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),kh=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",jh[7],jh[8],jh[9]];a.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:Od,m:Od,mm:Od,h:Od,hh:Od,d:Od,dd:Od,M:Od,MM:Od,y:Od,yy:Od},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),
|
225 |
+
//! moment.js locale configuration
|
226 |
+
//! locale : Faroese [fo]
|
227 |
+
//! author : Ragnar Johannesen : https://github.com/ragnar123
|
228 |
+
a.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",m:"ein minutt",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaði",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),
|
229 |
+
//! moment.js locale configuration
|
230 |
+
//! locale : French (Canada) [fr-ca]
|
231 |
+
//! author : Jonathan Abourbih : https://github.com/jonbca
|
232 |
+
a.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(a,b){switch(b){default:case"M":case"Q":case"D":case"DDD":case"d":return a+(1===a?"er":"e");case"w":case"W":return a+(1===a?"re":"e")}}}),
|
233 |
+
//! moment.js locale configuration
|
234 |
+
//! locale : French (Switzerland) [fr-ch]
|
235 |
+
//! author : Gaspard Bucher : https://github.com/gaspard
|
236 |
+
a.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(a,b){switch(b){default:case"M":case"Q":case"D":case"DDD":case"d":return a+(1===a?"er":"e");case"w":case"W":return a+(1===a?"re":"e")}},week:{dow:1,doy:4}}),
|
237 |
+
//! moment.js locale configuration
|
238 |
+
//! locale : French [fr]
|
239 |
+
//! author : John Fischer : https://github.com/jfroffice
|
240 |
+
a.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(a,b){switch(b){case"D":return a+(1===a?"er":"");default:case"M":case"Q":case"DDD":case"d":return a+(1===a?"er":"e");case"w":case"W":return a+(1===a?"re":"e")}},week:{dow:1,doy:4}});
|
241 |
+
//! moment.js locale configuration
|
242 |
+
//! locale : Frisian [fy]
|
243 |
+
//! author : Robin van der Vliet : https://github.com/robin0van0der0v
|
244 |
+
var lh="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),mh="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");a.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(a,b){return a?/-MMM-/.test(b)?mh[a.month()]:lh[a.month()]:lh},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}});
|
245 |
+
//! moment.js locale configuration
|
246 |
+
//! locale : Scottish Gaelic [gd]
|
247 |
+
//! author : Jon Ashdown : https://github.com/jonashdown
|
248 |
+
var nh=["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],oh=["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],ph=["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],qh=["Did","Dil","Dim","Dic","Dia","Dih","Dis"],rh=["Dò","Lu","Mà","Ci","Ar","Ha","Sa"];a.defineLocale("gd",{months:nh,monthsShort:oh,monthsParseExact:!0,weekdays:ph,weekdaysShort:qh,weekdaysMin:rh,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(a){var b=1===a?"d":a%10===2?"na":"mh";return a+b},week:{dow:1,doy:4}}),
|
249 |
+
//! moment.js locale configuration
|
250 |
+
//! locale : Galician [gl]
|
251 |
+
//! author : Juan G. Hurtado : https://github.com/juanghurtado
|
252 |
+
a.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(a){return 0===a.indexOf("un")?"n"+a:"en "+a},past:"hai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}}),a.defineLocale("gom-latn",{months:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Ieta to] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fatlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:Qd,m:Qd,mm:Qd,h:Qd,hh:Qd,d:Qd,dd:Qd,M:Qd,MM:Qd,y:Qd,yy:Qd},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(a,b){switch(b){case"D":return a+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return a}},week:{dow:1,doy:4},meridiemParse:/rati|sokalli|donparam|sanje/,meridiemHour:function(a,b){return 12===a&&(a=0),"rati"===b?4>a?a:a+12:"sokalli"===b?a:"donparam"===b?a>12?a:a+12:"sanje"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"rati":12>a?"sokalli":16>a?"donparam":20>a?"sanje":"rati"}});
|
253 |
+
//! moment.js locale configuration
|
254 |
+
//! locale : Gujarati [gu]
|
255 |
+
//! author : Kaushik Thanki : https://github.com/Kaushik1987
|
256 |
+
var sh={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},th={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};a.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પેહલા",s:"અમુક પળો",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(a){return a.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,function(a){return th[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return sh[a]})},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(a,b){return 12===a&&(a=0),"રાત"===b?4>a?a:a+12:"સવાર"===b?a:"બપોર"===b?a>=10?a:a+12:"સાંજ"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"રાત":10>a?"સવાર":17>a?"બપોર":20>a?"સાંજ":"રાત"},week:{dow:0,doy:6}}),
|
257 |
+
//! moment.js locale configuration
|
258 |
+
//! locale : Hebrew [he]
|
259 |
+
//! author : Tomer Cohen : https://github.com/tomer
|
260 |
+
//! author : Moshe Simantov : https://github.com/DevelopmentIL
|
261 |
+
//! author : Tal Ater : https://github.com/TalAter
|
262 |
+
a.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(a){return 2===a?"שעתיים":a+" שעות"},d:"יום",dd:function(a){return 2===a?"יומיים":a+" ימים"},M:"חודש",MM:function(a){return 2===a?"חודשיים":a+" חודשים"},y:"שנה",yy:function(a){return 2===a?"שנתיים":a%10===0&&10!==a?a+" שנה":a+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(a){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(a)},meridiem:function(a,b,c){return 5>a?"לפנות בוקר":10>a?"בבוקר":12>a?c?'לפנה"צ':"לפני הצהריים":18>a?c?'אחה"צ':"אחרי הצהריים":"בערב"}});
|
263 |
+
//! moment.js locale configuration
|
264 |
+
//! locale : Hindi [hi]
|
265 |
+
//! author : Mayank Singhal : https://github.com/mayanksinghal
|
266 |
+
var uh={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},vh={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};a.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return vh[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return uh[a]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(a,b){return 12===a&&(a=0),"रात"===b?4>a?a:a+12:"सुबह"===b?a:"दोपहर"===b?a>=10?a:a+12:"शाम"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"रात":10>a?"सुबह":17>a?"दोपहर":20>a?"शाम":"रात"},week:{dow:0,doy:6}}),a.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:Rd,mm:Rd,h:Rd,hh:Rd,d:"dan",dd:Rd,M:"mjesec",MM:Rd,y:"godinu",yy:Rd},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});
|
267 |
+
//! moment.js locale configuration
|
268 |
+
//! locale : Hungarian [hu]
|
269 |
+
//! author : Adam Brunner : https://github.com/adambrunner
|
270 |
+
var wh="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");a.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(a){return"u"===a.charAt(1).toLowerCase()},meridiem:function(a,b,c){return 12>a?c===!0?"de":"DE":c===!0?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return Td.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return Td.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:Sd,m:Sd,mm:Sd,h:Sd,hh:Sd,d:Sd,dd:Sd,M:Sd,MM:Sd,y:Sd,yy:Sd},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),
|
271 |
+
//! moment.js locale configuration
|
272 |
+
//! locale : Armenian [hy-am]
|
273 |
+
//! author : Armendarabyan : https://github.com/armendarabyan
|
274 |
+
a.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(a){return/^(ցերեկվա|երեկոյան)$/.test(a)},meridiem:function(a){return 4>a?"գիշերվա":12>a?"առավոտվա":17>a?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(a,b){switch(b){case"DDD":case"w":case"W":case"DDDo":return 1===a?a+"-ին":a+"-րդ";default:return a}},week:{dow:1,doy:7}}),
|
275 |
+
//! moment.js locale configuration
|
276 |
+
//! locale : Indonesian [id]
|
277 |
+
//! author : Mohammad Satrio Utomo : https://github.com/tyok
|
278 |
+
//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
|
279 |
+
a.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"siang"===b?a>=11?a:a+12:"sore"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"siang":19>a?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),a.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:Vd,m:Vd,mm:Vd,h:"klukkustund",hh:Vd,d:Vd,dd:Vd,M:Vd,MM:Vd,y:Vd,yy:Vd},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),
|
280 |
+
//! moment.js locale configuration
|
281 |
+
//! locale : Italian [it]
|
282 |
+
//! author : Lorenzo : https://github.com/aliem
|
283 |
+
//! author: Mattia Larentis: https://github.com/nostalgiaz
|
284 |
+
a.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(a){return(/^[0-9].+$/.test(a)?"tra":"in")+" "+a},past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}}),
|
285 |
+
//! moment.js locale configuration
|
286 |
+
//! locale : Japanese [ja]
|
287 |
+
//! author : LI Long : https://github.com/baryon
|
288 |
+
a.defineLocale("ja",{months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 HH:mm dddd",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日 HH:mm dddd"},meridiemParse:/午前|午後/i,isPM:function(a){return"午後"===a},meridiem:function(a,b,c){return 12>a?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:"[来週]dddd LT",lastDay:"[昨日] LT",lastWeek:"[前週]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";default:return a}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}}),
|
289 |
+
//! moment.js locale configuration
|
290 |
+
//! locale : Javanese [jv]
|
291 |
+
//! author : Rony Lantip : https://github.com/lantip
|
292 |
+
//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa
|
293 |
+
a.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(a,b){return 12===a&&(a=0),"enjing"===b?a:"siyang"===b?a>=11?a:a+12:"sonten"===b||"ndalu"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"enjing":15>a?"siyang":19>a?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}}),
|
294 |
+
//! moment.js locale configuration
|
295 |
+
//! locale : Georgian [ka]
|
296 |
+
//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili
|
297 |
+
a.defineLocale("ka",{months:{standalone:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),format:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(a){return/(წამი|წუთი|საათი|წელი)/.test(a)?a.replace(/ი$/,"ში"):a+"ში"},past:function(a){return/(წამი|წუთი|საათი|დღე|თვე)/.test(a)?a.replace(/(ი|ე)$/,"ის უკან"):/წელი/.test(a)?a.replace(/წელი$/,"წლის უკან"):void 0},s:"რამდენიმე წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(a){return 0===a?a:1===a?a+"-ლი":20>a||100>=a&&a%20===0||a%100===0?"მე-"+a:a+"-ე"},week:{dow:1,doy:7}});
|
298 |
+
//! moment.js locale configuration
|
299 |
+
//! locale : Kazakh [kk]
|
300 |
+
//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan
|
301 |
+
var xh={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};a.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(a){var b=a%10,c=a>=100?100:null;return a+(xh[a]||xh[b]||xh[c])},week:{dow:1,doy:7}}),
|
302 |
+
//! moment.js locale configuration
|
303 |
+
//! locale : Cambodian [km]
|
304 |
+
//! author : Kruy Vanna : https://github.com/kruyvanna
|
305 |
+
a.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysMin:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},week:{dow:1,doy:4}});
|
306 |
+
//! moment.js locale configuration
|
307 |
+
//! locale : Kannada [kn]
|
308 |
+
//! author : Rajeev Naik : https://github.com/rajeevnaikte
|
309 |
+
var yh={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},zh={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};a.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬ_ಅಕ್ಟೋಬ_ನವೆಂಬ_ಡಿಸೆಂಬ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(a){return a.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,function(a){return zh[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return yh[a]})},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(a,b){return 12===a&&(a=0),"ರಾತ್ರಿ"===b?4>a?a:a+12:"ಬೆಳಿಗ್ಗೆ"===b?a:"ಮಧ್ಯಾಹ್ನ"===b?a>=10?a:a+12:"ಸಂಜೆ"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"ರಾತ್ರಿ":10>a?"ಬೆಳಿಗ್ಗೆ":17>a?"ಮಧ್ಯಾಹ್ನ":20>a?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(a){return a+"ನೇ"},week:{dow:0,doy:6}}),
|
310 |
+
//! moment.js locale configuration
|
311 |
+
//! locale : Korean [ko]
|
312 |
+
//! author : Kyungwook, Park : https://github.com/kyungw00k
|
313 |
+
//! author : Jeeeyul Lee <jeeeyul@gmail.com>
|
314 |
+
a.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"일";case"M":return a+"월";case"w":case"W":return a+"주";default:return a}},meridiemParse:/오전|오후/,isPM:function(a){return"오후"===a},meridiem:function(a,b,c){return 12>a?"오전":"오후"}});
|
315 |
+
//! moment.js locale configuration
|
316 |
+
//! locale : Kyrgyz [ky]
|
317 |
+
//! author : Chyngyz Arystan uulu : https://github.com/chyngyz
|
318 |
+
var Ah={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};a.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кече саат] LT",lastWeek:"[Өткен аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(a){var b=a%10,c=a>=100?100:null;return a+(Ah[a]||Ah[b]||Ah[c])},week:{dow:1,doy:7}}),a.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:Xd,past:Yd,s:"e puer Sekonnen",m:Wd,mm:"%d Minutten",h:Wd,hh:"%d Stonnen",d:Wd,dd:"%d Deeg",M:Wd,MM:"%d Méint",y:Wd,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),
|
319 |
+
//! moment.js locale configuration
|
320 |
+
//! locale : Lao [lo]
|
321 |
+
//! author : Ryan Hart : https://github.com/ryanhart2
|
322 |
+
a.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(a){return"ຕອນແລງ"===a},meridiem:function(a,b,c){return 12>a?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(a){return"ທີ່"+a}});
|
323 |
+
//! moment.js locale configuration
|
324 |
+
//! locale : Lithuanian [lt]
|
325 |
+
//! author : Mindaugas Mozūras : https://github.com/mmozuras
|
326 |
+
var Bh={m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};a.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:$d,m:_d,mm:ce,h:_d,hh:ce,d:_d,dd:ce,M:_d,MM:ce,y:_d,yy:ce},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(a){return a+"-oji"},week:{dow:1,doy:4}});
|
327 |
+
//! moment.js locale configuration
|
328 |
+
//! locale : Latvian [lv]
|
329 |
+
//! author : Kristaps Karlsons : https://github.com/skakri
|
330 |
+
//! author : Jānis Elmeris : https://github.com/JanisE
|
331 |
+
var Ch={m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};a.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:ge,m:fe,mm:ee,h:fe,hh:ee,d:fe,dd:ee,M:fe,MM:ee,y:fe,yy:ee},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});
|
332 |
+
//! moment.js locale configuration
|
333 |
+
//! locale : Montenegrin [me]
|
334 |
+
//! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac
|
335 |
+
var Dh={words:{m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(a,b,c){var d=Dh.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+Dh.correctGrammaticalCase(a,d)}};a.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var a=["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",m:Dh.translate,mm:Dh.translate,h:Dh.translate,hh:Dh.translate,d:"dan",dd:Dh.translate,M:"mjesec",MM:Dh.translate,y:"godinu",yy:Dh.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),
|
336 |
+
//! moment.js locale configuration
|
337 |
+
//! locale : Maori [mi]
|
338 |
+
//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal
|
339 |
+
a.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}}),
|
340 |
+
//! moment.js locale configuration
|
341 |
+
//! locale : Macedonian [mk]
|
342 |
+
//! author : Borislav Mickov : https://github.com/B0k0
|
343 |
+
a.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&20>c?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}}),
|
344 |
+
//! moment.js locale configuration
|
345 |
+
//! locale : Malayalam [ml]
|
346 |
+
//! author : Floyd Pink : https://github.com/floydpink
|
347 |
+
a.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(a,b){return 12===a&&(a=0),"രാത്രി"===b&&a>=4||"ഉച്ച കഴിഞ്ഞ്"===b||"വൈകുന്നേരം"===b?a+12:a},meridiem:function(a,b,c){return 4>a?"രാത്രി":12>a?"രാവിലെ":17>a?"ഉച്ച കഴിഞ്ഞ്":20>a?"വൈകുന്നേരം":"രാത്രി"}});
|
348 |
+
//! moment.js locale configuration
|
349 |
+
//! locale : Marathi [mr]
|
350 |
+
//! author : Harshad Kale : https://github.com/kalehv
|
351 |
+
//! author : Vivek Athalye : https://github.com/vnathalye
|
352 |
+
var Eh={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},Fh={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};a.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:he,m:he,mm:he,h:he,hh:he,d:he,dd:he,M:he,MM:he,y:he,yy:he},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return Fh[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Eh[a]})},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(a,b){return 12===a&&(a=0),"रात्री"===b?4>a?a:a+12:"सकाळी"===b?a:"दुपारी"===b?a>=10?a:a+12:"सायंकाळी"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"रात्री":10>a?"सकाळी":17>a?"दुपारी":20>a?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}}),
|
353 |
+
//! moment.js locale configuration
|
354 |
+
//! locale : Malay [ms-my]
|
355 |
+
//! note : DEPRECATED, the correct one is [ms]
|
356 |
+
//! author : Weldan Jamili : https://github.com/weldan
|
357 |
+
a.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"tengahari"===b?a>=11?a:a+12:"petang"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"tengahari":19>a?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),
|
358 |
+
//! moment.js locale configuration
|
359 |
+
//! locale : Malay [ms]
|
360 |
+
//! author : Weldan Jamili : https://github.com/weldan
|
361 |
+
a.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"tengahari"===b?a>=11?a:a+12:"petang"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"tengahari":19>a?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}});
|
362 |
+
//! moment.js locale configuration
|
363 |
+
//! locale : Burmese [my]
|
364 |
+
//! author : Squar team, mysquar.com
|
365 |
+
//! author : David Rossellat : https://github.com/gholadr
|
366 |
+
//! author : Tin Aung Lin : https://github.com/thanyawzinmin
|
367 |
+
var Gh={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},Hh={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};a.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(a){return a.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,function(a){return Hh[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Gh[a]})},week:{dow:1,doy:4}}),
|
368 |
+
//! moment.js locale configuration
|
369 |
+
//! locale : Norwegian Bokmål [nb]
|
370 |
+
//! authors : Espen Hovlandsdal : https://github.com/rexxars
|
371 |
+
//! Sigurd Gartmann : https://github.com/sigurdga
|
372 |
+
a.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});
|
373 |
+
//! moment.js locale configuration
|
374 |
+
//! locale : Nepalese [ne]
|
375 |
+
//! author : suvash : https://github.com/suvash
|
376 |
+
var Ih={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},Jh={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};a.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return Jh[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Ih[a]})},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(a,b){return 12===a&&(a=0),"राति"===b?4>a?a:a+12:"बिहान"===b?a:"दिउँसो"===b?a>=10?a:a+12:"साँझ"===b?a+12:void 0},meridiem:function(a,b,c){return 3>a?"राति":12>a?"बिहान":16>a?"दिउँसो":20>a?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}});
|
377 |
+
//! moment.js locale configuration
|
378 |
+
//! locale : Dutch (Belgium) [nl-be]
|
379 |
+
//! author : Joris Röling : https://github.com/jorisroling
|
380 |
+
//! author : Jacob Middag : https://github.com/middagj
|
381 |
+
var Kh="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),Lh="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),Mh=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],Nh=/^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;a.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(a,b){return a?/-MMM-/.test(b)?Lh[a.month()]:Kh[a.month()]:Kh},monthsRegex:Nh,monthsShortRegex:Nh,monthsStrictRegex:/^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:Mh,longMonthsParse:Mh,shortMonthsParse:Mh,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}});
|
382 |
+
//! moment.js locale configuration
|
383 |
+
//! locale : Dutch [nl]
|
384 |
+
//! author : Joris Röling : https://github.com/jorisroling
|
385 |
+
//! author : Jacob Middag : https://github.com/middagj
|
386 |
+
var Oh="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),Ph="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),Qh=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],Rh=/^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;a.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(a,b){return a?/-MMM-/.test(b)?Ph[a.month()]:Oh[a.month()]:Oh},monthsRegex:Rh,monthsShortRegex:Rh,monthsStrictRegex:/^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:Qh,longMonthsParse:Qh,shortMonthsParse:Qh,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}}),
|
387 |
+
//! moment.js locale configuration
|
388 |
+
//! locale : Nynorsk [nn]
|
389 |
+
//! author : https://github.com/mechuwind
|
390 |
+
a.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});
|
391 |
+
//! moment.js locale configuration
|
392 |
+
//! locale : Punjabi (India) [pa-in]
|
393 |
+
//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit
|
394 |
+
var Sh={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},Th={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};a.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(a){return a.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,function(a){return Th[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Sh[a]})},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(a,b){return 12===a&&(a=0),"ਰਾਤ"===b?4>a?a:a+12:"ਸਵੇਰ"===b?a:"ਦੁਪਹਿਰ"===b?a>=10?a:a+12:"ਸ਼ਾਮ"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"ਰਾਤ":10>a?"ਸਵੇਰ":17>a?"ਦੁਪਹਿਰ":20>a?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}});
|
395 |
+
//! moment.js locale configuration
|
396 |
+
//! locale : Polish [pl]
|
397 |
+
//! author : Rafal Hirsz : https://github.com/evoL
|
398 |
+
var Uh="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),Vh="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");a.defineLocale("pl",{months:function(a,b){return a?""===b?"("+Vh[a.month()]+"|"+Uh[a.month()]+")":/D MMMM/.test(b)?Vh[a.month()]:Uh[a.month()]:Uh},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:je,mm:je,h:je,hh:je,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:je,y:"rok",yy:je},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),
|
399 |
+
//! moment.js locale configuration
|
400 |
+
//! locale : Portuguese (Brazil) [pt-br]
|
401 |
+
//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
|
402 |
+
a.defineLocale("pt-br",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"}),
|
403 |
+
//! moment.js locale configuration
|
404 |
+
//! locale : Portuguese [pt]
|
405 |
+
//! author : Jefferson : https://github.com/jalex79
|
406 |
+
a.defineLocale("pt",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}}),a.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",m:"un minut",mm:ke,h:"o oră",hh:ke,d:"o zi",dd:ke,M:"o lună",MM:ke,y:"un an",yy:ke},week:{dow:1,doy:7}});var Wh=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];a.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:Wh,longMonthsParse:Wh,shortMonthsParse:Wh,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сегодня в] LT",nextDay:"[Завтра в] LT",lastDay:"[Вчера в] LT",nextWeek:function(a){if(a.week()===this.week())return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT";switch(this.day()){case 0:return"[В следующее] dddd [в] LT";case 1:case 2:case 4:return"[В следующий] dddd [в] LT";case 3:case 5:case 6:return"[В следующую] dddd [в] LT"}},lastWeek:function(a){if(a.week()===this.week())return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",m:me,mm:me,h:"час",hh:me,d:"день",dd:me,M:"месяц",MM:me,y:"год",yy:me},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(a){return/^(дня|вечера)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночи":12>a?"утра":17>a?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":return a+"-й";case"D":return a+"-го";case"w":case"W":return a+"-я";default:return a}},week:{dow:1,doy:4}});
|
407 |
+
//! moment.js locale configuration
|
408 |
+
//! locale : Sindhi [sd]
|
409 |
+
//! author : Narain Sagar : https://github.com/narainsagar
|
410 |
+
var Xh=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],Yh=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];a.defineLocale("sd",{months:Xh,monthsShort:Xh,weekdays:Yh,weekdaysShort:Yh,weekdaysMin:Yh,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(a){return"شام"===a},meridiem:function(a,b,c){return 12>a?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(a){return a.replace(/،/g,",")},postformat:function(a){return a.replace(/,/g,"،")},week:{dow:1,doy:4}}),
|
411 |
+
//! moment.js locale configuration
|
412 |
+
//! locale : Northern Sami [se]
|
413 |
+
//! authors : Bård Rolstad Henriksen : https://github.com/karamell
|
414 |
+
a.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),
|
415 |
+
//! moment.js locale configuration
|
416 |
+
//! locale : Sinhalese [si]
|
417 |
+
//! author : Sampath Sitinamaluwa : https://github.com/sampathsris
|
418 |
+
a.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්ර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(a){return a+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(a){return"ප.ව."===a||"පස් වරු"===a},meridiem:function(a,b,c){return a>11?c?"ප.ව.":"පස් වරු":c?"පෙ.ව.":"පෙර වරු"}});
|
419 |
+
//! moment.js locale configuration
|
420 |
+
//! locale : Slovak [sk]
|
421 |
+
//! author : Martin Minka : https://github.com/k2s
|
422 |
+
//! based on work of petrbela : https://github.com/petrbela
|
423 |
+
var Zh="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),$h="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");a.defineLocale("sk",{months:Zh,monthsShort:$h,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:oe,m:oe,mm:oe,h:oe,hh:oe,d:oe,dd:oe,M:oe,MM:oe,y:oe,yy:oe},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:pe,m:pe,mm:pe,h:pe,hh:pe,d:pe,dd:pe,M:pe,MM:pe,y:pe,yy:pe},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),
|
424 |
+
//! moment.js locale configuration
|
425 |
+
//! locale : Albanian [sq]
|
426 |
+
//! author : Flakërim Ismani : https://github.com/flakerimi
|
427 |
+
//! author : Menelion Elensúle : https://github.com/Oire
|
428 |
+
//! author : Oerd Cukalla : https://github.com/oerd
|
429 |
+
a.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(a){return"M"===a.charAt(0)},meridiem:function(a,b,c){return 12>a?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});
|
430 |
+
//! moment.js locale configuration
|
431 |
+
//! locale : Serbian Cyrillic [sr-cyrl]
|
432 |
+
//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
|
433 |
+
var _h={words:{m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(a,b,c){var d=_h.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+_h.correctGrammaticalCase(a,d)}};a.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){var a=["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",m:_h.translate,mm:_h.translate,h:_h.translate,hh:_h.translate,d:"дан",dd:_h.translate,M:"месец",MM:_h.translate,y:"годину",yy:_h.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});
|
434 |
+
//! moment.js locale configuration
|
435 |
+
//! locale : Serbian [sr]
|
436 |
+
//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
|
437 |
+
var ai={words:{m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(a,b,c){var d=ai.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+ai.correctGrammaticalCase(a,d)}};a.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var a=["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",m:ai.translate,mm:ai.translate,h:ai.translate,hh:ai.translate,d:"dan",dd:ai.translate,M:"mesec",MM:ai.translate,y:"godinu",yy:ai.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),
|
438 |
+
//! moment.js locale configuration
|
439 |
+
//! locale : siSwati [ss]
|
440 |
+
//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies
|
441 |
+
a.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(a,b,c){return 11>a?"ekuseni":15>a?"emini":19>a?"entsambama":"ebusuku"},meridiemHour:function(a,b){return 12===a&&(a=0),"ekuseni"===b?a:"emini"===b?a>=11?a:a+12:"entsambama"===b||"ebusuku"===b?0===a?0:a+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}}),
|
442 |
+
//! moment.js locale configuration
|
443 |
+
//! locale : Swedish [sv]
|
444 |
+
//! author : Jens Alm : https://github.com/ulmus
|
445 |
+
a.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(e|a)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"e":1===b?"a":2===b?"a":"e";return a+c},week:{dow:1,doy:4}}),
|
446 |
+
//! moment.js locale configuration
|
447 |
+
//! locale : Swahili [sw]
|
448 |
+
//! author : Fahad Kassim : https://github.com/fadsel
|
449 |
+
a.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}});
|
450 |
+
//! moment.js locale configuration
|
451 |
+
//! locale : Tamil [ta]
|
452 |
+
//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404
|
453 |
+
var bi={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},ci={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};a.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(a){return a+"வது"},preparse:function(a){return a.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,function(a){return ci[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return bi[a]})},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(a,b,c){return 2>a?" யாமம்":6>a?" வைகறை":10>a?" காலை":14>a?" நண்பகல்":18>a?" எற்பாடு":22>a?" மாலை":" யாமம்"},meridiemHour:function(a,b){return 12===a&&(a=0),"யாமம்"===b?2>a?a:a+12:"வைகறை"===b||"காலை"===b?a:"நண்பகல்"===b&&a>=10?a:a+12},week:{dow:0,doy:6}}),
|
454 |
+
//! moment.js locale configuration
|
455 |
+
//! locale : Telugu [te]
|
456 |
+
//! author : Krishna Chaitanya Thota : https://github.com/kcthota
|
457 |
+
a.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(a,b){return 12===a&&(a=0),"రాత్రి"===b?4>a?a:a+12:"ఉదయం"===b?a:"మధ్యాహ్నం"===b?a>=10?a:a+12:"సాయంత్రం"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"రాత్రి":10>a?"ఉదయం":17>a?"మధ్యాహ్నం":20>a?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}}),
|
458 |
+
//! moment.js locale configuration
|
459 |
+
//! locale : Tetun Dili (East Timor) [tet]
|
460 |
+
//! author : Joshua Brooks : https://github.com/joshbrooks
|
461 |
+
//! author : Onorio De J. Afonso : https://github.com/marobo
|
462 |
+
a.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juniu_Juliu_Augustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Aug_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sexta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sext_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Sex_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",m:"minutu ida",mm:"minutus %d",h:"horas ida",hh:"horas %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),
|
463 |
+
//! moment.js locale configuration
|
464 |
+
//! locale : Thai [th]
|
465 |
+
//! author : Kridsada Thanabulpong : https://github.com/sirn
|
466 |
+
a.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(a){return"หลังเที่ยง"===a},meridiem:function(a,b,c){return 12>a?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}}),
|
467 |
+
//! moment.js locale configuration
|
468 |
+
//! locale : Tagalog (Philippines) [tl-ph]
|
469 |
+
//! author : Dan Hagman : https://github.com/hagmandan
|
470 |
+
a.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}});
|
471 |
+
//! moment.js locale configuration
|
472 |
+
//! locale : Klingon [tlh]
|
473 |
+
//! author : Dominika Kruk : https://github.com/amaranthrose
|
474 |
+
var di="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");a.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:qe,past:re,s:"puS lup",m:"wa’ tup",mm:se,h:"wa’ rep",hh:se,d:"wa’ jaj",dd:se,M:"wa’ jar",MM:se,y:"wa’ DIS",yy:se},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});
|
475 |
+
//! moment.js locale configuration
|
476 |
+
//! locale : Turkish [tr]
|
477 |
+
//! authors : Erhan Gundogan : https://github.com/erhangundogan,
|
478 |
+
//! Burak Yiğit Kaya: https://github.com/BYK
|
479 |
+
var ei={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};a.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},dayOfMonthOrdinalParse:/\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,ordinal:function(a){if(0===a)return a+"'ıncı";var b=a%10,c=a%100-b,d=a>=100?100:null;return a+(ei[b]||ei[c]||ei[d])},week:{dow:1,doy:7}}),
|
480 |
+
//! moment.js locale configuration
|
481 |
+
//! locale : Talossan [tzl]
|
482 |
+
//! author : Robin van der Vliet : https://github.com/robin0van0der0v
|
483 |
+
//! author : Iustì Canun
|
484 |
+
a.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(a){return"d'o"===a.toLowerCase()},meridiem:function(a,b,c){return a>11?c?"d'o":"D'O":c?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:ue,m:ue,mm:ue,h:ue,hh:ue,d:ue,dd:ue,M:ue,MM:ue,y:ue,yy:ue},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),
|
485 |
+
//! moment.js locale configuration
|
486 |
+
//! locale : Central Atlas Tamazight Latin [tzm-latn]
|
487 |
+
//! author : Abdel Said : https://github.com/abdelsaid
|
488 |
+
a.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}}),
|
489 |
+
//! moment.js locale configuration
|
490 |
+
//! locale : Central Atlas Tamazight [tzm]
|
491 |
+
//! author : Abdel Said : https://github.com/abdelsaid
|
492 |
+
a.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}}),a.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:xe,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:ye("[Сьогодні "),nextDay:ye("[Завтра "),lastDay:ye("[Вчора "),nextWeek:ye("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return ye("[Минулої] dddd [").call(this);case 1:case 2:case 4:return ye("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:we,mm:we,h:"годину",hh:we,d:"день",dd:we,M:"місяць",MM:we,y:"рік",yy:we},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(a){return/^(дня|вечора)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночі":12>a?"ранку":17>a?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a+"-й";case"D":return a+"-го";default:return a}},week:{dow:1,doy:7}});
|
493 |
+
//! moment.js locale configuration
|
494 |
+
//! locale : Urdu [ur]
|
495 |
+
//! author : Sawood Alam : https://github.com/ibnesayeed
|
496 |
+
//! author : Zack : https://github.com/ZackVision
|
497 |
+
var fi=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],gi=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];
|
498 |
+
//! moment.js locale configuration
|
499 |
+
//! locale : Uzbek Latin [uz-latn]
|
500 |
+
//! author : Rasulbek Mirzayev : github.com/Rasulbeeek
|
501 |
+
//! moment.js locale configuration
|
502 |
+
//! locale : Uzbek [uz]
|
503 |
+
//! author : Sardor Muminov : https://github.com/muminoff
|
504 |
+
//! moment.js locale configuration
|
505 |
+
//! locale : Vietnamese [vi]
|
506 |
+
//! author : Bang Nguyen : https://github.com/bangnk
|
507 |
+
//! moment.js locale configuration
|
508 |
+
//! locale : Pseudo [x-pseudo]
|
509 |
+
//! author : Andrew Hood : https://github.com/andrewhood125
|
510 |
+
//! moment.js locale configuration
|
511 |
+
//! locale : Yoruba Nigeria [yo]
|
512 |
+
//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe
|
513 |
+
//! moment.js locale configuration
|
514 |
+
//! locale : Chinese (China) [zh-cn]
|
515 |
+
//! author : suupic : https://github.com/suupic
|
516 |
+
//! author : Zeno Zeng : https://github.com/zenozeng
|
517 |
+
//! moment.js locale configuration
|
518 |
+
//! locale : Chinese (Hong Kong) [zh-hk]
|
519 |
+
//! author : Ben : https://github.com/ben-lin
|
520 |
+
//! author : Chris Lam : https://github.com/hehachris
|
521 |
+
//! author : Konstantin : https://github.com/skfd
|
522 |
+
//! moment.js locale configuration
|
523 |
+
//! locale : Chinese (Taiwan) [zh-tw]
|
524 |
+
//! author : Ben : https://github.com/ben-lin
|
525 |
+
//! author : Chris Lam : https://github.com/hehachris
|
526 |
+
return a.defineLocale("ur",{months:fi,monthsShort:fi,weekdays:gi,weekdaysShort:gi,weekdaysMin:gi,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(a){return"شام"===a},meridiem:function(a,b,c){return 12>a?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(a){return a.replace(/،/g,",")},postformat:function(a){return a.replace(/,/g,"،")},week:{dow:1,doy:4}}),a.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}}),a.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}}),a.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(a){return/^ch$/i.test(a)},meridiem:function(a,b,c){return 12>a?c?"sa":"SA":c?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}}),a.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),a.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}}),a.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY年MMMD日",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日Ah点mm分",LLLL:"YYYY年MMMD日ddddAh点mm分",l:"YYYY年MMMD日",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日 HH:mm",llll:"YYYY年MMMD日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上午"===b?a:"下午"===b||"晚上"===b?a+12:a>=11?a:a+12},meridiem:function(a,b,c){var d=100*a+b;return 600>d?"凌晨":900>d?"早上":1130>d?"上午":1230>d?"中午":1800>d?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"周";default:return a}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}}),a.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY年MMMD日",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日 HH:mm",LLLL:"YYYY年MMMD日dddd HH:mm",l:"YYYY年MMMD日",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日 HH:mm",llll:"YYYY年MMMD日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上午"===b?a:"中午"===b?a>=11?a:a+12:"下午"===b||"晚上"===b?a+12:void 0},meridiem:function(a,b,c){var d=100*a+b;return 600>d?"凌晨":900>d?"早上":1130>d?"上午":1230>d?"中午":1800>d?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"週";default:return a}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}}),a.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY年MMMD日",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日 HH:mm",LLLL:"YYYY年MMMD日dddd HH:mm",l:"YYYY年MMMD日",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日 HH:mm",llll:"YYYY年MMMD日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上午"===b?a:"中午"===b?a>=11?a:a+12:"下午"===b||"晚上"===b?a+12:void 0},meridiem:function(a,b,c){var d=100*a+b;return 600>d?"凌晨":900>d?"早上":1130>d?"上午":1230>d?"中午":1800>d?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"週";default:return a}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}}),a.locale("en"),a});
|
libs/factory/bootstrap/assets/js-min/plugin.nouislider.min.js
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
/*! $.noUiSlider - WTFPL - refreshless.com/nouislider/ */
|
11 |
+
!function(a){function b(a){throw new RangeError("noUiSlider: "+a)}function c(a,c,d){(a[c]||a[d])&&a[c]===a[d]&&b("(Link) '"+c+"' can't match '"+d+"'.'")}function d(a){return"number"==typeof a&&!isNaN(a)&&isFinite(a)}function e(b){return a.isArray(b)?b:[b]}function f(a,b){a.addClass(b),setTimeout(function(){a.removeClass(b)},300)}function g(a,b){return 100*b/(a[1]-a[0])}function h(a,b){if(b>=a.d.slice(-1)[0])return 100;for(var c,d,e,f=1;b>=a.d[f];)f++;return c=a.d[f-1],d=a.d[f],e=a.c[f-1],c=[c,d],e+g(c,0>c[0]?b+Math.abs(c[0]):b-c[0])/(100/(a.c[f]-e))}function i(a,b){for(var c,d=1;b>=a.c[d];)d++;return a.m?(c=a.c[d-1],d=a.c[d],b-c>(d-c)/2?d:c):(a.h[d-1]?(c=a.h[d-1],d=a.c[d-1]+Math.round((b-a.c[d-1])/c)*c):d=b,d)}function j(d){void 0===d&&(d={}),"object"!=typeof d&&b("(Format) 'format' option must be an object.");var e={};a(J).each(function(a,c){void 0===d[c]?e[c]=K[a]:typeof d[c]==typeof K[a]?("decimals"===c&&(0>d[c]||7<d[c])&&b("(Format) 'format.decimals' option must be between 0 and 7."),e[c]=d[c]):b("(Format) 'format."+c+"' must be a "+typeof K[a]+".")}),c(e,"mark","thousand"),c(e,"prefix","negative"),c(e,"prefix","negativeBefore"),this.B=e}function k(b,c){if(!(this instanceof k))throw Error("Link: Don't use Link as a function. Use the 'new' keyword.");if(!b)throw new RangeError("Link: missing parameters.");this.g=b.format||{},this.update=!c;var d=this,e=b.target||function(){},f=b.method,g="string"==typeof e&&0===e.indexOf("-tooltip-"),h="string"==typeof e&&0!==e.indexOf("-"),i="function"==typeof e,j=e instanceof a||a.zepto&&a.zepto.isZ(e),l=j&&e.is("input, select, textarea"),m=j&&"function"==typeof f,n=j&&"string"==typeof f&&e[f];if(g)this.method=f||"html",this.j=a(e.replace("-tooltip-","")||"<div/>")[0];else if(h)this.method="val",this.j=document.createElement("input"),this.j.name=e,this.j.type="hidden";else{if(!i){if(j){if(f&&(m||n))return this.target=e,void(this.method=f);if(!f&&l)return this.method="val",this.target=e,void this.target.on("change",function(b){b=a(b.target).val();var c=d.q;d.u.val([c?null:b,c?b:null],{link:d})});if(!f&&!l)return this.method="html",void(this.target=e)}throw new RangeError("Link: Invalid Link.")}this.target=!1,this.method=e}}function l(a,c){d(c)||b("'step' is not numeric."),a.h[0]=c}function m(c,e){("object"!=typeof e||a.isArray(e))&&b("'range' is not an object."),a.each(e,function(e,f){var g;"number"==typeof f&&(f=[f]),a.isArray(f)||b("'range' contains invalid value."),g="min"===e?0:"max"===e?100:parseFloat(e),d(g)&&d(f[0])||b("'range' value isn't numeric."),c.c.push(g),c.d.push(f[0]),g?c.h.push(isNaN(f[1])?!1:f[1]):isNaN(f[1])||(c.h[0]=f[1])}),a.each(c.h,function(a,b){return b?void(c.h[a]=g([c.d[a],c.d[a+1]],b)/(100/(c.c[a+1]-c.c[a]))):!0})}function n(c,d){"number"==typeof d&&(d=[d]),(!a.isArray(d)||!d.length||2<d.length)&&b("'start' option is incorrect."),c.a=d.length,c.start=d}function o(a,c){a.m=c,"boolean"!=typeof c&&b("'snap' option must be a boolean.")}function p(a,c){"lower"===c&&1===a.a?a.i=1:"upper"===c&&1===a.a?a.i=2:!0===c&&2===a.a?a.i=3:!1===c?a.i=0:b("'connect' option was doesn't match handle count.")}function q(a,c){switch(c){case"horizontal":a.k=0;break;case"vertical":a.k=1;break;default:b("'orientation' option is invalid.")}}function r(a,c){2<a.c.length&&b("'margin' option is only supported on linear sliders."),a.margin=g(a.d,c),d(c)||b("'margin' option must be numeric.")}function s(a,c){switch(c){case"ltr":a.dir=0;break;case"rtl":a.dir=1,a.i=[0,2,1,3][a.i];break;default:b("'direction' option was not recognized.")}}function t(a,c){"string"!=typeof c&&b("'behaviour' must be a string containing options.");var d=0<=c.indexOf("snap");a.n={p:0<=c.indexOf("tap")||d,extend:0<=c.indexOf("extend"),s:0<=c.indexOf("drag"),fixed:0<=c.indexOf("fixed"),m:d}}function u(c,d,e){c.o=[d.lower,d.upper],c.g=new j(d.format),a.each(c.o,function(c,f){a.isArray(f)||b("'serialization."+(c?"upper":"lower")+"' must be an array."),a.each(f,function(){this instanceof k||b("'serialization."+(c?"upper":"lower")+"' can only contain Link instances."),this.q=c,this.u=e,this.scope=this.scope||e,this.g=new j(a.extend({},d.format,this.g))})}),c.dir&&1<c.a&&c.o.reverse()}function v(c,d){var e,f={c:[],d:[],h:[!1],margin:0};return e={step:{e:!1,f:l},range:{e:!0,f:m},start:{e:!0,f:n},snap:{e:!1,f:o},connect:{e:!0,f:p},orientation:{e:!1,f:q},margin:{e:!1,f:r},direction:{e:!0,f:s},behaviour:{e:!0,f:t},serialization:{e:!0,f:u}},c=a.extend({connect:!1,direction:"ltr",behaviour:"tap",orientation:"horizontal"},c),c.serialization=a.extend({lower:[],upper:[],format:{}},c.serialization),a.each(e,function(a,e){if(void 0===c[a]){if(!e.e)return!0;b("'"+a+"' is required.")}e.f(f,c[a],d)}),f.style=f.k?"top":"left",f}function w(b,c){var d=a("<div><div/></div>").addClass(I[2]),e=["-lower","-upper"];return b.dir&&e.reverse(),d.children().addClass(I[3]+" "+I[3]+e[c]),d}function x(b,c){return c.j&&(c=new k({target:a(c.j).clone().appendTo(b),method:c.method,format:c.g},!0)),c}function y(a,b){var c,d=[];for(c=0;c<a.a;c++){var e=d,f=c,g=a.o[c],h=b[c].children(),i=void 0,j=[];for(j.push(new k({format:a.g},!0)),i=0;i<g.length;i++)j.push(x(h,g[i]));e[f]=j}return d}function z(a,b,c){switch(a){case 1:b.addClass(I[7]),c[0].addClass(I[6]);break;case 3:c[1].addClass(I[6]);case 2:c[0].addClass(I[7]);case 0:b.addClass(I[6])}}function A(a,b){var c,d=[];for(c=0;c<a.a;c++)d.push(w(a,c).appendTo(b));return d}function B(b,c){return c.addClass([I[0],I[8+b.dir],I[4+b.k]].join(" ")),a("<div/>").appendTo(c).addClass(I[1])}function C(b,c,d){function e(){return r[["width","height"][c.k]]()}function g(a){var b,c=[u.val()];for(b=0;b<a.length;b++)u.trigger(a[b],c)}function j(b,d,e){var f=b[0]!==t[0][0]?1:0,g=v[0]+c.margin,h=v[1]-c.margin;return e&&1<t.length&&(d=f?Math.max(d,g):Math.min(d,h)),100>d&&(d=i(c,d)),d=Math.max(Math.min(parseFloat(d.toFixed(7)),100),0),d===v[f]?1===t.length?!1:d===g||d===h?0:!1:(b.css(c.style,d+"%"),b.is(":first-child")&&b.toggleClass(I[17],d>50),v[f]=d,c.dir&&(d=100-d),a(s[f]).each(function(){this.write(c,d,b.children(),u)}),!0)}function k(a,b,c){c||f(u,I[14]),j(a,b,!1),g(["slide","set","change"])}function l(a,b,d,e){a=a.replace(/\s/g,".nui ")+".nui",b.on(a,function(a){var b=u.attr("disabled");if(u.hasClass(I[14])||void 0!==b&&null!==b)return!1;a.preventDefault();var f,g,b=0===a.type.indexOf("touch"),h=0===a.type.indexOf("mouse"),i=0===a.type.indexOf("pointer"),j=a;0===a.type.indexOf("MSPointer")&&(i=!0),a.originalEvent&&(a=a.originalEvent),b&&(f=a.changedTouches[0].pageX,g=a.changedTouches[0].pageY),(h||i)&&(i||void 0!==window.pageXOffset||(window.pageXOffset=document.documentElement.scrollLeft,window.pageYOffset=document.documentElement.scrollTop),f=a.clientX+window.pageXOffset,g=a.clientY+window.pageYOffset),j.v=[f,g],j.cursor=h,a=j,a.l=a.v[c.k],d(a,e)})}function m(a,b){var c,d=b.a||t,f=!1,f=100*(a.l-b.start)/e(),h=d[0][0]!==t[0][0]?1:0,i=b.w;c=f+i[0],f+=i[1],1<d.length?(0>c&&(f+=Math.abs(c)),f>100&&(c-=f-100),c=[Math.max(Math.min(c,100),0),Math.max(Math.min(f,100),0)]):c=[c,f],f=j(d[0],c[h],1===d.length),1<d.length&&(f=j(d[1],c[h?0:1],!1)||f),f&&g(["slide"])}function n(b){a("."+I[15]).removeClass(I[15]),b.cursor&&a("body").css("cursor","").off(".nui"),F.off(".nui"),u.removeClass(I[12]),g(["set","change"])}function o(b,c){1===c.a.length&&c.a[0].children().addClass(I[15]),b.stopPropagation(),l(H.move,F,m,{start:b.l,a:c.a,w:[v[0],v[t.length-1]]}),l(H.end,F,n,null),b.cursor&&(a("body").css("cursor",a(b.target).css("cursor")),1<t.length&&u.addClass(I[12]),a("body").on("selectstart.nui",!1))}function p(b){var d=b.l,f=0;b.stopPropagation(),a.each(t,function(){f+=this.offset()[c.style]}),f=f/2>d||1===t.length?0:1,d-=r.offset()[c.style],d=100*d/e(),k(t[f],d,c.n.m),c.n.m&&o(b,{a:[t[f]]})}function q(a){var b=(a=a.l<r.offset()[c.style])?0:100;a=a?0:t.length-1,k(t[a],b,!1)}var r,s,t,u=a(b),v=[-1,-1];if(!u.is(":empty"))throw Error("Slider was already initialized.");r=B(c,u),t=A(c,r),s=y(c,t),z(c.i,u,t),function(a){var b;if(!a.fixed)for(b=0;b<t.length;b++)l(H.start,t[b].children(),o,{a:[t[b]]});a.p&&l(H.start,r,p,{a:t}),a.extend&&(u.addClass(I[16]),a.p&&l(H.start,u,q,{a:t})),a.s&&(b=r.find("."+I[7]).addClass(I[10]),a.fixed&&(b=b.add(r.children().not(b).children())),l(H.start,b,o,{a:t}))}(c.n),b.F=function(b,d,e,i,k){var l;for(c.dir&&1<c.a&&b.reverse(),k&&f(u,I[14]),l=0;l<(1<t.length?3:1);l++)k=e||s[l%2][0],k=k.valueOf(b[l%2]),!1!==k&&(k=h(c,k),c.dir&&(k=100-k),!0!==j(t[l%2],k,!0)&&a(s[l%2]).each(function(){this.write(c,v[l%2],t[l%2].children(),u,i)}));!0===d&&g(["set"])},b.D=function(){var a,b=[];for(a=0;a<c.a;a++)b[a]=s[a][0].A;return 1===b.length?b[0]:c.dir&&1<c.a?b.reverse():b},b.r=function(){return a.each(s,function(){a.each(this,function(){this.target&&this.target.off(".nui")})}),a(this).off(".nui").removeClass(I.join(" ")).empty(),d},u.val(c.start)}function D(a){this.length||b("Can't initialize slider on empty selection.");var c=v(a,this);return this.each(function(){C(this,c,a)})}function E(b){return this.each(function(){var c=a(this).val(),d=this.r(),e=a.extend({},d,b);a(this).noUiSlider(e),d.start===e.start&&a(this).val(c)})}var F=a(document),G=a.fn.val,H=window.navigator.G?{start:"pointerdown",move:"pointermove",end:"pointerup"}:window.navigator.msPointerEnabled?{start:"MSPointerDown",move:"MSPointerMove",end:"MSPointerUp"}:{start:"mousedown touchstart",move:"mousemove touchmove",end:"mouseup touchend"},I="noUi-target noUi-base noUi-origin noUi-handle noUi-horizontal noUi-vertical noUi-background noUi-connect noUi-ltr noUi-rtl noUi-dragable noUi-state-drag noUi-state-tap noUi-active noUi-extended noUi-stacking".split(" "),J="decimals mark thousand prefix postfix encoder decoder negative negativeBefore".split(" "),K=[2,".","","","",function(a){return a},function(a){return a},"-",""];j.prototype.b=function(a){return this.B[a]},j.prototype.C=function(a){function b(a){return a.split("").reverse().join("")}a=this.b("encoder")(a);var c="",d="",e="",f="";return 0>a&&(c=this.b("negative"),d=this.b("negativeBefore")),a=Math.abs(a).toFixed(this.b("decimals")).toString(),a=a.split("."),0===parseFloat(a)&&(a[0]="0"),this.b("thousand")?(e=b(a[0]).match(/.{1,3}/g),e=b(e.join(b(this.b("thousand"))))):e=a[0],this.b("mark")&&1<a.length&&(f=this.b("mark")+a[1]),d+this.b("prefix")+c+e+f+this.b("postfix")},j.prototype.t=function(a){function b(a){return a.replace(/[\-\/\\\^$*+?.()|\[\]{}]/g,"\\$&")}var c;return null===a||void 0===a?!1:(a=a.toString(),c=a.replace(RegExp("^"+b(this.b("negativeBefore"))),""),a!==c?(a=c,c="-"):c="",a=a.replace(RegExp("^"+b(this.b("prefix"))),""),this.b.negative&&(c="",a=a.replace(RegExp("^"+b(this.b("negative"))),"-")),a=a.replace(RegExp(b(this.b("postfix"))+"$"),"").replace(RegExp(b(this.b("thousand")),"g"),"").replace(this.b("mark"),"."),a=this.b("decoder")(parseFloat(c+a)),isNaN(a)?!1:a)},k.prototype.write=function(a,b,c,d,e){if(!this.update||!1!==e){if(b>=100)b=a.d.slice(-1)[0];else{e=1;for(var f,g,h;b>=a.c[e];)e++;f=a.d[e-1],g=a.d[e],h=a.c[e-1],f=[f,g],b=100/(a.c[e]-h)*(b-h)*(f[1]-f[0])/100+f[0]}this.A=b=this.format(b),"function"==typeof this.method?this.method.call(this.target[0]||d[0],b,c,d):this.target[this.method](b,c,d)}},k.prototype.format=function(a){return this.g.C(a)},k.prototype.valueOf=function(a){return this.g.t(a)},a.noUiSlider={Link:k},a.fn.noUiSlider=function(a,b){return(b?E:D).call(this,a)},a.fn.val=function(){var b,c,d,f,g=Array.prototype.slice.call(arguments,0);return g.length?("object"==typeof g[1]?(b=g[1].set,c=g[1].link,d=g[1].update,f=g[1].animate):!0===g[1]&&(b=!0),this.each(function(){a(this).hasClass(I[0])?this.F(e(g[0]),b,c,d,f):G.apply(a(this),g)})):this.hasClass(I[0])?this[0].D():G.apply(this)}}(window.jQuery||window.Zepto);
|
libs/factory/bootstrap/assets/js-min/plugin.paddings-editor.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2018-02-26
|
3 |
+
* Webcraftic factory build
|
4 |
+
*
|
5 |
+
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* Site: http://webcraftic.com
|
7 |
+
* Support: http://webcraftic.com/contact-us/
|
8 |
+
*/
|
9 |
+
|
10 |
+
!function(a){var b=function(b){this.$element=a(b),this.$rectangle=this.$element.find(".factory-rectangle"),this.$center=this.$element.find(".factory-side-center"),this.$bar=this.$element.find(".factory-bar"),this.$sides=this.$element.find(".factory-side"),this.$result=this.$element.find(".factory-result"),this.units=this.$element.data("units"),this.rangeStart=this.$element.data("range-start"),this.rangeEnd=this.$element.data("range-end"),this.step=this.$element.data("step"),this._createCanvas(),this._createSlider(),this._initMouse(),this.selectSide("center")};b.prototype._createCanvas=function(){var b=this;this._recalculateSizes(),this.$canvas=a("<canvas width='"+b.elementWidth+"' height='"+b.elementHeight+"'>").appendTo(this.$rectangle),this.canvasContext=this.$canvas.get(0).getContext("2d"),this._redraw()},b.prototype._createSlider=function(){var a=this;this.$bar.noUiSlider({start:parseInt(a.$center.data("value")),range:{min:a.rangeStart,max:a.rangeEnd},step:a.step}),this.$bar.on("slide",function(){var b=parseInt(a.$bar.val()),c=b+a.units;"center"===a.activeSide?(a.$sides.data("value",b),a.$sides.find(".factory-visible-value").text(c)):(a.$activeSide.data("value",b),a.$activeSide.find(".factory-visible-value").text(c))}),this.$bar.on("set",function(){a.$result.val(a.getValue()),a.$result.trigger("change")})},b.prototype.getValue=function(){var a=this.$element.find(".factory-side-top").data("value"),b=this.$element.find(".factory-side-right").data("value"),c=this.$element.find(".factory-side-bottom").data("value"),d=this.$element.find(".factory-side-left").data("value");return a+this.units+" "+b+this.units+" "+c+this.units+" "+d+this.units},b.prototype.selectSide=function(a){this.activeSide!==a&&(this.activeSide=a,this.$activeSide=this.$element.find(".factory-side-"+this.activeSide),this.$element.find(".factory-side.factory-active").removeClass("factory-active"),this.$activeSide.addClass("factory-active"),this._redraw(),this.$bar.val(this.$activeSide.data("value")))},b.prototype._initMouse=function(){var a=this;this._recalculateSizes(),this.$rectangle.on("mousemove.paddings-editor",function(b){a.hoveredSide=a._getCurrentSide(b.pageX,b.pageY),a.hoveredSide!==a.lastHoveredSide&&(a.lastHoveredSide=a.hoveredSide,a._redraw())}),this.$rectangle.on("mouseleave.paddings-editor",function(b){a.hoveredSide=a.lastHoveredSide=null,a._redraw()}),this.$rectangle.on("click.paddings-editor",function(b){var c=a._getCurrentSide(b.pageX,b.pageY);a.selectSide(c)})},b.prototype._getCurrentSide=function(a,b){var c=this.$element.offset(),d=a-c.left,e=b-c.top,f=d-this.centerX,g=e-this.centerY,h=Math.sqrt(Math.pow(f,2)+Math.pow(g,2));if(h<=this.centerR)return"center";var i=this.elementHeight,j=this.elementWidth,k=-this.elementWidth*this.elementHeight,l=-(k+i*d)/j,m=-this.elementHeight,n=this.elementWidth,o=0,p=-(o+m*d)/n;return e>l&&p>e?"right":l>e&&e>p?"left":l>e&&p>e?"top":e>l&&e>p?"bottom":null},b.prototype._redraw=function(){this.canvasContext.clearRect(0,0,this.elementWidth,this.elementHeight),this._highlightSide("top","#a6b6b6"),this._highlightSide("bottom","#a6b6b6"),this._highlightSide("left","#aec0c0"),this._highlightSide("right","#aec0c0"),this._highlightSide(this.hoveredSide,"#c0cece"),this.activeSide&&this._highlightSide(this.activeSide,"#829595")},b.prototype._highlightSide=function(a,b){a&&"center"!==a&&(this.canvasContext.fillStyle=b,this.canvasContext.beginPath(),"top"===a?(this.canvasContext.moveTo(0,0),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(this.elementWidth,0)):"bottom"===a?(this.canvasContext.moveTo(0,this.elementHeight),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(this.elementWidth,this.elementHeight)):"left"===a?(this.canvasContext.moveTo(0,0),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(0,this.elementHeight)):"right"===a&&(this.canvasContext.moveTo(this.elementWidth,0),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(this.elementWidth,this.elementHeight)),this.canvasContext.closePath(),this.canvasContext.fill())},b.prototype._recalculateSizes=function(){this.elementOffset=this.$element.offset(),this.elementWidth=this.$rectangle.innerWidth(),this.elementHeight=this.$rectangle.innerHeight(),this.centerSize=this.$center.innerWidth(),this.centerR=this.centerSize/2,this.centerX=this.elementWidth/2,this.centerY=this.elementHeight/2},a.fn.factoryBootstrap421_paddingsEditor=function(c){if("string"==typeof c){var d=a(this).data("factory.paddings-editor");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.paddings-editor");d||c.data("factory.paddings-editor",d=new b(this))})},a.fn.factoryBootstrap421_paddingsEditor.Constructor=b,a(function(){a(".factory-bootstrap-421 .factory-paddings-editor").factoryBootstrap421_paddingsEditor()})}(jQuery);
|
libs/factory/bootstrap/boot.php
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Factory Bootstrap
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @since 1.0.0
|
7 |
+
* @package factory-bootstrap
|
8 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
9 |
+
*
|
10 |
+
*/
|
11 |
+
|
12 |
+
// Exit if accessed directly
|
13 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
|
17 |
+
// module provides function only for the admin area
|
18 |
+
if ( ! is_admin() ) {
|
19 |
+
return;
|
20 |
+
}
|
21 |
+
|
22 |
+
if ( defined( 'FACTORY_BOOTSTRAP_421_LOADED' ) ) {
|
23 |
+
return;
|
24 |
+
}
|
25 |
+
|
26 |
+
define( 'FACTORY_BOOTSTRAP_421_VERSION', '4.2.1' );
|
27 |
+
define( 'FACTORY_BOOTSTRAP_421_LOADED', true );
|
28 |
+
|
29 |
+
if ( ! defined( 'FACTORY_FLAT_ADMIN' ) ) {
|
30 |
+
define( 'FACTORY_FLAT_ADMIN', true );
|
31 |
+
}
|
32 |
+
|
33 |
+
define( 'FACTORY_BOOTSTRAP_421_DIR', dirname( __FILE__ ) );
|
34 |
+
define( 'FACTORY_BOOTSTRAP_421_URL', plugins_url( null, __FILE__ ) );
|
35 |
+
|
36 |
+
require_once( FACTORY_BOOTSTRAP_421_DIR . '/includes/functions.php' );
|
37 |
+
|
38 |
+
/**
|
39 |
+
* @param Wbcr_Factory420_Plugin $plugin
|
40 |
+
*/
|
41 |
+
add_action( 'wbcr_factory_bootstrap_421_plugin_created', function ( $plugin ) {
|
42 |
+
$manager = new Wbcr_FactoryBootstrap421_Manager( $plugin );
|
43 |
+
$plugin->setBootstap( $manager );
|
44 |
+
} );
|
45 |
+
|
46 |
+
|
libs/factory/bootstrap/includes/functions.php
ADDED
@@ -0,0 +1,286 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* This file manages assets of the Factory Bootstap.
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex@byonepress.com>
|
6 |
+
* @author Paul Kashtanoff <paul@byonepress.com>
|
7 |
+
* @since 1.0.0
|
8 |
+
* @package factory-bootstrap
|
9 |
+
* @copyright (c) 2018, OnePress Ltd
|
10 |
+
*
|
11 |
+
*/
|
12 |
+
|
13 |
+
// Exit if accessed directly
|
14 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
15 |
+
exit;
|
16 |
+
}
|
17 |
+
|
18 |
+
/**
|
19 |
+
* The Bootstrap Manager class.
|
20 |
+
*
|
21 |
+
* @since 3.2.0
|
22 |
+
*/
|
23 |
+
class Wbcr_FactoryBootstrap421_Manager {
|
24 |
+
|
25 |
+
/**
|
26 |
+
* A plugin for which the manager was created.
|
27 |
+
*
|
28 |
+
* @since 3.2.0
|
29 |
+
* @var Wbcr_Factory420_Plugin
|
30 |
+
*/
|
31 |
+
public $plugin;
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Contains scripts to include.
|
35 |
+
*
|
36 |
+
* @since 3.2.0
|
37 |
+
* @var string[]
|
38 |
+
*/
|
39 |
+
public $scripts = [];
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Contains styles to include.
|
43 |
+
*
|
44 |
+
* @since 3.2.0
|
45 |
+
* @var string[]
|
46 |
+
*/
|
47 |
+
public $styles = [];
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Createas a new instance of the license api for a given plugin.
|
51 |
+
*
|
52 |
+
* @since 1.0.0
|
53 |
+
*/
|
54 |
+
public function __construct( Wbcr_Factory420_Plugin $plugin ) {
|
55 |
+
$this->plugin = $plugin;
|
56 |
+
|
57 |
+
add_action( 'admin_enqueue_scripts', [ $this, 'loadAssets' ] );
|
58 |
+
add_filter( 'admin_body_class', [ $this, 'adminBodyClass' ] );
|
59 |
+
}
|
60 |
+
|
61 |
+
/**
|
62 |
+
* Includes the Bootstrap scripts.
|
63 |
+
*
|
64 |
+
* @since 3.2.0
|
65 |
+
*
|
66 |
+
* @param array|string $scripts
|
67 |
+
*/
|
68 |
+
public function enqueueScript( $scripts ) {
|
69 |
+
if ( is_array( $scripts ) ) {
|
70 |
+
foreach ( $scripts as $script ) {
|
71 |
+
if ( ! in_array( $script, $this->scripts ) ) {
|
72 |
+
$this->scripts[] = $script;
|
73 |
+
}
|
74 |
+
}
|
75 |
+
} else {
|
76 |
+
if ( ! in_array( $scripts, $this->scripts ) ) {
|
77 |
+
$this->scripts[] = $scripts;
|
78 |
+
}
|
79 |
+
}
|
80 |
+
}
|
81 |
+
|
82 |
+
/**
|
83 |
+
* * Includes the Bootstrap styles.
|
84 |
+
*
|
85 |
+
* @since 3.2.0
|
86 |
+
*
|
87 |
+
* @param array|string $styles
|
88 |
+
*/
|
89 |
+
public function enqueueStyle( $styles ) {
|
90 |
+
|
91 |
+
if ( is_array( $styles ) ) {
|
92 |
+
foreach ( $styles as $style ) {
|
93 |
+
if ( ! in_array( $style, $this->styles ) ) {
|
94 |
+
$this->styles[] = $style;
|
95 |
+
}
|
96 |
+
}
|
97 |
+
} else {
|
98 |
+
if ( ! in_array( $styles, $this->styles ) ) {
|
99 |
+
$this->styles[] = $styles;
|
100 |
+
}
|
101 |
+
}
|
102 |
+
}
|
103 |
+
|
104 |
+
/**
|
105 |
+
* Loads Bootstrap assets.
|
106 |
+
*
|
107 |
+
* @since 3.2.0
|
108 |
+
* @return void
|
109 |
+
* @see admin_enqueue_scripts
|
110 |
+
*
|
111 |
+
*/
|
112 |
+
public function loadAssets( $hook ) {
|
113 |
+
|
114 |
+
do_action( 'wbcr_factory_420_bootstrap_enqueue_scripts', $hook );
|
115 |
+
do_action( 'wbcr_factory_420_bootstrap_enqueue_scripts_' . $this->plugin->getPluginName(), $hook );
|
116 |
+
|
117 |
+
$dependencies = [];
|
118 |
+
if ( ! empty( $this->scripts ) ) {
|
119 |
+
$dependencies[] = 'jquery';
|
120 |
+
$dependencies[] = 'jquery-ui-core';
|
121 |
+
$dependencies[] = 'jquery-ui-widget';
|
122 |
+
}
|
123 |
+
|
124 |
+
foreach ( $this->scripts as $script ) {
|
125 |
+
switch ( $script ) {
|
126 |
+
case 'plugin.iris':
|
127 |
+
$dependencies[] = 'jquery-ui-widget';
|
128 |
+
$dependencies[] = 'jquery-ui-slider';
|
129 |
+
$dependencies[] = 'jquery-ui-draggable';
|
130 |
+
break;
|
131 |
+
}
|
132 |
+
}
|
133 |
+
|
134 |
+
if ( ! empty( $this->scripts ) ) {
|
135 |
+
$this->enqueueScripts( $this->scripts, 'js', $dependencies );
|
136 |
+
}
|
137 |
+
if ( ! empty( $this->styles ) ) {
|
138 |
+
$this->enqueueScripts( $this->styles, 'css', $dependencies );
|
139 |
+
}
|
140 |
+
|
141 |
+
$user_id = get_current_user_id();
|
142 |
+
$color_name = get_user_meta( $user_id, 'admin_color', true );
|
143 |
+
|
144 |
+
if ( $color_name !== 'fresh' ) {
|
145 |
+
if ( file_exists( FACTORY_BOOTSTRAP_421_DIR . '/assets/flat/css/bootstrap.' . $color_name . '.css' ) ) {
|
146 |
+
wp_enqueue_style( 'wbcr-factory-bootstrap-421-colors', FACTORY_BOOTSTRAP_421_URL . '/assets/flat/css/bootstrap.' . $color_name . '.css' );
|
147 |
+
}
|
148 |
+
}
|
149 |
+
|
150 |
+
if ( $color_name == 'light' ) {
|
151 |
+
$primary_dark = '#037c9a';
|
152 |
+
$primary_light = '#04a4cc';
|
153 |
+
} else if ( $color_name == 'blue' ) {
|
154 |
+
$primary_dark = '#d39323';
|
155 |
+
$primary_light = '#e1a948';
|
156 |
+
} else if ( $color_name == 'coffee' ) {
|
157 |
+
$primary_dark = '#b78a66';
|
158 |
+
$primary_light = '#c7a589';
|
159 |
+
} else if ( $color_name == 'ectoplasm' ) {
|
160 |
+
$primary_dark = '#839237';
|
161 |
+
$primary_light = '#a3b745';
|
162 |
+
} else if ( $color_name == 'ocean' ) {
|
163 |
+
$primary_dark = '#80a583';
|
164 |
+
$primary_light = '#9ebaa0';
|
165 |
+
} else if ( $color_name == 'midnight' ) {
|
166 |
+
$primary_dark = '#d02a21';
|
167 |
+
$primary_light = '#e14d43';
|
168 |
+
} else if ( $color_name == 'sunrise' ) {
|
169 |
+
$primary_dark = '#c36822';
|
170 |
+
$primary_light = '#dd823b';
|
171 |
+
} else {
|
172 |
+
$primary_dark = '#0074a2';
|
173 |
+
$primary_light = '#2ea2cc';
|
174 |
+
}
|
175 |
+
|
176 |
+
?>
|
177 |
+
<script>
|
178 |
+
if( !window.factory ) {
|
179 |
+
window.factory = {};
|
180 |
+
}
|
181 |
+
if( !window.factory.factoryBootstrap421 ) {
|
182 |
+
window.factory.factoryBootstrap421 = {};
|
183 |
+
}
|
184 |
+
window.factory.factoryBootstrap421.colors = {
|
185 |
+
primaryDark: '<?php echo $primary_dark ?>',
|
186 |
+
primaryLight: '<?php echo $primary_light ?>'
|
187 |
+
};
|
188 |
+
</script>
|
189 |
+
<?php
|
190 |
+
}
|
191 |
+
|
192 |
+
/**
|
193 |
+
* @param array $sripts
|
194 |
+
* @param string $type
|
195 |
+
* @param array $dependencies
|
196 |
+
*/
|
197 |
+
protected function enqueueScripts( array $sripts, $type = 'js', array $dependencies ) {
|
198 |
+
|
199 |
+
$is_first = true;
|
200 |
+
|
201 |
+
/**
|
202 |
+
* Sets permission for file caching and combining into one file.
|
203 |
+
*
|
204 |
+
* @since 4.1.0
|
205 |
+
*/
|
206 |
+
$cache_enable = apply_filters( 'wbcr/factory/bootstrap/cache_enable', true );
|
207 |
+
|
208 |
+
$cache_id = md5( implode( ',', $this->scripts ) . $type . $this->plugin->getPluginVersion() );
|
209 |
+
$cache_dir_path = FACTORY_BOOTSTRAP_421_DIR . '/assets/cache/';
|
210 |
+
$cache_dir_url = FACTORY_BOOTSTRAP_421_URL . '/assets/cache/';
|
211 |
+
|
212 |
+
$cache_filepath = $cache_dir_path . $cache_id . ".min." . $type;
|
213 |
+
$cache_fileurl = $cache_dir_url . $cache_id . ".min." . $type;
|
214 |
+
|
215 |
+
if ( $cache_enable && file_exists( $cache_filepath ) ) {
|
216 |
+
if ( $type == 'js' ) {
|
217 |
+
wp_enqueue_script( 'wbcr-factory-bootstrap-' . $cache_id, $cache_fileurl, $dependencies, $this->plugin->getPluginVersion() );
|
218 |
+
} else {
|
219 |
+
wp_enqueue_style( 'wbcr-factory-bootstrap-' . $cache_id, $cache_fileurl, [], $this->plugin->getPluginVersion() );
|
220 |
+
}
|
221 |
+
} else {
|
222 |
+
$cache_dir_exists = false;
|
223 |
+
if ( ! file_exists( $cache_dir_path ) ) {
|
224 |
+
if ( @mkdir( $cache_dir_path, 0755 ) && wp_is_writable( $cache_dir_path ) ) {
|
225 |
+
$cache_dir_exists = true;
|
226 |
+
}
|
227 |
+
} else {
|
228 |
+
if ( wp_is_writable( $cache_dir_path ) ) {
|
229 |
+
$cache_dir_exists = true;
|
230 |
+
}
|
231 |
+
}
|
232 |
+
|
233 |
+
$concat_files = [];
|
234 |
+
foreach ( $sripts as $script_to_load ) {
|
235 |
+
$script_to_load = sanitize_text_field( $script_to_load );
|
236 |
+
if ( $cache_enable && $cache_dir_exists ) {
|
237 |
+
$fname = FACTORY_BOOTSTRAP_421_DIR . "/assets/$type-min/$script_to_load.min." . $type;
|
238 |
+
if ( file_exists( $fname ) ) {
|
239 |
+
$f = @fopen( $fname, 'r' );
|
240 |
+
$concat_files[] = @fread( $f, filesize( $fname ) );
|
241 |
+
@fclose( $f );
|
242 |
+
}
|
243 |
+
} else {
|
244 |
+
if ( $type == 'js' ) {
|
245 |
+
wp_enqueue_script( md5( $script_to_load ), FACTORY_BOOTSTRAP_421_URL . "/assets/$type-min/$script_to_load.min." . $type, $is_first ? $dependencies : false, $this->plugin->getPluginVersion() );
|
246 |
+
} else {
|
247 |
+
wp_enqueue_style( md5( $script_to_load ), FACTORY_BOOTSTRAP_421_URL . "/assets/$type-min/$script_to_load.min." . $type, [], $this->plugin->getPluginVersion() );
|
248 |
+
}
|
249 |
+
$is_first = false;
|
250 |
+
}
|
251 |
+
}
|
252 |
+
|
253 |
+
if ( $cache_enable && $cache_dir_exists && ! empty( $concat_files ) ) {
|
254 |
+
|
255 |
+
$cf = @fopen( $cache_filepath, 'w' );
|
256 |
+
$write_content = implode( PHP_EOL, $concat_files );
|
257 |
+
@fwrite( $cf, $write_content );
|
258 |
+
@fclose( $cf );
|
259 |
+
chmod( $cache_filepath, 0755 );
|
260 |
+
|
261 |
+
if ( file_exists( $cache_filepath ) ) {
|
262 |
+
if ( $type == 'js' ) {
|
263 |
+
wp_enqueue_script( 'wbcr-factory-bootstrap-' . $cache_id, $cache_fileurl, $dependencies, $this->plugin->getPluginVersion() );
|
264 |
+
} else {
|
265 |
+
wp_enqueue_style( 'wbcr-factory-bootstrap-' . $cache_id, $cache_fileurl, [], $this->plugin->getPluginVersion() );
|
266 |
+
}
|
267 |
+
}
|
268 |
+
}
|
269 |
+
}
|
270 |
+
}
|
271 |
+
|
272 |
+
/**
|
273 |
+
* Adds the body classes: 'factory-flat or 'factory-volumetric'.
|
274 |
+
*
|
275 |
+
* @since 3.2.0
|
276 |
+
*
|
277 |
+
* @param string $classes
|
278 |
+
*
|
279 |
+
* @return string
|
280 |
+
*/
|
281 |
+
public function adminBodyClass( $classes ) {
|
282 |
+
$classes .= FACTORY_FLAT_ADMIN ? ' factory-flat ' : ' factory-volumetric ';
|
283 |
+
|
284 |
+
return $classes;
|
285 |
+
}
|
286 |
+
}
|
libs/factory/bootstrap/includes/index.php
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
libs/factory/bootstrap/index.php
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
libs/factory/core/README.md
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
# Core Factory Framework
|
2 |
+
|
3 |
+
It performs the connection of system modules of the framework, is responsible for migrations, plugin updates, admin notifications, initialization of the plugin.
|
libs/factory/core/boot.php
ADDED
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Factory Plugin
|
4 |
+
*
|
5 |
+
* @author @author Alex Kovalev <alex.kovalevv@gmail.com>, repo: https://github.com/alexkovalevv
|
6 |
+
* @since 1.0.0
|
7 |
+
* @package core
|
8 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
9 |
+
*
|
10 |
+
*/
|
11 |
+
|
12 |
+
// Exit if accessed directly
|
13 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
|
17 |
+
if ( defined( 'FACTORY_420_LOADED' ) ) {
|
18 |
+
return;
|
19 |
+
}
|
20 |
+
|
21 |
+
define( 'FACTORY_420_LOADED', true );
|
22 |
+
|
23 |
+
define( 'FACTORY_420_VERSION', '4.2.0' );
|
24 |
+
|
25 |
+
define( 'FACTORY_420_DIR', dirname( __FILE__ ) );
|
26 |
+
define( 'FACTORY_420_URL', plugins_url( null, __FILE__ ) );
|
27 |
+
|
28 |
+
load_plugin_textdomain( 'wbcr_factory_420', false, dirname( plugin_basename( __FILE__ ) ) . '/langs' );
|
29 |
+
|
30 |
+
#comp merge
|
31 |
+
require_once( FACTORY_420_DIR . '/includes/functions.php' );
|
32 |
+
|
33 |
+
require_once( FACTORY_420_DIR . '/includes/entities/class-factory-paths.php' );
|
34 |
+
require_once( FACTORY_420_DIR . '/includes/entities/class-factory-support.php' );
|
35 |
+
|
36 |
+
require_once( FACTORY_420_DIR . '/includes/class-factory-requests.php' );
|
37 |
+
require_once( FACTORY_420_DIR . '/includes/class-factory-options.php' );
|
38 |
+
require_once( FACTORY_420_DIR . '/includes/class-factory-plugin-base.php' );
|
39 |
+
require_once( FACTORY_420_DIR . '/includes/class-factory-migrations.php' );
|
40 |
+
require_once( FACTORY_420_DIR . '/includes/class-factory-notices.php' );
|
41 |
+
|
42 |
+
// ASSETS
|
43 |
+
require_once( FACTORY_420_DIR . '/includes/assets-managment/class-factory-assets-list.php' );
|
44 |
+
require_once( FACTORY_420_DIR . '/includes/assets-managment/class-factory-script-list.php' );
|
45 |
+
require_once( FACTORY_420_DIR . '/includes/assets-managment/class-factory-style-list.php' );
|
46 |
+
|
47 |
+
// PREMIUM
|
48 |
+
require_once( FACTORY_420_DIR . '/includes/premium/class-factory-license-interface.php' );
|
49 |
+
require_once( FACTORY_420_DIR . '/includes/premium/class-factory-provider-abstract.php' );
|
50 |
+
require_once( FACTORY_420_DIR . '/includes/premium/class-factory-manager.php' );
|
51 |
+
|
52 |
+
// UPDATES
|
53 |
+
require_once( FACTORY_420_DIR . '/includes/updates/repositories/class-factory-repository-abstract.php' );
|
54 |
+
require_once( FACTORY_420_DIR . '/includes/updates/repositories/class-factory-wordpress.php' );
|
55 |
+
require_once( FACTORY_420_DIR . '/includes/updates/class-factory-upgrader.php' );
|
56 |
+
require_once( FACTORY_420_DIR . '/includes/updates/class-factory-premium-upgrader.php' );
|
57 |
+
|
58 |
+
require_once( FACTORY_420_DIR . '/includes/class-factory-plugin-abstract.php' );
|
59 |
+
|
60 |
+
require_once( FACTORY_420_DIR . '/includes/activation/class-factory-activator.php' );
|
61 |
+
require_once( FACTORY_420_DIR . '/includes/activation/class-factory-update.php' );
|
62 |
+
#endcomp
|
libs/factory/core/includes/activation/class-factory-activator.php
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The file contains a base class for plugin activators.
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>, repo: https://github.com/alexkovalevv
|
6 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>, site: https://webcraftic.com
|
7 |
+
*
|
8 |
+
* @package factory-core
|
9 |
+
* @since 1.0.0
|
10 |
+
*/
|
11 |
+
// Exit if accessed directly
|
12 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
13 |
+
exit;
|
14 |
+
}
|
15 |
+
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Plugin Activator
|
19 |
+
*
|
20 |
+
* @since 1.0.0
|
21 |
+
*/
|
22 |
+
abstract class Wbcr_Factory420_Activator {
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Curent plugin.
|
26 |
+
*
|
27 |
+
* @var Wbcr_Factory420_Plugin
|
28 |
+
*/
|
29 |
+
public $plugin;
|
30 |
+
|
31 |
+
public function __construct( Wbcr_Factory420_Plugin $plugin ) {
|
32 |
+
$this->plugin = $plugin;
|
33 |
+
}
|
34 |
+
|
35 |
+
public function activate() {
|
36 |
+
}
|
37 |
+
|
38 |
+
public function deactivate() {
|
39 |
+
}
|
40 |
+
|
41 |
+
public function update() {
|
42 |
+
}
|
43 |
+
}
|
libs/factory/core/includes/activation/class-factory-update.php
ADDED
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The file contains a base class for update items of plugins.
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>, repo: https://github.com/alexkovalevv
|
6 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>, site: https://webcraftic.com
|
7 |
+
*
|
8 |
+
* @package factory-core
|
9 |
+
* @since 1.0.0
|
10 |
+
*/
|
11 |
+
|
12 |
+
// Exit if accessed directly
|
13 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Plugin Activator
|
20 |
+
*
|
21 |
+
* @since 1.0.0
|
22 |
+
*/
|
23 |
+
abstract class Wbcr_Factory420_Update {
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Current plugin
|
27 |
+
*
|
28 |
+
* @var Wbcr_Factory420_Plugin
|
29 |
+
*/
|
30 |
+
var $plugin;
|
31 |
+
|
32 |
+
public function __construct( Wbcr_Factory420_Plugin $plugin ) {
|
33 |
+
$this->plugin = $plugin;
|
34 |
+
}
|
35 |
+
|
36 |
+
abstract function install();
|
37 |
+
|
38 |
+
//abstract function rollback();
|
39 |
+
}
|
libs/factory/core/includes/activation/index.php
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
libs/factory/core/includes/assets-managment/class-factory-assets-list.php
ADDED
@@ -0,0 +1,126 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The class contains a base class for all lists of assets.
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>, repo: https://github.com/alexkovalevv
|
6 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>, site: https://webcraftic.com
|
7 |
+
*
|
8 |
+
* @package factory-core
|
9 |
+
* @since 1.0.0
|
10 |
+
*/
|
11 |
+
|
12 |
+
// Exit if accessed directly
|
13 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Assets List
|
19 |
+
*
|
20 |
+
* @since 1.0.0
|
21 |
+
*/
|
22 |
+
class Wbcr_Factory420_AssetsList {
|
23 |
+
|
24 |
+
protected $all = [];
|
25 |
+
public $header_place = [];
|
26 |
+
public $footer_place = [];
|
27 |
+
public $required = [];
|
28 |
+
|
29 |
+
protected $default_place;
|
30 |
+
|
31 |
+
/**
|
32 |
+
* @var Wbcr_Factory420_Plugin
|
33 |
+
*/
|
34 |
+
protected $plugin;
|
35 |
+
|
36 |
+
/**
|
37 |
+
* @param Wbcr_Factory420_Plugin $plugin
|
38 |
+
* @param bool $defaultIsFooter
|
39 |
+
*/
|
40 |
+
public function __construct( Wbcr_Factory420_Plugin $plugin, $defaultIsFooter = true ) {
|
41 |
+
$this->plugin = $plugin;
|
42 |
+
|
43 |
+
if ( $defaultIsFooter ) {
|
44 |
+
$this->default_place = &$this->footer_place;
|
45 |
+
}
|
46 |
+
if ( ! $defaultIsFooter ) {
|
47 |
+
$this->default_place = &$this->header_place;
|
48 |
+
}
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Remove items from the collection
|
53 |
+
*
|
54 |
+
* @return $this
|
55 |
+
*/
|
56 |
+
public function deregister() {
|
57 |
+
foreach ( func_get_args() as $item ) {
|
58 |
+
|
59 |
+
if ( ! is_string( $item ) ) {
|
60 |
+
return $this;
|
61 |
+
}
|
62 |
+
|
63 |
+
$key_in_all = array_search( $item, $this->all );
|
64 |
+
$key_in_default_place = array_search( $item, $this->default_place );
|
65 |
+
$key_in_header_place = array_search( $item, $this->header_place );
|
66 |
+
$key_inFooterPlace = array_search( $item, $this->footer_place );
|
67 |
+
|
68 |
+
if ( $key_in_all ) {
|
69 |
+
unset( $this->all[ $key_in_all ] );
|
70 |
+
}
|
71 |
+
if ( $key_in_default_place ) {
|
72 |
+
unset( $this->default_place[ $key_in_default_place ] );
|
73 |
+
}
|
74 |
+
if ( $key_in_header_place ) {
|
75 |
+
unset( $this->header_place[ $key_in_header_place ] );
|
76 |
+
}
|
77 |
+
if ( $key_inFooterPlace ) {
|
78 |
+
unset( $this->footer_place[ $key_inFooterPlace ] );
|
79 |
+
}
|
80 |
+
}
|
81 |
+
|
82 |
+
return $this;
|
83 |
+
}
|
84 |
+
|
85 |
+
/**
|
86 |
+
* Checks whether the collection is empty.
|
87 |
+
*
|
88 |
+
* @param string $source if the 'bootstrap' specified, checks only whether the bootstrap assets were required.
|
89 |
+
*
|
90 |
+
* @return boolean
|
91 |
+
*/
|
92 |
+
public function isEmpty( $source = 'wordpress' ) {
|
93 |
+
if ( 'bootstrap' === $source ) {
|
94 |
+
return empty( $this->required[ $source ] );
|
95 |
+
}
|
96 |
+
|
97 |
+
return empty( $this->all ) && empty( $this->required );
|
98 |
+
}
|
99 |
+
|
100 |
+
public function IsHeaderEmpty() {
|
101 |
+
return empty( $this->header_place );
|
102 |
+
}
|
103 |
+
|
104 |
+
public function IsFooterEmpty() {
|
105 |
+
return empty( $this->footer_place );
|
106 |
+
}
|
107 |
+
|
108 |
+
/**
|
109 |
+
* Adds new items to the requried collection.
|
110 |
+
*
|
111 |
+
* @param mixed
|
112 |
+
*/
|
113 |
+
public function request( $items, $source = 'wordpress' ) {
|
114 |
+
|
115 |
+
if ( is_array( $items ) ) {
|
116 |
+
foreach ( $items as $item ) {
|
117 |
+
$this->required[ $source ][] = $item;
|
118 |
+
}
|
119 |
+
} else {
|
120 |
+
$this->required[ $source ][] = $items;
|
121 |
+
}
|
122 |
+
|
123 |
+
return $this;
|
124 |
+
}
|
125 |
+
}
|
126 |
+
|
libs/factory/core/includes/assets-managment/class-factory-script-list.php
ADDED
@@ -0,0 +1,166 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The file contains a class to manage script assets.
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>, repo: https://github.com/alexkovalevv
|
6 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>, site: https://webcraftic.com
|
7 |
+
*
|
8 |
+
* @package factory-core
|
9 |
+
* @since 1.0.0
|
10 |
+
*/
|
11 |
+
|
12 |
+
// Exit if accessed directly
|
13 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Script List
|
20 |
+
*
|
21 |
+
* @since 1.0.0
|
22 |
+
*/
|
23 |
+
class Wbcr_Factory420_ScriptList extends Wbcr_Factory420_AssetsList {
|
24 |
+
|
25 |
+
public $localize_data = [];
|
26 |
+
public $use_ajax = false;
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Adds new items to the collection (default place).
|
30 |
+
*
|
31 |
+
* @param mixed
|
32 |
+
*
|
33 |
+
* @version 2.0
|
34 |
+
*/
|
35 |
+
public function add( $file_url, $deps = [ 'jquery' ], $handle = null, $version = false, $place = 'default' ) {
|
36 |
+
|
37 |
+
if ( empty( $file_url ) ) {
|
38 |
+
return $this;
|
39 |
+
}
|
40 |
+
|
41 |
+
$resource = [];
|
42 |
+
$resource['file_url'] = $file_url;
|
43 |
+
$resource['deps'] = $deps;
|
44 |
+
$resource['handle'] = $handle;
|
45 |
+
$resource['version'] = $version;
|
46 |
+
|
47 |
+
$this->all[] = $resource;
|
48 |
+
|
49 |
+
switch ( $place ) {
|
50 |
+
case 'header':
|
51 |
+
$this->header_place[] = $resource;
|
52 |
+
break;
|
53 |
+
case 'footer':
|
54 |
+
$this->footer_place[] = $resource;
|
55 |
+
break;
|
56 |
+
default:
|
57 |
+
$this->default_place[] = $resource;
|
58 |
+
break;
|
59 |
+
}
|
60 |
+
|
61 |
+
return $this;
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
* Adds new items to the collection (header).
|
66 |
+
*
|
67 |
+
* @param mixed
|
68 |
+
*/
|
69 |
+
public function addToHeader( $file_url, $deps = [ 'jquery' ], $handle = null ) {
|
70 |
+
return $this->add( $file_url, $deps, $handle, 'header' );
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
* Adds new items to the collection (footer).
|
75 |
+
*
|
76 |
+
* @param mixed
|
77 |
+
*/
|
78 |
+
public function addToFooter( $file_url, $deps = [ 'jquery' ], $handle = null ) {
|
79 |
+
return $this->add( $file_url, $deps, $handle, 'footer' );
|
80 |
+
}
|
81 |
+
|
82 |
+
/**
|
83 |
+
* Осуществляет подключение всех зарегистрированных скриптов
|
84 |
+
*
|
85 |
+
* @param string $source
|
86 |
+
*/
|
87 |
+
public function connect( $source = 'wordpress' ) {
|
88 |
+
|
89 |
+
// register all global required scripts
|
90 |
+
if ( ! empty( $this->required[ $source ] ) ) {
|
91 |
+
foreach ( $this->required[ $source ] as $script ) {
|
92 |
+
if ( 'wordpress' === $source ) {
|
93 |
+
wp_enqueue_script( $script );
|
94 |
+
} else if ( 'bootstrap' === $source ) {
|
95 |
+
$this->plugin->bootstrap->enqueueScript( $script );
|
96 |
+
}
|
97 |
+
}
|
98 |
+
}
|
99 |
+
|
100 |
+
if ( $source == 'bootstrap' ) {
|
101 |
+
return;
|
102 |
+
}
|
103 |
+
|
104 |
+
$is_first_script = true;
|
105 |
+
$is_footer = false;
|
106 |
+
|
107 |
+
// register all other scripts
|
108 |
+
foreach ( [ $this->header_place, $this->footer_place ] as $script_place ) {
|
109 |
+
foreach ( $script_place as $script ) {
|
110 |
+
|
111 |
+
if ( empty( $script['file_url'] ) ) {
|
112 |
+
continue;
|
113 |
+
}
|
114 |
+
|
115 |
+
$handle = ! empty( $script['handle'] ) ? $script['handle'] : $script['file_url'];
|
116 |
+
$deps = ! is_array( $script['deps'] ) ? [] : $script['deps'];
|
117 |
+
$version = ! empty( $script['version'] ) ? $script['version'] : $this->plugin->getPluginVersion();
|
118 |
+
|
119 |
+
wp_register_script( $handle, $script['file_url'], $deps, $version, $is_footer );
|
120 |
+
|
121 |
+
if ( $is_first_script && $this->use_ajax ) {
|
122 |
+
wp_localize_script( $handle, 'factory', [ 'ajaxurl' => admin_url( 'admin-ajax.php' ) ] );
|
123 |
+
}
|
124 |
+
|
125 |
+
if ( ! empty( $this->localize_data[ $handle ] ) ) {
|
126 |
+
wp_localize_script( $handle, $this->localize_data[ $handle ][0], $this->localize_data[ $handle ][1] );
|
127 |
+
}
|
128 |
+
|
129 |
+
wp_enqueue_script( $handle );
|
130 |
+
|
131 |
+
$is_first_script = false;
|
132 |
+
}
|
133 |
+
|
134 |
+
$is_footer = true;
|
135 |
+
}
|
136 |
+
}
|
137 |
+
|
138 |
+
/**
|
139 |
+
* Если вызвать этот метод, на странице будет обязательно добавлена
|
140 |
+
* глобальная JS переменная с ссылкой на ajax обработчик
|
141 |
+
*/
|
142 |
+
public function useAjax() {
|
143 |
+
$this->use_ajax = true;
|
144 |
+
}
|
145 |
+
|
146 |
+
/**
|
147 |
+
* Регистрирует глобальную JS переменную с пользовательскими данными
|
148 |
+
*
|
149 |
+
* @param string $varname
|
150 |
+
* @param string $data
|
151 |
+
*
|
152 |
+
* @return Wbcr_Factory420_ScriptList $this
|
153 |
+
*/
|
154 |
+
public function localize( $varname, $data ) {
|
155 |
+
$bindTo = count( $this->all ) == 0 ? null : end( $this->all );
|
156 |
+
|
157 |
+
if ( ! $bindTo ) {
|
158 |
+
return $this;
|
159 |
+
}
|
160 |
+
|
161 |
+
$this->localize_data[ $bindTo ] = [ $varname, $data ];
|
162 |
+
|
163 |
+
return $this;
|
164 |
+
}
|
165 |
+
}
|
166 |
+
|
libs/factory/core/includes/assets-managment/class-factory-style-list.php
ADDED
@@ -0,0 +1,86 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The file contains a class to manage style assets.
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>, repo: https://github.com/alexkovalevv
|
6 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>, site: https://webcraftic.com
|
7 |
+
*
|
8 |
+
* @package factory-core
|
9 |
+
* @since 1.0.0
|
10 |
+
*/
|
11 |
+
|
12 |
+
// Exit if accessed directly
|
13 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Style List
|
20 |
+
*
|
21 |
+
* @since 1.0.0
|
22 |
+
*/
|
23 |
+
class Wbcr_Factory420_StyleList extends Wbcr_Factory420_AssetsList {
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Adds new items to the collection (default place).
|
27 |
+
*
|
28 |
+
* @param mixed
|
29 |
+
*
|
30 |
+
* @version 2.0
|
31 |
+
*/
|
32 |
+
public function add( $file_url, $deps = [], $handle = null, $version = false, $media = 'all' ) {
|
33 |
+
|
34 |
+
if ( empty( $file_url ) ) {
|
35 |
+
return $this;
|
36 |
+
}
|
37 |
+
|
38 |
+
$resource = [];
|
39 |
+
$resource['file_url'] = $file_url;
|
40 |
+
$resource['deps'] = $deps;
|
41 |
+
$resource['handle'] = $handle;
|
42 |
+
$resource['version'] = $version;
|
43 |
+
$resource['media'] = $media;
|
44 |
+
|
45 |
+
$this->all[] = $resource;
|
46 |
+
|
47 |
+
return $this;
|
48 |
+
}
|
49 |
+
|
50 |
+
public function connect( $source = 'wordpress' ) {
|
51 |
+
// register all global required scripts
|
52 |
+
if ( ! empty( $this->required[ $source ] ) ) {
|
53 |
+
|
54 |
+
foreach ( $this->required[ $source ] as $style ) {
|
55 |
+
if ( 'wordpress' === $source ) {
|
56 |
+
wp_enqueue_style( $style );
|
57 |
+
} else if ( 'bootstrap' === $source ) {
|
58 |
+
$this->plugin->bootstrap->enqueueStyle( $style );
|
59 |
+
}
|
60 |
+
}
|
61 |
+
}
|
62 |
+
|
63 |
+
if ( $source == 'bootstrap' ) {
|
64 |
+
return;
|
65 |
+
}
|
66 |
+
|
67 |
+
if ( empty( $this->all ) ) {
|
68 |
+
return;
|
69 |
+
}
|
70 |
+
|
71 |
+
// register all other styles
|
72 |
+
foreach ( $this->all as $style ) {
|
73 |
+
|
74 |
+
if ( empty( $style['file_url'] ) ) {
|
75 |
+
continue;
|
76 |
+
}
|
77 |
+
|
78 |
+
$handle = ! empty( $style['handle'] ) ? $style['handle'] : md5( $style['file_url'] );
|
79 |
+
$deps = ! is_array( $style['deps'] ) ? [] : $style['deps'];
|
80 |
+
$version = ! empty( $style['version'] ) ? $style['version'] : $this->plugin->getPluginVersion();
|
81 |
+
|
82 |
+
wp_enqueue_style( $handle, $style['file_url'], $deps, $version );
|
83 |
+
}
|
84 |
+
}
|
85 |
+
}
|
86 |
+
|
libs/factory/core/includes/assets-managment/index.php
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
libs/factory/core/includes/class-check-compatibility.php
ADDED
@@ -0,0 +1,122 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Проверяет совместимость с плагинами Webcraftic, с версиями php, с версиями Wordpress
|
5 |
+
*
|
6 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>, repo: https://github.com/alexkovalevv
|
7 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>, site: https://webcraftic.com
|
8 |
+
*
|
9 |
+
* @version 1.0.0
|
10 |
+
* @since 4.0.8
|
11 |
+
*/
|
12 |
+
|
13 |
+
if ( ! class_exists( 'Wbcr_Factory_Compatibility' ) ) {
|
14 |
+
class Wbcr_Factory_Compatibility {
|
15 |
+
|
16 |
+
protected $plugin_prefix;
|
17 |
+
protected $plugin_class_prefix;
|
18 |
+
protected $plugin_name;
|
19 |
+
protected $plugin_title = "(no title)";
|
20 |
+
protected $required_php_version = '5.3';
|
21 |
+
protected $required_wp_version = '4.2.0';
|
22 |
+
|
23 |
+
function __construct( array $plugin_info ) {
|
24 |
+
foreach ( (array) $plugin_info as $property => $value ) {
|
25 |
+
$this->$property = $value;
|
26 |
+
}
|
27 |
+
|
28 |
+
add_action( 'admin_init', [ $this, 'registerNotices' ] );
|
29 |
+
}
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Метод проверяет совместимость плагина с php и wordpress версией
|
33 |
+
*
|
34 |
+
* @return bool
|
35 |
+
*/
|
36 |
+
public function check() {
|
37 |
+
if ( ! $this->isPhpCompatibility() ) {
|
38 |
+
return false;
|
39 |
+
}
|
40 |
+
|
41 |
+
if ( ! $this->isWpCompatibility() ) {
|
42 |
+
return false;
|
43 |
+
}
|
44 |
+
|
45 |
+
return true;
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Метод проверяет совместимость плагина с php версией сервера
|
50 |
+
*
|
51 |
+
* @return mixed
|
52 |
+
*/
|
53 |
+
public function isPhpCompatibility() {
|
54 |
+
return version_compare( PHP_VERSION, $this->required_php_version, '>=' );
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Метод проверяет совместимость плагина с Wordpress версией сайта
|
59 |
+
*
|
60 |
+
* @return mixed
|
61 |
+
*/
|
62 |
+
public function isWpCompatibility() {
|
63 |
+
// Get the WP Version global.
|
64 |
+
global $wp_version;
|
65 |
+
|
66 |
+
return version_compare( $wp_version, $this->required_wp_version, '>=' );
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Метод возвращает текст уведомления
|
71 |
+
*
|
72 |
+
* @return string
|
73 |
+
*/
|
74 |
+
public function getNoticeText() {
|
75 |
+
$notice_text = $notice_default_text = '';
|
76 |
+
$notice_default_text .= '<b>' . $this->plugin_title . ' ' . __( 'warning', '' ) . ':</b>' . '<br>';
|
77 |
+
|
78 |
+
$notice_default_text .= sprintf( __( 'The %s plugin has stopped.', 'wbcr_factory_clearfy_000' ), $this->plugin_title ) . ' ';
|
79 |
+
$notice_default_text .= __( 'Possible reasons:', '' ) . ' <br>';
|
80 |
+
|
81 |
+
$has_one = false;
|
82 |
+
|
83 |
+
if ( ! $this->isPhpCompatibility() ) {
|
84 |
+
$has_one = true;
|
85 |
+
$notice_text .= '- ' . sprintf( __( 'You need to update the PHP version to %s or higher!', 'wbcr_factory_420' ), $this->required_php_version ) . '<br>';
|
86 |
+
}
|
87 |
+
|
88 |
+
if ( ! $this->isWpCompatibility() ) {
|
89 |
+
$has_one = true;
|
90 |
+
$notice_text .= '- ' . sprintf( __( 'You need to update WordPress to %s or higher!', 'wbcr_factory_420' ), $this->required_wp_version ) . '<br>';
|
91 |
+
}
|
92 |
+
|
93 |
+
if ( $has_one ) {
|
94 |
+
$notice_text = $notice_default_text . $notice_text;
|
95 |
+
}
|
96 |
+
|
97 |
+
return $notice_text;
|
98 |
+
}
|
99 |
+
|
100 |
+
public function registerNotices() {
|
101 |
+
if ( current_user_can( 'activate_plugins' ) && current_user_can( 'edit_plugins' ) && current_user_can( 'install_plugins' ) ) {
|
102 |
+
if ( is_multisite() ) {
|
103 |
+
add_action( 'network_admin_notices', [ $this, 'showNotice' ] );
|
104 |
+
}
|
105 |
+
|
106 |
+
add_action( 'admin_notices', [ $this, 'showNotice' ] );
|
107 |
+
}
|
108 |
+
}
|
109 |
+
|
110 |
+
public function showNotice() {
|
111 |
+
$notice_text = $this->getNoticeText();
|
112 |
+
|
113 |
+
if ( empty( $notice_text ) ) {
|
114 |
+
return;
|
115 |
+
}
|
116 |
+
|
117 |
+
$notice_text = '<p>' . $this->getNoticeText() . '</p>';
|
118 |
+
|
119 |
+
echo '<div class="notice notice-error">' . apply_filters( 'wbcr/factory/check_compatibility/notice_text', $notice_text, $this->plugin_name ) . '</div>';
|
120 |
+
}
|
121 |
+
}
|
122 |
+
}
|
libs/factory/core/includes/class-factory-migrations.php
ADDED
@@ -0,0 +1,541 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WBCR\Factory_420;
|
4 |
+
|
5 |
+
use Exception;
|
6 |
+
use Wbcr_Factory420_Plugin;
|
7 |
+
|
8 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
+
exit;
|
10 |
+
}
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Often when updating plugins, you need to make some changes to the database.
|
14 |
+
* This class automatically checks for plugin migrations and executes them when
|
15 |
+
* updating.
|
16 |
+
*
|
17 |
+
* The class has a debug mode, to enable the debug mode add constants to your plugin:
|
18 |
+
* define ('FACTORY_MIGRATIONS_DEBUG', true) - enables/disables debugging mode
|
19 |
+
* define ('FACTORY_MIGRATIONS_FORCE_OLD_VERSION', '1.1.9') - sets previous version
|
20 |
+
* for the plugin, if constant isn't set, then the previous version is taken from
|
21 |
+
* the database.
|
22 |
+
*
|
23 |
+
* todo: get_option and get_site_option are used because some caching plugins caching options, which causes problems
|
24 |
+
*
|
25 |
+
*
|
26 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>, repo: https://github.com/alexkovalevv
|
27 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>, site: https://webcraftic.com
|
28 |
+
*
|
29 |
+
* @since 4.1.1
|
30 |
+
*/
|
31 |
+
class Migrations {
|
32 |
+
|
33 |
+
protected $plugin;
|
34 |
+
|
35 |
+
/**
|
36 |
+
* Migrations constructor.
|
37 |
+
*
|
38 |
+
* @param Wbcr_Factory420_Plugin $plugin
|
39 |
+
*
|
40 |
+
* @throws Exception
|
41 |
+
*/
|
42 |
+
public function __construct( Wbcr_Factory420_Plugin $plugin ) {
|
43 |
+
|
44 |
+
$this->plugin = $plugin;
|
45 |
+
$plugin_name = $plugin->getPluginName();
|
46 |
+
|
47 |
+
if ( ! file_exists( $this->plugin->get_paths()->migrations ) ) {
|
48 |
+
throw new Exception( 'Starting with version 4.1.1 of the Core for Factory framework module, you must create a "migrations" folder in the root of your plugin to store the migration of the plugin.' );
|
49 |
+
}
|
50 |
+
|
51 |
+
if ( is_admin() ) {
|
52 |
+
add_action( "admin_init", [ $this, "check_migrations" ] );
|
53 |
+
|
54 |
+
add_action( "wbcr/factory/plugin_{$plugin_name}_activated", [ $this, 'activation_hook' ] );
|
55 |
+
add_action( "wbcr_factory_notices_000_list", [ $this, "debug_bar_notice" ], 10, 2 );
|
56 |
+
add_action( "wbcr_factory_notices_000_list", [ $this, "migration_error_notice" ], 10, 2 );
|
57 |
+
}
|
58 |
+
}
|
59 |
+
|
60 |
+
/**
|
61 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
62 |
+
* @since 4.1.1
|
63 |
+
* @return mixed|void
|
64 |
+
*/
|
65 |
+
public function get_plugin_activated_time() {
|
66 |
+
if ( $this->plugin->isNetworkActive() ) {
|
67 |
+
return get_site_option( $this->plugin->getOptionName( 'plugin_activated' ), 0 );
|
68 |
+
}
|
69 |
+
|
70 |
+
return get_option( $this->plugin->getOptionName( 'plugin_activated' ), 0 );
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
* Check if migration is necessary for plugin and if there are errors from previous migrations.
|
75 |
+
* In debug mode, migrations are not performed automatically.
|
76 |
+
*/
|
77 |
+
public function check_migrations() {
|
78 |
+
if ( $this->is_migration_error() && isset( $_GET['wbcr_factory_fix_migration_error'] ) ) {
|
79 |
+
$this->fix_migration_error();
|
80 |
+
wp_redirect( remove_query_arg( 'wbcr_factory_fix_migration_error' ) );
|
81 |
+
die();
|
82 |
+
}
|
83 |
+
|
84 |
+
if ( $this->is_debug() && isset( $_GET['wbcr_factory_test_migration'] ) ) {
|
85 |
+
$this->make_migration();
|
86 |
+
wp_redirect( remove_query_arg( 'wbcr_factory_test_migration' ) );
|
87 |
+
die();
|
88 |
+
}
|
89 |
+
|
90 |
+
if ( $this->need_migration() && ! $this->is_debug() ) {
|
91 |
+
$this->make_migration();
|
92 |
+
}
|
93 |
+
}
|
94 |
+
|
95 |
+
/**
|
96 |
+
* Notification displays the errors of outstanding migrations to fix errors
|
97 |
+
* you need to follow the instructions in the notification and click
|
98 |
+
* "I fixed, confirm migration".
|
99 |
+
*
|
100 |
+
* What is it for. Migrations are performed in background and on some sites,
|
101 |
+
* due to php errors or for some other reason, migration may be
|
102 |
+
* interrupted, because of what plugin will work incorrectly, you may lose settings.
|
103 |
+
*
|
104 |
+
* When creating new migrations, developer will add error handlers,
|
105 |
+
* and framework will intercept them safely for user and display them
|
106 |
+
* in this notice.
|
107 |
+
*
|
108 |
+
* @param array $notices
|
109 |
+
* @param static $plugin_name
|
110 |
+
*
|
111 |
+
* @return array
|
112 |
+
*/
|
113 |
+
public function migration_error_notice( $notices, $plugin_name ) {
|
114 |
+
|
115 |
+
if ( $this->plugin->getPluginName() !== $plugin_name ) {
|
116 |
+
return $notices;
|
117 |
+
}
|
118 |
+
|
119 |
+
if ( ! $this->is_migration_error() || ! current_user_can( 'update_plugins' ) ) {
|
120 |
+
return $notices;
|
121 |
+
}
|
122 |
+
|
123 |
+
if ( $this->plugin->isNetworkActive() ) {
|
124 |
+
$migration_error_text = get_site_option( $this->plugin->getOptionName( 'plugin_migration_error' ), '' );
|
125 |
+
} else {
|
126 |
+
$migration_error_text = get_option( $this->plugin->getOptionName( 'plugin_migration_error' ), '' );
|
127 |
+
}
|
128 |
+
|
129 |
+
$fix_migration_error_url = add_query_arg( 'wbcr_factory_fix_migration_error', 1 );
|
130 |
+
|
131 |
+
$notice_text = $migration_error_text;
|
132 |
+
$notice_text .= "<br><br><a href='{$fix_migration_error_url}' class='button button-default'>" . __( 'I fixed, confirm migration', 'wbcr_factory_420' ) . "</a>";
|
133 |
+
|
134 |
+
$notices[] = [
|
135 |
+
'id' => 'migration_debug_bar',
|
136 |
+
'type' => 'error',
|
137 |
+
'dismissible' => false,
|
138 |
+
'dismiss_expires' => 0,
|
139 |
+
'text' => '<p><b>' . $this->plugin->getPluginTitle() . ' ' . __( 'migration error', 'wbcr_factory_420' ) . '</b><br>' . $notice_text . '</p>'
|
140 |
+
];
|
141 |
+
|
142 |
+
return $notices;
|
143 |
+
}
|
144 |
+
|
145 |
+
/**
|
146 |
+
* Debug panel, display some information from the database. Also allows
|
147 |
+
* perform manual migrations to test new migrations.
|
148 |
+
*
|
149 |
+
* @param array $notices
|
150 |
+
* @param string $plugin_name
|
151 |
+
*
|
152 |
+
* @return array
|
153 |
+
*/
|
154 |
+
public function debug_bar_notice( $notices, $plugin_name ) {
|
155 |
+
|
156 |
+
if ( $this->plugin->getPluginName() !== $plugin_name ) {
|
157 |
+
return $notices;
|
158 |
+
}
|
159 |
+
if ( ! $this->is_debug() || ! current_user_can( 'update_plugins' ) ) {
|
160 |
+
return $notices;
|
161 |
+
}
|
162 |
+
|
163 |
+
$migrate_url = add_query_arg( 'wbcr_factory_test_migration', 1 );
|
164 |
+
|
165 |
+
$notice_text = __( "Plugin activated:", "wbcr_factory_420" ) . ' ' . date( "Y-m-d H:i:s", $this->get_plugin_activated_time() ) . "<br>";
|
166 |
+
|
167 |
+
$notice_text .= __( "Old plugin version (debug):", "wbcr_factory_420" ) . ' ' . $this->get_old_plugin_version() . "<br>";
|
168 |
+
$notice_text .= __( "Current plugin version:", "wbcr_factory_420" ) . ' ' . $this->get_current_plugin_version() . "<br>";
|
169 |
+
$notice_text .= __( "Need migration:", "wbcr_factory_420" ) . ' ' . ( $this->need_migration() ? "true" : "false" ) . "<br><br>";
|
170 |
+
$notice_text .= "<a href='{$migrate_url}' class='button button-default'>" . __( "Migrate now", "wbcr_factory_420" ) . "</a><br>";
|
171 |
+
|
172 |
+
$notices[] = [
|
173 |
+
'id' => 'migration_debug_bar',
|
174 |
+
'type' => 'warning',
|
175 |
+
'dismissible' => false,
|
176 |
+
'dismiss_expires' => 0,
|
177 |
+
'text' => '<p><b style="color:red;">' . $this->plugin->getPluginTitle() . ' ' . __( 'migrations DEBUG bar', 'wbcr_factory_420' ) . '</b><br>' . $notice_text . '</p>'
|
178 |
+
];
|
179 |
+
|
180 |
+
return $notices;
|
181 |
+
}
|
182 |
+
|
183 |
+
/**
|
184 |
+
* Runs when plugin is activated. Checks if you need to migrate
|
185 |
+
* and if necessary it does it. Also adds a option when the plugin
|
186 |
+
* was activated for the first time.
|
187 |
+
*/
|
188 |
+
public function activation_hook() {
|
189 |
+
/*if ( $this->need_migration() && ! $this->is_debug() ) {
|
190 |
+
$this->make_migration();
|
191 |
+
}*/
|
192 |
+
|
193 |
+
// just time to know when the plugin was activated the first time
|
194 |
+
$activated = $this->get_plugin_activated_time();
|
195 |
+
|
196 |
+
if ( ! $activated ) {
|
197 |
+
if ( $this->plugin->isNetworkActive() ) {
|
198 |
+
update_site_option( $this->plugin->getOptionName( 'plugin_activated' ), time() );
|
199 |
+
update_site_option( $this->plugin->getOptionName( 'plugin_version' ), $this->get_current_plugin_version() );
|
200 |
+
} else {
|
201 |
+
update_option( $this->plugin->getOptionName( 'plugin_activated' ), time() );
|
202 |
+
update_option( $this->plugin->getOptionName( 'plugin_version' ), $this->get_current_plugin_version() );
|
203 |
+
}
|
204 |
+
}
|
205 |
+
}
|
206 |
+
|
207 |
+
/**
|
208 |
+
* Checks if debug mode of migrations from version x.x.x to x.x.y is enabled.
|
209 |
+
*
|
210 |
+
* @return bool
|
211 |
+
*/
|
212 |
+
protected function is_debug() {
|
213 |
+
return defined( 'FACTORY_MIGRATIONS_DEBUG' ) && FACTORY_MIGRATIONS_DEBUG;
|
214 |
+
}
|
215 |
+
|
216 |
+
/**
|
217 |
+
* Gets previous version of plugin that plugin had before updating to the new version.
|
218 |
+
*
|
219 |
+
* @return string|null
|
220 |
+
*/
|
221 |
+
protected function get_old_plugin_version() {
|
222 |
+
|
223 |
+
if ( $this->is_debug() && defined( 'FACTORY_MIGRATIONS_FORCE_OLD_VERSION' ) ) {
|
224 |
+
return FACTORY_MIGRATIONS_FORCE_OLD_VERSION;
|
225 |
+
}
|
226 |
+
|
227 |
+
if ( $this->plugin->isNetworkActive() ) {
|
228 |
+
$plugin_version = get_site_option( $this->plugin->getOptionName( 'plugin_version' ), null );
|
229 |
+
} else {
|
230 |
+
$plugin_version = get_option( $this->plugin->getOptionName( 'plugin_version' ), null );
|
231 |
+
}
|
232 |
+
|
233 |
+
if ( ! empty( $plugin_version ) ) {
|
234 |
+
return $plugin_version;
|
235 |
+
}
|
236 |
+
|
237 |
+
# TODO: Remove after few releases
|
238 |
+
# This block for compatibility code with old version of framework < 4.1.1
|
239 |
+
#-------------------------------------------
|
240 |
+
if ( $this->plugin->isNetworkActive() ) {
|
241 |
+
$plugin_versions = get_site_option( 'factory_plugin_versions', [] );
|
242 |
+
} else {
|
243 |
+
$plugin_versions = get_option( 'factory_plugin_versions', [] );
|
244 |
+
}
|
245 |
+
|
246 |
+
$plugin_version = isset( $plugin_versions[ $this->plugin->getPluginName() ] ) ? $plugin_versions[ $this->plugin->getPluginName() ] : null;
|
247 |
+
|
248 |
+
if ( ! empty( $plugin_version ) ) {
|
249 |
+
$plugin_version = str_replace( [ 'free-', 'premium-', 'offline-' ], '', $plugin_version );
|
250 |
+
}
|
251 |
+
|
252 |
+
#-------------------------------------------
|
253 |
+
|
254 |
+
return $plugin_version;
|
255 |
+
}
|
256 |
+
|
257 |
+
/**
|
258 |
+
* Gets the current version of plugin.
|
259 |
+
*
|
260 |
+
* @return string
|
261 |
+
*/
|
262 |
+
protected function get_current_plugin_version() {
|
263 |
+
return $this->plugin->getPluginVersion();
|
264 |
+
}
|
265 |
+
|
266 |
+
/**
|
267 |
+
* Do I need migration for plugin? If previous migration was with a error, then
|
268 |
+
* method will always return false to prevent looping.
|
269 |
+
*
|
270 |
+
* @return mixed
|
271 |
+
*/
|
272 |
+
protected function need_migration() {
|
273 |
+
if ( $this->is_migration_error() ) {
|
274 |
+
return false;
|
275 |
+
}
|
276 |
+
|
277 |
+
return version_compare( $this->get_old_plugin_version(), $this->get_current_plugin_version(), '<' );
|
278 |
+
}
|
279 |
+
|
280 |
+
/**
|
281 |
+
* Are there errors from previous migrations?
|
282 |
+
*
|
283 |
+
* @return bool
|
284 |
+
*/
|
285 |
+
protected function is_migration_error() {
|
286 |
+
if ( $this->plugin->isNetworkActive() ) {
|
287 |
+
$error = get_site_option( $this->plugin->getOptionName( 'plugin_migration_error' ), false );
|
288 |
+
} else {
|
289 |
+
$error = get_option( $this->plugin->getOptionName( 'plugin_migration_error' ), false );
|
290 |
+
}
|
291 |
+
|
292 |
+
return $error !== false;
|
293 |
+
}
|
294 |
+
|
295 |
+
/**
|
296 |
+
* Remove an option in database, thereby fix errors of the previous migration.
|
297 |
+
*/
|
298 |
+
protected function fix_migration_error() {
|
299 |
+
if ( $this->plugin->isNetworkActive() ) {
|
300 |
+
delete_site_option( $this->plugin->getOptionName( 'plugin_migration_error' ) );
|
301 |
+
|
302 |
+
return;
|
303 |
+
}
|
304 |
+
|
305 |
+
delete_option( $this->plugin->getOptionName( 'plugin_migration_error' ) );
|
306 |
+
}
|
307 |
+
|
308 |
+
/**
|
309 |
+
* Migrates the plugin from version x.x.x to x.x.y. Automatically searches for files
|
310 |
+
* migrations to the plugin's root directory and executes them. Default files
|
311 |
+
* migrations are stored in wp-content/plugins/plugin-name/migrations and have names
|
312 |
+
* 0x0x0x.php, which corresponds to the version x.x.x. Method executes those migration files
|
313 |
+
* versions of which are between the previous version of plugin and current one.
|
314 |
+
*
|
315 |
+
*/
|
316 |
+
protected function make_migration() {
|
317 |
+
|
318 |
+
if ( ! current_user_can( 'update_plugins' ) ) {
|
319 |
+
return;
|
320 |
+
}
|
321 |
+
|
322 |
+
$old_plugin_version = $this->get_old_plugin_version();
|
323 |
+
$new_plugin_version = $this->get_current_plugin_version();
|
324 |
+
|
325 |
+
if ( empty( $old_plugin_version ) ) {
|
326 |
+
$this->update_plugin_version_in_db();
|
327 |
+
}
|
328 |
+
|
329 |
+
// converts versions like 0.0.0 to 000000
|
330 |
+
$old_number = $this->get_version_number( $old_plugin_version );
|
331 |
+
$new_number = $this->get_version_number( $new_plugin_version );
|
332 |
+
|
333 |
+
try {
|
334 |
+
|
335 |
+
$update_files = $this->plugin->get_paths()->migrations;
|
336 |
+
$files = $this->find_files( $update_files );
|
337 |
+
|
338 |
+
if ( empty( $files ) ) {
|
339 |
+
$this->update_plugin_version_in_db();
|
340 |
+
|
341 |
+
return;
|
342 |
+
}
|
343 |
+
|
344 |
+
// finds updates that has intermediate version
|
345 |
+
foreach ( (array) $files as $item ) {
|
346 |
+
if ( ! preg_match( '/^\d+$/', $item['name'] ) ) {
|
347 |
+
continue;
|
348 |
+
}
|
349 |
+
|
350 |
+
$item_number = intval( $item['name'] );
|
351 |
+
|
352 |
+
if ( $item_number > $old_number && $item_number <= $new_number ) {
|
353 |
+
$classes = $this->get_classes( $item['path'] );
|
354 |
+
|
355 |
+
if ( count( $classes ) == 0 ) {
|
356 |
+
continue;
|
357 |
+
}
|
358 |
+
|
359 |
+
foreach ( $classes as $path => $class_data ) {
|
360 |
+
include_once( $path );
|
361 |
+
$update_class = $class_data['name'];
|
362 |
+
|
363 |
+
$update = new $update_class( $this->plugin );
|
364 |
+
$update->install();
|
365 |
+
}
|
366 |
+
}
|
367 |
+
}
|
368 |
+
|
369 |
+
$this->update_plugin_version_in_db();
|
370 |
+
} catch( Exception $e ) {
|
371 |
+
if ( $this->plugin->isNetworkActive() ) {
|
372 |
+
update_site_option( $this->plugin->getOptionName( 'plugin_migration_error' ), $e->getMessage() );
|
373 |
+
|
374 |
+
return;
|
375 |
+
}
|
376 |
+
update_option( $this->plugin->getOptionName( 'plugin_migration_error' ), $e->getMessage() );
|
377 |
+
}
|
378 |
+
}
|
379 |
+
|
380 |
+
/**
|
381 |
+
* Updates version of plugin in database. So that we can track which
|
382 |
+
* previous version of plugin was at the user, before he updated
|
383 |
+
* plugin.
|
384 |
+
*/
|
385 |
+
protected function update_plugin_version_in_db() {
|
386 |
+
|
387 |
+
# TODO: Delete after few releases
|
388 |
+
# This block for compatibility code with the old version of framework.
|
389 |
+
# Cleans up old data, after the transition to new version of framework.
|
390 |
+
#-------------------------------------------
|
391 |
+
if ( $this->plugin->isNetworkActive() ) {
|
392 |
+
$plugin_versions = get_site_option( 'factory_plugin_versions', [] );
|
393 |
+
} else {
|
394 |
+
$plugin_versions = get_option( 'factory_plugin_versions', [] );
|
395 |
+
}
|
396 |
+
|
397 |
+
if ( isset( $plugin_versions[ $this->plugin->getPluginName() ] ) ) {
|
398 |
+
unset( $plugin_versions[ $this->plugin->getPluginName() ] );
|
399 |
+
}
|
400 |
+
|
401 |
+
if ( $this->plugin->isNetworkActive() ) {
|
402 |
+
if ( empty( $plugin_versions ) ) {
|
403 |
+
delete_site_option( 'factory_plugin_versions' );
|
404 |
+
}
|
405 |
+
update_site_option( 'factory_plugin_versions', $plugin_versions );
|
406 |
+
update_site_option( $this->plugin->getOptionName( 'plugin_version' ), $this->get_current_plugin_version() );
|
407 |
+
|
408 |
+
return;
|
409 |
+
}
|
410 |
+
|
411 |
+
if ( empty( $plugin_versions ) ) {
|
412 |
+
delete_option( 'factory_plugin_versions' );
|
413 |
+
}
|
414 |
+
|
415 |
+
update_option( 'factory_plugin_versions', $plugin_versions );
|
416 |
+
update_option( $this->plugin->getOptionName( 'plugin_version' ), $this->get_current_plugin_version() );
|
417 |
+
}
|
418 |
+
|
419 |
+
/**
|
420 |
+
* Converts string representation of the version to the numeric.
|
421 |
+
*
|
422 |
+
* @since 1.0.0
|
423 |
+
*
|
424 |
+
* @param string $version A string version to convert.
|
425 |
+
*
|
426 |
+
* @return integer
|
427 |
+
*/
|
428 |
+
protected function get_version_number( $version ) {
|
429 |
+
preg_match( '/(\d+)\.(\d+)\.(\d+)/', $version, $matches );
|
430 |
+
if ( count( $matches ) == 0 ) {
|
431 |
+
return false;
|
432 |
+
}
|
433 |
+
|
434 |
+
$number = '';
|
435 |
+
$number .= ( strlen( $matches[1] ) == 1 ) ? '0' . $matches[1] : $matches[1];
|
436 |
+
$number .= ( strlen( $matches[2] ) == 1 ) ? '0' . $matches[2] : $matches[2];
|
437 |
+
$number .= ( strlen( $matches[3] ) == 1 ) ? '0' . $matches[3] : $matches[3];
|
438 |
+
|
439 |
+
return intval( $number );
|
440 |
+
}
|
441 |
+
|
442 |
+
/**
|
443 |
+
* Returns a list of files at a given path.
|
444 |
+
*
|
445 |
+
* @param string $path path for search
|
446 |
+
*/
|
447 |
+
private function find_files( $path ) {
|
448 |
+
return $this->find_file_or_folders( $path, true );
|
449 |
+
}
|
450 |
+
|
451 |
+
/**
|
452 |
+
* Returns a list of folders at a given path.
|
453 |
+
*
|
454 |
+
* @param string $path path for search
|
455 |
+
*/
|
456 |
+
/*private function find_folders( $path ) {
|
457 |
+
return $this->find_file_or_folders( $path, false );
|
458 |
+
}*/
|
459 |
+
|
460 |
+
/**
|
461 |
+
* Returns a list of files or folders at a given path.
|
462 |
+
*
|
463 |
+
* @param string $path path for search
|
464 |
+
* @param bool $files files or folders?
|
465 |
+
*/
|
466 |
+
private function find_file_or_folders( $path, $areFiles = true ) {
|
467 |
+
if ( ! is_dir( $path ) ) {
|
468 |
+
return [];
|
469 |
+
}
|
470 |
+
|
471 |
+
$entries = scandir( $path );
|
472 |
+
if ( empty( $entries ) ) {
|
473 |
+
return [];
|
474 |
+
}
|
475 |
+
|
476 |
+
$files = [];
|
477 |
+
foreach ( $entries as $entryName ) {
|
478 |
+
if ( $entryName == '.' || $entryName == '..' ) {
|
479 |
+
continue;
|
480 |
+
}
|
481 |
+
|
482 |
+
$filename = $path . '/' . $entryName;
|
483 |
+
if ( ( $areFiles && is_file( $filename ) ) || ( ! $areFiles && is_dir( $filename ) ) ) {
|
484 |
+
$files[] = [
|
485 |
+
'path' => str_replace( "\\", "/", $filename ),
|
486 |
+
'name' => $areFiles ? str_replace( '.php', '', $entryName ) : $entryName
|
487 |
+
];
|
488 |
+
}
|
489 |
+
}
|
490 |
+
|
491 |
+
return $files;
|
492 |
+
}
|
493 |
+
|
494 |
+
/**
|
495 |
+
* Gets php classes defined in a specified file.
|
496 |
+
*
|
497 |
+
* @param string $path
|
498 |
+
*
|
499 |
+
* @throws Exception
|
500 |
+
*/
|
501 |
+
private function get_classes( $path ) {
|
502 |
+
|
503 |
+
$phpCode = file_get_contents( $path );
|
504 |
+
|
505 |
+
$classes = [];
|
506 |
+
|
507 |
+
if ( ! function_exists( 'token_get_all' ) ) {
|
508 |
+
throw new Exception( __( 'There is no PHP Tokenizer extension installed on your server, you cannot use the token_get_all function.', 'wbcr_factory_420' ) );
|
509 |
+
}
|
510 |
+
|
511 |
+
$tokens = token_get_all( $phpCode );
|
512 |
+
|
513 |
+
$count = count( $tokens );
|
514 |
+
for ( $i = 2; $i < $count; $i ++ ) {
|
515 |
+
if ( is_array( $tokens ) && $tokens[ $i - 2 ][0] == T_CLASS && $tokens[ $i - 1 ][0] == T_WHITESPACE && $tokens[ $i ][0] == T_STRING ) {
|
516 |
+
|
517 |
+
$extends = null;
|
518 |
+
if ( $tokens[ $i + 2 ][0] == T_EXTENDS && $tokens[ $i + 4 ][0] == T_STRING ) {
|
519 |
+
$extends = $tokens[ $i + 4 ][1];
|
520 |
+
}
|
521 |
+
|
522 |
+
$class_name = $tokens[ $i ][1];
|
523 |
+
$classes[ $path ] = [
|
524 |
+
'name' => $class_name,
|
525 |
+
'extends' => $extends
|
526 |
+
];
|
527 |
+
}
|
528 |
+
}
|
529 |
+
|
530 |
+
/**
|
531 |
+
* result example:
|
532 |
+
*
|
533 |
+
* $classes['/plugin/items/filename.php'] = array(
|
534 |
+
* 'name' => 'PluginNameItem',
|
535 |
+
* 'extendes' => 'PluginNameItemBase'
|
536 |
+
* )
|
537 |
+
*/
|
538 |
+
|
539 |
+
return $classes;
|
540 |
+
}
|
541 |
+
}
|
libs/factory/core/includes/class-factory-notices.php
ADDED
@@ -0,0 +1,281 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WBCR\Factory_420;
|
4 |
+
|
5 |
+
use Wbcr_Factory420_Plugin;
|
6 |
+
|
7 |
+
// Exit if accessed directly
|
8 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
+
exit;
|
10 |
+
}
|
11 |
+
|
12 |
+
/**
|
13 |
+
* A class to manage notices.
|
14 |
+
*
|
15 |
+
* @since 1.0.0
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* A group of classes and methods to create and manage notices.
|
20 |
+
*
|
21 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>, repo: https://github.com/alexkovalevv
|
22 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>, site: https://webcraftic.com
|
23 |
+
*
|
24 |
+
* @package factory-notices
|
25 |
+
* @since 1.0.0
|
26 |
+
*/
|
27 |
+
class Notices {
|
28 |
+
|
29 |
+
/**
|
30 |
+
* @var Wbcr_Factory420_Plugin
|
31 |
+
*/
|
32 |
+
protected $plugin;
|
33 |
+
/**
|
34 |
+
* @var array
|
35 |
+
*/
|
36 |
+
protected $notices = [];
|
37 |
+
|
38 |
+
/**
|
39 |
+
* @var array
|
40 |
+
*/
|
41 |
+
protected $default_where = [
|
42 |
+
'plugins',
|
43 |
+
'themes',
|
44 |
+
'dashboard',
|
45 |
+
'edit',
|
46 |
+
'settings',
|
47 |
+
'dashboard-network',
|
48 |
+
'plugins-network',
|
49 |
+
'themes-network',
|
50 |
+
'settings-network',
|
51 |
+
];
|
52 |
+
|
53 |
+
/**
|
54 |
+
* @var array
|
55 |
+
*/
|
56 |
+
private $dissmised_notices;
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Инициализируем уведомлений сразу после загрузки модуля уведомлений
|
60 |
+
*
|
61 |
+
* @param Wbcr_Factory420_Plugin $plugin
|
62 |
+
*/
|
63 |
+
public function __construct( $plugin ) {
|
64 |
+
//default notices
|
65 |
+
//---
|
66 |
+
|
67 |
+
$this->plugin = $plugin;
|
68 |
+
$this->dissmised_notices = $this->plugin->getPopulateOption( 'factory_dismissed_notices', [] );
|
69 |
+
|
70 |
+
add_action( 'current_screen', [ $this, 'currentScreenAction' ] );
|
71 |
+
|
72 |
+
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
|
73 |
+
add_action( 'wp_ajax_' . $this->plugin->getPluginName() . '_dismiss_notice', [
|
74 |
+
$this,
|
75 |
+
'dismissNotice'
|
76 |
+
] );
|
77 |
+
}
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* Регистрирует экшены для работы с уведомлениями на текущем экране странице.
|
82 |
+
* Уведомления собираются через фильтр wbcr_factory_admin_notices, если в массиве уведомлений,
|
83 |
+
* хотя бы одно, соответствует условиям в параметре $notice['where'], то метод печает вспомогательные скрипты и уведомления.
|
84 |
+
*/
|
85 |
+
public function currentScreenAction() {
|
86 |
+
$this->notices = apply_filters( 'wbcr_factory_notices_000_list', $this->notices, $this->plugin->getPluginName() );
|
87 |
+
|
88 |
+
if ( count( $this->notices ) == 0 ) {
|
89 |
+
return;
|
90 |
+
}
|
91 |
+
|
92 |
+
$screen = get_current_screen();
|
93 |
+
|
94 |
+
$has_notices = false;
|
95 |
+
foreach ( (array) $this->notices as $notice ) {
|
96 |
+
if ( ! isset( $notice['id'] ) ) {
|
97 |
+
continue;
|
98 |
+
}
|
99 |
+
|
100 |
+
$where = ! isset( $notice['where'] ) || empty( $notice['where'] ) ? $this->default_where : $notice['where'];
|
101 |
+
|
102 |
+
if ( in_array( $screen->base, $where ) && ! $this->isDissmissed( $notice['id'] ) ) {
|
103 |
+
$has_notices = true;
|
104 |
+
break;
|
105 |
+
};
|
106 |
+
}
|
107 |
+
|
108 |
+
if ( $has_notices ) {
|
109 |
+
add_action( 'admin_footer', [ $this, 'printNoticesScripts' ] );
|
110 |
+
|
111 |
+
if ( $this->plugin->isNetworkActive() ) {
|
112 |
+
if ( current_user_can( 'manage_network' ) ) {
|
113 |
+
add_action( 'network_admin_notices', [ $this, 'showNotices' ] );
|
114 |
+
add_action( 'admin_notices', [ $this, 'showNotices' ] );
|
115 |
+
}
|
116 |
+
} else {
|
117 |
+
add_action( 'admin_notices', [ $this, 'showNotices' ] );
|
118 |
+
}
|
119 |
+
}
|
120 |
+
}
|
121 |
+
|
122 |
+
/**
|
123 |
+
* Показывает все зарегистрированные уведомления для текущего плагина.
|
124 |
+
* Уведомления показываются только на определенных страницах через параметр $notice['where'],
|
125 |
+
* если уведомление ранее было скрыто или не соотвествует правилам $notice['where'], оно не будет показано!
|
126 |
+
*/
|
127 |
+
public function showNotices() {
|
128 |
+
if ( count( $this->notices ) == 0 ) {
|
129 |
+
return;
|
130 |
+
}
|
131 |
+
|
132 |
+
if ( ! current_user_can( 'activate_plugins' ) || ! current_user_can( 'edit_plugins' ) || ! current_user_can( 'install_plugins' ) ) {
|
133 |
+
return;
|
134 |
+
}
|
135 |
+
|
136 |
+
$screen = get_current_screen();
|
137 |
+
|
138 |
+
foreach ( $this->notices as $notice ) {
|
139 |
+
|
140 |
+
if ( ! isset( $notice['id'] ) ) {
|
141 |
+
continue;
|
142 |
+
}
|
143 |
+
|
144 |
+
$where = ! isset( $notice['where'] ) || empty( $notice['where'] ) ? $this->default_where : $notice['where'];
|
145 |
+
|
146 |
+
if ( in_array( $screen->base, $where ) && ! $this->isDissmissed( $notice['id'] ) ) {
|
147 |
+
$this->showNotice( $notice );
|
148 |
+
};
|
149 |
+
}
|
150 |
+
}
|
151 |
+
|
152 |
+
/**
|
153 |
+
* Показывает уведомление, по переданным параметрам
|
154 |
+
*
|
155 |
+
* @param array $data - Параметры уведомления
|
156 |
+
* $data['id'] - Индентификатор уведомления
|
157 |
+
* $data['type'] - Тип уведомления (error, warning, success)
|
158 |
+
* $notice['where'] - На каких страницах показывать уведомление ('plugins', 'dashboard', 'edit')
|
159 |
+
* $data['text'] - Текст уведомления
|
160 |
+
* $data['dismissible'] - Если true, уведомление будет с кнопкой закрыть
|
161 |
+
* $data['dismiss_expires'] - Когда снова показать уведомление, нужно указывать время в unix timestamp.
|
162 |
+
* Пример time() + 3600 (1ч), уведомление будет скрыто на 1 час.
|
163 |
+
* $data['classes'] - Произвольный классы для контейнера уведомления.
|
164 |
+
*/
|
165 |
+
public function showNotice( $data ) {
|
166 |
+
if ( ! isset( $data['id'] ) || empty( $data['id'] ) ) {
|
167 |
+
return;
|
168 |
+
}
|
169 |
+
|
170 |
+
if ( ! isset( $data['text'] ) || empty( $data['text'] ) ) {
|
171 |
+
return;
|
172 |
+
}
|
173 |
+
|
174 |
+
$type = ! isset( $data['type'] ) || empty( $data['type'] ) ? 'error' : $data['type'];
|
175 |
+
|
176 |
+
$dismissible = ! isset( $data['dismissible'] ) || empty( $data['dismissible'] ) ? false : $data['dismissible'];
|
177 |
+
|
178 |
+
$dismiss_expires = ! isset( $data['dismiss_expires'] ) || empty( $data['dismiss_expires'] ) ? 0 : $data['dismiss_expires'];
|
179 |
+
|
180 |
+
$classes = ! isset( $data['classes'] ) || empty( $data['classes'] ) ? [] : $data['classes'];
|
181 |
+
|
182 |
+
$plugin_name = str_replace( '_', '-', $this->plugin->getPluginName() );
|
183 |
+
|
184 |
+
$classes = array_merge( [
|
185 |
+
'notice',
|
186 |
+
'notice-' . $type,
|
187 |
+
$plugin_name . '-factory-notice'
|
188 |
+
], $classes );
|
189 |
+
|
190 |
+
if ( $dismissible ) {
|
191 |
+
$classes[] = 'is-dismissible';
|
192 |
+
$classes[] = $plugin_name . '-factory-notice-dismiss';
|
193 |
+
}
|
194 |
+
?>
|
195 |
+
<div data-name="wbcr_factory_notice_<?= esc_attr( $data['id'] ) ?>" data-expires="<?= esc_attr( $dismiss_expires ) ?>" data-nonce="<?= esc_attr( wp_create_nonce( $this->plugin->getPluginName() . '_factory_dismiss_notice' ) ); ?>" class="<?= esc_attr( implode( ' ', $classes ) ) ?>">
|
196 |
+
<?= $data['text'] ?>
|
197 |
+
</div>
|
198 |
+
<?php
|
199 |
+
}
|
200 |
+
|
201 |
+
/**
|
202 |
+
* Когда пользователь нажимает кнопку закрыть уведомление,
|
203 |
+
* отправляется ajax запрос с вызовом текущего метода
|
204 |
+
*/
|
205 |
+
public function dismissNotice() {
|
206 |
+
check_admin_referer( $this->plugin->getPluginName() . '_factory_dismiss_notice', 'nonce' );
|
207 |
+
|
208 |
+
// Имя уведомления (идентификатор)
|
209 |
+
$name = empty( $_POST['name'] ) ? null : sanitize_text_field( $_POST['name'] );
|
210 |
+
|
211 |
+
// Время в Unix timestamp, по истечению, которого уведомление снова будет показано
|
212 |
+
// Если передан 0, то уведомление будет скрыто навсегда
|
213 |
+
$expires = ! isset( $_POST['expires'] ) || empty( $_POST['expires'] ) ? 0 : (int) $_POST['expires'];
|
214 |
+
|
215 |
+
if ( empty( $name ) ) {
|
216 |
+
echo json_encode( [ 'error' => 'Attribute name is empty!' ] );
|
217 |
+
exit;
|
218 |
+
}
|
219 |
+
|
220 |
+
$notices = $this->plugin->getPopulateOption( "factory_dismissed_notices", [] );
|
221 |
+
|
222 |
+
if ( ! empty( $notices ) ) {
|
223 |
+
foreach ( (array) $notices as $notice_id => $notice_expires ) {
|
224 |
+
if ( $notice_expires !== 0 && $notice_expires < time() ) {
|
225 |
+
unset( $notices[ $notice_id ] );
|
226 |
+
}
|
227 |
+
}
|
228 |
+
}
|
229 |
+
|
230 |
+
$notices[ $name ] = $expires;
|
231 |
+
|
232 |
+
$this->plugin->updatePopulateOption( 'factory_dismissed_notices', $notices );
|
233 |
+
|
234 |
+
echo json_encode( [ 'success' => 'ok' ] );
|
235 |
+
exit;
|
236 |
+
}
|
237 |
+
|
238 |
+
/**
|
239 |
+
* Javascript code
|
240 |
+
* Печает в подвале страницы код, для взаимодействия с сервером через ajax,
|
241 |
+
* код используется при нажатии на кнопку закрыть уведомление. *
|
242 |
+
*/
|
243 |
+
public function printNoticesScripts() {
|
244 |
+
$plugin_name = str_replace( '_', '-', $this->plugin->getPluginName() );
|
245 |
+
|
246 |
+
?>
|
247 |
+
<script type="text/javascript">
|
248 |
+
jQuery(function($) {
|
249 |
+
|
250 |
+
$(document).on('click', '.<?php echo $plugin_name; ?>-factory-notice-dismiss .notice-dismiss', function() {
|
251 |
+
$.post(ajaxurl, {
|
252 |
+
'action': '<?php echo $this->plugin->getPluginName(); ?>_dismiss_notice',
|
253 |
+
'name': $(this).parent().data('name'),
|
254 |
+
'expires': $(this).parent().data('expires'),
|
255 |
+
'nonce': $(this).parent()
|