Version Description
- Fixed: Prefix bug
Download this release
Release Info
Developer | webcraftic |
Plugin | Disable admin notices individually |
Version | 1.0.5 |
Comparing to | |
See all releases |
Code changes from version 1.0.2 to 1.0.5
- admin/ajax/hide-notice.php +12 -13
- admin/ajax/index.php +0 -0
- admin/ajax/restore-notice.php +44 -0
- admin/assets/css/index.php +0 -0
- admin/assets/css/notifications-panel.css +17 -1
- admin/assets/css/notifications-panel.less +20 -2
- admin/assets/index.php +0 -0
- admin/assets/js/general.js +0 -203
- admin/assets/js/index.php +0 -0
- admin/assets/js/notifications-panel.js +44 -0
- admin/boot.php +8 -13
- admin/options.php +15 -14
- admin/pages/index.php +0 -0
- admin/pages/more-features.php +6 -2
- admin/pages/notices.php +22 -21
- disable-admin-notices.php +25 -52
- includes/class.plugin.php +135 -0
- includes/classes/class.configurate-notices.php +102 -34
- includes/classes/index.php +0 -0
- includes/index.php +0 -0
- languages/disable-admin-notices-ru_RU.mo +0 -0
- languages/disable-admin-notices-ru_RU.po +422 -419
- languages/index.php +0 -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.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.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/control.checkbox.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/control.dropdown.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/control.multiple-textbox.min.css +11 -0
- libs/factory/bootstrap/assets/css-min/holder.more-link.min.css +11 -0
- libs/factory/bootstrap/assets/flat/css/bootstrap.core.css +0 -7810
- libs/factory/bootstrap/assets/flat/css/bootstrap.datetimepicker.css +0 -432
- libs/factory/bootstrap/assets/flat/css/bootstrap.form-group.css +0 -59
- libs/factory/bootstrap/assets/flat/css/bootstrap.light.css +0 -48
- libs/factory/bootstrap/assets/flat/css/bootstrap.separator.css +0 -8
- libs/factory/bootstrap/assets/flat/css/control.checkbox.css +0 -102
- libs/factory/bootstrap/assets/flat/css/control.dropdown.css +0 -92
- libs/factory/bootstrap/assets/flat/css/control.multiple-textbox.css +0 -37
- libs/factory/bootstrap/assets/flat/css/holder.more-link.css +0 -32
- libs/factory/bootstrap/assets/js-min/bootstrap.dropdown.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/bootstrap.tooltip.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/control.checkbox.min.js +10 -0
- libs/factory/bootstrap/assets/js-min/control.dropdown.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/bootstrap.datetimepicker.js +0 -2746
- libs/factory/bootstrap/assets/js/bootstrap.dropdown.js +0 -143
- libs/factory/bootstrap/assets/js/bootstrap.tooltip.js +0 -455
- libs/factory/bootstrap/assets/js/control.checkbox.js +0 -290
- libs/factory/bootstrap/assets/js/control.dropdown.js +0 -355
- libs/factory/bootstrap/assets/js/control.list.js +0 -141
- libs/factory/bootstrap/assets/js/control.multiple-textbox.js +0 -43
- libs/factory/bootstrap/boot.php +14 -8
- libs/factory/bootstrap/includes/functions.php +248 -254
- libs/factory/bootstrap/includes/load-scripts.php +0 -91
- libs/factory/bootstrap/includes/load-styles.php +0 -90
- libs/factory/clearfy/boot.php +17 -12
- libs/factory/clearfy/includes/class.configurate.php +60 -26
- libs/factory/clearfy/includes/class.helpers.php +163 -0
- libs/factory/clearfy/includes/functions.php +0 -69
- libs/factory/clearfy/langs/{factory_clearfy_102-fr-FR.mo → wbcr_factory_clearfy_200-fr-FR.mo} +0 -0
- libs/factory/clearfy/langs/{factory_clearfy_102-fr-FR.po → wbcr_factory_clearfy_200-fr-FR.po} +0 -0
- libs/factory/clearfy/langs/{factory_clearfy_102-ru_RU.mo → wbcr_factory_clearfy_200-ru_RU.mo} +0 -0
- libs/factory/clearfy/langs/{factory_clearfy_102-ru_RU.po → wbcr_factory_clearfy_200-ru_RU.po} +0 -0
- libs/factory/clearfy/pages/more-features.php +95 -92
- libs/factory/core/boot.php +23 -15
- libs/factory/core/includes/activation/activator.class.php +186 -148
- libs/factory/core/includes/activation/update.class.php +36 -28
- libs/factory/core/includes/assets-managment/assets-list.class.php +138 -122
- libs/factory/core/includes/assets-managment/script-list.class.php +67 -54
- libs/factory/core/includes/assets-managment/style-list.class.php +32 -24
- libs/factory/core/includes/base.class.php +378 -0
- libs/factory/core/includes/functions.php +56 -283
- libs/factory/core/includes/plugin.class.php +725 -626
- libs/factory/core/includes/request.class.php +126 -0
- libs/factory/forms/boot.php +105 -105
- libs/factory/forms/controls/checkbox.php +136 -127
- libs/factory/forms/controls/color-and-opacity.php +86 -65
- libs/factory/forms/controls/color.php +46 -34
- libs/factory/forms/controls/customs/html.php +29 -21
- libs/factory/forms/controls/customs/separator.php +33 -25
- libs/factory/forms/controls/datepicker-range.php +72 -62
- libs/factory/forms/controls/dropdown-and-colors.php +70 -61
- libs/factory/forms/controls/dropdown.php +313 -304
- libs/factory/forms/controls/font.php +229 -214
- libs/factory/forms/controls/google-font.php +151 -122
- libs/factory/forms/controls/gradient.php +68 -60
- libs/factory/forms/controls/hidden.php +34 -25
- libs/factory/forms/controls/holders/accordion-item.php +61 -51
- libs/factory/forms/controls/holders/accordion.php +56 -48
- libs/factory/forms/controls/holders/columns.php +98 -84
- libs/factory/forms/controls/holders/control-group-item.php +74 -62
- libs/factory/forms/controls/holders/control-group.php +96 -79
- libs/factory/forms/controls/holders/div.php +63 -50
- libs/factory/forms/controls/holders/form-group.php +68 -59
- libs/factory/forms/controls/holders/more-link.php +74 -61
- libs/factory/forms/controls/holders/tab-item.php +67 -56
- libs/factory/forms/controls/holders/tab.php +138 -111
- libs/factory/forms/controls/integer.php +119 -106
- libs/factory/forms/controls/list.php +221 -202
- libs/factory/forms/controls/multiple-textbox.php +94 -82
- libs/factory/forms/controls/paddings-editor.php +67 -49
- libs/factory/forms/controls/pattern.php +138 -123
- libs/factory/forms/controls/radio-colors.php +73 -68
- libs/factory/forms/controls/radio.php +61 -56
- libs/factory/forms/controls/textarea.php +58 -47
- libs/factory/forms/controls/textbox.php +60 -51
- libs/factory/forms/controls/url.php +27 -17
- libs/factory/forms/controls/wp-editor.php +68 -56
- libs/factory/forms/helpers.php +0 -101
- libs/factory/forms/includes/complex-control.class.php +131 -115
- libs/factory/forms/includes/control-holder.class.php +172 -151
- libs/factory/forms/includes/control.class.php +143 -203
admin/ajax/hide-notice.php
CHANGED
@@ -6,13 +6,16 @@
|
|
6 |
* @version 1.0
|
7 |
*/
|
8 |
|
9 |
-
|
10 |
-
{
|
11 |
-
|
|
|
12 |
|
13 |
-
|
|
|
|
|
14 |
|
15 |
-
if( !current_user_can('
|
16 |
echo json_encode(array('error' => __('You don\'t have enough capability to edit this information.', 'disable-admin-notices')));
|
17 |
exit;
|
18 |
}
|
@@ -22,11 +25,7 @@
|
|
22 |
: null;
|
23 |
|
24 |
$notice_html = isset($_POST['notice_html'])
|
25 |
-
? wp_kses($_POST['notice_html'], array(
|
26 |
-
'a' => array(
|
27 |
-
'href' => array()
|
28 |
-
)
|
29 |
-
))
|
30 |
: null;
|
31 |
|
32 |
if( empty($notice_id) ) {
|
@@ -34,7 +33,7 @@
|
|
34 |
exit;
|
35 |
}
|
36 |
|
37 |
-
$get_hidden_notices =
|
38 |
|
39 |
if( !is_array($get_hidden_notices) ) {
|
40 |
$get_hidden_notices = array();
|
@@ -42,10 +41,10 @@
|
|
42 |
|
43 |
$get_hidden_notices[$notice_id] = rtrim(trim($notice_html));
|
44 |
|
45 |
-
|
46 |
|
47 |
echo json_encode(array('success' => __('Success', 'disable-admin-notices')));
|
48 |
exit;
|
49 |
}
|
50 |
|
51 |
-
add_action('
|
6 |
* @version 1.0
|
7 |
*/
|
8 |
|
9 |
+
// Exit if accessed directly
|
10 |
+
if( !defined('ABSPATH') ) {
|
11 |
+
exit;
|
12 |
+
}
|
13 |
|
14 |
+
function wbcr_dan_ajax_hide_notices()
|
15 |
+
{
|
16 |
+
check_ajax_referer(WDN_Plugin::app()->getPluginName() . '_ajax_hide_notices_nonce', 'security');
|
17 |
|
18 |
+
if( !current_user_can('update_plugins') ) {
|
19 |
echo json_encode(array('error' => __('You don\'t have enough capability to edit this information.', 'disable-admin-notices')));
|
20 |
exit;
|
21 |
}
|
25 |
: null;
|
26 |
|
27 |
$notice_html = isset($_POST['notice_html'])
|
28 |
+
? wp_kses($_POST['notice_html'], array())
|
|
|
|
|
|
|
|
|
29 |
: null;
|
30 |
|
31 |
if( empty($notice_id) ) {
|
33 |
exit;
|
34 |
}
|
35 |
|
36 |
+
$get_hidden_notices = WDN_Plugin::app()->getOption('hidden_notices');
|
37 |
|
38 |
if( !is_array($get_hidden_notices) ) {
|
39 |
$get_hidden_notices = array();
|
41 |
|
42 |
$get_hidden_notices[$notice_id] = rtrim(trim($notice_html));
|
43 |
|
44 |
+
WDN_Plugin::app()->updateOption('hidden_notices', $get_hidden_notices);
|
45 |
|
46 |
echo json_encode(array('success' => __('Success', 'disable-admin-notices')));
|
47 |
exit;
|
48 |
}
|
49 |
|
50 |
+
add_action('wp_ajax_wbcr_dan_hide_notices', 'wbcr_dan_ajax_hide_notices');
|
admin/ajax/index.php
ADDED
File without changes
|
admin/ajax/restore-notice.php
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Restore notice
|
4 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
5 |
+
* @copyright (c) 12.01.2018, Webcraftic
|
6 |
+
* @version 1.0
|
7 |
+
*/
|
8 |
+
|
9 |
+
// Exit if accessed directly
|
10 |
+
if( !defined('ABSPATH') ) {
|
11 |
+
exit;
|
12 |
+
}
|
13 |
+
|
14 |
+
function wbcr_dan_ajax_restore_notice()
|
15 |
+
{
|
16 |
+
check_ajax_referer(WDN_Plugin::app()->getPluginName() . '_ajax_restore_notice_nonce', 'security');
|
17 |
+
|
18 |
+
if( !current_user_can('update_plugins') ) {
|
19 |
+
echo json_encode(array('error' => __('You don\'t have enough capability to edit this information.', 'disable-admin-notices')));
|
20 |
+
exit;
|
21 |
+
}
|
22 |
+
|
23 |
+
$notice_id = isset($_POST['notice_id'])
|
24 |
+
? sanitize_text_field($_POST['notice_id'])
|
25 |
+
: null;
|
26 |
+
|
27 |
+
if( empty($notice_id) ) {
|
28 |
+
echo json_encode(array('error' => __('Undefinded notice id.', 'disable-admin-notices')));
|
29 |
+
exit;
|
30 |
+
}
|
31 |
+
|
32 |
+
$get_hidden_notices = WDN_Plugin::app()->getOption('hidden_notices');
|
33 |
+
|
34 |
+
if( !empty($get_hidden_notices) && isset($get_hidden_notices[$notice_id]) ) {
|
35 |
+
unset($get_hidden_notices[$notice_id]);
|
36 |
+
}
|
37 |
+
|
38 |
+
WDN_Plugin::app()->updateOption('hidden_notices', $get_hidden_notices);
|
39 |
+
|
40 |
+
echo json_encode(array('success' => __('Success', 'disable-admin-notices')));
|
41 |
+
exit;
|
42 |
+
}
|
43 |
+
|
44 |
+
add_action('wp_ajax_wbcr_dan_restore_notice', 'wbcr_dan_ajax_restore_notice');
|
admin/assets/css/index.php
ADDED
File without changes
|
admin/assets/css/notifications-panel.css
CHANGED
@@ -21,7 +21,7 @@
|
|
21 |
padding: 0;
|
22 |
}
|
23 |
#wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li {
|
24 |
-
border-left: 4px solid #
|
25 |
padding: 0;
|
26 |
}
|
27 |
#wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li.wpnc-updated {
|
@@ -33,11 +33,23 @@
|
|
33 |
#wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li.wpnc-error {
|
34 |
border-left-color: #dd3d36;
|
35 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
#wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .ab-item {
|
37 |
height: 100% !important;
|
38 |
white-space: normal !important;
|
39 |
padding: .5em 1em;
|
40 |
border-bottom: 1px solid #4a4f55;
|
|
|
41 |
line-height: .5em;
|
42 |
}
|
43 |
#wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .ab-item a {
|
@@ -46,4 +58,8 @@
|
|
46 |
margin: 0;
|
47 |
text-decoration: underline;
|
48 |
line-height: .5em;
|
|
|
|
|
|
|
|
|
49 |
}
|
21 |
padding: 0;
|
22 |
}
|
23 |
#wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li {
|
24 |
+
border-left: 4px solid #26292b;
|
25 |
padding: 0;
|
26 |
}
|
27 |
#wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li.wpnc-updated {
|
33 |
#wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li.wpnc-error {
|
34 |
border-left-color: #dd3d36;
|
35 |
}
|
36 |
+
#wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .wbcr-han-panel-restore-notify-line {
|
37 |
+
text-align: right;
|
38 |
+
}
|
39 |
+
#wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .wbcr-han-panel-restore-notify-line a {
|
40 |
+
color: #ffba00 !important;
|
41 |
+
text-decoration: none !important;
|
42 |
+
}
|
43 |
+
#wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .wbcr-han-panel-restore-notify-line a:hover {
|
44 |
+
text-decoration: underline !important;
|
45 |
+
color: #ffc11a !important;
|
46 |
+
}
|
47 |
#wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .ab-item {
|
48 |
height: 100% !important;
|
49 |
white-space: normal !important;
|
50 |
padding: .5em 1em;
|
51 |
border-bottom: 1px solid #4a4f55;
|
52 |
+
color: #949494;
|
53 |
line-height: .5em;
|
54 |
}
|
55 |
#wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .ab-item a {
|
58 |
margin: 0;
|
59 |
text-decoration: underline;
|
60 |
line-height: .5em;
|
61 |
+
color: #949494;
|
62 |
+
}
|
63 |
+
#wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu li:nth-child(2n) {
|
64 |
+
background: #26292b;
|
65 |
}
|
admin/assets/css/notifications-panel.less
CHANGED
@@ -5,6 +5,7 @@
|
|
5 |
*/
|
6 |
|
7 |
#wp-admin-bar-wbcr-han-notify-panel {
|
|
|
8 |
.wbcr-han-adminbar-counter {
|
9 |
background-color: #0073aa;
|
10 |
border-radius: 50%;
|
@@ -25,24 +26,37 @@
|
|
25 |
padding: 0;
|
26 |
|
27 |
& > li {
|
28 |
-
border-left: 4px solid #
|
29 |
padding: 0;
|
30 |
|
31 |
&.wpnc-updated {
|
32 |
border-left-color: #7ad03a;
|
33 |
}
|
34 |
&.wpnc-update-nag {
|
35 |
-
border-left-color: #ffba00
|
36 |
}
|
37 |
&.wpnc-error {
|
38 |
border-left-color: #dd3d36;
|
39 |
}
|
40 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
.ab-item {
|
42 |
height: 100% !important;
|
43 |
white-space: normal !important;
|
44 |
padding: .5em 1em;
|
45 |
border-bottom: 1px solid #4a4f55;
|
|
|
46 |
line-height: .5em;
|
47 |
a {
|
48 |
display: inline;
|
@@ -50,9 +64,13 @@
|
|
50 |
margin: 0;
|
51 |
text-decoration: underline;
|
52 |
line-height: .5em;
|
|
|
53 |
}
|
54 |
}
|
|
|
55 |
|
|
|
|
|
56 |
}
|
57 |
}
|
58 |
}
|
5 |
*/
|
6 |
|
7 |
#wp-admin-bar-wbcr-han-notify-panel {
|
8 |
+
|
9 |
.wbcr-han-adminbar-counter {
|
10 |
background-color: #0073aa;
|
11 |
border-radius: 50%;
|
26 |
padding: 0;
|
27 |
|
28 |
& > li {
|
29 |
+
border-left: 4px solid #26292b;
|
30 |
padding: 0;
|
31 |
|
32 |
&.wpnc-updated {
|
33 |
border-left-color: #7ad03a;
|
34 |
}
|
35 |
&.wpnc-update-nag {
|
36 |
+
border-left-color: #ffba00;
|
37 |
}
|
38 |
&.wpnc-error {
|
39 |
border-left-color: #dd3d36;
|
40 |
}
|
41 |
|
42 |
+
.wbcr-han-panel-restore-notify-line {
|
43 |
+
text-align: right;
|
44 |
+
a {
|
45 |
+
color: #ffba00 !important;
|
46 |
+
text-decoration: none !important;
|
47 |
+
&:hover {
|
48 |
+
text-decoration: underline !important;
|
49 |
+
color: lighten(#ffba00, 5%) !important;
|
50 |
+
}
|
51 |
+
}
|
52 |
+
}
|
53 |
+
|
54 |
.ab-item {
|
55 |
height: 100% !important;
|
56 |
white-space: normal !important;
|
57 |
padding: .5em 1em;
|
58 |
border-bottom: 1px solid #4a4f55;
|
59 |
+
color: #949494;
|
60 |
line-height: .5em;
|
61 |
a {
|
62 |
display: inline;
|
64 |
margin: 0;
|
65 |
text-decoration: underline;
|
66 |
line-height: .5em;
|
67 |
+
color: #949494;
|
68 |
}
|
69 |
}
|
70 |
+
}
|
71 |
|
72 |
+
li:nth-child(2n) {
|
73 |
+
background: #26292b;
|
74 |
}
|
75 |
}
|
76 |
}
|
admin/assets/index.php
ADDED
File without changes
|
admin/assets/js/general.js
DELETED
@@ -1,203 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* General
|
3 |
-
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
4 |
-
* @copyright (c) 10.09.2017, Webcraftic
|
5 |
-
* @version 1.0
|
6 |
-
*/
|
7 |
-
|
8 |
-
|
9 |
-
(function($) {
|
10 |
-
'use strict';
|
11 |
-
|
12 |
-
var general = {
|
13 |
-
init: function() {
|
14 |
-
this.qickStartAssistent();
|
15 |
-
this.importOptions();
|
16 |
-
},
|
17 |
-
qickStartAssistent: function() {
|
18 |
-
var self = this;
|
19 |
-
|
20 |
-
$('.wbcr-clearfy-switch').click(function() {
|
21 |
-
|
22 |
-
var modeName = $(this).data('mode'),
|
23 |
-
modeOptions = $(this).data('mode-options');
|
24 |
-
|
25 |
-
self.showConfirmationPopup(modeName, modeOptions);
|
26 |
-
return false;
|
27 |
-
});
|
28 |
-
|
29 |
-
$('.wbcr-clearfy-popup-button-cancel').click(function() {
|
30 |
-
self.hideConfirmationPopup();
|
31 |
-
});
|
32 |
-
|
33 |
-
$('.wbcr-clearfy-cancel-mode').click(function() {
|
34 |
-
var $this = $(this), modeName = $(this).closest('.wbcr-clearfy-switch').data('mode'),
|
35 |
-
switcher = $(this).closest('.wbcr-clearfy-switch');
|
36 |
-
|
37 |
-
switcher.addClass('wbcr-clearfy-loading');
|
38 |
-
|
39 |
-
self.sendRequest({
|
40 |
-
action: 'wbcr_clearfy_configurate',
|
41 |
-
mode: modeName,
|
42 |
-
cancel_mode: true
|
43 |
-
}, function(data) {
|
44 |
-
switcher.removeClass('wbcr-clearfy-loading');
|
45 |
-
|
46 |
-
if( data && data.export_options ) {
|
47 |
-
$('#wbcr-clearfy-import-export').html(data.export_options);
|
48 |
-
}
|
49 |
-
},
|
50 |
-
function() {
|
51 |
-
if( modeName != 'reset' ) {
|
52 |
-
switcher.removeClass('wbcr-clearfy-active');
|
53 |
-
}
|
54 |
-
});
|
55 |
-
return false;
|
56 |
-
});
|
57 |
-
|
58 |
-
$('.wbcr-clearfy-popup-button-ok').click(function() {
|
59 |
-
var $this = $(this), modeName = $(this).closest('.wbcr-clearfy-confirm-popup').data('mode'),
|
60 |
-
switcher = $('div[data-mode="' + modeName + '"]', '#wbcr-clearfy-quick-mode-board');
|
61 |
-
|
62 |
-
self.hideConfirmationPopup();
|
63 |
-
switcher.addClass('wbcr-clearfy-loading');
|
64 |
-
|
65 |
-
self.sendRequest({
|
66 |
-
action: 'wbcr_clearfy_configurate',
|
67 |
-
mode: modeName
|
68 |
-
}, function(data) {
|
69 |
-
switcher.removeClass('wbcr-clearfy-loading');
|
70 |
-
|
71 |
-
if( data && data.export_options ) {
|
72 |
-
$('#wbcr-clearfy-import-export').html(data.export_options);
|
73 |
-
}
|
74 |
-
},
|
75 |
-
function() {
|
76 |
-
if( modeName != 'reset' ) {
|
77 |
-
switcher.addClass('wbcr-clearfy-active');
|
78 |
-
return;
|
79 |
-
}
|
80 |
-
|
81 |
-
$('.wbcr-clearfy-switch').removeClass('wbcr-clearfy-active');
|
82 |
-
});
|
83 |
-
|
84 |
-
return false;
|
85 |
-
});
|
86 |
-
},
|
87 |
-
|
88 |
-
showConfirmationPopup: function(modeName, options) {
|
89 |
-
var self = this;
|
90 |
-
|
91 |
-
$('.wbcr-clearfy-layer').fadeIn();
|
92 |
-
|
93 |
-
var popupElem = $('.wbcr-clearfy-confirm-popup');
|
94 |
-
popupElem.data('mode', modeName);
|
95 |
-
popupElem.fadeIn();
|
96 |
-
|
97 |
-
if( modeName != 'reset' ) {
|
98 |
-
var printOptTitles = '';
|
99 |
-
|
100 |
-
if( options ) {
|
101 |
-
for( var opt in options ) {
|
102 |
-
if( !options.hasOwnProperty(opt) ) {
|
103 |
-
continue;
|
104 |
-
}
|
105 |
-
printOptTitles += '<li>' + options[opt] + '</li>';
|
106 |
-
|
107 |
-
}
|
108 |
-
$('.wbcr-clearfy-list-options').html(printOptTitles);
|
109 |
-
popupElem.addClass('wbcr-clearfy-default-warning-options');
|
110 |
-
}
|
111 |
-
return;
|
112 |
-
}
|
113 |
-
|
114 |
-
popupElem.addClass('wbcr-clearfy-reset-warning-options');
|
115 |
-
},
|
116 |
-
|
117 |
-
hideConfirmationPopup: function() {
|
118 |
-
$('.wbcr-clearfy-layer').fadeOut(100);
|
119 |
-
var popupElem = $('.wbcr-clearfy-confirm-popup');
|
120 |
-
|
121 |
-
popupElem.fadeOut(100, function() {
|
122 |
-
popupElem.removeClass('wbcr-clearfy-default-warning-options');
|
123 |
-
popupElem.removeClass('wbcr-clearfy-reset-warning-options');
|
124 |
-
});
|
125 |
-
|
126 |
-
},
|
127 |
-
|
128 |
-
importOptions: function() {
|
129 |
-
var self = this;
|
130 |
-
|
131 |
-
$('.wbcr-clearfy-import-options-button').click(function() {
|
132 |
-
var settings = $('#wbcr-clearfy-import-export').val(),
|
133 |
-
$this = $(this);
|
134 |
-
|
135 |
-
if( !settings ) {
|
136 |
-
return;
|
137 |
-
}
|
138 |
-
|
139 |
-
$(this).prop('disabled', true);
|
140 |
-
|
141 |
-
self.sendRequest({
|
142 |
-
action: 'wbcr_clearfy_import_settings',
|
143 |
-
settings: settings
|
144 |
-
}, function(data) {
|
145 |
-
//console.log(data);
|
146 |
-
$this.prop('disabled', false);
|
147 |
-
});
|
148 |
-
|
149 |
-
return false;
|
150 |
-
});
|
151 |
-
},
|
152 |
-
sendRequest: function(data, beforeValidateCallback, successCallback) {
|
153 |
-
|
154 |
-
var errorContanier = $('.wbcr-clearfy-switch-error-message'),
|
155 |
-
defaultErrorMessage = errorContanier.text();
|
156 |
-
|
157 |
-
if( wbcr_clearfy_ajax === undefined ) {
|
158 |
-
console.log('Undefinded wbcr_clearfy_ajax object.');
|
159 |
-
return;
|
160 |
-
}
|
161 |
-
|
162 |
-
var ajaxUrl = wbcr_clearfy_ajax ? wbcr_clearfy_ajax.ajaxurl : ajaxurl;
|
163 |
-
|
164 |
-
if( typeof data === 'object' ) {
|
165 |
-
data.security = wbcr_clearfy_ajax.ajax_nonce;
|
166 |
-
}
|
167 |
-
|
168 |
-
$.ajax(ajaxurl, {
|
169 |
-
type: 'post',
|
170 |
-
dataType: 'json',
|
171 |
-
data: data,
|
172 |
-
success: function(data, textStatus, jqXHR) {
|
173 |
-
|
174 |
-
beforeValidateCallback && beforeValidateCallback(data);
|
175 |
-
|
176 |
-
if( !data || data.error ) {
|
177 |
-
if( data ) {
|
178 |
-
console.log(data.error);
|
179 |
-
if( !errorContanier.is(':visible') ) {
|
180 |
-
errorContanier.html(defaultErrorMessage + '<br>' + data.error);
|
181 |
-
}
|
182 |
-
}
|
183 |
-
|
184 |
-
if( !errorContanier.is(':visible') ) {
|
185 |
-
errorContanier.fadeIn(600).delay(10000).fadeOut(600);
|
186 |
-
}
|
187 |
-
return;
|
188 |
-
}
|
189 |
-
|
190 |
-
successCallback && successCallback();
|
191 |
-
|
192 |
-
$('.wbcr-clearfy-switch-success-message').fadeIn(600).delay(3000).fadeOut(600);
|
193 |
-
|
194 |
-
}
|
195 |
-
});
|
196 |
-
}
|
197 |
-
};
|
198 |
-
|
199 |
-
$(document).ready(function() {
|
200 |
-
general.init();
|
201 |
-
});
|
202 |
-
|
203 |
-
})(jQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
admin/assets/js/index.php
ADDED
File without changes
|
admin/assets/js/notifications-panel.js
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* Notification panel
|
3 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
4 |
+
* @copyright (c) 10.09.2017, Webcraftic
|
5 |
+
* @version 1.0
|
6 |
+
*/
|
7 |
+
|
8 |
+
(function($) {
|
9 |
+
'use strict';
|
10 |
+
|
11 |
+
$(document).ready(function() {
|
12 |
+
$(document).on('click', '.wbcr-han-panel-restore-notify-link', function() {
|
13 |
+
var self = $(this),
|
14 |
+
noticeID = $(this).data('notice-id'),
|
15 |
+
counterEl = $('.wbcr-han-adminbar-counter');
|
16 |
+
|
17 |
+
if( !noticeID ) {
|
18 |
+
alert('Undefinded error. Please report the bug to our support forum.');
|
19 |
+
}
|
20 |
+
|
21 |
+
self.closest('li').hide();
|
22 |
+
|
23 |
+
$.ajax(ajaxurl, {
|
24 |
+
type: 'post',
|
25 |
+
dataType: 'json',
|
26 |
+
data: {
|
27 |
+
action: 'wbcr_dan_restore_notice',
|
28 |
+
security: wbcr_dan_ajax_restore_nonce,
|
29 |
+
notice_id: noticeID
|
30 |
+
},
|
31 |
+
success: function(data, textStatus, jqXHR) {
|
32 |
+
if( data == 'error' && data.error ) {
|
33 |
+
alert(data.error);
|
34 |
+
self.closest('li').show();
|
35 |
+
return;
|
36 |
+
}
|
37 |
+
|
38 |
+
counterEl.text(counterEl.text() - 1);
|
39 |
+
self.closest('li').remove();
|
40 |
+
}
|
41 |
+
});
|
42 |
+
});
|
43 |
+
});
|
44 |
+
})(jQuery);
|
admin/boot.php
CHANGED
@@ -6,20 +6,14 @@
|
|
6 |
* @version 1.0
|
7 |
*/
|
8 |
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
require(WBCR_DAN_PLUGIN_DIR . '/admin/pages/more-features.php');
|
13 |
-
require(WBCR_DAN_PLUGIN_DIR . '/admin/pages/notices.php');
|
14 |
-
}
|
15 |
-
|
16 |
-
if( isset($_REQUEST['action']) && $_REQUEST['action'] == 'wbcr_clearfy_hide_notices' ) {
|
17 |
-
require(WBCR_DAN_PLUGIN_DIR . '/admin/ajax/hide-notice.php');
|
18 |
}
|
19 |
|
20 |
function wbcr_dan_rating_widget_url($page_url, $plugin_name)
|
21 |
{
|
22 |
-
if( $plugin_name ==
|
23 |
return 'https://goo.gl/68ucHp';
|
24 |
}
|
25 |
|
@@ -41,18 +35,19 @@
|
|
41 |
'title' => __('Enable hidden notices in adminbar', 'disable-admin-notices'),
|
42 |
'tags' => array()
|
43 |
);
|
44 |
-
|
|
|
45 |
'name' => 'hidden_notices',
|
46 |
'title' => __('Hidden notices', 'disable-admin-notices'),
|
47 |
'tags' => array()
|
48 |
-
)
|
49 |
|
50 |
return $options;
|
51 |
}
|
52 |
|
53 |
function wbcr_dan_set_plugin_meta($links, $file)
|
54 |
{
|
55 |
-
if( $file ==
|
56 |
$links[] = '<a href="https://goo.gl/TcMcS4" style="color: #FF5722;font-weight: bold;" target="_blank">' . __('Get ultimate plugin free', 'disable-admin-notices') . '</a>';
|
57 |
}
|
58 |
|
6 |
* @version 1.0
|
7 |
*/
|
8 |
|
9 |
+
// Exit if accessed directly
|
10 |
+
if( !defined('ABSPATH') ) {
|
11 |
+
exit;
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
}
|
13 |
|
14 |
function wbcr_dan_rating_widget_url($page_url, $plugin_name)
|
15 |
{
|
16 |
+
if( $plugin_name == WDN_Plugin::app()->getPluginName() ) {
|
17 |
return 'https://goo.gl/68ucHp';
|
18 |
}
|
19 |
|
35 |
'title' => __('Enable hidden notices in adminbar', 'disable-admin-notices'),
|
36 |
'tags' => array()
|
37 |
);
|
38 |
+
|
39 |
+
/*$options[] = array(
|
40 |
'name' => 'hidden_notices',
|
41 |
'title' => __('Hidden notices', 'disable-admin-notices'),
|
42 |
'tags' => array()
|
43 |
+
);*/
|
44 |
|
45 |
return $options;
|
46 |
}
|
47 |
|
48 |
function wbcr_dan_set_plugin_meta($links, $file)
|
49 |
{
|
50 |
+
if( $file == WDN_PLUGIN_BASE ) {
|
51 |
$links[] = '<a href="https://goo.gl/TcMcS4" style="color: #FF5722;font-weight: bold;" target="_blank">' . __('Get ultimate plugin free', 'disable-admin-notices') . '</a>';
|
52 |
}
|
53 |
|
admin/options.php
CHANGED
@@ -6,6 +6,11 @@
|
|
6 |
* @version 1.0
|
7 |
*/
|
8 |
|
|
|
|
|
|
|
|
|
|
|
9 |
/**
|
10 |
* @return array
|
11 |
*/
|
@@ -13,12 +18,10 @@
|
|
13 |
{
|
14 |
$options = array();
|
15 |
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
);
|
21 |
-
}
|
22 |
|
23 |
$options[] = array(
|
24 |
'type' => 'dropdown',
|
@@ -42,7 +45,7 @@
|
|
42 |
__('Do not hide notices and do not show “Hide notification forever” link for admin.', 'disable-admin-notices')
|
43 |
)
|
44 |
),
|
45 |
-
'layout' => array('hint-type' => 'icon', 'hint-icon-color' => '
|
46 |
'hint' => __('Some plugins shows notifications about premium version, data collecting or promote their services. Even if you push close button (that sometimes are impossible), notices are shows again in some time. This option allows you to control notices. Hide them all or each individually. Some plugins shows notifications about premium version, data collecting or promote their services. Even if you push close button (that sometimes are impossible), notices are shows again in some time. This option allows you to control notices. Hide them all or each individually.', 'disable-admin-notices'),
|
47 |
'default' => 'only_selected',
|
48 |
'events' => array(
|
@@ -65,7 +68,7 @@
|
|
65 |
'way' => 'buttons',
|
66 |
'name' => 'show_notices_in_adminbar',
|
67 |
'title' => __('Enable hidden notices in adminbar', 'disable-admin-notices'),
|
68 |
-
'layout' => array('hint-type' => 'icon', 'hint-icon-color' => '
|
69 |
'hint' => __('By default, the plugin hides all notices, which you specified. If you enable this option, the plugin will collect all hidden notices and show them into the top admin toolbar. It will not disturb you but will allow to look notices at your convenience.', 'disable-admin-notices'),
|
70 |
'default' => false
|
71 |
);
|
@@ -84,7 +87,7 @@
|
|
84 |
|
85 |
/**
|
86 |
* @param $form
|
87 |
-
* @param $page
|
88 |
* @return mixed
|
89 |
*/
|
90 |
function wbcr_dan_additionally_form_options($form, $page)
|
@@ -105,25 +108,23 @@
|
|
105 |
add_filter('wbcr_clr_additionally_form_options', 'wbcr_dan_additionally_form_options', 10, 2);
|
106 |
|
107 |
/**
|
108 |
-
* @param $html_builder
|
109 |
*/
|
110 |
function wbcr_dan_reset_notices_button($html_builder)
|
111 |
{
|
112 |
-
global $wbcr_dan_plugin;
|
113 |
-
|
114 |
$form_name = $html_builder->getFormName();
|
115 |
$reseted = false;
|
116 |
|
117 |
if( isset($_POST['wbcr_dan_reset_action']) ) {
|
118 |
check_admin_referer($form_name, 'wbcr_dan_reset_nonce');
|
119 |
|
120 |
-
|
121 |
|
122 |
$reseted = true;
|
123 |
}
|
124 |
|
125 |
$count_hidden_notices = 0;
|
126 |
-
$hidden_notices =
|
127 |
|
128 |
if( !empty($hidden_notices) ) {
|
129 |
$count_hidden_notices = sizeof($hidden_notices);
|
6 |
* @version 1.0
|
7 |
*/
|
8 |
|
9 |
+
// Exit if accessed directly
|
10 |
+
if( !defined('ABSPATH') ) {
|
11 |
+
exit;
|
12 |
+
}
|
13 |
+
|
14 |
/**
|
15 |
* @return array
|
16 |
*/
|
18 |
{
|
19 |
$options = array();
|
20 |
|
21 |
+
$options[] = array(
|
22 |
+
'type' => 'html',
|
23 |
+
'html' => '<div class="wbcr-factory-page-group-header">' . '<strong>' . __('Admin notifications, Update nags', 'disable-admin-notices') . '</strong>' . '<p>' . __('Do you know the situation, when some plugin offers you to update to premium, to collect technical data and shows many annoying notices? You are close these notices every now and again but they newly appears and interfere your work with WordPress. Even worse, some plugin’s authors delete “close” button from notices and they shows in your admin panel forever.', 'disable-admin-notices') . '</p>' . '</div>'
|
24 |
+
);
|
|
|
|
|
25 |
|
26 |
$options[] = array(
|
27 |
'type' => 'dropdown',
|
45 |
__('Do not hide notices and do not show “Hide notification forever” link for admin.', 'disable-admin-notices')
|
46 |
)
|
47 |
),
|
48 |
+
'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
|
49 |
'hint' => __('Some plugins shows notifications about premium version, data collecting or promote their services. Even if you push close button (that sometimes are impossible), notices are shows again in some time. This option allows you to control notices. Hide them all or each individually. Some plugins shows notifications about premium version, data collecting or promote their services. Even if you push close button (that sometimes are impossible), notices are shows again in some time. This option allows you to control notices. Hide them all or each individually.', 'disable-admin-notices'),
|
50 |
'default' => 'only_selected',
|
51 |
'events' => array(
|
68 |
'way' => 'buttons',
|
69 |
'name' => 'show_notices_in_adminbar',
|
70 |
'title' => __('Enable hidden notices in adminbar', 'disable-admin-notices'),
|
71 |
+
'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
|
72 |
'hint' => __('By default, the plugin hides all notices, which you specified. If you enable this option, the plugin will collect all hidden notices and show them into the top admin toolbar. It will not disturb you but will allow to look notices at your convenience.', 'disable-admin-notices'),
|
73 |
'default' => false
|
74 |
);
|
87 |
|
88 |
/**
|
89 |
* @param $form
|
90 |
+
* @param $page FactoryPages400_ImpressiveThemplate
|
91 |
* @return mixed
|
92 |
*/
|
93 |
function wbcr_dan_additionally_form_options($form, $page)
|
108 |
add_filter('wbcr_clr_additionally_form_options', 'wbcr_dan_additionally_form_options', 10, 2);
|
109 |
|
110 |
/**
|
111 |
+
* @param $html_builder FactoryForms400_Html
|
112 |
*/
|
113 |
function wbcr_dan_reset_notices_button($html_builder)
|
114 |
{
|
|
|
|
|
115 |
$form_name = $html_builder->getFormName();
|
116 |
$reseted = false;
|
117 |
|
118 |
if( isset($_POST['wbcr_dan_reset_action']) ) {
|
119 |
check_admin_referer($form_name, 'wbcr_dan_reset_nonce');
|
120 |
|
121 |
+
WDN_Plugin::app()->deleteOption('hidden_notices');
|
122 |
|
123 |
$reseted = true;
|
124 |
}
|
125 |
|
126 |
$count_hidden_notices = 0;
|
127 |
+
$hidden_notices = WDN_Plugin::app()->getOption('hidden_notices');
|
128 |
|
129 |
if( !empty($hidden_notices) ) {
|
130 |
$count_hidden_notices = sizeof($hidden_notices);
|
admin/pages/index.php
ADDED
File without changes
|
admin/pages/more-features.php
CHANGED
@@ -5,8 +5,12 @@
|
|
5 |
*
|
6 |
* @since 1.0.0
|
7 |
*/
|
8 |
-
class WbcrHan_MoreFeaturesPage extends FactoryClearfy102_MoreFeaturesPage {
|
9 |
|
|
|
|
|
|
|
10 |
}
|
11 |
|
12 |
-
|
|
|
|
5 |
*
|
6 |
* @since 1.0.0
|
7 |
*/
|
|
|
8 |
|
9 |
+
// Exit if accessed directly
|
10 |
+
if( !defined('ABSPATH') ) {
|
11 |
+
exit;
|
12 |
}
|
13 |
|
14 |
+
class WDN_MoreFeaturesPage extends Wbcr_FactoryClearfy200_MoreFeaturesPage {
|
15 |
+
|
16 |
+
}
|
admin/pages/notices.php
CHANGED
@@ -5,13 +5,19 @@
|
|
5 |
*
|
6 |
* @since 1.0.0
|
7 |
*/
|
8 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
|
10 |
/**
|
11 |
* The id of the page in the admin menu.
|
12 |
*
|
13 |
* Mainly used to navigate between pages.
|
14 |
-
* @see
|
15 |
*
|
16 |
* @since 1.0.0
|
17 |
* @var string
|
@@ -19,19 +25,22 @@
|
|
19 |
public $id = "notices";
|
20 |
public $page_menu_dashicon = 'dashicons-testimonial';
|
21 |
|
22 |
-
|
|
|
|
|
|
|
23 |
{
|
24 |
-
$this->
|
25 |
|
26 |
if( !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
|
27 |
$this->internal = false;
|
28 |
-
$this->
|
29 |
-
$this->
|
30 |
}
|
31 |
|
32 |
-
add_filter('wbcr_factory_imppage_actions_notice', array($this, 'actionsNotice'), 10, 2);
|
33 |
-
|
34 |
parent::__construct($plugin);
|
|
|
|
|
35 |
}
|
36 |
|
37 |
public function getMenuTitle()
|
@@ -44,18 +53,12 @@
|
|
44 |
|
45 |
/**
|
46 |
* We register notifications for some actions
|
47 |
-
* @param $notices
|
48 |
-
* @param $plugin
|
49 |
* @return array
|
50 |
*/
|
51 |
-
public function actionsNotice($notices
|
52 |
{
|
53 |
-
global $wbcr_dan_plugin;
|
54 |
-
|
55 |
-
if( $wbcr_dan_plugin->pluginName != $plugin->pluginName ) {
|
56 |
-
return $notices;
|
57 |
-
}
|
58 |
-
|
59 |
$notices[] = array(
|
60 |
'conditions' => array(
|
61 |
'wbcr_dan_reseted_notices' => 1
|
@@ -70,7 +73,7 @@
|
|
70 |
'wbcr_dan_code' => 'interal_error'
|
71 |
),
|
72 |
'type' => 'danger',
|
73 |
-
'message' => __('An error occurred while trying to delete comments. Internal error occured. Please try again later.', '
|
74 |
);*/
|
75 |
|
76 |
return $notices;
|
@@ -96,6 +99,4 @@
|
|
96 |
|
97 |
return apply_filters('wbcr_dan_notices_form_options', $formOptions, $this);
|
98 |
}
|
99 |
-
}
|
100 |
-
|
101 |
-
FactoryPages324::register($wbcr_dan_plugin, 'WbcrHan_NoticesPage');
|
5 |
*
|
6 |
* @since 1.0.0
|
7 |
*/
|
8 |
+
|
9 |
+
// Exit if accessed directly
|
10 |
+
if( !defined('ABSPATH') ) {
|
11 |
+
exit;
|
12 |
+
}
|
13 |
+
|
14 |
+
class WDN_NoticesPage extends Wbcr_FactoryPages400_ImpressiveThemplate {
|
15 |
|
16 |
/**
|
17 |
* The id of the page in the admin menu.
|
18 |
*
|
19 |
* Mainly used to navigate between pages.
|
20 |
+
* @see FactoryPages400_AdminPage
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
* @var string
|
25 |
public $id = "notices";
|
26 |
public $page_menu_dashicon = 'dashicons-testimonial';
|
27 |
|
28 |
+
/**
|
29 |
+
* @param Wbcr_Factory400_Plugin $plugin
|
30 |
+
*/
|
31 |
+
public function __construct(Wbcr_Factory400_Plugin $plugin)
|
32 |
{
|
33 |
+
$this->menu_title = __('Hide admin notices', 'disable-admin-notices');
|
34 |
|
35 |
if( !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
|
36 |
$this->internal = false;
|
37 |
+
$this->menu_target = 'options-general.php';
|
38 |
+
$this->add_link_to_plugin_actions = true;
|
39 |
}
|
40 |
|
|
|
|
|
41 |
parent::__construct($plugin);
|
42 |
+
|
43 |
+
$this->plugin = $plugin;
|
44 |
}
|
45 |
|
46 |
public function getMenuTitle()
|
53 |
|
54 |
/**
|
55 |
* We register notifications for some actions
|
56 |
+
* @param array $notices
|
57 |
+
* @param Wbcr_Factory400_Plugin $plugin
|
58 |
* @return array
|
59 |
*/
|
60 |
+
public function actionsNotice($notices)
|
61 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
$notices[] = array(
|
63 |
'conditions' => array(
|
64 |
'wbcr_dan_reseted_notices' => 1
|
73 |
'wbcr_dan_code' => 'interal_error'
|
74 |
),
|
75 |
'type' => 'danger',
|
76 |
+
'message' => __('An error occurred while trying to delete comments. Internal error occured. Please try again later.', 'factory_pages_400')
|
77 |
);*/
|
78 |
|
79 |
return $notices;
|
99 |
|
100 |
return apply_filters('wbcr_dan_notices_form_options', $formOptions, $this);
|
101 |
}
|
102 |
+
}
|
|
|
|
disable-admin-notices.php
CHANGED
@@ -4,12 +4,17 @@
|
|
4 |
* Plugin URI: https://wordpress.org/plugins/disable-admin-notices/
|
5 |
* Description: Disable admin notices plugin gives you the option to hide updates warnings and inline notices in the admin panel.
|
6 |
* Author: Webcraftic <wordpress.webraftic@gmail.com>
|
7 |
-
* Version: 1.0.
|
8 |
* Text Domain: disable-admin-notices
|
9 |
* Domain Path: /languages/
|
10 |
*/
|
11 |
|
12 |
-
|
|
|
|
|
|
|
|
|
|
|
13 |
function wbcr_dan_admin_notice_error()
|
14 |
{
|
15 |
?>
|
@@ -24,62 +29,30 @@
|
|
24 |
return;
|
25 |
} else {
|
26 |
|
27 |
-
define('
|
28 |
-
|
29 |
-
define('
|
30 |
-
define('
|
31 |
-
define('WBCR_DAN_PLUGIN_URL', plugins_url(null, __FILE__));
|
32 |
|
33 |
|
34 |
-
|
35 |
if( !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
|
36 |
-
require_once(
|
37 |
}
|
38 |
|
39 |
-
|
40 |
-
{
|
41 |
-
global $wbcr_dan_plugin;
|
42 |
-
|
43 |
-
// Localization plugin
|
44 |
-
load_plugin_textdomain('disable-admin-notices', false, dirname(WBCR_DAN_PLUGIN_BASE) . '/languages/');
|
45 |
|
46 |
-
|
47 |
-
//return;
|
48 |
-
global $wbcr_clearfy_plugin;
|
49 |
-
$wbcr_dan_plugin = $wbcr_clearfy_plugin;
|
50 |
-
} else {
|
51 |
-
|
52 |
-
$wbcr_dan_plugin = new Factory326_Plugin(__FILE__, array(
|
53 |
-
'name' => 'wbcr_dan',
|
54 |
-
'title' => __('Webcraftic disable admin notices', 'disable-admin-notices'),
|
55 |
-
'version' => '1.0.2',
|
56 |
-
'host' => 'wordpress.org',
|
57 |
-
'url' => 'https://wordpress.org/plugins/disable-admin-notices/',
|
58 |
-
'assembly' => 'free',
|
59 |
-
'updates' => WBCR_DAN_PLUGIN_DIR . '/updates/'
|
60 |
-
));
|
61 |
-
|
62 |
-
// requires factory modules
|
63 |
-
$wbcr_dan_plugin->load(array(
|
64 |
-
array('libs/factory/bootstrap', 'factory_bootstrap_330', 'admin'),
|
65 |
-
array('libs/factory/forms', 'factory_forms_329', 'admin'),
|
66 |
-
array('libs/factory/pages', 'factory_pages_324', 'admin'),
|
67 |
-
array('libs/factory/clearfy', 'factory_clearfy_102', 'all')
|
68 |
-
));
|
69 |
-
}
|
70 |
-
|
71 |
-
// loading other files
|
72 |
-
if( is_admin() ) {
|
73 |
-
require(WBCR_DAN_PLUGIN_DIR . '/admin/boot.php');
|
74 |
-
}
|
75 |
-
|
76 |
-
require(WBCR_DAN_PLUGIN_DIR . '/includes/classes/class.configurate-notices.php');
|
77 |
-
new WbcrHan_ConfigHideNotices($wbcr_dan_plugin);
|
78 |
-
}
|
79 |
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
}
|
85 |
}
|
4 |
* Plugin URI: https://wordpress.org/plugins/disable-admin-notices/
|
5 |
* Description: Disable admin notices plugin gives you the option to hide updates warnings and inline notices in the admin panel.
|
6 |
* Author: Webcraftic <wordpress.webraftic@gmail.com>
|
7 |
+
* Version: 1.0.5
|
8 |
* Text Domain: disable-admin-notices
|
9 |
* Domain Path: /languages/
|
10 |
*/
|
11 |
|
12 |
+
// Exit if accessed directly
|
13 |
+
if( !defined('ABSPATH') ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
|
17 |
+
if( defined('WDN_PLUGIN_ACTIVE') || (defined('WCL_PLUGIN_ACTIVE') && !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON')) ) {
|
18 |
function wbcr_dan_admin_notice_error()
|
19 |
{
|
20 |
?>
|
29 |
return;
|
30 |
} else {
|
31 |
|
32 |
+
define('WDN_PLUGIN_ACTIVE', true);
|
33 |
+
define('WDN_PLUGIN_DIR', dirname(__FILE__));
|
34 |
+
define('WDN_PLUGIN_BASE', plugin_basename(__FILE__));
|
35 |
+
define('WDN_PLUGIN_URL', plugins_url(null, __FILE__));
|
|
|
36 |
|
37 |
|
38 |
+
|
39 |
if( !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
|
40 |
+
require_once(WDN_PLUGIN_DIR . '/libs/factory/core/boot.php');
|
41 |
}
|
42 |
|
43 |
+
require_once(WDN_PLUGIN_DIR . '/includes/class.plugin.php');
|
|
|
|
|
|
|
|
|
|
|
44 |
|
45 |
+
if( !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
|
47 |
+
new WDN_Plugin(__FILE__, array(
|
48 |
+
'prefix' => 'wbcr_dan_',
|
49 |
+
'plugin_name' => 'wbcr_dan',
|
50 |
+
'plugin_title' => __('Webcraftic disable admin notices', 'disable-admin-notices'),
|
51 |
+
'plugin_version' => '1.0.5',
|
52 |
+
'required_php_version' => '5.2',
|
53 |
+
'required_wp_version' => '4.2',
|
54 |
+
'plugin_build' => 'free',
|
55 |
+
'updates' => WDN_PLUGIN_DIR . '/updates/'
|
56 |
+
));
|
57 |
}
|
58 |
}
|
includes/class.plugin.php
ADDED
@@ -0,0 +1,135 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Hide my wp core class
|
4 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
5 |
+
* @copyright (c) 19.02.2018, Webcraftic
|
6 |
+
* @version 1.0
|
7 |
+
*/
|
8 |
+
|
9 |
+
// Exit if accessed directly
|
10 |
+
if( !defined('ABSPATH') ) {
|
11 |
+
exit;
|
12 |
+
}
|
13 |
+
|
14 |
+
if( !class_exists('WDN_Plugin') ) {
|
15 |
+
|
16 |
+
if( !class_exists('WDN_PluginFactory') ) {
|
17 |
+
if( defined('LOADING_CYRLITERA_AS_ADDON') ) {
|
18 |
+
class WDN_PluginFactory {
|
19 |
+
|
20 |
+
}
|
21 |
+
} else {
|
22 |
+
class WDN_PluginFactory extends Wbcr_Factory400_Plugin {
|
23 |
+
|
24 |
+
}
|
25 |
+
}
|
26 |
+
}
|
27 |
+
|
28 |
+
class WDN_Plugin extends WDN_PluginFactory {
|
29 |
+
|
30 |
+
/**
|
31 |
+
* @var Wbcr_Factory400_Plugin
|
32 |
+
*/
|
33 |
+
private static $app;
|
34 |
+
|
35 |
+
/**
|
36 |
+
* @var bool
|
37 |
+
*/
|
38 |
+
private $as_addon;
|
39 |
+
|
40 |
+
/**
|
41 |
+
* @param string $plugin_path
|
42 |
+
* @param array $data
|
43 |
+
* @throws Exception
|
44 |
+
*/
|
45 |
+
public function __construct($plugin_path, $data)
|
46 |
+
{
|
47 |
+
$this->as_addon = isset($data['as_addon']);
|
48 |
+
|
49 |
+
if( $this->as_addon ) {
|
50 |
+
$plugin_parent = isset($data['plugin_parent'])
|
51 |
+
? $data['plugin_parent']
|
52 |
+
: null;
|
53 |
+
|
54 |
+
if( !($plugin_parent instanceof Wbcr_Factory400_Plugin) ) {
|
55 |
+
throw new Exception('An invalid instance of the class was passed.');
|
56 |
+
}
|
57 |
+
|
58 |
+
self::$app = $plugin_parent;
|
59 |
+
} else {
|
60 |
+
self::$app = $this;
|
61 |
+
}
|
62 |
+
|
63 |
+
if( !$this->as_addon ) {
|
64 |
+
parent::__construct($plugin_path, $data);
|
65 |
+
}
|
66 |
+
|
67 |
+
$this->setTextDomain();
|
68 |
+
$this->setModules();
|
69 |
+
|
70 |
+
$this->globalScripts();
|
71 |
+
|
72 |
+
if( is_admin() ) {
|
73 |
+
$this->adminScripts();
|
74 |
+
}
|
75 |
+
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* @return Wbcr_Factory400_Plugin
|
79 |
+
*/
|
80 |
+
public static function app()
|
81 |
+
{
|
82 |
+
return self::$app;
|
83 |
+
}
|
84 |
+
|
85 |
+
protected function setTextDomain()
|
86 |
+
{
|
87 |
+
// Localization plugin
|
88 |
+
load_plugin_textdomain('disable-admin-notices', false, dirname(WDN_PLUGIN_BASE) . '/languages/');
|
89 |
+
}
|
90 |
+
|
91 |
+
protected function setModules()
|
92 |
+
{
|
93 |
+
if( !$this->as_addon ) {
|
94 |
+
self::app()->load(array(
|
95 |
+
array('libs/factory/bootstrap', 'factory_bootstrap_400', 'admin'),
|
96 |
+
array('libs/factory/forms', 'factory_forms_400', 'admin'),
|
97 |
+
array('libs/factory/pages', 'factory_pages_400', 'admin'),
|
98 |
+
array('libs/factory/clearfy', 'factory_clearfy_200', 'all')
|
99 |
+
));
|
100 |
+
}
|
101 |
+
}
|
102 |
+
|
103 |
+
private function registerPages()
|
104 |
+
{
|
105 |
+
if( $this->as_addon ) {
|
106 |
+
return;
|
107 |
+
}
|
108 |
+
self::app()->registerPage('WDN_NoticesPage', WDN_PLUGIN_DIR . '/admin/pages/notices.php');
|
109 |
+
self::app()->registerPage('WDN_MoreFeaturesPage', WDN_PLUGIN_DIR . '/admin/pages/more-features.php');
|
110 |
+
}
|
111 |
+
|
112 |
+
private function adminScripts()
|
113 |
+
{
|
114 |
+
require(WDN_PLUGIN_DIR . '/admin/options.php');
|
115 |
+
|
116 |
+
if( defined('DOING_AJAX') && DOING_AJAX && isset($_REQUEST['action']) && $_REQUEST['action'] == 'wbcr_dan_hide_notices' ) {
|
117 |
+
require(WDN_PLUGIN_DIR . '/admin/ajax/hide-notice.php');
|
118 |
+
}
|
119 |
+
|
120 |
+
if( defined('DOING_AJAX') && DOING_AJAX && isset($_REQUEST['action']) && $_REQUEST['action'] == 'wbcr_dan_restore_notice' ) {
|
121 |
+
require(WDN_PLUGIN_DIR . '/admin/ajax/restore-notice.php');
|
122 |
+
}
|
123 |
+
|
124 |
+
require(WDN_PLUGIN_DIR . '/admin/boot.php');
|
125 |
+
|
126 |
+
$this->registerPages();
|
127 |
+
}
|
128 |
+
|
129 |
+
private function globalScripts()
|
130 |
+
{
|
131 |
+
require(WDN_PLUGIN_DIR . '/includes/classes/class.configurate-notices.php');
|
132 |
+
new WDN_ConfigHideNotices(self::$app);
|
133 |
+
}
|
134 |
+
}
|
135 |
+
}
|
includes/classes/class.configurate-notices.php
CHANGED
@@ -6,7 +6,13 @@
|
|
6 |
* @copyright (c) 2017 Webraftic Ltd
|
7 |
* @version 1.0
|
8 |
*/
|
9 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
|
11 |
public function registerActionsAndFilters()
|
12 |
{
|
@@ -23,19 +29,40 @@
|
|
23 |
add_action('admin_bar_menu', array($this, 'notificationsPanel'), 999);
|
24 |
add_action('admin_enqueue_scripts', array($this, 'notificationsPanelStyles'));
|
25 |
}
|
|
|
|
|
26 |
}
|
27 |
}
|
28 |
}
|
29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
public function notificationsPanelStyles()
|
31 |
{
|
32 |
-
|
33 |
-
|
34 |
}
|
35 |
|
36 |
public function notificationsPanel(&$wp_admin_bar)
|
37 |
{
|
38 |
-
|
|
|
|
|
39 |
|
40 |
$notifications = $this->getOption('hidden_notices');
|
41 |
|
@@ -56,11 +83,14 @@
|
|
56 |
// loop
|
57 |
if( !empty($notifications) ) {
|
58 |
$i = 0;
|
59 |
-
foreach($notifications as $
|
|
|
|
|
|
|
60 |
$wp_admin_bar->add_menu(array(
|
61 |
'id' => 'wbcr-han-notify-panel-item-' . $i,
|
62 |
'parent' => 'wbcr-han-notify-panel',
|
63 |
-
'title' => $
|
64 |
'href' => false,
|
65 |
'meta' => array(
|
66 |
'class' => ''
|
@@ -72,11 +102,6 @@
|
|
72 |
}
|
73 |
}
|
74 |
|
75 |
-
public function printNotices()
|
76 |
-
{
|
77 |
-
add_action('admin_notices', array($this, 'noticesCollection'));
|
78 |
-
}
|
79 |
-
|
80 |
public function noticesCollection()
|
81 |
{
|
82 |
global $wbcr_dan_plugin_all_notices;
|
@@ -85,18 +110,19 @@
|
|
85 |
return;
|
86 |
}
|
87 |
?>
|
|
|
88 |
<style>
|
89 |
-
.wbcr-
|
90 |
position: relative;
|
91 |
padding: 5px 5px 0;
|
92 |
background: #fff;
|
93 |
}
|
94 |
|
95 |
-
.wbcr-
|
96 |
margin: 0 !important;
|
97 |
}
|
98 |
|
99 |
-
.wbcr-
|
100 |
display: block;
|
101 |
text-align: right;
|
102 |
margin: 5px 0 5px 5px;
|
@@ -104,47 +130,51 @@
|
|
104 |
color: #F44336;
|
105 |
}
|
106 |
|
107 |
-
.is-dismissible .wbcr-
|
108 |
margin-right: -30px;
|
109 |
}
|
110 |
|
111 |
-
.wbcr-
|
112 |
box-shadow: none;
|
113 |
outline: none;
|
114 |
}
|
115 |
</style>
|
116 |
-
<script>
|
117 |
-
var wbcr_clearfy_ajax_nonce = "<?=wp_create_nonce($this->plugin->pluginName . '_ajax_hide_notices_nonce')?>";
|
118 |
-
var wbcr_clearfy_ajax_url = "<?=admin_url('admin-ajax.php')?>";
|
119 |
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
|
|
|
|
|
|
125 |
|
126 |
-
noticeHtml.find('.wbcr-
|
127 |
|
128 |
if( !noticeID ) {
|
129 |
alert('Undefinded error. Please report the bug to our support forum.');
|
130 |
}
|
131 |
|
132 |
-
|
|
|
|
|
133 |
type: 'post',
|
134 |
dataType: 'json',
|
135 |
data: {
|
136 |
-
action: '
|
137 |
-
security:
|
138 |
notice_id: noticeID,
|
139 |
notice_html: noticeHtml.html()
|
140 |
},
|
141 |
success: function(data, textStatus, jqXHR) {
|
142 |
if( data == 'error' && data.error ) {
|
143 |
alert(data.error);
|
|
|
|
|
144 |
return;
|
145 |
}
|
146 |
|
147 |
-
|
148 |
}
|
149 |
});
|
150 |
});
|
@@ -166,7 +196,7 @@
|
|
166 |
$get_hidden_notices = $this->getOption('hidden_notices');
|
167 |
|
168 |
$content = array();
|
169 |
-
foreach($wp_filter['admin_notices']->callbacks as $filters) {
|
170 |
foreach($filters as $callback_name => $callback) {
|
171 |
|
172 |
if( 'usof_hide_admin_notices_start' == $callback_name || 'usof_hide_admin_notices_end' == $callback_name ) {
|
@@ -174,7 +204,22 @@
|
|
174 |
}
|
175 |
|
176 |
ob_start();
|
177 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
178 |
$cont = ob_get_clean();
|
179 |
|
180 |
if( empty($cont) ) {
|
@@ -192,7 +237,8 @@
|
|
192 |
$uniq_id2 = md5($class_name . ':' . $method_name);
|
193 |
}
|
194 |
}
|
195 |
-
|
|
|
196 |
if( !empty($get_hidden_notices) ) {
|
197 |
|
198 |
$skip_notice = true;
|
@@ -214,11 +260,11 @@
|
|
214 |
}
|
215 |
}
|
216 |
|
217 |
-
$hide_link = '<a href="#" data-notice-id="' . $uniq_id1 . '_' . $uniq_id2 . '" class="wbcr-
|
218 |
|
219 |
$cont = preg_replace('/<(script|style)([^>]+)?>(.*?)<\/(script|style)>/is', '', $cont);
|
220 |
$cont = rtrim(trim($cont));
|
221 |
-
$cont = preg_replace('/^(<div[^>]+>)(.*?)(<\/div>)$/is', '$1<div class="wbcr-
|
222 |
|
223 |
if( empty($cont) ) {
|
224 |
continue;
|
@@ -241,4 +287,26 @@
|
|
241 |
unset($wp_filter['all_admin_notices']);
|
242 |
}
|
243 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
244 |
}
|
6 |
* @copyright (c) 2017 Webraftic Ltd
|
7 |
* @version 1.0
|
8 |
*/
|
9 |
+
|
10 |
+
// Exit if accessed directly
|
11 |
+
if( !defined('ABSPATH') ) {
|
12 |
+
exit;
|
13 |
+
}
|
14 |
+
|
15 |
+
class WDN_ConfigHideNotices extends Wbcr_FactoryClearfy200_Configurate {
|
16 |
|
17 |
public function registerActionsAndFilters()
|
18 |
{
|
29 |
add_action('admin_bar_menu', array($this, 'notificationsPanel'), 999);
|
30 |
add_action('admin_enqueue_scripts', array($this, 'notificationsPanelStyles'));
|
31 |
}
|
32 |
+
|
33 |
+
add_action('admin_head', array($this, 'printNonce'), 999);
|
34 |
}
|
35 |
}
|
36 |
}
|
37 |
|
38 |
+
public function printNotices()
|
39 |
+
{
|
40 |
+
add_action('admin_notices', array($this, 'noticesCollection'));
|
41 |
+
}
|
42 |
+
|
43 |
+
public function printNonce()
|
44 |
+
{
|
45 |
+
?>
|
46 |
+
<!-- Disable admin notices plugin (Clearfy tools) -->
|
47 |
+
<script>
|
48 |
+
var wbcr_dan_ajax_restore_nonce = "<?=wp_create_nonce($this->plugin->getPluginName() . '_ajax_restore_notice_nonce')?>";
|
49 |
+
var wbcr_dan_ajax_hide_notice_nonce = "<?=wp_create_nonce($this->plugin->getPluginName() . '_ajax_hide_notices_nonce')?>";
|
50 |
+
</script>
|
51 |
+
<?php
|
52 |
+
}
|
53 |
+
|
54 |
+
|
55 |
public function notificationsPanelStyles()
|
56 |
{
|
57 |
+
wp_enqueue_style('wbcr-notification-panel-styles', WDN_PLUGIN_URL . '/admin/assets/css/notifications-panel.css', array(), $this->plugin->getPluginVersion());
|
58 |
+
wp_enqueue_script('wbcr-notification-panel-scripts', WDN_PLUGIN_URL . '/admin/assets/js/notifications-panel.js', array(), $this->plugin->getPluginVersion());
|
59 |
}
|
60 |
|
61 |
public function notificationsPanel(&$wp_admin_bar)
|
62 |
{
|
63 |
+
if( !current_user_can('administrator') ) {
|
64 |
+
return;
|
65 |
+
}
|
66 |
|
67 |
$notifications = $this->getOption('hidden_notices');
|
68 |
|
83 |
// loop
|
84 |
if( !empty($notifications) ) {
|
85 |
$i = 0;
|
86 |
+
foreach($notifications as $notice_id => $message) {
|
87 |
+
$message = $this->getExcerpt(stripslashes($message), 0, 350);
|
88 |
+
$message .= '<div class="wbcr-han-panel-restore-notify-line"><a href="#" data-notice-id="' . esc_attr($notice_id) . '" class="wbcr-han-panel-restore-notify-link">' . __('Restore notice', 'clearfy') . '</a></div>';
|
89 |
+
|
90 |
$wp_admin_bar->add_menu(array(
|
91 |
'id' => 'wbcr-han-notify-panel-item-' . $i,
|
92 |
'parent' => 'wbcr-han-notify-panel',
|
93 |
+
'title' => $message,
|
94 |
'href' => false,
|
95 |
'meta' => array(
|
96 |
'class' => ''
|
102 |
}
|
103 |
}
|
104 |
|
|
|
|
|
|
|
|
|
|
|
105 |
public function noticesCollection()
|
106 |
{
|
107 |
global $wbcr_dan_plugin_all_notices;
|
110 |
return;
|
111 |
}
|
112 |
?>
|
113 |
+
<!-- Disable admin notices plugin (Clearfy tools) -->
|
114 |
<style>
|
115 |
+
.wbcr-dan-hide-notices {
|
116 |
position: relative;
|
117 |
padding: 5px 5px 0;
|
118 |
background: #fff;
|
119 |
}
|
120 |
|
121 |
+
.wbcr-dan-hide-notices > div {
|
122 |
margin: 0 !important;
|
123 |
}
|
124 |
|
125 |
+
.wbcr-dan-hide-notice-link {
|
126 |
display: block;
|
127 |
text-align: right;
|
128 |
margin: 5px 0 5px 5px;
|
130 |
color: #F44336;
|
131 |
}
|
132 |
|
133 |
+
.is-dismissible .wbcr-dan-hide-notice-link {
|
134 |
margin-right: -30px;
|
135 |
}
|
136 |
|
137 |
+
.wbcr-dan-hide-notice-link:active, .wbcr-dan-hide-notice-link:focus {
|
138 |
box-shadow: none;
|
139 |
outline: none;
|
140 |
}
|
141 |
</style>
|
|
|
|
|
|
|
142 |
|
143 |
+
<!-- Disable admin notices plugin (Clearfy tools) -->
|
144 |
+
<script>
|
145 |
+
jQuery(document).ready(function($) {
|
146 |
+
$(document).on('click', '.wbcr-dan-hide-notice-link', function() {
|
147 |
+
var self = $(this),
|
148 |
+
noticeID = self.data('notice-id'),
|
149 |
+
noticeHtml = self.closest('.wbcr-dan-hide-notices').clone(),
|
150 |
+
contanierEl = self.closest('.wbcr-dan-hide-notices').parent();
|
151 |
|
152 |
+
noticeHtml.find('.wbcr-dan-hide-notice-link').remove();
|
153 |
|
154 |
if( !noticeID ) {
|
155 |
alert('Undefinded error. Please report the bug to our support forum.');
|
156 |
}
|
157 |
|
158 |
+
contanierEl.hide();
|
159 |
+
|
160 |
+
$.ajax(ajaxurl, {
|
161 |
type: 'post',
|
162 |
dataType: 'json',
|
163 |
data: {
|
164 |
+
action: 'wbcr_dan_hide_notices',
|
165 |
+
security: wbcr_dan_ajax_hide_notice_nonce,
|
166 |
notice_id: noticeID,
|
167 |
notice_html: noticeHtml.html()
|
168 |
},
|
169 |
success: function(data, textStatus, jqXHR) {
|
170 |
if( data == 'error' && data.error ) {
|
171 |
alert(data.error);
|
172 |
+
|
173 |
+
contanierEl.show();
|
174 |
return;
|
175 |
}
|
176 |
|
177 |
+
contanierEl.remove();
|
178 |
}
|
179 |
});
|
180 |
});
|
196 |
$get_hidden_notices = $this->getOption('hidden_notices');
|
197 |
|
198 |
$content = array();
|
199 |
+
foreach((array)$wp_filter['admin_notices']->callbacks as $filters) {
|
200 |
foreach($filters as $callback_name => $callback) {
|
201 |
|
202 |
if( 'usof_hide_admin_notices_start' == $callback_name || 'usof_hide_admin_notices_end' == $callback_name ) {
|
204 |
}
|
205 |
|
206 |
ob_start();
|
207 |
+
|
208 |
+
// #CLRF-140 fix bug for php7
|
209 |
+
// when the developers forgot to delete the argument in the function of implementing the notification.
|
210 |
+
$args = array();
|
211 |
+
$accepted_args = isset($callback['accepted_args']) && !empty($callback['accepted_args'])
|
212 |
+
? $callback['accepted_args']
|
213 |
+
: 0;
|
214 |
+
|
215 |
+
if( $accepted_args > 0 ) {
|
216 |
+
for($i = 0; $i < (int)$accepted_args; $i++) {
|
217 |
+
$args[] = null;
|
218 |
+
}
|
219 |
+
}
|
220 |
+
//===========
|
221 |
+
|
222 |
+
call_user_func_array($callback['function'], $args);
|
223 |
$cont = ob_get_clean();
|
224 |
|
225 |
if( empty($cont) ) {
|
237 |
$uniq_id2 = md5($class_name . ':' . $method_name);
|
238 |
}
|
239 |
}
|
240 |
+
//838339d1a188e17fec838c2df3058603
|
241 |
+
//838339d1a188e17fec838c2df3058603
|
242 |
if( !empty($get_hidden_notices) ) {
|
243 |
|
244 |
$skip_notice = true;
|
260 |
}
|
261 |
}
|
262 |
|
263 |
+
$hide_link = '<a href="#" data-notice-id="' . $uniq_id1 . '_' . $uniq_id2 . '" class="wbcr-dan-hide-notice-link">[' . __('Hide notification forever', 'disable-admin-notices') . ']</a>';
|
264 |
|
265 |
$cont = preg_replace('/<(script|style)([^>]+)?>(.*?)<\/(script|style)>/is', '', $cont);
|
266 |
$cont = rtrim(trim($cont));
|
267 |
+
$cont = preg_replace('/^(<div[^>]+>)(.*?)(<\/div>)$/is', '$1<div class="wbcr-dan-hide-notices">$2' . $hide_link . '</div>$3', $cont);
|
268 |
|
269 |
if( empty($cont) ) {
|
270 |
continue;
|
287 |
unset($wp_filter['all_admin_notices']);
|
288 |
}
|
289 |
}
|
290 |
+
|
291 |
+
/**
|
292 |
+
* Get excerpt from string
|
293 |
+
*
|
294 |
+
* @param String $str String to get an excerpt from
|
295 |
+
* @param Integer $startPos Position int string to start excerpt from
|
296 |
+
* @param Integer $maxLength Maximum length the excerpt may be
|
297 |
+
* @return String excerpt
|
298 |
+
*/
|
299 |
+
function getExcerpt($str, $startPos = 0, $maxLength = 100)
|
300 |
+
{
|
301 |
+
if( strlen($str) > $maxLength ) {
|
302 |
+
$excerpt = substr($str, $startPos, $maxLength - 3);
|
303 |
+
$lastSpace = strrpos($excerpt, ' ');
|
304 |
+
$excerpt = substr($excerpt, 0, $lastSpace);
|
305 |
+
$excerpt .= '...';
|
306 |
+
} else {
|
307 |
+
$excerpt = $str;
|
308 |
+
}
|
309 |
+
|
310 |
+
return $excerpt;
|
311 |
+
}
|
312 |
}
|
includes/classes/index.php
ADDED
File without changes
|
includes/index.php
ADDED
File without changes
|
languages/disable-admin-notices-ru_RU.mo
CHANGED
Binary file
|
languages/disable-admin-notices-ru_RU.po
CHANGED
@@ -1,419 +1,422 @@
|
|
1 |
-
msgid ""
|
2 |
-
msgstr ""
|
3 |
-
"Project-Id-Version: clearfy\n"
|
4 |
-
"POT-Creation-Date: 2018-
|
5 |
-
"PO-Revision-Date: 2018-
|
6 |
-
"Last-Translator: alex.kovalevv@gmail.com <alex.kovalevv@gmail.com>\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 1.8.8\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 |
-
"X-Poedit-SearchPathExcluded-0: libs\n"
|
20 |
-
|
21 |
-
#: admin/ajax/hide-notice.php:
|
22 |
-
msgid "You don't have enough capability to edit this information."
|
23 |
-
msgstr "Вы не имеете разрешения на редактирование этого!"
|
24 |
-
|
25 |
-
#: admin/ajax/hide-notice.php:
|
26 |
-
msgid "Undefinded notice id."
|
27 |
-
msgstr "Не передан notice id."
|
28 |
-
|
29 |
-
#: admin/ajax/hide-notice.php:
|
30 |
-
msgid "Success"
|
31 |
-
msgstr "Успешно"
|
32 |
-
|
33 |
-
#: admin/boot.php:
|
34 |
-
msgid "Hide admin notices"
|
35 |
-
msgstr "Скрыть уведомления"
|
36 |
-
|
37 |
-
#: admin/boot.php:
|
38 |
-
msgid "Enable hidden notices in adminbar"
|
39 |
-
msgstr "Включить уведомления в админбаре"
|
40 |
-
|
41 |
-
#: admin/boot.php:
|
42 |
-
msgid "
|
43 |
-
msgstr "
|
44 |
-
|
45 |
-
#: admin/
|
46 |
-
msgid "
|
47 |
-
msgstr "
|
48 |
-
|
49 |
-
#: admin/options.php:
|
50 |
-
msgid "
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
"
|
56 |
-
|
57 |
-
"
|
58 |
-
"
|
59 |
-
"
|
60 |
-
|
61 |
-
"
|
62 |
-
"
|
63 |
-
|
64 |
-
|
65 |
-
"
|
66 |
-
"
|
67 |
-
|
68 |
-
#: admin/options.php:
|
69 |
-
msgid "
|
70 |
-
msgstr "
|
71 |
-
|
72 |
-
#: admin/options.php:
|
73 |
-
msgid "
|
74 |
-
msgstr "
|
75 |
-
|
76 |
-
#: admin/options.php:
|
77 |
-
msgid "
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
"
|
83 |
-
"
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
"
|
88 |
-
|
89 |
-
#: admin/options.php:
|
90 |
-
msgid "
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
"
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
"
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
"
|
104 |
-
"
|
105 |
-
"
|
106 |
-
"
|
107 |
-
|
108 |
-
"
|
109 |
-
"
|
110 |
-
"
|
111 |
-
|
112 |
-
"
|
113 |
-
"
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
"
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
"
|
123 |
-
"
|
124 |
-
"
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
"
|
129 |
-
"
|
130 |
-
|
131 |
-
#: admin/options.php:
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
msgid "
|
138 |
-
msgstr "
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
#: admin/pages/notices.php:
|
146 |
-
msgid "
|
147 |
-
msgstr "
|
148 |
-
|
149 |
-
#: admin
|
150 |
-
msgid "
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
"
|
156 |
-
"
|
157 |
-
"
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
"
|
162 |
-
"
|
163 |
-
|
164 |
-
#:
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
msgid "
|
171 |
-
msgstr "
|
172 |
-
|
173 |
-
#: includes/classes/class.configurate-notices.php:
|
174 |
-
msgid "Hide notification forever"
|
175 |
-
msgstr "Скрыть уведомление навсегда"
|
176 |
-
|
177 |
-
#~ msgid "
|
178 |
-
#~ msgstr "
|
179 |
-
|
180 |
-
#~ msgid "
|
181 |
-
#~ msgstr "
|
182 |
-
|
183 |
-
#~ msgid "
|
184 |
-
#~ msgstr "
|
185 |
-
|
186 |
-
#~ msgid "Replace external links
|
187 |
-
#~ msgstr "Заменить внешние ссылки
|
188 |
-
|
189 |
-
#~ msgid "
|
190 |
-
#~ msgstr "
|
191 |
-
|
192 |
-
#~ msgid "
|
193 |
-
#~ msgstr "
|
194 |
-
|
195 |
-
#~ msgid "
|
196 |
-
#~ msgstr "
|
197 |
-
|
198 |
-
#~ msgid "
|
199 |
-
#~ msgstr "
|
200 |
-
|
201 |
-
#~ msgid ""
|
202 |
-
#~
|
203 |
-
|
204 |
-
#~
|
205 |
-
#~ "
|
206 |
-
#~
|
207 |
-
#~ "
|
208 |
-
#~ "
|
209 |
-
#~
|
210 |
-
#~ "
|
211 |
-
#~ "
|
212 |
-
|
213 |
-
#~
|
214 |
-
#~
|
215 |
-
|
216 |
-
#~ msgid "
|
217 |
-
#~ msgstr "
|
218 |
-
|
219 |
-
#~ msgid "
|
220 |
-
#~ msgstr "
|
221 |
-
|
222 |
-
#~ msgid ""
|
223 |
-
#~ "
|
224 |
-
|
225 |
-
#~
|
226 |
-
#~ "
|
227 |
-
#~ "
|
228 |
-
|
229 |
-
#~
|
230 |
-
#~
|
231 |
-
|
232 |
-
#~ msgid "You
|
233 |
-
#~ msgstr "
|
234 |
-
|
235 |
-
#~ msgid "
|
236 |
-
#~ msgstr "
|
237 |
-
|
238 |
-
#~ msgid ""
|
239 |
-
#~ "
|
240 |
-
|
241 |
-
|
242 |
-
#~
|
243 |
-
#~ "
|
244 |
-
|
245 |
-
#~
|
246 |
-
#~ "
|
247 |
-
#~ "
|
248 |
-
#~
|
249 |
-
|
250 |
-
#~
|
251 |
-
#~
|
252 |
-
|
253 |
-
#~ msgid "
|
254 |
-
#~ msgstr "
|
255 |
-
|
256 |
-
#~ msgid "
|
257 |
-
#~ msgstr "
|
258 |
-
|
259 |
-
#~ msgid ""
|
260 |
-
#~ "
|
261 |
-
|
262 |
-
#~
|
263 |
-
#~ "
|
264 |
-
#~ "
|
265 |
-
|
266 |
-
#~
|
267 |
-
#~
|
268 |
-
|
269 |
-
#~ msgid "
|
270 |
-
#~ msgstr "
|
271 |
-
|
272 |
-
#~ msgid "
|
273 |
-
#~ msgstr "
|
274 |
-
|
275 |
-
#~ msgid ""
|
276 |
-
#~
|
277 |
-
|
278 |
-
#~
|
279 |
-
#~ "
|
280 |
-
#~ "href=\"%s\"
|
281 |
-
|
282 |
-
#~
|
283 |
-
#~
|
284 |
-
|
285 |
-
#~ msgid ""
|
286 |
-
#~ "
|
287 |
-
|
288 |
-
#~ "
|
289 |
-
#~
|
290 |
-
#~ "
|
291 |
-
#~ "
|
292 |
-
#~ "
|
293 |
-
#~ "
|
294 |
-
|
295 |
-
#~
|
296 |
-
#~ "
|
297 |
-
|
298 |
-
#~
|
299 |
-
#~
|
300 |
-
#~ "
|
301 |
-
#~ "
|
302 |
-
#~
|
303 |
-
|
304 |
-
#~
|
305 |
-
#~ "
|
306 |
-
|
307 |
-
#~
|
308 |
-
#~ "
|
309 |
-
#~
|
310 |
-
#~ "
|
311 |
-
#~ "
|
312 |
-
#~
|
313 |
-
#~ "
|
314 |
-
|
315 |
-
#~
|
316 |
-
#~
|
317 |
-
|
318 |
-
#~ msgid ""
|
319 |
-
#~ "
|
320 |
-
|
321 |
-
#~
|
322 |
-
#~ "
|
323 |
-
#~ "
|
324 |
-
|
325 |
-
#~
|
326 |
-
#~
|
327 |
-
|
328 |
-
#~ msgid ""
|
329 |
-
#~ "
|
330 |
-
|
331 |
-
#~
|
332 |
-
#~ "
|
333 |
-
#~ "
|
334 |
-
|
335 |
-
#~
|
336 |
-
#~
|
337 |
-
|
338 |
-
#~ msgid ""
|
339 |
-
#~
|
340 |
-
|
341 |
-
#~
|
342 |
-
#~ "
|
343 |
-
#~ "
|
344 |
-
|
345 |
-
#~
|
346 |
-
#~
|
347 |
-
|
348 |
-
#~ "
|
349 |
-
|
350 |
-
#~
|
351 |
-
#~ "
|
352 |
-
|
353 |
-
#~
|
354 |
-
#~ "
|
355 |
-
#~ "
|
356 |
-
|
357 |
-
#~
|
358 |
-
#~ "
|
359 |
-
|
360 |
-
#~
|
361 |
-
#~ "
|
362 |
-
#~ "
|
363 |
-
|
364 |
-
#~
|
365 |
-
#~
|
366 |
-
|
367 |
-
#~ msgid "
|
368 |
-
#~ msgstr "
|
369 |
-
|
370 |
-
#~ msgid ""
|
371 |
-
#~ "
|
372 |
-
|
373 |
-
#~
|
374 |
-
#~ "
|
375 |
-
#~
|
376 |
-
#~ "
|
377 |
-
#~ "
|
378 |
-
#~
|
379 |
-
#~ "
|
380 |
-
|
381 |
-
#~
|
382 |
-
#~
|
383 |
-
|
384 |
-
#~ msgid ""
|
385 |
-
#~
|
386 |
-
|
387 |
-
#~
|
388 |
-
#~
|
389 |
-
#~ "
|
390 |
-
#~ "
|
391 |
-
#~
|
392 |
-
#~ "
|
393 |
-
|
394 |
-
#~
|
395 |
-
#~
|
396 |
-
|
397 |
-
#~ msgid "
|
398 |
-
#~ msgstr "
|
399 |
-
|
400 |
-
#~ msgid ""
|
401 |
-
#~ "
|
402 |
-
|
403 |
-
#~
|
404 |
-
#~
|
405 |
-
#~ "
|
406 |
-
#~ "
|
407 |
-
#~
|
408 |
-
|
409 |
-
#~
|
410 |
-
#~ "
|
411 |
-
|
412 |
-
#~
|
413 |
-
#~
|
414 |
-
#~ "
|
415 |
-
#~ "
|
416 |
-
#~
|
417 |
-
|
418 |
-
#~
|
419 |
-
#~
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: clearfy\n"
|
4 |
+
"POT-Creation-Date: 2018-03-14 17:34+0300\n"
|
5 |
+
"PO-Revision-Date: 2018-03-14 17:34+0300\n"
|
6 |
+
"Last-Translator: alex.kovalevv@gmail.com <alex.kovalevv@gmail.com>\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 1.8.8\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 |
+
"X-Poedit-SearchPathExcluded-0: libs\n"
|
20 |
+
|
21 |
+
#: admin/ajax/hide-notice.php:19 admin/ajax/restore-notice.php:19
|
22 |
+
msgid "You don't have enough capability to edit this information."
|
23 |
+
msgstr "Вы не имеете разрешения на редактирование этого!"
|
24 |
+
|
25 |
+
#: admin/ajax/hide-notice.php:32 admin/ajax/restore-notice.php:28
|
26 |
+
msgid "Undefinded notice id."
|
27 |
+
msgstr "Не передан notice id."
|
28 |
+
|
29 |
+
#: admin/ajax/hide-notice.php:46 admin/ajax/restore-notice.php:40
|
30 |
+
msgid "Success"
|
31 |
+
msgstr "Успешно"
|
32 |
+
|
33 |
+
#: admin/boot.php:29 admin/options.php:32 admin/pages/notices.php:33
|
34 |
+
msgid "Hide admin notices"
|
35 |
+
msgstr "Скрыть уведомления"
|
36 |
+
|
37 |
+
#: admin/boot.php:35 admin/options.php:72
|
38 |
+
msgid "Enable hidden notices in adminbar"
|
39 |
+
msgstr "Включить уведомления в админбаре"
|
40 |
+
|
41 |
+
#: admin/boot.php:51
|
42 |
+
msgid "Get ultimate plugin free"
|
43 |
+
msgstr "Получите полную версию плагина бесплатно"
|
44 |
+
|
45 |
+
#: admin/options.php:24
|
46 |
+
msgid "Admin notifications, Update nags"
|
47 |
+
msgstr "Уведомления администратора, уведомления об обновлении Wordpress"
|
48 |
+
|
49 |
+
#: admin/options.php:24
|
50 |
+
msgid ""
|
51 |
+
"Do you know the situation, when some plugin offers you to update to premium, "
|
52 |
+
"to collect technical data and shows many annoying notices? You are close "
|
53 |
+
"these notices every now and again but they newly appears and interfere your "
|
54 |
+
"work with WordPress. Even worse, some plugin’s authors delete “close” button "
|
55 |
+
"from notices and they shows in your admin panel forever."
|
56 |
+
msgstr ""
|
57 |
+
"Вам знакома ситуация, когда какой-то плагин просит вас обновиться до премиум-"
|
58 |
+
"версии, получить права на сбор данных о вашем сайте и создает много "
|
59 |
+
"раздражающих уведомлений? Вы закрываете эти уведомления раз за разом, но они "
|
60 |
+
"вновь появляются и мешают вашей работе с WordPress. Хуже того, некоторые "
|
61 |
+
"авторы и вовсе удаляют кнопку “закрыть” из уведомлений, и они висят в шапке "
|
62 |
+
"вашей панели администратора целую вечность."
|
63 |
+
|
64 |
+
#: admin/options.php:36
|
65 |
+
msgid "All notices"
|
66 |
+
msgstr "Все уведомления"
|
67 |
+
|
68 |
+
#: admin/options.php:37
|
69 |
+
msgid "Hide all notices globally."
|
70 |
+
msgstr "Скрыть все уведомления глобально."
|
71 |
+
|
72 |
+
#: admin/options.php:41
|
73 |
+
msgid "Only selected"
|
74 |
+
msgstr "Только выбранные"
|
75 |
+
|
76 |
+
#: admin/options.php:42
|
77 |
+
msgid ""
|
78 |
+
"Hide selected notices only. You will see the link \"Hide notification forever"
|
79 |
+
"\" in each notice. Push it and they will not bother you anymore."
|
80 |
+
msgstr ""
|
81 |
+
"Скрывать только выбранные уведомления. В каждом уведомлении вы увидите "
|
82 |
+
"ссылку \"Скрыть уведомление навсегда\". Нажмите на неё и уведомление будет "
|
83 |
+
"скрыто навсегда и перестанет вас беспокоить."
|
84 |
+
|
85 |
+
#: admin/options.php:46
|
86 |
+
msgid "Don't nide"
|
87 |
+
msgstr "Не скрывать"
|
88 |
+
|
89 |
+
#: admin/options.php:47
|
90 |
+
msgid ""
|
91 |
+
"Do not hide notices and do not show “Hide notification forever” link for "
|
92 |
+
"admin."
|
93 |
+
msgstr ""
|
94 |
+
"Не скрывать уведомления и не показывать ссылку \"Скрыть уведомление навсегда"
|
95 |
+
"\" в уведомлениях администратора."
|
96 |
+
|
97 |
+
#: admin/options.php:51
|
98 |
+
msgid ""
|
99 |
+
"Some plugins shows notifications about premium version, data collecting or "
|
100 |
+
"promote their services. Even if you push close button (that sometimes are "
|
101 |
+
"impossible), notices are shows again in some time. This option allows you to "
|
102 |
+
"control notices. Hide them all or each individually. Some plugins shows "
|
103 |
+
"notifications about premium version, data collecting or promote their "
|
104 |
+
"services. Even if you push close button (that sometimes are impossible), "
|
105 |
+
"notices are shows again in some time. This option allows you to control "
|
106 |
+
"notices. Hide them all or each individually."
|
107 |
+
msgstr ""
|
108 |
+
"Зачастую, плагины отображают уведомления о возможности перехода на премиум "
|
109 |
+
"версию, просят разрешение на сбор данных, рекламируют свои услуги. Даже если "
|
110 |
+
"вы нажмете кнопку закрыть (что не всегда возможно), уведомления всё равно "
|
111 |
+
"отобразятся через какое-то время. С помощью этой настройки, вы можете "
|
112 |
+
"контролировать эти уведомления. Скройте их все сразу или каждое по "
|
113 |
+
"отдельности."
|
114 |
+
|
115 |
+
#: admin/options.php:74
|
116 |
+
msgid ""
|
117 |
+
"By default, the plugin hides all notices, which you specified. If you enable "
|
118 |
+
"this option, the plugin will collect all hidden notices and show them into "
|
119 |
+
"the top admin toolbar. It will not disturb you but will allow to look "
|
120 |
+
"notices at your convenience."
|
121 |
+
msgstr ""
|
122 |
+
"По умолчанию, плагин полностью скрывает отключенные вами уведомления. Если "
|
123 |
+
"включить эту опцию, то плагин будет собирать все скрытые вами уведомления и "
|
124 |
+
"выводить в верхней панели администратора. Это не будет вас раздражать, но и "
|
125 |
+
"позволит просматривать уведомления, когда вам это удобно."
|
126 |
+
|
127 |
+
#: admin/options.php:138
|
128 |
+
msgid "Push reset hidden notices if you need to show hidden notices again."
|
129 |
+
msgstr "Нажмите кнопку \\\"Сбросить скрытые уведомления\\\""
|
130 |
+
|
131 |
+
#: admin/options.php:147
|
132 |
+
#, php-format
|
133 |
+
msgid "Reset hidden notices (%s)"
|
134 |
+
msgstr "Сбросить скрытые уведомления (%s)"
|
135 |
+
|
136 |
+
#: admin/options.php:149 admin/pages/notices.php:67
|
137 |
+
msgid "Hidden notices are successfully reset, now you can see them again!"
|
138 |
+
msgstr ""
|
139 |
+
"Скрытые уведомления успешно восстановлены, теперь вы можете снова видеть их!"
|
140 |
+
|
141 |
+
#: admin/pages/notices.php:49
|
142 |
+
msgid "Notices"
|
143 |
+
msgstr "Уведомления"
|
144 |
+
|
145 |
+
#: admin/pages/notices.php:50
|
146 |
+
msgid "General"
|
147 |
+
msgstr "Основные"
|
148 |
+
|
149 |
+
#: disable-admin-notices.php:22
|
150 |
+
msgid ""
|
151 |
+
"We found that you have the \"Clearfy - disable unused features\" plugin "
|
152 |
+
"installed, this plugin already has disable comments functions, so you can "
|
153 |
+
"deactivate plugin \"Disable admin notices\"!"
|
154 |
+
msgstr ""
|
155 |
+
"Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
|
156 |
+
"неиспользуемые функции», этот плагин уже имеет функции отключения "
|
157 |
+
"комментариев, поэтому вы можете отключить плагин «Скрыть уведомления "
|
158 |
+
"администратора»!"
|
159 |
+
|
160 |
+
#: disable-admin-notices.php:79
|
161 |
+
msgid "Webcraftic disable admin notices"
|
162 |
+
msgstr "Webcraftic отключить уведомления администратора"
|
163 |
+
|
164 |
+
#: includes/classes/class.configurate-notices.php:79
|
165 |
+
#, php-format
|
166 |
+
msgid "Notifications %s"
|
167 |
+
msgstr "Уведомления %s"
|
168 |
+
|
169 |
+
#: includes/classes/class.configurate-notices.php:88
|
170 |
+
msgid "Restore notice"
|
171 |
+
msgstr "Восстановить уведомление"
|
172 |
+
|
173 |
+
#: includes/classes/class.configurate-notices.php:263
|
174 |
+
msgid "Hide notification forever"
|
175 |
+
msgstr "Скрыть уведомление навсегда"
|
176 |
+
|
177 |
+
#~ msgid "Hidden notices"
|
178 |
+
#~ msgstr "Скрытые уведомления"
|
179 |
+
|
180 |
+
#~ msgid "Disable comments on the entire site"
|
181 |
+
#~ msgstr "Отключить комментарии на всем сайте"
|
182 |
+
|
183 |
+
#~ msgid "Select post types"
|
184 |
+
#~ msgstr "Выбрать тип записи"
|
185 |
+
|
186 |
+
#~ msgid "Replace external links in comments on the JavaScript code"
|
187 |
+
#~ msgstr "Заменить внешние ссылки в комментариях на JavaScript код"
|
188 |
+
|
189 |
+
#~ msgid "Replace external links from comment authors on the JavaScript code"
|
190 |
+
#~ msgstr "Заменить внешние ссылки от авторов комментариев на код JavaScript"
|
191 |
+
|
192 |
+
#~ msgid "Disable X-Pingback"
|
193 |
+
#~ msgstr "Убрать ссылку на X-Pingback и возможность спамить pingback-ами"
|
194 |
+
|
195 |
+
#~ msgid "Remove field \"site\" in comment form"
|
196 |
+
#~ msgstr "Удаляет поле \"Сайт\" в форме комментариев"
|
197 |
+
|
198 |
+
#~ msgid "Disable all comments"
|
199 |
+
#~ msgstr "Отключить все комментарии"
|
200 |
+
|
201 |
+
#~ msgid "Comments"
|
202 |
+
#~ msgstr "Комментарии"
|
203 |
+
|
204 |
+
#~ msgid ""
|
205 |
+
#~ "Hide selected notices only. You will see the link \"Hide notification "
|
206 |
+
#~ "forever\" in each notice. Push it and they will not bother you anymore. "
|
207 |
+
#~ "Push <a href=\"%s\">reset hidden notices (%d)</a> if you need to show "
|
208 |
+
#~ "hidden notices again."
|
209 |
+
#~ msgstr ""
|
210 |
+
#~ "Скрывать только выбранные уведомления. В каждом уведомлении вы увидите "
|
211 |
+
#~ "ссылку \"Скрыть уведомление навсегда\". Нажмите на неё и уведомление "
|
212 |
+
#~ "будет скрыто навсегда и перестанет вас беспокоить. Нажмите <a href=\"%s"
|
213 |
+
#~ "\">сбросить скрытые уведомления (%d)</a>, если вам нужно восстановить "
|
214 |
+
#~ "показ скрытых ранее уведомлений."
|
215 |
+
|
216 |
+
#~ msgid "Webcraftic hide admin notices"
|
217 |
+
#~ msgstr "Webcraftic скрыть уведомления администратора"
|
218 |
+
|
219 |
+
#~ msgid "Comments tweaks"
|
220 |
+
#~ msgstr "Инструменты комментариев"
|
221 |
+
|
222 |
+
#~ msgid "All comments have been deleted."
|
223 |
+
#~ msgstr "Все комментарии были удалены."
|
224 |
+
|
225 |
+
#~ msgid ""
|
226 |
+
#~ "An error occurred while trying to delete comments. Internal error "
|
227 |
+
#~ "occured. Please try again later."
|
228 |
+
#~ msgstr ""
|
229 |
+
#~ "При попытке удалить комментарии произошла ошибка. Пожалуйста, повторите "
|
230 |
+
#~ "попытку позже."
|
231 |
+
|
232 |
+
#~ msgid "You are not allowed to view this page."
|
233 |
+
#~ msgstr "Вам не разрешено просматривать эту страницу."
|
234 |
+
|
235 |
+
#~ msgid "You do not have the selected post types!"
|
236 |
+
#~ msgstr "Вы не выбрали еще ни одного типа записей!"
|
237 |
+
|
238 |
+
#~ msgid "No comments available for deletion."
|
239 |
+
#~ msgstr "Нет комментариев для удаления."
|
240 |
+
|
241 |
+
#~ msgid ""
|
242 |
+
#~ "Are you sure that you desire to delete all comments from the database?"
|
243 |
+
#~ msgstr "Вы уверены, что хотите удалить все комментарии из базы данных?"
|
244 |
+
|
245 |
+
#~ msgid ""
|
246 |
+
#~ "Deleting comments will remove existing comment entries in the database "
|
247 |
+
#~ "and cannot be reverted without a database backup."
|
248 |
+
#~ msgstr ""
|
249 |
+
#~ "При удалении комментариев удаляются существующие записи комментариев в "
|
250 |
+
#~ "базе данных, они не могут быть восстановлены без резервного копирования "
|
251 |
+
#~ "базы данных."
|
252 |
+
|
253 |
+
#~ msgid "You have %s comments"
|
254 |
+
#~ msgstr "У вас есть %s комментариев"
|
255 |
+
|
256 |
+
#~ msgid "Yes, I'm sure"
|
257 |
+
#~ msgstr "Да, я уверен"
|
258 |
+
|
259 |
+
#~ msgid "No, return back"
|
260 |
+
#~ msgstr "Нет, вернуться"
|
261 |
+
|
262 |
+
#~ msgid ""
|
263 |
+
#~ "Are you sure that you desire to delete all comments from the database for "
|
264 |
+
#~ "the selected post types (%s)?"
|
265 |
+
#~ msgstr ""
|
266 |
+
#~ "Вы уверены, что хотите удалить все комментарии из базы данных для "
|
267 |
+
#~ "выбранных типов записей (%s)?"
|
268 |
+
|
269 |
+
#~ msgid "Disable comments"
|
270 |
+
#~ msgstr "Отключить комментарии"
|
271 |
+
|
272 |
+
#~ msgid "Not disable"
|
273 |
+
#~ msgstr "Не отключать"
|
274 |
+
|
275 |
+
#~ msgid "Everywhere"
|
276 |
+
#~ msgstr "Повсюду"
|
277 |
+
|
278 |
+
#~ msgid ""
|
279 |
+
#~ "You can delete all comments in the database by clicking on this link (<a "
|
280 |
+
#~ "href=\"%s\">cleaning comments in database</a>)."
|
281 |
+
#~ msgstr ""
|
282 |
+
#~ "Вы можете удалить все комментарии в базе данных, нажав на эту ссылку ( <a "
|
283 |
+
#~ "href=\"%s\">очистка комментариев в базе данных</a> )."
|
284 |
+
|
285 |
+
#~ msgid "On certain post types"
|
286 |
+
#~ msgstr "Только выбранные типы записей"
|
287 |
+
|
288 |
+
#~ msgid ""
|
289 |
+
#~ "You can delete all comments for the selected post types. Select the post "
|
290 |
+
#~ "types below and save the settings. After that, click the link (<a href="
|
291 |
+
#~ "\"%s\">delete all comments for the selected post types in database</a>)."
|
292 |
+
#~ msgstr ""
|
293 |
+
#~ "Вы можете удалить все комментарии для выбранных типов записей. Выберите "
|
294 |
+
#~ "типы записей ниже и сохраните настройки. После этого нажмите ссылку ( <a "
|
295 |
+
#~ "href=\"%s\">удалите все комментарии для выбранных типов записей в базе "
|
296 |
+
#~ "данных</a> )."
|
297 |
+
|
298 |
+
#~ msgid ""
|
299 |
+
#~ "Everywhere - Warning: This option is global and will affect your entire "
|
300 |
+
#~ "site. Use it only if you want to disable comments everywhere. A complete "
|
301 |
+
#~ "description of what this option does is available here"
|
302 |
+
#~ msgstr ""
|
303 |
+
#~ "Повсюду - предупреждение: этот параметр является глобальным и повлияет на "
|
304 |
+
#~ "весь ваш сайт. Используйте его только в том случае, если вы хотите "
|
305 |
+
#~ "отключить комментарии повсюду. "
|
306 |
+
|
307 |
+
#~ msgid ""
|
308 |
+
#~ "On certain post types - Disabling comments will also disable trackbacks "
|
309 |
+
#~ "and pingbacks. All comment-related fields will also be hidden from the "
|
310 |
+
#~ "edit/quick-edit screens of the affected posts. These settings cannot be "
|
311 |
+
#~ "overridden for individual posts."
|
312 |
+
#~ msgstr ""
|
313 |
+
#~ "В некоторых типах сообщений - отключение комментариев также отключает "
|
314 |
+
#~ "трекбэки и pingback. Все поля, связанные с комментариями, также будут "
|
315 |
+
#~ "скрыты от экранов редактирования / быстрого редактирования затронутых "
|
316 |
+
#~ "сообщений. Эти настройки нельзя переопределять для отдельных сообщений."
|
317 |
+
|
318 |
+
#~ msgid "Select the post types for which comments will be disabled"
|
319 |
+
#~ msgstr "Выберите типы записей, для которых комментарии будут отключены."
|
320 |
+
|
321 |
+
#~ msgid ""
|
322 |
+
#~ "Tired of spam in the comments? Do visitors leave \"blank\" comments for "
|
323 |
+
#~ "the sake of a link to their site?"
|
324 |
+
#~ msgstr ""
|
325 |
+
#~ "Надоел спам в комментариях? Посетители оставляют «пустые» комментарии "
|
326 |
+
#~ "ради ссылки на свой сайт?"
|
327 |
+
|
328 |
+
#~ msgid "Removes the \"Site\" field from the comment form."
|
329 |
+
#~ msgstr "Убирает поле «Сайт» из формы комментирования."
|
330 |
+
|
331 |
+
#~ msgid ""
|
332 |
+
#~ "Works with the standard comment form, if the form is manually written in "
|
333 |
+
#~ "your theme-it probably will not work!"
|
334 |
+
#~ msgstr ""
|
335 |
+
#~ "Работает со стандартной формой комментирования, если в Вашей теме форма "
|
336 |
+
#~ "прописана вручную - скорей всего не сработает!"
|
337 |
+
|
338 |
+
#~ msgid "Recommended"
|
339 |
+
#~ msgstr "Рекомендовано"
|
340 |
+
|
341 |
+
#~ msgid ""
|
342 |
+
#~ "Superfluous external links from comments, which can be typed from a dozen "
|
343 |
+
#~ "and more for one article, do not bring anything good for promotion."
|
344 |
+
#~ msgstr ""
|
345 |
+
#~ "Внешние ссылки в комментариях, которых может быть десятки или больше на "
|
346 |
+
#~ "одной странице, могут ухудшить продвижение вашего сайта."
|
347 |
+
|
348 |
+
#~ msgid "Replaces the links of this kind of %s, on links of this kind %s"
|
349 |
+
#~ msgstr ""
|
350 |
+
#~ "Заменяет ссылки %s, на span тег и устанавливает переход с помощью "
|
351 |
+
#~ "JavaScript %s"
|
352 |
+
|
353 |
+
#~ msgid ""
|
354 |
+
#~ "Up to 90 percent of comments in the blog can be left for the sake of an "
|
355 |
+
#~ "external link. Even nofollow from page weight loss here does not help."
|
356 |
+
#~ msgstr ""
|
357 |
+
#~ "До 90 процентов комментариев в блоге оставляют ради внешней ссылки. Не "
|
358 |
+
#~ "поможет даже nofollow от потери веса страницы."
|
359 |
+
|
360 |
+
#~ msgid ""
|
361 |
+
#~ "Replaces the links of the authors of comments on the JavaScript code, it "
|
362 |
+
#~ "is impossible to distinguish it from usual links."
|
363 |
+
#~ msgstr ""
|
364 |
+
#~ "Заменяет ссылки авторов комментариев на JavaScript код, его невозможно "
|
365 |
+
#~ "отличить от обычной ссылки."
|
366 |
+
|
367 |
+
#~ msgid "In some Wordpress topics this may not work."
|
368 |
+
#~ msgstr "В некоторых темах Wordpress это может не сработать."
|
369 |
+
|
370 |
+
#~ msgid "Disable XML-RPC"
|
371 |
+
#~ msgstr "Отключить XML-RPC"
|
372 |
+
|
373 |
+
#~ msgid ""
|
374 |
+
#~ "A pingback is basically an automated comment that gets created when "
|
375 |
+
#~ "another blog links to you. A self-pingback is created when you link to an "
|
376 |
+
#~ "article within your own blog. Pingbacks are essentially nothing more than "
|
377 |
+
#~ "spam and simply waste resources."
|
378 |
+
#~ msgstr ""
|
379 |
+
#~ "Pingback по-существу автоматизированных комментарий, который создается, "
|
380 |
+
#~ "когда другой блог ссылается на вас. Self-pingback создается, когда вы "
|
381 |
+
#~ "оставили ссылку на статью в своем блоге. Pingbacks по существу являются "
|
382 |
+
#~ "не более чем спам и пустая трата ресурсов вашего сайта."
|
383 |
+
|
384 |
+
#~ msgid "Removes the server responses a reference to the xmlrpc file."
|
385 |
+
#~ msgstr "Удаляет ссылку на xmlrpc-файл и ответ сервера."
|
386 |
+
|
387 |
+
#~ msgid ""
|
388 |
+
#~ "We found that you have the \"Clearfy - disable unused features\" plugin "
|
389 |
+
#~ "installed, this plugin already has disable comments functions, so you can "
|
390 |
+
#~ "deactivate plugin \"Comments tweaks\"!"
|
391 |
+
#~ msgstr ""
|
392 |
+
#~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
|
393 |
+
#~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
|
394 |
+
#~ "комментариев, поэтому вы можете отключить плагин «Инструменты "
|
395 |
+
#~ "комментариев»!"
|
396 |
+
|
397 |
+
#~ msgid "Webcraftic comments tweaks"
|
398 |
+
#~ msgstr "Webcraftic инструменты комментариев"
|
399 |
+
|
400 |
+
#~ msgid "Comments are closed."
|
401 |
+
#~ msgstr "Комментарии Закрыты."
|
402 |
+
|
403 |
+
#~ msgid ""
|
404 |
+
#~ "Note: The <em>%s</em> plugin is currently active, and comments are "
|
405 |
+
#~ "completely disabled on: %s. Many of the settings below will not be "
|
406 |
+
#~ "applicable for those post types."
|
407 |
+
#~ msgstr ""
|
408 |
+
#~ "Примечание. Плагин <em>%s</em> в настоящий момент активен, и комментарии "
|
409 |
+
#~ "полностью отключены: %s. Многие из приведенных ниже настроек не будут "
|
410 |
+
#~ "применяться для этих типов сообщений."
|
411 |
+
|
412 |
+
#~ msgid ""
|
413 |
+
#~ "We found that you have the \"Clearfy - disable unused features\" plugin "
|
414 |
+
#~ "installed, this plugin already has disable comments functions, so you can "
|
415 |
+
#~ "deactivate plugin \"Disable comments\"!"
|
416 |
+
#~ msgstr ""
|
417 |
+
#~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
|
418 |
+
#~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
|
419 |
+
#~ "комментариев, поэтому вы можете отключить плагин «Отключить комментарии»!"
|
420 |
+
|
421 |
+
#~ msgid "Webcraftic Disable comments"
|
422 |
+
#~ msgstr "Webcraftic отключить комментарии"
|
languages/index.php
ADDED
File without changes
|
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-400 .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-400 .factory-accordion>h3{border-bottom:1px solid #DDD;cursor:pointer;padding:8px 15px;margin:0}.factory-bootstrap-400 .factory-accordion>div{display:none;margin:0;border-bottom:1px solid #DDD}.factory-bootstrap-400 .factory-accordion-item{display:none}.factory-bootstrap-400 .inner-factory-accordion-item{padding:10px 0}.factory-bootstrap-400 .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-400 .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-400 .btn-primary:focus,.factory-bootstrap-400 .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-400 .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-400 .btn-primary:disabled,.factory-bootstrap-400 .btn-primary[disabled]{color:#d1cdc7!important;background:#db9825!important;border-color:#bd831f!important;text-shadow:none!important}.factory-bootstrap-400 .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-400 .pagination>.active>a,.factory-bootstrap-400 .pagination>.active>a:focus,.factory-bootstrap-400 .pagination>.active>a:hover,.factory-bootstrap-400 .pagination>.active>span,.factory-bootstrap-400 .pagination>.active>span:focus,.factory-bootstrap-400 .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-400 .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-400 .btn-primary:focus,.factory-bootstrap-400 .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-400 .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-400 .btn-primary:disabled,.factory-bootstrap-400 .btn-primary[disabled]{color:#d1cbc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.factory-bootstrap-400 .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-400 .pagination>.active>a,.factory-bootstrap-400 .pagination>.active>a:focus,.factory-bootstrap-400 .pagination>.active>a:hover,.factory-bootstrap-400 .pagination>.active>span,.factory-bootstrap-400 .pagination>.active>span:focus,.factory-bootstrap-400 .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-400 article,.factory-bootstrap-400 aside,.factory-bootstrap-400 details,.factory-bootstrap-400 figcaption,.factory-bootstrap-400 figure,.factory-bootstrap-400 footer,.factory-bootstrap-400 header,.factory-bootstrap-400 hgroup,.factory-bootstrap-400 main,.factory-bootstrap-400 nav,.factory-bootstrap-400 section,.factory-bootstrap-400 summary{display:block}.factory-bootstrap-400 audio,.factory-bootstrap-400 canvas,.factory-bootstrap-400 video{display:inline-block}.factory-bootstrap-400 audio:not([controls]){display:none;height:0}.factory-bootstrap-400 [hidden],.factory-bootstrap-400 template{display:none}.factory-bootstrap-400 body{margin:0}.factory-bootstrap-400 a{background:0 0}.factory-bootstrap-400 a:focus{outline:thin dotted}.factory-bootstrap-400 a:active,.factory-bootstrap-400 a:hover{outline:0}.factory-bootstrap-400 h1{margin:.67em 0}.factory-bootstrap-400 b,.factory-bootstrap-400 strong{font-weight:700}.factory-bootstrap-400 dfn{font-style:italic}.factory-bootstrap-400 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-400 mark{color:#000;background:#ff0}.factory-bootstrap-400 code,.factory-bootstrap-400 kbd,.factory-bootstrap-400 pre,.factory-bootstrap-400 samp{font-size:1em}.factory-bootstrap-400 pre{white-space:pre-wrap}.factory-bootstrap-400 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-400 sub,.factory-bootstrap-400 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-400 sup{top:-.5em}.factory-bootstrap-400 sub{bottom:-.25em}.factory-bootstrap-400 img{border:0}.factory-bootstrap-400 svg:not(:root){overflow:hidden}.factory-bootstrap-400 figure{margin:0}.factory-bootstrap-400 button,.factory-bootstrap-400 input,.factory-bootstrap-400 select,.factory-bootstrap-400 textarea{margin:0}.factory-bootstrap-400 button,.factory-bootstrap-400 select{text-transform:none}.factory-bootstrap-400 select{padding-right:4px!important}.factory-bootstrap-400 button,.factory-bootstrap-400 input[type=reset],.factory-bootstrap-400 input[type=submit],html .factory-bootstrap-400 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-400 button[disabled],html .factory-bootstrap-400 input[disabled]{cursor:default}.factory-bootstrap-400 input[type=checkbox],.factory-bootstrap-400 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-400 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-400 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-400 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-400 button::-moz-focus-inner,.factory-bootstrap-400 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-400 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-400 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-400 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-400 a,.factory-bootstrap-400 a:visited{text-decoration:underline}.factory-bootstrap-400 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-400 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-400 a[href^="javascript:"]:after,.factory-bootstrap-400 a[href^="#"]:after{content:""}.factory-bootstrap-400 blockquote,.factory-bootstrap-400 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-400 thead{display:table-header-group}.factory-bootstrap-400 img,.factory-bootstrap-400 tr{page-break-inside:avoid}.factory-bootstrap-400 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-400 h2,.factory-bootstrap-400 h3,.factory-bootstrap-400 p{orphans:3;widows:3}.factory-bootstrap-400 h2,.factory-bootstrap-400 h3{page-break-after:avoid}.factory-bootstrap-400 select{background:#fff!important}.factory-bootstrap-400 .navbar{display:none}.factory-bootstrap-400 .table td,.factory-bootstrap-400 .table th{background-color:#fff!important}.factory-bootstrap-400 .btn>.caret,.factory-bootstrap-400 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-400 .label{border:1px solid #000}.factory-bootstrap-400 .table{border-collapse:collapse!important}.factory-bootstrap-400 .table-bordered td,.factory-bootstrap-400 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-400 *,.factory-bootstrap-400 :after,.factory-bootstrap-400 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-400{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-400 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-400 button,.factory-bootstrap-400 input,.factory-bootstrap-400 select,.factory-bootstrap-400 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-400 img{vertical-align:middle}.factory-bootstrap-400 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-400 .img-rounded{border-radius:6px}.factory-bootstrap-400 .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-400 .img-circle{border-radius:50%}.factory-bootstrap-400 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-400 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-400 .h1,.factory-bootstrap-400 .h2,.factory-bootstrap-400 .h3,.factory-bootstrap-400 .h4,.factory-bootstrap-400 .h5,.factory-bootstrap-400 .h6,.factory-bootstrap-400 h1,.factory-bootstrap-400 h2,.factory-bootstrap-400 h3,.factory-bootstrap-400 h4,.factory-bootstrap-400 h5,.factory-bootstrap-400 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-400 .h1 .small,.factory-bootstrap-400 .h1 small,.factory-bootstrap-400 .h2 .small,.factory-bootstrap-400 .h2 small,.factory-bootstrap-400 .h3 .small,.factory-bootstrap-400 .h3 small,.factory-bootstrap-400 .h4 .small,.factory-bootstrap-400 .h4 small,.factory-bootstrap-400 .h5 .small,.factory-bootstrap-400 .h5 small,.factory-bootstrap-400 .h6 .small,.factory-bootstrap-400 .h6 small,.factory-bootstrap-400 h1 .small,.factory-bootstrap-400 h1 small,.factory-bootstrap-400 h2 .small,.factory-bootstrap-400 h2 small,.factory-bootstrap-400 h3 .small,.factory-bootstrap-400 h3 small,.factory-bootstrap-400 h4 .small,.factory-bootstrap-400 h4 small,.factory-bootstrap-400 h5 .small,.factory-bootstrap-400 h5 small,.factory-bootstrap-400 h6 .small,.factory-bootstrap-400 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-400 h1,.factory-bootstrap-400 h2,.factory-bootstrap-400 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-400 h1 .small,.factory-bootstrap-400 h1 small,.factory-bootstrap-400 h2 .small,.factory-bootstrap-400 h2 small,.factory-bootstrap-400 h3 .small,.factory-bootstrap-400 h3 small{font-size:65%}.factory-bootstrap-400 h4,.factory-bootstrap-400 h5,.factory-bootstrap-400 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-400 h4 .small,.factory-bootstrap-400 h4 small,.factory-bootstrap-400 h5 .small,.factory-bootstrap-400 h5 small,.factory-bootstrap-400 h6 .small,.factory-bootstrap-400 h6 small{font-size:75%}.factory-bootstrap-400 .h1,.factory-bootstrap-400 h1{font-size:36px}.factory-bootstrap-400 .h2,.factory-bootstrap-400 h2{font-size:30px}.factory-bootstrap-400 .h3,.factory-bootstrap-400 h3{font-size:24px}.factory-bootstrap-400 .h4,.factory-bootstrap-400 h4{font-size:18px}.factory-bootstrap-400 .h5,.factory-bootstrap-400 h5{font-size:14px}.factory-bootstrap-400 .h6,.factory-bootstrap-400 h6{font-size:12px}.factory-bootstrap-400 p{margin:0 0 10px}.factory-bootstrap-400 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-400 .small,.factory-bootstrap-400 small{font-size:85%}.factory-bootstrap-400 cite{font-style:normal}.factory-bootstrap-400 .text-muted{color:#999}.factory-bootstrap-400 .text-primary{color:#428bca}.factory-bootstrap-400 .text-primary:hover{color:#3071a9}.factory-bootstrap-400 .text-warning{color:#8a6d3b}.factory-bootstrap-400 .text-warning:hover{color:#66512c}.factory-bootstrap-400 .text-danger{color:#a94442}.factory-bootstrap-400 .text-danger:hover{color:#843534}.factory-bootstrap-400 .text-success{color:#3c763d}.factory-bootstrap-400 .text-success:hover{color:#2b542c}.factory-bootstrap-400 .text-info{color:#31708f}.factory-bootstrap-400 .text-info:hover{color:#245269}.factory-bootstrap-400 .text-left{text-align:left}.factory-bootstrap-400 .text-right{text-align:right}.factory-bootstrap-400 .text-center{text-align:center}.factory-bootstrap-400 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-400 ol,.factory-bootstrap-400 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-400 ol ol,.factory-bootstrap-400 ol ul,.factory-bootstrap-400 ul ol,.factory-bootstrap-400 ul ul{margin-bottom:0}.factory-bootstrap-400 .list-inline,.factory-bootstrap-400 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-400 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-400 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-400 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-400 dd,.factory-bootstrap-400 dt{line-height:1.428571429}.factory-bootstrap-400 dt{font-weight:700}.factory-bootstrap-400 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-400 abbr[data-original-title],.factory-bootstrap-400 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-400 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-400 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-400 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-400 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-400 blockquote .small,.factory-bootstrap-400 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-400 blockquote .small:before,.factory-bootstrap-400 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-400 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-400 blockquote.pull-right .small,.factory-bootstrap-400 blockquote.pull-right p,.factory-bootstrap-400 blockquote.pull-right small{text-align:right}.factory-bootstrap-400 blockquote.pull-right .small:before,.factory-bootstrap-400 blockquote.pull-right small:before{content:''}.factory-bootstrap-400 blockquote.pull-right .small:after,.factory-bootstrap-400 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-400 blockquote:after,.factory-bootstrap-400 blockquote:before{content:""}.factory-bootstrap-400 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-400 code,.factory-bootstrap-400 kbd,.factory-bootstrap-400 pre,.factory-bootstrap-400 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-400 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-400 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-400 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-400 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-400 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-400 .container:after,.factory-bootstrap-400 .container:before{display:table;content:" "}.factory-bootstrap-400 .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-400 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-400 .row:after,.factory-bootstrap-400 .row:before{display:table;content:" "}.factory-bootstrap-400 .row:after{clear:both}.factory-bootstrap-400 .col-lg-1,.factory-bootstrap-400 .col-lg-10,.factory-bootstrap-400 .col-lg-11,.factory-bootstrap-400 .col-lg-12,.factory-bootstrap-400 .col-lg-2,.factory-bootstrap-400 .col-lg-3,.factory-bootstrap-400 .col-lg-4,.factory-bootstrap-400 .col-lg-5,.factory-bootstrap-400 .col-lg-6,.factory-bootstrap-400 .col-lg-7,.factory-bootstrap-400 .col-lg-8,.factory-bootstrap-400 .col-lg-9,.factory-bootstrap-400 .col-md-1,.factory-bootstrap-400 .col-md-10,.factory-bootstrap-400 .col-md-11,.factory-bootstrap-400 .col-md-12,.factory-bootstrap-400 .col-md-2,.factory-bootstrap-400 .col-md-3,.factory-bootstrap-400 .col-md-4,.factory-bootstrap-400 .col-md-5,.factory-bootstrap-400 .col-md-6,.factory-bootstrap-400 .col-md-7,.factory-bootstrap-400 .col-md-8,.factory-bootstrap-400 .col-md-9,.factory-bootstrap-400 .col-sm-1,.factory-bootstrap-400 .col-sm-10,.factory-bootstrap-400 .col-sm-11,.factory-bootstrap-400 .col-sm-12,.factory-bootstrap-400 .col-sm-2,.factory-bootstrap-400 .col-sm-3,.factory-bootstrap-400 .col-sm-4,.factory-bootstrap-400 .col-sm-5,.factory-bootstrap-400 .col-sm-6,.factory-bootstrap-400 .col-sm-7,.factory-bootstrap-400 .col-sm-8,.factory-bootstrap-400 .col-sm-9,.factory-bootstrap-400 .col-xs-1,.factory-bootstrap-400 .col-xs-10,.factory-bootstrap-400 .col-xs-11,.factory-bootstrap-400 .col-xs-12,.factory-bootstrap-400 .col-xs-2,.factory-bootstrap-400 .col-xs-3,.factory-bootstrap-400 .col-xs-4,.factory-bootstrap-400 .col-xs-5,.factory-bootstrap-400 .col-xs-6,.factory-bootstrap-400 .col-xs-7,.factory-bootstrap-400 .col-xs-8,.factory-bootstrap-400 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-400 .col-xs-1,.factory-bootstrap-400 .col-xs-10,.factory-bootstrap-400 .col-xs-11,.factory-bootstrap-400 .col-xs-12,.factory-bootstrap-400 .col-xs-2,.factory-bootstrap-400 .col-xs-3,.factory-bootstrap-400 .col-xs-4,.factory-bootstrap-400 .col-xs-5,.factory-bootstrap-400 .col-xs-6,.factory-bootstrap-400 .col-xs-7,.factory-bootstrap-400 .col-xs-8,.factory-bootstrap-400 .col-xs-9{float:left}.factory-bootstrap-400 .col-xs-12{width:100%}.factory-bootstrap-400 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-400 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-400 .col-xs-9{width:75%}.factory-bootstrap-400 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-400 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-400 .col-xs-6{width:50%}.factory-bootstrap-400 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-400 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-400 .col-xs-3{width:25%}.factory-bootstrap-400 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-400 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-400 .col-xs-pull-12{right:100%}.factory-bootstrap-400 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-400 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-400 .col-xs-pull-9{right:75%}.factory-bootstrap-400 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-400 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-400 .col-xs-pull-6{right:50%}.factory-bootstrap-400 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-400 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-400 .col-xs-pull-3{right:25%}.factory-bootstrap-400 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-400 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-400 .col-xs-pull-0{right:0}.factory-bootstrap-400 .col-xs-push-12{left:100%}.factory-bootstrap-400 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-400 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-400 .col-xs-push-9{left:75%}.factory-bootstrap-400 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-400 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-400 .col-xs-push-6{left:50%}.factory-bootstrap-400 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-400 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-400 .col-xs-push-3{left:25%}.factory-bootstrap-400 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-400 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-400 .col-xs-push-0{left:0}.factory-bootstrap-400 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-400 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-400 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-400 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-400 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-400 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-400 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-400 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-400 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-400 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-400 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-400 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-400 .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-400 table{max-width:100%;background-color:transparent}.factory-bootstrap-400 th{text-align:left}.factory-bootstrap-400 .table{width:100%;margin-bottom:20px}.factory-bootstrap-400 .table>tbody>tr>td,.factory-bootstrap-400 .table>tbody>tr>th,.factory-bootstrap-400 .table>tfoot>tr>td,.factory-bootstrap-400 .table>tfoot>tr>th,.factory-bootstrap-400 .table>thead>tr>td,.factory-bootstrap-400 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-400 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-400 .table>caption+thead>tr:first-child>td,.factory-bootstrap-400 .table>caption+thead>tr:first-child>th,.factory-bootstrap-400 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-400 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-400 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-400 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-400 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-400 .table .table{background-color:#fff}.factory-bootstrap-400 .table-condensed>tbody>tr>td,.factory-bootstrap-400 .table-condensed>tbody>tr>th,.factory-bootstrap-400 .table-condensed>tfoot>tr>td,.factory-bootstrap-400 .table-condensed>tfoot>tr>th,.factory-bootstrap-400 .table-condensed>thead>tr>td,.factory-bootstrap-400 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-400 .table-bordered,.factory-bootstrap-400 .table-bordered>tbody>tr>td,.factory-bootstrap-400 .table-bordered>tbody>tr>th,.factory-bootstrap-400 .table-bordered>tfoot>tr>td,.factory-bootstrap-400 .table-bordered>tfoot>tr>th,.factory-bootstrap-400 .table-bordered>thead>tr>td,.factory-bootstrap-400 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-400 .table-bordered>thead>tr>td,.factory-bootstrap-400 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-400 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-400 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-400 .table-hover>tbody>tr:hover>td,.factory-bootstrap-400 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-400 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-400 table td[class*=col-],.factory-bootstrap-400 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-400 .table>tbody>.active>td,.factory-bootstrap-400 .table>tbody>.active>th,.factory-bootstrap-400 .table>tbody>tr>.active,.factory-bootstrap-400 .table>tfoot>.active>td,.factory-bootstrap-400 .table>tfoot>.active>th,.factory-bootstrap-400 .table>tfoot>tr>.active,.factory-bootstrap-400 .table>thead>.active>td,.factory-bootstrap-400 .table>thead>.active>th,.factory-bootstrap-400 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-400 .table-hover>tbody>.active:hover>td,.factory-bootstrap-400 .table-hover>tbody>.active:hover>th,.factory-bootstrap-400 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-400 .table>tbody>.success>td,.factory-bootstrap-400 .table>tbody>.success>th,.factory-bootstrap-400 .table>tbody>tr>.success,.factory-bootstrap-400 .table>tfoot>.success>td,.factory-bootstrap-400 .table>tfoot>.success>th,.factory-bootstrap-400 .table>tfoot>tr>.success,.factory-bootstrap-400 .table>thead>.success>td,.factory-bootstrap-400 .table>thead>.success>th,.factory-bootstrap-400 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-400 .table-hover>tbody>.success:hover>td,.factory-bootstrap-400 .table-hover>tbody>.success:hover>th,.factory-bootstrap-400 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-400 .table>tbody>.danger>td,.factory-bootstrap-400 .table>tbody>.danger>th,.factory-bootstrap-400 .table>tbody>tr>.danger,.factory-bootstrap-400 .table>tfoot>.danger>td,.factory-bootstrap-400 .table>tfoot>.danger>th,.factory-bootstrap-400 .table>tfoot>tr>.danger,.factory-bootstrap-400 .table>thead>.danger>td,.factory-bootstrap-400 .table>thead>.danger>th,.factory-bootstrap-400 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-400 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-400 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-400 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-400 .table>tbody>.warning>td,.factory-bootstrap-400 .table>tbody>.warning>th,.factory-bootstrap-400 .table>tbody>tr>.warning,.factory-bootstrap-400 .table>tfoot>.warning>td,.factory-bootstrap-400 .table>tfoot>.warning>th,.factory-bootstrap-400 .table>tfoot>tr>.warning,.factory-bootstrap-400 .table>thead>.warning>td,.factory-bootstrap-400 .table>thead>.warning>th,.factory-bootstrap-400 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-400 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-400 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-400 .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-400 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-400 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-400 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-400 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-400 input[type=checkbox],.factory-bootstrap-400 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-400 input[type=file]{display:block}.factory-bootstrap-400 select[multiple],.factory-bootstrap-400 select[size]{height:auto}.factory-bootstrap-400 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-400 input[type=checkbox]:focus,.factory-bootstrap-400 input[type=file]:focus,.factory-bootstrap-400 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-400 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-400 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-400 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-400 .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-400 .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-400 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-400 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-400 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-400 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-400 .form-control[disabled],.factory-bootstrap-400 .form-control[readonly],.factory-bootstrap-400 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-400 textarea.form-control{height:auto}.factory-bootstrap-400 .form-group{margin-bottom:15px}.factory-bootstrap-400 .checkbox,.factory-bootstrap-400 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-400 .checkbox label,.factory-bootstrap-400 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-400 .checkbox input[type=checkbox],.factory-bootstrap-400 .checkbox-inline input[type=checkbox],.factory-bootstrap-400 .radio input[type=radio],.factory-bootstrap-400 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-400 .checkbox+.checkbox,.factory-bootstrap-400 .radio+.radio{margin-top:-5px}.factory-bootstrap-400 .checkbox-inline,.factory-bootstrap-400 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-400 .checkbox-inline+.checkbox-inline,.factory-bootstrap-400 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-400 .checkbox-inline[disabled],.factory-bootstrap-400 .checkbox[disabled],.factory-bootstrap-400 .radio-inline[disabled],.factory-bootstrap-400 .radio[disabled],.factory-bootstrap-400 fieldset[disabled] .checkbox,.factory-bootstrap-400 fieldset[disabled] .checkbox-inline,.factory-bootstrap-400 fieldset[disabled] .radio,.factory-bootstrap-400 fieldset[disabled] .radio-inline,.factory-bootstrap-400 fieldset[disabled] input[type=checkbox],.factory-bootstrap-400 fieldset[disabled] input[type=radio],.factory-bootstrap-400 input[type=checkbox][disabled],.factory-bootstrap-400 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-400 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-400 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-400 textarea.input-sm{height:auto}.factory-bootstrap-400 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-400 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-400 textarea.input-lg{height:auto}.factory-bootstrap-400 .has-warning .checkbox,.factory-bootstrap-400 .has-warning .checkbox-inline,.factory-bootstrap-400 .has-warning .control-label,.factory-bootstrap-400 .has-warning .help-block,.factory-bootstrap-400 .has-warning .radio,.factory-bootstrap-400 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-400 .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-400 .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-400 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-400 .has-error .checkbox,.factory-bootstrap-400 .has-error .checkbox-inline,.factory-bootstrap-400 .has-error .control-label,.factory-bootstrap-400 .has-error .help-block,.factory-bootstrap-400 .has-error .radio,.factory-bootstrap-400 .has-error .radio-inline{color:#a94442}.factory-bootstrap-400 .controls{display:block}.factory-bootstrap-400 .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-400 .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-400 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-400 .has-success .checkbox,.factory-bootstrap-400 .has-success .checkbox-inline,.factory-bootstrap-400 .has-success .control-label,.factory-bootstrap-400 .has-success .help-block,.factory-bootstrap-400 .has-success .radio,.factory-bootstrap-400 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-400 .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-400 .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-400 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-400 .form-control-static{margin-bottom:0}.factory-bootstrap-400 .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-400 .form-horizontal .checkbox,.factory-bootstrap-400 .form-horizontal .checkbox-inline,.factory-bootstrap-400 .form-horizontal .control-label,.factory-bootstrap-400 .form-horizontal .radio,.factory-bootstrap-400 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-400 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-400 .form-horizontal .checkbox,.factory-bootstrap-400 .form-horizontal .radio{min-height:27px}.factory-bootstrap-400 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-400 .form-horizontal .form-group:after,.factory-bootstrap-400 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-400 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-400 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-400 .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-400 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-400 .btn{text-decoration:none}.factory-bootstrap-400 .btn:focus,.factory-bootstrap-400 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-400 .btn.disabled,.factory-bootstrap-400 .btn[disabled],.factory-bootstrap-400 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-400 .btn-default.active,.factory-bootstrap-400 .btn-default:active,.factory-bootstrap-400 .btn-default:focus,.factory-bootstrap-400 .btn-default:hover,.factory-bootstrap-400 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-400 .btn-default.active,.factory-bootstrap-400 .btn-default:active,.factory-bootstrap-400 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-400 .btn-default.disabled,.factory-bootstrap-400 .btn-default.disabled.active,.factory-bootstrap-400 .btn-default.disabled:active,.factory-bootstrap-400 .btn-default.disabled:focus,.factory-bootstrap-400 .btn-default.disabled:hover,.factory-bootstrap-400 .btn-default[disabled],.factory-bootstrap-400 .btn-default[disabled].active,.factory-bootstrap-400 .btn-default[disabled]:active,.factory-bootstrap-400 .btn-default[disabled]:focus,.factory-bootstrap-400 .btn-default[disabled]:hover,.factory-bootstrap-400 fieldset[disabled] .btn-default,.factory-bootstrap-400 fieldset[disabled] .btn-default.active,.factory-bootstrap-400 fieldset[disabled] .btn-default:active,.factory-bootstrap-400 fieldset[disabled] .btn-default:focus,.factory-bootstrap-400 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-400 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-400 .btn-primary.active,.factory-bootstrap-400 .btn-primary:active,.factory-bootstrap-400 .btn-primary:focus,.factory-bootstrap-400 .btn-primary:hover,.factory-bootstrap-400 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-400 .btn-primary.active,.factory-bootstrap-400 .btn-primary:active,.factory-bootstrap-400 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-400 .btn-primary.disabled,.factory-bootstrap-400 .btn-primary.disabled.active,.factory-bootstrap-400 .btn-primary.disabled:active,.factory-bootstrap-400 .btn-primary.disabled:focus,.factory-bootstrap-400 .btn-primary.disabled:hover,.factory-bootstrap-400 .btn-primary[disabled],.factory-bootstrap-400 .btn-primary[disabled].active,.factory-bootstrap-400 .btn-primary[disabled]:active,.factory-bootstrap-400 .btn-primary[disabled]:focus,.factory-bootstrap-400 .btn-primary[disabled]:hover,.factory-bootstrap-400 fieldset[disabled] .btn-primary,.factory-bootstrap-400 fieldset[disabled] .btn-primary.active,.factory-bootstrap-400 fieldset[disabled] .btn-primary:active,.factory-bootstrap-400 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-400 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-400 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-400 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-400 .btn-warning.active,.factory-bootstrap-400 .btn-warning:active,.factory-bootstrap-400 .btn-warning:focus,.factory-bootstrap-400 .btn-warning:hover,.factory-bootstrap-400 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-400 .btn-warning.active,.factory-bootstrap-400 .btn-warning:active,.factory-bootstrap-400 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-400 .btn-warning.disabled,.factory-bootstrap-400 .btn-warning.disabled.active,.factory-bootstrap-400 .btn-warning.disabled:active,.factory-bootstrap-400 .btn-warning.disabled:focus,.factory-bootstrap-400 .btn-warning.disabled:hover,.factory-bootstrap-400 .btn-warning[disabled],.factory-bootstrap-400 .btn-warning[disabled].active,.factory-bootstrap-400 .btn-warning[disabled]:active,.factory-bootstrap-400 .btn-warning[disabled]:focus,.factory-bootstrap-400 .btn-warning[disabled]:hover,.factory-bootstrap-400 fieldset[disabled] .btn-warning,.factory-bootstrap-400 fieldset[disabled] .btn-warning.active,.factory-bootstrap-400 fieldset[disabled] .btn-warning:active,.factory-bootstrap-400 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-400 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-400 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-400 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-400 .btn-success.active,.factory-bootstrap-400 .btn-success:active,.factory-bootstrap-400 .btn-success:focus,.factory-bootstrap-400 .btn-success:hover,.factory-bootstrap-400 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-400 .btn-success.active,.factory-bootstrap-400 .btn-success:active,.factory-bootstrap-400 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-400 .btn-success.disabled,.factory-bootstrap-400 .btn-success.disabled.active,.factory-bootstrap-400 .btn-success.disabled:active,.factory-bootstrap-400 .btn-success.disabled:focus,.factory-bootstrap-400 .btn-success.disabled:hover,.factory-bootstrap-400 .btn-success[disabled],.factory-bootstrap-400 .btn-success[disabled].active,.factory-bootstrap-400 .btn-success[disabled]:active,.factory-bootstrap-400 .btn-success[disabled]:focus,.factory-bootstrap-400 .btn-success[disabled]:hover,.factory-bootstrap-400 fieldset[disabled] .btn-success,.factory-bootstrap-400 fieldset[disabled] .btn-success.active,.factory-bootstrap-400 fieldset[disabled] .btn-success:active,.factory-bootstrap-400 fieldset[disabled] .btn-success:focus,.factory-bootstrap-400 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-400 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-400 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-400 .btn-info.active,.factory-bootstrap-400 .btn-info:active,.factory-bootstrap-400 .btn-info:focus,.factory-bootstrap-400 .btn-info:hover,.factory-bootstrap-400 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-400 .btn-info.active,.factory-bootstrap-400 .btn-info:active,.factory-bootstrap-400 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-400 .btn-info.disabled,.factory-bootstrap-400 .btn-info.disabled.active,.factory-bootstrap-400 .btn-info.disabled:active,.factory-bootstrap-400 .btn-info.disabled:focus,.factory-bootstrap-400 .btn-info.disabled:hover,.factory-bootstrap-400 .btn-info[disabled],.factory-bootstrap-400 .btn-info[disabled].active,.factory-bootstrap-400 .btn-info[disabled]:active,.factory-bootstrap-400 .btn-info[disabled]:focus,.factory-bootstrap-400 .btn-info[disabled]:hover,.factory-bootstrap-400 fieldset[disabled] .btn-info,.factory-bootstrap-400 fieldset[disabled] .btn-info.active,.factory-bootstrap-400 fieldset[disabled] .btn-info:active,.factory-bootstrap-400 fieldset[disabled] .btn-info:focus,.factory-bootstrap-400 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-400 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-400 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-400 .btn-link,.factory-bootstrap-400 .btn-link:active,.factory-bootstrap-400 .btn-link[disabled],.factory-bootstrap-400 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-400 .btn-link,.factory-bootstrap-400 .btn-link:active,.factory-bootstrap-400 .btn-link:focus,.factory-bootstrap-400 .btn-link:hover{border-color:transparent}.factory-bootstrap-400 .btn-link:focus,.factory-bootstrap-400 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-400 .btn-link[disabled]:focus,.factory-bootstrap-400 .btn-link[disabled]:hover,.factory-bootstrap-400 fieldset[disabled] .btn-link:focus,.factory-bootstrap-400 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-400 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-400 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-400 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-400 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-400 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-400 input[type=button].btn-block,.factory-bootstrap-400 input[type=reset].btn-block,.factory-bootstrap-400 input[type=submit].btn-block{width:100%}.factory-bootstrap-400 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-400 .fade.in{opacity:1}.factory-bootstrap-400 .collapse{display:none}.factory-bootstrap-400 .collapse.in{display:block}.factory-bootstrap-400 .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-400 .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-400 .glyphicon:empty{width:1em}.factory-bootstrap-400 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-400 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-400 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-400 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-400 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-400 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-400 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-400 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-400 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-400 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-400 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-400 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-400 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-400 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-400 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-400 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-400 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-400 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-400 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-400 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-400 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-400 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-400 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-400 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-400 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-400 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-400 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-400 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-400 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-400 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-400 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-400 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-400 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-400 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-400 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-400 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-400 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-400 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-400 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-400 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-400 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-400 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-400 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-400 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-400 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-400 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-400 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-400 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-400 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-400 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-400 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-400 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-400 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-400 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-400 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-400 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-400 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-400 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-400 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-400 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-400 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-400 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-400 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-400 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-400 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-400 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-400 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-400 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-400 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-400 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-400 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-400 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-400 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-400 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-400 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-400 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-400 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-400 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-400 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-400 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-400 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-400 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-400 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-400 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-400 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-400 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-400 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-400 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-400 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-400 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-400 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-400 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-400 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-400 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-400 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-400 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-400 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-400 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-400 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-400 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-400 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-400 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-400 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-400 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-400 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-400 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-400 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-400 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-400 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-400 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-400 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-400 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-400 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-400 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-400 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-400 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-400 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-400 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-400 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-400 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-400 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-400 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-400 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-400 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-400 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-400 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-400 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-400 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-400 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-400 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-400 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-400 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-400 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-400 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-400 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-400 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-400 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-400 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-400 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-400 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-400 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-400 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-400 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-400 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-400 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-400 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-400 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-400 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-400 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-400 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-400 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-400 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-400 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-400 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-400 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-400 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-400 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-400 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-400 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-400 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-400 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-400 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-400 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-400 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-400 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-400 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-400 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-400 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-400 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-400 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-400 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-400 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-400 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-400 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-400 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-400 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-400 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-400 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-400 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-400 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-400 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-400 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-400 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-400 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-400 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-400 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-400 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-400 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-400 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-400 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-400 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-400 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-400 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-400 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-400 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-400 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-400 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-400 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-400 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-400 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-400 .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-400 .dropdown{position:relative}.factory-bootstrap-400 .dropdown-toggle:focus{outline:0}.factory-bootstrap-400 .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-400 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-400 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-400 .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-400 .dropdown-menu>li>a:focus,.factory-bootstrap-400 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-400 .dropdown-menu>.active>a,.factory-bootstrap-400 .dropdown-menu>.active>a:focus,.factory-bootstrap-400 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-400 .dropdown-menu>.disabled>a,.factory-bootstrap-400 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-400 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-400 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-400 .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-400 .open>.dropdown-menu{display:block}.factory-bootstrap-400 .open>a{outline:0}.factory-bootstrap-400 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-400 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-400 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-400 .dropup .caret,.factory-bootstrap-400 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-400 .dropup .dropdown-menu,.factory-bootstrap-400 .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-400 .btn-group,.factory-bootstrap-400 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-400 .btn-group-vertical>.btn,.factory-bootstrap-400 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-400 .btn-group-vertical>.btn.active,.factory-bootstrap-400 .btn-group-vertical>.btn:active,.factory-bootstrap-400 .btn-group-vertical>.btn:focus,.factory-bootstrap-400 .btn-group-vertical>.btn:hover,.factory-bootstrap-400 .btn-group>.btn.active,.factory-bootstrap-400 .btn-group>.btn:active,.factory-bootstrap-400 .btn-group>.btn:focus,.factory-bootstrap-400 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-400 .btn-group-vertical>.btn:focus,.factory-bootstrap-400 .btn-group>.btn:focus{outline:0}.factory-bootstrap-400 .btn-group .btn+.btn,.factory-bootstrap-400 .btn-group .btn+.btn-group,.factory-bootstrap-400 .btn-group .btn-group+.btn,.factory-bootstrap-400 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-400 .btn-toolbar:after,.factory-bootstrap-400 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-400 .btn-toolbar:after{clear:both}.factory-bootstrap-400 .btn-toolbar .btn-group{float:left}.factory-bootstrap-400 .btn-toolbar>.btn+.btn,.factory-bootstrap-400 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-400 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-400 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-400 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-400 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-400 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-400 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-400 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-400 .btn-group>.btn-group{float:left}.factory-bootstrap-400 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-400 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-400 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-400 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-400 .btn-group .dropdown-toggle:active,.factory-bootstrap-400 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-400 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-400 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-400 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-400 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-400 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-400 .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-400 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-400 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-400 .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-400 .btn .caret{margin-left:0}.factory-bootstrap-400 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-400 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-400 .btn-group-vertical>.btn,.factory-bootstrap-400 .btn-group-vertical>.btn-group,.factory-bootstrap-400 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-400 .btn-group-vertical>.btn-group:after,.factory-bootstrap-400 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-400 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-400 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-400 .btn-group-vertical>.btn+.btn,.factory-bootstrap-400 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-400 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-400 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-400 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-400 .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-400 .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-400 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-400 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-400 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-400 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-400 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-400 .btn-group-justified>.btn,.factory-bootstrap-400 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-400 .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-400 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-400 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-400 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-400 .input-group-lg>.form-control,.factory-bootstrap-400 .input-group-lg>.input-group-addon,.factory-bootstrap-400 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-400 select.input-group-lg>.form-control,.factory-bootstrap-400 select.input-group-lg>.input-group-addon,.factory-bootstrap-400 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-400 textarea.input-group-lg>.form-control,.factory-bootstrap-400 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-400 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-400 .input-group-sm>.form-control,.factory-bootstrap-400 .input-group-sm>.input-group-addon,.factory-bootstrap-400 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-400 select.input-group-sm>.form-control,.factory-bootstrap-400 select.input-group-sm>.input-group-addon,.factory-bootstrap-400 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-400 textarea.input-group-sm>.form-control,.factory-bootstrap-400 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-400 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-400 .input-group .form-control,.factory-bootstrap-400 .input-group-addon,.factory-bootstrap-400 .input-group-btn{display:table-cell}.factory-bootstrap-400 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-400 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-400 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-400 .input-group-addon,.factory-bootstrap-400 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-400 .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-400 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-400 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-400 .input-group-addon input[type=checkbox],.factory-bootstrap-400 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-400 .input-group .form-control:first-child,.factory-bootstrap-400 .input-group-addon:first-child,.factory-bootstrap-400 .input-group-btn:first-child>.btn,.factory-bootstrap-400 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-400 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-400 .input-group-addon:first-child{border-right:0}.factory-bootstrap-400 .input-group .form-control:last-child,.factory-bootstrap-400 .input-group-addon:last-child,.factory-bootstrap-400 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-400 .input-group-btn:last-child>.btn,.factory-bootstrap-400 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-400 .input-group-addon:last-child{border-left:0}.factory-bootstrap-400 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-400 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-400 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-400 .input-group-btn>.btn{position:relative}.factory-bootstrap-400 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-400 .input-group-btn>.btn:active,.factory-bootstrap-400 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-400 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-400 .nav:after,.factory-bootstrap-400 .nav:before{display:table;content:" "}.factory-bootstrap-400 .nav:after{clear:both}.factory-bootstrap-400 .nav>li{position:relative;display:block}.factory-bootstrap-400 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-400 .nav>li>a:focus,.factory-bootstrap-400 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-400 .nav>li.disabled>a{color:#999}.factory-bootstrap-400 .nav>li.disabled>a:focus,.factory-bootstrap-400 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-400 .nav .open>a,.factory-bootstrap-400 .nav .open>a:focus,.factory-bootstrap-400 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-400 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-400 .nav>li>a>img{max-width:none}.factory-bootstrap-400 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-400 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-400 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-400 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-400 .nav-tabs>li.active>a,.factory-bootstrap-400 .nav-tabs>li.active>a:focus,.factory-bootstrap-400 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-400 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-400 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-400 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-400 .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-400 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-400 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-400 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-400 .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-400 .nav-pills>li{float:left}.factory-bootstrap-400 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-400 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-400 .nav-pills>li.active>a,.factory-bootstrap-400 .nav-pills>li.active>a:focus,.factory-bootstrap-400 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-400 .nav-stacked>li{float:none}.factory-bootstrap-400 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-400 .nav-justified{width:100%}.factory-bootstrap-400 .nav-justified>li{float:none}.factory-bootstrap-400 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-400 .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-400 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-400 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-400 .nav-tabs-justified>.active>a,.factory-bootstrap-400 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-400 .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-400 .tab-content>.tab-pane{display:none}.factory-bootstrap-400 .tab-content>.active{display:block}.factory-bootstrap-400 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-400 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-400 .navbar:after,.factory-bootstrap-400 .navbar:before{display:table;content:" "}.factory-bootstrap-400 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-400 .navbar-header:after,.factory-bootstrap-400 .navbar-header:before{display:table;content:" "}.factory-bootstrap-400 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-400 .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-400 .navbar-collapse:after,.factory-bootstrap-400 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-400 .navbar-collapse:after{clear:both}.factory-bootstrap-400 .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-400 .container>.navbar-collapse,.factory-bootstrap-400 .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-400 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-400 .navbar-fixed-bottom,.factory-bootstrap-400 .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-400 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-400 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-400 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-400 .navbar-brand:focus,.factory-bootstrap-400 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-400 .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-400 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-400 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-400 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-400 .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-400 .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-400 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-400 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-400 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-400 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-400 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-400 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-400 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-400 .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-400 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-400 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-400 .navbar-default .navbar-brand:focus,.factory-bootstrap-400 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-400 .navbar-default .navbar-nav>li>a,.factory-bootstrap-400 .navbar-default .navbar-text{color:#777}.factory-bootstrap-400 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-400 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-400 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-400 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-400 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-400 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-400 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-400 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-400 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-400 .navbar-default .navbar-toggle:focus,.factory-bootstrap-400 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-400 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-400 .navbar-default .navbar-collapse,.factory-bootstrap-400 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-400 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-400 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-400 .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-400 .navbar-default .navbar-link{color:#777}.factory-bootstrap-400 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-400 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-400 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-400 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-400 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-400 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-400 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-400 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-400 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-400 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-400 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-400 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-400 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-400 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-400 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-400 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-400 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-400 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-400 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-400 .navbar-inverse .navbar-collapse,.factory-bootstrap-400 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-400 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-400 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-400 .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-400 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-400 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-400 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-400 .breadcrumb>li{display:inline-block}.factory-bootstrap-400 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-400 .breadcrumb>.active{color:#999}.factory-bootstrap-400 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-400 .pagination>li{display:inline}.factory-bootstrap-400 .pagination>li>a,.factory-bootstrap-400 .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-400 .pagination>li:first-child>a,.factory-bootstrap-400 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-400 .pagination>li:last-child>a,.factory-bootstrap-400 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-400 .pagination>li>a:focus,.factory-bootstrap-400 .pagination>li>a:hover,.factory-bootstrap-400 .pagination>li>span:focus,.factory-bootstrap-400 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-400 .pagination>.active>a,.factory-bootstrap-400 .pagination>.active>a:focus,.factory-bootstrap-400 .pagination>.active>a:hover,.factory-bootstrap-400 .pagination>.active>span,.factory-bootstrap-400 .pagination>.active>span:focus,.factory-bootstrap-400 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-400 .pagination>.disabled>a,.factory-bootstrap-400 .pagination>.disabled>a:focus,.factory-bootstrap-400 .pagination>.disabled>a:hover,.factory-bootstrap-400 .pagination>.disabled>span,.factory-bootstrap-400 .pagination>.disabled>span:focus,.factory-bootstrap-400 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-400 .pagination-lg>li>a,.factory-bootstrap-400 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-400 .pagination-lg>li:first-child>a,.factory-bootstrap-400 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-400 .pagination-lg>li:last-child>a,.factory-bootstrap-400 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-400 .pagination-sm>li>a,.factory-bootstrap-400 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-400 .pagination-sm>li:first-child>a,.factory-bootstrap-400 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-400 .pagination-sm>li:last-child>a,.factory-bootstrap-400 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-400 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-400 .pager:after,.factory-bootstrap-400 .pager:before{display:table;content:" "}.factory-bootstrap-400 .pager:after{clear:both}.factory-bootstrap-400 .pager li{display:inline}.factory-bootstrap-400 .pager li>a,.factory-bootstrap-400 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-400 .pager li>a:focus,.factory-bootstrap-400 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-400 .pager .next>a,.factory-bootstrap-400 .pager .next>span{float:right}.factory-bootstrap-400 .pager .previous>a,.factory-bootstrap-400 .pager .previous>span{float:left}.factory-bootstrap-400 .pager .disabled>a,.factory-bootstrap-400 .pager .disabled>a:focus,.factory-bootstrap-400 .pager .disabled>a:hover,.factory-bootstrap-400 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-400 .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-400 .label[href]:focus,.factory-bootstrap-400 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-400 .label:empty{display:none}.factory-bootstrap-400 .btn .label{position:relative;top:-1px}.factory-bootstrap-400 .label-default{background-color:#999}.factory-bootstrap-400 .label-default[href]:focus,.factory-bootstrap-400 .label-default[href]:hover{background-color:gray}.factory-bootstrap-400 .label-primary{background-color:#428bca}.factory-bootstrap-400 .label-primary[href]:focus,.factory-bootstrap-400 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-400 .label-success{background-color:#5cb85c}.factory-bootstrap-400 .label-success[href]:focus,.factory-bootstrap-400 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-400 .label-info{background-color:#5bc0de}.factory-bootstrap-400 .label-info[href]:focus,.factory-bootstrap-400 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-400 .label-warning{background-color:#f0ad4e}.factory-bootstrap-400 .label-warning[href]:focus,.factory-bootstrap-400 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-400 .label-danger{background-color:#d9534f}.factory-bootstrap-400 .label-danger[href]:focus,.factory-bootstrap-400 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-400 .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-400 .badge:empty{display:none}.factory-bootstrap-400 .btn .badge{position:relative;top:-1px}.factory-bootstrap-400 a.badge:focus,.factory-bootstrap-400 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-400 .nav-pills>.active>a>.badge,.factory-bootstrap-400 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-400 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-400 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-400 .jumbotron .h1,.factory-bootstrap-400 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-400 .jumbotron p{line-height:1.4}.factory-bootstrap-400 .container .jumbotron{border-radius:6px}.factory-bootstrap-400 .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-400 .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-400 .thumbnail a>img,.factory-bootstrap-400 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-400 a.thumbnail.active,.factory-bootstrap-400 a.thumbnail:focus,.factory-bootstrap-400 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-400 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-400 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-400 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-400 .alert .alert-link{font-weight:700}.factory-bootstrap-400 .alert>p,.factory-bootstrap-400 .alert>ul{margin-bottom:0}.factory-bootstrap-400 .alert>p+p{margin-top:5px}.factory-bootstrap-400 .alert-dismissable{padding-right:35px}.factory-bootstrap-400 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-400 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-400 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-400 .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-400 .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-400 .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-400 .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-400 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-400 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-400 .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-400 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-400 .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-400 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-400 .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-400 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-400 .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-400 .media,.factory-bootstrap-400 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-400 .media,.factory-bootstrap-400 .media .media{margin-top:15px}.factory-bootstrap-400 .media:first-child{margin-top:0}.factory-bootstrap-400 .media-object{display:block}.factory-bootstrap-400 .media-heading{margin:0 0 5px}.factory-bootstrap-400 .media>.pull-left{margin-right:10px}.factory-bootstrap-400 .media>.pull-right{margin-left:10px}.factory-bootstrap-400 .media-list{padding-left:0;list-style:none}.factory-bootstrap-400 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-400 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-400 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-400 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-400 .list-group-item>.badge{float:right}.factory-bootstrap-400 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-400 a.list-group-item{color:#555}.factory-bootstrap-400 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-400 a.list-group-item:focus,.factory-bootstrap-400 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-400 a.list-group-item.active,.factory-bootstrap-400 a.list-group-item.active:focus,.factory-bootstrap-400 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-400 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-400 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-400 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-400 a.list-group-item.active .list-group-item-text,.factory-bootstrap-400 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-400 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-400 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-400 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-400 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-400 .panel-body{padding:15px}.factory-bootstrap-400 .panel-body:after,.factory-bootstrap-400 .panel-body:before{display:table;content:" "}.factory-bootstrap-400 .panel-body:after{clear:both}.factory-bootstrap-400 .panel>.list-group{margin-bottom:0}.factory-bootstrap-400 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-400 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-400 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-400 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-400 .panel>.table,.factory-bootstrap-400 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-400 .panel>.panel-body+.table,.factory-bootstrap-400 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-400 .panel>.table>tbody:first-child td,.factory-bootstrap-400 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-400 .panel>.table-bordered,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-400 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-400 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-400 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-400 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-400 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-400 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-400 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-400 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-400 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-400 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-400 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-400 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-400 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-400 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-400 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-400 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-400 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-400 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-400 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-400 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-400 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-400 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-400 .panel-title>a{color:inherit}.factory-bootstrap-400 .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-400 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-400 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-400 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-400 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-400 .panel-group .panel-footer{border-top:0}.factory-bootstrap-400 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-400 .panel-default{border-color:#ddd}.factory-bootstrap-400 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-400 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-400 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-400 .panel-primary{border-color:#428bca}.factory-bootstrap-400 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-400 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-400 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-400 .panel-success{border-color:#d6e9c6}.factory-bootstrap-400 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-400 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-400 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-400 .panel-warning{border-color:#faebcc}.factory-bootstrap-400 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-400 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-400 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-400 .panel-danger{border-color:#ebccd1}.factory-bootstrap-400 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-400 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-400 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-400 .panel-info{border-color:#bce8f1}.factory-bootstrap-400 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-400 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-400 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-400 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-400 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-400 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-400 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-400 .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-400 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-400 .close:focus,.factory-bootstrap-400 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-400 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-400 .modal-open{overflow:hidden}.factory-bootstrap-400 .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-400 .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-400 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-400 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-400 .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-400 .modal-backdrop,.factory-bootstrap-400-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-400 .modal-backdrop.fade,.factory-bootstrap-400-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-400 .modal-backdrop.in,.factory-bootstrap-400-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-400 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-400 .modal-header .close{margin-top:-2px}.factory-bootstrap-400 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-400 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-400 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-400 .modal-footer:after,.factory-bootstrap-400 .modal-footer:before{display:table;content:" "}.factory-bootstrap-400 .modal-footer:after{clear:both}.factory-bootstrap-400 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-400 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-400 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-400 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-400 .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-400 .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-400 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-400 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-400 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-400 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-400 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-400 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-400 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-400 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-400 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-400 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-400 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-400 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-400 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-400 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-400 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-400 .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-400 .popover.top{margin-top:-10px}.factory-bootstrap-400 .popover.right{margin-left:10px}.factory-bootstrap-400 .popover.bottom{margin-top:10px}.factory-bootstrap-400 .popover.left{margin-left:-10px}.factory-bootstrap-400 .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-400 .popover-content{padding:9px 14px}.factory-bootstrap-400 .popover .arrow,.factory-bootstrap-400 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-400 .popover .arrow{border-width:11px}.factory-bootstrap-400 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-400 .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-400 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-400 .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-400 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-400 .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-400 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-400 .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-400 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-400 .carousel{position:relative}.factory-bootstrap-400 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-400 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-400 .carousel-inner>.item>a>img,.factory-bootstrap-400 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-400 .carousel-inner>.active,.factory-bootstrap-400 .carousel-inner>.next,.factory-bootstrap-400 .carousel-inner>.prev{display:block}.factory-bootstrap-400 .carousel-inner>.active{left:0}.factory-bootstrap-400 .carousel-inner>.next,.factory-bootstrap-400 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-400 .carousel-inner>.next{left:100%}.factory-bootstrap-400 .carousel-inner>.prev{left:-100%}.factory-bootstrap-400 .carousel-inner>.next.left,.factory-bootstrap-400 .carousel-inner>.prev.right{left:0}.factory-bootstrap-400 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-400 .carousel-inner>.active.right{left:100%}.factory-bootstrap-400 .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-400 .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-400 .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-400 .carousel-control:focus,.factory-bootstrap-400 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-400 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-400 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-400 .carousel-control .icon-next,.factory-bootstrap-400 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-400 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-400 .carousel-control .icon-prev{left:50%}.factory-bootstrap-400 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-400 .carousel-control .icon-next{right:50%}.factory-bootstrap-400 .carousel-control .icon-next,.factory-bootstrap-400 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-400 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-400 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-400 .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-400 .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-400 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-400 .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-400 .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-400 .clearfix:after,.factory-bootstrap-400 .clearfix:before{display:table;content:" "}.factory-bootstrap-400 .clearfix:after{clear:both}.factory-bootstrap-400 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-400 .pull-right{float:right!important}.factory-bootstrap-400 .pull-left{float:left!important}.factory-bootstrap-400 .hide{display:none!important}.factory-bootstrap-400 .show{display:block!important}.factory-bootstrap-400 .invisible{visibility:hidden}.factory-bootstrap-400 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-400 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-400 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-400 .visible-lg,.factory-bootstrap-400 .visible-md,.factory-bootstrap-400 .visible-sm,.factory-bootstrap-400 .visible-xs,.factory-bootstrap-400 td.visible-lg,.factory-bootstrap-400 td.visible-md,.factory-bootstrap-400 td.visible-sm,.factory-bootstrap-400 td.visible-xs,.factory-bootstrap-400 th.visible-lg,.factory-bootstrap-400 th.visible-md,.factory-bootstrap-400 th.visible-sm,.factory-bootstrap-400 th.visible-xs,.factory-bootstrap-400 tr.visible-lg,.factory-bootstrap-400 tr.visible-md,.factory-bootstrap-400 tr.visible-sm,.factory-bootstrap-400 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-400 .hidden-xs{display:block!important}.factory-bootstrap-400 table.hidden-xs{display:table}.factory-bootstrap-400 tr.hidden-xs{display:table-row!important}.factory-bootstrap-400 td.hidden-xs,.factory-bootstrap-400 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-400 .hidden-sm{display:block!important}.factory-bootstrap-400 table.hidden-sm{display:table}.factory-bootstrap-400 tr.hidden-sm{display:table-row!important}.factory-bootstrap-400 td.hidden-sm,.factory-bootstrap-400 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-400 .hidden-md{display:block!important}.factory-bootstrap-400 table.hidden-md{display:table}.factory-bootstrap-400 tr.hidden-md{display:table-row!important}.factory-bootstrap-400 td.hidden-md,.factory-bootstrap-400 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-400 .hidden-lg{display:block!important}.factory-bootstrap-400 table.hidden-lg{display:table}.factory-bootstrap-400 tr.hidden-lg{display:table-row!important}.factory-bootstrap-400 td.hidden-lg,.factory-bootstrap-400 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-400 .hidden-lg.hidden-xs,.factory-bootstrap-400 td.hidden-lg.hidden-xs,.factory-bootstrap-400 th.hidden-lg.hidden-xs,.factory-bootstrap-400 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-400 .hidden-lg.hidden-sm,.factory-bootstrap-400 td.hidden-lg.hidden-sm,.factory-bootstrap-400 th.hidden-lg.hidden-sm,.factory-bootstrap-400 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-400 .hidden-lg.hidden-md,.factory-bootstrap-400 td.hidden-lg.hidden-md,.factory-bootstrap-400 th.hidden-lg.hidden-md,.factory-bootstrap-400 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-400 .hidden-lg,.factory-bootstrap-400 td.hidden-lg,.factory-bootstrap-400 th.hidden-lg,.factory-bootstrap-400 tr.hidden-lg{display:none!important}}.factory-bootstrap-400 .visible-print,.factory-bootstrap-400 td.visible-print,.factory-bootstrap-400 th.visible-print,.factory-bootstrap-400 tr.visible-print{display:none!important}@media print{.factory-bootstrap-400 .visible-print{display:block!important}.factory-bootstrap-400 table.visible-print{display:table}.factory-bootstrap-400 tr.visible-print{display:table-row!important}.factory-bootstrap-400 td.visible-print,.factory-bootstrap-400 th.visible-print{display:table-cell!important}.factory-bootstrap-400 .hidden-print,.factory-bootstrap-400 td.hidden-print,.factory-bootstrap-400 th.hidden-print,.factory-bootstrap-400 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-400 .btn-danger,.factory-bootstrap-400 .btn-default,.factory-bootstrap-400 .btn-info,.factory-bootstrap-400 .btn-primary,.factory-bootstrap-400 .btn-success,.factory-bootstrap-400 .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-400 .btn-danger.active,.factory-bootstrap-400 .btn-danger:active,.factory-bootstrap-400 .btn-default.active,.factory-bootstrap-400 .btn-default:active,.factory-bootstrap-400 .btn-info.active,.factory-bootstrap-400 .btn-info:active,.factory-bootstrap-400 .btn-primary.active,.factory-bootstrap-400 .btn-primary:active,.factory-bootstrap-400 .btn-success.active,.factory-bootstrap-400 .btn-success:active,.factory-bootstrap-400 .btn-warning.active,.factory-bootstrap-400 .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-400 .btn.active,.factory-bootstrap-400 .btn:active{background-image:none}.factory-bootstrap-400 .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-400 .btn-default.active,.factory-bootstrap-400 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-400 .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-400 .btn-gold:focus,.factory-bootstrap-400 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-400 .btn-gold.active,.factory-bootstrap-400 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-400 .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-400 .btn-primary:focus,.factory-bootstrap-400 .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-400 .btn-primary.active,.factory-bootstrap-400 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-400 .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-400 .btn-success:focus,.factory-bootstrap-400 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-400 .btn-success.active,.factory-bootstrap-400 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-400 .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-400 .btn-warning:focus,.factory-bootstrap-400 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-400 .btn-warning.active,.factory-bootstrap-400 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-400 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-400 .btn-danger.active,.factory-bootstrap-400 .btn-danger:active,.factory-bootstrap-400 .btn-danger:focus,.factory-bootstrap-400 .btn-danger:hover,.factory-bootstrap-400 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-400 .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-400 .btn-info:focus,.factory-bootstrap-400 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-400 .btn-info.active,.factory-bootstrap-400 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-400 .img-thumbnail,.factory-bootstrap-400 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-400 .dropdown-menu>li>a:focus,.factory-bootstrap-400 .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-400 .dropdown-menu>.active>a,.factory-bootstrap-400 .dropdown-menu>.active>a:focus,.factory-bootstrap-400 .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-400 .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-400 .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-400 .navbar-brand,.factory-bootstrap-400 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-400 .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-400 .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-400 .navbar-inverse .navbar-brand,.factory-bootstrap-400 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-400 .navbar-fixed-bottom,.factory-bootstrap-400 .navbar-fixed-top,.factory-bootstrap-400 .navbar-static-top{border-radius:0}.factory-bootstrap-400 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-400 .alert .actions{padding-top:10px}.factory-bootstrap-400 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-400 .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-400 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-400 .alert-normal,.factory-bootstrap-400 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-400 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-400 .alert-danger a:not(.btn),.factory-bootstrap-400 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-400 .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-400 .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-400 .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-400 .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-400 .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-400 .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-400 .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-400 .list-group-item.active,.factory-bootstrap-400 .list-group-item.active:focus,.factory-bootstrap-400 .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-400 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-400 .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-400 .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-400 .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-400 .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-400 .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-400 .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-400 .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-400 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-400 .factory-hidden{display:none}.factory-bootstrap-400 .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.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-400 .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-400 .btn-primary:focus,.factory-bootstrap-400 .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-400 .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-400 .btn-primary:disabled,.factory-bootstrap-400 .btn-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.factory-bootstrap-400 .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-400 .pagination>.active>a,.factory-bootstrap-400 .pagination>.active>a:focus,.factory-bootstrap-400 .pagination>.active>a:hover,.factory-bootstrap-400 .pagination>.active>span,.factory-bootstrap-400 .pagination>.active>span:focus,.factory-bootstrap-400 .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-400 .factory-form-group .factory-legend{padding:9px 12px;background-color:#f9f9f9}.factory-bootstrap-400 .factory-form-group .factory-title{font-weight:700;font-size:14px;line-height:14px;color:#555;margin:0}.factory-bootstrap-400 .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-400 .factory-form-group .factory-hint-icon.factory-hint-icon-green{background:#8bc34a}.factory-bootstrap-400 .factory-form-group .factory-hint-icon.factory-hint-icon-grey{background:#9e9e9e}.factory-bootstrap-400 .factory-form-group .factory-hint-icon.factory-hint-icon-red{background:#E91E63}.factory-bootstrap-400 .factory-form-group .factory-hint{margin:0;font-size:12px;line-height:16px;margin-top:6px}.factory-bootstrap-400 .factory-form-group+.factory-form-group{margin-top:30px}.factory-bootstrap-400 .factory-form-group legend+.control-group{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-400 .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-400 .btn-primary:focus,.factory-bootstrap-400 .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-400 .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-400 .btn-primary:disabled,.factory-bootstrap-400 .btn-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.factory-bootstrap-400 .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-400 .pagination>.active>a,.factory-bootstrap-400 .pagination>.active>a:focus,.factory-bootstrap-400 .pagination>.active>a:hover,.factory-bootstrap-400 .pagination>.active>span,.factory-bootstrap-400 .pagination>.active>span:focus,.factory-bootstrap-400 .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-400 .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-400 .btn-primary:focus,.factory-bootstrap-400 .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-400 .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-400 .btn-primary:disabled,.factory-bootstrap-400 .btn-primary[disabled]{color:#d1c7c7!important;background:#d92c23!important;border-color:#ba251e!important;text-shadow:none!important}.factory-bootstrap-400 .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-400 .pagination>.active>a,.factory-bootstrap-400 .pagination>.active>a:focus,.factory-bootstrap-400 .pagination>.active>a:hover,.factory-bootstrap-400 .pagination>.active>span,.factory-bootstrap-400 .pagination>.active>span:focus,.factory-bootstrap-400 .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-400 .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-400 .btn-primary:focus,.factory-bootstrap-400 .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-400 .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-400 .btn-primary:disabled,.factory-bootstrap-400 .btn-primary[disabled]{color:#c7d1c8!important;background:#86a988!important;border-color:#719a74!important;text-shadow:none!important}.factory-bootstrap-400 .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-400 .pagination>.active>a,.factory-bootstrap-400 .pagination>.active>a:focus,.factory-bootstrap-400 .pagination>.active>a:hover,.factory-bootstrap-400 .pagination>.active>span,.factory-bootstrap-400 .pagination>.active>span:focus,.factory-bootstrap-400 .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-400 .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-400 .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-400 .btn-primary:focus,.factory-bootstrap-400 .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-400 .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-400 .btn-primary:disabled,.factory-bootstrap-400 .btn-primary[disabled]{color:#d1cbc7!important;background:#cc6c23!important;border-color:#ad5c1e!important;text-shadow:none!important}.factory-bootstrap-400 .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-400 .pagination>.active>a,.factory-bootstrap-400 .pagination>.active>a:focus,.factory-bootstrap-400 .pagination>.active>a:hover,.factory-bootstrap-400 .pagination>.active>span,.factory-bootstrap-400 .pagination>.active>span:focus,.factory-bootstrap-400 .pagination>.active>span:hover{background-color:#dd823b;border-color:#c36822}
|
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-400 .factory-buttons-way{float:right;position:relative;top:-25px;left:5px;border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-400 .factory-buttons-way{border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-400 .factory-buttons-way button{padding-left:10px;padding-right:10px}.factory-bootstrap-400 .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-400 .factory-checkbox-tumbler-hint{margin-top:5px}.factory-bootstrap-400 .factory-checkbox-tumbler-hint .factory-tumbler-content{display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-400 .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-400 .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-400 .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-400 .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-400 .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-400 .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-400 .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.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-400 .factory-dropdown.factory-buttons-way .fa{margin-right:6px;position:relative}.factory-bootstrap-400 .factory-dropdown.factory-buttons-way{border:0;border-radius:0}.factory-bootstrap-400 .factory-hints .factory-hint{margin-top:5px;display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-400 .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-400 .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-400 .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-400 .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-400 .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-400 .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-400 .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-400 .factory-dropdown.factory-ddslick-way .dd-select{background-color:#fff!important}.factory-bootstrap-400 .factory-dropdown.factory-ddslick-way label{margin-bottom:1px}.factory-bootstrap-400 .factory-dropdown.factory-ddslick-way .dd-option,.factory-bootstrap-400 .factory-dropdown.factory-ddslick-way .dd-selected{padding:8px 12px 8px 11px!important}
|
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-400 .factory-mtextbox-item{position:relative;margin-bottom:5px}.factory-bootstrap-400 .factory-mtextbox-item input,.factory-mtextbox-remove-item{display:inline-block}.factory-bootstrap-400 .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-400 .factory-mtextbox-item .factory-mtextbox-remove-item:focus,.factory-bootstrap-400 .factory-mtextbox-item .factory-mtextbox-remove-item:hover{box-shadow:none;outline:0}.factory-bootstrap-400 .factory-mtextbox-add-item{display:block;margin-top:10px}
|
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-400 .factory-more-link-content{border-top:1px dashed #DDD;padding-top:25px;width:100%;padding-right:20px;position:relative}.factory-bootstrap-400 .factory-tab .factory-more-link-show{display:inline-block;text-decoration:none;border-bottom:1px dotted #21759b;position:relative}.factory-bootstrap-400 .factory-tab .factory-more-link-show:hover{border-color:#d54e21}.factory-bootstrap-400 .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-400 .factory-tab .factory-more-link-hide:hover{color:#999}
|
libs/factory/bootstrap/assets/flat/css/bootstrap.core.css
DELETED
@@ -1,7810 +0,0 @@
|
|
1 |
-
/*
|
2 |
-
* Factory Bootstrap CSS
|
3 |
-
*
|
4 |
-
* The code is based on Bootstrap v2.1.1
|
5 |
-
*
|
6 |
-
* Bootstrap v3.0.3 (http://getbootstrap.com)
|
7 |
-
* Copyright 2013 Twitter, Inc.
|
8 |
-
* Licensed under http://www.apache.org/licenses/LICENSE-2.0
|
9 |
-
*
|
10 |
-
* @author Paul Kashtanoff <paul@byonepress.com>
|
11 |
-
* @copyright (c) 2013, OnePress Ltd
|
12 |
-
*
|
13 |
-
* @package factory-bootstrap
|
14 |
-
* @since 1.0.0
|
15 |
-
*/
|
16 |
-
|
17 |
-
.factory-bootstrap-330 article,
|
18 |
-
.factory-bootstrap-330 aside,
|
19 |
-
.factory-bootstrap-330 details,
|
20 |
-
.factory-bootstrap-330 figcaption,
|
21 |
-
.factory-bootstrap-330 figure,
|
22 |
-
.factory-bootstrap-330 footer,
|
23 |
-
.factory-bootstrap-330 header,
|
24 |
-
.factory-bootstrap-330 hgroup,
|
25 |
-
.factory-bootstrap-330 main,
|
26 |
-
.factory-bootstrap-330 nav,
|
27 |
-
.factory-bootstrap-330 section,
|
28 |
-
.factory-bootstrap-330 summary {
|
29 |
-
display: block;
|
30 |
-
}
|
31 |
-
|
32 |
-
.factory-bootstrap-330 audio,
|
33 |
-
.factory-bootstrap-330 canvas,
|
34 |
-
.factory-bootstrap-330 video {
|
35 |
-
display: inline-block;
|
36 |
-
}
|
37 |
-
|
38 |
-
.factory-bootstrap-330 audio:not([controls]) {
|
39 |
-
display: none;
|
40 |
-
height: 0;
|
41 |
-
}
|
42 |
-
|
43 |
-
.factory-bootstrap-330 [hidden],
|
44 |
-
.factory-bootstrap-330 template {
|
45 |
-
display: none;
|
46 |
-
}
|
47 |
-
|
48 |
-
.factory-bootstrap-330 body {
|
49 |
-
margin: 0;
|
50 |
-
}
|
51 |
-
|
52 |
-
.factory-bootstrap-330 a {
|
53 |
-
background: transparent;
|
54 |
-
}
|
55 |
-
|
56 |
-
.factory-bootstrap-330 a:focus {
|
57 |
-
outline: thin dotted;
|
58 |
-
}
|
59 |
-
|
60 |
-
.factory-bootstrap-330 a:active,
|
61 |
-
.factory-bootstrap-330 a:hover {
|
62 |
-
outline: 0;
|
63 |
-
}
|
64 |
-
|
65 |
-
.factory-bootstrap-330 h1 {
|
66 |
-
margin: 0.67em 0;
|
67 |
-
font-size: 2em;
|
68 |
-
}
|
69 |
-
|
70 |
-
.factory-bootstrap-330 abbr[title] {
|
71 |
-
border-bottom: 1px dotted;
|
72 |
-
}
|
73 |
-
|
74 |
-
.factory-bootstrap-330 b,
|
75 |
-
.factory-bootstrap-330 strong {
|
76 |
-
font-weight: bold;
|
77 |
-
}
|
78 |
-
|
79 |
-
.factory-bootstrap-330 dfn {
|
80 |
-
font-style: italic;
|
81 |
-
}
|
82 |
-
|
83 |
-
.factory-bootstrap-330 hr {
|
84 |
-
height: 0;
|
85 |
-
-moz-box-sizing: content-box;
|
86 |
-
box-sizing: content-box;
|
87 |
-
}
|
88 |
-
|
89 |
-
.factory-bootstrap-330 mark {
|
90 |
-
color: #000;
|
91 |
-
background: #ff0;
|
92 |
-
}
|
93 |
-
|
94 |
-
.factory-bootstrap-330 code,
|
95 |
-
.factory-bootstrap-330 kbd,
|
96 |
-
.factory-bootstrap-330 pre,
|
97 |
-
.factory-bootstrap-330 samp {
|
98 |
-
font-family: monospace, serif;
|
99 |
-
font-size: 1em;
|
100 |
-
}
|
101 |
-
|
102 |
-
.factory-bootstrap-330 pre {
|
103 |
-
white-space: pre-wrap;
|
104 |
-
}
|
105 |
-
|
106 |
-
.factory-bootstrap-330 q {
|
107 |
-
quotes: "\201C" "\201D" "\2018" "\2019";
|
108 |
-
}
|
109 |
-
|
110 |
-
.factory-bootstrap-330 small {
|
111 |
-
font-size: 80%;
|
112 |
-
}
|
113 |
-
|
114 |
-
.factory-bootstrap-330 sub,
|
115 |
-
.factory-bootstrap-330 sup {
|
116 |
-
position: relative;
|
117 |
-
font-size: 75%;
|
118 |
-
line-height: 0;
|
119 |
-
vertical-align: baseline;
|
120 |
-
}
|
121 |
-
|
122 |
-
.factory-bootstrap-330 sup {
|
123 |
-
top: -0.5em;
|
124 |
-
}
|
125 |
-
|
126 |
-
.factory-bootstrap-330 sub {
|
127 |
-
bottom: -0.25em;
|
128 |
-
}
|
129 |
-
|
130 |
-
.factory-bootstrap-330 img {
|
131 |
-
border: 0;
|
132 |
-
}
|
133 |
-
|
134 |
-
.factory-bootstrap-330 svg:not(:root) {
|
135 |
-
overflow: hidden;
|
136 |
-
}
|
137 |
-
|
138 |
-
.factory-bootstrap-330 figure {
|
139 |
-
margin: 0;
|
140 |
-
}
|
141 |
-
|
142 |
-
.factory-bootstrap-330 fieldset {
|
143 |
-
padding: 0.35em 0.625em 0.75em;
|
144 |
-
margin: 0 2px;
|
145 |
-
border: 1px solid #c0c0c0;
|
146 |
-
}
|
147 |
-
|
148 |
-
.factory-bootstrap-330 legend {
|
149 |
-
padding: 0;
|
150 |
-
border: 0;
|
151 |
-
}
|
152 |
-
|
153 |
-
.factory-bootstrap-330 button,
|
154 |
-
.factory-bootstrap-330 input,
|
155 |
-
.factory-bootstrap-330 select,
|
156 |
-
.factory-bootstrap-330 textarea {
|
157 |
-
margin: 0;
|
158 |
-
font-family: inherit;
|
159 |
-
font-size: 100%;
|
160 |
-
}
|
161 |
-
|
162 |
-
.factory-bootstrap-330 button,
|
163 |
-
.factory-bootstrap-330 input {
|
164 |
-
line-height: normal;
|
165 |
-
}
|
166 |
-
|
167 |
-
.factory-bootstrap-330 button,
|
168 |
-
.factory-bootstrap-330 select {
|
169 |
-
text-transform: none;
|
170 |
-
}
|
171 |
-
|
172 |
-
.factory-bootstrap-330 select {
|
173 |
-
padding-right: 4px !important;
|
174 |
-
}
|
175 |
-
|
176 |
-
.factory-bootstrap-330 button,
|
177 |
-
html .factory-bootstrap-330 input[type="button"],
|
178 |
-
.factory-bootstrap-330 input[type="reset"],
|
179 |
-
.factory-bootstrap-330 input[type="submit"] {
|
180 |
-
cursor: pointer;
|
181 |
-
-webkit-appearance: button;
|
182 |
-
}
|
183 |
-
|
184 |
-
.factory-bootstrap-330 button[disabled],
|
185 |
-
html .factory-bootstrap-330 input[disabled] {
|
186 |
-
cursor: default;
|
187 |
-
}
|
188 |
-
|
189 |
-
.factory-bootstrap-330 input[type="checkbox"],
|
190 |
-
.factory-bootstrap-330 input[type="radio"] {
|
191 |
-
padding: 0;
|
192 |
-
box-sizing: border-box;
|
193 |
-
}
|
194 |
-
|
195 |
-
.factory-bootstrap-330 input[type="search"] {
|
196 |
-
-webkit-box-sizing: content-box;
|
197 |
-
-moz-box-sizing: content-box;
|
198 |
-
box-sizing: content-box;
|
199 |
-
-webkit-appearance: textfield;
|
200 |
-
}
|
201 |
-
|
202 |
-
.factory-bootstrap-330 input[type="search"]::-webkit-search-cancel-button,
|
203 |
-
.factory-bootstrap-330 input[type="search"]::-webkit-search-decoration {
|
204 |
-
-webkit-appearance: none;
|
205 |
-
}
|
206 |
-
|
207 |
-
.factory-bootstrap-330 button::-moz-focus-inner,
|
208 |
-
.factory-bootstrap-330 input::-moz-focus-inner {
|
209 |
-
padding: 0;
|
210 |
-
border: 0;
|
211 |
-
}
|
212 |
-
|
213 |
-
.factory-bootstrap-330 textarea {
|
214 |
-
overflow: auto;
|
215 |
-
vertical-align: top;
|
216 |
-
}
|
217 |
-
|
218 |
-
.factory-bootstrap-330 table {
|
219 |
-
border-collapse: collapse;
|
220 |
-
border-spacing: 0;
|
221 |
-
}
|
222 |
-
|
223 |
-
@media print {
|
224 |
-
.factory-bootstrap-330 * {
|
225 |
-
color: #000 !important;
|
226 |
-
text-shadow: none !important;
|
227 |
-
background: transparent !important;
|
228 |
-
box-shadow: none !important;
|
229 |
-
}
|
230 |
-
|
231 |
-
.factory-bootstrap-330 a,
|
232 |
-
.factory-bootstrap-330 a:visited {
|
233 |
-
text-decoration: underline;
|
234 |
-
}
|
235 |
-
|
236 |
-
.factory-bootstrap-330 a[href]:after {
|
237 |
-
content: " (" attr(href) ")";
|
238 |
-
}
|
239 |
-
|
240 |
-
.factory-bootstrap-330 abbr[title]:after {
|
241 |
-
content: " (" attr(title) ")";
|
242 |
-
}
|
243 |
-
|
244 |
-
.factory-bootstrap-330 a[href^="javascript:"]:after,
|
245 |
-
.factory-bootstrap-330 a[href^="#"]:after {
|
246 |
-
content: "";
|
247 |
-
}
|
248 |
-
|
249 |
-
.factory-bootstrap-330 pre,
|
250 |
-
.factory-bootstrap-330 blockquote {
|
251 |
-
border: 1px solid #999;
|
252 |
-
page-break-inside: avoid;
|
253 |
-
}
|
254 |
-
|
255 |
-
.factory-bootstrap-330 thead {
|
256 |
-
display: table-header-group;
|
257 |
-
}
|
258 |
-
|
259 |
-
.factory-bootstrap-330 tr,
|
260 |
-
.factory-bootstrap-330 img {
|
261 |
-
page-break-inside: avoid;
|
262 |
-
}
|
263 |
-
|
264 |
-
.factory-bootstrap-330 img {
|
265 |
-
max-width: 100% !important;
|
266 |
-
}
|
267 |
-
|
268 |
-
@page {
|
269 |
-
margin: 2cm .5cm;
|
270 |
-
}
|
271 |
-
|
272 |
-
.factory-bootstrap-330 p,
|
273 |
-
.factory-bootstrap-330 h2,
|
274 |
-
.factory-bootstrap-330 h3 {
|
275 |
-
orphans: 3;
|
276 |
-
widows: 3;
|
277 |
-
}
|
278 |
-
|
279 |
-
.factory-bootstrap-330 h2,
|
280 |
-
.factory-bootstrap-330 h3 {
|
281 |
-
page-break-after: avoid;
|
282 |
-
}
|
283 |
-
|
284 |
-
.factory-bootstrap-330 select {
|
285 |
-
background: #fff !important;
|
286 |
-
}
|
287 |
-
|
288 |
-
.factory-bootstrap-330 .navbar {
|
289 |
-
display: none;
|
290 |
-
}
|
291 |
-
|
292 |
-
.factory-bootstrap-330 .table td,
|
293 |
-
.factory-bootstrap-330 .table th {
|
294 |
-
background-color: #fff !important;
|
295 |
-
}
|
296 |
-
|
297 |
-
.factory-bootstrap-330 .btn > .caret,
|
298 |
-
.factory-bootstrap-330 .dropup > .btn > .caret {
|
299 |
-
border-top-color: #000 !important;
|
300 |
-
}
|
301 |
-
|
302 |
-
.factory-bootstrap-330 .label {
|
303 |
-
border: 1px solid #000;
|
304 |
-
}
|
305 |
-
|
306 |
-
.factory-bootstrap-330 .table {
|
307 |
-
border-collapse: collapse !important;
|
308 |
-
}
|
309 |
-
|
310 |
-
.factory-bootstrap-330 .table-bordered th,
|
311 |
-
.factory-bootstrap-330 .table-bordered td {
|
312 |
-
border: 1px solid #ddd !important;
|
313 |
-
}
|
314 |
-
}
|
315 |
-
|
316 |
-
.factory-bootstrap-330 *,
|
317 |
-
.factory-bootstrap-330 *:before,
|
318 |
-
.factory-bootstrap-330 *:after {
|
319 |
-
-webkit-box-sizing: border-box;
|
320 |
-
-moz-box-sizing: border-box;
|
321 |
-
box-sizing: border-box;
|
322 |
-
}
|
323 |
-
|
324 |
-
html .factory-bootstrap-330 {
|
325 |
-
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
326 |
-
}
|
327 |
-
|
328 |
-
.factory-bootstrap-330 body {
|
329 |
-
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
330 |
-
font-size: 14px;
|
331 |
-
line-height: 1.428571429;
|
332 |
-
color: #333333;
|
333 |
-
background-color: #ffffff;
|
334 |
-
}
|
335 |
-
|
336 |
-
.factory-bootstrap-330 input,
|
337 |
-
.factory-bootstrap-330 button,
|
338 |
-
.factory-bootstrap-330 select,
|
339 |
-
.factory-bootstrap-330 textarea {
|
340 |
-
font-family: inherit;
|
341 |
-
font-size: inherit;
|
342 |
-
line-height: inherit;
|
343 |
-
}
|
344 |
-
|
345 |
-
.factory-bootstrap-330 img {
|
346 |
-
vertical-align: middle;
|
347 |
-
}
|
348 |
-
|
349 |
-
.factory-bootstrap-330 .img-responsive {
|
350 |
-
display: block;
|
351 |
-
height: auto;
|
352 |
-
max-width: 100%;
|
353 |
-
}
|
354 |
-
|
355 |
-
.factory-bootstrap-330 .img-rounded {
|
356 |
-
border-radius: 6px;
|
357 |
-
}
|
358 |
-
|
359 |
-
.factory-bootstrap-330 .img-thumbnail {
|
360 |
-
display: inline-block;
|
361 |
-
height: auto;
|
362 |
-
max-width: 100%;
|
363 |
-
padding: 4px;
|
364 |
-
line-height: 1.428571429;
|
365 |
-
background-color: #ffffff;
|
366 |
-
border: 1px solid #dddddd;
|
367 |
-
border-radius: 4px;
|
368 |
-
-webkit-transition: all 0.2s ease-in-out;
|
369 |
-
transition: all 0.2s ease-in-out;
|
370 |
-
}
|
371 |
-
|
372 |
-
.factory-bootstrap-330 .img-circle {
|
373 |
-
border-radius: 50%;
|
374 |
-
}
|
375 |
-
|
376 |
-
.factory-bootstrap-330 hr {
|
377 |
-
margin-top: 20px;
|
378 |
-
margin-bottom: 20px;
|
379 |
-
border: 0;
|
380 |
-
border-top: 1px solid #eeeeee;
|
381 |
-
}
|
382 |
-
|
383 |
-
.factory-bootstrap-330 .sr-only {
|
384 |
-
position: absolute;
|
385 |
-
width: 1px;
|
386 |
-
height: 1px;
|
387 |
-
padding: 0;
|
388 |
-
margin: -1px;
|
389 |
-
overflow: hidden;
|
390 |
-
clip: rect(0, 0, 0, 0);
|
391 |
-
border: 0;
|
392 |
-
}
|
393 |
-
|
394 |
-
.factory-bootstrap-330 h1,
|
395 |
-
.factory-bootstrap-330 h2,
|
396 |
-
.factory-bootstrap-330 h3,
|
397 |
-
.factory-bootstrap-330 h4,
|
398 |
-
.factory-bootstrap-330 h5,
|
399 |
-
.factory-bootstrap-330 h6,
|
400 |
-
.factory-bootstrap-330 .h1,
|
401 |
-
.factory-bootstrap-330 .h2,
|
402 |
-
.factory-bootstrap-330 .h3,
|
403 |
-
.factory-bootstrap-330 .h4,
|
404 |
-
.factory-bootstrap-330 .h5,
|
405 |
-
.factory-bootstrap-330 .h6 {
|
406 |
-
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
407 |
-
font-weight: 500;
|
408 |
-
line-height: 1.1;
|
409 |
-
color: inherit;
|
410 |
-
}
|
411 |
-
|
412 |
-
.factory-bootstrap-330 h1 small,
|
413 |
-
.factory-bootstrap-330 h2 small,
|
414 |
-
.factory-bootstrap-330 h3 small,
|
415 |
-
.factory-bootstrap-330 h4 small,
|
416 |
-
.factory-bootstrap-330 h5 small,
|
417 |
-
.factory-bootstrap-330 h6 small,
|
418 |
-
.factory-bootstrap-330 .h1 small,
|
419 |
-
.factory-bootstrap-330 .h2 small,
|
420 |
-
.factory-bootstrap-330 .h3 small,
|
421 |
-
.factory-bootstrap-330 .h4 small,
|
422 |
-
.factory-bootstrap-330 .h5 small,
|
423 |
-
.factory-bootstrap-330 .h6 small,
|
424 |
-
.factory-bootstrap-330 h1 .small,
|
425 |
-
.factory-bootstrap-330 h2 .small,
|
426 |
-
.factory-bootstrap-330 h3 .small,
|
427 |
-
.factory-bootstrap-330 h4 .small,
|
428 |
-
.factory-bootstrap-330 h5 .small,
|
429 |
-
.factory-bootstrap-330 h6 .small,
|
430 |
-
.factory-bootstrap-330 .h1 .small,
|
431 |
-
.factory-bootstrap-330 .h2 .small,
|
432 |
-
.factory-bootstrap-330 .h3 .small,
|
433 |
-
.factory-bootstrap-330 .h4 .small,
|
434 |
-
.factory-bootstrap-330 .h5 .small,
|
435 |
-
.factory-bootstrap-330 .h6 .small {
|
436 |
-
font-weight: normal;
|
437 |
-
line-height: 1;
|
438 |
-
color: #999999;
|
439 |
-
}
|
440 |
-
|
441 |
-
.factory-bootstrap-330 h1,
|
442 |
-
.factory-bootstrap-330 h2,
|
443 |
-
.factory-bootstrap-330 h3 {
|
444 |
-
margin-top: 20px;
|
445 |
-
margin-bottom: 10px;
|
446 |
-
}
|
447 |
-
|
448 |
-
.factory-bootstrap-330 h1 small,
|
449 |
-
.factory-bootstrap-330 h2 small,
|
450 |
-
.factory-bootstrap-330 h3 small,
|
451 |
-
.factory-bootstrap-330 h1 .small,
|
452 |
-
.factory-bootstrap-330 h2 .small,
|
453 |
-
.factory-bootstrap-330 h3 .small {
|
454 |
-
font-size: 65%;
|
455 |
-
}
|
456 |
-
|
457 |
-
.factory-bootstrap-330 h4,
|
458 |
-
.factory-bootstrap-330 h5,
|
459 |
-
.factory-bootstrap-330 h6 {
|
460 |
-
margin-top: 10px;
|
461 |
-
margin-bottom: 10px;
|
462 |
-
}
|
463 |
-
|
464 |
-
.factory-bootstrap-330 h4 small,
|
465 |
-
.factory-bootstrap-330 h5 small,
|
466 |
-
.factory-bootstrap-330 h6 small,
|
467 |
-
.factory-bootstrap-330 h4 .small,
|
468 |
-
.factory-bootstrap-330 h5 .small,
|
469 |
-
.factory-bootstrap-330 h6 .small {
|
470 |
-
font-size: 75%;
|
471 |
-
}
|
472 |
-
|
473 |
-
.factory-bootstrap-330 h1,
|
474 |
-
.factory-bootstrap-330 .h1 {
|
475 |
-
font-size: 36px;
|
476 |
-
}
|
477 |
-
|
478 |
-
.factory-bootstrap-330 h2,
|
479 |
-
.factory-bootstrap-330 .h2 {
|
480 |
-
font-size: 30px;
|
481 |
-
}
|
482 |
-
|
483 |
-
.factory-bootstrap-330 h3,
|
484 |
-
.factory-bootstrap-330 .h3 {
|
485 |
-
font-size: 24px;
|
486 |
-
}
|
487 |
-
|
488 |
-
.factory-bootstrap-330 h4,
|
489 |
-
.factory-bootstrap-330 .h4 {
|
490 |
-
font-size: 18px;
|
491 |
-
}
|
492 |
-
|
493 |
-
.factory-bootstrap-330 h5,
|
494 |
-
.factory-bootstrap-330 .h5 {
|
495 |
-
font-size: 14px;
|
496 |
-
}
|
497 |
-
|
498 |
-
.factory-bootstrap-330 h6,
|
499 |
-
.factory-bootstrap-330 .h6 {
|
500 |
-
font-size: 12px;
|
501 |
-
}
|
502 |
-
|
503 |
-
.factory-bootstrap-330 p {
|
504 |
-
margin: 0 0 10px;
|
505 |
-
}
|
506 |
-
|
507 |
-
.factory-bootstrap-330 .lead {
|
508 |
-
margin-bottom: 20px;
|
509 |
-
font-size: 16px;
|
510 |
-
font-weight: 200;
|
511 |
-
line-height: 1.4;
|
512 |
-
}
|
513 |
-
|
514 |
-
@media (min-width: 768px) {
|
515 |
-
.lead {
|
516 |
-
font-size: 21px;
|
517 |
-
}
|
518 |
-
}
|
519 |
-
|
520 |
-
.factory-bootstrap-330 small,
|
521 |
-
.factory-bootstrap-330 .small {
|
522 |
-
font-size: 85%;
|
523 |
-
}
|
524 |
-
|
525 |
-
.factory-bootstrap-330 cite {
|
526 |
-
font-style: normal;
|
527 |
-
}
|
528 |
-
|
529 |
-
.factory-bootstrap-330 .text-muted {
|
530 |
-
color: #999999;
|
531 |
-
}
|
532 |
-
|
533 |
-
.factory-bootstrap-330 .text-primary {
|
534 |
-
color: #428bca;
|
535 |
-
}
|
536 |
-
|
537 |
-
.factory-bootstrap-330 .text-primary:hover {
|
538 |
-
color: #3071a9;
|
539 |
-
}
|
540 |
-
|
541 |
-
.factory-bootstrap-330 .text-warning {
|
542 |
-
color: #8a6d3b;
|
543 |
-
}
|
544 |
-
|
545 |
-
.factory-bootstrap-330 .text-warning:hover {
|
546 |
-
color: #66512c;
|
547 |
-
}
|
548 |
-
|
549 |
-
.factory-bootstrap-330 .text-danger {
|
550 |
-
color: #a94442;
|
551 |
-
}
|
552 |
-
|
553 |
-
.factory-bootstrap-330 .text-danger:hover {
|
554 |
-
color: #843534;
|
555 |
-
}
|
556 |
-
|
557 |
-
.factory-bootstrap-330 .text-success {
|
558 |
-
color: #3c763d;
|
559 |
-
}
|
560 |
-
|
561 |
-
.factory-bootstrap-330 .text-success:hover {
|
562 |
-
color: #2b542c;
|
563 |
-
}
|
564 |
-
|
565 |
-
.factory-bootstrap-330 .text-info {
|
566 |
-
color: #31708f;
|
567 |
-
}
|
568 |
-
|
569 |
-
.factory-bootstrap-330 .text-info:hover {
|
570 |
-
color: #245269;
|
571 |
-
}
|
572 |
-
|
573 |
-
.factory-bootstrap-330 .text-left {
|
574 |
-
text-align: left;
|
575 |
-
}
|
576 |
-
|
577 |
-
.factory-bootstrap-330 .text-right {
|
578 |
-
text-align: right;
|
579 |
-
}
|
580 |
-
|
581 |
-
.factory-bootstrap-330 .text-center {
|
582 |
-
text-align: center;
|
583 |
-
}
|
584 |
-
|
585 |
-
.factory-bootstrap-330 .page-header {
|
586 |
-
padding-bottom: 9px;
|
587 |
-
margin: 40px 0 20px;
|
588 |
-
border-bottom: 1px solid #eeeeee;
|
589 |
-
}
|
590 |
-
|
591 |
-
.factory-bootstrap-330 ul,
|
592 |
-
.factory-bootstrap-330 ol {
|
593 |
-
margin-top: 0;
|
594 |
-
margin-bottom: 10px;
|
595 |
-
}
|
596 |
-
|
597 |
-
.factory-bootstrap-330 ul ul,
|
598 |
-
.factory-bootstrap-330 ol ul,
|
599 |
-
.factory-bootstrap-330 ul ol,
|
600 |
-
.factory-bootstrap-330 ol ol {
|
601 |
-
margin-bottom: 0;
|
602 |
-
}
|
603 |
-
|
604 |
-
.factory-bootstrap-330 .list-unstyled {
|
605 |
-
padding-left: 0;
|
606 |
-
list-style: none;
|
607 |
-
}
|
608 |
-
|
609 |
-
.factory-bootstrap-330 .list-inline {
|
610 |
-
padding-left: 0;
|
611 |
-
list-style: none;
|
612 |
-
}
|
613 |
-
|
614 |
-
.factory-bootstrap-330 .list-inline > li {
|
615 |
-
display: inline-block;
|
616 |
-
padding-right: 5px;
|
617 |
-
padding-left: 5px;
|
618 |
-
}
|
619 |
-
|
620 |
-
.factory-bootstrap-330 .list-inline > li:first-child {
|
621 |
-
padding-left: 0;
|
622 |
-
}
|
623 |
-
|
624 |
-
.factory-bootstrap-330 dl {
|
625 |
-
margin-top: 0;
|
626 |
-
margin-bottom: 20px;
|
627 |
-
}
|
628 |
-
|
629 |
-
.factory-bootstrap-330 dt,
|
630 |
-
.factory-bootstrap-330 dd {
|
631 |
-
line-height: 1.428571429;
|
632 |
-
}
|
633 |
-
|
634 |
-
.factory-bootstrap-330 dt {
|
635 |
-
font-weight: bold;
|
636 |
-
}
|
637 |
-
|
638 |
-
.factory-bootstrap-330 dd {
|
639 |
-
margin-left: 0;
|
640 |
-
}
|
641 |
-
|
642 |
-
@media (min-width: 768px) {
|
643 |
-
.dl-horizontal dt {
|
644 |
-
float: left;
|
645 |
-
width: 160px;
|
646 |
-
overflow: hidden;
|
647 |
-
clear: left;
|
648 |
-
text-align: right;
|
649 |
-
text-overflow: ellipsis;
|
650 |
-
white-space: nowrap;
|
651 |
-
}
|
652 |
-
|
653 |
-
.dl-horizontal dd {
|
654 |
-
margin-left: 180px;
|
655 |
-
}
|
656 |
-
|
657 |
-
.dl-horizontal dd:before,
|
658 |
-
.dl-horizontal dd:after {
|
659 |
-
display: table;
|
660 |
-
content: " ";
|
661 |
-
}
|
662 |
-
|
663 |
-
.dl-horizontal dd:after {
|
664 |
-
clear: both;
|
665 |
-
}
|
666 |
-
|
667 |
-
.dl-horizontal dd:before,
|
668 |
-
.dl-horizontal dd:after {
|
669 |
-
display: table;
|
670 |
-
content: " ";
|
671 |
-
}
|
672 |
-
|
673 |
-
.dl-horizontal dd:after {
|
674 |
-
clear: both;
|
675 |
-
}
|
676 |
-
}
|
677 |
-
|
678 |
-
.factory-bootstrap-330 abbr[title],
|
679 |
-
.factory-bootstrap-330 abbr[data-original-title] {
|
680 |
-
cursor: help;
|
681 |
-
border-bottom: 1px dotted #999999;
|
682 |
-
}
|
683 |
-
|
684 |
-
.factory-bootstrap-330 .initialism {
|
685 |
-
font-size: 90%;
|
686 |
-
text-transform: uppercase;
|
687 |
-
}
|
688 |
-
|
689 |
-
.factory-bootstrap-330 blockquote {
|
690 |
-
padding: 10px 20px;
|
691 |
-
margin: 0 0 20px;
|
692 |
-
border-left: 5px solid #eeeeee;
|
693 |
-
}
|
694 |
-
|
695 |
-
.factory-bootstrap-330 blockquote p {
|
696 |
-
font-size: 17.5px;
|
697 |
-
font-weight: 300;
|
698 |
-
line-height: 1.25;
|
699 |
-
}
|
700 |
-
|
701 |
-
.factory-bootstrap-330 blockquote p:last-child {
|
702 |
-
margin-bottom: 0;
|
703 |
-
}
|
704 |
-
|
705 |
-
.factory-bootstrap-330 blockquote small,
|
706 |
-
.factory-bootstrap-330 blockquote .small {
|
707 |
-
display: block;
|
708 |
-
line-height: 1.428571429;
|
709 |
-
color: #999999;
|
710 |
-
}
|
711 |
-
|
712 |
-
.factory-bootstrap-330 blockquote small:before,
|
713 |
-
.factory-bootstrap-330 blockquote .small:before {
|
714 |
-
content: '\2014 \00A0';
|
715 |
-
}
|
716 |
-
|
717 |
-
.factory-bootstrap-330 blockquote.pull-right {
|
718 |
-
padding-right: 15px;
|
719 |
-
padding-left: 0;
|
720 |
-
border-right: 5px solid #eeeeee;
|
721 |
-
border-left: 0;
|
722 |
-
}
|
723 |
-
|
724 |
-
.factory-bootstrap-330 blockquote.pull-right p,
|
725 |
-
.factory-bootstrap-330 blockquote.pull-right small,
|
726 |
-
.factory-bootstrap-330 blockquote.pull-right .small {
|
727 |
-
text-align: right;
|
728 |
-
}
|
729 |
-
|
730 |
-
.factory-bootstrap-330 blockquote.pull-right small:before,
|
731 |
-
.factory-bootstrap-330 blockquote.pull-right .small:before {
|
732 |
-
content: '';
|
733 |
-
}
|
734 |
-
|
735 |
-
.factory-bootstrap-330 blockquote.pull-right small:after,
|
736 |
-
.factory-bootstrap-330 blockquote.pull-right .small:after {
|
737 |
-
content: '\00A0 \2014';
|
738 |
-
}
|
739 |
-
|
740 |
-
.factory-bootstrap-330 blockquote:before,
|
741 |
-
.factory-bootstrap-330 blockquote:after {
|
742 |
-
content: "";
|
743 |
-
}
|
744 |
-
|
745 |
-
.factory-bootstrap-330 address {
|
746 |
-
margin-bottom: 20px;
|
747 |
-
font-style: normal;
|
748 |
-
line-height: 1.428571429;
|
749 |
-
}
|
750 |
-
|
751 |
-
.factory-bootstrap-330 code,
|
752 |
-
.factory-bootstrap-330 kbd,
|
753 |
-
.factory-bootstrap-330 pre,
|
754 |
-
.factory-bootstrap-330 samp {
|
755 |
-
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
|
756 |
-
}
|
757 |
-
|
758 |
-
.factory-bootstrap-330 code {
|
759 |
-
padding: 2px 4px;
|
760 |
-
font-size: 90%;
|
761 |
-
color: #c7254e;
|
762 |
-
white-space: nowrap;
|
763 |
-
background-color: #f9f2f4;
|
764 |
-
border-radius: 4px;
|
765 |
-
}
|
766 |
-
|
767 |
-
.factory-bootstrap-330 pre {
|
768 |
-
display: block;
|
769 |
-
padding: 9.5px;
|
770 |
-
margin: 0 0 10px;
|
771 |
-
font-size: 13px;
|
772 |
-
line-height: 1.428571429;
|
773 |
-
color: #333333;
|
774 |
-
word-break: break-all;
|
775 |
-
word-wrap: break-word;
|
776 |
-
background-color: #f5f5f5;
|
777 |
-
border: 1px solid #cccccc;
|
778 |
-
border-radius: 4px;
|
779 |
-
}
|
780 |
-
|
781 |
-
.factory-bootstrap-330 pre code {
|
782 |
-
padding: 0;
|
783 |
-
font-size: inherit;
|
784 |
-
color: inherit;
|
785 |
-
white-space: pre-wrap;
|
786 |
-
background-color: transparent;
|
787 |
-
border-radius: 0;
|
788 |
-
}
|
789 |
-
|
790 |
-
.factory-bootstrap-330 .pre-scrollable {
|
791 |
-
max-height: 340px;
|
792 |
-
overflow-y: scroll;
|
793 |
-
}
|
794 |
-
|
795 |
-
.factory-bootstrap-330 .container {
|
796 |
-
padding-right: 15px;
|
797 |
-
padding-left: 15px;
|
798 |
-
margin-right: auto;
|
799 |
-
margin-left: auto;
|
800 |
-
}
|
801 |
-
|
802 |
-
.factory-bootstrap-330 .container:before,
|
803 |
-
.factory-bootstrap-330 .container:after {
|
804 |
-
display: table;
|
805 |
-
content: " ";
|
806 |
-
}
|
807 |
-
|
808 |
-
.factory-bootstrap-330 .container:after {
|
809 |
-
clear: both;
|
810 |
-
}
|
811 |
-
|
812 |
-
.factory-bootstrap-330 .container:before,
|
813 |
-
.factory-bootstrap-330 .container:after {
|
814 |
-
display: table;
|
815 |
-
content: " ";
|
816 |
-
}
|
817 |
-
|
818 |
-
.factory-bootstrap-330 .container:after {
|
819 |
-
clear: both;
|
820 |
-
}
|
821 |
-
|
822 |
-
@media (min-width: 768px) {
|
823 |
-
.container {
|
824 |
-
width: 750px;
|
825 |
-
}
|
826 |
-
}
|
827 |
-
|
828 |
-
@media (min-width: 992px) {
|
829 |
-
.container {
|
830 |
-
width: 970px;
|
831 |
-
}
|
832 |
-
}
|
833 |
-
|
834 |
-
@media (min-width: 1200px) {
|
835 |
-
.container {
|
836 |
-
width: 1170px;
|
837 |
-
}
|
838 |
-
}
|
839 |
-
|
840 |
-
.factory-bootstrap-330 .row {
|
841 |
-
margin-right: -15px;
|
842 |
-
margin-left: -15px;
|
843 |
-
}
|
844 |
-
|
845 |
-
.factory-bootstrap-330 .row:before,
|
846 |
-
.factory-bootstrap-330 .row:after {
|
847 |
-
display: table;
|
848 |
-
content: " ";
|
849 |
-
}
|
850 |
-
|
851 |
-
.factory-bootstrap-330 .row:after {
|
852 |
-
clear: both;
|
853 |
-
}
|
854 |
-
|
855 |
-
.factory-bootstrap-330 .row:before,
|
856 |
-
.factory-bootstrap-330 .row:after {
|
857 |
-
display: table;
|
858 |
-
content: " ";
|
859 |
-
}
|
860 |
-
|
861 |
-
.factory-bootstrap-330 .row:after {
|
862 |
-
clear: both;
|
863 |
-
}
|
864 |
-
|
865 |
-
.factory-bootstrap-330 .col-xs-1,
|
866 |
-
.factory-bootstrap-330 .col-sm-1,
|
867 |
-
.factory-bootstrap-330 .col-md-1,
|
868 |
-
.factory-bootstrap-330 .col-lg-1,
|
869 |
-
.factory-bootstrap-330 .col-xs-2,
|
870 |
-
.factory-bootstrap-330 .col-sm-2,
|
871 |
-
.factory-bootstrap-330 .col-md-2,
|
872 |
-
.factory-bootstrap-330 .col-lg-2,
|
873 |
-
.factory-bootstrap-330 .col-xs-3,
|
874 |
-
.factory-bootstrap-330 .col-sm-3,
|
875 |
-
.factory-bootstrap-330 .col-md-3,
|
876 |
-
.factory-bootstrap-330 .col-lg-3,
|
877 |
-
.factory-bootstrap-330 .col-xs-4,
|
878 |
-
.factory-bootstrap-330 .col-sm-4,
|
879 |
-
.factory-bootstrap-330 .col-md-4,
|
880 |
-
.factory-bootstrap-330 .col-lg-4,
|
881 |
-
.factory-bootstrap-330 .col-xs-5,
|
882 |
-
.factory-bootstrap-330 .col-sm-5,
|
883 |
-
.factory-bootstrap-330 .col-md-5,
|
884 |
-
.factory-bootstrap-330 .col-lg-5,
|
885 |
-
.factory-bootstrap-330 .col-xs-6,
|
886 |
-
.factory-bootstrap-330 .col-sm-6,
|
887 |
-
.factory-bootstrap-330 .col-md-6,
|
888 |
-
.factory-bootstrap-330 .col-lg-6,
|
889 |
-
.factory-bootstrap-330 .col-xs-7,
|
890 |
-
.factory-bootstrap-330 .col-sm-7,
|
891 |
-
.factory-bootstrap-330 .col-md-7,
|
892 |
-
.factory-bootstrap-330 .col-lg-7,
|
893 |
-
.factory-bootstrap-330 .col-xs-8,
|
894 |
-
.factory-bootstrap-330 .col-sm-8,
|
895 |
-
.factory-bootstrap-330 .col-md-8,
|
896 |
-
.factory-bootstrap-330 .col-lg-8,
|
897 |
-
.factory-bootstrap-330 .col-xs-9,
|
898 |
-
.factory-bootstrap-330 .col-sm-9,
|
899 |
-
.factory-bootstrap-330 .col-md-9,
|
900 |
-
.factory-bootstrap-330 .col-lg-9,
|
901 |
-
.factory-bootstrap-330 .col-xs-10,
|
902 |
-
.factory-bootstrap-330 .col-sm-10,
|
903 |
-
.factory-bootstrap-330 .col-md-10,
|
904 |
-
.factory-bootstrap-330 .col-lg-10,
|
905 |
-
.factory-bootstrap-330 .col-xs-11,
|
906 |
-
.factory-bootstrap-330 .col-sm-11,
|
907 |
-
.factory-bootstrap-330 .col-md-11,
|
908 |
-
.factory-bootstrap-330 .col-lg-11,
|
909 |
-
.factory-bootstrap-330 .col-xs-12,
|
910 |
-
.factory-bootstrap-330 .col-sm-12,
|
911 |
-
.factory-bootstrap-330 .col-md-12,
|
912 |
-
.factory-bootstrap-330 .col-lg-12 {
|
913 |
-
position: relative;
|
914 |
-
min-height: 1px;
|
915 |
-
padding-right: 15px;
|
916 |
-
padding-left: 15px;
|
917 |
-
}
|
918 |
-
|
919 |
-
.factory-bootstrap-330 .col-xs-1,
|
920 |
-
.factory-bootstrap-330 .col-xs-2,
|
921 |
-
.factory-bootstrap-330 .col-xs-3,
|
922 |
-
.factory-bootstrap-330 .col-xs-4,
|
923 |
-
.factory-bootstrap-330 .col-xs-5,
|
924 |
-
.factory-bootstrap-330 .col-xs-6,
|
925 |
-
.factory-bootstrap-330 .col-xs-7,
|
926 |
-
.factory-bootstrap-330 .col-xs-8,
|
927 |
-
.factory-bootstrap-330 .col-xs-9,
|
928 |
-
.factory-bootstrap-330 .col-xs-10,
|
929 |
-
.factory-bootstrap-330 .col-xs-11,
|
930 |
-
.factory-bootstrap-330 .col-xs-12 {
|
931 |
-
float: left;
|
932 |
-
}
|
933 |
-
|
934 |
-
.factory-bootstrap-330 .col-xs-12 {
|
935 |
-
width: 100%;
|
936 |
-
}
|
937 |
-
|
938 |
-
.factory-bootstrap-330 .col-xs-11 {
|
939 |
-
width: 91.66666666666666%;
|
940 |
-
}
|
941 |
-
|
942 |
-
.factory-bootstrap-330 .col-xs-10 {
|
943 |
-
width: 83.33333333333334%;
|
944 |
-
}
|
945 |
-
|
946 |
-
.factory-bootstrap-330 .col-xs-9 {
|
947 |
-
width: 75%;
|
948 |
-
}
|
949 |
-
|
950 |
-
.factory-bootstrap-330 .col-xs-8 {
|
951 |
-
width: 66.66666666666666%;
|
952 |
-
}
|
953 |
-
|
954 |
-
.factory-bootstrap-330 .col-xs-7 {
|
955 |
-
width: 58.333333333333336%;
|
956 |
-
}
|
957 |
-
|
958 |
-
.factory-bootstrap-330 .col-xs-6 {
|
959 |
-
width: 50%;
|
960 |
-
}
|
961 |
-
|
962 |
-
.factory-bootstrap-330 .col-xs-5 {
|
963 |
-
width: 41.66666666666667%;
|
964 |
-
}
|
965 |
-
|
966 |
-
.factory-bootstrap-330 .col-xs-4 {
|
967 |
-
width: 33.33333333333333%;
|
968 |
-
}
|
969 |
-
|
970 |
-
.factory-bootstrap-330 .col-xs-3 {
|
971 |
-
width: 25%;
|
972 |
-
}
|
973 |
-
|
974 |
-
.factory-bootstrap-330 .col-xs-2 {
|
975 |
-
width: 16.666666666666664%;
|
976 |
-
}
|
977 |
-
|
978 |
-
.factory-bootstrap-330 .col-xs-1 {
|
979 |
-
width: 8.333333333333332%;
|
980 |
-
}
|
981 |
-
|
982 |
-
.factory-bootstrap-330 .col-xs-pull-12 {
|
983 |
-
right: 100%;
|
984 |
-
}
|
985 |
-
|
986 |
-
.factory-bootstrap-330 .col-xs-pull-11 {
|
987 |
-
right: 91.66666666666666%;
|
988 |
-
}
|
989 |
-
|
990 |
-
.factory-bootstrap-330 .col-xs-pull-10 {
|
991 |
-
right: 83.33333333333334%;
|
992 |
-
}
|
993 |
-
|
994 |
-
.factory-bootstrap-330 .col-xs-pull-9 {
|
995 |
-
right: 75%;
|
996 |
-
}
|
997 |
-
|
998 |
-
.factory-bootstrap-330 .col-xs-pull-8 {
|
999 |
-
right: 66.66666666666666%;
|
1000 |
-
}
|
1001 |
-
|
1002 |
-
.factory-bootstrap-330 .col-xs-pull-7 {
|
1003 |
-
right: 58.333333333333336%;
|
1004 |
-
}
|
1005 |
-
|
1006 |
-
.factory-bootstrap-330 .col-xs-pull-6 {
|
1007 |
-
right: 50%;
|
1008 |
-
}
|
1009 |
-
|
1010 |
-
.factory-bootstrap-330 .col-xs-pull-5 {
|
1011 |
-
right: 41.66666666666667%;
|
1012 |
-
}
|
1013 |
-
|
1014 |
-
.factory-bootstrap-330 .col-xs-pull-4 {
|
1015 |
-
right: 33.33333333333333%;
|
1016 |
-
}
|
1017 |
-
|
1018 |
-
.factory-bootstrap-330 .col-xs-pull-3 {
|
1019 |
-
right: 25%;
|
1020 |
-
}
|
1021 |
-
|
1022 |
-
.factory-bootstrap-330 .col-xs-pull-2 {
|
1023 |
-
right: 16.666666666666664%;
|
1024 |
-
}
|
1025 |
-
|
1026 |
-
.factory-bootstrap-330 .col-xs-pull-1 {
|
1027 |
-
right: 8.333333333333332%;
|
1028 |
-
}
|
1029 |
-
|
1030 |
-
.factory-bootstrap-330 .col-xs-pull-0 {
|
1031 |
-
right: 0;
|
1032 |
-
}
|
1033 |
-
|
1034 |
-
.factory-bootstrap-330 .col-xs-push-12 {
|
1035 |
-
left: 100%;
|
1036 |
-
}
|
1037 |
-
|
1038 |
-
.factory-bootstrap-330 .col-xs-push-11 {
|
1039 |
-
left: 91.66666666666666%;
|
1040 |
-
}
|
1041 |
-
|
1042 |
-
.factory-bootstrap-330 .col-xs-push-10 {
|
1043 |
-
left: 83.33333333333334%;
|
1044 |
-
}
|
1045 |
-
|
1046 |
-
.factory-bootstrap-330 .col-xs-push-9 {
|
1047 |
-
left: 75%;
|
1048 |
-
}
|
1049 |
-
|
1050 |
-
.factory-bootstrap-330 .col-xs-push-8 {
|
1051 |
-
left: 66.66666666666666%;
|
1052 |
-
}
|
1053 |
-
|
1054 |
-
.factory-bootstrap-330 .col-xs-push-7 {
|
1055 |
-
left: 58.333333333333336%;
|
1056 |
-
}
|
1057 |
-
|
1058 |
-
.factory-bootstrap-330 .col-xs-push-6 {
|
1059 |
-
left: 50%;
|
1060 |
-
}
|
1061 |
-
|
1062 |
-
.factory-bootstrap-330 .col-xs-push-5 {
|
1063 |
-
left: 41.66666666666667%;
|
1064 |
-
}
|
1065 |
-
|
1066 |
-
.factory-bootstrap-330 .col-xs-push-4 {
|
1067 |
-
left: 33.33333333333333%;
|
1068 |
-
}
|
1069 |
-
|
1070 |
-
.factory-bootstrap-330 .col-xs-push-3 {
|
1071 |
-
left: 25%;
|
1072 |
-
}
|
1073 |
-
|
1074 |
-
.factory-bootstrap-330 .col-xs-push-2 {
|
1075 |
-
left: 16.666666666666664%;
|
1076 |
-
}
|
1077 |
-
|
1078 |
-
.factory-bootstrap-330 .col-xs-push-1 {
|
1079 |
-
left: 8.333333333333332%;
|
1080 |
-
}
|
1081 |
-
|
1082 |
-
.factory-bootstrap-330 .col-xs-push-0 {
|
1083 |
-
left: 0;
|
1084 |
-
}
|
1085 |
-
|
1086 |
-
.factory-bootstrap-330 .col-xs-offset-12 {
|
1087 |
-
margin-left: 100%;
|
1088 |
-
}
|
1089 |
-
|
1090 |
-
.factory-bootstrap-330 .col-xs-offset-11 {
|
1091 |
-
margin-left: 91.66666666666666%;
|
1092 |
-
}
|
1093 |
-
|
1094 |
-
.factory-bootstrap-330 .col-xs-offset-10 {
|
1095 |
-
margin-left: 83.33333333333334%;
|
1096 |
-
}
|
1097 |
-
|
1098 |
-
.factory-bootstrap-330 .col-xs-offset-9 {
|
1099 |
-
margin-left: 75%;
|
1100 |
-
}
|
1101 |
-
|
1102 |
-
.factory-bootstrap-330 .col-xs-offset-8 {
|
1103 |
-
margin-left: 66.66666666666666%;
|
1104 |
-
}
|
1105 |
-
|
1106 |
-
.factory-bootstrap-330 .col-xs-offset-7 {
|
1107 |
-
margin-left: 58.333333333333336%;
|
1108 |
-
}
|
1109 |
-
|
1110 |
-
.factory-bootstrap-330 .col-xs-offset-6 {
|
1111 |
-
margin-left: 50%;
|
1112 |
-
}
|
1113 |
-
|
1114 |
-
.factory-bootstrap-330 .col-xs-offset-5 {
|
1115 |
-
margin-left: 41.66666666666667%;
|
1116 |
-
}
|
1117 |
-
|
1118 |
-
.factory-bootstrap-330 .col-xs-offset-4 {
|
1119 |
-
margin-left: 33.33333333333333%;
|
1120 |
-
}
|
1121 |
-
|
1122 |
-
.factory-bootstrap-330 .col-xs-offset-3 {
|
1123 |
-
margin-left: 25%;
|
1124 |
-
}
|
1125 |
-
|
1126 |
-
.factory-bootstrap-330 .col-xs-offset-2 {
|
1127 |
-
margin-left: 16.666666666666664%;
|
1128 |
-
}
|
1129 |
-
|
1130 |
-
.factory-bootstrap-330 .col-xs-offset-1 {
|
1131 |
-
margin-left: 8.333333333333332%;
|
1132 |
-
}
|
1133 |
-
|
1134 |
-
.factory-bootstrap-330 .col-xs-offset-0 {
|
1135 |
-
margin-left: 0;
|
1136 |
-
}
|
1137 |
-
|
1138 |
-
@media (min-width: 768px) {
|
1139 |
-
.col-sm-1,
|
1140 |
-
.col-sm-2,
|
1141 |
-
.col-sm-3,
|
1142 |
-
.col-sm-4,
|
1143 |
-
.col-sm-5,
|
1144 |
-
.col-sm-6,
|
1145 |
-
.col-sm-7,
|
1146 |
-
.col-sm-8,
|
1147 |
-
.col-sm-9,
|
1148 |
-
.col-sm-10,
|
1149 |
-
.col-sm-11,
|
1150 |
-
.col-sm-12 {
|
1151 |
-
float: left;
|
1152 |
-
}
|
1153 |
-
|
1154 |
-
.col-sm-12 {
|
1155 |
-
width: 100%;
|
1156 |
-
}
|
1157 |
-
|
1158 |
-
.col-sm-11 {
|
1159 |
-
width: 91.66666666666666%;
|
1160 |
-
}
|
1161 |
-
|
1162 |
-
.col-sm-10 {
|
1163 |
-
width: 83.33333333333334%;
|
1164 |
-
}
|
1165 |
-
|
1166 |
-
.col-sm-9 {
|
1167 |
-
width: 75%;
|
1168 |
-
}
|
1169 |
-
|
1170 |
-
.col-sm-8 {
|
1171 |
-
width: 66.66666666666666%;
|
1172 |
-
}
|
1173 |
-
|
1174 |
-
.col-sm-7 {
|
1175 |
-
width: 58.333333333333336%;
|
1176 |
-
}
|
1177 |
-
|
1178 |
-
.col-sm-6 {
|
1179 |
-
width: 50%;
|
1180 |
-
}
|
1181 |
-
|
1182 |
-
.col-sm-5 {
|
1183 |
-
width: 41.66666666666667%;
|
1184 |
-
}
|
1185 |
-
|
1186 |
-
.col-sm-4 {
|
1187 |
-
width: 33.33333333333333%;
|
1188 |
-
}
|
1189 |
-
|
1190 |
-
.col-sm-3 {
|
1191 |
-
width: 25%;
|
1192 |
-
}
|
1193 |
-
|
1194 |
-
.col-sm-2 {
|
1195 |
-
width: 16.666666666666664%;
|
1196 |
-
}
|
1197 |
-
|
1198 |
-
.col-sm-1 {
|
1199 |
-
width: 8.333333333333332%;
|
1200 |
-
}
|
1201 |
-
|
1202 |
-
.col-sm-pull-12 {
|
1203 |
-
right: 100%;
|
1204 |
-
}
|
1205 |
-
|
1206 |
-
.col-sm-pull-11 {
|
1207 |
-
right: 91.66666666666666%;
|
1208 |
-
}
|
1209 |
-
|
1210 |
-
.col-sm-pull-10 {
|
1211 |
-
right: 83.33333333333334%;
|
1212 |
-
}
|
1213 |
-
|
1214 |
-
.col-sm-pull-9 {
|
1215 |
-
right: 75%;
|
1216 |
-
}
|
1217 |
-
|
1218 |
-
.col-sm-pull-8 {
|
1219 |
-
right: 66.66666666666666%;
|
1220 |
-
}
|
1221 |
-
|
1222 |
-
.col-sm-pull-7 {
|
1223 |
-
right: 58.333333333333336%;
|
1224 |
-
}
|
1225 |
-
|
1226 |
-
.col-sm-pull-6 {
|
1227 |
-
right: 50%;
|
1228 |
-
}
|
1229 |
-
|
1230 |
-
.col-sm-pull-5 {
|
1231 |
-
right: 41.66666666666667%;
|
1232 |
-
}
|
1233 |
-
|
1234 |
-
.col-sm-pull-4 {
|
1235 |
-
right: 33.33333333333333%;
|
1236 |
-
}
|
1237 |
-
|
1238 |
-
.col-sm-pull-3 {
|
1239 |
-
right: 25%;
|
1240 |
-
}
|
1241 |
-
|
1242 |
-
.col-sm-pull-2 {
|
1243 |
-
right: 16.666666666666664%;
|
1244 |
-
}
|
1245 |
-
|
1246 |
-
.col-sm-pull-1 {
|
1247 |
-
right: 8.333333333333332%;
|
1248 |
-
}
|
1249 |
-
|
1250 |
-
.col-sm-pull-0 {
|
1251 |
-
right: 0;
|
1252 |
-
}
|
1253 |
-
|
1254 |
-
.col-sm-push-12 {
|
1255 |
-
left: 100%;
|
1256 |
-
}
|
1257 |
-
|
1258 |
-
.col-sm-push-11 {
|
1259 |
-
left: 91.66666666666666%;
|
1260 |
-
}
|
1261 |
-
|
1262 |
-
.col-sm-push-10 {
|
1263 |
-
left: 83.33333333333334%;
|
1264 |
-
}
|
1265 |
-
|
1266 |
-
.col-sm-push-9 {
|
1267 |
-
left: 75%;
|
1268 |
-
}
|
1269 |
-
|
1270 |
-
.col-sm-push-8 {
|
1271 |
-
left: 66.66666666666666%;
|
1272 |
-
}
|
1273 |
-
|
1274 |
-
.col-sm-push-7 {
|
1275 |
-
left: 58.333333333333336%;
|
1276 |
-
}
|
1277 |
-
|
1278 |
-
.col-sm-push-6 {
|
1279 |
-
left: 50%;
|
1280 |
-
}
|
1281 |
-
|
1282 |
-
.col-sm-push-5 {
|
1283 |
-
left: 41.66666666666667%;
|
1284 |
-
}
|
1285 |
-
|
1286 |
-
.col-sm-push-4 {
|
1287 |
-
left: 33.33333333333333%;
|
1288 |
-
}
|
1289 |
-
|
1290 |
-
.col-sm-push-3 {
|
1291 |
-
left: 25%;
|
1292 |
-
}
|
1293 |
-
|
1294 |
-
.col-sm-push-2 {
|
1295 |
-
left: 16.666666666666664%;
|
1296 |
-
}
|
1297 |
-
|
1298 |
-
.col-sm-push-1 {
|
1299 |
-
left: 8.333333333333332%;
|
1300 |
-
}
|
1301 |
-
|
1302 |
-
.col-sm-push-0 {
|
1303 |
-
left: 0;
|
1304 |
-
}
|
1305 |
-
|
1306 |
-
.col-sm-offset-12 {
|
1307 |
-
margin-left: 100%;
|
1308 |
-
}
|
1309 |
-
|
1310 |
-
.col-sm-offset-11 {
|
1311 |
-
margin-left: 91.66666666666666%;
|
1312 |
-
}
|
1313 |
-
|
1314 |
-
.col-sm-offset-10 {
|
1315 |
-
margin-left: 83.33333333333334%;
|
1316 |
-
}
|
1317 |
-
|
1318 |
-
.col-sm-offset-9 {
|
1319 |
-
margin-left: 75%;
|
1320 |
-
}
|
1321 |
-
|
1322 |
-
.col-sm-offset-8 {
|
1323 |
-
margin-left: 66.66666666666666%;
|
1324 |
-
}
|
1325 |
-
|
1326 |
-
.col-sm-offset-7 {
|
1327 |
-
margin-left: 58.333333333333336%;
|
1328 |
-
}
|
1329 |
-
|
1330 |
-
.col-sm-offset-6 {
|
1331 |
-
margin-left: 50%;
|
1332 |
-
}
|
1333 |
-
|
1334 |
-
.col-sm-offset-5 {
|
1335 |
-
margin-left: 41.66666666666667%;
|
1336 |
-
}
|
1337 |
-
|
1338 |
-
.col-sm-offset-4 {
|
1339 |
-
margin-left: 33.33333333333333%;
|
1340 |
-
}
|
1341 |
-
|
1342 |
-
.col-sm-offset-3 {
|
1343 |
-
margin-left: 25%;
|
1344 |
-
}
|
1345 |
-
|
1346 |
-
.col-sm-offset-2 {
|
1347 |
-
margin-left: 16.666666666666664%;
|
1348 |
-
}
|
1349 |
-
|
1350 |
-
.col-sm-offset-1 {
|
1351 |
-
margin-left: 8.333333333333332%;
|
1352 |
-
}
|
1353 |
-
|
1354 |
-
.col-sm-offset-0 {
|
1355 |
-
margin-left: 0;
|
1356 |
-
}
|
1357 |
-
}
|
1358 |
-
|
1359 |
-
@media (min-width: 992px) {
|
1360 |
-
.col-md-1,
|
1361 |
-
.col-md-2,
|
1362 |
-
.col-md-3,
|
1363 |
-
.col-md-4,
|
1364 |
-
.col-md-5,
|
1365 |
-
.col-md-6,
|
1366 |
-
.col-md-7,
|
1367 |
-
.col-md-8,
|
1368 |
-
.col-md-9,
|
1369 |
-
.col-md-10,
|
1370 |
-
.col-md-11,
|
1371 |
-
.col-md-12 {
|
1372 |
-
float: left;
|
1373 |
-
}
|
1374 |
-
|
1375 |
-
.col-md-12 {
|
1376 |
-
width: 100%;
|
1377 |
-
}
|
1378 |
-
|
1379 |
-
.col-md-11 {
|
1380 |
-
width: 91.66666666666666%;
|
1381 |
-
}
|
1382 |
-
|
1383 |
-
.col-md-10 {
|
1384 |
-
width: 83.33333333333334%;
|
1385 |
-
}
|
1386 |
-
|
1387 |
-
.col-md-9 {
|
1388 |
-
width: 75%;
|
1389 |
-
}
|
1390 |
-
|
1391 |
-
.col-md-8 {
|
1392 |
-
width: 66.66666666666666%;
|
1393 |
-
}
|
1394 |
-
|
1395 |
-
.col-md-7 {
|
1396 |
-
width: 58.333333333333336%;
|
1397 |
-
}
|
1398 |
-
|
1399 |
-
.col-md-6 {
|
1400 |
-
width: 50%;
|
1401 |
-
}
|
1402 |
-
|
1403 |
-
.col-md-5 {
|
1404 |
-
width: 41.66666666666667%;
|
1405 |
-
}
|
1406 |
-
|
1407 |
-
.col-md-4 {
|
1408 |
-
width: 33.33333333333333%;
|
1409 |
-
}
|
1410 |
-
|
1411 |
-
.col-md-3 {
|
1412 |
-
width: 25%;
|
1413 |
-
}
|
1414 |
-
|
1415 |
-
.col-md-2 {
|
1416 |
-
width: 16.666666666666664%;
|
1417 |
-
}
|
1418 |
-
|
1419 |
-
.col-md-1 {
|
1420 |
-
width: 8.333333333333332%;
|
1421 |
-
}
|
1422 |
-
|
1423 |
-
.col-md-pull-12 {
|
1424 |
-
right: 100%;
|
1425 |
-
}
|
1426 |
-
|
1427 |
-
.col-md-pull-11 {
|
1428 |
-
right: 91.66666666666666%;
|
1429 |
-
}
|
1430 |
-
|
1431 |
-
.col-md-pull-10 {
|
1432 |
-
right: 83.33333333333334%;
|
1433 |
-
}
|
1434 |
-
|
1435 |
-
.col-md-pull-9 {
|
1436 |
-
right: 75%;
|
1437 |
-
}
|
1438 |
-
|
1439 |
-
.col-md-pull-8 {
|
1440 |
-
right: 66.66666666666666%;
|
1441 |
-
}
|
1442 |
-
|
1443 |
-
.col-md-pull-7 {
|
1444 |
-
right: 58.333333333333336%;
|
1445 |
-
}
|
1446 |
-
|
1447 |
-
.col-md-pull-6 {
|
1448 |
-
right: 50%;
|
1449 |
-
}
|
1450 |
-
|
1451 |
-
.col-md-pull-5 {
|
1452 |
-
right: 41.66666666666667%;
|
1453 |
-
}
|
1454 |
-
|
1455 |
-
.col-md-pull-4 {
|
1456 |
-
right: 33.33333333333333%;
|
1457 |
-
}
|
1458 |
-
|
1459 |
-
.col-md-pull-3 {
|
1460 |
-
right: 25%;
|
1461 |
-
}
|
1462 |
-
|
1463 |
-
.col-md-pull-2 {
|
1464 |
-
right: 16.666666666666664%;
|
1465 |
-
}
|
1466 |
-
|
1467 |
-
.col-md-pull-1 {
|
1468 |
-
right: 8.333333333333332%;
|
1469 |
-
}
|
1470 |
-
|
1471 |
-
.col-md-pull-0 {
|
1472 |
-
right: 0;
|
1473 |
-
}
|
1474 |
-
|
1475 |
-
.col-md-push-12 {
|
1476 |
-
left: 100%;
|
1477 |
-
}
|
1478 |
-
|
1479 |
-
.col-md-push-11 {
|
1480 |
-
left: 91.66666666666666%;
|
1481 |
-
}
|
1482 |
-
|
1483 |
-
.col-md-push-10 {
|
1484 |
-
left: 83.33333333333334%;
|
1485 |
-
}
|
1486 |
-
|
1487 |
-
.col-md-push-9 {
|
1488 |
-
left: 75%;
|
1489 |
-
}
|
1490 |
-
|
1491 |
-
.col-md-push-8 {
|
1492 |
-
left: 66.66666666666666%;
|
1493 |
-
}
|
1494 |
-
|
1495 |
-
.col-md-push-7 {
|
1496 |
-
left: 58.333333333333336%;
|
1497 |
-
}
|
1498 |
-
|
1499 |
-
.col-md-push-6 {
|
1500 |
-
left: 50%;
|
1501 |
-
}
|
1502 |
-
|
1503 |
-
.col-md-push-5 {
|
1504 |
-
left: 41.66666666666667%;
|
1505 |
-
}
|
1506 |
-
|
1507 |
-
.col-md-push-4 {
|
1508 |
-
left: 33.33333333333333%;
|
1509 |
-
}
|
1510 |
-
|
1511 |
-
.col-md-push-3 {
|
1512 |
-
left: 25%;
|
1513 |
-
}
|
1514 |
-
|
1515 |
-
.col-md-push-2 {
|
1516 |
-
left: 16.666666666666664%;
|
1517 |
-
}
|
1518 |
-
|
1519 |
-
.col-md-push-1 {
|
1520 |
-
left: 8.333333333333332%;
|
1521 |
-
}
|
1522 |
-
|
1523 |
-
.col-md-push-0 {
|
1524 |
-
left: 0;
|
1525 |
-
}
|
1526 |
-
|
1527 |
-
.col-md-offset-12 {
|
1528 |
-
margin-left: 100%;
|
1529 |
-
}
|
1530 |
-
|
1531 |
-
.col-md-offset-11 {
|
1532 |
-
margin-left: 91.66666666666666%;
|
1533 |
-
}
|
1534 |
-
|
1535 |
-
.col-md-offset-10 {
|
1536 |
-
margin-left: 83.33333333333334%;
|
1537 |
-
}
|
1538 |
-
|
1539 |
-
.col-md-offset-9 {
|
1540 |
-
margin-left: 75%;
|
1541 |
-
}
|
1542 |
-
|
1543 |
-
.col-md-offset-8 {
|
1544 |
-
margin-left: 66.66666666666666%;
|
1545 |
-
}
|
1546 |
-
|
1547 |
-
.col-md-offset-7 {
|
1548 |
-
margin-left: 58.333333333333336%;
|
1549 |
-
}
|
1550 |
-
|
1551 |
-
.col-md-offset-6 {
|
1552 |
-
margin-left: 50%;
|
1553 |
-
}
|
1554 |
-
|
1555 |
-
.col-md-offset-5 {
|
1556 |
-
margin-left: 41.66666666666667%;
|
1557 |
-
}
|
1558 |
-
|
1559 |
-
.col-md-offset-4 {
|
1560 |
-
margin-left: 33.33333333333333%;
|
1561 |
-
}
|
1562 |
-
|
1563 |
-
.col-md-offset-3 {
|
1564 |
-
margin-left: 25%;
|
1565 |
-
}
|
1566 |
-
|
1567 |
-
.col-md-offset-2 {
|
1568 |
-
margin-left: 16.666666666666664%;
|
1569 |
-
}
|
1570 |
-
|
1571 |
-
.col-md-offset-1 {
|
1572 |
-
margin-left: 8.333333333333332%;
|
1573 |
-
}
|
1574 |
-
|
1575 |
-
.col-md-offset-0 {
|
1576 |
-
margin-left: 0;
|
1577 |
-
}
|
1578 |
-
}
|
1579 |
-
|
1580 |
-
@media (min-width: 1200px) {
|
1581 |
-
.col-lg-1,
|
1582 |
-
.col-lg-2,
|
1583 |
-
.col-lg-3,
|
1584 |
-
.col-lg-4,
|
1585 |
-
.col-lg-5,
|
1586 |
-
.col-lg-6,
|
1587 |
-
.col-lg-7,
|
1588 |
-
.col-lg-8,
|
1589 |
-
.col-lg-9,
|
1590 |
-
.col-lg-10,
|
1591 |
-
.col-lg-11,
|
1592 |
-
.col-lg-12 {
|
1593 |
-
float: left;
|
1594 |
-
}
|
1595 |
-
|
1596 |
-
.col-lg-12 {
|
1597 |
-
width: 100%;
|
1598 |
-
}
|
1599 |
-
|
1600 |
-
.col-lg-11 {
|
1601 |
-
width: 91.66666666666666%;
|
1602 |
-
}
|
1603 |
-
|
1604 |
-
.col-lg-10 {
|
1605 |
-
width: 83.33333333333334%;
|
1606 |
-
}
|
1607 |
-
|
1608 |
-
.col-lg-9 {
|
1609 |
-
width: 75%;
|
1610 |
-
}
|
1611 |
-
|
1612 |
-
.col-lg-8 {
|
1613 |
-
width: 66.66666666666666%;
|
1614 |
-
}
|
1615 |
-
|
1616 |
-
.col-lg-7 {
|
1617 |
-
width: 58.333333333333336%;
|
1618 |
-
}
|
1619 |
-
|
1620 |
-
.col-lg-6 {
|
1621 |
-
width: 50%;
|
1622 |
-
}
|
1623 |
-
|
1624 |
-
.col-lg-5 {
|
1625 |
-
width: 41.66666666666667%;
|
1626 |
-
}
|
1627 |
-
|
1628 |
-
.col-lg-4 {
|
1629 |
-
width: 33.33333333333333%;
|
1630 |
-
}
|
1631 |
-
|
1632 |
-
.col-lg-3 {
|
1633 |
-
width: 25%;
|
1634 |
-
}
|
1635 |
-
|
1636 |
-
.col-lg-2 {
|
1637 |
-
width: 16.666666666666664%;
|
1638 |
-
}
|
1639 |
-
|
1640 |
-
.col-lg-1 {
|
1641 |
-
width: 8.333333333333332%;
|
1642 |
-
}
|
1643 |
-
|
1644 |
-
.col-lg-pull-12 {
|
1645 |
-
right: 100%;
|
1646 |
-
}
|
1647 |
-
|
1648 |
-
.col-lg-pull-11 {
|
1649 |
-
right: 91.66666666666666%;
|
1650 |
-
}
|
1651 |
-
|
1652 |
-
.col-lg-pull-10 {
|
1653 |
-
right: 83.33333333333334%;
|
1654 |
-
}
|
1655 |
-
|
1656 |
-
.col-lg-pull-9 {
|
1657 |
-
right: 75%;
|
1658 |
-
}
|
1659 |
-
|
1660 |
-
.col-lg-pull-8 {
|
1661 |
-
right: 66.66666666666666%;
|
1662 |
-
}
|
1663 |
-
|
1664 |
-
.col-lg-pull-7 {
|
1665 |
-
right: 58.333333333333336%;
|
1666 |
-
}
|
1667 |
-
|
1668 |
-
.col-lg-pull-6 {
|
1669 |
-
right: 50%;
|
1670 |
-
}
|
1671 |
-
|
1672 |
-
.col-lg-pull-5 {
|
1673 |
-
right: 41.66666666666667%;
|
1674 |
-
}
|
1675 |
-
|
1676 |
-
.col-lg-pull-4 {
|
1677 |
-
right: 33.33333333333333%;
|
1678 |
-
}
|
1679 |
-
|
1680 |
-
.col-lg-pull-3 {
|
1681 |
-
right: 25%;
|
1682 |
-
}
|
1683 |
-
|
1684 |
-
.col-lg-pull-2 {
|
1685 |
-
right: 16.666666666666664%;
|
1686 |
-
}
|
1687 |
-
|
1688 |
-
.col-lg-pull-1 {
|
1689 |
-
right: 8.333333333333332%;
|
1690 |
-
}
|
1691 |
-
|
1692 |
-
.col-lg-pull-0 {
|
1693 |
-
right: 0;
|
1694 |
-
}
|
1695 |
-
|
1696 |
-
.col-lg-push-12 {
|
1697 |
-
left: 100%;
|
1698 |
-
}
|
1699 |
-
|
1700 |
-
.col-lg-push-11 {
|
1701 |
-
left: 91.66666666666666%;
|
1702 |
-
}
|
1703 |
-
|
1704 |
-
.col-lg-push-10 {
|
1705 |
-
left: 83.33333333333334%;
|
1706 |
-
}
|
1707 |
-
|
1708 |
-
.col-lg-push-9 {
|
1709 |
-
left: 75%;
|
1710 |
-
}
|
1711 |
-
|
1712 |
-
.col-lg-push-8 {
|
1713 |
-
left: 66.66666666666666%;
|
1714 |
-
}
|
1715 |
-
|
1716 |
-
.col-lg-push-7 {
|
1717 |
-
left: 58.333333333333336%;
|
1718 |
-
}
|
1719 |
-
|
1720 |
-
.col-lg-push-6 {
|
1721 |
-
left: 50%;
|
1722 |
-
}
|
1723 |
-
|
1724 |
-
.col-lg-push-5 {
|
1725 |
-
left: 41.66666666666667%;
|
1726 |
-
}
|
1727 |
-
|
1728 |
-
.col-lg-push-4 {
|
1729 |
-
left: 33.33333333333333%;
|
1730 |
-
}
|
1731 |
-
|
1732 |
-
.col-lg-push-3 {
|
1733 |
-
left: 25%;
|
1734 |
-
}
|
1735 |
-
|
1736 |
-
.col-lg-push-2 {
|
1737 |
-
left: 16.666666666666664%;
|
1738 |
-
}
|
1739 |
-
|
1740 |
-
.col-lg-push-1 {
|
1741 |
-
left: 8.333333333333332%;
|
1742 |
-
}
|
1743 |
-
|
1744 |
-
.col-lg-push-0 {
|
1745 |
-
left: 0;
|
1746 |
-
}
|
1747 |
-
|
1748 |
-
.col-lg-offset-12 {
|
1749 |
-
margin-left: 100%;
|
1750 |
-
}
|
1751 |
-
|
1752 |
-
.col-lg-offset-11 {
|
1753 |
-
margin-left: 91.66666666666666%;
|
1754 |
-
}
|
1755 |
-
|
1756 |
-
.col-lg-offset-10 {
|
1757 |
-
margin-left: 83.33333333333334%;
|
1758 |
-
}
|
1759 |
-
|
1760 |
-
.col-lg-offset-9 {
|
1761 |
-
margin-left: 75%;
|
1762 |
-
}
|
1763 |
-
|
1764 |
-
.col-lg-offset-8 {
|
1765 |
-
margin-left: 66.66666666666666%;
|
1766 |
-
}
|
1767 |
-
|
1768 |
-
.col-lg-offset-7 {
|
1769 |
-
margin-left: 58.333333333333336%;
|
1770 |
-
}
|
1771 |
-
|
1772 |
-
.col-lg-offset-6 {
|
1773 |
-
margin-left: 50%;
|
1774 |
-
}
|
1775 |
-
|
1776 |
-
.col-lg-offset-5 {
|
1777 |
-
margin-left: 41.66666666666667%;
|
1778 |
-
}
|
1779 |
-
|
1780 |
-
.col-lg-offset-4 {
|
1781 |
-
margin-left: 33.33333333333333%;
|
1782 |
-
}
|
1783 |
-
|
1784 |
-
.col-lg-offset-3 {
|
1785 |
-
margin-left: 25%;
|
1786 |
-
}
|
1787 |
-
|
1788 |
-
.col-lg-offset-2 {
|
1789 |
-
margin-left: 16.666666666666664%;
|
1790 |
-
}
|
1791 |
-
|
1792 |
-
.col-lg-offset-1 {
|
1793 |
-
margin-left: 8.333333333333332%;
|
1794 |
-
}
|
1795 |
-
|
1796 |
-
.col-lg-offset-0 {
|
1797 |
-
margin-left: 0;
|
1798 |
-
}
|
1799 |
-
}
|
1800 |
-
|
1801 |
-
.factory-bootstrap-330 table {
|
1802 |
-
max-width: 100%;
|
1803 |
-
background-color: transparent;
|
1804 |
-
}
|
1805 |
-
|
1806 |
-
.factory-bootstrap-330 th {
|
1807 |
-
text-align: left;
|
1808 |
-
}
|
1809 |
-
|
1810 |
-
.factory-bootstrap-330 .table {
|
1811 |
-
width: 100%;
|
1812 |
-
margin-bottom: 20px;
|
1813 |
-
}
|
1814 |
-
|
1815 |
-
.factory-bootstrap-330 .table > thead > tr > th,
|
1816 |
-
.factory-bootstrap-330 .table > tbody > tr > th,
|
1817 |
-
.factory-bootstrap-330 .table > tfoot > tr > th,
|
1818 |
-
.factory-bootstrap-330 .table > thead > tr > td,
|
1819 |
-
.factory-bootstrap-330 .table > tbody > tr > td,
|
1820 |
-
.factory-bootstrap-330 .table > tfoot > tr > td {
|
1821 |
-
padding: 8px;
|
1822 |
-
line-height: 1.428571429;
|
1823 |
-
vertical-align: top;
|
1824 |
-
border-top: 1px solid #dddddd;
|
1825 |
-
}
|
1826 |
-
|
1827 |
-
.factory-bootstrap-330 .table > thead > tr > th {
|
1828 |
-
vertical-align: bottom;
|
1829 |
-
border-bottom: 2px solid #dddddd;
|
1830 |
-
}
|
1831 |
-
|
1832 |
-
.factory-bootstrap-330 .table > caption + thead > tr:first-child > th,
|
1833 |
-
.factory-bootstrap-330 .table > colgroup + thead > tr:first-child > th,
|
1834 |
-
.factory-bootstrap-330 .table > thead:first-child > tr:first-child > th,
|
1835 |
-
.factory-bootstrap-330 .table > caption + thead > tr:first-child > td,
|
1836 |
-
.factory-bootstrap-330 .table > colgroup + thead > tr:first-child > td,
|
1837 |
-
.factory-bootstrap-330 .table > thead:first-child > tr:first-child > td {
|
1838 |
-
border-top: 0;
|
1839 |
-
}
|
1840 |
-
|
1841 |
-
.factory-bootstrap-330 .table > tbody + tbody {
|
1842 |
-
border-top: 2px solid #dddddd;
|
1843 |
-
}
|
1844 |
-
|
1845 |
-
.factory-bootstrap-330 .table .table {
|
1846 |
-
background-color: #ffffff;
|
1847 |
-
}
|
1848 |
-
|
1849 |
-
.factory-bootstrap-330 .table-condensed > thead > tr > th,
|
1850 |
-
.factory-bootstrap-330 .table-condensed > tbody > tr > th,
|
1851 |
-
.factory-bootstrap-330 .table-condensed > tfoot > tr > th,
|
1852 |
-
.factory-bootstrap-330 .table-condensed > thead > tr > td,
|
1853 |
-
.factory-bootstrap-330 .table-condensed > tbody > tr > td,
|
1854 |
-
.factory-bootstrap-330 .table-condensed > tfoot > tr > td {
|
1855 |
-
padding: 5px;
|
1856 |
-
}
|
1857 |
-
|
1858 |
-
.factory-bootstrap-330 .table-bordered {
|
1859 |
-
border: 1px solid #dddddd;
|
1860 |
-
}
|
1861 |
-
|
1862 |
-
.factory-bootstrap-330 .table-bordered > thead > tr > th,
|
1863 |
-
.factory-bootstrap-330 .table-bordered > tbody > tr > th,
|
1864 |
-
.factory-bootstrap-330 .table-bordered > tfoot > tr > th,
|
1865 |
-
.factory-bootstrap-330 .table-bordered > thead > tr > td,
|
1866 |
-
.factory-bootstrap-330 .table-bordered > tbody > tr > td,
|
1867 |
-
.factory-bootstrap-330 .table-bordered > tfoot > tr > td {
|
1868 |
-
border: 1px solid #dddddd;
|
1869 |
-
}
|
1870 |
-
|
1871 |
-
.factory-bootstrap-330 .table-bordered > thead > tr > th,
|
1872 |
-
.factory-bootstrap-330 .table-bordered > thead > tr > td {
|
1873 |
-
border-bottom-width: 2px;
|
1874 |
-
}
|
1875 |
-
|
1876 |
-
.factory-bootstrap-330 .table-striped > tbody > tr:nth-child(odd) > td,
|
1877 |
-
.factory-bootstrap-330 .table-striped > tbody > tr:nth-child(odd) > th {
|
1878 |
-
background-color: #f9f9f9;
|
1879 |
-
}
|
1880 |
-
|
1881 |
-
.factory-bootstrap-330 .table-hover > tbody > tr:hover > td,
|
1882 |
-
.factory-bootstrap-330 .table-hover > tbody > tr:hover > th {
|
1883 |
-
background-color: #f5f5f5;
|
1884 |
-
}
|
1885 |
-
|
1886 |
-
.factory-bootstrap-330 table col[class*="col-"] {
|
1887 |
-
position: static;
|
1888 |
-
display: table-column;
|
1889 |
-
float: none;
|
1890 |
-
}
|
1891 |
-
|
1892 |
-
.factory-bootstrap-330 table td[class*="col-"],
|
1893 |
-
.factory-bootstrap-330 table th[class*="col-"] {
|
1894 |
-
display: table-cell;
|
1895 |
-
float: none;
|
1896 |
-
}
|
1897 |
-
|
1898 |
-
.factory-bootstrap-330 .table > thead > tr > .active,
|
1899 |
-
.factory-bootstrap-330 .table > tbody > tr > .active,
|
1900 |
-
.factory-bootstrap-330 .table > tfoot > tr > .active,
|
1901 |
-
.factory-bootstrap-330 .table > thead > .active > td,
|
1902 |
-
.factory-bootstrap-330 .table > tbody > .active > td,
|
1903 |
-
.factory-bootstrap-330 .table > tfoot > .active > td,
|
1904 |
-
.factory-bootstrap-330 .table > thead > .active > th,
|
1905 |
-
.factory-bootstrap-330 .table > tbody > .active > th,
|
1906 |
-
.factory-bootstrap-330 .table > tfoot > .active > th {
|
1907 |
-
background-color: #f5f5f5;
|
1908 |
-
}
|
1909 |
-
|
1910 |
-
.factory-bootstrap-330 .table-hover > tbody > tr > .active:hover,
|
1911 |
-
.factory-bootstrap-330 .table-hover > tbody > .active:hover > td,
|
1912 |
-
.factory-bootstrap-330 .table-hover > tbody > .active:hover > th {
|
1913 |
-
background-color: #e8e8e8;
|
1914 |
-
}
|
1915 |
-
|
1916 |
-
.factory-bootstrap-330 .table > thead > tr > .success,
|
1917 |
-
.factory-bootstrap-330 .table > tbody > tr > .success,
|
1918 |
-
.factory-bootstrap-330 .table > tfoot > tr > .success,
|
1919 |
-
.factory-bootstrap-330 .table > thead > .success > td,
|
1920 |
-
.factory-bootstrap-330 .table > tbody > .success > td,
|
1921 |
-
.factory-bootstrap-330 .table > tfoot > .success > td,
|
1922 |
-
.factory-bootstrap-330 .table > thead > .success > th,
|
1923 |
-
.factory-bootstrap-330 .table > tbody > .success > th,
|
1924 |
-
.factory-bootstrap-330 .table > tfoot > .success > th {
|
1925 |
-
background-color: #dff0d8;
|
1926 |
-
}
|
1927 |
-
|
1928 |
-
.factory-bootstrap-330 .table-hover > tbody > tr > .success:hover,
|
1929 |
-
.factory-bootstrap-330 .table-hover > tbody > .success:hover > td,
|
1930 |
-
.factory-bootstrap-330 .table-hover > tbody > .success:hover > th {
|
1931 |
-
background-color: #d0e9c6;
|
1932 |
-
}
|
1933 |
-
|
1934 |
-
.factory-bootstrap-330 .table > thead > tr > .danger,
|
1935 |
-
.factory-bootstrap-330 .table > tbody > tr > .danger,
|
1936 |
-
.factory-bootstrap-330 .table > tfoot > tr > .danger,
|
1937 |
-
.factory-bootstrap-330 .table > thead > .danger > td,
|
1938 |
-
.factory-bootstrap-330 .table > tbody > .danger > td,
|
1939 |
-
.factory-bootstrap-330 .table > tfoot > .danger > td,
|
1940 |
-
.factory-bootstrap-330 .table > thead > .danger > th,
|
1941 |
-
.factory-bootstrap-330 .table > tbody > .danger > th,
|
1942 |
-
.factory-bootstrap-330 .table > tfoot > .danger > th {
|
1943 |
-
background-color: #f2dede;
|
1944 |
-
}
|
1945 |
-
|
1946 |
-
.factory-bootstrap-330 .table-hover > tbody > tr > .danger:hover,
|
1947 |
-
.factory-bootstrap-330 .table-hover > tbody > .danger:hover > td,
|
1948 |
-
.factory-bootstrap-330 .table-hover > tbody > .danger:hover > th {
|
1949 |
-
background-color: #ebcccc;
|
1950 |
-
}
|
1951 |
-
|
1952 |
-
.factory-bootstrap-330 .table > thead > tr > .warning,
|
1953 |
-
.factory-bootstrap-330 .table > tbody > tr > .warning,
|
1954 |
-
.factory-bootstrap-330 .table > tfoot > tr > .warning,
|
1955 |
-
.factory-bootstrap-330 .table > thead > .warning > td,
|
1956 |
-
.factory-bootstrap-330 .table > tbody > .warning > td,
|
1957 |
-
.factory-bootstrap-330 .table > tfoot > .warning > td,
|
1958 |
-
.factory-bootstrap-330 .table > thead > .warning > th,
|
1959 |
-
.factory-bootstrap-330 .table > tbody > .warning > th,
|
1960 |
-
.factory-bootstrap-330 .table > tfoot > .warning > th {
|
1961 |
-
background-color: #fcf8e3;
|
1962 |
-
}
|
1963 |
-
|
1964 |
-
.factory-bootstrap-330 .table-hover > tbody > tr > .warning:hover,
|
1965 |
-
.factory-bootstrap-330 .table-hover > tbody > .warning:hover > td,
|
1966 |
-
.factory-bootstrap-330 .table-hover > tbody > .warning:hover > th {
|
1967 |
-
background-color: #faf2cc;
|
1968 |
-
}
|
1969 |
-
|
1970 |
-
@media (max-width: 767px) {
|
1971 |
-
.table-responsive {
|
1972 |
-
width: 100%;
|
1973 |
-
margin-bottom: 15px;
|
1974 |
-
overflow-x: scroll;
|
1975 |
-
overflow-y: hidden;
|
1976 |
-
border: 1px solid #dddddd;
|
1977 |
-
-ms-overflow-style: -ms-autohiding-scrollbar;
|
1978 |
-
-webkit-overflow-scrolling: touch;
|
1979 |
-
}
|
1980 |
-
|
1981 |
-
.table-responsive > .table {
|
1982 |
-
margin-bottom: 0;
|
1983 |
-
}
|
1984 |
-
|
1985 |
-
.table-responsive > .table > thead > tr > th,
|
1986 |
-
.table-responsive > .table > tbody > tr > th,
|
1987 |
-
.table-responsive > .table > tfoot > tr > th,
|
1988 |
-
.table-responsive > .table > thead > tr > td,
|
1989 |
-
.table-responsive > .table > tbody > tr > td,
|
1990 |
-
.table-responsive > .table > tfoot > tr > td {
|
1991 |
-
white-space: nowrap;
|
1992 |
-
}
|
1993 |
-
|
1994 |
-
.table-responsive > .table-bordered {
|
1995 |
-
border: 0;
|
1996 |
-
}
|
1997 |
-
|
1998 |
-
.table-responsive > .table-bordered > thead > tr > th:first-child,
|
1999 |
-
.table-responsive > .table-bordered > tbody > tr > th:first-child,
|
2000 |
-
.table-responsive > .table-bordered > tfoot > tr > th:first-child,
|
2001 |
-
.table-responsive > .table-bordered > thead > tr > td:first-child,
|
2002 |
-
.table-responsive > .table-bordered > tbody > tr > td:first-child,
|
2003 |
-
.table-responsive > .table-bordered > tfoot > tr > td:first-child {
|
2004 |
-
border-left: 0;
|
2005 |
-
}
|
2006 |
-
|
2007 |
-
.table-responsive > .table-bordered > thead > tr > th:last-child,
|
2008 |
-
.table-responsive > .table-bordered > tbody > tr > th:last-child,
|
2009 |
-
.table-responsive > .table-bordered > tfoot > tr > th:last-child,
|
2010 |
-
.table-responsive > .table-bordered > thead > tr > td:last-child,
|
2011 |
-
.table-responsive > .table-bordered > tbody > tr > td:last-child,
|
2012 |
-
.table-responsive > .table-bordered > tfoot > tr > td:last-child {
|
2013 |
-
border-right: 0;
|
2014 |
-
}
|
2015 |
-
|
2016 |
-
.table-responsive > .table-bordered > tbody > tr:last-child > th,
|
2017 |
-
.table-responsive > .table-bordered > tfoot > tr:last-child > th,
|
2018 |
-
.table-responsive > .table-bordered > tbody > tr:last-child > td,
|
2019 |
-
.table-responsive > .table-bordered > tfoot > tr:last-child > td {
|
2020 |
-
border-bottom: 0;
|
2021 |
-
}
|
2022 |
-
}
|
2023 |
-
|
2024 |
-
.factory-bootstrap-330 fieldset {
|
2025 |
-
padding: 0;
|
2026 |
-
margin: 0;
|
2027 |
-
border: 0;
|
2028 |
-
}
|
2029 |
-
|
2030 |
-
.factory-bootstrap-330 legend {
|
2031 |
-
display: block;
|
2032 |
-
width: 100%;
|
2033 |
-
padding: 0;
|
2034 |
-
margin-bottom: 20px;
|
2035 |
-
font-size: 21px;
|
2036 |
-
line-height: inherit;
|
2037 |
-
color: #333333;
|
2038 |
-
border: 0;
|
2039 |
-
border-bottom: 1px solid #e5e5e5;
|
2040 |
-
-moz-box-sizing: content-box;
|
2041 |
-
box-sizing: content-box;
|
2042 |
-
}
|
2043 |
-
|
2044 |
-
.factory-bootstrap-330 label {
|
2045 |
-
display: inline-block;
|
2046 |
-
margin-bottom: 5px;
|
2047 |
-
font-weight: bold;
|
2048 |
-
}
|
2049 |
-
|
2050 |
-
.factory-bootstrap-330 input[type="search"] {
|
2051 |
-
-webkit-box-sizing: border-box;
|
2052 |
-
-moz-box-sizing: border-box;
|
2053 |
-
box-sizing: border-box;
|
2054 |
-
}
|
2055 |
-
|
2056 |
-
.factory-bootstrap-330 input[type="radio"],
|
2057 |
-
.factory-bootstrap-330 input[type="checkbox"] {
|
2058 |
-
margin: 4px 0 0;
|
2059 |
-
margin-top: 1px \9;
|
2060 |
-
/* IE8-9 */
|
2061 |
-
|
2062 |
-
line-height: normal;
|
2063 |
-
}
|
2064 |
-
|
2065 |
-
.factory-bootstrap-330 input[type="file"] {
|
2066 |
-
display: block;
|
2067 |
-
}
|
2068 |
-
|
2069 |
-
.factory-bootstrap-330 select[multiple],
|
2070 |
-
.factory-bootstrap-330 select[size] {
|
2071 |
-
height: auto;
|
2072 |
-
}
|
2073 |
-
|
2074 |
-
.factory-bootstrap-330 select optgroup {
|
2075 |
-
font-family: inherit;
|
2076 |
-
font-size: inherit;
|
2077 |
-
font-style: inherit;
|
2078 |
-
}
|
2079 |
-
|
2080 |
-
.factory-bootstrap-330 input[type="file"]:focus,
|
2081 |
-
.factory-bootstrap-330 input[type="radio"]:focus,
|
2082 |
-
.factory-bootstrap-330 input[type="checkbox"]:focus {
|
2083 |
-
outline: thin dotted;
|
2084 |
-
outline: 5px auto -webkit-focus-ring-color;
|
2085 |
-
outline-offset: -2px;
|
2086 |
-
}
|
2087 |
-
|
2088 |
-
.factory-bootstrap-330 input[type="number"]::-webkit-outer-spin-button,
|
2089 |
-
.factory-bootstrap-330 input[type="number"]::-webkit-inner-spin-button {
|
2090 |
-
height: auto;
|
2091 |
-
}
|
2092 |
-
|
2093 |
-
.factory-bootstrap-330 output {
|
2094 |
-
display: block;
|
2095 |
-
padding-top: 7px;
|
2096 |
-
font-size: 14px;
|
2097 |
-
line-height: 1.428571429;
|
2098 |
-
color: #555555;
|
2099 |
-
vertical-align: middle;
|
2100 |
-
}
|
2101 |
-
|
2102 |
-
.factory-bootstrap-330 .form-control {
|
2103 |
-
display: block;
|
2104 |
-
width: 100%;
|
2105 |
-
height: 34px;
|
2106 |
-
padding: 6px 12px;
|
2107 |
-
font-size: 14px;
|
2108 |
-
line-height: 1.428571429;
|
2109 |
-
color: #555555;
|
2110 |
-
vertical-align: middle;
|
2111 |
-
background-color: #ffffff;
|
2112 |
-
background-image: none;
|
2113 |
-
border: 1px solid #cccccc;
|
2114 |
-
border-radius: 3px;
|
2115 |
-
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
2116 |
-
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
2117 |
-
-webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
|
2118 |
-
transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
|
2119 |
-
}
|
2120 |
-
|
2121 |
-
.factory-bootstrap-330 .form-control:focus {
|
2122 |
-
border-color: #66afe9;
|
2123 |
-
outline: 0;
|
2124 |
-
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
2125 |
-
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
2126 |
-
}
|
2127 |
-
|
2128 |
-
.factory-bootstrap-330 .form-control:-moz-placeholder {
|
2129 |
-
color: #999999;
|
2130 |
-
}
|
2131 |
-
|
2132 |
-
.factory-bootstrap-330 .form-control::-moz-placeholder {
|
2133 |
-
color: #999999;
|
2134 |
-
opacity: 1;
|
2135 |
-
}
|
2136 |
-
|
2137 |
-
.factory-bootstrap-330 .form-control:-ms-input-placeholder {
|
2138 |
-
color: #999999;
|
2139 |
-
}
|
2140 |
-
|
2141 |
-
.factory-bootstrap-330 .form-control::-webkit-input-placeholder {
|
2142 |
-
color: #999999;
|
2143 |
-
}
|
2144 |
-
|
2145 |
-
.factory-bootstrap-330 .form-control[disabled],
|
2146 |
-
.factory-bootstrap-330 .form-control[readonly],
|
2147 |
-
.factory-bootstrap-330 fieldset[disabled] .form-control {
|
2148 |
-
cursor: not-allowed;
|
2149 |
-
background-color: #eeeeee;
|
2150 |
-
}
|
2151 |
-
|
2152 |
-
.factory-bootstrap-330 textarea.form-control {
|
2153 |
-
height: auto;
|
2154 |
-
}
|
2155 |
-
|
2156 |
-
.factory-bootstrap-330 .form-group {
|
2157 |
-
margin-bottom: 15px;
|
2158 |
-
}
|
2159 |
-
|
2160 |
-
.factory-bootstrap-330 .radio,
|
2161 |
-
.factory-bootstrap-330 .checkbox {
|
2162 |
-
display: block;
|
2163 |
-
min-height: 20px;
|
2164 |
-
padding-left: 20px;
|
2165 |
-
margin-top: 10px;
|
2166 |
-
margin-bottom: 10px;
|
2167 |
-
vertical-align: middle;
|
2168 |
-
}
|
2169 |
-
|
2170 |
-
.factory-bootstrap-330 .radio label,
|
2171 |
-
.factory-bootstrap-330 .checkbox label {
|
2172 |
-
display: inline;
|
2173 |
-
margin-bottom: 0;
|
2174 |
-
font-weight: normal;
|
2175 |
-
cursor: pointer;
|
2176 |
-
}
|
2177 |
-
|
2178 |
-
.factory-bootstrap-330 .radio input[type="radio"],
|
2179 |
-
.factory-bootstrap-330 .radio-inline input[type="radio"],
|
2180 |
-
.factory-bootstrap-330 .checkbox input[type="checkbox"],
|
2181 |
-
.factory-bootstrap-330 .checkbox-inline input[type="checkbox"] {
|
2182 |
-
float: left;
|
2183 |
-
margin-left: -20px;
|
2184 |
-
}
|
2185 |
-
|
2186 |
-
.factory-bootstrap-330 .radio + .radio,
|
2187 |
-
.factory-bootstrap-330 .checkbox + .checkbox {
|
2188 |
-
margin-top: -5px;
|
2189 |
-
}
|
2190 |
-
|
2191 |
-
.factory-bootstrap-330 .radio-inline,
|
2192 |
-
.factory-bootstrap-330 .checkbox-inline {
|
2193 |
-
display: inline-block;
|
2194 |
-
padding-left: 20px;
|
2195 |
-
margin-bottom: 0;
|
2196 |
-
font-weight: normal;
|
2197 |
-
vertical-align: middle;
|
2198 |
-
cursor: pointer;
|
2199 |
-
}
|
2200 |
-
|
2201 |
-
.factory-bootstrap-330 .radio-inline + .radio-inline,
|
2202 |
-
.factory-bootstrap-330 .checkbox-inline + .checkbox-inline {
|
2203 |
-
margin-top: 0;
|
2204 |
-
margin-left: 10px;
|
2205 |
-
}
|
2206 |
-
|
2207 |
-
.factory-bootstrap-330 input[type="radio"][disabled],
|
2208 |
-
.factory-bootstrap-330 input[type="checkbox"][disabled],
|
2209 |
-
.factory-bootstrap-330 .radio[disabled],
|
2210 |
-
.factory-bootstrap-330 .radio-inline[disabled],
|
2211 |
-
.factory-bootstrap-330 .checkbox[disabled],
|
2212 |
-
.factory-bootstrap-330 .checkbox-inline[disabled],
|
2213 |
-
.factory-bootstrap-330 fieldset[disabled] input[type="radio"],
|
2214 |
-
.factory-bootstrap-330 fieldset[disabled] input[type="checkbox"],
|
2215 |
-
.factory-bootstrap-330 fieldset[disabled] .radio,
|
2216 |
-
.factory-bootstrap-330 fieldset[disabled] .radio-inline,
|
2217 |
-
.factory-bootstrap-330 fieldset[disabled] .checkbox,
|
2218 |
-
.factory-bootstrap-330 fieldset[disabled] .checkbox-inline {
|
2219 |
-
cursor: not-allowed;
|
2220 |
-
}
|
2221 |
-
|
2222 |
-
.factory-bootstrap-330 .input-sm {
|
2223 |
-
height: 30px;
|
2224 |
-
padding: 5px 10px;
|
2225 |
-
font-size: 12px;
|
2226 |
-
line-height: 1.5;
|
2227 |
-
border-radius: 3px;
|
2228 |
-
}
|
2229 |
-
|
2230 |
-
.factory-bootstrap-330 select.input-sm {
|
2231 |
-
height: 30px;
|
2232 |
-
line-height: 30px;
|
2233 |
-
}
|
2234 |
-
|
2235 |
-
.factory-bootstrap-330 textarea.input-sm {
|
2236 |
-
height: auto;
|
2237 |
-
}
|
2238 |
-
|
2239 |
-
.factory-bootstrap-330 .input-lg {
|
2240 |
-
height: 46px;
|
2241 |
-
padding: 10px 16px;
|
2242 |
-
font-size: 18px;
|
2243 |
-
line-height: 1.33;
|
2244 |
-
border-radius: 6px;
|
2245 |
-
}
|
2246 |
-
|
2247 |
-
.factory-bootstrap-330 select.input-lg {
|
2248 |
-
height: 46px;
|
2249 |
-
line-height: 46px;
|
2250 |
-
}
|
2251 |
-
|
2252 |
-
.factory-bootstrap-330 textarea.input-lg {
|
2253 |
-
height: auto;
|
2254 |
-
}
|
2255 |
-
|
2256 |
-
.factory-bootstrap-330 .has-warning .help-block,
|
2257 |
-
.factory-bootstrap-330 .has-warning .control-label,
|
2258 |
-
.factory-bootstrap-330 .has-warning .radio,
|
2259 |
-
.factory-bootstrap-330 .has-warning .checkbox,
|
2260 |
-
.factory-bootstrap-330 .has-warning .radio-inline,
|
2261 |
-
.factory-bootstrap-330 .has-warning .checkbox-inline {
|
2262 |
-
color: #8a6d3b;
|
2263 |
-
}
|
2264 |
-
|
2265 |
-
.factory-bootstrap-330 .has-warning .form-control {
|
2266 |
-
border-color: #8a6d3b;
|
2267 |
-
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
2268 |
-
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
2269 |
-
}
|
2270 |
-
|
2271 |
-
.factory-bootstrap-330 .has-warning .form-control:focus {
|
2272 |
-
border-color: #66512c;
|
2273 |
-
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
|
2274 |
-
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
|
2275 |
-
}
|
2276 |
-
|
2277 |
-
.factory-bootstrap-330 .has-warning .input-group-addon {
|
2278 |
-
color: #8a6d3b;
|
2279 |
-
background-color: #fcf8e3;
|
2280 |
-
border-color: #8a6d3b;
|
2281 |
-
}
|
2282 |
-
|
2283 |
-
.factory-bootstrap-330 .has-error .help-block,
|
2284 |
-
.factory-bootstrap-330 .has-error .control-label,
|
2285 |
-
.factory-bootstrap-330 .has-error .radio,
|
2286 |
-
.factory-bootstrap-330 .has-error .checkbox,
|
2287 |
-
.factory-bootstrap-330 .has-error .radio-inline,
|
2288 |
-
.factory-bootstrap-330 .has-error .checkbox-inline {
|
2289 |
-
color: #a94442;
|
2290 |
-
}
|
2291 |
-
|
2292 |
-
.factory-bootstrap-330 .controls {
|
2293 |
-
display: block;
|
2294 |
-
}
|
2295 |
-
|
2296 |
-
.factory-bootstrap-330 .has-error .form-control {
|
2297 |
-
border-color: #a94442;
|
2298 |
-
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
2299 |
-
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
2300 |
-
}
|
2301 |
-
|
2302 |
-
.factory-bootstrap-330 .has-error .form-control:focus {
|
2303 |
-
border-color: #843534;
|
2304 |
-
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
|
2305 |
-
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
|
2306 |
-
}
|
2307 |
-
|
2308 |
-
.factory-bootstrap-330 .has-error .input-group-addon {
|
2309 |
-
color: #a94442;
|
2310 |
-
background-color: #f2dede;
|
2311 |
-
border-color: #a94442;
|
2312 |
-
}
|
2313 |
-
|
2314 |
-
.factory-bootstrap-330 .has-success .help-block,
|
2315 |
-
.factory-bootstrap-330 .has-success .control-label,
|
2316 |
-
.factory-bootstrap-330 .has-success .radio,
|
2317 |
-
.factory-bootstrap-330 .has-success .checkbox,
|
2318 |
-
.factory-bootstrap-330 .has-success .radio-inline,
|
2319 |
-
.factory-bootstrap-330 .has-success .checkbox-inline {
|
2320 |
-
color: #3c763d;
|
2321 |
-
}
|
2322 |
-
|
2323 |
-
.factory-bootstrap-330 .has-success .form-control {
|
2324 |
-
border-color: #3c763d;
|
2325 |
-
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
2326 |
-
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
2327 |
-
}
|
2328 |
-
|
2329 |
-
.factory-bootstrap-330 .has-success .form-control:focus {
|
2330 |
-
border-color: #2b542c;
|
2331 |
-
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
|
2332 |
-
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
|
2333 |
-
}
|
2334 |
-
|
2335 |
-
.factory-bootstrap-330 .has-success .input-group-addon {
|
2336 |
-
color: #3c763d;
|
2337 |
-
background-color: #dff0d8;
|
2338 |
-
border-color: #3c763d;
|
2339 |
-
}
|
2340 |
-
|
2341 |
-
.factory-bootstrap-330 .form-control-static {
|
2342 |
-
margin-bottom: 0;
|
2343 |
-
}
|
2344 |
-
|
2345 |
-
.factory-bootstrap-330 .help-block {
|
2346 |
-
display: block;
|
2347 |
-
margin-top: 5px;
|
2348 |
-
margin-bottom: 10px;
|
2349 |
-
color: #737373;
|
2350 |
-
font-weight: normal;
|
2351 |
-
}
|
2352 |
-
|
2353 |
-
@media (min-width: 768px) {
|
2354 |
-
.form-inline .form-group {
|
2355 |
-
display: inline-block;
|
2356 |
-
margin-bottom: 0;
|
2357 |
-
vertical-align: middle;
|
2358 |
-
}
|
2359 |
-
|
2360 |
-
.form-inline .form-control {
|
2361 |
-
display: inline-block;
|
2362 |
-
}
|
2363 |
-
|
2364 |
-
.form-inline select.form-control {
|
2365 |
-
width: auto;
|
2366 |
-
}
|
2367 |
-
|
2368 |
-
.form-inline .radio,
|
2369 |
-
.form-inline .checkbox {
|
2370 |
-
display: inline-block;
|
2371 |
-
padding-left: 0;
|
2372 |
-
margin-top: 0;
|
2373 |
-
margin-bottom: 0;
|
2374 |
-
}
|
2375 |
-
|
2376 |
-
.form-inline .radio input[type="radio"],
|
2377 |
-
.form-inline .checkbox input[type="checkbox"] {
|
2378 |
-
float: none;
|
2379 |
-
margin-left: 0;
|
2380 |
-
}
|
2381 |
-
}
|
2382 |
-
|
2383 |
-
.factory-bootstrap-330 .form-horizontal .control-label,
|
2384 |
-
.factory-bootstrap-330 .form-horizontal .radio,
|
2385 |
-
.factory-bootstrap-330 .form-horizontal .checkbox,
|
2386 |
-
.factory-bootstrap-330 .form-horizontal .radio-inline,
|
2387 |
-
.factory-bootstrap-330 .form-horizontal .checkbox-inline {
|
2388 |
-
position: relative;
|
2389 |
-
padding-top: 7px;
|
2390 |
-
margin-top: 0;
|
2391 |
-
margin-bottom: 0;
|
2392 |
-
}
|
2393 |
-
|
2394 |
-
.factory-bootstrap-330 .form-horizontal .control-label {
|
2395 |
-
max-width: 200px;
|
2396 |
-
}
|
2397 |
-
|
2398 |
-
.factory-bootstrap-330 .form-horizontal .radio,
|
2399 |
-
.factory-bootstrap-330 .form-horizontal .checkbox {
|
2400 |
-
min-height: 27px;
|
2401 |
-
}
|
2402 |
-
|
2403 |
-
.factory-bootstrap-330 .form-horizontal .form-group {
|
2404 |
-
margin-right: -15px;
|
2405 |
-
margin-left: -15px;
|
2406 |
-
}
|
2407 |
-
|
2408 |
-
.factory-bootstrap-330 .form-horizontal .form-group:before,
|
2409 |
-
.factory-bootstrap-330 .form-horizontal .form-group:after {
|
2410 |
-
display: table;
|
2411 |
-
content: " ";
|
2412 |
-
}
|
2413 |
-
|
2414 |
-
.factory-bootstrap-330 .form-horizontal .form-group:after {
|
2415 |
-
clear: both;
|
2416 |
-
}
|
2417 |
-
|
2418 |
-
.factory-bootstrap-330 .form-horizontal .form-group:before,
|
2419 |
-
.factory-bootstrap-330 .form-horizontal .form-group:after {
|
2420 |
-
display: table;
|
2421 |
-
content: " ";
|
2422 |
-
}
|
2423 |
-
|
2424 |
-
.factory-bootstrap-330 .form-horizontal .form-group:after {
|
2425 |
-
clear: both;
|
2426 |
-
}
|
2427 |
-
|
2428 |
-
.factory-bootstrap-330 .form-horizontal .form-control-static {
|
2429 |
-
padding-top: 7px;
|
2430 |
-
}
|
2431 |
-
|
2432 |
-
@media (min-width: 768px) {
|
2433 |
-
.form-horizontal .control-label {
|
2434 |
-
text-align: right;
|
2435 |
-
}
|
2436 |
-
}
|
2437 |
-
|
2438 |
-
.factory-bootstrap-330 .btn {
|
2439 |
-
display: inline-block;
|
2440 |
-
padding: 5px 12px 5px 12px;
|
2441 |
-
margin-bottom: 0;
|
2442 |
-
font-size: 13px;
|
2443 |
-
font-weight: normal;
|
2444 |
-
line-height: 1.428571429;
|
2445 |
-
text-align: center;
|
2446 |
-
white-space: nowrap;
|
2447 |
-
vertical-align: middle;
|
2448 |
-
cursor: pointer;
|
2449 |
-
background-image: none;
|
2450 |
-
border: 1px solid transparent;
|
2451 |
-
border-radius: 3px;
|
2452 |
-
-webkit-user-select: none;
|
2453 |
-
-moz-user-select: none;
|
2454 |
-
-ms-user-select: none;
|
2455 |
-
-o-user-select: none;
|
2456 |
-
user-select: none;
|
2457 |
-
}
|
2458 |
-
|
2459 |
-
.factory-bootstrap-330 .btn:focus {
|
2460 |
-
outline: thin dotted;
|
2461 |
-
outline: 5px auto -webkit-focus-ring-color;
|
2462 |
-
outline-offset: -2px;
|
2463 |
-
}
|
2464 |
-
|
2465 |
-
.factory-bootstrap-330 .btn {
|
2466 |
-
text-decoration: none;
|
2467 |
-
}
|
2468 |
-
|
2469 |
-
.factory-bootstrap-330 .btn:hover,
|
2470 |
-
.factory-bootstrap-330 .btn:focus {
|
2471 |
-
color: #333333;
|
2472 |
-
text-decoration: none;
|
2473 |
-
}
|
2474 |
-
|
2475 |
-
.factory-bootstrap-330 .btn.disabled,
|
2476 |
-
.factory-bootstrap-330 .btn[disabled],
|
2477 |
-
.factory-bootstrap-330 fieldset[disabled] .btn {
|
2478 |
-
pointer-events: none;
|
2479 |
-
cursor: not-allowed;
|
2480 |
-
opacity: 0.65;
|
2481 |
-
filter: alpha(opacity=65);
|
2482 |
-
-webkit-box-shadow: none;
|
2483 |
-
box-shadow: none;
|
2484 |
-
}
|
2485 |
-
|
2486 |
-
.factory-bootstrap-330 .btn-default {
|
2487 |
-
color: #333333;
|
2488 |
-
background-color: #ffffff;
|
2489 |
-
border-color: #cccccc;
|
2490 |
-
}
|
2491 |
-
|
2492 |
-
.factory-bootstrap-330 .btn-default:hover,
|
2493 |
-
.factory-bootstrap-330 .btn-default:focus,
|
2494 |
-
.factory-bootstrap-330 .btn-default:active,
|
2495 |
-
.factory-bootstrap-330 .btn-default.active,
|
2496 |
-
.factory-bootstrap-330 .open .dropdown-toggle.btn-default {
|
2497 |
-
background: #fafafa;
|
2498 |
-
border-color: #999;
|
2499 |
-
color: #222;
|
2500 |
-
}
|
2501 |
-
|
2502 |
-
.factory-bootstrap-330 .btn-default:active,
|
2503 |
-
.factory-bootstrap-330 .btn-default.active,
|
2504 |
-
.factory-bootstrap-330 .open .dropdown-toggle.btn-default {
|
2505 |
-
background-image: none;
|
2506 |
-
}
|
2507 |
-
|
2508 |
-
.factory-bootstrap-330 .btn-default.disabled,
|
2509 |
-
.factory-bootstrap-330 .btn-default[disabled],
|
2510 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-default,
|
2511 |
-
.factory-bootstrap-330 .btn-default.disabled:hover,
|
2512 |
-
.factory-bootstrap-330 .btn-default[disabled]:hover,
|
2513 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-default:hover,
|
2514 |
-
.factory-bootstrap-330 .btn-default.disabled:focus,
|
2515 |
-
.factory-bootstrap-330 .btn-default[disabled]:focus,
|
2516 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-default:focus,
|
2517 |
-
.factory-bootstrap-330 .btn-default.disabled:active,
|
2518 |
-
.factory-bootstrap-330 .btn-default[disabled]:active,
|
2519 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-default:active,
|
2520 |
-
.factory-bootstrap-330 .btn-default.disabled.active,
|
2521 |
-
.factory-bootstrap-330 .btn-default[disabled].active,
|
2522 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-default.active {
|
2523 |
-
background-color: #ffffff;
|
2524 |
-
border-color: #cccccc;
|
2525 |
-
}
|
2526 |
-
|
2527 |
-
.factory-bootstrap-330 .btn-default .badge {
|
2528 |
-
color: #ffffff;
|
2529 |
-
background-color: #fff;
|
2530 |
-
}
|
2531 |
-
|
2532 |
-
.factory-bootstrap-330 .btn-primary {
|
2533 |
-
color: #ffffff;
|
2534 |
-
background-color: #428bca;
|
2535 |
-
border-color: #357ebd;
|
2536 |
-
}
|
2537 |
-
|
2538 |
-
.factory-bootstrap-330 .btn-primary:hover,
|
2539 |
-
.factory-bootstrap-330 .btn-primary:focus,
|
2540 |
-
.factory-bootstrap-330 .btn-primary:active,
|
2541 |
-
.factory-bootstrap-330 .btn-primary.active,
|
2542 |
-
.factory-bootstrap-330 .open .dropdown-toggle.btn-primary {
|
2543 |
-
color: #ffffff;
|
2544 |
-
background-color: #3276b1;
|
2545 |
-
border-color: #285e8e;
|
2546 |
-
}
|
2547 |
-
|
2548 |
-
.factory-bootstrap-330 .btn-primary:active,
|
2549 |
-
.factory-bootstrap-330 .btn-primary.active,
|
2550 |
-
.factory-bootstrap-330 .open .dropdown-toggle.btn-primary {
|
2551 |
-
background-image: none;
|
2552 |
-
}
|
2553 |
-
|
2554 |
-
.factory-bootstrap-330 .btn-primary.disabled,
|
2555 |
-
.factory-bootstrap-330 .btn-primary[disabled],
|
2556 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-primary,
|
2557 |
-
.factory-bootstrap-330 .btn-primary.disabled:hover,
|
2558 |
-
.factory-bootstrap-330 .btn-primary[disabled]:hover,
|
2559 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-primary:hover,
|
2560 |
-
.factory-bootstrap-330 .btn-primary.disabled:focus,
|
2561 |
-
.factory-bootstrap-330 .btn-primary[disabled]:focus,
|
2562 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-primary:focus,
|
2563 |
-
.factory-bootstrap-330 .btn-primary.disabled:active,
|
2564 |
-
.factory-bootstrap-330 .btn-primary[disabled]:active,
|
2565 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-primary:active,
|
2566 |
-
.factory-bootstrap-330 .btn-primary.disabled.active,
|
2567 |
-
.factory-bootstrap-330 .btn-primary[disabled].active,
|
2568 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-primary.active {
|
2569 |
-
background-color: #428bca;
|
2570 |
-
border-color: #357ebd;
|
2571 |
-
}
|
2572 |
-
|
2573 |
-
.factory-bootstrap-330 .btn-primary .badge {
|
2574 |
-
color: #428bca;
|
2575 |
-
background-color: #fff;
|
2576 |
-
}
|
2577 |
-
|
2578 |
-
.factory-bootstrap-330 .btn-warning {
|
2579 |
-
color: #ffffff;
|
2580 |
-
background-color: #f0ad4e;
|
2581 |
-
border-color: #eea236;
|
2582 |
-
}
|
2583 |
-
|
2584 |
-
.factory-bootstrap-330 .btn-warning:hover,
|
2585 |
-
.factory-bootstrap-330 .btn-warning:focus,
|
2586 |
-
.factory-bootstrap-330 .btn-warning:active,
|
2587 |
-
.factory-bootstrap-330 .btn-warning.active,
|
2588 |
-
.factory-bootstrap-330 .open .dropdown-toggle.btn-warning {
|
2589 |
-
color: #ffffff;
|
2590 |
-
background-color: #ed9c28;
|
2591 |
-
border-color: #d58512;
|
2592 |
-
}
|
2593 |
-
|
2594 |
-
.factory-bootstrap-330 .btn-warning:active,
|
2595 |
-
.factory-bootstrap-330 .btn-warning.active,
|
2596 |
-
.factory-bootstrap-330 .open .dropdown-toggle.btn-warning {
|
2597 |
-
background-image: none;
|
2598 |
-
}
|
2599 |
-
|
2600 |
-
.factory-bootstrap-330 .btn-warning.disabled,
|
2601 |
-
.factory-bootstrap-330 .btn-warning[disabled],
|
2602 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-warning,
|
2603 |
-
.factory-bootstrap-330 .btn-warning.disabled:hover,
|
2604 |
-
.factory-bootstrap-330 .btn-warning[disabled]:hover,
|
2605 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-warning:hover,
|
2606 |
-
.factory-bootstrap-330 .btn-warning.disabled:focus,
|
2607 |
-
.factory-bootstrap-330 .btn-warning[disabled]:focus,
|
2608 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-warning:focus,
|
2609 |
-
.factory-bootstrap-330 .btn-warning.disabled:active,
|
2610 |
-
.factory-bootstrap-330 .btn-warning[disabled]:active,
|
2611 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-warning:active,
|
2612 |
-
.factory-bootstrap-330 .btn-warning.disabled.active,
|
2613 |
-
.factory-bootstrap-330 .btn-warning[disabled].active,
|
2614 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-warning.active {
|
2615 |
-
background-color: #f0ad4e;
|
2616 |
-
border-color: #eea236;
|
2617 |
-
}
|
2618 |
-
|
2619 |
-
.factory-bootstrap-330 .btn-warning .badge {
|
2620 |
-
color: #f0ad4e;
|
2621 |
-
background-color: #fff;
|
2622 |
-
}
|
2623 |
-
|
2624 |
-
.factory-bootstrap-330 .btn-success {
|
2625 |
-
color: #ffffff;
|
2626 |
-
background-color: #5cb85c;
|
2627 |
-
border-color: #4cae4c;
|
2628 |
-
}
|
2629 |
-
|
2630 |
-
.factory-bootstrap-330 .btn-success:hover,
|
2631 |
-
.factory-bootstrap-330 .btn-success:focus,
|
2632 |
-
.factory-bootstrap-330 .btn-success:active,
|
2633 |
-
.factory-bootstrap-330 .btn-success.active,
|
2634 |
-
.factory-bootstrap-330 .open .dropdown-toggle.btn-success {
|
2635 |
-
color: #ffffff;
|
2636 |
-
background-color: #47a447;
|
2637 |
-
border-color: #398439;
|
2638 |
-
}
|
2639 |
-
|
2640 |
-
.factory-bootstrap-330 .btn-success:active,
|
2641 |
-
.factory-bootstrap-330 .btn-success.active,
|
2642 |
-
.factory-bootstrap-330 .open .dropdown-toggle.btn-success {
|
2643 |
-
background-image: none;
|
2644 |
-
}
|
2645 |
-
|
2646 |
-
.factory-bootstrap-330 .btn-success.disabled,
|
2647 |
-
.factory-bootstrap-330 .btn-success[disabled],
|
2648 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-success,
|
2649 |
-
.factory-bootstrap-330 .btn-success.disabled:hover,
|
2650 |
-
.factory-bootstrap-330 .btn-success[disabled]:hover,
|
2651 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-success:hover,
|
2652 |
-
.factory-bootstrap-330 .btn-success.disabled:focus,
|
2653 |
-
.factory-bootstrap-330 .btn-success[disabled]:focus,
|
2654 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-success:focus,
|
2655 |
-
.factory-bootstrap-330 .btn-success.disabled:active,
|
2656 |
-
.factory-bootstrap-330 .btn-success[disabled]:active,
|
2657 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-success:active,
|
2658 |
-
.factory-bootstrap-330 .btn-success.disabled.active,
|
2659 |
-
.factory-bootstrap-330 .btn-success[disabled].active,
|
2660 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-success.active {
|
2661 |
-
background-color: #5cb85c;
|
2662 |
-
border-color: #4cae4c;
|
2663 |
-
}
|
2664 |
-
|
2665 |
-
.factory-bootstrap-330 .btn-success .badge {
|
2666 |
-
color: #5cb85c;
|
2667 |
-
background-color: #fff;
|
2668 |
-
}
|
2669 |
-
|
2670 |
-
.factory-bootstrap-330 .btn-info {
|
2671 |
-
color: #ffffff;
|
2672 |
-
background-color: #5bc0de;
|
2673 |
-
border-color: #46b8da;
|
2674 |
-
}
|
2675 |
-
|
2676 |
-
.factory-bootstrap-330 .btn-info:hover,
|
2677 |
-
.factory-bootstrap-330 .btn-info:focus,
|
2678 |
-
.factory-bootstrap-330 .btn-info:active,
|
2679 |
-
.factory-bootstrap-330 .btn-info.active,
|
2680 |
-
.factory-bootstrap-330 .open .dropdown-toggle.btn-info {
|
2681 |
-
color: #ffffff;
|
2682 |
-
background-color: #39b3d7;
|
2683 |
-
border-color: #269abc;
|
2684 |
-
}
|
2685 |
-
|
2686 |
-
.factory-bootstrap-330 .btn-info:active,
|
2687 |
-
.factory-bootstrap-330 .btn-info.active,
|
2688 |
-
.factory-bootstrap-330 .open .dropdown-toggle.btn-info {
|
2689 |
-
background-image: none;
|
2690 |
-
}
|
2691 |
-
|
2692 |
-
.factory-bootstrap-330 .btn-info.disabled,
|
2693 |
-
.factory-bootstrap-330 .btn-info[disabled],
|
2694 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-info,
|
2695 |
-
.factory-bootstrap-330 .btn-info.disabled:hover,
|
2696 |
-
.factory-bootstrap-330 .btn-info[disabled]:hover,
|
2697 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-info:hover,
|
2698 |
-
.factory-bootstrap-330 .btn-info.disabled:focus,
|
2699 |
-
.factory-bootstrap-330 .btn-info[disabled]:focus,
|
2700 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-info:focus,
|
2701 |
-
.factory-bootstrap-330 .btn-info.disabled:active,
|
2702 |
-
.factory-bootstrap-330 .btn-info[disabled]:active,
|
2703 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-info:active,
|
2704 |
-
.factory-bootstrap-330 .btn-info.disabled.active,
|
2705 |
-
.factory-bootstrap-330 .btn-info[disabled].active,
|
2706 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-info.active {
|
2707 |
-
background-color: #5bc0de;
|
2708 |
-
border-color: #46b8da;
|
2709 |
-
}
|
2710 |
-
|
2711 |
-
.factory-bootstrap-330 .btn-info .badge {
|
2712 |
-
color: #5bc0de;
|
2713 |
-
background-color: #fff;
|
2714 |
-
}
|
2715 |
-
|
2716 |
-
.factory-bootstrap-330 .btn-link {
|
2717 |
-
font-weight: normal;
|
2718 |
-
color: #428bca;
|
2719 |
-
cursor: pointer;
|
2720 |
-
border-radius: 0;
|
2721 |
-
}
|
2722 |
-
|
2723 |
-
.factory-bootstrap-330 .btn-link,
|
2724 |
-
.factory-bootstrap-330 .btn-link:active,
|
2725 |
-
.factory-bootstrap-330 .btn-link[disabled],
|
2726 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-link {
|
2727 |
-
background-color: transparent;
|
2728 |
-
-webkit-box-shadow: none;
|
2729 |
-
box-shadow: none;
|
2730 |
-
}
|
2731 |
-
|
2732 |
-
.factory-bootstrap-330 .btn-link,
|
2733 |
-
.factory-bootstrap-330 .btn-link:hover,
|
2734 |
-
.factory-bootstrap-330 .btn-link:focus,
|
2735 |
-
.factory-bootstrap-330 .btn-link:active {
|
2736 |
-
border-color: transparent;
|
2737 |
-
}
|
2738 |
-
|
2739 |
-
.factory-bootstrap-330 .btn-link:hover,
|
2740 |
-
.factory-bootstrap-330 .btn-link:focus {
|
2741 |
-
color: #2a6496;
|
2742 |
-
text-decoration: underline;
|
2743 |
-
background-color: transparent;
|
2744 |
-
}
|
2745 |
-
|
2746 |
-
.factory-bootstrap-330 .btn-link[disabled]:hover,
|
2747 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-link:hover,
|
2748 |
-
.factory-bootstrap-330 .btn-link[disabled]:focus,
|
2749 |
-
.factory-bootstrap-330 fieldset[disabled] .btn-link:focus {
|
2750 |
-
color: #999999;
|
2751 |
-
text-decoration: none;
|
2752 |
-
}
|
2753 |
-
|
2754 |
-
.factory-bootstrap-330 .btn-lg {
|
2755 |
-
padding: 10px 16px;
|
2756 |
-
font-size: 18px;
|
2757 |
-
line-height: 1.33;
|
2758 |
-
border-radius: 6px;
|
2759 |
-
}
|
2760 |
-
|
2761 |
-
.factory-bootstrap-330 .btn-sm {
|
2762 |
-
padding: 5px 10px;
|
2763 |
-
font-size: 12px;
|
2764 |
-
line-height: 1.5;
|
2765 |
-
border-radius: 3px;
|
2766 |
-
}
|
2767 |
-
|
2768 |
-
.factory-bootstrap-330 .btn-xs {
|
2769 |
-
padding: 1px 5px;
|
2770 |
-
font-size: 12px;
|
2771 |
-
line-height: 1.5;
|
2772 |
-
border-radius: 3px;
|
2773 |
-
}
|
2774 |
-
|
2775 |
-
.factory-bootstrap-330 .btn-block {
|
2776 |
-
display: block;
|
2777 |
-
width: 100%;
|
2778 |
-
padding-right: 0;
|
2779 |
-
padding-left: 0;
|
2780 |
-
}
|
2781 |
-
|
2782 |
-
.factory-bootstrap-330 .btn-block + .btn-block {
|
2783 |
-
margin-top: 5px;
|
2784 |
-
}
|
2785 |
-
|
2786 |
-
.factory-bootstrap-330 input[type="submit"].btn-block,
|
2787 |
-
.factory-bootstrap-330 input[type="reset"].btn-block,
|
2788 |
-
.factory-bootstrap-330 input[type="button"].btn-block {
|
2789 |
-
width: 100%;
|
2790 |
-
}
|
2791 |
-
|
2792 |
-
.factory-bootstrap-330 .fade {
|
2793 |
-
opacity: 0;
|
2794 |
-
-webkit-transition: opacity 0.15s linear;
|
2795 |
-
transition: opacity 0.15s linear;
|
2796 |
-
}
|
2797 |
-
|
2798 |
-
.factory-bootstrap-330 .fade.in {
|
2799 |
-
opacity: 1;
|
2800 |
-
}
|
2801 |
-
|
2802 |
-
.factory-bootstrap-330 .collapse {
|
2803 |
-
display: none;
|
2804 |
-
}
|
2805 |
-
|
2806 |
-
.factory-bootstrap-330 .collapse.in {
|
2807 |
-
display: block;
|
2808 |
-
}
|
2809 |
-
|
2810 |
-
.factory-bootstrap-330 .collapsing {
|
2811 |
-
position: relative;
|
2812 |
-
height: 0;
|
2813 |
-
overflow: hidden;
|
2814 |
-
-webkit-transition: height 0.35s ease;
|
2815 |
-
transition: height 0.35s ease;
|
2816 |
-
}
|
2817 |
-
|
2818 |
-
@font-face {
|
2819 |
-
font-family: 'Glyphicons Halflings';
|
2820 |
-
src: url('../fonts/glyphicons-halflings-regular.eot');
|
2821 |
-
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');
|
2822 |
-
}
|
2823 |
-
|
2824 |
-
.factory-bootstrap-330 .glyphicon {
|
2825 |
-
position: relative;
|
2826 |
-
top: 1px;
|
2827 |
-
display: inline-block;
|
2828 |
-
font-family: 'Glyphicons Halflings';
|
2829 |
-
-webkit-font-smoothing: antialiased;
|
2830 |
-
font-style: normal;
|
2831 |
-
font-weight: normal;
|
2832 |
-
line-height: 1;
|
2833 |
-
-moz-osx-font-smoothing: grayscale;
|
2834 |
-
}
|
2835 |
-
|
2836 |
-
.factory-bootstrap-330 .glyphicon:empty {
|
2837 |
-
width: 1em;
|
2838 |
-
}
|
2839 |
-
|
2840 |
-
.factory-bootstrap-330 .glyphicon-asterisk:before {
|
2841 |
-
content: "\2a";
|
2842 |
-
}
|
2843 |
-
|
2844 |
-
.factory-bootstrap-330 .glyphicon-plus:before {
|
2845 |
-
content: "\2b";
|
2846 |
-
}
|
2847 |
-
|
2848 |
-
.factory-bootstrap-330 .glyphicon-euro:before {
|
2849 |
-
content: "\20ac";
|
2850 |
-
}
|
2851 |
-
|
2852 |
-
.factory-bootstrap-330 .glyphicon-minus:before {
|
2853 |
-
content: "\2212";
|
2854 |
-
}
|
2855 |
-
|
2856 |
-
.factory-bootstrap-330 .glyphicon-cloud:before {
|
2857 |
-
content: "\2601";
|
2858 |
-
}
|
2859 |
-
|
2860 |
-
.factory-bootstrap-330 .glyphicon-envelope:before {
|
2861 |
-
content: "\2709";
|
2862 |
-
}
|
2863 |
-
|
2864 |
-
.factory-bootstrap-330 .glyphicon-pencil:before {
|
2865 |
-
content: "\270f";
|
2866 |
-
}
|
2867 |
-
|
2868 |
-
.factory-bootstrap-330 .glyphicon-glass:before {
|
2869 |
-
content: "\e001";
|
2870 |
-
}
|
2871 |
-
|
2872 |
-
.factory-bootstrap-330 .glyphicon-music:before {
|
2873 |
-
content: "\e002";
|
2874 |
-
}
|
2875 |
-
|
2876 |
-
.factory-bootstrap-330 .glyphicon-search:before {
|
2877 |
-
content: "\e003";
|
2878 |
-
}
|
2879 |
-
|
2880 |
-
.factory-bootstrap-330 .glyphicon-heart:before {
|
2881 |
-
content: "\e005";
|
2882 |
-
}
|
2883 |
-
|
2884 |
-
.factory-bootstrap-330 .glyphicon-star:before {
|
2885 |
-
content: "\e006";
|
2886 |
-
}
|
2887 |
-
|
2888 |
-
.factory-bootstrap-330 .glyphicon-star-empty:before {
|
2889 |
-
content: "\e007";
|
2890 |
-
}
|
2891 |
-
|
2892 |
-
.factory-bootstrap-330 .glyphicon-user:before {
|
2893 |
-
content: "\e008";
|
2894 |
-
}
|
2895 |
-
|
2896 |
-
.factory-bootstrap-330 .glyphicon-film:before {
|
2897 |
-
content: "\e009";
|
2898 |
-
}
|
2899 |
-
|
2900 |
-
.factory-bootstrap-330 .glyphicon-th-large:before {
|
2901 |
-
content: "\e010";
|
2902 |
-
}
|
2903 |
-
|
2904 |
-
.factory-bootstrap-330 .glyphicon-th:before {
|
2905 |
-
content: "\e011";
|
2906 |
-
}
|
2907 |
-
|
2908 |
-
.factory-bootstrap-330 .glyphicon-th-list:before {
|
2909 |
-
content: "\e012";
|
2910 |
-
}
|
2911 |
-
|
2912 |
-
.factory-bootstrap-330 .glyphicon-ok:before {
|
2913 |
-
content: "\e013";
|
2914 |
-
}
|
2915 |
-
|
2916 |
-
.factory-bootstrap-330 .glyphicon-remove:before {
|
2917 |
-
content: "\e014";
|
2918 |
-
}
|
2919 |
-
|
2920 |
-
.factory-bootstrap-330 .glyphicon-zoom-in:before {
|
2921 |
-
content: "\e015";
|
2922 |
-
}
|
2923 |
-
|
2924 |
-
.factory-bootstrap-330 .glyphicon-zoom-out:before {
|
2925 |
-
content: "\e016";
|
2926 |
-
}
|
2927 |
-
|
2928 |
-
.factory-bootstrap-330 .glyphicon-off:before {
|
2929 |
-
content: "\e017";
|
2930 |
-
}
|
2931 |
-
|
2932 |
-
.factory-bootstrap-330 .glyphicon-signal:before {
|
2933 |
-
content: "\e018";
|
2934 |
-
}
|
2935 |
-
|
2936 |
-
.factory-bootstrap-330 .glyphicon-cog:before {
|
2937 |
-
content: "\e019";
|
2938 |
-
}
|
2939 |
-
|
2940 |
-
.factory-bootstrap-330 .glyphicon-trash:before {
|
2941 |
-
content: "\e020";
|
2942 |
-
}
|
2943 |
-
|
2944 |
-
.factory-bootstrap-330 .glyphicon-home:before {
|
2945 |
-
content: "\e021";
|
2946 |
-
}
|
2947 |
-
|
2948 |
-
.factory-bootstrap-330 .glyphicon-file:before {
|
2949 |
-
content: "\e022";
|
2950 |
-
}
|
2951 |
-
|
2952 |
-
.factory-bootstrap-330 .glyphicon-time:before {
|
2953 |
-
content: "\e023";
|
2954 |
-
}
|
2955 |
-
|
2956 |
-
.factory-bootstrap-330 .glyphicon-road:before {
|
2957 |
-
content: "\e024";
|
2958 |
-
}
|
2959 |
-
|
2960 |
-
.factory-bootstrap-330 .glyphicon-download-alt:before {
|
2961 |
-
content: "\e025";
|
2962 |
-
}
|
2963 |
-
|
2964 |
-
.factory-bootstrap-330 .glyphicon-download:before {
|
2965 |
-
content: "\e026";
|
2966 |
-
}
|
2967 |
-
|
2968 |
-
.factory-bootstrap-330 .glyphicon-upload:before {
|
2969 |
-
content: "\e027";
|
2970 |
-
}
|
2971 |
-
|
2972 |
-
.factory-bootstrap-330 .glyphicon-inbox:before {
|
2973 |
-
content: "\e028";
|
2974 |
-
}
|
2975 |
-
|
2976 |
-
.factory-bootstrap-330 .glyphicon-play-circle:before {
|
2977 |
-
content: "\e029";
|
2978 |
-
}
|
2979 |
-
|
2980 |
-
.factory-bootstrap-330 .glyphicon-repeat:before {
|
2981 |
-
content: "\e030";
|
2982 |
-
}
|
2983 |
-
|
2984 |
-
.factory-bootstrap-330 .glyphicon-refresh:before {
|
2985 |
-
content: "\e031";
|
2986 |
-
}
|
2987 |
-
|
2988 |
-
.factory-bootstrap-330 .glyphicon-list-alt:before {
|
2989 |
-
content: "\e032";
|
2990 |
-
}
|
2991 |
-
|
2992 |
-
.factory-bootstrap-330 .glyphicon-lock:before {
|
2993 |
-
content: "\e033";
|
2994 |
-
}
|
2995 |
-
|
2996 |
-
.factory-bootstrap-330 .glyphicon-flag:before {
|
2997 |
-
content: "\e034";
|
2998 |
-
}
|
2999 |
-
|
3000 |
-
.factory-bootstrap-330 .glyphicon-headphones:before {
|
3001 |
-
content: "\e035";
|
3002 |
-
}
|
3003 |
-
|
3004 |
-
.factory-bootstrap-330 .glyphicon-volume-off:before {
|
3005 |
-
content: "\e036";
|
3006 |
-
}
|
3007 |
-
|
3008 |
-
.factory-bootstrap-330 .glyphicon-volume-down:before {
|
3009 |
-
content: "\e037";
|
3010 |
-
}
|
3011 |
-
|
3012 |
-
.factory-bootstrap-330 .glyphicon-volume-up:before {
|
3013 |
-
content: "\e038";
|
3014 |
-
}
|
3015 |
-
|
3016 |
-
.factory-bootstrap-330 .glyphicon-qrcode:before {
|
3017 |
-
content: "\e039";
|
3018 |
-
}
|
3019 |
-
|
3020 |
-
.factory-bootstrap-330 .glyphicon-barcode:before {
|
3021 |
-
content: "\e040";
|
3022 |
-
}
|
3023 |
-
|
3024 |
-
.factory-bootstrap-330 .glyphicon-tag:before {
|
3025 |
-
content: "\e041";
|
3026 |
-
}
|
3027 |
-
|
3028 |
-
.factory-bootstrap-330 .glyphicon-tags:before {
|
3029 |
-
content: "\e042";
|
3030 |
-
}
|
3031 |
-
|
3032 |
-
.factory-bootstrap-330 .glyphicon-book:before {
|
3033 |
-
content: "\e043";
|
3034 |
-
}
|
3035 |
-
|
3036 |
-
.factory-bootstrap-330 .glyphicon-bookmark:before {
|
3037 |
-
content: "\e044";
|
3038 |
-
}
|
3039 |
-
|
3040 |
-
.factory-bootstrap-330 .glyphicon-print:before {
|
3041 |
-
content: "\e045";
|
3042 |
-
}
|
3043 |
-
|
3044 |
-
.factory-bootstrap-330 .glyphicon-camera:before {
|
3045 |
-
content: "\e046";
|
3046 |
-
}
|
3047 |
-
|
3048 |
-
.factory-bootstrap-330 .glyphicon-font:before {
|
3049 |
-
content: "\e047";
|
3050 |
-
}
|
3051 |
-
|
3052 |
-
.factory-bootstrap-330 .glyphicon-bold:before {
|
3053 |
-
content: "\e048";
|
3054 |
-
}
|
3055 |
-
|
3056 |
-
.factory-bootstrap-330 .glyphicon-italic:before {
|
3057 |
-
content: "\e049";
|
3058 |
-
}
|
3059 |
-
|
3060 |
-
.factory-bootstrap-330 .glyphicon-text-height:before {
|
3061 |
-
content: "\e050";
|
3062 |
-
}
|
3063 |
-
|
3064 |
-
.factory-bootstrap-330 .glyphicon-text-width:before {
|
3065 |
-
content: "\e051";
|
3066 |
-
}
|
3067 |
-
|
3068 |
-
.factory-bootstrap-330 .glyphicon-align-left:before {
|
3069 |
-
content: "\e052";
|
3070 |
-
}
|
3071 |
-
|
3072 |
-
.factory-bootstrap-330 .glyphicon-align-center:before {
|
3073 |
-
content: "\e053";
|
3074 |
-
}
|
3075 |
-
|
3076 |
-
.factory-bootstrap-330 .glyphicon-align-right:before {
|
3077 |
-
content: "\e054";
|
3078 |
-
}
|
3079 |
-
|
3080 |
-
.factory-bootstrap-330 .glyphicon-align-justify:before {
|
3081 |
-
content: "\e055";
|
3082 |
-
}
|
3083 |
-
|
3084 |
-
.factory-bootstrap-330 .glyphicon-list:before {
|
3085 |
-
content: "\e056";
|
3086 |
-
}
|
3087 |
-
|
3088 |
-
.factory-bootstrap-330 .glyphicon-indent-left:before {
|
3089 |
-
content: "\e057";
|
3090 |
-
}
|
3091 |
-
|
3092 |
-
.factory-bootstrap-330 .glyphicon-indent-right:before {
|
3093 |
-
content: "\e058";
|
3094 |
-
}
|
3095 |
-
|
3096 |
-
.factory-bootstrap-330 .glyphicon-facetime-video:before {
|
3097 |
-
content: "\e059";
|
3098 |
-
}
|
3099 |
-
|
3100 |
-
.factory-bootstrap-330 .glyphicon-picture:before {
|
3101 |
-
content: "\e060";
|
3102 |
-
}
|
3103 |
-
|
3104 |
-
.factory-bootstrap-330 .glyphicon-map-marker:before {
|
3105 |
-
content: "\e062";
|
3106 |
-
}
|
3107 |
-
|
3108 |
-
.factory-bootstrap-330 .glyphicon-adjust:before {
|
3109 |
-
content: "\e063";
|
3110 |
-
}
|
3111 |
-
|
3112 |
-
.factory-bootstrap-330 .glyphicon-tint:before {
|
3113 |
-
content: "\e064";
|
3114 |
-
}
|
3115 |
-
|
3116 |
-
.factory-bootstrap-330 .glyphicon-edit:before {
|
3117 |
-
content: "\e065";
|
3118 |
-
}
|
3119 |
-
|
3120 |
-
.factory-bootstrap-330 .glyphicon-share:before {
|
3121 |
-
content: "\e066";
|
3122 |
-
}
|
3123 |
-
|
3124 |
-
.factory-bootstrap-330 .glyphicon-check:before {
|
3125 |
-
content: "\e067";
|
3126 |
-
}
|
3127 |
-
|
3128 |
-
.factory-bootstrap-330 .glyphicon-move:before {
|
3129 |
-
content: "\e068";
|
3130 |
-
}
|
3131 |
-
|
3132 |
-
.factory-bootstrap-330 .glyphicon-step-backward:before {
|
3133 |
-
content: "\e069";
|
3134 |
-
}
|
3135 |
-
|
3136 |
-
.factory-bootstrap-330 .glyphicon-fast-backward:before {
|
3137 |
-
content: "\e070";
|
3138 |
-
}
|
3139 |
-
|
3140 |
-
.factory-bootstrap-330 .glyphicon-backward:before {
|
3141 |
-
content: "\e071";
|
3142 |
-
}
|
3143 |
-
|
3144 |
-
.factory-bootstrap-330 .glyphicon-play:before {
|
3145 |
-
content: "\e072";
|
3146 |
-
}
|
3147 |
-
|
3148 |
-
.factory-bootstrap-330 .glyphicon-pause:before {
|
3149 |
-
content: "\e073";
|
3150 |
-
}
|
3151 |
-
|
3152 |
-
.factory-bootstrap-330 .glyphicon-stop:before {
|
3153 |
-
content: "\e074";
|
3154 |
-
}
|
3155 |
-
|
3156 |
-
.factory-bootstrap-330 .glyphicon-forward:before {
|
3157 |
-
content: "\e075";
|
3158 |
-
}
|
3159 |
-
|
3160 |
-
.factory-bootstrap-330 .glyphicon-fast-forward:before {
|
3161 |
-
content: "\e076";
|
3162 |
-
}
|
3163 |
-
|
3164 |
-
.factory-bootstrap-330 .glyphicon-step-forward:before {
|
3165 |
-
content: "\e077";
|
3166 |
-
}
|
3167 |
-
|
3168 |
-
.factory-bootstrap-330 .glyphicon-eject:before {
|
3169 |
-
content: "\e078";
|
3170 |
-
}
|
3171 |
-
|
3172 |
-
.factory-bootstrap-330 .glyphicon-chevron-left:before {
|
3173 |
-
content: "\e079";
|
3174 |
-
}
|
3175 |
-
|
3176 |
-
.factory-bootstrap-330 .glyphicon-chevron-right:before {
|
3177 |
-
content: "\e080";
|
3178 |
-
}
|
3179 |
-
|
3180 |
-
.factory-bootstrap-330 .glyphicon-plus-sign:before {
|
3181 |
-
content: "\e081";
|
3182 |
-
}
|
3183 |
-
|
3184 |
-
.factory-bootstrap-330 .glyphicon-minus-sign:before {
|
3185 |
-
content: "\e082";
|
3186 |
-
}
|
3187 |
-
|
3188 |
-
.factory-bootstrap-330 .glyphicon-remove-sign:before {
|
3189 |
-
content: "\e083";
|
3190 |
-
}
|
3191 |
-
|
3192 |
-
.factory-bootstrap-330 .glyphicon-ok-sign:before {
|
3193 |
-
content: "\e084";
|
3194 |
-
}
|
3195 |
-
|
3196 |
-
.factory-bootstrap-330 .glyphicon-question-sign:before {
|
3197 |
-
content: "\e085";
|
3198 |
-
}
|
3199 |
-
|
3200 |
-
.factory-bootstrap-330 .glyphicon-info-sign:before {
|
3201 |
-
content: "\e086";
|
3202 |
-
}
|
3203 |
-
|
3204 |
-
.factory-bootstrap-330 .glyphicon-screenshot:before {
|
3205 |
-
content: "\e087";
|
3206 |
-
}
|
3207 |
-
|
3208 |
-
.factory-bootstrap-330 .glyphicon-remove-circle:before {
|
3209 |
-
content: "\e088";
|
3210 |
-
}
|
3211 |
-
|
3212 |
-
.factory-bootstrap-330 .glyphicon-ok-circle:before {
|
3213 |
-
content: "\e089";
|
3214 |
-
}
|
3215 |
-
|
3216 |
-
.factory-bootstrap-330 .glyphicon-ban-circle:before {
|
3217 |
-
content: "\e090";
|
3218 |
-
}
|
3219 |
-
|
3220 |
-
.factory-bootstrap-330 .glyphicon-arrow-left:before {
|
3221 |
-
content: "\e091";
|
3222 |
-
}
|
3223 |
-
|
3224 |
-
.factory-bootstrap-330 .glyphicon-arrow-right:before {
|
3225 |
-
content: "\e092";
|
3226 |
-
}
|
3227 |
-
|
3228 |
-
.factory-bootstrap-330 .glyphicon-arrow-up:before {
|
3229 |
-
content: "\e093";
|
3230 |
-
}
|
3231 |
-
|
3232 |
-
.factory-bootstrap-330 .glyphicon-arrow-down:before {
|
3233 |
-
content: "\e094";
|
3234 |
-
}
|
3235 |
-
|
3236 |
-
.factory-bootstrap-330 .glyphicon-share-alt:before {
|
3237 |
-
content: "\e095";
|
3238 |
-
}
|
3239 |
-
|
3240 |
-
.factory-bootstrap-330 .glyphicon-resize-full:before {
|
3241 |
-
content: "\e096";
|
3242 |
-
}
|
3243 |
-
|
3244 |
-
.factory-bootstrap-330 .glyphicon-resize-small:before {
|
3245 |
-
content: "\e097";
|
3246 |
-
}
|
3247 |
-
|
3248 |
-
.factory-bootstrap-330 .glyphicon-exclamation-sign:before {
|
3249 |
-
content: "\e101";
|
3250 |
-
}
|
3251 |
-
|
3252 |
-
.factory-bootstrap-330 .glyphicon-gift:before {
|
3253 |
-
content: "\e102";
|
3254 |
-
}
|
3255 |
-
|
3256 |
-
.factory-bootstrap-330 .glyphicon-leaf:before {
|
3257 |
-
content: "\e103";
|
3258 |
-
}
|
3259 |
-
|
3260 |
-
.factory-bootstrap-330 .glyphicon-fire:before {
|
3261 |
-
content: "\e104";
|
3262 |
-
}
|
3263 |
-
|
3264 |
-
.factory-bootstrap-330 .glyphicon-eye-open:before {
|
3265 |
-
content: "\e105";
|
3266 |
-
}
|
3267 |
-
|
3268 |
-
.factory-bootstrap-330 .glyphicon-eye-close:before {
|
3269 |
-
content: "\e106";
|
3270 |
-
}
|
3271 |
-
|
3272 |
-
.factory-bootstrap-330 .glyphicon-warning-sign:before {
|
3273 |
-
content: "\e107";
|
3274 |
-
}
|
3275 |
-
|
3276 |
-
.factory-bootstrap-330 .glyphicon-plane:before {
|
3277 |
-
content: "\e108";
|
3278 |
-
}
|
3279 |
-
|
3280 |
-
.factory-bootstrap-330 .glyphicon-calendar:before {
|
3281 |
-
content: "\e109";
|
3282 |
-
}
|
3283 |
-
|
3284 |
-
.factory-bootstrap-330 .glyphicon-random:before {
|
3285 |
-
content: "\e110";
|
3286 |
-
}
|
3287 |
-
|
3288 |
-
.factory-bootstrap-330 .glyphicon-comment:before {
|
3289 |
-
content: "\e111";
|
3290 |
-
}
|
3291 |
-
|
3292 |
-
.factory-bootstrap-330 .glyphicon-magnet:before {
|
3293 |
-
content: "\e112";
|
3294 |
-
}
|
3295 |
-
|
3296 |
-
.factory-bootstrap-330 .glyphicon-chevron-up:before {
|
3297 |
-
content: "\e113";
|
3298 |
-
}
|
3299 |
-
|
3300 |
-
.factory-bootstrap-330 .glyphicon-chevron-down:before {
|
3301 |
-
content: "\e114";
|
3302 |
-
}
|
3303 |
-
|
3304 |
-
.factory-bootstrap-330 .glyphicon-retweet:before {
|
3305 |
-
content: "\e115";
|
3306 |
-
}
|
3307 |
-
|
3308 |
-
.factory-bootstrap-330 .glyphicon-shopping-cart:before {
|
3309 |
-
content: "\e116";
|
3310 |
-
}
|
3311 |
-
|
3312 |
-
.factory-bootstrap-330 .glyphicon-folder-close:before {
|
3313 |
-
content: "\e117";
|
3314 |
-
}
|
3315 |
-
|
3316 |
-
.factory-bootstrap-330 .glyphicon-folder-open:before {
|
3317 |
-
content: "\e118";
|
3318 |
-
}
|
3319 |
-
|
3320 |
-
.factory-bootstrap-330 .glyphicon-resize-vertical:before {
|
3321 |
-
content: "\e119";
|
3322 |
-
}
|
3323 |
-
|
3324 |
-
.factory-bootstrap-330 .glyphicon-resize-horizontal:before {
|
3325 |
-
content: "\e120";
|
3326 |
-
}
|
3327 |
-
|
3328 |
-
.factory-bootstrap-330 .glyphicon-hdd:before {
|
3329 |
-
content: "\e121";
|
3330 |
-
}
|
3331 |
-
|
3332 |
-
.factory-bootstrap-330 .glyphicon-bullhorn:before {
|
3333 |
-
content: "\e122";
|
3334 |
-
}
|
3335 |
-
|
3336 |
-
.factory-bootstrap-330 .glyphicon-bell:before {
|
3337 |
-
content: "\e123";
|
3338 |
-
}
|
3339 |
-
|
3340 |
-
.factory-bootstrap-330 .glyphicon-certificate:before {
|
3341 |
-
content: "\e124";
|
3342 |
-
}
|
3343 |
-
|
3344 |
-
.factory-bootstrap-330 .glyphicon-thumbs-up:before {
|
3345 |
-
content: "\e125";
|
3346 |
-
}
|
3347 |
-
|
3348 |
-
.factory-bootstrap-330 .glyphicon-thumbs-down:before {
|
3349 |
-
content: "\e126";
|
3350 |
-
}
|
3351 |
-
|
3352 |
-
.factory-bootstrap-330 .glyphicon-hand-right:before {
|
3353 |
-
content: "\e127";
|
3354 |
-
}
|
3355 |
-
|
3356 |
-
.factory-bootstrap-330 .glyphicon-hand-left:before {
|
3357 |
-
content: "\e128";
|
3358 |
-
}
|
3359 |
-
|
3360 |
-
.factory-bootstrap-330 .glyphicon-hand-up:before {
|
3361 |
-
content: "\e129";
|
3362 |
-
}
|
3363 |
-
|
3364 |
-
.factory-bootstrap-330 .glyphicon-hand-down:before {
|
3365 |
-
content: "\e130";
|
3366 |
-
}
|
3367 |
-
|
3368 |
-
.factory-bootstrap-330 .glyphicon-circle-arrow-right:before {
|
3369 |
-
content: "\e131";
|
3370 |
-
}
|
3371 |
-
|
3372 |
-
.factory-bootstrap-330 .glyphicon-circle-arrow-left:before {
|
3373 |
-
content: "\e132";
|
3374 |
-
}
|
3375 |
-
|
3376 |
-
.factory-bootstrap-330 .glyphicon-circle-arrow-up:before {
|
3377 |
-
content: "\e133";
|
3378 |
-
}
|
3379 |
-
|
3380 |
-
.factory-bootstrap-330 .glyphicon-circle-arrow-down:before {
|
3381 |
-
content: "\e134";
|
3382 |
-
}
|
3383 |
-
|
3384 |
-
.factory-bootstrap-330 .glyphicon-globe:before {
|
3385 |
-
content: "\e135";
|
3386 |
-
}
|
3387 |
-
|
3388 |
-
.factory-bootstrap-330 .glyphicon-wrench:before {
|
3389 |
-
content: "\e136";
|
3390 |
-
}
|
3391 |
-
|
3392 |
-
.factory-bootstrap-330 .glyphicon-tasks:before {
|
3393 |
-
content: "\e137";
|
3394 |
-
}
|
3395 |
-
|
3396 |
-
.factory-bootstrap-330 .glyphicon-filter:before {
|
3397 |
-
content: "\e138";
|
3398 |
-
}
|
3399 |
-
|
3400 |
-
.factory-bootstrap-330 .glyphicon-briefcase:before {
|
3401 |
-
content: "\e139";
|
3402 |
-
}
|
3403 |
-
|
3404 |
-
.factory-bootstrap-330 .glyphicon-fullscreen:before {
|
3405 |
-
content: "\e140";
|
3406 |
-
}
|
3407 |
-
|
3408 |
-
.factory-bootstrap-330 .glyphicon-dashboard:before {
|
3409 |
-
content: "\e141";
|
3410 |
-
}
|
3411 |
-
|
3412 |
-
.factory-bootstrap-330 .glyphicon-paperclip:before {
|
3413 |
-
content: "\e142";
|
3414 |
-
}
|
3415 |
-
|
3416 |
-
.factory-bootstrap-330 .glyphicon-heart-empty:before {
|
3417 |
-
content: "\e143";
|
3418 |
-
}
|
3419 |
-
|
3420 |
-
.factory-bootstrap-330 .glyphicon-link:before {
|
3421 |
-
content: "\e144";
|
3422 |
-
}
|
3423 |
-
|
3424 |
-
.factory-bootstrap-330 .glyphicon-phone:before {
|
3425 |
-
content: "\e145";
|
3426 |
-
}
|
3427 |
-
|
3428 |
-
.factory-bootstrap-330 .glyphicon-pushpin:before {
|
3429 |
-
content: "\e146";
|
3430 |
-
}
|
3431 |
-
|
3432 |
-
.factory-bootstrap-330 .glyphicon-usd:before {
|
3433 |
-
content: "\e148";
|
3434 |
-
}
|
3435 |
-
|
3436 |
-
.factory-bootstrap-330 .glyphicon-gbp:before {
|
3437 |
-
content: "\e149";
|
3438 |
-
}
|
3439 |
-
|
3440 |
-
.factory-bootstrap-330 .glyphicon-sort:before {
|
3441 |
-
content: "\e150";
|
3442 |
-
}
|
3443 |
-
|
3444 |
-
.factory-bootstrap-330 .glyphicon-sort-by-alphabet:before {
|
3445 |
-
content: "\e151";
|
3446 |
-
}
|
3447 |
-
|
3448 |
-
.factory-bootstrap-330 .glyphicon-sort-by-alphabet-alt:before {
|
3449 |
-
content: "\e152";
|
3450 |
-
}
|
3451 |
-
|
3452 |
-
.factory-bootstrap-330 .glyphicon-sort-by-order:before {
|
3453 |
-
content: "\e153";
|
3454 |
-
}
|
3455 |
-
|
3456 |
-
.factory-bootstrap-330 .glyphicon-sort-by-order-alt:before {
|
3457 |
-
content: "\e154";
|
3458 |
-
}
|
3459 |
-
|
3460 |
-
.factory-bootstrap-330 .glyphicon-sort-by-attributes:before {
|
3461 |
-
content: "\e155";
|
3462 |
-
}
|
3463 |
-
|
3464 |
-
.factory-bootstrap-330 .glyphicon-sort-by-attributes-alt:before {
|
3465 |
-
content: "\e156";
|
3466 |
-
}
|
3467 |
-
|
3468 |
-
.factory-bootstrap-330 .glyphicon-unchecked:before {
|
3469 |
-
content: "\e157";
|
3470 |
-
}
|
3471 |
-
|
3472 |
-
.factory-bootstrap-330 .glyphicon-expand:before {
|
3473 |
-
content: "\e158";
|
3474 |
-
}
|
3475 |
-
|
3476 |
-
.factory-bootstrap-330 .glyphicon-collapse-down:before {
|
3477 |
-
content: "\e159";
|
3478 |
-
}
|
3479 |
-
|
3480 |
-
.factory-bootstrap-330 .glyphicon-collapse-up:before {
|
3481 |
-
content: "\e160";
|
3482 |
-
}
|
3483 |
-
|
3484 |
-
.factory-bootstrap-330 .glyphicon-log-in:before {
|
3485 |
-
content: "\e161";
|
3486 |
-
}
|
3487 |
-
|
3488 |
-
.factory-bootstrap-330 .glyphicon-flash:before {
|
3489 |
-
content: "\e162";
|
3490 |
-
}
|
3491 |
-
|
3492 |
-
.factory-bootstrap-330 .glyphicon-log-out:before {
|
3493 |
-
content: "\e163";
|
3494 |
-
}
|
3495 |
-
|
3496 |
-
.factory-bootstrap-330 .glyphicon-new-window:before {
|
3497 |
-
content: "\e164";
|
3498 |
-
}
|
3499 |
-
|
3500 |
-
.factory-bootstrap-330 .glyphicon-record:before {
|
3501 |
-
content: "\e165";
|
3502 |
-
}
|
3503 |
-
|
3504 |
-
.factory-bootstrap-330 .glyphicon-save:before {
|
3505 |
-
content: "\e166";
|
3506 |
-
}
|
3507 |
-
|
3508 |
-
.factory-bootstrap-330 .glyphicon-open:before {
|
3509 |
-
content: "\e167";
|
3510 |
-
}
|
3511 |
-
|
3512 |
-
.factory-bootstrap-330 .glyphicon-saved:before {
|
3513 |
-
content: "\e168";
|
3514 |
-
}
|
3515 |
-
|
3516 |
-
.factory-bootstrap-330 .glyphicon-import:before {
|
3517 |
-
content: "\e169";
|
3518 |
-
}
|
3519 |
-
|
3520 |
-
.factory-bootstrap-330 .glyphicon-export:before {
|
3521 |
-
content: "\e170";
|
3522 |
-
}
|
3523 |
-
|
3524 |
-
.factory-bootstrap-330 .glyphicon-send:before {
|
3525 |
-
content: "\e171";
|
3526 |
-
}
|
3527 |
-
|
3528 |
-
.factory-bootstrap-330 .glyphicon-floppy-disk:before {
|
3529 |
-
content: "\e172";
|
3530 |
-
}
|
3531 |
-
|
3532 |
-
.factory-bootstrap-330 .glyphicon-floppy-saved:before {
|
3533 |
-
content: "\e173";
|
3534 |
-
}
|
3535 |
-
|
3536 |
-
.factory-bootstrap-330 .glyphicon-floppy-remove:before {
|
3537 |
-
content: "\e174";
|
3538 |
-
}
|
3539 |
-
|
3540 |
-
.factory-bootstrap-330 .glyphicon-floppy-save:before {
|
3541 |
-
content: "\e175";
|
3542 |
-
}
|
3543 |
-
|
3544 |
-
.factory-bootstrap-330 .glyphicon-floppy-open:before {
|
3545 |
-
content: "\e176";
|
3546 |
-
}
|
3547 |
-
|
3548 |
-
.factory-bootstrap-330 .glyphicon-credit-card:before {
|
3549 |
-
content: "\e177";
|
3550 |
-
}
|
3551 |
-
|
3552 |
-
.factory-bootstrap-330 .glyphicon-transfer:before {
|
3553 |
-
content: "\e178";
|
3554 |
-
}
|
3555 |
-
|
3556 |
-
.factory-bootstrap-330 .glyphicon-cutlery:before {
|
3557 |
-
content: "\e179";
|
3558 |
-
}
|
3559 |
-
|
3560 |
-
.factory-bootstrap-330 .glyphicon-header:before {
|
3561 |
-
content: "\e180";
|
3562 |
-
}
|
3563 |
-
|
3564 |
-
.factory-bootstrap-330 .glyphicon-compressed:before {
|
3565 |
-
content: "\e181";
|
3566 |
-
}
|
3567 |
-
|
3568 |
-
.factory-bootstrap-330 .glyphicon-earphone:before {
|
3569 |
-
content: "\e182";
|
3570 |
-
}
|
3571 |
-
|
3572 |
-
.factory-bootstrap-330 .glyphicon-phone-alt:before {
|
3573 |
-
content: "\e183";
|
3574 |
-
}
|
3575 |
-
|
3576 |
-
.factory-bootstrap-330 .glyphicon-tower:before {
|
3577 |
-
content: "\e184";
|
3578 |
-
}
|
3579 |
-
|
3580 |
-
.factory-bootstrap-330 .glyphicon-stats:before {
|
3581 |
-
content: "\e185";
|
3582 |
-
}
|
3583 |
-
|
3584 |
-
.factory-bootstrap-330 .glyphicon-sd-video:before {
|
3585 |
-
content: "\e186";
|
3586 |
-
}
|
3587 |
-
|
3588 |
-
.factory-bootstrap-330 .glyphicon-hd-video:before {
|
3589 |
-
content: "\e187";
|
3590 |
-
}
|
3591 |
-
|
3592 |
-
.factory-bootstrap-330 .glyphicon-subtitles:before {
|
3593 |
-
content: "\e188";
|
3594 |
-
}
|
3595 |
-
|
3596 |
-
.factory-bootstrap-330 .glyphicon-sound-stereo:before {
|
3597 |
-
content: "\e189";
|
3598 |
-
}
|
3599 |
-
|
3600 |
-
.factory-bootstrap-330 .glyphicon-sound-dolby:before {
|
3601 |
-
content: "\e190";
|
3602 |
-
}
|
3603 |
-
|
3604 |
-
.factory-bootstrap-330 .glyphicon-sound-5-1:before {
|
3605 |
-
content: "\e191";
|
3606 |
-
}
|
3607 |
-
|
3608 |
-
.factory-bootstrap-330 .glyphicon-sound-6-1:before {
|
3609 |
-
content: "\e192";
|
3610 |
-
}
|
3611 |
-
|
3612 |
-
.factory-bootstrap-330 .glyphicon-sound-7-1:before {
|
3613 |
-
content: "\e193";
|
3614 |
-
}
|
3615 |
-
|
3616 |
-
.factory-bootstrap-330 .glyphicon-copyright-mark:before {
|
3617 |
-
content: "\e194";
|
3618 |
-
}
|
3619 |
-
|
3620 |
-
.factory-bootstrap-330 .glyphicon-registration-mark:before {
|
3621 |
-
content: "\e195";
|
3622 |
-
}
|
3623 |
-
|
3624 |
-
.factory-bootstrap-330 .glyphicon-cloud-download:before {
|
3625 |
-
content: "\e197";
|
3626 |
-
}
|
3627 |
-
|
3628 |
-
.factory-bootstrap-330 .glyphicon-cloud-upload:before {
|
3629 |
-
content: "\e198";
|
3630 |
-
}
|
3631 |
-
|
3632 |
-
.factory-bootstrap-330 .glyphicon-tree-conifer:before {
|
3633 |
-
content: "\e199";
|
3634 |
-
}
|
3635 |
-
|
3636 |
-
.factory-bootstrap-330 .glyphicon-tree-deciduous:before {
|
3637 |
-
content: "\e200";
|
3638 |
-
}
|
3639 |
-
|
3640 |
-
.factory-bootstrap-330 .caret {
|
3641 |
-
display: inline-block;
|
3642 |
-
width: 0;
|
3643 |
-
height: 0;
|
3644 |
-
margin-left: 2px;
|
3645 |
-
vertical-align: middle;
|
3646 |
-
border-top: 4px solid;
|
3647 |
-
border-right: 4px solid transparent;
|
3648 |
-
border-left: 4px solid transparent;
|
3649 |
-
}
|
3650 |
-
|
3651 |
-
.factory-bootstrap-330 .dropdown {
|
3652 |
-
position: relative;
|
3653 |
-
}
|
3654 |
-
|
3655 |
-
.factory-bootstrap-330 .dropdown-toggle:focus {
|
3656 |
-
outline: 0;
|
3657 |
-
}
|
3658 |
-
|
3659 |
-
.factory-bootstrap-330 .dropdown-menu {
|
3660 |
-
position: absolute;
|
3661 |
-
top: 100%;
|
3662 |
-
left: 0;
|
3663 |
-
z-index: 1000;
|
3664 |
-
display: none;
|
3665 |
-
float: left;
|
3666 |
-
min-width: 160px;
|
3667 |
-
padding: 5px 0;
|
3668 |
-
margin: 2px 0 0;
|
3669 |
-
font-size: 14px;
|
3670 |
-
list-style: none;
|
3671 |
-
background-color: #ffffff;
|
3672 |
-
border: 1px solid #cccccc;
|
3673 |
-
border: 1px solid rgba(0, 0, 0, 0.15);
|
3674 |
-
border-radius: 4px;
|
3675 |
-
-webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
|
3676 |
-
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
|
3677 |
-
background-clip: padding-box;
|
3678 |
-
}
|
3679 |
-
|
3680 |
-
.factory-bootstrap-330 .dropdown-menu.pull-right {
|
3681 |
-
right: 0;
|
3682 |
-
left: auto;
|
3683 |
-
}
|
3684 |
-
|
3685 |
-
.factory-bootstrap-330 .dropdown-menu .divider {
|
3686 |
-
height: 1px;
|
3687 |
-
margin: 9px 0;
|
3688 |
-
overflow: hidden;
|
3689 |
-
background-color: #e5e5e5;
|
3690 |
-
}
|
3691 |
-
|
3692 |
-
.factory-bootstrap-330 .dropdown-menu > li > a {
|
3693 |
-
display: block;
|
3694 |
-
padding: 3px 20px;
|
3695 |
-
clear: both;
|
3696 |
-
font-weight: normal;
|
3697 |
-
line-height: 1.428571429;
|
3698 |
-
color: #333333;
|
3699 |
-
white-space: nowrap;
|
3700 |
-
}
|
3701 |
-
|
3702 |
-
.factory-bootstrap-330 .dropdown-menu > li > a:hover,
|
3703 |
-
.factory-bootstrap-330 .dropdown-menu > li > a:focus {
|
3704 |
-
color: #262626;
|
3705 |
-
text-decoration: none;
|
3706 |
-
background-color: #f5f5f5;
|
3707 |
-
}
|
3708 |
-
|
3709 |
-
.factory-bootstrap-330 .dropdown-menu > .active > a,
|
3710 |
-
.factory-bootstrap-330 .dropdown-menu > .active > a:hover,
|
3711 |
-
.factory-bootstrap-330 .dropdown-menu > .active > a:focus {
|
3712 |
-
color: #ffffff;
|
3713 |
-
text-decoration: none;
|
3714 |
-
background-color: #428bca;
|
3715 |
-
outline: 0;
|
3716 |
-
}
|
3717 |
-
|
3718 |
-
.factory-bootstrap-330 .dropdown-menu > .disabled > a,
|
3719 |
-
.factory-bootstrap-330 .dropdown-menu > .disabled > a:hover,
|
3720 |
-
.factory-bootstrap-330 .dropdown-menu > .disabled > a:focus {
|
3721 |
-
color: #999999;
|
3722 |
-
}
|
3723 |
-
|
3724 |
-
.factory-bootstrap-330 .dropdown-menu > .disabled > a:hover,
|
3725 |
-
.factory-bootstrap-330 .dropdown-menu > .disabled > a:focus {
|
3726 |
-
text-decoration: none;
|
3727 |
-
cursor: not-allowed;
|
3728 |
-
background-color: transparent;
|
3729 |
-
background-image: none;
|
3730 |
-
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
3731 |
-
}
|
3732 |
-
|
3733 |
-
.factory-bootstrap-330 .open > .dropdown-menu {
|
3734 |
-
display: block;
|
3735 |
-
}
|
3736 |
-
|
3737 |
-
.factory-bootstrap-330 .open > a {
|
3738 |
-
outline: 0;
|
3739 |
-
}
|
3740 |
-
|
3741 |
-
.factory-bootstrap-330 .dropdown-header {
|
3742 |
-
display: block;
|
3743 |
-
padding: 3px 20px;
|
3744 |
-
font-size: 12px;
|
3745 |
-
line-height: 1.428571429;
|
3746 |
-
color: #999999;
|
3747 |
-
}
|
3748 |
-
|
3749 |
-
.factory-bootstrap-330 .dropdown-backdrop {
|
3750 |
-
position: fixed;
|
3751 |
-
top: 0;
|
3752 |
-
right: 0;
|
3753 |
-
bottom: 0;
|
3754 |
-
left: 0;
|
3755 |
-
z-index: 990;
|
3756 |
-
}
|
3757 |
-
|
3758 |
-
.factory-bootstrap-330 .pull-right > .dropdown-menu {
|
3759 |
-
right: 0;
|
3760 |
-
left: auto;
|
3761 |
-
}
|
3762 |
-
|
3763 |
-
.factory-bootstrap-330 .dropup .caret,
|
3764 |
-
.factory-bootstrap-330 .navbar-fixed-bottom .dropdown .caret {
|
3765 |
-
border-top: 0;
|
3766 |
-
border-bottom: 4px solid;
|
3767 |
-
content: "";
|
3768 |
-
}
|
3769 |
-
|
3770 |
-
.factory-bootstrap-330 .dropup .dropdown-menu,
|
3771 |
-
.factory-bootstrap-330 .navbar-fixed-bottom .dropdown .dropdown-menu {
|
3772 |
-
top: auto;
|
3773 |
-
bottom: 100%;
|
3774 |
-
margin-bottom: 1px;
|
3775 |
-
}
|
3776 |
-
|
3777 |
-
@media (min-width: 768px) {
|
3778 |
-
.navbar-right .dropdown-menu {
|
3779 |
-
right: 0;
|
3780 |
-
left: auto;
|
3781 |
-
}
|
3782 |
-
}
|
3783 |
-
|
3784 |
-
.factory-bootstrap-330 .btn-group,
|
3785 |
-
.factory-bootstrap-330 .btn-group-vertical {
|
3786 |
-
position: relative;
|
3787 |
-
display: inline-block;
|
3788 |
-
vertical-align: middle;
|
3789 |
-
}
|
3790 |
-
|
3791 |
-
.factory-bootstrap-330 .btn-group > .btn,
|
3792 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn {
|
3793 |
-
position: relative;
|
3794 |
-
float: left;
|
3795 |
-
}
|
3796 |
-
|
3797 |
-
.factory-bootstrap-330 .btn-group > .btn:hover,
|
3798 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn:hover,
|
3799 |
-
.factory-bootstrap-330 .btn-group > .btn:focus,
|
3800 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn:focus,
|
3801 |
-
.factory-bootstrap-330 .btn-group > .btn:active,
|
3802 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn:active,
|
3803 |
-
.factory-bootstrap-330 .btn-group > .btn.active,
|
3804 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn.active {
|
3805 |
-
z-index: 2;
|
3806 |
-
}
|
3807 |
-
|
3808 |
-
.factory-bootstrap-330 .btn-group > .btn:focus,
|
3809 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn:focus {
|
3810 |
-
outline: none;
|
3811 |
-
}
|
3812 |
-
|
3813 |
-
.factory-bootstrap-330 .btn-group .btn + .btn,
|
3814 |
-
.factory-bootstrap-330 .btn-group .btn + .btn-group,
|
3815 |
-
.factory-bootstrap-330 .btn-group .btn-group + .btn,
|
3816 |
-
.factory-bootstrap-330 .btn-group .btn-group + .btn-group {
|
3817 |
-
margin-left: -1px;
|
3818 |
-
}
|
3819 |
-
|
3820 |
-
.factory-bootstrap-330 .btn-toolbar:before,
|
3821 |
-
.factory-bootstrap-330 .btn-toolbar:after {
|
3822 |
-
display: table;
|
3823 |
-
content: " ";
|
3824 |
-
}
|
3825 |
-
|
3826 |
-
.factory-bootstrap-330 .btn-toolbar:after {
|
3827 |
-
clear: both;
|
3828 |
-
}
|
3829 |
-
|
3830 |
-
.factory-bootstrap-330 .btn-toolbar:before,
|
3831 |
-
.factory-bootstrap-330 .btn-toolbar:after {
|
3832 |
-
display: table;
|
3833 |
-
content: " ";
|
3834 |
-
}
|
3835 |
-
|
3836 |
-
.factory-bootstrap-330 .btn-toolbar:after {
|
3837 |
-
clear: both;
|
3838 |
-
}
|
3839 |
-
|
3840 |
-
.factory-bootstrap-330 .btn-toolbar .btn-group {
|
3841 |
-
float: left;
|
3842 |
-
}
|
3843 |
-
|
3844 |
-
.factory-bootstrap-330 .btn-toolbar > .btn + .btn,
|
3845 |
-
.factory-bootstrap-330 .btn-toolbar > .btn-group + .btn,
|
3846 |
-
.factory-bootstrap-330 .btn-toolbar > .btn + .btn-group,
|
3847 |
-
.factory-bootstrap-330 .btn-toolbar > .btn-group + .btn-group {
|
3848 |
-
margin-left: 5px;
|
3849 |
-
}
|
3850 |
-
|
3851 |
-
.factory-bootstrap-330 .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
|
3852 |
-
border-radius: 0;
|
3853 |
-
}
|
3854 |
-
|
3855 |
-
.factory-bootstrap-330 .btn-group > .btn:first-child {
|
3856 |
-
margin-left: 0;
|
3857 |
-
}
|
3858 |
-
|
3859 |
-
.factory-bootstrap-330 .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
|
3860 |
-
border-top-right-radius: 0;
|
3861 |
-
border-bottom-right-radius: 0;
|
3862 |
-
}
|
3863 |
-
|
3864 |
-
.factory-bootstrap-330 .btn-group > .btn:last-child:not(:first-child),
|
3865 |
-
.factory-bootstrap-330 .btn-group > .dropdown-toggle:not(:first-child) {
|
3866 |
-
border-bottom-left-radius: 0;
|
3867 |
-
border-top-left-radius: 0;
|
3868 |
-
}
|
3869 |
-
|
3870 |
-
.factory-bootstrap-330 .btn-group > .btn-group {
|
3871 |
-
float: left;
|
3872 |
-
}
|
3873 |
-
|
3874 |
-
.factory-bootstrap-330 .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
|
3875 |
-
border-radius: 0;
|
3876 |
-
}
|
3877 |
-
|
3878 |
-
.factory-bootstrap-330 .btn-group > .btn-group:first-child > .btn:last-child,
|
3879 |
-
.factory-bootstrap-330 .btn-group > .btn-group:first-child > .dropdown-toggle {
|
3880 |
-
border-top-right-radius: 0;
|
3881 |
-
border-bottom-right-radius: 0;
|
3882 |
-
}
|
3883 |
-
|
3884 |
-
.factory-bootstrap-330 .btn-group > .btn-group:last-child > .btn:first-child {
|
3885 |
-
border-bottom-left-radius: 0;
|
3886 |
-
border-top-left-radius: 0;
|
3887 |
-
}
|
3888 |
-
|
3889 |
-
.factory-bootstrap-330 .btn-group .dropdown-toggle:active,
|
3890 |
-
.factory-bootstrap-330 .btn-group.open .dropdown-toggle {
|
3891 |
-
outline: 0;
|
3892 |
-
}
|
3893 |
-
|
3894 |
-
.factory-bootstrap-330 .btn-group-xs > .btn {
|
3895 |
-
padding: 1px 5px;
|
3896 |
-
font-size: 12px;
|
3897 |
-
line-height: 1.5;
|
3898 |
-
border-radius: 3px;
|
3899 |
-
}
|
3900 |
-
|
3901 |
-
.factory-bootstrap-330 .btn-group-sm > .btn {
|
3902 |
-
padding: 5px 10px;
|
3903 |
-
font-size: 12px;
|
3904 |
-
line-height: 1.5;
|
3905 |
-
border-radius: 3px;
|
3906 |
-
}
|
3907 |
-
|
3908 |
-
.factory-bootstrap-330 .btn-group-lg > .btn {
|
3909 |
-
padding: 10px 16px;
|
3910 |
-
font-size: 18px;
|
3911 |
-
line-height: 1.33;
|
3912 |
-
border-radius: 6px;
|
3913 |
-
}
|
3914 |
-
|
3915 |
-
.factory-bootstrap-330 .btn-group > .btn + .dropdown-toggle {
|
3916 |
-
padding-right: 8px;
|
3917 |
-
padding-left: 8px;
|
3918 |
-
}
|
3919 |
-
|
3920 |
-
.factory-bootstrap-330 .btn-group > .btn-lg + .dropdown-toggle {
|
3921 |
-
padding-right: 12px;
|
3922 |
-
padding-left: 12px;
|
3923 |
-
}
|
3924 |
-
|
3925 |
-
.factory-bootstrap-330 .btn-group.open .dropdown-toggle {
|
3926 |
-
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
|
3927 |
-
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
|
3928 |
-
}
|
3929 |
-
|
3930 |
-
.factory-bootstrap-330 .btn-group.open .dropdown-toggle.btn-link {
|
3931 |
-
-webkit-box-shadow: none;
|
3932 |
-
box-shadow: none;
|
3933 |
-
}
|
3934 |
-
|
3935 |
-
.factory-bootstrap-330 .btn-group {
|
3936 |
-
border: 4px solid #f9f9f9;
|
3937 |
-
border-radius: 4px;
|
3938 |
-
}
|
3939 |
-
|
3940 |
-
.factory-bootstrap-330 .btn-group .btn.active.value {
|
3941 |
-
text-shadow: none;
|
3942 |
-
color: #fff;
|
3943 |
-
background-color: #33aad5;
|
3944 |
-
-webkit-box-shadow: inset 0 1px 1px #0074a2;
|
3945 |
-
box-shadow: inset 0 1px 3px #0074a2;
|
3946 |
-
border-top: 1px solid #0074a2;
|
3947 |
-
border-bottom: 1px solid #0074a2;
|
3948 |
-
border-left: 1px solid #0074a2;
|
3949 |
-
}
|
3950 |
-
|
3951 |
-
.factory-bootstrap-330 .btn .caret {
|
3952 |
-
margin-left: 0;
|
3953 |
-
}
|
3954 |
-
|
3955 |
-
.factory-bootstrap-330 .btn-lg .caret {
|
3956 |
-
border-width: 5px 5px 0;
|
3957 |
-
border-bottom-width: 0;
|
3958 |
-
}
|
3959 |
-
|
3960 |
-
.factory-bootstrap-330 .dropup .btn-lg .caret {
|
3961 |
-
border-width: 0 5px 5px;
|
3962 |
-
}
|
3963 |
-
|
3964 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn,
|
3965 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn-group,
|
3966 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn-group > .btn {
|
3967 |
-
display: block;
|
3968 |
-
float: none;
|
3969 |
-
width: 100%;
|
3970 |
-
max-width: 100%;
|
3971 |
-
}
|
3972 |
-
|
3973 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn-group:before,
|
3974 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn-group:after {
|
3975 |
-
display: table;
|
3976 |
-
content: " ";
|
3977 |
-
}
|
3978 |
-
|
3979 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn-group:after {
|
3980 |
-
clear: both;
|
3981 |
-
}
|
3982 |
-
|
3983 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn-group:before,
|
3984 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn-group:after {
|
3985 |
-
display: table;
|
3986 |
-
content: " ";
|
3987 |
-
}
|
3988 |
-
|
3989 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn-group:after {
|
3990 |
-
clear: both;
|
3991 |
-
}
|
3992 |
-
|
3993 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn-group > .btn {
|
3994 |
-
float: none;
|
3995 |
-
}
|
3996 |
-
|
3997 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn + .btn,
|
3998 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn + .btn-group,
|
3999 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn-group + .btn,
|
4000 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn-group + .btn-group {
|
4001 |
-
margin-top: -1px;
|
4002 |
-
margin-left: 0;
|
4003 |
-
}
|
4004 |
-
|
4005 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn:not(:first-child):not(:last-child) {
|
4006 |
-
border-radius: 0;
|
4007 |
-
}
|
4008 |
-
|
4009 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn:first-child:not(:last-child) {
|
4010 |
-
border-top-right-radius: 4px;
|
4011 |
-
border-bottom-right-radius: 0;
|
4012 |
-
border-bottom-left-radius: 0;
|
4013 |
-
}
|
4014 |
-
|
4015 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn:last-child:not(:first-child) {
|
4016 |
-
border-top-right-radius: 0;
|
4017 |
-
border-bottom-left-radius: 4px;
|
4018 |
-
border-top-left-radius: 0;
|
4019 |
-
}
|
4020 |
-
|
4021 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
|
4022 |
-
border-radius: 0;
|
4023 |
-
}
|
4024 |
-
|
4025 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn-group:first-child > .btn:last-child,
|
4026 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn-group:first-child > .dropdown-toggle {
|
4027 |
-
border-bottom-right-radius: 0;
|
4028 |
-
border-bottom-left-radius: 0;
|
4029 |
-
}
|
4030 |
-
|
4031 |
-
.factory-bootstrap-330 .btn-group-vertical > .btn-group:last-child > .btn:first-child {
|
4032 |
-
border-top-right-radius: 0;
|
4033 |
-
border-top-left-radius: 0;
|
4034 |
-
}
|
4035 |
-
|
4036 |
-
.factory-bootstrap-330 .btn-group-justified {
|
4037 |
-
display: table;
|
4038 |
-
width: 100%;
|
4039 |
-
border-collapse: separate;
|
4040 |
-
table-layout: fixed;
|
4041 |
-
}
|
4042 |
-
|
4043 |
-
.factory-bootstrap-330 .btn-group-justified > .btn,
|
4044 |
-
.factory-bootstrap-330 .btn-group-justified > .btn-group {
|
4045 |
-
display: table-cell;
|
4046 |
-
float: none;
|
4047 |
-
width: 1%;
|
4048 |
-
}
|
4049 |
-
|
4050 |
-
.factory-bootstrap-330 .btn-group-justified > .btn-group .btn {
|
4051 |
-
width: 100%;
|
4052 |
-
}
|
4053 |
-
|
4054 |
-
[data-toggle="buttons"] > .btn > input[type="radio"],
|
4055 |
-
[data-toggle="buttons"] > .btn > input[type="checkbox"] {
|
4056 |
-
display: none;
|
4057 |
-
}
|
4058 |
-
|
4059 |
-
.factory-bootstrap-330 .input-group {
|
4060 |
-
position: relative;
|
4061 |
-
display: table;
|
4062 |
-
border-collapse: separate;
|
4063 |
-
}
|
4064 |
-
|
4065 |
-
.factory-bootstrap-330 .input-group[class*="col-"] {
|
4066 |
-
float: none;
|
4067 |
-
padding-right: 0;
|
4068 |
-
padding-left: 0;
|
4069 |
-
}
|
4070 |
-
|
4071 |
-
.factory-bootstrap-330 .input-group .form-control {
|
4072 |
-
width: 100%;
|
4073 |
-
margin-bottom: 0;
|
4074 |
-
}
|
4075 |
-
|
4076 |
-
.factory-bootstrap-330 .input-group-lg > .form-control,
|
4077 |
-
.factory-bootstrap-330 .input-group-lg > .input-group-addon,
|
4078 |
-
.factory-bootstrap-330 .input-group-lg > .input-group-btn > .btn {
|
4079 |
-
height: 46px;
|
4080 |
-
padding: 10px 16px;
|
4081 |
-
font-size: 18px;
|
4082 |
-
line-height: 1.33;
|
4083 |
-
border-radius: 6px;
|
4084 |
-
}
|
4085 |
-
|
4086 |
-
.factory-bootstrap-330 select.input-group-lg > .form-control,
|
4087 |
-
.factory-bootstrap-330 select.input-group-lg > .input-group-addon,
|
4088 |
-
.factory-bootstrap-330 select.input-group-lg > .input-group-btn > .btn {
|
4089 |
-
height: 46px;
|
4090 |
-
line-height: 46px;
|
4091 |
-
}
|
4092 |
-
|
4093 |
-
.factory-bootstrap-330 textarea.input-group-lg > .form-control,
|
4094 |
-
.factory-bootstrap-330 textarea.input-group-lg > .input-group-addon,
|
4095 |
-
.factory-bootstrap-330 textarea.input-group-lg > .input-group-btn > .btn {
|
4096 |
-
height: auto;
|
4097 |
-
}
|
4098 |
-
|
4099 |
-
.factory-bootstrap-330 .input-group-sm > .form-control,
|
4100 |
-
.factory-bootstrap-330 .input-group-sm > .input-group-addon,
|
4101 |
-
.factory-bootstrap-330 .input-group-sm > .input-group-btn > .btn {
|
4102 |
-
height: 30px;
|
4103 |
-
padding: 5px 10px;
|
4104 |
-
font-size: 12px;
|
4105 |
-
line-height: 1.5;
|
4106 |
-
border-radius: 3px;
|
4107 |
-
}
|
4108 |
-
|
4109 |
-
.factory-bootstrap-330 select.input-group-sm > .form-control,
|
4110 |
-
.factory-bootstrap-330 select.input-group-sm > .input-group-addon,
|
4111 |
-
.factory-bootstrap-330 select.input-group-sm > .input-group-btn > .btn {
|
4112 |
-
height: 30px;
|
4113 |
-
line-height: 30px;
|
4114 |
-
}
|
4115 |
-
|
4116 |
-
.factory-bootstrap-330 textarea.input-group-sm > .form-control,
|
4117 |
-
.factory-bootstrap-330 textarea.input-group-sm > .input-group-addon,
|
4118 |
-
.factory-bootstrap-330 textarea.input-group-sm > .input-group-btn > .btn {
|
4119 |
-
height: auto;
|
4120 |
-
}
|
4121 |
-
|
4122 |
-
.factory-bootstrap-330 .input-group-addon,
|
4123 |
-
.factory-bootstrap-330 .input-group-btn,
|
4124 |
-
.factory-bootstrap-330 .input-group .form-control {
|
4125 |
-
display: table-cell;
|
4126 |
-
}
|
4127 |
-
|
4128 |
-
.factory-bootstrap-330 .input-group-addon:not(:first-child):not(:last-child),
|
4129 |
-
.factory-bootstrap-330 .input-group-btn:not(:first-child):not(:last-child),
|
4130 |
-
.factory-bootstrap-330 .input-group .form-control:not(:first-child):not(:last-child) {
|
4131 |
-
border-radius: 0;
|
4132 |
-
}
|
4133 |
-
|
4134 |
-
.factory-bootstrap-330 .input-group-addon,
|
4135 |
-
.factory-bootstrap-330 .input-group-btn {
|
4136 |
-
width: 1%;
|
4137 |
-
white-space: nowrap;
|
4138 |
-
vertical-align: middle;
|
4139 |
-
}
|
4140 |
-
|
4141 |
-
.factory-bootstrap-330 .input-group-addon {
|
4142 |
-
padding: 6px 12px;
|
4143 |
-
font-size: 14px;
|
4144 |
-
font-weight: normal;
|
4145 |
-
line-height: 1;
|
4146 |
-
color: #555555;
|
4147 |
-
text-align: center;
|
4148 |
-
background-color: #eeeeee;
|
4149 |
-
border: 1px solid #cccccc;
|
4150 |
-
border-radius: 4px;
|
4151 |
-
}
|
4152 |
-
|
4153 |
-
.factory-bootstrap-330 .input-group-addon.input-sm {
|
4154 |
-
padding: 5px 10px;
|
4155 |
-
font-size: 12px;
|
4156 |
-
border-radius: 3px;
|
4157 |
-
}
|
4158 |
-
|
4159 |
-
.factory-bootstrap-330 .input-group-addon.input-lg {
|
4160 |
-
padding: 10px 16px;
|
4161 |
-
font-size: 18px;
|
4162 |
-
border-radius: 6px;
|
4163 |
-
}
|
4164 |
-
|
4165 |
-
.factory-bootstrap-330 .input-group-addon input[type="radio"],
|
4166 |
-
.factory-bootstrap-330 .input-group-addon input[type="checkbox"] {
|
4167 |
-
margin-top: 0;
|
4168 |
-
}
|
4169 |
-
|
4170 |
-
.factory-bootstrap-330 .input-group .form-control:first-child,
|
4171 |
-
.factory-bootstrap-330 .input-group-addon:first-child,
|
4172 |
-
.factory-bootstrap-330 .input-group-btn:first-child > .btn,
|
4173 |
-
.factory-bootstrap-330 .input-group-btn:first-child > .dropdown-toggle,
|
4174 |
-
.factory-bootstrap-330 .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
|
4175 |
-
border-top-right-radius: 0;
|
4176 |
-
border-bottom-right-radius: 0;
|
4177 |
-
}
|
4178 |
-
|
4179 |
-
.factory-bootstrap-330 .input-group-addon:first-child {
|
4180 |
-
border-right: 0;
|
4181 |
-
}
|
4182 |
-
|
4183 |
-
.factory-bootstrap-330 .input-group .form-control:last-child,
|
4184 |
-
.factory-bootstrap-330 .input-group-addon:last-child,
|
4185 |
-
.factory-bootstrap-330 .input-group-btn:last-child > .btn,
|
4186 |
-
.factory-bootstrap-330 .input-group-btn:last-child > .dropdown-toggle,
|
4187 |
-
.factory-bootstrap-330 .input-group-btn:first-child > .btn:not(:first-child) {
|
4188 |
-
border-bottom-left-radius: 0;
|
4189 |
-
border-top-left-radius: 0;
|
4190 |
-
}
|
4191 |
-
|
4192 |
-
.factory-bootstrap-330 .input-group-addon:last-child {
|
4193 |
-
border-left: 0;
|
4194 |
-
}
|
4195 |
-
|
4196 |
-
.factory-bootstrap-330 .input-group-btn {
|
4197 |
-
position: relative;
|
4198 |
-
white-space: nowrap;
|
4199 |
-
}
|
4200 |
-
|
4201 |
-
.factory-bootstrap-330 .input-group-btn:first-child > .btn {
|
4202 |
-
margin-right: -1px;
|
4203 |
-
}
|
4204 |
-
|
4205 |
-
.factory-bootstrap-330 .input-group-btn:last-child > .btn {
|
4206 |
-
margin-left: -1px;
|
4207 |
-
}
|
4208 |
-
|
4209 |
-
.factory-bootstrap-330 .input-group-btn > .btn {
|
4210 |
-
position: relative;
|
4211 |
-
}
|
4212 |
-
|
4213 |
-
.factory-bootstrap-330 .input-group-btn > .btn + .btn {
|
4214 |
-
margin-left: -4px;
|
4215 |
-
}
|
4216 |
-
|
4217 |
-
.factory-bootstrap-330 .input-group-btn > .btn:hover,
|
4218 |
-
.factory-bootstrap-330 .input-group-btn > .btn:active {
|
4219 |
-
z-index: 2;
|
4220 |
-
}
|
4221 |
-
|
4222 |
-
.factory-bootstrap-330 .nav {
|
4223 |
-
padding-left: 0;
|
4224 |
-
margin-bottom: 0;
|
4225 |
-
list-style: none;
|
4226 |
-
}
|
4227 |
-
|
4228 |
-
.factory-bootstrap-330 .nav:before,
|
4229 |
-
.factory-bootstrap-330 .nav:after {
|
4230 |
-
display: table;
|
4231 |
-
content: " ";
|
4232 |
-
}
|
4233 |
-
|
4234 |
-
.factory-bootstrap-330 .nav:after {
|
4235 |
-
clear: both;
|
4236 |
-
}
|
4237 |
-
|
4238 |
-
.factory-bootstrap-330 .nav:before,
|
4239 |
-
.factory-bootstrap-330 .nav:after {
|
4240 |
-
display: table;
|
4241 |
-
content: " ";
|
4242 |
-
}
|
4243 |
-
|
4244 |
-
.factory-bootstrap-330 .nav:after {
|
4245 |
-
clear: both;
|
4246 |
-
}
|
4247 |
-
|
4248 |
-
.factory-bootstrap-330 .nav > li {
|
4249 |
-
position: relative;
|
4250 |
-
display: block;
|
4251 |
-
}
|
4252 |
-
|
4253 |
-
.factory-bootstrap-330 .nav > li > a {
|
4254 |
-
position: relative;
|
4255 |
-
display: block;
|
4256 |
-
padding: 10px 15px;
|
4257 |
-
}
|
4258 |
-
|
4259 |
-
.factory-bootstrap-330 .nav > li > a:hover,
|
4260 |
-
.factory-bootstrap-330 .nav > li > a:focus {
|
4261 |
-
text-decoration: none;
|
4262 |
-
background-color: #eeeeee;
|
4263 |
-
}
|
4264 |
-
|
4265 |
-
.factory-bootstrap-330 .nav > li.disabled > a {
|
4266 |
-
color: #999999;
|
4267 |
-
}
|
4268 |
-
|
4269 |
-
.factory-bootstrap-330 .nav > li.disabled > a:hover,
|
4270 |
-
.factory-bootstrap-330 .nav > li.disabled > a:focus {
|
4271 |
-
color: #999999;
|
4272 |
-
text-decoration: none;
|
4273 |
-
cursor: not-allowed;
|
4274 |
-
background-color: transparent;
|
4275 |
-
}
|
4276 |
-
|
4277 |
-
.factory-bootstrap-330 .nav .open > a,
|
4278 |
-
.factory-bootstrap-330 .nav .open > a:hover,
|
4279 |
-
.factory-bootstrap-330 .nav .open > a:focus {
|
4280 |
-
background-color: #eeeeee;
|
4281 |
-
border-color: #428bca;
|
4282 |
-
}
|
4283 |
-
|
4284 |
-
.factory-bootstrap-330 .nav .nav-divider {
|
4285 |
-
height: 1px;
|
4286 |
-
margin: 9px 0;
|
4287 |
-
overflow: hidden;
|
4288 |
-
background-color: #e5e5e5;
|
4289 |
-
}
|
4290 |
-
|
4291 |
-
.factory-bootstrap-330 .nav > li > a > img {
|
4292 |
-
max-width: none;
|
4293 |
-
}
|
4294 |
-
|
4295 |
-
.factory-bootstrap-330 .nav-tabs {
|
4296 |
-
border-bottom: 1px solid #dddddd;
|
4297 |
-
}
|
4298 |
-
|
4299 |
-
.factory-bootstrap-330 .nav-tabs > li {
|
4300 |
-
float: left;
|
4301 |
-
margin-bottom: -1px;
|
4302 |
-
}
|
4303 |
-
|
4304 |
-
.factory-bootstrap-330 .nav-tabs > li > a {
|
4305 |
-
margin-right: 2px;
|
4306 |
-
line-height: 1.428571429;
|
4307 |
-
border: 1px solid transparent;
|
4308 |
-
border-radius: 4px 4px 0 0;
|
4309 |
-
}
|
4310 |
-
|
4311 |
-
.factory-bootstrap-330 .nav-tabs > li > a:hover {
|
4312 |
-
border-color: #eeeeee #eeeeee #dddddd;
|
4313 |
-
}
|
4314 |
-
|
4315 |
-
.factory-bootstrap-330 .nav-tabs > li.active > a,
|
4316 |
-
.factory-bootstrap-330 .nav-tabs > li.active > a:hover,
|
4317 |
-
.factory-bootstrap-330 .nav-tabs > li.active > a:focus {
|
4318 |
-
color: #555555;
|
4319 |
-
cursor: default;
|
4320 |
-
background-color: #ffffff;
|
4321 |
-
border: 1px solid #dddddd;
|
4322 |
-
border-bottom-color: transparent;
|
4323 |
-
}
|
4324 |
-
|
4325 |
-
.factory-bootstrap-330 .nav-tabs.nav-justified {
|
4326 |
-
width: 100%;
|
4327 |
-
border-bottom: 0;
|
4328 |
-
}
|
4329 |
-
|
4330 |
-
.factory-bootstrap-330 .nav-tabs.nav-justified > li {
|
4331 |
-
float: none;
|
4332 |
-
}
|
4333 |
-
|
4334 |
-
.factory-bootstrap-330 .nav-tabs.nav-justified > li > a {
|
4335 |
-
margin-bottom: 5px;
|
4336 |
-
text-align: center;
|
4337 |
-
}
|
4338 |
-
|
4339 |
-
.factory-bootstrap-330 .nav-tabs.nav-justified > .dropdown .dropdown-menu {
|
4340 |
-
top: auto;
|
4341 |
-
left: auto;
|
4342 |
-
}
|
4343 |
-
|
4344 |
-
@media (min-width: 768px) {
|
4345 |
-
.nav-tabs.nav-justified > li {
|
4346 |
-
display: table-cell;
|
4347 |
-
width: 1%;
|
4348 |
-
}
|
4349 |
-
|
4350 |
-
.nav-tabs.nav-justified > li > a {
|
4351 |
-
margin-bottom: 0;
|
4352 |
-
}
|
4353 |
-
}
|
4354 |
-
|
4355 |
-
.factory-bootstrap-330 .nav-tabs.nav-justified > li > a {
|
4356 |
-
margin-right: 0;
|
4357 |
-
border-radius: 4px;
|
4358 |
-
}
|
4359 |
-
|
4360 |
-
.factory-bootstrap-330 .nav-tabs.nav-justified > .active > a,
|
4361 |
-
.factory-bootstrap-330 .nav-tabs.nav-justified > .active > a:hover,
|
4362 |
-
.factory-bootstrap-330 .nav-tabs.nav-justified > .active > a:focus {
|
4363 |
-
border: 1px solid #dddddd;
|
4364 |
-
}
|
4365 |
-
|
4366 |
-
@media (min-width: 768px) {
|
4367 |
-
.nav-tabs.nav-justified > li > a {
|
4368 |
-
border-bottom: 1px solid #dddddd;
|
4369 |
-
border-radius: 4px 4px 0 0;
|
4370 |
-
}
|
4371 |
-
|
4372 |
-
.nav-tabs.nav-justified > .active > a,
|
4373 |
-
.nav-tabs.nav-justified > .active > a:hover,
|
4374 |
-
.nav-tabs.nav-justified > .active > a:focus {
|
4375 |
-
border-bottom-color: #ffffff;
|
4376 |
-
}
|
4377 |
-
}
|
4378 |
-
|
4379 |
-
.factory-bootstrap-330 .nav-pills > li {
|
4380 |
-
float: left;
|
4381 |
-
}
|
4382 |
-
|
4383 |
-
.factory-bootstrap-330 .nav-pills > li > a {
|
4384 |
-
border-radius: 4px;
|
4385 |
-
}
|
4386 |
-
|
4387 |
-
.factory-bootstrap-330 .nav-pills > li + li {
|
4388 |
-
margin-left: 2px;
|
4389 |
-
}
|
4390 |
-
|
4391 |
-
.factory-bootstrap-330 .nav-pills > li.active > a,
|
4392 |
-
.factory-bootstrap-330 .nav-pills > li.active > a:hover,
|
4393 |
-
.factory-bootstrap-330 .nav-pills > li.active > a:focus {
|
4394 |
-
color: #ffffff;
|
4395 |
-
background-color: #428bca;
|
4396 |
-
}
|
4397 |
-
|
4398 |
-
.factory-bootstrap-330 .nav-stacked > li {
|
4399 |
-
float: none;
|
4400 |
-
}
|
4401 |
-
|
4402 |
-
.factory-bootstrap-330 .nav-stacked > li + li {
|
4403 |
-
margin-top: 2px;
|
4404 |
-
margin-left: 0;
|
4405 |
-
}
|
4406 |
-
|
4407 |
-
.factory-bootstrap-330 .nav-justified {
|
4408 |
-
width: 100%;
|
4409 |
-
}
|
4410 |
-
|
4411 |
-
.factory-bootstrap-330 .nav-justified > li {
|
4412 |
-
float: none;
|
4413 |
-
}
|
4414 |
-
|
4415 |
-
.factory-bootstrap-330 .nav-justified > li > a {
|
4416 |
-
margin-bottom: 5px;
|
4417 |
-
text-align: center;
|
4418 |
-
}
|
4419 |
-
|
4420 |
-
.factory-bootstrap-330 .nav-justified > .dropdown .dropdown-menu {
|
4421 |
-
top: auto;
|
4422 |
-
left: auto;
|
4423 |
-
}
|
4424 |
-
|
4425 |
-
@media (min-width: 768px) {
|
4426 |
-
.nav-justified > li {
|
4427 |
-
display: table-cell;
|
4428 |
-
width: 1%;
|
4429 |
-
}
|
4430 |
-
|
4431 |
-
.nav-justified > li > a {
|
4432 |
-
margin-bottom: 0;
|
4433 |
-
}
|
4434 |
-
}
|
4435 |
-
|
4436 |
-
.factory-bootstrap-330 .nav-tabs-justified {
|
4437 |
-
border-bottom: 0;
|
4438 |
-
}
|
4439 |
-
|
4440 |
-
.factory-bootstrap-330 .nav-tabs-justified > li > a {
|
4441 |
-
margin-right: 0;
|
4442 |
-
border-radius: 4px;
|
4443 |
-
}
|
4444 |
-
|
4445 |
-
.factory-bootstrap-330 .nav-tabs-justified > .active > a,
|
4446 |
-
.factory-bootstrap-330 .nav-tabs-justified > .active > a:hover,
|
4447 |
-
.factory-bootstrap-330 .nav-tabs-justified > .active > a:focus {
|
4448 |
-
border: 1px solid #dddddd;
|
4449 |
-
}
|
4450 |
-
|
4451 |
-
@media (min-width: 768px) {
|
4452 |
-
.nav-tabs-justified > li > a {
|
4453 |
-
border-bottom: 1px solid #dddddd;
|
4454 |
-
border-radius: 4px 4px 0 0;
|
4455 |
-
}
|
4456 |
-
|
4457 |
-
.nav-tabs-justified > .active > a,
|
4458 |
-
.nav-tabs-justified > .active > a:hover,
|
4459 |
-
.nav-tabs-justified > .active > a:focus {
|
4460 |
-
border-bottom-color: #ffffff;
|
4461 |
-
}
|
4462 |
-
}
|
4463 |
-
|
4464 |
-
.factory-bootstrap-330 .tab-content > .tab-pane {
|
4465 |
-
display: none;
|
4466 |
-
}
|
4467 |
-
|
4468 |
-
.factory-bootstrap-330 .tab-content > .active {
|
4469 |
-
display: block;
|
4470 |
-
}
|
4471 |
-
|
4472 |
-
.factory-bootstrap-330 .nav-tabs .dropdown-menu {
|
4473 |
-
margin-top: -1px;
|
4474 |
-
border-top-right-radius: 0;
|
4475 |
-
border-top-left-radius: 0;
|
4476 |
-
}
|
4477 |
-
|
4478 |
-
.factory-bootstrap-330 .navbar {
|
4479 |
-
position: relative;
|
4480 |
-
min-height: 50px;
|
4481 |
-
margin-bottom: 20px;
|
4482 |
-
border: 1px solid transparent;
|
4483 |
-
}
|
4484 |
-
|
4485 |
-
.factory-bootstrap-330 .navbar:before,
|
4486 |
-
.factory-bootstrap-330 .navbar:after {
|
4487 |
-
display: table;
|
4488 |
-
content: " ";
|
4489 |
-
}
|
4490 |
-
|
4491 |
-
.factory-bootstrap-330 .navbar:after {
|
4492 |
-
clear: both;
|
4493 |
-
}
|
4494 |
-
|
4495 |
-
.factory-bootstrap-330 .navbar:before,
|
4496 |
-
.factory-bootstrap-330 .navbar:after {
|
4497 |
-
display: table;
|
4498 |
-
content: " ";
|
4499 |
-
}
|
4500 |
-
|
4501 |
-
.factory-bootstrap-330 .navbar:after {
|
4502 |
-
clear: both;
|
4503 |
-
}
|
4504 |
-
|
4505 |
-
@media (min-width: 768px) {
|
4506 |
-
.navbar {
|
4507 |
-
border-radius: 4px;
|
4508 |
-
}
|
4509 |
-
}
|
4510 |
-
|
4511 |
-
.factory-bootstrap-330 .navbar-header:before,
|
4512 |
-
.factory-bootstrap-330 .navbar-header:after {
|
4513 |
-
display: table;
|
4514 |
-
content: " ";
|
4515 |
-
}
|
4516 |
-
|
4517 |
-
.factory-bootstrap-330 .navbar-header:after {
|
4518 |
-
clear: both;
|
4519 |
-
}
|
4520 |
-
|
4521 |
-
.factory-bootstrap-330 .navbar-header:before,
|
4522 |
-
.factory-bootstrap-330 .navbar-header:after {
|
4523 |
-
display: table;
|
4524 |
-
content: " ";
|
4525 |
-
}
|
4526 |
-
|
4527 |
-
.factory-bootstrap-330 .navbar-header:after {
|
4528 |
-
clear: both;
|
4529 |
-
}
|
4530 |
-
|
4531 |
-
@media (min-width: 768px) {
|
4532 |
-
.navbar-header {
|
4533 |
-
float: left;
|
4534 |
-
}
|
4535 |
-
}
|
4536 |
-
|
4537 |
-
.factory-bootstrap-330 .navbar-collapse {
|
4538 |
-
max-height: 340px;
|
4539 |
-
padding-right: 15px;
|
4540 |
-
padding-left: 15px;
|
4541 |
-
overflow-x: visible;
|
4542 |
-
border-top: 1px solid transparent;
|
4543 |
-
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
4544 |
-
-webkit-overflow-scrolling: touch;
|
4545 |
-
}
|
4546 |
-
|
4547 |
-
.factory-bootstrap-330 .navbar-collapse:before,
|
4548 |
-
.factory-bootstrap-330 .navbar-collapse:after {
|
4549 |
-
display: table;
|
4550 |
-
content: " ";
|
4551 |
-
}
|
4552 |
-
|
4553 |
-
.factory-bootstrap-330 .navbar-collapse:after {
|
4554 |
-
clear: both;
|
4555 |
-
}
|
4556 |
-
|
4557 |
-
.factory-bootstrap-330 .navbar-collapse:before,
|
4558 |
-
.factory-bootstrap-330 .navbar-collapse:after {
|
4559 |
-
display: table;
|
4560 |
-
content: " ";
|
4561 |
-
}
|
4562 |
-
|
4563 |
-
.factory-bootstrap-330 .navbar-collapse:after {
|
4564 |
-
clear: both;
|
4565 |
-
}
|
4566 |
-
|
4567 |
-
.factory-bootstrap-330 .navbar-collapse.in {
|
4568 |
-
overflow-y: auto;
|
4569 |
-
}
|
4570 |
-
|
4571 |
-
@media (min-width: 768px) {
|
4572 |
-
.navbar-collapse {
|
4573 |
-
width: auto;
|
4574 |
-
border-top: 0;
|
4575 |
-
box-shadow: none;
|
4576 |
-
}
|
4577 |
-
|
4578 |
-
.navbar-collapse.collapse {
|
4579 |
-
display: block !important;
|
4580 |
-
height: auto !important;
|
4581 |
-
padding-bottom: 0;
|
4582 |
-
overflow: visible !important;
|
4583 |
-
}
|
4584 |
-
|
4585 |
-
.navbar-collapse.in {
|
4586 |
-
overflow-y: visible;
|
4587 |
-
}
|
4588 |
-
|
4589 |
-
.navbar-fixed-top .navbar-collapse,
|
4590 |
-
.navbar-static-top .navbar-collapse,
|
4591 |
-
.navbar-fixed-bottom .navbar-collapse {
|
4592 |
-
padding-right: 0;
|
4593 |
-
padding-left: 0;
|
4594 |
-
}
|
4595 |
-
}
|
4596 |
-
|
4597 |
-
.factory-bootstrap-330 .container > .navbar-header,
|
4598 |
-
.factory-bootstrap-330 .container > .navbar-collapse {
|
4599 |
-
margin-right: -15px;
|
4600 |
-
margin-left: -15px;
|
4601 |
-
}
|
4602 |
-
|
4603 |
-
@media (min-width: 768px) {
|
4604 |
-
.container > .navbar-header,
|
4605 |
-
.container > .navbar-collapse {
|
4606 |
-
margin-right: 0;
|
4607 |
-
margin-left: 0;
|
4608 |
-
}
|
4609 |
-
}
|
4610 |
-
|
4611 |
-
.factory-bootstrap-330 .navbar-static-top {
|
4612 |
-
z-index: 1000;
|
4613 |
-
border-width: 0 0 1px;
|
4614 |
-
}
|
4615 |
-
|
4616 |
-
@media (min-width: 768px) {
|
4617 |
-
.navbar-static-top {
|
4618 |
-
border-radius: 0;
|
4619 |
-
}
|
4620 |
-
}
|
4621 |
-
|
4622 |
-
.factory-bootstrap-330 .navbar-fixed-top,
|
4623 |
-
.factory-bootstrap-330 .navbar-fixed-bottom {
|
4624 |
-
position: fixed;
|
4625 |
-
right: 0;
|
4626 |
-
left: 0;
|
4627 |
-
z-index: 1030;
|
4628 |
-
}
|
4629 |
-
|
4630 |
-
@media (min-width: 768px) {
|
4631 |
-
.navbar-fixed-top,
|
4632 |
-
.navbar-fixed-bottom {
|
4633 |
-
border-radius: 0;
|
4634 |
-
}
|
4635 |
-
}
|
4636 |
-
|
4637 |
-
.factory-bootstrap-330 .navbar-fixed-top {
|
4638 |
-
top: 0;
|
4639 |
-
border-width: 0 0 1px;
|
4640 |
-
}
|
4641 |
-
|
4642 |
-
.factory-bootstrap-330 .navbar-fixed-bottom {
|
4643 |
-
bottom: 0;
|
4644 |
-
margin-bottom: 0;
|
4645 |
-
border-width: 1px 0 0;
|
4646 |
-
}
|
4647 |
-
|
4648 |
-
.factory-bootstrap-330 .navbar-brand {
|
4649 |
-
float: left;
|
4650 |
-
padding: 15px 15px;
|
4651 |
-
font-size: 18px;
|
4652 |
-
line-height: 20px;
|
4653 |
-
}
|
4654 |
-
|
4655 |
-
.factory-bootstrap-330 .navbar-brand:hover,
|
4656 |
-
.factory-bootstrap-330 .navbar-brand:focus {
|
4657 |
-
text-decoration: none;
|
4658 |
-
}
|
4659 |
-
|
4660 |
-
@media (min-width: 768px) {
|
4661 |
-
.navbar > .container .navbar-brand {
|
4662 |
-
margin-left: -15px;
|
4663 |
-
}
|
4664 |
-
}
|
4665 |
-
|
4666 |
-
.factory-bootstrap-330 .navbar-toggle {
|
4667 |
-
position: relative;
|
4668 |
-
float: right;
|
4669 |
-
padding: 9px 10px;
|
4670 |
-
margin-top: 8px;
|
4671 |
-
margin-right: 15px;
|
4672 |
-
margin-bottom: 8px;
|
4673 |
-
background-color: transparent;
|
4674 |
-
background-image: none;
|
4675 |
-
border: 1px solid transparent;
|
4676 |
-
border-radius: 4px;
|
4677 |
-
}
|
4678 |
-
|
4679 |
-
.factory-bootstrap-330 .navbar-toggle .icon-bar {
|
4680 |
-
display: block;
|
4681 |
-
width: 22px;
|
4682 |
-
height: 2px;
|
4683 |
-
border-radius: 1px;
|
4684 |
-
}
|
4685 |
-
|
4686 |
-
.factory-bootstrap-330 .navbar-toggle .icon-bar + .icon-bar {
|
4687 |
-
margin-top: 4px;
|
4688 |
-
}
|
4689 |
-
|
4690 |
-
@media (min-width: 768px) {
|
4691 |
-
.navbar-toggle {
|
4692 |
-
display: none;
|
4693 |
-
}
|
4694 |
-
}
|
4695 |
-
|
4696 |
-
.factory-bootstrap-330 .navbar-nav {
|
4697 |
-
margin: 7.5px -15px;
|
4698 |
-
}
|
4699 |
-
|
4700 |
-
.factory-bootstrap-330 .navbar-nav > li > a {
|
4701 |
-
padding-top: 10px;
|
4702 |
-
padding-bottom: 10px;
|
4703 |
-
line-height: 20px;
|
4704 |
-
}
|
4705 |
-
|
4706 |
-
@media (max-width: 767px) {
|
4707 |
-
.navbar-nav .open .dropdown-menu {
|
4708 |
-
position: static;
|
4709 |
-
float: none;
|
4710 |
-
width: auto;
|
4711 |
-
margin-top: 0;
|
4712 |
-
background-color: transparent;
|
4713 |
-
border: 0;
|
4714 |
-
box-shadow: none;
|
4715 |
-
}
|
4716 |
-
|
4717 |
-
.navbar-nav .open .dropdown-menu > li > a,
|
4718 |
-
.navbar-nav .open .dropdown-menu .dropdown-header {
|
4719 |
-
padding: 5px 15px 5px 25px;
|
4720 |
-
}
|
4721 |
-
|
4722 |
-
.navbar-nav .open .dropdown-menu > li > a {
|
4723 |
-
line-height: 20px;
|
4724 |
-
}
|
4725 |
-
|
4726 |
-
.navbar-nav .open .dropdown-menu > li > a:hover,
|
4727 |
-
.navbar-nav .open .dropdown-menu > li > a:focus {
|
4728 |
-
background-image: none;
|
4729 |
-
}
|
4730 |
-
}
|
4731 |
-
|
4732 |
-
@media (min-width: 768px) {
|
4733 |
-
.navbar-nav {
|
4734 |
-
float: left;
|
4735 |
-
margin: 0;
|
4736 |
-
}
|
4737 |
-
|
4738 |
-
.navbar-nav > li {
|
4739 |
-
float: left;
|
4740 |
-
}
|
4741 |
-
|
4742 |
-
.navbar-nav > li > a {
|
4743 |
-
padding-top: 15px;
|
4744 |
-
padding-bottom: 15px;
|
4745 |
-
}
|
4746 |
-
|
4747 |
-
.navbar-nav.navbar-right:last-child {
|
4748 |
-
margin-right: -15px;
|
4749 |
-
}
|
4750 |
-
}
|
4751 |
-
|
4752 |
-
@media (min-width: 768px) {
|
4753 |
-
.navbar-left {
|
4754 |
-
float: left !important;
|
4755 |
-
}
|
4756 |
-
|
4757 |
-
.navbar-right {
|
4758 |
-
float: right !important;
|
4759 |
-
}
|
4760 |
-
}
|
4761 |
-
|
4762 |
-
.factory-bootstrap-330 .navbar-form {
|
4763 |
-
padding: 10px 15px;
|
4764 |
-
margin-top: 8px;
|
4765 |
-
margin-right: -15px;
|
4766 |
-
margin-bottom: 8px;
|
4767 |
-
margin-left: -15px;
|
4768 |
-
border-top: 1px solid transparent;
|
4769 |
-
border-bottom: 1px solid transparent;
|
4770 |
-
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
|
4771 |
-
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
|
4772 |
-
}
|
4773 |
-
|
4774 |
-
@media (min-width: 768px) {
|
4775 |
-
.navbar-form .form-group {
|
4776 |
-
display: inline-block;
|
4777 |
-
margin-bottom: 0;
|
4778 |
-
vertical-align: middle;
|
4779 |
-
}
|
4780 |
-
|
4781 |
-
.navbar-form .form-control {
|
4782 |
-
display: inline-block;
|
4783 |
-
}
|
4784 |
-
|
4785 |
-
.navbar-form select.form-control {
|
4786 |
-
width: auto;
|
4787 |
-
}
|
4788 |
-
|
4789 |
-
.navbar-form .radio,
|
4790 |
-
.navbar-form .checkbox {
|
4791 |
-
display: inline-block;
|
4792 |
-
padding-left: 0;
|
4793 |
-
margin-top: 0;
|
4794 |
-
margin-bottom: 0;
|
4795 |
-
}
|
4796 |
-
|
4797 |
-
.navbar-form .radio input[type="radio"],
|
4798 |
-
.navbar-form .checkbox input[type="checkbox"] {
|
4799 |
-
float: none;
|
4800 |
-
margin-left: 0;
|
4801 |
-
}
|
4802 |
-
}
|
4803 |
-
|
4804 |
-
@media (max-width: 767px) {
|
4805 |
-
.navbar-form .form-group {
|
4806 |
-
margin-bottom: 5px;
|
4807 |
-
}
|
4808 |
-
}
|
4809 |
-
|
4810 |
-
@media (min-width: 768px) {
|
4811 |
-
.navbar-form {
|
4812 |
-
width: auto;
|
4813 |
-
padding-top: 0;
|
4814 |
-
padding-bottom: 0;
|
4815 |
-
margin-right: 0;
|
4816 |
-
margin-left: 0;
|
4817 |
-
border: 0;
|
4818 |
-
-webkit-box-shadow: none;
|
4819 |
-
box-shadow: none;
|
4820 |
-
}
|
4821 |
-
|
4822 |
-
.navbar-form.navbar-right:last-child {
|
4823 |
-
margin-right: -15px;
|
4824 |
-
}
|
4825 |
-
}
|
4826 |
-
|
4827 |
-
.factory-bootstrap-330 .navbar-nav > li > .dropdown-menu {
|
4828 |
-
margin-top: 0;
|
4829 |
-
border-top-right-radius: 0;
|
4830 |
-
border-top-left-radius: 0;
|
4831 |
-
}
|
4832 |
-
|
4833 |
-
.factory-bootstrap-330 .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
|
4834 |
-
border-bottom-right-radius: 0;
|
4835 |
-
border-bottom-left-radius: 0;
|
4836 |
-
}
|
4837 |
-
|
4838 |
-
.factory-bootstrap-330 .navbar-nav.pull-right > li > .dropdown-menu,
|
4839 |
-
.factory-bootstrap-330 .navbar-nav > li > .dropdown-menu.pull-right {
|
4840 |
-
right: 0;
|
4841 |
-
left: auto;
|
4842 |
-
}
|
4843 |
-
|
4844 |
-
.factory-bootstrap-330 .navbar-btn {
|
4845 |
-
margin-top: 8px;
|
4846 |
-
margin-bottom: 8px;
|
4847 |
-
}
|
4848 |
-
|
4849 |
-
.factory-bootstrap-330 .navbar-btn.btn-sm {
|
4850 |
-
margin-top: 10px;
|
4851 |
-
margin-bottom: 10px;
|
4852 |
-
}
|
4853 |
-
|
4854 |
-
.factory-bootstrap-330 .navbar-btn.btn-xs {
|
4855 |
-
margin-top: 14px;
|
4856 |
-
margin-bottom: 14px;
|
4857 |
-
}
|
4858 |
-
|
4859 |
-
.factory-bootstrap-330 .navbar-text {
|
4860 |
-
margin-top: 15px;
|
4861 |
-
margin-bottom: 15px;
|
4862 |
-
}
|
4863 |
-
|
4864 |
-
@media (min-width: 768px) {
|
4865 |
-
.navbar-text {
|
4866 |
-
float: left;
|
4867 |
-
margin-right: 15px;
|
4868 |
-
margin-left: 15px;
|
4869 |
-
}
|
4870 |
-
|
4871 |
-
.navbar-text.navbar-right:last-child {
|
4872 |
-
margin-right: 0;
|
4873 |
-
}
|
4874 |
-
}
|
4875 |
-
|
4876 |
-
.factory-bootstrap-330 .navbar-default {
|
4877 |
-
background-color: #f8f8f8;
|
4878 |
-
border-color: #e7e7e7;
|
4879 |
-
}
|
4880 |
-
|
4881 |
-
.factory-bootstrap-330 .navbar-default .navbar-brand {
|
4882 |
-
color: #777777;
|
4883 |
-
}
|
4884 |
-
|
4885 |
-
.factory-bootstrap-330 .navbar-default .navbar-brand:hover,
|
4886 |
-
.factory-bootstrap-330 .navbar-default .navbar-brand:focus {
|
4887 |
-
color: #5e5e5e;
|
4888 |
-
background-color: transparent;
|
4889 |
-
}
|
4890 |
-
|
4891 |
-
.factory-bootstrap-330 .navbar-default .navbar-text {
|
4892 |
-
color: #777777;
|
4893 |
-
}
|
4894 |
-
|
4895 |
-
.factory-bootstrap-330 .navbar-default .navbar-nav > li > a {
|
4896 |
-
color: #777777;
|
4897 |
-
}
|
4898 |
-
|
4899 |
-
.factory-bootstrap-330 .navbar-default .navbar-nav > li > a:hover,
|
4900 |
-
.factory-bootstrap-330 .navbar-default .navbar-nav > li > a:focus {
|
4901 |
-
color: #333333;
|
4902 |
-
background-color: transparent;
|
4903 |
-
}
|
4904 |
-
|
4905 |
-
.factory-bootstrap-330 .navbar-default .navbar-nav > .active > a,
|
4906 |
-
.factory-bootstrap-330 .navbar-default .navbar-nav > .active > a:hover,
|
4907 |
-
.factory-bootstrap-330 .navbar-default .navbar-nav > .active > a:focus {
|
4908 |
-
color: #555555;
|
4909 |
-
background-color: #e7e7e7;
|
4910 |
-
}
|
4911 |
-
|
4912 |
-
.factory-bootstrap-330 .navbar-default .navbar-nav > .disabled > a,
|
4913 |
-
.factory-bootstrap-330 .navbar-default .navbar-nav > .disabled > a:hover,
|
4914 |
-
.factory-bootstrap-330 .navbar-default .navbar-nav > .disabled > a:focus {
|
4915 |
-
color: #cccccc;
|
4916 |
-
background-color: transparent;
|
4917 |
-
}
|
4918 |
-
|
4919 |
-
.factory-bootstrap-330 .navbar-default .navbar-toggle {
|
4920 |
-
border-color: #dddddd;
|
4921 |
-
}
|
4922 |
-
|
4923 |
-
.factory-bootstrap-330 .navbar-default .navbar-toggle:hover,
|
4924 |
-
.factory-bootstrap-330 .navbar-default .navbar-toggle:focus {
|
4925 |
-
background-color: #dddddd;
|
4926 |
-
}
|
4927 |
-
|
4928 |
-
.factory-bootstrap-330 .navbar-default .navbar-toggle .icon-bar {
|
4929 |
-
background-color: #cccccc;
|
4930 |
-
}
|
4931 |
-
|
4932 |
-
.factory-bootstrap-330 .navbar-default .navbar-collapse,
|
4933 |
-
.factory-bootstrap-330 .navbar-default .navbar-form {
|
4934 |
-
border-color: #e7e7e7;
|
4935 |
-
}
|
4936 |
-
|
4937 |
-
.factory-bootstrap-330 .navbar-default .navbar-nav > .open > a,
|
4938 |
-
.factory-bootstrap-330 .navbar-default .navbar-nav > .open > a:hover,
|
4939 |
-
.factory-bootstrap-330 .navbar-default .navbar-nav > .open > a:focus {
|
4940 |
-
color: #555555;
|
4941 |
-
background-color: #e7e7e7;
|
4942 |
-
}
|
4943 |
-
|
4944 |
-
@media (max-width: 767px) {
|
4945 |
-
.navbar-default .navbar-nav .open .dropdown-menu > li > a {
|
4946 |
-
color: #777777;
|
4947 |
-
}
|
4948 |
-
|
4949 |
-
.navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
|
4950 |
-
.navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
|
4951 |
-
color: #333333;
|
4952 |
-
background-color: transparent;
|
4953 |
-
}
|
4954 |
-
|
4955 |
-
.navbar-default .navbar-nav .open .dropdown-menu > .active > a,
|
4956 |
-
.navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
|
4957 |
-
.navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
|
4958 |
-
color: #555555;
|
4959 |
-
background-color: #e7e7e7;
|
4960 |
-
}
|
4961 |
-
|
4962 |
-
.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
|
4963 |
-
.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
|
4964 |
-
.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
|
4965 |
-
color: #cccccc;
|
4966 |
-
background-color: transparent;
|
4967 |
-
}
|
4968 |
-
}
|
4969 |
-
|
4970 |
-
.factory-bootstrap-330 .navbar-default .navbar-link {
|
4971 |
-
color: #777777;
|
4972 |
-
}
|
4973 |
-
|
4974 |
-
.factory-bootstrap-330 .navbar-default .navbar-link:hover {
|
4975 |
-
color: #333333;
|
4976 |
-
}
|
4977 |
-
|
4978 |
-
.factory-bootstrap-330 .navbar-inverse {
|
4979 |
-
background-color: #222222;
|
4980 |
-
border-color: #080808;
|
4981 |
-
}
|
4982 |
-
|
4983 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-brand {
|
4984 |
-
color: #999999;
|
4985 |
-
}
|
4986 |
-
|
4987 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-brand:hover,
|
4988 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-brand:focus {
|
4989 |
-
color: #ffffff;
|
4990 |
-
background-color: transparent;
|
4991 |
-
}
|
4992 |
-
|
4993 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-text {
|
4994 |
-
color: #999999;
|
4995 |
-
}
|
4996 |
-
|
4997 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-nav > li > a {
|
4998 |
-
color: #999999;
|
4999 |
-
}
|
5000 |
-
|
5001 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-nav > li > a:hover,
|
5002 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-nav > li > a:focus {
|
5003 |
-
color: #ffffff;
|
5004 |
-
background-color: transparent;
|
5005 |
-
}
|
5006 |
-
|
5007 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-nav > .active > a,
|
5008 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-nav > .active > a:hover,
|
5009 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-nav > .active > a:focus {
|
5010 |
-
color: #ffffff;
|
5011 |
-
background-color: #080808;
|
5012 |
-
}
|
5013 |
-
|
5014 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-nav > .disabled > a,
|
5015 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-nav > .disabled > a:hover,
|
5016 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-nav > .disabled > a:focus {
|
5017 |
-
color: #444444;
|
5018 |
-
background-color: transparent;
|
5019 |
-
}
|
5020 |
-
|
5021 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-toggle {
|
5022 |
-
border-color: #333333;
|
5023 |
-
}
|
5024 |
-
|
5025 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-toggle:hover,
|
5026 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-toggle:focus {
|
5027 |
-
background-color: #333333;
|
5028 |
-
}
|
5029 |
-
|
5030 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-toggle .icon-bar {
|
5031 |
-
background-color: #ffffff;
|
5032 |
-
}
|
5033 |
-
|
5034 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-collapse,
|
5035 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-form {
|
5036 |
-
border-color: #101010;
|
5037 |
-
}
|
5038 |
-
|
5039 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-nav > .open > a,
|
5040 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-nav > .open > a:hover,
|
5041 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-nav > .open > a:focus {
|
5042 |
-
color: #ffffff;
|
5043 |
-
background-color: #080808;
|
5044 |
-
}
|
5045 |
-
|
5046 |
-
@media (max-width: 767px) {
|
5047 |
-
.navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
|
5048 |
-
border-color: #080808;
|
5049 |
-
}
|
5050 |
-
|
5051 |
-
.navbar-inverse .navbar-nav .open .dropdown-menu .divider {
|
5052 |
-
background-color: #080808;
|
5053 |
-
}
|
5054 |
-
|
5055 |
-
.navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
|
5056 |
-
color: #999999;
|
5057 |
-
}
|
5058 |
-
|
5059 |
-
.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
|
5060 |
-
.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
|
5061 |
-
color: #ffffff;
|
5062 |
-
background-color: transparent;
|
5063 |
-
}
|
5064 |
-
|
5065 |
-
.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
|
5066 |
-
.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
|
5067 |
-
.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
|
5068 |
-
color: #ffffff;
|
5069 |
-
background-color: #080808;
|
5070 |
-
}
|
5071 |
-
|
5072 |
-
.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
|
5073 |
-
.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
|
5074 |
-
.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
|
5075 |
-
color: #444444;
|
5076 |
-
background-color: transparent;
|
5077 |
-
}
|
5078 |
-
}
|
5079 |
-
|
5080 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-link {
|
5081 |
-
color: #999999;
|
5082 |
-
}
|
5083 |
-
|
5084 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-link:hover {
|
5085 |
-
color: #ffffff;
|
5086 |
-
}
|
5087 |
-
|
5088 |
-
.factory-bootstrap-330 .breadcrumb {
|
5089 |
-
padding: 8px 15px;
|
5090 |
-
margin-bottom: 20px;
|
5091 |
-
list-style: none;
|
5092 |
-
background-color: #f5f5f5;
|
5093 |
-
border-radius: 4px;
|
5094 |
-
}
|
5095 |
-
|
5096 |
-
.factory-bootstrap-330 .breadcrumb > li {
|
5097 |
-
display: inline-block;
|
5098 |
-
}
|
5099 |
-
|
5100 |
-
.factory-bootstrap-330 .breadcrumb > li + li:before {
|
5101 |
-
padding: 0 5px;
|
5102 |
-
color: #cccccc;
|
5103 |
-
content: "/\00a0";
|
5104 |
-
}
|
5105 |
-
|
5106 |
-
.factory-bootstrap-330 .breadcrumb > .active {
|
5107 |
-
color: #999999;
|
5108 |
-
}
|
5109 |
-
|
5110 |
-
.factory-bootstrap-330 .pagination {
|
5111 |
-
display: inline-block;
|
5112 |
-
padding-left: 0;
|
5113 |
-
margin: 20px 0;
|
5114 |
-
border-radius: 4px;
|
5115 |
-
}
|
5116 |
-
|
5117 |
-
.factory-bootstrap-330 .pagination > li {
|
5118 |
-
display: inline;
|
5119 |
-
}
|
5120 |
-
|
5121 |
-
.factory-bootstrap-330 .pagination > li > a,
|
5122 |
-
.factory-bootstrap-330 .pagination > li > span {
|
5123 |
-
position: relative;
|
5124 |
-
float: left;
|
5125 |
-
padding: 6px 12px;
|
5126 |
-
margin-left: -1px;
|
5127 |
-
line-height: 1.428571429;
|
5128 |
-
text-decoration: none;
|
5129 |
-
background-color: #ffffff;
|
5130 |
-
border: 1px solid #dddddd;
|
5131 |
-
}
|
5132 |
-
|
5133 |
-
.factory-bootstrap-330 .pagination > li:first-child > a,
|
5134 |
-
.factory-bootstrap-330 .pagination > li:first-child > span {
|
5135 |
-
margin-left: 0;
|
5136 |
-
border-bottom-left-radius: 4px;
|
5137 |
-
border-top-left-radius: 4px;
|
5138 |
-
}
|
5139 |
-
|
5140 |
-
.factory-bootstrap-330 .pagination > li:last-child > a,
|
5141 |
-
.factory-bootstrap-330 .pagination > li:last-child > span {
|
5142 |
-
border-top-right-radius: 4px;
|
5143 |
-
border-bottom-right-radius: 4px;
|
5144 |
-
}
|
5145 |
-
|
5146 |
-
.factory-bootstrap-330 .pagination > li > a:hover,
|
5147 |
-
.factory-bootstrap-330 .pagination > li > span:hover,
|
5148 |
-
.factory-bootstrap-330 .pagination > li > a:focus,
|
5149 |
-
.factory-bootstrap-330 .pagination > li > span:focus {
|
5150 |
-
background-color: #eeeeee;
|
5151 |
-
}
|
5152 |
-
|
5153 |
-
.factory-bootstrap-330 .pagination > .active > a,
|
5154 |
-
.factory-bootstrap-330 .pagination > .active > span,
|
5155 |
-
.factory-bootstrap-330 .pagination > .active > a:hover,
|
5156 |
-
.factory-bootstrap-330 .pagination > .active > span:hover,
|
5157 |
-
.factory-bootstrap-330 .pagination > .active > a:focus,
|
5158 |
-
.factory-bootstrap-330 .pagination > .active > span:focus {
|
5159 |
-
z-index: 2;
|
5160 |
-
color: #ffffff;
|
5161 |
-
cursor: default;
|
5162 |
-
background-color: #1e8cbe;
|
5163 |
-
border-color: #0074a2;
|
5164 |
-
}
|
5165 |
-
|
5166 |
-
.factory-bootstrap-330 .pagination > .disabled > span,
|
5167 |
-
.factory-bootstrap-330 .pagination > .disabled > span:hover,
|
5168 |
-
.factory-bootstrap-330 .pagination > .disabled > span:focus,
|
5169 |
-
.factory-bootstrap-330 .pagination > .disabled > a,
|
5170 |
-
.factory-bootstrap-330 .pagination > .disabled > a:hover,
|
5171 |
-
.factory-bootstrap-330 .pagination > .disabled > a:focus {
|
5172 |
-
color: #999999;
|
5173 |
-
cursor: not-allowed;
|
5174 |
-
background-color: #ffffff;
|
5175 |
-
border-color: #dddddd;
|
5176 |
-
}
|
5177 |
-
|
5178 |
-
.factory-bootstrap-330 .pagination-lg > li > a,
|
5179 |
-
.factory-bootstrap-330 .pagination-lg > li > span {
|
5180 |
-
padding: 10px 16px;
|
5181 |
-
font-size: 18px;
|
5182 |
-
}
|
5183 |
-
|
5184 |
-
.factory-bootstrap-330 .pagination-lg > li:first-child > a,
|
5185 |
-
.factory-bootstrap-330 .pagination-lg > li:first-child > span {
|
5186 |
-
border-bottom-left-radius: 6px;
|
5187 |
-
border-top-left-radius: 6px;
|
5188 |
-
}
|
5189 |
-
|
5190 |
-
.factory-bootstrap-330 .pagination-lg > li:last-child > a,
|
5191 |
-
.factory-bootstrap-330 .pagination-lg > li:last-child > span {
|
5192 |
-
border-top-right-radius: 6px;
|
5193 |
-
border-bottom-right-radius: 6px;
|
5194 |
-
}
|
5195 |
-
|
5196 |
-
.factory-bootstrap-330 .pagination-sm > li > a,
|
5197 |
-
.factory-bootstrap-330 .pagination-sm > li > span {
|
5198 |
-
padding: 5px 10px;
|
5199 |
-
font-size: 12px;
|
5200 |
-
}
|
5201 |
-
|
5202 |
-
.factory-bootstrap-330 .pagination-sm > li:first-child > a,
|
5203 |
-
.factory-bootstrap-330 .pagination-sm > li:first-child > span {
|
5204 |
-
border-bottom-left-radius: 3px;
|
5205 |
-
border-top-left-radius: 3px;
|
5206 |
-
}
|
5207 |
-
|
5208 |
-
.factory-bootstrap-330 .pagination-sm > li:last-child > a,
|
5209 |
-
.factory-bootstrap-330 .pagination-sm > li:last-child > span {
|
5210 |
-
border-top-right-radius: 3px;
|
5211 |
-
border-bottom-right-radius: 3px;
|
5212 |
-
}
|
5213 |
-
|
5214 |
-
.factory-bootstrap-330 .pager {
|
5215 |
-
padding-left: 0;
|
5216 |
-
margin: 20px 0;
|
5217 |
-
text-align: center;
|
5218 |
-
list-style: none;
|
5219 |
-
}
|
5220 |
-
|
5221 |
-
.factory-bootstrap-330 .pager:before,
|
5222 |
-
.factory-bootstrap-330 .pager:after {
|
5223 |
-
display: table;
|
5224 |
-
content: " ";
|
5225 |
-
}
|
5226 |
-
|
5227 |
-
.factory-bootstrap-330 .pager:after {
|
5228 |
-
clear: both;
|
5229 |
-
}
|
5230 |
-
|
5231 |
-
.factory-bootstrap-330 .pager:before,
|
5232 |
-
.factory-bootstrap-330 .pager:after {
|
5233 |
-
display: table;
|
5234 |
-
content: " ";
|
5235 |
-
}
|
5236 |
-
|
5237 |
-
.factory-bootstrap-330 .pager:after {
|
5238 |
-
clear: both;
|
5239 |
-
}
|
5240 |
-
|
5241 |
-
.factory-bootstrap-330 .pager li {
|
5242 |
-
display: inline;
|
5243 |
-
}
|
5244 |
-
|
5245 |
-
.factory-bootstrap-330 .pager li > a,
|
5246 |
-
.factory-bootstrap-330 .pager li > span {
|
5247 |
-
display: inline-block;
|
5248 |
-
padding: 5px 14px;
|
5249 |
-
background-color: #ffffff;
|
5250 |
-
border: 1px solid #dddddd;
|
5251 |
-
border-radius: 15px;
|
5252 |
-
}
|
5253 |
-
|
5254 |
-
.factory-bootstrap-330 .pager li > a:hover,
|
5255 |
-
.factory-bootstrap-330 .pager li > a:focus {
|
5256 |
-
text-decoration: none;
|
5257 |
-
background-color: #eeeeee;
|
5258 |
-
}
|
5259 |
-
|
5260 |
-
.factory-bootstrap-330 .pager .next > a,
|
5261 |
-
.factory-bootstrap-330 .pager .next > span {
|
5262 |
-
float: right;
|
5263 |
-
}
|
5264 |
-
|
5265 |
-
.factory-bootstrap-330 .pager .previous > a,
|
5266 |
-
.factory-bootstrap-330 .pager .previous > span {
|
5267 |
-
float: left;
|
5268 |
-
}
|
5269 |
-
|
5270 |
-
.factory-bootstrap-330 .pager .disabled > a,
|
5271 |
-
.factory-bootstrap-330 .pager .disabled > a:hover,
|
5272 |
-
.factory-bootstrap-330 .pager .disabled > a:focus,
|
5273 |
-
.factory-bootstrap-330 .pager .disabled > span {
|
5274 |
-
color: #999999;
|
5275 |
-
cursor: not-allowed;
|
5276 |
-
background-color: #ffffff;
|
5277 |
-
}
|
5278 |
-
|
5279 |
-
.factory-bootstrap-330 .label {
|
5280 |
-
display: inline;
|
5281 |
-
padding: .2em .6em .3em;
|
5282 |
-
font-size: 75%;
|
5283 |
-
font-weight: bold;
|
5284 |
-
line-height: 1;
|
5285 |
-
color: #ffffff;
|
5286 |
-
text-align: center;
|
5287 |
-
white-space: nowrap;
|
5288 |
-
vertical-align: baseline;
|
5289 |
-
border-radius: .25em;
|
5290 |
-
}
|
5291 |
-
|
5292 |
-
.factory-bootstrap-330 .label[href]:hover,
|
5293 |
-
.factory-bootstrap-330 .label[href]:focus {
|
5294 |
-
color: #ffffff;
|
5295 |
-
text-decoration: none;
|
5296 |
-
cursor: pointer;
|
5297 |
-
}
|
5298 |
-
|
5299 |
-
.factory-bootstrap-330 .label:empty {
|
5300 |
-
display: none;
|
5301 |
-
}
|
5302 |
-
|
5303 |
-
.factory-bootstrap-330 .btn .label {
|
5304 |
-
position: relative;
|
5305 |
-
top: -1px;
|
5306 |
-
}
|
5307 |
-
|
5308 |
-
.factory-bootstrap-330 .label-default {
|
5309 |
-
background-color: #999999;
|
5310 |
-
}
|
5311 |
-
|
5312 |
-
.factory-bootstrap-330 .label-default[href]:hover,
|
5313 |
-
.factory-bootstrap-330 .label-default[href]:focus {
|
5314 |
-
background-color: #808080;
|
5315 |
-
}
|
5316 |
-
|
5317 |
-
.factory-bootstrap-330 .label-primary {
|
5318 |
-
background-color: #428bca;
|
5319 |
-
}
|
5320 |
-
|
5321 |
-
.factory-bootstrap-330 .label-primary[href]:hover,
|
5322 |
-
.factory-bootstrap-330 .label-primary[href]:focus {
|
5323 |
-
background-color: #3071a9;
|
5324 |
-
}
|
5325 |
-
|
5326 |
-
.factory-bootstrap-330 .label-success {
|
5327 |
-
background-color: #5cb85c;
|
5328 |
-
}
|
5329 |
-
|
5330 |
-
.factory-bootstrap-330 .label-success[href]:hover,
|
5331 |
-
.factory-bootstrap-330 .label-success[href]:focus {
|
5332 |
-
background-color: #449d44;
|
5333 |
-
}
|
5334 |
-
|
5335 |
-
.factory-bootstrap-330 .label-info {
|
5336 |
-
background-color: #5bc0de;
|
5337 |
-
}
|
5338 |
-
|
5339 |
-
.factory-bootstrap-330 .label-info[href]:hover,
|
5340 |
-
.factory-bootstrap-330 .label-info[href]:focus {
|
5341 |
-
background-color: #31b0d5;
|
5342 |
-
}
|
5343 |
-
|
5344 |
-
.factory-bootstrap-330 .label-warning {
|
5345 |
-
background-color: #f0ad4e;
|
5346 |
-
}
|
5347 |
-
|
5348 |
-
.factory-bootstrap-330 .label-warning[href]:hover,
|
5349 |
-
.factory-bootstrap-330 .label-warning[href]:focus {
|
5350 |
-
background-color: #ec971f;
|
5351 |
-
}
|
5352 |
-
|
5353 |
-
.factory-bootstrap-330 .label-danger {
|
5354 |
-
background-color: #d9534f;
|
5355 |
-
}
|
5356 |
-
|
5357 |
-
.factory-bootstrap-330 .label-danger[href]:hover,
|
5358 |
-
.factory-bootstrap-330 .label-danger[href]:focus {
|
5359 |
-
background-color: #c9302c;
|
5360 |
-
}
|
5361 |
-
|
5362 |
-
.factory-bootstrap-330 .badge {
|
5363 |
-
display: inline-block;
|
5364 |
-
min-width: 10px;
|
5365 |
-
padding: 3px 7px;
|
5366 |
-
font-size: 12px;
|
5367 |
-
font-weight: bold;
|
5368 |
-
line-height: 1;
|
5369 |
-
color: #ffffff;
|
5370 |
-
text-align: center;
|
5371 |
-
white-space: nowrap;
|
5372 |
-
vertical-align: baseline;
|
5373 |
-
background-color: #999999;
|
5374 |
-
border-radius: 10px;
|
5375 |
-
}
|
5376 |
-
|
5377 |
-
.factory-bootstrap-330 .badge:empty {
|
5378 |
-
display: none;
|
5379 |
-
}
|
5380 |
-
|
5381 |
-
.factory-bootstrap-330 .btn .badge {
|
5382 |
-
position: relative;
|
5383 |
-
top: -1px;
|
5384 |
-
}
|
5385 |
-
|
5386 |
-
.factory-bootstrap-330 a.badge:hover,
|
5387 |
-
.factory-bootstrap-330 a.badge:focus {
|
5388 |
-
color: #ffffff;
|
5389 |
-
text-decoration: none;
|
5390 |
-
cursor: pointer;
|
5391 |
-
}
|
5392 |
-
|
5393 |
-
.factory-bootstrap-330 a.list-group-item.active > .badge,
|
5394 |
-
.factory-bootstrap-330 .nav-pills > .active > a > .badge {
|
5395 |
-
color: #428bca;
|
5396 |
-
background-color: #ffffff;
|
5397 |
-
}
|
5398 |
-
|
5399 |
-
.factory-bootstrap-330 .nav-pills > li > a > .badge {
|
5400 |
-
margin-left: 3px;
|
5401 |
-
}
|
5402 |
-
|
5403 |
-
.factory-bootstrap-330 .jumbotron {
|
5404 |
-
padding: 30px;
|
5405 |
-
margin-bottom: 30px;
|
5406 |
-
font-size: 21px;
|
5407 |
-
font-weight: 200;
|
5408 |
-
line-height: 2.1428571435;
|
5409 |
-
color: inherit;
|
5410 |
-
background-color: #eeeeee;
|
5411 |
-
}
|
5412 |
-
|
5413 |
-
.factory-bootstrap-330 .jumbotron h1,
|
5414 |
-
.factory-bootstrap-330 .jumbotron .h1 {
|
5415 |
-
line-height: 1;
|
5416 |
-
color: inherit;
|
5417 |
-
}
|
5418 |
-
|
5419 |
-
.factory-bootstrap-330 .jumbotron p {
|
5420 |
-
line-height: 1.4;
|
5421 |
-
}
|
5422 |
-
|
5423 |
-
.factory-bootstrap-330 .container .jumbotron {
|
5424 |
-
border-radius: 6px;
|
5425 |
-
}
|
5426 |
-
|
5427 |
-
.factory-bootstrap-330 .jumbotron .container {
|
5428 |
-
max-width: 100%;
|
5429 |
-
}
|
5430 |
-
|
5431 |
-
@media screen and (min-width: 768px) {
|
5432 |
-
.jumbotron {
|
5433 |
-
padding-top: 48px;
|
5434 |
-
padding-bottom: 48px;
|
5435 |
-
}
|
5436 |
-
|
5437 |
-
.container .jumbotron {
|
5438 |
-
padding-right: 60px;
|
5439 |
-
padding-left: 60px;
|
5440 |
-
}
|
5441 |
-
|
5442 |
-
.jumbotron h1,
|
5443 |
-
.jumbotron .h1 {
|
5444 |
-
font-size: 63px;
|
5445 |
-
}
|
5446 |
-
}
|
5447 |
-
|
5448 |
-
.factory-bootstrap-330 .thumbnail {
|
5449 |
-
display: block;
|
5450 |
-
padding: 4px;
|
5451 |
-
margin-bottom: 20px;
|
5452 |
-
line-height: 1.428571429;
|
5453 |
-
background-color: #ffffff;
|
5454 |
-
border: 1px solid #dddddd;
|
5455 |
-
border-radius: 4px;
|
5456 |
-
-webkit-transition: all 0.2s ease-in-out;
|
5457 |
-
transition: all 0.2s ease-in-out;
|
5458 |
-
}
|
5459 |
-
|
5460 |
-
.factory-bootstrap-330 .thumbnail > img,
|
5461 |
-
.factory-bootstrap-330 .thumbnail a > img {
|
5462 |
-
display: block;
|
5463 |
-
height: auto;
|
5464 |
-
max-width: 100%;
|
5465 |
-
margin-right: auto;
|
5466 |
-
margin-left: auto;
|
5467 |
-
}
|
5468 |
-
|
5469 |
-
.factory-bootstrap-330 a.thumbnail:hover,
|
5470 |
-
.factory-bootstrap-330 a.thumbnail:focus,
|
5471 |
-
.factory-bootstrap-330 a.thumbnail.active {
|
5472 |
-
border-color: #428bca;
|
5473 |
-
}
|
5474 |
-
|
5475 |
-
.factory-bootstrap-330 .thumbnail .caption {
|
5476 |
-
padding: 9px;
|
5477 |
-
color: #333333;
|
5478 |
-
}
|
5479 |
-
|
5480 |
-
.factory-bootstrap-330 .alert {
|
5481 |
-
padding: 15px;
|
5482 |
-
margin-bottom: 20px;
|
5483 |
-
border: 1px solid transparent;
|
5484 |
-
border-radius: 4px;
|
5485 |
-
}
|
5486 |
-
|
5487 |
-
.factory-bootstrap-330 .alert h4 {
|
5488 |
-
margin-top: 0;
|
5489 |
-
color: inherit;
|
5490 |
-
}
|
5491 |
-
|
5492 |
-
.factory-bootstrap-330 .alert .alert-link {
|
5493 |
-
font-weight: bold;
|
5494 |
-
}
|
5495 |
-
|
5496 |
-
.factory-bootstrap-330 .alert > p,
|
5497 |
-
.factory-bootstrap-330 .alert > ul {
|
5498 |
-
margin-bottom: 0;
|
5499 |
-
}
|
5500 |
-
|
5501 |
-
.factory-bootstrap-330 .alert > p + p {
|
5502 |
-
margin-top: 5px;
|
5503 |
-
}
|
5504 |
-
|
5505 |
-
.factory-bootstrap-330 .alert-dismissable {
|
5506 |
-
padding-right: 35px;
|
5507 |
-
}
|
5508 |
-
|
5509 |
-
.factory-bootstrap-330 .alert-dismissable .close {
|
5510 |
-
position: relative;
|
5511 |
-
top: -2px;
|
5512 |
-
right: -21px;
|
5513 |
-
color: inherit;
|
5514 |
-
}
|
5515 |
-
|
5516 |
-
.factory-bootstrap-330 .alert-info {
|
5517 |
-
color: #31708f;
|
5518 |
-
background-color: #d9edf7;
|
5519 |
-
border-color: #bce8f1;
|
5520 |
-
}
|
5521 |
-
|
5522 |
-
.factory-bootstrap-330 .alert-info hr {
|
5523 |
-
border-top-color: #a6e1ec;
|
5524 |
-
}
|
5525 |
-
|
5526 |
-
.factory-bootstrap-330 .alert-info .alert-link {
|
5527 |
-
color: #245269;
|
5528 |
-
}
|
5529 |
-
|
5530 |
-
@-webkit-keyframes progress-bar-stripes {
|
5531 |
-
from {
|
5532 |
-
background-position: 40px 0;
|
5533 |
-
}
|
5534 |
-
to {
|
5535 |
-
background-position: 0 0;
|
5536 |
-
}
|
5537 |
-
}
|
5538 |
-
|
5539 |
-
@keyframes progress-bar-stripes {
|
5540 |
-
from {
|
5541 |
-
background-position: 40px 0;
|
5542 |
-
}
|
5543 |
-
to {
|
5544 |
-
background-position: 0 0;
|
5545 |
-
}
|
5546 |
-
}
|
5547 |
-
|
5548 |
-
.factory-bootstrap-330 .progress {
|
5549 |
-
height: 20px;
|
5550 |
-
margin-bottom: 20px;
|
5551 |
-
overflow: hidden;
|
5552 |
-
background-color: #f5f5f5;
|
5553 |
-
border-radius: 4px;
|
5554 |
-
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
|
5555 |
-
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
|
5556 |
-
}
|
5557 |
-
|
5558 |
-
.factory-bootstrap-330 .progress-bar {
|
5559 |
-
float: left;
|
5560 |
-
width: 0;
|
5561 |
-
height: 100%;
|
5562 |
-
font-size: 12px;
|
5563 |
-
line-height: 20px;
|
5564 |
-
color: #ffffff;
|
5565 |
-
text-align: center;
|
5566 |
-
background-color: #2ea2cc;
|
5567 |
-
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
|
5568 |
-
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
|
5569 |
-
-webkit-transition: width 0.6s ease;
|
5570 |
-
transition: width 0.6s ease;
|
5571 |
-
}
|
5572 |
-
|
5573 |
-
.factory-bootstrap-330 .progress-striped .progress-bar {
|
5574 |
-
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
5575 |
-
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
5576 |
-
background-size: 40px 40px;
|
5577 |
-
}
|
5578 |
-
|
5579 |
-
.factory-bootstrap-330 .progress.active .progress-bar {
|
5580 |
-
-webkit-animation: progress-bar-stripes 2s linear infinite;
|
5581 |
-
animation: progress-bar-stripes 2s linear infinite;
|
5582 |
-
}
|
5583 |
-
|
5584 |
-
.factory-bootstrap-330 .progress-bar-success {
|
5585 |
-
background-color: #5cb85c;
|
5586 |
-
}
|
5587 |
-
|
5588 |
-
.factory-bootstrap-330 .progress-striped .progress-bar-success {
|
5589 |
-
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
5590 |
-
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
5591 |
-
}
|
5592 |
-
|
5593 |
-
.factory-bootstrap-330 .progress-bar-info {
|
5594 |
-
background-color: #5bc0de;
|
5595 |
-
}
|
5596 |
-
|
5597 |
-
.factory-bootstrap-330 .progress-striped .progress-bar-info {
|
5598 |
-
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
5599 |
-
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
5600 |
-
}
|
5601 |
-
|
5602 |
-
.factory-bootstrap-330 .progress-bar-warning {
|
5603 |
-
background-color: #f0ad4e;
|
5604 |
-
}
|
5605 |
-
|
5606 |
-
.factory-bootstrap-330 .progress-striped .progress-bar-warning {
|
5607 |
-
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
5608 |
-
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
5609 |
-
}
|
5610 |
-
|
5611 |
-
.factory-bootstrap-330 .progress-bar-danger {
|
5612 |
-
background-color: #d9534f;
|
5613 |
-
}
|
5614 |
-
|
5615 |
-
.factory-bootstrap-330 .progress-striped .progress-bar-danger {
|
5616 |
-
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
5617 |
-
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
5618 |
-
}
|
5619 |
-
|
5620 |
-
.factory-bootstrap-330 .media,
|
5621 |
-
.factory-bootstrap-330 .media-body {
|
5622 |
-
overflow: hidden;
|
5623 |
-
zoom: 1;
|
5624 |
-
}
|
5625 |
-
|
5626 |
-
.factory-bootstrap-330 .media,
|
5627 |
-
.factory-bootstrap-330 .media .media {
|
5628 |
-
margin-top: 15px;
|
5629 |
-
}
|
5630 |
-
|
5631 |
-
.factory-bootstrap-330 .media:first-child {
|
5632 |
-
margin-top: 0;
|
5633 |
-
}
|
5634 |
-
|
5635 |
-
.factory-bootstrap-330 .media-object {
|
5636 |
-
display: block;
|
5637 |
-
}
|
5638 |
-
|
5639 |
-
.factory-bootstrap-330 .media-heading {
|
5640 |
-
margin: 0 0 5px;
|
5641 |
-
}
|
5642 |
-
|
5643 |
-
.factory-bootstrap-330 .media > .pull-left {
|
5644 |
-
margin-right: 10px;
|
5645 |
-
}
|
5646 |
-
|
5647 |
-
.factory-bootstrap-330 .media > .pull-right {
|
5648 |
-
margin-left: 10px;
|
5649 |
-
}
|
5650 |
-
|
5651 |
-
.factory-bootstrap-330 .media-list {
|
5652 |
-
padding-left: 0;
|
5653 |
-
list-style: none;
|
5654 |
-
}
|
5655 |
-
|
5656 |
-
.factory-bootstrap-330 .list-group {
|
5657 |
-
padding-left: 0;
|
5658 |
-
margin-bottom: 20px;
|
5659 |
-
}
|
5660 |
-
|
5661 |
-
.factory-bootstrap-330 .list-group-item {
|
5662 |
-
position: relative;
|
5663 |
-
display: block;
|
5664 |
-
padding: 10px 15px;
|
5665 |
-
margin-bottom: -1px;
|
5666 |
-
background-color: #ffffff;
|
5667 |
-
border: 1px solid #dddddd;
|
5668 |
-
}
|
5669 |
-
|
5670 |
-
.factory-bootstrap-330 .list-group-item:first-child {
|
5671 |
-
border-top-right-radius: 4px;
|
5672 |
-
border-top-left-radius: 4px;
|
5673 |
-
}
|
5674 |
-
|
5675 |
-
.factory-bootstrap-330 .list-group-item:last-child {
|
5676 |
-
margin-bottom: 0;
|
5677 |
-
border-bottom-right-radius: 4px;
|
5678 |
-
border-bottom-left-radius: 4px;
|
5679 |
-
}
|
5680 |
-
|
5681 |
-
.factory-bootstrap-330 .list-group-item > .badge {
|
5682 |
-
float: right;
|
5683 |
-
}
|
5684 |
-
|
5685 |
-
.factory-bootstrap-330 .list-group-item > .badge + .badge {
|
5686 |
-
margin-right: 5px;
|
5687 |
-
}
|
5688 |
-
|
5689 |
-
.factory-bootstrap-330 a.list-group-item {
|
5690 |
-
color: #555555;
|
5691 |
-
}
|
5692 |
-
|
5693 |
-
.factory-bootstrap-330 a.list-group-item .list-group-item-heading {
|
5694 |
-
color: #333333;
|
5695 |
-
}
|
5696 |
-
|
5697 |
-
.factory-bootstrap-330 a.list-group-item:hover,
|
5698 |
-
.factory-bootstrap-330 a.list-group-item:focus {
|
5699 |
-
text-decoration: none;
|
5700 |
-
background-color: #f5f5f5;
|
5701 |
-
}
|
5702 |
-
|
5703 |
-
.factory-bootstrap-330 a.list-group-item.active,
|
5704 |
-
.factory-bootstrap-330 a.list-group-item.active:hover,
|
5705 |
-
.factory-bootstrap-330 a.list-group-item.active:focus {
|
5706 |
-
z-index: 2;
|
5707 |
-
color: #ffffff;
|
5708 |
-
background-color: #428bca;
|
5709 |
-
border-color: #428bca;
|
5710 |
-
}
|
5711 |
-
|
5712 |
-
.factory-bootstrap-330 a.list-group-item.active .list-group-item-heading,
|
5713 |
-
.factory-bootstrap-330 a.list-group-item.active:hover .list-group-item-heading,
|
5714 |
-
.factory-bootstrap-330 a.list-group-item.active:focus .list-group-item-heading {
|
5715 |
-
color: inherit;
|
5716 |
-
}
|
5717 |
-
|
5718 |
-
.factory-bootstrap-330 a.list-group-item.active .list-group-item-text,
|
5719 |
-
.factory-bootstrap-330 a.list-group-item.active:hover .list-group-item-text,
|
5720 |
-
.factory-bootstrap-330 a.list-group-item.active:focus .list-group-item-text {
|
5721 |
-
color: #e1edf7;
|
5722 |
-
}
|
5723 |
-
|
5724 |
-
.factory-bootstrap-330 .list-group-item-heading {
|
5725 |
-
margin-top: 0;
|
5726 |
-
margin-bottom: 5px;
|
5727 |
-
}
|
5728 |
-
|
5729 |
-
.factory-bootstrap-330 .list-group-item-text {
|
5730 |
-
margin-bottom: 0;
|
5731 |
-
line-height: 1.3;
|
5732 |
-
}
|
5733 |
-
|
5734 |
-
.factory-bootstrap-330 .panel {
|
5735 |
-
margin-bottom: 20px;
|
5736 |
-
background-color: #ffffff;
|
5737 |
-
border: 1px solid transparent;
|
5738 |
-
border-radius: 4px;
|
5739 |
-
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
|
5740 |
-
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
|
5741 |
-
}
|
5742 |
-
|
5743 |
-
.factory-bootstrap-330 .panel-body {
|
5744 |
-
padding: 15px;
|
5745 |
-
}
|
5746 |
-
|
5747 |
-
.factory-bootstrap-330 .panel-body:before,
|
5748 |
-
.factory-bootstrap-330 .panel-body:after {
|
5749 |
-
display: table;
|
5750 |
-
content: " ";
|
5751 |
-
}
|
5752 |
-
|
5753 |
-
.factory-bootstrap-330 .panel-body:after {
|
5754 |
-
clear: both;
|
5755 |
-
}
|
5756 |
-
|
5757 |
-
.factory-bootstrap-330 .panel-body:before,
|
5758 |
-
.factory-bootstrap-330 .panel-body:after {
|
5759 |
-
display: table;
|
5760 |
-
content: " ";
|
5761 |
-
}
|
5762 |
-
|
5763 |
-
.factory-bootstrap-330 .panel-body:after {
|
5764 |
-
clear: both;
|
5765 |
-
}
|
5766 |
-
|
5767 |
-
.factory-bootstrap-330 .panel > .list-group {
|
5768 |
-
margin-bottom: 0;
|
5769 |
-
}
|
5770 |
-
|
5771 |
-
.factory-bootstrap-330 .panel > .list-group .list-group-item {
|
5772 |
-
border-width: 1px 0;
|
5773 |
-
}
|
5774 |
-
|
5775 |
-
.factory-bootstrap-330 .panel > .list-group .list-group-item:first-child {
|
5776 |
-
border-top-right-radius: 0;
|
5777 |
-
border-top-left-radius: 0;
|
5778 |
-
}
|
5779 |
-
|
5780 |
-
.factory-bootstrap-330 .panel > .list-group .list-group-item:last-child {
|
5781 |
-
border-bottom: 0;
|
5782 |
-
}
|
5783 |
-
|
5784 |
-
.factory-bootstrap-330 .panel-heading + .list-group .list-group-item:first-child {
|
5785 |
-
border-top-width: 0;
|
5786 |
-
}
|
5787 |
-
|
5788 |
-
.factory-bootstrap-330 .panel > .table,
|
5789 |
-
.factory-bootstrap-330 .panel > .table-responsive > .table {
|
5790 |
-
margin-bottom: 0;
|
5791 |
-
}
|
5792 |
-
|
5793 |
-
.factory-bootstrap-330 .panel > .panel-body + .table,
|
5794 |
-
.factory-bootstrap-330 .panel > .panel-body + .table-responsive {
|
5795 |
-
border-top: 1px solid #dddddd;
|
5796 |
-
}
|
5797 |
-
|
5798 |
-
.factory-bootstrap-330 .panel > .table > tbody:first-child th,
|
5799 |
-
.factory-bootstrap-330 .panel > .table > tbody:first-child td {
|
5800 |
-
border-top: 0;
|
5801 |
-
}
|
5802 |
-
|
5803 |
-
.factory-bootstrap-330 .panel > .table-bordered,
|
5804 |
-
.factory-bootstrap-330 .panel > .table-responsive > .table-bordered {
|
5805 |
-
border: 0;
|
5806 |
-
}
|
5807 |
-
|
5808 |
-
.factory-bootstrap-330 .panel > .table-bordered > thead > tr > th:first-child,
|
5809 |
-
.factory-bootstrap-330 .panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
|
5810 |
-
.factory-bootstrap-330 .panel > .table-bordered > tbody > tr > th:first-child,
|
5811 |
-
.factory-bootstrap-330 .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
|
5812 |
-
.factory-bootstrap-330 .panel > .table-bordered > tfoot > tr > th:first-child,
|
5813 |
-
.factory-bootstrap-330 .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
|
5814 |
-
.factory-bootstrap-330 .panel > .table-bordered > thead > tr > td:first-child,
|
5815 |
-
.factory-bootstrap-330 .panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
|
5816 |
-
.factory-bootstrap-330 .panel > .table-bordered > tbody > tr > td:first-child,
|
5817 |
-
.factory-bootstrap-330 .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
|
5818 |
-
.factory-bootstrap-330 .panel > .table-bordered > tfoot > tr > td:first-child,
|
5819 |
-
.factory-bootstrap-330 .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
|
5820 |
-
border-left: 0;
|
5821 |
-
}
|
5822 |
-
|
5823 |
-
.factory-bootstrap-330 .panel > .table-bordered > thead > tr > th:last-child,
|
5824 |
-
.factory-bootstrap-330 .panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
|
5825 |
-
.factory-bootstrap-330 .panel > .table-bordered > tbody > tr > th:last-child,
|
5826 |
-
.factory-bootstrap-330 .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
|
5827 |
-
.factory-bootstrap-330 .panel > .table-bordered > tfoot > tr > th:last-child,
|
5828 |
-
.factory-bootstrap-330 .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
|
5829 |
-
.factory-bootstrap-330 .panel > .table-bordered > thead > tr > td:last-child,
|
5830 |
-
.factory-bootstrap-330 .panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
|
5831 |
-
.factory-bootstrap-330 .panel > .table-bordered > tbody > tr > td:last-child,
|
5832 |
-
.factory-bootstrap-330 .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
|
5833 |
-
.factory-bootstrap-330 .panel > .table-bordered > tfoot > tr > td:last-child,
|
5834 |
-
.factory-bootstrap-330 .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
|
5835 |
-
border-right: 0;
|
5836 |
-
}
|
5837 |
-
|
5838 |
-
.factory-bootstrap-330 .panel > .table-bordered > thead > tr:last-child > th,
|
5839 |
-
.factory-bootstrap-330 .panel > .table-responsive > .table-bordered > thead > tr:last-child > th,
|
5840 |
-
.factory-bootstrap-330 .panel > .table-bordered > tbody > tr:last-child > th,
|
5841 |
-
.factory-bootstrap-330 .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
|
5842 |
-
.factory-bootstrap-330 .panel > .table-bordered > tfoot > tr:last-child > th,
|
5843 |
-
.factory-bootstrap-330 .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th,
|
5844 |
-
.factory-bootstrap-330 .panel > .table-bordered > thead > tr:last-child > td,
|
5845 |
-
.factory-bootstrap-330 .panel > .table-responsive > .table-bordered > thead > tr:last-child > td,
|
5846 |
-
.factory-bootstrap-330 .panel > .table-bordered > tbody > tr:last-child > td,
|
5847 |
-
.factory-bootstrap-330 .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
|
5848 |
-
.factory-bootstrap-330 .panel > .table-bordered > tfoot > tr:last-child > td,
|
5849 |
-
.factory-bootstrap-330 .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td {
|
5850 |
-
border-bottom: 0;
|
5851 |
-
}
|
5852 |
-
|
5853 |
-
.factory-bootstrap-330 .panel > .table-responsive {
|
5854 |
-
margin-bottom: 0;
|
5855 |
-
border: 0;
|
5856 |
-
}
|
5857 |
-
|
5858 |
-
.factory-bootstrap-330 .panel-heading {
|
5859 |
-
padding: 10px 15px;
|
5860 |
-
border-bottom: 1px solid transparent;
|
5861 |
-
border-top-right-radius: 3px;
|
5862 |
-
border-top-left-radius: 3px;
|
5863 |
-
}
|
5864 |
-
|
5865 |
-
.factory-bootstrap-330 .panel-heading > .dropdown .dropdown-toggle {
|
5866 |
-
color: inherit;
|
5867 |
-
}
|
5868 |
-
|
5869 |
-
.factory-bootstrap-330 .panel-title {
|
5870 |
-
margin-top: 0;
|
5871 |
-
margin-bottom: 0;
|
5872 |
-
font-size: 16px;
|
5873 |
-
color: inherit;
|
5874 |
-
}
|
5875 |
-
|
5876 |
-
.factory-bootstrap-330 .panel-title > a {
|
5877 |
-
color: inherit;
|
5878 |
-
}
|
5879 |
-
|
5880 |
-
.factory-bootstrap-330 .panel-footer {
|
5881 |
-
padding: 10px 15px;
|
5882 |
-
background-color: #f5f5f5;
|
5883 |
-
border-top: 1px solid #dddddd;
|
5884 |
-
border-bottom-right-radius: 3px;
|
5885 |
-
border-bottom-left-radius: 3px;
|
5886 |
-
}
|
5887 |
-
|
5888 |
-
.factory-bootstrap-330 .panel-group .panel {
|
5889 |
-
margin-bottom: 0;
|
5890 |
-
overflow: hidden;
|
5891 |
-
border-radius: 4px;
|
5892 |
-
}
|
5893 |
-
|
5894 |
-
.factory-bootstrap-330 .panel-group .panel + .panel {
|
5895 |
-
margin-top: 5px;
|
5896 |
-
}
|
5897 |
-
|
5898 |
-
.factory-bootstrap-330 .panel-group .panel-heading {
|
5899 |
-
border-bottom: 0;
|
5900 |
-
}
|
5901 |
-
|
5902 |
-
.factory-bootstrap-330 .panel-group .panel-heading + .panel-collapse .panel-body {
|
5903 |
-
border-top: 1px solid #dddddd;
|
5904 |
-
}
|
5905 |
-
|
5906 |
-
.factory-bootstrap-330 .panel-group .panel-footer {
|
5907 |
-
border-top: 0;
|
5908 |
-
}
|
5909 |
-
|
5910 |
-
.factory-bootstrap-330 .panel-group .panel-footer + .panel-collapse .panel-body {
|
5911 |
-
border-bottom: 1px solid #dddddd;
|
5912 |
-
}
|
5913 |
-
|
5914 |
-
.factory-bootstrap-330 .panel-default {
|
5915 |
-
border-color: #dddddd;
|
5916 |
-
}
|
5917 |
-
|
5918 |
-
.factory-bootstrap-330 .panel-default > .panel-heading {
|
5919 |
-
color: #333333;
|
5920 |
-
background-color: #f5f5f5;
|
5921 |
-
border-color: #dddddd;
|
5922 |
-
}
|
5923 |
-
|
5924 |
-
.factory-bootstrap-330 .panel-default > .panel-heading + .panel-collapse .panel-body {
|
5925 |
-
border-top-color: #dddddd;
|
5926 |
-
}
|
5927 |
-
|
5928 |
-
.factory-bootstrap-330 .panel-default > .panel-footer + .panel-collapse .panel-body {
|
5929 |
-
border-bottom-color: #dddddd;
|
5930 |
-
}
|
5931 |
-
|
5932 |
-
.factory-bootstrap-330 .panel-primary {
|
5933 |
-
border-color: #428bca;
|
5934 |
-
}
|
5935 |
-
|
5936 |
-
.factory-bootstrap-330 .panel-primary > .panel-heading {
|
5937 |
-
color: #ffffff;
|
5938 |
-
background-color: #428bca;
|
5939 |
-
border-color: #428bca;
|
5940 |
-
}
|
5941 |
-
|
5942 |
-
.factory-bootstrap-330 .panel-primary > .panel-heading + .panel-collapse .panel-body {
|
5943 |
-
border-top-color: #428bca;
|
5944 |
-
}
|
5945 |
-
|
5946 |
-
.factory-bootstrap-330 .panel-primary > .panel-footer + .panel-collapse .panel-body {
|
5947 |
-
border-bottom-color: #428bca;
|
5948 |
-
}
|
5949 |
-
|
5950 |
-
.factory-bootstrap-330 .panel-success {
|
5951 |
-
border-color: #d6e9c6;
|
5952 |
-
}
|
5953 |
-
|
5954 |
-
.factory-bootstrap-330 .panel-success > .panel-heading {
|
5955 |
-
color: #3c763d;
|
5956 |
-
background-color: #dff0d8;
|
5957 |
-
border-color: #d6e9c6;
|
5958 |
-
}
|
5959 |
-
|
5960 |
-
.factory-bootstrap-330 .panel-success > .panel-heading + .panel-collapse .panel-body {
|
5961 |
-
border-top-color: #d6e9c6;
|
5962 |
-
}
|
5963 |
-
|
5964 |
-
.factory-bootstrap-330 .panel-success > .panel-footer + .panel-collapse .panel-body {
|
5965 |
-
border-bottom-color: #d6e9c6;
|
5966 |
-
}
|
5967 |
-
|
5968 |
-
.factory-bootstrap-330 .panel-warning {
|
5969 |
-
border-color: #faebcc;
|
5970 |
-
}
|
5971 |
-
|
5972 |
-
.factory-bootstrap-330 .panel-warning > .panel-heading {
|
5973 |
-
color: #8a6d3b;
|
5974 |
-
background-color: #fcf8e3;
|
5975 |
-
border-color: #faebcc;
|
5976 |
-
}
|
5977 |
-
|
5978 |
-
.factory-bootstrap-330 .panel-warning > .panel-heading + .panel-collapse .panel-body {
|
5979 |
-
border-top-color: #faebcc;
|
5980 |
-
}
|
5981 |
-
|
5982 |
-
.factory-bootstrap-330 .panel-warning > .panel-footer + .panel-collapse .panel-body {
|
5983 |
-
border-bottom-color: #faebcc;
|
5984 |
-
}
|
5985 |
-
|
5986 |
-
.factory-bootstrap-330 .panel-danger {
|
5987 |
-
border-color: #ebccd1;
|
5988 |
-
}
|
5989 |
-
|
5990 |
-
.factory-bootstrap-330 .panel-danger > .panel-heading {
|
5991 |
-
color: #a94442;
|
5992 |
-
background-color: #f2dede;
|
5993 |
-
border-color: #ebccd1;
|
5994 |
-
}
|
5995 |
-
|
5996 |
-
.factory-bootstrap-330 .panel-danger > .panel-heading + .panel-collapse .panel-body {
|
5997 |
-
border-top-color: #ebccd1;
|
5998 |
-
}
|
5999 |
-
|
6000 |
-
.factory-bootstrap-330 .panel-danger > .panel-footer + .panel-collapse .panel-body {
|
6001 |
-
border-bottom-color: #ebccd1;
|
6002 |
-
}
|
6003 |
-
|
6004 |
-
.factory-bootstrap-330 .panel-info {
|
6005 |
-
border-color: #bce8f1;
|
6006 |
-
}
|
6007 |
-
|
6008 |
-
.factory-bootstrap-330 .panel-info > .panel-heading {
|
6009 |
-
color: #31708f;
|
6010 |
-
background-color: #d9edf7;
|
6011 |
-
border-color: #bce8f1;
|
6012 |
-
}
|
6013 |
-
|
6014 |
-
.factory-bootstrap-330 .panel-info > .panel-heading + .panel-collapse .panel-body {
|
6015 |
-
border-top-color: #bce8f1;
|
6016 |
-
}
|
6017 |
-
|
6018 |
-
.factory-bootstrap-330 .panel-info > .panel-footer + .panel-collapse .panel-body {
|
6019 |
-
border-bottom-color: #bce8f1;
|
6020 |
-
}
|
6021 |
-
|
6022 |
-
.factory-bootstrap-330 .well {
|
6023 |
-
min-height: 20px;
|
6024 |
-
padding: 19px;
|
6025 |
-
margin-bottom: 20px;
|
6026 |
-
background-color: #f5f5f5;
|
6027 |
-
border: 1px solid #e3e3e3;
|
6028 |
-
border-radius: 4px;
|
6029 |
-
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
|
6030 |
-
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
|
6031 |
-
}
|
6032 |
-
|
6033 |
-
.factory-bootstrap-330 .well blockquote {
|
6034 |
-
border-color: #ddd;
|
6035 |
-
border-color: rgba(0, 0, 0, 0.15);
|
6036 |
-
}
|
6037 |
-
|
6038 |
-
.factory-bootstrap-330 .well-lg {
|
6039 |
-
padding: 24px;
|
6040 |
-
border-radius: 6px;
|
6041 |
-
}
|
6042 |
-
|
6043 |
-
.factory-bootstrap-330 .well-sm {
|
6044 |
-
padding: 9px;
|
6045 |
-
border-radius: 3px;
|
6046 |
-
}
|
6047 |
-
|
6048 |
-
.factory-bootstrap-330 .close {
|
6049 |
-
float: right;
|
6050 |
-
font-size: 14px;
|
6051 |
-
font-weight: bold;
|
6052 |
-
line-height: 1;
|
6053 |
-
color: #000000;
|
6054 |
-
text-shadow: 0 1px 0 #ffffff;
|
6055 |
-
opacity: 0.3;
|
6056 |
-
filter: alpha(opacity=30);
|
6057 |
-
}
|
6058 |
-
|
6059 |
-
.factory-bootstrap-330 .alert .close {
|
6060 |
-
position: relative;
|
6061 |
-
top: -8px;
|
6062 |
-
right: -7px;
|
6063 |
-
}
|
6064 |
-
|
6065 |
-
.factory-bootstrap-330 .close:hover,
|
6066 |
-
.factory-bootstrap-330 .close:focus {
|
6067 |
-
color: #000000;
|
6068 |
-
text-decoration: none;
|
6069 |
-
cursor: pointer;
|
6070 |
-
opacity: 0.5;
|
6071 |
-
filter: alpha(opacity=50);
|
6072 |
-
}
|
6073 |
-
|
6074 |
-
.factory-bootstrap-330 button.close {
|
6075 |
-
padding: 0;
|
6076 |
-
cursor: pointer;
|
6077 |
-
background: transparent;
|
6078 |
-
border: 0;
|
6079 |
-
-webkit-appearance: none;
|
6080 |
-
}
|
6081 |
-
|
6082 |
-
.factory-bootstrap-330 .modal-open {
|
6083 |
-
overflow: hidden;
|
6084 |
-
}
|
6085 |
-
|
6086 |
-
.factory-bootstrap-330 .modal {
|
6087 |
-
position: fixed;
|
6088 |
-
top: 0;
|
6089 |
-
right: 0;
|
6090 |
-
bottom: 0;
|
6091 |
-
left: 0;
|
6092 |
-
z-index: 1040;
|
6093 |
-
display: none;
|
6094 |
-
overflow: auto;
|
6095 |
-
overflow-y: scroll;
|
6096 |
-
width: auto;
|
6097 |
-
margin-left: 0px;
|
6098 |
-
background-color: transparent;
|
6099 |
-
border: 0px;
|
6100 |
-
}
|
6101 |
-
|
6102 |
-
.factory-bootstrap-330 .modal.fade .modal-dialog {
|
6103 |
-
-webkit-transform: translate(0, -25%);
|
6104 |
-
-ms-transform: translate(0, -25%);
|
6105 |
-
transform: translate(0, -25%);
|
6106 |
-
-webkit-transition: -webkit-transform 0.3s ease-out;
|
6107 |
-
-moz-transition: -moz-transform 0.3s ease-out;
|
6108 |
-
-o-transition: -o-transform 0.3s ease-out;
|
6109 |
-
transition: transform 0.3s ease-out;
|
6110 |
-
}
|
6111 |
-
|
6112 |
-
.factory-bootstrap-330 .modal.in .modal-dialog {
|
6113 |
-
-webkit-transform: translate(0, 0);
|
6114 |
-
-ms-transform: translate(0, 0);
|
6115 |
-
transform: translate(0, 0);
|
6116 |
-
}
|
6117 |
-
|
6118 |
-
.factory-bootstrap-330 .modal-dialog {
|
6119 |
-
position: relative;
|
6120 |
-
z-index: 1050;
|
6121 |
-
width: auto;
|
6122 |
-
margin: 10px;
|
6123 |
-
}
|
6124 |
-
|
6125 |
-
.factory-bootstrap-330 .modal-content {
|
6126 |
-
position: relative;
|
6127 |
-
background-color: #ffffff;
|
6128 |
-
border: 1px solid #999999;
|
6129 |
-
border: 1px solid rgba(0, 0, 0, 0.2);
|
6130 |
-
border-radius: 6px;
|
6131 |
-
outline: none;
|
6132 |
-
-webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
|
6133 |
-
box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
|
6134 |
-
background-clip: padding-box;
|
6135 |
-
}
|
6136 |
-
|
6137 |
-
.factory-bootstrap-330 .modal-backdrop,
|
6138 |
-
.factory-bootstrap-330-modal-backdrop {
|
6139 |
-
position: fixed;
|
6140 |
-
top: 0;
|
6141 |
-
right: 0;
|
6142 |
-
bottom: 0;
|
6143 |
-
left: 0;
|
6144 |
-
z-index: 1030;
|
6145 |
-
background-color: #000000;
|
6146 |
-
}
|
6147 |
-
|
6148 |
-
.factory-bootstrap-330 .modal-backdrop.fade,
|
6149 |
-
.factory-bootstrap-330-modal-backdrop.fade {
|
6150 |
-
opacity: 0;
|
6151 |
-
filter: alpha(opacity=0);
|
6152 |
-
}
|
6153 |
-
|
6154 |
-
.factory-bootstrap-330 .modal-backdrop.in,
|
6155 |
-
.factory-bootstrap-330-modal-backdrop.in {
|
6156 |
-
opacity: 0.5;
|
6157 |
-
filter: alpha(opacity=50);
|
6158 |
-
}
|
6159 |
-
|
6160 |
-
.factory-bootstrap-330 .modal-header {
|
6161 |
-
min-height: 16.428571429px;
|
6162 |
-
padding: 15px;
|
6163 |
-
border-bottom: 1px solid #e5e5e5;
|
6164 |
-
}
|
6165 |
-
|
6166 |
-
.factory-bootstrap-330 .modal-header .close {
|
6167 |
-
margin-top: -2px;
|
6168 |
-
}
|
6169 |
-
|
6170 |
-
.factory-bootstrap-330 .modal-title {
|
6171 |
-
margin: 0;
|
6172 |
-
line-height: 1.428571429;
|
6173 |
-
}
|
6174 |
-
|
6175 |
-
.factory-bootstrap-330 .modal-body {
|
6176 |
-
position: relative;
|
6177 |
-
padding: 20px;
|
6178 |
-
max-height: none;
|
6179 |
-
}
|
6180 |
-
|
6181 |
-
.factory-bootstrap-330 .modal-footer {
|
6182 |
-
padding: 19px 20px 20px;
|
6183 |
-
margin-top: 15px;
|
6184 |
-
text-align: right;
|
6185 |
-
border-top: 1px solid #e5e5e5;
|
6186 |
-
}
|
6187 |
-
|
6188 |
-
.factory-bootstrap-330 .modal-footer:before,
|
6189 |
-
.factory-bootstrap-330 .modal-footer:after {
|
6190 |
-
display: table;
|
6191 |
-
content: " ";
|
6192 |
-
}
|
6193 |
-
|
6194 |
-
.factory-bootstrap-330 .modal-footer:after {
|
6195 |
-
clear: both;
|
6196 |
-
}
|
6197 |
-
|
6198 |
-
.factory-bootstrap-330 .modal-footer:before,
|
6199 |
-
.factory-bootstrap-330 .modal-footer:after {
|
6200 |
-
display: table;
|
6201 |
-
content: " ";
|
6202 |
-
}
|
6203 |
-
|
6204 |
-
.factory-bootstrap-330 .modal-footer:after {
|
6205 |
-
clear: both;
|
6206 |
-
}
|
6207 |
-
|
6208 |
-
.factory-bootstrap-330 .modal-footer .btn + .btn {
|
6209 |
-
margin-bottom: 0;
|
6210 |
-
margin-left: 5px;
|
6211 |
-
}
|
6212 |
-
|
6213 |
-
.factory-bootstrap-330 .modal-footer .btn-group .btn + .btn {
|
6214 |
-
margin-left: -1px;
|
6215 |
-
}
|
6216 |
-
|
6217 |
-
.factory-bootstrap-330 .modal-footer .btn-block + .btn-block {
|
6218 |
-
margin-left: 0;
|
6219 |
-
}
|
6220 |
-
|
6221 |
-
@media screen and (min-width: 768px) {
|
6222 |
-
.factory-bootstrap-330 .modal-dialog {
|
6223 |
-
width: 600px;
|
6224 |
-
margin: 30px auto;
|
6225 |
-
}
|
6226 |
-
|
6227 |
-
.factory-bootstrap-330 .modal-content {
|
6228 |
-
-webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
|
6229 |
-
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
|
6230 |
-
}
|
6231 |
-
}
|
6232 |
-
|
6233 |
-
.factory-bootstrap-330 .tooltip {
|
6234 |
-
position: absolute;
|
6235 |
-
z-index: 1030;
|
6236 |
-
display: block;
|
6237 |
-
font-size: 12px;
|
6238 |
-
line-height: 1.4;
|
6239 |
-
opacity: 0;
|
6240 |
-
filter: alpha(opacity=0);
|
6241 |
-
visibility: visible;
|
6242 |
-
}
|
6243 |
-
|
6244 |
-
.factory-bootstrap-330 .tooltip.in {
|
6245 |
-
opacity: 0.9;
|
6246 |
-
filter: alpha(opacity=90);
|
6247 |
-
}
|
6248 |
-
|
6249 |
-
.factory-bootstrap-330 .tooltip.top {
|
6250 |
-
padding: 5px 0;
|
6251 |
-
margin-top: -3px;
|
6252 |
-
}
|
6253 |
-
|
6254 |
-
.factory-bootstrap-330 .tooltip.right {
|
6255 |
-
padding: 0 5px;
|
6256 |
-
margin-left: 3px;
|
6257 |
-
}
|
6258 |
-
|
6259 |
-
.factory-bootstrap-330 .tooltip.bottom {
|
6260 |
-
padding: 5px 0;
|
6261 |
-
margin-top: 3px;
|
6262 |
-
}
|
6263 |
-
|
6264 |
-
.factory-bootstrap-330 .tooltip.left {
|
6265 |
-
padding: 0 5px;
|
6266 |
-
margin-left: -3px;
|
6267 |
-
}
|
6268 |
-
|
6269 |
-
.factory-bootstrap-330 .tooltip-inner {
|
6270 |
-
width: 400px;
|
6271 |
-
padding: 15px 20px;
|
6272 |
-
color: #ffffff;
|
6273 |
-
text-align: left;
|
6274 |
-
text-decoration: none;
|
6275 |
-
background-color: #673ab7;
|
6276 |
-
border-radius: 3px;
|
6277 |
-
}
|
6278 |
-
|
6279 |
-
.factory-bootstrap-330 .tooltip-arrow {
|
6280 |
-
position: absolute;
|
6281 |
-
width: 0;
|
6282 |
-
height: 0;
|
6283 |
-
border-color: transparent;
|
6284 |
-
border-style: solid;
|
6285 |
-
}
|
6286 |
-
|
6287 |
-
.factory-bootstrap-330 .tooltip.top .tooltip-arrow {
|
6288 |
-
bottom: 0;
|
6289 |
-
left: 50%;
|
6290 |
-
margin-left: -5px;
|
6291 |
-
border-top-color: #673ab7;
|
6292 |
-
border-width: 5px 5px 0;
|
6293 |
-
}
|
6294 |
-
|
6295 |
-
.factory-bootstrap-330 .tooltip.top-left .tooltip-arrow {
|
6296 |
-
bottom: 0;
|
6297 |
-
left: 5px;
|
6298 |
-
border-top-color: #673ab7;
|
6299 |
-
border-width: 5px 5px 0;
|
6300 |
-
}
|
6301 |
-
|
6302 |
-
.factory-bootstrap-330 .tooltip.top-right .tooltip-arrow {
|
6303 |
-
right: 5px;
|
6304 |
-
bottom: 0;
|
6305 |
-
border-top-color: #673ab7;
|
6306 |
-
border-width: 5px 5px 0;
|
6307 |
-
}
|
6308 |
-
|
6309 |
-
.factory-bootstrap-330 .tooltip.right .tooltip-arrow {
|
6310 |
-
top: 50%;
|
6311 |
-
left: 0;
|
6312 |
-
margin-top: -5px;
|
6313 |
-
border-right-color: #673ab7;
|
6314 |
-
border-width: 5px 5px 5px 0;
|
6315 |
-
}
|
6316 |
-
|
6317 |
-
.factory-bootstrap-330 .tooltip.left .tooltip-arrow {
|
6318 |
-
top: 50%;
|
6319 |
-
right: 0;
|
6320 |
-
margin-top: -5px;
|
6321 |
-
border-left-color: #673ab7;
|
6322 |
-
border-width: 5px 0 5px 5px;
|
6323 |
-
}
|
6324 |
-
|
6325 |
-
.factory-bootstrap-330 .tooltip.bottom .tooltip-arrow {
|
6326 |
-
top: 0;
|
6327 |
-
left: 50%;
|
6328 |
-
margin-left: -5px;
|
6329 |
-
border-bottom-color: #673ab7;
|
6330 |
-
border-width: 0 5px 5px;
|
6331 |
-
}
|
6332 |
-
|
6333 |
-
.factory-bootstrap-330 .tooltip.bottom-left .tooltip-arrow {
|
6334 |
-
top: 0;
|
6335 |
-
left: 5px;
|
6336 |
-
border-bottom-color: #673ab7;
|
6337 |
-
border-width: 0 5px 5px;
|
6338 |
-
}
|
6339 |
-
|
6340 |
-
.factory-bootstrap-330 .tooltip.bottom-right .tooltip-arrow {
|
6341 |
-
top: 0;
|
6342 |
-
right: 5px;
|
6343 |
-
border-bottom-color: #673ab7;
|
6344 |
-
border-width: 0 5px 5px;
|
6345 |
-
}
|
6346 |
-
|
6347 |
-
.factory-bootstrap-330 .popover {
|
6348 |
-
position: absolute;
|
6349 |
-
top: 0;
|
6350 |
-
left: 0;
|
6351 |
-
z-index: 1010;
|
6352 |
-
display: none;
|
6353 |
-
max-width: 276px;
|
6354 |
-
padding: 1px;
|
6355 |
-
text-align: left;
|
6356 |
-
white-space: normal;
|
6357 |
-
background-color: #ffffff;
|
6358 |
-
border: 1px solid #cccccc;
|
6359 |
-
border: 1px solid rgba(0, 0, 0, 0.2);
|
6360 |
-
border-radius: 6px;
|
6361 |
-
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
6362 |
-
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
6363 |
-
background-clip: padding-box;
|
6364 |
-
}
|
6365 |
-
|
6366 |
-
.factory-bootstrap-330 .popover.top {
|
6367 |
-
margin-top: -10px;
|
6368 |
-
}
|
6369 |
-
|
6370 |
-
.factory-bootstrap-330 .popover.right {
|
6371 |
-
margin-left: 10px;
|
6372 |
-
}
|
6373 |
-
|
6374 |
-
.factory-bootstrap-330 .popover.bottom {
|
6375 |
-
margin-top: 10px;
|
6376 |
-
}
|
6377 |
-
|
6378 |
-
.factory-bootstrap-330 .popover.left {
|
6379 |
-
margin-left: -10px;
|
6380 |
-
}
|
6381 |
-
|
6382 |
-
.factory-bootstrap-330 .popover-title {
|
6383 |
-
padding: 8px 14px;
|
6384 |
-
margin: 0;
|
6385 |
-
font-size: 14px;
|
6386 |
-
font-weight: normal;
|
6387 |
-
line-height: 18px;
|
6388 |
-
background-color: #f7f7f7;
|
6389 |
-
border-bottom: 1px solid #ebebeb;
|
6390 |
-
border-radius: 5px 5px 0 0;
|
6391 |
-
}
|
6392 |
-
|
6393 |
-
.factory-bootstrap-330 .popover-content {
|
6394 |
-
padding: 9px 14px;
|
6395 |
-
}
|
6396 |
-
|
6397 |
-
.factory-bootstrap-330 .popover .arrow,
|
6398 |
-
.factory-bootstrap-330 .popover .arrow:after {
|
6399 |
-
position: absolute;
|
6400 |
-
display: block;
|
6401 |
-
width: 0;
|
6402 |
-
height: 0;
|
6403 |
-
border-color: transparent;
|
6404 |
-
border-style: solid;
|
6405 |
-
}
|
6406 |
-
|
6407 |
-
.factory-bootstrap-330 .popover .arrow {
|
6408 |
-
border-width: 11px;
|
6409 |
-
}
|
6410 |
-
|
6411 |
-
.factory-bootstrap-330 .popover .arrow:after {
|
6412 |
-
border-width: 10px;
|
6413 |
-
content: "";
|
6414 |
-
}
|
6415 |
-
|
6416 |
-
.factory-bootstrap-330 .popover.top .arrow {
|
6417 |
-
bottom: -11px;
|
6418 |
-
left: 50%;
|
6419 |
-
margin-left: -11px;
|
6420 |
-
border-top-color: #999999;
|
6421 |
-
border-top-color: rgba(0, 0, 0, 0.25);
|
6422 |
-
border-bottom-width: 0;
|
6423 |
-
}
|
6424 |
-
|
6425 |
-
.factory-bootstrap-330 .popover.top .arrow:after {
|
6426 |
-
bottom: 1px;
|
6427 |
-
margin-left: -10px;
|
6428 |
-
border-top-color: #ffffff;
|
6429 |
-
border-bottom-width: 0;
|
6430 |
-
content: " ";
|
6431 |
-
}
|
6432 |
-
|
6433 |
-
.factory-bootstrap-330 .popover.right .arrow {
|
6434 |
-
top: 50%;
|
6435 |
-
left: -11px;
|
6436 |
-
margin-top: -11px;
|
6437 |
-
border-right-color: #999999;
|
6438 |
-
border-right-color: rgba(0, 0, 0, 0.25);
|
6439 |
-
border-left-width: 0;
|
6440 |
-
}
|
6441 |
-
|
6442 |
-
.factory-bootstrap-330 .popover.right .arrow:after {
|
6443 |
-
bottom: -10px;
|
6444 |
-
left: 1px;
|
6445 |
-
border-right-color: #ffffff;
|
6446 |
-
border-left-width: 0;
|
6447 |
-
content: " ";
|
6448 |
-
}
|
6449 |
-
|
6450 |
-
.factory-bootstrap-330 .popover.bottom .arrow {
|
6451 |
-
top: -11px;
|
6452 |
-
left: 50%;
|
6453 |
-
margin-left: -11px;
|
6454 |
-
border-bottom-color: #999999;
|
6455 |
-
border-bottom-color: rgba(0, 0, 0, 0.25);
|
6456 |
-
border-top-width: 0;
|
6457 |
-
}
|
6458 |
-
|
6459 |
-
.factory-bootstrap-330 .popover.bottom .arrow:after {
|
6460 |
-
top: 1px;
|
6461 |
-
margin-left: -10px;
|
6462 |
-
border-bottom-color: #ffffff;
|
6463 |
-
border-top-width: 0;
|
6464 |
-
content: " ";
|
6465 |
-
}
|
6466 |
-
|
6467 |
-
.factory-bootstrap-330 .popover.left .arrow {
|
6468 |
-
top: 50%;
|
6469 |
-
right: -11px;
|
6470 |
-
margin-top: -11px;
|
6471 |
-
border-left-color: #999999;
|
6472 |
-
border-left-color: rgba(0, 0, 0, 0.25);
|
6473 |
-
border-right-width: 0;
|
6474 |
-
}
|
6475 |
-
|
6476 |
-
.factory-bootstrap-330 .popover.left .arrow:after {
|
6477 |
-
right: 1px;
|
6478 |
-
bottom: -10px;
|
6479 |
-
border-left-color: #ffffff;
|
6480 |
-
border-right-width: 0;
|
6481 |
-
content: " ";
|
6482 |
-
}
|
6483 |
-
|
6484 |
-
.factory-bootstrap-330 .carousel {
|
6485 |
-
position: relative;
|
6486 |
-
}
|
6487 |
-
|
6488 |
-
.factory-bootstrap-330 .carousel-inner {
|
6489 |
-
position: relative;
|
6490 |
-
width: 100%;
|
6491 |
-
overflow: hidden;
|
6492 |
-
}
|
6493 |
-
|
6494 |
-
.factory-bootstrap-330 .carousel-inner > .item {
|
6495 |
-
position: relative;
|
6496 |
-
display: none;
|
6497 |
-
-webkit-transition: 0.6s ease-in-out left;
|
6498 |
-
transition: 0.6s ease-in-out left;
|
6499 |
-
}
|
6500 |
-
|
6501 |
-
.factory-bootstrap-330 .carousel-inner > .item > img,
|
6502 |
-
.factory-bootstrap-330 .carousel-inner > .item > a > img {
|
6503 |
-
display: block;
|
6504 |
-
height: auto;
|
6505 |
-
max-width: 100%;
|
6506 |
-
line-height: 1;
|
6507 |
-
}
|
6508 |
-
|
6509 |
-
.factory-bootstrap-330 .carousel-inner > .active,
|
6510 |
-
.factory-bootstrap-330 .carousel-inner > .next,
|
6511 |
-
.factory-bootstrap-330 .carousel-inner > .prev {
|
6512 |
-
display: block;
|
6513 |
-
}
|
6514 |
-
|
6515 |
-
.factory-bootstrap-330 .carousel-inner > .active {
|
6516 |
-
left: 0;
|
6517 |
-
}
|
6518 |
-
|
6519 |
-
.factory-bootstrap-330 .carousel-inner > .next,
|
6520 |
-
.factory-bootstrap-330 .carousel-inner > .prev {
|
6521 |
-
position: absolute;
|
6522 |
-
top: 0;
|
6523 |
-
width: 100%;
|
6524 |
-
}
|
6525 |
-
|
6526 |
-
.factory-bootstrap-330 .carousel-inner > .next {
|
6527 |
-
left: 100%;
|
6528 |
-
}
|
6529 |
-
|
6530 |
-
.factory-bootstrap-330 .carousel-inner > .prev {
|
6531 |
-
left: -100%;
|
6532 |
-
}
|
6533 |
-
|
6534 |
-
.factory-bootstrap-330 .carousel-inner > .next.left,
|
6535 |
-
.factory-bootstrap-330 .carousel-inner > .prev.right {
|
6536 |
-
left: 0;
|
6537 |
-
}
|
6538 |
-
|
6539 |
-
.factory-bootstrap-330 .carousel-inner > .active.left {
|
6540 |
-
left: -100%;
|
6541 |
-
}
|
6542 |
-
|
6543 |
-
.factory-bootstrap-330 .carousel-inner > .active.right {
|
6544 |
-
left: 100%;
|
6545 |
-
}
|
6546 |
-
|
6547 |
-
.factory-bootstrap-330 .carousel-control {
|
6548 |
-
position: absolute;
|
6549 |
-
top: 0;
|
6550 |
-
bottom: 0;
|
6551 |
-
left: 0;
|
6552 |
-
width: 15%;
|
6553 |
-
font-size: 20px;
|
6554 |
-
color: #ffffff;
|
6555 |
-
text-align: center;
|
6556 |
-
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
|
6557 |
-
opacity: 0.5;
|
6558 |
-
filter: alpha(opacity=50);
|
6559 |
-
}
|
6560 |
-
|
6561 |
-
.factory-bootstrap-330 .carousel-control.left {
|
6562 |
-
background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0), color-stop(rgba(0, 0, 0, 0.0001) 100%));
|
6563 |
-
background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%);
|
6564 |
-
background-repeat: repeat-x;
|
6565 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
|
6566 |
-
}
|
6567 |
-
|
6568 |
-
.factory-bootstrap-330 .carousel-control.right {
|
6569 |
-
right: 0;
|
6570 |
-
left: auto;
|
6571 |
-
background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0), color-stop(rgba(0, 0, 0, 0.5) 100%));
|
6572 |
-
background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%);
|
6573 |
-
background-repeat: repeat-x;
|
6574 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
|
6575 |
-
}
|
6576 |
-
|
6577 |
-
.factory-bootstrap-330 .carousel-control:hover,
|
6578 |
-
.factory-bootstrap-330 .carousel-control:focus {
|
6579 |
-
color: #ffffff;
|
6580 |
-
text-decoration: none;
|
6581 |
-
outline: none;
|
6582 |
-
opacity: 0.9;
|
6583 |
-
filter: alpha(opacity=90);
|
6584 |
-
}
|
6585 |
-
|
6586 |
-
.factory-bootstrap-330 .carousel-control .icon-prev,
|
6587 |
-
.factory-bootstrap-330 .carousel-control .icon-next,
|
6588 |
-
.factory-bootstrap-330 .carousel-control .glyphicon-chevron-left,
|
6589 |
-
.factory-bootstrap-330 .carousel-control .glyphicon-chevron-right {
|
6590 |
-
position: absolute;
|
6591 |
-
top: 50%;
|
6592 |
-
z-index: 5;
|
6593 |
-
display: inline-block;
|
6594 |
-
}
|
6595 |
-
|
6596 |
-
.factory-bootstrap-330 .carousel-control .icon-prev,
|
6597 |
-
.factory-bootstrap-330 .carousel-control .glyphicon-chevron-left {
|
6598 |
-
left: 50%;
|
6599 |
-
}
|
6600 |
-
|
6601 |
-
.factory-bootstrap-330 .carousel-control .icon-next,
|
6602 |
-
.factory-bootstrap-330 .carousel-control .glyphicon-chevron-right {
|
6603 |
-
right: 50%;
|
6604 |
-
}
|
6605 |
-
|
6606 |
-
.factory-bootstrap-330 .carousel-control .icon-prev,
|
6607 |
-
.factory-bootstrap-330 .carousel-control .icon-next {
|
6608 |
-
width: 20px;
|
6609 |
-
height: 20px;
|
6610 |
-
margin-top: -10px;
|
6611 |
-
margin-left: -10px;
|
6612 |
-
font-family: serif;
|
6613 |
-
}
|
6614 |
-
|
6615 |
-
.factory-bootstrap-330 .carousel-control .icon-prev:before {
|
6616 |
-
content: '\2039';
|
6617 |
-
}
|
6618 |
-
|
6619 |
-
.factory-bootstrap-330 .carousel-control .icon-next:before {
|
6620 |
-
content: '\203a';
|
6621 |
-
}
|
6622 |
-
|
6623 |
-
.factory-bootstrap-330 .carousel-indicators {
|
6624 |
-
position: absolute;
|
6625 |
-
bottom: 10px;
|
6626 |
-
left: 50%;
|
6627 |
-
z-index: 15;
|
6628 |
-
width: 60%;
|
6629 |
-
padding-left: 0;
|
6630 |
-
margin-left: -30%;
|
6631 |
-
text-align: center;
|
6632 |
-
list-style: none;
|
6633 |
-
}
|
6634 |
-
|
6635 |
-
.factory-bootstrap-330 .carousel-indicators li {
|
6636 |
-
display: inline-block;
|
6637 |
-
width: 10px;
|
6638 |
-
height: 10px;
|
6639 |
-
margin: 1px;
|
6640 |
-
text-indent: -999px;
|
6641 |
-
cursor: pointer;
|
6642 |
-
background-color: #000 \9;
|
6643 |
-
background-color: rgba(0, 0, 0, 0);
|
6644 |
-
border: 1px solid #ffffff;
|
6645 |
-
border-radius: 10px;
|
6646 |
-
}
|
6647 |
-
|
6648 |
-
.factory-bootstrap-330 .carousel-indicators .active {
|
6649 |
-
width: 12px;
|
6650 |
-
height: 12px;
|
6651 |
-
margin: 0;
|
6652 |
-
background-color: #ffffff;
|
6653 |
-
}
|
6654 |
-
|
6655 |
-
.factory-bootstrap-330 .carousel-caption {
|
6656 |
-
position: absolute;
|
6657 |
-
right: 15%;
|
6658 |
-
bottom: 20px;
|
6659 |
-
left: 15%;
|
6660 |
-
z-index: 10;
|
6661 |
-
padding-top: 20px;
|
6662 |
-
padding-bottom: 20px;
|
6663 |
-
color: #ffffff;
|
6664 |
-
text-align: center;
|
6665 |
-
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
|
6666 |
-
}
|
6667 |
-
|
6668 |
-
.factory-bootstrap-330 .carousel-caption .btn {
|
6669 |
-
text-shadow: none;
|
6670 |
-
}
|
6671 |
-
|
6672 |
-
@media screen and (min-width: 768px) {
|
6673 |
-
.carousel-control .glyphicons-chevron-left,
|
6674 |
-
.carousel-control .glyphicons-chevron-right,
|
6675 |
-
.carousel-control .icon-prev,
|
6676 |
-
.carousel-control .icon-next {
|
6677 |
-
width: 30px;
|
6678 |
-
height: 30px;
|
6679 |
-
margin-top: -15px;
|
6680 |
-
margin-left: -15px;
|
6681 |
-
font-size: 30px;
|
6682 |
-
}
|
6683 |
-
|
6684 |
-
.carousel-caption {
|
6685 |
-
right: 20%;
|
6686 |
-
left: 20%;
|
6687 |
-
padding-bottom: 30px;
|
6688 |
-
}
|
6689 |
-
|
6690 |
-
.carousel-indicators {
|
6691 |
-
bottom: 20px;
|
6692 |
-
}
|
6693 |
-
}
|
6694 |
-
|
6695 |
-
.factory-bootstrap-330 .clearfix:before,
|
6696 |
-
.factory-bootstrap-330 .clearfix:after {
|
6697 |
-
display: table;
|
6698 |
-
content: " ";
|
6699 |
-
}
|
6700 |
-
|
6701 |
-
.factory-bootstrap-330 .clearfix:after {
|
6702 |
-
clear: both;
|
6703 |
-
}
|
6704 |
-
|
6705 |
-
.factory-bootstrap-330 .center-block {
|
6706 |
-
display: block;
|
6707 |
-
margin-right: auto;
|
6708 |
-
margin-left: auto;
|
6709 |
-
}
|
6710 |
-
|
6711 |
-
.factory-bootstrap-330 .pull-right {
|
6712 |
-
float: right !important;
|
6713 |
-
}
|
6714 |
-
|
6715 |
-
.factory-bootstrap-330 .pull-left {
|
6716 |
-
float: left !important;
|
6717 |
-
}
|
6718 |
-
|
6719 |
-
.factory-bootstrap-330 .hide {
|
6720 |
-
display: none !important;
|
6721 |
-
}
|
6722 |
-
|
6723 |
-
.factory-bootstrap-330 .show {
|
6724 |
-
display: block !important;
|
6725 |
-
}
|
6726 |
-
|
6727 |
-
.factory-bootstrap-330 .invisible {
|
6728 |
-
visibility: hidden;
|
6729 |
-
}
|
6730 |
-
|
6731 |
-
.factory-bootstrap-330 .text-hide {
|
6732 |
-
font: 0/0 a;
|
6733 |
-
color: transparent;
|
6734 |
-
text-shadow: none;
|
6735 |
-
background-color: transparent;
|
6736 |
-
border: 0;
|
6737 |
-
}
|
6738 |
-
|
6739 |
-
.factory-bootstrap-330 .hidden {
|
6740 |
-
display: none !important;
|
6741 |
-
visibility: hidden !important;
|
6742 |
-
}
|
6743 |
-
|
6744 |
-
.factory-bootstrap-330 .affix {
|
6745 |
-
position: fixed;
|
6746 |
-
}
|
6747 |
-
|
6748 |
-
@-ms-viewport {
|
6749 |
-
width: device-width;
|
6750 |
-
}
|
6751 |
-
|
6752 |
-
.factory-bootstrap-330 .visible-xs,
|
6753 |
-
.factory-bootstrap-330 tr.visible-xs,
|
6754 |
-
.factory-bootstrap-330 th.visible-xs,
|
6755 |
-
.factory-bootstrap-330 td.visible-xs {
|
6756 |
-
display: none !important;
|
6757 |
-
}
|
6758 |
-
|
6759 |
-
@media (max-width: 767px) {
|
6760 |
-
.visible-xs {
|
6761 |
-
display: block !important;
|
6762 |
-
}
|
6763 |
-
|
6764 |
-
table.visible-xs {
|
6765 |
-
display: table;
|
6766 |
-
}
|
6767 |
-
|
6768 |
-
tr.visible-xs {
|
6769 |
-
display: table-row !important;
|
6770 |
-
}
|
6771 |
-
|
6772 |
-
th.visible-xs,
|
6773 |
-
td.visible-xs {
|
6774 |
-
display: table-cell !important;
|
6775 |
-
}
|
6776 |
-
}
|
6777 |
-
|
6778 |
-
@media (min-width: 768px) and (max-width: 991px) {
|
6779 |
-
.visible-xs.visible-sm {
|
6780 |
-
display: block !important;
|
6781 |
-
}
|
6782 |
-
|
6783 |
-
table.visible-xs.visible-sm {
|
6784 |
-
display: table;
|
6785 |
-
}
|
6786 |
-
|
6787 |
-
tr.visible-xs.visible-sm {
|
6788 |
-
display: table-row !important;
|
6789 |
-
}
|
6790 |
-
|
6791 |
-
th.visible-xs.visible-sm,
|
6792 |
-
td.visible-xs.visible-sm {
|
6793 |
-
display: table-cell !important;
|
6794 |
-
}
|
6795 |
-
}
|
6796 |
-
|
6797 |
-
@media (min-width: 992px) and (max-width: 1199px) {
|
6798 |
-
.visible-xs.visible-md {
|
6799 |
-
display: block !important;
|
6800 |
-
}
|
6801 |
-
|
6802 |
-
table.visible-xs.visible-md {
|
6803 |
-
display: table;
|
6804 |
-
}
|
6805 |
-
|
6806 |
-
tr.visible-xs.visible-md {
|
6807 |
-
display: table-row !important;
|
6808 |
-
}
|
6809 |
-
|
6810 |
-
th.visible-xs.visible-md,
|
6811 |
-
td.visible-xs.visible-md {
|
6812 |
-
display: table-cell !important;
|
6813 |
-
}
|
6814 |
-
}
|
6815 |
-
|
6816 |
-
@media (min-width: 1200px) {
|
6817 |
-
.visible-xs.visible-lg {
|
6818 |
-
display: block !important;
|
6819 |
-
}
|
6820 |
-
|
6821 |
-
table.visible-xs.visible-lg {
|
6822 |
-
display: table;
|
6823 |
-
}
|
6824 |
-
|
6825 |
-
tr.visible-xs.visible-lg {
|
6826 |
-
display: table-row !important;
|
6827 |
-
}
|
6828 |
-
|
6829 |
-
th.visible-xs.visible-lg,
|
6830 |
-
td.visible-xs.visible-lg {
|
6831 |
-
display: table-cell !important;
|
6832 |
-
}
|
6833 |
-
}
|
6834 |
-
|
6835 |
-
.factory-bootstrap-330 .visible-sm,
|
6836 |
-
.factory-bootstrap-330 tr.visible-sm,
|
6837 |
-
.factory-bootstrap-330 th.visible-sm,
|
6838 |
-
.factory-bootstrap-330 td.visible-sm {
|
6839 |
-
display: none !important;
|
6840 |
-
}
|
6841 |
-
|
6842 |
-
@media (max-width: 767px) {
|
6843 |
-
.visible-sm.visible-xs {
|
6844 |
-
display: block !important;
|
6845 |
-
}
|
6846 |
-
|
6847 |
-
table.visible-sm.visible-xs {
|
6848 |
-
display: table;
|
6849 |
-
}
|
6850 |
-
|
6851 |
-
tr.visible-sm.visible-xs {
|
6852 |
-
display: table-row !important;
|
6853 |
-
}
|
6854 |
-
|
6855 |
-
th.visible-sm.visible-xs,
|
6856 |
-
td.visible-sm.visible-xs {
|
6857 |
-
display: table-cell !important;
|
6858 |
-
}
|
6859 |
-
}
|
6860 |
-
|
6861 |
-
@media (min-width: 768px) and (max-width: 991px) {
|
6862 |
-
.visible-sm {
|
6863 |
-
display: block !important;
|
6864 |
-
}
|
6865 |
-
|
6866 |
-
table.visible-sm {
|
6867 |
-
display: table;
|
6868 |
-
}
|
6869 |
-
|
6870 |
-
tr.visible-sm {
|
6871 |
-
display: table-row !important;
|
6872 |
-
}
|
6873 |
-
|
6874 |
-
th.visible-sm,
|
6875 |
-
td.visible-sm {
|
6876 |
-
display: table-cell !important;
|
6877 |
-
}
|
6878 |
-
}
|
6879 |
-
|
6880 |
-
@media (min-width: 992px) and (max-width: 1199px) {
|
6881 |
-
.visible-sm.visible-md {
|
6882 |
-
display: block !important;
|
6883 |
-
}
|
6884 |
-
|
6885 |
-
table.visible-sm.visible-md {
|
6886 |
-
display: table;
|
6887 |
-
}
|
6888 |
-
|
6889 |
-
tr.visible-sm.visible-md {
|
6890 |
-
display: table-row !important;
|
6891 |
-
}
|
6892 |
-
|
6893 |
-
th.visible-sm.visible-md,
|
6894 |
-
td.visible-sm.visible-md {
|
6895 |
-
display: table-cell !important;
|
6896 |
-
}
|
6897 |
-
}
|
6898 |
-
|
6899 |
-
@media (min-width: 1200px) {
|
6900 |
-
.visible-sm.visible-lg {
|
6901 |
-
display: block !important;
|
6902 |
-
}
|
6903 |
-
|
6904 |
-
table.visible-sm.visible-lg {
|
6905 |
-
display: table;
|
6906 |
-
}
|
6907 |
-
|
6908 |
-
tr.visible-sm.visible-lg {
|
6909 |
-
display: table-row !important;
|
6910 |
-
}
|
6911 |
-
|
6912 |
-
th.visible-sm.visible-lg,
|
6913 |
-
td.visible-sm.visible-lg {
|
6914 |
-
display: table-cell !important;
|
6915 |
-
}
|
6916 |
-
}
|
6917 |
-
|
6918 |
-
.factory-bootstrap-330 .visible-md,
|
6919 |
-
.factory-bootstrap-330 tr.visible-md,
|
6920 |
-
.factory-bootstrap-330 th.visible-md,
|
6921 |
-
.factory-bootstrap-330 td.visible-md {
|
6922 |
-
display: none !important;
|
6923 |
-
}
|
6924 |
-
|
6925 |
-
@media (max-width: 767px) {
|
6926 |
-
.visible-md.visible-xs {
|
6927 |
-
display: block !important;
|
6928 |
-
}
|
6929 |
-
|
6930 |
-
table.visible-md.visible-xs {
|
6931 |
-
display: table;
|
6932 |
-
}
|
6933 |
-
|
6934 |
-
tr.visible-md.visible-xs {
|
6935 |
-
display: table-row !important;
|
6936 |
-
}
|
6937 |
-
|
6938 |
-
th.visible-md.visible-xs,
|
6939 |
-
td.visible-md.visible-xs {
|
6940 |
-
display: table-cell !important;
|
6941 |
-
}
|
6942 |
-
}
|
6943 |
-
|
6944 |
-
@media (min-width: 768px) and (max-width: 991px) {
|
6945 |
-
.visible-md.visible-sm {
|
6946 |
-
display: block !important;
|
6947 |
-
}
|
6948 |
-
|
6949 |
-
table.visible-md.visible-sm {
|
6950 |
-
display: table;
|
6951 |
-
}
|
6952 |
-
|
6953 |
-
tr.visible-md.visible-sm {
|
6954 |
-
display: table-row !important;
|
6955 |
-
}
|
6956 |
-
|
6957 |
-
th.visible-md.visible-sm,
|
6958 |
-
td.visible-md.visible-sm {
|
6959 |
-
display: table-cell !important;
|
6960 |
-
}
|
6961 |
-
}
|
6962 |
-
|
6963 |
-
@media (min-width: 992px) and (max-width: 1199px) {
|
6964 |
-
.visible-md {
|
6965 |
-
display: block !important;
|
6966 |
-
}
|
6967 |
-
|
6968 |
-
table.visible-md {
|
6969 |
-
display: table;
|
6970 |
-
}
|
6971 |
-
|
6972 |
-
tr.visible-md {
|
6973 |
-
display: table-row !important;
|
6974 |
-
}
|
6975 |
-
|
6976 |
-
th.visible-md,
|
6977 |
-
td.visible-md {
|
6978 |
-
display: table-cell !important;
|
6979 |
-
}
|
6980 |
-
}
|
6981 |
-
|
6982 |
-
@media (min-width: 1200px) {
|
6983 |
-
.visible-md.visible-lg {
|
6984 |
-
display: block !important;
|
6985 |
-
}
|
6986 |
-
|
6987 |
-
table.visible-md.visible-lg {
|
6988 |
-
display: table;
|
6989 |
-
}
|
6990 |
-
|
6991 |
-
tr.visible-md.visible-lg {
|
6992 |
-
display: table-row !important;
|
6993 |
-
}
|
6994 |
-
|
6995 |
-
th.visible-md.visible-lg,
|
6996 |
-
td.visible-md.visible-lg {
|
6997 |
-
display: table-cell !important;
|
6998 |
-
}
|
6999 |
-
}
|
7000 |
-
|
7001 |
-
.factory-bootstrap-330 .visible-lg,
|
7002 |
-
.factory-bootstrap-330 tr.visible-lg,
|
7003 |
-
.factory-bootstrap-330 th.visible-lg,
|
7004 |
-
.factory-bootstrap-330 td.visible-lg {
|
7005 |
-
display: none !important;
|
7006 |
-
}
|
7007 |
-
|
7008 |
-
@media (max-width: 767px) {
|
7009 |
-
.visible-lg.visible-xs {
|
7010 |
-
display: block !important;
|
7011 |
-
}
|
7012 |
-
|
7013 |
-
table.visible-lg.visible-xs {
|
7014 |
-
display: table;
|
7015 |
-
}
|
7016 |
-
|
7017 |
-
tr.visible-lg.visible-xs {
|
7018 |
-
display: table-row !important;
|
7019 |
-
}
|
7020 |
-
|
7021 |
-
th.visible-lg.visible-xs,
|
7022 |
-
td.visible-lg.visible-xs {
|
7023 |
-
display: table-cell !important;
|
7024 |
-
}
|
7025 |
-
}
|
7026 |
-
|
7027 |
-
@media (min-width: 768px) and (max-width: 991px) {
|
7028 |
-
.visible-lg.visible-sm {
|
7029 |
-
display: block !important;
|
7030 |
-
}
|
7031 |
-
|
7032 |
-
table.visible-lg.visible-sm {
|
7033 |
-
display: table;
|
7034 |
-
}
|
7035 |
-
|
7036 |
-
tr.visible-lg.visible-sm {
|
7037 |
-
display: table-row !important;
|
7038 |
-
}
|
7039 |
-
|
7040 |
-
th.visible-lg.visible-sm,
|
7041 |
-
td.visible-lg.visible-sm {
|
7042 |
-
display: table-cell !important;
|
7043 |
-
}
|
7044 |
-
}
|
7045 |
-
|
7046 |
-
@media (min-width: 992px) and (max-width: 1199px) {
|
7047 |
-
.visible-lg.visible-md {
|
7048 |
-
display: block !important;
|
7049 |
-
}
|
7050 |
-
|
7051 |
-
table.visible-lg.visible-md {
|
7052 |
-
display: table;
|
7053 |
-
}
|
7054 |
-
|
7055 |
-
tr.visible-lg.visible-md {
|
7056 |
-
display: table-row !important;
|
7057 |
-
}
|
7058 |
-
|
7059 |
-
th.visible-lg.visible-md,
|
7060 |
-
td.visible-lg.visible-md {
|
7061 |
-
display: table-cell !important;
|
7062 |
-
}
|
7063 |
-
}
|
7064 |
-
|
7065 |
-
@media (min-width: 1200px) {
|
7066 |
-
.visible-lg {
|
7067 |
-
display: block !important;
|
7068 |
-
}
|
7069 |
-
|
7070 |
-
table.visible-lg {
|
7071 |
-
display: table;
|
7072 |
-
}
|
7073 |
-
|
7074 |
-
tr.visible-lg {
|
7075 |
-
display: table-row !important;
|
7076 |
-
}
|
7077 |
-
|
7078 |
-
th.visible-lg,
|
7079 |
-
td.visible-lg {
|
7080 |
-
display: table-cell !important;
|
7081 |
-
}
|
7082 |
-
}
|
7083 |
-
|
7084 |
-
.factory-bootstrap-330 .hidden-xs {
|
7085 |
-
display: block !important;
|
7086 |
-
}
|
7087 |
-
|
7088 |
-
.factory-bootstrap-330 table.hidden-xs {
|
7089 |
-
display: table;
|
7090 |
-
}
|
7091 |
-
|
7092 |
-
.factory-bootstrap-330 tr.hidden-xs {
|
7093 |
-
display: table-row !important;
|
7094 |
-
}
|
7095 |
-
|
7096 |
-
.factory-bootstrap-330 th.hidden-xs,
|
7097 |
-
.factory-bootstrap-330 td.hidden-xs {
|
7098 |
-
display: table-cell !important;
|
7099 |
-
}
|
7100 |
-
|
7101 |
-
@media (max-width: 767px) {
|
7102 |
-
.hidden-xs,
|
7103 |
-
tr.hidden-xs,
|
7104 |
-
th.hidden-xs,
|
7105 |
-
td.hidden-xs {
|
7106 |
-
display: none !important;
|
7107 |
-
}
|
7108 |
-
}
|
7109 |
-
|
7110 |
-
@media (min-width: 768px) and (max-width: 991px) {
|
7111 |
-
.hidden-xs.hidden-sm,
|
7112 |
-
tr.hidden-xs.hidden-sm,
|
7113 |
-
th.hidden-xs.hidden-sm,
|
7114 |
-
td.hidden-xs.hidden-sm {
|
7115 |
-
display: none !important;
|
7116 |
-
}
|
7117 |
-
}
|
7118 |
-
|
7119 |
-
@media (min-width: 992px) and (max-width: 1199px) {
|
7120 |
-
.hidden-xs.hidden-md,
|
7121 |
-
tr.hidden-xs.hidden-md,
|
7122 |
-
th.hidden-xs.hidden-md,
|
7123 |
-
td.hidden-xs.hidden-md {
|
7124 |
-
display: none !important;
|
7125 |
-
}
|
7126 |
-
}
|
7127 |
-
|
7128 |
-
@media (min-width: 1200px) {
|
7129 |
-
.hidden-xs.hidden-lg,
|
7130 |
-
tr.hidden-xs.hidden-lg,
|
7131 |
-
th.hidden-xs.hidden-lg,
|
7132 |
-
td.hidden-xs.hidden-lg {
|
7133 |
-
display: none !important;
|
7134 |
-
}
|
7135 |
-
}
|
7136 |
-
|
7137 |
-
.factory-bootstrap-330 .hidden-sm {
|
7138 |
-
display: block !important;
|
7139 |
-
}
|
7140 |
-
|
7141 |
-
.factory-bootstrap-330 table.hidden-sm {
|
7142 |
-
display: table;
|
7143 |
-
}
|
7144 |
-
|
7145 |
-
.factory-bootstrap-330 tr.hidden-sm {
|
7146 |
-
display: table-row !important;
|
7147 |
-
}
|
7148 |
-
|
7149 |
-
.factory-bootstrap-330 th.hidden-sm,
|
7150 |
-
.factory-bootstrap-330 td.hidden-sm {
|
7151 |
-
display: table-cell !important;
|
7152 |
-
}
|
7153 |
-
|
7154 |
-
@media (max-width: 767px) {
|
7155 |
-
.hidden-sm.hidden-xs,
|
7156 |
-
tr.hidden-sm.hidden-xs,
|
7157 |
-
th.hidden-sm.hidden-xs,
|
7158 |
-
td.hidden-sm.hidden-xs {
|
7159 |
-
display: none !important;
|
7160 |
-
}
|
7161 |
-
}
|
7162 |
-
|
7163 |
-
@media (min-width: 768px) and (max-width: 991px) {
|
7164 |
-
.hidden-sm,
|
7165 |
-
tr.hidden-sm,
|
7166 |
-
th.hidden-sm,
|
7167 |
-
td.hidden-sm {
|
7168 |
-
display: none !important;
|
7169 |
-
}
|
7170 |
-
}
|
7171 |
-
|
7172 |
-
@media (min-width: 992px) and (max-width: 1199px) {
|
7173 |
-
.hidden-sm.hidden-md,
|
7174 |
-
tr.hidden-sm.hidden-md,
|
7175 |
-
th.hidden-sm.hidden-md,
|
7176 |
-
td.hidden-sm.hidden-md {
|
7177 |
-
display: none !important;
|
7178 |
-
}
|
7179 |
-
}
|
7180 |
-
|
7181 |
-
@media (min-width: 1200px) {
|
7182 |
-
.hidden-sm.hidden-lg,
|
7183 |
-
tr.hidden-sm.hidden-lg,
|
7184 |
-
th.hidden-sm.hidden-lg,
|
7185 |
-
td.hidden-sm.hidden-lg {
|
7186 |
-
display: none !important;
|
7187 |
-
}
|
7188 |
-
}
|
7189 |
-
|
7190 |
-
.factory-bootstrap-330 .hidden-md {
|
7191 |
-
display: block !important;
|
7192 |
-
}
|
7193 |
-
|
7194 |
-
.factory-bootstrap-330 table.hidden-md {
|
7195 |
-
display: table;
|
7196 |
-
}
|
7197 |
-
|
7198 |
-
.factory-bootstrap-330 tr.hidden-md {
|
7199 |
-
display: table-row !important;
|
7200 |
-
}
|
7201 |
-
|
7202 |
-
.factory-bootstrap-330 th.hidden-md,
|
7203 |
-
.factory-bootstrap-330 td.hidden-md {
|
7204 |
-
display: table-cell !important;
|
7205 |
-
}
|
7206 |
-
|
7207 |
-
@media (max-width: 767px) {
|
7208 |
-
.hidden-md.hidden-xs,
|
7209 |
-
tr.hidden-md.hidden-xs,
|
7210 |
-
th.hidden-md.hidden-xs,
|
7211 |
-
td.hidden-md.hidden-xs {
|
7212 |
-
display: none !important;
|
7213 |
-
}
|
7214 |
-
}
|
7215 |
-
|
7216 |
-
@media (min-width: 768px) and (max-width: 991px) {
|
7217 |
-
.hidden-md.hidden-sm,
|
7218 |
-
tr.hidden-md.hidden-sm,
|
7219 |
-
th.hidden-md.hidden-sm,
|
7220 |
-
td.hidden-md.hidden-sm {
|
7221 |
-
display: none !important;
|
7222 |
-
}
|
7223 |
-
}
|
7224 |
-
|
7225 |
-
@media (min-width: 992px) and (max-width: 1199px) {
|
7226 |
-
.hidden-md,
|
7227 |
-
tr.hidden-md,
|
7228 |
-
th.hidden-md,
|
7229 |
-
td.hidden-md {
|
7230 |
-
display: none !important;
|
7231 |
-
}
|
7232 |
-
}
|
7233 |
-
|
7234 |
-
@media (min-width: 1200px) {
|
7235 |
-
.hidden-md.hidden-lg,
|
7236 |
-
tr.hidden-md.hidden-lg,
|
7237 |
-
th.hidden-md.hidden-lg,
|
7238 |
-
td.hidden-md.hidden-lg {
|
7239 |
-
display: none !important;
|
7240 |
-
}
|
7241 |
-
}
|
7242 |
-
|
7243 |
-
.factory-bootstrap-330 .hidden-lg {
|
7244 |
-
display: block !important;
|
7245 |
-
}
|
7246 |
-
|
7247 |
-
.factory-bootstrap-330 table.hidden-lg {
|
7248 |
-
display: table;
|
7249 |
-
}
|
7250 |
-
|
7251 |
-
.factory-bootstrap-330 tr.hidden-lg {
|
7252 |
-
display: table-row !important;
|
7253 |
-
}
|
7254 |
-
|
7255 |
-
.factory-bootstrap-330 th.hidden-lg,
|
7256 |
-
.factory-bootstrap-330 td.hidden-lg {
|
7257 |
-
display: table-cell !important;
|
7258 |
-
}
|
7259 |
-
|
7260 |
-
@media (max-width: 767px) {
|
7261 |
-
.factory-bootstrap-330 .hidden-lg.hidden-xs,
|
7262 |
-
.factory-bootstrap-330 tr.hidden-lg.hidden-xs,
|
7263 |
-
.factory-bootstrap-330 th.hidden-lg.hidden-xs,
|
7264 |
-
.factory-bootstrap-330 td.hidden-lg.hidden-xs {
|
7265 |
-
display: none !important;
|
7266 |
-
}
|
7267 |
-
}
|
7268 |
-
|
7269 |
-
@media (min-width: 768px) and (max-width: 991px) {
|
7270 |
-
.factory-bootstrap-330 .hidden-lg.hidden-sm,
|
7271 |
-
.factory-bootstrap-330 tr.hidden-lg.hidden-sm,
|
7272 |
-
.factory-bootstrap-330 th.hidden-lg.hidden-sm,
|
7273 |
-
.factory-bootstrap-330 td.hidden-lg.hidden-sm {
|
7274 |
-
display: none !important;
|
7275 |
-
}
|
7276 |
-
}
|
7277 |
-
|
7278 |
-
@media (min-width: 992px) and (max-width: 1199px) {
|
7279 |
-
.factory-bootstrap-330 .hidden-lg.hidden-md,
|
7280 |
-
.factory-bootstrap-330 tr.hidden-lg.hidden-md,
|
7281 |
-
.factory-bootstrap-330 th.hidden-lg.hidden-md,
|
7282 |
-
.factory-bootstrap-330 td.hidden-lg.hidden-md {
|
7283 |
-
display: none !important;
|
7284 |
-
}
|
7285 |
-
}
|
7286 |
-
|
7287 |
-
@media (min-width: 1200px) {
|
7288 |
-
.factory-bootstrap-330 .hidden-lg,
|
7289 |
-
.factory-bootstrap-330 tr.hidden-lg,
|
7290 |
-
.factory-bootstrap-330 th.hidden-lg,
|
7291 |
-
.factory-bootstrap-330 td.hidden-lg {
|
7292 |
-
display: none !important;
|
7293 |
-
}
|
7294 |
-
}
|
7295 |
-
|
7296 |
-
.factory-bootstrap-330 .visible-print,
|
7297 |
-
.factory-bootstrap-330 tr.visible-print,
|
7298 |
-
.factory-bootstrap-330 th.visible-print,
|
7299 |
-
.factory-bootstrap-330 td.visible-print {
|
7300 |
-
display: none !important;
|
7301 |
-
}
|
7302 |
-
|
7303 |
-
@media print {
|
7304 |
-
.factory-bootstrap-330 .visible-print {
|
7305 |
-
display: block !important;
|
7306 |
-
}
|
7307 |
-
|
7308 |
-
.factory-bootstrap-330 table.visible-print {
|
7309 |
-
display: table;
|
7310 |
-
}
|
7311 |
-
|
7312 |
-
.factory-bootstrap-330 tr.visible-print {
|
7313 |
-
display: table-row !important;
|
7314 |
-
}
|
7315 |
-
|
7316 |
-
.factory-bootstrap-330 th.visible-print,
|
7317 |
-
.factory-bootstrap-330 td.visible-print {
|
7318 |
-
display: table-cell !important;
|
7319 |
-
}
|
7320 |
-
|
7321 |
-
.factory-bootstrap-330 .hidden-print,
|
7322 |
-
.factory-bootstrap-330 tr.hidden-print,
|
7323 |
-
.factory-bootstrap-330 th.hidden-print,
|
7324 |
-
.factory-bootstrap-330 td.hidden-print {
|
7325 |
-
display: none !important;
|
7326 |
-
}
|
7327 |
-
}
|
7328 |
-
|
7329 |
-
/*!
|
7330 |
-
* Factory Default Bootstrap Theme
|
7331 |
-
*
|
7332 |
-
* The code is based on Bootstrap v2.1.1
|
7333 |
-
*
|
7334 |
-
* Bootstrap v3.0.3 (http://getbootstrap.com)
|
7335 |
-
* Copyright 2013 Twitter, Inc.
|
7336 |
-
* Licensed under http://www.apache.org/licenses/LICENSE-2.0
|
7337 |
-
*
|
7338 |
-
* @author Paul Kashtanoff <paul@byonepress.com>
|
7339 |
-
* @copyright (c) 2013, OnePress Ltd
|
7340 |
-
*
|
7341 |
-
* @package factory-bootstrap
|
7342 |
-
* @since 1.0.0
|
7343 |
-
*/
|
7344 |
-
|
7345 |
-
.factory-bootstrap-330 .btn-default,
|
7346 |
-
.factory-bootstrap-330 .btn-primary,
|
7347 |
-
.factory-bootstrap-330 .btn-success,
|
7348 |
-
.factory-bootstrap-330 .btn-info,
|
7349 |
-
.factory-bootstrap-330 .btn-warning,
|
7350 |
-
.factory-bootstrap-330 .btn-danger {
|
7351 |
-
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
|
7352 |
-
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
|
7353 |
-
}
|
7354 |
-
|
7355 |
-
.factory-bootstrap-330 .btn-default:active,
|
7356 |
-
.factory-bootstrap-330 .btn-primary:active,
|
7357 |
-
.factory-bootstrap-330 .btn-success:active,
|
7358 |
-
.factory-bootstrap-330 .btn-info:active,
|
7359 |
-
.factory-bootstrap-330 .btn-warning:active,
|
7360 |
-
.factory-bootstrap-330 .btn-danger:active,
|
7361 |
-
.factory-bootstrap-330 .btn-default.active,
|
7362 |
-
.factory-bootstrap-330 .btn-primary.active,
|
7363 |
-
.factory-bootstrap-330 .btn-success.active,
|
7364 |
-
.factory-bootstrap-330 .btn-info.active,
|
7365 |
-
.factory-bootstrap-330 .btn-warning.active,
|
7366 |
-
.factory-bootstrap-330 .btn-danger.active {
|
7367 |
-
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1);
|
7368 |
-
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1);
|
7369 |
-
}
|
7370 |
-
|
7371 |
-
.factory-bootstrap-330 .btn:active,
|
7372 |
-
.factory-bootstrap-330 .btn.active {
|
7373 |
-
background-image: none;
|
7374 |
-
}
|
7375 |
-
|
7376 |
-
.factory-bootstrap-330 .btn-default {
|
7377 |
-
background: #fafafa;
|
7378 |
-
color: #555;
|
7379 |
-
border-color: #ccc;
|
7380 |
-
background: #f7f7f7;
|
7381 |
-
-webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba(0, 0, 0, .08);
|
7382 |
-
box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba(0, 0, 0, .08);
|
7383 |
-
vertical-align: top;
|
7384 |
-
}
|
7385 |
-
|
7386 |
-
.factory-bootstrap-330 .btn-default:active,
|
7387 |
-
.factory-bootstrap-330 .btn-default.active {
|
7388 |
-
background-color: #fff;
|
7389 |
-
border-color: #dbdbdb;
|
7390 |
-
}
|
7391 |
-
|
7392 |
-
.factory-bootstrap-330 .btn-gold {
|
7393 |
-
font-weight: bold;
|
7394 |
-
padding: 7px 12px;
|
7395 |
-
cursor: pointer;
|
7396 |
-
line-height: 16px;
|
7397 |
-
display: inline-block;
|
7398 |
-
border-radius: 2px;
|
7399 |
-
-moz-border-radius: 2px; /*gecko - mozilla*/
|
7400 |
-
-webkit-border-radius: 2px; /*new webkit - Chrome and Safari*/
|
7401 |
-
box-shadow: #e3e3e3 0 1px 1px;
|
7402 |
-
-moz-box-shadow: 0px 1px 1px rgba(000, 000, 000, 0.1), inset 0px 1px 1px rgba(255, 255, 255, 0.7);
|
7403 |
-
-webkit-box-shadow: 0px 1px 1px rgba(000, 000, 000, 0.1), inset 0px 1px 1px rgba(255, 255, 255, 0.7);
|
7404 |
-
text-shadow: 1px 1px 0px #ffe8b2;
|
7405 |
-
color: #7c5d1b;
|
7406 |
-
border: 1px solid #d6a437;
|
7407 |
-
background: #feeb80; /*fallback for non-CSS3 browsers*/
|
7408 |
-
}
|
7409 |
-
|
7410 |
-
.factory-bootstrap-330 .btn-gold:hover,
|
7411 |
-
.factory-bootstrap-330 .btn-gold:focus {
|
7412 |
-
background: #fef0a1;
|
7413 |
-
}
|
7414 |
-
|
7415 |
-
.factory-bootstrap-330 .btn-gold:active,
|
7416 |
-
.factory-bootstrap-330 .btn-gold.active {
|
7417 |
-
background: #fef0a1;
|
7418 |
-
-webkit-box-shadow: inset 0 3px 8px 0 #f8ba36;
|
7419 |
-
box-shadow: inset 0 3px 8px 0 #f8ba36;
|
7420 |
-
}
|
7421 |
-
|
7422 |
-
.factory-bootstrap-330 .btn-primary {
|
7423 |
-
background: #2ea2cc;
|
7424 |
-
border-color: #0074a2;
|
7425 |
-
-webkit-box-shadow: inset 0 1px 0 rgba(120, 200, 230, .5), 0 1px 0 rgba(0, 0, 0, .15);
|
7426 |
-
box-shadow: inset 0 1px 0 rgba(120, 200, 230, .5), 0 1px 0 rgba(0, 0, 0, .15);
|
7427 |
-
color: #fff;
|
7428 |
-
text-decoration: none;
|
7429 |
-
}
|
7430 |
-
|
7431 |
-
.factory-bootstrap-330 .btn-primary:hover,
|
7432 |
-
.factory-bootstrap-330 .btn-primary:focus {
|
7433 |
-
background: #1e8cbe;
|
7434 |
-
border-color: #0074a2;
|
7435 |
-
-webkit-box-shadow: inset 0 1px 0 rgba(120, 200, 230, .6);
|
7436 |
-
box-shadow: inset 0 1px 0 rgba(120, 200, 230, .6);
|
7437 |
-
color: #fff;
|
7438 |
-
}
|
7439 |
-
|
7440 |
-
.factory-bootstrap-330 .btn-primary:active,
|
7441 |
-
.factory-bootstrap-330 .btn-primary.active {
|
7442 |
-
background-color: #2d6ca2;
|
7443 |
-
border-color: #2b669a;
|
7444 |
-
}
|
7445 |
-
|
7446 |
-
.factory-bootstrap-330 .btn-success {
|
7447 |
-
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
|
7448 |
-
background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
|
7449 |
-
background-repeat: repeat-x;
|
7450 |
-
border-color: #3e8f3e;
|
7451 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
|
7452 |
-
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
7453 |
-
}
|
7454 |
-
|
7455 |
-
.factory-bootstrap-330 .btn-success:hover,
|
7456 |
-
.factory-bootstrap-330 .btn-success:focus {
|
7457 |
-
background-color: #419641;
|
7458 |
-
background-position: 0 -15px;
|
7459 |
-
}
|
7460 |
-
|
7461 |
-
.factory-bootstrap-330 .btn-success:active,
|
7462 |
-
.factory-bootstrap-330 .btn-success.active {
|
7463 |
-
background-color: #419641;
|
7464 |
-
border-color: #3e8f3e;
|
7465 |
-
}
|
7466 |
-
|
7467 |
-
.factory-bootstrap-330 .btn-warning {
|
7468 |
-
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
|
7469 |
-
background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
|
7470 |
-
background-repeat: repeat-x;
|
7471 |
-
border-color: #e38d13;
|
7472 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
|
7473 |
-
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
7474 |
-
}
|
7475 |
-
|
7476 |
-
.factory-bootstrap-330 .btn-warning:hover,
|
7477 |
-
.factory-bootstrap-330 .btn-warning:focus {
|
7478 |
-
background-color: #eb9316;
|
7479 |
-
background-position: 0 -15px;
|
7480 |
-
}
|
7481 |
-
|
7482 |
-
.factory-bootstrap-330 .btn-warning:active,
|
7483 |
-
.factory-bootstrap-330 .btn-warning.active {
|
7484 |
-
background-color: #eb9316;
|
7485 |
-
border-color: #e38d13;
|
7486 |
-
}
|
7487 |
-
|
7488 |
-
.factory-bootstrap-330 .btn-danger {
|
7489 |
-
color: #ffffff;
|
7490 |
-
background: #d9534f;
|
7491 |
-
border-color: #d43f3a;
|
7492 |
-
}
|
7493 |
-
|
7494 |
-
.factory-bootstrap-330 .btn-danger:hover,
|
7495 |
-
.factory-bootstrap-330 .btn-danger:focus,
|
7496 |
-
.factory-bootstrap-330 .btn-danger:active,
|
7497 |
-
.factory-bootstrap-330 .btn-danger.active,
|
7498 |
-
.factory-bootstrap-330 .open .dropdown-toggle.btn-danger {
|
7499 |
-
color: #ffffff;
|
7500 |
-
background-color: #d2322d;
|
7501 |
-
border-color: #ac2925;
|
7502 |
-
}
|
7503 |
-
|
7504 |
-
.factory-bootstrap-330 .btn-info {
|
7505 |
-
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
|
7506 |
-
background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
|
7507 |
-
background-repeat: repeat-x;
|
7508 |
-
border-color: #28a4c9;
|
7509 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
|
7510 |
-
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
7511 |
-
}
|
7512 |
-
|
7513 |
-
.factory-bootstrap-330 .btn-info:hover,
|
7514 |
-
.factory-bootstrap-330 .btn-info:focus {
|
7515 |
-
background-color: #2aabd2;
|
7516 |
-
background-position: 0 -15px;
|
7517 |
-
}
|
7518 |
-
|
7519 |
-
.factory-bootstrap-330 .btn-info:active,
|
7520 |
-
.factory-bootstrap-330 .btn-info.active {
|
7521 |
-
background-color: #2aabd2;
|
7522 |
-
border-color: #28a4c9;
|
7523 |
-
}
|
7524 |
-
|
7525 |
-
.factory-bootstrap-330 .thumbnail,
|
7526 |
-
.factory-bootstrap-330 .img-thumbnail {
|
7527 |
-
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
|
7528 |
-
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
|
7529 |
-
}
|
7530 |
-
|
7531 |
-
.factory-bootstrap-330 .dropdown-menu > li > a:hover,
|
7532 |
-
.factory-bootstrap-330 .dropdown-menu > li > a:focus {
|
7533 |
-
background-color: #e8e8e8;
|
7534 |
-
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
7535 |
-
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
|
7536 |
-
background-repeat: repeat-x;
|
7537 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
|
7538 |
-
}
|
7539 |
-
|
7540 |
-
.factory-bootstrap-330 .dropdown-menu > .active > a,
|
7541 |
-
.factory-bootstrap-330 .dropdown-menu > .active > a:hover,
|
7542 |
-
.factory-bootstrap-330 .dropdown-menu > .active > a:focus {
|
7543 |
-
background-color: #357ebd;
|
7544 |
-
background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
|
7545 |
-
background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
|
7546 |
-
background-repeat: repeat-x;
|
7547 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
|
7548 |
-
}
|
7549 |
-
|
7550 |
-
.factory-bootstrap-330 .navbar-default {
|
7551 |
-
background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
|
7552 |
-
background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);
|
7553 |
-
background-repeat: repeat-x;
|
7554 |
-
border-radius: 4px;
|
7555 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
|
7556 |
-
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
7557 |
-
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
|
7558 |
-
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
|
7559 |
-
}
|
7560 |
-
|
7561 |
-
.factory-bootstrap-330 .navbar-default .navbar-nav > .active > a {
|
7562 |
-
background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);
|
7563 |
-
background-image: linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%);
|
7564 |
-
background-repeat: repeat-x;
|
7565 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);
|
7566 |
-
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
|
7567 |
-
box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
|
7568 |
-
}
|
7569 |
-
|
7570 |
-
.factory-bootstrap-330 .navbar-brand,
|
7571 |
-
.factory-bootstrap-330 .navbar-nav > li > a {
|
7572 |
-
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);
|
7573 |
-
}
|
7574 |
-
|
7575 |
-
.factory-bootstrap-330 .navbar-inverse {
|
7576 |
-
background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222222 100%);
|
7577 |
-
background-image: linear-gradient(to bottom, #3c3c3c 0%, #222222 100%);
|
7578 |
-
background-repeat: repeat-x;
|
7579 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
|
7580 |
-
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
7581 |
-
}
|
7582 |
-
|
7583 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-nav > .active > a {
|
7584 |
-
background-image: -webkit-linear-gradient(top, #222222 0%, #282828 100%);
|
7585 |
-
background-image: linear-gradient(to bottom, #222222 0%, #282828 100%);
|
7586 |
-
background-repeat: repeat-x;
|
7587 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);
|
7588 |
-
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
|
7589 |
-
box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
|
7590 |
-
}
|
7591 |
-
|
7592 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-brand,
|
7593 |
-
.factory-bootstrap-330 .navbar-inverse .navbar-nav > li > a {
|
7594 |
-
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
7595 |
-
}
|
7596 |
-
|
7597 |
-
.factory-bootstrap-330 .navbar-static-top,
|
7598 |
-
.factory-bootstrap-330 .navbar-fixed-top,
|
7599 |
-
.factory-bootstrap-330 .navbar-fixed-bottom {
|
7600 |
-
border-radius: 0;
|
7601 |
-
}
|
7602 |
-
|
7603 |
-
.factory-bootstrap-330 .alert {
|
7604 |
-
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);
|
7605 |
-
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
|
7606 |
-
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
|
7607 |
-
}
|
7608 |
-
|
7609 |
-
.factory-bootstrap-330 .alert .actions {
|
7610 |
-
padding-top: 10px;
|
7611 |
-
}
|
7612 |
-
|
7613 |
-
.factory-bootstrap-330 .alert-success {
|
7614 |
-
color: #3c763d;
|
7615 |
-
background-color: #dff0d8;
|
7616 |
-
border-bottom: 2px solid #c8e5bc;
|
7617 |
-
}
|
7618 |
-
|
7619 |
-
.factory-bootstrap-330 .alert-info {
|
7620 |
-
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
|
7621 |
-
background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
|
7622 |
-
background-repeat: repeat-x;
|
7623 |
-
border-color: #9acfea;
|
7624 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
|
7625 |
-
}
|
7626 |
-
|
7627 |
-
.factory-bootstrap-330 .alert {
|
7628 |
-
text-shadow: none;
|
7629 |
-
box-shadow: none;
|
7630 |
-
|
7631 |
-
margin: 0px;
|
7632 |
-
margin-top: 10px;
|
7633 |
-
margin-bottom: 10px;
|
7634 |
-
padding: 10px;
|
7635 |
-
}
|
7636 |
-
|
7637 |
-
.factory-bootstrap-330 .alert-warning,
|
7638 |
-
.factory-bootstrap-330 .alert-normal {
|
7639 |
-
background: #fcf8e3;
|
7640 |
-
border: 0px;
|
7641 |
-
color: #8a6d3b;
|
7642 |
-
border: 1px solid #b8823b;
|
7643 |
-
}
|
7644 |
-
|
7645 |
-
.factory-bootstrap-330 .alert-danger {
|
7646 |
-
background: #cf4944;
|
7647 |
-
color: #fff;
|
7648 |
-
border-bottom: 2px solid #b23e3a;
|
7649 |
-
}
|
7650 |
-
|
7651 |
-
.factory-bootstrap-330 .alert-error a:not(.btn),
|
7652 |
-
.factory-bootstrap-330 .alert-danger a:not(.btn) {
|
7653 |
-
color: #fff;
|
7654 |
-
}
|
7655 |
-
|
7656 |
-
.factory-bootstrap-330 .progress {
|
7657 |
-
background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
|
7658 |
-
background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
|
7659 |
-
background-repeat: repeat-x;
|
7660 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
|
7661 |
-
}
|
7662 |
-
|
7663 |
-
.factory-bootstrap-330 .progress-bar {
|
7664 |
-
background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%);
|
7665 |
-
background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%);
|
7666 |
-
background-repeat: repeat-x;
|
7667 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0);
|
7668 |
-
}
|
7669 |
-
|
7670 |
-
.factory-bootstrap-330 .progress-bar-success {
|
7671 |
-
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
|
7672 |
-
background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
|
7673 |
-
background-repeat: repeat-x;
|
7674 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
|
7675 |
-
}
|
7676 |
-
|
7677 |
-
.factory-bootstrap-330 .progress-bar-info {
|
7678 |
-
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
|
7679 |
-
background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
|
7680 |
-
background-repeat: repeat-x;
|
7681 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
|
7682 |
-
}
|
7683 |
-
|
7684 |
-
.factory-bootstrap-330 .progress-bar-warning {
|
7685 |
-
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
|
7686 |
-
background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
|
7687 |
-
background-repeat: repeat-x;
|
7688 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
|
7689 |
-
}
|
7690 |
-
|
7691 |
-
.factory-bootstrap-330 .progress-bar-danger {
|
7692 |
-
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
|
7693 |
-
background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
|
7694 |
-
background-repeat: repeat-x;
|
7695 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
|
7696 |
-
}
|
7697 |
-
|
7698 |
-
.factory-bootstrap-330 .list-group {
|
7699 |
-
border-radius: 4px;
|
7700 |
-
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
|
7701 |
-
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
|
7702 |
-
}
|
7703 |
-
|
7704 |
-
.factory-bootstrap-330 .list-group-item.active,
|
7705 |
-
.factory-bootstrap-330 .list-group-item.active:hover,
|
7706 |
-
.factory-bootstrap-330 .list-group-item.active:focus {
|
7707 |
-
text-shadow: 0 -1px 0 #3071a9;
|
7708 |
-
background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%);
|
7709 |
-
background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%);
|
7710 |
-
background-repeat: repeat-x;
|
7711 |
-
border-color: #3278b3;
|
7712 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);
|
7713 |
-
}
|
7714 |
-
|
7715 |
-
.factory-bootstrap-330 .panel {
|
7716 |
-
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
|
7717 |
-
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
|
7718 |
-
}
|
7719 |
-
|
7720 |
-
.factory-bootstrap-330 .panel-default > .panel-heading {
|
7721 |
-
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
7722 |
-
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
|
7723 |
-
background-repeat: repeat-x;
|
7724 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
|
7725 |
-
}
|
7726 |
-
|
7727 |
-
.factory-bootstrap-330 .panel-primary > .panel-heading {
|
7728 |
-
background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
|
7729 |
-
background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
|
7730 |
-
background-repeat: repeat-x;
|
7731 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
|
7732 |
-
}
|
7733 |
-
|
7734 |
-
.factory-bootstrap-330 .panel-success > .panel-heading {
|
7735 |
-
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
|
7736 |
-
background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
|
7737 |
-
background-repeat: repeat-x;
|
7738 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
|
7739 |
-
}
|
7740 |
-
|
7741 |
-
.factory-bootstrap-330 .panel-info > .panel-heading {
|
7742 |
-
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
|
7743 |
-
background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
|
7744 |
-
background-repeat: repeat-x;
|
7745 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
|
7746 |
-
}
|
7747 |
-
|
7748 |
-
.factory-bootstrap-330 .panel-warning > .panel-heading {
|
7749 |
-
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
|
7750 |
-
background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
|
7751 |
-
background-repeat: repeat-x;
|
7752 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
|
7753 |
-
}
|
7754 |
-
|
7755 |
-
.factory-bootstrap-330 .panel-danger > .panel-heading {
|
7756 |
-
background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
|
7757 |
-
background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
|
7758 |
-
background-repeat: repeat-x;
|
7759 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
|
7760 |
-
}
|
7761 |
-
|
7762 |
-
.factory-bootstrap-330 .well {
|
7763 |
-
background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
|
7764 |
-
background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
|
7765 |
-
background-repeat: repeat-x;
|
7766 |
-
border-color: #dcdcdc;
|
7767 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
|
7768 |
-
-webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
|
7769 |
-
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
|
7770 |
-
}
|
7771 |
-
|
7772 |
-
/**
|
7773 |
-
* Extra
|
7774 |
-
*/
|
7775 |
-
|
7776 |
-
.factory-bootstrap-330 .factory-after {
|
7777 |
-
margin-left: 7px;
|
7778 |
-
display: inline-block;
|
7779 |
-
}
|
7780 |
-
|
7781 |
-
.factory-bootstrap-330 .factory-hidden {
|
7782 |
-
display: none;
|
7783 |
-
}
|
7784 |
-
|
7785 |
-
.factory-bootstrap-330 .factory-ajax-loader {
|
7786 |
-
width: 25px;
|
7787 |
-
height: 25px;
|
7788 |
-
background: url("../assets/images/loader-sm-tr.gif")
|
7789 |
-
}
|
7790 |
-
|
7791 |
-
.factory-control-error {
|
7792 |
-
|
7793 |
-
background-color: rgba(0, 0, 0, 0.8);
|
7794 |
-
white-space: normal;
|
7795 |
-
z-index: 10;
|
7796 |
-
font-weight: normal;
|
7797 |
-
line-height: 150%;
|
7798 |
-
border-radius: 4px;
|
7799 |
-
color: #fff;
|
7800 |
-
font-size: 13px;
|
7801 |
-
margin-top: 5px;
|
7802 |
-
|
7803 |
-
padding: 4px 10px 3px 10px;
|
7804 |
-
max-width: 500px;
|
7805 |
-
display: inline-block;
|
7806 |
-
}
|
7807 |
-
|
7808 |
-
.factory-control-error i {
|
7809 |
-
margin: 0 7px 0 1px;
|
7810 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/bootstrap.datetimepicker.css
DELETED
@@ -1,432 +0,0 @@
|
|
1 |
-
/*!
|
2 |
-
* Datetimepicker for Bootstrap 3
|
3 |
-
* version : 4.17.47
|
4 |
-
* https://github.com/Eonasdan/bootstrap-datetimepicker/
|
5 |
-
*/
|
6 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget {
|
7 |
-
list-style: none;
|
8 |
-
}
|
9 |
-
|
10 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget.dropdown-menu {
|
11 |
-
display: block;
|
12 |
-
margin: 2px 0;
|
13 |
-
padding: 4px;
|
14 |
-
width: 19em;
|
15 |
-
}
|
16 |
-
|
17 |
-
@media (min-width: 768px) {
|
18 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {
|
19 |
-
width: 38em;
|
20 |
-
}
|
21 |
-
}
|
22 |
-
|
23 |
-
@media (min-width: 992px) {
|
24 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {
|
25 |
-
width: 38em;
|
26 |
-
}
|
27 |
-
}
|
28 |
-
|
29 |
-
@media (min-width: 1200px) {
|
30 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {
|
31 |
-
width: 38em;
|
32 |
-
}
|
33 |
-
}
|
34 |
-
|
35 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget.dropdown-menu:before,
|
36 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget.dropdown-menu:after {
|
37 |
-
content: '';
|
38 |
-
display: inline-block;
|
39 |
-
position: absolute;
|
40 |
-
}
|
41 |
-
|
42 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget.dropdown-menu.bottom:before {
|
43 |
-
border-left: 7px solid transparent;
|
44 |
-
border-right: 7px solid transparent;
|
45 |
-
border-bottom: 7px solid #ccc;
|
46 |
-
border-bottom-color: rgba(0, 0, 0, 0.2);
|
47 |
-
top: -7px;
|
48 |
-
left: 7px;
|
49 |
-
}
|
50 |
-
|
51 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget.dropdown-menu.bottom:after {
|
52 |
-
border-left: 6px solid transparent;
|
53 |
-
border-right: 6px solid transparent;
|
54 |
-
border-bottom: 6px solid white;
|
55 |
-
top: -6px;
|
56 |
-
left: 8px;
|
57 |
-
}
|
58 |
-
|
59 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget.dropdown-menu.top:before {
|
60 |
-
border-left: 7px solid transparent;
|
61 |
-
border-right: 7px solid transparent;
|
62 |
-
border-top: 7px solid #ccc;
|
63 |
-
border-top-color: rgba(0, 0, 0, 0.2);
|
64 |
-
bottom: -7px;
|
65 |
-
left: 6px;
|
66 |
-
}
|
67 |
-
|
68 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget.dropdown-menu.top:after {
|
69 |
-
border-left: 6px solid transparent;
|
70 |
-
border-right: 6px solid transparent;
|
71 |
-
border-top: 6px solid white;
|
72 |
-
bottom: -6px;
|
73 |
-
left: 7px;
|
74 |
-
}
|
75 |
-
|
76 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before {
|
77 |
-
left: auto;
|
78 |
-
right: 6px;
|
79 |
-
}
|
80 |
-
|
81 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after {
|
82 |
-
left: auto;
|
83 |
-
right: 7px;
|
84 |
-
}
|
85 |
-
|
86 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget .list-unstyled {
|
87 |
-
margin: 0;
|
88 |
-
}
|
89 |
-
|
90 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget a[data-action] {
|
91 |
-
padding: 6px 0;
|
92 |
-
}
|
93 |
-
|
94 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget a[data-action]:active {
|
95 |
-
box-shadow: none;
|
96 |
-
}
|
97 |
-
|
98 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget .timepicker-hour,
|
99 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget .timepicker-minute,
|
100 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget .timepicker-second {
|
101 |
-
width: 54px;
|
102 |
-
font-weight: bold;
|
103 |
-
font-size: 1.2em;
|
104 |
-
margin: 0;
|
105 |
-
}
|
106 |
-
|
107 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget button[data-action] {
|
108 |
-
padding: 6px;
|
109 |
-
}
|
110 |
-
|
111 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after {
|
112 |
-
position: absolute;
|
113 |
-
width: 1px;
|
114 |
-
height: 1px;
|
115 |
-
margin: -1px;
|
116 |
-
padding: 0;
|
117 |
-
overflow: hidden;
|
118 |
-
clip: rect(0, 0, 0, 0);
|
119 |
-
border: 0;
|
120 |
-
content: "Increment Hours";
|
121 |
-
}
|
122 |
-
|
123 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after {
|
124 |
-
position: absolute;
|
125 |
-
width: 1px;
|
126 |
-
height: 1px;
|
127 |
-
margin: -1px;
|
128 |
-
padding: 0;
|
129 |
-
overflow: hidden;
|
130 |
-
clip: rect(0, 0, 0, 0);
|
131 |
-
border: 0;
|
132 |
-
content: "Increment Minutes";
|
133 |
-
}
|
134 |
-
|
135 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after {
|
136 |
-
position: absolute;
|
137 |
-
width: 1px;
|
138 |
-
height: 1px;
|
139 |
-
margin: -1px;
|
140 |
-
padding: 0;
|
141 |
-
overflow: hidden;
|
142 |
-
clip: rect(0, 0, 0, 0);
|
143 |
-
border: 0;
|
144 |
-
content: "Decrement Hours";
|
145 |
-
}
|
146 |
-
|
147 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after {
|
148 |
-
position: absolute;
|
149 |
-
width: 1px;
|
150 |
-
height: 1px;
|
151 |
-
margin: -1px;
|
152 |
-
padding: 0;
|
153 |
-
overflow: hidden;
|
154 |
-
clip: rect(0, 0, 0, 0);
|
155 |
-
border: 0;
|
156 |
-
content: "Decrement Minutes";
|
157 |
-
}
|
158 |
-
|
159 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after {
|
160 |
-
position: absolute;
|
161 |
-
width: 1px;
|
162 |
-
height: 1px;
|
163 |
-
margin: -1px;
|
164 |
-
padding: 0;
|
165 |
-
overflow: hidden;
|
166 |
-
clip: rect(0, 0, 0, 0);
|
167 |
-
border: 0;
|
168 |
-
content: "Show Hours";
|
169 |
-
}
|
170 |
-
|
171 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after {
|
172 |
-
position: absolute;
|
173 |
-
width: 1px;
|
174 |
-
height: 1px;
|
175 |
-
margin: -1px;
|
176 |
-
padding: 0;
|
177 |
-
overflow: hidden;
|
178 |
-
clip: rect(0, 0, 0, 0);
|
179 |
-
border: 0;
|
180 |
-
content: "Show Minutes";
|
181 |
-
}
|
182 |
-
|
183 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after {
|
184 |
-
position: absolute;
|
185 |
-
width: 1px;
|
186 |
-
height: 1px;
|
187 |
-
margin: -1px;
|
188 |
-
padding: 0;
|
189 |
-
overflow: hidden;
|
190 |
-
clip: rect(0, 0, 0, 0);
|
191 |
-
border: 0;
|
192 |
-
content: "Toggle AM/PM";
|
193 |
-
}
|
194 |
-
|
195 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget .btn[data-action="clear"]::after {
|
196 |
-
position: absolute;
|
197 |
-
width: 1px;
|
198 |
-
height: 1px;
|
199 |
-
margin: -1px;
|
200 |
-
padding: 0;
|
201 |
-
overflow: hidden;
|
202 |
-
clip: rect(0, 0, 0, 0);
|
203 |
-
border: 0;
|
204 |
-
content: "Clear the picker";
|
205 |
-
}
|
206 |
-
|
207 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget .btn[data-action="today"]::after {
|
208 |
-
position: absolute;
|
209 |
-
width: 1px;
|
210 |
-
height: 1px;
|
211 |
-
margin: -1px;
|
212 |
-
padding: 0;
|
213 |
-
overflow: hidden;
|
214 |
-
clip: rect(0, 0, 0, 0);
|
215 |
-
border: 0;
|
216 |
-
content: "Set the date to today";
|
217 |
-
}
|
218 |
-
|
219 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget .picker-switch {
|
220 |
-
text-align: center;
|
221 |
-
}
|
222 |
-
|
223 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget .picker-switch::after {
|
224 |
-
position: absolute;
|
225 |
-
width: 1px;
|
226 |
-
height: 1px;
|
227 |
-
margin: -1px;
|
228 |
-
padding: 0;
|
229 |
-
overflow: hidden;
|
230 |
-
clip: rect(0, 0, 0, 0);
|
231 |
-
border: 0;
|
232 |
-
content: "Toggle Date and Time Screens";
|
233 |
-
}
|
234 |
-
|
235 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget .picker-switch td {
|
236 |
-
padding: 0;
|
237 |
-
margin: 0;
|
238 |
-
height: auto;
|
239 |
-
width: auto;
|
240 |
-
line-height: inherit;
|
241 |
-
}
|
242 |
-
|
243 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget .picker-switch td span {
|
244 |
-
line-height: 2.5;
|
245 |
-
height: 2.5em;
|
246 |
-
width: 100%;
|
247 |
-
}
|
248 |
-
|
249 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table {
|
250 |
-
width: 100%;
|
251 |
-
margin: 0;
|
252 |
-
}
|
253 |
-
|
254 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table td,
|
255 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table th {
|
256 |
-
text-align: center;
|
257 |
-
border-radius: 4px;
|
258 |
-
}
|
259 |
-
|
260 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table th {
|
261 |
-
height: 20px;
|
262 |
-
line-height: 20px;
|
263 |
-
width: 20px;
|
264 |
-
}
|
265 |
-
|
266 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table th.picker-switch {
|
267 |
-
width: 145px;
|
268 |
-
}
|
269 |
-
|
270 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table th.disabled,
|
271 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table th.disabled:hover {
|
272 |
-
background: none;
|
273 |
-
color: #777777;
|
274 |
-
cursor: not-allowed;
|
275 |
-
}
|
276 |
-
|
277 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table th.prev::after {
|
278 |
-
position: absolute;
|
279 |
-
width: 1px;
|
280 |
-
height: 1px;
|
281 |
-
margin: -1px;
|
282 |
-
padding: 0;
|
283 |
-
overflow: hidden;
|
284 |
-
clip: rect(0, 0, 0, 0);
|
285 |
-
border: 0;
|
286 |
-
content: "Previous Month";
|
287 |
-
}
|
288 |
-
|
289 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table th.next::after {
|
290 |
-
position: absolute;
|
291 |
-
width: 1px;
|
292 |
-
height: 1px;
|
293 |
-
margin: -1px;
|
294 |
-
padding: 0;
|
295 |
-
overflow: hidden;
|
296 |
-
clip: rect(0, 0, 0, 0);
|
297 |
-
border: 0;
|
298 |
-
content: "Next Month";
|
299 |
-
}
|
300 |
-
|
301 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table thead tr:first-child th {
|
302 |
-
cursor: pointer;
|
303 |
-
}
|
304 |
-
|
305 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table thead tr:first-child th:hover {
|
306 |
-
background: #eeeeee;
|
307 |
-
}
|
308 |
-
|
309 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table td {
|
310 |
-
height: 54px;
|
311 |
-
line-height: 54px;
|
312 |
-
width: 54px;
|
313 |
-
}
|
314 |
-
|
315 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table td.cw {
|
316 |
-
font-size: .8em;
|
317 |
-
height: 20px;
|
318 |
-
line-height: 20px;
|
319 |
-
color: #777777;
|
320 |
-
}
|
321 |
-
|
322 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table td.day {
|
323 |
-
height: 20px;
|
324 |
-
line-height: 20px;
|
325 |
-
width: 20px;
|
326 |
-
}
|
327 |
-
|
328 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table td.day:hover,
|
329 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table td.hour:hover,
|
330 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table td.minute:hover,
|
331 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table td.second:hover {
|
332 |
-
background: #eeeeee;
|
333 |
-
cursor: pointer;
|
334 |
-
}
|
335 |
-
|
336 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table td.old,
|
337 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table td.new {
|
338 |
-
color: #777777;
|
339 |
-
}
|
340 |
-
|
341 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table td.today {
|
342 |
-
position: relative;
|
343 |
-
}
|
344 |
-
|
345 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table td.today:before {
|
346 |
-
content: '';
|
347 |
-
display: inline-block;
|
348 |
-
border: solid transparent;
|
349 |
-
border-width: 0 0 7px 7px;
|
350 |
-
border-bottom-color: #337ab7;
|
351 |
-
border-top-color: rgba(0, 0, 0, 0.2);
|
352 |
-
position: absolute;
|
353 |
-
bottom: 4px;
|
354 |
-
right: 4px;
|
355 |
-
}
|
356 |
-
|
357 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table td.active,
|
358 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table td.active:hover {
|
359 |
-
background-color: #337ab7;
|
360 |
-
color: #fff;
|
361 |
-
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
362 |
-
}
|
363 |
-
|
364 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table td.active.today:before {
|
365 |
-
border-bottom-color: #fff;
|
366 |
-
}
|
367 |
-
|
368 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table td.disabled,
|
369 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table td.disabled:hover {
|
370 |
-
background: none;
|
371 |
-
color: #777777;
|
372 |
-
cursor: not-allowed;
|
373 |
-
}
|
374 |
-
|
375 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table td span {
|
376 |
-
display: inline-block;
|
377 |
-
width: 54px;
|
378 |
-
height: 54px;
|
379 |
-
line-height: 54px;
|
380 |
-
margin: 2px 1.5px;
|
381 |
-
cursor: pointer;
|
382 |
-
border-radius: 4px;
|
383 |
-
}
|
384 |
-
|
385 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table td span:hover {
|
386 |
-
background: #eeeeee;
|
387 |
-
}
|
388 |
-
|
389 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table td span.active {
|
390 |
-
background-color: #337ab7;
|
391 |
-
color: #fff;
|
392 |
-
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
393 |
-
}
|
394 |
-
|
395 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table td span.old {
|
396 |
-
color: #777777;
|
397 |
-
}
|
398 |
-
|
399 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table td span.disabled,
|
400 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget table td span.disabled:hover {
|
401 |
-
background: none;
|
402 |
-
color: #777777;
|
403 |
-
cursor: not-allowed;
|
404 |
-
}
|
405 |
-
|
406 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget.usetwentyfour td.hour {
|
407 |
-
height: 27px;
|
408 |
-
line-height: 27px;
|
409 |
-
}
|
410 |
-
|
411 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget.wider {
|
412 |
-
width: 21em;
|
413 |
-
}
|
414 |
-
|
415 |
-
.factory-bootstrap-330 .bootstrap-datetimepicker-widget .datepicker-decades .decade {
|
416 |
-
line-height: 1.8em !important;
|
417 |
-
}
|
418 |
-
|
419 |
-
.factory-bootstrap-330 .input-group.date .input-group-addon {
|
420 |
-
cursor: pointer;
|
421 |
-
}
|
422 |
-
|
423 |
-
.factory-bootstrap-330 .sr-only {
|
424 |
-
position: absolute;
|
425 |
-
width: 1px;
|
426 |
-
height: 1px;
|
427 |
-
margin: -1px;
|
428 |
-
padding: 0;
|
429 |
-
overflow: hidden;
|
430 |
-
clip: rect(0, 0, 0, 0);
|
431 |
-
border: 0;
|
432 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/bootstrap.form-group.css
DELETED
@@ -1,59 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* Form Groups
|
3 |
-
*/
|
4 |
-
|
5 |
-
.factory-bootstrap-330 .factory-form-group .factory-legend {
|
6 |
-
padding: 9px 12px;
|
7 |
-
background-color: #f9f9f9;
|
8 |
-
}
|
9 |
-
|
10 |
-
.factory-bootstrap-330 .factory-form-group .factory-title {
|
11 |
-
font-weight: bold;
|
12 |
-
font-size: 14px;
|
13 |
-
line-height: 14px;
|
14 |
-
color: #555;
|
15 |
-
margin: 0px;
|
16 |
-
}
|
17 |
-
|
18 |
-
.factory-bootstrap-330 .factory-form-group .factory-hint-icon {
|
19 |
-
display: block;
|
20 |
-
width: 16px;
|
21 |
-
height: 16px;
|
22 |
-
line-height: 13px;
|
23 |
-
padding: 0;
|
24 |
-
font-size: 11px;
|
25 |
-
text-align: center;
|
26 |
-
position: absolute;
|
27 |
-
top: -5px;
|
28 |
-
right: -3px;
|
29 |
-
color: #fff;
|
30 |
-
background: #E91E63;
|
31 |
-
border-radius: 3px;
|
32 |
-
}
|
33 |
-
|
34 |
-
.factory-bootstrap-330 .factory-form-group .factory-hint-icon.factory-hint-icon-green {
|
35 |
-
background: #8bc34a;
|
36 |
-
}
|
37 |
-
|
38 |
-
.factory-bootstrap-330 .factory-form-group .factory-hint-icon.factory-hint-icon-grey {
|
39 |
-
background: #9e9e9e;
|
40 |
-
}
|
41 |
-
|
42 |
-
.factory-bootstrap-330 .factory-form-group .factory-hint-icon.factory-hint-icon-red {
|
43 |
-
background: #E91E63;
|
44 |
-
}
|
45 |
-
|
46 |
-
.factory-bootstrap-330 .factory-form-group .factory-hint {
|
47 |
-
margin: 0px;
|
48 |
-
font-size: 12px;
|
49 |
-
line-height: 16px;
|
50 |
-
margin-top: 6px;
|
51 |
-
}
|
52 |
-
|
53 |
-
.factory-bootstrap-330 .factory-form-group + .factory-form-group {
|
54 |
-
margin-top: 30px;
|
55 |
-
}
|
56 |
-
|
57 |
-
.factory-bootstrap-330 .factory-form-group legend + .control-group {
|
58 |
-
margin-top: 0px;
|
59 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/bootstrap.light.css
DELETED
@@ -1,48 +0,0 @@
|
|
1 |
-
.factory-bootstrap-330 .btn-primary {
|
2 |
-
background: #04a4cc;
|
3 |
-
border-color: #037c9a;
|
4 |
-
color: white;
|
5 |
-
-webkit-box-shadow: inset 0 1px 0 #22cffb, 0 1px 0 rgba(0, 0, 0, 0.15);
|
6 |
-
box-shadow: inset 0 1px 0 #22cffb, 0 1px 0 rgba(0, 0, 0, 0.15);
|
7 |
-
}
|
8 |
-
.factory-bootstrap-330 .btn-primary:hover,
|
9 |
-
.factory-bootstrap-330 .btn-primary:focus {
|
10 |
-
background: #0384a4;
|
11 |
-
border-color: #036881;
|
12 |
-
color: white;
|
13 |
-
-webkit-box-shadow: inset 0 1px 0 #09cafa, 0 1px 0 rgba(0, 0, 0, 0.15);
|
14 |
-
box-shadow: inset 0 1px 0 #09cafa, 0 1px 0 rgba(0, 0, 0, 0.15);
|
15 |
-
}
|
16 |
-
.factory-bootstrap-330 .btn-primary:active {
|
17 |
-
background: #0384a4;
|
18 |
-
border-color: #036881;
|
19 |
-
color: white;
|
20 |
-
-webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5);
|
21 |
-
box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5);
|
22 |
-
}
|
23 |
-
.factory-bootstrap-330 .btn-primary[disabled],
|
24 |
-
.factory-bootstrap-330 .btn-primary:disabled {
|
25 |
-
color: #c7cfd1 !important;
|
26 |
-
background: #0384a4 !important;
|
27 |
-
border-color: #036881 !important;
|
28 |
-
text-shadow: none !important;
|
29 |
-
}
|
30 |
-
|
31 |
-
.factory-bootstrap-330 .btn-group .btn.active.value {
|
32 |
-
background-color: #04a4cc;
|
33 |
-
-webkit-box-shadow: inset 0 1px 2px #037c9a;
|
34 |
-
box-shadow: inset 0 1px 2px #037c9a;
|
35 |
-
border-top: 1px solid #037c9a;
|
36 |
-
border-bottom: 1px solid #037c9a;
|
37 |
-
border-left: 1px solid #037c9a;
|
38 |
-
}
|
39 |
-
|
40 |
-
.factory-bootstrap-330 .pagination > .active > a,
|
41 |
-
.factory-bootstrap-330 .pagination > .active > span,
|
42 |
-
.factory-bootstrap-330 .pagination > .active > a:hover,
|
43 |
-
.factory-bootstrap-330 .pagination > .active > span:hover,
|
44 |
-
.factory-bootstrap-330 .pagination > .active > a:focus,
|
45 |
-
.factory-bootstrap-330 .pagination > .active > span:focus {
|
46 |
-
background-color: #04a4cc;
|
47 |
-
border-color: #037c9a;
|
48 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/bootstrap.separator.css
DELETED
@@ -1,8 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* Separator
|
3 |
-
*/
|
4 |
-
.factory-bootstrap-330 .factory-separator {
|
5 |
-
border-bottom: 1px solid #f9f9f9;
|
6 |
-
border-top: 1px solid #d1d1d1;
|
7 |
-
margin-bottom: 25px;
|
8 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/control.checkbox.css
DELETED
@@ -1,102 +0,0 @@
|
|
1 |
-
#side-sortables .factory-bootstrap-330 .factory-buttons-way {
|
2 |
-
float: right;
|
3 |
-
position: relative;
|
4 |
-
top: -25px;
|
5 |
-
left: 5px;
|
6 |
-
border: 3px solid #f9f9f9;
|
7 |
-
border-radius: 4px;
|
8 |
-
}
|
9 |
-
|
10 |
-
.factory-bootstrap-330 .factory-buttons-way {
|
11 |
-
border: 3px solid #f9f9f9;
|
12 |
-
border-radius: 4px;
|
13 |
-
}
|
14 |
-
|
15 |
-
.factory-bootstrap-330 .factory-buttons-way button {
|
16 |
-
padding-left: 10px;
|
17 |
-
padding-right: 10px;
|
18 |
-
}
|
19 |
-
|
20 |
-
.factory-bootstrap-330 .factory-buttons-way .factory-on.active {
|
21 |
-
text-shadow: none;
|
22 |
-
color: #fff;
|
23 |
-
background-color: #33aad5;
|
24 |
-
-webkit-box-shadow: inset 0 1px 1px #0074a2;
|
25 |
-
box-shadow: inset 0 1px 3px #0074a2;
|
26 |
-
border-top: 1px solid #0074a2;
|
27 |
-
border-bottom: 1px solid #0074a2;
|
28 |
-
border-left: 1px solid #0074a2;
|
29 |
-
}
|
30 |
-
|
31 |
-
.factory-bootstrap-330 .factory-checkbox-tumbler-hint {
|
32 |
-
margin-top: 5px;
|
33 |
-
}
|
34 |
-
|
35 |
-
.factory-bootstrap-330 .factory-checkbox-tumbler-hint .factory-tumbler-content {
|
36 |
-
display: inline-block;
|
37 |
-
background-color: #ffffdd;
|
38 |
-
padding: 1px 5px;
|
39 |
-
}
|
40 |
-
|
41 |
-
.admin-color-light .factory-bootstrap-330 .factory-buttons-way .factory-on.active {
|
42 |
-
background-color: #04a4cc;
|
43 |
-
-webkit-box-shadow: inset 0 1px 2px #037c9a;
|
44 |
-
box-shadow: inset 0 1px 2px #037c9a;
|
45 |
-
border-top: 1px solid #037c9a;
|
46 |
-
border-bottom: 1px solid #037c9a;
|
47 |
-
border-left: 1px solid #037c9a;
|
48 |
-
}
|
49 |
-
|
50 |
-
.admin-color-blue .factory-bootstrap-330 .factory-buttons-way .factory-on.active {
|
51 |
-
background-color: #e1a948;
|
52 |
-
-webkit-box-shadow: inset 0 1px 2px #d39323;
|
53 |
-
box-shadow: inset 0 1px 2px #d39323;
|
54 |
-
border-top: 1px solid #d39323;
|
55 |
-
border-bottom: 1px solid #d39323;
|
56 |
-
border-left: 1px solid #d39323;
|
57 |
-
}
|
58 |
-
|
59 |
-
.admin-color-coffee .factory-bootstrap-330 .factory-buttons-way .factory-on.active {
|
60 |
-
background-color: #c7a589;
|
61 |
-
-webkit-box-shadow: inset 0 1px 2px #b78a66;
|
62 |
-
box-shadow: inset 0 1px 2px #b78a66;
|
63 |
-
border-top: 1px solid #b78a66;
|
64 |
-
border-bottom: 1px solid #b78a66;
|
65 |
-
border-left: 1px solid #b78a66;
|
66 |
-
}
|
67 |
-
|
68 |
-
.admin-color-ectoplasm .factory-bootstrap-330 .factory-buttons-way .factory-on.active {
|
69 |
-
background-color: #a3b745;
|
70 |
-
-webkit-box-shadow: inset 0 1px 2px #839237;
|
71 |
-
box-shadow: inset 0 1px 2px #839237;
|
72 |
-
border-top: 1px solid #839237;
|
73 |
-
border-bottom: 1px solid #839237;
|
74 |
-
border-left: 1px solid #839237;
|
75 |
-
}
|
76 |
-
|
77 |
-
.admin-color-midnight .factory-bootstrap-330 .factory-buttons-way .factory-on.active {
|
78 |
-
background-color: #e14d43;
|
79 |
-
-webkit-box-shadow: inset 0 1px 2px #d02a21;
|
80 |
-
box-shadow: inset 0 1px 2px #d02a21;
|
81 |
-
border-top: 1px solid #d02a21;
|
82 |
-
border-bottom: 1px solid #d02a21;
|
83 |
-
border-left: 1px solid #d02a21;
|
84 |
-
}
|
85 |
-
|
86 |
-
.admin-color-ocean .factory-bootstrap-330 .factory-buttons-way .factory-on.active {
|
87 |
-
background-color: #9ebaa0;
|
88 |
-
-webkit-box-shadow: inset 0 1px 2px #80a583;
|
89 |
-
box-shadow: inset 0 1px 2px #80a583;
|
90 |
-
border-top: 1px solid #80a583;
|
91 |
-
border-bottom: 1px solid #80a583;
|
92 |
-
border-left: 1px solid #80a583;
|
93 |
-
}
|
94 |
-
|
95 |
-
.admin-color-sunrise .factory-bootstrap-330 .factory-buttons-way .factory-on.active {
|
96 |
-
background-color: #dd823b;
|
97 |
-
-webkit-box-shadow: inset 0 1px 2px #c36822;
|
98 |
-
box-shadow: inset 0 1px 2px #c36822;
|
99 |
-
border-top: 1px solid #c36822;
|
100 |
-
border-bottom: 1px solid #c36822;
|
101 |
-
border-left: 1px solid #c36822;
|
102 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/control.dropdown.css
DELETED
@@ -1,92 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* Dropdown As Buttons
|
3 |
-
*/
|
4 |
-
|
5 |
-
.factory-bootstrap-330 .factory-dropdown.factory-buttons-way .fa {
|
6 |
-
margin-right: 6px;
|
7 |
-
position: relative;
|
8 |
-
}
|
9 |
-
.factory-bootstrap-330 .factory-dropdown.factory-buttons-way {
|
10 |
-
border: 0px;
|
11 |
-
border-radius: 0px;
|
12 |
-
}
|
13 |
-
|
14 |
-
.factory-bootstrap-330 .factory-hints .factory-hint {
|
15 |
-
margin-top: 5px;
|
16 |
-
display: inline-block;
|
17 |
-
background-color: #ffffdd;
|
18 |
-
padding: 1px 5px;
|
19 |
-
}
|
20 |
-
|
21 |
-
.admin-color-light .factory-bootstrap-330 .factory-dropdown.factory-buttons-way .active {
|
22 |
-
background-color: #04a4cc;
|
23 |
-
-webkit-box-shadow: inset 0 1px 2px #037c9a;
|
24 |
-
box-shadow: inset 0 1px 2px #037c9a;
|
25 |
-
border-top: 1px solid #037c9a;
|
26 |
-
border-bottom: 1px solid #037c9a;
|
27 |
-
border-left: 1px solid #037c9a;
|
28 |
-
}
|
29 |
-
.admin-color-blue .factory-bootstrap-330 .factory-dropdown.factory-buttons-way .active {
|
30 |
-
background-color: #e1a948;
|
31 |
-
-webkit-box-shadow: inset 0 1px 2px #d39323;
|
32 |
-
box-shadow: inset 0 1px 2px #d39323;
|
33 |
-
border-top: 1px solid #d39323;
|
34 |
-
border-bottom: 1px solid #d39323;
|
35 |
-
border-left: 1px solid #d39323;
|
36 |
-
}
|
37 |
-
.admin-color-coffee .factory-bootstrap-330 .factory-dropdown.factory-buttons-way .active {
|
38 |
-
background-color: #c7a589;
|
39 |
-
-webkit-box-shadow: inset 0 1px 2px #b78a66;
|
40 |
-
box-shadow: inset 0 1px 2px #b78a66;
|
41 |
-
border-top: 1px solid #b78a66;
|
42 |
-
border-bottom: 1px solid #b78a66;
|
43 |
-
border-left: 1px solid #b78a66;
|
44 |
-
}
|
45 |
-
.admin-color-ectoplasm .factory-bootstrap-330 .factory-dropdown.factory-buttons-way .active {
|
46 |
-
background-color: #a3b745;
|
47 |
-
-webkit-box-shadow: inset 0 1px 2px #839237;
|
48 |
-
box-shadow: inset 0 1px 2px #839237;
|
49 |
-
border-top: 1px solid #839237;
|
50 |
-
border-bottom: 1px solid #839237;
|
51 |
-
border-left: 1px solid #839237;
|
52 |
-
}
|
53 |
-
.admin-color-midnight .factory-bootstrap-330 .factory-dropdown.factory-buttons-way .active {
|
54 |
-
background-color: #e14d43;
|
55 |
-
-webkit-box-shadow: inset 0 1px 2px #d02a21;
|
56 |
-
box-shadow: inset 0 1px 2px #d02a21;
|
57 |
-
border-top: 1px solid #d02a21;
|
58 |
-
border-bottom: 1px solid #d02a21;
|
59 |
-
border-left: 1px solid #d02a21;
|
60 |
-
}
|
61 |
-
.admin-color-ocean .factory-bootstrap-330 .factory-dropdown.factory-buttons-way .active {
|
62 |
-
background-color: #9ebaa0;
|
63 |
-
-webkit-box-shadow: inset 0 1px 2px #80a583;
|
64 |
-
box-shadow: inset 0 1px 2px #80a583;
|
65 |
-
border-top: 1px solid #80a583;
|
66 |
-
border-bottom: 1px solid #80a583;
|
67 |
-
border-left: 1px solid #80a583;
|
68 |
-
}
|
69 |
-
.admin-color-sunrise .factory-bootstrap-330 .factory-dropdown.factory-buttons-way .active {
|
70 |
-
background-color: #dd823b;
|
71 |
-
-webkit-box-shadow: inset 0 1px 2px #c36822;
|
72 |
-
box-shadow: inset 0 1px 2px #c36822;
|
73 |
-
border-top: 1px solid #c36822;
|
74 |
-
border-bottom: 1px solid #c36822;
|
75 |
-
border-left: 1px solid #c36822;
|
76 |
-
}
|
77 |
-
|
78 |
-
/**
|
79 |
-
* Dropdown As ddSlick
|
80 |
-
* http://designwithpc.com/plugins/ddslick
|
81 |
-
*/
|
82 |
-
|
83 |
-
.factory-bootstrap-330 .factory-dropdown.factory-ddslick-way .dd-select {
|
84 |
-
background-color: #fff !important;
|
85 |
-
}
|
86 |
-
.factory-bootstrap-330 .factory-dropdown.factory-ddslick-way label {
|
87 |
-
margin-bottom: 1px;
|
88 |
-
}
|
89 |
-
.factory-bootstrap-330 .factory-dropdown.factory-ddslick-way .dd-option,
|
90 |
-
.factory-bootstrap-330 .factory-dropdown.factory-ddslick-way .dd-selected {
|
91 |
-
padding: 8px 12px 8px 11px !important;
|
92 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/control.multiple-textbox.css
DELETED
@@ -1,37 +0,0 @@
|
|
1 |
-
.factory-bootstrap-330 .factory-mtextbox-item {
|
2 |
-
position: relative;
|
3 |
-
margin-bottom: 5px;
|
4 |
-
}
|
5 |
-
|
6 |
-
.factory-bootstrap-330 .factory-mtextbox-item input, .factory-mtextbox-remove-item {
|
7 |
-
display: inline-block;
|
8 |
-
}
|
9 |
-
|
10 |
-
.factory-bootstrap-330 .factory-mtextbox-item .factory-mtextbox-remove-item {
|
11 |
-
position: absolute;
|
12 |
-
top: 0;
|
13 |
-
right: 0;
|
14 |
-
bottom: 0;
|
15 |
-
width: 40px;
|
16 |
-
border-radius: 0 3px 3px 0;
|
17 |
-
outline: none;
|
18 |
-
/*background: #fbe3e3;
|
19 |
-
color: #9c7070;
|
20 |
-
box-shadow: none;*/
|
21 |
-
}
|
22 |
-
|
23 |
-
.factory-bootstrap-330 .factory-mtextbox-item .factory-mtextbox-remove-item:hover,
|
24 |
-
.factory-bootstrap-330 .factory-mtextbox-item .factory-mtextbox-remove-item:focus {
|
25 |
-
box-shadow: none;
|
26 |
-
outline: none;
|
27 |
-
}
|
28 |
-
|
29 |
-
/*.factory-bootstrap-330 .factory-mtextbox-item .factory-mtextbox-remove-item:hover {
|
30 |
-
background: #fbe3e3;
|
31 |
-
color: #9c7070;
|
32 |
-
}*/
|
33 |
-
|
34 |
-
.factory-bootstrap-330 .factory-mtextbox-add-item {
|
35 |
-
display: block;
|
36 |
-
margin-top: 10px;
|
37 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/holder.more-link.css
DELETED
@@ -1,32 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* More Link
|
3 |
-
*/
|
4 |
-
|
5 |
-
.factory-bootstrap-330 .factory-more-link-content {
|
6 |
-
border-top: 1px dashed #DDD;
|
7 |
-
padding-top: 25px;
|
8 |
-
width: 100%;
|
9 |
-
padding-right: 20px;
|
10 |
-
position: relative;
|
11 |
-
}
|
12 |
-
.factory-bootstrap-330 .factory-tab .factory-more-link-show {
|
13 |
-
display: inline-block;
|
14 |
-
text-decoration: none;
|
15 |
-
border-bottom: 1px dotted #21759b;
|
16 |
-
position: relative;
|
17 |
-
}
|
18 |
-
.factory-bootstrap-330 .factory-tab .factory-more-link-show:hover {
|
19 |
-
border-color: #d54e21;
|
20 |
-
}
|
21 |
-
.factory-bootstrap-330 .factory-tab .factory-more-link-hide {
|
22 |
-
position: absolute;
|
23 |
-
margin-top: -35px;
|
24 |
-
background-color: #fff;
|
25 |
-
padding: 0 5px;
|
26 |
-
right: 20px;
|
27 |
-
color: #bbb;
|
28 |
-
text-decoration: none;
|
29 |
-
}
|
30 |
-
.factory-bootstrap-330 .factory-tab .factory-more-link-hide:hover {
|
31 |
-
color: #999;
|
32 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.factoryBootstrap400_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.factoryBootstrap400_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.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/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.factoryBootstrap400_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.factoryBootstrap400_checkboxControl.Constructor=b,a(function(){a(".factory-bootstrap-400 .factory-checkbox.factory-buttons-way").factoryBootstrap400_checkboxControl()})}(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.factoryBootstrap400_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.factoryBootstrap400_dropdownControl.Constructor=b,a(function(){a(".factory-bootstrap-400 .factory-dropdown").factoryBootstrap400_dropdownControl()})}(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.factoryBootstrap400_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.factoryBootstrap400_listControl.Constructor=b,a(function(){a(".factory-bootstrap-400 .factory-list").factoryBootstrap400_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.factoryBootstrap400_MultipleTextboxControl=function(){return this.each(function(){new b(this)})},a(function(){a(".factory-bootstrap-400 .factory-multiple-textbox-group").factoryBootstrap400_MultipleTextboxControl()})}(jQuery);
|
libs/factory/bootstrap/assets/js/bootstrap.datetimepicker.js
DELETED
@@ -1,2746 +0,0 @@
|
|
1 |
-
/*! version : 4.17.47
|
2 |
-
=========================================================
|
3 |
-
bootstrap-datetimejs
|
4 |
-
https://github.com/Eonasdan/bootstrap-datetimepicker
|
5 |
-
Copyright (c) 2015 Jonathan Peterson
|
6 |
-
=========================================================
|
7 |
-
*/
|
8 |
-
/*
|
9 |
-
The MIT License (MIT)
|
10 |
-
|
11 |
-
Copyright (c) 2015 Jonathan Peterson
|
12 |
-
|
13 |
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
14 |
-
of this software and associated documentation files (the "Software"), to deal
|
15 |
-
in the Software without restriction, including without limitation the rights
|
16 |
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
17 |
-
copies of the Software, and to permit persons to whom the Software is
|
18 |
-
furnished to do so, subject to the following conditions:
|
19 |
-
|
20 |
-
The above copyright notice and this permission notice shall be included in
|
21 |
-
all copies or substantial portions of the Software.
|
22 |
-
|
23 |
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
24 |
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
25 |
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
26 |
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
27 |
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
28 |
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
29 |
-
THE SOFTWARE.
|
30 |
-
*/
|
31 |
-
/*global define:false */
|
32 |
-
/*global exports:false */
|
33 |
-
/*global require:false */
|
34 |
-
/*global jQuery:false */
|
35 |
-
/*global moment:false */
|
36 |
-
(function(factory) {
|
37 |
-
'use strict';
|
38 |
-
if( typeof define === 'function' && define.amd ) {
|
39 |
-
// AMD is used - Register as an anonymous module.
|
40 |
-
define(['jquery', 'moment'], factory);
|
41 |
-
} else if( typeof exports === 'object' ) {
|
42 |
-
module.exports = factory(require('jquery'), require('moment'));
|
43 |
-
} else {
|
44 |
-
// Neither AMD nor CommonJS used. Use global variables.
|
45 |
-
if( typeof jQuery === 'undefined' ) {
|
46 |
-
throw 'bootstrap-datetimepicker requires jQuery to be loaded first';
|
47 |
-
}
|
48 |
-
if( typeof moment === 'undefined' ) {
|
49 |
-
throw 'bootstrap-datetimepicker requires Moment.js to be loaded first';
|
50 |
-
}
|
51 |
-
factory(jQuery, moment);
|
52 |
-
}
|
53 |
-
}(function($, moment) {
|
54 |
-
'use strict';
|
55 |
-
if( !moment ) {
|
56 |
-
throw new Error('bootstrap-datetimepicker requires Moment.js to be loaded first');
|
57 |
-
}
|
58 |
-
|
59 |
-
var dateTimePicker = function(element, options) {
|
60 |
-
var picker = {},
|
61 |
-
date,
|
62 |
-
viewDate,
|
63 |
-
unset = true,
|
64 |
-
input,
|
65 |
-
component = false,
|
66 |
-
widget = false,
|
67 |
-
use24Hours,
|
68 |
-
minViewModeNumber = 0,
|
69 |
-
actualFormat,
|
70 |
-
parseFormats,
|
71 |
-
currentViewMode,
|
72 |
-
datePickerModes = [
|
73 |
-
{
|
74 |
-
clsName: 'days',
|
75 |
-
navFnc: 'M',
|
76 |
-
navStep: 1
|
77 |
-
},
|
78 |
-
{
|
79 |
-
clsName: 'months',
|
80 |
-
navFnc: 'y',
|
81 |
-
navStep: 1
|
82 |
-
},
|
83 |
-
{
|
84 |
-
clsName: 'years',
|
85 |
-
navFnc: 'y',
|
86 |
-
navStep: 10
|
87 |
-
},
|
88 |
-
{
|
89 |
-
clsName: 'decades',
|
90 |
-
navFnc: 'y',
|
91 |
-
navStep: 100
|
92 |
-
}
|
93 |
-
],
|
94 |
-
viewModes = ['days', 'months', 'years', 'decades'],
|
95 |
-
verticalModes = ['top', 'bottom', 'auto'],
|
96 |
-
horizontalModes = ['left', 'right', 'auto'],
|
97 |
-
toolbarPlacements = ['default', 'top', 'bottom'],
|
98 |
-
keyMap = {
|
99 |
-
'up': 38,
|
100 |
-
38: 'up',
|
101 |
-
'down': 40,
|
102 |
-
40: 'down',
|
103 |
-
'left': 37,
|
104 |
-
37: 'left',
|
105 |
-
'right': 39,
|
106 |
-
39: 'right',
|
107 |
-
'tab': 9,
|
108 |
-
9: 'tab',
|
109 |
-
'escape': 27,
|
110 |
-
27: 'escape',
|
111 |
-
'enter': 13,
|
112 |
-
13: 'enter',
|
113 |
-
'pageUp': 33,
|
114 |
-
33: 'pageUp',
|
115 |
-
'pageDown': 34,
|
116 |
-
34: 'pageDown',
|
117 |
-
'shift': 16,
|
118 |
-
16: 'shift',
|
119 |
-
'control': 17,
|
120 |
-
17: 'control',
|
121 |
-
'space': 32,
|
122 |
-
32: 'space',
|
123 |
-
't': 84,
|
124 |
-
84: 't',
|
125 |
-
'delete': 46,
|
126 |
-
46: 'delete'
|
127 |
-
},
|
128 |
-
keyState = {},
|
129 |
-
|
130 |
-
/********************************************************************************
|
131 |
-
*
|
132 |
-
* Private functions
|
133 |
-
*
|
134 |
-
********************************************************************************/
|
135 |
-
|
136 |
-
hasTimeZone = function() {
|
137 |
-
return moment.tz !== undefined && options.timeZone !== undefined && options.timeZone !== null && options.timeZone !== '';
|
138 |
-
},
|
139 |
-
|
140 |
-
getMoment = function(d) {
|
141 |
-
var returnMoment;
|
142 |
-
|
143 |
-
if( d === undefined || d === null ) {
|
144 |
-
returnMoment = moment(); //TODO should this use format? and locale?
|
145 |
-
} else if( moment.isDate(d) || moment.isMoment(d) ) {
|
146 |
-
// If the date that is passed in is already a Date() or moment() object,
|
147 |
-
// pass it directly to moment.
|
148 |
-
returnMoment = moment(d);
|
149 |
-
} else if( hasTimeZone() ) { // There is a string to parse and a default time zone
|
150 |
-
// parse with the tz function which takes a default time zone if it is not in the format string
|
151 |
-
returnMoment = moment.tz(d, parseFormats, options.useStrict, options.timeZone);
|
152 |
-
} else {
|
153 |
-
returnMoment = moment(d, parseFormats, options.useStrict);
|
154 |
-
}
|
155 |
-
|
156 |
-
if( hasTimeZone() ) {
|
157 |
-
returnMoment.tz(options.timeZone);
|
158 |
-
}
|
159 |
-
|
160 |
-
return returnMoment;
|
161 |
-
},
|
162 |
-
|
163 |
-
isEnabled = function(granularity) {
|
164 |
-
if( typeof granularity !== 'string' || granularity.length > 1 ) {
|
165 |
-
throw new TypeError('isEnabled expects a single character string parameter');
|
166 |
-
}
|
167 |
-
switch( granularity ) {
|
168 |
-
case 'y':
|
169 |
-
return actualFormat.indexOf('Y') !== -1;
|
170 |
-
case 'M':
|
171 |
-
return actualFormat.indexOf('M') !== -1;
|
172 |
-
case 'd':
|
173 |
-
return actualFormat.toLowerCase().indexOf('d') !== -1;
|
174 |
-
case 'h':
|
175 |
-
case 'H':
|
176 |
-
return actualFormat.toLowerCase().indexOf('h') !== -1;
|
177 |
-
case 'm':
|
178 |
-
return actualFormat.indexOf('m') !== -1;
|
179 |
-
case 's':
|
180 |
-
return actualFormat.indexOf('s') !== -1;
|
181 |
-
default:
|
182 |
-
return false;
|
183 |
-
}
|
184 |
-
},
|
185 |
-
|
186 |
-
hasTime = function() {
|
187 |
-
return (isEnabled('h') || isEnabled('m') || isEnabled('s'));
|
188 |
-
},
|
189 |
-
|
190 |
-
hasDate = function() {
|
191 |
-
return (isEnabled('y') || isEnabled('M') || isEnabled('d'));
|
192 |
-
},
|
193 |
-
|
194 |
-
getDatePickerTemplate = function() {
|
195 |
-
var headTemplate = $('<thead>')
|
196 |
-
.append($('<tr>')
|
197 |
-
.append($('<th>').addClass('prev').attr('data-action', 'previous')
|
198 |
-
.append($('<span>').addClass(options.icons.previous))
|
199 |
-
)
|
200 |
-
.append($('<th>').addClass('picker-switch').attr('data-action', 'pickerSwitch').attr('colspan', (options.calendarWeeks
|
201 |
-
? '6'
|
202 |
-
: '5')))
|
203 |
-
.append($('<th>').addClass('next').attr('data-action', 'next')
|
204 |
-
.append($('<span>').addClass(options.icons.next))
|
205 |
-
)
|
206 |
-
),
|
207 |
-
contTemplate = $('<tbody>')
|
208 |
-
.append($('<tr>')
|
209 |
-
.append($('<td>').attr('colspan', (options.calendarWeeks ? '8' : '7')))
|
210 |
-
);
|
211 |
-
|
212 |
-
return [
|
213 |
-
$('<div>').addClass('datepicker-days')
|
214 |
-
.append($('<table>').addClass('table-condensed')
|
215 |
-
.append(headTemplate)
|
216 |
-
.append($('<tbody>'))
|
217 |
-
),
|
218 |
-
$('<div>').addClass('datepicker-months')
|
219 |
-
.append($('<table>').addClass('table-condensed')
|
220 |
-
.append(headTemplate.clone())
|
221 |
-
.append(contTemplate.clone())
|
222 |
-
),
|
223 |
-
$('<div>').addClass('datepicker-years')
|
224 |
-
.append($('<table>').addClass('table-condensed')
|
225 |
-
.append(headTemplate.clone())
|
226 |
-
.append(contTemplate.clone())
|
227 |
-
),
|
228 |
-
$('<div>').addClass('datepicker-decades')
|
229 |
-
.append($('<table>').addClass('table-condensed')
|
230 |
-
.append(headTemplate.clone())
|
231 |
-
.append(contTemplate.clone())
|
232 |
-
)
|
233 |
-
];
|
234 |
-
},
|
235 |
-
|
236 |
-
getTimePickerMainTemplate = function() {
|
237 |
-
var topRow = $('<tr>'),
|
238 |
-
middleRow = $('<tr>'),
|
239 |
-
bottomRow = $('<tr>');
|
240 |
-
|
241 |
-
if( isEnabled('h') ) {
|
242 |
-
topRow.append($('<td>')
|
243 |
-
.append($('<a>').attr({
|
244 |
-
href: '#',
|
245 |
-
tabindex: '-1',
|
246 |
-
'title': options.tooltips.incrementHour
|
247 |
-
}).addClass('btn').attr('data-action', 'incrementHours').append($('<span>').addClass(options.icons.up))));
|
248 |
-
middleRow.append($('<td>')
|
249 |
-
.append($('<span>').addClass('timepicker-hour').attr({
|
250 |
-
'data-time-component': 'hours',
|
251 |
-
'title': options.tooltips.pickHour
|
252 |
-
}).attr('data-action', 'showHours')));
|
253 |
-
bottomRow.append($('<td>')
|
254 |
-
.append($('<a>').attr({
|
255 |
-
href: '#',
|
256 |
-
tabindex: '-1',
|
257 |
-
'title': options.tooltips.decrementHour
|
258 |
-
}).addClass('btn').attr('data-action', 'decrementHours').append($('<span>').addClass(options.icons.down))));
|
259 |
-
}
|
260 |
-
if( isEnabled('m') ) {
|
261 |
-
if( isEnabled('h') ) {
|
262 |
-
topRow.append($('<td>').addClass('separator'));
|
263 |
-
middleRow.append($('<td>').addClass('separator').html(':'));
|
264 |
-
bottomRow.append($('<td>').addClass('separator'));
|
265 |
-
}
|
266 |
-
topRow.append($('<td>')
|
267 |
-
.append($('<a>').attr({
|
268 |
-
href: '#',
|
269 |
-
tabindex: '-1',
|
270 |
-
'title': options.tooltips.incrementMinute
|
271 |
-
}).addClass('btn').attr('data-action', 'incrementMinutes')
|
272 |
-
.append($('<span>').addClass(options.icons.up))));
|
273 |
-
middleRow.append($('<td>')
|
274 |
-
.append($('<span>').addClass('timepicker-minute').attr({
|
275 |
-
'data-time-component': 'minutes',
|
276 |
-
'title': options.tooltips.pickMinute
|
277 |
-
}).attr('data-action', 'showMinutes')));
|
278 |
-
bottomRow.append($('<td>')
|
279 |
-
.append($('<a>').attr({
|
280 |
-
href: '#',
|
281 |
-
tabindex: '-1',
|
282 |
-
'title': options.tooltips.decrementMinute
|
283 |
-
}).addClass('btn').attr('data-action', 'decrementMinutes')
|
284 |
-
.append($('<span>').addClass(options.icons.down))));
|
285 |
-
}
|
286 |
-
if( isEnabled('s') ) {
|
287 |
-
if( isEnabled('m') ) {
|
288 |
-
topRow.append($('<td>').addClass('separator'));
|
289 |
-
middleRow.append($('<td>').addClass('separator').html(':'));
|
290 |
-
bottomRow.append($('<td>').addClass('separator'));
|
291 |
-
}
|
292 |
-
topRow.append($('<td>')
|
293 |
-
.append($('<a>').attr({
|
294 |
-
href: '#',
|
295 |
-
tabindex: '-1',
|
296 |
-
'title': options.tooltips.incrementSecond
|
297 |
-
}).addClass('btn').attr('data-action', 'incrementSeconds')
|
298 |
-
.append($('<span>').addClass(options.icons.up))));
|
299 |
-
middleRow.append($('<td>')
|
300 |
-
.append($('<span>').addClass('timepicker-second').attr({
|
301 |
-
'data-time-component': 'seconds',
|
302 |
-
'title': options.tooltips.pickSecond
|
303 |
-
}).attr('data-action', 'showSeconds')));
|
304 |
-
bottomRow.append($('<td>')
|
305 |
-
.append($('<a>').attr({
|
306 |
-
href: '#',
|
307 |
-
tabindex: '-1',
|
308 |
-
'title': options.tooltips.decrementSecond
|
309 |
-
}).addClass('btn').attr('data-action', 'decrementSeconds')
|
310 |
-
.append($('<span>').addClass(options.icons.down))));
|
311 |
-
}
|
312 |
-
|
313 |
-
if( !use24Hours ) {
|
314 |
-
topRow.append($('<td>').addClass('separator'));
|
315 |
-
middleRow.append($('<td>')
|
316 |
-
.append($('<button>').addClass('btn btn-primary').attr({
|
317 |
-
'data-action': 'togglePeriod',
|
318 |
-
tabindex: '-1',
|
319 |
-
'title': options.tooltips.togglePeriod
|
320 |
-
})));
|
321 |
-
bottomRow.append($('<td>').addClass('separator'));
|
322 |
-
}
|
323 |
-
|
324 |
-
return $('<div>').addClass('timepicker-picker')
|
325 |
-
.append($('<table>').addClass('table-condensed')
|
326 |
-
.append([topRow, middleRow, bottomRow]));
|
327 |
-
},
|
328 |
-
|
329 |
-
getTimePickerTemplate = function() {
|
330 |
-
var hoursView = $('<div>').addClass('timepicker-hours')
|
331 |
-
.append($('<table>').addClass('table-condensed')),
|
332 |
-
minutesView = $('<div>').addClass('timepicker-minutes')
|
333 |
-
.append($('<table>').addClass('table-condensed')),
|
334 |
-
secondsView = $('<div>').addClass('timepicker-seconds')
|
335 |
-
.append($('<table>').addClass('table-condensed')),
|
336 |
-
ret = [getTimePickerMainTemplate()];
|
337 |
-
|
338 |
-
if( isEnabled('h') ) {
|
339 |
-
ret.push(hoursView);
|
340 |
-
}
|
341 |
-
if( isEnabled('m') ) {
|
342 |
-
ret.push(minutesView);
|
343 |
-
}
|
344 |
-
if( isEnabled('s') ) {
|
345 |
-
ret.push(secondsView);
|
346 |
-
}
|
347 |
-
|
348 |
-
return ret;
|
349 |
-
},
|
350 |
-
|
351 |
-
getToolbar = function() {
|
352 |
-
var row = [];
|
353 |
-
if( options.showTodayButton ) {
|
354 |
-
row.push($('<td>').append($('<a>').attr({
|
355 |
-
'data-action': 'today',
|
356 |
-
'title': options.tooltips.today
|
357 |
-
}).append($('<span>').addClass(options.icons.today))));
|
358 |
-
}
|
359 |
-
if( !options.sideBySide && hasDate() && hasTime() ) {
|
360 |
-
row.push($('<td>').append($('<a>').attr({
|
361 |
-
'data-action': 'togglePicker',
|
362 |
-
'title': options.tooltips.selectTime
|
363 |
-
}).append($('<span>').addClass(options.icons.time))));
|
364 |
-
}
|
365 |
-
if( options.showClear ) {
|
366 |
-
row.push($('<td>').append($('<a>').attr({
|
367 |
-
'data-action': 'clear',
|
368 |
-
'title': options.tooltips.clear
|
369 |
-
}).append($('<span>').addClass(options.icons.clear))));
|
370 |
-
}
|
371 |
-
if( options.showClose ) {
|
372 |
-
row.push($('<td>').append($('<a>').attr({
|
373 |
-
'data-action': 'close',
|
374 |
-
'title': options.tooltips.close
|
375 |
-
}).append($('<span>').addClass(options.icons.close))));
|
376 |
-
}
|
377 |
-
return $('<table>').addClass('table-condensed').append($('<tbody>').append($('<tr>').append(row)));
|
378 |
-
},
|
379 |
-
|
380 |
-
getTemplate = function() {
|
381 |
-
var template = $('<div>').addClass('bootstrap-datetimepicker-widget dropdown-menu'),
|
382 |
-
dateView = $('<div>').addClass('datepicker').append(getDatePickerTemplate()),
|
383 |
-
timeView = $('<div>').addClass('timepicker').append(getTimePickerTemplate()),
|
384 |
-
content = $('<ul>').addClass('list-unstyled'),
|
385 |
-
toolbar = $('<li>').addClass('picker-switch' + (options.collapse
|
386 |
-
? ' accordion-toggle'
|
387 |
-
: '')).append(getToolbar());
|
388 |
-
|
389 |
-
if( options.inline ) {
|
390 |
-
template.removeClass('dropdown-menu');
|
391 |
-
}
|
392 |
-
|
393 |
-
if( use24Hours ) {
|
394 |
-
template.addClass('usetwentyfour');
|
395 |
-
}
|
396 |
-
|
397 |
-
if( isEnabled('s') && !use24Hours ) {
|
398 |
-
template.addClass('wider');
|
399 |
-
}
|
400 |
-
|
401 |
-
if( options.sideBySide && hasDate() && hasTime() ) {
|
402 |
-
template.addClass('timepicker-sbs');
|
403 |
-
if( options.toolbarPlacement === 'top' ) {
|
404 |
-
template.append(toolbar);
|
405 |
-
}
|
406 |
-
template.append(
|
407 |
-
$('<div>').addClass('row')
|
408 |
-
.append(dateView.addClass('col-md-6'))
|
409 |
-
.append(timeView.addClass('col-md-6'))
|
410 |
-
);
|
411 |
-
if( options.toolbarPlacement === 'bottom' ) {
|
412 |
-
template.append(toolbar);
|
413 |
-
}
|
414 |
-
return template;
|
415 |
-
}
|
416 |
-
|
417 |
-
if( options.toolbarPlacement === 'top' ) {
|
418 |
-
content.append(toolbar);
|
419 |
-
}
|
420 |
-
if( hasDate() ) {
|
421 |
-
content.append($('<li>').addClass((options.collapse && hasTime()
|
422 |
-
? 'collapse in'
|
423 |
-
: '')).append(dateView));
|
424 |
-
}
|
425 |
-
if( options.toolbarPlacement === 'default' ) {
|
426 |
-
content.append(toolbar);
|
427 |
-
}
|
428 |
-
if( hasTime() ) {
|
429 |
-
content.append($('<li>').addClass((options.collapse && hasDate()
|
430 |
-
? 'collapse'
|
431 |
-
: '')).append(timeView));
|
432 |
-
}
|
433 |
-
if( options.toolbarPlacement === 'bottom' ) {
|
434 |
-
content.append(toolbar);
|
435 |
-
}
|
436 |
-
return template.append(content);
|
437 |
-
},
|
438 |
-
|
439 |
-
dataToOptions = function() {
|
440 |
-
var eData,
|
441 |
-
dataOptions = {};
|
442 |
-
|
443 |
-
if( element.is('input') || options.inline ) {
|
444 |
-
eData = element.data();
|
445 |
-
} else {
|
446 |
-
eData = element.find('input').data();
|
447 |
-
}
|
448 |
-
|
449 |
-
if( eData.dateOptions && eData.dateOptions instanceof Object ) {
|
450 |
-
dataOptions = $.extend(true, dataOptions, eData.dateOptions);
|
451 |
-
}
|
452 |
-
|
453 |
-
$.each(options, function(key) {
|
454 |
-
var attributeName = 'date' + key.charAt(0).toUpperCase() + key.slice(1);
|
455 |
-
if( eData[attributeName] !== undefined ) {
|
456 |
-
dataOptions[key] = eData[attributeName];
|
457 |
-
}
|
458 |
-
});
|
459 |
-
return dataOptions;
|
460 |
-
},
|
461 |
-
|
462 |
-
place = function() {
|
463 |
-
var position = (component || element).position(),
|
464 |
-
offset = (component || element).offset(),
|
465 |
-
vertical = options.widgetPositioning.vertical,
|
466 |
-
horizontal = options.widgetPositioning.horizontal,
|
467 |
-
parent;
|
468 |
-
|
469 |
-
if( options.widgetParent ) {
|
470 |
-
parent = options.widgetParent.append(widget);
|
471 |
-
} else if( element.is('input') ) {
|
472 |
-
parent = element.after(widget).parent();
|
473 |
-
} else if( options.inline ) {
|
474 |
-
parent = element.append(widget);
|
475 |
-
return;
|
476 |
-
} else {
|
477 |
-
parent = element;
|
478 |
-
element.children().first().after(widget);
|
479 |
-
}
|
480 |
-
|
481 |
-
// Top and bottom logic
|
482 |
-
if( vertical === 'auto' ) {
|
483 |
-
if( offset.top + widget.height() * 1.5 >= $(window).height() + $(window).scrollTop() &&
|
484 |
-
widget.height() + element.outerHeight() < offset.top ) {
|
485 |
-
vertical = 'top';
|
486 |
-
} else {
|
487 |
-
vertical = 'bottom';
|
488 |
-
}
|
489 |
-
}
|
490 |
-
|
491 |
-
// Left and right logic
|
492 |
-
if( horizontal === 'auto' ) {
|
493 |
-
if( parent.width() < offset.left + widget.outerWidth() / 2 &&
|
494 |
-
offset.left + widget.outerWidth() > $(window).width() ) {
|
495 |
-
horizontal = 'right';
|
496 |
-
} else {
|
497 |
-
horizontal = 'left';
|
498 |
-
}
|
499 |
-
}
|
500 |
-
|
501 |
-
if( vertical === 'top' ) {
|
502 |
-
widget.addClass('top').removeClass('bottom');
|
503 |
-
} else {
|
504 |
-
widget.addClass('bottom').removeClass('top');
|
505 |
-
}
|
506 |
-
|
507 |
-
if( horizontal === 'right' ) {
|
508 |
-
widget.addClass('pull-right');
|
509 |
-
} else {
|
510 |
-
widget.removeClass('pull-right');
|
511 |
-
}
|
512 |
-
|
513 |
-
// find the first parent element that has a non-static css positioning
|
514 |
-
if( parent.css('position') === 'static' ) {
|
515 |
-
parent = parent.parents().filter(function() {
|
516 |
-
return $(this).css('position') !== 'static';
|
517 |
-
}).first();
|
518 |
-
}
|
519 |
-
|
520 |
-
if( parent.length === 0 ) {
|
521 |
-
throw new Error('datetimepicker component should be placed within a non-static positioned container');
|
522 |
-
}
|
523 |
-
|
524 |
-
widget.css({
|
525 |
-
top: vertical === 'top' ? 'auto' : position.top + element.outerHeight(),
|
526 |
-
bottom: vertical === 'top'
|
527 |
-
? parent.outerHeight() - (parent === element ? 0 : position.top)
|
528 |
-
: 'auto',
|
529 |
-
left: horizontal === 'left' ? (parent === element ? 0 : position.left) : 'auto',
|
530 |
-
right: horizontal === 'left'
|
531 |
-
? 'auto'
|
532 |
-
: parent.outerWidth() - element.outerWidth() - (parent === element ? 0 : position.left)
|
533 |
-
});
|
534 |
-
},
|
535 |
-
|
536 |
-
notifyEvent = function(e) {
|
537 |
-
if( e.type === 'dp.change' && ((e.date && e.date.isSame(e.oldDate)) || (!e.date && !e.oldDate)) ) {
|
538 |
-
return;
|
539 |
-
}
|
540 |
-
element.trigger(e);
|
541 |
-
},
|
542 |
-
|
543 |
-
viewUpdate = function(e) {
|
544 |
-
if( e === 'y' ) {
|
545 |
-
e = 'YYYY';
|
546 |
-
}
|
547 |
-
notifyEvent({
|
548 |
-
type: 'dp.update',
|
549 |
-
change: e,
|
550 |
-
viewDate: viewDate.clone()
|
551 |
-
});
|
552 |
-
},
|
553 |
-
|
554 |
-
showMode = function(dir) {
|
555 |
-
if( !widget ) {
|
556 |
-
return;
|
557 |
-
}
|
558 |
-
if( dir ) {
|
559 |
-
currentViewMode = Math.max(minViewModeNumber, Math.min(3, currentViewMode + dir));
|
560 |
-
}
|
561 |
-
widget.find('.datepicker > div').hide().filter('.datepicker-' + datePickerModes[currentViewMode].clsName).show();
|
562 |
-
},
|
563 |
-
|
564 |
-
fillDow = function() {
|
565 |
-
var row = $('<tr>'),
|
566 |
-
currentDate = viewDate.clone().startOf('w').startOf('d');
|
567 |
-
|
568 |
-
if( options.calendarWeeks === true ) {
|
569 |
-
row.append($('<th>').addClass('cw').text('#'));
|
570 |
-
}
|
571 |
-
|
572 |
-
while( currentDate.isBefore(viewDate.clone().endOf('w')) ) {
|
573 |
-
row.append($('<th>').addClass('dow').text(currentDate.format('dd')));
|
574 |
-
currentDate.add(1, 'd');
|
575 |
-
}
|
576 |
-
widget.find('.datepicker-days thead').append(row);
|
577 |
-
},
|
578 |
-
|
579 |
-
isInDisabledDates = function(testDate) {
|
580 |
-
return options.disabledDates[testDate.format('YYYY-MM-DD')] === true;
|
581 |
-
},
|
582 |
-
|
583 |
-
isInEnabledDates = function(testDate) {
|
584 |
-
return options.enabledDates[testDate.format('YYYY-MM-DD')] === true;
|
585 |
-
},
|
586 |
-
|
587 |
-
isInDisabledHours = function(testDate) {
|
588 |
-
return options.disabledHours[testDate.format('H')] === true;
|
589 |
-
},
|
590 |
-
|
591 |
-
isInEnabledHours = function(testDate) {
|
592 |
-
return options.enabledHours[testDate.format('H')] === true;
|
593 |
-
},
|
594 |
-
|
595 |
-
isValid = function(targetMoment, granularity) {
|
596 |
-
if( !targetMoment.isValid() ) {
|
597 |
-
return false;
|
598 |
-
}
|
599 |
-
if( options.disabledDates && granularity === 'd' && isInDisabledDates(targetMoment) ) {
|
600 |
-
return false;
|
601 |
-
}
|
602 |
-
if( options.enabledDates && granularity === 'd' && !isInEnabledDates(targetMoment) ) {
|
603 |
-
return false;
|
604 |
-
}
|
605 |
-
if( options.minDate && targetMoment.isBefore(options.minDate, granularity) ) {
|
606 |
-
return false;
|
607 |
-
}
|
608 |
-
if( options.maxDate && targetMoment.isAfter(options.maxDate, granularity) ) {
|
609 |
-
return false;
|
610 |
-
}
|
611 |
-
if( options.daysOfWeekDisabled && granularity === 'd' && options.daysOfWeekDisabled.indexOf(targetMoment.day()) !== -1 ) {
|
612 |
-
return false;
|
613 |
-
}
|
614 |
-
if( options.disabledHours && (granularity === 'h' || granularity === 'm' || granularity === 's') && isInDisabledHours(targetMoment) ) {
|
615 |
-
return false;
|
616 |
-
}
|
617 |
-
if( options.enabledHours && (granularity === 'h' || granularity === 'm' || granularity === 's') && !isInEnabledHours(targetMoment) ) {
|
618 |
-
return false;
|
619 |
-
}
|
620 |
-
if( options.disabledTimeIntervals && (granularity === 'h' || granularity === 'm' || granularity === 's') ) {
|
621 |
-
var found = false;
|
622 |
-
$.each(options.disabledTimeIntervals, function() {
|
623 |
-
if( targetMoment.isBetween(this[0], this[1]) ) {
|
624 |
-
found = true;
|
625 |
-
return false;
|
626 |
-
}
|
627 |
-
});
|
628 |
-
if( found ) {
|
629 |
-
return false;
|
630 |
-
}
|
631 |
-
}
|
632 |
-
return true;
|
633 |
-
},
|
634 |
-
|
635 |
-
fillMonths = function() {
|
636 |
-
var spans = [],
|
637 |
-
monthsShort = viewDate.clone().startOf('y').startOf('d');
|
638 |
-
while( monthsShort.isSame(viewDate, 'y') ) {
|
639 |
-
spans.push($('<span>').attr('data-action', 'selectMonth').addClass('month').text(monthsShort.format('MMM')));
|
640 |
-
monthsShort.add(1, 'M');
|
641 |
-
}
|
642 |
-
widget.find('.datepicker-months td').empty().append(spans);
|
643 |
-
},
|
644 |
-
|
645 |
-
updateMonths = function() {
|
646 |
-
var monthsView = widget.find('.datepicker-months'),
|
647 |
-
monthsViewHeader = monthsView.find('th'),
|
648 |
-
months = monthsView.find('tbody').find('span');
|
649 |
-
|
650 |
-
monthsViewHeader.eq(0).find('span').attr('title', options.tooltips.prevYear);
|
651 |
-
monthsViewHeader.eq(1).attr('title', options.tooltips.selectYear);
|
652 |
-
monthsViewHeader.eq(2).find('span').attr('title', options.tooltips.nextYear);
|
653 |
-
|
654 |
-
monthsView.find('.disabled').removeClass('disabled');
|
655 |
-
|
656 |
-
if( !isValid(viewDate.clone().subtract(1, 'y'), 'y') ) {
|
657 |
-
monthsViewHeader.eq(0).addClass('disabled');
|
658 |
-
}
|
659 |
-
|
660 |
-
monthsViewHeader.eq(1).text(viewDate.year());
|
661 |
-
|
662 |
-
if( !isValid(viewDate.clone().add(1, 'y'), 'y') ) {
|
663 |
-
monthsViewHeader.eq(2).addClass('disabled');
|
664 |
-
}
|
665 |
-
|
666 |
-
months.removeClass('active');
|
667 |
-
if( date.isSame(viewDate, 'y') && !unset ) {
|
668 |
-
months.eq(date.month()).addClass('active');
|
669 |
-
}
|
670 |
-
|
671 |
-
months.each(function(index) {
|
672 |
-
if( !isValid(viewDate.clone().month(index), 'M') ) {
|
673 |
-
$(this).addClass('disabled');
|
674 |
-
}
|
675 |
-
});
|
676 |
-
},
|
677 |
-
|
678 |
-
updateYears = function() {
|
679 |
-
var yearsView = widget.find('.datepicker-years'),
|
680 |
-
yearsViewHeader = yearsView.find('th'),
|
681 |
-
startYear = viewDate.clone().subtract(5, 'y'),
|
682 |
-
endYear = viewDate.clone().add(6, 'y'),
|
683 |
-
html = '';
|
684 |
-
|
685 |
-
yearsViewHeader.eq(0).find('span').attr('title', options.tooltips.prevDecade);
|
686 |
-
yearsViewHeader.eq(1).attr('title', options.tooltips.selectDecade);
|
687 |
-
yearsViewHeader.eq(2).find('span').attr('title', options.tooltips.nextDecade);
|
688 |
-
|
689 |
-
yearsView.find('.disabled').removeClass('disabled');
|
690 |
-
|
691 |
-
if( options.minDate && options.minDate.isAfter(startYear, 'y') ) {
|
692 |
-
yearsViewHeader.eq(0).addClass('disabled');
|
693 |
-
}
|
694 |
-
|
695 |
-
yearsViewHeader.eq(1).text(startYear.year() + '-' + endYear.year());
|
696 |
-
|
697 |
-
if( options.maxDate && options.maxDate.isBefore(endYear, 'y') ) {
|
698 |
-
yearsViewHeader.eq(2).addClass('disabled');
|
699 |
-
}
|
700 |
-
|
701 |
-
while( !startYear.isAfter(endYear, 'y') ) {
|
702 |
-
html += '<span data-action="selectYear" class="year' + (startYear.isSame(date, 'y') && !unset
|
703 |
-
? ' active'
|
704 |
-
: '') + (!isValid(startYear, 'y') ? ' disabled' : '') + '">' + startYear.year() + '</span>';
|
705 |
-
startYear.add(1, 'y');
|
706 |
-
}
|
707 |
-
|
708 |
-
yearsView.find('td').html(html);
|
709 |
-
},
|
710 |
-
|
711 |
-
updateDecades = function() {
|
712 |
-
var decadesView = widget.find('.datepicker-decades'),
|
713 |
-
decadesViewHeader = decadesView.find('th'),
|
714 |
-
startDecade = moment({y: viewDate.year() - (viewDate.year() % 100) - 1}),
|
715 |
-
endDecade = startDecade.clone().add(100, 'y'),
|
716 |
-
startedAt = startDecade.clone(),
|
717 |
-
minDateDecade = false,
|
718 |
-
maxDateDecade = false,
|
719 |
-
endDecadeYear,
|
720 |
-
html = '';
|
721 |
-
|
722 |
-
decadesViewHeader.eq(0).find('span').attr('title', options.tooltips.prevCentury);
|
723 |
-
decadesViewHeader.eq(2).find('span').attr('title', options.tooltips.nextCentury);
|
724 |
-
|
725 |
-
decadesView.find('.disabled').removeClass('disabled');
|
726 |
-
|
727 |
-
if( startDecade.isSame(moment({y: 1900})) || (options.minDate && options.minDate.isAfter(startDecade, 'y')) ) {
|
728 |
-
decadesViewHeader.eq(0).addClass('disabled');
|
729 |
-
}
|
730 |
-
|
731 |
-
decadesViewHeader.eq(1).text(startDecade.year() + '-' + endDecade.year());
|
732 |
-
|
733 |
-
if( startDecade.isSame(moment({y: 2000})) || (options.maxDate && options.maxDate.isBefore(endDecade, 'y')) ) {
|
734 |
-
decadesViewHeader.eq(2).addClass('disabled');
|
735 |
-
}
|
736 |
-
|
737 |
-
while( !startDecade.isAfter(endDecade, 'y') ) {
|
738 |
-
endDecadeYear = startDecade.year() + 12;
|
739 |
-
minDateDecade = options.minDate && options.minDate.isAfter(startDecade, 'y') && options.minDate.year() <= endDecadeYear;
|
740 |
-
maxDateDecade = options.maxDate && options.maxDate.isAfter(startDecade, 'y') && options.maxDate.year() <= endDecadeYear;
|
741 |
-
html += '<span data-action="selectDecade" class="decade' + (date.isAfter(startDecade) && date.year() <= endDecadeYear
|
742 |
-
? ' active'
|
743 |
-
: '') +
|
744 |
-
(!isValid(startDecade, 'y') && !minDateDecade && !maxDateDecade
|
745 |
-
? ' disabled'
|
746 |
-
: '') + '" data-selection="' + (startDecade.year() + 6) + '">' + (startDecade.year() + 1) + ' - ' + (startDecade.year() + 12) + '</span>';
|
747 |
-
startDecade.add(12, 'y');
|
748 |
-
}
|
749 |
-
html += '<span></span><span></span><span></span>'; //push the dangling block over, at least this way
|
750 |
-
// it's even
|
751 |
-
|
752 |
-
decadesView.find('td').html(html);
|
753 |
-
decadesViewHeader.eq(1).text((startedAt.year() + 1) + '-' + (startDecade.year()));
|
754 |
-
},
|
755 |
-
|
756 |
-
fillDate = function() {
|
757 |
-
var daysView = widget.find('.datepicker-days'),
|
758 |
-
daysViewHeader = daysView.find('th'),
|
759 |
-
currentDate,
|
760 |
-
html = [],
|
761 |
-
row,
|
762 |
-
clsNames = [],
|
763 |
-
i;
|
764 |
-
|
765 |
-
if( !hasDate() ) {
|
766 |
-
return;
|
767 |
-
}
|
768 |
-
|
769 |
-
daysViewHeader.eq(0).find('span').attr('title', options.tooltips.prevMonth);
|
770 |
-
daysViewHeader.eq(1).attr('title', options.tooltips.selectMonth);
|
771 |
-
daysViewHeader.eq(2).find('span').attr('title', options.tooltips.nextMonth);
|
772 |
-
|
773 |
-
daysView.find('.disabled').removeClass('disabled');
|
774 |
-
daysViewHeader.eq(1).text(viewDate.format(options.dayViewHeaderFormat));
|
775 |
-
|
776 |
-
if( !isValid(viewDate.clone().subtract(1, 'M'), 'M') ) {
|
777 |
-
daysViewHeader.eq(0).addClass('disabled');
|
778 |
-
}
|
779 |
-
if( !isValid(viewDate.clone().add(1, 'M'), 'M') ) {
|
780 |
-
daysViewHeader.eq(2).addClass('disabled');
|
781 |
-
}
|
782 |
-
|
783 |
-
currentDate = viewDate.clone().startOf('M').startOf('w').startOf('d');
|
784 |
-
|
785 |
-
for( i = 0; i < 42; i++ ) { //always display 42 days (should show 6 weeks)
|
786 |
-
if( currentDate.weekday() === 0 ) {
|
787 |
-
row = $('<tr>');
|
788 |
-
if( options.calendarWeeks ) {
|
789 |
-
row.append('<td class="cw">' + currentDate.week() + '</td>');
|
790 |
-
}
|
791 |
-
html.push(row);
|
792 |
-
}
|
793 |
-
clsNames = ['day'];
|
794 |
-
if( currentDate.isBefore(viewDate, 'M') ) {
|
795 |
-
clsNames.push('old');
|
796 |
-
}
|
797 |
-
if( currentDate.isAfter(viewDate, 'M') ) {
|
798 |
-
clsNames.push('new');
|
799 |
-
}
|
800 |
-
if( currentDate.isSame(date, 'd') && !unset ) {
|
801 |
-
clsNames.push('active');
|
802 |
-
}
|
803 |
-
if( !isValid(currentDate, 'd') ) {
|
804 |
-
clsNames.push('disabled');
|
805 |
-
}
|
806 |
-
if( currentDate.isSame(getMoment(), 'd') ) {
|
807 |
-
clsNames.push('today');
|
808 |
-
}
|
809 |
-
if( currentDate.day() === 0 || currentDate.day() === 6 ) {
|
810 |
-
clsNames.push('weekend');
|
811 |
-
}
|
812 |
-
notifyEvent({
|
813 |
-
type: 'dp.classify',
|
814 |
-
date: currentDate,
|
815 |
-
classNames: clsNames
|
816 |
-
});
|
817 |
-
row.append('<td data-action="selectDay" data-day="' + currentDate.format('L') + '" class="' + clsNames.join(' ') + '">' + currentDate.date() + '</td>');
|
818 |
-
currentDate.add(1, 'd');
|
819 |
-
}
|
820 |
-
|
821 |
-
daysView.find('tbody').empty().append(html);
|
822 |
-
|
823 |
-
updateMonths();
|
824 |
-
|
825 |
-
updateYears();
|
826 |
-
|
827 |
-
updateDecades();
|
828 |
-
},
|
829 |
-
|
830 |
-
fillHours = function() {
|
831 |
-
var table = widget.find('.timepicker-hours table'),
|
832 |
-
currentHour = viewDate.clone().startOf('d'),
|
833 |
-
html = [],
|
834 |
-
row = $('<tr>');
|
835 |
-
|
836 |
-
if( viewDate.hour() > 11 && !use24Hours ) {
|
837 |
-
currentHour.hour(12);
|
838 |
-
}
|
839 |
-
while( currentHour.isSame(viewDate, 'd') && (use24Hours || (viewDate.hour() < 12 && currentHour.hour() < 12) || viewDate.hour() > 11) ) {
|
840 |
-
if( currentHour.hour() % 4 === 0 ) {
|
841 |
-
row = $('<tr>');
|
842 |
-
html.push(row);
|
843 |
-
}
|
844 |
-
row.append('<td data-action="selectHour" class="hour' + (!isValid(currentHour, 'h')
|
845 |
-
? ' disabled'
|
846 |
-
: '') + '">' + currentHour.format(use24Hours ? 'HH' : 'hh') + '</td>');
|
847 |
-
currentHour.add(1, 'h');
|
848 |
-
}
|
849 |
-
table.empty().append(html);
|
850 |
-
},
|
851 |
-
|
852 |
-
fillMinutes = function() {
|
853 |
-
var table = widget.find('.timepicker-minutes table'),
|
854 |
-
currentMinute = viewDate.clone().startOf('h'),
|
855 |
-
html = [],
|
856 |
-
row = $('<tr>'),
|
857 |
-
step = options.stepping === 1 ? 5 : options.stepping;
|
858 |
-
|
859 |
-
while( viewDate.isSame(currentMinute, 'h') ) {
|
860 |
-
if( currentMinute.minute() % (step * 4) === 0 ) {
|
861 |
-
row = $('<tr>');
|
862 |
-
html.push(row);
|
863 |
-
}
|
864 |
-
row.append('<td data-action="selectMinute" class="minute' + (!isValid(currentMinute, 'm')
|
865 |
-
? ' disabled'
|
866 |
-
: '') + '">' + currentMinute.format('mm') + '</td>');
|
867 |
-
currentMinute.add(step, 'm');
|
868 |
-
}
|
869 |
-
table.empty().append(html);
|
870 |
-
},
|
871 |
-
|
872 |
-
fillSeconds = function() {
|
873 |
-
var table = widget.find('.timepicker-seconds table'),
|
874 |
-
currentSecond = viewDate.clone().startOf('m'),
|
875 |
-
html = [],
|
876 |
-
row = $('<tr>');
|
877 |
-
|
878 |
-
while( viewDate.isSame(currentSecond, 'm') ) {
|
879 |
-
if( currentSecond.second() % 20 === 0 ) {
|
880 |
-
row = $('<tr>');
|
881 |
-
html.push(row);
|
882 |
-
}
|
883 |
-
row.append('<td data-action="selectSecond" class="second' + (!isValid(currentSecond, 's')
|
884 |
-
? ' disabled'
|
885 |
-
: '') + '">' + currentSecond.format('ss') + '</td>');
|
886 |
-
currentSecond.add(5, 's');
|
887 |
-
}
|
888 |
-
|
889 |
-
table.empty().append(html);
|
890 |
-
},
|
891 |
-
|
892 |
-
fillTime = function() {
|
893 |
-
var toggle, newDate, timeComponents = widget.find('.timepicker span[data-time-component]');
|
894 |
-
|
895 |
-
if( !use24Hours ) {
|
896 |
-
toggle = widget.find('.timepicker [data-action=togglePeriod]');
|
897 |
-
newDate = date.clone().add((date.hours() >= 12) ? -12 : 12, 'h');
|
898 |
-
|
899 |
-
toggle.text(date.format('A'));
|
900 |
-
|
901 |
-
if( isValid(newDate, 'h') ) {
|
902 |
-
toggle.removeClass('disabled');
|
903 |
-
} else {
|
904 |
-
toggle.addClass('disabled');
|
905 |
-
}
|
906 |
-
}
|
907 |
-
timeComponents.filter('[data-time-component=hours]').text(date.format(use24Hours ? 'HH' : 'hh'));
|
908 |
-
timeComponents.filter('[data-time-component=minutes]').text(date.format('mm'));
|
909 |
-
timeComponents.filter('[data-time-component=seconds]').text(date.format('ss'));
|
910 |
-
|
911 |
-
fillHours();
|
912 |
-
fillMinutes();
|
913 |
-
fillSeconds();
|
914 |
-
},
|
915 |
-
|
916 |
-
update = function() {
|
917 |
-
if( !widget ) {
|
918 |
-
return;
|
919 |
-
}
|
920 |
-
fillDate();
|
921 |
-
fillTime();
|
922 |
-
},
|
923 |
-
|
924 |
-
setValue = function(targetMoment) {
|
925 |
-
var oldDate = unset ? null : date;
|
926 |
-
|
927 |
-
// case of calling setValue(null or false)
|
928 |
-
if( !targetMoment ) {
|
929 |
-
unset = true;
|
930 |
-
input.val('');
|
931 |
-
element.data('date', '');
|
932 |
-
notifyEvent({
|
933 |
-
type: 'dp.change',
|
934 |
-
date: false,
|
935 |
-
oldDate: oldDate
|
936 |
-
});
|
937 |
-
update();
|
938 |
-
return;
|
939 |
-
}
|
940 |
-
|
941 |
-
targetMoment = targetMoment.clone().locale(options.locale);
|
942 |
-
|
943 |
-
if( hasTimeZone() ) {
|
944 |
-
targetMoment.tz(options.timeZone);
|
945 |
-
}
|
946 |
-
|
947 |
-
if( options.stepping !== 1 ) {
|
948 |
-
targetMoment.minutes((Math.round(targetMoment.minutes() / options.stepping) * options.stepping)).seconds(0);
|
949 |
-
|
950 |
-
while( options.minDate && targetMoment.isBefore(options.minDate) ) {
|
951 |
-
targetMoment.add(options.stepping, 'minutes');
|
952 |
-
}
|
953 |
-
}
|
954 |
-
|
955 |
-
if( isValid(targetMoment) ) {
|
956 |
-
date = targetMoment;
|
957 |
-
viewDate = date.clone();
|
958 |
-
input.val(date.format(actualFormat));
|
959 |
-
element.data('date', date.format(actualFormat));
|
960 |
-
unset = false;
|
961 |
-
update();
|
962 |
-
notifyEvent({
|
963 |
-
type: 'dp.change',
|
964 |
-
date: date.clone(),
|
965 |
-
oldDate: oldDate
|
966 |
-
});
|
967 |
-
} else {
|
968 |
-
if( !options.keepInvalid ) {
|
969 |
-
input.val(unset ? '' : date.format(actualFormat));
|
970 |
-
} else {
|
971 |
-
notifyEvent({
|
972 |
-
type: 'dp.change',
|
973 |
-
date: targetMoment,
|
974 |
-
oldDate: oldDate
|
975 |
-
});
|
976 |
-
}
|
977 |
-
notifyEvent({
|
978 |
-
type: 'dp.error',
|
979 |
-
date: targetMoment,
|
980 |
-
oldDate: oldDate
|
981 |
-
});
|
982 |
-
}
|
983 |
-
},
|
984 |
-
|
985 |
-
/**
|
986 |
-
* Hides the widget. Possibly will emit dp.hide
|
987 |
-
*/
|
988 |
-
hide = function() {
|
989 |
-
var transitioning = false;
|
990 |
-
if( !widget ) {
|
991 |
-
return picker;
|
992 |
-
}
|
993 |
-
// Ignore event if in the middle of a picker transition
|
994 |
-
widget.find('.collapse').each(function() {
|
995 |
-
var collapseData = $(this).data('collapse');
|
996 |
-
if( collapseData && collapseData.transitioning ) {
|
997 |
-
transitioning = true;
|
998 |
-
return false;
|
999 |
-
}
|
1000 |
-
return true;
|
1001 |
-
});
|
1002 |
-
if( transitioning ) {
|
1003 |
-
return picker;
|
1004 |
-
}
|
1005 |
-
if( component && component.hasClass('btn') ) {
|
1006 |
-
component.toggleClass('active');
|
1007 |
-
}
|
1008 |
-
widget.hide();
|
1009 |
-
|
1010 |
-
$(window).off('resize', place);
|
1011 |
-
widget.off('click', '[data-action]');
|
1012 |
-
widget.off('mousedown', false);
|
1013 |
-
|
1014 |
-
widget.remove();
|
1015 |
-
widget = false;
|
1016 |
-
|
1017 |
-
notifyEvent({
|
1018 |
-
type: 'dp.hide',
|
1019 |
-
date: date.clone()
|
1020 |
-
});
|
1021 |
-
|
1022 |
-
input.blur();
|
1023 |
-
|
1024 |
-
viewDate = date.clone();
|
1025 |
-
|
1026 |
-
return picker;
|
1027 |
-
},
|
1028 |
-
|
1029 |
-
clear = function() {
|
1030 |
-
setValue(null);
|
1031 |
-
},
|
1032 |
-
|
1033 |
-
parseInputDate = function(inputDate) {
|
1034 |
-
if( options.parseInputDate === undefined ) {
|
1035 |
-
if( !moment.isMoment(inputDate) || inputDate instanceof Date ) {
|
1036 |
-
inputDate = getMoment(inputDate);
|
1037 |
-
}
|
1038 |
-
} else {
|
1039 |
-
inputDate = options.parseInputDate(inputDate);
|
1040 |
-
}
|
1041 |
-
//inputDate.locale(options.locale);
|
1042 |
-
return inputDate;
|
1043 |
-
},
|
1044 |
-
|
1045 |
-
/********************************************************************************
|
1046 |
-
*
|
1047 |
-
* Widget UI interaction functions
|
1048 |
-
*
|
1049 |
-
********************************************************************************/
|
1050 |
-
actions = {
|
1051 |
-
next: function() {
|
1052 |
-
var navFnc = datePickerModes[currentViewMode].navFnc;
|
1053 |
-
viewDate.add(datePickerModes[currentViewMode].navStep, navFnc);
|
1054 |
-
fillDate();
|
1055 |
-
viewUpdate(navFnc);
|
1056 |
-
},
|
1057 |
-
|
1058 |
-
previous: function() {
|
1059 |
-
var navFnc = datePickerModes[currentViewMode].navFnc;
|
1060 |
-
viewDate.subtract(datePickerModes[currentViewMode].navStep, navFnc);
|
1061 |
-
fillDate();
|
1062 |
-
viewUpdate(navFnc);
|
1063 |
-
},
|
1064 |
-
|
1065 |
-
pickerSwitch: function() {
|
1066 |
-
showMode(1);
|
1067 |
-
},
|
1068 |
-
|
1069 |
-
selectMonth: function(e) {
|
1070 |
-
var month = $(e.target).closest('tbody').find('span').index($(e.target));
|
1071 |
-
viewDate.month(month);
|
1072 |
-
if( currentViewMode === minViewModeNumber ) {
|
1073 |
-
setValue(date.clone().year(viewDate.year()).month(viewDate.month()));
|
1074 |
-
if( !options.inline ) {
|
1075 |
-
hide();
|
1076 |
-
}
|
1077 |
-
} else {
|
1078 |
-
showMode(-1);
|
1079 |
-
fillDate();
|
1080 |
-
}
|
1081 |
-
viewUpdate('M');
|
1082 |
-
},
|
1083 |
-
|
1084 |
-
selectYear: function(e) {
|
1085 |
-
var year = parseInt($(e.target).text(), 10) || 0;
|
1086 |
-
viewDate.year(year);
|
1087 |
-
if( currentViewMode === minViewModeNumber ) {
|
1088 |
-
setValue(date.clone().year(viewDate.year()));
|
1089 |
-
if( !options.inline ) {
|
1090 |
-
hide();
|
1091 |
-
}
|
1092 |
-
} else {
|
1093 |
-
showMode(-1);
|
1094 |
-
fillDate();
|
1095 |
-
}
|
1096 |
-
viewUpdate('YYYY');
|
1097 |
-
},
|
1098 |
-
|
1099 |
-
selectDecade: function(e) {
|
1100 |
-
var year = parseInt($(e.target).data('selection'), 10) || 0;
|
1101 |
-
viewDate.year(year);
|
1102 |
-
if( currentViewMode === minViewModeNumber ) {
|
1103 |
-
setValue(date.clone().year(viewDate.year()));
|
1104 |
-
if( !options.inline ) {
|
1105 |
-
hide();
|
1106 |
-
}
|
1107 |
-
} else {
|
1108 |
-
showMode(-1);
|
1109 |
-
fillDate();
|
1110 |
-
}
|
1111 |
-
viewUpdate('YYYY');
|
1112 |
-
},
|
1113 |
-
|
1114 |
-
selectDay: function(e) {
|
1115 |
-
var day = viewDate.clone();
|
1116 |
-
if( $(e.target).is('.old') ) {
|
1117 |
-
day.subtract(1, 'M');
|
1118 |
-
}
|
1119 |
-
if( $(e.target).is('.new') ) {
|
1120 |
-
day.add(1, 'M');
|
1121 |
-
}
|
1122 |
-
setValue(day.date(parseInt($(e.target).text(), 10)));
|
1123 |
-
if( !hasTime() && !options.keepOpen && !options.inline ) {
|
1124 |
-
hide();
|
1125 |
-
}
|
1126 |
-
},
|
1127 |
-
|
1128 |
-
incrementHours: function() {
|
1129 |
-
var newDate = date.clone().add(1, 'h');
|
1130 |
-
if( isValid(newDate, 'h') ) {
|
1131 |
-
setValue(newDate);
|
1132 |
-
}
|
1133 |
-
},
|
1134 |
-
|
1135 |
-
incrementMinutes: function() {
|
1136 |
-
var newDate = date.clone().add(options.stepping, 'm');
|
1137 |
-
if( isValid(newDate, 'm') ) {
|
1138 |
-
setValue(newDate);
|
1139 |
-
}
|
1140 |
-
},
|
1141 |
-
|
1142 |
-
incrementSeconds: function() {
|
1143 |
-
var newDate = date.clone().add(1, 's');
|
1144 |
-
if( isValid(newDate, 's') ) {
|
1145 |
-
setValue(newDate);
|
1146 |
-
}
|
1147 |
-
},
|
1148 |
-
|
1149 |
-
decrementHours: function() {
|
1150 |
-
var newDate = date.clone().subtract(1, 'h');
|
1151 |
-
if( isValid(newDate, 'h') ) {
|
1152 |
-
setValue(newDate);
|
1153 |
-
}
|
1154 |
-
},
|
1155 |
-
|
1156 |
-
decrementMinutes: function() {
|
1157 |
-
var newDate = date.clone().subtract(options.stepping, 'm');
|
1158 |
-
if( isValid(newDate, 'm') ) {
|
1159 |
-
setValue(newDate);
|
1160 |
-
}
|
1161 |
-
},
|
1162 |
-
|
1163 |
-
decrementSeconds: function() {
|
1164 |
-
var newDate = date.clone().subtract(1, 's');
|
1165 |
-
if( isValid(newDate, 's') ) {
|
1166 |
-
setValue(newDate);
|
1167 |
-
}
|
1168 |
-
},
|
1169 |
-
|
1170 |
-
togglePeriod: function() {
|
1171 |
-
setValue(date.clone().add((date.hours() >= 12) ? -12 : 12, 'h'));
|
1172 |
-
},
|
1173 |
-
|
1174 |
-
togglePicker: function(e) {
|
1175 |
-
var $this = $(e.target),
|
1176 |
-
$parent = $this.closest('ul'),
|
1177 |
-
expanded = $parent.find('.in'),
|
1178 |
-
closed = $parent.find('.collapse:not(.in)'),
|
1179 |
-
collapseData;
|
1180 |
-
|
1181 |
-
if( expanded && expanded.length ) {
|
1182 |
-
collapseData = expanded.data('collapse');
|
1183 |
-
if( collapseData && collapseData.transitioning ) {
|
1184 |
-
return;
|
1185 |
-
}
|
1186 |
-
if( expanded.collapse ) { // if collapse plugin is available through bootstrap.js then use it
|
1187 |
-
expanded.collapse('hide');
|
1188 |
-
closed.collapse('show');
|
1189 |
-
} else { // otherwise just toggle in class on the two views
|
1190 |
-
expanded.removeClass('in');
|
1191 |
-
closed.addClass('in');
|
1192 |
-
}
|
1193 |
-
if( $this.is('span') ) {
|
1194 |
-
$this.toggleClass(options.icons.time + ' ' + options.icons.date);
|
1195 |
-
} else {
|
1196 |
-
$this.find('span').toggleClass(options.icons.time + ' ' + options.icons.date);
|
1197 |
-
}
|
1198 |
-
|
1199 |
-
// NOTE: uncomment if toggled state will be restored in show()
|
1200 |
-
//if (component) {
|
1201 |
-
// component.find('span').toggleClass(options.icons.time + ' ' + options.icons.date);
|
1202 |
-
//}
|
1203 |
-
}
|
1204 |
-
},
|
1205 |
-
|
1206 |
-
showPicker: function() {
|
1207 |
-
widget.find('.timepicker > div:not(.timepicker-picker)').hide();
|
1208 |
-
widget.find('.timepicker .timepicker-picker').show();
|
1209 |
-
},
|
1210 |
-
|
1211 |
-
showHours: function() {
|
1212 |
-
widget.find('.timepicker .timepicker-picker').hide();
|
1213 |
-
widget.find('.timepicker .timepicker-hours').show();
|
1214 |
-
},
|
1215 |
-
|
1216 |
-
showMinutes: function() {
|
1217 |
-
widget.find('.timepicker .timepicker-picker').hide();
|
1218 |
-
widget.find('.timepicker .timepicker-minutes').show();
|
1219 |
-
},
|
1220 |
-
|
1221 |
-
showSeconds: function() {
|
1222 |
-
widget.find('.timepicker .timepicker-picker').hide();
|
1223 |
-
widget.find('.timepicker .timepicker-seconds').show();
|
1224 |
-
},
|
1225 |
-
|
1226 |
-
selectHour: function(e) {
|
1227 |
-
var hour = parseInt($(e.target).text(), 10);
|
1228 |
-
|
1229 |
-
if( !use24Hours ) {
|
1230 |
-
if( date.hours() >= 12 ) {
|
1231 |
-
if( hour !== 12 ) {
|
1232 |
-
hour += 12;
|
1233 |
-
}
|
1234 |
-
} else {
|
1235 |
-
if( hour === 12 ) {
|
1236 |
-
hour = 0;
|
1237 |
-
}
|
1238 |
-
}
|
1239 |
-
}
|
1240 |
-
setValue(date.clone().hours(hour));
|
1241 |
-
actions.showPicker.call(picker);
|
1242 |
-
},
|
1243 |
-
|
1244 |
-
selectMinute: function(e) {
|
1245 |
-
setValue(date.clone().minutes(parseInt($(e.target).text(), 10)));
|
1246 |
-
actions.showPicker.call(picker);
|
1247 |
-
},
|
1248 |
-
|
1249 |
-
selectSecond: function(e) {
|
1250 |
-
setValue(date.clone().seconds(parseInt($(e.target).text(), 10)));
|
1251 |
-
actions.showPicker.call(picker);
|
1252 |
-
},
|
1253 |
-
|
1254 |
-
clear: clear,
|
1255 |
-
|
1256 |
-
today: function() {
|
1257 |
-
var todaysDate = getMoment();
|
1258 |
-
if( isValid(todaysDate, 'd') ) {
|
1259 |
-
setValue(todaysDate);
|
1260 |
-
}
|
1261 |
-
},
|
1262 |
-
|
1263 |
-
close: hide
|
1264 |
-
},
|
1265 |
-
|
1266 |
-
doAction = function(e) {
|
1267 |
-
if( $(e.currentTarget).is('.disabled') ) {
|
1268 |
-
return false;
|
1269 |
-
}
|
1270 |
-
actions[$(e.currentTarget).data('action')].apply(picker, arguments);
|
1271 |
-
return false;
|
1272 |
-
},
|
1273 |
-
|
1274 |
-
/**
|
1275 |
-
* Shows the widget. Possibly will emit dp.show and dp.change
|
1276 |
-
*/
|
1277 |
-
show = function() {
|
1278 |
-
var currentMoment,
|
1279 |
-
useCurrentGranularity = {
|
1280 |
-
'year': function(m) {
|
1281 |
-
return m.month(0).date(1).hours(0).seconds(0).minutes(0);
|
1282 |
-
},
|
1283 |
-
'month': function(m) {
|
1284 |
-
return m.date(1).hours(0).seconds(0).minutes(0);
|
1285 |
-
},
|
1286 |
-
'day': function(m) {
|
1287 |
-
return m.hours(0).seconds(0).minutes(0);
|
1288 |
-
},
|
1289 |
-
'hour': function(m) {
|
1290 |
-
return m.seconds(0).minutes(0);
|
1291 |
-
},
|
1292 |
-
'minute': function(m) {
|
1293 |
-
return m.seconds(0);
|
1294 |
-
}
|
1295 |
-
};
|
1296 |
-
|
1297 |
-
if( input.prop('disabled') || (!options.ignoreReadonly && input.prop('readonly')) || widget ) {
|
1298 |
-
return picker;
|
1299 |
-
}
|
1300 |
-
if( input.val() !== undefined && input.val().trim().length !== 0 ) {
|
1301 |
-
setValue(parseInputDate(input.val().trim()));
|
1302 |
-
} else if( unset && options.useCurrent && (options.inline || (input.is('input') && input.val().trim().length === 0)) ) {
|
1303 |
-
currentMoment = getMoment();
|
1304 |
-
if( typeof options.useCurrent === 'string' ) {
|
1305 |
-
currentMoment = useCurrentGranularity[options.useCurrent](currentMoment);
|
1306 |
-
}
|
1307 |
-
setValue(currentMoment);
|
1308 |
-
}
|
1309 |
-
widget = getTemplate();
|
1310 |
-
|
1311 |
-
fillDow();
|
1312 |
-
fillMonths();
|
1313 |
-
|
1314 |
-
widget.find('.timepicker-hours').hide();
|
1315 |
-
widget.find('.timepicker-minutes').hide();
|
1316 |
-
widget.find('.timepicker-seconds').hide();
|
1317 |
-
|
1318 |
-
update();
|
1319 |
-
showMode();
|
1320 |
-
|
1321 |
-
$(window).on('resize', place);
|
1322 |
-
widget.on('click', '[data-action]', doAction); // this handles clicks on the widget
|
1323 |
-
widget.on('mousedown', false);
|
1324 |
-
|
1325 |
-
if( component && component.hasClass('btn') ) {
|
1326 |
-
component.toggleClass('active');
|
1327 |
-
}
|
1328 |
-
place();
|
1329 |
-
widget.show();
|
1330 |
-
if( options.focusOnShow && !input.is(':focus') ) {
|
1331 |
-
input.focus();
|
1332 |
-
}
|
1333 |
-
|
1334 |
-
notifyEvent({
|
1335 |
-
type: 'dp.show'
|
1336 |
-
});
|
1337 |
-
return picker;
|
1338 |
-
},
|
1339 |
-
|
1340 |
-
/**
|
1341 |
-
* Shows or hides the widget
|
1342 |
-
*/
|
1343 |
-
toggle = function() {
|
1344 |
-
return (widget ? hide() : show());
|
1345 |
-
},
|
1346 |
-
|
1347 |
-
keydown = function(e) {
|
1348 |
-
var handler = null,
|
1349 |
-
index,
|
1350 |
-
index2,
|
1351 |
-
pressedKeys = [],
|
1352 |
-
pressedModifiers = {},
|
1353 |
-
currentKey = e.which,
|
1354 |
-
keyBindKeys,
|
1355 |
-
allModifiersPressed,
|
1356 |
-
pressed = 'p';
|
1357 |
-
|
1358 |
-
keyState[currentKey] = pressed;
|
1359 |
-
|
1360 |
-
for( index in keyState ) {
|
1361 |
-
if( keyState.hasOwnProperty(index) && keyState[index] === pressed ) {
|
1362 |
-
pressedKeys.push(index);
|
1363 |
-
if( parseInt(index, 10) !== currentKey ) {
|
1364 |
-
pressedModifiers[index] = true;
|
1365 |
-
}
|
1366 |
-
}
|
1367 |
-
}
|
1368 |
-
|
1369 |
-
for( index in options.keyBinds ) {
|
1370 |
-
if( options.keyBinds.hasOwnProperty(index) && typeof (options.keyBinds[index]) === 'function' ) {
|
1371 |
-
keyBindKeys = index.split(' ');
|
1372 |
-
if( keyBindKeys.length === pressedKeys.length && keyMap[currentKey] === keyBindKeys[keyBindKeys.length - 1] ) {
|
1373 |
-
allModifiersPressed = true;
|
1374 |
-
for( index2 = keyBindKeys.length - 2; index2 >= 0; index2-- ) {
|
1375 |
-
if( !(keyMap[keyBindKeys[index2]] in pressedModifiers) ) {
|
1376 |
-
allModifiersPressed = false;
|
1377 |
-
break;
|
1378 |
-
}
|
1379 |
-
}
|
1380 |
-
if( allModifiersPressed ) {
|
1381 |
-
handler = options.keyBinds[index];
|
1382 |
-
break;
|
1383 |
-
}
|
1384 |
-
}
|
1385 |
-
}
|
1386 |
-
}
|
1387 |
-
|
1388 |
-
if( handler ) {
|
1389 |
-
handler.call(picker, widget);
|
1390 |
-
e.stopPropagation();
|
1391 |
-
e.preventDefault();
|
1392 |
-
}
|
1393 |
-
},
|
1394 |
-
|
1395 |
-
keyup = function(e) {
|
1396 |
-
keyState[e.which] = 'r';
|
1397 |
-
e.stopPropagation();
|
1398 |
-
e.preventDefault();
|
1399 |
-
},
|
1400 |
-
|
1401 |
-
change = function(e) {
|
1402 |
-
var val = $(e.target).val().trim(),
|
1403 |
-
parsedDate = val ? parseInputDate(val) : null;
|
1404 |
-
setValue(parsedDate);
|
1405 |
-
e.stopImmediatePropagation();
|
1406 |
-
return false;
|
1407 |
-
},
|
1408 |
-
|
1409 |
-
attachDatePickerElementEvents = function() {
|
1410 |
-
input.on({
|
1411 |
-
'change': change,
|
1412 |
-
'blur': options.debug ? '' : hide,
|
1413 |
-
'keydown': keydown,
|
1414 |
-
'keyup': keyup,
|
1415 |
-
'focus': options.allowInputToggle ? show : ''
|
1416 |
-
});
|
1417 |
-
|
1418 |
-
if( element.is('input') ) {
|
1419 |
-
input.on({
|
1420 |
-
'focus': show
|
1421 |
-
});
|
1422 |
-
} else if( component ) {
|
1423 |
-
component.on('click', toggle);
|
1424 |
-
component.on('mousedown', false);
|
1425 |
-
}
|
1426 |
-
},
|
1427 |
-
|
1428 |
-
detachDatePickerElementEvents = function() {
|
1429 |
-
input.off({
|
1430 |
-
'change': change,
|
1431 |
-
'blur': blur,
|
1432 |
-
'keydown': keydown,
|
1433 |
-
'keyup': keyup,
|
1434 |
-
'focus': options.allowInputToggle ? hide : ''
|
1435 |
-
});
|
1436 |
-
|
1437 |
-
if( element.is('input') ) {
|
1438 |
-
input.off({
|
1439 |
-
'focus': show
|
1440 |
-
});
|
1441 |
-
} else if( component ) {
|
1442 |
-
component.off('click', toggle);
|
1443 |
-
component.off('mousedown', false);
|
1444 |
-
}
|
1445 |
-
},
|
1446 |
-
|
1447 |
-
indexGivenDates = function(givenDatesArray) {
|
1448 |
-
// Store given enabledDates and disabledDates as keys.
|
1449 |
-
// This way we can check their existence in O(1) time instead of looping through whole array.
|
1450 |
-
// (for example: options.enabledDates['2014-02-27'] === true)
|
1451 |
-
var givenDatesIndexed = {};
|
1452 |
-
$.each(givenDatesArray, function() {
|
1453 |
-
var dDate = parseInputDate(this);
|
1454 |
-
if( dDate.isValid() ) {
|
1455 |
-
givenDatesIndexed[dDate.format('YYYY-MM-DD')] = true;
|
1456 |
-
}
|
1457 |
-
});
|
1458 |
-
return (Object.keys(givenDatesIndexed).length) ? givenDatesIndexed : false;
|
1459 |
-
},
|
1460 |
-
|
1461 |
-
indexGivenHours = function(givenHoursArray) {
|
1462 |
-
// Store given enabledHours and disabledHours as keys.
|
1463 |
-
// This way we can check their existence in O(1) time instead of looping through whole array.
|
1464 |
-
// (for example: options.enabledHours['2014-02-27'] === true)
|
1465 |
-
var givenHoursIndexed = {};
|
1466 |
-
$.each(givenHoursArray, function() {
|
1467 |
-
givenHoursIndexed[this] = true;
|
1468 |
-
});
|
1469 |
-
return (Object.keys(givenHoursIndexed).length) ? givenHoursIndexed : false;
|
1470 |
-
},
|
1471 |
-
|
1472 |
-
initFormatting = function() {
|
1473 |
-
var format = options.format || 'L LT';
|
1474 |
-
|
1475 |
-
actualFormat = format.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, function(formatInput) {
|
1476 |
-
var newinput = date.localeData().longDateFormat(formatInput) || formatInput;
|
1477 |
-
return newinput.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, function(formatInput2) { //temp fix for #740
|
1478 |
-
return date.localeData().longDateFormat(formatInput2) || formatInput2;
|
1479 |
-
});
|
1480 |
-
});
|
1481 |
-
|
1482 |
-
parseFormats = options.extraFormats ? options.extraFormats.slice() : [];
|
1483 |
-
if( parseFormats.indexOf(format) < 0 && parseFormats.indexOf(actualFormat) < 0 ) {
|
1484 |
-
parseFormats.push(actualFormat);
|
1485 |
-
}
|
1486 |
-
|
1487 |
-
use24Hours = (actualFormat.toLowerCase().indexOf('a') < 1 && actualFormat.replace(/\[.*?\]/g, '').indexOf('h') < 1);
|
1488 |
-
|
1489 |
-
if( isEnabled('y') ) {
|
1490 |
-
minViewModeNumber = 2;
|
1491 |
-
}
|
1492 |
-
if( isEnabled('M') ) {
|
1493 |
-
minViewModeNumber = 1;
|
1494 |
-
}
|
1495 |
-
if( isEnabled('d') ) {
|
1496 |
-
minViewModeNumber = 0;
|
1497 |
-
}
|
1498 |
-
|
1499 |
-
currentViewMode = Math.max(minViewModeNumber, currentViewMode);
|
1500 |
-
|
1501 |
-
if( !unset ) {
|
1502 |
-
setValue(date);
|
1503 |
-
}
|
1504 |
-
};
|
1505 |
-
|
1506 |
-
/********************************************************************************
|
1507 |
-
*
|
1508 |
-
* Public API functions
|
1509 |
-
* =====================
|
1510 |
-
*
|
1511 |
-
* Important: Do not expose direct references to private objects or the options
|
1512 |
-
* object to the outer world. Always return a clone when returning values or make
|
1513 |
-
* a clone when setting a private variable.
|
1514 |
-
*
|
1515 |
-
********************************************************************************/
|
1516 |
-
picker.destroy = function() {
|
1517 |
-
///<summary>Destroys the widget and removes all attached event listeners</summary>
|
1518 |
-
hide();
|
1519 |
-
detachDatePickerElementEvents();
|
1520 |
-
element.removeData('DateTimePicker');
|
1521 |
-
element.removeData('date');
|
1522 |
-
};
|
1523 |
-
|
1524 |
-
picker.toggle = toggle;
|
1525 |
-
|
1526 |
-
picker.show = show;
|
1527 |
-
|
1528 |
-
picker.hide = hide;
|
1529 |
-
|
1530 |
-
picker.disable = function() {
|
1531 |
-
///<summary>Disables the input element, the component is attached to, by adding a disabled="true" attribute
|
1532 |
-
// to it. /If the widget was visible before that call it is hidden. Possibly emits dp.hide</summary>
|
1533 |
-
hide();
|
1534 |
-
if( component && component.hasClass('btn') ) {
|
1535 |
-
component.addClass('disabled');
|
1536 |
-
}
|
1537 |
-
input.prop('disabled', true);
|
1538 |
-
return picker;
|
1539 |
-
};
|
1540 |
-
|
1541 |
-
picker.enable = function() {
|
1542 |
-
///<summary>Enables the input element, the component is attached to, by removing disabled attribute from
|
1543 |
-
// it.</summary>
|
1544 |
-
if( component && component.hasClass('btn') ) {
|
1545 |
-
component.removeClass('disabled');
|
1546 |
-
}
|
1547 |
-
input.prop('disabled', false);
|
1548 |
-
return picker;
|
1549 |
-
};
|
1550 |
-
|
1551 |
-
picker.ignoreReadonly = function(ignoreReadonly) {
|
1552 |
-
if( arguments.length === 0 ) {
|
1553 |
-
return options.ignoreReadonly;
|
1554 |
-
}
|
1555 |
-
if( typeof ignoreReadonly !== 'boolean' ) {
|
1556 |
-
throw new TypeError('ignoreReadonly () expects a boolean parameter');
|
1557 |
-
}
|
1558 |
-
options.ignoreReadonly = ignoreReadonly;
|
1559 |
-
return picker;
|
1560 |
-
};
|
1561 |
-
|
1562 |
-
picker.options = function(newOptions) {
|
1563 |
-
if( arguments.length === 0 ) {
|
1564 |
-
return $.extend(true, {}, options);
|
1565 |
-
}
|
1566 |
-
|
1567 |
-
if( !(newOptions instanceof Object) ) {
|
1568 |
-
throw new TypeError('options() options parameter should be an object');
|
1569 |
-
}
|
1570 |
-
$.extend(true, options, newOptions);
|
1571 |
-
$.each(options, function(key, value) {
|
1572 |
-
if( picker[key] !== undefined ) {
|
1573 |
-
picker[key](value);
|
1574 |
-
} else {
|
1575 |
-
throw new TypeError('option ' + key + ' is not recognized!');
|
1576 |
-
}
|
1577 |
-
});
|
1578 |
-
return picker;
|
1579 |
-
};
|
1580 |
-
|
1581 |
-
picker.date = function(newDate) {
|
1582 |
-
///<signature helpKeyword="$.fn.factoryBootstrap330_DatetimePickerControl.date">
|
1583 |
-
///<summary>Returns the component's model current date, a moment object or null if not set.</summary>
|
1584 |
-
///<returns type="Moment">date.clone()</returns>
|
1585 |
-
///</signature>
|
1586 |
-
///<signature>
|
1587 |
-
///<summary>Sets the components model current moment to it. Passing a null value unsets the components
|
1588 |
-
// model current moment. Parsing of the newDate parameter is made using moment library with the
|
1589 |
-
// options.format and options.useStrict components configuration.</summary> /<param name="newDate"
|
1590 |
-
// locid="$.fn.factoryBootstrap330_DatetimePickerControl.date_p:newDate">Takes string, Date, moment, null
|
1591 |
-
// parameter.</param> /</signature>
|
1592 |
-
if( arguments.length === 0 ) {
|
1593 |
-
if( unset ) {
|
1594 |
-
return null;
|
1595 |
-
}
|
1596 |
-
return date.clone();
|
1597 |
-
}
|
1598 |
-
|
1599 |
-
if( newDate !== null && typeof newDate !== 'string' && !moment.isMoment(newDate) && !(newDate instanceof Date) ) {
|
1600 |
-
throw new TypeError('date() parameter must be one of [null, string, moment or Date]');
|
1601 |
-
}
|
1602 |
-
|
1603 |
-
setValue(newDate === null ? null : parseInputDate(newDate));
|
1604 |
-
return picker;
|
1605 |
-
};
|
1606 |
-
|
1607 |
-
picker.format = function(newFormat) {
|
1608 |
-
///<summary>test su</summary>
|
1609 |
-
///<param name="newFormat">info about para</param>
|
1610 |
-
///<returns type="string|boolean">returns foo</returns>
|
1611 |
-
if( arguments.length === 0 ) {
|
1612 |
-
return options.format;
|
1613 |
-
}
|
1614 |
-
|
1615 |
-
if( (typeof newFormat !== 'string') && ((typeof newFormat !== 'boolean') || (newFormat !== false)) ) {
|
1616 |
-
throw new TypeError('format() expects a string or boolean:false parameter ' + newFormat);
|
1617 |
-
}
|
1618 |
-
|
1619 |
-
options.format = newFormat;
|
1620 |
-
if( actualFormat ) {
|
1621 |
-
initFormatting(); // reinit formatting
|
1622 |
-
}
|
1623 |
-
return picker;
|
1624 |
-
};
|
1625 |
-
|
1626 |
-
picker.timeZone = function(newZone) {
|
1627 |
-
if( arguments.length === 0 ) {
|
1628 |
-
return options.timeZone;
|
1629 |
-
}
|
1630 |
-
|
1631 |
-
if( typeof newZone !== 'string' ) {
|
1632 |
-
throw new TypeError('newZone() expects a string parameter');
|
1633 |
-
}
|
1634 |
-
|
1635 |
-
options.timeZone = newZone;
|
1636 |
-
|
1637 |
-
return picker;
|
1638 |
-
};
|
1639 |
-
|
1640 |
-
picker.dayViewHeaderFormat = function(newFormat) {
|
1641 |
-
if( arguments.length === 0 ) {
|
1642 |
-
return options.dayViewHeaderFormat;
|
1643 |
-
}
|
1644 |
-
|
1645 |
-
if( typeof newFormat !== 'string' ) {
|
1646 |
-
throw new TypeError('dayViewHeaderFormat() expects a string parameter');
|
1647 |
-
}
|
1648 |
-
|
1649 |
-
options.dayViewHeaderFormat = newFormat;
|
1650 |
-
return picker;
|
1651 |
-
};
|
1652 |
-
|
1653 |
-
picker.extraFormats = function(formats) {
|
1654 |
-
if( arguments.length === 0 ) {
|
1655 |
-
return options.extraFormats;
|
1656 |
-
}
|
1657 |
-
|
1658 |
-
if( formats !== false && !(formats instanceof Array) ) {
|
1659 |
-
throw new TypeError('extraFormats() expects an array or false parameter');
|
1660 |
-
}
|
1661 |
-
|
1662 |
-
options.extraFormats = formats;
|
1663 |
-
if( parseFormats ) {
|
1664 |
-
initFormatting(); // reinit formatting
|
1665 |
-
}
|
1666 |
-
return picker;
|
1667 |
-
};
|
1668 |
-
|
1669 |
-
picker.disabledDates = function(dates) {
|
1670 |
-
///<signature helpKeyword="$.fn.factoryBootstrap330_DatetimePickerControl.disabledDates">
|
1671 |
-
///<summary>Returns an array with the currently set disabled dates on the component.</summary>
|
1672 |
-
///<returns type="array">options.disabledDates</returns>
|
1673 |
-
///</signature>
|
1674 |
-
///<signature>
|
1675 |
-
///<summary>Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling
|
1676 |
-
// this function removes the configuration of /options.enabledDates if such exist.</summary> /<param
|
1677 |
-
// name="dates" locid="$.fn.factoryBootstrap330_DatetimePickerControl.disabledDates_p:dates">Takes an [
|
1678 |
-
// string or Date or moment ] of values and allows the user to select only from those days.</param>
|
1679 |
-
// /</signature>
|
1680 |
-
if( arguments.length === 0 ) {
|
1681 |
-
return (options.disabledDates ? $.extend({}, options.disabledDates) : options.disabledDates);
|
1682 |
-
}
|
1683 |
-
|
1684 |
-
if( !dates ) {
|
1685 |
-
options.disabledDates = false;
|
1686 |
-
update();
|
1687 |
-
return picker;
|
1688 |
-
}
|
1689 |
-
if( !(dates instanceof Array) ) {
|
1690 |
-
throw new TypeError('disabledDates() expects an array parameter');
|
1691 |
-
}
|
1692 |
-
options.disabledDates = indexGivenDates(dates);
|
1693 |
-
options.enabledDates = false;
|
1694 |
-
update();
|
1695 |
-
return picker;
|
1696 |
-
};
|
1697 |
-
|
1698 |
-
picker.enabledDates = function(dates) {
|
1699 |
-
///<signature helpKeyword="$.fn.factoryBootstrap330_DatetimePickerControl.enabledDates">
|
1700 |
-
///<summary>Returns an array with the currently set enabled dates on the component.</summary>
|
1701 |
-
///<returns type="array">options.enabledDates</returns>
|
1702 |
-
///</signature>
|
1703 |
-
///<signature>
|
1704 |
-
///<summary>Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling
|
1705 |
-
// this function removes the configuration of options.disabledDates if such exist.</summary> /<param
|
1706 |
-
// name="dates" locid="$.fn.factoryBootstrap330_DatetimePickerControl.enabledDates_p:dates">Takes an [
|
1707 |
-
// string or Date or moment ] of values and allows the user to select only from those days.</param>
|
1708 |
-
// /</signature>
|
1709 |
-
if( arguments.length === 0 ) {
|
1710 |
-
return (options.enabledDates ? $.extend({}, options.enabledDates) : options.enabledDates);
|
1711 |
-
}
|
1712 |
-
|
1713 |
-
if( !dates ) {
|
1714 |
-
options.enabledDates = false;
|
1715 |
-
update();
|
1716 |
-
return picker;
|
1717 |
-
}
|
1718 |
-
if( !(dates instanceof Array) ) {
|
1719 |
-
throw new TypeError('enabledDates() expects an array parameter');
|
1720 |
-
}
|
1721 |
-
options.enabledDates = indexGivenDates(dates);
|
1722 |
-
options.disabledDates = false;
|
1723 |
-
update();
|
1724 |
-
return picker;
|
1725 |
-
};
|
1726 |
-
|
1727 |
-
picker.daysOfWeekDisabled = function(daysOfWeekDisabled) {
|
1728 |
-
if( arguments.length === 0 ) {
|
1729 |
-
return options.daysOfWeekDisabled.splice(0);
|
1730 |
-
}
|
1731 |
-
|
1732 |
-
if( (typeof daysOfWeekDisabled === 'boolean') && !daysOfWeekDisabled ) {
|
1733 |
-
options.daysOfWeekDisabled = false;
|
1734 |
-
update();
|
1735 |
-
return picker;
|
1736 |
-
}
|
1737 |
-
|
1738 |
-
if( !(daysOfWeekDisabled instanceof Array) ) {
|
1739 |
-
throw new TypeError('daysOfWeekDisabled() expects an array parameter');
|
1740 |
-
}
|
1741 |
-
options.daysOfWeekDisabled = daysOfWeekDisabled.reduce(function(previousValue, currentValue) {
|
1742 |
-
currentValue = parseInt(currentValue, 10);
|
1743 |
-
if( currentValue > 6 || currentValue < 0 || isNaN(currentValue) ) {
|
1744 |
-
return previousValue;
|
1745 |
-
}
|
1746 |
-
if( previousValue.indexOf(currentValue) === -1 ) {
|
1747 |
-
previousValue.push(currentValue);
|
1748 |
-
}
|
1749 |
-
return previousValue;
|
1750 |
-
}, []).sort();
|
1751 |
-
if( options.useCurrent && !options.keepInvalid ) {
|
1752 |
-
var tries = 0;
|
1753 |
-
while( !isValid(date, 'd') ) {
|
1754 |
-
date.add(1, 'd');
|
1755 |
-
if( tries === 31 ) {
|
1756 |
-
throw 'Tried 31 times to find a valid date';
|
1757 |
-
}
|
1758 |
-
tries++;
|
1759 |
-
}
|
1760 |
-
setValue(date);
|
1761 |
-
}
|
1762 |
-
update();
|
1763 |
-
return picker;
|
1764 |
-
};
|
1765 |
-
|
1766 |
-
picker.maxDate = function(maxDate) {
|
1767 |
-
if( arguments.length === 0 ) {
|
1768 |
-
return options.maxDate ? options.maxDate.clone() : options.maxDate;
|
1769 |
-
}
|
1770 |
-
|
1771 |
-
if( (typeof maxDate === 'boolean') && maxDate === false ) {
|
1772 |
-
options.maxDate = false;
|
1773 |
-
update();
|
1774 |
-
return picker;
|
1775 |
-
}
|
1776 |
-
|
1777 |
-
if( typeof maxDate === 'string' ) {
|
1778 |
-
if( maxDate === 'now' || maxDate === 'moment' ) {
|
1779 |
-
maxDate = getMoment();
|
1780 |
-
}
|
1781 |
-
}
|
1782 |
-
|
1783 |
-
var parsedDate = parseInputDate(maxDate);
|
1784 |
-
|
1785 |
-
if( !parsedDate.isValid() ) {
|
1786 |
-
throw new TypeError('maxDate() Could not parse date parameter: ' + maxDate);
|
1787 |
-
}
|
1788 |
-
if( options.minDate && parsedDate.isBefore(options.minDate) ) {
|
1789 |
-
throw new TypeError('maxDate() date parameter is before options.minDate: ' + parsedDate.format(actualFormat));
|
1790 |
-
}
|
1791 |
-
options.maxDate = parsedDate;
|
1792 |
-
if( options.useCurrent && !options.keepInvalid && date.isAfter(maxDate) ) {
|
1793 |
-
setValue(options.maxDate);
|
1794 |
-
}
|
1795 |
-
if( viewDate.isAfter(parsedDate) ) {
|
1796 |
-
viewDate = parsedDate.clone().subtract(options.stepping, 'm');
|
1797 |
-
}
|
1798 |
-
update();
|
1799 |
-
return picker;
|
1800 |
-
};
|
1801 |
-
|
1802 |
-
picker.minDate = function(minDate) {
|
1803 |
-
if( arguments.length === 0 ) {
|
1804 |
-
return options.minDate ? options.minDate.clone() : options.minDate;
|
1805 |
-
}
|
1806 |
-
|
1807 |
-
if( (typeof minDate === 'boolean') && minDate === false ) {
|
1808 |
-
options.minDate = false;
|
1809 |
-
update();
|
1810 |
-
return picker;
|
1811 |
-
}
|
1812 |
-
|
1813 |
-
if( typeof minDate === 'string' ) {
|
1814 |
-
if( minDate === 'now' || minDate === 'moment' ) {
|
1815 |
-
minDate = getMoment();
|
1816 |
-
}
|
1817 |
-
}
|
1818 |
-
|
1819 |
-
var parsedDate = parseInputDate(minDate);
|
1820 |
-
|
1821 |
-
if( !parsedDate.isValid() ) {
|
1822 |
-
throw new TypeError('minDate() Could not parse date parameter: ' + minDate);
|
1823 |
-
}
|
1824 |
-
if( options.maxDate && parsedDate.isAfter(options.maxDate) ) {
|
1825 |
-
throw new TypeError('minDate() date parameter is after options.maxDate: ' + parsedDate.format(actualFormat));
|
1826 |
-
}
|
1827 |
-
options.minDate = parsedDate;
|
1828 |
-
if( options.useCurrent && !options.keepInvalid && date.isBefore(minDate) ) {
|
1829 |
-
setValue(options.minDate);
|
1830 |
-
}
|
1831 |
-
if( viewDate.isBefore(parsedDate) ) {
|
1832 |
-
viewDate = parsedDate.clone().add(options.stepping, 'm');
|
1833 |
-
}
|
1834 |
-
update();
|
1835 |
-
return picker;
|
1836 |
-
};
|
1837 |
-
|
1838 |
-
picker.defaultDate = function(defaultDate) {
|
1839 |
-
///<signature helpKeyword="$.fn.factoryBootstrap330_DatetimePickerControl.defaultDate">
|
1840 |
-
///<summary>Returns a moment with the options.defaultDate option configuration or false if not
|
1841 |
-
// set</summary>
|
1842 |
-
///<returns type="Moment">date.clone()</returns>
|
1843 |
-
///</signature>
|
1844 |
-
///<signature>
|
1845 |
-
///<summary>Will set the picker's inital date. If a boolean:false value is passed the options.defaultDate
|
1846 |
-
// parameter is cleared.</summary> /<param name="defaultDate"
|
1847 |
-
// locid="$.fn.factoryBootstrap330_DatetimePickerControl.defaultDate_p:defaultDate">Takes a string, Date,
|
1848 |
-
// moment, boolean:false</param> /</signature>
|
1849 |
-
if( arguments.length === 0 ) {
|
1850 |
-
return options.defaultDate ? options.defaultDate.clone() : options.defaultDate;
|
1851 |
-
}
|
1852 |
-
if( !defaultDate ) {
|
1853 |
-
options.defaultDate = false;
|
1854 |
-
return picker;
|
1855 |
-
}
|
1856 |
-
|
1857 |
-
if( typeof defaultDate === 'string' ) {
|
1858 |
-
if( defaultDate === 'now' || defaultDate === 'moment' ) {
|
1859 |
-
defaultDate = getMoment();
|
1860 |
-
} else {
|
1861 |
-
defaultDate = getMoment(defaultDate);
|
1862 |
-
}
|
1863 |
-
}
|
1864 |
-
|
1865 |
-
var parsedDate = parseInputDate(defaultDate);
|
1866 |
-
if( !parsedDate.isValid() ) {
|
1867 |
-
throw new TypeError('defaultDate() Could not parse date parameter: ' + defaultDate);
|
1868 |
-
}
|
1869 |
-
if( !isValid(parsedDate) ) {
|
1870 |
-
throw new TypeError('defaultDate() date passed is invalid according to component setup validations');
|
1871 |
-
}
|
1872 |
-
|
1873 |
-
options.defaultDate = parsedDate;
|
1874 |
-
|
1875 |
-
if( (options.defaultDate && options.inline) || input.val().trim() === '' ) {
|
1876 |
-
setValue(options.defaultDate);
|
1877 |
-
}
|
1878 |
-
return picker;
|
1879 |
-
};
|
1880 |
-
|
1881 |
-
picker.locale = function(locale) {
|
1882 |
-
if( arguments.length === 0 ) {
|
1883 |
-
return options.locale;
|
1884 |
-
}
|
1885 |
-
|
1886 |
-
if( !moment.localeData(locale) ) {
|
1887 |
-
throw new TypeError('locale() locale ' + locale + ' is not loaded from moment locales!');
|
1888 |
-
}
|
1889 |
-
|
1890 |
-
options.locale = locale;
|
1891 |
-
date.locale(options.locale);
|
1892 |
-
viewDate.locale(options.locale);
|
1893 |
-
|
1894 |
-
if( actualFormat ) {
|
1895 |
-
initFormatting(); // reinit formatting
|
1896 |
-
}
|
1897 |
-
if( widget ) {
|
1898 |
-
hide();
|
1899 |
-
show();
|
1900 |
-
}
|
1901 |
-
return picker;
|
1902 |
-
};
|
1903 |
-
|
1904 |
-
picker.stepping = function(stepping) {
|
1905 |
-
if( arguments.length === 0 ) {
|
1906 |
-
return options.stepping;
|
1907 |
-
}
|
1908 |
-
|
1909 |
-
stepping = parseInt(stepping, 10);
|
1910 |
-
if( isNaN(stepping) || stepping < 1 ) {
|
1911 |
-
stepping = 1;
|
1912 |
-
}
|
1913 |
-
options.stepping = stepping;
|
1914 |
-
return picker;
|
1915 |
-
};
|
1916 |
-
|
1917 |
-
picker.useCurrent = function(useCurrent) {
|
1918 |
-
var useCurrentOptions = ['year', 'month', 'day', 'hour', 'minute'];
|
1919 |
-
if( arguments.length === 0 ) {
|
1920 |
-
return options.useCurrent;
|
1921 |
-
}
|
1922 |
-
|
1923 |
-
if( (typeof useCurrent !== 'boolean') && (typeof useCurrent !== 'string') ) {
|
1924 |
-
throw new TypeError('useCurrent() expects a boolean or string parameter');
|
1925 |
-
}
|
1926 |
-
if( typeof useCurrent === 'string' && useCurrentOptions.indexOf(useCurrent.toLowerCase()) === -1 ) {
|
1927 |
-
throw new TypeError('useCurrent() expects a string parameter of ' + useCurrentOptions.join(', '));
|
1928 |
-
}
|
1929 |
-
options.useCurrent = useCurrent;
|
1930 |
-
return picker;
|
1931 |
-
};
|
1932 |
-
|
1933 |
-
picker.collapse = function(collapse) {
|
1934 |
-
if( arguments.length === 0 ) {
|
1935 |
-
return options.collapse;
|
1936 |
-
}
|
1937 |
-
|
1938 |
-
if( typeof collapse !== 'boolean' ) {
|
1939 |
-
throw new TypeError('collapse() expects a boolean parameter');
|
1940 |
-
}
|
1941 |
-
if( options.collapse === collapse ) {
|
1942 |
-
return picker;
|
1943 |
-
}
|
1944 |
-
options.collapse = collapse;
|
1945 |
-
if( widget ) {
|
1946 |
-
hide();
|
1947 |
-
show();
|
1948 |
-
}
|
1949 |
-
return picker;
|
1950 |
-
};
|
1951 |
-
|
1952 |
-
picker.icons = function(icons) {
|
1953 |
-
if( arguments.length === 0 ) {
|
1954 |
-
return $.extend({}, options.icons);
|
1955 |
-
}
|
1956 |
-
|
1957 |
-
if( !(icons instanceof Object) ) {
|
1958 |
-
throw new TypeError('icons() expects parameter to be an Object');
|
1959 |
-
}
|
1960 |
-
$.extend(options.icons, icons);
|
1961 |
-
if( widget ) {
|
1962 |
-
hide();
|
1963 |
-
show();
|
1964 |
-
}
|
1965 |
-
return picker;
|
1966 |
-
};
|
1967 |
-
|
1968 |
-
picker.tooltips = function(tooltips) {
|
1969 |
-
if( arguments.length === 0 ) {
|
1970 |
-
return $.extend({}, options.tooltips);
|
1971 |
-
}
|
1972 |
-
|
1973 |
-
if( !(tooltips instanceof Object) ) {
|
1974 |
-
throw new TypeError('tooltips() expects parameter to be an Object');
|
1975 |
-
}
|
1976 |
-
$.extend(options.tooltips, tooltips);
|
1977 |
-
if( widget ) {
|
1978 |
-
hide();
|
1979 |
-
show();
|
1980 |
-
}
|
1981 |
-
return picker;
|
1982 |
-
};
|
1983 |
-
|
1984 |
-
picker.useStrict = function(useStrict) {
|
1985 |
-
if( arguments.length === 0 ) {
|
1986 |
-
return options.useStrict;
|
1987 |
-
}
|
1988 |
-
|
1989 |
-
if( typeof useStrict !== 'boolean' ) {
|
1990 |
-
throw new TypeError('useStrict() expects a boolean parameter');
|
1991 |
-
}
|
1992 |
-
options.useStrict = useStrict;
|
1993 |
-
return picker;
|
1994 |
-
};
|
1995 |
-
|
1996 |
-
picker.sideBySide = function(sideBySide) {
|
1997 |
-
if( arguments.length === 0 ) {
|
1998 |
-
return options.sideBySide;
|
1999 |
-
}
|
2000 |
-
|
2001 |
-
if( typeof sideBySide !== 'boolean' ) {
|
2002 |
-
throw new TypeError('sideBySide() expects a boolean parameter');
|
2003 |
-
}
|
2004 |
-
options.sideBySide = sideBySide;
|
2005 |
-
if( widget ) {
|
2006 |
-
hide();
|
2007 |
-
show();
|
2008 |
-
}
|
2009 |
-
return picker;
|
2010 |
-
};
|
2011 |
-
|
2012 |
-
picker.viewMode = function(viewMode) {
|
2013 |
-
if( arguments.length === 0 ) {
|
2014 |
-
return options.viewMode;
|
2015 |
-
}
|
2016 |
-
|
2017 |
-
if( typeof viewMode !== 'string' ) {
|
2018 |
-
throw new TypeError('viewMode() expects a string parameter');
|
2019 |
-
}
|
2020 |
-
|
2021 |
-
if( viewModes.indexOf(viewMode) === -1 ) {
|
2022 |
-
throw new TypeError('viewMode() parameter must be one of (' + viewModes.join(', ') + ') value');
|
2023 |
-
}
|
2024 |
-
|
2025 |
-
options.viewMode = viewMode;
|
2026 |
-
currentViewMode = Math.max(viewModes.indexOf(viewMode), minViewModeNumber);
|
2027 |
-
|
2028 |
-
showMode();
|
2029 |
-
return picker;
|
2030 |
-
};
|
2031 |
-
|
2032 |
-
picker.toolbarPlacement = function(toolbarPlacement) {
|
2033 |
-
if( arguments.length === 0 ) {
|
2034 |
-
return options.toolbarPlacement;
|
2035 |
-
}
|
2036 |
-
|
2037 |
-
if( typeof toolbarPlacement !== 'string' ) {
|
2038 |
-
throw new TypeError('toolbarPlacement() expects a string parameter');
|
2039 |
-
}
|
2040 |
-
if( toolbarPlacements.indexOf(toolbarPlacement) === -1 ) {
|
2041 |
-
throw new TypeError('toolbarPlacement() parameter must be one of (' + toolbarPlacements.join(', ') + ') value');
|
2042 |
-
}
|
2043 |
-
options.toolbarPlacement = toolbarPlacement;
|
2044 |
-
|
2045 |
-
if( widget ) {
|
2046 |
-
hide();
|
2047 |
-
show();
|
2048 |
-
}
|
2049 |
-
return picker;
|
2050 |
-
};
|
2051 |
-
|
2052 |
-
picker.widgetPositioning = function(widgetPositioning) {
|
2053 |
-
if( arguments.length === 0 ) {
|
2054 |
-
return $.extend({}, options.widgetPositioning);
|
2055 |
-
}
|
2056 |
-
|
2057 |
-
if( ({}).toString.call(widgetPositioning) !== '[object Object]' ) {
|
2058 |
-
throw new TypeError('widgetPositioning() expects an object variable');
|
2059 |
-
}
|
2060 |
-
if( widgetPositioning.horizontal ) {
|
2061 |
-
if( typeof widgetPositioning.horizontal !== 'string' ) {
|
2062 |
-
throw new TypeError('widgetPositioning() horizontal variable must be a string');
|
2063 |
-
}
|
2064 |
-
widgetPositioning.horizontal = widgetPositioning.horizontal.toLowerCase();
|
2065 |
-
if( horizontalModes.indexOf(widgetPositioning.horizontal) === -1 ) {
|
2066 |
-
throw new TypeError('widgetPositioning() expects horizontal parameter to be one of (' + horizontalModes.join(', ') + ')');
|
2067 |
-
}
|
2068 |
-
options.widgetPositioning.horizontal = widgetPositioning.horizontal;
|
2069 |
-
}
|
2070 |
-
if( widgetPositioning.vertical ) {
|
2071 |
-
if( typeof widgetPositioning.vertical !== 'string' ) {
|
2072 |
-
throw new TypeError('widgetPositioning() vertical variable must be a string');
|
2073 |
-
}
|
2074 |
-
widgetPositioning.vertical = widgetPositioning.vertical.toLowerCase();
|
2075 |
-
if( verticalModes.indexOf(widgetPositioning.vertical) === -1 ) {
|
2076 |
-
throw new TypeError('widgetPositioning() expects vertical parameter to be one of (' + verticalModes.join(', ') + ')');
|
2077 |
-
}
|
2078 |
-
options.widgetPositioning.vertical = widgetPositioning.vertical;
|
2079 |
-
}
|
2080 |
-
update();
|
2081 |
-
return picker;
|
2082 |
-
};
|
2083 |
-
|
2084 |
-
picker.calendarWeeks = function(calendarWeeks) {
|
2085 |
-
if( arguments.length === 0 ) {
|
2086 |
-
return options.calendarWeeks;
|
2087 |
-
}
|
2088 |
-
|
2089 |
-
if( typeof calendarWeeks !== 'boolean' ) {
|
2090 |
-
throw new TypeError('calendarWeeks() expects parameter to be a boolean value');
|
2091 |
-
}
|
2092 |
-
|
2093 |
-
options.calendarWeeks = calendarWeeks;
|
2094 |
-
update();
|
2095 |
-
return picker;
|
2096 |
-
};
|
2097 |
-
|
2098 |
-
picker.showTodayButton = function(showTodayButton) {
|
2099 |
-
if( arguments.length === 0 ) {
|
2100 |
-
return options.showTodayButton;
|
2101 |
-
}
|
2102 |
-
|
2103 |
-
if( typeof showTodayButton !== 'boolean' ) {
|
2104 |
-
throw new TypeError('showTodayButton() expects a boolean parameter');
|
2105 |
-
}
|
2106 |
-
|
2107 |
-
options.showTodayButton = showTodayButton;
|
2108 |
-
if( widget ) {
|
2109 |
-
hide();
|
2110 |
-
show();
|
2111 |
-
}
|
2112 |
-
return picker;
|
2113 |
-
};
|
2114 |
-
|
2115 |
-
picker.showClear = function(showClear) {
|
2116 |
-
if( arguments.length === 0 ) {
|
2117 |
-
return options.showClear;
|
2118 |
-
}
|
2119 |
-
|
2120 |
-
if( typeof showClear !== 'boolean' ) {
|
2121 |
-
throw new TypeError('showClear() expects a boolean parameter');
|
2122 |
-
}
|
2123 |
-
|
2124 |
-
options.showClear = showClear;
|
2125 |
-
if( widget ) {
|
2126 |
-
hide();
|
2127 |
-
show();
|
2128 |
-
}
|
2129 |
-
return picker;
|
2130 |
-
};
|
2131 |
-
|
2132 |
-
picker.widgetParent = function(widgetParent) {
|
2133 |
-
if( arguments.length === 0 ) {
|
2134 |
-
return options.widgetParent;
|
2135 |
-
}
|
2136 |
-
|
2137 |
-
if( typeof widgetParent === 'string' ) {
|
2138 |
-
widgetParent = $(widgetParent);
|
2139 |
-
}
|
2140 |
-
|
2141 |
-
if( widgetParent !== null && (typeof widgetParent !== 'string' && !(widgetParent instanceof $)) ) {
|
2142 |
-
throw new TypeError('widgetParent() expects a string or a jQuery object parameter');
|
2143 |
-
}
|
2144 |
-
|
2145 |
-
options.widgetParent = widgetParent;
|
2146 |
-
if( widget ) {
|
2147 |
-
hide();
|
2148 |
-
show();
|
2149 |
-
}
|
2150 |
-
return picker;
|
2151 |
-
};
|
2152 |
-
|
2153 |
-
picker.keepOpen = function(keepOpen) {
|
2154 |
-
if( arguments.length === 0 ) {
|
2155 |
-
return options.keepOpen;
|
2156 |
-
}
|
2157 |
-
|
2158 |
-
if( typeof keepOpen !== 'boolean' ) {
|
2159 |
-
throw new TypeError('keepOpen() expects a boolean parameter');
|
2160 |
-
}
|
2161 |
-
|
2162 |
-
options.keepOpen = keepOpen;
|
2163 |
-
return picker;
|
2164 |
-
};
|
2165 |
-
|
2166 |
-
picker.focusOnShow = function(focusOnShow) {
|
2167 |
-
if( arguments.length === 0 ) {
|
2168 |
-
return options.focusOnShow;
|
2169 |
-
}
|
2170 |
-
|
2171 |
-
if( typeof focusOnShow !== 'boolean' ) {
|
2172 |
-
throw new TypeError('focusOnShow() expects a boolean parameter');
|
2173 |
-
}
|
2174 |
-
|
2175 |
-
options.focusOnShow = focusOnShow;
|
2176 |
-
return picker;
|
2177 |
-
};
|
2178 |
-
|
2179 |
-
picker.inline = function(inline) {
|
2180 |
-
if( arguments.length === 0 ) {
|
2181 |
-
return options.inline;
|
2182 |
-
}
|
2183 |
-
|
2184 |
-
if( typeof inline !== 'boolean' ) {
|
2185 |
-
throw new TypeError('inline() expects a boolean parameter');
|
2186 |
-
}
|
2187 |
-
|
2188 |
-
options.inline = inline;
|
2189 |
-
return picker;
|
2190 |
-
};
|
2191 |
-
|
2192 |
-
picker.clear = function() {
|
2193 |
-
clear();
|
2194 |
-
return picker;
|
2195 |
-
};
|
2196 |
-
|
2197 |
-
picker.keyBinds = function(keyBinds) {
|
2198 |
-
if( arguments.length === 0 ) {
|
2199 |
-
return options.keyBinds;
|
2200 |
-
}
|
2201 |
-
|
2202 |
-
options.keyBinds = keyBinds;
|
2203 |
-
return picker;
|
2204 |
-
};
|
2205 |
-
|
2206 |
-
picker.getMoment = function(d) {
|
2207 |
-
return getMoment(d);
|
2208 |
-
};
|
2209 |
-
|
2210 |
-
picker.debug = function(debug) {
|
2211 |
-
if( typeof debug !== 'boolean' ) {
|
2212 |
-
throw new TypeError('debug() expects a boolean parameter');
|
2213 |
-
}
|
2214 |
-
|
2215 |
-
options.debug = debug;
|
2216 |
-
return picker;
|
2217 |
-
};
|
2218 |
-
|
2219 |
-
picker.allowInputToggle = function(allowInputToggle) {
|
2220 |
-
if( arguments.length === 0 ) {
|
2221 |
-
return options.allowInputToggle;
|
2222 |
-
}
|
2223 |
-
|
2224 |
-
if( typeof allowInputToggle !== 'boolean' ) {
|
2225 |
-
throw new TypeError('allowInputToggle() expects a boolean parameter');
|
2226 |
-
}
|
2227 |
-
|
2228 |
-
options.allowInputToggle = allowInputToggle;
|
2229 |
-
return picker;
|
2230 |
-
};
|
2231 |
-
|
2232 |
-
picker.showClose = function(showClose) {
|
2233 |
-
if( arguments.length === 0 ) {
|
2234 |
-
return options.showClose;
|
2235 |
-
}
|
2236 |
-
|
2237 |
-
if( typeof showClose !== 'boolean' ) {
|
2238 |
-
throw new TypeError('showClose() expects a boolean parameter');
|
2239 |
-
}
|
2240 |
-
|
2241 |
-
options.showClose = showClose;
|
2242 |
-
return picker;
|
2243 |
-
};
|
2244 |
-
|
2245 |
-
picker.keepInvalid = function(keepInvalid) {
|
2246 |
-
if( arguments.length === 0 ) {
|
2247 |
-
return options.keepInvalid;
|
2248 |
-
}
|
2249 |
-
|
2250 |
-
if( typeof keepInvalid !== 'boolean' ) {
|
2251 |
-
throw new TypeError('keepInvalid() expects a boolean parameter');
|
2252 |
-
}
|
2253 |
-
options.keepInvalid = keepInvalid;
|
2254 |
-
return picker;
|
2255 |
-
};
|
2256 |
-
|
2257 |
-
picker.datepickerInput = function(datepickerInput) {
|
2258 |
-
if( arguments.length === 0 ) {
|
2259 |
-
return options.datepickerInput;
|
2260 |
-
}
|
2261 |
-
|
2262 |
-
if( typeof datepickerInput !== 'string' ) {
|
2263 |
-
throw new TypeError('datepickerInput() expects a string parameter');
|
2264 |
-
}
|
2265 |
-
|
2266 |
-
options.datepickerInput = datepickerInput;
|
2267 |
-
return picker;
|
2268 |
-
};
|
2269 |
-
|
2270 |
-
picker.parseInputDate = function(parseInputDate) {
|
2271 |
-
if( arguments.length === 0 ) {
|
2272 |
-
return options.parseInputDate;
|
2273 |
-
}
|
2274 |
-
|
2275 |
-
if( typeof parseInputDate !== 'function' ) {
|
2276 |
-
throw new TypeError('parseInputDate() sholud be as function');
|
2277 |
-
}
|
2278 |
-
|
2279 |
-
options.parseInputDate = parseInputDate;
|
2280 |
-
|
2281 |
-
return picker;
|
2282 |
-
};
|
2283 |
-
|
2284 |
-
picker.disabledTimeIntervals = function(disabledTimeIntervals) {
|
2285 |
-
///<signature helpKeyword="$.fn.factoryBootstrap330_DatetimePickerControl.disabledTimeIntervals">
|
2286 |
-
///<summary>Returns an array with the currently set disabled dates on the component.</summary>
|
2287 |
-
///<returns type="array">options.disabledTimeIntervals</returns>
|
2288 |
-
///</signature>
|
2289 |
-
///<signature>
|
2290 |
-
///<summary>Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling
|
2291 |
-
// this function removes the configuration of /options.enabledDates if such exist.</summary> /<param
|
2292 |
-
// name="dates" locid="$.fn.factoryBootstrap330_DatetimePickerControl.disabledTimeIntervals_p:dates">Takes
|
2293 |
-
// an [ string or Date or moment ] of values and allows the user to select only from those days.</param>
|
2294 |
-
// /</signature>
|
2295 |
-
if( arguments.length === 0 ) {
|
2296 |
-
return (options.disabledTimeIntervals
|
2297 |
-
? $.extend({}, options.disabledTimeIntervals)
|
2298 |
-
: options.disabledTimeIntervals);
|
2299 |
-
}
|
2300 |
-
|
2301 |
-
if( !disabledTimeIntervals ) {
|
2302 |
-
options.disabledTimeIntervals = false;
|
2303 |
-
update();
|
2304 |
-
return picker;
|
2305 |
-
}
|
2306 |
-
if( !(disabledTimeIntervals instanceof Array) ) {
|
2307 |
-
throw new TypeError('disabledTimeIntervals() expects an array parameter');
|
2308 |
-
}
|
2309 |
-
options.disabledTimeIntervals = disabledTimeIntervals;
|
2310 |
-
update();
|
2311 |
-
return picker;
|
2312 |
-
};
|
2313 |
-
|
2314 |
-
picker.disabledHours = function(hours) {
|
2315 |
-
///<signature helpKeyword="$.fn.factoryBootstrap330_DatetimePickerControl.disabledHours">
|
2316 |
-
///<summary>Returns an array with the currently set disabled hours on the component.</summary>
|
2317 |
-
///<returns type="array">options.disabledHours</returns>
|
2318 |
-
///</signature>
|
2319 |
-
///<signature>
|
2320 |
-
///<summary>Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling
|
2321 |
-
// this function removes the configuration of /options.enabledHours if such exist.</summary> /<param
|
2322 |
-
// name="hours" locid="$.fn.factoryBootstrap330_DatetimePickerControl.disabledHours_p:hours">Takes an [ int
|
2323 |
-
// ] of values and disallows the user to select only from those hours.</param> /</signature>
|
2324 |
-
if( arguments.length === 0 ) {
|
2325 |
-
return (options.disabledHours ? $.extend({}, options.disabledHours) : options.disabledHours);
|
2326 |
-
}
|
2327 |
-
|
2328 |
-
if( !hours ) {
|
2329 |
-
options.disabledHours = false;
|
2330 |
-
update();
|
2331 |
-
return picker;
|
2332 |
-
}
|
2333 |
-
if( !(hours instanceof Array) ) {
|
2334 |
-
throw new TypeError('disabledHours() expects an array parameter');
|
2335 |
-
}
|
2336 |
-
options.disabledHours = indexGivenHours(hours);
|
2337 |
-
options.enabledHours = false;
|
2338 |
-
if( options.useCurrent && !options.keepInvalid ) {
|
2339 |
-
var tries = 0;
|
2340 |
-
while( !isValid(date, 'h') ) {
|
2341 |
-
date.add(1, 'h');
|
2342 |
-
if( tries === 24 ) {
|
2343 |
-
throw 'Tried 24 times to find a valid date';
|
2344 |
-
}
|
2345 |
-
tries++;
|
2346 |
-
}
|
2347 |
-
setValue(date);
|
2348 |
-
}
|
2349 |
-
update();
|
2350 |
-
return picker;
|
2351 |
-
};
|
2352 |
-
|
2353 |
-
picker.enabledHours = function(hours) {
|
2354 |
-
///<signature helpKeyword="$.fn.factoryBootstrap330_DatetimePickerControl.enabledHours">
|
2355 |
-
///<summary>Returns an array with the currently set enabled hours on the component.</summary>
|
2356 |
-
///<returns type="array">options.enabledHours</returns>
|
2357 |
-
///</signature>
|
2358 |
-
///<signature>
|
2359 |
-
///<summary>Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling
|
2360 |
-
// this function removes the configuration of options.disabledHours if such exist.</summary> /<param
|
2361 |
-
// name="hours" locid="$.fn.factoryBootstrap330_DatetimePickerControl.enabledHours_p:hours">Takes an [ int
|
2362 |
-
// ] of values and allows the user to select only from those hours.</param> /</signature>
|
2363 |
-
if( arguments.length === 0 ) {
|
2364 |
-
return (options.enabledHours ? $.extend({}, options.enabledHours) : options.enabledHours);
|
2365 |
-
}
|
2366 |
-
|
2367 |
-
if( !hours ) {
|
2368 |
-
options.enabledHours = false;
|
2369 |
-
update();
|
2370 |
-
return picker;
|
2371 |
-
}
|
2372 |
-
if( !(hours instanceof Array) ) {
|
2373 |
-
throw new TypeError('enabledHours() expects an array parameter');
|
2374 |
-
}
|
2375 |
-
options.enabledHours = indexGivenHours(hours);
|
2376 |
-
options.disabledHours = false;
|
2377 |
-
if( options.useCurrent && !options.keepInvalid ) {
|
2378 |
-
var tries = 0;
|
2379 |
-
while( !isValid(date, 'h') ) {
|
2380 |
-
date.add(1, 'h');
|
2381 |
-
if( tries === 24 ) {
|
2382 |
-
throw 'Tried 24 times to find a valid date';
|
2383 |
-
}
|
2384 |
-
tries++;
|
2385 |
-
}
|
2386 |
-
setValue(date);
|
2387 |
-
}
|
2388 |
-
update();
|
2389 |
-
return picker;
|
2390 |
-
};
|
2391 |
-
/**
|
2392 |
-
* Returns the component's model current viewDate, a moment object or null if not set. Passing a null value
|
2393 |
-
* unsets the components model current moment. Parsing of the newDate parameter is made using moment library
|
2394 |
-
* with the options.format and options.useStrict components configuration.
|
2395 |
-
* @param {Takes string, viewDate, moment, null parameter.} newDate
|
2396 |
-
* @returns {viewDate.clone()}
|
2397 |
-
*/
|
2398 |
-
picker.viewDate = function(newDate) {
|
2399 |
-
if( arguments.length === 0 ) {
|
2400 |
-
return viewDate.clone();
|
2401 |
-
}
|
2402 |
-
|
2403 |
-
if( !newDate ) {
|
2404 |
-
viewDate = date.clone();
|
2405 |
-
return picker;
|
2406 |
-
}
|
2407 |
-
|
2408 |
-
if( typeof newDate !== 'string' && !moment.isMoment(newDate) && !(newDate instanceof Date) ) {
|
2409 |
-
throw new TypeError('viewDate() parameter must be one of [string, moment or Date]');
|
2410 |
-
}
|
2411 |
-
|
2412 |
-
viewDate = parseInputDate(newDate);
|
2413 |
-
viewUpdate();
|
2414 |
-
return picker;
|
2415 |
-
};
|
2416 |
-
|
2417 |
-
// initializing element and component attributes
|
2418 |
-
if( element.is('input') ) {
|
2419 |
-
input = element;
|
2420 |
-
} else {
|
2421 |
-
input = element.find(options.datepickerInput);
|
2422 |
-
if( input.length === 0 ) {
|
2423 |
-
input = element.find('input');
|
2424 |
-
} else if( !input.is('input') ) {
|
2425 |
-
throw new Error('CSS class "' + options.datepickerInput + '" cannot be applied to non input element');
|
2426 |
-
}
|
2427 |
-
}
|
2428 |
-
|
2429 |
-
if( element.hasClass('input-group') ) {
|
2430 |
-
// in case there is more then one 'input-group-addon' Issue #48
|
2431 |
-
if( element.find('.datepickerbutton').length === 0 ) {
|
2432 |
-
component = element.find('.input-group-addon');
|
2433 |
-
} else {
|
2434 |
-
component = element.find('.datepickerbutton');
|
2435 |
-
}
|
2436 |
-
}
|
2437 |
-
|
2438 |
-
if( !options.inline && !input.is('input') ) {
|
2439 |
-
throw new Error('Could not initialize DateTimePicker without an input element');
|
2440 |
-
}
|
2441 |
-
|
2442 |
-
// Set defaults for date here now instead of in var declaration
|
2443 |
-
date = getMoment();
|
2444 |
-
viewDate = date.clone();
|
2445 |
-
|
2446 |
-
$.extend(true, options, dataToOptions());
|
2447 |
-
|
2448 |
-
picker.options(options);
|
2449 |
-
|
2450 |
-
initFormatting();
|
2451 |
-
|
2452 |
-
attachDatePickerElementEvents();
|
2453 |
-
|
2454 |
-
if( input.prop('disabled') ) {
|
2455 |
-
picker.disable();
|
2456 |
-
}
|
2457 |
-
if( input.is('input') && input.val().trim().length !== 0 ) {
|
2458 |
-
setValue(parseInputDate(input.val().trim()));
|
2459 |
-
}
|
2460 |
-
else if( options.defaultDate && input.attr('placeholder') === undefined ) {
|
2461 |
-
setValue(options.defaultDate);
|
2462 |
-
}
|
2463 |
-
if( options.inline ) {
|
2464 |
-
show();
|
2465 |
-
}
|
2466 |
-
return picker;
|
2467 |
-
};
|
2468 |
-
|
2469 |
-
/********************************************************************************
|
2470 |
-
*
|
2471 |
-
* jQuery plugin constructor and defaults object
|
2472 |
-
*
|
2473 |
-
********************************************************************************/
|
2474 |
-
|
2475 |
-
/**
|
2476 |
-
* See (http://jquery.com/).
|
2477 |
-
* @name jQuery
|
2478 |
-
* @class
|
2479 |
-
* See the jQuery Library (http://jquery.com/) for full details. This just
|
2480 |
-
* documents the function and classes that are added to jQuery by this plug-in.
|
2481 |
-
*/
|
2482 |
-
/**
|
2483 |
-
* See (http://jquery.com/)
|
2484 |
-
* @name fn
|
2485 |
-
* @class
|
2486 |
-
* See the jQuery Library (http://jquery.com/) for full details. This just
|
2487 |
-
* documents the function and classes that are added to jQuery by this plug-in.
|
2488 |
-
* @memberOf jQuery
|
2489 |
-
*/
|
2490 |
-
/**
|
2491 |
-
* Show comments
|
2492 |
-
* @class datetimepicker
|
2493 |
-
* @memberOf jQuery.fn
|
2494 |
-
*/
|
2495 |
-
$.fn.factoryBootstrap330_DatetimePickerControl = function(options) {
|
2496 |
-
options = options || {};
|
2497 |
-
|
2498 |
-
var args = Array.prototype.slice.call(arguments, 1),
|
2499 |
-
isInstance = true,
|
2500 |
-
thisMethods = ['destroy', 'hide', 'show', 'toggle'],
|
2501 |
-
returnValue;
|
2502 |
-
|
2503 |
-
if( typeof options === 'object' ) {
|
2504 |
-
return this.each(function() {
|
2505 |
-
var $this = $(this),
|
2506 |
-
_options;
|
2507 |
-
if( !$this.data('DateTimePicker') ) {
|
2508 |
-
// create a private copy of the defaults object
|
2509 |
-
_options = $.extend(true, {}, $.fn.factoryBootstrap330_DatetimePickerControl.defaults, options);
|
2510 |
-
$this.data('DateTimePicker', dateTimePicker($this, _options));
|
2511 |
-
}
|
2512 |
-
});
|
2513 |
-
} else if( typeof options === 'string' ) {
|
2514 |
-
this.each(function() {
|
2515 |
-
var $this = $(this),
|
2516 |
-
instance = $this.data('DateTimePicker');
|
2517 |
-
if( !instance ) {
|
2518 |
-
throw new Error('bootstrap-datetimepicker("' + options + '") method was called on an element that is not using DateTimePicker');
|
2519 |
-
}
|
2520 |
-
|
2521 |
-
returnValue = instance[options].apply(instance, args);
|
2522 |
-
isInstance = returnValue === instance;
|
2523 |
-
});
|
2524 |
-
|
2525 |
-
if( isInstance || $.inArray(options, thisMethods) > -1 ) {
|
2526 |
-
return this;
|
2527 |
-
}
|
2528 |
-
|
2529 |
-
return returnValue;
|
2530 |
-
}
|
2531 |
-
|
2532 |
-
throw new TypeError('Invalid arguments for DateTimePicker: ' + options);
|
2533 |
-
};
|
2534 |
-
|
2535 |
-
$.fn.factoryBootstrap330_DatetimePickerControl.defaults = {
|
2536 |
-
timeZone: '',
|
2537 |
-
format: false,
|
2538 |
-
dayViewHeaderFormat: 'MMMM YYYY',
|
2539 |
-
extraFormats: false,
|
2540 |
-
stepping: 1,
|
2541 |
-
minDate: false,
|
2542 |
-
maxDate: false,
|
2543 |
-
useCurrent: true,
|
2544 |
-
collapse: true,
|
2545 |
-
locale: moment.locale(),
|
2546 |
-
defaultDate: false,
|
2547 |
-
disabledDates: false,
|
2548 |
-
enabledDates: false,
|
2549 |
-
icons: {
|
2550 |
-
time: 'fa fa-clock-o',
|
2551 |
-
date: 'fa fa-calendar',
|
2552 |
-
up: 'fa fa-arrow-up',
|
2553 |
-
down: 'fa fa-arrow-down',
|
2554 |
-
previous: 'fa fa-arrow-left',
|
2555 |
-
next: 'fa fa-arrow-right',
|
2556 |
-
today: 'fa fa-thumb-tack',
|
2557 |
-
clear: 'fa fa-trash',
|
2558 |
-
close: 'fa fa-times'
|
2559 |
-
},
|
2560 |
-
tooltips: {
|
2561 |
-
today: 'Go to today',
|
2562 |
-
clear: 'Clear selection',
|
2563 |
-
close: 'Close the picker',
|
2564 |
-
selectMonth: 'Select Month',
|
2565 |
-
prevMonth: 'Previous Month',
|
2566 |
-
nextMonth: 'Next Month',
|
2567 |
-
selectYear: 'Select Year',
|
2568 |
-
prevYear: 'Previous Year',
|
2569 |
-
nextYear: 'Next Year',
|
2570 |
-
selectDecade: 'Select Decade',
|
2571 |
-
prevDecade: 'Previous Decade',
|
2572 |
-
nextDecade: 'Next Decade',
|
2573 |
-
prevCentury: 'Previous Century',
|
2574 |
-
nextCentury: 'Next Century',
|
2575 |
-
pickHour: 'Pick Hour',
|
2576 |
-
incrementHour: 'Increment Hour',
|
2577 |
-
decrementHour: 'Decrement Hour',
|
2578 |
-
pickMinute: 'Pick Minute',
|
2579 |
-
incrementMinute: 'Increment Minute',
|
2580 |
-
decrementMinute: 'Decrement Minute',
|
2581 |
-
pickSecond: 'Pick Second',
|
2582 |
-
incrementSecond: 'Increment Second',
|
2583 |
-
decrementSecond: 'Decrement Second',
|
2584 |
-
togglePeriod: 'Toggle Period',
|
2585 |
-
selectTime: 'Select Time'
|
2586 |
-
},
|
2587 |
-
useStrict: false,
|
2588 |
-
sideBySide: false,
|
2589 |
-
daysOfWeekDisabled: false,
|
2590 |
-
calendarWeeks: false,
|
2591 |
-
viewMode: 'days',
|
2592 |
-
toolbarPlacement: 'default',
|
2593 |
-
showTodayButton: false,
|
2594 |
-
showClear: false,
|
2595 |
-
showClose: false,
|
2596 |
-
widgetPositioning: {
|
2597 |
-
horizontal: 'auto',
|
2598 |
-
vertical: 'auto'
|
2599 |
-
},
|
2600 |
-
widgetParent: null,
|
2601 |
-
ignoreReadonly: false,
|
2602 |
-
keepOpen: false,
|
2603 |
-
focusOnShow: true,
|
2604 |
-
inline: false,
|
2605 |
-
keepInvalid: false,
|
2606 |
-
datepickerInput: '.datepickerinput',
|
2607 |
-
keyBinds: {
|
2608 |
-
up: function(widget) {
|
2609 |
-
if( !widget ) {
|
2610 |
-
return;
|
2611 |
-
}
|
2612 |
-
var d = this.date() || this.getMoment();
|
2613 |
-
if( widget.find('.datepicker').is(':visible') ) {
|
2614 |
-
this.date(d.clone().subtract(7, 'd'));
|
2615 |
-
} else {
|
2616 |
-
this.date(d.clone().add(this.stepping(), 'm'));
|
2617 |
-
}
|
2618 |
-
},
|
2619 |
-
down: function(widget) {
|
2620 |
-
if( !widget ) {
|
2621 |
-
this.show();
|
2622 |
-
return;
|
2623 |
-
}
|
2624 |
-
var d = this.date() || this.getMoment();
|
2625 |
-
if( widget.find('.datepicker').is(':visible') ) {
|
2626 |
-
this.date(d.clone().add(7, 'd'));
|
2627 |
-
} else {
|
2628 |
-
this.date(d.clone().subtract(this.stepping(), 'm'));
|
2629 |
-
}
|
2630 |
-
},
|
2631 |
-
'control up': function(widget) {
|
2632 |
-
if( !widget ) {
|
2633 |
-
return;
|
2634 |
-
}
|
2635 |
-
var d = this.date() || this.getMoment();
|
2636 |
-
if( widget.find('.datepicker').is(':visible') ) {
|
2637 |
-
this.date(d.clone().subtract(1, 'y'));
|
2638 |
-
} else {
|
2639 |
-
this.date(d.clone().add(1, 'h'));
|
2640 |
-
}
|
2641 |
-
},
|
2642 |
-
'control down': function(widget) {
|
2643 |
-
if( !widget ) {
|
2644 |
-
return;
|
2645 |
-
}
|
2646 |
-
var d = this.date() || this.getMoment();
|
2647 |
-
if( widget.find('.datepicker').is(':visible') ) {
|
2648 |
-
this.date(d.clone().add(1, 'y'));
|
2649 |
-
} else {
|
2650 |
-
this.date(d.clone().subtract(1, 'h'));
|
2651 |
-
}
|
2652 |
-
},
|
2653 |
-
left: function(widget) {
|
2654 |
-
if( !widget ) {
|
2655 |
-
return;
|
2656 |
-
}
|
2657 |
-
var d = this.date() || this.getMoment();
|
2658 |
-
if( widget.find('.datepicker').is(':visible') ) {
|
2659 |
-
this.date(d.clone().subtract(1, 'd'));
|
2660 |
-
}
|
2661 |
-
},
|
2662 |
-
right: function(widget) {
|
2663 |
-
if( !widget ) {
|
2664 |
-
return;
|
2665 |
-
}
|
2666 |
-
var d = this.date() || this.getMoment();
|
2667 |
-
if( widget.find('.datepicker').is(':visible') ) {
|
2668 |
-
this.date(d.clone().add(1, 'd'));
|
2669 |
-
}
|
2670 |
-
},
|
2671 |
-
pageUp: function(widget) {
|
2672 |
-
if( !widget ) {
|
2673 |
-
return;
|
2674 |
-
}
|
2675 |
-
var d = this.date() || this.getMoment();
|
2676 |
-
if( widget.find('.datepicker').is(':visible') ) {
|
2677 |
-
this.date(d.clone().subtract(1, 'M'));
|
2678 |
-
}
|
2679 |
-
},
|
2680 |
-
pageDown: function(widget) {
|
2681 |
-
if( !widget ) {
|
2682 |
-
return;
|
2683 |
-
}
|
2684 |
-
var d = this.date() || this.getMoment();
|
2685 |
-
if( widget.find('.datepicker').is(':visible') ) {
|
2686 |
-
this.date(d.clone().add(1, 'M'));
|
2687 |
-
}
|
2688 |
-
},
|
2689 |
-
enter: function() {
|
2690 |
-
this.hide();
|
2691 |
-
},
|
2692 |
-
escape: function() {
|
2693 |
-
this.hide();
|
2694 |
-
},
|
2695 |
-
//tab: function (widget) { //this break the flow of the form. disabling for now
|
2696 |
-
// var toggle = widget.find('.picker-switch a[data-action="togglePicker"]');
|
2697 |
-
// if(toggle.length > 0) toggle.click();
|
2698 |
-
//},
|
2699 |
-
'control space': function(widget) {
|
2700 |
-
if( !widget ) {
|
2701 |
-
return;
|
2702 |
-
}
|
2703 |
-
if( widget.find('.timepicker').is(':visible') ) {
|
2704 |
-
widget.find('.btn[data-action="togglePeriod"]').click();
|
2705 |
-
}
|
2706 |
-
},
|
2707 |
-
t: function() {
|
2708 |
-
this.date(this.getMoment());
|
2709 |
-
},
|
2710 |
-
'delete': function() {
|
2711 |
-
this.clear();
|
2712 |
-
}
|
2713 |
-
},
|
2714 |
-
debug: false,
|
2715 |
-
allowInputToggle: false,
|
2716 |
-
disabledTimeIntervals: false,
|
2717 |
-
disabledHours: false,
|
2718 |
-
enabledHours: false,
|
2719 |
-
viewDate: false
|
2720 |
-
};
|
2721 |
-
|
2722 |
-
return $.fn.factoryBootstrap330_DatetimePickerControl;
|
2723 |
-
}));
|
2724 |
-
|
2725 |
-
( function($) {
|
2726 |
-
$(function() {
|
2727 |
-
/**
|
2728 |
-
* Init base controls
|
2729 |
-
*/
|
2730 |
-
$(".factory-bootstrap-330 .factory-datetimepicker").factoryBootstrap330_DatetimePickerControl();
|
2731 |
-
|
2732 |
-
/**
|
2733 |
-
* Init range controls
|
2734 |
-
*/
|
2735 |
-
$('.factory-bootstrap-330 .factory-datetimepicker-range-0').factoryBootstrap330_DatetimePickerControl();
|
2736 |
-
$('.factory-bootstrap-330 .factory-datetimepicker-range-1').factoryBootstrap330_DatetimePickerControl({
|
2737 |
-
useCurrent: false //Important! See issue #1075
|
2738 |
-
});
|
2739 |
-
$(".factory-bootstrap-330 .factory-datetimepicker-range-0").on("dp.change", function(e) {
|
2740 |
-
$('.factory-bootstrap-330 .factory-datetimepicker-range-1').data("DateTimePicker").minDate(e.date);
|
2741 |
-
});
|
2742 |
-
$(".factory-bootstrap-330 .factory-datetimepicker-range-1").on("dp.change", function(e) {
|
2743 |
-
$('.factory-bootstrap-330 .factory-datetimepicker-range-0').data("DateTimePicker").maxDate(e.date);
|
2744 |
-
});
|
2745 |
-
});
|
2746 |
-
}(jQuery) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/bootstrap.dropdown.js
DELETED
@@ -1,143 +0,0 @@
|
|
1 |
-
/* ========================================================================
|
2 |
-
* Bootstrap: dropdown.js v3.0.3
|
3 |
-
* http://getbootstrap.com/javascript/#dropdowns
|
4 |
-
* ========================================================================
|
5 |
-
* Copyright 2013 Twitter, Inc.
|
6 |
-
*
|
7 |
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
8 |
-
* you may not use this file except in compliance with the License.
|
9 |
-
* You may obtain a copy of the License at
|
10 |
-
*
|
11 |
-
* http://www.apache.org/licenses/LICENSE-2.0
|
12 |
-
*
|
13 |
-
* Unless required by applicable law or agreed to in writing, software
|
14 |
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
15 |
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16 |
-
* See the License for the specific language governing permissions and
|
17 |
-
* limitations under the License.
|
18 |
-
* ======================================================================== */
|
19 |
-
|
20 |
-
|
21 |
-
+function ($) { "use strict";
|
22 |
-
|
23 |
-
// DROPDOWN CLASS DEFINITION
|
24 |
-
// =========================
|
25 |
-
|
26 |
-
var backdrop = '.dropdown-backdrop'
|
27 |
-
var toggle = '[data-toggle=factory-dropdown]'
|
28 |
-
var Dropdown = function (element) {
|
29 |
-
$(element).on('click.bs.dropdown', this.toggle)
|
30 |
-
}
|
31 |
-
|
32 |
-
Dropdown.prototype.toggle = function (e) {
|
33 |
-
var $this = $(this)
|
34 |
-
|
35 |
-
if ($this.is('.disabled, :disabled')) return
|
36 |
-
|
37 |
-
var $parent = getParent($this)
|
38 |
-
var isActive = $parent.hasClass('open')
|
39 |
-
|
40 |
-
clearMenus()
|
41 |
-
|
42 |
-
if (!isActive) {
|
43 |
-
if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
|
44 |
-
// if mobile we use a backdrop because click events don't delegate
|
45 |
-
$('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
|
46 |
-
}
|
47 |
-
|
48 |
-
$parent.trigger(e = $.Event('show.bs.dropdown'))
|
49 |
-
|
50 |
-
if (e.isDefaultPrevented()) return
|
51 |
-
|
52 |
-
$parent
|
53 |
-
.toggleClass('open')
|
54 |
-
.trigger('shown.bs.dropdown')
|
55 |
-
|
56 |
-
$this.focus()
|
57 |
-
}
|
58 |
-
|
59 |
-
return false
|
60 |
-
}
|
61 |
-
|
62 |
-
Dropdown.prototype.keydown = function (e) {
|
63 |
-
if (!/(38|40|27)/.test(e.keyCode)) return
|
64 |
-
|
65 |
-
var $this = $(this)
|
66 |
-
|
67 |
-
e.preventDefault()
|
68 |
-
e.stopPropagation()
|
69 |
-
|
70 |
-
if ($this.is('.disabled, :disabled')) return
|
71 |
-
|
72 |
-
var $parent = getParent($this)
|
73 |
-
var isActive = $parent.hasClass('open')
|
74 |
-
|
75 |
-
if (!isActive || (isActive && e.keyCode == 27)) {
|
76 |
-
if (e.which == 27) $parent.find(toggle).focus()
|
77 |
-
return $this.click()
|
78 |
-
}
|
79 |
-
|
80 |
-
var $items = $('[role=menu] li:not(.divider):visible a', $parent)
|
81 |
-
|
82 |
-
if (!$items.length) return
|
83 |
-
|
84 |
-
var index = $items.index($items.filter(':focus'))
|
85 |
-
|
86 |
-
if (e.keyCode == 38 && index > 0) index-- // up
|
87 |
-
if (e.keyCode == 40 && index < $items.length - 1) index++ // down
|
88 |
-
if (!~index) index=0
|
89 |
-
|
90 |
-
$items.eq(index).focus()
|
91 |
-
}
|
92 |
-
|
93 |
-
function clearMenus() {
|
94 |
-
$(backdrop).remove()
|
95 |
-
$(toggle).each(function (e) {
|
96 |
-
var $parent = getParent($(this))
|
97 |
-
if (!$parent.hasClass('open')) return
|
98 |
-
$parent.trigger(e = $.Event('hide.bs.dropdown'))
|
99 |
-
if (e.isDefaultPrevented()) return
|
100 |
-
$parent.removeClass('open').trigger('hidden.bs.dropdown')
|
101 |
-
})
|
102 |
-
}
|
103 |
-
|
104 |
-
function getParent($this) {
|
105 |
-
var selector = $this.attr('data-target')
|
106 |
-
|
107 |
-
if (!selector) {
|
108 |
-
selector = $this.attr('href')
|
109 |
-
selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
|
110 |
-
}
|
111 |
-
|
112 |
-
var $parent = selector && $(selector)
|
113 |
-
|
114 |
-
return $parent && $parent.length ? $parent : $this.parent()
|
115 |
-
}
|
116 |
-
|
117 |
-
|
118 |
-
// DROPDOWN PLUGIN DEFINITION
|
119 |
-
// ==========================
|
120 |
-
|
121 |
-
$.fn.factoryBootstrap330_dropdown = function (option) {
|
122 |
-
return this.each(function () {
|
123 |
-
var $this = $(this)
|
124 |
-
var data = $this.data('bs.dropdown')
|
125 |
-
|
126 |
-
if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
|
127 |
-
if (typeof option == 'string') data[option].call($this)
|
128 |
-
})
|
129 |
-
}
|
130 |
-
|
131 |
-
$.fn.factoryBootstrap330_dropdown.Constructor = Dropdown
|
132 |
-
|
133 |
-
|
134 |
-
// APPLY TO STANDARD DROPDOWN ELEMENTS
|
135 |
-
// ===================================
|
136 |
-
|
137 |
-
$(document)
|
138 |
-
.on('click.bs.dropdown.data-api', clearMenus)
|
139 |
-
.on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
|
140 |
-
.on('click.bs.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
|
141 |
-
.on('keydown.bs.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
|
142 |
-
|
143 |
-
}(jQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/bootstrap.tooltip.js
DELETED
@@ -1,455 +0,0 @@
|
|
1 |
-
/* ========================================================================
|
2 |
-
* Bootstrap: tooltip.js v3.0.3
|
3 |
-
* http://getbootstrap.com/javascript/#tooltip
|
4 |
-
* Inspired by the original jQuery.tipsy by Jason Frame
|
5 |
-
* ========================================================================
|
6 |
-
* Copyright 2013 Twitter, Inc.
|
7 |
-
*
|
8 |
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
9 |
-
* you may not use this file except in compliance with the License.
|
10 |
-
* You may obtain a copy of the License at
|
11 |
-
*
|
12 |
-
* http://www.apache.org/licenses/LICENSE-2.0
|
13 |
-
*
|
14 |
-
* Unless required by applicable law or agreed to in writing, software
|
15 |
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
16 |
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17 |
-
* See the License for the specific language governing permissions and
|
18 |
-
* limitations under the License.
|
19 |
-
* ======================================================================== */
|
20 |
-
|
21 |
-
+function($) {
|
22 |
-
"use strict";
|
23 |
-
|
24 |
-
// TOOLTIP PUBLIC CLASS DEFINITION
|
25 |
-
// ===============================
|
26 |
-
|
27 |
-
var Tooltip = function(element, options) {
|
28 |
-
this.type =
|
29 |
-
this.options =
|
30 |
-
this.enabled =
|
31 |
-
this.timeout =
|
32 |
-
this.hoverState =
|
33 |
-
this.$element = null;
|
34 |
-
|
35 |
-
this.init('tooltip', element, options)
|
36 |
-
};
|
37 |
-
|
38 |
-
Tooltip.DEFAULTS = {
|
39 |
-
animation: true
|
40 |
-
,
|
41 |
-
placement: 'top'
|
42 |
-
,
|
43 |
-
selector: false
|
44 |
-
,
|
45 |
-
template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
|
46 |
-
,
|
47 |
-
trigger: 'hover focus'
|
48 |
-
,
|
49 |
-
title: ''
|
50 |
-
,
|
51 |
-
delay: 0
|
52 |
-
,
|
53 |
-
html: false
|
54 |
-
,
|
55 |
-
container: false
|
56 |
-
};
|
57 |
-
|
58 |
-
Tooltip.prototype.init = function(type, element, options) {
|
59 |
-
this.enabled = true;
|
60 |
-
this.type = type;
|
61 |
-
this.$element = $(element);
|
62 |
-
this.options = this.getOptions(options);
|
63 |
-
|
64 |
-
var triggers = this.options.trigger.split(' ');
|
65 |
-
|
66 |
-
for( var i = triggers.length; i--; ) {
|
67 |
-
var trigger = triggers[i];
|
68 |
-
|
69 |
-
if( trigger == 'click' ) {
|
70 |
-
this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
|
71 |
-
} else if( trigger != 'manual' ) {
|
72 |
-
var eventIn = trigger == 'hover' ? 'mouseenter' : 'focus';
|
73 |
-
var eventOut = trigger == 'hover' ? 'mouseleave' : 'blur';
|
74 |
-
|
75 |
-
this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this));
|
76 |
-
this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
|
77 |
-
}
|
78 |
-
}
|
79 |
-
|
80 |
-
this.options.selector ?
|
81 |
-
(this._options = $.extend({}, this.options, {
|
82 |
-
trigger: 'manual',
|
83 |
-
selector: ''
|
84 |
-
})) :
|
85 |
-
this.fixTitle()
|
86 |
-
};
|
87 |
-
|
88 |
-
Tooltip.prototype.getDefaults = function() {
|
89 |
-
return Tooltip.DEFAULTS
|
90 |
-
};
|
91 |
-
|
92 |
-
Tooltip.prototype.getOptions = function(options) {
|
93 |
-
options = $.extend({}, this.getDefaults(), this.$element.data(), options)
|
94 |
-
|
95 |
-
if( options.delay && typeof options.delay == 'number' ) {
|
96 |
-
options.delay = {
|
97 |
-
show: options.delay
|
98 |
-
,
|
99 |
-
hide: options.delay
|
100 |
-
}
|
101 |
-
}
|
102 |
-
|
103 |
-
return options
|
104 |
-
};
|
105 |
-
|
106 |
-
Tooltip.prototype.getDelegateOptions = function() {
|
107 |
-
var options = {};
|
108 |
-
var defaults = this.getDefaults();
|
109 |
-
|
110 |
-
this._options && $.each(this._options, function(key, value) {
|
111 |
-
if( defaults[key] != value ) {
|
112 |
-
options[key] = value
|
113 |
-
}
|
114 |
-
});
|
115 |
-
|
116 |
-
return options
|
117 |
-
};
|
118 |
-
|
119 |
-
Tooltip.prototype.enter = function(obj) {
|
120 |
-
var self = obj instanceof this.constructor ?
|
121 |
-
obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type);
|
122 |
-
|
123 |
-
clearTimeout(self.timeout);
|
124 |
-
|
125 |
-
self.hoverState = 'in';
|
126 |
-
|
127 |
-
if( !self.options.delay || !self.options.delay.show ) {
|
128 |
-
return self.show();
|
129 |
-
}
|
130 |
-
|
131 |
-
self.timeout = setTimeout(function() {
|
132 |
-
if( self.hoverState == 'in' ) {
|
133 |
-
self.show()
|
134 |
-
}
|
135 |
-
}, self.options.delay.show)
|
136 |
-
};
|
137 |
-
|
138 |
-
Tooltip.prototype.leave = function(obj) {
|
139 |
-
var self = obj instanceof this.constructor ?
|
140 |
-
obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type);
|
141 |
-
|
142 |
-
clearTimeout(self.timeout);
|
143 |
-
|
144 |
-
self.hoverState = 'out';
|
145 |
-
|
146 |
-
if( !self.options.delay || !self.options.delay.hide ) {
|
147 |
-
return self.hide();
|
148 |
-
}
|
149 |
-
|
150 |
-
self.timeout = setTimeout(function() {
|
151 |
-
if( self.hoverState == 'out' ) {
|
152 |
-
self.hide()
|
153 |
-
}
|
154 |
-
}, self.options.delay.hide)
|
155 |
-
};
|
156 |
-
|
157 |
-
Tooltip.prototype.show = function() {
|
158 |
-
var e = $.Event('show.bs.' + this.type);
|
159 |
-
|
160 |
-
if( this.hasContent() && this.enabled ) {
|
161 |
-
this.$element.trigger(e);
|
162 |
-
|
163 |
-
if( e.isDefaultPrevented() ) {
|
164 |
-
return;
|
165 |
-
}
|
166 |
-
|
167 |
-
var $tip = this.tip();
|
168 |
-
|
169 |
-
this.setContent();
|
170 |
-
|
171 |
-
if( this.options.animation ) {
|
172 |
-
$tip.addClass('fade');
|
173 |
-
}
|
174 |
-
|
175 |
-
var placement = typeof this.options.placement == 'function' ?
|
176 |
-
this.options.placement.call(this, $tip[0], this.$element[0]) :
|
177 |
-
this.options.placement;
|
178 |
-
|
179 |
-
var autoToken = /\s?auto?\s?/i;
|
180 |
-
var autoPlace = autoToken.test(placement);
|
181 |
-
if( autoPlace ) {
|
182 |
-
placement = placement.replace(autoToken, '') || 'top';
|
183 |
-
}
|
184 |
-
|
185 |
-
$tip
|
186 |
-
.detach()
|
187 |
-
.css({
|
188 |
-
top: 0,
|
189 |
-
left: 0,
|
190 |
-
display: 'block'
|
191 |
-
})
|
192 |
-
.addClass(placement);
|
193 |
-
|
194 |
-
this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element);
|
195 |
-
|
196 |
-
var pos = this.getPosition();
|
197 |
-
var actualWidth = $tip[0].offsetWidth;
|
198 |
-
var actualHeight = $tip[0].offsetHeight;
|
199 |
-
|
200 |
-
if( autoPlace ) {
|
201 |
-
var $parent = this.$element.parent();
|
202 |
-
|
203 |
-
var orgPlacement = placement;
|
204 |
-
var docScroll = document.documentElement.scrollTop || document.body.scrollTop;
|
205 |
-
var parentWidth = this.options.container == 'body' ? window.innerWidth : $parent.outerWidth();
|
206 |
-
var parentHeight = this.options.container == 'body' ? window.innerHeight : $parent.outerHeight();
|
207 |
-
var parentLeft = this.options.container == 'body' ? 0 : $parent.offset().left;
|
208 |
-
|
209 |
-
placement = placement == 'bottom' && pos.top + pos.height + actualHeight - docScroll > parentHeight
|
210 |
-
? 'top'
|
211 |
-
:
|
212 |
-
placement == 'top' && pos.top - docScroll - actualHeight < 0
|
213 |
-
? 'bottom'
|
214 |
-
:
|
215 |
-
placement == 'right' && pos.right + actualWidth > parentWidth
|
216 |
-
? 'left'
|
217 |
-
:
|
218 |
-
placement == 'left' && pos.left - actualWidth < parentLeft
|
219 |
-
? 'right'
|
220 |
-
:
|
221 |
-
placement;
|
222 |
-
|
223 |
-
$tip
|
224 |
-
.removeClass(orgPlacement)
|
225 |
-
.addClass(placement)
|
226 |
-
}
|
227 |
-
|
228 |
-
var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
|
229 |
-
|
230 |
-
this.applyPlacement(calculatedOffset, placement);
|
231 |
-
this.$element.trigger('shown.bs.' + this.type)
|
232 |
-
}
|
233 |
-
};
|
234 |
-
|
235 |
-
Tooltip.prototype.applyPlacement = function(offset, placement) {
|
236 |
-
var replace;
|
237 |
-
var $tip = this.tip();
|
238 |
-
var width = $tip[0].offsetWidth;
|
239 |
-
var height = $tip[0].offsetHeight;
|
240 |
-
|
241 |
-
// manually read margins because getBoundingClientRect includes difference
|
242 |
-
var marginTop = parseInt($tip.css('margin-top'), 10);
|
243 |
-
var marginLeft = parseInt($tip.css('margin-left'), 10);
|
244 |
-
|
245 |
-
// we must check for NaN for ie 8/9
|
246 |
-
if( isNaN(marginTop) ) {
|
247 |
-
marginTop = 0;
|
248 |
-
}
|
249 |
-
if( isNaN(marginLeft) ) {
|
250 |
-
marginLeft = 0;
|
251 |
-
}
|
252 |
-
|
253 |
-
offset.top = offset.top + marginTop;
|
254 |
-
offset.left = offset.left + marginLeft;
|
255 |
-
|
256 |
-
$tip
|
257 |
-
.offset(offset)
|
258 |
-
.addClass('in');
|
259 |
-
|
260 |
-
// check to see if placing tip in new offset caused the tip to resize itself
|
261 |
-
var actualWidth = $tip[0].offsetWidth;
|
262 |
-
var actualHeight = $tip[0].offsetHeight;
|
263 |
-
|
264 |
-
if( placement == 'top' && actualHeight != height ) {
|
265 |
-
replace = true;
|
266 |
-
offset.top = offset.top + height - actualHeight
|
267 |
-
}
|
268 |
-
|
269 |
-
if( /bottom|top/.test(placement) ) {
|
270 |
-
var delta = 0;
|
271 |
-
|
272 |
-
if( offset.left < 0 ) {
|
273 |
-
delta = offset.left * -2;
|
274 |
-
offset.left = 0;
|
275 |
-
|
276 |
-
$tip.offset(offset);
|
277 |
-
|
278 |
-
actualWidth = $tip[0].offsetWidth;
|
279 |
-
actualHeight = $tip[0].offsetHeight
|
280 |
-
}
|
281 |
-
|
282 |
-
this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
|
283 |
-
} else {
|
284 |
-
this.replaceArrow(actualHeight - height, actualHeight, 'top')
|
285 |
-
}
|
286 |
-
|
287 |
-
if( replace ) {
|
288 |
-
$tip.offset(offset)
|
289 |
-
}
|
290 |
-
};
|
291 |
-
|
292 |
-
Tooltip.prototype.replaceArrow = function(delta, dimension, position) {
|
293 |
-
this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + "%") : '')
|
294 |
-
};
|
295 |
-
|
296 |
-
Tooltip.prototype.setContent = function() {
|
297 |
-
var $tip = this.tip();
|
298 |
-
var title = this.getTitle();
|
299 |
-
|
300 |
-
$tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title);
|
301 |
-
$tip.removeClass('fade in top bottom left right')
|
302 |
-
};
|
303 |
-
|
304 |
-
Tooltip.prototype.hide = function() {
|
305 |
-
var that = this;
|
306 |
-
var $tip = this.tip();
|
307 |
-
var e = $.Event('hide.bs.' + this.type);
|
308 |
-
|
309 |
-
function complete() {
|
310 |
-
if( that.hoverState != 'in' ) {
|
311 |
-
$tip.detach()
|
312 |
-
}
|
313 |
-
}
|
314 |
-
|
315 |
-
this.$element.trigger(e);
|
316 |
-
|
317 |
-
if( e.isDefaultPrevented() ) {
|
318 |
-
return;
|
319 |
-
}
|
320 |
-
|
321 |
-
$tip.removeClass('in');
|
322 |
-
|
323 |
-
$.support.transition && this.$tip.hasClass('fade') ?
|
324 |
-
$tip
|
325 |
-
.one($.support.transition.end, complete)
|
326 |
-
.emulateTransitionEnd(150) :
|
327 |
-
complete();
|
328 |
-
|
329 |
-
this.$element.trigger('hidden.bs.' + this.type);
|
330 |
-
|
331 |
-
return this
|
332 |
-
};
|
333 |
-
|
334 |
-
Tooltip.prototype.fixTitle = function() {
|
335 |
-
var $e = this.$element;
|
336 |
-
if( $e.attr('title') || typeof($e.attr('data-original-title')) != 'string' ) {
|
337 |
-
$e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
|
338 |
-
}
|
339 |
-
};
|
340 |
-
|
341 |
-
Tooltip.prototype.hasContent = function() {
|
342 |
-
return this.getTitle()
|
343 |
-
};
|
344 |
-
|
345 |
-
Tooltip.prototype.getPosition = function() {
|
346 |
-
var el = this.$element[0];
|
347 |
-
return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
|
348 |
-
width: el.offsetWidth
|
349 |
-
,
|
350 |
-
height: el.offsetHeight
|
351 |
-
}, this.$element.offset())
|
352 |
-
};
|
353 |
-
|
354 |
-
Tooltip.prototype.getCalculatedOffset = function(placement, pos, actualWidth, actualHeight) {
|
355 |
-
return placement == 'bottom' ? {
|
356 |
-
top: pos.top + pos.height,
|
357 |
-
left: pos.left + pos.width / 2 - actualWidth / 2
|
358 |
-
} :
|
359 |
-
placement == 'top' ? {
|
360 |
-
top: pos.top - actualHeight,
|
361 |
-
left: pos.left + pos.width / 2 - actualWidth / 2
|
362 |
-
} :
|
363 |
-
placement == 'left' ? {
|
364 |
-
top: pos.top + pos.height / 2 - actualHeight / 2,
|
365 |
-
left: pos.left - actualWidth
|
366 |
-
} :
|
367 |
-
/* placement == 'right' */ {
|
368 |
-
top: pos.top + pos.height / 2 - actualHeight / 2,
|
369 |
-
left: pos.left + pos.width
|
370 |
-
}
|
371 |
-
};
|
372 |
-
|
373 |
-
Tooltip.prototype.getTitle = function() {
|
374 |
-
var title;
|
375 |
-
var $e = this.$element;
|
376 |
-
var o = this.options;
|
377 |
-
|
378 |
-
title = $e.attr('data-original-title')
|
379 |
-
|| (typeof o.title == 'function' ? o.title.call($e[0]) : o.title);
|
380 |
-
|
381 |
-
return title
|
382 |
-
};
|
383 |
-
|
384 |
-
Tooltip.prototype.tip = function() {
|
385 |
-
return this.$tip = this.$tip || $(this.options.template)
|
386 |
-
};
|
387 |
-
|
388 |
-
Tooltip.prototype.arrow = function() {
|
389 |
-
return this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')
|
390 |
-
};
|
391 |
-
|
392 |
-
Tooltip.prototype.validate = function() {
|
393 |
-
if( !this.$element[0].parentNode ) {
|
394 |
-
this.hide();
|
395 |
-
this.$element = null;
|
396 |
-
this.options = null
|
397 |
-
}
|
398 |
-
};
|
399 |
-
|
400 |
-
Tooltip.prototype.enable = function() {
|
401 |
-
this.enabled = true
|
402 |
-
};
|
403 |
-
|
404 |
-
Tooltip.prototype.disable = function() {
|
405 |
-
this.enabled = false
|
406 |
-
};
|
407 |
-
|
408 |
-
Tooltip.prototype.toggleEnabled = function() {
|
409 |
-
this.enabled = !this.enabled
|
410 |
-
};
|
411 |
-
|
412 |
-
Tooltip.prototype.toggle = function(e) {
|
413 |
-
var self = e ? $(e.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) : this;
|
414 |
-
self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
|
415 |
-
};
|
416 |
-
|
417 |
-
Tooltip.prototype.destroy = function() {
|
418 |
-
this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)
|
419 |
-
};
|
420 |
-
|
421 |
-
// TOOLTIP PLUGIN DEFINITION
|
422 |
-
// =========================
|
423 |
-
|
424 |
-
var old = $.fn.tooltip;
|
425 |
-
|
426 |
-
$.fn.tooltip = function(option) {
|
427 |
-
return this.each(function() {
|
428 |
-
var $this = $(this);
|
429 |
-
var data = $this.data('bs.tooltip');
|
430 |
-
var options = typeof option == 'object' && option;
|
431 |
-
|
432 |
-
if( !data ) {
|
433 |
-
$this.data('bs.tooltip', (data = new Tooltip(this, options)));
|
434 |
-
}
|
435 |
-
if( typeof option == 'string' ) {
|
436 |
-
data[option]()
|
437 |
-
}
|
438 |
-
})
|
439 |
-
};
|
440 |
-
|
441 |
-
$.fn.tooltip.Constructor = Tooltip;
|
442 |
-
|
443 |
-
// TOOLTIP NO CONFLICT
|
444 |
-
// ===================
|
445 |
-
|
446 |
-
$.fn.tooltip.noConflict = function() {
|
447 |
-
$.fn.tooltip = old;
|
448 |
-
return this
|
449 |
-
};
|
450 |
-
|
451 |
-
$(function() {
|
452 |
-
$('[data-toggle="factory-tooltip"]').tooltip({html: true});
|
453 |
-
})
|
454 |
-
|
455 |
-
}(jQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/control.checkbox.js
DELETED
@@ -1,290 +0,0 @@
|
|
1 |
-
( function($) {
|
2 |
-
|
3 |
-
// CHECKBOX CONTROL CLASS DEFINITION
|
4 |
-
// ================================
|
5 |
-
|
6 |
-
var CheckboxControl = function(element) {
|
7 |
-
var self = this;
|
8 |
-
this.$element = $(element);
|
9 |
-
|
10 |
-
this.$result = this.$element.find(".factory-result");
|
11 |
-
this.$on = this.$element.find(".factory-on");
|
12 |
-
this.$off = this.$element.find(".factory-off");
|
13 |
-
|
14 |
-
var isTumbler = this.$element.is(".factory-tumbler");
|
15 |
-
var hasTumblerHint = this.$element.is(".factory-has-tumbler-hint");
|
16 |
-
var tumblerFunction = this.$element.data('tumbler-function');
|
17 |
-
|
18 |
-
var tumblerDelay = this.$element.data('tumbler-delay');
|
19 |
-
if( !tumblerDelay ) {
|
20 |
-
tumblerDelay = 3000;
|
21 |
-
}
|
22 |
-
|
23 |
-
this.callByPath = function(functionName, args) {
|
24 |
-
var parts = functionName.split(".");
|
25 |
-
var obj = window;
|
26 |
-
|
27 |
-
for( var i = 0; i < parts.length; i++ ) {
|
28 |
-
obj = obj[parts[i]];
|
29 |
-
}
|
30 |
-
|
31 |
-
obj.apply(obj, args);
|
32 |
-
}
|
33 |
-
|
34 |
-
this.$on.click(function() {
|
35 |
-
|
36 |
-
self.$off.removeClass('active');
|
37 |
-
self.$on.addClass('active');
|
38 |
-
|
39 |
-
if( !isTumbler ) {
|
40 |
-
self.$result.attr('checked', 'checked');
|
41 |
-
self.$result.val(1);
|
42 |
-
self.$result.trigger('change');
|
43 |
-
} else {
|
44 |
-
|
45 |
-
setTimeout(function() {
|
46 |
-
self.$on.removeClass('active');
|
47 |
-
self.$off.addClass('active');
|
48 |
-
|
49 |
-
var $hint = hasTumblerHint ? self.$element.next() : null;
|
50 |
-
|
51 |
-
if( tumblerFunction ) {
|
52 |
-
self.callByPath(tumblerFunction, [self.$element, $hint]);
|
53 |
-
} else {
|
54 |
-
if( hasTumblerHint ) {
|
55 |
-
self.$element.next().fadeIn(300);
|
56 |
-
setTimeout(function() {
|
57 |
-
self.$element.next().fadeOut(500);
|
58 |
-
}, tumblerDelay);
|
59 |
-
}
|
60 |
-
}
|
61 |
-
|
62 |
-
}, 300);
|
63 |
-
}
|
64 |
-
|
65 |
-
return false;
|
66 |
-
});
|
67 |
-
|
68 |
-
this.$off.click(function() {
|
69 |
-
|
70 |
-
self.$on.removeClass('active');
|
71 |
-
self.$off.addClass('active');
|
72 |
-
|
73 |
-
if( !isTumbler ) {
|
74 |
-
self.$result.removeAttr('checked');
|
75 |
-
self.$result.val(0);
|
76 |
-
self.$result.trigger('change');
|
77 |
-
} else {
|
78 |
-
|
79 |
-
setTimeout(function() {
|
80 |
-
self.$off.removeClass('active');
|
81 |
-
self.$on.addClass('active');
|
82 |
-
|
83 |
-
var $hint = hasTumblerHint ? self.$element.next() : null;
|
84 |
-
|
85 |
-
if( tumblerFunction ) {
|
86 |
-
self.callByPath(tumblerFunction, [self.$element, $hint]);
|
87 |
-
} else {
|
88 |
-
if( hasTumblerHint ) {
|
89 |
-
self.$element.next().fadeIn(300);
|
90 |
-
setTimeout(function() {
|
91 |
-
self.$element.next().fadeOut(500);
|
92 |
-
}, tumblerDelay);
|
93 |
-
}
|
94 |
-
}
|
95 |
-
|
96 |
-
}, 300);
|
97 |
-
}
|
98 |
-
|
99 |
-
return false;
|
100 |
-
});
|
101 |
-
|
102 |
-
this.hashCode = function(str) {
|
103 |
-
var hash = 0;
|
104 |
-
if( !str || str.length === 0 ) {
|
105 |
-
return hash;
|
106 |
-
}
|
107 |
-
for( var i = 0; i < str.length; i++ ) {
|
108 |
-
var charCode = str.charCodeAt(i);
|
109 |
-
hash = ((hash << 5) - hash) + charCode;
|
110 |
-
hash = hash & hash;
|
111 |
-
}
|
112 |
-
hash = hash.toString(16);
|
113 |
-
hash = hash.replace("-", "");
|
114 |
-
return hash;
|
115 |
-
};
|
116 |
-
|
117 |
-
this.executeEvents = function(element) {
|
118 |
-
if( void 0 === window.__factory_checkbox_control_events_off_data && void 0 === window.__factory_checkbox_control_events_on_data ) {
|
119 |
-
return;
|
120 |
-
}
|
121 |
-
element.change(function() {
|
122 |
-
self.eventsProcess(element);
|
123 |
-
});
|
124 |
-
|
125 |
-
self.eventsProcess(element);
|
126 |
-
};
|
127 |
-
|
128 |
-
this.eventsProcess = function(element) {
|
129 |
-
var controlName = element.attr('name'),
|
130 |
-
controlIsChecked = element.prop('checked');
|
131 |
-
|
132 |
-
var controlEventsOnData = window.__factory_checkbox_control_events_on_data[controlName];
|
133 |
-
var controlEventsOffData = window.__factory_checkbox_control_events_off_data[controlName];
|
134 |
-
|
135 |
-
if( !controlEventsOnData && !controlEventsOffData ) {
|
136 |
-
return;
|
137 |
-
}
|
138 |
-
|
139 |
-
var detachElements, currentEventsData;
|
140 |
-
|
141 |
-
if( void 0 === window.__factory_checkbox_control_detach_elements ) {
|
142 |
-
window.__factory_checkbox_control_detach_elements = {};
|
143 |
-
}
|
144 |
-
|
145 |
-
detachElements = window.__factory_checkbox_control_detach_elements;
|
146 |
-
|
147 |
-
if( controlIsChecked ) {
|
148 |
-
currentEventsData = controlEventsOnData;
|
149 |
-
} else {
|
150 |
-
currentEventsData = controlEventsOffData;
|
151 |
-
}
|
152 |
-
|
153 |
-
for( var event in currentEventsData ) {
|
154 |
-
if( !currentEventsData.hasOwnProperty(event) ) {
|
155 |
-
continue;
|
156 |
-
}
|
157 |
-
|
158 |
-
var selector = currentEventsData[event];
|
159 |
-
|
160 |
-
var uqName;
|
161 |
-
if( !$.isArray(selector) ) {
|
162 |
-
uqName = self.hashCode(controlName + selector);
|
163 |
-
}
|
164 |
-
|
165 |
-
var selectorName;
|
166 |
-
|
167 |
-
switch( event ) {
|
168 |
-
case 'hide':
|
169 |
-
if( typeof selector === 'string' ) {
|
170 |
-
$(selector).hide(0);
|
171 |
-
}
|
172 |
-
break;
|
173 |
-
case 'show':
|
174 |
-
if( typeof selector === 'string' ) {
|
175 |
-
$(selector).fadeIn(200);
|
176 |
-
}
|
177 |
-
break;
|
178 |
-
case 'detach':
|
179 |
-
if( typeof selector === 'string' ) {
|
180 |
-
$(selector).each(function(i) {
|
181 |
-
if( !detachElements[uqName] ) {
|
182 |
-
detachElements[uqName] = {};
|
183 |
-
}
|
184 |
-
if( !detachElements[uqName][i] ) {
|
185 |
-
detachElements[uqName][i] = {};
|
186 |
-
}
|
187 |
-
detachElements[uqName][i]['recovery_contanier'] = $(this).parent();
|
188 |
-
detachElements[uqName][i]['element'] = $(this).clone(true);
|
189 |
-
|
190 |
-
$(this).remove();
|
191 |
-
});
|
192 |
-
}
|
193 |
-
break;
|
194 |
-
case 'recovery':
|
195 |
-
if( detachElements[uqName] ) {
|
196 |
-
for( var key in detachElements[uqName] ) {
|
197 |
-
if( !detachElements[uqName].hasOwnProperty(key) ) {
|
198 |
-
continue;
|
199 |
-
}
|
200 |
-
if( detachElements[uqName][key]['recovery_contanier'] && detachElements[uqName][key]['element'] ) {
|
201 |
-
detachElements[uqName][key]['recovery_contanier'].append(detachElements[uqName][key]['element']);
|
202 |
-
}
|
203 |
-
}
|
204 |
-
delete detachElements[uqName];
|
205 |
-
}
|
206 |
-
break;
|
207 |
-
case 'removeClasses':
|
208 |
-
if( typeof selector === 'object' ) {
|
209 |
-
for( selectorName in selector ) {
|
210 |
-
if( !selector.hasOwnProperty(selectorName) ) {
|
211 |
-
continue;
|
212 |
-
}
|
213 |
-
if( selector[selectorName] ) {
|
214 |
-
$(selectorName).removeClass(selector[selectorName]);
|
215 |
-
}
|
216 |
-
|
217 |
-
}
|
218 |
-
}
|
219 |
-
break;
|
220 |
-
case 'addClasses':
|
221 |
-
if( typeof selector === 'object' ) {
|
222 |
-
for( selectorName in selector ) {
|
223 |
-
if( !selector.hasOwnProperty(selectorName) ) {
|
224 |
-
continue;
|
225 |
-
}
|
226 |
-
if( selector[selectorName] ) {
|
227 |
-
$(selectorName).addClass(selector[selectorName]);
|
228 |
-
}
|
229 |
-
|
230 |
-
}
|
231 |
-
}
|
232 |
-
break;
|
233 |
-
case 'setValue':
|
234 |
-
if( typeof selector === 'object' ) {
|
235 |
-
for( selectorName in selector ) {
|
236 |
-
if( !selector.hasOwnProperty(selectorName) ) {
|
237 |
-
continue;
|
238 |
-
}
|
239 |
-
|
240 |
-
if( selector[selectorName] !== void 0 && selector[selectorName] !== null ) {
|
241 |
-
console.log(selector[selectorName]);
|
242 |
-
$(selectorName).val(selector[selectorName]);
|
243 |
-
}
|
244 |
-
}
|
245 |
-
}
|
246 |
-
break;
|
247 |
-
}
|
248 |
-
}
|
249 |
-
};
|
250 |
-
|
251 |
-
this.executeEvents(this.$result);
|
252 |
-
|
253 |
-
};
|
254 |
-
|
255 |
-
// CHECKBOX CONTROL DEFINITION
|
256 |
-
// ================================
|
257 |
-
|
258 |
-
$.fn.factoryBootstrap330_checkboxControl = function(option) {
|
259 |
-
|
260 |
-
// call an method
|
261 |
-
if( typeof option === "string" ) {
|
262 |
-
var data = $(this).data('factory.checkbox.control');
|
263 |
-
if( !data ) {
|
264 |
-
return null;
|
265 |
-
}
|
266 |
-
return data[option]();
|
267 |
-
}
|
268 |
-
|
269 |
-
// creating an object
|
270 |
-
else {
|
271 |
-
return this.each(function() {
|
272 |
-
var $this = $(this);
|
273 |
-
var data = $this.data('factory.checkbox.control');
|
274 |
-
if( !data ) {
|
275 |
-
$this.data('factory.checkbox.control', (data = new CheckboxControl(this)));
|
276 |
-
}
|
277 |
-
});
|
278 |
-
}
|
279 |
-
};
|
280 |
-
|
281 |
-
$.fn.factoryBootstrap330_checkboxControl.Constructor = CheckboxControl;
|
282 |
-
|
283 |
-
// AUTO CREATING
|
284 |
-
// ================================
|
285 |
-
|
286 |
-
$(function() {
|
287 |
-
$(".factory-bootstrap-330 .factory-checkbox.factory-buttons-way").factoryBootstrap330_checkboxControl();
|
288 |
-
});
|
289 |
-
|
290 |
-
}(jQuery) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/control.dropdown.js
DELETED
@@ -1,355 +0,0 @@
|
|
1 |
-
( function($) {
|
2 |
-
|
3 |
-
// DROPDOWN CONTROL CLASS DEFINITION
|
4 |
-
// ================================
|
5 |
-
|
6 |
-
var DropdownControl = function(element) {
|
7 |
-
var self = this;
|
8 |
-
|
9 |
-
this.$element = $(element);
|
10 |
-
this.way = this.$element.data('way');
|
11 |
-
this.name = this.$element.data('name') || this.$element.attr('name');
|
12 |
-
|
13 |
-
this.hashCode = function(str) {
|
14 |
-
var hash = 0;
|
15 |
-
if( !str || str.length === 0 ) {
|
16 |
-
return hash;
|
17 |
-
}
|
18 |
-
for( var i = 0; i < str.length; i++ ) {
|
19 |
-
var charCode = str.charCodeAt(i);
|
20 |
-
hash = ((hash << 5) - hash) + charCode;
|
21 |
-
hash = hash & hash;
|
22 |
-
}
|
23 |
-
hash = hash.toString(16);
|
24 |
-
hash = hash.replace("-", "");
|
25 |
-
return hash;
|
26 |
-
};
|
27 |
-
|
28 |
-
this.executeEvents = function(element) {
|
29 |
-
if( void 0 === window.factory_dropdown_control_events_data ) {
|
30 |
-
return;
|
31 |
-
}
|
32 |
-
|
33 |
-
element.change(function() {
|
34 |
-
self.eventsProcess(element);
|
35 |
-
});
|
36 |
-
|
37 |
-
self.eventsProcess(element);
|
38 |
-
};
|
39 |
-
|
40 |
-
this.eventsProcess = function(element) {
|
41 |
-
var controlName = element.attr('name'),
|
42 |
-
controlValue = element.val();
|
43 |
-
var controlEventsData = window.factory_dropdown_control_events_data[controlName];
|
44 |
-
|
45 |
-
if( !controlEventsData || !controlEventsData[controlValue] ) {
|
46 |
-
return;
|
47 |
-
}
|
48 |
-
|
49 |
-
var detachElements;
|
50 |
-
|
51 |
-
if( void 0 === window.__factory_dropdown_control_detach_elements ) {
|
52 |
-
window.__factory_dropdown_control_detach_elements = {};
|
53 |
-
}
|
54 |
-
|
55 |
-
detachElements = window.__factory_dropdown_control_detach_elements;
|
56 |
-
|
57 |
-
for( var event in controlEventsData[controlValue] ) {
|
58 |
-
if( !controlEventsData[controlValue].hasOwnProperty(event) ) {
|
59 |
-
continue;
|
60 |
-
}
|
61 |
-
|
62 |
-
var selector = controlEventsData[controlValue][event];
|
63 |
-
|
64 |
-
var uqName;
|
65 |
-
if( !$.isArray(selector) ) {
|
66 |
-
uqName = self.hashCode(controlName + selector);
|
67 |
-
}
|
68 |
-
|
69 |
-
switch( event ) {
|
70 |
-
case 'hide':
|
71 |
-
if( typeof selector === 'string' ) {
|
72 |
-
$(selector).hide(0);
|
73 |
-
}
|
74 |
-
break;
|
75 |
-
case 'show':
|
76 |
-
if( typeof selector === 'string' ) {
|
77 |
-
$(selector).fadeIn(200);
|
78 |
-
}
|
79 |
-
break;
|
80 |
-
case 'detach':
|
81 |
-
if( typeof selector === 'string' ) {
|
82 |
-
$(selector).each(function(i) {
|
83 |
-
if( !detachElements[uqName] ) {
|
84 |
-
detachElements[uqName] = {};
|
85 |
-
}
|
86 |
-
if( !detachElements[uqName][i] ) {
|
87 |
-
detachElements[uqName][i] = {};
|
88 |
-
}
|
89 |
-
detachElements[uqName][i]['recovery_contanier'] = $(this).parent();
|
90 |
-
detachElements[uqName][i]['element'] = $(this).clone(true);
|
91 |
-
|
92 |
-
$(this).remove();
|
93 |
-
});
|
94 |
-
}
|
95 |
-
break;
|
96 |
-
case 'recovery':
|
97 |
-
if( detachElements[uqName] ) {
|
98 |
-
for( var key in detachElements[uqName] ) {
|
99 |
-
if( !detachElements[uqName].hasOwnProperty(key) ) {
|
100 |
-
continue;
|
101 |
-
}
|
102 |
-
if( detachElements[uqName][key]['recovery_contanier'] && detachElements[uqName][key]['element'] ) {
|
103 |
-
detachElements[uqName][key]['recovery_contanier'].append(detachElements[uqName][key]['element']);
|
104 |
-
}
|
105 |
-
}
|
106 |
-
delete detachElements[uqName];
|
107 |
-
}
|
108 |
-
break;
|
109 |
-
case 'removeClasses':
|
110 |
-
if( typeof selector === 'object' ) {
|
111 |
-
for( var selectorName in selector ) {
|
112 |
-
if( !selector.hasOwnProperty(selectorName) ) {
|
113 |
-
continue;
|
114 |
-
}
|
115 |
-
if( selector[selectorName] ) {
|
116 |
-
$(selectorName).removeClass(selector[selectorName]);
|
117 |
-
}
|
118 |
-
|
119 |
-
}
|
120 |
-
}
|
121 |
-
break;
|
122 |
-
case 'addClasses':
|
123 |
-
if( typeof selector === 'object' ) {
|
124 |
-
for( var selectorName in selector ) {
|
125 |
-
if( !selector.hasOwnProperty(selectorName) ) {
|
126 |
-
continue;
|
127 |
-
}
|
128 |
-
if( selector[selectorName] ) {
|
129 |
-
$(selectorName).addClass(selector[selectorName]);
|
130 |
-
}
|
131 |
-
|
132 |
-
}
|
133 |
-
}
|
134 |
-
break;
|
135 |
-
}
|
136 |
-
}
|
137 |
-
};
|
138 |
-
|
139 |
-
if( 'buttons' === this.way ) {
|
140 |
-
|
141 |
-
this.$result = this.$element.find(".factory-result");
|
142 |
-
this.$hints = this.$element.find(".factory-hints");
|
143 |
-
this.$buttons = this.$element.find(".btn");
|
144 |
-
|
145 |
-
self.executeEvents(this.$result);
|
146 |
-
|
147 |
-
this.$buttons.click(function() {
|
148 |
-
var value = $(this).data('value');
|
149 |
-
|
150 |
-
self.$buttons.removeClass('active');
|
151 |
-
$(this).addClass('active');
|
152 |
-
|
153 |
-
self.$hints.find(".factory-hint").hide();
|
154 |
-
self.$hints.find(".factory-hint-" + value).fadeIn();
|
155 |
-
|
156 |
-
self.$result.val(value);
|
157 |
-
self.$result.trigger('change');
|
158 |
-
|
159 |
-
return false;
|
160 |
-
});
|
161 |
-
|
162 |
-
} else if( 'ddslick' === this.way ) {
|
163 |
-
self.executeEvents(self.$element.find(".factory-result"));
|
164 |
-
|
165 |
-
var data = window['factory_' + this.name + "_data"];
|
166 |
-
var $ddslick = this.$element.find(".factory-ddslick");
|
167 |
-
|
168 |
-
var width = this.$element.data("width") || 300;
|
169 |
-
var imagePosition = this.$element.data("align") || 'right';
|
170 |
-
|
171 |
-
$(data).each(function() {
|
172 |
-
if( !this.imageHoverSrc ) {
|
173 |
-
return true;
|
174 |
-
}
|
175 |
-
$('<img/>')[0].src = this.imageHoverSrc;
|
176 |
-
});
|
177 |
-
|
178 |
-
$ddslick.ddslick({
|
179 |
-
data: data,
|
180 |
-
width: width,
|
181 |
-
imagePosition: imagePosition,
|
182 |
-
selectText: "- select -",
|
183 |
-
onSelected: function(data) {
|
184 |
-
|
185 |
-
if( data.selectedData.imageHoverSrc ) {
|
186 |
-
self.$element.find(".dd-selected-image").attr('src', data.selectedData.imageHoverSrc);
|
187 |
-
}
|
188 |
-
|
189 |
-
var $result = self.$element.find(".factory-result").val(data.selectedData.value);
|
190 |
-
$result.change();
|
191 |
-
}
|
192 |
-
});
|
193 |
-
|
194 |
-
} else {
|
195 |
-
|
196 |
-
self.executeEvents(this.$element);
|
197 |
-
|
198 |
-
// hints
|
199 |
-
|
200 |
-
this.$hints = this.$element.next();
|
201 |
-
|
202 |
-
if( this.$hints.hasClass('factory-hints') ) {
|
203 |
-
this.$element.change(function() {
|
204 |
-
self.updateHints();
|
205 |
-
return false;
|
206 |
-
});
|
207 |
-
|
208 |
-
this.updateHints = function() {
|
209 |
-
var value = self.$element.val();
|
210 |
-
self.$hints.find(".factory-hint").hide();
|
211 |
-
self.$hints.find(".factory-hint-" + value).show();
|
212 |
-
};
|
213 |
-
|
214 |
-
self.updateHints();
|
215 |
-
}
|
216 |
-
|
217 |
-
// ajax
|
218 |
-
|
219 |
-
this.getAjaxData = function() {
|
220 |
-
var ajaxDataID = self.$element.data('ajax-data-id');
|
221 |
-
return window[ajaxDataID];
|
222 |
-
};
|
223 |
-
|
224 |
-
this.loadData = function() {
|
225 |
-
|
226 |
-
var ajaxData = self.getAjaxData();
|
227 |
-
|
228 |
-
var req = $.ajax({
|
229 |
-
url: ajaxData.url,
|
230 |
-
data: ajaxData.data,
|
231 |
-
dataType: 'json',
|
232 |
-
|
233 |
-
success: function(response) {
|
234 |
-
if( response.error ) {
|
235 |
-
return self.showError(response.error);
|
236 |
-
}
|
237 |
-
self.fill(response.items);
|
238 |
-
},
|
239 |
-
error: function(response) {
|
240 |
-
|
241 |
-
if( console && console.log ) {
|
242 |
-
console.log(response.responseText);
|
243 |
-
}
|
244 |
-
|
245 |
-
self.showError('Unexpected error occurred during the ajax request.');
|
246 |
-
},
|
247 |
-
complete: function() {
|
248 |
-
self.removeLoader();
|
249 |
-
}
|
250 |
-
});
|
251 |
-
};
|
252 |
-
|
253 |
-
this.fill = function(items) {
|
254 |
-
this.clearList();
|
255 |
-
|
256 |
-
var ajaxData = self.getAjaxData();
|
257 |
-
|
258 |
-
if( !items || !items.length ) {
|
259 |
-
|
260 |
-
this.$element.append("<option>" + ajaxData.emptyList + "</li>");
|
261 |
-
|
262 |
-
} else {
|
263 |
-
|
264 |
-
for( var index in items ) {
|
265 |
-
var item = items[index];
|
266 |
-
self.addListItem(item);
|
267 |
-
}
|
268 |
-
}
|
269 |
-
|
270 |
-
this.$element.trigger("factory-loaded");
|
271 |
-
};
|
272 |
-
|
273 |
-
this.clearList = function() {
|
274 |
-
this.$element.html("");
|
275 |
-
};
|
276 |
-
|
277 |
-
this.addListItem = function(item) {
|
278 |
-
|
279 |
-
var $option = $('<option />')
|
280 |
-
.attr('value', item.value)
|
281 |
-
.text(item.title)
|
282 |
-
.appendTo(this.$element);
|
283 |
-
|
284 |
-
var ajaxData = self.getAjaxData();
|
285 |
-
|
286 |
-
if( ajaxData.selected && ajaxData.selected == item.value ) {
|
287 |
-
$option.attr('selected', 'selected');
|
288 |
-
}
|
289 |
-
};
|
290 |
-
|
291 |
-
this.showError = function(text) {
|
292 |
-
this.clearList();
|
293 |
-
|
294 |
-
var $error = $("<div class='factory-control-error'></div>")
|
295 |
-
.append($("<i class='fa fa-exclamation-triangle'></i>"))
|
296 |
-
.append(text);
|
297 |
-
|
298 |
-
var ajaxData = self.getAjaxData();
|
299 |
-
|
300 |
-
this.$element.append("<option>" + ajaxData.emptyList + "</li>");
|
301 |
-
this.$element.after($error);
|
302 |
-
|
303 |
-
this.$element.addClass('factory-has-error');
|
304 |
-
};
|
305 |
-
|
306 |
-
this.removeLoader = function() {
|
307 |
-
this.$element.removeClass('factory-hidden');
|
308 |
-
|
309 |
-
var ajaxData = self.getAjaxData();
|
310 |
-
$(ajaxData.loader).remove();
|
311 |
-
};
|
312 |
-
|
313 |
-
var ajax = this.$element.data('ajax');
|
314 |
-
if( ajax ) {
|
315 |
-
this.loadData();
|
316 |
-
}
|
317 |
-
}
|
318 |
-
};
|
319 |
-
|
320 |
-
// DROPDOWN CONTROL DEFINITION
|
321 |
-
// ================================
|
322 |
-
|
323 |
-
$.fn.factoryBootstrap330_dropdownControl = function(option) {
|
324 |
-
|
325 |
-
// call an method
|
326 |
-
if( typeof option === "string" ) {
|
327 |
-
var data = $(this).data('factory.dropdown.control');
|
328 |
-
if( !data ) {
|
329 |
-
return null;
|
330 |
-
}
|
331 |
-
return data[option]();
|
332 |
-
}
|
333 |
-
|
334 |
-
// creating an object
|
335 |
-
else {
|
336 |
-
return this.each(function() {
|
337 |
-
var $this = $(this);
|
338 |
-
var data = $this.data('factory.dropdown.control');
|
339 |
-
if( !data ) {
|
340 |
-
$this.data('factory.dropdown.control', (data = new DropdownControl(this)));
|
341 |
-
}
|
342 |
-
});
|
343 |
-
}
|
344 |
-
};
|
345 |
-
|
346 |
-
$.fn.factoryBootstrap330_dropdownControl.Constructor = DropdownControl;
|
347 |
-
|
348 |
-
// AUTO CREATING
|
349 |
-
// ================================
|
350 |
-
|
351 |
-
$(function() {
|
352 |
-
$(".factory-bootstrap-330 .factory-dropdown").factoryBootstrap330_dropdownControl();
|
353 |
-
});
|
354 |
-
|
355 |
-
}(jQuery) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/control.list.js
DELETED
@@ -1,141 +0,0 @@
|
|
1 |
-
( function( $ ){
|
2 |
-
|
3 |
-
var list = function (element) {
|
4 |
-
var self = this;
|
5 |
-
|
6 |
-
this.$element = $(element);
|
7 |
-
this.way = this.$element.data('way');
|
8 |
-
this.name = this.$element.data('name');
|
9 |
-
|
10 |
-
// curently the control supports only checklists
|
11 |
-
if ( 'checklist' !== this.way ) return;
|
12 |
-
|
13 |
-
this.getAjaxData = function() {
|
14 |
-
var ajaxDataID = self.$element.data('ajax-data-id');
|
15 |
-
return window[ajaxDataID];
|
16 |
-
}
|
17 |
-
|
18 |
-
this.loadData = function() {
|
19 |
-
|
20 |
-
var ajaxData = self.getAjaxData();
|
21 |
-
|
22 |
-
var req = $.ajax({
|
23 |
-
url: ajaxData.url,
|
24 |
-
data: ajaxData.data,
|
25 |
-
dataType: 'json',
|
26 |
-
|
27 |
-
success: function( response ){
|
28 |
-
if ( response.error ) return self.showError( response.error );
|
29 |
-
self.fill( response.items );
|
30 |
-
},
|
31 |
-
error: function() {
|
32 |
-
self.showError('Unexpected error occurred during the ajax request.');
|
33 |
-
},
|
34 |
-
complete: function() {
|
35 |
-
self.removeLoader();
|
36 |
-
}
|
37 |
-
});
|
38 |
-
};
|
39 |
-
|
40 |
-
this.fill = function( items ) {
|
41 |
-
this.clearList();
|
42 |
-
|
43 |
-
var ajaxData = self.getAjaxData();
|
44 |
-
|
45 |
-
if ( !items || !items.length ) {
|
46 |
-
|
47 |
-
this.$element.addClass('factory-empty');
|
48 |
-
this.$element.append("<li>" + ajaxData.emptyList + "</li>");
|
49 |
-
|
50 |
-
} else {
|
51 |
-
|
52 |
-
this.$element.removeClass('factory-empty');
|
53 |
-
|
54 |
-
for( var index in items ) {
|
55 |
-
var item = items[index];
|
56 |
-
self.addListItem( item );
|
57 |
-
}
|
58 |
-
}
|
59 |
-
};
|
60 |
-
|
61 |
-
this.clearList = function() {
|
62 |
-
this.$element.html("");
|
63 |
-
};
|
64 |
-
|
65 |
-
this.addListItem = function( item ) {
|
66 |
-
|
67 |
-
var $li = $('<li>');
|
68 |
-
|
69 |
-
var $label = $('<label>')
|
70 |
-
.attr('for', 'factory-checklist-' + self.name + '-' + item.value)
|
71 |
-
.appendTo($li);
|
72 |
-
|
73 |
-
var $checkboxSpan = $('<span>')
|
74 |
-
.appendTo($label);
|
75 |
-
|
76 |
-
var $checkbox = $('<input />')
|
77 |
-
.attr('type', 'checkbox')
|
78 |
-
.attr('name', self.name + "[]")
|
79 |
-
.val(item.value)
|
80 |
-
.attr('id', 'factory-checklist-' + self.name + '-' + item.value)
|
81 |
-
.appendTo($checkboxSpan);
|
82 |
-
|
83 |
-
|
84 |
-
var $title = $('<span>' + item.title + '</span>')
|
85 |
-
.appendTo($label);
|
86 |
-
|
87 |
-
|
88 |
-
var ajaxData = self.getAjaxData();
|
89 |
-
if ( ajaxData.selected.length && $.inArray( item.value, ajaxData.selected ) >= 0 ) {
|
90 |
-
$checkbox.attr('checked', 'checked');
|
91 |
-
}
|
92 |
-
|
93 |
-
this.$element.append($li);
|
94 |
-
};
|
95 |
-
|
96 |
-
this.showError = function( text ) {
|
97 |
-
|
98 |
-
this.$element.html("")
|
99 |
-
.append($("<i class='fa fa-exclamation-triangle'></i>"))
|
100 |
-
.append( text );
|
101 |
-
|
102 |
-
this.$element.addClass('factory-list-error');
|
103 |
-
};
|
104 |
-
|
105 |
-
this.removeLoader = function() {
|
106 |
-
this.$element.removeClass('factory-hidden');
|
107 |
-
|
108 |
-
var ajaxData = self.getAjaxData();
|
109 |
-
$( ajaxData.loader ).remove();
|
110 |
-
}
|
111 |
-
|
112 |
-
var ajax = this.$element.data('ajax');
|
113 |
-
if ( ajax ) this.loadData();
|
114 |
-
};
|
115 |
-
|
116 |
-
$.fn.factoryBootstrap330_listControl = function (option) {
|
117 |
-
|
118 |
-
// call an method
|
119 |
-
if ( typeof option === "string" ) {
|
120 |
-
var data = $(this).data('factory.list.control');
|
121 |
-
if ( !data ) return null;
|
122 |
-
return data[option]();
|
123 |
-
}
|
124 |
-
|
125 |
-
// creating an object
|
126 |
-
else {
|
127 |
-
return this.each(function () {
|
128 |
-
var $this = $(this);
|
129 |
-
var data = $this.data('factory.list.control');
|
130 |
-
if (!data) $this.data('factory.list.control', (data = new list(this)));
|
131 |
-
});
|
132 |
-
}
|
133 |
-
};
|
134 |
-
|
135 |
-
$.fn.factoryBootstrap330_listControl.Constructor = list;
|
136 |
-
|
137 |
-
$(function(){
|
138 |
-
$(".factory-bootstrap-330 .factory-list").factoryBootstrap330_listControl();
|
139 |
-
});
|
140 |
-
|
141 |
-
}( jQuery ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/control.multiple-textbox.js
DELETED
@@ -1,43 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* Control multiple textbox
|
3 |
-
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
4 |
-
* @copyright (c) 22.11.2017, Webcraftic
|
5 |
-
* @version 1.0
|
6 |
-
*/
|
7 |
-
|
8 |
-
|
9 |
-
(function($) {
|
10 |
-
'use strict';
|
11 |
-
|
12 |
-
var multipleControl = function(element) {
|
13 |
-
var self = this;
|
14 |
-
this.$element = $(element);
|
15 |
-
|
16 |
-
var prototype = $('.factory-mtextbox-item', this.$element).eq(0).clone(true);
|
17 |
-
|
18 |
-
$('.factory-mtextbox-add-item', this.$element).on('click', function() {
|
19 |
-
var contanier = $(this).closest('.factory-multiple-textbox-group').find('.factory-mtextbox-items');
|
20 |
-
var element = prototype.clone(true);
|
21 |
-
var removeButton = $('<button class="btn btn-default btn-small factory-mtextbox-remove-item"><i class="fa fa-times" aria-hidden="true"></i></button>');
|
22 |
-
contanier.append(element.append(removeButton));
|
23 |
-
element.find('input[type="text"]').val('').focus();
|
24 |
-
return false;
|
25 |
-
});
|
26 |
-
|
27 |
-
$(document).on('click', '.factory-mtextbox-remove-item', function() {
|
28 |
-
$(this).closest('.factory-mtextbox-item').remove();
|
29 |
-
return false;
|
30 |
-
});
|
31 |
-
};
|
32 |
-
|
33 |
-
$.fn.factoryBootstrap330_MultipleTextboxControl = function() {
|
34 |
-
return this.each(function() {
|
35 |
-
new multipleControl(this);
|
36 |
-
});
|
37 |
-
};
|
38 |
-
|
39 |
-
$(function() {
|
40 |
-
$(".factory-bootstrap-330 .factory-multiple-textbox-group").factoryBootstrap330_MultipleTextboxControl();
|
41 |
-
});
|
42 |
-
|
43 |
-
})(jQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/boot.php
CHANGED
@@ -2,30 +2,36 @@
|
|
2 |
/**
|
3 |
* Factory Bootstrap
|
4 |
*
|
5 |
-
* @author
|
6 |
-
* @copyright (c)
|
7 |
*
|
8 |
* @package factory-bootstrap
|
9 |
* @since 1.0.0
|
10 |
*/
|
11 |
|
|
|
|
|
|
|
|
|
|
|
12 |
// module provides function only for the admin area
|
13 |
if( !is_admin() ) {
|
14 |
return;
|
15 |
}
|
16 |
|
17 |
-
if( defined('
|
18 |
return;
|
19 |
}
|
20 |
-
define('
|
21 |
|
22 |
-
define('
|
23 |
-
define('
|
24 |
|
25 |
// sets version of admin interface
|
26 |
-
define('
|
|
|
27 |
if( !defined('FACTORY_FLAT_ADMIN') ) {
|
28 |
define('FACTORY_FLAT_ADMIN', true);
|
29 |
}
|
30 |
|
31 |
-
include_once(
|
2 |
/**
|
3 |
* Factory Bootstrap
|
4 |
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
7 |
*
|
8 |
* @package factory-bootstrap
|
9 |
* @since 1.0.0
|
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_400_LOADED') ) {
|
23 |
return;
|
24 |
}
|
25 |
+
define('FACTORY_BOOTSTRAP_400_LOADED', true);
|
26 |
|
27 |
+
define('FACTORY_BOOTSTRAP_400_DIR', dirname(__FILE__));
|
28 |
+
define('FACTORY_BOOTSTRAP_400_URL', plugins_url(null, __FILE__));
|
29 |
|
30 |
// sets version of admin interface
|
31 |
+
define('FACTORY_BOOTSTRAP_400_VERSION', 'FACTORY_BOOTSTRAP_400');
|
32 |
+
|
33 |
if( !defined('FACTORY_FLAT_ADMIN') ) {
|
34 |
define('FACTORY_FLAT_ADMIN', true);
|
35 |
}
|
36 |
|
37 |
+
include_once(FACTORY_BOOTSTRAP_400_DIR . '/includes/functions.php');
|
libs/factory/bootstrap/includes/functions.php
CHANGED
@@ -4,293 +4,287 @@
|
|
4 |
*
|
5 |
* @author Alex Kovalev <alex@byonepress.com>
|
6 |
* @author Paul Kashtanoff <paul@byonepress.com>
|
7 |
-
* @copyright (c)
|
8 |
*
|
9 |
-
* @package
|
10 |
* @since 1.0.0
|
11 |
*/
|
12 |
-
|
13 |
-
add_action('
|
14 |
-
|
15 |
-
{
|
16 |
-
$manager = new FactoryBootstrap330_Manager($plugin);
|
17 |
-
$plugin->bootstrap = $manager;
|
18 |
-
}
|
19 |
-
|
20 |
/**
|
21 |
-
*
|
22 |
-
*
|
23 |
-
* @since 3.2.0
|
24 |
*/
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
public $plugin;
|
34 |
-
|
35 |
-
/**
|
36 |
-
* Contains scripts to include.
|
37 |
-
*
|
38 |
-
* @since 3.2.0
|
39 |
-
* @var string[]
|
40 |
-
*/
|
41 |
-
public $scripts = array();
|
42 |
-
|
43 |
-
/**
|
44 |
-
* Contains styles to include.
|
45 |
-
*
|
46 |
-
* @since 3.2.0
|
47 |
-
* @var string[]
|
48 |
-
*/
|
49 |
-
public $styles = array();
|
50 |
-
|
51 |
-
/**
|
52 |
-
* Createas a new instance of the license api for a given plugin.
|
53 |
-
*
|
54 |
-
* @since 1.0.0
|
55 |
-
*/
|
56 |
-
public function __construct($plugin)
|
57 |
-
{
|
58 |
-
$this->plugin = $plugin;
|
59 |
-
|
60 |
-
add_action('admin_enqueue_scripts', array($this, 'loadAssets'));
|
61 |
-
add_filter('admin_body_class', array($this, 'adminBodyClass'));
|
62 |
-
}
|
63 |
-
|
64 |
/**
|
65 |
-
*
|
66 |
*
|
67 |
* @since 3.2.0
|
68 |
-
* @param mixedp[] $scripts
|
69 |
-
* @return void
|
70 |
*/
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
}
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
|
|
101 |
}
|
102 |
-
}
|
103 |
-
} else {
|
104 |
-
if( !in_array($styles, $this->styles) ) {
|
105 |
-
$this->styles[] = $styles;
|
106 |
-
}
|
107 |
-
}
|
108 |
-
}
|
109 |
-
|
110 |
-
/**
|
111 |
-
* Loads Bootstrap assets.
|
112 |
-
*
|
113 |
-
* @see admin_enqueue_scripts
|
114 |
-
*
|
115 |
-
* @since 3.2.0
|
116 |
-
* @return void
|
117 |
-
*/
|
118 |
-
public function loadAssets($hook)
|
119 |
-
{
|
120 |
-
|
121 |
-
do_action('factory_bootstrap_enqueue_scripts', $hook);
|
122 |
-
do_action('factory_bootstrap_enqueue_scripts_' . $this->plugin->pluginName, $hook);
|
123 |
-
|
124 |
-
$dependencies = array();
|
125 |
-
if( !empty($this->scripts) ) {
|
126 |
-
$dependencies[] = 'jquery';
|
127 |
-
$dependencies[] = 'jquery-ui-core';
|
128 |
-
$dependencies[] = 'jquery-ui-widget';
|
129 |
-
}
|
130 |
-
|
131 |
-
foreach($this->scripts as $script) {
|
132 |
-
switch( $script ) {
|
133 |
-
case 'plugin.iris':
|
134 |
-
$dependencies[] = 'jquery-ui-widget';
|
135 |
-
$dependencies[] = 'jquery-ui-slider';
|
136 |
-
$dependencies[] = 'jquery-ui-draggable';
|
137 |
-
break;
|
138 |
}
|
139 |
}
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
|
|
|
|
|
|
|
|
155 |
}
|
156 |
}
|
157 |
}
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
171 |
}
|
172 |
-
|
173 |
-
foreach($this->
|
174 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
175 |
}
|
176 |
-
// - //
|
177 |
-
|
178 |
-
} else {
|
179 |
-
|
180 |
-
$loadScriptsOut = join(',', $this->scripts);
|
181 |
-
$loadStylesOut = join(',', $this->styles);
|
182 |
|
183 |
-
if(
|
184 |
-
$
|
185 |
-
$loadStylesOut .= "&debug=true";
|
186 |
}
|
187 |
-
|
188 |
if( !empty($this->styles) ) {
|
189 |
-
$
|
190 |
-
wp_enqueue_style('factory-bootstrap-330-' . $id, FACTORY_BOOTSTRAP_330_URL . '/includes/load-styles.php?folder=flat&load=' . $loadStylesOut, array(), $this->plugin->version);
|
191 |
}
|
192 |
|
193 |
-
|
194 |
-
|
195 |
-
|
|
|
|
|
196 |
}
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
204 |
}
|
205 |
|
206 |
-
|
207 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
208 |
|
209 |
-
|
210 |
-
|
211 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
212 |
|
213 |
-
|
214 |
-
$primaryDark = '#037c9a';
|
215 |
-
$primaryLight = '#04a4cc';
|
216 |
-
} elseif( $colorName == 'blue' ) {
|
217 |
-
$primaryDark = '#d39323';
|
218 |
-
$primaryLight = '#e1a948';
|
219 |
-
} elseif( $colorName == 'coffee' ) {
|
220 |
-
$primaryDark = '#b78a66';
|
221 |
-
$primaryLight = '#c7a589';
|
222 |
-
} elseif( $colorName == 'ectoplasm' ) {
|
223 |
-
$primaryDark = '#839237';
|
224 |
-
$primaryLight = '#a3b745';
|
225 |
-
} elseif( $colorName == 'ocean' ) {
|
226 |
-
$primaryDark = '#80a583';
|
227 |
-
$primaryLight = '#9ebaa0';
|
228 |
-
} elseif( $colorName == 'midnight' ) {
|
229 |
-
$primaryDark = '#d02a21';
|
230 |
-
$primaryLight = '#e14d43';
|
231 |
-
} elseif( $colorName == 'sunrise' ) {
|
232 |
-
$primaryDark = '#c36822';
|
233 |
-
$primaryLight = '#dd823b';
|
234 |
-
} else {
|
235 |
-
$primaryDark = '#0074a2';
|
236 |
-
$primaryLight = '#2ea2cc';
|
237 |
-
}
|
238 |
|
239 |
-
|
|
|
|
|
|
|
240 |
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
|
|
|
|
247 |
}
|
248 |
-
window.factory.factoryBootstrap330.colors = {
|
249 |
-
primaryDark: '<?php echo $primaryDark ?>',
|
250 |
-
primaryLight: '<?php echo $primaryLight ?>'
|
251 |
-
};
|
252 |
-
</script>
|
253 |
-
<?php
|
254 |
-
}
|
255 |
-
|
256 |
-
/**
|
257 |
-
* Tests whether the scripts and styles path contain query arguments or them were removed.
|
258 |
-
*
|
259 |
-
* See 'script_loader_src'
|
260 |
-
* See 'style_loader_src'
|
261 |
-
*
|
262 |
-
* @since 3.2.5
|
263 |
-
* @return void
|
264 |
-
*/
|
265 |
-
public function testKeepingArgsInPaths($src, $handle)
|
266 |
-
{
|
267 |
-
if( substr($handle, 0, 22) !== 'factory-bootstrap-330-' ) {
|
268 |
-
return $src;
|
269 |
}
|
270 |
|
271 |
-
|
272 |
-
|
273 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
274 |
}
|
275 |
-
|
276 |
-
update_option('factory_css_js_compression', false);
|
277 |
-
|
278 |
-
return $src;
|
279 |
-
}
|
280 |
-
|
281 |
-
/**
|
282 |
-
* Adds the body classes: 'factory-flat or 'factory-volumetric'.
|
283 |
-
*
|
284 |
-
* @since 3.2.0
|
285 |
-
* @param string $classes
|
286 |
-
* @return string
|
287 |
-
*/
|
288 |
-
public function adminBodyClass($classes)
|
289 |
-
{
|
290 |
-
$classes .= FACTORY_FLAT_ADMIN
|
291 |
-
? ' factory-flat '
|
292 |
-
: ' factory-volumetric ';
|
293 |
-
|
294 |
-
return $classes;
|
295 |
}
|
296 |
}
|
4 |
*
|
5 |
* @author Alex Kovalev <alex@byonepress.com>
|
6 |
* @author Paul Kashtanoff <paul@byonepress.com>
|
7 |
+
* @copyright (c) 2018, OnePress Ltd
|
8 |
*
|
9 |
+
* @package factory-bootstrap
|
10 |
* @since 1.0.0
|
11 |
*/
|
12 |
+
|
13 |
+
add_action('wbcr_factory_bootstrap_400_plugin_created', 'wbcr_factory_bootstrap_400_plugin_created');
|
14 |
+
|
|
|
|
|
|
|
|
|
|
|
15 |
/**
|
16 |
+
* @param Wbcr_Factory400_Plugin $plugin
|
|
|
|
|
17 |
*/
|
18 |
+
function wbcr_factory_bootstrap_400_plugin_created($plugin)
|
19 |
+
{
|
20 |
+
$manager = new Wbcr_FactoryBootstrap400_Manager($plugin);
|
21 |
+
$plugin->setBootstap($manager);
|
22 |
+
}
|
23 |
+
|
24 |
+
if( !class_exists('Wbcr_FactoryBootstrap400_Manager') ) {
|
25 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
/**
|
27 |
+
* The Bootstrap Manager class.
|
28 |
*
|
29 |
* @since 3.2.0
|
|
|
|
|
30 |
*/
|
31 |
+
class Wbcr_FactoryBootstrap400_Manager {
|
32 |
+
|
33 |
+
/**
|
34 |
+
* A plugin for which the manager was created.
|
35 |
+
*
|
36 |
+
* @since 3.2.0
|
37 |
+
* @var Wbcr_Factory400_Plugin
|
38 |
+
*/
|
39 |
+
public $plugin;
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Contains scripts to include.
|
43 |
+
*
|
44 |
+
* @since 3.2.0
|
45 |
+
* @var string[]
|
46 |
+
*/
|
47 |
+
public $scripts = array();
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Contains styles to include.
|
51 |
+
*
|
52 |
+
* @since 3.2.0
|
53 |
+
* @var string[]
|
54 |
+
*/
|
55 |
+
public $styles = array();
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Createas a new instance of the license api for a given plugin.
|
59 |
+
*
|
60 |
+
* @since 1.0.0
|
61 |
+
*/
|
62 |
+
public function __construct(Wbcr_Factory400_Plugin $plugin)
|
63 |
+
{
|
64 |
+
$this->plugin = $plugin;
|
65 |
+
|
66 |
+
add_action('admin_enqueue_scripts', array($this, 'loadAssets'));
|
67 |
+
add_filter('admin_body_class', array($this, 'adminBodyClass'));
|
68 |
}
|
69 |
+
|
70 |
+
/**
|
71 |
+
* Includes the Bootstrap scripts.
|
72 |
+
* @since 3.2.0
|
73 |
+
* @param array|string $scripts
|
74 |
+
*/
|
75 |
+
public function enqueueScript($scripts)
|
76 |
+
{
|
77 |
+
if( is_array($scripts) ) {
|
78 |
+
foreach($scripts as $script) {
|
79 |
+
if( !in_array($script, $this->scripts) ) {
|
80 |
+
$this->scripts[] = $script;
|
81 |
+
}
|
82 |
+
}
|
83 |
+
} else {
|
84 |
+
if( !in_array($scripts, $this->scripts) ) {
|
85 |
+
$this->scripts[] = $scripts;
|
86 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
87 |
}
|
88 |
}
|
89 |
+
|
90 |
+
/**
|
91 |
+
* * Includes the Bootstrap styles.
|
92 |
+
*
|
93 |
+
* @since 3.2.0
|
94 |
+
* @param array|string $styles
|
95 |
+
*/
|
96 |
+
public function enqueueStyle($styles)
|
97 |
+
{
|
98 |
+
|
99 |
+
if( is_array($styles) ) {
|
100 |
+
foreach($styles as $style) {
|
101 |
+
if( !in_array($style, $this->styles) ) {
|
102 |
+
$this->styles[] = $style;
|
103 |
+
}
|
104 |
+
}
|
105 |
+
} else {
|
106 |
+
if( !in_array($styles, $this->styles) ) {
|
107 |
+
$this->styles[] = $styles;
|
108 |
}
|
109 |
}
|
110 |
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Loads Bootstrap assets.
|
114 |
+
*
|
115 |
+
* @see admin_enqueue_scripts
|
116 |
+
*
|
117 |
+
* @since 3.2.0
|
118 |
+
* @return void
|
119 |
+
*/
|
120 |
+
public function loadAssets($hook)
|
121 |
+
{
|
122 |
+
|
123 |
+
do_action('wbcr_factory_400_bootstrap_enqueue_scripts', $hook);
|
124 |
+
do_action('wbcr_factory_400_bootstrap_enqueue_scripts_' . $this->plugin->getPluginName(), $hook);
|
125 |
+
|
126 |
+
$dependencies = array();
|
127 |
+
if( !empty($this->scripts) ) {
|
128 |
+
$dependencies[] = 'jquery';
|
129 |
+
$dependencies[] = 'jquery-ui-core';
|
130 |
+
$dependencies[] = 'jquery-ui-widget';
|
131 |
}
|
132 |
+
|
133 |
+
foreach($this->scripts as $script) {
|
134 |
+
switch( $script ) {
|
135 |
+
case 'plugin.iris':
|
136 |
+
$dependencies[] = 'jquery-ui-widget';
|
137 |
+
$dependencies[] = 'jquery-ui-slider';
|
138 |
+
$dependencies[] = 'jquery-ui-draggable';
|
139 |
+
break;
|
140 |
+
}
|
141 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
142 |
|
143 |
+
if( !empty($this->scripts) ) {
|
144 |
+
$this->enqueueScripts($this->scripts, 'js', $dependencies);
|
|
|
145 |
}
|
|
|
146 |
if( !empty($this->styles) ) {
|
147 |
+
$this->enqueueScripts($this->styles, 'css', $dependencies);
|
|
|
148 |
}
|
149 |
|
150 |
+
$user_id = get_current_user_id();
|
151 |
+
$color_name = get_user_meta($user_id, 'admin_color', true);
|
152 |
+
|
153 |
+
if( $color_name !== 'fresh' ) {
|
154 |
+
wp_enqueue_style('wbcr-factory-bootstrap-400-colors', FACTORY_BOOTSTRAP_400_URL . '/assets/flat/css/bootstrap.' . $color_name . '.css');
|
155 |
}
|
156 |
+
|
157 |
+
if( $color_name == 'light' ) {
|
158 |
+
$primary_dark = '#037c9a';
|
159 |
+
$primary_light = '#04a4cc';
|
160 |
+
} elseif( $color_name == 'blue' ) {
|
161 |
+
$primary_dark = '#d39323';
|
162 |
+
$primary_light = '#e1a948';
|
163 |
+
} elseif( $color_name == 'coffee' ) {
|
164 |
+
$primary_dark = '#b78a66';
|
165 |
+
$primary_light = '#c7a589';
|
166 |
+
} elseif( $color_name == 'ectoplasm' ) {
|
167 |
+
$primary_dark = '#839237';
|
168 |
+
$primary_light = '#a3b745';
|
169 |
+
} elseif( $color_name == 'ocean' ) {
|
170 |
+
$primary_dark = '#80a583';
|
171 |
+
$primary_light = '#9ebaa0';
|
172 |
+
} elseif( $color_name == 'midnight' ) {
|
173 |
+
$primary_dark = '#d02a21';
|
174 |
+
$primary_light = '#e14d43';
|
175 |
+
} elseif( $color_name == 'sunrise' ) {
|
176 |
+
$primary_dark = '#c36822';
|
177 |
+
$primary_light = '#dd823b';
|
178 |
+
} else {
|
179 |
+
$primary_dark = '#0074a2';
|
180 |
+
$primary_light = '#2ea2cc';
|
181 |
+
}
|
182 |
+
|
183 |
+
?>
|
184 |
+
|
185 |
+
<script>
|
186 |
+
if( !window.factory ) {
|
187 |
+
window.factory = {};
|
188 |
+
}
|
189 |
+
if( !window.factory.factoryBootstrap400 ) {
|
190 |
+
window.factory.factoryBootstrap400 = {};
|
191 |
+
}
|
192 |
+
window.factory.factoryBootstrap400.colors = {
|
193 |
+
primaryDark: '<?php echo $primary_dark ?>',
|
194 |
+
primaryLight: '<?php echo $primary_light ?>'
|
195 |
+
};
|
196 |
+
</script>
|
197 |
+
<?php
|
198 |
}
|
199 |
|
200 |
+
/**
|
201 |
+
* @param array $sripts
|
202 |
+
* @param string $type
|
203 |
+
* @param array $dependencies
|
204 |
+
*/
|
205 |
+
protected function enqueueScripts(array $sripts, $type = 'js', array $dependencies)
|
206 |
+
{
|
207 |
+
|
208 |
+
$is_first = true;
|
209 |
+
$cache_id = md5(implode(',', $this->scripts) . $type . $this->plugin->getPluginVersion());
|
210 |
+
$cache_dir_path = FACTORY_BOOTSTRAP_400_DIR . '/assets/cache/';
|
211 |
+
$cache_dir_url = FACTORY_BOOTSTRAP_400_URL . '/assets/cache/';
|
212 |
+
|
213 |
+
$cache_filepath = $cache_dir_path . $cache_id . ".min." . $type;
|
214 |
+
$cache_fileurl = $cache_dir_url . $cache_id . ".min." . $type;
|
215 |
+
|
216 |
+
if( file_exists($cache_filepath) ) {
|
217 |
+
if( $type == 'js' ) {
|
218 |
+
wp_enqueue_script('wbcr-factory-bootstrap-' . $cache_id, $cache_fileurl, $dependencies, $this->plugin->getPluginVersion());
|
219 |
+
} else {
|
220 |
+
wp_enqueue_style('wbcr-factory-bootstrap-' . $cache_id, $cache_fileurl, array(), $this->plugin->getPluginVersion());
|
221 |
+
}
|
222 |
+
} else {
|
223 |
+
$cache_dir_exists = false;
|
224 |
+
if( !file_exists($cache_dir_path) ) {
|
225 |
+
if( @mkdir($cache_dir_path, 0777) && is_writable($cache_dir_path) ) {
|
226 |
+
$cache_dir_exists = true;
|
227 |
+
}
|
228 |
+
} else {
|
229 |
+
if( is_writable($cache_dir_path) ) {
|
230 |
+
$cache_dir_exists = true;
|
231 |
+
}
|
232 |
+
}
|
233 |
|
234 |
+
$concat_files = array();
|
235 |
+
foreach($sripts as $script_to_load) {
|
236 |
+
$script_to_load = sanitize_text_field($script_to_load);
|
237 |
+
if( $cache_dir_exists ) {
|
238 |
+
$fname = FACTORY_BOOTSTRAP_400_DIR . "/assets/$type-min/$script_to_load.min." . $type;
|
239 |
+
if( file_exists($fname) ) {
|
240 |
+
$f = @fopen($fname, 'r');
|
241 |
+
$concat_files[] = @fread($f, filesize($fname));
|
242 |
+
@fclose($f);
|
243 |
+
}
|
244 |
+
} else {
|
245 |
+
if( $type == 'js' ) {
|
246 |
+
wp_enqueue_script(md5($script_to_load), FACTORY_BOOTSTRAP_400_URL . "/assets/$type-min/$script_to_load.min." . $type, $is_first
|
247 |
+
? $dependencies
|
248 |
+
: false, $this->plugin->getPluginVersion());
|
249 |
+
} else {
|
250 |
+
wp_enqueue_style(md5($script_to_load), FACTORY_BOOTSTRAP_400_URL . "/assets/$type-min/$script_to_load.min." . $type, array(), $this->plugin->getPluginVersion());
|
251 |
+
}
|
252 |
+
$is_first = false;
|
253 |
+
}
|
254 |
+
}
|
255 |
|
256 |
+
if( $cache_dir_exists && !empty($concat_files) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
257 |
|
258 |
+
$cf = @fopen($cache_filepath, 'w');
|
259 |
+
$write_content = implode(PHP_EOL, $concat_files);
|
260 |
+
@fwrite($cf, $write_content);
|
261 |
+
@fclose($cf);
|
262 |
|
263 |
+
if( file_exists($cache_filepath) ) {
|
264 |
+
if( $type == 'js' ) {
|
265 |
+
wp_enqueue_script('wbcr-factory-bootstrap-' . $cache_id, $cache_fileurl, $dependencies, $this->plugin->getPluginVersion());
|
266 |
+
} else {
|
267 |
+
wp_enqueue_style('wbcr-factory-bootstrap-' . $cache_id, $cache_fileurl, array(), $this->plugin->getPluginVersion());
|
268 |
+
}
|
269 |
+
}
|
270 |
+
}
|
271 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
272 |
}
|
273 |
|
274 |
+
/**
|
275 |
+
* Adds the body classes: 'factory-flat or 'factory-volumetric'.
|
276 |
+
*
|
277 |
+
* @since 3.2.0
|
278 |
+
* @param string $classes
|
279 |
+
* @return string
|
280 |
+
*/
|
281 |
+
public function adminBodyClass($classes)
|
282 |
+
{
|
283 |
+
$classes .= FACTORY_FLAT_ADMIN
|
284 |
+
? ' factory-flat '
|
285 |
+
: ' factory-volumetric ';
|
286 |
+
|
287 |
+
return $classes;
|
288 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
289 |
}
|
290 |
}
|
libs/factory/bootstrap/includes/load-scripts.php
DELETED
@@ -1,91 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Этот файл отвечает за конкатенацию скриптов из сабмодулей
|
4 |
-
*
|
5 |
-
* Создано для Factory Metaboxes.
|
6 |
-
*
|
7 |
-
* @author Alex Kovalev <alex@byonepress.com>
|
8 |
-
* @copyright (c) 2013, OnePress Ltd
|
9 |
-
*
|
10 |
-
* @package core
|
11 |
-
* @since 1.0.0
|
12 |
-
*/
|
13 |
-
|
14 |
-
define('ONP_SCRIPTS_DIR', '..');
|
15 |
-
|
16 |
-
if( isset($_GET['test']) ) {
|
17 |
-
echo 'success';
|
18 |
-
exit;
|
19 |
-
}
|
20 |
-
|
21 |
-
/**
|
22 |
-
* Фукнция получает контент файла
|
23 |
-
* @param type $path - путь к файлу
|
24 |
-
* @return string
|
25 |
-
*/
|
26 |
-
function get_file($path)
|
27 |
-
{
|
28 |
-
if( function_exists('realpath') ) {
|
29 |
-
$path = realpath($path);
|
30 |
-
}
|
31 |
-
if( !$path || !@is_file($path) ) {
|
32 |
-
return '';
|
33 |
-
}
|
34 |
-
|
35 |
-
return @file_get_contents($path);
|
36 |
-
}
|
37 |
-
|
38 |
-
//Получает имена модулей разделенные запятой
|
39 |
-
$load = isset($_GET['load'])
|
40 |
-
? preg_replace('/[^a-z0-9,._-]+/i', '', $_GET['load'])
|
41 |
-
: null;
|
42 |
-
|
43 |
-
$debug = isset($_GET['debug']) && $_GET['debug'] === 'true'
|
44 |
-
? true
|
45 |
-
: false;
|
46 |
-
|
47 |
-
if( empty($load) ) {
|
48 |
-
exit;
|
49 |
-
}
|
50 |
-
|
51 |
-
$load = explode(',', $load);
|
52 |
-
|
53 |
-
$out = '';
|
54 |
-
$compress = (isset($_GET['c']) && $_GET['c']);
|
55 |
-
$force_gzip = ($compress && 'gzip' == $_GET['c']);
|
56 |
-
$expires_offset = 31536000; // 1 year
|
57 |
-
$cache_filename = md5(join(',', $load));
|
58 |
-
|
59 |
-
if( empty($load) ) {
|
60 |
-
exit;
|
61 |
-
}
|
62 |
-
|
63 |
-
foreach($load as $key => $val) {
|
64 |
-
$load[$key] = ONP_SCRIPTS_DIR . "/assets/js/$val.js";
|
65 |
-
}
|
66 |
-
|
67 |
-
//Собираем в строку
|
68 |
-
foreach($load as $handle) {
|
69 |
-
if( file_exists($handle) ) {
|
70 |
-
$out .= get_file($handle) . "\n";
|
71 |
-
}
|
72 |
-
}
|
73 |
-
|
74 |
-
//Говорим, что этот javascript файл
|
75 |
-
header('Content-Type: application/x-javascript; charset=UTF-8');
|
76 |
-
header('Expires: ' . gmdate("D, d M Y H:i:s", time() + $expires_offset) . ' GMT');
|
77 |
-
header("Cache-Control: public, max-age=$expires_offset");
|
78 |
-
|
79 |
-
if( $compress && !ini_get('zlib.output_compression') && 'ob_gzhandler' != ini_get('output_handler') && isset($_SERVER['HTTP_ACCEPT_ENCODING']) ) {
|
80 |
-
header('Vary: Accept-Encoding'); // Handle proxies
|
81 |
-
if( false !== stripos($_SERVER['HTTP_ACCEPT_ENCODING'], 'deflate') && function_exists('gzdeflate') && !$force_gzip ) {
|
82 |
-
header('Content-Encoding: deflate');
|
83 |
-
$out = gzdeflate($out, 3);
|
84 |
-
} elseif( false !== stripos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') && function_exists('gzencode') ) {
|
85 |
-
header('Content-Encoding: gzip');
|
86 |
-
$out = gzencode($out, 3);
|
87 |
-
}
|
88 |
-
}
|
89 |
-
|
90 |
-
echo $out;
|
91 |
-
exit;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/includes/load-styles.php
DELETED
@@ -1,90 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Этот файл отвечает за конкатенацию стилей из сабмодулей
|
4 |
-
*
|
5 |
-
* Создано для Factory Metaboxes.
|
6 |
-
*
|
7 |
-
* @author Alex Kovalev <alex@byonepress.com>
|
8 |
-
* @copyright (c) 2013, OnePress Ltd
|
9 |
-
*
|
10 |
-
* @package core
|
11 |
-
* @since 1.0.0
|
12 |
-
*/
|
13 |
-
|
14 |
-
define('ONP_SCRIPTS_DIR', '..');
|
15 |
-
|
16 |
-
if( isset($_GET['test']) ) {
|
17 |
-
echo 'success';
|
18 |
-
exit;
|
19 |
-
}
|
20 |
-
|
21 |
-
/**
|
22 |
-
* Фукнция получает контент файла
|
23 |
-
* @param type $path - путь к файлу
|
24 |
-
* @return string
|
25 |
-
*/
|
26 |
-
function get_file($path)
|
27 |
-
{
|
28 |
-
if( function_exists('realpath') ) {
|
29 |
-
$path = realpath($path);
|
30 |
-
}
|
31 |
-
if( !$path || !@is_file($path) ) {
|
32 |
-
return '';
|
33 |
-
}
|
34 |
-
|
35 |
-
return @file_get_contents($path);
|
36 |
-
}
|
37 |
-
|
38 |
-
//Получает имена модулей разделенные запятой
|
39 |
-
$load = isset($_GET['load'])
|
40 |
-
? preg_replace('/[^a-z0-9,._-]+/i', '', $_GET['load'])
|
41 |
-
: null;
|
42 |
-
|
43 |
-
$debug = isset($_GET['debug']) && $_GET['debug'] === 'true'
|
44 |
-
? true
|
45 |
-
: false;
|
46 |
-
|
47 |
-
$folder = isset($_GET['folder'])
|
48 |
-
? preg_replace('/[^a-z0-9,._-]+/i', '', $_GET['folder'])
|
49 |
-
: null;
|
50 |
-
|
51 |
-
if( empty($folder) || empty($load) ) {
|
52 |
-
exit;
|
53 |
-
}
|
54 |
-
|
55 |
-
$load = explode(',', $load);
|
56 |
-
|
57 |
-
$out = '';
|
58 |
-
$compress = (isset($_GET['c']) && $_GET['c']);
|
59 |
-
$force_gzip = ($compress && 'gzip' == $_GET['c']);
|
60 |
-
$expires_offset = 31536000; // 1 year
|
61 |
-
$cache_filename = md5(join(',', $load));
|
62 |
-
|
63 |
-
foreach($load as $key => $val)
|
64 |
-
$load[$key] = ONP_SCRIPTS_DIR . "/assets/$folder/css/$val.css";
|
65 |
-
|
66 |
-
//Собираем в строку и минифицируем
|
67 |
-
foreach($load as $handle) {
|
68 |
-
if( file_exists($handle) ) {
|
69 |
-
$out .= get_file($handle) . "\n";
|
70 |
-
}
|
71 |
-
}
|
72 |
-
|
73 |
-
//Говорим, что этот javascript файл
|
74 |
-
header('Content-Type: text/css; charset=UTF-8');
|
75 |
-
header('Expires: ' . gmdate("D, d M Y H:i:s", time() + $expires_offset) . ' GMT');
|
76 |
-
header("Cache-Control: public, max-age=$expires_offset");
|
77 |
-
|
78 |
-
if( $compress && !ini_get('zlib.output_compression') && 'ob_gzhandler' != ini_get('output_handler') && isset($_SERVER['HTTP_ACCEPT_ENCODING']) ) {
|
79 |
-
header('Vary: Accept-Encoding'); // Handle proxies
|
80 |
-
if( false !== stripos($_SERVER['HTTP_ACCEPT_ENCODING'], 'deflate') && function_exists('gzdeflate') && !$force_gzip ) {
|
81 |
-
header('Content-Encoding: deflate');
|
82 |
-
$out = gzdeflate($out, 3);
|
83 |
-
} elseif( false !== stripos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') && function_exists('gzencode') ) {
|
84 |
-
header('Content-Encoding: gzip');
|
85 |
-
$out = gzencode($out, 3);
|
86 |
-
}
|
87 |
-
}
|
88 |
-
|
89 |
-
echo $out;
|
90 |
-
exit;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/clearfy/boot.php
CHANGED
@@ -2,31 +2,36 @@
|
|
2 |
/**
|
3 |
* Factory clearfy
|
4 |
*
|
5 |
-
* @author
|
6 |
-
* @copyright (c)
|
7 |
*
|
8 |
-
* @package
|
9 |
* @since 1.0.0
|
10 |
*/
|
11 |
|
12 |
-
if
|
|
|
|
|
|
|
|
|
|
|
13 |
return;
|
14 |
}
|
15 |
-
define('
|
16 |
|
17 |
-
define('
|
18 |
-
define('
|
19 |
|
20 |
-
load_plugin_textdomain('
|
21 |
|
22 |
-
require(
|
23 |
-
require(
|
24 |
|
25 |
// module provides function only for the admin area
|
26 |
if( !is_admin() ) {
|
27 |
return;
|
28 |
}
|
29 |
|
30 |
-
if( defined('
|
31 |
-
require(
|
32 |
}
|
2 |
/**
|
3 |
* Factory clearfy
|
4 |
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
7 |
*
|
8 |
+
* @package clearfy
|
9 |
* @since 1.0.0
|
10 |
*/
|
11 |
|
12 |
+
// Exit if accessed directly
|
13 |
+
if( !defined('ABSPATH') ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
|
17 |
+
if( defined('FACTORY_CLEARFY_200_LOADED') ) {
|
18 |
return;
|
19 |
}
|
20 |
+
define('FACTORY_CLEARFY_200_LOADED', true);
|
21 |
|
22 |
+
define('FACTORY_CLEARFY_200_DIR', dirname(__FILE__));
|
23 |
+
define('FACTORY_CLEARFY_200_URL', plugins_url(null, __FILE__));
|
24 |
|
25 |
+
load_plugin_textdomain('wbcr_factory_clearfy_200', false, dirname(plugin_basename(__FILE__)) . '/langs');
|
26 |
|
27 |
+
require(FACTORY_CLEARFY_200_DIR . '/includes/class.helpers.php');
|
28 |
+
require(FACTORY_CLEARFY_200_DIR . '/includes/class.configurate.php');
|
29 |
|
30 |
// module provides function only for the admin area
|
31 |
if( !is_admin() ) {
|
32 |
return;
|
33 |
}
|
34 |
|
35 |
+
if( defined('FACTORY_PAGES_400_LOADED') ) {
|
36 |
+
require(FACTORY_CLEARFY_200_DIR . '/pages/more-features.php');
|
37 |
}
|
libs/factory/clearfy/includes/class.configurate.php
CHANGED
@@ -1,33 +1,67 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
/**
|
4 |
-
*
|
5 |
-
*
|
6 |
-
* @
|
7 |
-
* @
|
|
|
|
|
|
|
8 |
*/
|
9 |
-
abstract class WbcrFactoryClearfy_Configurate {
|
10 |
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
* @param $option_name
|
26 |
-
* @param bool $default
|
27 |
-
* @return mixed|void
|
28 |
-
*/
|
29 |
-
public function getOption($option_name, $default = false)
|
30 |
-
{
|
31 |
-
return get_option($this->plugin->pluginName . '_' . $option_name, $default);
|
32 |
}
|
33 |
}
|
1 |
<?php
|
|
|
2 |
/**
|
3 |
+
* Configurate clearfy plugins
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
7 |
+
*
|
8 |
+
* @package clearfy
|
9 |
+
* @since 1.0.0
|
10 |
*/
|
|
|
11 |
|
12 |
+
// Exit if accessed directly
|
13 |
+
if( !defined('ABSPATH') ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
|
17 |
+
if( !class_exists('Wbcr_FactoryClearfy200_Configurate') ) {
|
18 |
+
|
19 |
+
abstract class Wbcr_FactoryClearfy200_Configurate {
|
20 |
+
|
21 |
+
/**
|
22 |
+
* @param Wbcr_Factory400_Plugin $plugin
|
23 |
+
*/
|
24 |
+
public function __construct(Wbcr_Factory400_Plugin $plugin)
|
25 |
+
{
|
26 |
+
$this->plugin = $plugin;
|
27 |
+
$this->registerActionsAndFilters();
|
28 |
+
}
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Registers filters and actions
|
32 |
+
* @return mixed
|
33 |
+
*/
|
34 |
+
abstract protected function registerActionsAndFilters();
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Get options with namespace
|
38 |
+
*
|
39 |
+
* @param $option_name
|
40 |
+
* @param bool $default
|
41 |
+
* @return mixed|void
|
42 |
+
*/
|
43 |
+
public function getOption($option_name, $default = false)
|
44 |
+
{
|
45 |
+
return $this->plugin->getOption($option_name, $default);
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* @param $option_name
|
50 |
+
* @param $value
|
51 |
+
* @return bool
|
52 |
+
*/
|
53 |
+
public function updateOption($option_name, $value)
|
54 |
+
{
|
55 |
+
$this->plugin->updateOption($option_name, $value);
|
56 |
+
}
|
57 |
|
58 |
+
/**
|
59 |
+
* @param $option_name
|
60 |
+
* @return bool
|
61 |
+
*/
|
62 |
+
public function deleteOption($option_name)
|
63 |
+
{
|
64 |
+
$this->plugin->deleteOption($option_name);
|
65 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
}
|
67 |
}
|
libs/factory/clearfy/includes/class.helpers.php
ADDED
@@ -0,0 +1,163 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Helpers functions
|
5 |
+
*
|
6 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
7 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
8 |
+
*
|
9 |
+
* @package clearfy
|
10 |
+
* @since 1.0.0
|
11 |
+
*/
|
12 |
+
|
13 |
+
// Exit if accessed directly
|
14 |
+
if( !defined('ABSPATH') ) {
|
15 |
+
exit;
|
16 |
+
}
|
17 |
+
|
18 |
+
if( !class_exists('WbcrFactoryClearfy200_Helpers') ) {
|
19 |
+
class WbcrFactoryClearfy200_Helpers {
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Display 404 page to bump bots and bad guys
|
23 |
+
*
|
24 |
+
* @param bool $simple If true force displaying basic 404 page
|
25 |
+
*/
|
26 |
+
public static function setError404()
|
27 |
+
{
|
28 |
+
global $wp_query;
|
29 |
+
|
30 |
+
if( function_exists('status_header') ) {
|
31 |
+
status_header('404');
|
32 |
+
nocache_headers();
|
33 |
+
}
|
34 |
+
|
35 |
+
if( $wp_query && is_object($wp_query) ) {
|
36 |
+
$wp_query->set_404();
|
37 |
+
get_template_part(404);
|
38 |
+
} else {
|
39 |
+
global $pagenow;
|
40 |
+
|
41 |
+
$pagenow = 'index.php';
|
42 |
+
|
43 |
+
if( !defined('WP_USE_THEMES') ) {
|
44 |
+
define('WP_USE_THEMES', true);
|
45 |
+
}
|
46 |
+
|
47 |
+
wp();
|
48 |
+
|
49 |
+
$_SERVER['REQUEST_URI'] = self::userTrailingslashit('/hmwp_404');
|
50 |
+
|
51 |
+
require_once(ABSPATH . WPINC . '/template-loader.php');
|
52 |
+
}
|
53 |
+
|
54 |
+
exit();
|
55 |
+
}
|
56 |
+
|
57 |
+
public static function useTrailingSlashes()
|
58 |
+
{
|
59 |
+
return ('/' === substr(get_option('permalink_structure'), -1, 1));
|
60 |
+
}
|
61 |
+
|
62 |
+
public static function userTrailingslashit($string)
|
63 |
+
{
|
64 |
+
return self::useTrailingSlashes()
|
65 |
+
? trailingslashit($string)
|
66 |
+
: untrailingslashit($string);
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Returns true if a needle can be found in a haystack
|
71 |
+
*
|
72 |
+
* @param string $string
|
73 |
+
* @param string $find
|
74 |
+
* @param bool $case_sensitive
|
75 |
+
* @return bool
|
76 |
+
*/
|
77 |
+
public static function strContains($string, $find, $case_sensitive = true)
|
78 |
+
{
|
79 |
+
if( empty($string) || empty($find) ) {
|
80 |
+
return false;
|
81 |
+
}
|
82 |
+
|
83 |
+
$pos = $case_sensitive
|
84 |
+
? strpos($string, $find)
|
85 |
+
: stripos($string, $find);
|
86 |
+
|
87 |
+
return !($pos === false);
|
88 |
+
}
|
89 |
+
|
90 |
+
/**
|
91 |
+
* Tests if a text starts with an given string.
|
92 |
+
*
|
93 |
+
* @param string $string
|
94 |
+
* @param string $find
|
95 |
+
* @param bool $case_sensitive
|
96 |
+
* @return bool
|
97 |
+
*/
|
98 |
+
public static function strStartsWith($string, $find, $case_sensitive = true)
|
99 |
+
{
|
100 |
+
if( $case_sensitive ) {
|
101 |
+
return strpos($string, $find) === 0;
|
102 |
+
}
|
103 |
+
|
104 |
+
return stripos($string, $find) === 0;
|
105 |
+
}
|
106 |
+
|
107 |
+
/**
|
108 |
+
* Tests if a text ends with an given string.
|
109 |
+
*
|
110 |
+
* @param $string
|
111 |
+
* @param $find
|
112 |
+
* @param bool $case_sensitive
|
113 |
+
* @return bool
|
114 |
+
*/
|
115 |
+
public static function strEndsWith($string, $find, $case_sensitive = true)
|
116 |
+
{
|
117 |
+
$expected_position = strlen($string) - strlen($find);
|
118 |
+
|
119 |
+
if( $case_sensitive ) {
|
120 |
+
return strrpos($string, $find, 0) === $expected_position;
|
121 |
+
}
|
122 |
+
|
123 |
+
return strripos($string, $find, 0) === $expected_position;
|
124 |
+
}
|
125 |
+
|
126 |
+
public static function arrayMergeInsert(array $arr, array $inserted, $position = 'bottom', $key = null)
|
127 |
+
{
|
128 |
+
if( $position == 'top' ) {
|
129 |
+
return array_merge($inserted, $arr);
|
130 |
+
}
|
131 |
+
$key_position = ($key === null)
|
132 |
+
? false
|
133 |
+
: array_search($key, array_keys($arr));
|
134 |
+
if( $key_position === false OR ($position != 'before' AND $position != 'after') ) {
|
135 |
+
return array_merge($arr, $inserted);
|
136 |
+
}
|
137 |
+
if( $position == 'after' ) {
|
138 |
+
$key_position++;
|
139 |
+
}
|
140 |
+
|
141 |
+
return array_merge(array_slice($arr, 0, $key_position, true), $inserted, array_slice($arr, $key_position, null, true));
|
142 |
+
}
|
143 |
+
|
144 |
+
public static function maybeGetPostJson($name)
|
145 |
+
{
|
146 |
+
if( isset($_POST[$name]) AND is_string($_POST[$name]) ) {
|
147 |
+
$result = json_decode(stripslashes($_POST[$name]), true);
|
148 |
+
if( !is_array($result) ) {
|
149 |
+
$result = array();
|
150 |
+
}
|
151 |
+
|
152 |
+
return $result;
|
153 |
+
} else {
|
154 |
+
return array();
|
155 |
+
}
|
156 |
+
}
|
157 |
+
|
158 |
+
public static function getEscapeJson(array $data)
|
159 |
+
{
|
160 |
+
return htmlspecialchars(json_encode($data), ENT_QUOTES, 'UTF-8');
|
161 |
+
}
|
162 |
+
}
|
163 |
+
}
|
libs/factory/clearfy/includes/functions.php
DELETED
@@ -1,69 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Helpers functions
|
4 |
-
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
5 |
-
* @copyright (c) 2017 Webraftic Ltd
|
6 |
-
* @version 1.0
|
7 |
-
*/
|
8 |
-
|
9 |
-
/**
|
10 |
-
* Merge arrays, inserting $arr2 into $arr1 before/after certain key
|
11 |
-
*
|
12 |
-
* @param array $arr Modifyed array
|
13 |
-
* @param array $inserted Inserted array
|
14 |
-
* @param string $position 'before' / 'after' / 'top' / 'bottom'
|
15 |
-
* @param string $key Associative key of $arr1 for before/after insertion
|
16 |
-
*
|
17 |
-
* @return array
|
18 |
-
*/
|
19 |
-
function wbcr_factory_array_merge_insert(array $arr, array $inserted, $position = 'bottom', $key = null)
|
20 |
-
{
|
21 |
-
if( $position == 'top' ) {
|
22 |
-
return array_merge($inserted, $arr);
|
23 |
-
}
|
24 |
-
$key_position = ($key === null)
|
25 |
-
? false
|
26 |
-
: array_search($key, array_keys($arr));
|
27 |
-
if( $key_position === false OR ($position != 'before' AND $position != 'after') ) {
|
28 |
-
return array_merge($arr, $inserted);
|
29 |
-
}
|
30 |
-
if( $position == 'after' ) {
|
31 |
-
$key_position++;
|
32 |
-
}
|
33 |
-
|
34 |
-
return array_merge(array_slice($arr, 0, $key_position, true), $inserted, array_slice($arr, $key_position, null, true));
|
35 |
-
}
|
36 |
-
|
37 |
-
/**
|
38 |
-
* Try to get variable from JSON-encoded post variable
|
39 |
-
*
|
40 |
-
* Note: we pass some params via json-encoded variables, as via pure post some data (ex empty array) will be absent
|
41 |
-
*
|
42 |
-
* @param string $name $_POST's variable name
|
43 |
-
*
|
44 |
-
* @return array
|
45 |
-
*/
|
46 |
-
function wbcr_factory_maybe_get_post_json($name)
|
47 |
-
{
|
48 |
-
if( isset($_POST[$name]) AND is_string($_POST[$name]) ) {
|
49 |
-
$result = json_decode(stripslashes($_POST[$name]), true);
|
50 |
-
if( !is_array($result) ) {
|
51 |
-
$result = array();
|
52 |
-
}
|
53 |
-
|
54 |
-
return $result;
|
55 |
-
} else {
|
56 |
-
return array();
|
57 |
-
}
|
58 |
-
}
|
59 |
-
|
60 |
-
/**
|
61 |
-
* Escape json data
|
62 |
-
* @param array $data
|
63 |
-
* @return string escaped json string
|
64 |
-
*/
|
65 |
-
function wbcr_factory_get_escape_json(array $data)
|
66 |
-
{
|
67 |
-
return htmlspecialchars(json_encode($data), ENT_QUOTES, 'UTF-8');
|
68 |
-
}
|
69 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/clearfy/langs/{factory_clearfy_102-fr-FR.mo → wbcr_factory_clearfy_200-fr-FR.mo}
RENAMED
File without changes
|
libs/factory/clearfy/langs/{factory_clearfy_102-fr-FR.po → wbcr_factory_clearfy_200-fr-FR.po}
RENAMED
File without changes
|
libs/factory/clearfy/langs/{factory_clearfy_102-ru_RU.mo → wbcr_factory_clearfy_200-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/clearfy/langs/{factory_clearfy_102-ru_RU.po → wbcr_factory_clearfy_200-ru_RU.po}
RENAMED
File without changes
|
libs/factory/clearfy/pages/more-features.php
CHANGED
@@ -1,135 +1,138 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
/**
|
4 |
* The page Settings.
|
5 |
*
|
6 |
-
* @
|
|
|
|
|
|
|
|
|
7 |
*/
|
8 |
-
class FactoryClearfy102_MoreFeaturesPage extends FactoryPages324_ImpressiveThemplate {
|
9 |
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
* @see FactoryPages324_AdminPage
|
15 |
-
*
|
16 |
-
* @since 1.0.0
|
17 |
-
* @var string
|
18 |
-
*/
|
19 |
-
public $id = "more_features";
|
20 |
|
21 |
-
|
22 |
|
23 |
-
|
24 |
|
25 |
-
|
26 |
|
27 |
-
|
28 |
-
{
|
29 |
-
$this->menuTitle = __('More features (<b>free</b>)', 'factory_clearfy_102');
|
30 |
|
31 |
-
|
32 |
-
}
|
33 |
|
34 |
-
|
35 |
-
{
|
36 |
-
return __('install the ultimate version of the plugin for free!', 'factory_clearfy_102');
|
37 |
-
}
|
38 |
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
<div class="row">
|
43 |
-
<div class="col-sm-4">
|
44 |
-
<div class="wbcr-factory-feature-box">
|
45 |
-
<span class="dashicons dashicons-yes"></span>
|
46 |
|
47 |
-
|
|
|
48 |
|
49 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
</div>
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
<span class="dashicons dashicons-chart-bar"></span>
|
55 |
|
56 |
-
|
57 |
|
58 |
-
|
|
|
59 |
</div>
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
<span class="dashicons dashicons-shield-alt"></span>
|
64 |
|
65 |
-
|
66 |
|
67 |
-
|
|
|
68 |
</div>
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
<span class="dashicons dashicons-welcome-comments"></span>
|
73 |
|
74 |
-
|
75 |
|
76 |
-
|
|
|
77 |
</div>
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
<span class="dashicons dashicons-update"></span>
|
82 |
|
83 |
-
|
84 |
|
85 |
-
|
86 |
-
to disable all updates.', '
|
|
|
87 |
</div>
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
<span class="dashicons dashicons-admin-plugins"></span>
|
92 |
|
93 |
-
|
94 |
|
95 |
-
|
|
|
96 |
</div>
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
<span class="dashicons dashicons-dashboard"></span>
|
101 |
|
102 |
-
|
103 |
|
104 |
-
|
|
|
105 |
</div>
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
<span class="dashicons dashicons-visibility"></span>
|
110 |
|
111 |
-
|
112 |
|
113 |
-
|
114 |
-
WordPress.', '
|
|
|
115 |
</div>
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
<span class="dashicons dashicons-admin-settings"></span>
|
120 |
|
121 |
-
|
122 |
|
123 |
-
|
|
|
124 |
</div>
|
125 |
</div>
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
</
|
132 |
-
|
133 |
-
|
134 |
}
|
135 |
}
|
1 |
<?php
|
|
|
2 |
/**
|
3 |
* The page Settings.
|
4 |
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
7 |
+
*
|
8 |
+
* @package clearfy
|
9 |
+
* @since 1.0.1
|
10 |
*/
|
|
|
11 |
|
12 |
+
// Exit if accessed directly
|
13 |
+
if( !defined('ABSPATH') ) {
|
14 |
+
exit;
|
15 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryClearfy200_MoreFeaturesPage') ) {
|
18 |
|
19 |
+
class Wbcr_FactoryClearfy200_MoreFeaturesPage extends Wbcr_FactoryPages400_ImpressiveThemplate {
|
20 |
|
21 |
+
public $id = "more_features";
|
22 |
|
23 |
+
public $page_menu_dashicon = 'dashicons-star-filled wbcr-factory-premium-color';
|
|
|
|
|
24 |
|
25 |
+
public $page_menu_position = 5;
|
|
|
26 |
|
27 |
+
public $type = 'page';
|
|
|
|
|
|
|
28 |
|
29 |
+
public function __construct(Wbcr_Factory400_Plugin $plugin)
|
30 |
+
{
|
31 |
+
$this->menu_title = __('More features (<b>free</b>)', 'wbcr_factory_clearfy_200');
|
|
|
|
|
|
|
|
|
32 |
|
33 |
+
parent::__construct($plugin);
|
34 |
+
}
|
35 |
|
36 |
+
public function getPageTitle()
|
37 |
+
{
|
38 |
+
return __('install the ultimate version of the plugin for free!', 'wbcr_factory_clearfy_200');
|
39 |
+
}
|
40 |
+
|
41 |
+
public function showPageContent()
|
42 |
+
{
|
43 |
+
?>
|
44 |
+
<div class="row">
|
45 |
+
<div class="col-sm-4">
|
46 |
+
<div class="wbcr-factory-feature-box">
|
47 |
+
<span class="dashicons dashicons-yes"></span>
|
48 |
+
|
49 |
+
<h3><?php _e('Code cleaning', 'wbcr_factory_clearfy_200')?></h3>
|
50 |
+
|
51 |
+
<p><?php _e('Clears the source code of the page from unused code.', 'wbcr_factory_clearfy_200')?></p>
|
52 |
+
</div>
|
53 |
</div>
|
54 |
+
<div class="col-sm-4">
|
55 |
+
<div class="wbcr-factory-feature-box">
|
56 |
+
<span class="dashicons dashicons-chart-bar"></span>
|
|
|
57 |
|
58 |
+
<h3><?php _e('Improve SEO', 'wbcr_factory_clearfy_200')?></h3>
|
59 |
|
60 |
+
<p><?php _e('Removes duplicate pages, closes external links, changes the headers of the server.', 'wbcr_factory_clearfy_200')?></p>
|
61 |
+
</div>
|
62 |
</div>
|
63 |
+
<div class="col-sm-4">
|
64 |
+
<div class="wbcr-factory-feature-box">
|
65 |
+
<span class="dashicons dashicons-shield-alt"></span>
|
|
|
66 |
|
67 |
+
<h3><?php _e('Site ptotection', 'wbcr_factory_clearfy_200')?></h3>
|
68 |
|
69 |
+
<p><?php _e('Enables and disables features that improve the protection of your site.', 'wbcr_factory_clearfy_200')?></p>
|
70 |
+
</div>
|
71 |
</div>
|
72 |
+
<div class="col-sm-4">
|
73 |
+
<div class="wbcr-factory-feature-box">
|
74 |
+
<span class="dashicons dashicons-welcome-comments"></span>
|
|
|
75 |
|
76 |
+
<h3><?php _e('Disable comments', 'wbcr_factory_clearfy_200')?></h3>
|
77 |
|
78 |
+
<p><?php _e('Disables comments on the entire site or on specific pages.', 'wbcr_factory_clearfy_200')?></p>
|
79 |
+
</div>
|
80 |
</div>
|
81 |
+
<div class="col-sm-4">
|
82 |
+
<div class="wbcr-factory-feature-box">
|
83 |
+
<span class="dashicons dashicons-update"></span>
|
|
|
84 |
|
85 |
+
<h3><?php _e('Manage updates', 'wbcr_factory_clearfy_200')?></h3>
|
86 |
|
87 |
+
<p><?php _e('Enables or disables automatically updates for plugins, themes and core. It is also possible
|
88 |
+
to disable all updates.', 'wbcr_factory_clearfy_200')?></p>
|
89 |
+
</div>
|
90 |
</div>
|
91 |
+
<div class="col-sm-4">
|
92 |
+
<div class="wbcr-factory-feature-box">
|
93 |
+
<span class="dashicons dashicons-admin-plugins"></span>
|
|
|
94 |
|
95 |
+
<h3><?php _e('Manage widgets', 'wbcr_factory_clearfy_200')?></h3>
|
96 |
|
97 |
+
<p><?php _e('Allows you to remove unused widgets.', 'wbcr_factory_clearfy_200')?></p>
|
98 |
+
</div>
|
99 |
</div>
|
100 |
+
<div class="col-sm-4">
|
101 |
+
<div class="wbcr-factory-feature-box">
|
102 |
+
<span class="dashicons dashicons-dashboard"></span>
|
|
|
103 |
|
104 |
+
<h3><?php _e('Speed Optimization', 'wbcr_factory_clearfy_200')?></h3>
|
105 |
|
106 |
+
<p><?php _e('Increases performance by disabling unused functions and reducing the number of requests.', 'wbcr_factory_clearfy_200')?></p>
|
107 |
+
</div>
|
108 |
</div>
|
109 |
+
<div class="col-sm-4">
|
110 |
+
<div class="wbcr-factory-feature-box">
|
111 |
+
<span class="dashicons dashicons-visibility"></span>
|
|
|
112 |
|
113 |
+
<h3><?php _e('Site privacy', 'wbcr_factory_clearfy_200')?></h3>
|
114 |
|
115 |
+
<p><?php _e('Allows you to hide the version of the site and plugins. Allows you to hide your
|
116 |
+
WordPress.', 'wbcr_factory_clearfy_200')?></p>
|
117 |
+
</div>
|
118 |
</div>
|
119 |
+
<div class="col-sm-4">
|
120 |
+
<div class="wbcr-factory-feature-box">
|
121 |
+
<span class="dashicons dashicons-admin-settings"></span>
|
|
|
122 |
|
123 |
+
<h3><?php _e('Easy setup', 'wbcr_factory_clearfy_200')?></h3>
|
124 |
|
125 |
+
<p><?php _e('In quick mode, you can easily configure the plugin according to your needs.', 'wbcr_factory_clearfy_200')?></p>
|
126 |
+
</div>
|
127 |
</div>
|
128 |
</div>
|
129 |
+
|
130 |
+
<div class="wbcr-factory-buttons-wrap">
|
131 |
+
<a href="https://goo.gl/TcMcS4" class="wbcr-factory-premium-button" target="_blank">
|
132 |
+
<?php _e('Get the ultimate plugin 100% FREE', 'wbcr_factory_clearfy_200')?>
|
133 |
+
</a>
|
134 |
+
</div>
|
135 |
+
<?php
|
136 |
+
}
|
137 |
}
|
138 |
}
|
libs/factory/core/boot.php
CHANGED
@@ -2,31 +2,39 @@
|
|
2 |
/**
|
3 |
* Factory Plugin
|
4 |
*
|
5 |
-
* @author
|
6 |
-
* @copyright (c)
|
7 |
*
|
8 |
* @package core
|
9 |
-
* @since 1.0.
|
10 |
*/
|
11 |
|
12 |
-
if
|
|
|
|
|
|
|
|
|
|
|
13 |
return;
|
14 |
}
|
15 |
-
define('
|
16 |
|
17 |
-
define('
|
18 |
|
19 |
-
define('
|
20 |
-
define('
|
21 |
|
22 |
#comp merge
|
23 |
-
|
24 |
-
|
25 |
-
|
|
|
|
|
|
|
|
|
26 |
|
27 |
-
|
28 |
-
require(FACTORY_326_DIR . '/includes/plugin.class.php');
|
29 |
|
30 |
-
|
31 |
-
|
32 |
#endcomp
|
2 |
/**
|
3 |
* Factory Plugin
|
4 |
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
7 |
*
|
8 |
* @package core
|
9 |
+
* @since 1.0.0
|
10 |
*/
|
11 |
|
12 |
+
// Exit if accessed directly
|
13 |
+
if( !defined('ABSPATH') ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
|
17 |
+
if( defined('FACTORY_400_LOADED') ) {
|
18 |
return;
|
19 |
}
|
20 |
+
define('FACTORY_400_LOADED', true);
|
21 |
|
22 |
+
define('FACTORY_400_VERSION', '000');
|
23 |
|
24 |
+
define('FACTORY_400_DIR', dirname(__FILE__));
|
25 |
+
define('FACTORY_400_URL', plugins_url(null, __FILE__));
|
26 |
|
27 |
#comp merge
|
28 |
+
require_once(FACTORY_400_DIR . '/includes/functions.php');
|
29 |
+
require_once(FACTORY_400_DIR . '/includes/request.class.php');
|
30 |
+
require_once(FACTORY_400_DIR . '/includes/base.class.php');
|
31 |
+
|
32 |
+
require_once(FACTORY_400_DIR . '/includes/assets-managment/assets-list.class.php');
|
33 |
+
require_once(FACTORY_400_DIR . '/includes/assets-managment/script-list.class.php');
|
34 |
+
require_once(FACTORY_400_DIR . '/includes/assets-managment/style-list.class.php');
|
35 |
|
36 |
+
require_once(FACTORY_400_DIR . '/includes/plugin.class.php');
|
|
|
37 |
|
38 |
+
require_once(FACTORY_400_DIR . '/includes/activation/activator.class.php');
|
39 |
+
require_once(FACTORY_400_DIR . '/includes/activation/update.class.php');
|
40 |
#endcomp
|
libs/factory/core/includes/activation/activator.class.php
CHANGED
@@ -1,149 +1,187 @@
|
|
1 |
<?php
|
2 |
-
/**
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
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 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* The file contains a base class for plugin activators.
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
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 |
+
if( !class_exists('Wbcr_Factory400_Activator') ) {
|
17 |
+
/**
|
18 |
+
* Plugin Activator
|
19 |
+
*
|
20 |
+
* @since 1.0.0
|
21 |
+
*/
|
22 |
+
abstract class Wbcr_Factory400_Activator {
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Curent plugin.
|
26 |
+
* @var Wbcr_Factory400_Plugin
|
27 |
+
*/
|
28 |
+
public $plugin;
|
29 |
+
|
30 |
+
public function __construct(Wbcr_Factory400_Plugin $plugin)
|
31 |
+
{
|
32 |
+
$this->plugin = $plugin;
|
33 |
+
}
|
34 |
+
|
35 |
+
public function activate()
|
36 |
+
{
|
37 |
+
}
|
38 |
+
|
39 |
+
public function deactivate()
|
40 |
+
{
|
41 |
+
}
|
42 |
+
|
43 |
+
public function update()
|
44 |
+
{
|
45 |
+
}
|
46 |
+
|
47 |
+
// --------------------------------------------------------------------------------
|
48 |
+
// Posts and pages
|
49 |
+
// --------------------------------------------------------------------------------
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Adds post on activation.
|
53 |
+
* @return array Post info.
|
54 |
+
*/
|
55 |
+
public function addPost()
|
56 |
+
{
|
57 |
+
|
58 |
+
$args_count = func_num_args();
|
59 |
+
|
60 |
+
$post_info_base = array();
|
61 |
+
$meta_info_base = array();
|
62 |
+
|
63 |
+
if( $args_count == 4 ) {
|
64 |
+
|
65 |
+
$base = func_get_arg(0);
|
66 |
+
|
67 |
+
$post_info_base = $base['post'];
|
68 |
+
$meta_info_base = $base['meta'];
|
69 |
+
}
|
70 |
+
|
71 |
+
$option_name = ($args_count == 4)
|
72 |
+
? func_get_arg(1)
|
73 |
+
: func_get_arg(0);
|
74 |
+
$post_info = ($args_count == 4)
|
75 |
+
? func_get_arg(2)
|
76 |
+
: func_get_arg(1);
|
77 |
+
$meta_info = ($args_count == 4)
|
78 |
+
? func_get_arg(3)
|
79 |
+
: func_get_arg(2);
|
80 |
+
|
81 |
+
if( $post_info == null ) {
|
82 |
+
$post_info = array();
|
83 |
+
}
|
84 |
+
if( $meta_info == null ) {
|
85 |
+
$meta_info = array();
|
86 |
+
}
|
87 |
+
|
88 |
+
$post_info = array_merge($post_info_base, $post_info);
|
89 |
+
$meta_info = array_merge($meta_info_base, $meta_info);
|
90 |
+
|
91 |
+
$insert_id = $this->createPost($post_info, $meta_info, $option_name);
|
92 |
+
|
93 |
+
return array(
|
94 |
+
'post_id' => $insert_id,
|
95 |
+
'post' => $post_info,
|
96 |
+
'meta' => $meta_info
|
97 |
+
);
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* * Adds a page on activation.
|
102 |
+
*
|
103 |
+
* @return int|null|string|WP_Error
|
104 |
+
*/
|
105 |
+
public function addPage()
|
106 |
+
{
|
107 |
+
$option_name = func_get_arg(0);
|
108 |
+
$post_info = func_get_arg(1);
|
109 |
+
$meta_info = func_get_arg(2);
|
110 |
+
|
111 |
+
if( $post_info == null ) {
|
112 |
+
$post_info = array();
|
113 |
+
}
|
114 |
+
if( $meta_info == null ) {
|
115 |
+
$meta_info = array();
|
116 |
+
}
|
117 |
+
|
118 |
+
$post_info['post_type'] = 'page';
|
119 |
+
|
120 |
+
return $this->createPost($post_info, $meta_info, $option_name);
|
121 |
+
}
|
122 |
+
|
123 |
+
/**
|
124 |
+
* Creates post by using the specified info.
|
125 |
+
*
|
126 |
+
* @param array $post_info
|
127 |
+
* @param array $meta_info
|
128 |
+
* @param string $option_name
|
129 |
+
* @return int|null|string|WP_Error
|
130 |
+
*/
|
131 |
+
public function createPost($post_info, $meta_info, $option_name)
|
132 |
+
{
|
133 |
+
global $wpdb;
|
134 |
+
|
135 |
+
$slug = $post_info['post_name'];
|
136 |
+
$post_type = $post_info['post_type'];
|
137 |
+
|
138 |
+
$postId = $wpdb->get_var($wpdb->prepare("SELECT ID FROM " . $wpdb->posts . " WHERE post_name = '%s' AND
|
139 |
+
post_type = '%s' LIMIT 1", $slug, $post_type));
|
140 |
+
|
141 |
+
$option_value = $this->plugin->getOption($option_name);
|
142 |
+
|
143 |
+
if( !$postId ) {
|
144 |
+
$create = true;
|
145 |
+
|
146 |
+
if( !empty($option_value) ) {
|
147 |
+
$post_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM " . $wpdb->posts . " WHERE ID = '%d' AND
|
148 |
+
post_type = '%s' LIMIT 1", $option_value, $post_type));
|
149 |
+
if( $post_id ) {
|
150 |
+
$create = false;
|
151 |
+
}
|
152 |
+
};
|
153 |
+
|
154 |
+
if( $create ) :
|
155 |
+
if( !isset($post_info['post_status']) ) {
|
156 |
+
$post_info['post_status'] = 'publish';
|
157 |
+
}
|
158 |
+
|
159 |
+
// '@' here is to hide unexpected output while plugin activation
|
160 |
+
$option_value = @wp_insert_post($post_info);
|
161 |
+
$postId = $option_value;
|
162 |
+
$this->plugin->updateOption($option_name, $option_value);
|
163 |
+
endif;
|
164 |
+
} else {
|
165 |
+
if( empty ($option_value) ) {
|
166 |
+
$this->plugin->updateOption($option_name, $postId);
|
167 |
+
}
|
168 |
+
}
|
169 |
+
|
170 |
+
$this->plugin->updateOption($option_name, $postId);
|
171 |
+
|
172 |
+
// adds meta
|
173 |
+
foreach($meta_info as $key => $value) {
|
174 |
+
if( $value === true ) {
|
175 |
+
$value = 'true';
|
176 |
+
}
|
177 |
+
if( $value === false ) {
|
178 |
+
$value = 'false';
|
179 |
+
}
|
180 |
+
|
181 |
+
add_post_meta($postId, $key, $value);
|
182 |
+
}
|
183 |
+
|
184 |
+
return $postId;
|
185 |
+
}
|
186 |
+
}
|
187 |
+
}
|
libs/factory/core/includes/activation/update.class.php
CHANGED
@@ -1,30 +1,38 @@
|
|
1 |
<?php
|
2 |
-
/**
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* The file contains a base class for update items of plugins.
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
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 |
+
if( !class_exists('Wbcr_Factory400_Update') ) {
|
18 |
+
/**
|
19 |
+
* Plugin Activator
|
20 |
+
*
|
21 |
+
* @since 1.0.0
|
22 |
+
*/
|
23 |
+
abstract class Wbcr_Factory400_Update {
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Current plugin
|
27 |
+
* @var Factory400_Plugin
|
28 |
+
*/
|
29 |
+
var $plugin;
|
30 |
+
|
31 |
+
public function __construct(Wbcr_Factory400_Plugin $plugin)
|
32 |
+
{
|
33 |
+
$this->plugin = $plugin;
|
34 |
+
}
|
35 |
+
|
36 |
+
abstract function install();
|
37 |
+
}
|
38 |
+
}
|
libs/factory/core/includes/assets-managment/assets-list.class.php
CHANGED
@@ -2,156 +2,172 @@
|
|
2 |
/**
|
3 |
* The class contains a base class for all lists of assets.
|
4 |
*
|
5 |
-
* @author
|
6 |
-
* @copyright (c)
|
7 |
*
|
8 |
* @package factory-core
|
9 |
* @since 1.0.0
|
10 |
*/
|
11 |
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
class Factory326_AssetsList {
|
18 |
-
|
19 |
-
protected $all = array();
|
20 |
-
public $headerPlace = array();
|
21 |
-
public $footerPlace = array();
|
22 |
-
public $required = array();
|
23 |
-
|
24 |
-
protected $defaultPlace;
|
25 |
-
|
26 |
-
public function __construct($plugin = null, $defaultIsFooter = true)
|
27 |
-
{
|
28 |
-
$this->plugin = $plugin;
|
29 |
-
|
30 |
-
if( $defaultIsFooter ) {
|
31 |
-
$this->defaultPlace = &$this->footerPlace;
|
32 |
-
}
|
33 |
-
if( !$defaultIsFooter ) {
|
34 |
-
$this->defaultPlace = &$this->headerPlace;
|
35 |
-
}
|
36 |
-
}
|
37 |
-
|
38 |
/**
|
39 |
-
*
|
40 |
-
*
|
|
|
41 |
*/
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
}
|
49 |
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
foreach(func_get_args() as $item) {
|
60 |
-
if( !is_string($item) ) {
|
61 |
-
return $this;
|
62 |
}
|
63 |
-
$keyInAll = array_search($item, $this->all);
|
64 |
-
$keyInDefaultPlace = array_search($item, $this->defaultPlace);
|
65 |
-
$keyInHeaderPlace = array_search($item, $this->headerPlace);
|
66 |
-
$keyInFooterPlace = array_search($item, $this->footerPlace);
|
67 |
|
68 |
-
|
69 |
-
unset($this->all[$keyInAll]);
|
70 |
-
}
|
71 |
-
if( $keyInDefaultPlace ) {
|
72 |
-
unset($this->defaultPlace[$keyInDefaultPlace]);
|
73 |
-
}
|
74 |
-
if( $keyInHeaderPlace ) {
|
75 |
-
unset($this->headerPlace[$keyInHeaderPlace]);
|
76 |
-
}
|
77 |
-
if( $keyInFooterPlace ) {
|
78 |
-
unset($this->footerPlace[$keyInFooterPlace]);
|
79 |
-
}
|
80 |
}
|
81 |
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
91 |
|
92 |
-
|
93 |
-
$this->all[] = $item;
|
94 |
-
$this->headerPlace[] = $item;
|
95 |
}
|
96 |
|
97 |
-
|
98 |
-
|
|
|
|
|
|
|
|
|
99 |
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
public function addToFooter()
|
105 |
-
{
|
106 |
|
107 |
-
|
108 |
-
$this->all[] = $item;
|
109 |
-
$this->footerPlace[] = $item;
|
110 |
}
|
111 |
|
112 |
-
|
113 |
-
|
|
|
|
|
|
|
|
|
114 |
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
public function isEmpty($source = 'wordpress')
|
122 |
-
{
|
123 |
-
if( 'bootstrap' === $source ) {
|
124 |
-
return empty($this->required[$source]);
|
125 |
}
|
126 |
|
127 |
-
|
128 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
129 |
|
130 |
-
|
131 |
-
|
132 |
-
return empty($this->headerPlace);
|
133 |
-
}
|
134 |
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
public function request($items, $source = 'wordpress')
|
145 |
-
{
|
146 |
|
147 |
-
|
148 |
-
|
149 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
150 |
}
|
151 |
-
} else {
|
152 |
-
$this->required[$source][] = $items;
|
153 |
-
}
|
154 |
|
155 |
-
|
|
|
156 |
}
|
157 |
}
|
2 |
/**
|
3 |
* The class contains a base class for all lists of assets.
|
4 |
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
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 |
+
if( !class_exists('Wbcr_Factory400_AssetsList') ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
/**
|
18 |
+
* Assets List
|
19 |
+
*
|
20 |
+
* @since 1.0.0
|
21 |
*/
|
22 |
+
class Wbcr_Factory400_AssetsList {
|
23 |
+
|
24 |
+
protected $all = array();
|
25 |
+
public $header_place = array();
|
26 |
+
public $footer_place = array();
|
27 |
+
public $required = array();
|
28 |
+
|
29 |
+
protected $default_place;
|
30 |
+
|
31 |
+
/**
|
32 |
+
* @var Wbcr_Factory400_Plugin
|
33 |
+
*/
|
34 |
+
protected $plugin;
|
35 |
+
|
36 |
+
/**
|
37 |
+
* @param Wbcr_Factory400_Plugin $plugin
|
38 |
+
* @param bool $defaultIsFooter
|
39 |
+
*/
|
40 |
+
public function __construct(Wbcr_Factory400_Plugin $plugin, $defaultIsFooter = true)
|
41 |
+
{
|
42 |
+
$this->plugin = $plugin;
|
43 |
+
|
44 |
+
if( $defaultIsFooter ) {
|
45 |
+
$this->default_place = &$this->footer_place;
|
46 |
+
}
|
47 |
+
if( !$defaultIsFooter ) {
|
48 |
+
$this->default_place = &$this->header_place;
|
49 |
+
}
|
50 |
}
|
51 |
|
52 |
+
/**
|
53 |
+
* Adds new items to the collection (default place).
|
54 |
+
* @param mixed
|
55 |
+
*/
|
56 |
+
public function add()
|
57 |
+
{
|
58 |
+
foreach(func_get_args() as $item) {
|
59 |
+
$this->all[] = $item;
|
60 |
+
$this->default_place[] = $item;
|
|
|
|
|
|
|
61 |
}
|
|
|
|
|
|
|
|
|
62 |
|
63 |
+
return $this;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
}
|
65 |
|
66 |
+
/**
|
67 |
+
* Remove items from the collection
|
68 |
+
* @return $this
|
69 |
+
*/
|
70 |
+
public function deregister()
|
71 |
+
{
|
72 |
+
foreach(func_get_args() as $item) {
|
73 |
+
|
74 |
+
if( !is_string($item) ) {
|
75 |
+
return $this;
|
76 |
+
}
|
77 |
+
|
78 |
+
$key_in_all = array_search($item, $this->all);
|
79 |
+
$key_in_default_place = array_search($item, $this->default_place);
|
80 |
+
$key_in_header_place = array_search($item, $this->header_place);
|
81 |
+
$key_inFooterPlace = array_search($item, $this->footer_place);
|
82 |
+
|
83 |
+
if( $key_in_all ) {
|
84 |
+
unset($this->all[$key_in_all]);
|
85 |
+
}
|
86 |
+
if( $key_in_default_place ) {
|
87 |
+
unset($this->default_place[$key_in_default_place]);
|
88 |
+
}
|
89 |
+
if( $key_in_header_place ) {
|
90 |
+
unset($this->header_place[$key_in_header_place]);
|
91 |
+
}
|
92 |
+
if( $key_inFooterPlace ) {
|
93 |
+
unset($this->footer_place[$key_inFooterPlace]);
|
94 |
+
}
|
95 |
+
}
|
96 |
|
97 |
+
return $this;
|
|
|
|
|
98 |
}
|
99 |
|
100 |
+
/**
|
101 |
+
* Adds new items to the collection (header).
|
102 |
+
* @param mixed
|
103 |
+
*/
|
104 |
+
public function addToHeader()
|
105 |
+
{
|
106 |
|
107 |
+
foreach(func_get_args() as $item) {
|
108 |
+
$this->all[] = $item;
|
109 |
+
$this->header_place[] = $item;
|
110 |
+
}
|
|
|
|
|
111 |
|
112 |
+
return $this;
|
|
|
|
|
113 |
}
|
114 |
|
115 |
+
/**
|
116 |
+
* Adds new items to the collection (footer).
|
117 |
+
* @param mixed
|
118 |
+
*/
|
119 |
+
public function addToFooter()
|
120 |
+
{
|
121 |
|
122 |
+
foreach(func_get_args() as $item) {
|
123 |
+
$this->all[] = $item;
|
124 |
+
$this->footer_place[] = $item;
|
125 |
+
}
|
126 |
+
|
127 |
+
return $this;
|
|
|
|
|
|
|
|
|
128 |
}
|
129 |
|
130 |
+
/**
|
131 |
+
* Checks whether the collection is empty.
|
132 |
+
*
|
133 |
+
* @param string $source if the 'bootstrap' specified, checks only whether the bootstrap assets were required.
|
134 |
+
* @return boolean
|
135 |
+
*/
|
136 |
+
public function isEmpty($source = 'wordpress')
|
137 |
+
{
|
138 |
+
if( 'bootstrap' === $source ) {
|
139 |
+
return empty($this->required[$source]);
|
140 |
+
}
|
141 |
|
142 |
+
return empty($this->all) && empty($this->required);
|
143 |
+
}
|
|
|
|
|
144 |
|
145 |
+
public function IsHeaderEmpty()
|
146 |
+
{
|
147 |
+
return empty($this->header_place);
|
148 |
+
}
|
149 |
|
150 |
+
public function IsFooterEmpty()
|
151 |
+
{
|
152 |
+
return empty($this->footer_place);
|
153 |
+
}
|
|
|
|
|
154 |
|
155 |
+
/**
|
156 |
+
* Adds new items to the requried collection.
|
157 |
+
* @param mixed
|
158 |
+
*/
|
159 |
+
public function request($items, $source = 'wordpress')
|
160 |
+
{
|
161 |
+
|
162 |
+
if( is_array($items) ) {
|
163 |
+
foreach($items as $item) {
|
164 |
+
$this->required[$source][] = $item;
|
165 |
+
}
|
166 |
+
} else {
|
167 |
+
$this->required[$source][] = $items;
|
168 |
}
|
|
|
|
|
|
|
169 |
|
170 |
+
return $this;
|
171 |
+
}
|
172 |
}
|
173 |
}
|
libs/factory/core/includes/assets-managment/script-list.class.php
CHANGED
@@ -2,83 +2,96 @@
|
|
2 |
/**
|
3 |
* The file contains a class to manage script assets.
|
4 |
*
|
5 |
-
* @author
|
6 |
-
* @copyright (c)
|
7 |
*
|
8 |
* @package factory-core
|
9 |
* @since 1.0.0
|
10 |
*/
|
11 |
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
*/
|
17 |
-
class Factory326_ScriptList extends Factory326_AssetsList {
|
18 |
-
|
19 |
-
public $localizeData = array();
|
20 |
-
public $useAjax = false;
|
21 |
-
|
22 |
-
public function connect($source = 'wordpress')
|
23 |
-
{
|
24 |
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
}
|
33 |
}
|
34 |
-
}
|
35 |
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
|
40 |
-
|
41 |
-
|
42 |
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
|
47 |
-
|
48 |
|
49 |
-
|
50 |
-
|
51 |
-
|
|
|
|
|
52 |
|
53 |
-
|
|
|
54 |
|
55 |
-
|
|
|
|
|
56 |
}
|
57 |
|
58 |
-
|
59 |
-
$siFirstScript = false;
|
60 |
}
|
|
|
61 |
|
62 |
-
|
|
|
|
|
63 |
}
|
64 |
-
}
|
65 |
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
|
|
70 |
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
? null
|
75 |
-
: end($this->all);
|
76 |
-
if( !$bindTo ) {
|
77 |
-
return;
|
78 |
-
}
|
79 |
|
80 |
-
|
81 |
|
82 |
-
|
|
|
83 |
}
|
84 |
}
|
2 |
/**
|
3 |
* The file contains a class to manage script assets.
|
4 |
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
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 |
+
if( !class_exists('Wbcr_Factory400_ScriptList') ) {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Script List
|
21 |
+
*
|
22 |
+
* @since 1.0.0
|
23 |
+
*/
|
24 |
+
class Wbcr_Factory400_ScriptList extends Wbcr_Factory400_AssetsList {
|
25 |
+
|
26 |
+
public $localize_data = array();
|
27 |
+
public $use_ajax = false;
|
28 |
+
|
29 |
+
/**
|
30 |
+
* @param string $source
|
31 |
+
*/
|
32 |
+
public function connect($source = 'wordpress')
|
33 |
+
{
|
34 |
+
|
35 |
+
// register all global required scripts
|
36 |
+
if( !empty($this->required[$source]) ) {
|
37 |
+
foreach($this->required[$source] as $script) {
|
38 |
+
if( 'wordpress' === $source ) {
|
39 |
+
wp_enqueue_script($script);
|
40 |
+
} elseif( 'bootstrap' === $source ) {
|
41 |
+
$this->plugin->bootstrap->enqueueScript($script);
|
42 |
+
}
|
43 |
}
|
44 |
}
|
|
|
45 |
|
46 |
+
if( $source == 'bootstrap' ) {
|
47 |
+
return;
|
48 |
+
}
|
49 |
|
50 |
+
$is_first_script = true;
|
51 |
+
$is_footer = false;
|
52 |
|
53 |
+
// register all other scripts
|
54 |
+
foreach(array($this->header_place, $this->footer_place) as $scriptPlace) {
|
55 |
+
foreach($scriptPlace as $script) {
|
56 |
|
57 |
+
wp_register_script($script, $script, array(), $this->plugin->getPluginVersion(), $is_footer);
|
58 |
|
59 |
+
if( $is_first_script && $this->use_ajax ) {
|
60 |
+
wp_localize_script($script, 'factory', array('ajaxurl' => admin_url('admin-ajax.php')));
|
61 |
+
}
|
62 |
+
|
63 |
+
if( !empty($this->localize_data[$script]) ) {
|
64 |
|
65 |
+
wp_localize_script($script, $this->localize_data[$script][0], $this->localize_data[$script][1]);
|
66 |
+
}
|
67 |
|
68 |
+
wp_enqueue_script($script);
|
69 |
+
|
70 |
+
$is_first_script = false;
|
71 |
}
|
72 |
|
73 |
+
$is_footer = true;
|
|
|
74 |
}
|
75 |
+
}
|
76 |
|
77 |
+
public function useAjax()
|
78 |
+
{
|
79 |
+
$this->use_ajax = true;
|
80 |
}
|
|
|
81 |
|
82 |
+
public function localize($varname, $data)
|
83 |
+
{
|
84 |
+
$bindTo = count($this->all) == 0
|
85 |
+
? null
|
86 |
+
: end($this->all);
|
87 |
|
88 |
+
if( !$bindTo ) {
|
89 |
+
return;
|
90 |
+
}
|
|
|
|
|
|
|
|
|
|
|
91 |
|
92 |
+
$this->localize_data[$bindTo] = array($varname, $data);
|
93 |
|
94 |
+
return $this;
|
95 |
+
}
|
96 |
}
|
97 |
}
|
libs/factory/core/includes/assets-managment/style-list.class.php
CHANGED
@@ -2,42 +2,50 @@
|
|
2 |
/**
|
3 |
* The file contains a class to manage style assets.
|
4 |
*
|
5 |
-
* @author
|
6 |
-
* @copyright (c)
|
7 |
*
|
8 |
* @package factory-core
|
9 |
* @since 1.0.0
|
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 |
|
38 |
-
|
39 |
-
|
40 |
-
|
|
|
41 |
}
|
42 |
}
|
43 |
}
|
2 |
/**
|
3 |
* The file contains a class to manage style assets.
|
4 |
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
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 |
+
if( !class_exists('Wbcr_Factory400_StyleList') ) {
|
18 |
|
19 |
+
/**
|
20 |
+
* Style List
|
21 |
+
*
|
22 |
+
* @since 1.0.0
|
23 |
+
*/
|
24 |
+
class Wbcr_Factory400_StyleList extends Wbcr_Factory400_AssetsList {
|
25 |
|
26 |
+
public function connect($source = 'wordpress')
|
27 |
+
{
|
28 |
|
29 |
+
// register all global required scripts
|
30 |
+
if( !empty($this->required[$source]) ) {
|
31 |
+
|
32 |
+
foreach($this->required[$source] as $style) {
|
33 |
+
if( 'wordpress' === $source ) {
|
34 |
+
wp_enqueue_style($style);
|
35 |
+
} elseif( 'bootstrap' === $source ) {
|
36 |
+
$this->plugin->bootstrap->enqueueStyle($style);
|
37 |
+
}
|
38 |
}
|
39 |
}
|
|
|
40 |
|
41 |
+
if( $source == 'bootstrap' ) {
|
42 |
+
return;
|
43 |
+
}
|
44 |
|
45 |
+
// register all other styles
|
46 |
+
foreach($this->all as $style) {
|
47 |
+
wp_enqueue_style(md5($style), $style, array(), $this->plugin->getPluginVersion());
|
48 |
+
}
|
49 |
}
|
50 |
}
|
51 |
}
|
libs/factory/core/includes/base.class.php
ADDED
@@ -0,0 +1,378 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Exit if accessed directly
|
3 |
+
if( !defined('ABSPATH') ) {
|
4 |
+
exit;
|
5 |
+
}
|
6 |
+
|
7 |
+
if( !class_exists('Wbcr_Factory400_Base') ) {
|
8 |
+
class Wbcr_Factory400_Base {
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Буферизуем опции плагинов в этот атрибут, для быстрого доступа
|
12 |
+
*
|
13 |
+
* @var array
|
14 |
+
*/
|
15 |
+
private static $_opt_buffer = array();
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Префикс для пространства имен среди опций Wordpress
|
19 |
+
*
|
20 |
+
* @var string
|
21 |
+
*/
|
22 |
+
protected $prefix;
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Экзамеляр класса FactoryPages400_Request, необходим управляет http запросами
|
26 |
+
*
|
27 |
+
* @var FactoryPages400_Request
|
28 |
+
*/
|
29 |
+
public $request;
|
30 |
+
|
31 |
+
public function __construct($plugin_path, $data)
|
32 |
+
{
|
33 |
+
$this->prefix = isset($data['prefix'])
|
34 |
+
? $data['prefix']
|
35 |
+
: null;
|
36 |
+
|
37 |
+
if( empty($this->prefix) || !is_string($this->prefix) ) {
|
38 |
+
throw new Exception('Не передан один из обязательных атрибутов (prefix) или атрибует не соотвествует типу данных string.');
|
39 |
+
}
|
40 |
+
|
41 |
+
$this->request = new Wbcr_Factory400_Request();
|
42 |
+
|
43 |
+
if( !isset(self::$_opt_buffer[$this->prefix]) ) {
|
44 |
+
$cache_options = get_option($this->prefix . 'cache_options', array());
|
45 |
+
|
46 |
+
if( empty($cache_options) || !is_array($cache_options) ) {
|
47 |
+
$cache_options = array();
|
48 |
+
delete_option($this->prefix . 'cache_options');
|
49 |
+
}
|
50 |
+
|
51 |
+
self::$_opt_buffer[$this->prefix] = $cache_options;
|
52 |
+
}
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Получает опцию из кеша или из базы данные, если опция не кешируемая,
|
57 |
+
* то опция тянется только из базы данных. Не кешируемые опции это массивы,
|
58 |
+
* сериализованные массивы, строки больше 150 символов
|
59 |
+
*
|
60 |
+
* @param string $option_name
|
61 |
+
* @param bool $default
|
62 |
+
* @return mixed|void
|
63 |
+
*/
|
64 |
+
public function getOption($option_name, $default = false)
|
65 |
+
{
|
66 |
+
if( $option_name == 'cache_options' ) {
|
67 |
+
return $default;
|
68 |
+
}
|
69 |
+
|
70 |
+
$get_cache_option = $this->getOptionFromCache($option_name);
|
71 |
+
|
72 |
+
if( !is_null($get_cache_option) ) {
|
73 |
+
return $get_cache_option === false
|
74 |
+
? $default
|
75 |
+
: $get_cache_option;
|
76 |
+
}
|
77 |
+
|
78 |
+
$option_value = get_option($this->prefix . $option_name);
|
79 |
+
|
80 |
+
if( $this->isCacheable($option_value) ) {
|
81 |
+
$this->setCacheOption($option_name, $this->normalizeValue($option_value));
|
82 |
+
}
|
83 |
+
|
84 |
+
return $option_value === false
|
85 |
+
? $default
|
86 |
+
: $this->normalizeValue($option_value);
|
87 |
+
}
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Обновляет опцию в базе данных и в кеше, кеш обновляется только кешируемых опций.
|
91 |
+
* Не кешируемые опции это массивы, сериализованные массивы, строки больше 150 символов
|
92 |
+
*
|
93 |
+
* @param string $option_name
|
94 |
+
* @param string $value
|
95 |
+
* @return void
|
96 |
+
*/
|
97 |
+
public function updateOption($option_name, $value)
|
98 |
+
{
|
99 |
+
if( $this->isCacheable($value) ) {
|
100 |
+
$this->setCacheOption($option_name, $this->normalizeValue($value));
|
101 |
+
} else {
|
102 |
+
if( isset(self::$_opt_buffer[$this->prefix][$option_name]) ) {
|
103 |
+
unset(self::$_opt_buffer[$this->prefix][$option_name]);
|
104 |
+
|
105 |
+
$this->updateOption('cache_options', self::$_opt_buffer[$this->prefix]);
|
106 |
+
}
|
107 |
+
}
|
108 |
+
|
109 |
+
update_option($this->prefix . $option_name, $value);
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Пакетное обновление опций, также метод пакетно обновляет кеш в базе данных
|
114 |
+
* и в буфере опций, кеш обновляется только кешируемых опций. Не кешируемые опции это массивы,
|
115 |
+
* сериализованные массивы, строки больше 150 символов
|
116 |
+
*
|
117 |
+
* @param array $options
|
118 |
+
* @return bool
|
119 |
+
*/
|
120 |
+
public function updateOptions($options)
|
121 |
+
{
|
122 |
+
if( empty($options) ) {
|
123 |
+
return false;
|
124 |
+
}
|
125 |
+
|
126 |
+
foreach((array)$options as $option_name => $option_value) {
|
127 |
+
$this->updateOption($option_name, $option_value);
|
128 |
+
}
|
129 |
+
|
130 |
+
$this->updateCacheOptions($options);
|
131 |
+
|
132 |
+
return true;
|
133 |
+
}
|
134 |
+
|
135 |
+
/**
|
136 |
+
* Удаляет опцию из базы данных, если опция есть в кеше,
|
137 |
+
* индивидуально удаляет опцию из кеша.
|
138 |
+
*
|
139 |
+
* @param string $option_name
|
140 |
+
* @return void
|
141 |
+
*/
|
142 |
+
public function deleteOption($option_name)
|
143 |
+
{
|
144 |
+
if( isset(self::$_opt_buffer[$this->prefix][$option_name]) ) {
|
145 |
+
unset(self::$_opt_buffer[$this->prefix][$option_name]);
|
146 |
+
|
147 |
+
$this->updateOption('cache_options', self::$_opt_buffer[$this->prefix]);
|
148 |
+
}
|
149 |
+
|
150 |
+
delete_option($this->prefix . $option_name . '_is_active');
|
151 |
+
delete_option($this->prefix . $option_name);
|
152 |
+
}
|
153 |
+
|
154 |
+
/**
|
155 |
+
* Пакетное удаление опций, после удаления опции происходит очистка кеша и буфера опций
|
156 |
+
*
|
157 |
+
* @param array $options
|
158 |
+
* @return void
|
159 |
+
*/
|
160 |
+
public function deleteOptions($options)
|
161 |
+
{
|
162 |
+
if( !empty($options) ) {
|
163 |
+
foreach((array)$options as $option_name) {
|
164 |
+
if( isset(self::$_opt_buffer[$this->prefix]) ) {
|
165 |
+
unset(self::$_opt_buffer[$this->prefix]);
|
166 |
+
}
|
167 |
+
|
168 |
+
delete_option($this->prefix . $option_name . '_is_active');
|
169 |
+
delete_option($this->prefix . $option_name);
|
170 |
+
}
|
171 |
+
|
172 |
+
$this->updateOption('cache_options', self::$_opt_buffer[$this->prefix]);
|
173 |
+
}
|
174 |
+
}
|
175 |
+
|
176 |
+
/**
|
177 |
+
* Сбрасывает кеш опций, удаляет кеш из базы данных и буфер опций
|
178 |
+
*
|
179 |
+
* @return bool
|
180 |
+
*/
|
181 |
+
public function flushOptionsCache()
|
182 |
+
{
|
183 |
+
if( isset(self::$_opt_buffer[$this->prefix]) ) {
|
184 |
+
unset(self::$_opt_buffer[$this->prefix]);
|
185 |
+
self::$_opt_buffer[$this->prefix] = array();
|
186 |
+
}
|
187 |
+
|
188 |
+
$this->deleteOption('cache_options');
|
189 |
+
}
|
190 |
+
|
191 |
+
/**
|
192 |
+
* Получает все опций текущего плагина
|
193 |
+
*
|
194 |
+
* @param bool $is_cacheable - только кешируемые опции, кешируемые опции это массивы,
|
195 |
+
* сериализованные массивы, строки больше 150 символов
|
196 |
+
* @return array
|
197 |
+
*/
|
198 |
+
protected function getAllPluginOptions($is_cacheable = true)
|
199 |
+
{
|
200 |
+
global $wpdb;
|
201 |
+
$options = array();
|
202 |
+
|
203 |
+
$request = $wpdb->get_results($wpdb->prepare("
|
204 |
+
SELECT option_name, option_value
|
205 |
+
FROM {$wpdb->prefix}options
|
206 |
+
WHERE option_name
|
207 |
+
LIKE '%s'", $this->prefix . "%"));
|
208 |
+
|
209 |
+
if( !empty($request) ) {
|
210 |
+
foreach((array)$request as $option) {
|
211 |
+
if( $is_cacheable && !$this->isCacheable($option->option_value) ) {
|
212 |
+
continue;
|
213 |
+
}
|
214 |
+
$options[$option->option_name] = $this->normalizeValue($option->option_value);
|
215 |
+
}
|
216 |
+
}
|
217 |
+
|
218 |
+
return $options;
|
219 |
+
}
|
220 |
+
|
221 |
+
|
222 |
+
/**
|
223 |
+
* Записывает только одну опцию в кеш базы данных и в буфер
|
224 |
+
*
|
225 |
+
* @param string $option_name
|
226 |
+
* @param string $value
|
227 |
+
* @return void
|
228 |
+
* @throws Exception
|
229 |
+
*/
|
230 |
+
protected function setCacheOption($option_name, $value)
|
231 |
+
{
|
232 |
+
$this->setBufferOption($option_name, $value);
|
233 |
+
|
234 |
+
if( !empty(self::$_opt_buffer[$this->prefix]) ) {
|
235 |
+
$this->updateOption('cache_options', self::$_opt_buffer[$this->prefix]);
|
236 |
+
}
|
237 |
+
}
|
238 |
+
|
239 |
+
/**
|
240 |
+
* Пакетное обновление опций в кеше и буфер опций,
|
241 |
+
* все записываемые опции приводятся к регламентированному типу данных
|
242 |
+
*
|
243 |
+
* @param array $options
|
244 |
+
* @return bool
|
245 |
+
* @throws Exception
|
246 |
+
*/
|
247 |
+
protected function updateCacheOptions($options)
|
248 |
+
{
|
249 |
+
foreach((array)$options as $option_name => $value) {
|
250 |
+
$option_name = str_replace($this->prefix, '', $option_name);
|
251 |
+
$this->setBufferOption($option_name, $this->normalizeValue($value));
|
252 |
+
}
|
253 |
+
|
254 |
+
if( !empty(self::$_opt_buffer[$this->prefix]) ) {
|
255 |
+
$this->updateOption('cache_options', self::$_opt_buffer[$this->prefix]);
|
256 |
+
}
|
257 |
+
|
258 |
+
return false;
|
259 |
+
}
|
260 |
+
|
261 |
+
/**
|
262 |
+
* Получает опцию из кеша или буфера, если опция не найдена и буфер пуст,
|
263 |
+
* то заполняет буфер кеширумыми опциями, которые уже записаны в базу данных.
|
264 |
+
*
|
265 |
+
* @param string $option_name
|
266 |
+
* @return null
|
267 |
+
* @throws Exception
|
268 |
+
*/
|
269 |
+
protected function getOptionFromCache($option_name)
|
270 |
+
{
|
271 |
+
if( empty(self::$_opt_buffer[$this->prefix]) ) {
|
272 |
+
$all_options = $this->getAllPluginOptions();
|
273 |
+
|
274 |
+
if( !empty($all_options) ) {
|
275 |
+
$this->updateCacheOptions($all_options);
|
276 |
+
}
|
277 |
+
}
|
278 |
+
|
279 |
+
$buffer_option = $this->getBufferOption($option_name);
|
280 |
+
|
281 |
+
if( !is_null($buffer_option) ) {
|
282 |
+
return $buffer_option;
|
283 |
+
}
|
284 |
+
|
285 |
+
return null;
|
286 |
+
}
|
287 |
+
|
288 |
+
/**
|
289 |
+
* Получает опцию из буфера опций
|
290 |
+
*
|
291 |
+
* @param string $option_name
|
292 |
+
* @return null|mixed
|
293 |
+
*/
|
294 |
+
private function getBufferOption($option_name)
|
295 |
+
{
|
296 |
+
if( isset(self::$_opt_buffer[$this->prefix][$option_name]) ) {
|
297 |
+
return self::$_opt_buffer[$this->prefix][$option_name];
|
298 |
+
}
|
299 |
+
|
300 |
+
return null;
|
301 |
+
}
|
302 |
+
|
303 |
+
/**
|
304 |
+
* Записывает опции в буфер опций, если опция уже есть в буфере и их значения не совпадают,
|
305 |
+
* то новое значение перезаписывает старое
|
306 |
+
*
|
307 |
+
* @param string $option_name
|
308 |
+
* @param string $option_value
|
309 |
+
*/
|
310 |
+
private function setBufferOption($option_name, $option_value)
|
311 |
+
{
|
312 |
+
if( !isset(self::$_opt_buffer[$this->prefix][$option_name]) ) {
|
313 |
+
self::$_opt_buffer[$this->prefix][$option_name] = $option_value;
|
314 |
+
} else {
|
315 |
+
if( self::$_opt_buffer[$this->prefix][$option_name] !== $option_value ) {
|
316 |
+
self::$_opt_buffer[$this->prefix][$option_name] = $option_value;
|
317 |
+
}
|
318 |
+
}
|
319 |
+
}
|
320 |
+
|
321 |
+
/**
|
322 |
+
* Возвращает название опции в пространстве имен плагина
|
323 |
+
*
|
324 |
+
* @param string $option_name
|
325 |
+
* @return null|string
|
326 |
+
*/
|
327 |
+
public function getOptionName($option_name)
|
328 |
+
{
|
329 |
+
$option_name = trim(rtrim($option_name));
|
330 |
+
if( empty($option_name) || !is_string($option_name) ) {
|
331 |
+
return null;
|
332 |
+
}
|
333 |
+
|
334 |
+
return $this->prefix . $option_name;
|
335 |
+
}
|
336 |
+
|
337 |
+
/**
|
338 |
+
* Проверяет является ли опция кешируемой. Кешируемые опции это массивы,
|
339 |
+
* сериализованные массивы, строки больше 150 символов.
|
340 |
+
*
|
341 |
+
* @param string $data - переданое значение опции
|
342 |
+
* @return bool
|
343 |
+
*/
|
344 |
+
public function isCacheable($data)
|
345 |
+
{
|
346 |
+
if( (is_string($data) && (is_serialized($data) || strlen($data) > 150)) || is_array($data) ) {
|
347 |
+
return false;
|
348 |
+
}
|
349 |
+
|
350 |
+
return true;
|
351 |
+
}
|
352 |
+
|
353 |
+
/**
|
354 |
+
* Приведение значений опций к строгому типу данных
|
355 |
+
*
|
356 |
+
* @param $string
|
357 |
+
* @return bool|int
|
358 |
+
*/
|
359 |
+
public function normalizeValue($string)
|
360 |
+
{
|
361 |
+
if( is_numeric($string) ) {
|
362 |
+
$number = intval($string);
|
363 |
+
|
364 |
+
if( strlen($number) != strlen($string) ) {
|
365 |
+
throw new Exception('Error converting data type to a number.');
|
366 |
+
}
|
367 |
+
|
368 |
+
return $number;
|
369 |
+
} else if( $string === 'false' ) {
|
370 |
+
return false;
|
371 |
+
} else if( $string === 'true' ) {
|
372 |
+
return true;
|
373 |
+
}
|
374 |
+
|
375 |
+
return $string;
|
376 |
+
}
|
377 |
+
}
|
378 |
+
}
|
libs/factory/core/includes/functions.php
CHANGED
@@ -1,276 +1,48 @@
|
|
1 |
<?php
|
2 |
-
/**
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
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 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
* @param string $haystack
|
47 |
-
* @param string $needle
|
48 |
-
* @return bool
|
49 |
-
*/
|
50 |
-
function factory_326_starts_with($haystack, $needle) {
|
51 |
-
return !strncmp($haystack, $needle, strlen($needle));
|
52 |
-
}
|
53 |
-
|
54 |
-
/**
|
55 |
-
* Checks if $haystack ends with $needle.
|
56 |
-
*
|
57 |
-
* @since 1.0.0
|
58 |
-
* @param string $haystack
|
59 |
-
* @param string $needle
|
60 |
-
* @return bool
|
61 |
-
*/
|
62 |
-
function factory_326_ends_with($haystack, $needle) {
|
63 |
-
$length = strlen($needle);
|
64 |
-
if ($length == 0) return true;
|
65 |
-
return (substr($haystack, -$length) === $needle);
|
66 |
-
}
|
67 |
-
|
68 |
-
// ------------------------------
|
69 |
-
// Json functions
|
70 |
-
// ------------------------------
|
71 |
-
|
72 |
-
function factory_326_json_error($error) {
|
73 |
-
echo json_encode(array('error' => $error));
|
74 |
-
exit;
|
75 |
-
}
|
76 |
-
|
77 |
-
function factory_326_json_success( $data = array() ) {
|
78 |
-
$data['error'] = false;
|
79 |
-
echo json_encode( $data );
|
80 |
-
exit;
|
81 |
-
}
|
82 |
-
|
83 |
-
// ------------------------------
|
84 |
-
// File functions
|
85 |
-
// ------------------------------
|
86 |
-
|
87 |
-
/**
|
88 |
-
* Gets data about a given path.
|
89 |
-
*
|
90 |
-
* @since 1.0.0
|
91 |
-
* @param type $path A path to get data.
|
92 |
-
* @return string[]
|
93 |
-
*/
|
94 |
-
function factory_326_pathinfo( $path ) {
|
95 |
-
$data = pathinfo($path);
|
96 |
-
$data['filename'] = factory_326_filename_without_ext($data['basename']);
|
97 |
-
return $data;
|
98 |
-
}
|
99 |
-
|
100 |
-
/**
|
101 |
-
* Gets a file name without its extention.
|
102 |
-
*
|
103 |
-
* @since 1.0.0
|
104 |
-
* @param string $filename A file name to process.
|
105 |
-
* @return string
|
106 |
-
*/
|
107 |
-
function factory_326_filename_without_ext($filename){
|
108 |
-
$pos = strripos($filename, '.');
|
109 |
-
if($pos === false){
|
110 |
-
return $filename;
|
111 |
-
}else{
|
112 |
-
return substr($filename, 0, $pos);
|
113 |
-
}
|
114 |
-
}
|
115 |
-
|
116 |
-
/**
|
117 |
-
* Gets a file extention.
|
118 |
-
*
|
119 |
-
* @since 1.0.0
|
120 |
-
* @param string $filename A file name to get an extention.
|
121 |
-
* @return string
|
122 |
-
*/
|
123 |
-
function factory_326_filename_ext($filename){
|
124 |
-
$result = explode('.', $filename);
|
125 |
-
if ( empty($result) ) return null;
|
126 |
-
return $result[count($result)-1];
|
127 |
-
}
|
128 |
-
|
129 |
-
function factory_326_get_human_filesize_by_path( $path ) {
|
130 |
-
$bytes = filesize( $path );
|
131 |
-
return factory_get_human_filesize( $bytes );
|
132 |
-
}
|
133 |
-
|
134 |
-
function factory_326_get_human_filesize( $bytes ) {
|
135 |
-
if ($bytes >= 1073741824)
|
136 |
-
{
|
137 |
-
$bytes = number_format($bytes / 1073741824, 2) . ' GB';
|
138 |
-
}
|
139 |
-
elseif ($bytes >= 1048576)
|
140 |
-
{
|
141 |
-
$bytes = number_format($bytes / 1048576, 2) . ' MB';
|
142 |
-
}
|
143 |
-
elseif ($bytes >= 1024)
|
144 |
-
{
|
145 |
-
$bytes = number_format($bytes / 1024, 2) . ' KB';
|
146 |
-
}
|
147 |
-
elseif ($bytes > 1)
|
148 |
-
{
|
149 |
-
$bytes = $bytes . ' bytes';
|
150 |
-
}
|
151 |
-
elseif ($bytes == 1)
|
152 |
-
{
|
153 |
-
$bytes = $bytes . ' byte';
|
154 |
-
}
|
155 |
-
else
|
156 |
-
{
|
157 |
-
$bytes = '0 bytes';
|
158 |
-
}
|
159 |
-
|
160 |
-
return $bytes;
|
161 |
-
}
|
162 |
-
|
163 |
-
// ------------------------------
|
164 |
-
// Date functions
|
165 |
-
// ------------------------------
|
166 |
-
|
167 |
-
/**
|
168 |
-
* @since 1.0.0
|
169 |
-
*/
|
170 |
-
function factory_326_get_days( $startDate, $endDate ) {
|
171 |
-
return floor( abs( $endDate - $startDate ) / (60*60*24) ) + 1;
|
172 |
-
}
|
173 |
-
|
174 |
-
/**
|
175 |
-
* @since 1.0.0
|
176 |
-
*/
|
177 |
-
function factory_326_get_weeks( $startDate, $endDate ) {
|
178 |
-
$days = factory_326_get_days( $startDate, $endDate );
|
179 |
-
|
180 |
-
$startDay = date( "w", $startDate );
|
181 |
-
$endDay = date( "w", $endDate );
|
182 |
-
|
183 |
-
if ( $days < 7 ) {
|
184 |
-
if ( $endDay < $startDay ) {
|
185 |
-
return 2;
|
186 |
-
} else {
|
187 |
-
return 1;
|
188 |
-
}
|
189 |
-
} else {
|
190 |
-
return floor( $days / 7 );
|
191 |
-
}
|
192 |
-
}
|
193 |
-
|
194 |
-
/**
|
195 |
-
* @since 1.0.0
|
196 |
-
*/
|
197 |
-
function factory_326_get_months( $startDate, $endDate ) {
|
198 |
-
return floor( abs( $endDate - $startDate ) / (60*60*24*30) );
|
199 |
-
}
|
200 |
-
|
201 |
-
/**
|
202 |
-
* Checks if a user is an administrator.
|
203 |
-
*
|
204 |
-
* @since 1.5.0
|
205 |
-
* @return type
|
206 |
-
*/
|
207 |
-
function factory_326_is_administrator() {
|
208 |
-
return current_user_can( 'manage_options' );
|
209 |
-
}
|
210 |
-
|
211 |
-
/**
|
212 |
-
* Prints hard-coded formatted html error.
|
213 |
-
*
|
214 |
-
* @since 3.0.6
|
215 |
-
* @param type $title a title of the error to print
|
216 |
-
* @param type $message a message of the error to print
|
217 |
-
* @return void
|
218 |
-
*/
|
219 |
-
function factory_326_print_error( $title, $message ) {
|
220 |
-
?>
|
221 |
-
<div class="factory-error" style="padding: 10px; border: 3px solid #b23e3a; background: #cf4944; color: #fff;">
|
222 |
-
<strong><?php echo $title ?></strong><br />
|
223 |
-
<p style="margin: 0px;"><?php echo $message ?></p>
|
224 |
-
</div>
|
225 |
-
<?php
|
226 |
-
}
|
227 |
-
|
228 |
-
/**
|
229 |
-
* Prints a script that resized parent iframe.
|
230 |
-
*
|
231 |
-
* @since 3.0.6
|
232 |
-
* @return void
|
233 |
-
*/
|
234 |
-
function factory_326_iframe_resize_script( $wrapId ) {
|
235 |
-
?>
|
236 |
-
<script>
|
237 |
-
var $ = window.parent.jQuery;
|
238 |
-
var $doc = $(window.document);
|
239 |
-
var $parentDoc = $(window.parent.document);
|
240 |
-
|
241 |
-
var $body = $doc.find("body");
|
242 |
-
if ( $body.length === 1 ) {
|
243 |
-
|
244 |
-
var heigth = $body.height() + 20;
|
245 |
-
if ( heigth < 150 ) heigth = 150;
|
246 |
-
|
247 |
-
var $iframe = $parentDoc.find("#<?php echo $wrapId ?> iframe");
|
248 |
-
$iframe.height(heigth);
|
249 |
-
}
|
250 |
-
</script>
|
251 |
-
<?php
|
252 |
-
}
|
253 |
-
|
254 |
-
/**
|
255 |
-
* Sets a lazy redirect.
|
256 |
-
*
|
257 |
-
* @since 3.0.6
|
258 |
-
* @return void
|
259 |
-
*/
|
260 |
-
function factory_326_set_lazy_redirect( $url ) {
|
261 |
-
update_option('factory_lazy_redirect', $url );
|
262 |
-
}
|
263 |
-
|
264 |
-
add_action('admin_init', 'factory_326_do_lazy_redirect');
|
265 |
-
function factory_326_do_lazy_redirect() {
|
266 |
-
$url = get_option('factory_lazy_redirect', null );
|
267 |
-
if ( empty($url) ) return;
|
268 |
-
|
269 |
-
delete_option('factory_lazy_redirect');
|
270 |
-
wp_redirect($url);
|
271 |
-
}
|
272 |
-
|
273 |
-
|
274 |
/**
|
275 |
* Fires functions attached to a deprecated filter hook.
|
276 |
*
|
@@ -282,7 +54,7 @@ function factory_326_do_lazy_redirect() {
|
|
282 |
*
|
283 |
* @since 1.0.0
|
284 |
*
|
285 |
-
* @see
|
286 |
*
|
287 |
* @param string $tag The name of the filter hook.
|
288 |
* @param array $args Array of additional function arguments to be passed to apply_filters().
|
@@ -292,7 +64,7 @@ function factory_326_do_lazy_redirect() {
|
|
292 |
*
|
293 |
* @return mixed
|
294 |
*/
|
295 |
-
function
|
296 |
{
|
297 |
if( function_exists('apply_filters_deprecated') ) {
|
298 |
return apply_filters_deprecated($tag, $args, $version, $replacement, $message);
|
@@ -300,11 +72,11 @@ function factory_326_do_lazy_redirect() {
|
|
300 |
if( !has_filter($tag) ) {
|
301 |
return $args[0];
|
302 |
}
|
303 |
-
|
304 |
-
|
305 |
return apply_filters_ref_array($tag, $args);
|
306 |
}
|
307 |
-
|
308 |
/**
|
309 |
* Fires functions attached to a deprecated action hook.
|
310 |
*
|
@@ -326,24 +98,24 @@ function factory_326_do_lazy_redirect() {
|
|
326 |
*
|
327 |
* @return void
|
328 |
*/
|
329 |
-
function
|
330 |
{
|
331 |
if( function_exists('do_action_deprecated') ) {
|
332 |
do_action_deprecated($tag, $args, $version, $replacement, $message);
|
333 |
-
|
334 |
return;
|
335 |
}
|
336 |
if( !has_action($tag) ) {
|
337 |
return;
|
338 |
}
|
339 |
-
|
340 |
do_action_ref_array($tag, $args);
|
341 |
}
|
342 |
-
|
343 |
/**
|
344 |
* Marks a deprecated action or filter hook as deprecated and throws a notice.
|
345 |
*
|
346 |
-
* Use the '
|
347 |
* deprecated hook was called.
|
348 |
*
|
349 |
* Default behavior is to trigger a user error if WP_DEBUG is true.
|
@@ -361,7 +133,7 @@ function factory_326_do_lazy_redirect() {
|
|
361 |
* @param string $replacement Optional. The hook that should have been used.
|
362 |
* @param string $message Optional. A message regarding the change.
|
363 |
*/
|
364 |
-
function
|
365 |
{
|
366 |
/**
|
367 |
* Fires when a deprecated hook is called.
|
@@ -374,6 +146,7 @@ function factory_326_do_lazy_redirect() {
|
|
374 |
* @param string $message A message regarding the change.
|
375 |
*/
|
376 |
do_action('deprecated_hook_run', $hook, $replacement, $version, $message);
|
|
|
377 |
/**
|
378 |
* Filter whether to trigger deprecated hook errors.
|
379 |
*
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Factory Function Library
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
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 |
+
if( function_exists('wbcr_factory_400_set_lazy_redirect') ) {
|
18 |
+
/**
|
19 |
+
* Sets a lazy redirect.
|
20 |
+
*
|
21 |
+
* @since 3.0.6
|
22 |
+
* @return void
|
23 |
+
*/
|
24 |
+
function wbcr_factory_400_set_lazy_redirect($url)
|
25 |
+
{
|
26 |
+
update_option('wbcr_factory_400_lazy_redirect', $url);
|
27 |
+
}
|
28 |
+
}
|
29 |
+
|
30 |
+
if( function_exists('wbcr_factory_400_do_lazy_redirect') ) {
|
31 |
+
function wbcr_factory_400_do_lazy_redirect()
|
32 |
+
{
|
33 |
+
$url = get_option('wbcr_factory_400_lazy_redirect', null);
|
34 |
+
|
35 |
+
if( empty($url) ) {
|
36 |
+
return;
|
37 |
+
}
|
38 |
+
|
39 |
+
delete_option('wbcr_factory_400_lazy_redirect');
|
40 |
+
wp_redirect($url);
|
41 |
+
}
|
42 |
+
|
43 |
+
add_action('admin_init', 'wbcr_factory_400_do_lazy_redirect');
|
44 |
+
}
|
45 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
/**
|
47 |
* Fires functions attached to a deprecated filter hook.
|
48 |
*
|
54 |
*
|
55 |
* @since 1.0.0
|
56 |
*
|
57 |
+
* @see wbcr_factory_400_deprecated_hook()
|
58 |
*
|
59 |
* @param string $tag The name of the filter hook.
|
60 |
* @param array $args Array of additional function arguments to be passed to apply_filters().
|
64 |
*
|
65 |
* @return mixed
|
66 |
*/
|
67 |
+
function wbcr_factory_400_apply_filters_deprecated($tag, $args, $version, $replacement = false, $message = null)
|
68 |
{
|
69 |
if( function_exists('apply_filters_deprecated') ) {
|
70 |
return apply_filters_deprecated($tag, $args, $version, $replacement, $message);
|
72 |
if( !has_filter($tag) ) {
|
73 |
return $args[0];
|
74 |
}
|
75 |
+
wbcr_factory_400_deprecated_hook($tag, $version, $replacement, $message);
|
76 |
+
|
77 |
return apply_filters_ref_array($tag, $args);
|
78 |
}
|
79 |
+
|
80 |
/**
|
81 |
* Fires functions attached to a deprecated action hook.
|
82 |
*
|
98 |
*
|
99 |
* @return void
|
100 |
*/
|
101 |
+
function wbcr_factory_400_do_action_deprecated($tag, $args, $version, $replacement = false, $message = null)
|
102 |
{
|
103 |
if( function_exists('do_action_deprecated') ) {
|
104 |
do_action_deprecated($tag, $args, $version, $replacement, $message);
|
105 |
+
|
106 |
return;
|
107 |
}
|
108 |
if( !has_action($tag) ) {
|
109 |
return;
|
110 |
}
|
111 |
+
wbcr_factory_400_deprecated_hook($tag, $version, $replacement, $message);
|
112 |
do_action_ref_array($tag, $args);
|
113 |
}
|
114 |
+
|
115 |
/**
|
116 |
* Marks a deprecated action or filter hook as deprecated and throws a notice.
|
117 |
*
|
118 |
+
* Use the 'wbcr_factory_400_deprecated_hook_run' action to get the backtrace describing where the
|
119 |
* deprecated hook was called.
|
120 |
*
|
121 |
* Default behavior is to trigger a user error if WP_DEBUG is true.
|
133 |
* @param string $replacement Optional. The hook that should have been used.
|
134 |
* @param string $message Optional. A message regarding the change.
|
135 |
*/
|
136 |
+
function wbcr_factory_400_deprecated_hook($hook, $version, $replacement = null, $message = null)
|
137 |
{
|
138 |
/**
|
139 |
* Fires when a deprecated hook is called.
|
146 |
* @param string $message A message regarding the change.
|
147 |
*/
|
148 |
do_action('deprecated_hook_run', $hook, $replacement, $version, $message);
|
149 |
+
|
150 |
/**
|
151 |
* Filter whether to trigger deprecated hook errors.
|
152 |
*
|
libs/factory/core/includes/plugin.class.php
CHANGED
@@ -2,729 +2,828 @@
|
|
2 |
/**
|
3 |
* The file contains the class to register a plugin in the Factory.
|
4 |
*
|
5 |
-
* @author
|
6 |
-
* @copyright (c)
|
7 |
*
|
8 |
* @package factory-core
|
9 |
* @since 1.0.0
|
10 |
*/
|
11 |
|
12 |
-
if
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
*/
|
21 |
-
class Factory_Plugins {
|
22 |
-
|
23 |
-
protected static $plugins = array();
|
24 |
|
25 |
/**
|
26 |
-
*
|
27 |
*
|
28 |
* @since 1.0.0
|
|
|
29 |
*/
|
30 |
-
public
|
31 |
-
{
|
32 |
-
self::$plugins[$plugin->pluginName] = $plugin;
|
33 |
-
}
|
34 |
|
35 |
/**
|
36 |
-
*
|
37 |
*
|
38 |
-
* @
|
39 |
*/
|
40 |
-
public
|
41 |
-
{
|
42 |
-
if( isset(self::$plugins[$pluginName]) ) {
|
43 |
-
return self::$plugins[$pluginName];
|
44 |
-
}
|
45 |
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
* Factory Plugin
|
53 |
-
*
|
54 |
-
* @since 1.0.0
|
55 |
-
*/
|
56 |
-
class Factory326_Plugin {
|
57 |
-
|
58 |
-
/**
|
59 |
-
* Is a current page one of the admin pages?
|
60 |
-
*
|
61 |
-
* @since 1.0.0
|
62 |
-
* @var bool
|
63 |
-
*/
|
64 |
-
public $isAdmin;
|
65 |
-
|
66 |
-
/**
|
67 |
-
* A class name of an activator to activate the plugin.
|
68 |
-
*
|
69 |
-
* @var string
|
70 |
-
*/
|
71 |
-
protected $activatorClass = array();
|
72 |
-
|
73 |
-
/**
|
74 |
-
* Creates an instance of Factory plugin.
|
75 |
-
*
|
76 |
-
* @param $pluginPath A full path to the main plugin file.
|
77 |
-
* @param $data A set of plugin data.
|
78 |
-
* @since 1.0.0
|
79 |
-
*/
|
80 |
-
public function __construct($pluginPath, $data)
|
81 |
-
{
|
82 |
-
$this->options = $data;
|
83 |
-
|
84 |
-
// saves plugin basic paramaters
|
85 |
-
$this->mainFile = $pluginPath;
|
86 |
-
$this->pluginRoot = dirname($pluginPath);
|
87 |
-
$this->relativePath = plugin_basename($pluginPath);
|
88 |
-
$this->pluginUrl = plugins_url(null, $pluginPath);
|
89 |
-
|
90 |
-
// child plugins, these plugins depend on activation/deactivation of the core plugin
|
91 |
-
$this->childPlugins = isset($data['childPlugins'])
|
92 |
-
? $data['childPlugins']
|
93 |
-
: array();
|
94 |
-
|
95 |
-
// some extra params
|
96 |
-
$this->pluginName = isset($data['name'])
|
97 |
-
? $data['name']
|
98 |
-
: null;
|
99 |
-
$this->pluginTitle = isset($data['title'])
|
100 |
-
? $data['title']
|
101 |
-
: null;
|
102 |
-
$this->version = isset($data['version'])
|
103 |
-
? $data['version']
|
104 |
-
: null;
|
105 |
-
$this->build = isset($data['assembly'])
|
106 |
-
? $data['assembly']
|
107 |
-
: null;
|
108 |
-
$this->tracker = isset ($data['tracker'])
|
109 |
-
? $data['tracker']
|
110 |
-
: null;
|
111 |
-
$this->host = isset($_SERVER['HTTP_HOST'])
|
112 |
-
? $_SERVER['HTTP_HOST']
|
113 |
-
: null;
|
114 |
-
|
115 |
-
// used only in the module 'updates'
|
116 |
-
$this->pluginSlug = !empty($this->pluginName)
|
117 |
-
? $this->pluginName
|
118 |
-
: basename($pluginPath);
|
119 |
-
|
120 |
-
// just caching this varibale
|
121 |
-
$this->isAdmin = is_admin();
|
122 |
-
|
123 |
-
// registers the plugin in the global collection
|
124 |
-
Factory_Plugins::register($this);
|
125 |
-
|
126 |
-
// init actions
|
127 |
-
$this->setupActions();
|
128 |
-
|
129 |
-
// register activation hooks
|
130 |
-
if( is_admin() ) {
|
131 |
-
register_activation_hook($this->mainFile, array($this, 'forceActivationHook'));
|
132 |
-
register_deactivation_hook($this->mainFile, array($this, 'deactivationHook'));
|
133 |
-
}
|
134 |
-
}
|
135 |
-
|
136 |
-
/**
|
137 |
-
* Loads modules required for a plugin.
|
138 |
-
*
|
139 |
-
* @since 3.2.0
|
140 |
-
* @param mixed[] $modules
|
141 |
-
* @return void
|
142 |
-
*/
|
143 |
-
public function load($modules = array())
|
144 |
-
{
|
145 |
-
foreach($modules as $module) {
|
146 |
-
$this->loadModule($module);
|
147 |
-
}
|
148 |
|
149 |
-
|
150 |
-
|
|
|
|
|
151 |
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
{
|
157 |
-
if( empty($addons) ) {
|
158 |
-
return;
|
159 |
-
}
|
160 |
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
}
|
166 |
-
require_once($addonPath);
|
167 |
-
}
|
168 |
-
}
|
169 |
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
* @param string $modulePath
|
175 |
-
* @param string $moduleVersion
|
176 |
-
* @return void
|
177 |
-
*/
|
178 |
-
public function loadModule($module)
|
179 |
-
{
|
180 |
-
$scope = isset($module[2])
|
181 |
-
? $module[2]
|
182 |
-
: 'all';
|
183 |
-
|
184 |
-
if( $scope == 'all' || (is_admin() && $scope == 'admin') || (!is_admin() && $scope == 'public') ) {
|
185 |
-
|
186 |
-
require $this->pluginRoot . '/' . $module[0] . '/boot.php';
|
187 |
-
do_action($module[1] . '_plugin_created', $this);
|
188 |
-
}
|
189 |
-
}
|
190 |
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
* @param string A class name of the plugin activator.
|
196 |
-
* @return void
|
197 |
-
*/
|
198 |
-
public function registerActivation($className)
|
199 |
-
{
|
200 |
-
$this->activatorClass[] = $className;
|
201 |
-
}
|
202 |
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
*/
|
208 |
-
private function setupActions()
|
209 |
-
{
|
210 |
-
add_action('init', array($this, 'checkPluginVersioninDatabase'));
|
211 |
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
}
|
217 |
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
* Calls on the hook "plugins_loaded".
|
223 |
-
*
|
224 |
-
* @since 1.0.0
|
225 |
-
* @return void
|
226 |
-
*/
|
227 |
-
public function checkPluginVersioninDatabase()
|
228 |
-
{
|
229 |
|
230 |
-
|
231 |
-
|
232 |
-
|
|
|
233 |
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
|
|
239 |
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
* @return string|null The plugin version registered in the database.
|
245 |
-
*/
|
246 |
-
public function getPluginVersionFromDatabase()
|
247 |
-
{
|
248 |
-
$versions = get_option('factory_plugin_versions', array());
|
249 |
-
$version = isset ($versions[$this->pluginName])
|
250 |
-
? $versions[$this->pluginName]
|
251 |
-
: null;
|
252 |
-
|
253 |
-
// for combability with previous versions
|
254 |
-
// @todo: remove after several updates
|
255 |
-
if( !$version ) {
|
256 |
-
return get_option('fy_plugin_version_' . $this->pluginName, null);
|
257 |
-
}
|
258 |
-
|
259 |
-
return $version;
|
260 |
-
}
|
261 |
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
* @return void
|
267 |
-
*/
|
268 |
-
public function updatePluginVersionInDatabase()
|
269 |
-
{
|
270 |
-
$versions = get_option('factory_plugin_versions', array());
|
271 |
-
$versions[$this->pluginName] = $this->build . '-' . $this->version;
|
272 |
-
update_option('factory_plugin_versions', $versions);
|
273 |
-
}
|
274 |
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
*
|
280 |
-
* @since 1.0.0
|
281 |
-
* @return void
|
282 |
-
*/
|
283 |
-
public function customizePluginRow()
|
284 |
-
{
|
285 |
-
remove_action("after_plugin_row_" . $this->relativePath, 'wp_plugin_update_row');
|
286 |
-
add_action("after_plugin_row_" . $this->relativePath, array($this, 'showCustomPluginRow'), 10, 2);
|
287 |
-
}
|
288 |
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
293 |
|
294 |
-
|
295 |
-
{
|
296 |
-
$this->deactivationHook();
|
297 |
-
}
|
298 |
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
* @since 1.0.0
|
303 |
-
* @return void
|
304 |
-
*/
|
305 |
-
public function forceActivationHook()
|
306 |
-
{
|
307 |
-
$this->activationOrUpdateHook(true);
|
308 |
-
|
309 |
-
// activates the child plugins
|
310 |
-
if( !empty($this->childPlugins) ) {
|
311 |
-
foreach($this->childPlugins as $childPluginName) {
|
312 |
-
|
313 |
-
$childPlugin = Factory_Plugins::get($childPluginName);
|
314 |
-
if( empty($childPlugin) ) {
|
315 |
-
die('The child plugin "' . $childPluginName . '" not found.');
|
316 |
}
|
317 |
-
|
318 |
-
$childPlugin->forceActivationHook();
|
319 |
}
|
320 |
-
}
|
321 |
-
}
|
322 |
-
|
323 |
-
/**
|
324 |
-
* Executes an activation hook or an update hook.
|
325 |
-
*
|
326 |
-
* @param bool $forceActivation If true, then executes an activation hook.
|
327 |
-
* @since 1.0.0
|
328 |
-
* @return void
|
329 |
-
*/
|
330 |
-
public function activationOrUpdateHook($forceActivation = false)
|
331 |
-
{
|
332 |
|
333 |
-
|
334 |
-
do_action('factory_plugin_activation_or_update_' . $this->pluginName, $forceActivation, $dbVersion, $this);
|
335 |
|
336 |
-
|
337 |
-
|
338 |
-
$this->
|
339 |
-
|
340 |
-
|
341 |
|
342 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
343 |
}
|
344 |
|
345 |
-
$parts = explode('-', $dbVersion);
|
346 |
-
$prevousBuild = $parts[0];
|
347 |
-
$prevousVersion = $parts[1];
|
348 |
-
|
349 |
-
// if another build was used previously
|
350 |
-
if( $prevousBuild != $this->build ) {
|
351 |
-
$this->migrationHook($prevousBuild, $this->build);
|
352 |
-
$this->activationHook();
|
353 |
-
|
354 |
-
$this->updatePluginVersionInDatabase();
|
355 |
|
356 |
-
|
|
|
|
|
|
|
|
|
|
|
357 |
}
|
358 |
|
359 |
-
|
360 |
-
|
361 |
-
|
|
|
|
|
|
|
362 |
}
|
363 |
|
364 |
-
|
365 |
-
|
366 |
-
|
|
|
|
|
|
|
367 |
}
|
368 |
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
/**
|
376 |
-
* It's invoked on plugin activation. Don't excite it directly.
|
377 |
-
*
|
378 |
-
* @since 1.0.0
|
379 |
-
* @return void
|
380 |
-
*/
|
381 |
-
public function activationHook()
|
382 |
-
{
|
383 |
-
|
384 |
-
$cancelled = apply_filters('factory_cancel_plugin_activation_' . $this->pluginName, false);
|
385 |
-
if( $cancelled ) {
|
386 |
-
return;
|
387 |
}
|
388 |
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
|
|
394 |
}
|
395 |
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
update_option('factory_plugin_activated_' . $this->pluginName, time());
|
403 |
}
|
404 |
-
}
|
405 |
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
public function deactivationHook()
|
413 |
-
{
|
414 |
-
|
415 |
-
$cancelled = apply_filters('factory_cancel_plugin_deactivation_' . $this->pluginName, false);
|
416 |
-
if( $cancelled ) {
|
417 |
-
return;
|
418 |
}
|
419 |
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
$activator = new $activatorClass($this);
|
426 |
-
$activator->deactivate();
|
427 |
-
}
|
428 |
-
}
|
429 |
|
430 |
-
|
431 |
-
if( !empty($this->childPlugins) ) {
|
432 |
-
foreach($this->childPlugins as $childPluginName) {
|
433 |
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
|
439 |
-
|
440 |
-
}
|
441 |
}
|
442 |
-
}
|
443 |
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
public function migrationHook($previosBuild, $currentBuild)
|
451 |
-
{
|
452 |
-
|
453 |
-
$migrationFile = $this->options['updates'] . $previosBuild . '-' . $currentBuild . '.php';
|
454 |
-
if( !file_exists($migrationFile) ) {
|
455 |
-
return;
|
456 |
}
|
457 |
|
458 |
-
|
459 |
-
|
460 |
-
|
|
|
|
|
|
|
461 |
}
|
462 |
|
463 |
-
|
464 |
-
$migrationClass = $classes[0]['name'];
|
465 |
|
466 |
-
|
467 |
-
$migrationItem->install();
|
468 |
-
}
|
469 |
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
public function updateHook($old, $new)
|
477 |
-
{
|
478 |
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
|
483 |
-
|
484 |
-
$files = $this->findFiles($updateFiles);
|
485 |
|
486 |
-
|
487 |
-
|
|
|
|
|
488 |
}
|
489 |
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
494 |
}
|
|
|
|
|
|
|
495 |
|
496 |
-
|
497 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
498 |
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
|
504 |
-
|
505 |
-
|
506 |
-
$
|
507 |
|
508 |
-
$
|
509 |
-
$update->install();
|
510 |
}
|
511 |
}
|
512 |
}
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
518 |
}
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
preg_match('/(\d+)\.(\d+)\.(\d+)/', $version, $matches);
|
532 |
-
if( count($matches) == 0 ) {
|
533 |
-
return false;
|
534 |
-
}
|
535 |
-
|
536 |
-
$number = '';
|
537 |
-
$number .= (strlen($matches[1]) == 1)
|
538 |
-
? '0' . $matches[1]
|
539 |
-
: $matches[1];
|
540 |
-
$number .= (strlen($matches[2]) == 1)
|
541 |
-
? '0' . $matches[2]
|
542 |
-
: $matches[2];
|
543 |
-
$number .= (strlen($matches[3]) == 1)
|
544 |
-
? '0' . $matches[3]
|
545 |
-
: $matches[3];
|
546 |
-
|
547 |
-
return intval($number);
|
548 |
-
}
|
549 |
-
|
550 |
-
/**
|
551 |
-
* Forces modules.
|
552 |
-
*
|
553 |
-
* @since 1.0.0
|
554 |
-
* @return void
|
555 |
-
*/
|
556 |
-
public function modulesLoaded()
|
557 |
-
{
|
558 |
-
// factory_core_000_modules_loaded( $this );
|
559 |
-
}
|
560 |
-
|
561 |
-
/**
|
562 |
-
* Shows admin notices for a given plugin.
|
563 |
-
*
|
564 |
-
* @since 1.0.0
|
565 |
-
* @return void
|
566 |
-
*/
|
567 |
-
public function showAdminNotices()
|
568 |
-
{
|
569 |
-
factory_core_000_show_admin_notices($this);
|
570 |
-
}
|
571 |
-
|
572 |
-
/**
|
573 |
-
* Hook action.
|
574 |
-
*
|
575 |
-
* @since 1.0.0
|
576 |
-
* @return void
|
577 |
-
*/
|
578 |
-
public function hook()
|
579 |
-
{
|
580 |
-
factory_core_000_hook($this);
|
581 |
-
}
|
582 |
-
|
583 |
-
// ----------------------------------------------------------------------
|
584 |
-
// Plugin row on plugins.php page
|
585 |
-
// ----------------------------------------------------------------------
|
586 |
-
|
587 |
-
public function showCustomPluginRow($file, $plugin_data)
|
588 |
-
{
|
589 |
-
if( !is_network_admin() && is_multisite() ) {
|
590 |
-
return;
|
591 |
}
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
|
|
|
|
|
|
|
|
|
|
604 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
605 |
|
606 |
-
|
|
|
|
|
607 |
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
echo '<p>' . $message . '</p>';
|
613 |
-
echo '</div>';
|
614 |
-
echo '</td></tr>';
|
615 |
}
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
}
|
630 |
-
|
631 |
-
/**
|
632 |
-
* Returns a list of folders at a given path.
|
633 |
-
* @param string $path path for search
|
634 |
-
*/
|
635 |
-
private function findFolders($path)
|
636 |
-
{
|
637 |
-
return $this->findFileOrFolders($path, false);
|
638 |
-
}
|
639 |
|
640 |
-
|
641 |
-
* Returns a list of files or folders at a given path.
|
642 |
-
* @param string $path path for search
|
643 |
-
* @param bool $files files or folders?
|
644 |
-
*/
|
645 |
-
private function findFileOrFolders($path, $areFiles = true)
|
646 |
-
{
|
647 |
-
if( !is_dir($path) ) {
|
648 |
-
return array();
|
649 |
}
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
654 |
}
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
660 |
}
|
661 |
-
|
662 |
-
$
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
670 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
671 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
672 |
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
{
|
682 |
-
|
683 |
-
$phpCode = file_get_contents($path);
|
684 |
-
|
685 |
-
$classes = array();
|
686 |
-
$tokens = token_get_all($phpCode);
|
687 |
-
|
688 |
-
$count = count($tokens);
|
689 |
-
for($i = 2; $i < $count; $i++) {
|
690 |
-
if( is_array($tokens) && $tokens[$i - 2][0] == T_CLASS && $tokens[$i - 1][0] == T_WHITESPACE && $tokens[$i][0] == T_STRING ) {
|
691 |
-
|
692 |
-
$extends = null;
|
693 |
-
if( $tokens[$i + 2][0] == T_EXTENDS && $tokens[$i + 4][0] == T_STRING ) {
|
694 |
-
$extends = $tokens[$i + 4][1];
|
695 |
}
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
|
|
|
|
|
|
|
|
702 |
}
|
703 |
}
|
704 |
-
|
705 |
/**
|
706 |
-
*
|
707 |
*
|
708 |
-
*
|
709 |
-
*
|
710 |
-
* 'extendes' => 'PluginNameItemBase'
|
711 |
-
* )
|
712 |
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
713 |
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
720 |
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
725 |
|
726 |
-
|
727 |
-
|
728 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
729 |
}
|
730 |
-
}
|
2 |
/**
|
3 |
* The file contains the class to register a plugin in the Factory.
|
4 |
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
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 |
+
if( !class_exists('Wbcr_Factory400_Plugin') ) {
|
18 |
+
|
19 |
+
abstract class Wbcr_Factory400_Plugin extends Wbcr_Factory400_Base {
|
|
|
|
|
|
|
|
|
20 |
|
21 |
/**
|
22 |
+
* Is a current page one of the admin pages?
|
23 |
*
|
24 |
* @since 1.0.0
|
25 |
+
* @var bool
|
26 |
*/
|
27 |
+
public $is_admin;
|
|
|
|
|
|
|
28 |
|
29 |
/**
|
30 |
+
* The Bootstrap Manager class.n.
|
31 |
*
|
32 |
+
* @var Wbcr_FactoryBootstrap400_Manager
|
33 |
*/
|
34 |
+
public $bootstrap;
|
|
|
|
|
|
|
|
|
35 |
|
36 |
+
/**
|
37 |
+
* The Bootstrap Manager class.n.
|
38 |
+
*
|
39 |
+
* @var Wbcr_FactoryForms400_Manager
|
40 |
+
*/
|
41 |
+
public $forms;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
|
43 |
+
/**
|
44 |
+
* @var string
|
45 |
+
*/
|
46 |
+
protected $plugin_title;
|
47 |
|
48 |
+
/**
|
49 |
+
* @var string
|
50 |
+
*/
|
51 |
+
protected $plugin_name;
|
|
|
|
|
|
|
|
|
52 |
|
53 |
+
/**
|
54 |
+
* @var string
|
55 |
+
*/
|
56 |
+
protected $plugin_version;
|
|
|
|
|
|
|
|
|
57 |
|
58 |
+
/**
|
59 |
+
* @var string
|
60 |
+
*/
|
61 |
+
protected $plugin_build;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
|
63 |
+
/**
|
64 |
+
* @var string
|
65 |
+
*/
|
66 |
+
protected $plugin_assembly;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
|
68 |
+
/**
|
69 |
+
* @var string
|
70 |
+
*/
|
71 |
+
protected $main_file;
|
|
|
|
|
|
|
|
|
72 |
|
73 |
+
/**
|
74 |
+
* @var string
|
75 |
+
*/
|
76 |
+
protected $plugin_root;
|
|
|
77 |
|
78 |
+
/**
|
79 |
+
* @var string
|
80 |
+
*/
|
81 |
+
protected $relative_path;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
|
83 |
+
/**
|
84 |
+
* @var string
|
85 |
+
*/
|
86 |
+
protected $plugin_url;
|
87 |
|
88 |
+
/**
|
89 |
+
* A class name of an activator to activate the plugin.
|
90 |
+
*
|
91 |
+
* @var string
|
92 |
+
*/
|
93 |
+
protected $activator_class = array();
|
94 |
|
95 |
+
/**
|
96 |
+
* @var string
|
97 |
+
*/
|
98 |
+
protected $updates;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
99 |
|
100 |
+
/**
|
101 |
+
* @var Wbcr_Factory400_Plugin
|
102 |
+
*/
|
103 |
+
private static $app;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
|
105 |
+
/**
|
106 |
+
* @var array[] Wbcr_Factory400_Plugin
|
107 |
+
*/
|
108 |
+
private $plugin_addons;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
|
110 |
+
/**
|
111 |
+
* @var array
|
112 |
+
*/
|
113 |
+
private $plugin_data;
|
114 |
+
|
115 |
+
/**
|
116 |
+
* Creates an instance of Factory plugin.
|
117 |
+
*
|
118 |
+
* @param string $plugin_path A full path to the main plugin file.
|
119 |
+
* @param array $data A set of plugin data.
|
120 |
+
* @since 1.0.0
|
121 |
+
* @throws Exception
|
122 |
+
*/
|
123 |
+
public function __construct($plugin_path, $data)
|
124 |
+
{
|
125 |
+
$this->plugin_data = $data;
|
126 |
|
127 |
+
parent::__construct($plugin_path, $data);
|
|
|
|
|
|
|
128 |
|
129 |
+
foreach((array)$data as $option_name => $option_value) {
|
130 |
+
if( !isset($this->$option_name) ) {
|
131 |
+
$this->$option_name = $option_value;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
132 |
}
|
|
|
|
|
133 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
134 |
|
135 |
+
self::$app = $this;
|
|
|
136 |
|
137 |
+
$this->is_admin = is_admin();
|
138 |
+
|
139 |
+
if( empty($this->prefix) || empty($this->plugin_title) || empty($this->plugin_version) || empty($this->plugin_build) ) {
|
140 |
+
throw new Exception('One of the required attributes has not been passed (prefix,plugin_title,plugin_name,plugin_version,plugin_build).');
|
141 |
+
}
|
142 |
|
143 |
+
// saves plugin basic paramaters
|
144 |
+
$this->main_file = $plugin_path;
|
145 |
+
$this->plugin_root = dirname($plugin_path);
|
146 |
+
$this->relative_path = plugin_basename($plugin_path);
|
147 |
+
$this->plugin_url = plugins_url(null, $plugin_path);
|
148 |
+
|
149 |
+
// used only in the module 'updates'
|
150 |
+
$this->plugin_slug = !empty($this->plugin_name)
|
151 |
+
? $this->plugin_name
|
152 |
+
: basename($plugin_path);
|
153 |
+
|
154 |
+
// init actions
|
155 |
+
$this->setupActions();
|
156 |
+
|
157 |
+
// register activation hooks
|
158 |
+
if( is_admin() ) {
|
159 |
+
register_activation_hook($this->main_file, array($this, 'forceActivationHook'));
|
160 |
+
register_deactivation_hook($this->main_file, array($this, 'deactivationHook'));
|
161 |
+
}
|
162 |
}
|
163 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
164 |
|
165 |
+
/**
|
166 |
+
* @return WHM_Plugin
|
167 |
+
*/
|
168 |
+
public static function app()
|
169 |
+
{
|
170 |
+
return self::$app;
|
171 |
}
|
172 |
|
173 |
+
/**
|
174 |
+
* @return string
|
175 |
+
*/
|
176 |
+
public function getPluginTitle()
|
177 |
+
{
|
178 |
+
return $this->plugin_title;
|
179 |
}
|
180 |
|
181 |
+
/**
|
182 |
+
* @return string
|
183 |
+
*/
|
184 |
+
public function getPrefix()
|
185 |
+
{
|
186 |
+
return $this->prefix;
|
187 |
}
|
188 |
|
189 |
+
/**
|
190 |
+
* @return string
|
191 |
+
*/
|
192 |
+
public function getPluginName()
|
193 |
+
{
|
194 |
+
return $this->plugin_name;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
195 |
}
|
196 |
|
197 |
+
/**
|
198 |
+
* @return string
|
199 |
+
*/
|
200 |
+
public function getPluginVersion()
|
201 |
+
{
|
202 |
+
return $this->plugin_version;
|
203 |
}
|
204 |
|
205 |
+
/**
|
206 |
+
* @return string
|
207 |
+
*/
|
208 |
+
public function getPluginBuild()
|
209 |
+
{
|
210 |
+
return $this->plugin_build;
|
|
|
211 |
}
|
|
|
212 |
|
213 |
+
/**
|
214 |
+
* @return string
|
215 |
+
*/
|
216 |
+
public function getPluginAssembly()
|
217 |
+
{
|
218 |
+
return $this->plugin_assembly;
|
|
|
|
|
|
|
|
|
|
|
|
|
219 |
}
|
220 |
|
221 |
+
/**
|
222 |
+
* @return stdClass
|
223 |
+
*/
|
224 |
+
public function getPluginPathInfo()
|
225 |
+
{
|
|
|
|
|
|
|
|
|
226 |
|
227 |
+
$object = new stdClass;
|
|
|
|
|
228 |
|
229 |
+
$object->main_file = $this->main_file;
|
230 |
+
$object->plugin_root = $this->plugin_root;
|
231 |
+
$object->relative_path = $this->relative_path;
|
232 |
+
$object->plugin_url = $this->plugin_url;
|
233 |
|
234 |
+
return $object;
|
|
|
235 |
}
|
|
|
236 |
|
237 |
+
/**
|
238 |
+
* @param Wbcr_FactoryBootstrap400_Manager $bootstrap
|
239 |
+
*/
|
240 |
+
public function setBootstap(Wbcr_FactoryBootstrap400_Manager $bootstrap)
|
241 |
+
{
|
242 |
+
$this->bootstrap = $bootstrap;
|
|
|
|
|
|
|
|
|
|
|
|
|
243 |
}
|
244 |
|
245 |
+
/**
|
246 |
+
* @param Wbcr_FactoryForms400_Manager $forms
|
247 |
+
*/
|
248 |
+
public function setForms(Wbcr_FactoryForms400_Manager $forms)
|
249 |
+
{
|
250 |
+
$this->forms = $forms;
|
251 |
}
|
252 |
|
253 |
+
//protected abstract function setTextDomain();
|
|
|
254 |
|
255 |
+
//protected abstract function setModules();
|
|
|
|
|
256 |
|
257 |
+
/**
|
258 |
+
* @param string $class_name
|
259 |
+
* @param string $path
|
260 |
+
*/
|
261 |
+
public function registerPage($class_name, $file_path)
|
262 |
+
{
|
|
|
|
|
263 |
|
264 |
+
if( !file_exists($file_path) ) {
|
265 |
+
throw new Exception('The page file was not found by the path {' . $file_path . '} you set.');
|
266 |
+
}
|
267 |
|
268 |
+
require_once($file_path);
|
|
|
269 |
|
270 |
+
if( !class_exists($class_name) ) {
|
271 |
+
throw new Exception('A class with this name {' . $class_name . '} does not exist.');
|
272 |
+
}
|
273 |
+
Wbcr_FactoryPages400::register($this, $class_name);
|
274 |
}
|
275 |
|
276 |
+
/**
|
277 |
+
* Loads modules required for a plugin.
|
278 |
+
*
|
279 |
+
* @since 3.2.0
|
280 |
+
* @param mixed[] $modules
|
281 |
+
* @return void
|
282 |
+
*/
|
283 |
+
protected function load($modules = array())
|
284 |
+
{
|
285 |
+
foreach($modules as $module) {
|
286 |
+
$this->loadModule($module);
|
287 |
}
|
288 |
+
|
289 |
+
do_action('wbcr_factory_400_core_modules_loaded-' . $this->plugin_name);
|
290 |
+
}
|
291 |
|
292 |
+
/**
|
293 |
+
* Loads add-ons for the plugin.
|
294 |
+
*/
|
295 |
+
protected function loadAddons($addons)
|
296 |
+
{
|
297 |
+
if( empty($addons) ) {
|
298 |
+
return;
|
299 |
+
}
|
300 |
+
|
301 |
+
foreach($addons as $addon_name => $addon_path) {
|
302 |
+
if( !isset($this->plugin_addons[$addon_name]) ) {
|
303 |
+
$const_name = strtoupper('LOADING_' . $addon_name . '_AS_ADDON');
|
304 |
|
305 |
+
if( !defined($const_name) ) {
|
306 |
+
define($const_name, true);
|
307 |
+
}
|
308 |
+
require_once($addon_path[1]);
|
309 |
|
310 |
+
$plugin_data = $this->plugin_data;
|
311 |
+
$plugin_data['as_addon'] = true;
|
312 |
+
$plugin_data['plugin_parent'] = $this;
|
313 |
|
314 |
+
$this->plugin_addons[$addon_name] = new $addon_path[0]($this->main_file, $plugin_data);
|
|
|
315 |
}
|
316 |
}
|
317 |
}
|
318 |
+
|
319 |
+
/**
|
320 |
+
* Loads a specified module.
|
321 |
+
*
|
322 |
+
* @since 3.2.0
|
323 |
+
* @param string $modulePath
|
324 |
+
* @param string $moduleVersion
|
325 |
+
* @return void
|
326 |
+
*/
|
327 |
+
protected function loadModule($module)
|
328 |
+
{
|
329 |
+
$scope = isset($module[2])
|
330 |
+
? $module[2]
|
331 |
+
: 'all';
|
332 |
+
|
333 |
+
if( $scope == 'all' || (is_admin() && $scope == 'admin') || (!is_admin() && $scope == 'public') ) {
|
334 |
+
|
335 |
+
require $this->plugin_root . '/' . $module[0] . '/boot.php';
|
336 |
+
do_action('wbcr_' . $module[1] . '_plugin_created', $this);
|
337 |
+
}
|
338 |
}
|
339 |
+
|
340 |
+
/**
|
341 |
+
* Registers a class to activate the plugin.
|
342 |
+
*
|
343 |
+
* @since 1.0.0
|
344 |
+
* @param string $className class name of the plugin activator.
|
345 |
+
* @return void
|
346 |
+
*/
|
347 |
+
public function registerActivation($className)
|
348 |
+
{
|
349 |
+
$this->activator_class[] = $className;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
350 |
}
|
351 |
+
|
352 |
+
/**
|
353 |
+
* Setups actions related with the Factory Plugin.
|
354 |
+
*
|
355 |
+
* @since 1.0.0
|
356 |
+
*/
|
357 |
+
private function setupActions()
|
358 |
+
{
|
359 |
+
add_action('init', array($this, 'checkPluginVersioninDatabase'));
|
360 |
+
|
361 |
+
if( $this->is_admin ) {
|
362 |
+
add_action('admin_init', array($this, 'customizePluginRow'), 20);
|
363 |
+
/*add_action('wbcr_factory_400_core_modules_loaded-' . $this->plugin_name, array(
|
364 |
+
$this,
|
365 |
+
'modulesLoaded'
|
366 |
+
));*/
|
367 |
+
}
|
368 |
}
|
369 |
+
|
370 |
+
/**
|
371 |
+
* Checks the plugin version in database. If it's not the same as the currernt,
|
372 |
+
* it means that the plugin was updated and we need to execute the update hook.
|
373 |
+
*
|
374 |
+
* Calls on the hook "plugins_loaded".
|
375 |
+
*
|
376 |
+
* @since 1.0.0
|
377 |
+
* @return void
|
378 |
+
*/
|
379 |
+
public function checkPluginVersioninDatabase()
|
380 |
+
{
|
381 |
|
382 |
+
// checks whether the plugin needs to run updates.
|
383 |
+
if( $this->is_admin ) {
|
384 |
+
$plugin_version = $this->getPluginVersionFromDatabase();
|
385 |
|
386 |
+
if( $plugin_version != $this->plugin_build . '-' . $this->plugin_version ) {
|
387 |
+
$this->activationOrUpdateHook(false);
|
388 |
+
}
|
389 |
+
}
|
|
|
|
|
|
|
390 |
}
|
391 |
+
|
392 |
+
/**
|
393 |
+
* Returns the plugin version from database.
|
394 |
+
*
|
395 |
+
* @since 1.0.0
|
396 |
+
* @return string|null The plugin version registered in the database.
|
397 |
+
*/
|
398 |
+
public function getPluginVersionFromDatabase()
|
399 |
+
{
|
400 |
+
$plugin_versions = get_option('factory_plugin_versions', array());
|
401 |
+
$plugin_version = isset ($plugin_versions[$this->plugin_name])
|
402 |
+
? $plugin_versions[$this->plugin_name]
|
403 |
+
: null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
404 |
|
405 |
+
return $plugin_version;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
406 |
}
|
407 |
+
|
408 |
+
/**
|
409 |
+
* Registers in the database a new version of the plugin.
|
410 |
+
*
|
411 |
+
* @since 1.0.0
|
412 |
+
* @return void
|
413 |
+
*/
|
414 |
+
public function updatePluginVersionInDatabase()
|
415 |
+
{
|
416 |
+
$plugin_versions = get_option('factory_plugin_versions', array());
|
417 |
+
$plugin_versions[$this->plugin_name] = $this->plugin_build . '-' . $this->plugin_version;
|
418 |
+
update_option('factory_plugin_versions', $plugin_versions);
|
419 |
}
|
420 |
+
|
421 |
+
/**
|
422 |
+
* Customize the plugin row (on the page plugins.php).
|
423 |
+
*
|
424 |
+
* Calls on the hook "admin_init".
|
425 |
+
*
|
426 |
+
* @since 1.0.0
|
427 |
+
* @return void
|
428 |
+
*/
|
429 |
+
public function customizePluginRow()
|
430 |
+
{
|
431 |
+
remove_action("after_plugin_row_" . $this->relative_path, 'wp_plugin_update_row');
|
432 |
+
add_action("after_plugin_row_" . $this->relative_path, array($this, 'showCustomPluginRow'), 10, 2);
|
433 |
+
}
|
434 |
+
|
435 |
+
public function activate()
|
436 |
+
{
|
437 |
+
$this->forceActivationHook();
|
438 |
+
}
|
439 |
+
|
440 |
+
public function deactivate()
|
441 |
+
{
|
442 |
+
$this->deactivationHook();
|
443 |
+
}
|
444 |
+
|
445 |
+
/**
|
446 |
+
* Executes an activation hook for this plugin immediately.
|
447 |
+
*
|
448 |
+
* @since 1.0.0
|
449 |
+
* @return void
|
450 |
+
*/
|
451 |
+
public function forceActivationHook()
|
452 |
+
{
|
453 |
+
$this->activationOrUpdateHook(true);
|
454 |
+
}
|
455 |
+
|
456 |
+
/**
|
457 |
+
* Executes an activation hook or an update hook.
|
458 |
+
*
|
459 |
+
* @param bool $forceActivation If true, then executes an activation hook.
|
460 |
+
* @since 1.0.0
|
461 |
+
* @return void
|
462 |
+
*/
|
463 |
+
public function activationOrUpdateHook($force_activation = false)
|
464 |
+
{
|
465 |
+
|
466 |
+
$db_version = $this->getPluginVersionFromDatabase();
|
467 |
+
do_action('wbcr_factory_400_plugin_activation_or_update_' . $this->plugin_name, $force_activation, $db_version, $this);
|
468 |
+
|
469 |
+
// there are not any previous version of the plugin in the past
|
470 |
+
if( !$db_version ) {
|
471 |
+
$this->activationHook();
|
472 |
+
|
473 |
+
$this->updatePluginVersionInDatabase();
|
474 |
+
|
475 |
+
return;
|
476 |
}
|
477 |
+
|
478 |
+
$parts = explode('-', $db_version);
|
479 |
+
$prevous_build = $parts[0];
|
480 |
+
$prevous_version = $parts[1];
|
481 |
+
|
482 |
+
// if another build was used previously
|
483 |
+
if( $prevous_build != $this->plugin_build ) {
|
484 |
+
$this->migrationHook($prevous_build, $this->plugin_build);
|
485 |
+
$this->activationHook();
|
486 |
+
|
487 |
+
$this->updatePluginVersionInDatabase();
|
488 |
+
|
489 |
+
return;
|
490 |
+
}
|
491 |
+
|
492 |
+
// if another less version was used previously
|
493 |
+
if( version_compare($prevous_version, $this->plugin_version, '<') ) {
|
494 |
+
$this->updateHook($prevous_version, $this->plugin_version);
|
495 |
}
|
496 |
+
|
497 |
+
// standart plugin activation
|
498 |
+
if( $force_activation ) {
|
499 |
+
$this->activationHook();
|
500 |
+
}
|
501 |
+
|
502 |
+
// else nothing to do
|
503 |
+
$this->updatePluginVersionInDatabase();
|
504 |
+
|
505 |
+
return;
|
506 |
}
|
507 |
+
|
508 |
+
/**
|
509 |
+
* It's invoked on plugin activation. Don't excite it directly.
|
510 |
+
*
|
511 |
+
* @since 1.0.0
|
512 |
+
* @return void
|
513 |
+
*/
|
514 |
+
public function activationHook()
|
515 |
+
{
|
516 |
+
$cancelled = apply_filters('wbcr_factory_400_cancel_plugin_activation_' . $this->plugin_name, false);
|
517 |
|
518 |
+
if( $cancelled ) {
|
519 |
+
return;
|
520 |
+
}
|
521 |
+
|
522 |
+
if( !empty($this->activator_class) ) {
|
523 |
+
foreach((array)$this->activator_class as $activator_class) {
|
524 |
+
$activator = new $activator_class($this);
|
525 |
+
$activator->activate();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
526 |
}
|
527 |
+
}
|
528 |
+
|
529 |
+
do_action('wbcr_factory_400_plugin_activation', $this);
|
530 |
+
do_action('wbcr_factory_400_plugin_activation_' . $this->plugin_name, $this);
|
531 |
+
|
532 |
+
// just time to know when the plugin was activated the first time
|
533 |
+
$activated = $this->getOption('factory_400_plugin_activated_' . $this->plugin_name, 0);
|
534 |
+
|
535 |
+
if( !$activated ) {
|
536 |
+
$this->updateOption('factory_400_plugin_activated_' . $this->plugin_name, time());
|
537 |
}
|
538 |
}
|
539 |
+
|
540 |
/**
|
541 |
+
* It's invoked on plugin deactionvation. Don't excite it directly.
|
542 |
*
|
543 |
+
* @since 1.0.0
|
544 |
+
* @return void
|
|
|
|
|
545 |
*/
|
546 |
+
public function deactivationHook()
|
547 |
+
{
|
548 |
+
$cancelled = apply_filters('wbcr_factory_400_cancel_plugin_deactivation_' . $this->plugin_name, false);
|
549 |
+
|
550 |
+
if( $cancelled ) {
|
551 |
+
return;
|
552 |
+
}
|
553 |
+
|
554 |
+
do_action('wbcr_factory_400_plugin_deactivation', $this);
|
555 |
+
do_action('wbcr_factory_400_plugin_deactivation_' . $this->plugin_name, $this);
|
556 |
+
|
557 |
+
if( !empty($this->activator_class) ) {
|
558 |
+
foreach((array)$this->activator_class as $activator_class) {
|
559 |
+
$activator = new $activator_class($this);
|
560 |
+
$activator->deactivate();
|
561 |
+
}
|
562 |
+
}
|
563 |
+
}
|
564 |
+
|
565 |
+
/**
|
566 |
+
* Finds migration items and install ones.
|
567 |
+
*
|
568 |
+
* @since 1.0.0
|
569 |
+
* @return void
|
570 |
+
*/
|
571 |
+
public function migrationHook($previos_build, $current_build)
|
572 |
+
{
|
573 |
+
$migration_file = $this->updates . $previos_build . '-' . $current_build . '.php';
|
574 |
+
if( !file_exists($migration_file) ) {
|
575 |
+
return;
|
576 |
+
}
|
577 |
+
|
578 |
+
$classes = $this->getClasses($migration_file);
|
579 |
+
if( count($classes) == 0 ) {
|
580 |
+
return;
|
581 |
+
}
|
582 |
+
|
583 |
+
include_once($migration_file);
|
584 |
+
$migrationClass = $classes[0]['name'];
|
585 |
+
|
586 |
+
$migrationItem = new $migrationClass($this);
|
587 |
+
$migrationItem->install();
|
588 |
+
}
|
589 |
+
|
590 |
+
/**
|
591 |
+
* Finds upate items and install the ones.
|
592 |
+
*
|
593 |
+
* @since 1.0.0
|
594 |
+
* @return void
|
595 |
+
*/
|
596 |
+
public function updateHook($old, $new)
|
597 |
+
{
|
598 |
+
|
599 |
+
// converts versions like 0.0.0 to 000000
|
600 |
+
$old_number = $this->getVersionNumber($old);
|
601 |
+
$new_number = $this->getVersionNumber($new);
|
602 |
+
|
603 |
+
$update_files = $this->updates;
|
604 |
+
$files = $this->findFiles($update_files);
|
605 |
+
|
606 |
+
if( empty($files) ) {
|
607 |
+
return;
|
608 |
+
}
|
609 |
+
|
610 |
+
// finds updates that has intermediate version
|
611 |
+
foreach($files as $item) {
|
612 |
+
if( !preg_match('/^\d+$/', $item['name']) ) {
|
613 |
+
continue;
|
614 |
+
}
|
615 |
+
|
616 |
+
$item_number = intval($item['name']);
|
617 |
+
if( $item_number > $old_number && $item_number <= $new_number ) {
|
618 |
+
|
619 |
+
$classes = $this->getClasses($item['path']);
|
620 |
+
if( count($classes) == 0 ) {
|
621 |
+
return;
|
622 |
+
}
|
623 |
+
|
624 |
+
foreach($classes as $path => $class_data) {
|
625 |
+
include_once($path);
|
626 |
+
$update_class = $class_data['name'];
|
627 |
+
|
628 |
+
$update = new $update_class($this);
|
629 |
+
$update->install();
|
630 |
+
}
|
631 |
+
}
|
632 |
+
}
|
633 |
+
|
634 |
+
// just time to know when the plugin was activated the first time
|
635 |
+
$activated = $this->getOption('factory_400_plugin_activated_' . $this->plugin_name, 0);
|
636 |
|
637 |
+
if( !$activated ) {
|
638 |
+
$this->updateOption('factory_400_plugin_activated_' . $this->plugin_name, time());
|
639 |
+
}
|
640 |
+
}
|
641 |
+
|
642 |
+
/**
|
643 |
+
* Converts string representation of the version to the numeric.
|
644 |
+
*
|
645 |
+
* @since 1.0.0
|
646 |
+
* @param string $version A string version to convert.
|
647 |
+
* @return integer
|
648 |
+
*/
|
649 |
+
protected function getVersionNumber($version)
|
650 |
+
{
|
651 |
+
preg_match('/(\d+)\.(\d+)\.(\d+)/', $version, $matches);
|
652 |
+
if( count($matches) == 0 ) {
|
653 |
+
return false;
|
654 |
+
}
|
655 |
+
|
656 |
+
$number = '';
|
657 |
+
$number .= (strlen($matches[1]) == 1)
|
658 |
+
? '0' . $matches[1]
|
659 |
+
: $matches[1];
|
660 |
+
$number .= (strlen($matches[2]) == 1)
|
661 |
+
? '0' . $matches[2]
|
662 |
+
: $matches[2];
|
663 |
+
$number .= (strlen($matches[3]) == 1)
|
664 |
+
? '0' . $matches[3]
|
665 |
+
: $matches[3];
|
666 |
+
|
667 |
+
return intval($number);
|
668 |
+
}
|
669 |
+
|
670 |
+
/**
|
671 |
+
* Forces modules.
|
672 |
+
*
|
673 |
+
* @since 1.0.0
|
674 |
+
* @return void
|
675 |
+
*/
|
676 |
+
//public function modulesLoaded()
|
677 |
+
//{
|
678 |
+
// factory_core_000_modules_loaded( $this );
|
679 |
+
//}
|
680 |
|
681 |
+
// ----------------------------------------------------------------------
|
682 |
+
// Plugin row on plugins.php page
|
683 |
+
// ----------------------------------------------------------------------
|
684 |
+
|
685 |
+
public function showCustomPluginRow($file, $plugin_data)
|
686 |
+
{
|
687 |
+
if( !is_network_admin() && is_multisite() ) {
|
688 |
+
return;
|
689 |
+
}
|
690 |
+
|
691 |
+
$messages = apply_filters('wbcr_factory_400_plugin_row_' . $this->plugin_name, array(), $file, $plugin_data);
|
692 |
+
|
693 |
+
// if nothign to show then, use default handle
|
694 |
+
/*if( count($messages) == 0 ) {
|
695 |
+
wp_plugin_update_row($file, $plugin_data);
|
696 |
+
|
697 |
+
return;
|
698 |
+
}*/
|
699 |
+
|
700 |
+
if( empty($messages) ) {
|
701 |
+
return;
|
702 |
+
}
|
703 |
+
|
704 |
+
$wp_list_table = _get_list_table('WP_Plugins_List_Table');
|
705 |
+
|
706 |
+
foreach($messages as $message) {
|
707 |
+
echo '<tr class="plugin-update-tr active">';
|
708 |
+
echo '<td colspan="' . $wp_list_table->get_column_count() . '" class="plugin-update colspanchange">';
|
709 |
+
echo '<div class="update-message notice inline notice-error notice-alt">';
|
710 |
+
echo '<p>' . $message . '</p>';
|
711 |
+
echo '</div>';
|
712 |
+
echo '</td></tr>';
|
713 |
+
}
|
714 |
+
}
|
715 |
+
|
716 |
+
// ----------------------------------------------------------------------
|
717 |
+
// Finding files
|
718 |
+
// ----------------------------------------------------------------------
|
719 |
+
|
720 |
+
/**
|
721 |
+
* Returns a list of files at a given path.
|
722 |
+
* @param string $path path for search
|
723 |
+
*/
|
724 |
+
private function findFiles($path)
|
725 |
+
{
|
726 |
+
return $this->findFileOrFolders($path, true);
|
727 |
+
}
|
728 |
|
729 |
+
/**
|
730 |
+
* Returns a list of folders at a given path.
|
731 |
+
* @param string $path path for search
|
732 |
+
*/
|
733 |
+
private function findFolders($path)
|
734 |
+
{
|
735 |
+
return $this->findFileOrFolders($path, false);
|
736 |
+
}
|
737 |
+
|
738 |
+
/**
|
739 |
+
* Returns a list of files or folders at a given path.
|
740 |
+
* @param string $path path for search
|
741 |
+
* @param bool $files files or folders?
|
742 |
+
*/
|
743 |
+
private function findFileOrFolders($path, $areFiles = true)
|
744 |
+
{
|
745 |
+
if( !is_dir($path) ) {
|
746 |
+
return array();
|
747 |
+
}
|
748 |
+
|
749 |
+
$entries = scandir($path);
|
750 |
+
if( empty($entries) ) {
|
751 |
+
return array();
|
752 |
+
}
|
753 |
+
|
754 |
+
$files = array();
|
755 |
+
foreach($entries as $entryName) {
|
756 |
+
if( $entryName == '.' || $entryName == '..' ) {
|
757 |
+
continue;
|
758 |
+
}
|
759 |
+
|
760 |
+
$filename = $path . '/' . $entryName;
|
761 |
+
if( ($areFiles && is_file($filename)) || (!$areFiles && is_dir($filename)) ) {
|
762 |
+
$files[] = array(
|
763 |
+
'path' => str_replace("\\", "/", $filename),
|
764 |
+
'name' => $areFiles
|
765 |
+
? str_replace('.php', '', $entryName)
|
766 |
+
: $entryName
|
767 |
+
);
|
768 |
+
}
|
769 |
+
}
|
770 |
+
|
771 |
+
return $files;
|
772 |
+
}
|
773 |
+
|
774 |
+
/**
|
775 |
+
* Gets php classes defined in a specified file.
|
776 |
+
* @param string $path
|
777 |
+
*/
|
778 |
+
private function getClasses($path)
|
779 |
+
{
|
780 |
+
|
781 |
+
$phpCode = file_get_contents($path);
|
782 |
+
|
783 |
+
$classes = array();
|
784 |
+
$tokens = token_get_all($phpCode);
|
785 |
+
|
786 |
+
$count = count($tokens);
|
787 |
+
for($i = 2; $i < $count; $i++) {
|
788 |
+
if( is_array($tokens) && $tokens[$i - 2][0] == T_CLASS && $tokens[$i - 1][0] == T_WHITESPACE && $tokens[$i][0] == T_STRING ) {
|
789 |
+
|
790 |
+
$extends = null;
|
791 |
+
if( $tokens[$i + 2][0] == T_EXTENDS && $tokens[$i + 4][0] == T_STRING ) {
|
792 |
+
$extends = $tokens[$i + 4][1];
|
793 |
+
}
|
794 |
+
|
795 |
+
$class_name = $tokens[$i][1];
|
796 |
+
$classes[$path] = array(
|
797 |
+
'name' => $class_name,
|
798 |
+
'extends' => $extends
|
799 |
+
);
|
800 |
+
}
|
801 |
+
}
|
802 |
+
|
803 |
+
/**
|
804 |
+
* result example:
|
805 |
+
*
|
806 |
+
* $classes['/plugin/items/filename.php'] = array(
|
807 |
+
* 'name' => 'PluginNameItem',
|
808 |
+
* 'extendes' => 'PluginNameItemBase'
|
809 |
+
* )
|
810 |
+
*/
|
811 |
+
|
812 |
+
return $classes;
|
813 |
+
}
|
814 |
+
|
815 |
+
// ----------------------------------------------------------------------
|
816 |
+
// Public methods
|
817 |
+
// ----------------------------------------------------------------------
|
818 |
+
|
819 |
+
public function newScriptList()
|
820 |
+
{
|
821 |
+
return new Wbcr_Factory400_ScriptList($this);
|
822 |
+
}
|
823 |
+
|
824 |
+
public function newStyleList()
|
825 |
+
{
|
826 |
+
return new Wbcr_Factory400_StyleList($this);
|
827 |
+
}
|
828 |
}
|
829 |
+
}
|
libs/factory/core/includes/request.class.php
ADDED
@@ -0,0 +1,126 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Exit if accessed directly
|
3 |
+
if( !defined('ABSPATH') ) {
|
4 |
+
exit;
|
5 |
+
}
|
6 |
+
|
7 |
+
if( !class_exists('Wbcr_Factory400_Plugin') ) {
|
8 |
+
class Wbcr_Factory400_Request {
|
9 |
+
|
10 |
+
/**
|
11 |
+
* @param null $param
|
12 |
+
* @param bool|string $sanitize true/false or sanitize function name
|
13 |
+
* @param bool $default
|
14 |
+
* @param string $method_name
|
15 |
+
* @return array|bool|mixed
|
16 |
+
*/
|
17 |
+
private function getBody($param = null, $sanitize = false, $default = false, $method_name = 'REQUEST')
|
18 |
+
{
|
19 |
+
$sanitize_function_name = 'sanitize_text_field';
|
20 |
+
$method = $_REQUEST;
|
21 |
+
|
22 |
+
switch( mb_strtoupper($method_name) ) {
|
23 |
+
case 'GET':
|
24 |
+
$method = $_GET;
|
25 |
+
break;
|
26 |
+
case 'POST':
|
27 |
+
$method = $_POST;
|
28 |
+
break;
|
29 |
+
case 'REQUEST':
|
30 |
+
$method = $_REQUEST;
|
31 |
+
break;
|
32 |
+
}
|
33 |
+
|
34 |
+
if( !empty($sanitize) && is_string($sanitize) && $sanitize !== $sanitize_function_name ) {
|
35 |
+
$sanitize_function_name = $sanitize;
|
36 |
+
}
|
37 |
+
|
38 |
+
if( !function_exists($sanitize_function_name) ) {
|
39 |
+
throw new Exception('Function ' . $sanitize_function_name . 'is undefined.');
|
40 |
+
}
|
41 |
+
|
42 |
+
if( !empty($param) ) {
|
43 |
+
if( isset($method[$param]) && !empty($method[$param]) ) {
|
44 |
+
if( is_array($method[$param]) ) {
|
45 |
+
return !empty($sanitize)
|
46 |
+
? array_map($sanitize_function_name, $method[$param])
|
47 |
+
: $method[$param];
|
48 |
+
} else {
|
49 |
+
return !empty($sanitize)
|
50 |
+
? call_user_func($sanitize_function_name, $method[$param])
|
51 |
+
: $method[$param];
|
52 |
+
}
|
53 |
+
}
|
54 |
+
|
55 |
+
return $default;
|
56 |
+
}
|
57 |
+
|
58 |
+
return !empty($sanitize)
|
59 |
+
? array_map($sanitize_function_name, $method)
|
60 |
+
: $method;
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* @param bool|string see method getBody
|
65 |
+
* @param array $default
|
66 |
+
* @return mixed|null
|
67 |
+
*/
|
68 |
+
public function requestAll($sanitize = false, $default = array())
|
69 |
+
{
|
70 |
+
return $this->getBody(null, $sanitize, $default);
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
* @param $param
|
75 |
+
* @param bool|string see method getBody
|
76 |
+
* @param bool $default
|
77 |
+
* @return mixed|null
|
78 |
+
*/
|
79 |
+
public function request($param, $default = false, $sanitize = false)
|
80 |
+
{
|
81 |
+
return $this->getBody($param, $sanitize, $default);
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* @param bool|string see method getBody
|
86 |
+
* @param array $default
|
87 |
+
* @return mixed|null
|
88 |
+
*/
|
89 |
+
public function getAll($sanitize = false, $default = array())
|
90 |
+
{
|
91 |
+
return $this->getBody(null, $sanitize, $default, 'get');
|
92 |
+
}
|
93 |
+
|
94 |
+
/**
|
95 |
+
* @param null $param
|
96 |
+
* @param bool|string see method getBody
|
97 |
+
* @param bool $default
|
98 |
+
* @return mixed|null
|
99 |
+
*/
|
100 |
+
public function get($param, $default = false, $sanitize = false)
|
101 |
+
{
|
102 |
+
return $this->getBody($param, $sanitize, $default, 'get');
|
103 |
+
}
|
104 |
+
|
105 |
+
/**
|
106 |
+
* @param bool|string see method getBody
|
107 |
+
* @param array $default
|
108 |
+
* @return mixed|null
|
109 |
+
*/
|
110 |
+
public function postAll($sanitize = false, $default = array())
|
111 |
+
{
|
112 |
+
return $this->getBody(null, $sanitize, $default, 'post');
|
113 |
+
}
|
114 |
+
|
115 |
+
/**
|
116 |
+
* @param $param
|
117 |
+
* @param bool|string see method getBody
|
118 |
+
* @param bool $default
|
119 |
+
* @return mixed|null
|
120 |
+
*/
|
121 |
+
public function post($param, $default = false, $sanitize = false)
|
122 |
+
{
|
123 |
+
return $this->getBody($param, $sanitize, $default, 'post');
|
124 |
+
}
|
125 |
+
}
|
126 |
+
}
|
libs/factory/forms/boot.php
CHANGED
@@ -2,16 +2,18 @@
|
|
2 |
/**
|
3 |
* Factory Forms
|
4 |
*
|
5 |
-
*
|
6 |
-
*
|
7 |
-
*
|
8 |
-
* @author Paul Kashtanoff <paul@byonepress.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
9 |
-
* @copyright (c) 2013, OnePress Ltd, (c) 2017 Webcraftic Ltd
|
10 |
*
|
11 |
* @package factory-forms
|
12 |
* @since 1.0.1
|
13 |
*/
|
14 |
|
|
|
|
|
|
|
|
|
|
|
15 |
// the module provides function for the admin area only
|
16 |
|
17 |
if( !is_admin() ) {
|
@@ -20,169 +22,172 @@
|
|
20 |
|
21 |
// checks if the module is already loaded in order to
|
22 |
// prevent loading the same version of the module twice.
|
23 |
-
if( defined('
|
24 |
return;
|
25 |
}
|
26 |
|
27 |
-
define('
|
28 |
|
29 |
// absolute path and URL to the files and resources of the module.
|
30 |
-
define('
|
31 |
-
define('
|
32 |
|
33 |
#comp merge
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
|
38 |
-
|
39 |
-
require(FACTORY_FORMS_329_DIR . '/helpers.php');
|
40 |
#endcomp
|
41 |
|
42 |
-
load_plugin_textdomain('
|
43 |
|
44 |
/**
|
45 |
* We add this code into the hook because all these controls quite heavy. So in order to get better perfomance,
|
46 |
* we load the form controls only on pages where the forms are created.
|
47 |
*
|
48 |
-
* @see the '
|
49 |
*
|
50 |
* @since 3.0.7
|
51 |
*/
|
52 |
-
if( !function_exists('
|
53 |
|
54 |
-
|
|
|
|
|
|
|
|
|
55 |
{
|
56 |
|
57 |
if( $plugin && !isset($plugin->forms) ) {
|
58 |
-
throw new Exception("The module Factory Forms is not loaded for the plugin '{$plugin->
|
59 |
}
|
60 |
|
61 |
-
require_once(
|
62 |
-
require_once(
|
63 |
-
require_once(
|
64 |
-
require_once(
|
65 |
-
require_once(
|
66 |
-
require_once(
|
67 |
-
require_once(
|
68 |
-
require_once(
|
69 |
|
70 |
// registration of controls
|
71 |
$plugin->forms->registerControls(array(
|
72 |
array(
|
73 |
'type' => 'checkbox',
|
74 |
-
'class' => '
|
75 |
-
'include' =>
|
76 |
),
|
77 |
array(
|
78 |
'type' => 'list',
|
79 |
-
'class' => '
|
80 |
-
'include' =>
|
81 |
),
|
82 |
array(
|
83 |
'type' => 'dropdown',
|
84 |
-
'class' => '
|
85 |
-
'include' =>
|
86 |
),
|
87 |
array(
|
88 |
'type' => 'dropdown-and-colors',
|
89 |
-
'class' => '
|
90 |
-
'include' =>
|
91 |
),
|
92 |
array(
|
93 |
'type' => 'hidden',
|
94 |
-
'class' => '
|
95 |
-
'include' =>
|
96 |
),
|
97 |
array(
|
98 |
'type' => 'hidden',
|
99 |
-
'class' => '
|
100 |
-
'include' =>
|
101 |
),
|
102 |
array(
|
103 |
'type' => 'radio',
|
104 |
-
'class' => '
|
105 |
-
'include' =>
|
106 |
),
|
107 |
array(
|
108 |
'type' => 'radio-colors',
|
109 |
-
'class' => '
|
110 |
-
'include' =>
|
111 |
),
|
112 |
array(
|
113 |
'type' => 'textarea',
|
114 |
-
'class' => '
|
115 |
-
'include' =>
|
116 |
),
|
117 |
array(
|
118 |
'type' => 'textbox',
|
119 |
-
'class' => '
|
120 |
-
'include' =>
|
121 |
),
|
122 |
array(
|
123 |
'type' => 'multiple-textbox',
|
124 |
-
'class' => '
|
125 |
-
'include' =>
|
126 |
),
|
127 |
array(
|
128 |
'type' => 'datetimepicker-range',
|
129 |
-
'class' => '
|
130 |
-
'include' =>
|
131 |
),
|
132 |
array(
|
133 |
'type' => 'url',
|
134 |
-
'class' => '
|
135 |
-
'include' =>
|
136 |
),
|
137 |
array(
|
138 |
'type' => 'wp-editor',
|
139 |
-
'class' => '
|
140 |
-
'include' =>
|
141 |
),
|
142 |
array(
|
143 |
'type' => 'color',
|
144 |
-
'class' => '
|
145 |
-
'include' =>
|
146 |
),
|
147 |
array(
|
148 |
'type' => 'color-and-opacity',
|
149 |
-
'class' => '
|
150 |
-
'include' =>
|
151 |
),
|
152 |
array(
|
153 |
'type' => 'gradient',
|
154 |
-
'class' => '
|
155 |
-
'include' =>
|
156 |
),
|
157 |
array(
|
158 |
'type' => 'font',
|
159 |
-
'class' => '
|
160 |
-
'include' =>
|
161 |
),
|
162 |
array(
|
163 |
'type' => 'google-font',
|
164 |
-
'class' => '
|
165 |
-
'include' =>
|
166 |
),
|
167 |
array(
|
168 |
'type' => 'pattern',
|
169 |
-
'class' => '
|
170 |
-
'include' =>
|
171 |
),
|
172 |
array(
|
173 |
'type' => 'integer',
|
174 |
-
'class' => '
|
175 |
-
'include' =>
|
176 |
),
|
177 |
array(
|
178 |
'type' => 'control-group',
|
179 |
-
'class' => '
|
180 |
-
'include' =>
|
181 |
),
|
182 |
array(
|
183 |
'type' => 'paddings-editor',
|
184 |
-
'class' => '
|
185 |
-
'include' =>
|
186 |
),
|
187 |
));
|
188 |
|
@@ -190,53 +195,53 @@
|
|
190 |
$plugin->forms->registerHolders(array(
|
191 |
array(
|
192 |
'type' => 'tab',
|
193 |
-
'class' => '
|
194 |
-
'include' =>
|
195 |
),
|
196 |
array(
|
197 |
'type' => 'tab-item',
|
198 |
-
'class' => '
|
199 |
-
'include' =>
|
200 |
),
|
201 |
array(
|
202 |
'type' => 'accordion',
|
203 |
-
'class' => '
|
204 |
-
'include' =>
|
205 |
),
|
206 |
array(
|
207 |
'type' => 'accordion-item',
|
208 |
-
'class' => '
|
209 |
-
'include' =>
|
210 |
),
|
211 |
array(
|
212 |
'type' => 'control-group',
|
213 |
-
'class' => '
|
214 |
-
'include' =>
|
215 |
),
|
216 |
array(
|
217 |
'type' => 'control-group-item',
|
218 |
-
'class' => '
|
219 |
-
'include' =>
|
220 |
),
|
221 |
array(
|
222 |
'type' => 'form-group',
|
223 |
-
'class' => '
|
224 |
-
'include' =>
|
225 |
),
|
226 |
array(
|
227 |
'type' => 'more-link',
|
228 |
-
'class' => '
|
229 |
-
'include' =>
|
230 |
),
|
231 |
array(
|
232 |
'type' => 'div',
|
233 |
-
'class' => '
|
234 |
-
'include' =>
|
235 |
),
|
236 |
array(
|
237 |
'type' => 'columns',
|
238 |
-
'class' => '
|
239 |
-
'include' =>
|
240 |
)
|
241 |
));
|
242 |
|
@@ -244,28 +249,23 @@
|
|
244 |
$plugin->forms->registerCustomElements(array(
|
245 |
array(
|
246 |
'type' => 'html',
|
247 |
-
'class' => '
|
248 |
-
'include' =>
|
249 |
),
|
250 |
array(
|
251 |
'type' => 'separator',
|
252 |
-
'class' => '
|
253 |
-
'include' =>
|
254 |
),
|
255 |
));
|
256 |
|
257 |
// registration of form layouts
|
258 |
-
$plugin->forms->registerFormLayout(array(
|
259 |
-
'name' => 'bootstrap-2',
|
260 |
-
'class' => 'FactoryForms329_Bootstrap2FormLayout',
|
261 |
-
'include' => FACTORY_FORMS_329_DIR . '/layouts/bootstrap-2/bootstrap-2.php'
|
262 |
-
));
|
263 |
$plugin->forms->registerFormLayout(array(
|
264 |
'name' => 'bootstrap-3',
|
265 |
-
'class' => '
|
266 |
-
'include' =>
|
267 |
));
|
268 |
}
|
269 |
|
270 |
-
add_action('
|
271 |
}
|
2 |
/**
|
3 |
* Factory Forms
|
4 |
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
|
|
|
|
|
|
7 |
*
|
8 |
* @package factory-forms
|
9 |
* @since 1.0.1
|
10 |
*/
|
11 |
|
12 |
+
// Exit if accessed directly
|
13 |
+
if( !defined('ABSPATH') ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
|
17 |
// the module provides function for the admin area only
|
18 |
|
19 |
if( !is_admin() ) {
|
22 |
|
23 |
// checks if the module is already loaded in order to
|
24 |
// prevent loading the same version of the module twice.
|
25 |
+
if( defined('FACTORY_FORMS_400_LOADED') ) {
|
26 |
return;
|
27 |
}
|
28 |
|
29 |
+
define('FACTORY_FORMS_400_LOADED', true);
|
30 |
|
31 |
// absolute path and URL to the files and resources of the module.
|
32 |
+
define('FACTORY_FORMS_400_DIR', dirname(__FILE__));
|
33 |
+
define('FACTORY_FORMS_400_URL', plugins_url(null, __FILE__));
|
34 |
|
35 |
#comp merge
|
36 |
+
require_once(FACTORY_FORMS_400_DIR . '/includes/providers/value-provider.interface.php');
|
37 |
+
require_once(FACTORY_FORMS_400_DIR . '/includes/providers/meta-value-provider.class.php');
|
38 |
+
require_once(FACTORY_FORMS_400_DIR . '/includes/providers/options-value-provider.class.php');
|
39 |
|
40 |
+
require_once(FACTORY_FORMS_400_DIR . '/includes/form.class.php');
|
|
|
41 |
#endcomp
|
42 |
|
43 |
+
load_plugin_textdomain('wbcr_factory_forms_400', false, dirname(plugin_basename(__FILE__)) . '/langs');
|
44 |
|
45 |
/**
|
46 |
* We add this code into the hook because all these controls quite heavy. So in order to get better perfomance,
|
47 |
* we load the form controls only on pages where the forms are created.
|
48 |
*
|
49 |
+
* @see the 'wbcr_factory_forms_400_register_controls' hook
|
50 |
*
|
51 |
* @since 3.0.7
|
52 |
*/
|
53 |
+
if( !function_exists('wbcr_factory_forms_400_register_default_controls') ) {
|
54 |
|
55 |
+
/**
|
56 |
+
* @param Wbcr_Factory400_Plugin $plugin
|
57 |
+
* @throws Exception
|
58 |
+
*/
|
59 |
+
function wbcr_factory_forms_400_register_default_controls($plugin)
|
60 |
{
|
61 |
|
62 |
if( $plugin && !isset($plugin->forms) ) {
|
63 |
+
throw new Exception("The module Factory Forms is not loaded for the plugin '{$plugin->getPluginName()}'.");
|
64 |
}
|
65 |
|
66 |
+
require_once(FACTORY_FORMS_400_DIR . '/includes/html-builder.class.php');
|
67 |
+
require_once(FACTORY_FORMS_400_DIR . '/includes/form-element.class.php');
|
68 |
+
require_once(FACTORY_FORMS_400_DIR . '/includes/control.class.php');
|
69 |
+
require_once(FACTORY_FORMS_400_DIR . '/includes/complex-control.class.php');
|
70 |
+
require_once(FACTORY_FORMS_400_DIR . '/includes/holder.class.php');
|
71 |
+
require_once(FACTORY_FORMS_400_DIR . '/includes/control-holder.class.php');
|
72 |
+
require_once(FACTORY_FORMS_400_DIR . '/includes/custom-element.class.php');
|
73 |
+
require_once(FACTORY_FORMS_400_DIR . '/includes/form-layout.class.php');
|
74 |
|
75 |
// registration of controls
|
76 |
$plugin->forms->registerControls(array(
|
77 |
array(
|
78 |
'type' => 'checkbox',
|
79 |
+
'class' => 'Wbcr_FactoryForms400_CheckboxControl',
|
80 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/checkbox.php'
|
81 |
),
|
82 |
array(
|
83 |
'type' => 'list',
|
84 |
+
'class' => 'Wbcr_FactoryForms400_ListControl',
|
85 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/list.php'
|
86 |
),
|
87 |
array(
|
88 |
'type' => 'dropdown',
|
89 |
+
'class' => 'Wbcr_FactoryForms400_DropdownControl',
|
90 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/dropdown.php'
|
91 |
),
|
92 |
array(
|
93 |
'type' => 'dropdown-and-colors',
|
94 |
+
'class' => 'Wbcr_FactoryForms400_DropdownAndColorsControl',
|
95 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/dropdown-and-colors.php'
|
96 |
),
|
97 |
array(
|
98 |
'type' => 'hidden',
|
99 |
+
'class' => 'Wbcr_FactoryForms400_HiddenControl',
|
100 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/hidden.php'
|
101 |
),
|
102 |
array(
|
103 |
'type' => 'hidden',
|
104 |
+
'class' => 'Wbcr_FactoryForms400_HiddenControl',
|
105 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/hidden.php'
|
106 |
),
|
107 |
array(
|
108 |
'type' => 'radio',
|
109 |
+
'class' => 'Wbcr_FactoryForms400_RadioControl',
|
110 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/radio.php'
|
111 |
),
|
112 |
array(
|
113 |
'type' => 'radio-colors',
|
114 |
+
'class' => 'Wbcr_FactoryForms400_RadioColorsControl',
|
115 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/radio-colors.php'
|
116 |
),
|
117 |
array(
|
118 |
'type' => 'textarea',
|
119 |
+
'class' => 'Wbcr_FactoryForms400_TextareaControl',
|
120 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/textarea.php'
|
121 |
),
|
122 |
array(
|
123 |
'type' => 'textbox',
|
124 |
+
'class' => 'Wbcr_FactoryForms400_TextboxControl',
|
125 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/textbox.php'
|
126 |
),
|
127 |
array(
|
128 |
'type' => 'multiple-textbox',
|
129 |
+
'class' => 'Wbcr_FactoryForms400_MultipleTextboxControl',
|
130 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/multiple-textbox.php'
|
131 |
),
|
132 |
array(
|
133 |
'type' => 'datetimepicker-range',
|
134 |
+
'class' => 'Wbcr_FactoryForms400_DatepickerRangeControl',
|
135 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/datepicker-range.php'
|
136 |
),
|
137 |
array(
|
138 |
'type' => 'url',
|
139 |
+
'class' => 'Wbcr_FactoryForms400_UrlControl',
|
140 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/url.php'
|
141 |
),
|
142 |
array(
|
143 |
'type' => 'wp-editor',
|
144 |
+
'class' => 'Wbcr_FactoryForms400_WpEditorControl',
|
145 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/wp-editor.php'
|
146 |
),
|
147 |
array(
|
148 |
'type' => 'color',
|
149 |
+
'class' => 'Wbcr_FactoryForms400_ColorControl',
|
150 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/color.php'
|
151 |
),
|
152 |
array(
|
153 |
'type' => 'color-and-opacity',
|
154 |
+
'class' => 'Wbcr_FactoryForms400_ColorAndOpacityControl',
|
155 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/color-and-opacity.php'
|
156 |
),
|
157 |
array(
|
158 |
'type' => 'gradient',
|
159 |
+
'class' => 'Wbcr_FactoryForms400_GradientControl',
|
160 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/gradient.php'
|
161 |
),
|
162 |
array(
|
163 |
'type' => 'font',
|
164 |
+
'class' => 'Wbcr_FactoryForms400_FontControl',
|
165 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/font.php'
|
166 |
),
|
167 |
array(
|
168 |
'type' => 'google-font',
|
169 |
+
'class' => 'Wbcr_FactoryForms400_GoogleFontControl',
|
170 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/google-font.php'
|
171 |
),
|
172 |
array(
|
173 |
'type' => 'pattern',
|
174 |
+
'class' => 'Wbcr_FactoryForms400_PatternControl',
|
175 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/pattern.php'
|
176 |
),
|
177 |
array(
|
178 |
'type' => 'integer',
|
179 |
+
'class' => 'Wbcr_FactoryForms400_IntegerControl',
|
180 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/integer.php'
|
181 |
),
|
182 |
array(
|
183 |
'type' => 'control-group',
|
184 |
+
'class' => 'Wbcr_FactoryForms400_ControlGroupHolder',
|
185 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/holders/control-group.php'
|
186 |
),
|
187 |
array(
|
188 |
'type' => 'paddings-editor',
|
189 |
+
'class' => 'Wbcr_FactoryForms400_PaddingsEditorControl',
|
190 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/paddings-editor.php'
|
191 |
),
|
192 |
));
|
193 |
|
195 |
$plugin->forms->registerHolders(array(
|
196 |
array(
|
197 |
'type' => 'tab',
|
198 |
+
'class' => 'Wbcr_FactoryForms400_TabHolder',
|
199 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/holders/tab.php'
|
200 |
),
|
201 |
array(
|
202 |
'type' => 'tab-item',
|
203 |
+
'class' => 'Wbcr_FactoryForms400_TabItemHolder',
|
204 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/holders/tab-item.php'
|
205 |
),
|
206 |
array(
|
207 |
'type' => 'accordion',
|
208 |
+
'class' => 'Wbcr_FactoryForms400_AccordionHolder',
|
209 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/holders/accordion.php'
|
210 |
),
|
211 |
array(
|
212 |
'type' => 'accordion-item',
|
213 |
+
'class' => 'Wbcr_FactoryForms400_AccordionItemHolder',
|
214 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/holders/accordion-item.php'
|
215 |
),
|
216 |
array(
|
217 |
'type' => 'control-group',
|
218 |
+
'class' => 'Wbcr_FactoryForms400_ControlGroupHolder',
|
219 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/holders/control-group.php'
|
220 |
),
|
221 |
array(
|
222 |
'type' => 'control-group-item',
|
223 |
+
'class' => 'Wbcr_FactoryForms400_ControlGroupItem',
|
224 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/holders/control-group-item.php'
|
225 |
),
|
226 |
array(
|
227 |
'type' => 'form-group',
|
228 |
+
'class' => 'Wbcr_FactoryForms400_FormGroupHolder',
|
229 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/holders/form-group.php'
|
230 |
),
|
231 |
array(
|
232 |
'type' => 'more-link',
|
233 |
+
'class' => 'Wbcr_FactoryForms400_MoreLinkHolder',
|
234 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/holders/more-link.php'
|
235 |
),
|
236 |
array(
|
237 |
'type' => 'div',
|
238 |
+
'class' => 'Wbcr_FactoryForms400_DivHolder',
|
239 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/holders/div.php'
|
240 |
),
|
241 |
array(
|
242 |
'type' => 'columns',
|
243 |
+
'class' => 'Wbcr_FactoryForms400_ColumnsHolder',
|
244 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/holders/columns.php'
|
245 |
)
|
246 |
));
|
247 |
|
249 |
$plugin->forms->registerCustomElements(array(
|
250 |
array(
|
251 |
'type' => 'html',
|
252 |
+
'class' => 'Wbcr_FactoryForms400_Html',
|
253 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/customs/html.php',
|
254 |
),
|
255 |
array(
|
256 |
'type' => 'separator',
|
257 |
+
'class' => 'Wbcr_FactoryForms400_Separator',
|
258 |
+
'include' => FACTORY_FORMS_400_DIR . '/controls/customs/separator.php',
|
259 |
),
|
260 |
));
|
261 |
|
262 |
// registration of form layouts
|
|
|
|
|
|
|
|
|
|
|
263 |
$plugin->forms->registerFormLayout(array(
|
264 |
'name' => 'bootstrap-3',
|
265 |
+
'class' => 'Wbcr_FactoryForms400_Bootstrap3FormLayout',
|
266 |
+
'include' => FACTORY_FORMS_400_DIR . '/layouts/bootstrap-3/bootstrap-3.php'
|
267 |
));
|
268 |
}
|
269 |
|
270 |
+
add_action('wbcr_factory_forms_400_register_controls', 'wbcr_factory_forms_400_register_default_controls');
|
271 |
}
|
libs/factory/forms/controls/checkbox.php
CHANGED
@@ -8,161 +8,170 @@
|
|
8 |
* value => a value to show in the control
|
9 |
* default => a default value of the control if the "value" option is not specified
|
10 |
*
|
11 |
-
* @author
|
12 |
-
* @copyright (c)
|
13 |
*
|
14 |
* @package factory-forms
|
15 |
* @since 1.0.0
|
16 |
*/
|
17 |
-
class FactoryForms329_CheckboxControl extends FactoryForms329_Control {
|
18 |
|
19 |
-
|
|
|
|
|
|
|
20 |
|
21 |
-
|
22 |
-
{
|
23 |
-
$nameOnForm = $this->getNameOnForm($name);
|
24 |
|
25 |
-
|
26 |
-
? 1
|
27 |
-
: 0;
|
28 |
-
}
|
29 |
|
30 |
-
|
31 |
-
* Shows the html markup of the control.
|
32 |
-
*
|
33 |
-
* @since 1.0.0
|
34 |
-
* @return void
|
35 |
-
*/
|
36 |
-
public function html()
|
37 |
-
{
|
38 |
|
39 |
-
|
40 |
-
|
|
|
41 |
|
42 |
-
|
|
|
|
|
|
|
43 |
|
44 |
-
|
45 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
|
47 |
-
$
|
48 |
-
$
|
49 |
|
50 |
-
$
|
51 |
|
52 |
-
|
53 |
-
$
|
54 |
-
} else {
|
55 |
-
$currentEventsData = $eventsOffData;
|
56 |
-
}
|
57 |
|
58 |
-
|
59 |
-
|
60 |
-
$printStyles .= $selectors . '{display:none;}';
|
61 |
-
} else if( $eventName == 'show' ) {
|
62 |
-
$printStyles .= $selectors . '{display:block;}';
|
63 |
-
}
|
64 |
-
}
|
65 |
|
66 |
-
|
67 |
-
?>
|
68 |
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
}
|
74 |
-
|
75 |
-
|
|
|
|
|
|
|
|
|
|
|
76 |
}
|
77 |
-
window.__factory_checkbox_control_events_on_data['<?php echo $nameOnForm ?>'] = <?= $eventsOnStringData ?>;
|
78 |
-
window.__factory_checkbox_control_events_off_data['<?php echo $nameOnForm ?>'] = <?= $eventsOffStringData ?>;
|
79 |
-
</script>
|
80 |
-
<?php
|
81 |
-
}
|
82 |
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
*/
|
96 |
-
protected function buttonsHtml()
|
97 |
-
{
|
98 |
-
$value = esc_attr($this->getValue());
|
99 |
-
$nameOnForm = $this->getNameOnForm();
|
100 |
-
|
101 |
-
$this->addCssClass('factory-buttons-way');
|
102 |
-
$this->addCssClass('btn-group');
|
103 |
-
|
104 |
-
if( $this->getOption('tumbler', false) ) {
|
105 |
-
$this->addCssClass('factory-tumbler');
|
106 |
}
|
107 |
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
|
113 |
-
|
114 |
-
$
|
|
|
|
|
115 |
|
116 |
-
|
117 |
-
|
118 |
-
}
|
119 |
|
|
|
|
|
|
|
120 |
|
121 |
-
?>
|
122 |
-
<div <?php $this->attrs() ?>>
|
123 |
-
<button type="button" class="btn btn-default btn-small btn-sm factory-on <?php if( $value ) {
|
124 |
-
echo 'active';
|
125 |
-
} ?>"><?php _e('On', 'factory_forms_329') ?></button>
|
126 |
-
<button type="button" class="btn btn-default btn-small btn-sm factory-off <?php if( !$value ) {
|
127 |
-
echo 'active';
|
128 |
-
} ?>" data-value="0"><?php _e('Off', 'factory_forms_329') ?></button>
|
129 |
-
<input type="checkbox" style="display: none" id="<?php echo $nameOnForm ?>" class="factory-result" name="<?php echo $nameOnForm ?>" value="<?= $value ?>" <?php if( $value ) {
|
130 |
-
echo 'checked="checked"';
|
131 |
-
} ?>" />
|
132 |
-
</div>
|
133 |
-
<?php if( $this->getOption('tumblerHint', false) ) { ?>
|
134 |
-
<div class="factory-checkbox-tumbler-hint factory-tumbler-hint" style="display: none;">
|
135 |
-
<div class="factory-tumbler-content">
|
136 |
-
<?php echo $this->getOption('tumblerHint') ?>
|
137 |
-
</div>
|
138 |
-
</div>
|
139 |
-
<?php } ?>
|
140 |
-
<?php
|
141 |
-
}
|
142 |
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
|
|
|
|
161 |
}
|
162 |
-
$this->addCssClass('factory-default-way');
|
163 |
|
164 |
-
|
165 |
-
|
166 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
167 |
}
|
168 |
-
}
|
8 |
* value => a value to show in the control
|
9 |
* default => a default value of the control if the "value" option is not specified
|
10 |
*
|
11 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
12 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
13 |
*
|
14 |
* @package factory-forms
|
15 |
* @since 1.0.0
|
16 |
*/
|
|
|
17 |
|
18 |
+
// Exit if accessed directly
|
19 |
+
if( !defined('ABSPATH') ) {
|
20 |
+
exit;
|
21 |
+
}
|
22 |
|
23 |
+
if( !class_exists('Wbcr_FactoryForms400_CheckboxControl') ) {
|
|
|
|
|
24 |
|
25 |
+
class Wbcr_FactoryForms400_CheckboxControl extends Wbcr_FactoryForms400_Control {
|
|
|
|
|
|
|
26 |
|
27 |
+
public $type = 'checkbox';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
|
29 |
+
public function getSubmitValue($name, $sub_name)
|
30 |
+
{
|
31 |
+
$name_on_form = $this->getNameOnForm($name);
|
32 |
|
33 |
+
return isset($_POST[$name_on_form]) && $_POST[$name_on_form] != 0
|
34 |
+
? 1
|
35 |
+
: 0;
|
36 |
+
}
|
37 |
|
38 |
+
/**
|
39 |
+
* Shows the html markup of the control.
|
40 |
+
*
|
41 |
+
* @since 1.0.0
|
42 |
+
* @return void
|
43 |
+
*/
|
44 |
+
public function html()
|
45 |
+
{
|
46 |
|
47 |
+
$events_on_data = $this->getOption('eventsOn', array());
|
48 |
+
$events_off_data = $this->getOption('eventsOff', array());
|
49 |
|
50 |
+
if( !empty($events_on_data) || !empty($events_off_data) ) {
|
51 |
|
52 |
+
$events_on_string_data = json_encode($events_on_data);
|
53 |
+
$events_off_string_data = json_encode($events_off_data);
|
|
|
|
|
|
|
54 |
|
55 |
+
$name_on_form = $this->getNameOnForm();
|
56 |
+
$value = $this->getValue();
|
|
|
|
|
|
|
|
|
|
|
57 |
|
58 |
+
$print_styles = '';
|
|
|
59 |
|
60 |
+
if( $value ) {
|
61 |
+
$current_events_data = $events_on_data;
|
62 |
+
} else {
|
63 |
+
$current_events_data = $events_off_data;
|
64 |
}
|
65 |
+
|
66 |
+
foreach($current_events_data as $event_name => $selectors) {
|
67 |
+
if( $event_name == 'hide' ) {
|
68 |
+
$print_styles .= $selectors . '{display:none;}';
|
69 |
+
} else if( $event_name == 'show' ) {
|
70 |
+
$print_styles .= $selectors . '{display:block;}';
|
71 |
+
}
|
72 |
}
|
|
|
|
|
|
|
|
|
|
|
73 |
|
74 |
+
echo '<style>' . $print_styles . '</style>';
|
75 |
+
?>
|
76 |
+
|
77 |
+
<script>
|
78 |
+
// Onepress factory checkbox control events
|
79 |
+
if( void 0 === window.__factory_checkbox_control_events_on_data ) {
|
80 |
+
window.__factory_checkbox_control_events_on_data = {};
|
81 |
+
}
|
82 |
+
if( void 0 === window.__factory_checkbox_control_events_off_data ) {
|
83 |
+
window.__factory_checkbox_control_events_off_data = {};
|
84 |
+
}
|
85 |
+
window.__factory_checkbox_control_events_on_data['<?php echo $name_on_form ?>'] = <?= $events_on_string_data ?>;
|
86 |
+
window.__factory_checkbox_control_events_off_data['<?php echo $name_on_form ?>'] = <?= $events_off_string_data ?>;
|
87 |
+
</script>
|
88 |
+
<?php
|
89 |
+
}
|
90 |
|
91 |
+
if( 'buttons' == $this->getOption('way') ) {
|
92 |
+
$this->buttonsHtml();
|
93 |
+
} else {
|
94 |
+
$this->defaultHtml();
|
95 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
}
|
97 |
|
98 |
+
/**
|
99 |
+
* Shows the Buttons Checkbox.
|
100 |
+
*
|
101 |
+
* @since 1.0.0
|
102 |
+
* @return void
|
103 |
+
*/
|
104 |
+
protected function buttonsHtml()
|
105 |
+
{
|
106 |
+
$value = esc_attr($this->getValue());
|
107 |
+
$name_on_form = $this->getNameOnForm();
|
108 |
+
|
109 |
+
$this->addCssClass('factory-buttons-way');
|
110 |
+
$this->addCssClass('btn-group');
|
111 |
+
|
112 |
+
if( $this->getOption('tumbler', false) ) {
|
113 |
+
$this->addCssClass('factory-tumbler');
|
114 |
+
}
|
115 |
|
116 |
+
$tumbler_function = $this->getOption('tumblerFunction', false);
|
117 |
+
if( $tumbler_function ) {
|
118 |
+
$this->addHtmlData('tumbler-function', $tumbler_function);
|
119 |
+
}
|
120 |
|
121 |
+
if( $this->getOption('tumblerHint', false) ) {
|
122 |
+
$this->addCssClass('factory-has-tumbler-hint');
|
|
|
123 |
|
124 |
+
$delay = $this->getOption('tumblerDelay', 3000);
|
125 |
+
$this->addHtmlData('tumbler-delay', $delay);
|
126 |
+
}
|
127 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
|
129 |
+
?>
|
130 |
+
<div <?php $this->attrs() ?>>
|
131 |
+
<button type="button" class="btn btn-default btn-small btn-sm factory-on <?php if( $value ) {
|
132 |
+
echo 'active';
|
133 |
+
} ?>"><?php _e('On', 'wbcr_factory_forms_400') ?></button>
|
134 |
+
<button type="button" class="btn btn-default btn-small btn-sm factory-off <?php if( !$value ) {
|
135 |
+
echo 'active';
|
136 |
+
} ?>" data-value="0"><?php _e('Off', 'wbcr_factory_forms_400') ?></button>
|
137 |
+
<input type="checkbox" style="display: none" id="<?php echo $name_on_form ?>" class="factory-result" name="<?php echo $name_on_form ?>" value="<?= $value ?>" <?php if( $value ) {
|
138 |
+
echo 'checked="checked"';
|
139 |
+
} ?>" />
|
140 |
+
</div>
|
141 |
+
<?php if( $this->getOption('tumblerHint', false) ) { ?>
|
142 |
+
<div class="factory-checkbox-tumbler-hint factory-tumbler-hint" style="display: none;">
|
143 |
+
<div class="factory-tumbler-content">
|
144 |
+
<?php echo $this->getOption('tumblerHint') ?>
|
145 |
+
</div>
|
146 |
+
</div>
|
147 |
+
<?php } ?>
|
148 |
+
<?php
|
149 |
}
|
|
|
150 |
|
151 |
+
/**
|
152 |
+
* Shows the standart checkbox.
|
153 |
+
*
|
154 |
+
* @since 1.0.0
|
155 |
+
* @return void
|
156 |
+
*/
|
157 |
+
protected function defaultHtml()
|
158 |
+
{
|
159 |
+
$value = esc_attr($this->getValue());
|
160 |
+
$name_on_form = $this->getNameOnForm();
|
161 |
+
|
162 |
+
$this->addHtmlAttr('type', 'checkbox');
|
163 |
+
$this->addHtmlAttr('id', $name_on_form);
|
164 |
+
$this->addHtmlAttr('name', $name_on_form);
|
165 |
+
$this->addHtmlAttr('value', $value);
|
166 |
+
|
167 |
+
if( $value ) {
|
168 |
+
$this->addHtmlAttr('checked', 'checked');
|
169 |
+
}
|
170 |
+
$this->addCssClass('factory-default-way');
|
171 |
+
|
172 |
+
?>
|
173 |
+
<input <?php $this->attrs() ?>/>
|
174 |
+
<?php
|
175 |
+
}
|
176 |
}
|
177 |
+
}
|
libs/factory/forms/controls/color-and-opacity.php
CHANGED
@@ -1,67 +1,88 @@
|
|
1 |
<?php
|
2 |
-
/**
|
3 |
-
* Color and Opacity
|
4 |
-
*
|
5 |
-
* Main options:
|
6 |
-
* name => a name of the control
|
7 |
-
* value => a value to show in the control
|
8 |
-
* default => a default value of the control if the "value" option is not specified
|
9 |
-
*
|
10 |
-
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
11 |
-
* @copyright (c) 2013, OnePress Ltd
|
12 |
-
*
|
13 |
-
* @package core
|
14 |
-
* @since 1.0.0
|
15 |
-
*/
|
16 |
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
+
/**
|
4 |
+
* Color and Opacity
|
5 |
+
*
|
6 |
+
* Main options:
|
7 |
+
* name => a name of the control
|
8 |
+
* value => a value to show in the control
|
9 |
+
* default => a default value of the control if the "value" option is not specified
|
10 |
+
*
|
11 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
12 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
13 |
+
*
|
14 |
+
* @package core
|
15 |
+
* @since 1.0.0
|
16 |
+
*/
|
17 |
+
|
18 |
+
// Exit if accessed directly
|
19 |
+
if( !defined('ABSPATH') ) {
|
20 |
+
exit;
|
21 |
+
}
|
22 |
+
|
23 |
+
if( !class_exists('Wbcr_FactoryForms400_ColorAndOpacityControl') ) {
|
24 |
+
}
|
25 |
+
|
26 |
+
class Wbcr_FactoryForms400_ColorAndOpacityControl extends Wbcr_FactoryForms400_ComplexControl {
|
27 |
+
|
28 |
+
public $type = 'color-and-opacity';
|
29 |
+
|
30 |
+
public function __construct($options, $form, $provider = null)
|
31 |
+
{
|
32 |
+
parent::__construct($options, $form, $provider);
|
33 |
+
|
34 |
+
if( !isset($options['color']) ) {
|
35 |
+
$options['color'] = array();
|
36 |
+
}
|
37 |
+
|
38 |
+
$options['color'] = array_merge($options['color'], array(
|
39 |
+
'name' => $this->options['name'] . '__color',
|
40 |
+
'default' => isset($this->options['default'])
|
41 |
+
? $this->options['default']['color']
|
42 |
+
: '#1e8cbe',
|
43 |
+
'pickerTarget' => '.factory-control-' . $this->options['name'] . ' .factory-picker-target'
|
44 |
+
));
|
45 |
+
|
46 |
+
if( !isset($options['opacity']) ) {
|
47 |
+
$options['opacity'] = array();
|
48 |
+
}
|
49 |
+
|
50 |
+
$options['opacity'] = array_merge($options['opacity'], array(
|
51 |
+
'name' => $this->options['name'] . '__opacity',
|
52 |
+
'default' => isset($this->options['default'])
|
53 |
+
? $this->options['default']['opacity']
|
54 |
+
: 100,
|
55 |
+
'units' => '%',
|
56 |
+
'range' => array(0, 100),
|
57 |
+
'way' => 'slider'
|
58 |
+
));
|
59 |
+
|
60 |
+
$this->color = new Wbcr_FactoryForms400_ColorControl($options['color'], $form, $provider);
|
61 |
+
$this->opacity = new Wbcr_FactoryForms400_IntegerControl($options['opacity'], $form, $provider);
|
62 |
+
|
63 |
+
$this->innerControls = array($this->color, $this->opacity);
|
64 |
+
}
|
65 |
+
|
66 |
+
/**
|
67 |
+
* Shows the html markup of the control.
|
68 |
+
*
|
69 |
+
* @since 1.0.0
|
70 |
+
* @return void
|
71 |
+
*/
|
72 |
+
public function html()
|
73 |
+
{
|
74 |
+
?>
|
75 |
+
<div <?php $this->attrs() ?>>
|
76 |
+
<div class="factory-control-row">
|
77 |
+
<div class="factory-color-wrap">
|
78 |
+
<?php $this->color->html() ?>
|
79 |
+
</div>
|
80 |
+
<div class="factory-opacity-wrap">
|
81 |
+
<?php $this->opacity->html() ?>
|
82 |
+
</div>
|
83 |
+
</div>
|
84 |
+
<div class="factory-picker-target"></div>
|
85 |
+
</div>
|
86 |
+
<?php
|
87 |
+
}
|
88 |
+
}
|
libs/factory/forms/controls/color.php
CHANGED
@@ -9,42 +9,54 @@
|
|
9 |
* default => a default value of the control if the "value" option is not specified
|
10 |
*
|
11 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
12 |
-
* @copyright (c)
|
13 |
*
|
14 |
* @package core
|
15 |
* @since 1.0.0
|
16 |
*/
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
/**
|
22 |
-
* Shows the html markup of the control.
|
23 |
-
*
|
24 |
-
* @since 1.0.0
|
25 |
-
* @return void
|
26 |
-
*/
|
27 |
-
public function html()
|
28 |
-
{
|
29 |
-
$name = $this->getNameOnForm();
|
30 |
-
$value = esc_attr($this->getValue());
|
31 |
-
|
32 |
-
if( !$value )
|
33 |
-
$value = '#1e8cbe';
|
34 |
-
|
35 |
-
// the "pickerTarget" options allows to select element where the palette will be shown
|
36 |
-
$pickerTarget = $this->getOption('pickerTarget');
|
37 |
-
if( !empty($pickerTarget) )
|
38 |
-
$this->addHtmlData('picker-target', $pickerTarget);
|
39 |
-
|
40 |
-
?>
|
41 |
-
<div <?php $this->attrs() ?>>
|
42 |
-
<div class="factory-background" <?php echo(!empty($value)
|
43 |
-
? 'style="background:' . $value . ';"'
|
44 |
-
: ''); ?>></div>
|
45 |
-
<div class="factory-pattern"></div>
|
46 |
-
<input type="text" id="<?php echo $name; ?>" name="<?php echo $name; ?>" class="factory-input-text factory-color-hex" value="<?php echo $value; ?>">
|
47 |
-
</div>
|
48 |
-
<?php
|
49 |
-
}
|
50 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
* default => a default value of the control if the "value" option is not specified
|
10 |
*
|
11 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
12 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
13 |
*
|
14 |
* @package core
|
15 |
* @since 1.0.0
|
16 |
*/
|
17 |
+
|
18 |
+
// Exit if accessed directly
|
19 |
+
if( !defined('ABSPATH') ) {
|
20 |
+
exit;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
}
|
22 |
+
|
23 |
+
if( !class_exists('Wbcr_FactoryForms400_ColorControl') ) {
|
24 |
+
|
25 |
+
class Wbcr_FactoryForms400_ColorControl extends Wbcr_FactoryForms400_Control {
|
26 |
+
|
27 |
+
public $type = 'color';
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Shows the html markup of the control.
|
31 |
+
*
|
32 |
+
* @since 1.0.0
|
33 |
+
* @return void
|
34 |
+
*/
|
35 |
+
public function html()
|
36 |
+
{
|
37 |
+
$name = $this->getNameOnForm();
|
38 |
+
$value = esc_attr($this->getValue());
|
39 |
+
|
40 |
+
if( !$value ) {
|
41 |
+
$value = '#1e8cbe';
|
42 |
+
}
|
43 |
+
|
44 |
+
// the "pickerTarget" options allows to select element where the palette will be shown
|
45 |
+
$picker_target = $this->getOption('pickerTarget');
|
46 |
+
|
47 |
+
if( !empty($picker_target) ) {
|
48 |
+
$this->addHtmlData('picker-target', $picker_target);
|
49 |
+
}
|
50 |
+
|
51 |
+
?>
|
52 |
+
<div <?php $this->attrs() ?>>
|
53 |
+
<div class="factory-background" <?php echo(!empty($value)
|
54 |
+
? 'style="background:' . $value . ';"'
|
55 |
+
: ''); ?>></div>
|
56 |
+
<div class="factory-pattern"></div>
|
57 |
+
<input type="text" id="<?php echo $name; ?>" name="<?php echo $name; ?>" class="factory-input-text factory-color-hex" value="<?php echo $value; ?>">
|
58 |
+
</div>
|
59 |
+
<?php
|
60 |
+
}
|
61 |
+
}
|
62 |
+
}
|
libs/factory/forms/controls/customs/html.php
CHANGED
@@ -1,37 +1,45 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
/**
|
4 |
* Html Markup
|
5 |
*
|
6 |
-
* @author
|
7 |
-
* @copyright (c)
|
8 |
*
|
9 |
* @package factory-forms
|
10 |
* @since 1.0.0
|
11 |
*/
|
12 |
-
class FactoryForms329_Html extends FactoryForms329_CustomElement {
|
13 |
|
14 |
-
|
|
|
|
|
|
|
|
|
|
|
15 |
|
16 |
-
|
17 |
-
* Shows the html markup of the element.
|
18 |
-
*
|
19 |
-
* @since 1.0.0
|
20 |
-
* @return void
|
21 |
-
*/
|
22 |
-
public function html()
|
23 |
-
{
|
24 |
-
$html = $this->getOption('html', '');
|
25 |
|
26 |
-
|
27 |
-
if( (is_array($html) && count($html) == 2 && gettype($html[0]) == 'object') || function_exists($html) ) {
|
28 |
|
29 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
|
31 |
-
|
32 |
-
|
33 |
|
34 |
-
|
35 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
}
|
37 |
}
|
1 |
<?php
|
|
|
2 |
/**
|
3 |
* Html Markup
|
4 |
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
7 |
*
|
8 |
* @package factory-forms
|
9 |
* @since 1.0.0
|
10 |
*/
|
|
|
11 |
|
12 |
+
// Exit if accessed directly
|
13 |
+
if( !defined('ABSPATH') ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
|
17 |
+
if( !class_exists('Wbcr_FactoryForms400_Html') ) {
|
18 |
|
19 |
+
class Wbcr_FactoryForms400_Html extends Wbcr_FactoryForms400_CustomElement {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
|
21 |
+
public $type = 'html';
|
|
|
22 |
|
23 |
+
/**
|
24 |
+
* Shows the html markup of the element.
|
25 |
+
*
|
26 |
+
* @since 1.0.0
|
27 |
+
* @return void
|
28 |
+
*/
|
29 |
+
public function html()
|
30 |
+
{
|
31 |
+
$html = $this->getOption('html', '');
|
32 |
|
33 |
+
// if the data options is a valid callback for an object method
|
34 |
+
if( (is_array($html) && count($html) == 2 && gettype($html[0]) == 'object') || function_exists($html) ) {
|
35 |
|
36 |
+
call_user_func($html, $this);
|
37 |
+
|
38 |
+
return;
|
39 |
+
}
|
40 |
+
|
41 |
+
// if the data options is an array of values
|
42 |
+
echo $html;
|
43 |
+
}
|
44 |
}
|
45 |
}
|
libs/factory/forms/controls/customs/separator.php
CHANGED
@@ -1,27 +1,35 @@
|
|
1 |
<?php
|
2 |
-
/**
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
|
12 |
-
|
13 |
-
{
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Separator Markup
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
7 |
+
*
|
8 |
+
* @package factory-forms
|
9 |
+
* @since 1.0.0
|
10 |
+
*/
|
11 |
|
12 |
+
// Exit if accessed directly
|
13 |
+
if( !defined('ABSPATH') ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
|
17 |
+
if( !class_exists('Wbcr_FactoryForms400_Separator') ) {
|
18 |
+
class Wbcr_FactoryForms400_Separator extends Wbcr_FactoryForms400_CustomElement {
|
19 |
+
|
20 |
+
public $type = 'separator';
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Shows the html markup of the element.
|
24 |
+
*
|
25 |
+
* @since 1.0.0
|
26 |
+
* @return void
|
27 |
+
*/
|
28 |
+
public function html()
|
29 |
+
{
|
30 |
+
?>
|
31 |
+
<div <?php $this->attrs() ?>></div>
|
32 |
+
<?php
|
33 |
+
}
|
34 |
+
}
|
35 |
+
}
|
libs/factory/forms/controls/datepicker-range.php
CHANGED
@@ -2,8 +2,9 @@
|
|
2 |
|
3 |
/**
|
4 |
* Datepicker range control
|
5 |
-
*
|
6 |
-
* @
|
|
|
7 |
*
|
8 |
* Example:
|
9 |
* 'type' => 'datetimepicker-range',
|
@@ -22,75 +23,84 @@
|
|
22 |
* @package factory-forms
|
23 |
* @since 1.0.0
|
24 |
*/
|
25 |
-
class FactoryForms329_DatepickerRangeControl extends FactoryForms329_ComplexControl {
|
26 |
|
27 |
-
|
|
|
|
|
|
|
28 |
|
29 |
-
|
30 |
-
{
|
31 |
-
parent::__construct($options, $form, $provider);
|
32 |
|
33 |
-
|
34 |
-
$options['range_1'] = array();
|
35 |
-
}
|
36 |
|
37 |
-
$
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
'format' => 'YYYY/MM/DD HH:mm',
|
43 |
-
'default' => date('Y/m/d H:i')
|
44 |
-
), $options['range_1']);
|
45 |
-
|
46 |
-
if( !isset($options['range_2']) ) {
|
47 |
-
$options['range_2'] = array();
|
48 |
-
}
|
49 |
|
50 |
-
|
51 |
-
|
52 |
-
? $options['scope']
|
53 |
-
: 'factory',
|
54 |
-
'name' => $this->options['name'] . '__range_2',
|
55 |
-
'format' => 'YYYY/MM/DD HH:mm',
|
56 |
-
'default' => date('Y/m/d H:i', strtotime("+1 month"))
|
57 |
-
), $options['range_2']);
|
58 |
-
|
59 |
-
$this->range_1 = new FactoryForms329_TextboxControl($options['range_1'], $form, $provider);
|
60 |
-
$this->range_2 = new FactoryForms329_TextboxControl($options['range_2'], $form, $provider);
|
61 |
-
$this->innerControls = array($this->range_1, $this->range_2);
|
62 |
-
|
63 |
-
foreach($this->innerControls as $key => $control) {
|
64 |
-
$control->addCssClass('factory-datetimepicker-range-' . $key);
|
65 |
-
$control->addHtmlAttr('data-date-show-today-button', 'true');
|
66 |
-
$control->addHtmlAttr('data-date-show-clear', 'true');
|
67 |
-
|
68 |
-
$format = $control->getOption('format');
|
69 |
-
|
70 |
-
if( !empty($format) ) {
|
71 |
-
//'YYYY/MM/DD HH:mm'
|
72 |
-
$control->addHtmlAttr('data-date-format', $format);
|
73 |
}
|
74 |
|
75 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
76 |
|
77 |
-
$
|
78 |
-
|
79 |
-
|
|
|
80 |
|
81 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
}
|
83 |
-
}
|
84 |
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
|
|
95 |
}
|
96 |
-
}
|
2 |
|
3 |
/**
|
4 |
* Datepicker range control
|
5 |
+
*
|
6 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
7 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
8 |
*
|
9 |
* Example:
|
10 |
* 'type' => 'datetimepicker-range',
|
23 |
* @package factory-forms
|
24 |
* @since 1.0.0
|
25 |
*/
|
|
|
26 |
|
27 |
+
// Exit if accessed directly
|
28 |
+
if( !defined('ABSPATH') ) {
|
29 |
+
exit;
|
30 |
+
}
|
31 |
|
32 |
+
if( !class_exists('Wbcr_FactoryForms400_DatepickerRangeControl') ) {
|
|
|
|
|
33 |
|
34 |
+
class Wbcr_FactoryForms400_DatepickerRangeControl extends Wbcr_FactoryForms400_ComplexControl {
|
|
|
|
|
35 |
|
36 |
+
public $type = 'datetimepicker-range';
|
37 |
+
|
38 |
+
public function __construct($options, $form, $provider = null)
|
39 |
+
{
|
40 |
+
parent::__construct($options, $form, $provider);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
|
42 |
+
if( !isset($options['range_1']) ) {
|
43 |
+
$options['range_1'] = array();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
}
|
45 |
|
46 |
+
$options['range_1'] = array_merge(array(
|
47 |
+
'scope' => isset($options['scope'])
|
48 |
+
? $options['scope']
|
49 |
+
: 'factory',
|
50 |
+
'name' => $this->options['name'] . '__range_1',
|
51 |
+
'format' => 'YYYY/MM/DD HH:mm',
|
52 |
+
'default' => date('Y/m/d H:i')
|
53 |
+
), $options['range_1']);
|
54 |
+
|
55 |
+
if( !isset($options['range_2']) ) {
|
56 |
+
$options['range_2'] = array();
|
57 |
+
}
|
58 |
+
|
59 |
+
$options['range_2'] = array_merge(array(
|
60 |
+
'scope' => isset($options['scope'])
|
61 |
+
? $options['scope']
|
62 |
+
: 'factory',
|
63 |
+
'name' => $this->options['name'] . '__range_2',
|
64 |
+
'format' => 'YYYY/MM/DD HH:mm',
|
65 |
+
'default' => date('Y/m/d H:i', strtotime("+1 month"))
|
66 |
+
), $options['range_2']);
|
67 |
+
|
68 |
+
$this->range_1 = new Wbcr_FactoryForms400_TextboxControl($options['range_1'], $form, $provider);
|
69 |
+
$this->range_2 = new Wbcr_FactoryForms400_TextboxControl($options['range_2'], $form, $provider);
|
70 |
+
$this->inner_controls = array($this->range_1, $this->range_2);
|
71 |
|
72 |
+
foreach($this->inner_controls as $key => $control) {
|
73 |
+
$control->addCssClass('factory-datetimepicker-range-' . $key);
|
74 |
+
$control->addHtmlAttr('data-date-show-today-button', 'true');
|
75 |
+
$control->addHtmlAttr('data-date-show-clear', 'true');
|
76 |
|
77 |
+
$format = $control->getOption('format');
|
78 |
+
|
79 |
+
if( !empty($format) ) {
|
80 |
+
//'YYYY/MM/DD HH:mm'
|
81 |
+
$control->addHtmlAttr('data-date-format', $format);
|
82 |
+
}
|
83 |
+
|
84 |
+
$locale_parts = explode('_', get_locale());
|
85 |
+
|
86 |
+
$locale = isset($locale_parts[0])
|
87 |
+
? $locale_parts[0]
|
88 |
+
: 'en';
|
89 |
+
|
90 |
+
$control->addHtmlAttr('data-date-locale', $locale);
|
91 |
+
}
|
92 |
}
|
|
|
93 |
|
94 |
+
public function render()
|
95 |
+
{
|
96 |
+
?>
|
97 |
+
<div class='input-group date factory-datetimepicker-input-group' style="display:inline-block; width: 200px">
|
98 |
+
<?php $this->range_1->render(); ?>
|
99 |
+
</div>
|
100 |
+
<div class='input-group date factory-datetimepicker-input-group' style="display:inline-block; width: 200px">
|
101 |
+
<?php $this->range_2->render(); ?>
|
102 |
+
</div>
|
103 |
+
<?php
|
104 |
+
}
|
105 |
}
|
106 |
+
}
|
libs/factory/forms/controls/dropdown-and-colors.php
CHANGED
@@ -5,14 +5,14 @@
|
|
5 |
*
|
6 |
* Main options:
|
7 |
* name => a name of the control
|
8 |
-
* // see
|
9 |
* 'dropdown' => array(
|
10 |
* // a callback to return items or an array of items to select
|
11 |
* 'data' => OPanda_ThemeManager::getThemes(OPanda_Items::getCurrentItemName(), 'dropdown'),
|
12 |
* 'default' => 'default',
|
13 |
* 'value' => 'value' // a value to show in the control
|
14 |
* ),
|
15 |
-
* // see
|
16 |
* 'colors' => array(
|
17 |
* // a callback to return items or an array of items to select
|
18 |
* 'data' => array(
|
@@ -25,83 +25,92 @@
|
|
25 |
* 'default' => 'default', // a default value of the control if the "value" option is not specified
|
26 |
* ),
|
27 |
*
|
28 |
-
* @author Alex
|
29 |
-
* @copyright (c)
|
30 |
*
|
31 |
* @package factory-forms
|
32 |
* @since 1.0.0
|
33 |
*/
|
34 |
-
class FactoryForms329_DropdownAndColorsControl extends FactoryForms329_ComplexControl {
|
35 |
|
36 |
-
|
|
|
|
|
|
|
37 |
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
|
42 |
-
|
43 |
-
$options['dropdown'] = array();
|
44 |
-
}
|
45 |
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
: 'opanda',
|
50 |
-
'name' => $this->options['name'] . '__dropdown',
|
51 |
-
));
|
52 |
|
53 |
-
|
54 |
-
|
55 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
: 'opanda',
|
61 |
-
'name' => $this->options['name'] . '__colors',
|
62 |
-
));
|
63 |
|
64 |
-
|
65 |
-
|
66 |
-
|
|
|
|
|
|
|
67 |
|
68 |
-
|
|
|
|
|
69 |
|
70 |
-
|
71 |
-
$dropdownValue = $this->dropdown->getValue();
|
72 |
-
$dOptions = $this->dropdown->getOption('data', array());
|
73 |
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
|
|
|
|
|
|
|
|
|
|
78 |
}
|
79 |
}
|
80 |
}
|
81 |
-
}
|
82 |
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
|
|
101 |
</div>
|
|
|
102 |
</div>
|
103 |
-
|
104 |
-
|
105 |
-
<?php
|
106 |
}
|
107 |
-
}
|
5 |
*
|
6 |
* Main options:
|
7 |
* name => a name of the control
|
8 |
+
* // see FactoryForms400_DropdownControl
|
9 |
* 'dropdown' => array(
|
10 |
* // a callback to return items or an array of items to select
|
11 |
* 'data' => OPanda_ThemeManager::getThemes(OPanda_Items::getCurrentItemName(), 'dropdown'),
|
12 |
* 'default' => 'default',
|
13 |
* 'value' => 'value' // a value to show in the control
|
14 |
* ),
|
15 |
+
* // see FactoryForms400_RadioColorsControl
|
16 |
* 'colors' => array(
|
17 |
* // a callback to return items or an array of items to select
|
18 |
* 'data' => array(
|
25 |
* 'default' => 'default', // a default value of the control if the "value" option is not specified
|
26 |
* ),
|
27 |
*
|
28 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
29 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
30 |
*
|
31 |
* @package factory-forms
|
32 |
* @since 1.0.0
|
33 |
*/
|
|
|
34 |
|
35 |
+
// Exit if accessed directly
|
36 |
+
if( !defined('ABSPATH') ) {
|
37 |
+
exit;
|
38 |
+
}
|
39 |
|
40 |
+
if( !class_exists('Wbcr_FactoryForms400_DropdownAndColorsControl') ) {
|
41 |
+
|
42 |
+
class Wbcr_FactoryForms400_DropdownAndColorsControl extends Wbcr_FactoryForms400_ComplexControl {
|
43 |
|
44 |
+
public $type = 'dropdown-and-colors';
|
|
|
|
|
45 |
|
46 |
+
public function __construct($options, $form, $provider = null)
|
47 |
+
{
|
48 |
+
parent::__construct($options, $form, $provider);
|
|
|
|
|
|
|
49 |
|
50 |
+
if( !isset($options['dropdown']) ) {
|
51 |
+
$options['dropdown'] = array();
|
52 |
+
}
|
53 |
+
|
54 |
+
$options['dropdown'] = array_merge($options['dropdown'], array(
|
55 |
+
'scope' => isset($options['scope'])
|
56 |
+
? $options['scope']
|
57 |
+
: 'opanda',
|
58 |
+
'name' => $this->options['name'] . '__dropdown',
|
59 |
+
));
|
60 |
|
61 |
+
if( !isset($options['colors']) ) {
|
62 |
+
$options['colors'] = array();
|
63 |
+
}
|
|
|
|
|
|
|
64 |
|
65 |
+
$options['colors'] = array_merge($options['colors'], array(
|
66 |
+
'scope' => isset($options['scope'])
|
67 |
+
? $options['scope']
|
68 |
+
: 'opanda',
|
69 |
+
'name' => $this->options['name'] . '__colors',
|
70 |
+
));
|
71 |
|
72 |
+
$this->dropdown = new Wbcr_FactoryForms400_DropdownControl($options['dropdown'], $form, $provider);
|
73 |
+
$this->colors = new Wbcr_FactoryForms400_RadioColorsControl($options['colors'], $form, $provider);
|
74 |
+
$this->inner_controls = array($this->dropdown, $this->colors);
|
75 |
|
76 |
+
$colors = $this->colors->getOption('data');
|
|
|
|
|
77 |
|
78 |
+
if( empty($colors) ) {
|
79 |
+
$dropdown_value = $this->dropdown->getValue();
|
80 |
+
$dOptions = $this->dropdown->getOption('data', array());
|
81 |
+
|
82 |
+
foreach($dOptions as $option) {
|
83 |
+
if( $option['value'] == $dropdown_value && isset($option['data']['colors']) ) {
|
84 |
+
$colors_options = json_decode(htmlspecialchars_decode($option['data']['colors']));
|
85 |
+
$this->colors->setOption('data', $colors_options);
|
86 |
+
}
|
87 |
}
|
88 |
}
|
89 |
}
|
|
|
90 |
|
91 |
+
/**
|
92 |
+
* Shows the html markup of the control.
|
93 |
+
*
|
94 |
+
* @since 1.0.0
|
95 |
+
* @return void
|
96 |
+
*/
|
97 |
+
public function html()
|
98 |
+
{
|
99 |
+
?>
|
100 |
+
<script>
|
101 |
+
</script>
|
102 |
+
<div <?php $this->attrs() ?>>
|
103 |
+
<div class="factory-control-row">
|
104 |
+
<div class="factory-dropdown-wrap">
|
105 |
+
<?php $this->dropdown->render(); ?>
|
106 |
+
</div>
|
107 |
+
<div class="factory-colors-wrap">
|
108 |
+
<?php $this->colors->render(); ?>
|
109 |
+
</div>
|
110 |
</div>
|
111 |
+
<div class="factory-picker-target"></div>
|
112 |
</div>
|
113 |
+
<?php
|
114 |
+
}
|
|
|
115 |
}
|
116 |
+
}
|
libs/factory/forms/controls/dropdown.php
CHANGED
@@ -9,371 +9,380 @@
|
|
9 |
* default => a default value of the control if the "value" option is not specified
|
10 |
* items => a callback to return items or an array of items to select
|
11 |
*
|
12 |
-
* @author
|
13 |
-
* @copyright (c)
|
14 |
*
|
15 |
* @package factory-forms
|
16 |
* @since 1.0.0
|
17 |
*/
|
18 |
-
class FactoryForms329_DropdownControl extends FactoryForms329_Control {
|
19 |
|
20 |
-
|
|
|
|
|
|
|
21 |
|
22 |
-
|
23 |
-
* Returns a set of available items for the list.
|
24 |
-
*
|
25 |
-
* @since 1.0.0
|
26 |
-
* @return mixed[]
|
27 |
-
*/
|
28 |
-
private function getItems()
|
29 |
-
{
|
30 |
-
$data = $this->getOption('data', array());
|
31 |
|
32 |
-
|
33 |
-
if( is_array($data) && count($data) == 2 && gettype($data[0]) == 'object' ) {
|
34 |
|
35 |
-
|
36 |
-
// if the data options is a valid callback for a function
|
37 |
-
} elseif( gettype($data) == 'string' ) {
|
38 |
|
39 |
-
|
40 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
|
42 |
-
|
43 |
-
|
44 |
-
|
|
|
|
|
45 |
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
* @since 1.0.0
|
50 |
-
* @return bool
|
51 |
-
*/
|
52 |
-
protected function isAjax()
|
53 |
-
{
|
54 |
|
55 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
|
57 |
-
|
58 |
-
}
|
59 |
|
60 |
-
|
61 |
-
|
62 |
-
*
|
63 |
-
* @since 1.0.0
|
64 |
-
* @return void
|
65 |
-
*/
|
66 |
-
public function html()
|
67 |
-
{
|
68 |
|
69 |
-
|
70 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
|
72 |
-
|
|
|
73 |
|
74 |
-
|
75 |
-
$eventsStringData = json_encode($eventsData);
|
76 |
-
$nameOnForm = $this->getNameOnForm();
|
77 |
|
78 |
-
$
|
|
|
|
|
79 |
|
80 |
-
|
81 |
-
$value = null;
|
82 |
-
}
|
83 |
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
|
|
|
|
|
|
|
|
|
|
91 |
}
|
|
|
|
|
92 |
}
|
|
|
93 |
|
94 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
95 |
}
|
96 |
-
|
97 |
|
98 |
-
|
99 |
-
|
100 |
-
if( void 0 === window.factory_dropdown_control_events_data ) {
|
101 |
-
window.factory_dropdown_control_events_data = {};
|
102 |
-
}
|
103 |
-
window.factory_dropdown_control_events_data['<?php echo $nameOnForm ?>'] = <?= $eventsStringData ?>;
|
104 |
-
</script>
|
105 |
-
<?php
|
106 |
-
}
|
107 |
-
if( $this->isAjax() ) {
|
108 |
|
109 |
-
|
110 |
-
$ajaxId = 'factory-dropdown-' . rand(1000000, 9999999);
|
111 |
|
112 |
-
|
|
|
|
|
113 |
|
114 |
-
|
115 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
}
|
117 |
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
'selected': '<?php echo $value ?>',
|
126 |
-
'emptyList': '<?php echo $this->getOption('empty', __('The list is empty.', 'factory_forms_329') ) ?>'
|
127 |
-
};
|
128 |
-
</script>
|
129 |
-
<?php
|
130 |
-
|
131 |
-
$this->addHtmlData('ajax', true);
|
132 |
-
$this->addHtmlData('ajax-data-id', $ajaxId);
|
133 |
-
$this->addCssClass('factory-hidden');
|
134 |
}
|
135 |
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
|
|
|
|
144 |
|
145 |
-
|
146 |
-
* Shows the Buttons Dropdown.
|
147 |
-
*
|
148 |
-
* @since 1.0.0
|
149 |
-
* @return void
|
150 |
-
*/
|
151 |
-
protected function buttonsHtml()
|
152 |
-
{
|
153 |
-
$items = $this->getItems();
|
154 |
-
$value = $this->getValue();
|
155 |
-
|
156 |
-
$nameOnForm = $this->getNameOnForm();
|
157 |
-
|
158 |
-
$this->addCssClass('factory-buttons-way');
|
159 |
-
|
160 |
-
?>
|
161 |
-
<div <?php $this->attrs() ?>>
|
162 |
-
<div class="btn-group factory-buttons-group">
|
163 |
-
<?php foreach($items as $item) { ?>
|
164 |
-
<button type="button" class="btn btn-default btn-small factory-<?php echo $item[0] ?> <?php if( $value == $item[0] ) {
|
165 |
-
echo 'active';
|
166 |
-
} ?>" data-value="<?php echo $item[0] ?>"><?php echo $item[1] ?></button>
|
167 |
-
<?php } ?>
|
168 |
-
<input type="hidden" id="<?php echo $nameOnForm ?>" class="factory-result" name="<?php echo $nameOnForm ?>" value="<?php echo $value ?>"/>
|
169 |
-
</div>
|
170 |
-
<div class="factory-hints">
|
171 |
-
<?php foreach($items as $item) { ?>
|
172 |
-
<?php if( isset($item[2]) ) { ?>
|
173 |
-
<div class="factory-hint factory-hint-<?php echo $item[0] ?>" <?php if( $value !== $item[0] ) {
|
174 |
-
echo 'style="display: none;"';
|
175 |
-
} ?>><?php echo $item[2] ?></div>
|
176 |
-
<?php } ?>
|
177 |
-
<?php } ?>
|
178 |
-
</div>
|
179 |
-
</div>
|
180 |
-
<?php
|
181 |
-
}
|
182 |
|
183 |
-
|
184 |
-
* Shows the ddSlick dropbox.
|
185 |
-
*
|
186 |
-
* @since 3.2.8
|
187 |
-
* @return void
|
188 |
-
*/
|
189 |
-
protected function ddslickHtml()
|
190 |
-
{
|
191 |
-
$items = $this->getItems();
|
192 |
-
$value = $this->getValue();
|
193 |
-
|
194 |
-
$nameOnForm = $this->getNameOnForm();
|
195 |
-
|
196 |
-
$this->addCssClass('factory-ddslick-way');
|
197 |
-
$this->addHtmlData('name', $nameOnForm);
|
198 |
-
|
199 |
-
$this->addHtmlData('width', $this->getOption('width', 300));
|
200 |
-
$this->addHtmlData('align', $this->getOption('imagePosition', 'right'));
|
201 |
-
|
202 |
-
?>
|
203 |
-
<div <?php $this->attrs() ?>>
|
204 |
-
<script>
|
205 |
-
//Dropdown plugin data
|
206 |
-
var factory_<?php echo $nameOnForm ?>_data = [
|
207 |
-
<?php foreach ( $items as $item ) { ?>
|
208 |
-
{
|
209 |
-
text: "<?php echo $item['title'] ?>",
|
210 |
-
value: "<?php echo $item['value'] ?>",
|
211 |
-
selected: <?php if ( $value == $item['value'] ) { echo 'true'; } else { echo 'false'; } ?>,
|
212 |
-
description: "<?php echo ( isset( $item['hint'] ) ? $item['hint'] : '' ); ?>",
|
213 |
-
imageSrc: "<?php echo ( isset( $item['image'] ) ? $item['image'] : '' ); ?>",
|
214 |
-
imageHoverSrc: "<?php echo ( isset( $item['hover'] ) ? $item['hover'] : '' ); ?>"
|
215 |
-
},
|
216 |
-
<?php } ?>
|
217 |
-
];
|
218 |
-
</script>
|
219 |
-
<div class="factory-ddslick"></div>
|
220 |
-
<input type="hidden" class="factory-result" id="<?php echo $nameOnForm ?>" name="<?php echo $nameOnForm ?>" value="<?php echo $value ?>"/>
|
221 |
-
</div>
|
222 |
-
<?php
|
223 |
-
}
|
224 |
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
233 |
|
234 |
-
|
235 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
236 |
|
237 |
-
|
238 |
|
239 |
-
|
240 |
-
|
241 |
-
$this->addCssClass('form-control');
|
242 |
|
243 |
-
|
244 |
-
|
245 |
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
255 |
}
|
256 |
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
<option value='' class="factory-empty-option">
|
266 |
-
<?php echo $emptyList ?>
|
267 |
-
</option>
|
268 |
-
|
269 |
-
<?php } else { ?>
|
270 |
-
|
271 |
-
<?php $this->printItems($items, $value) ?>
|
272 |
-
|
273 |
-
<?php } ?>
|
274 |
-
</select>
|
275 |
-
|
276 |
-
<?php if( $hasHints ) { ?>
|
277 |
-
<div class="factory-hints">
|
278 |
-
<?php foreach($items as $item) {
|
279 |
-
|
280 |
-
$hint = isset($item[2])
|
281 |
-
? $item[2]
|
282 |
-
: null;
|
283 |
-
$hint = isset($item['hint'])
|
284 |
-
? $item['hint']
|
285 |
-
: null;
|
286 |
-
$value = isset($item[0])
|
287 |
-
? esc_attr($item[0])
|
288 |
-
: null;
|
289 |
-
$value = isset($item['value'])
|
290 |
-
? esc_attr($item['value'])
|
291 |
-
: null;
|
292 |
-
|
293 |
-
if( !empty($hint) ) { ?>
|
294 |
-
<div style="display: none;" class="factory-hint factory-hint-<?php echo $value ?>" <?php if( $value !== $value ) {
|
295 |
-
echo 'style="display: none;"';
|
296 |
-
} ?>><?php echo $hint ?></div>
|
297 |
-
<?php }
|
298 |
-
} ?>
|
299 |
-
</div>
|
300 |
-
<?php } ?>
|
301 |
-
<?php
|
302 |
-
}
|
303 |
|
304 |
-
|
305 |
-
|
306 |
|
307 |
-
|
308 |
|
309 |
-
$
|
310 |
-
$
|
|
|
311 |
|
312 |
-
|
313 |
-
|
314 |
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
if( 'group' === $type ) {
|
319 |
-
$subitems = isset($item['items'])
|
320 |
-
? $item['items']
|
321 |
-
: array();
|
322 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
323 |
|
324 |
-
|
325 |
-
|
326 |
-
: '';
|
327 |
-
$title = isset($item['title'])
|
328 |
-
? $item['title']
|
329 |
-
: __('- empty -', 'factory_forms_329');
|
330 |
|
331 |
-
|
332 |
-
? $item['data']
|
333 |
-
: null;
|
334 |
-
} else {
|
335 |
|
336 |
-
|
337 |
-
|
338 |
-
: 'option';
|
339 |
-
if( 'group' === $type ) {
|
340 |
-
$subitems = $item[2];
|
341 |
-
}
|
342 |
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
|
347 |
-
|
348 |
-
?>
|
349 |
|
350 |
-
|
351 |
-
<?php $this->printItems($subitems, $selected); ?>
|
352 |
-
</optgroup>
|
353 |
|
354 |
-
|
355 |
-
|
356 |
|
357 |
-
|
358 |
-
|
359 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
360 |
|
361 |
-
|
362 |
-
if( !empty($data) ) {
|
363 |
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
368 |
}
|
|
|
|
|
|
|
369 |
}
|
370 |
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
376 |
}
|
377 |
}
|
378 |
}
|
379 |
-
}
|
9 |
* default => a default value of the control if the "value" option is not specified
|
10 |
* items => a callback to return items or an array of items to select
|
11 |
*
|
12 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
13 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
14 |
*
|
15 |
* @package factory-forms
|
16 |
* @since 1.0.0
|
17 |
*/
|
|
|
18 |
|
19 |
+
// Exit if accessed directly
|
20 |
+
if( !defined('ABSPATH') ) {
|
21 |
+
exit;
|
22 |
+
}
|
23 |
|
24 |
+
if( !class_exists('Wbcr_FactoryForms400_DropdownControl') ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
|
26 |
+
class Wbcr_FactoryForms400_DropdownControl extends Wbcr_FactoryForms400_Control {
|
|
|
27 |
|
28 |
+
public $type = 'dropdown';
|
|
|
|
|
29 |
|
30 |
+
/**
|
31 |
+
* Returns a set of available items for the list.
|
32 |
+
*
|
33 |
+
* @since 1.0.0
|
34 |
+
* @return mixed[]
|
35 |
+
*/
|
36 |
+
private function getItems()
|
37 |
+
{
|
38 |
+
$data = $this->getOption('data', array());
|
39 |
|
40 |
+
// if the data options is a valid callback for an object method
|
41 |
+
if( (is_array($data) && count($data) == 2 && is_object($data[0])) || is_string($data) ) {
|
42 |
+
|
43 |
+
return call_user_func($data);
|
44 |
+
}
|
45 |
|
46 |
+
// if the data options is an array of values
|
47 |
+
return $data;
|
48 |
+
}
|
|
|
|
|
|
|
|
|
|
|
49 |
|
50 |
+
/**
|
51 |
+
* Returns true, if the data should be loaded via ajax.
|
52 |
+
*
|
53 |
+
* @since 1.0.0
|
54 |
+
* @return bool
|
55 |
+
*/
|
56 |
+
protected function isAjax()
|
57 |
+
{
|
58 |
|
59 |
+
$data = $this->getOption('data', array());
|
|
|
60 |
|
61 |
+
return is_array($data) && isset($data['ajax']);
|
62 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
|
64 |
+
/**
|
65 |
+
* Shows the html markup of the control.
|
66 |
+
*
|
67 |
+
* @since 1.0.0
|
68 |
+
* @return void
|
69 |
+
*/
|
70 |
+
public function html()
|
71 |
+
{
|
72 |
|
73 |
+
$way = $this->getOption('way', 'default');
|
74 |
+
$this->addHtmlData('way', $way);
|
75 |
|
76 |
+
$events_data = $this->getOption('events', array());
|
|
|
|
|
77 |
|
78 |
+
if( !empty($events_data) ) {
|
79 |
+
$events_string_data = json_encode($events_data);
|
80 |
+
$name_on_form = $this->getNameOnForm();
|
81 |
|
82 |
+
$value = $this->getValue();
|
|
|
|
|
83 |
|
84 |
+
if( empty($value) || (is_array($value) && empty($value[0])) ) {
|
85 |
+
$value = null;
|
86 |
+
}
|
87 |
+
|
88 |
+
if( !empty($value) && isset($events_data[$value]) && is_array($events_data[$value]) ) {
|
89 |
+
$print_styles = '';
|
90 |
+
foreach($events_data[$value] as $eventName => $selectors) {
|
91 |
+
if( $eventName == 'hide' ) {
|
92 |
+
$print_styles .= $selectors . '{display:none;}';
|
93 |
+
} else if( $eventName == 'show' ) {
|
94 |
+
$print_styles .= $selectors . '{display:block;}';
|
95 |
+
}
|
96 |
}
|
97 |
+
|
98 |
+
echo '<style>' . $print_styles . '</style>';
|
99 |
}
|
100 |
+
?>
|
101 |
|
102 |
+
<script>
|
103 |
+
// Onepress factory dropdown control events
|
104 |
+
if( void 0 === window.factory_dropdown_control_events_data ) {
|
105 |
+
window.factory_dropdown_control_events_data = {};
|
106 |
+
}
|
107 |
+
window.factory_dropdown_control_events_data['<?php echo $name_on_form ?>'] = <?= $events_string_data ?>;
|
108 |
+
</script>
|
109 |
+
<?php
|
110 |
}
|
111 |
+
if( $this->isAjax() ) {
|
112 |
|
113 |
+
$data = $this->getOption('data', array());
|
114 |
+
$ajax_id = 'factory-dropdown-' . rand(1000000, 9999999);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
|
116 |
+
$value = $this->getValue();
|
|
|
117 |
|
118 |
+
if( empty($value) || (is_array($value) && empty($value[0])) ) {
|
119 |
+
$value = null;
|
120 |
+
}
|
121 |
|
122 |
+
?>
|
123 |
+
<div class="factory-ajax-loader <?php echo $ajax_id . '-loader'; ?>"></div>
|
124 |
+
<script>
|
125 |
+
window['<?php echo $ajax_id ?>'] = {
|
126 |
+
'loader': '.<?php echo $ajax_id . '-loader' ?>',
|
127 |
+
'url': '<?php echo $data['url'] ?>',
|
128 |
+
'data': <?php echo json_encode( $data['data'] ) ?>,
|
129 |
+
'selected': '<?php echo $value ?>',
|
130 |
+
'emptyList': '<?php echo $this->getOption('empty', __('The list is empty.', 'wbcr_factory_forms_400') ) ?>'
|
131 |
+
};
|
132 |
+
</script>
|
133 |
+
<?php
|
134 |
+
|
135 |
+
$this->addHtmlData('ajax', true);
|
136 |
+
$this->addHtmlData('ajax-data-id', $ajax_id);
|
137 |
+
$this->addCssClass('factory-hidden');
|
138 |
}
|
139 |
|
140 |
+
if( 'buttons' == $way ) {
|
141 |
+
$this->buttonsHtml();
|
142 |
+
} elseif( 'ddslick' == $way ) {
|
143 |
+
$this->ddslickHtml();
|
144 |
+
} else {
|
145 |
+
$this->defaultHtml();
|
146 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
147 |
}
|
148 |
|
149 |
+
/**
|
150 |
+
* Shows the Buttons Dropdown.
|
151 |
+
*
|
152 |
+
* @since 1.0.0
|
153 |
+
* @return void
|
154 |
+
*/
|
155 |
+
protected function buttonsHtml()
|
156 |
+
{
|
157 |
+
$items = $this->getItems();
|
158 |
+
$value = $this->getValue();
|
159 |
|
160 |
+
$name_on_form = $this->getNameOnForm();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
161 |
|
162 |
+
$this->addCssClass('factory-buttons-way');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
163 |
|
164 |
+
?>
|
165 |
+
<div <?php $this->attrs() ?>>
|
166 |
+
<div class="btn-group factory-buttons-group">
|
167 |
+
<?php foreach($items as $item) { ?>
|
168 |
+
<button type="button" class="btn btn-default btn-small factory-<?php echo $item[0] ?> <?php if( $value == $item[0] ) {
|
169 |
+
echo 'active';
|
170 |
+
} ?>" data-value="<?php echo $item[0] ?>"><?php echo $item[1] ?></button>
|
171 |
+
<?php } ?>
|
172 |
+
<input type="hidden" id="<?php echo $name_on_form ?>" class="factory-result" name="<?php echo $name_on_form ?>" value="<?php echo $value ?>"/>
|
173 |
+
</div>
|
174 |
+
<div class="factory-hints">
|
175 |
+
<?php foreach($items as $item) { ?>
|
176 |
+
<?php if( isset($item[2]) ) { ?>
|
177 |
+
<div class="factory-hint factory-hint-<?php echo $item[0] ?>" <?php if( $value !== $item[0] ) {
|
178 |
+
echo 'style="display: none;"';
|
179 |
+
} ?>><?php echo $item[2] ?></div>
|
180 |
+
<?php } ?>
|
181 |
+
<?php } ?>
|
182 |
+
</div>
|
183 |
+
</div>
|
184 |
+
<?php
|
185 |
+
}
|
186 |
|
187 |
+
/**
|
188 |
+
* Shows the ddSlick dropbox.
|
189 |
+
*
|
190 |
+
* @since 3.2.8
|
191 |
+
* @return void
|
192 |
+
*/
|
193 |
+
protected function ddslickHtml()
|
194 |
+
{
|
195 |
+
$items = $this->getItems();
|
196 |
+
$value = $this->getValue();
|
197 |
|
198 |
+
$name_on_form = $this->getNameOnForm();
|
199 |
|
200 |
+
$this->addCssClass('factory-ddslick-way');
|
201 |
+
$this->addHtmlData('name', $name_on_form);
|
|
|
202 |
|
203 |
+
$this->addHtmlData('width', $this->getOption('width', 300));
|
204 |
+
$this->addHtmlData('align', $this->getOption('imagePosition', 'right'));
|
205 |
|
206 |
+
?>
|
207 |
+
<div <?php $this->attrs() ?>>
|
208 |
+
<script>
|
209 |
+
//Dropdown plugin data
|
210 |
+
var factory_<?php echo $name_on_form ?>_data = [
|
211 |
+
<?php foreach ( $items as $item ) { ?>
|
212 |
+
{
|
213 |
+
text: "<?php echo $item['title'] ?>",
|
214 |
+
value: "<?php echo $item['value'] ?>",
|
215 |
+
selected: <?php if ( $value == $item['value'] ) { echo 'true'; } else { echo 'false'; } ?>,
|
216 |
+
description: "<?php echo ( isset( $item['hint'] ) ? $item['hint'] : '' ); ?>",
|
217 |
+
imageSrc: "<?php echo ( isset( $item['image'] ) ? $item['image'] : '' ); ?>",
|
218 |
+
imageHoverSrc: "<?php echo ( isset( $item['hover'] ) ? $item['hover'] : '' ); ?>"
|
219 |
+
},
|
220 |
+
<?php } ?>
|
221 |
+
];
|
222 |
+
</script>
|
223 |
+
<div class="factory-ddslick"></div>
|
224 |
+
<input type="hidden" class="factory-result" id="<?php echo $name_on_form ?>" name="<?php echo $name_on_form ?>" value="<?php echo $value ?>"/>
|
225 |
+
</div>
|
226 |
+
<?php
|
227 |
}
|
228 |
|
229 |
+
/**
|
230 |
+
* Shows the standart dropdown.
|
231 |
+
*
|
232 |
+
* @since 1.3.1
|
233 |
+
* @return void
|
234 |
+
*/
|
235 |
+
protected function defaultHtml()
|
236 |
+
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
237 |
|
238 |
+
$items = $this->getItems();
|
239 |
+
$value = esc_attr($this->getValue());
|
240 |
|
241 |
+
$name_on_form = $this->getNameOnForm();
|
242 |
|
243 |
+
$this->addHtmlAttr('id', $name_on_form);
|
244 |
+
$this->addHtmlAttr('name', $name_on_form);
|
245 |
+
$this->addCssClass('form-control');
|
246 |
|
247 |
+
$hasGroups = $this->getOption('hasGroups', true);
|
248 |
+
$hasHints = $this->getOption('hasHints', false);
|
249 |
|
250 |
+
foreach($items as $item) {
|
251 |
+
if( !isset($item['hint']) ) {
|
252 |
+
continue;
|
|
|
|
|
|
|
|
|
253 |
}
|
254 |
+
if( empty($item['hint']) ) {
|
255 |
+
continue;
|
256 |
+
}
|
257 |
+
$hasHints = true;
|
258 |
+
break;
|
259 |
+
}
|
260 |
|
261 |
+
$isEmpty = $this->isAjax() || empty($items);
|
262 |
+
$emptyList = $this->getOption('empty', __('- empty -', 'wbcr_factory_forms_400'));
|
|
|
|
|
|
|
|
|
263 |
|
264 |
+
?>
|
|
|
|
|
|
|
265 |
|
266 |
+
<select <?php $this->attrs() ?>>
|
267 |
+
<?php if( $isEmpty ) { ?>
|
|
|
|
|
|
|
|
|
268 |
|
269 |
+
<option value='' class="factory-empty-option">
|
270 |
+
<?php echo $emptyList ?>
|
271 |
+
</option>
|
272 |
|
273 |
+
<?php } else { ?>
|
|
|
274 |
|
275 |
+
<?php $this->printItems($items, $value) ?>
|
|
|
|
|
276 |
|
277 |
+
<?php } ?>
|
278 |
+
</select>
|
279 |
|
280 |
+
<?php if( $hasHints ) { ?>
|
281 |
+
<div class="factory-hints">
|
282 |
+
<?php foreach($items as $item) {
|
283 |
+
|
284 |
+
$hint = isset($item[2])
|
285 |
+
? $item[2]
|
286 |
+
: null;
|
287 |
+
$hint = isset($item['hint'])
|
288 |
+
? $item['hint']
|
289 |
+
: null;
|
290 |
+
$value = isset($item[0])
|
291 |
+
? esc_attr($item[0])
|
292 |
+
: null;
|
293 |
+
$value = isset($item['value'])
|
294 |
+
? esc_attr($item['value'])
|
295 |
+
: null;
|
296 |
+
|
297 |
+
if( !empty($hint) ) { ?>
|
298 |
+
<div style="display: none;" class="factory-hint factory-hint-<?php echo $value ?>" <?php if( $value !== $value ) {
|
299 |
+
echo 'style="display: none;"';
|
300 |
+
} ?>><?php echo $hint ?></div>
|
301 |
+
<?php }
|
302 |
+
} ?>
|
303 |
+
</div>
|
304 |
+
<?php } ?>
|
305 |
+
<?php
|
306 |
+
}
|
307 |
+
|
308 |
+
/**
|
309 |
+
* @param array $items
|
310 |
+
* @param null $selected
|
311 |
+
*/
|
312 |
+
protected function printItems($items, $selected = null)
|
313 |
+
{
|
314 |
|
315 |
+
foreach((array)$items as $item) {
|
|
|
316 |
|
317 |
+
$subitems = array();
|
318 |
+
$data = null;
|
319 |
+
|
320 |
+
// this item is an associative array
|
321 |
+
if( isset($item['type']) || isset($item['value']) ) {
|
322 |
+
|
323 |
+
$type = isset($item['type'])
|
324 |
+
? $item['type']
|
325 |
+
: 'option';
|
326 |
+
if( 'group' === $type ) {
|
327 |
+
$subitems = isset($item['items'])
|
328 |
+
? $item['items']
|
329 |
+
: array();
|
330 |
+
}
|
331 |
+
|
332 |
+
$value = isset($item['value'])
|
333 |
+
? $item['value']
|
334 |
+
: '';
|
335 |
+
$title = isset($item['title'])
|
336 |
+
? $item['title']
|
337 |
+
: __('- empty -', 'wbcr_factory_forms_400');
|
338 |
+
|
339 |
+
$data = isset($item['data'])
|
340 |
+
? $item['data']
|
341 |
+
: null;
|
342 |
+
} else {
|
343 |
+
|
344 |
+
$type = (count($item) == 3 && $item[0] === 'group')
|
345 |
+
? 'group'
|
346 |
+
: 'option';
|
347 |
+
if( 'group' === $type ) {
|
348 |
+
$subitems = $item[2];
|
349 |
}
|
350 |
+
|
351 |
+
$title = esc_html($item[1]);
|
352 |
+
$value = esc_attr($item[0]);
|
353 |
}
|
354 |
|
355 |
+
if( 'group' === $type ) {
|
356 |
+
?>
|
357 |
+
|
358 |
+
<optgroup label="<?php echo $item[1] ?>">
|
359 |
+
<?php $this->printItems($subitems, $selected); ?>
|
360 |
+
</optgroup>
|
361 |
+
|
362 |
+
<?php
|
363 |
+
} else {
|
364 |
+
|
365 |
+
$attr = ($selected == $value)
|
366 |
+
? 'selected="selected"'
|
367 |
+
: '';
|
368 |
+
|
369 |
+
$strData = '';
|
370 |
+
if( !empty($data) ) {
|
371 |
+
|
372 |
+
foreach($data as $key => $values) {
|
373 |
+
$strData = $strData . ' data-' . $key . '="' . (is_array($values)
|
374 |
+
? implode(',', $values)
|
375 |
+
: $values) . '"';
|
376 |
+
}
|
377 |
+
}
|
378 |
+
|
379 |
+
?>
|
380 |
+
<option value='<?php echo $value ?>' <?php echo $attr ?> <?php echo $strData ?>>
|
381 |
+
<?php echo $title ?>
|
382 |
+
</option>
|
383 |
+
<?php
|
384 |
+
}
|
385 |
}
|
386 |
}
|
387 |
}
|
388 |
+
}
|
libs/factory/forms/controls/font.php
CHANGED
@@ -9,247 +9,262 @@
|
|
9 |
* default => a default value of the control if the "value" option is not specified
|
10 |
* items => a callback to return items or an array of items to select
|
11 |
*
|
12 |
-
* @author Alex Kovalev <alex@
|
13 |
-
* @copyright (c)
|
14 |
*
|
15 |
* @package core
|
16 |
* @since 1.0.0
|
17 |
*/
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
public function __construct($options, $form, $provider = null)
|
23 |
-
{
|
24 |
-
parent::__construct($options, $form, $provider);
|
25 |
-
|
26 |
-
$optionFontSize = array(
|
27 |
-
'name' => $this->options['name'] . '__size',
|
28 |
-
'units' => $this->options['units'],
|
29 |
-
'default' => isset($this->options['default'])
|
30 |
-
? $this->options['default']['size']
|
31 |
-
: null
|
32 |
-
);
|
33 |
-
|
34 |
-
$optionFontFamily = array(
|
35 |
-
'name' => $this->options['name'] . '__family',
|
36 |
-
'data' => $this->getFonts(),
|
37 |
-
'default' => isset($this->options['default'])
|
38 |
-
? $this->options['default']['family']
|
39 |
-
: null
|
40 |
-
);
|
41 |
-
|
42 |
-
$optionFontColor = array(
|
43 |
-
'name' => $this->options['name'] . '__color',
|
44 |
-
'default' => isset($this->options['default'])
|
45 |
-
? $this->options['default']['color']
|
46 |
-
: null,
|
47 |
-
'pickerTarget' => '.factory-control-' . $this->options['name'] . ' .factory-picker-target'
|
48 |
-
);
|
49 |
-
|
50 |
-
$this->size = new FactoryForms329_IntegerControl($optionFontSize, $form, $provider);
|
51 |
-
$this->family = new FactoryForms329_DropdownControl($optionFontFamily, $form, $provider);
|
52 |
-
$this->color = new FactoryForms329_ColorControl($optionFontColor, $form, $provider);
|
53 |
-
|
54 |
-
$this->innerControls = array($this->family, $this->size, $this->color);
|
55 |
-
}
|
56 |
|
57 |
-
|
58 |
-
{
|
59 |
|
60 |
-
|
61 |
|
62 |
-
$
|
63 |
-
$fonts = apply_filters('factory_forms_329_fonts-' . $this->options['name'], $fonts);
|
64 |
|
65 |
-
|
66 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
|
68 |
-
|
69 |
-
|
70 |
|
71 |
-
|
|
|
72 |
|
73 |
-
array(
|
74 |
-
|
75 |
-
'
|
76 |
-
__('Sans Serif:', 'factory_forms_329'),
|
77 |
array(
|
78 |
-
|
79 |
-
|
80 |
-
array('"Arial Narrow", Arial, sans-serif', 'Arial Narrow'),
|
81 |
-
array(
|
82 |
-
'"Arial Rounded MT Bold", "Helvetica Rounded", Arial, sans-serif',
|
83 |
-
'Arial Rounded MT Bold'
|
84 |
-
),
|
85 |
-
array(
|
86 |
-
'"Avant Garde", Avantgarde, "Century Gothic", CenturyGothic, "AppleGothic", sans-serif',
|
87 |
-
'Avant Garde'
|
88 |
-
),
|
89 |
-
array('Calibri, Candara, Segoe, "Segoe UI", Optima, Arial, sans-serif', 'Calibri'),
|
90 |
-
array('Candara, Calibri, Segoe, "Segoe UI", Optima, Arial, sans-serif', 'Candara'),
|
91 |
-
array('"Century Gothic", CenturyGothic, AppleGothic, sans-serif', 'Century Gothic'),
|
92 |
-
array(
|
93 |
-
'"Franklin Gothic Medium", "Franklin Gothic", "ITC Franklin Gothic", Arial, sans-serif',
|
94 |
-
'Franklin Gothic Medium'
|
95 |
-
),
|
96 |
-
array('Futura, "Trebuchet MS", Arial, sans-serif', 'Futura'),
|
97 |
-
array('Geneva, Tahoma, Verdana, sans-serif', 'Geneva'),
|
98 |
-
array('"Gill Sans", "Gill Sans MT", Calibri, sans-serif', 'Gill Sans'),
|
99 |
-
array('"Helvetica Neue", Helvetica, Arial, sans-serif', 'Helvetica'),
|
100 |
-
array(
|
101 |
-
'Impact, Haettenschweiler, "Franklin Gothic Bold", Charcoal, "Helvetica Inserat", "Bitstream Vera Sans Bold", "Arial Black", sans serif',
|
102 |
-
'Impact'
|
103 |
-
),
|
104 |
array(
|
105 |
-
'
|
106 |
-
'
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
array(
|
|
|
|
|
129 |
array(
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
|
|
|
|
|
|
|
|
178 |
array(
|
179 |
-
|
180 |
-
|
181 |
-
array(
|
182 |
-
'"Courier New", Courier, "Lucida Sans Typewriter", "Lucida Typewriter", monospace',
|
183 |
-
'Courier New'
|
184 |
-
),
|
185 |
-
array(
|
186 |
-
'"Lucida Console", "Lucida Sans Typewriter", Monaco, "Bitstream Vera Sans Mono", monospace',
|
187 |
-
'Lucida Console'
|
188 |
-
),
|
189 |
array(
|
190 |
-
'"
|
191 |
-
'
|
192 |
-
|
193 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
194 |
)
|
195 |
-
)
|
196 |
|
197 |
-
|
198 |
|
199 |
-
|
200 |
-
|
201 |
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
|
212 |
-
|
213 |
-
|
214 |
|
215 |
-
|
216 |
-
|
217 |
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
|
249 |
-
|
|
|
|
|
250 |
</div>
|
251 |
-
|
252 |
-
|
253 |
-
<?php
|
254 |
}
|
255 |
}
|
|
9 |
* default => a default value of the control if the "value" option is not specified
|
10 |
* items => a callback to return items or an array of items to select
|
11 |
*
|
12 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
13 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
14 |
*
|
15 |
* @package core
|
16 |
* @since 1.0.0
|
17 |
*/
|
18 |
+
// Exit if accessed directly
|
19 |
+
if( !defined('ABSPATH') ) {
|
20 |
+
exit;
|
21 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
|
23 |
+
if( !class_exists('Wbcr_FactoryForms400_FontControl') ) {
|
|
|
24 |
|
25 |
+
class Wbcr_FactoryForms400_FontControl extends Wbcr_FactoryForms400_ComplexControl {
|
26 |
|
27 |
+
public $type = 'font';
|
|
|
28 |
|
29 |
+
public function __construct($options, $form, $provider = null)
|
30 |
+
{
|
31 |
+
parent::__construct($options, $form, $provider);
|
32 |
+
|
33 |
+
$option_font_size = array(
|
34 |
+
'name' => $this->options['name'] . '__size',
|
35 |
+
'units' => $this->options['units'],
|
36 |
+
'default' => isset($this->options['default'])
|
37 |
+
? $this->options['default']['size']
|
38 |
+
: null
|
39 |
+
);
|
40 |
+
|
41 |
+
$option_font_family = array(
|
42 |
+
'name' => $this->options['name'] . '__family',
|
43 |
+
'data' => $this->getFonts(),
|
44 |
+
'default' => isset($this->options['default'])
|
45 |
+
? $this->options['default']['family']
|
46 |
+
: null
|
47 |
+
);
|
48 |
+
|
49 |
+
$optionFontColor = array(
|
50 |
+
'name' => $this->options['name'] . '__color',
|
51 |
+
'default' => isset($this->options['default'])
|
52 |
+
? $this->options['default']['color']
|
53 |
+
: null,
|
54 |
+
'pickerTarget' => '.factory-control-' . $this->options['name'] . ' .factory-picker-target'
|
55 |
+
);
|
56 |
+
|
57 |
+
$this->size = new Wbcr_FactoryForms400_IntegerControl($option_font_size, $form, $provider);
|
58 |
+
$this->family = new Wbcr_FactoryForms400_DropdownControl($option_font_family, $form, $provider);
|
59 |
+
$this->color = new Wbcr_FactoryForms400_ColorControl($optionFontColor, $form, $provider);
|
60 |
+
|
61 |
+
$this->innerControls = array($this->family, $this->size, $this->color);
|
62 |
+
}
|
63 |
+
|
64 |
+
public function getFonts()
|
65 |
+
{
|
66 |
+
|
67 |
+
$fonts = $this->getDefaultFonts();
|
68 |
+
|
69 |
+
$fonts = apply_filters('wbcr_factory_forms_400_fonts', $fonts);
|
70 |
+
$fonts = apply_filters('wbcr_factory_forms_400_fonts-' . $this->options['name'], $fonts);
|
71 |
|
72 |
+
return $fonts;
|
73 |
+
}
|
74 |
|
75 |
+
public function getDefaultFonts()
|
76 |
+
{
|
77 |
|
78 |
+
$fonts = array(
|
79 |
+
|
80 |
+
array('inherit', __('(use default website font)', 'wbcr_factory_forms_400')),
|
|
|
81 |
array(
|
82 |
+
'group',
|
83 |
+
__('Sans Serif:', 'wbcr_factory_forms_400'),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
array(
|
85 |
+
array('Arial, "Helvetica Neue", Helvetica, sans-serif', 'Arial'),
|
86 |
+
array('"Arial Black", "Arial Bold", Gadget, sans-serif', 'Arial Black'),
|
87 |
+
array('"Arial Narrow", Arial, sans-serif', 'Arial Narrow'),
|
88 |
+
array(
|
89 |
+
'"Arial Rounded MT Bold", "Helvetica Rounded", Arial, sans-serif',
|
90 |
+
'Arial Rounded MT Bold'
|
91 |
+
),
|
92 |
+
array(
|
93 |
+
'"Avant Garde", Avantgarde, "Century Gothic", CenturyGothic, "AppleGothic", sans-serif',
|
94 |
+
'Avant Garde'
|
95 |
+
),
|
96 |
+
array('Calibri, Candara, Segoe, "Segoe UI", Optima, Arial, sans-serif', 'Calibri'),
|
97 |
+
array('Candara, Calibri, Segoe, "Segoe UI", Optima, Arial, sans-serif', 'Candara'),
|
98 |
+
array('"Century Gothic", CenturyGothic, AppleGothic, sans-serif', 'Century Gothic'),
|
99 |
+
array(
|
100 |
+
'"Franklin Gothic Medium", "Franklin Gothic", "ITC Franklin Gothic", Arial, sans-serif',
|
101 |
+
'Franklin Gothic Medium'
|
102 |
+
),
|
103 |
+
array('Futura, "Trebuchet MS", Arial, sans-serif', 'Futura'),
|
104 |
+
array('Geneva, Tahoma, Verdana, sans-serif', 'Geneva'),
|
105 |
+
array('"Gill Sans", "Gill Sans MT", Calibri, sans-serif', 'Gill Sans'),
|
106 |
+
array('"Helvetica Neue", Helvetica, Arial, sans-serif', 'Helvetica'),
|
107 |
+
array(
|
108 |
+
'Impact, Haettenschweiler, "Franklin Gothic Bold", Charcoal, "Helvetica Inserat", "Bitstream Vera Sans Bold", "Arial Black", sans serif',
|
109 |
+
'Impact'
|
110 |
+
),
|
111 |
+
array(
|
112 |
+
'"Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Verdana, sans-serif',
|
113 |
+
'Lucida Grande'
|
114 |
+
),
|
115 |
+
array('Optima, Segoe, "Segoe UI", Candara, Calibri, Arial, sans-serif', 'Optima'),
|
116 |
+
array(
|
117 |
+
'"Segoe UI", Frutiger, "Frutiger Linotype", "Dejavu Sans", "Helvetica Neue", Arial, sans-serif',
|
118 |
+
'Segoe UI'
|
119 |
+
),
|
120 |
+
array(
|
121 |
+
'Montserrat, "Segoe UI", "Helvetica Neue", Arial, sans-serif',
|
122 |
+
'Montserrat'
|
123 |
+
),
|
124 |
+
array('Tahoma, Verdana, Segoe, sans-serif', 'Tahoma'),
|
125 |
+
array(
|
126 |
+
'"Trebuchet MS", "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Tahoma, sans-serif',
|
127 |
+
'Trebuchet MS'
|
128 |
+
),
|
129 |
+
array('Verdana, Geneva, sans-serif', 'Verdana'),
|
130 |
+
)
|
131 |
+
),
|
132 |
array(
|
133 |
+
'group',
|
134 |
+
__('Serif:', 'wbcr_factory_forms_400'),
|
135 |
array(
|
136 |
+
array(
|
137 |
+
'Baskerville, "Baskerville Old Face", "Hoefler Text", Garamond, "Times New Roman", serif',
|
138 |
+
'Baskerville'
|
139 |
+
),
|
140 |
+
array('"Big Caslon", "Book Antiqua", "Palatino Linotype", Georgia, serif', 'Big Caslon'),
|
141 |
+
array(
|
142 |
+
'"Bodoni MT", Didot, "Didot LT STD", "Hoefler Text", Garamond, "Times New Roman", serif',
|
143 |
+
'Bodoni MT'
|
144 |
+
),
|
145 |
+
array(
|
146 |
+
'"Book Antiqua", Palatino, "Palatino Linotype", "Palatino LT STD", Georgia, serif',
|
147 |
+
'Book Antiqua'
|
148 |
+
),
|
149 |
+
array(
|
150 |
+
'"Calisto MT", "Bookman Old Style", Bookman, "Goudy Old Style", Garamond, "Hoefler Text", "Bitstream Charter", Georgia, serif',
|
151 |
+
'Calisto MT'
|
152 |
+
),
|
153 |
+
array('Cambria, Georgia, serif', 'Cambria'),
|
154 |
+
array('Didot, "Didot LT STD", "Hoefler Text", Garamond, "Times New Roman", serif', 'Didot'),
|
155 |
+
array(
|
156 |
+
'Garamond, Baskerville, "Baskerville Old Face", "Hoefler Text", "Times New Roman", serif',
|
157 |
+
'Garamond'
|
158 |
+
),
|
159 |
+
array('Georgia, Times, "Times New Roman", serif', 'Georgia'),
|
160 |
+
array(
|
161 |
+
'"Goudy Old Style", Garamond, "Big Caslon", "Times New Roman", serif',
|
162 |
+
'Goudy Old Style'
|
163 |
+
),
|
164 |
+
array(
|
165 |
+
'"Hoefler Text", "Baskerville old face", Garamond, "Times New Roman", serif',
|
166 |
+
'Hoefler Text'
|
167 |
+
),
|
168 |
+
array('"Lucida Bright", Georgia, serif', 'Lucida Bright'),
|
169 |
+
array(
|
170 |
+
'Palatino, "Palatino Linotype", "Palatino LT STD", "Book Antiqua", Georgia, serif',
|
171 |
+
'Palatino'
|
172 |
+
),
|
173 |
+
array(
|
174 |
+
'Perpetua, Baskerville, "Big Caslon", "Palatino Linotype", Palatino, "URW Palladio L", "Nimbus Roman No9 L", serif',
|
175 |
+
'Perpetua'
|
176 |
+
),
|
177 |
+
array(
|
178 |
+
'Rockwell, "Courier Bold", Courier, Georgia, Times, "Times New Roman", serif',
|
179 |
+
'Rockwell'
|
180 |
+
),
|
181 |
+
array('"Rockwell Extra Bold", "Rockwell Bold", monospace', 'Rockwell Extra Bold'),
|
182 |
+
array(
|
183 |
+
'TimesNewRoman, "Times New Roman", Times, Baskerville, Georgia, serif',
|
184 |
+
'Times New Roman'
|
185 |
+
)
|
186 |
+
)
|
187 |
+
),
|
188 |
array(
|
189 |
+
'group',
|
190 |
+
__('Monospaced:', 'wbcr_factory_forms_400'),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
191 |
array(
|
192 |
+
array('"Andale Mono", AndaleMono, monospace', 'Andale Mono'),
|
193 |
+
array('Consolas, monaco, monospace', 'Consolas'),
|
194 |
+
array(
|
195 |
+
'"Courier New", Courier, "Lucida Sans Typewriter", "Lucida Typewriter", monospace',
|
196 |
+
'Courier New'
|
197 |
+
),
|
198 |
+
array(
|
199 |
+
'"Lucida Console", "Lucida Sans Typewriter", Monaco, "Bitstream Vera Sans Mono", monospace',
|
200 |
+
'Lucida Console'
|
201 |
+
),
|
202 |
+
array(
|
203 |
+
'"Lucida Sans Typewriter", "Lucida Console", Monaco, "Bitstream Vera Sans Mono", monospace',
|
204 |
+
'Lucida Sans Typewriter'
|
205 |
+
),
|
206 |
+
array('Monaco, Consolas, "Lucida Console", monospace', 'Monaco')
|
207 |
+
)
|
208 |
)
|
|
|
209 |
|
210 |
+
);
|
211 |
|
212 |
+
return $fonts;
|
213 |
+
}
|
214 |
|
215 |
+
/**
|
216 |
+
* Removes \" in the font family value.
|
217 |
+
*
|
218 |
+
* @since 3.1.0
|
219 |
+
* @return mixed[]
|
220 |
+
*/
|
221 |
+
public function getValuesToSave()
|
222 |
+
{
|
223 |
+
$values = parent::getValuesToSave();
|
224 |
|
225 |
+
$family_key = $this->options['name'] . '__family';
|
226 |
+
$values[$family_key] = sanitize_text_field($values[$family_key]);
|
227 |
|
228 |
+
return $values;
|
229 |
+
}
|
230 |
|
231 |
+
public function beforeControlsHtml()
|
232 |
+
{
|
233 |
+
}
|
234 |
|
235 |
+
public function afterControlsHtml()
|
236 |
+
{
|
237 |
+
}
|
238 |
|
239 |
+
/**
|
240 |
+
* Shows the html markup of the control.
|
241 |
+
*
|
242 |
+
* @since 1.0.0
|
243 |
+
* @return void
|
244 |
+
*/
|
245 |
+
public function html()
|
246 |
+
{
|
247 |
+
?>
|
248 |
+
<div <?php $this->attrs() ?>>
|
249 |
+
<div class="factory-control-row">
|
250 |
+
<?php $this->beforeControlsHtml() ?>
|
251 |
+
|
252 |
+
<div class="factory-family-wrap">
|
253 |
+
<?php $this->family->html() ?>
|
254 |
+
</div>
|
255 |
+
<div class="factory-size-wrap">
|
256 |
+
<?php $this->size->html() ?>
|
257 |
+
</div>
|
258 |
+
<div class="factory-color-wrap">
|
259 |
+
<?php $this->color->html() ?>
|
260 |
+
</div>
|
261 |
|
262 |
+
<?php $this->afterControlsHtml() ?>
|
263 |
+
</div>
|
264 |
+
<div class="factory-picker-target"></div>
|
265 |
</div>
|
266 |
+
<?php
|
267 |
+
}
|
|
|
268 |
}
|
269 |
}
|
270 |
+
|
libs/factory/forms/controls/google-font.php
CHANGED
@@ -1,123 +1,152 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
class
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Dropdown List Control
|
5 |
+
*
|
6 |
+
* Main options:
|
7 |
+
* name => a name of the control
|
8 |
+
* value => a value to show in the control
|
9 |
+
* default => a default value of the control if the "value" option is not specified
|
10 |
+
* items => a callback to return items or an array of items to select
|
11 |
+
*
|
12 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
13 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
14 |
+
*
|
15 |
+
* @package core
|
16 |
+
* @since 1.0.0
|
17 |
+
*/
|
18 |
+
class Wbcr_FactoryForms400_GoogleFontControl extends Wbcr_FactoryForms400_FontControl {
|
19 |
+
|
20 |
+
public $type = 'google-font';
|
21 |
+
const APIKEY = 'AIzaSyB-3vazYv7Q-5QZA04bmSKFrWcw_VhC40w';
|
22 |
+
|
23 |
+
public function __construct($options, $form, $provider = null)
|
24 |
+
{
|
25 |
+
parent::__construct($options, $form, $provider);
|
26 |
+
$this->addCssClass('factory-font');
|
27 |
+
|
28 |
+
$option_google_font_data = array(
|
29 |
+
'name' => $this->options['name'] . '__google_font_data',
|
30 |
+
'cssClass' => 'factory-google-font-data'
|
31 |
+
);
|
32 |
+
|
33 |
+
$this->google_font_data = new Wbcr_FactoryForms400_HiddenControl($option_google_font_data, $form, $provider);
|
34 |
+
$this->inner_controls[] = $this->google_font_data;
|
35 |
+
}
|
36 |
+
|
37 |
+
/**
|
38 |
+
* @return array|mixed
|
39 |
+
*/
|
40 |
+
public function getDefaultFonts()
|
41 |
+
{
|
42 |
+
|
43 |
+
$cache_fonts = get_transient('wbcr_factory_google_fonts');
|
44 |
+
|
45 |
+
if( !empty($cache_fonts) ) {
|
46 |
+
return $cache_fonts;
|
47 |
+
}
|
48 |
+
|
49 |
+
$google_fonts = $this->getGoogleFonts();
|
50 |
+
|
51 |
+
$fonts = array(
|
52 |
+
array('inherit', __('(use default website font)', 'wbcr_factory_forms_400'))
|
53 |
+
);
|
54 |
+
|
55 |
+
$fontsCommon = array(
|
56 |
+
'group',
|
57 |
+
__('Standard:', 'wbcr_factory_forms_400'),
|
58 |
+
array(
|
59 |
+
|
60 |
+
array('Arial, "Helvetica Neue", Helvetica, sans-serif', 'Arial'),
|
61 |
+
array('"Helvetica Neue", Helvetica, Arial, sans-serif', 'Helvetica'),
|
62 |
+
array('Tahoma, Verdana, Segoe, sans-serif', 'Tahoma'),
|
63 |
+
array('Verdana, Geneva, sans-serif', 'Verdana'),
|
64 |
+
|
65 |
+
)
|
66 |
+
);
|
67 |
+
|
68 |
+
$fontsGoogleFonts = array('group', __('Google Fonts:', 'wbcr_factory_forms_400'), array());
|
69 |
+
|
70 |
+
foreach($google_fonts->items as $item) {
|
71 |
+
|
72 |
+
$alt_font = $item->category;
|
73 |
+
if( in_array($alt_font, array('handwriting', 'display')) ) {
|
74 |
+
$alt_font = 'serif';
|
75 |
+
}
|
76 |
+
|
77 |
+
$listItem = array(
|
78 |
+
'title' => $item->family,
|
79 |
+
'value' => $item->family . ', ' . $item->category,
|
80 |
+
'hint' => '<em>Google Font</em>',
|
81 |
+
'data' => array(
|
82 |
+
'google-font' => true,
|
83 |
+
'family' => $item->family,
|
84 |
+
'variants' => $item->variants,
|
85 |
+
'subsets' => $item->subsets
|
86 |
+
)
|
87 |
+
);
|
88 |
+
|
89 |
+
$fontsGoogleFonts[2][] = $listItem;
|
90 |
+
}
|
91 |
+
|
92 |
+
$fonts[] = $fontsCommon;
|
93 |
+
$fonts[] = $fontsGoogleFonts;
|
94 |
+
|
95 |
+
set_transient('wbcr_factory_google_fonts', $fonts, 60 * 60 * 6);
|
96 |
+
|
97 |
+
return $fonts;
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* @return array|mixed|object
|
102 |
+
*/
|
103 |
+
protected function getGoogleFonts()
|
104 |
+
{
|
105 |
+
|
106 |
+
$body = get_transient('wbcr_factory_google_fonts_raw');
|
107 |
+
if( !empty($body) ) {
|
108 |
+
return $body;
|
109 |
+
}
|
110 |
+
|
111 |
+
$response = wp_remote_get(sprintf('https://www.googleapis.com/webfonts/v1/webfonts?key=%s', self::APIKEY));
|
112 |
+
|
113 |
+
$this->error = false;
|
114 |
+
$this->defailed_error = false;
|
115 |
+
|
116 |
+
if( is_wp_error($response) ) {
|
117 |
+
|
118 |
+
$this->error = __('Unable to retrieve the list of Google Fonts.', 'wbcr_factory_forms_400');
|
119 |
+
$this->defailed_error = $response->get_error_message();
|
120 |
+
|
121 |
+
return $body;
|
122 |
+
}
|
123 |
+
|
124 |
+
if( !isset($response['body']) ) {
|
125 |
+
|
126 |
+
$this->error = __('Invalide response from the Google Fonts API.', 'wbcr_factory_forms_400');
|
127 |
+
$this->defailed_error = $response['body'];
|
128 |
+
|
129 |
+
return $body;
|
130 |
+
}
|
131 |
+
|
132 |
+
$body = json_decode($response['body']);
|
133 |
+
|
134 |
+
if( empty($body->items) ) {
|
135 |
+
|
136 |
+
$this->error = __('Unexpected error. The list of Google Fonts are empty.', 'wbcr_factory_forms_400');
|
137 |
+
|
138 |
+
return $body;
|
139 |
+
}
|
140 |
+
|
141 |
+
set_transient('wbcr_factory_google_fonts_raw', $body, 60 * 60 * 6);
|
142 |
+
|
143 |
+
return $body;
|
144 |
+
}
|
145 |
+
|
146 |
+
public function afterControlsHtml()
|
147 |
+
{
|
148 |
+
?>
|
149 |
+
<?php $this->google_font_data->html() ?>
|
150 |
+
<?php
|
151 |
+
}
|
152 |
+
}
|
libs/factory/forms/controls/gradient.php
CHANGED
@@ -14,82 +14,90 @@
|
|
14 |
* default => a default value of the control if the "value" option is not specified
|
15 |
*
|
16 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
17 |
-
* @copyright (c)
|
18 |
*
|
19 |
* @package core
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
-
class FactoryForms329_GradientControl extends FactoryForms329_Control {
|
23 |
|
24 |
-
|
|
|
|
|
|
|
25 |
|
26 |
-
|
27 |
-
|
28 |
-
*
|
29 |
-
* @since 1.0.0
|
30 |
-
* @return void
|
31 |
-
*/
|
32 |
-
public function html()
|
33 |
-
{
|
34 |
-
$name = $this->getNameOnForm();
|
35 |
-
$value = esc_attr($this->getValue());
|
36 |
|
37 |
-
|
38 |
|
39 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
|
41 |
-
$
|
42 |
|
43 |
-
|
44 |
-
$points .= $splitVlaues . ',';
|
45 |
-
}
|
46 |
|
47 |
-
|
48 |
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
if( !window.factory.res ) {
|
60 |
-
window.factory.res = {};
|
61 |
}
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
<
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
<
|
82 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
83 |
|
84 |
-
|
85 |
-
|
|
|
86 |
</div>
|
|
|
87 |
</div>
|
88 |
-
<div class="factory-color-picker"></div>
|
89 |
</div>
|
|
|
90 |
</div>
|
91 |
-
|
92 |
-
|
93 |
-
<?php
|
94 |
}
|
95 |
-
}
|
14 |
* default => a default value of the control if the "value" option is not specified
|
15 |
*
|
16 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
17 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
18 |
*
|
19 |
* @package core
|
20 |
* @since 1.0.0
|
21 |
*/
|
|
|
22 |
|
23 |
+
// Exit if accessed directly
|
24 |
+
if( !defined('ABSPATH') ) {
|
25 |
+
exit;
|
26 |
+
}
|
27 |
|
28 |
+
if( !class_exists('Wbcr_FactoryForms400_GradientControl') ) {
|
29 |
+
class Wbcr_FactoryForms400_GradientControl extends Wbcr_FactoryForms400_Control {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
|
31 |
+
public $type = 'gradient';
|
32 |
|
33 |
+
/**
|
34 |
+
* Shows the html markup of the control.
|
35 |
+
*
|
36 |
+
* @since 1.0.0
|
37 |
+
* @return void
|
38 |
+
*/
|
39 |
+
public function html()
|
40 |
+
{
|
41 |
+
$name = $this->getNameOnForm();
|
42 |
+
$value = esc_attr($this->getValue());
|
43 |
|
44 |
+
if( !empty($value) ) {
|
45 |
|
46 |
+
$values = json_decode(stripcslashes(htmlspecialchars_decode($value)));
|
|
|
|
|
47 |
|
48 |
+
$points = '';
|
49 |
|
50 |
+
foreach($values->color_points as $split_values) {
|
51 |
+
$points .= $split_values . ',';
|
52 |
+
}
|
53 |
+
|
54 |
+
$points = rtrim($points, ',');
|
55 |
+
|
56 |
+
$this->addHtmlData('points', $points);
|
57 |
+
$this->addHtmlData('directions', $values->filldirection);
|
58 |
+
} else {
|
59 |
+
$this->addHtmlData('directions', 'top');
|
|
|
|
|
60 |
}
|
61 |
+
?>
|
62 |
+
<script>
|
63 |
+
if( !window.factory ) {
|
64 |
+
window.factory = {};
|
65 |
+
}
|
66 |
+
if( !window.factory.res ) {
|
67 |
+
window.factory.res = {};
|
68 |
+
}
|
69 |
+
factory.res.resVertical = '<?php _e( 'vertical', 'wbcr_factory_forms_400' ) ?>';
|
70 |
+
factory.res.resHorizontal = '<?php _e( 'horizontal', 'wbcr_factory_forms_400' ) ?>';
|
71 |
+
</script>
|
72 |
+
<div <?php $this->attrs() ?>>
|
73 |
+
<div class="factory-gradient-picker">
|
74 |
+
<ul class="gradientPicker-pallets">
|
75 |
+
<li class="factory-preset-gradient factory-primary-gradient" data-primary="#1bbc9d" data-secondary="#16a086"></li>
|
76 |
+
<li class="factory-preset-gradient factory-primary-gradient" data-primary="#2fcc71" data-secondary="#27ae61"></li>
|
77 |
+
<li class="factory-preset-gradient factory-primary-gradient" data-primary="#3598dc" data-secondary="#2a80b9"></li>
|
78 |
+
<li class="factory-preset-gradient factory-primary-gradient" data-primary="#9c59b8" data-secondary="#8f44ad"></li>
|
79 |
+
<li class="factory-preset-gradient factory-primary-gradient" data-primary="#34495e" data-secondary="#2d3e50"></li>
|
80 |
+
<li class="factory-preset-gradient factory-primary-gradient" data-primary="#f1c40f" data-secondary="#f49c14"></li>
|
81 |
+
<li class="factory-preset-gradient factory-primary-gradient" data-primary="#e84c3d" data-secondary="#c1392b"></li>
|
82 |
+
<li class="factory-preset-gradient factory-primary-gradient" data-primary="#ecf0f1" data-secondary="#bec3c7"></li>
|
83 |
+
</ul>
|
84 |
+
<canvas class='gradientPicker-preview'></canvas>
|
85 |
+
<div class='factory-points'></div>
|
86 |
+
<div class='factory-color-picker-container'>
|
87 |
+
<div class="factory-slider-container">
|
88 |
+
<div class="factory-slider">
|
89 |
+
<input type="text" class="factory-input-text factory-color-hex"/>
|
90 |
|
91 |
+
<div class="factory-bar"></div>
|
92 |
+
<div class="factory-visible-value">100%</div>
|
93 |
+
</div>
|
94 |
</div>
|
95 |
+
<div class="factory-color-picker"></div>
|
96 |
</div>
|
|
|
97 |
</div>
|
98 |
+
<input type="hidden" id="<?php echo $name; ?>" class="factory-result" name="<?php echo $name; ?>" value="<?php echo $value; ?>">
|
99 |
</div>
|
100 |
+
<?php
|
101 |
+
}
|
|
|
102 |
}
|
103 |
+
}
|
libs/factory/forms/controls/hidden.php
CHANGED
@@ -8,34 +8,43 @@
|
|
8 |
* value => a value to show in the control
|
9 |
* default => a default value of the control if the "value" option is not specified
|
10 |
*
|
11 |
-
* @author
|
12 |
-
* @copyright (c)
|
13 |
*
|
14 |
* @package factory-forms
|
15 |
* @since 1.0.0
|
16 |
*/
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
}
|
41 |
}
|
8 |
* value => a value to show in the control
|
9 |
* default => a default value of the control if the "value" option is not specified
|
10 |
*
|
11 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
12 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
13 |
*
|
14 |
* @package factory-forms
|
15 |
* @since 1.0.0
|
16 |
*/
|
17 |
+
|
18 |
+
// Exit if accessed directly
|
19 |
+
if( !defined('ABSPATH') ) {
|
20 |
+
exit;
|
21 |
+
}
|
22 |
+
|
23 |
+
if( !class_exists('Wbcr_FactoryForms400_HiddenControl') ) {
|
24 |
+
|
25 |
+
class Wbcr_FactoryForms400_HiddenControl extends Wbcr_FactoryForms400_Control {
|
26 |
+
|
27 |
+
public $type = 'hidden';
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Shows the html markup of the control.
|
31 |
+
*
|
32 |
+
* @since 1.0.0
|
33 |
+
* @return void
|
34 |
+
*/
|
35 |
+
public function html()
|
36 |
+
{
|
37 |
+
$value = esc_attr($this->getValue());
|
38 |
+
$name_on_form = $this->getNameOnForm();
|
39 |
+
|
40 |
+
$this->addHtmlAttr('id', $name_on_form);
|
41 |
+
$this->addHtmlAttr('name', $name_on_form);
|
42 |
+
$this->addHtmlAttr('value', $value);
|
43 |
+
$this->addHtmlAttr('type', 'hidden');
|
44 |
+
|
45 |
+
?>
|
46 |
+
<input <?php $this->attrs() ?>/>
|
47 |
+
<?php
|
48 |
+
}
|
49 |
}
|
50 |
}
|
libs/factory/forms/controls/holders/accordion-item.php
CHANGED
@@ -1,53 +1,63 @@
|
|
1 |
<?php
|
2 |
-
/**
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
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 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* The file contains the class of Tab Control Holder.
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
7 |
+
*
|
8 |
+
* @package core
|
9 |
+
* @since 1.0.0
|
10 |
+
*/
|
11 |
|
12 |
+
// Exit if accessed directly
|
13 |
+
if( !defined('ABSPATH') ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
|
17 |
+
if( !class_exists('Wbcr_FactoryForms400_AccordionItemHolder') ) {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Tab Control Holder
|
21 |
+
*
|
22 |
+
* @since 1.0.0
|
23 |
+
*/
|
24 |
+
class Wbcr_FactoryForms400_AccordionItemHolder extends Wbcr_FactoryForms400_Holder {
|
25 |
+
|
26 |
+
/**
|
27 |
+
* A holder type.
|
28 |
+
*
|
29 |
+
* @since 1.0.0
|
30 |
+
* @var string
|
31 |
+
*/
|
32 |
+
public $type = 'accordion-item';
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Here we should render a beginning html of the tab.
|
36 |
+
*
|
37 |
+
* @since 1.0.0
|
38 |
+
* @return void
|
39 |
+
*/
|
40 |
+
public function beforeRendering()
|
41 |
+
{
|
42 |
+
?>
|
43 |
+
<h3><?php echo $this->options['title']; ?></h3>
|
44 |
+
<div class="factory-accordion-item">
|
45 |
+
<div class="inner-factory-accordion-item">
|
46 |
+
<?php
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Here we should render an end html of the tab.
|
51 |
+
*
|
52 |
+
* @since 1.0.0
|
53 |
+
* @return void
|
54 |
+
*/
|
55 |
+
public function afterRendering()
|
56 |
+
{
|
57 |
+
?>
|
58 |
+
</div>
|
59 |
+
</div>
|
60 |
+
<?php
|
61 |
+
}
|
62 |
+
}
|
63 |
+
}
|
libs/factory/forms/controls/holders/accordion.php
CHANGED
@@ -1,50 +1,58 @@
|
|
1 |
<?php
|
2 |
-
/**
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
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 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* The file contains the class of Tab Control Holder.
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
7 |
+
*
|
8 |
+
* @package core
|
9 |
+
* @since 1.0.0
|
10 |
+
*/
|
11 |
|
12 |
+
// Exit if accessed directly
|
13 |
+
if( !defined('ABSPATH') ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
if( !class_exists('Wbcr_FactoryForms400_AccordionHolder') ) {
|
17 |
+
/**
|
18 |
+
* Tab Control Holder
|
19 |
+
*
|
20 |
+
* @since 1.0.0
|
21 |
+
*/
|
22 |
+
class Wbcr_FactoryForms400_AccordionHolder extends Wbcr_FactoryForms400_Holder {
|
23 |
+
|
24 |
+
/**
|
25 |
+
* A holder type.
|
26 |
+
*
|
27 |
+
* @since 1.0.0
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
public $type = 'accordion';
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Here we should render a beginning html of the tab.
|
34 |
+
*
|
35 |
+
* @since 1.0.0
|
36 |
+
* @return void
|
37 |
+
*/
|
38 |
+
public function beforeRendering()
|
39 |
+
{
|
40 |
+
?>
|
41 |
+
<div <?php $this->attrs() ?>>
|
42 |
+
<?php
|
43 |
+
}
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Here we should render an end html of the tab.
|
47 |
+
*
|
48 |
+
* @since 1.0.0
|
49 |
+
* @return void
|
50 |
+
*/
|
51 |
+
public function afterRendering()
|
52 |
+
{
|
53 |
+
?>
|
54 |
+
</div>
|
55 |
+
<?php
|
56 |
+
}
|
57 |
+
}
|
58 |
+
}
|
libs/factory/forms/controls/holders/columns.php
CHANGED
@@ -1,85 +1,99 @@
|
|
1 |
<?php
|
2 |
-
/**
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
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 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* The file contains the class of Columns Holder.
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
7 |
+
*
|
8 |
+
* @package factory-forms
|
9 |
+
* @since 1.0.0
|
10 |
+
*/
|
11 |
+
|
12 |
+
// Exit if accessed directly
|
13 |
+
if( !defined('ABSPATH') ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
|
17 |
+
if( !class_exists('Wbcr_FactoryForms400_ColumnsHolder') ) {
|
18 |
+
/**
|
19 |
+
* Columns Holder
|
20 |
+
*
|
21 |
+
* @since 1.0.0
|
22 |
+
*/
|
23 |
+
class Wbcr_FactoryForms400_ColumnsHolder extends Wbcr_FactoryForms400_Holder {
|
24 |
+
|
25 |
+
/**
|
26 |
+
* A holder type.
|
27 |
+
*
|
28 |
+
* @since 1.0.0
|
29 |
+
* @var string
|
30 |
+
*/
|
31 |
+
public $type = 'columns';
|
32 |
+
|
33 |
+
public function __construct($options, $form)
|
34 |
+
{
|
35 |
+
$columns_items = array();
|
36 |
+
|
37 |
+
// calculates the number of columns
|
38 |
+
|
39 |
+
$this->columns_count = 0;
|
40 |
+
|
41 |
+
foreach($options['items'] as $item) {
|
42 |
+
$i = (!isset($item['column'])
|
43 |
+
? 1
|
44 |
+
: intval($item['column'])) - 1;
|
45 |
+
$columns_items[$i][] = $item;
|
46 |
+
|
47 |
+
if( $i > $this->columns_count ) {
|
48 |
+
$this->columns_count = $i + 1;
|
49 |
+
}
|
50 |
+
}
|
51 |
+
// calculates the number of rows
|
52 |
+
|
53 |
+
$this->rows_count = 0;
|
54 |
+
foreach($columns_items as $items) {
|
55 |
+
$count = count($items);
|
56 |
+
if( $count > $this->rows_count ) {
|
57 |
+
$this->rows_count = $count;
|
58 |
+
}
|
59 |
+
}
|
60 |
+
|
61 |
+
// creates elements
|
62 |
+
|
63 |
+
parent::__construct($options, $form);
|
64 |
+
|
65 |
+
// groups the created by columns
|
66 |
+
|
67 |
+
$element_index = 0;
|
68 |
+
$this->columns = array();
|
69 |
+
|
70 |
+
foreach($columns_items as $column_index => $columnItems) {
|
71 |
+
$count = count($columnItems);
|
72 |
+
for($k = 0; $k < $count; $k++) {
|
73 |
+
$this->columns[$column_index][] = $this->elements[$element_index];
|
74 |
+
$element_index++;
|
75 |
+
}
|
76 |
+
}
|
77 |
+
}
|
78 |
+
|
79 |
+
|
80 |
+
public function render()
|
81 |
+
{
|
82 |
+
$this->beforeRendering();
|
83 |
+
|
84 |
+
for($n = 0; $n < $this->rows_count; $n++) {
|
85 |
+
|
86 |
+
$this->form->layout->startRow($n, $this->rows_count);
|
87 |
+
|
88 |
+
for($i = 0; $i < $this->columns_count; $i++) {
|
89 |
+
$control = $this->columns[$i][$n];
|
90 |
+
$this->form->layout->startColumn($control, $i, $this->columns_count);
|
91 |
+
$this->columns[$i][$n]->render();
|
92 |
+
$this->form->layout->endColumn($control, $i, $this->columns_count);
|
93 |
+
}
|
94 |
+
|
95 |
+
$this->form->layout->endRow($n, $this->rows_count);
|
96 |
+
}
|
97 |
+
}
|
98 |
+
}
|
99 |
+
}
|
libs/factory/forms/controls/holders/control-group-item.php
CHANGED
@@ -1,64 +1,76 @@
|
|
1 |
<?php
|
2 |
-
/**
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
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 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* The file contains the class of Tab Control Holder.
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
7 |
+
*
|
8 |
+
* @package factory-forms
|
9 |
+
* @since 1.0.0
|
10 |
+
*/
|
11 |
|
12 |
+
// Exit if accessed directly
|
13 |
+
if( !defined('ABSPATH') ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
|
17 |
+
if( !class_exists('Wbcr_FactoryForms400_ControlGroupItem') ) {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Tab Control Holder
|
21 |
+
*
|
22 |
+
* @since 1.0.0
|
23 |
+
*/
|
24 |
+
class Wbcr_FactoryForms400_ControlGroupItem extends Wbcr_FactoryForms400_Holder {
|
25 |
+
|
26 |
+
/**
|
27 |
+
* A holder type.
|
28 |
+
*
|
29 |
+
* @since 1.0.0
|
30 |
+
* @var string
|
31 |
+
*/
|
32 |
+
public $type = 'control-group-item';
|
33 |
+
|
34 |
+
|
35 |
+
/**
|
36 |
+
* Here we should render a beginning html of the tab.
|
37 |
+
*
|
38 |
+
* @since 1.0.0
|
39 |
+
* @return void
|
40 |
+
*/
|
41 |
+
public function beforeRendering()
|
42 |
+
{
|
43 |
+
$this->addCssClass('control-group-item');
|
44 |
+
$this->addCssClass('factory-control-group-item-' . $this->options['name']);
|
45 |
+
|
46 |
+
if( $this->parent->getValue() == $this->options['name'] ) {
|
47 |
+
$this->addCssClass('current');
|
48 |
+
|
49 |
+
foreach($this->elements as $val) {
|
50 |
+
$val->setOption('isActive', 1);
|
51 |
+
}
|
52 |
+
} else {
|
53 |
+
foreach($this->elements as $val) {
|
54 |
+
$val->setOption('isActive', 0);
|
55 |
+
}
|
56 |
+
}
|
57 |
+
|
58 |
+
?>
|
59 |
+
<div <?php $this->attrs() ?>>
|
60 |
+
<?php
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Here we should render an end html of the tab.
|
65 |
+
*
|
66 |
+
* @since 1.0.0
|
67 |
+
* @return void
|
68 |
+
*/
|
69 |
+
public function afterRendering()
|
70 |
+
{
|
71 |
+
?>
|
72 |
+
</div>
|
73 |
+
<?php
|
74 |
+
}
|
75 |
+
}
|
76 |
+
}
|
libs/factory/forms/controls/holders/control-group.php
CHANGED
@@ -1,80 +1,97 @@
|
|
1 |
<?php
|
2 |
-
/**
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
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 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* The file contains the class of Tab Control Holder.
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
7 |
+
*
|
8 |
+
* @package factory-forms
|
9 |
+
* @since 1.0.0
|
10 |
+
*/
|
11 |
+
|
12 |
+
// Exit if accessed directly
|
13 |
+
if( !defined('ABSPATH') ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
|
17 |
+
if( !class_exists('Wbcr_FactoryForms400_ControlGroupHolder') ) {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Tab Control Holder
|
21 |
+
*
|
22 |
+
* @since 1.0.0
|
23 |
+
*/
|
24 |
+
class Wbcr_FactoryForms400_ControlGroupHolder extends Wbcr_FactoryForms400_ControlHolder {
|
25 |
+
|
26 |
+
/**
|
27 |
+
* A holder type.
|
28 |
+
*
|
29 |
+
* @since 1.0.0
|
30 |
+
* @var string
|
31 |
+
*/
|
32 |
+
public $type = 'control-group';
|
33 |
+
|
34 |
+
|
35 |
+
/**
|
36 |
+
* Here we should render a beginning html of the tab.
|
37 |
+
*
|
38 |
+
* @since 1.0.0
|
39 |
+
* @return void
|
40 |
+
*/
|
41 |
+
public function beforeRendering()
|
42 |
+
{
|
43 |
+
$name = $this->getNameOnForm();
|
44 |
+
$value = $this->getValue();
|
45 |
+
|
46 |
+
$title = $this->getOption('title', null);
|
47 |
+
|
48 |
+
?>
|
49 |
+
<div <?php $this->attrs() ?>>
|
50 |
+
<input type="hidden" name="<?php echo $name ?>" id="<?php echo $name ?>" class="factory-ui-control-group" value="<?php echo $value ?>"/>
|
51 |
+
|
52 |
+
<?php if( $title ) { ?>
|
53 |
+
<strong class="factory-header"><?php echo $title; ?></strong>
|
54 |
+
<?php } ?>
|
55 |
+
|
56 |
+
<ul class="factory-control-group-nav">
|
57 |
+
<?php
|
58 |
+
foreach($this->elements as $element):
|
59 |
+
|
60 |
+
if( $element->options['type'] !== 'control-group-item' ) {
|
61 |
+
continue;
|
62 |
+
}
|
63 |
+
|
64 |
+
$builder = new Wbcr_FactoryForms400_HtmlAttributeBuilder();
|
65 |
+
|
66 |
+
$builder->addCssClass('factory-control-group-nav-label');
|
67 |
+
$builder->addCssClass('factory-control-group-nav-label-' . $element->getOption('name'));
|
68 |
+
$builder->addHtmlData('control-id', 'factory-control-group-item-' . $element->getOption('name'));
|
69 |
+
$builder->addHtmlData('control-name', $element->getOption('name'));
|
70 |
+
|
71 |
+
if( $value == $element->getOption('name') ) {
|
72 |
+
$builder->addCssClass('current');
|
73 |
+
}
|
74 |
+
|
75 |
+
?>
|
76 |
+
<li <?php $builder->printAttrs(); ?>><?php $element->title(); ?></li>
|
77 |
+
<?php endforeach; ?>
|
78 |
+
</ul>
|
79 |
+
<div class="factory-control-group-body">
|
80 |
+
<?php
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* Here we should render an end html of the tab.
|
85 |
+
*
|
86 |
+
* @since 1.0.0
|
87 |
+
* @return void
|
88 |
+
*/
|
89 |
+
public function afterRendering()
|
90 |
+
{
|
91 |
+
?>
|
92 |
+
</div>
|
93 |
+
</div>
|
94 |
+
<?php
|
95 |
+
}
|
96 |
+
}
|
97 |
+
}
|
libs/factory/forms/controls/holders/div.php
CHANGED
@@ -1,54 +1,67 @@
|
|
1 |
<?php
|
2 |
-
/**
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
*/
|
17 |
-
class FactoryForms329_DivHolder extends FactoryForms329_Holder {
|
18 |
-
|
19 |
-
/**
|
20 |
-
* A holder type.
|
21 |
-
*
|
22 |
-
* @since 1.0.0
|
23 |
-
* @var string
|
24 |
-
*/
|
25 |
-
public $type = 'div';
|
26 |
-
|
27 |
-
/**
|
28 |
-
* Here we should render a beginning html of the tab.
|
29 |
-
*
|
30 |
-
* @since 1.0.0
|
31 |
-
* @return void
|
32 |
-
*/
|
33 |
-
public function beforeRendering() {
|
34 |
|
35 |
-
|
36 |
-
|
|
|
|
|
|
|
|
|
|
|
37 |
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* The file contains the class of Div Control Holder.
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
7 |
+
*
|
8 |
+
* @package factory-forms
|
9 |
+
* @since 1.0.0
|
10 |
+
*/
|
11 |
|
12 |
+
// Exit if accessed directly
|
13 |
+
if( !defined('ABSPATH') ) {
|
14 |
+
exit;
|
15 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms400_DivHolder') ) {
|
18 |
+
/**
|
19 |
+
* Div Control Holder
|
20 |
+
*
|
21 |
+
* @since 1.0.0
|
22 |
+
*/
|
23 |
+
class Wbcr_FactoryForms400_DivHolder extends Wbcr_FactoryForms400_Holder {
|
24 |
|
25 |
+
/**
|
26 |
+
* A holder type.
|
27 |
+
*
|
28 |
+
* @since 1.0.0
|
29 |
+
* @var string
|
30 |
+
*/
|
31 |
+
public $type = 'div';
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Here we should render a beginning html of the tab.
|
35 |
+
*
|
36 |
+
* @since 1.0.0
|
37 |
+
* @return void
|
38 |
+
*/
|
39 |
+
public function beforeRendering()
|
40 |
+
{
|
41 |
+
|
42 |
+
if( isset($this->options['class']) ) {
|
43 |
+
$this->addCssClass($this->options['class']);
|
44 |
+
}
|
45 |
+
if( isset($this->options['id']) ) {
|
46 |
+
$this->addHtmlAttr('id', $this->options['id']);
|
47 |
+
}
|
48 |
+
|
49 |
+
?>
|
50 |
+
<div <?php $this->attrs() ?>>
|
51 |
+
<?php
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Here we should render an end html of the tab.
|
56 |
+
*
|
57 |
+
* @since 1.0.0
|
58 |
+
* @return void
|
59 |
+
*/
|
60 |
+
public function afterRendering()
|
61 |
+
{
|
62 |
+
?>
|
63 |
+
</div>
|
64 |
+
<?php
|
65 |
+
}
|
66 |
+
}
|
67 |
+
}
|
libs/factory/forms/controls/holders/form-group.php
CHANGED
@@ -1,62 +1,71 @@
|
|
1 |
<?php
|
2 |
-
/**
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
*/
|
17 |
-
class FactoryForms329_FormGroupHolder extends FactoryForms329_Holder {
|
18 |
-
|
19 |
-
/**
|
20 |
-
* A holder type.
|
21 |
-
*
|
22 |
-
* @since 1.0.0
|
23 |
-
* @var string
|
24 |
-
*/
|
25 |
-
public $type = 'form-group';
|
26 |
-
|
27 |
-
/**
|
28 |
-
* Here we should render a beginning html of the tab.
|
29 |
-
*
|
30 |
-
* @since 1.0.0
|
31 |
-
* @return void
|
32 |
-
*/
|
33 |
-
public function beforeRendering() {
|
34 |
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* The file contains the class of Group Holder.
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
7 |
+
*
|
8 |
+
* @package factory-forms
|
9 |
+
* @since 1.0.0
|
10 |
+
*/
|
11 |
|
12 |
+
// Exit if accessed directly
|
13 |
+
if( !defined('ABSPATH') ) {
|
14 |
+
exit;
|
15 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms400_FormGroupHolder') ) {
|
18 |
+
/**
|
19 |
+
* Group Holder
|
20 |
+
*
|
21 |
+
* @since 1.0.0
|
22 |
+
*/
|
23 |
+
class Wbcr_FactoryForms400_FormGroupHolder extends Wbcr_FactoryForms400_Holder {
|
24 |
+
|
25 |
+
/**
|
26 |
+
* A holder type.
|
27 |
+
*
|
28 |
+
* @since 1.0.0
|
29 |
+
* @var string
|
30 |
+
*/
|
31 |
+
public $type = 'form-group';
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Here we should render a beginning html of the tab.
|
35 |
+
*
|
36 |
+
* @since 1.0.0
|
37 |
+
* @return void
|
38 |
+
*/
|
39 |
+
public function beforeRendering()
|
40 |
+
{
|
41 |
+
|
42 |
+
$this->addCssClass('factory-form-group-' . $this->getName());
|
43 |
+
$this->addHtmlAttr('id', 'factory-form-group-' . $this->getName());
|
44 |
+
|
45 |
+
?>
|
46 |
+
<fieldset <?php $this->attrs() ?>>
|
47 |
+
<?php if( $this->hasTitle() ) { ?>
|
48 |
+
<legend class='factory-legend'>
|
49 |
+
<p class='factory-title'><?php $this->title() ?></p>
|
50 |
+
<?php if( $this->hasHint() ) { ?>
|
51 |
+
<p class='factory-hint'><?php echo $this->hint() ?></p>
|
52 |
+
<?php } ?>
|
53 |
+
</legend>
|
54 |
+
<?php } ?>
|
55 |
+
<?php
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Here we should render an end html of the tab.
|
60 |
+
*
|
61 |
+
* @since 1.0.0
|
62 |
+
* @return void
|
63 |
+
*/
|
64 |
+
public function afterRendering()
|
65 |
+
{
|
66 |
+
?>
|
67 |
+
</fieldset>
|
68 |
+
<?php
|
69 |
+
}
|
70 |
+
}
|
71 |
+
}
|
libs/factory/forms/controls/holders/more-link.php
CHANGED
@@ -1,62 +1,75 @@
|
|
1 |
<?php
|
2 |
-
/**
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
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 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* The file contains the class of More Link Holder.
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
7 |
+
*
|
8 |
+
* @package factory-forms
|
9 |
+
* @since 1.0.0
|
10 |
+
*/
|
11 |
+
|
12 |
+
// Exit if accessed directly
|
13 |
+
if( !defined('ABSPATH') ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
|
17 |
+
if( !class_exists('Wbcr_FactoryForms400_MoreLinkHolder') ) {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Collapsed Group Holder
|
21 |
+
*
|
22 |
+
* @since 1.0.0
|
23 |
+
*/
|
24 |
+
class Wbcr_FactoryForms400_MoreLinkHolder extends Wbcr_FactoryForms400_Holder {
|
25 |
+
|
26 |
+
/**
|
27 |
+
* A holder type.
|
28 |
+
*
|
29 |
+
* @since 1.0.0
|
30 |
+
* @var string
|
31 |
+
*/
|
32 |
+
public $type = 'more-link';
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Here we should render a beginning html of the tab.
|
36 |
+
*
|
37 |
+
* @since 1.0.0
|
38 |
+
* @return void
|
39 |
+
*/
|
40 |
+
public function beforeRendering()
|
41 |
+
{
|
42 |
+
$count = isset($this->options['count'])
|
43 |
+
? $this->options['count']
|
44 |
+
: 0;
|
45 |
+
|
46 |
+
$id = 'factory-more-link-' . $this->getName();
|
47 |
+
|
48 |
+
?>
|
49 |
+
<div <?php $this->attrs() ?>>
|
50 |
+
<div class="form-group">
|
51 |
+
<div class="control-label col-sm-2"></div>
|
52 |
+
<div class="control-group col-sm-10">
|
53 |
+
<a href="#<?php echo $id ?>" class="factory-more-link-show"><?php $this->title() ?>
|
54 |
+
(<?php echo $count ?>)</a>
|
55 |
+
</div>
|
56 |
+
</div>
|
57 |
+
<div class='factory-more-link-content' id="<?php echo $id ?>" style="display: none;">
|
58 |
+
<a href="#<?php echo $id ?>" class='factory-more-link-hide'><?php _e('hide extra options', 'factory'); ?></a>
|
59 |
+
<?php
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Here we should render an end html of the tab.
|
64 |
+
*
|
65 |
+
* @since 1.0.0
|
66 |
+
* @return void
|
67 |
+
*/
|
68 |
+
public function afterRendering()
|
69 |
+
{
|
70 |
+
?>
|
71 |
+
</div></div>
|
72 |
+
<?php
|
73 |
+
}
|
74 |
+
}
|
75 |
+
}
|
libs/factory/forms/controls/holders/tab-item.php
CHANGED
@@ -1,57 +1,68 @@
|
|
1 |
<?php
|
2 |
-
/**
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
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 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* The file contains the class of Tab Item Control Holder.
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
7 |
+
*
|
8 |
+
* @package factory-forms
|
9 |
+
* @since 1.0.0
|
10 |
+
*/
|
11 |
+
// Exit if accessed directly
|
12 |
+
if( !defined('ABSPATH') ) {
|
13 |
+
exit;
|
14 |
+
}
|
15 |
+
|
16 |
+
if( !class_exists('Wbcr_FactoryForms400_TabItemHolder') ) {
|
17 |
+
/**
|
18 |
+
* Tab Item Control Holder
|
19 |
+
*
|
20 |
+
* @since 1.0.0
|
21 |
+
*/
|
22 |
+
class Wbcr_FactoryForms400_TabItemHolder extends Wbcr_FactoryForms400_Holder {
|
23 |
+
|
24 |
+
/**
|
25 |
+
* A holder type.
|
26 |
+
*
|
27 |
+
* @since 1.0.0
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
public $type = 'tab-item';
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Here we should render a beginning html of the tab.
|
34 |
+
*
|
35 |
+
* @since 1.0.0
|
36 |
+
* @return void
|
37 |
+
*/
|
38 |
+
public function beforeRendering()
|
39 |
+
{
|
40 |
+
|
41 |
+
$this->addCssClass('tab-' . $this->getName());
|
42 |
+
$this->addHtmlAttr('id', $this->getName());
|
43 |
+
|
44 |
+
$this->addCssClass('tab-pane');
|
45 |
+
|
46 |
+
if( isset($this->options['isFirst']) && $this->options['isFirst'] ) {
|
47 |
+
$this->addCssClass('active');
|
48 |
+
}
|
49 |
+
|
50 |
+
?>
|
51 |
+
<div <?php $this->attrs() ?>>
|
52 |
+
<?php
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Here we should render an end html of the tab.
|
57 |
+
*
|
58 |
+
* @since 1.0.0
|
59 |
+
* @return void
|
60 |
+
*/
|
61 |
+
public function afterRendering()
|
62 |
+
{
|
63 |
+
?>
|
64 |
+
</div>
|
65 |
+
<?php
|
66 |
+
}
|
67 |
+
}
|
68 |
+
}
|
libs/factory/forms/controls/holders/tab.php
CHANGED
@@ -1,112 +1,139 @@
|
|
1 |
<?php
|
2 |
-
/**
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
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 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* The file contains the class of Tab Control Holder.
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
7 |
+
*
|
8 |
+
* @package factory-forms
|
9 |
+
* @since 1.0.0
|
10 |
+
*/
|
11 |
+
|
12 |
+
// Exit if accessed directly
|
13 |
+
if( !defined('ABSPATH') ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
|
17 |
+
if( !class_exists('Wbcr_FactoryForms400_TabHolder') ) {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Tab Control Holder
|
21 |
+
*
|
22 |
+
* @since 1.0.0
|
23 |
+
*/
|
24 |
+
class Wbcr_FactoryForms400_TabHolder extends Wbcr_FactoryForms400_Holder {
|
25 |
+
|
26 |
+
/**
|
27 |
+
* A holder type.
|
28 |
+
*
|
29 |
+
* @since 1.0.0
|
30 |
+
* @var string
|
31 |
+
*/
|
32 |
+
public $type = 'tab';
|
33 |
+
|
34 |
+
/**
|
35 |
+
* An align of a tab (horizontal or vertical).
|
36 |
+
*
|
37 |
+
* @since 1.0.0
|
38 |
+
* @var string
|
39 |
+
*/
|
40 |
+
public $align = 'horizontal';
|
41 |
+
|
42 |
+
/**
|
43 |
+
* Creates a new instance of control holder.
|
44 |
+
*
|
45 |
+
* @since 1.0.0
|
46 |
+
* @param mixed[] $options A holder options.
|
47 |
+
* @param FactoryForms400_Form $form A parent form.
|
48 |
+
*/
|
49 |
+
public function __construct($options, $form)
|
50 |
+
{
|
51 |
+
parent::__construct($options, $form);
|
52 |
+
$this->align = isset($options['align'])
|
53 |
+
? $options['align']
|
54 |
+
: 'horizontal';
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Here we should render a beginning html of the tab.
|
59 |
+
*
|
60 |
+
* @since 1.0.0
|
61 |
+
* @return void
|
62 |
+
*/
|
63 |
+
public function beforeRendering()
|
64 |
+
{
|
65 |
+
|
66 |
+
$is_first_tab = true;
|
67 |
+
$tab_class = $this->getOption('class');
|
68 |
+
|
69 |
+
if( !empty($tab_class) ) {
|
70 |
+
$this->addCssClass($tab_class);
|
71 |
+
}
|
72 |
+
|
73 |
+
$this->addCssClass('factory-align-' . $this->align);
|
74 |
+
|
75 |
+
?>
|
76 |
+
<div <?php $this->attrs() ?>>
|
77 |
+
<div class="factory-headers">
|
78 |
+
<ul class="nav nav-tabs">
|
79 |
+
<?php foreach($this->elements as $element) {
|
80 |
+
if( $element->options['type'] !== 'tab-item' ) {
|
81 |
+
continue;
|
82 |
+
}
|
83 |
+
|
84 |
+
$tab_icon = '';
|
85 |
+
$has_icon = isset($element->options['icon']);
|
86 |
+
|
87 |
+
if( $has_icon ) {
|
88 |
+
$tab_icon = $element->options['icon'];
|
89 |
+
}
|
90 |
+
|
91 |
+
$builder = new Wbcr_FactoryForms400_HtmlAttributeBuilder();
|
92 |
+
|
93 |
+
$builder->addCssClass('factory-tab-item-header');
|
94 |
+
$builder->addCssClass('factory-tab-item-header-' . $element->getName());
|
95 |
+
|
96 |
+
if( $has_icon ) {
|
97 |
+
$builder->addCssClass('factory-tab-item-header-with-icon');
|
98 |
+
}
|
99 |
+
if( $is_first_tab ) {
|
100 |
+
$builder->addCssClass('active');
|
101 |
+
}
|
102 |
+
|
103 |
+
$builder->addHtmlData('tab-id', $element->getName());
|
104 |
+
$is_first_tab = false;
|
105 |
+
|
106 |
+
if( $has_icon ) { ?>
|
107 |
+
<style>
|
108 |
+
.factory-form-tab-item-header-<?php $element->name() ?> a {
|
109 |
+
background-image: url("<?php echo $tab_icon ?>");
|
110 |
+
}
|
111 |
+
</style>
|
112 |
+
<?php } ?>
|
113 |
+
<li <?php $builder->printAttrs() ?>>
|
114 |
+
<a href="#<?php $element->name() ?>" data-toggle="tab">
|
115 |
+
<?php $element->title() ?>
|
116 |
+
</a>
|
117 |
+
</li>
|
118 |
+
<?php } ?>
|
119 |
+
</ul>
|
120 |
+
</div>
|
121 |
+
<div class='tab-content factory-bodies'>
|
122 |
+
<?php
|
123 |
+
}
|
124 |
+
|
125 |
+
/**
|
126 |
+
* Here we should render an end html of the tab.
|
127 |
+
*
|
128 |
+
* @since 1.0.0
|
129 |
+
* @return void
|
130 |
+
*/
|
131 |
+
public function afterRendering()
|
132 |
+
{
|
133 |
+
?>
|
134 |
+
</div>
|
135 |
+
</div>
|
136 |
+
<?php
|
137 |
+
}
|
138 |
+
}
|
139 |
+
}
|
libs/factory/forms/controls/integer.php
CHANGED
@@ -21,127 +21,140 @@
|
|
21 |
* default => a default value of the control if the "value" option is not specified
|
22 |
*
|
23 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
24 |
-
* @copyright (c)
|
25 |
*
|
26 |
* @package factory-forms
|
27 |
* @since 1.0.0
|
28 |
*/
|
29 |
-
class FactoryForms329_IntegerControl extends FactoryForms329_Control {
|
30 |
-
|
31 |
-
public $type = 'integer';
|
32 |
-
|
33 |
-
/**
|
34 |
-
* Converting string to integer.
|
35 |
-
*
|
36 |
-
* @since 1.0.0
|
37 |
-
* @return integer
|
38 |
-
*/
|
39 |
-
public function html()
|
40 |
-
{
|
41 |
-
|
42 |
-
$name = $this->getNameOnForm();
|
43 |
-
$value = esc_attr($this->getValue());
|
44 |
-
$isActive = $this->getOption('isActive', 1);
|
45 |
-
$unit = esc_attr($this->getOption('units'));
|
46 |
-
|
47 |
-
$way = $this->getOption('way');
|
48 |
-
if( empty($way) ) {
|
49 |
-
$way = 'text';
|
50 |
-
}
|
51 |
-
|
52 |
-
$hasSlider = false;
|
53 |
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
$step = $this->getOption('step', 1);
|
59 |
-
$hasSlider = true;
|
60 |
-
}
|
61 |
-
|
62 |
-
$this->addCssClass('factory-way-' . $way);
|
63 |
-
if( $hasSlider ) {
|
64 |
-
$this->addCssClass('factory-has-slider');
|
65 |
-
}
|
66 |
-
?>
|
67 |
-
|
68 |
-
<div <?php $this->attrs() ?>>
|
69 |
-
<?php if( $hasSlider ) { ?>
|
70 |
-
|
71 |
-
<?php if( 'checkbox-slider' == $way ) { ?>
|
72 |
-
|
73 |
-
<div>
|
74 |
-
<label for="<?php echo $name; ?>_checker"><?php echo $isActive
|
75 |
-
? $checkbox['off']
|
76 |
-
: $checkbox['on']; ?></label><br>
|
77 |
-
<input type="checkbox" id="<?php echo $name; ?>_checker" class="factory-checkbox" name="<?php echo $name; ?>_checker" <?php echo $isActive
|
78 |
-
? 'checked'
|
79 |
-
: '' ?>></p>
|
80 |
-
</div>
|
81 |
-
|
82 |
-
<?php } ?>
|
83 |
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
<span class="factory-visible-value">
|
102 |
<?php echo $value ?><?php echo $unit ?>
|
103 |
</span>
|
|
|
|
|
104 |
</div>
|
105 |
-
<input type="hidden" name="<?php echo $name; ?>" class="factory-result" value="<?php echo $value; ?>"/>
|
106 |
-
</div>
|
107 |
|
108 |
-
|
109 |
|
110 |
-
|
111 |
-
|
112 |
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
|
|
130 |
}
|
131 |
-
}
|
132 |
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
|
|
145 |
}
|
146 |
}
|
147 |
-
}
|
21 |
* default => a default value of the control if the "value" option is not specified
|
22 |
*
|
23 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
24 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
25 |
*
|
26 |
* @package factory-forms
|
27 |
* @since 1.0.0
|
28 |
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
|
30 |
+
// Exit if accessed directly
|
31 |
+
if( !defined('ABSPATH') ) {
|
32 |
+
exit;
|
33 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
|
35 |
+
if( !class_exists('Wbcr_FactoryForms400_IntegerControl') ) {
|
36 |
+
|
37 |
+
class Wbcr_FactoryForms400_IntegerControl extends Wbcr_FactoryForms400_Control {
|
38 |
+
|
39 |
+
public $type = 'integer';
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Converting string to integer.
|
43 |
+
*
|
44 |
+
* @since 1.0.0
|
45 |
+
* @return integer
|
46 |
+
*/
|
47 |
+
public function html()
|
48 |
+
{
|
49 |
+
|
50 |
+
$name = $this->getNameOnForm();
|
51 |
+
$value = esc_attr($this->getValue());
|
52 |
+
$step = 1;
|
53 |
+
$range = $checkbox = array();
|
54 |
+
$is_active = $this->getOption('isActive', 1);
|
55 |
+
$unit = esc_attr($this->getOption('units'));
|
56 |
+
|
57 |
+
$way = $this->getOption('way');
|
58 |
+
|
59 |
+
if( empty($way) ) {
|
60 |
+
$way = 'text';
|
61 |
+
}
|
62 |
+
|
63 |
+
$has_slider = false;
|
64 |
+
|
65 |
+
if( in_array($way, array('slider', 'checkbox-slider')) ) {
|
66 |
+
$range = $this->getOption('range', array(0, 99));
|
67 |
+
$slider_title = $this->getOption('slider-title');
|
68 |
+
$checkbox = $this->getOption('checkbox');
|
69 |
+
$step = $this->getOption('step', 1);
|
70 |
+
$has_slider = true;
|
71 |
+
}
|
72 |
+
|
73 |
+
$this->addCssClass('factory-way-' . $way);
|
74 |
+
|
75 |
+
if( $has_slider ) {
|
76 |
+
$this->addCssClass('factory-has-slider');
|
77 |
+
}
|
78 |
+
?>
|
79 |
+
|
80 |
+
<div <?php $this->attrs() ?>>
|
81 |
+
<?php if( $has_slider ) { ?>
|
82 |
+
|
83 |
+
<?php if( 'checkbox-slider' == $way ) { ?>
|
84 |
+
|
85 |
+
<div>
|
86 |
+
<label for="<?php echo $name; ?>_checker"><?php echo $is_active
|
87 |
+
? $checkbox['off']
|
88 |
+
: $checkbox['on']; ?></label><br>
|
89 |
+
<input type="checkbox" id="<?php echo $name; ?>_checker" class="factory-checkbox" name="<?php echo $name; ?>_checker" <?php echo $is_active
|
90 |
+
? 'checked'
|
91 |
+
: '' ?>>
|
92 |
+
</div>
|
93 |
+
|
94 |
+
<?php } ?>
|
95 |
+
|
96 |
+
<div
|
97 |
+
data-units="<?php echo $unit ?>"
|
98 |
+
data-range-start="<?php echo $range[0] ?>"
|
99 |
+
data-range-end="<?php echo $range[1] ?>"
|
100 |
+
data-step="<?php echo $step ?>"
|
101 |
+
<?php echo !$is_active
|
102 |
+
? ' style="display:none;"'
|
103 |
+
: '' ?>
|
104 |
+
class="factory-slider-container factory-slider-container-<?php echo $name; ?>">
|
105 |
+
<?php if( !empty($slider_title) ): ?>
|
106 |
+
<label class="factory-title">
|
107 |
+
<?php echo $this->getOption('slider-title'); ?>
|
108 |
+
</label>
|
109 |
+
<?php endif; ?>
|
110 |
+
|
111 |
+
<div class="factory-slider">
|
112 |
+
<div class="factory-bar"></div>
|
113 |
<span class="factory-visible-value">
|
114 |
<?php echo $value ?><?php echo $unit ?>
|
115 |
</span>
|
116 |
+
</div>
|
117 |
+
<input type="hidden" name="<?php echo $name; ?>" class="factory-result" value="<?php echo $value; ?>"/>
|
118 |
</div>
|
|
|
|
|
119 |
|
120 |
+
<?php } else { ?>
|
121 |
|
122 |
+
<input type="number" id="<?php echo $name; ?>" name="<?php echo $name; ?>" value="<?php echo $value; ?>" class="factory-input-text"/>
|
123 |
+
<span class="factory-units"><?php echo $unit ?></span>
|
124 |
|
125 |
+
<?php } ?>
|
126 |
+
</div><!-- .factory-integer -->
|
127 |
+
<?php
|
128 |
+
}
|
129 |
|
130 |
+
/**
|
131 |
+
* Форматирует значение без единиц измерения
|
132 |
+
* @param string $values
|
133 |
+
* @param string $unit
|
134 |
+
* @return string
|
135 |
+
*/
|
136 |
+
public function valueFormatWithoutUnit($values, $unit)
|
137 |
+
{
|
138 |
+
if( !is_numeric($values) ) {
|
139 |
+
return str_replace($unit, '', $values);
|
140 |
+
} else {
|
141 |
+
return $values;
|
142 |
+
}
|
143 |
}
|
|
|
144 |
|
145 |
+
/**
|
146 |
+
* Форматирует значение c единицами измерения
|
147 |
+
* @param string $values
|
148 |
+
* @param string $unit
|
149 |
+
* @return string
|
150 |
+
*/
|
151 |
+
public function valueFormatWithUnit($values, $unit)
|
152 |
+
{
|
153 |
+
if( is_numeric($values) ) {
|
154 |
+
return $values . $unit;
|
155 |
+
} else {
|
156 |
+
return $values;
|
157 |
+
}
|
158 |
}
|
159 |
}
|
160 |
+
}
|
libs/factory/forms/controls/list.php
CHANGED
@@ -1,211 +1,230 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
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 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
145 |
<i class="fa fa-exclamation-triangle"></i>
|
146 |
<div class='factory-error-text'><?php echo $errors[$item[0]] ?></div>
|
147 |
</span>
|
148 |
-
|
149 |
-
|
150 |
-
<input
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
|
|
|
|
156 |
</span>
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
<select multiple="multiple" <?php $this->attrs() ?>/>
|
188 |
<?php foreach($items as $item) {
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
|
|
|
|
|
|
|
|
208 |
</select>
|
209 |
<?php
|
210 |
-
|
211 |
-
}
|
|
1 |
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Multiselect List Control
|
5 |
+
*
|
6 |
+
* Main options:
|
7 |
+
* name => a name of the control
|
8 |
+
* value => a value to show in the control
|
9 |
+
* default => a default value of the control if the "value" option is not specified
|
10 |
+
* items => a callback to return items or an array of items to select
|
11 |
+
*
|
12 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
13 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
14 |
+
*
|
15 |
+
* @package factory-forms
|
16 |
+
* @since 1.0.0
|
17 |
+
*/
|
18 |
+
|
19 |
+
// Exit if accessed directly
|
20 |
+
if( !defined('ABSPATH') ) {
|
21 |
+
exit;
|
22 |
+
}
|
23 |
+
|
24 |
+
if( !class_exists('Wbcr_FactoryForms400_ListControl') ) {
|
25 |
+
|
26 |
+
class Wbcr_FactoryForms400_ListControl extends Wbcr_FactoryForms400_Control {
|
27 |
+
|
28 |
+
public $type = 'list';
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Returns a set of available items for the list.
|
32 |
+
*
|
33 |
+
* @since 1.0.0
|
34 |
+
* @return mixed[]
|
35 |
+
*/
|
36 |
+
private function getItems()
|
37 |
+
{
|
38 |
+
|
39 |
+
$data = $this->getOption('data', array());
|
40 |
+
|
41 |
+
// if the data options is a valid callback for an object method
|
42 |
+
if( (is_array($data) && count($data) == 2 && is_object($data[0])) || is_string($data) ) {
|
43 |
+
|
44 |
+
return call_user_func($data);
|
45 |
+
}
|
46 |
+
|
47 |
+
// if the data options is an array of values
|
48 |
+
return $data;
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Returns true, if the data should be loaded via ajax.
|
53 |
+
*
|
54 |
+
* @since 1.0.0
|
55 |
+
* @return bool
|
56 |
+
*/
|
57 |
+
protected function isAjax()
|
58 |
+
{
|
59 |
+
|
60 |
+
$data = $this->getOption('data', array());
|
61 |
+
|
62 |
+
return is_array($data) && isset($data['ajax']);
|
63 |
+
}
|
64 |
+
|
65 |
+
/**
|
66 |
+
* Shows the html markup of the control.
|
67 |
+
*
|
68 |
+
* @since 1.0.0
|
69 |
+
* @return void
|
70 |
+
*/
|
71 |
+
public function html()
|
72 |
+
{
|
73 |
+
|
74 |
+
$way = $this->getOption('way', 'default');
|
75 |
+
$this->addHtmlData('way', $way);
|
76 |
+
|
77 |
+
if( $this->isAjax() ) {
|
78 |
+
|
79 |
+
$data = $this->getOption('data', array());
|
80 |
+
$ajax_id = 'factory-list-' . rand(1000000, 9999999);
|
81 |
+
|
82 |
+
$value = $this->getValue(null, true);
|
83 |
+
|
84 |
+
if( empty($value) || empty($value[0]) ) {
|
85 |
+
$value = array();
|
86 |
+
}
|
87 |
+
|
88 |
+
?>
|
89 |
+
<div class="factory-ajax-loader <?php echo $ajax_id . '-loader'; ?>"></div>
|
90 |
+
<script>
|
91 |
+
window['<?php echo $ajax_id ?>'] = {
|
92 |
+
'loader': '.<?php echo $ajax_id . '-loader' ?>',
|
93 |
+
'url': '<?php echo $data['url'] ?>',
|
94 |
+
'data': <?php echo json_encode( $data['data'] ) ?>,
|
95 |
+
'selected': <?php echo json_encode( $value ) ?>,
|
96 |
+
'emptyList': '<?php echo $this->getOption('empty', __('The list is empty.', 'wbcr_factory_forms_400') ) ?>'
|
97 |
+
};
|
98 |
+
</script>
|
99 |
+
<?php
|
100 |
+
|
101 |
+
$this->addHtmlData('ajax', true);
|
102 |
+
$this->addHtmlData('ajax-data-id', $ajax_id);
|
103 |
+
$this->addCssClass('factory-hidden');
|
104 |
+
}
|
105 |
+
|
106 |
+
if( 'checklist' == $way ) {
|
107 |
+
$this->checklistHtml();
|
108 |
+
} else {
|
109 |
+
$this->defaultHtml();
|
110 |
+
}
|
111 |
+
}
|
112 |
+
|
113 |
+
/**
|
114 |
+
* Shows the Buttons Dropdown.
|
115 |
+
*
|
116 |
+
* @since 1.0.0
|
117 |
+
* @return void
|
118 |
+
*/
|
119 |
+
protected function checklistHtml()
|
120 |
+
{
|
121 |
+
$items = $this->getItems();
|
122 |
+
|
123 |
+
$value = explode(',', $this->getValue());
|
124 |
+
if( empty($value) || empty($value[0]) ) {
|
125 |
+
$value = array();
|
126 |
+
}
|
127 |
+
|
128 |
+
$name_on_form = $this->getNameOnForm();
|
129 |
+
|
130 |
+
$this->addCssClass('factory-checklist-way');
|
131 |
+
$this->addHtmlData('name', $name_on_form);
|
132 |
+
|
133 |
+
$errors_callback = $this->getOption('errors');
|
134 |
+
$errors = !empty($errors_callback)
|
135 |
+
? call_user_func($errors_callback)
|
136 |
+
: array();
|
137 |
+
|
138 |
+
$is_empty = $this->isAjax() || empty($items);
|
139 |
+
$emptyList = $this->getOption('empty', __('The list is empty.', 'wbcr_factory_forms_400'));
|
140 |
+
|
141 |
+
if( $is_empty ) {
|
142 |
+
$this->addCssClass('factory-empty');
|
143 |
+
}
|
144 |
+
|
145 |
+
?>
|
146 |
+
<ul <?php $this->attrs() ?>>
|
147 |
+
<?php if( $is_empty ) { ?>
|
148 |
+
<li><?php echo $emptyList ?></li>
|
149 |
+
<?php } else { ?>
|
150 |
+
<?php foreach($items as $item) { ?>
|
151 |
+
<li>
|
152 |
+
<label for="factory-checklist-<?php echo $name_on_form ?>-<?php echo $item[0] ?>" class="<?php if( !empty($errors[$item[0]]) ) {
|
153 |
+
echo 'factory-has-error';
|
154 |
+
} ?>">
|
155 |
+
<?php if( !empty($errors[$item[0]]) ) { ?>
|
156 |
+
<span class="factory-error">
|
157 |
<i class="fa fa-exclamation-triangle"></i>
|
158 |
<div class='factory-error-text'><?php echo $errors[$item[0]] ?></div>
|
159 |
</span>
|
160 |
+
<?php } else { ?>
|
161 |
+
<span>
|
162 |
+
<input
|
163 |
+
type="checkbox"
|
164 |
+
name="<?php echo $name_on_form ?>[]"
|
165 |
+
value="<?php echo $item[0] ?>"
|
166 |
+
id="factory-checklist-<?php echo $name_on_form ?>-<?php echo $item[0] ?>"
|
167 |
+
<?php if( in_array($item[0], $value) ) {
|
168 |
+
echo 'checked="checked"';
|
169 |
+
} ?> />
|
170 |
</span>
|
171 |
+
<?php } ?>
|
172 |
+
|
173 |
+
<span><?php echo $item[1] ?></span>
|
174 |
+
</label>
|
175 |
+
</li>
|
176 |
+
<?php } ?>
|
177 |
+
<?php } ?>
|
178 |
+
</ul>
|
179 |
+
<?php
|
180 |
+
}
|
181 |
+
|
182 |
+
/**
|
183 |
+
* Shows the standart dropdown.
|
184 |
+
*
|
185 |
+
* @since 1.3.1
|
186 |
+
* @return void
|
187 |
+
*/
|
188 |
+
protected function defaultHtml()
|
189 |
+
{
|
190 |
+
|
191 |
+
$items = $this->getItems();
|
192 |
+
$value = $this->getValue();
|
193 |
+
|
194 |
+
$name_on_form = $this->getNameOnForm();
|
195 |
+
|
196 |
+
$this->addHtmlAttr('id', $name_on_form);
|
197 |
+
$this->addHtmlAttr('name', $name_on_form);
|
198 |
+
$this->addCssClass('form-control');
|
199 |
+
|
200 |
+
?>
|
201 |
<select multiple="multiple" <?php $this->attrs() ?>/>
|
202 |
<?php foreach($items as $item) {
|
203 |
+
if( count($item) == 3 ) {
|
204 |
+
?>
|
205 |
+
<optgroup label="<?php echo $item[1] ?>">
|
206 |
+
<?php foreach($item[2] as $subitem) { ?>
|
207 |
+
<?php $selected = ($subitem[0] == $value)
|
208 |
+
? 'selected="selected"'
|
209 |
+
: ''; ?>
|
210 |
+
<option value='<?php echo $subitem[0] ?>' <?php echo $selected ?>>
|
211 |
+
<?php echo $subitem[1] ?>
|
212 |
+
</option>
|
213 |
+
<?php } ?>
|
214 |
+
</optgroup>
|
215 |
+
<?php
|
216 |
+
} else {
|
217 |
+
$selected = ($item[0] == $value)
|
218 |
+
? 'selected="selected"'
|
219 |
+
: '';
|
220 |
+
?>
|
221 |
+
<option value='<?php echo $item[0] ?>' <?php echo $selected ?>>
|
222 |
+
<?php echo $item[1] ?>
|
223 |
+
</option>
|
224 |
+
<?php } ?>
|
225 |
+
<?php } ?>
|
226 |
</select>
|
227 |
<?php
|
228 |
+
}
|
229 |
+
}
|
230 |
+
}
|
libs/factory/forms/controls/multiple-textbox.php
CHANGED
@@ -2,107 +2,119 @@
|
|
2 |
|
3 |
/**
|
4 |
* Control multiple textbox
|
5 |
-
*
|
6 |
-
* @
|
|
|
7 |
*
|
8 |
* @package factory-forms
|
9 |
* @since 1.0.0
|
10 |
*/
|
11 |
-
class FactoryForms329_MultipleTextboxControl extends FactoryForms329_Control {
|
12 |
|
13 |
-
|
|
|
|
|
|
|
14 |
|
15 |
-
|
16 |
-
* Preparing html attributes before rendering html of the control.
|
17 |
-
*
|
18 |
-
* @since 1.0.0
|
19 |
-
* @return void
|
20 |
-
*/
|
21 |
-
protected function beforeHtml()
|
22 |
-
{
|
23 |
|
24 |
-
|
25 |
|
26 |
-
|
27 |
-
$this->addHtmlAttr('maxlength', intval($this->getOption('maxLength')));
|
28 |
-
}
|
29 |
|
30 |
-
|
31 |
-
|
32 |
-
|
|
|
|
|
|
|
|
|
|
|
33 |
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
}
|
40 |
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
$values = $this->getValue();
|
51 |
-
|
52 |
-
if( !empty($values) ) {
|
53 |
-
$values = explode('{%spr%}', $values);
|
54 |
-
} else {
|
55 |
-
$values = array();
|
56 |
}
|
57 |
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
<div class="factory-mtextbox-item">
|
69 |
-
<input
|
70 |
-
<?php if( $counter >= 1 ): ?>
|
71 |
-
<button class="btn btn-default btn-small factory-mtextbox-remove-item">
|
72 |
-
<i class="fa fa-times" aria-hidden="true"></i></button>
|
73 |
-
<?php endif; ?>
|
74 |
</div>
|
75 |
-
|
76 |
-
|
77 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
78 |
</div>
|
79 |
-
<button class="btn btn-default btn-small factory-mtextbox-add-item">
|
80 |
-
<i class="fa fa-plus" aria-hidden="true"></i> <?php _e('Add new', 'factory_forms_329') ?>
|
81 |
-
</button>
|
82 |
-
</div>
|
83 |
-
|
84 |
-
<?php
|
85 |
-
}
|
86 |
|
87 |
-
|
88 |
-
* Returns a submit value of the control by a given name.
|
89 |
-
*
|
90 |
-
* @since 1.0.0
|
91 |
-
* @return mixed
|
92 |
-
*/
|
93 |
-
public function getSubmitValue($name, $subName)
|
94 |
-
{
|
95 |
-
$nameOnForm = $this->getNameOnForm($name);
|
96 |
-
$value = isset($_POST[$nameOnForm])
|
97 |
-
? $_POST[$nameOnForm]
|
98 |
-
: null;
|
99 |
-
if( is_array($value) ) {
|
100 |
-
$value = array_map('sanitize_text_field', $value);
|
101 |
-
$value = implode('{%spr%}', $value);
|
102 |
}
|
103 |
|
104 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
|
106 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
107 |
}
|
108 |
}
|
2 |
|
3 |
/**
|
4 |
* Control multiple textbox
|
5 |
+
*
|
6 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
7 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
8 |
*
|
9 |
* @package factory-forms
|
10 |
* @since 1.0.0
|
11 |
*/
|
|
|
12 |
|
13 |
+
// Exit if accessed directly
|
14 |
+
if( !defined('ABSPATH') ) {
|
15 |
+
exit;
|
16 |
+
}
|
17 |
|
18 |
+
if( !class_exists('Wbcr_FactoryForms400_MultipleTextboxControl') ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
|
20 |
+
class Wbcr_FactoryForms400_MultipleTextboxControl extends Wbcr_FactoryForms400_Control {
|
21 |
|
22 |
+
public $type = 'multiple-textbox';
|
|
|
|
|
23 |
|
24 |
+
/**
|
25 |
+
* Preparing html attributes before rendering html of the control.
|
26 |
+
*
|
27 |
+
* @since 1.0.0
|
28 |
+
* @return void
|
29 |
+
*/
|
30 |
+
protected function beforeHtml()
|
31 |
+
{
|
32 |
|
33 |
+
$name_on_form = $this->getNameOnForm();
|
34 |
+
|
35 |
+
if( $this->getOption('maxLength', false) ) {
|
36 |
+
$this->addHtmlAttr('maxlength', intval($this->getOption('maxLength')));
|
37 |
+
}
|
|
|
38 |
|
39 |
+
if( $this->getOption('placeholder', false) ) {
|
40 |
+
$this->addHtmlAttr('placeholder', $this->getOption('placeholder'));
|
41 |
+
}
|
42 |
+
|
43 |
+
$this->addCssClass('form-control');
|
44 |
+
$this->addHtmlAttr('type', 'text');
|
45 |
+
//$this->addHtmlAttr('id', $name_on_form);
|
46 |
+
$this->addCssClass(str_replace('_', '-', $name_on_form));
|
47 |
+
$this->addHtmlAttr('name', $name_on_form . '[]');
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
}
|
49 |
|
50 |
+
/**
|
51 |
+
* Shows the html markup of the control.
|
52 |
+
*
|
53 |
+
* @since 1.0.0
|
54 |
+
* @return void
|
55 |
+
*/
|
56 |
+
public function html()
|
57 |
+
{
|
58 |
+
|
59 |
+
$values = $this->getValue();
|
60 |
+
|
61 |
+
if( !empty($values) ) {
|
62 |
+
$values = explode('{%spr%}', $values);
|
63 |
+
} else {
|
64 |
+
$values = array();
|
65 |
+
}
|
66 |
+
|
67 |
+
?>
|
68 |
+
<div class="factory-multiple-textbox-group">
|
69 |
+
<div class="factory-mtextbox-items">
|
70 |
+
<?php if( empty($values) ): ?>
|
71 |
<div class="factory-mtextbox-item">
|
72 |
+
<input <?php $this->attrs() ?>/>
|
|
|
|
|
|
|
|
|
73 |
</div>
|
74 |
+
<?php else: ?>
|
75 |
+
<?php $counter = 0; ?>
|
76 |
+
<?php foreach($values as $value): ?>
|
77 |
+
<div class="factory-mtextbox-item">
|
78 |
+
<input value="<?= esc_attr($value) ?>"<?php $this->attrs() ?>/>
|
79 |
+
<?php if( $counter >= 1 ): ?>
|
80 |
+
<button class="btn btn-default btn-small factory-mtextbox-remove-item">
|
81 |
+
<i class="fa fa-times" aria-hidden="true"></i></button>
|
82 |
+
<?php endif; ?>
|
83 |
+
</div>
|
84 |
+
<?php $counter++; ?>
|
85 |
+
<?php endforeach; ?>
|
86 |
+
<?php endif; ?>
|
87 |
+
</div>
|
88 |
+
<button class="btn btn-default btn-small factory-mtextbox-add-item">
|
89 |
+
<i class="fa fa-plus" aria-hidden="true"></i> <?php _e('Add new', 'wbcr_factory_forms_400') ?>
|
90 |
+
</button>
|
91 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
92 |
|
93 |
+
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
}
|
95 |
|
96 |
+
/**
|
97 |
+
* Returns a submit value of the control by a given name.
|
98 |
+
*
|
99 |
+
* @since 1.0.0
|
100 |
+
* @return mixed
|
101 |
+
*/
|
102 |
+
public function getSubmitValue($name, $subName)
|
103 |
+
{
|
104 |
+
$name_on_form = $this->getNameOnForm($name);
|
105 |
|
106 |
+
$value = isset($_POST[$name_on_form])
|
107 |
+
? $_POST[$name_on_form]
|
108 |
+
: null;
|
109 |
+
|
110 |
+
if( is_array($value) ) {
|
111 |
+
$value = array_map('sanitize_text_field', $value);
|
112 |
+
$value = implode('{%spr%}', $value);
|
113 |
+
}
|
114 |
+
|
115 |
+
$value = sanitize_text_field($value);
|
116 |
+
|
117 |
+
return $value;
|
118 |
+
}
|
119 |
}
|
120 |
}
|
libs/factory/forms/controls/paddings-editor.php
CHANGED
@@ -1,64 +1,82 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
/**
|
4 |
* Paddings Control
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
*/
|
6 |
-
class FactoryForms329_PaddingsEditorControl extends FactoryForms329_Control {
|
7 |
|
8 |
-
|
|
|
|
|
|
|
9 |
|
10 |
-
|
11 |
-
* Converting string to integer.
|
12 |
-
*
|
13 |
-
* @since 1.0.0
|
14 |
-
* @return integer
|
15 |
-
*/
|
16 |
-
public function html()
|
17 |
-
{
|
18 |
|
19 |
-
|
20 |
-
$rawValue = esc_attr($this->getValue());
|
21 |
|
22 |
-
$
|
23 |
-
$valuesWithUnits = explode(' ', $rawValue);
|
24 |
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
|
|
|
|
|
|
|
|
29 |
|
30 |
-
|
31 |
-
|
32 |
-
$step = $this->getOption('step', 1);
|
33 |
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
<div class="factory-side factory-side-top" data-value="<?php echo $values[0] ?>">
|
42 |
-
<span class="factory-visible-value"><?php echo $values[0] ?><?php echo $units ?></span></div>
|
43 |
-
<div class="factory-side factory-side-bottom" data-value="<?php echo $values[1] ?>">
|
44 |
-
<span class="factory-visible-value"><?php echo $values[1] ?><?php echo $units ?></span></div>
|
45 |
-
<div class="factory-side factory-side-left" data-value="<?php echo $values[2] ?>">
|
46 |
-
<span class="factory-visible-value"><?php echo $values[2] ?><?php echo $units ?></span></div>
|
47 |
-
<div class="factory-side factory-side-right" data-value="<?php echo $values[3] ?>">
|
48 |
-
<span class="factory-visible-value"><?php echo $values[3] ?><?php echo $units ?></span></div>
|
49 |
-
<div class="factory-side factory-side-center" data-value="<?php echo $values[0] ?>"></div>
|
50 |
-
</div>
|
51 |
-
<div class="factory-slider-container">
|
52 |
-
<label class="factory-title">
|
53 |
-
<?php _e('Select a side and move the slider to set up:', 'factory_forms_329') ?>
|
54 |
-
</label>
|
55 |
|
56 |
-
|
57 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
</div>
|
|
|
59 |
</div>
|
60 |
-
|
61 |
-
|
62 |
-
<?php
|
63 |
}
|
64 |
-
}
|
1 |
<?php
|
|
|
2 |
/**
|
3 |
* Paddings Control
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
7 |
+
*
|
8 |
+
* @package factory-forms
|
9 |
+
* @since 1.0.0
|
10 |
*/
|
|
|
11 |
|
12 |
+
// Exit if accessed directly
|
13 |
+
if( !defined('ABSPATH') ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms400_PaddingsEditorControl') ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
|
19 |
+
class Wbcr_FactoryForms400_PaddingsEditorControl extends Wbcr_FactoryForms400_Control {
|
|
|
20 |
|
21 |
+
public $type = 'paddings-editor';
|
|
|
22 |
|
23 |
+
/**
|
24 |
+
* Converting string to integer.
|
25 |
+
*
|
26 |
+
* @since 1.0.0
|
27 |
+
* @return integer
|
28 |
+
*/
|
29 |
+
public function html()
|
30 |
+
{
|
31 |
|
32 |
+
$name = $this->getNameOnForm();
|
33 |
+
$raw_value = esc_attr($this->getValue());
|
|
|
34 |
|
35 |
+
$units = $this->getOption('units');
|
36 |
+
$values_with_units = explode(' ', $raw_value);
|
37 |
+
|
38 |
+
$values = array();
|
39 |
+
foreach($values_with_units as $value_with_unit) {
|
40 |
+
$values[] = intval($value_with_unit);
|
41 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
|
43 |
+
$unit = $this->getOption('units', 'px');
|
44 |
+
$range = $this->getOption('range', array(0, 99));
|
45 |
+
$step = $this->getOption('step', 1);
|
46 |
+
|
47 |
+
?>
|
48 |
+
<div <?php $this->attrs() ?>
|
49 |
+
data-units="<?php echo $unit ?>"
|
50 |
+
data-range-start="<?php echo $range[0] ?>"
|
51 |
+
data-range-end="<?php echo $range[1] ?>"
|
52 |
+
data-step="<?php echo $step ?>">
|
53 |
+
<div class="factory-rectangle">
|
54 |
+
<div class="factory-side factory-side-top" data-value="<?php echo $values[0] ?>">
|
55 |
+
<span class="factory-visible-value"><?php echo $values[0] ?><?php echo $units ?></span>
|
56 |
+
</div>
|
57 |
+
<div class="factory-side factory-side-bottom" data-value="<?php echo $values[1] ?>">
|
58 |
+
<span class="factory-visible-value"><?php echo $values[1] ?><?php echo $units ?></span>
|
59 |
+
</div>
|
60 |
+
<div class="factory-side factory-side-left" data-value="<?php echo $values[2] ?>">
|
61 |
+
<span class="factory-visible-value"><?php echo $values[2] ?><?php echo $units ?></span>
|
62 |
+
</div>
|
63 |
+
<div class="factory-side factory-side-right" data-value="<?php echo $values[3] ?>">
|
64 |
+
<span class="factory-visible-value"><?php echo $values[3] ?><?php echo $units ?></span>
|
65 |
+
</div>
|
66 |
+
<div class="factory-side factory-side-center" data-value="<?php echo $values[0] ?>"></div>
|
67 |
+
</div>
|
68 |
+
<div class="factory-slider-container">
|
69 |
+
<label class="factory-title">
|
70 |
+
<?php _e('Select a side and move the slider to set up:', 'wbcr_factory_forms_400') ?>
|
71 |
+
</label>
|
72 |
+
|
73 |
+
<div class="factory-slider">
|
74 |
+
<div class="factory-bar"></div>
|
75 |
+
</div>
|
76 |
</div>
|
77 |
+
<input type="hidden" class="factory-result" name="<?php echo $name ?>" value="<?php echo $raw_value ?>"/>
|
78 |
</div>
|
79 |
+
<?php
|
80 |
+
}
|
|
|
81 |
}
|
82 |
+
}
|
libs/factory/forms/controls/pattern.php
CHANGED
@@ -3,164 +3,179 @@
|
|
3 |
/**
|
4 |
* Pattern Control
|
5 |
*
|
6 |
-
* @author Alex Kovalev <alex@
|
7 |
-
* @
|
8 |
-
* @copyright (c) 2013-2014, OnePress Ltd
|
9 |
*
|
10 |
* @package factory-forms
|
11 |
* @since 3.1.0
|
12 |
*/
|
13 |
-
class FactoryForms329_PatternControl extends FactoryForms329_Control {
|
14 |
|
15 |
-
|
|
|
|
|
|
|
16 |
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
$this->getOption('name') . '__url',
|
21 |
-
$this->getOption('name') . '__color'
|
22 |
-
);
|
23 |
-
}
|
24 |
|
25 |
-
|
26 |
-
{
|
27 |
-
parent::__construct($options, $form, $provider);
|
28 |
|
29 |
-
|
30 |
-
|
|
|
|
|
|
|
|
|
31 |
}
|
32 |
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
? $this->options['default']['color']
|
37 |
-
: null,
|
38 |
-
'pickerTarget' => '.factory-control-' . $this->options['name'] . ' .factory-picker-target'
|
39 |
-
));
|
40 |
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
|
45 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
$this->customPatterns = $this->getOption('patterns', array());
|
51 |
|
52 |
-
|
53 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
|
|
72 |
}
|
73 |
}
|
74 |
-
}
|
75 |
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
|
80 |
-
|
81 |
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
</div>
|
94 |
-
<
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
<input type="hidden" id="<?php echo $name[1]; ?>" name="<?php echo $name[1]; ?>" value="<?php echo esc_attr($values['color']); ?>" class="factory-color-result">
|
102 |
-
</div>
|
103 |
-
<div class="factory-color-panel">
|
104 |
-
<div class="factory-color-wrap">
|
105 |
-
<span class="factory-color-label"><?php _e('Select color:', 'factory_forms_329') ?></span>
|
106 |
-
<?php $this->color->html() ?>
|
107 |
-
<div class="factory-hint">
|
108 |
-
<i><?php _e('Changing the color may takes a minute or more. Please be patient.', 'factory_forms_329') ?></i>
|
109 |
</div>
|
|
|
110 |
</div>
|
111 |
-
<div class="factory-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
</div>
|
117 |
-
|
118 |
-
<?php if( !empty($group['patterns']) ): ?>
|
119 |
-
<div class="factory-patterns-group factory-patterns-group-<?php echo $key ?>">
|
120 |
-
<div class="factory-patterns-group-title"><?php echo $group['title'] ?></div>
|
121 |
-
<?php $this->printPatterns($group['patterns'], 4) ?>
|
122 |
-
</div>
|
123 |
-
<?php endif; ?>
|
124 |
-
<?php endforeach; ?>
|
125 |
</div>
|
126 |
-
<div class="clearfix"></div>
|
127 |
-
</div>
|
128 |
-
<?php
|
129 |
-
}
|
130 |
-
|
131 |
-
private function printPatterns($patterns, $perRow, $firstItem = null)
|
132 |
-
{
|
133 |
-
$counter = 0;
|
134 |
-
$printFirstItem = $firstItem;
|
135 |
-
|
136 |
-
?>
|
137 |
-
<div class="factory-patterns-row">
|
138 |
<?php
|
139 |
-
|
140 |
-
if( $printFirstItem ) {
|
141 |
-
echo $printFirstItem;
|
142 |
-
$printFirstItem = null;
|
143 |
-
$counter++;
|
144 |
}
|
145 |
|
146 |
-
|
147 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
148 |
|
149 |
?>
|
150 |
-
<div class="factory-patterns-
|
151 |
-
<div class="factory-pattern-holder" style="background:url(<?php echo $pattern['preview']; ?>) repeat;"></div>
|
152 |
-
</div>
|
153 |
<?php
|
154 |
|
155 |
-
if( $
|
156 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
157 |
?>
|
158 |
-
|
159 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
160 |
}
|
|
|
|
|
|
|
161 |
}
|
162 |
-
?>
|
163 |
-
</div>
|
164 |
-
<?php
|
165 |
}
|
166 |
}
|
3 |
/**
|
4 |
* Pattern Control
|
5 |
*
|
6 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
7 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
|
|
8 |
*
|
9 |
* @package factory-forms
|
10 |
* @since 3.1.0
|
11 |
*/
|
|
|
12 |
|
13 |
+
// Exit if accessed directly
|
14 |
+
if( !defined('ABSPATH') ) {
|
15 |
+
exit;
|
16 |
+
}
|
17 |
|
18 |
+
if( !class_exists('Wbcr_FactoryForms400_PatternControl') ) {
|
19 |
+
|
20 |
+
class Wbcr_FactoryForms400_PatternControl extends Wbcr_FactoryForms400_Control {
|
|
|
|
|
|
|
|
|
21 |
|
22 |
+
public $type = 'pattern';
|
|
|
|
|
23 |
|
24 |
+
public function getName()
|
25 |
+
{
|
26 |
+
return array(
|
27 |
+
$this->getOption('name') . '__url',
|
28 |
+
$this->getOption('name') . '__color'
|
29 |
+
);
|
30 |
}
|
31 |
|
32 |
+
public function __construct($options, $form, $provider = null)
|
33 |
+
{
|
34 |
+
parent::__construct($options, $form, $provider);
|
|
|
|
|
|
|
|
|
35 |
|
36 |
+
if( !isset($options['color']) ) {
|
37 |
+
$options['color'] = array();
|
38 |
+
}
|
39 |
|
40 |
+
$options['color'] = array_merge($options['color'], array(
|
41 |
+
'name' => $this->options['name'] . '_color_picker',
|
42 |
+
'default' => isset($this->options['default'])
|
43 |
+
? $this->options['default']['color']
|
44 |
+
: null,
|
45 |
+
'pickerTarget' => '.factory-control-' . $this->options['name'] . ' .factory-picker-target'
|
46 |
+
));
|
47 |
|
48 |
+
if( !$options['color']['default'] ) {
|
49 |
+
$options['color']['default'] = '#1e8cbe';
|
50 |
+
}
|
|
|
51 |
|
52 |
+
$name = $this->getOption('name');
|
53 |
+
|
54 |
+
// filters to get available patterns for the given background contols
|
55 |
+
$this->patterns = apply_filters('wbcr_factory_forms_400_patterns', array());
|
56 |
+
$this->patterns = apply_filters('wbcr_factory_forms_400_patterns-' . $name, $this->patterns);
|
57 |
+
|
58 |
+
$this->custom_patterns = $this->getOption('patterns', array());
|
59 |
+
|
60 |
+
$this->color = new Wbcr_FactoryForms400_ColorControl($options['color'], $form, $provider);
|
61 |
+
}
|
62 |
|
63 |
+
/**
|
64 |
+
* Shows the html markup of the control.
|
65 |
+
*
|
66 |
+
* @since 1.0.0
|
67 |
+
* @return void
|
68 |
+
*/
|
69 |
+
public function html()
|
70 |
+
{
|
71 |
+
$name = $this->getNameOnForm();
|
72 |
+
$values = $this->getValue();
|
73 |
+
|
74 |
+
// if a pattern is not set by defaut, sets the first available pattern
|
75 |
+
if( empty($values['url']) && !empty($this->patterns) ) {
|
76 |
+
foreach($this->patterns as $group_key => $groupValue) {
|
77 |
+
if( !empty($this->patterns[$group_key]['patterns']) ) {
|
78 |
+
$values['url'] = $this->patterns[$group_key]['patterns'][0]['pattern'];
|
79 |
+
break;
|
80 |
+
}
|
81 |
}
|
82 |
}
|
|
|
83 |
|
84 |
+
if( !empty($values['color']) ) {
|
85 |
+
$this->color->setOption('value', $values['color']);
|
86 |
+
}
|
87 |
|
88 |
+
$hasColor = !empty($values['color']);
|
89 |
|
90 |
+
if( $hasColor ) {
|
91 |
+
$this->addCssClass('factory-color-panel-active');
|
92 |
+
}
|
93 |
|
94 |
+
?>
|
95 |
+
<div <?php $this->attrs() ?>>
|
96 |
+
<div class="factory-pattern-controls">
|
97 |
+
<div class="factory-preview-wrap">
|
98 |
+
<div <?php echo (!empty($values['url']))
|
99 |
+
? 'style="background:url(' . esc_url($values['url']) . ') repeat; border:0; font-size:0;"'
|
100 |
+
: ''; ?> class="factory-preview <?php echo $this->getOption('name'); ?>"><span></span>
|
101 |
+
</div>
|
102 |
+
</div>
|
103 |
+
<a href="#" class="button button-default factory-button factory-change-color-btn <?php if( $hasColor ) {
|
104 |
+
echo 'button-active';
|
105 |
+
} ?>" title="<?php _e('Change color', 'wbcr_factory_forms_400') ?>">
|
106 |
+
<i class="fa fa-flask"></i>
|
107 |
+
<span><?php _e('re-color', 'wbcr_factory_forms_400') ?></span>
|
108 |
+
</a>
|
109 |
+
<input type="hidden" id="<?php echo $name[0]; ?>" name="<?php echo $name[0]; ?>" value="<?php echo esc_url($values['url']); ?>" class="factory-pattern-result">
|
110 |
+
<input type="hidden" id="<?php echo $name[1]; ?>" name="<?php echo $name[1]; ?>" value="<?php echo esc_attr($values['color']); ?>" class="factory-color-result">
|
111 |
</div>
|
112 |
+
<div class="factory-color-panel">
|
113 |
+
<div class="factory-color-wrap">
|
114 |
+
<span class="factory-color-label"><?php _e('Select color:', 'wbcr_factory_forms_400') ?></span>
|
115 |
+
<?php $this->color->html() ?>
|
116 |
+
<div class="factory-hint">
|
117 |
+
<i><?php _e('Changing the color may takes a minute or more. Please be patient.', 'wbcr_factory_forms_400') ?></i>
|
118 |
+
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
119 |
</div>
|
120 |
+
<div class="factory-picker-target"></div>
|
121 |
</div>
|
122 |
+
<div class="factory-patterns-panel">
|
123 |
+
<div class="factory-patterns-group factory-patterns-group-custom">
|
124 |
+
<?php $this->printPatterns($this->custom_patterns, 4, '<div class="factory-patterns-item factory-upload-btn factory-no-preview"><span class="fa fa-upload"></span></div>') ?>
|
125 |
+
</div>
|
126 |
+
<?php foreach($this->patterns as $key => $group): ?>
|
127 |
+
<?php if( !empty($group['patterns']) ): ?>
|
128 |
+
<div class="factory-patterns-group factory-patterns-group-<?php echo $key ?>">
|
129 |
+
<div class="factory-patterns-group-title"><?php echo $group['title'] ?></div>
|
130 |
+
<?php $this->printPatterns($group['patterns'], 4) ?>
|
131 |
+
</div>
|
132 |
+
<?php endif; ?>
|
133 |
+
<?php endforeach; ?>
|
134 |
</div>
|
135 |
+
<div class="clearfix"></div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
136 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
137 |
<?php
|
|
|
|
|
|
|
|
|
|
|
138 |
}
|
139 |
|
140 |
+
/**
|
141 |
+
* @param $patterns
|
142 |
+
* @param $perRow
|
143 |
+
* @param null $first_item
|
144 |
+
*/
|
145 |
+
private function printPatterns($patterns, $perRow, $first_item = null)
|
146 |
+
{
|
147 |
+
$counter = 0;
|
148 |
+
$print_first_item = $first_item;
|
149 |
|
150 |
?>
|
151 |
+
<div class="factory-patterns-row">
|
|
|
|
|
152 |
<?php
|
153 |
|
154 |
+
if( $print_first_item ) {
|
155 |
+
echo $print_first_item;
|
156 |
+
$print_first_item = null;
|
157 |
+
$counter++;
|
158 |
+
}
|
159 |
+
|
160 |
+
foreach($patterns as $pattern) {
|
161 |
+
$counter++;
|
162 |
+
|
163 |
?>
|
164 |
+
<div class="factory-patterns-item" data-pattern="<?php echo $pattern['pattern']; ?>">
|
165 |
+
<div class="factory-pattern-holder" style="background:url(<?php echo $pattern['preview']; ?>) repeat;"></div>
|
166 |
+
</div>
|
167 |
+
<?php
|
168 |
+
|
169 |
+
if( $counter == 4 ) {
|
170 |
+
$counter = 0;
|
171 |
+
?>
|
172 |
+
</div><div class="factory-patterns-row">
|
173 |
+
<?php
|
174 |
+
}
|
175 |
}
|
176 |
+
?>
|
177 |
+
</div>
|
178 |
+
<?php
|
179 |
}
|
|
|
|
|
|
|
180 |
}
|
181 |
}
|
libs/factory/forms/controls/radio-colors.php
CHANGED
@@ -15,92 +15,97 @@
|
|
15 |
* array('forest', '#c9d4be'),
|
16 |
*)
|
17 |
*
|
18 |
-
* @author Alex
|
19 |
-
* @copyright (c)
|
20 |
*
|
21 |
* @package factory-forms
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
-
class FactoryForms329_RadioColorsControl extends FactoryForms329_Control {
|
25 |
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
*
|
31 |
-
* @since 1.0.0
|
32 |
-
* @return mixed[]
|
33 |
-
*/
|
34 |
-
private function getItems()
|
35 |
-
{
|
36 |
-
$data = $this->getOption('data', array());
|
37 |
|
38 |
-
|
39 |
-
if( is_array($data) && count($data) == 2 && gettype($data[0]) == 'object' ) {
|
40 |
|
41 |
-
|
42 |
-
// if the data options is a valid callback for a function
|
43 |
-
} elseif( gettype($data) == 'string' ) {
|
44 |
|
45 |
-
|
46 |
-
}
|
47 |
|
48 |
-
|
49 |
-
|
50 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
|
52 |
-
|
53 |
-
|
54 |
-
*
|
55 |
-
* @since 1.0.0
|
56 |
-
* @return void
|
57 |
-
*/
|
58 |
-
protected function beforeHtml()
|
59 |
-
{
|
60 |
-
$nameOnForm = $this->getNameOnForm();
|
61 |
-
$this->addHtmlAttr('name', $nameOnForm);
|
62 |
|
63 |
-
|
64 |
-
|
65 |
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
* @since 1.0.0
|
70 |
-
* @return void
|
71 |
-
*/
|
72 |
-
protected function afterHtml()
|
73 |
-
{
|
74 |
-
echo '</div>';
|
75 |
-
}
|
76 |
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
|
88 |
-
|
89 |
-
|
90 |
-
$checked = ($item[0] == $value)
|
91 |
-
? 'checked="checked"'
|
92 |
-
: '';
|
93 |
|
94 |
-
|
95 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
}
|
97 |
-
|
98 |
-
|
99 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
<input type="radio" <?php $this->attrs() ?> value="<?php echo esc_attr($item[0]) ?>" <?php echo $checked ?>/>
|
101 |
<span style="background-color:<?= esc_attr($item[1]) ?>"></span>
|
102 |
-
|
103 |
</span>
|
104 |
-
|
|
|
105 |
}
|
106 |
}
|
15 |
* array('forest', '#c9d4be'),
|
16 |
*)
|
17 |
*
|
18 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
19 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
20 |
*
|
21 |
* @package factory-forms
|
22 |
* @since 1.0.0
|
23 |
*/
|
|
|
24 |
|
25 |
+
// Exit if accessed directly
|
26 |
+
if( !defined('ABSPATH') ) {
|
27 |
+
exit;
|
28 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
|
30 |
+
if( !class_exists('Wbcr_FactoryForms400_RadioColorsControl') ) {
|
|
|
31 |
|
32 |
+
class Wbcr_FactoryForms400_RadioColorsControl extends Wbcr_FactoryForms400_Control {
|
|
|
|
|
33 |
|
34 |
+
public $type = 'radio-color';
|
|
|
35 |
|
36 |
+
/**
|
37 |
+
* Returns a set of available items for the radio.
|
38 |
+
*
|
39 |
+
* @since 1.0.0
|
40 |
+
* @return mixed[]
|
41 |
+
*/
|
42 |
+
private function getItems()
|
43 |
+
{
|
44 |
+
$data = $this->getOption('data', array());
|
45 |
|
46 |
+
// if the data options is a valid callback for an object method
|
47 |
+
if( (is_array($data) && count($data) == 2 && is_object($data[0])) || is_string($data) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
|
49 |
+
return call_user_func($data);
|
50 |
+
}
|
51 |
|
52 |
+
// if the data options is an array of values
|
53 |
+
return $data;
|
54 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
|
56 |
+
/**
|
57 |
+
* Preparing html attributes before rendering html of the control.
|
58 |
+
*
|
59 |
+
* @since 1.0.0
|
60 |
+
* @return void
|
61 |
+
*/
|
62 |
+
protected function beforeHtml()
|
63 |
+
{
|
64 |
+
$name_on_form = $this->getNameOnForm();
|
65 |
+
$this->addHtmlAttr('name', $name_on_form);
|
66 |
|
67 |
+
echo '<div class="factory-colors-inner-wrap" data-radio-name="' . $name_on_form . '">';
|
68 |
+
}
|
|
|
|
|
|
|
69 |
|
70 |
+
/**
|
71 |
+
* Preparing html attributes afterHtml rendering html of the control.
|
72 |
+
*
|
73 |
+
* @since 1.0.0
|
74 |
+
* @return void
|
75 |
+
*/
|
76 |
+
protected function afterHtml()
|
77 |
+
{
|
78 |
+
echo '</div>';
|
79 |
}
|
80 |
+
|
81 |
+
/**
|
82 |
+
* Shows the html markup of the control.
|
83 |
+
*
|
84 |
+
* @since 1.0.0
|
85 |
+
* @return void
|
86 |
+
*/
|
87 |
+
public function html()
|
88 |
+
{
|
89 |
+
$items = $this->getItems();
|
90 |
+
$value = $this->getValue();
|
91 |
+
|
92 |
+
?>
|
93 |
+
<?php foreach($items as $item) {
|
94 |
+
$checked = ($item[0] == $value)
|
95 |
+
? 'checked="checked"'
|
96 |
+
: '';
|
97 |
+
|
98 |
+
if( empty($item[1]) || strpos($item[1], '#') === false ) {
|
99 |
+
$item[1] = '#fff';
|
100 |
+
}
|
101 |
+
?>
|
102 |
+
<span class="factory-form-radio-item">
|
103 |
+
<lable class="factory-from-radio-label">
|
104 |
<input type="radio" <?php $this->attrs() ?> value="<?php echo esc_attr($item[0]) ?>" <?php echo $checked ?>/>
|
105 |
<span style="background-color:<?= esc_attr($item[1]) ?>"></span>
|
106 |
+
</lable>
|
107 |
</span>
|
108 |
+
<?php }
|
109 |
+
}
|
110 |
}
|
111 |
}
|
libs/factory/forms/controls/radio.php
CHANGED
@@ -9,72 +9,77 @@
|
|
9 |
* default => a default value of the control if the "value" option is not specified
|
10 |
* items => a callback to return items or an array of items to select
|
11 |
*
|
12 |
-
* @author
|
13 |
-
* @copyright (c)
|
14 |
*
|
15 |
* @package factory-forms
|
16 |
* @since 1.0.0
|
17 |
*/
|
18 |
-
class FactoryForms329_RadioControl extends FactoryForms329_Control {
|
19 |
|
20 |
-
|
|
|
|
|
|
|
21 |
|
22 |
-
|
23 |
-
* Returns a set of available items for the radio.
|
24 |
-
*
|
25 |
-
* @since 1.0.0
|
26 |
-
* @return mixed[]
|
27 |
-
*/
|
28 |
-
private function getItems()
|
29 |
-
{
|
30 |
-
$data = $this->getOption('data', array());
|
31 |
|
32 |
-
|
33 |
-
if( is_array($data) && count($data) == 2 && gettype($data[0]) == 'object' ) {
|
34 |
|
35 |
-
|
36 |
-
// if the data options is a valid callback for a function
|
37 |
-
} elseif( gettype($data) == 'string' ) {
|
38 |
|
39 |
-
|
40 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
|
42 |
-
|
43 |
-
|
44 |
-
}
|
45 |
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
|
|
79 |
}
|
80 |
-
}
|
9 |
* default => a default value of the control if the "value" option is not specified
|
10 |
* items => a callback to return items or an array of items to select
|
11 |
*
|
12 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
13 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
14 |
*
|
15 |
* @package factory-forms
|
16 |
* @since 1.0.0
|
17 |
*/
|
|
|
18 |
|
19 |
+
// Exit if accessed directly
|
20 |
+
if( !defined('ABSPATH') ) {
|
21 |
+
exit;
|
22 |
+
}
|
23 |
|
24 |
+
if( !class_exists('Wbcr_FactoryForms400_RadioControl') ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
|
26 |
+
class Wbcr_FactoryForms400_RadioControl extends Wbcr_FactoryForms400_Control {
|
|
|
27 |
|
28 |
+
public $type = 'radio';
|
|
|
|
|
29 |
|
30 |
+
/**
|
31 |
+
* Returns a set of available items for the radio.
|
32 |
+
*
|
33 |
+
* @since 1.0.0
|
34 |
+
* @return mixed[]
|
35 |
+
*/
|
36 |
+
private function getItems()
|
37 |
+
{
|
38 |
+
$data = $this->getOption('data', array());
|
39 |
|
40 |
+
// if the data options is a valid callback for an object method
|
41 |
+
if( (is_array($data) && count($data) == 2 && is_object($data[0])) || is_string($data) ) {
|
|
|
42 |
|
43 |
+
return call_user_func($data);
|
44 |
+
}
|
45 |
+
|
46 |
+
// if the data options is an array of values
|
47 |
+
return $data;
|
48 |
+
}
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Preparing html attributes before rendering html of the control.
|
52 |
+
*
|
53 |
+
* @since 1.0.0
|
54 |
+
* @return void
|
55 |
+
*/
|
56 |
+
protected function beforeHtml()
|
57 |
+
{
|
58 |
+
$name_on_form = $this->getNameOnForm();
|
59 |
+
$this->addHtmlAttr('name', $name_on_form);
|
60 |
+
}
|
61 |
|
62 |
+
/**
|
63 |
+
* Shows the html markup of the control.
|
64 |
+
*
|
65 |
+
* @since 1.0.0
|
66 |
+
* @return void
|
67 |
+
*/
|
68 |
+
public function html()
|
69 |
+
{
|
70 |
+
$items = $this->getItems();
|
71 |
+
$value = $this->getValue();
|
72 |
+
?>
|
73 |
+
<?php foreach($items as $item) {
|
74 |
+
$checked = ($item[0] == $value)
|
75 |
+
? 'checked="checked"'
|
76 |
+
: '';
|
77 |
+
?>
|
78 |
+
<span class="factory-form-radio-item">
|
79 |
+
<lable class="factory-from-radio-label"><?= esc_html($item[1]); ?></lable>
|
80 |
+
<input type="radio" <?php $this->attrs() ?> value="<?php echo esc_attr($item[0]) ?>" <?php echo $checked ?>/>
|
81 |
+
</span>
|
82 |
+
<?php }
|
83 |
+
}
|
84 |
}
|
85 |
+
}
|
libs/factory/forms/controls/textarea.php
CHANGED
@@ -8,62 +8,73 @@
|
|
8 |
* value => a value to show in the control
|
9 |
* default => a default value of the control if the "value" option is not specified
|
10 |
*
|
11 |
-
* @author
|
12 |
-
* @copyright (c)
|
13 |
*
|
14 |
* @package factory-forms
|
15 |
* @since 1.0.0
|
16 |
*/
|
17 |
-
class FactoryForms329_TextareaControl extends FactoryForms329_Control {
|
18 |
|
19 |
-
|
|
|
|
|
|
|
20 |
|
21 |
-
|
22 |
-
* Returns a submit value of the control by a given name.
|
23 |
-
*
|
24 |
-
* @since 1.0.0
|
25 |
-
* @return mixed
|
26 |
-
*/
|
27 |
-
public function getSubmitValue($name, $subName)
|
28 |
-
{
|
29 |
-
$nameOnForm = $this->getNameOnForm($name);
|
30 |
-
$value = isset($_POST[$nameOnForm])
|
31 |
-
? $_POST[$nameOnForm]
|
32 |
-
: null;
|
33 |
-
if( is_array($value) ) {
|
34 |
-
$value = implode(',', $value);
|
35 |
-
}
|
36 |
|
37 |
-
|
38 |
-
}
|
39 |
|
40 |
-
|
41 |
-
* Preparing html attributes before rendering html of the control.
|
42 |
-
*
|
43 |
-
* @since 1.0.0
|
44 |
-
* @return void
|
45 |
-
*/
|
46 |
-
protected function beforeHtml()
|
47 |
-
{
|
48 |
-
$nameOnForm = $this->getNameOnForm();
|
49 |
-
$height = (int)$this->getOption('height', 100);
|
50 |
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
}
|
69 |
}
|
8 |
* value => a value to show in the control
|
9 |
* default => a default value of the control if the "value" option is not specified
|
10 |
*
|
11 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
12 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
13 |
*
|
14 |
* @package factory-forms
|
15 |
* @since 1.0.0
|
16 |
*/
|
|
|
17 |
|
18 |
+
// Exit if accessed directly
|
19 |
+
if( !defined('ABSPATH') ) {
|
20 |
+
exit;
|
21 |
+
}
|
22 |
|
23 |
+
if( !class_exists('Wbcr_FactoryForms400_TextareaControl') ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
|
25 |
+
class Wbcr_FactoryForms400_TextareaControl extends Wbcr_FactoryForms400_Control {
|
|
|
26 |
|
27 |
+
public $type = 'textarea';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
|
29 |
+
/**
|
30 |
+
* Returns a submit value of the control by a given name.
|
31 |
+
*
|
32 |
+
* @since 1.0.0
|
33 |
+
* @return mixed
|
34 |
+
*/
|
35 |
+
public function getSubmitValue($name, $subName)
|
36 |
+
{
|
37 |
+
$name_on_form = $this->getNameOnForm($name);
|
38 |
+
|
39 |
+
$value = isset($_POST[$name_on_form])
|
40 |
+
? $_POST[$name_on_form]
|
41 |
+
: null;
|
42 |
+
|
43 |
+
if( is_array($value) ) {
|
44 |
+
$value = implode(',', $value);
|
45 |
+
}
|
46 |
|
47 |
+
return sanitize_textarea_field($value);
|
48 |
+
}
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Preparing html attributes before rendering html of the control.
|
52 |
+
*
|
53 |
+
* @since 1.0.0
|
54 |
+
* @return void
|
55 |
+
*/
|
56 |
+
protected function beforeHtml()
|
57 |
+
{
|
58 |
+
$name_on_form = $this->getNameOnForm();
|
59 |
+
$height = (int)$this->getOption('height', 100);
|
60 |
+
|
61 |
+
$this->addCssClass('form-control');
|
62 |
+
$this->addHtmlAttr('name', $name_on_form);
|
63 |
+
$this->addHtmlAttr('id', $name_on_form);
|
64 |
+
$this->addHtmlAttr('style', 'min-height:' . $height . 'px');
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* Shows the html markup of the control.
|
69 |
+
*
|
70 |
+
* @since 1.0.0
|
71 |
+
* @return void
|
72 |
+
*/
|
73 |
+
public function html()
|
74 |
+
{
|
75 |
+
?>
|
76 |
+
<textarea <?php $this->attrs(); ?>><?php echo esc_textarea($this->getValue()); ?></textarea>
|
77 |
+
<?php
|
78 |
+
}
|
79 |
}
|
80 |
}
|
libs/factory/forms/controls/textbox.php
CHANGED
@@ -17,67 +17,76 @@
|
|
17 |
* 'data-date-autoclose' => 'true'
|
18 |
* )
|
19 |
*
|
20 |
-
* @author
|
21 |
-
* @copyright (c)
|
22 |
*
|
23 |
* @package factory-forms
|
24 |
* @since 1.0.0
|
25 |
*/
|
26 |
-
class FactoryForms329_TextboxControl extends FactoryForms329_Control {
|
27 |
|
28 |
-
|
|
|
|
|
|
|
29 |
|
30 |
-
|
31 |
-
* Preparing html attributes before rendering html of the control.
|
32 |
-
*
|
33 |
-
* @since 1.0.0
|
34 |
-
* @return void
|
35 |
-
*/
|
36 |
-
protected function beforeHtml()
|
37 |
-
{
|
38 |
-
$value = esc_attr($this->getValue());
|
39 |
-
$nameOnForm = $this->getNameOnForm();
|
40 |
|
41 |
-
|
42 |
-
$this->addHtmlAttr('maxlength', intval($this->getOption('maxLength')));
|
43 |
-
}
|
44 |
|
45 |
-
|
46 |
-
$this->addHtmlAttr('placeholder', $this->getOption('placeholder'));
|
47 |
-
}
|
48 |
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
|
|
|
|
|
|
|
|
55 |
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
{
|
64 |
-
$units = $this->getOption('units', false);
|
65 |
-
?>
|
66 |
-
<?php if( $units ) { ?><div class="input-group"><?php } ?>
|
67 |
-
<input <?php $this->attrs() ?>/>
|
68 |
-
<?php if( $units ) { ?>
|
69 |
-
<span class="input-group-addon"><?php echo $units; ?></span>
|
70 |
-
<?php } ?>
|
71 |
-
<?php if( $units ) { ?></div><?php } ?>
|
72 |
-
<?php
|
73 |
-
}
|
74 |
|
75 |
-
|
76 |
-
|
77 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
78 |
|
79 |
-
|
80 |
-
|
81 |
-
|
|
|
|
|
|
|
|
|
|
|
82 |
}
|
83 |
-
}
|
17 |
* 'data-date-autoclose' => 'true'
|
18 |
* )
|
19 |
*
|
20 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
21 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
22 |
*
|
23 |
* @package factory-forms
|
24 |
* @since 1.0.0
|
25 |
*/
|
|
|
26 |
|
27 |
+
// Exit if accessed directly
|
28 |
+
if( !defined('ABSPATH') ) {
|
29 |
+
exit;
|
30 |
+
}
|
31 |
|
32 |
+
if( !class_exists('Wbcr_FactoryForms400_TextboxControl') ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
|
34 |
+
class Wbcr_FactoryForms400_TextboxControl extends Wbcr_FactoryForms400_Control {
|
|
|
|
|
35 |
|
36 |
+
public $type = 'textbox';
|
|
|
|
|
37 |
|
38 |
+
/**
|
39 |
+
* Preparing html attributes before rendering html of the control.
|
40 |
+
*
|
41 |
+
* @since 1.0.0
|
42 |
+
* @return void
|
43 |
+
*/
|
44 |
+
protected function beforeHtml()
|
45 |
+
{
|
46 |
+
$value = esc_attr($this->getValue());
|
47 |
+
$name_on_form = $this->getNameOnForm();
|
48 |
|
49 |
+
if( $this->getOption('maxLength', false) ) {
|
50 |
+
$this->addHtmlAttr('maxlength', intval($this->getOption('maxLength')));
|
51 |
+
}
|
52 |
+
|
53 |
+
if( $this->getOption('placeholder', false) ) {
|
54 |
+
$this->addHtmlAttr('placeholder', $this->getOption('placeholder'));
|
55 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
|
57 |
+
$this->addCssClass('form-control');
|
58 |
+
$this->addHtmlAttr('type', 'text');
|
59 |
+
$this->addHtmlAttr('id', $name_on_form);
|
60 |
+
$this->addHtmlAttr('name', $name_on_form);
|
61 |
+
$this->addHtmlAttr('value', $value);
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
* Shows the html markup of the control.
|
66 |
+
*
|
67 |
+
* @since 1.0.0
|
68 |
+
* @return void
|
69 |
+
*/
|
70 |
+
public function html()
|
71 |
+
{
|
72 |
+
$units = $this->getOption('units', false);
|
73 |
+
?>
|
74 |
+
<?php if( $units ) { ?><div class="input-group"><?php } ?>
|
75 |
+
<input <?php $this->attrs() ?>/>
|
76 |
+
<?php if( $units ) { ?>
|
77 |
+
<span class="input-group-addon"><?php echo $units; ?></span>
|
78 |
+
<?php } ?>
|
79 |
+
<?php if( $units ) { ?></div><?php } ?>
|
80 |
+
<?php
|
81 |
+
}
|
82 |
|
83 |
+
public function getSubmitValue($name, $subName)
|
84 |
+
{
|
85 |
+
$name_on_form = $this->getNameOnForm($name);
|
86 |
+
|
87 |
+
return isset($_POST[$name_on_form])
|
88 |
+
? sanitize_text_field($_POST[$name_on_form])
|
89 |
+
: '';
|
90 |
+
}
|
91 |
}
|
92 |
+
}
|
libs/factory/forms/controls/url.php
CHANGED
@@ -4,30 +4,40 @@
|
|
4 |
* Url Control
|
5 |
*
|
6 |
* Main options:
|
7 |
-
* @see
|
8 |
*
|
9 |
-
* @author
|
10 |
-
* @copyright (c)
|
11 |
*
|
12 |
* @package factory-forms
|
13 |
* @since 1.0.0
|
14 |
*/
|
15 |
-
class FactoryForms329_UrlControl extends FactoryForms329_TextboxControl {
|
16 |
|
17 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
|
|
30 |
|
31 |
-
|
|
|
32 |
}
|
33 |
}
|
4 |
* Url Control
|
5 |
*
|
6 |
* Main options:
|
7 |
+
* @see FactoryForms400_TextboxControl
|
8 |
*
|
9 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
10 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
11 |
*
|
12 |
* @package factory-forms
|
13 |
* @since 1.0.0
|
14 |
*/
|
|
|
15 |
|
16 |
+
// Exit if accessed directly
|
17 |
+
if( !defined('ABSPATH') ) {
|
18 |
+
exit;
|
19 |
+
}
|
20 |
+
|
21 |
+
if( !class_exists('Wbcr_FactoryForms400_UrlControl') ) {
|
22 |
+
|
23 |
+
class Wbcr_FactoryForms400_UrlControl extends Wbcr_FactoryForms400_TextboxControl {
|
24 |
+
|
25 |
+
public $type = 'url';
|
26 |
|
27 |
+
/**
|
28 |
+
* Adding 'http://' to the url if it was missed.
|
29 |
+
*
|
30 |
+
* @since 1.0.0
|
31 |
+
* @return string
|
32 |
+
*/
|
33 |
+
public function getSubmitValue($name, $sub_name)
|
34 |
+
{
|
35 |
+
$value = parent::getSubmitValue($name, $sub_name);
|
36 |
+
if( !empty($value) && substr($value, 0, 4) != 'http' ) {
|
37 |
+
$value = 'http://' . $value;
|
38 |
+
}
|
39 |
|
40 |
+
return $value;
|
41 |
+
}
|
42 |
}
|
43 |
}
|
libs/factory/forms/controls/wp-editor.php
CHANGED
@@ -10,74 +10,86 @@
|
|
10 |
* tinymce => an array of options for tinymce
|
11 |
* @link http://codex.wordpress.org/Function_Reference/wp_editor
|
12 |
*
|
13 |
-
* @author
|
14 |
-
* @copyright (c)
|
15 |
*
|
16 |
* @package factory-forms
|
17 |
* @since 1.0.0
|
18 |
*/
|
19 |
-
class FactoryForms329_WpEditorControl extends FactoryForms329_Control {
|
20 |
|
21 |
-
|
|
|
|
|
|
|
22 |
|
23 |
-
|
24 |
-
* Preparing html attributes and options for tinymce.
|
25 |
-
*
|
26 |
-
* @since 1.0.0
|
27 |
-
* @return void
|
28 |
-
*/
|
29 |
-
protected function beforeHtml()
|
30 |
-
{
|
31 |
|
32 |
-
|
33 |
-
|
34 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
|
36 |
-
|
37 |
-
|
|
|
|
|
|
|
|
|
|
|
38 |
}
|
39 |
-
}
|
40 |
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
$value = $this->getValue();
|
52 |
-
|
53 |
-
?>
|
54 |
-
<div class='factory-form-wp-editor'>
|
55 |
-
<?php wp_editor($value, $nameOnForm, array(
|
56 |
-
'textarea_name' => $nameOnForm,
|
57 |
-
'wpautop' => false,
|
58 |
-
'teeny' => true,
|
59 |
-
'tinymce' => $this->getOption('tinymce', array())
|
60 |
-
)); ?>
|
61 |
-
</div>
|
62 |
-
<?php
|
63 |
-
}
|
64 |
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
if( is_array($value) ) {
|
78 |
-
$value = implode(',', $value);
|
79 |
}
|
80 |
|
81 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
}
|
83 |
}
|
|
10 |
* tinymce => an array of options for tinymce
|
11 |
* @link http://codex.wordpress.org/Function_Reference/wp_editor
|
12 |
*
|
13 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
14 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
15 |
*
|
16 |
* @package factory-forms
|
17 |
* @since 1.0.0
|
18 |
*/
|
|
|
19 |
|
20 |
+
// Exit if accessed directly
|
21 |
+
if( !defined('ABSPATH') ) {
|
22 |
+
exit;
|
23 |
+
}
|
24 |
|
25 |
+
if( !class_exists('Wbcr_FactoryForms400_WpEditorControl') ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
|
27 |
+
class Wbcr_FactoryForms400_WpEditorControl extends Wbcr_FactoryForms400_Control {
|
28 |
+
|
29 |
+
public $type = 'wp-editor';
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Preparing html attributes and options for tinymce.
|
33 |
+
*
|
34 |
+
* @since 1.0.0
|
35 |
+
* @return void
|
36 |
+
*/
|
37 |
+
protected function beforeHtml()
|
38 |
+
{
|
39 |
|
40 |
+
if( empty($this->options['tinymce']) ) {
|
41 |
+
$this->options['tinymce'] = array();
|
42 |
+
}
|
43 |
+
|
44 |
+
if( !isset($this->options['tinymce']['content_css']) ) {
|
45 |
+
$this->options['tinymce']['content_css'] = FACTORY_FORMS_400_URL . '/assets/css/editor.css';
|
46 |
+
}
|
47 |
}
|
|
|
48 |
|
49 |
+
/**
|
50 |
+
* Shows the html markup of the control.
|
51 |
+
*
|
52 |
+
* @since 1.0.0
|
53 |
+
* @return void
|
54 |
+
*/
|
55 |
+
public function html()
|
56 |
+
{
|
57 |
+
$name_on_form = $this->getNameOnForm();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
|
59 |
+
$value = $this->getValue();
|
60 |
+
|
61 |
+
?>
|
62 |
+
<div class='factory-form-wp-editor'>
|
63 |
+
<?php wp_editor($value, $name_on_form, array(
|
64 |
+
'textarea_name' => $name_on_form,
|
65 |
+
'wpautop' => false,
|
66 |
+
'teeny' => true,
|
67 |
+
'tinymce' => $this->getOption('tinymce', array())
|
68 |
+
)); ?>
|
69 |
+
</div>
|
70 |
+
<?php
|
|
|
|
|
71 |
}
|
72 |
|
73 |
+
/**
|
74 |
+
* Returns a submit value of the control by a given name.
|
75 |
+
*
|
76 |
+
* @since 1.0.0
|
77 |
+
* @return mixed
|
78 |
+
*/
|
79 |
+
public function getSubmitValue($name, $subName)
|
80 |
+
{
|
81 |
+
$name_on_form = $this->getNameOnForm($name);
|
82 |
+
|
83 |
+
$value = isset($_POST[$name_on_form])
|
84 |
+
? $_POST[$name_on_form]
|
85 |
+
: null;
|
86 |
+
|
87 |
+
if( is_array($value) ) {
|
88 |
+
$value = implode(',', $value);
|
89 |
+
}
|
90 |
+
|
91 |
+
return wp_kses_post($value);
|
92 |
+
}
|
93 |
}
|
94 |
}
|
95 |
+
|
libs/factory/forms/helpers.php
DELETED
@@ -1,101 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Html Helper is to render form elements independently.
|
4 |
-
*
|
5 |
-
* Factory Forms is a Factory module that provides a declarative
|
6 |
-
* way to build forms without any extra html or css markup.
|
7 |
-
*
|
8 |
-
* @author Paul Kashtanoff <paul@byonepress.com>
|
9 |
-
* @copyright (c) 2013, OnePress Ltd
|
10 |
-
*
|
11 |
-
* @package factory-forms
|
12 |
-
* @since 1.0.0
|
13 |
-
*/
|
14 |
-
|
15 |
-
/**
|
16 |
-
* A class that provides a set of methods to render form elements independently.
|
17 |
-
*
|
18 |
-
* @since 1.0.0
|
19 |
-
*/
|
20 |
-
class FactoryForms329_FormHelpers {
|
21 |
-
|
22 |
-
/**
|
23 |
-
* Renders a form element.
|
24 |
-
*
|
25 |
-
* @since 1.0.0
|
26 |
-
* @param type $type A type of a form element.
|
27 |
-
* @param type $options Element options.
|
28 |
-
* @return void
|
29 |
-
*/
|
30 |
-
public static function render( $type, $options = array() ) {
|
31 |
-
$options['type'] = $type;
|
32 |
-
|
33 |
-
if ( FactoryForms329_Form::isControl($type) ) {
|
34 |
-
self::renderControl($type, $options);
|
35 |
-
} elseif ( FactoryForms329_Form::isControlHolder($type) ) {
|
36 |
-
self::renderHolder($type, $options);
|
37 |
-
} else {
|
38 |
-
print_r($options);
|
39 |
-
die('The control type was not found: ' . $type );
|
40 |
-
}
|
41 |
-
}
|
42 |
-
|
43 |
-
/**
|
44 |
-
* Renders a given control.
|
45 |
-
*
|
46 |
-
* @since 1.0.0
|
47 |
-
* @param type $type A control type.
|
48 |
-
* @param type $options Control options.
|
49 |
-
* @return void
|
50 |
-
*/
|
51 |
-
public static function renderControl($type, $options) {
|
52 |
-
FactoryForms329_Form::connectAssetsForItem( $options );
|
53 |
-
|
54 |
-
$data = self::$_registeredControls[$type];
|
55 |
-
require_once ($data['include']);
|
56 |
-
$object = new $data['class']( $options );
|
57 |
-
$object->html();
|
58 |
-
}
|
59 |
-
|
60 |
-
/**
|
61 |
-
* Renders a given control holder.
|
62 |
-
*
|
63 |
-
* @since 1.0.0
|
64 |
-
* @param type $type A holder type.
|
65 |
-
* @param type $options Holder options.
|
66 |
-
* @return void
|
67 |
-
*/
|
68 |
-
public static function renderHolder($type, $options) {
|
69 |
-
FactoryForms329_Form::connectAssetsForItem( $options );
|
70 |
-
|
71 |
-
$data = self::$_registeredHolders[$type];
|
72 |
-
require_once ($data['include']);
|
73 |
-
$object = new $data['class']( $options );
|
74 |
-
$object->html();
|
75 |
-
}
|
76 |
-
|
77 |
-
/**
|
78 |
-
* A helper method to extract control options (items) by a given name.
|
79 |
-
*
|
80 |
-
* @since 3.0.5
|
81 |
-
* @param string $controlName a control name to search
|
82 |
-
* @param mixed $options a set of contol options
|
83 |
-
* @return null|string
|
84 |
-
*/
|
85 |
-
public static function extractControlOptions( $controlName, $options = array() ) {
|
86 |
-
|
87 |
-
foreach($options as $itemOptions) {
|
88 |
-
|
89 |
-
if ( isset( $itemOptions['name'] ) && $itemOptions['name'] == $controlName ) {
|
90 |
-
return $itemOptions;
|
91 |
-
}
|
92 |
-
|
93 |
-
if ( isset( $itemOptions['items'] ) && is_array( $itemOptions['items'] ) ) {
|
94 |
-
$result = self::extractControlOptions( $controlName, $itemOptions['items'] );
|
95 |
-
if ( $result ) return $result;
|
96 |
-
}
|
97 |
-
}
|
98 |
-
|
99 |
-
return null;
|
100 |
-
}
|
101 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/forms/includes/complex-control.class.php
CHANGED
@@ -1,117 +1,133 @@
|
|
1 |
<?php
|
2 |
-
/**
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
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 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* The file contains the base class for all complex controls.
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
7 |
+
*
|
8 |
+
* @package factory-forms
|
9 |
+
* @since 1.0.0
|
10 |
+
*/
|
11 |
|
12 |
+
// Exit if accessed directly
|
13 |
+
if( !defined('ABSPATH') ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
if( !class_exists('Wbcr_FactoryForms400_ComplexControl') ) {
|
17 |
+
/**
|
18 |
+
* The base class for all controls.
|
19 |
+
*
|
20 |
+
* @since 1.0.0
|
21 |
+
*/
|
22 |
+
abstract class Wbcr_FactoryForms400_ComplexControl extends Wbcr_FactoryForms400_Control {
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Is this element a complex control?
|
26 |
+
*
|
27 |
+
* @since 1.0.0
|
28 |
+
* @var bool
|
29 |
+
*/
|
30 |
+
public $is_complex_control = true;
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Contains a set of internal controls.
|
34 |
+
*
|
35 |
+
* @since 1.0.0
|
36 |
+
* @var Wbcr_FactoryForms400_Control[]
|
37 |
+
*/
|
38 |
+
public $inner_controls = array();
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Sets a provider for the control.
|
42 |
+
*
|
43 |
+
* @since 1.0.0
|
44 |
+
* @param Wbcr_IFactoryForms400_ValueProvider $provider
|
45 |
+
* @return void
|
46 |
+
*/
|
47 |
+
public function setProvider($provider)
|
48 |
+
{
|
49 |
+
$this->provider = $provider;
|
50 |
+
|
51 |
+
foreach($this->inner_controls as $control) {
|
52 |
+
$control->setProvider($provider);
|
53 |
+
}
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Returns a control name used to save data with a provider.
|
58 |
+
*
|
59 |
+
* The method can return if the control have several elements.
|
60 |
+
*
|
61 |
+
* @since 1.0.0
|
62 |
+
* @return array|string|null A control name.
|
63 |
+
*/
|
64 |
+
public function getName()
|
65 |
+
{
|
66 |
+
$names = array();
|
67 |
+
|
68 |
+
foreach($this->inner_controls as $control) {
|
69 |
+
$inner_names = $control->getName();
|
70 |
+
if( is_array($inner_names) ) {
|
71 |
+
$names = array_merge($names, $inner_names);
|
72 |
+
} else $names[] = $inner_names;
|
73 |
+
}
|
74 |
+
|
75 |
+
return $names;
|
76 |
+
}
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Returns an array of value to save received after submission of a form.
|
80 |
+
*
|
81 |
+
* @see getSubmitValue
|
82 |
+
*
|
83 |
+
* The array has the following format:
|
84 |
+
* array(
|
85 |
+
* 'control-name1' => 'value1',
|
86 |
+
* 'control-name2__sub-name1' => 'value2'
|
87 |
+
* 'control-name2__sub-name2' => 'value3'
|
88 |
+
* )
|
89 |
+
*
|
90 |
+
* @since 1.0.0
|
91 |
+
* @return array
|
92 |
+
*/
|
93 |
+
public function getValuesToSave()
|
94 |
+
{
|
95 |
+
$values = array();
|
96 |
+
|
97 |
+
foreach($this->inner_controls as $control) {
|
98 |
+
$inner_values = $control->getValuesToSave();
|
99 |
+
if( is_array($inner_values) ) {
|
100 |
+
$values = array_merge($values, $inner_values);
|
101 |
+
} else $values[] = $inner_values;
|
102 |
+
}
|
103 |
+
|
104 |
+
return $values;
|
105 |
+
}
|
106 |
+
|
107 |
+
/**
|
108 |
+
* Returns an initial value of control that is used to render the control first time.
|
109 |
+
*
|
110 |
+
* @since 1.0.0
|
111 |
+
* @param null $index
|
112 |
+
* @param bool $multiple
|
113 |
+
* @return array
|
114 |
+
*/
|
115 |
+
public function getValue($index = null, $multiple = false)
|
116 |
+
{
|
117 |
+
|
118 |
+
$values = array();
|
119 |
+
foreach($this->inner_controls as $control) {
|
120 |
+
$inner_values = array_merge($values, $control->getValue());
|
121 |
+
if( is_array($inner_values) ) {
|
122 |
+
$values = array_merge($values, $inner_values);
|
123 |
+
} else $values[] = $inner_values;
|
124 |
+
}
|
125 |
+
|
126 |
+
if( $index !== null ) {
|
127 |
+
return $values[$index];
|
128 |
+
} else {
|
129 |
+
return $values;
|
130 |
+
}
|
131 |
+
}
|
132 |
+
}
|
133 |
+
}
|
libs/factory/forms/includes/control-holder.class.php
CHANGED
@@ -1,152 +1,173 @@
|
|
1 |
<?php
|
2 |
-
/**
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
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 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* The file contains the base class for all control holder
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
7 |
+
*
|
8 |
+
* @package factory-forms
|
9 |
+
* @since 1.0.0
|
10 |
+
*/
|
11 |
+
|
12 |
+
// Exit if accessed directly
|
13 |
+
if( !defined('ABSPATH') ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
|
17 |
+
if( !class_exists('Wbcr_FactoryForms400_ControlHolder') ) {
|
18 |
+
/**
|
19 |
+
* The base class for control holders.
|
20 |
+
*
|
21 |
+
* @since 1.0.0
|
22 |
+
*/
|
23 |
+
abstract class Wbcr_FactoryForms400_ControlHolder extends Wbcr_FactoryForms400_Control {
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Holder Elements.
|
27 |
+
*
|
28 |
+
* @since 1.0.0
|
29 |
+
* @var Wbcr_FactoryForms400_Control[]
|
30 |
+
*/
|
31 |
+
protected $elements = array();
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Is this element a control holder?
|
35 |
+
*
|
36 |
+
* @since 1.0.0
|
37 |
+
* @var bool
|
38 |
+
*/
|
39 |
+
public $is_holder = true;
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Creates a new instance of control holder.
|
43 |
+
*
|
44 |
+
* @since 1.0.0
|
45 |
+
* @param mixed[] $options A holder options.
|
46 |
+
* @param Wbcr_FactoryForms400_Form $form A parent form.
|
47 |
+
*/
|
48 |
+
public function __construct($options, $form)
|
49 |
+
{
|
50 |
+
parent::__construct($options, $form);
|
51 |
+
|
52 |
+
$this->elements = $form->createElements($options['items']);
|
53 |
+
|
54 |
+
foreach((array)$this->elements as $val) {
|
55 |
+
$val->parent = $this;
|
56 |
+
}
|
57 |
+
}
|
58 |
+
|
59 |
+
/**
|
60 |
+
* Returns holder elements.
|
61 |
+
*
|
62 |
+
* @since 1.0.0
|
63 |
+
* @return Wbcr_FactoryForms400_FormElement[].
|
64 |
+
*/
|
65 |
+
public function getElements()
|
66 |
+
{
|
67 |
+
return $this->elements;
|
68 |
+
}
|
69 |
+
|
70 |
+
/**
|
71 |
+
* Renders the form or a given control holder.
|
72 |
+
*
|
73 |
+
* @since 1.0.0
|
74 |
+
* @return void
|
75 |
+
*/
|
76 |
+
function render()
|
77 |
+
{
|
78 |
+
$this->beforeRendering();
|
79 |
+
|
80 |
+
$is_first_item = true;
|
81 |
+
|
82 |
+
foreach($this->elements as $element) {
|
83 |
+
$element->setOption('isFirst', $is_first_item);
|
84 |
+
|
85 |
+
if( $is_first_item ) {
|
86 |
+
$is_first_item = false;
|
87 |
+
}
|
88 |
+
|
89 |
+
do_action('wbcr_factory_form_before_element_' . $element->getName());
|
90 |
+
|
91 |
+
// if a current item is a control holder
|
92 |
+
if( $element->is_holder ) {
|
93 |
+
|
94 |
+
$this->form->layout->beforeHolder($element);
|
95 |
+
$element->render();
|
96 |
+
$this->form->layout->afterHolder($element);
|
97 |
+
// if a current item is an input control
|
98 |
+
} elseif( $element->is_control ) {
|
99 |
+
|
100 |
+
$this->form->layout->beforeControl($element);
|
101 |
+
$element->render();
|
102 |
+
$this->form->layout->afterControl($element);
|
103 |
+
// if a current item is a custom form element
|
104 |
+
} elseif( $element->is_custom ) {
|
105 |
+
|
106 |
+
$element->render();
|
107 |
+
// otherwise, show the error
|
108 |
+
} else {
|
109 |
+
echo('[ERROR] Invalid item.');
|
110 |
+
}
|
111 |
+
|
112 |
+
do_action('wbcr_factory_form_after_element_' . $element->getName());
|
113 |
+
}
|
114 |
+
|
115 |
+
$this->afterRendering();
|
116 |
+
}
|
117 |
+
|
118 |
+
/**
|
119 |
+
* Rendering a beginning of a holder.
|
120 |
+
*
|
121 |
+
* @since 1.0.0
|
122 |
+
* @return void
|
123 |
+
*/
|
124 |
+
public function beforeRendering()
|
125 |
+
{
|
126 |
+
}
|
127 |
+
|
128 |
+
/**
|
129 |
+
* Rendering an end of a holder.
|
130 |
+
*
|
131 |
+
* @since 1.0.0
|
132 |
+
* @return void
|
133 |
+
*/
|
134 |
+
public function afterRendering()
|
135 |
+
{
|
136 |
+
}
|
137 |
+
|
138 |
+
/**
|
139 |
+
* Rendering some html before an inner holder.
|
140 |
+
*
|
141 |
+
* @since 1.0.0
|
142 |
+
* @return void
|
143 |
+
*/
|
144 |
+
public function beforeInnerHolder()
|
145 |
+
{
|
146 |
+
}
|
147 |
+
|
148 |
+
/**
|
149 |
+
* Rendering some html after an inner holder.
|
150 |
+
*
|
151 |
+
* @since 1.0.0
|
152 |
+
* @return void
|
153 |
+
*/
|
154 |
+
public function afterInnerHolder()
|
155 |
+
{
|
156 |
+
}
|
157 |
+
|
158 |
+
|
159 |
+
public function beforeInnerElement()
|
160 |
+
{
|
161 |
+
}
|
162 |
+
|
163 |
+
/**
|
164 |
+
* Rendering some html after an inner element.
|
165 |
+
*
|
166 |
+
* @since 1.0.0
|
167 |
+
* @return void
|
168 |
+
*/
|
169 |
+
public function afterInnerElement()
|
170 |
+
{
|
171 |
+
}
|
172 |
+
}
|
173 |
+
}
|
libs/factory/forms/includes/control.class.php
CHANGED
@@ -2,382 +2,398 @@
|
|
2 |
/**
|
3 |
* The file contains the base class for all controls.
|
4 |
*
|
5 |
-
* @author
|
6 |
-
* @copyright (c)
|
7 |
*
|
8 |
* @package factory-forms
|
9 |
* @since 1.0.0
|
10 |
*/
|
11 |
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
*/
|
17 |
-
abstract class FactoryForms329_Control extends FactoryForms329_FormElement {
|
18 |
-
|
19 |
-
/**
|
20 |
-
* Is this element a control?
|
21 |
-
*
|
22 |
-
* @since 1.0.0
|
23 |
-
* @var bool
|
24 |
-
*/
|
25 |
-
public $isControl = true;
|
26 |
-
|
27 |
-
/**
|
28 |
-
* Is this element a complex control?
|
29 |
-
*
|
30 |
-
* @since 1.0.0
|
31 |
-
* @var bool
|
32 |
-
*/
|
33 |
-
public $isComplexControl = false;
|
34 |
|
35 |
-
|
36 |
-
* A provider that is used to get values.
|
37 |
-
*
|
38 |
-
* @since 1.0.0
|
39 |
-
* @var IFactoryValueProvider
|
40 |
-
*/
|
41 |
-
protected $provider = null;
|
42 |
|
43 |
/**
|
44 |
-
*
|
45 |
*
|
46 |
* @since 1.0.0
|
47 |
-
* @return void
|
48 |
*/
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
protected function printName()
|
89 |
-
{
|
90 |
-
$name = $this->getName();
|
91 |
-
if( is_array($name) ) {
|
92 |
-
echo $name[0];
|
93 |
-
} else echo $name;
|
94 |
-
}
|
95 |
-
|
96 |
-
/**
|
97 |
-
* Returns a control scope.
|
98 |
-
*
|
99 |
-
* @since 1.0.0
|
100 |
-
* @return string|null A control scope.
|
101 |
-
*/
|
102 |
-
public function getScope()
|
103 |
-
{
|
104 |
-
return isset($this->options['scope'])
|
105 |
-
? $this->options['scope']
|
106 |
-
: null;
|
107 |
-
}
|
108 |
-
|
109 |
-
/**
|
110 |
-
* Prints a control scope.
|
111 |
-
*
|
112 |
-
* @since 1.0.0
|
113 |
-
* @return void
|
114 |
-
*/
|
115 |
-
protected function printScope()
|
116 |
-
{
|
117 |
-
echo $this->getScope();
|
118 |
-
}
|
119 |
-
|
120 |
-
/**
|
121 |
-
* Returns a name of control on a form (scope + _ + name)
|
122 |
-
*
|
123 |
-
* @since 1.0.0
|
124 |
-
* @return string|null A control name on a form.
|
125 |
-
*/
|
126 |
-
public function getNameOnForm($name = null)
|
127 |
-
{
|
128 |
-
$scope = $this->getScope();
|
129 |
-
$name = !$name
|
130 |
-
? $this->getName()
|
131 |
-
: $name;
|
132 |
-
|
133 |
-
if( is_array($name) ) {
|
134 |
-
$names = array();
|
135 |
-
foreach($name as $item) {
|
136 |
-
$names[] = empty($scope)
|
137 |
-
? $item
|
138 |
-
: $scope . '_' . $item;
|
139 |
-
}
|
140 |
-
|
141 |
-
return $names;
|
142 |
}
|
143 |
|
144 |
-
|
145 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
146 |
}
|
147 |
-
|
148 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
}
|
150 |
|
151 |
-
|
152 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
153 |
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
}
|
166 |
-
}
|
167 |
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
$value = isset($_POST[$nameOnForm])
|
178 |
-
? $_POST[$nameOnForm]
|
179 |
-
: null;
|
180 |
-
if( is_array($value) ) {
|
181 |
-
$value = implode(',', $value);
|
182 |
}
|
183 |
|
184 |
-
|
185 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
186 |
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
* array(
|
194 |
-
* 'control-name1' => 'value1',
|
195 |
-
* 'control-name2__sub-name1' => 'value2'
|
196 |
-
* 'control-name2__sub-name2' => 'value3'
|
197 |
-
* )
|
198 |
-
*
|
199 |
-
* @since 3.1.0
|
200 |
-
* @return mixed[]
|
201 |
-
*/
|
202 |
-
public function getValuesToSave()
|
203 |
-
{
|
204 |
-
$name = $this->getName();
|
205 |
-
|
206 |
-
if( is_array($name) ) {
|
207 |
-
$i = 0;
|
208 |
-
|
209 |
-
foreach($name as $singleName) {
|
210 |
-
$subName = $this->getSubName($singleName);
|
211 |
-
if( !$subName ) {
|
212 |
-
$subName = $i;
|
213 |
-
$i++;
|
214 |
}
|
215 |
-
|
|
|
216 |
}
|
217 |
|
218 |
-
|
219 |
-
|
|
|
|
|
|
|
|
|
220 |
|
221 |
-
|
|
|
222 |
|
223 |
-
|
224 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
225 |
|
226 |
-
/**
|
227 |
-
* Returns an initial value of control that is used to render the control first time.
|
228 |
-
*
|
229 |
-
* @since 1.0.0
|
230 |
-
* @return mixed;
|
231 |
-
*/
|
232 |
-
public function getValue($index = null, $multiple = false)
|
233 |
-
{
|
234 |
-
if( isset($this->options['value'])
|
2 |
/**
|
3 |
* The file contains the base class for all controls.
|
4 |
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 2018, Webcraftic Ltd
|
7 |
*
|
8 |
* @package factory-forms
|
9 |
* @since 1.0.0
|
10 |
*/
|
11 |
|
12 |
+
// Exit if accessed directly
|
13 |
+
if( !defined('ABSPATH') ) {
|
14 |
+
exit;
|
15 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms400_Control') ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
|
19 |
/**
|
20 |
+
* The base class for all controls.
|
21 |
*
|
22 |
* @since 1.0.0
|
|
|
23 |
*/
|
24 |
+
abstract class Wbcr_FactoryForms400_Control extends Wbcr_FactoryForms400_FormElement {
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Is this element a control?
|
28 |
+
*
|
29 |
+
* @since 1.0.0
|
30 |
+
* @var bool
|
31 |
+
*/
|
32 |
+
public $is_control = true;
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Is this element a complex control?
|
36 |
+
*
|
37 |
+
* @since 1.0.0
|
38 |
+
* @var bool
|
39 |
+
*/
|
40 |
+
public $is_complex_control = false;
|
41 |
+
|
42 |
+
/**
|
43 |
+
* A provider that is used to get values.
|
44 |
+
*
|
45 |
+
* @since 1.0.0
|
46 |
+
* @var Wbcr_IFactoryForms400_ValueProvider
|
47 |
+
*/
|
48 |
+
protected $provider = null;
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Create a new instance of the control.
|
52 |
+
*
|
53 |
+
* @param mixed[] $options
|
54 |
+
* @param FactoryForms400_Form $form
|
55 |
+
* @param null $provider
|
56 |
+
* @since 1.0.0
|
57 |
+
* @return void
|
58 |
+
*/
|
59 |
+
public function __construct($options, $form, $provider = null)
|
60 |
+
{
|
61 |
+
parent::__construct($options, $form);
|
62 |
+
$this->provider = $provider;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
}
|
64 |
|
65 |
+
/**
|
66 |
+
* Sets a provider for the control.
|
67 |
+
*
|
68 |
+
* @since 1.0.0
|
69 |
+
* @param IFactoryForms400_ValueProvider $provider
|
70 |
+
* @return void
|
71 |
+
*/
|
72 |
+
public function setProvider($provider)
|
73 |
+
{
|
74 |
+
$this->provider = $provider;
|
75 |
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* Returns a control name used to save data with a provider.
|
79 |
+
*
|
80 |
+
* The method can return if the control have several elements.
|
81 |
+
*
|
82 |
+
* @since 1.0.0
|
83 |
+
* @return string[]|string|null A control name.
|
84 |
+
*/
|
85 |
+
public function getName()
|
86 |
+
{
|
87 |
+
return isset($this->options['name'])
|
88 |
+
? $this->options['name']
|
89 |
+
: null;
|
90 |
}
|
91 |
|
92 |
+
/**
|
93 |
+
* Prints a control name used to save data with a provider.
|
94 |
+
*
|
95 |
+
* @since 1.0.0
|
96 |
+
* @return void
|
97 |
+
*/
|
98 |
+
protected function printName()
|
99 |
+
{
|
100 |
+
$name = $this->getName();
|
101 |
+
if( is_array($name) ) {
|
102 |
+
echo $name[0];
|
103 |
+
} else echo $name;
|
104 |
+
}
|
105 |
|
106 |
+
/**
|
107 |
+
* Returns a control scope.
|
108 |
+
*
|
109 |
+
* @since 1.0.0
|
110 |
+
* @return string|null A control scope.
|
111 |
+
*/
|
112 |
+
public function getScope()
|
113 |
+
{
|
114 |
+
return isset($this->options['scope'])
|
115 |
+
? $this->options['scope']
|
116 |
+
: null;
|
117 |
+
}
|
|
|
118 |
|
119 |
+
/**
|
120 |
+
* Prints a control scope.
|
121 |
+
*
|
122 |
+
* @since 1.0.0
|
123 |
+
* @return void
|
124 |
+
*/
|
125 |
+
protected function printScope()
|
126 |
+
{
|
127 |
+
echo $this->getScope();
|
|
|
|
|
|
|
|
|
|
|
128 |
}
|
129 |
|
130 |
+
/**
|
131 |
+
* Returns a name of control on a form (scope + _ + name)
|
132 |
+
*
|
133 |
+
* @since 1.0.0
|
134 |
+
* @param null|string $name
|
135 |
+
* @return array|null|string|string[]
|
136 |
+
*/
|
137 |
+
public function getNameOnForm($name = null)
|
138 |
+
{
|
139 |
+
$scope = $this->getScope();
|
140 |
+
$name = !$name
|
141 |
+
? $this->getName()
|
142 |
+
: $name;
|
143 |
|
144 |
+
if( is_array($name) ) {
|
145 |
+
$names = array();
|
146 |
+
foreach($name as $item) {
|
147 |
+
$names[] = empty($scope)
|
148 |
+
? $item
|
149 |
+
: $scope . '_' . $item;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
150 |
}
|
151 |
+
|
152 |
+
return $names;
|
153 |
}
|
154 |
|
155 |
+
if( empty($scope) ) {
|
156 |
+
return $name;
|
157 |
+
}
|
158 |
+
if( empty($name) ) {
|
159 |
+
return null;
|
160 |
+
}
|
161 |
|
162 |
+
return $scope . '_' . $name;
|
163 |
+
}
|
164 |
|
165 |
+
/**
|
166 |
+
* Prints a control name on a form.
|
167 |
+
*
|
168 |
+
* @since 1.0.0
|
169 |
+
* @return void
|
170 |
+
*/
|
171 |
+
public function printNameOnForm()
|
172 |
+
{
|
173 |
+
$name = $this->getNameOnForm();
|
174 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|