Version Description
- Added new feature You will see the link "Hide notification forever" in each notice. Push it and they will not bother you anymore.
- Added new feature Disable/Enable plugin updates individually.
- Added new feature Disable/Enable plugin auto updates individually.
- Added new feature Updates nags only for Admin. This plugin allows you to hide the update WordPress reminder from all users that are not assumed Administrators (cannot upgrade plugins).
- Translation into Italian
- Fixed quick mode
- Updated interface style
- Fixed a problem with the fonts in the update manager
- Fixed problem with auto update of plugins and themes
Download this release
Release Info
Developer | webcraftic |
Plugin | Clearfy – WordPress optimization plugin and disable ultimate tweaker |
Version | 1.1.8 |
Comparing to | |
See all releases |
Code changes from version 1.1.7 to 1.1.8
- admin/ajax/configurate.php +3 -32
- admin/assets/css/general.css +76 -35
- admin/assets/js/general.js +30 -30
- admin/boot.php +0 -61
- admin/includes/classes/class.pages.php +2 -2
- admin/includes/options.php +0 -5
- admin/pages/additionally.php +71 -66
- admin/pages/code-clean.php +5 -5
- admin/pages/components.php +4 -4
- admin/pages/defence.php +5 -5
- admin/pages/double-pages.php +5 -5
- admin/pages/privacy.php +5 -5
- admin/pages/quick-start.php +43 -27
- admin/pages/seo.php +5 -34
- admin/pages/widgets.php +5 -5
- clearfy.php +6 -6
- components/assets-manager/admin/boot.php +11 -0
- components/assets-manager/admin/pages/assets-manager.php +4 -4
- components/assets-manager/admin/pages/more-features.php +2 -2
- components/assets-manager/assets/css/assets-manager.css +2 -0
- components/assets-manager/assets/css/assets-manager.less +3 -0
- components/assets-manager/gonzales.php +7 -7
- components/assets-manager/includes/class.configurate-assets.php +5 -1
- components/assets-manager/languages/gonzales-fr_FR.mo +0 -0
- components/assets-manager/languages/gonzales-fr_FR.po +171 -0
- components/assets-manager/languages/gonzales-ru_RU.mo +0 -0
- components/assets-manager/languages/gonzales-ru_RU.po +18 -21
- components/assets-manager/readme.txt +8 -13
- components/comments-plus/admin/boot.php +12 -1
- components/comments-plus/admin/pages/comments.php +14 -8
- components/comments-plus/admin/pages/more-features.php +2 -2
- components/comments-plus/comments-plus.php +7 -7
- components/comments-plus/languages/comments-plus-ru_RU.mo +0 -0
- components/comments-plus/languages/comments-plus-ru_RU.po +55 -55
- components/comments-plus/readme.txt +53 -45
- components/disable-admin-notices/admin/ajax/hide-notice.php +51 -0
- components/disable-admin-notices/admin/assets/css/notifications-panel.css +49 -0
- components/disable-admin-notices/admin/assets/css/notifications-panel.less +59 -0
- components/disable-admin-notices/admin/assets/js/general.js +203 -0
- components/disable-admin-notices/admin/boot.php +69 -0
- components/disable-admin-notices/admin/options.php +154 -0
- components/disable-admin-notices/admin/pages/more-features.php +12 -0
- components/disable-admin-notices/admin/pages/notices.php +101 -0
- components/disable-admin-notices/disable-admin-notices.php +85 -0
- components/disable-admin-notices/includes/classes/class.configurate-notices.php +244 -0
- components/disable-admin-notices/languages/disable-admin-notices-ru_RU.mo +0 -0
- components/disable-admin-notices/languages/disable-admin-notices-ru_RU.po +419 -0
- components/disable-admin-notices/readme.txt +56 -0
- components/disable-admin-notices/uninstall.php +12 -0
- components/updates-manager/admin/assets/css/general.css +29 -449
- components/updates-manager/admin/boot.php +25 -2
- components/updates-manager/admin/pages/advanced.php +75 -0
- components/updates-manager/admin/pages/more-features.php +2 -2
- components/updates-manager/admin/pages/plugins.php +328 -0
- components/updates-manager/admin/pages/updates.php +16 -4
- components/updates-manager/includes/classes/class.configurate-updates.php +115 -155
- components/updates-manager/languages/webcraftic-updates-manager-fr_FR.mo +0 -0
- components/updates-manager/languages/webcraftic-updates-manager-fr_FR.po +120 -37
- components/updates-manager/languages/webcraftic-updates-manager-it-IT.mo +0 -0
- components/updates-manager/languages/webcraftic-updates-manager-it-IT.po +184 -0
- components/updates-manager/languages/webcraftic-updates-manager-ru_RU.mo +0 -0
- components/updates-manager/languages/webcraftic-updates-manager-ru_RU.po +128 -1582
- components/updates-manager/webcraftic-updates-manager.php +6 -6
- includes/classes/class.configurate-advanced.php +3 -18
- includes/functions.php +0 -21
- languages/clearfy-it_IT.mo +0 -0
- languages/clearfy-it_IT.po +1324 -0
- languages/clearfy-ru_RU.mo +0 -0
- languages/clearfy-ru_RU.po +331 -260
- libs/factory/bootstrap/assets/flat/css/bootstrap.accordion.css +0 -33
- libs/factory/bootstrap/assets/flat/css/bootstrap.blue.css +0 -48
- libs/factory/bootstrap/assets/flat/css/bootstrap.coffee.css +0 -48
- libs/factory/bootstrap/assets/flat/css/bootstrap.datepicker.css +0 -782
- libs/factory/bootstrap/assets/flat/css/bootstrap.datetimepicker.css +432 -0
- libs/factory/bootstrap/assets/flat/css/bootstrap.ectoplasm.css +0 -48
- libs/factory/bootstrap/assets/flat/css/bootstrap.form-metabox.css +0 -56
- libs/factory/bootstrap/assets/flat/css/bootstrap.midnight.css +0 -48
- libs/factory/bootstrap/assets/flat/css/bootstrap.ocean.css +0 -48
- libs/factory/bootstrap/assets/flat/css/bootstrap.sunrise.css +0 -48
- libs/factory/bootstrap/assets/flat/css/bootstrap.tab.css +0 -112
- libs/factory/bootstrap/assets/flat/css/bootstrap.wp-editor.css +0 -28
- libs/factory/bootstrap/assets/flat/css/control.color-and-opacity.css +0 -24
- libs/factory/bootstrap/assets/flat/css/control.color.css +0 -44
- libs/factory/bootstrap/assets/flat/css/control.dropdown-and-colors.css +0 -16
- libs/factory/bootstrap/assets/flat/css/control.fonts.css +0 -24
- libs/factory/bootstrap/assets/flat/css/control.integer.css +0 -1
- libs/factory/bootstrap/assets/flat/css/control.list.css +0 -67
- libs/factory/bootstrap/assets/flat/css/control.multiple-textbox.css +37 -0
- libs/factory/bootstrap/assets/flat/css/control.pattern.css +0 -187
- libs/factory/bootstrap/assets/flat/css/control.radio-colors.css +0 -39
- libs/factory/bootstrap/assets/flat/css/holder.conrol-group.css +0 -32
- libs/factory/bootstrap/assets/flat/css/plugin.chosen.css +0 -494
- libs/factory/bootstrap/assets/flat/css/plugin.gradient-picker.css +0 -149
- libs/factory/bootstrap/assets/flat/css/plugin.nouislider.css +0 -1
- libs/factory/bootstrap/assets/flat/css/plugin.paddings-editor.css +0 -109
- libs/factory/bootstrap/assets/images/chosen-sprite.png +0 -0
- libs/factory/bootstrap/assets/images/chosen-sprite@2x.png +0 -0
- libs/factory/bootstrap/assets/images/color_picker_pattern.jpg +0 -0
- libs/factory/bootstrap/assets/images/drop-menu_arrow.png +0 -0
- libs/factory/bootstrap/assets/images/no-pattern-background-control.png +0 -0
- libs/factory/bootstrap/assets/js/bootstrap.accordion.js +0 -49
- libs/factory/bootstrap/assets/js/bootstrap.affix.js +0 -127
- libs/factory/bootstrap/assets/js/bootstrap.alert.js +0 -98
- libs/factory/bootstrap/assets/js/bootstrap.button.js +0 -115
- libs/factory/bootstrap/assets/js/bootstrap.carousel.js +0 -217
- libs/factory/bootstrap/assets/js/bootstrap.collapse.js +0 -167
- libs/factory/bootstrap/assets/js/bootstrap.datepicker.js +0 -1966
- libs/factory/bootstrap/assets/js/bootstrap.datetimepicker.js +2746 -0
- libs/factory/bootstrap/assets/js/bootstrap.modal.js +0 -246
- libs/factory/bootstrap/assets/js/bootstrap.popover.js +0 -117
- libs/factory/bootstrap/assets/js/bootstrap.scrollspy.js +0 -158
- libs/factory/bootstrap/assets/js/bootstrap.tab.js +0 -135
- libs/factory/bootstrap/assets/js/bootstrap.transition.js +0 -63
- libs/factory/bootstrap/assets/js/control.color-and-opacity.js +0 -32
- libs/factory/bootstrap/assets/js/control.color.js +0 -88
- libs/factory/bootstrap/assets/js/control.dropdown-and-colors.js +0 -61
- libs/factory/bootstrap/assets/js/control.fonts.js +0 -196
- libs/factory/bootstrap/assets/js/control.gradient.js +0 -51
- libs/factory/bootstrap/assets/js/control.integer.js +0 -102
- libs/factory/bootstrap/assets/js/control.multiple-textbox.js +43 -0
- libs/factory/bootstrap/assets/js/control.pattern.js +0 -218
- libs/factory/bootstrap/assets/js/global.color-functions.js +0 -28
- libs/factory/bootstrap/assets/js/holder.conrol-group.js +0 -20
- libs/factory/bootstrap/assets/js/holder.more-link.js +0 -37
- libs/factory/bootstrap/assets/js/plugin.chosen.js +0 -1211
- libs/factory/bootstrap/assets/js/plugin.color.js +0 -595
- libs/factory/bootstrap/assets/js/plugin.ddslick.js +0 -1
- libs/factory/bootstrap/assets/js/plugin.gradient-picker.js +0 -585
- libs/factory/bootstrap/assets/js/plugin.iris.js +0 -893
- libs/factory/bootstrap/assets/js/plugin.nouislider.js +0 -24
- libs/factory/bootstrap/assets/js/plugin.paddings-editor.js +0 -254
- libs/factory/clearfy/boot.php +9 -9
- libs/factory/clearfy/includes/class.configurate.php +3 -3
- libs/factory/clearfy/langs/{factory_clearfy_101-fr-FR.mo → factory_clearfy_102-fr-FR.mo} +0 -0
- libs/factory/clearfy/langs/{factory_clearfy_101-fr-FR.po → factory_clearfy_102-fr-FR.po} +129 -129
- libs/factory/clearfy/langs/{factory_clearfy_101-ru_RU.mo → factory_clearfy_102-ru_RU.mo} +0 -0
- libs/factory/clearfy/langs/{factory_clearfy_101-ru_RU.po → factory_clearfy_102-ru_RU.po} +0 -0
- libs/factory/clearfy/pages/more-features.php +32 -32
- libs/factory/forms/boot.php +10 -0
- libs/factory/forms/controls/customs/html.php +34 -35
- libs/factory/forms/controls/datepicker-range.php +96 -0
- libs/factory/forms/controls/dropdown.php +2 -3
- libs/factory/forms/controls/gradient.php +4 -1
- libs/factory/forms/controls/multiple-textbox.php +108 -0
- libs/factory/forms/controls/pattern.php +10 -4
- libs/factory/forms/controls/wp-editor.php +25 -2
- libs/factory/forms/includes/form-element.class.php +11 -0
- libs/factory/forms/layouts/bootstrap-3/bootstrap-3.php +1 -1
- libs/factory/notices/ajax.php +0 -38
- libs/factory/notices/assets/css/notices.css +0 -255
- libs/factory/notices/assets/img/alert-danger-icon.png +0 -0
- libs/factory/notices/assets/img/close-icon-for-dark-bg.png +0 -0
- libs/factory/notices/assets/img/key-not-bound.png +0 -0
- libs/factory/notices/assets/js/notices.js +0 -92
- libs/factory/notices/boot.php +0 -28
- libs/factory/notices/notices.php +0 -195
- libs/factory/pages/boot.php +10 -10
- libs/factory/pages/includes/admin-page.class.php +12 -4
- libs/factory/pages/includes/page.class.php +2 -2
- libs/factory/pages/includes/request.class.php +10 -4
- libs/factory/pages/langs/{factory_pages_322-fr_FR.mo → factory_pages_324-fr_FR.mo} +0 -0
- libs/factory/pages/langs/{factory_pages_322-fr_FR.po → factory_pages_324-fr_FR.po} +0 -0
- libs/factory/pages/langs/{factory_pages_322-ru_RU.mo → factory_pages_324-ru_RU.mo} +0 -0
- libs/factory/pages/langs/{factory_pages_322-ru_RU.po → factory_pages_324-ru_RU.po} +0 -0
- libs/factory/pages/pages.php +3 -3
- libs/factory/pages/templates/assets/css/impressive.page.template.css +34 -3
- libs/factory/pages/templates/assets/css/impressive.page.template.less +34 -4
- libs/factory/pages/templates/impressive-page.class.php +154 -47
- readme.txt +20 -8
- updates/010108.php +16 -0
admin/ajax/configurate.php
CHANGED
@@ -21,10 +21,6 @@
|
|
21 |
? sanitize_text_field($_POST['mode'])
|
22 |
: null;
|
23 |
|
24 |
-
$cancel_mode = isset($_POST['cancel_mode'])
|
25 |
-
? true
|
26 |
-
: false;
|
27 |
-
|
28 |
if( empty($mode_name) ) {
|
29 |
echo json_encode(array('error' => __('Undefinded mode.', 'clearfy')));
|
30 |
exit;
|
@@ -48,36 +44,11 @@
|
|
48 |
$option_name = $option->getName();
|
49 |
$option_value = $option->getValue($mode_name);
|
50 |
|
51 |
-
if(
|
52 |
-
|
53 |
-
$set_value = $option_value;
|
54 |
-
}
|
55 |
-
|
56 |
-
update_option($opt_prefix . $option_name, $set_value);
|
57 |
-
} else {
|
58 |
-
delete_option($opt_prefix . $option_name);
|
59 |
-
delete_option($opt_prefix . $option_name . '_is_active');
|
60 |
-
}
|
61 |
-
}
|
62 |
-
|
63 |
-
$get_quick_mods = get_option($opt_prefix . 'quick_modes', array());
|
64 |
-
|
65 |
-
if( !$cancel_mode ) {
|
66 |
-
$get_quick_mods[] = $mode_name;
|
67 |
-
} else {
|
68 |
-
if( !empty($get_quick_mods) && in_array($mode_name, $get_quick_mods) ) {
|
69 |
-
foreach($get_quick_mods as $key => $m_name) {
|
70 |
-
if( $m_name == $mode_name ) {
|
71 |
-
unset($get_quick_mods[$key]);
|
72 |
-
}
|
73 |
-
}
|
74 |
}
|
75 |
-
}
|
76 |
|
77 |
-
|
78 |
-
delete_option($opt_prefix . 'quick_modes');
|
79 |
-
} else {
|
80 |
-
update_option($opt_prefix . 'quick_modes', $get_quick_mods);
|
81 |
}
|
82 |
} else {
|
83 |
$all_options = WbcrClr_Option::getAllOptions();
|
21 |
? sanitize_text_field($_POST['mode'])
|
22 |
: null;
|
23 |
|
|
|
|
|
|
|
|
|
24 |
if( empty($mode_name) ) {
|
25 |
echo json_encode(array('error' => __('Undefinded mode.', 'clearfy')));
|
26 |
exit;
|
44 |
$option_name = $option->getName();
|
45 |
$option_value = $option->getValue($mode_name);
|
46 |
|
47 |
+
if( !empty($option_value) ) {
|
48 |
+
$set_value = $option_value;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
49 |
}
|
|
|
50 |
|
51 |
+
update_option($opt_prefix . $option_name, $set_value);
|
|
|
|
|
|
|
52 |
}
|
53 |
} else {
|
54 |
$all_options = WbcrClr_Option::getAllOptions();
|
admin/assets/css/general.css
CHANGED
@@ -15,9 +15,13 @@
|
|
15 |
width: 49%;
|
16 |
}
|
17 |
#WBCR .wbcr-clearfy-group-header {
|
18 |
-
background: #
|
19 |
-
padding:
|
20 |
-
margin
|
|
|
|
|
|
|
|
|
21 |
}
|
22 |
#WBCR .wbcr-clearfy-group-header strong {
|
23 |
font-size: 15px;
|
@@ -92,16 +96,26 @@
|
|
92 |
padding: 15px 20px;
|
93 |
font-size: 12px;
|
94 |
text-transform: uppercase;
|
95 |
-
background: #
|
96 |
color: #6d6d6d;
|
97 |
font-weight: bold;
|
98 |
border-radius: 5px;
|
99 |
margin-top: 10px;
|
100 |
text-align: left;
|
|
|
101 |
-webkit-transition: all 0.2s ease-out;
|
102 |
-moz-transition: all 0.2s ease-out;
|
103 |
-o-transition: all 0.2s ease-out;
|
104 |
transition: all 0.2s ease-out;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
}
|
106 |
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch:after {
|
107 |
display: block;
|
@@ -120,26 +134,48 @@
|
|
120 |
margin-left: 15px;
|
121 |
margin-top: 3px;
|
122 |
}
|
123 |
-
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-active
|
124 |
-
|
125 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
126 |
}
|
127 |
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-active .wbcr-clearfy-button-activate-mode {
|
128 |
-
|
|
|
|
|
129 |
}
|
130 |
-
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-
|
131 |
-
|
|
|
|
|
|
|
|
|
|
|
132 |
}
|
133 |
-
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-mode-reset
|
134 |
-
background-color: #
|
135 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
136 |
}
|
137 |
-
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-mode-
|
138 |
-
background-color: #
|
139 |
}
|
140 |
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-loading .wbcr-clearfy-switch-confirmation button {
|
141 |
-
background-color: #
|
142 |
-
color: #
|
143 |
cursor: default !important;
|
144 |
}
|
145 |
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch .wbcr-clearfy-switch-confirmation {
|
@@ -156,7 +192,7 @@
|
|
156 |
}
|
157 |
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch .wbcr-clearfy-switch-confirmation button {
|
158 |
display: inline-block;
|
159 |
-
width:
|
160 |
margin: 12px 0 0;
|
161 |
border: 0;
|
162 |
box-shadow: none;
|
@@ -165,22 +201,27 @@
|
|
165 |
font-size: 13px;
|
166 |
border-radius: 3px;
|
167 |
outline: none;
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
}
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
|
|
|
|
|
|
|
|
|
|
184 |
}
|
185 |
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch .wbcr-clearfy-switch-confirmation button:active {
|
186 |
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.5);
|
@@ -263,7 +304,7 @@
|
|
263 |
background: #d6d6d6;
|
264 |
color: #5f5d5d;
|
265 |
}
|
266 |
-
@media screen and (max-width:
|
267 |
#WBCR #wbcr-clearfy-quick-mode-board {
|
268 |
min-width: 450px;
|
269 |
padding-right: 0;
|
15 |
width: 49%;
|
16 |
}
|
17 |
#WBCR .wbcr-clearfy-group-header {
|
18 |
+
background: #efefef;
|
19 |
+
padding: 20px 0 10px 20px;
|
20 |
+
margin: 30px 0;
|
21 |
+
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
|
22 |
+
}
|
23 |
+
#WBCR .wbcr-clearfy-group-header:first-child {
|
24 |
+
margin-top: 0;
|
25 |
}
|
26 |
#WBCR .wbcr-clearfy-group-header strong {
|
27 |
font-size: 15px;
|
96 |
padding: 15px 20px;
|
97 |
font-size: 12px;
|
98 |
text-transform: uppercase;
|
99 |
+
background: #f1f1f1;
|
100 |
color: #6d6d6d;
|
101 |
font-weight: bold;
|
102 |
border-radius: 5px;
|
103 |
margin-top: 10px;
|
104 |
text-align: left;
|
105 |
+
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
|
106 |
-webkit-transition: all 0.2s ease-out;
|
107 |
-moz-transition: all 0.2s ease-out;
|
108 |
-o-transition: all 0.2s ease-out;
|
109 |
transition: all 0.2s ease-out;
|
110 |
+
/*&.wbcr-clearfy-mode-reset:hover {
|
111 |
+
& .wbcr-clearfy-button-activate-mode {
|
112 |
+
background-color: #fb7976;
|
113 |
+
color: darken(#fb7976, 50%);
|
114 |
+
&:hover {
|
115 |
+
background-color: lighten(#fb7976, 3%);
|
116 |
+
}
|
117 |
+
}
|
118 |
+
}*/
|
119 |
}
|
120 |
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch:after {
|
121 |
display: block;
|
134 |
margin-left: 15px;
|
135 |
margin-top: 3px;
|
136 |
}
|
137 |
+
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-active {
|
138 |
+
/*.fa, .dashicons:before {
|
139 |
+
color: #8bc34a;
|
140 |
+
}
|
141 |
+
|
142 |
+
& .wbcr-clearfy-button-activate-mode {
|
143 |
+
display: none !important;
|
144 |
+
}
|
145 |
+
& .wbcr-clearfy-button-deativate-mode {
|
146 |
+
display: inline-block !important;
|
147 |
+
}*/
|
148 |
}
|
149 |
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-active .wbcr-clearfy-button-activate-mode {
|
150 |
+
background-color: #f7f7f7 !important;
|
151 |
+
color: #e0e0e0 !important;
|
152 |
+
cursor: default;
|
153 |
}
|
154 |
+
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-switch-mode-reset .wbcr-clearfy-switch-confirmation {
|
155 |
+
width: 130px;
|
156 |
+
}
|
157 |
+
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-switch-mode-reset .wbcr-clearfy-switch-confirmation .wbcr-clearfy-button-activate-mode {
|
158 |
+
width: 130px;
|
159 |
+
background-color: #fdd599;
|
160 |
+
color: #a57b3c;
|
161 |
}
|
162 |
+
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-switch-mode-reset .wbcr-clearfy-switch-confirmation .wbcr-clearfy-button-activate-mode:hover {
|
163 |
+
background-color: #fddba8;
|
164 |
+
}
|
165 |
+
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-switch-mode-recommended .fa,
|
166 |
+
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-switch-mode-recommended .dashicons:before {
|
167 |
+
color: #8bc34a;
|
168 |
+
}
|
169 |
+
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-switch-mode-recommended .wbcr-clearfy-button-activate-mode {
|
170 |
+
background-color: #c9deb2;
|
171 |
+
color: #586549;
|
172 |
}
|
173 |
+
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-switch-mode-recommended .wbcr-clearfy-button-activate-mode:hover {
|
174 |
+
background-color: #d1e3bd;
|
175 |
}
|
176 |
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-loading .wbcr-clearfy-switch-confirmation button {
|
177 |
+
background-color: #f7f7f7 !important;
|
178 |
+
color: #e0e0e0 !important;
|
179 |
cursor: default !important;
|
180 |
}
|
181 |
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch .wbcr-clearfy-switch-confirmation {
|
192 |
}
|
193 |
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch .wbcr-clearfy-switch-confirmation button {
|
194 |
display: inline-block;
|
195 |
+
width: 100px;
|
196 |
margin: 12px 0 0;
|
197 |
border: 0;
|
198 |
box-shadow: none;
|
201 |
font-size: 13px;
|
202 |
border-radius: 3px;
|
203 |
outline: none;
|
204 |
+
background-color: #dedede;
|
205 |
+
color: #808080;
|
206 |
+
/*&.wbcr-clearfy-button-activate-mode {
|
207 |
+
background-color: #c9deb2;
|
208 |
+
color: #586549;
|
209 |
+
&:hover {
|
210 |
+
background-color: lighten(#c9deb2, 3%);
|
211 |
+
}
|
212 |
+
}
|
213 |
+
&.wbcr-clearfy-button-deativate-mode {
|
214 |
+
display: none;
|
215 |
+
background-color: #fdd599;
|
216 |
+
color: #a57b3c;
|
217 |
+
margin-right: 0;
|
218 |
+
&:hover {
|
219 |
+
background-color: lighten(#fdd599, 3%);
|
220 |
+
}
|
221 |
+
}*/
|
222 |
+
}
|
223 |
+
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch .wbcr-clearfy-switch-confirmation button:hover {
|
224 |
+
background-color: #d6d6d6;
|
225 |
}
|
226 |
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch .wbcr-clearfy-switch-confirmation button:active {
|
227 |
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.5);
|
304 |
background: #d6d6d6;
|
305 |
color: #5f5d5d;
|
306 |
}
|
307 |
+
@media screen and (max-width: 1380px) {
|
308 |
#WBCR #wbcr-clearfy-quick-mode-board {
|
309 |
min-width: 450px;
|
310 |
padding-right: 0;
|
admin/assets/js/general.js
CHANGED
@@ -23,7 +23,7 @@
|
|
23 |
modeName = switcher.data('mode'),
|
24 |
modeOptions = switcher.data('mode-options');
|
25 |
|
26 |
-
if( switcher.hasClass('wbcr-clearfy-loading') ) {
|
27 |
return false;
|
28 |
}
|
29 |
|
@@ -35,35 +35,35 @@
|
|
35 |
self.hideConfirmationPopup();
|
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 |
$('.wbcr-clearfy-popup-button-ok').click(function() {
|
69 |
var $this = $(this), modeName = $(this).closest('.wbcr-clearfy-confirm-popup').data('mode'),
|
23 |
modeName = switcher.data('mode'),
|
24 |
modeOptions = switcher.data('mode-options');
|
25 |
|
26 |
+
if( switcher.hasClass('wbcr-clearfy-loading') || switcher.hasClass('wbcr-clearfy-active') ) {
|
27 |
return false;
|
28 |
}
|
29 |
|
35 |
self.hideConfirmationPopup();
|
36 |
});
|
37 |
|
38 |
+
/*$('.wbcr-clearfy-button-deativate-mode').click(function() {
|
39 |
+
var $this = $(this),
|
40 |
+
switcher = $(this).closest('.wbcr-clearfy-switch'),
|
41 |
+
modeName = switcher.data('mode');
|
42 |
+
|
43 |
+
if( switcher.hasClass('wbcr-clearfy-loading') ) {
|
44 |
+
return false;
|
45 |
+
}
|
46 |
+
|
47 |
+
switcher.addClass('wbcr-clearfy-loading');
|
48 |
+
|
49 |
+
self.sendRequest({
|
50 |
+
action: 'wbcr_clearfy_configurate',
|
51 |
+
mode: modeName,
|
52 |
+
cancel_mode: true
|
53 |
+
}, function(data) {
|
54 |
+
switcher.removeClass('wbcr-clearfy-loading');
|
55 |
+
|
56 |
+
if( data && data.export_options ) {
|
57 |
+
$('#wbcr-clearfy-import-export').html(data.export_options);
|
58 |
+
}
|
59 |
+
},
|
60 |
+
function() {
|
61 |
+
if( modeName != 'reset' ) {
|
62 |
+
switcher.removeClass('wbcr-clearfy-active');
|
63 |
+
}
|
64 |
+
});
|
65 |
+
return false;
|
66 |
+
});*/
|
67 |
|
68 |
$('.wbcr-clearfy-popup-button-ok').click(function() {
|
69 |
var $this = $(this), modeName = $(this).closest('.wbcr-clearfy-confirm-popup').data('mode'),
|
admin/boot.php
CHANGED
@@ -28,64 +28,3 @@
|
|
28 |
if( isset($_REQUEST['action']) && $_REQUEST['action'] == 'wbcr_clearfy_import_settings' ) {
|
29 |
require(WBCR_CLR_PLUGIN_DIR . '/admin/ajax/import-settings.php');
|
30 |
}
|
31 |
-
|
32 |
-
/**
|
33 |
-
* Checking and using additional import
|
34 |
-
*/
|
35 |
-
function wbcr_clearfy_admin_init()
|
36 |
-
{
|
37 |
-
wbcr_clearfy_import_old_options();
|
38 |
-
}
|
39 |
-
|
40 |
-
add_action('init', 'wbcr_clearfy_admin_init');
|
41 |
-
|
42 |
-
function wbcr_clearfy_before_save_options($form)
|
43 |
-
{
|
44 |
-
global $wbcr_clearfy_plugin;
|
45 |
-
|
46 |
-
$get_modes = get_option($wbcr_clearfy_plugin->pluginName . '_quick_modes', array());
|
47 |
-
$mods_count = sizeof($get_modes);
|
48 |
-
|
49 |
-
if( !empty($get_modes) ) {
|
50 |
-
$group_options = WbcrClr_Option::getAllOptions();
|
51 |
-
$controls = $form->getControls();
|
52 |
-
|
53 |
-
foreach($controls as $control) {
|
54 |
-
$values = $control->getValuesToSave();
|
55 |
-
foreach($values as $keyToSave => $valueToSave) {
|
56 |
-
foreach($group_options as $option) {
|
57 |
-
if( $keyToSave == $option->getName() ) {
|
58 |
-
foreach($get_modes as $mode_key => $mode_name) {
|
59 |
-
if( $option->hasGroup($mode_name) ) {
|
60 |
-
$option_value = $option->getValue($mode_name);
|
61 |
-
if( !empty($option_value) ) {
|
62 |
-
if( $option_value != $valueToSave ) {
|
63 |
-
unset($get_modes[$mode_key]);
|
64 |
-
}
|
65 |
-
} else {
|
66 |
-
if( is_numeric($valueToSave) && 0 === intval($valueToSave) ) {
|
67 |
-
unset($get_modes[$mode_key]);
|
68 |
-
}
|
69 |
-
}
|
70 |
-
}
|
71 |
-
}
|
72 |
-
}
|
73 |
-
}
|
74 |
-
}
|
75 |
-
}
|
76 |
-
|
77 |
-
if( $mods_count != sizeof($get_modes) ) {
|
78 |
-
if( empty($get_modes) ) {
|
79 |
-
delete_option($wbcr_clearfy_plugin->pluginName . '_quick_modes');
|
80 |
-
} else {
|
81 |
-
update_option($wbcr_clearfy_plugin->pluginName . '_quick_modes', $get_modes);
|
82 |
-
}
|
83 |
-
}
|
84 |
-
}
|
85 |
-
}
|
86 |
-
|
87 |
-
add_action('wbcr_factory_imppage_before_save', 'wbcr_clearfy_before_save_options');
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
28 |
if( isset($_REQUEST['action']) && $_REQUEST['action'] == 'wbcr_clearfy_import_settings' ) {
|
29 |
require(WBCR_CLR_PLUGIN_DIR . '/admin/ajax/import-settings.php');
|
30 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
admin/includes/classes/class.pages.php
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
* Author: Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
* Version: 1.0.0
|
7 |
*/
|
8 |
-
class WbcrClr_Page extends
|
9 |
|
10 |
public function __construct(Factory326_Plugin $plugin)
|
11 |
{
|
@@ -15,7 +15,7 @@
|
|
15 |
/**
|
16 |
* Requests assets (js and css) for the page.
|
17 |
*
|
18 |
-
* @see
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
* @return void
|
5 |
* Author: Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
* Version: 1.0.0
|
7 |
*/
|
8 |
+
class WbcrClr_Page extends FactoryPages324_ImpressiveThemplate {
|
9 |
|
10 |
public function __construct(Factory326_Plugin $plugin)
|
11 |
{
|
15 |
/**
|
16 |
* Requests assets (js and css) for the page.
|
17 |
*
|
18 |
+
* @see FactoryPages324_AdminPage
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
* @return void
|
admin/includes/options.php
CHANGED
@@ -269,11 +269,6 @@
|
|
269 |
'title' => __('Enable Sanitization of WordPress', 'clearfy'),
|
270 |
'tags' => array()
|
271 |
),
|
272 |
-
array(
|
273 |
-
'name' => 'disable_admin_notices',
|
274 |
-
'title' => __('Disable admin notice', 'clearfy'),
|
275 |
-
'tags' => array()
|
276 |
-
),
|
277 |
array(
|
278 |
'name' => 'disable_admin_bar',
|
279 |
'title' => __('Disable admin top bar', 'clearfy'),
|
269 |
'title' => __('Enable Sanitization of WordPress', 'clearfy'),
|
270 |
'tags' => array()
|
271 |
),
|
|
|
|
|
|
|
|
|
|
|
272 |
array(
|
273 |
'name' => 'disable_admin_bar',
|
274 |
'title' => __('Disable admin top bar', 'clearfy'),
|
admin/pages/additionally.php
CHANGED
@@ -11,7 +11,7 @@
|
|
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
|
@@ -31,12 +31,16 @@
|
|
31 |
|
32 |
protected function isPostRevisionConstant()
|
33 |
{
|
34 |
-
$
|
35 |
-
$content = fread($file, filesize(ABSPATH . '/wp-config.php'));
|
36 |
-
fclose($file);
|
37 |
|
38 |
-
if(
|
39 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
}
|
41 |
|
42 |
return false;
|
@@ -62,16 +66,62 @@
|
|
62 |
$options = array();
|
63 |
|
64 |
$options[] = array(
|
65 |
-
'type' => '
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
'way' => 'buttons',
|
67 |
-
'
|
68 |
-
'
|
69 |
-
|
70 |
-
|
71 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
);
|
73 |
|
74 |
$options[] = array(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
'type' => 'checkbox',
|
76 |
'way' => 'buttons',
|
77 |
'name' => 'disable_admin_notices',
|
@@ -80,7 +130,7 @@
|
|
80 |
'hint' => __('Whenever there’s a major release available, a notification will display at the top of your admin area, letting you know your version is out-of-date and you need to update the core code.<br>
|
81 |
For many people, this nag can be annoying. And if you developer websites for clients, you may want to hide it. After all, who wants to let their clients know their software is old?', 'clearfy') . '<br><b>Clearfy</b>: ' . __('Disable admin notices.', 'clearfy'),
|
82 |
'default' => false
|
83 |
-
)
|
84 |
|
85 |
$options[] = array(
|
86 |
'type' => 'html',
|
@@ -229,64 +279,19 @@ So we recommend either disabling or limiting your revisions. ', 'clearfy'),
|
|
229 |
|
230 |
$options[] = array(
|
231 |
'type' => 'html',
|
232 |
-
'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __('
|
233 |
);
|
234 |
|
235 |
$options[] = array(
|
236 |
-
'type' => '
|
237 |
-
'name' => 'disable_heartbeat',
|
238 |
'way' => 'buttons',
|
239 |
-
'
|
240 |
-
'
|
241 |
-
array('default', __('Default', 'clearfy')),
|
242 |
-
array('everywhere', __('Everywhere', 'clearfy')),
|
243 |
-
array('on_dashboard_page', __('On dashboard page', 'clearfy')),
|
244 |
-
array('allow_only_on_post_edit_pages', __('Only allow when editing Posts/Pages', 'clearfy'))
|
245 |
-
),
|
246 |
-
//'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
|
247 |
-
//'hint' => __('You can disable all plugin updates or choose manual or automatic update mode.', 'clearfy'),
|
248 |
-
'events' => array(
|
249 |
-
'default' => array(
|
250 |
-
'show' => '.factory-control-heartbeat_frequency'
|
251 |
-
),
|
252 |
-
'on_dashboard_page' => array(
|
253 |
-
'show' => '.factory-control-heartbeat_frequency'
|
254 |
-
),
|
255 |
-
'allow_only_on_post_edit_pages' => array(
|
256 |
-
'show' => '.factory-control-heartbeat_frequency'
|
257 |
-
),
|
258 |
-
'everywhere' => array(
|
259 |
-
'hide' => '.factory-control-heartbeat_frequency'
|
260 |
-
)
|
261 |
-
),
|
262 |
-
'default' => 'default',
|
263 |
-
);
|
264 |
-
|
265 |
-
$options[] = array(
|
266 |
-
'type' => 'dropdown',
|
267 |
-
'name' => 'heartbeat_frequency',
|
268 |
-
'title' => __('Heartbeat frequency', 'clearfy'),
|
269 |
-
'data' => array(
|
270 |
-
array('default', __('Wordpress default', 'clearfy')),
|
271 |
-
array('20', '20 ' . __('seconds', 'clearfy')),
|
272 |
-
array('25', '25 ' . __('seconds', 'clearfy')),
|
273 |
-
array('30', '30 ' . __('seconds', 'clearfy')),
|
274 |
-
array('35', '35 ' . __('seconds', 'clearfy')),
|
275 |
-
array('40', '40 ' . __('seconds', 'clearfy')),
|
276 |
-
array('45', '45 ' . __('seconds', 'clearfy')),
|
277 |
-
array('50', '50 ' . __('seconds', 'clearfy')),
|
278 |
-
array('55', '55 ' . __('seconds', 'clearfy')),
|
279 |
-
array('60', '60 ' . __('seconds', 'clearfy'))
|
280 |
-
),
|
281 |
'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
|
282 |
-
'hint' => __('
|
283 |
-
'default' =>
|
284 |
);
|
285 |
|
286 |
-
//disable_texturization
|
287 |
-
//hide_pages_search_result
|
288 |
-
//disable_wp_search
|
289 |
-
|
290 |
$formOptions = array();
|
291 |
|
292 |
$formOptions[] = array(
|
@@ -295,8 +300,8 @@ So we recommend either disabling or limiting your revisions. ', 'clearfy'),
|
|
295 |
//'cssClass' => 'postbox'
|
296 |
);
|
297 |
|
298 |
-
return apply_filters('
|
299 |
}
|
300 |
}
|
301 |
|
302 |
-
|
11 |
* The id of the page in the admin menu.
|
12 |
*
|
13 |
* Mainly used to navigate between pages.
|
14 |
+
* @see FactoryPages324_AdminPage
|
15 |
*
|
16 |
* @since 1.0.0
|
17 |
* @var string
|
31 |
|
32 |
protected function isPostRevisionConstant()
|
33 |
{
|
34 |
+
$config_path = ABSPATH . '/wp-config.php';
|
|
|
|
|
35 |
|
36 |
+
if( file_exists($config_path) ) {
|
37 |
+
$file = fopen($config_path, 'r');
|
38 |
+
$content = fread($file, filesize($config_path));
|
39 |
+
fclose($file);
|
40 |
+
|
41 |
+
if( !empty($content) && preg_match('/define(.+?)WP_POST_REVISIONS/', $content) ) {
|
42 |
+
return true;
|
43 |
+
}
|
44 |
}
|
45 |
|
46 |
return false;
|
66 |
$options = array();
|
67 |
|
68 |
$options[] = array(
|
69 |
+
'type' => 'html',
|
70 |
+
'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __('Heartbeat', 'clearfy') . '</strong>' . '<p>' . __('The WordPress Heartbeat API uses /wp-admin/admin-ajax.php to run AJAX calls from the web-browser. While this is great and all it can also cause high CPU usage and crazy amounts of PHP calls. For example, if you leave your dashboard open it will keep sending POST requests to this file on a regular interval, every 15 seconds. Here is an example below of it happening.', 'clearfy') . '</p>' . '</div>'
|
71 |
+
);
|
72 |
+
|
73 |
+
$options[] = array(
|
74 |
+
'type' => 'dropdown',
|
75 |
+
'name' => 'disable_heartbeat',
|
76 |
'way' => 'buttons',
|
77 |
+
'title' => __('Disable Heartbeat', 'clearfy'),
|
78 |
+
'data' => array(
|
79 |
+
array('default', __('Default', 'clearfy')),
|
80 |
+
array('everywhere', __('Everywhere', 'clearfy')),
|
81 |
+
array('on_dashboard_page', __('On dashboard page', 'clearfy')),
|
82 |
+
array('allow_only_on_post_edit_pages', __('Only allow when editing Posts/Pages', 'clearfy'))
|
83 |
+
),
|
84 |
+
//'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
|
85 |
+
//'hint' => __('You can disable all plugin updates or choose manual or automatic update mode.', 'clearfy'),
|
86 |
+
'events' => array(
|
87 |
+
'default' => array(
|
88 |
+
'show' => '.factory-control-heartbeat_frequency'
|
89 |
+
),
|
90 |
+
'on_dashboard_page' => array(
|
91 |
+
'show' => '.factory-control-heartbeat_frequency'
|
92 |
+
),
|
93 |
+
'allow_only_on_post_edit_pages' => array(
|
94 |
+
'show' => '.factory-control-heartbeat_frequency'
|
95 |
+
),
|
96 |
+
'everywhere' => array(
|
97 |
+
'hide' => '.factory-control-heartbeat_frequency'
|
98 |
+
)
|
99 |
+
),
|
100 |
+
'default' => 'default',
|
101 |
);
|
102 |
|
103 |
$options[] = array(
|
104 |
+
'type' => 'dropdown',
|
105 |
+
'name' => 'heartbeat_frequency',
|
106 |
+
'title' => __('Heartbeat frequency', 'clearfy'),
|
107 |
+
'data' => array(
|
108 |
+
array('default', __('Wordpress default', 'clearfy')),
|
109 |
+
array('20', '20 ' . __('seconds', 'clearfy')),
|
110 |
+
array('25', '25 ' . __('seconds', 'clearfy')),
|
111 |
+
array('30', '30 ' . __('seconds', 'clearfy')),
|
112 |
+
array('35', '35 ' . __('seconds', 'clearfy')),
|
113 |
+
array('40', '40 ' . __('seconds', 'clearfy')),
|
114 |
+
array('45', '45 ' . __('seconds', 'clearfy')),
|
115 |
+
array('50', '50 ' . __('seconds', 'clearfy')),
|
116 |
+
array('55', '55 ' . __('seconds', 'clearfy')),
|
117 |
+
array('60', '60 ' . __('seconds', 'clearfy'))
|
118 |
+
),
|
119 |
+
'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
|
120 |
+
'hint' => __('Select the heartbeat frequency wordpress. We recommend you 60 seconds, default is 20 seconds.', 'clearfy'),
|
121 |
+
'default' => 'default'
|
122 |
+
);
|
123 |
+
|
124 |
+
/*$options[] = array(
|
125 |
'type' => 'checkbox',
|
126 |
'way' => 'buttons',
|
127 |
'name' => 'disable_admin_notices',
|
130 |
'hint' => __('Whenever there’s a major release available, a notification will display at the top of your admin area, letting you know your version is out-of-date and you need to update the core code.<br>
|
131 |
For many people, this nag can be annoying. And if you developer websites for clients, you may want to hide it. After all, who wants to let their clients know their software is old?', 'clearfy') . '<br><b>Clearfy</b>: ' . __('Disable admin notices.', 'clearfy'),
|
132 |
'default' => false
|
133 |
+
);*/
|
134 |
|
135 |
$options[] = array(
|
136 |
'type' => 'html',
|
279 |
|
280 |
$options[] = array(
|
281 |
'type' => 'html',
|
282 |
+
'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __('Others', 'clearfy') . '</strong>' . '<p>' . __('Other useful features.', 'clearfy') . '</p>' . '</div>'
|
283 |
);
|
284 |
|
285 |
$options[] = array(
|
286 |
+
'type' => 'checkbox',
|
|
|
287 |
'way' => 'buttons',
|
288 |
+
'name' => 'enable_wordpres_sanitize',
|
289 |
+
'title' => __('Enable Sanitization of WordPress', 'clearfy'),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
290 |
'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
|
291 |
+
'hint' => __('File names and some titles can have special characters, which can cause problems when creating permalinks.', 'clearfy') . '<br><b>Clearfy</b>: ' . __('Removes symbols, spaces, latin and other languages characters from uploaded files and gives them "permalink" structure (clean characters, only lowercase and dahes).', 'clearfy'),
|
292 |
+
'default' => false
|
293 |
);
|
294 |
|
|
|
|
|
|
|
|
|
295 |
$formOptions = array();
|
296 |
|
297 |
$formOptions[] = array(
|
300 |
//'cssClass' => 'postbox'
|
301 |
);
|
302 |
|
303 |
+
return apply_filters('wbcr_clr_additionally_form_options', $formOptions, $this);
|
304 |
}
|
305 |
}
|
306 |
|
307 |
+
FactoryPages324::register($wbcr_clearfy_plugin, 'WbcrClr_AdditionallyPage');
|
admin/pages/code-clean.php
CHANGED
@@ -11,7 +11,7 @@
|
|
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
|
@@ -198,16 +198,16 @@
|
|
198 |
'html' => array($this, '_showFormButton')
|
199 |
);*/
|
200 |
|
201 |
-
$
|
202 |
|
203 |
-
$
|
204 |
'type' => 'form-group',
|
205 |
'items' => $options,
|
206 |
//'cssClass' => 'postbox'
|
207 |
);
|
208 |
|
209 |
-
return apply_filters('wbcr_clr_code_clean_form_options', $
|
210 |
}
|
211 |
}
|
212 |
|
213 |
-
|
11 |
* The id of the page in the admin menu.
|
12 |
*
|
13 |
* Mainly used to navigate between pages.
|
14 |
+
* @see FactoryPages324_AdminPage
|
15 |
*
|
16 |
* @since 1.0.0
|
17 |
* @var string
|
198 |
'html' => array($this, '_showFormButton')
|
199 |
);*/
|
200 |
|
201 |
+
$form_options = array();
|
202 |
|
203 |
+
$form_options[] = array(
|
204 |
'type' => 'form-group',
|
205 |
'items' => $options,
|
206 |
//'cssClass' => 'postbox'
|
207 |
);
|
208 |
|
209 |
+
return apply_filters('wbcr_clr_code_clean_form_options', $form_options, $this);
|
210 |
}
|
211 |
}
|
212 |
|
213 |
+
FactoryPages324::register($wbcr_clearfy_plugin, 'WbcrClr_CodeCleanPage');
|
admin/pages/components.php
CHANGED
@@ -8,13 +8,13 @@
|
|
8 |
*
|
9 |
* @since 1.0.0
|
10 |
*/
|
11 |
-
class WbcrClr_ComponentsPage extends
|
12 |
|
13 |
/**
|
14 |
* The id of the page in the admin menu.
|
15 |
*
|
16 |
* Mainly used to navigate between pages.
|
17 |
-
* @see
|
18 |
*
|
19 |
* @since 1.0.0
|
20 |
* @var string
|
@@ -47,7 +47,7 @@
|
|
47 |
/**
|
48 |
* Requests assets (js and css) for the page.
|
49 |
*
|
50 |
-
* @see
|
51 |
*
|
52 |
* @since 1.0.0
|
53 |
* @return void
|
@@ -112,4 +112,4 @@
|
|
112 |
}
|
113 |
}
|
114 |
|
115 |
-
|
8 |
*
|
9 |
* @since 1.0.0
|
10 |
*/
|
11 |
+
class WbcrClr_ComponentsPage extends FactoryPages324_ImpressiveThemplate {
|
12 |
|
13 |
/**
|
14 |
* The id of the page in the admin menu.
|
15 |
*
|
16 |
* Mainly used to navigate between pages.
|
17 |
+
* @see FactoryPages324_AdminPage
|
18 |
*
|
19 |
* @since 1.0.0
|
20 |
* @var string
|
47 |
/**
|
48 |
* Requests assets (js and css) for the page.
|
49 |
*
|
50 |
+
* @see FactoryPages324_AdminPage
|
51 |
*
|
52 |
* @since 1.0.0
|
53 |
* @return void
|
112 |
}
|
113 |
}
|
114 |
|
115 |
+
FactoryPages324::register($wbcr_clearfy_plugin, 'WbcrClr_ComponentsPage');
|
admin/pages/defence.php
CHANGED
@@ -11,7 +11,7 @@
|
|
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
|
@@ -97,16 +97,16 @@
|
|
97 |
'html' => array($this, '_showFormButton')
|
98 |
);*/
|
99 |
|
100 |
-
$
|
101 |
|
102 |
-
$
|
103 |
'type' => 'form-group',
|
104 |
'items' => $options,
|
105 |
//'cssClass' => 'postbox'
|
106 |
);
|
107 |
|
108 |
-
return apply_filters('wbcr_clr_defence_form_options', $
|
109 |
}
|
110 |
}
|
111 |
|
112 |
-
|
11 |
* The id of the page in the admin menu.
|
12 |
*
|
13 |
* Mainly used to navigate between pages.
|
14 |
+
* @see FactoryPages324_AdminPage
|
15 |
*
|
16 |
* @since 1.0.0
|
17 |
* @var string
|
97 |
'html' => array($this, '_showFormButton')
|
98 |
);*/
|
99 |
|
100 |
+
$form_options = array();
|
101 |
|
102 |
+
$form_options[] = array(
|
103 |
'type' => 'form-group',
|
104 |
'items' => $options,
|
105 |
//'cssClass' => 'postbox'
|
106 |
);
|
107 |
|
108 |
+
return apply_filters('wbcr_clr_defence_form_options', $form_options, $this);
|
109 |
}
|
110 |
}
|
111 |
|
112 |
+
FactoryPages324::register($wbcr_clearfy_plugin, 'WbcrClr_DefencePage');
|
admin/pages/double-pages.php
CHANGED
@@ -11,7 +11,7 @@
|
|
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
|
@@ -129,16 +129,16 @@
|
|
129 |
'html' => array($this, '_showFormButton')
|
130 |
);*/
|
131 |
|
132 |
-
$
|
133 |
|
134 |
-
$
|
135 |
'type' => 'form-group',
|
136 |
'items' => $options,
|
137 |
//'cssClass' => 'postbox'
|
138 |
);
|
139 |
|
140 |
-
return apply_filters('wbcr_clr_double_form_options', $
|
141 |
}
|
142 |
}
|
143 |
|
144 |
-
|
11 |
* The id of the page in the admin menu.
|
12 |
*
|
13 |
* Mainly used to navigate between pages.
|
14 |
+
* @see FactoryPages324_AdminPage
|
15 |
*
|
16 |
* @since 1.0.0
|
17 |
* @var string
|
129 |
'html' => array($this, '_showFormButton')
|
130 |
);*/
|
131 |
|
132 |
+
$form_options = array();
|
133 |
|
134 |
+
$form_options[] = array(
|
135 |
'type' => 'form-group',
|
136 |
'items' => $options,
|
137 |
//'cssClass' => 'postbox'
|
138 |
);
|
139 |
|
140 |
+
return apply_filters('wbcr_clr_double_form_options', $form_options, $this);
|
141 |
}
|
142 |
}
|
143 |
|
144 |
+
FactoryPages324::register($wbcr_clearfy_plugin, 'WbcrClr_DoublePagesPage');
|
admin/pages/privacy.php
CHANGED
@@ -11,7 +11,7 @@
|
|
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
|
@@ -119,16 +119,16 @@
|
|
119 |
'html' => array($this, '_showFormButton')
|
120 |
);*/
|
121 |
|
122 |
-
$
|
123 |
|
124 |
-
$
|
125 |
'type' => 'form-group',
|
126 |
'items' => $options,
|
127 |
//'cssClass' => 'postbox'
|
128 |
);
|
129 |
|
130 |
-
return apply_filters('wbcr_clr_privacy_form_options', $
|
131 |
}
|
132 |
}
|
133 |
|
134 |
-
|
11 |
* The id of the page in the admin menu.
|
12 |
*
|
13 |
* Mainly used to navigate between pages.
|
14 |
+
* @see FactoryPages324_AdminPage
|
15 |
*
|
16 |
* @since 1.0.0
|
17 |
* @var string
|
119 |
'html' => array($this, '_showFormButton')
|
120 |
);*/
|
121 |
|
122 |
+
$form_options = array();
|
123 |
|
124 |
+
$form_options[] = array(
|
125 |
'type' => 'form-group',
|
126 |
'items' => $options,
|
127 |
//'cssClass' => 'postbox'
|
128 |
);
|
129 |
|
130 |
+
return apply_filters('wbcr_clr_privacy_form_options', $form_options, $this);
|
131 |
}
|
132 |
}
|
133 |
|
134 |
+
FactoryPages324::register($wbcr_clearfy_plugin, 'WbcrClr_PrivacyPage');
|
admin/pages/quick-start.php
CHANGED
@@ -11,7 +11,7 @@
|
|
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
|
@@ -45,7 +45,7 @@
|
|
45 |
/**
|
46 |
* Requests assets (js and css) for the page.
|
47 |
*
|
48 |
-
* @see
|
49 |
*
|
50 |
* @since 1.0.0
|
51 |
* @return void
|
@@ -148,7 +148,7 @@
|
|
148 |
exit;
|
149 |
}
|
150 |
|
151 |
-
public function selected($mode_name)
|
152 |
{
|
153 |
$get_modes = get_option($this->plugin->pluginName . '_quick_modes');
|
154 |
|
@@ -159,23 +159,30 @@
|
|
159 |
return is_array($get_modes) && in_array($mode_name, $get_modes)
|
160 |
? ' wbcr-clearfy-active'
|
161 |
: '';
|
162 |
-
}
|
163 |
|
164 |
public function showPageContent()
|
165 |
{
|
166 |
global $wbcr_clearfy_plugin;
|
167 |
|
168 |
$allow_mods = apply_filters('wbcr_clearfy_allow_quick_mods', array(
|
169 |
-
'
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
'
|
|
|
|
|
|
|
|
|
|
|
174 |
'remove_default_widgets' => array(
|
175 |
-
'title' => __('
|
176 |
'icon' => 'dashicons-networking'
|
177 |
),
|
178 |
));
|
|
|
|
|
179 |
?>
|
180 |
<div class="wbcr-clearfy-layer"></div>
|
181 |
<div class="wbcr-clearfy-confirm-popup">
|
@@ -193,11 +200,11 @@
|
|
193 |
|
194 |
<div class="wbcr-content-section">
|
195 |
<div id="wbcr-clearfy-quick-mode-board">
|
196 |
-
<p><?php _e('
|
197 |
-
<h4><?php _e('Select
|
198 |
-
|
199 |
-
<p><?php _e('After selecting
|
200 |
-
|
201 |
<div class="row">
|
202 |
<?php foreach($allow_mods as $mode_name => $mode): ?>
|
203 |
<?php
|
@@ -208,28 +215,37 @@
|
|
208 |
? $mode['icon']
|
209 |
: null;
|
210 |
?>
|
211 |
-
|
212 |
<div class="col-sm-12">
|
213 |
<?php
|
214 |
$group = WbcrClr_Group::getInstance($mode_name);
|
215 |
-
|
216 |
$filter_mode_options = array();
|
217 |
foreach($group->getOptions() as $option) {
|
218 |
$filter_mode_options[$option->getName()] = $option->getTitle();
|
219 |
}
|
220 |
-
|
221 |
$print_group_options = wbcr_get_escape_json($filter_mode_options);
|
222 |
?>
|
223 |
-
|
|
|
|
|
|
|
|
|
|
|
224 |
<?php if( !empty($mode_icon) ): ?>
|
225 |
<i class="dashicons <?= $mode_icon; ?>"></i>
|
226 |
-
<!--<i class="fa <?= $mode_icon; ?>" aria-hidden="true"></i>-->
|
227 |
<?php endif; ?>
|
228 |
<span><?= $mode_title ?></span>
|
229 |
-
|
230 |
<div class="wbcr-clearfy-switch-confirmation">
|
231 |
-
<button class="wbcr-clearfy-button-activate-mode"
|
232 |
-
|
|
|
|
|
|
|
|
|
|
|
233 |
</div>
|
234 |
</div>
|
235 |
</div>
|
@@ -261,12 +277,12 @@
|
|
261 |
<div class="col-sm-12">
|
262 |
<div class="wbcr-clearfy-troubleshooting-board wbcr-clearfy-board">
|
263 |
<h4><?php _e('Support', 'clearfy') ?></h4>
|
264 |
-
|
265 |
<p><?php _e('If you faced with any issues, please follow the steps below to get quickly quality support:', 'clearfy') ?></p>
|
266 |
<ol>
|
267 |
<li>
|
268 |
<p><?php _e('Generate a debug report which will contains inforamtion about your configuratin and installed plugins', 'clearfy') ?></p>
|
269 |
-
|
270 |
<p>
|
271 |
<a href="<?= admin_url('options-general.php?page=quick_start-' . $wbcr_clearfy_plugin->pluginName . '&action=gererate_report'); ?>" class="button"><?php _e('Generate Debug Report', 'clearfy') ?></a>
|
272 |
</p>
|
@@ -280,9 +296,9 @@
|
|
280 |
</div>
|
281 |
</div>
|
282 |
</div>
|
283 |
-
|
284 |
<?php
|
285 |
}
|
286 |
}
|
287 |
|
288 |
-
|
11 |
* The id of the page in the admin menu.
|
12 |
*
|
13 |
* Mainly used to navigate between pages.
|
14 |
+
* @see FactoryPages324_AdminPage
|
15 |
*
|
16 |
* @since 1.0.0
|
17 |
* @var string
|
45 |
/**
|
46 |
* Requests assets (js and css) for the page.
|
47 |
*
|
48 |
+
* @see FactoryPages324_AdminPage
|
49 |
*
|
50 |
* @since 1.0.0
|
51 |
* @return void
|
148 |
exit;
|
149 |
}
|
150 |
|
151 |
+
/*public function selected($mode_name)
|
152 |
{
|
153 |
$get_modes = get_option($this->plugin->pluginName . '_quick_modes');
|
154 |
|
159 |
return is_array($get_modes) && in_array($mode_name, $get_modes)
|
160 |
? ' wbcr-clearfy-active'
|
161 |
: '';
|
162 |
+
}*/
|
163 |
|
164 |
public function showPageContent()
|
165 |
{
|
166 |
global $wbcr_clearfy_plugin;
|
167 |
|
168 |
$allow_mods = apply_filters('wbcr_clearfy_allow_quick_mods', array(
|
169 |
+
'recommended' => array(
|
170 |
+
'title' => __('Set the recommened for me', 'clearfy'),
|
171 |
+
'icon' => 'dashicons-thumbs-up'
|
172 |
+
),
|
173 |
+
'clear_code' => array('title' => __('One click code clearing', 'clearfy'), 'icon' => 'dashicons-yes'),
|
174 |
+
'defence' => array('title' => __('One click security', 'clearfy'), 'icon' => 'dashicons-shield'),
|
175 |
+
'seo_optimize' => array(
|
176 |
+
'title' => __('One click seo optimization', 'clearfy'),
|
177 |
+
'icon' => 'dashicons-star-empty'
|
178 |
+
),
|
179 |
'remove_default_widgets' => array(
|
180 |
+
'title' => __('One click remove default Widgets', 'clearfy'),
|
181 |
'icon' => 'dashicons-networking'
|
182 |
),
|
183 |
));
|
184 |
+
|
185 |
+
$allow_mods['reset'] = array('title' => __('Reset all settings', 'clearfy'), 'icon' => 'dashicons-backup');
|
186 |
?>
|
187 |
<div class="wbcr-clearfy-layer"></div>
|
188 |
<div class="wbcr-clearfy-confirm-popup">
|
200 |
|
201 |
<div class="wbcr-content-section">
|
202 |
<div id="wbcr-clearfy-quick-mode-board">
|
203 |
+
<p><?php _e('These are quick optimization options for your website. You can activate the groups of necessary settings in one click. With the fast optimization mode, we are enable the only safe settings that do not break your website. That is why we recommend you to look at each setting of the plugin individually. The settings with grey and red question mark will not be active, until you do it yourself.', 'clearfy') ?></p>
|
204 |
+
<h4><?php _e('Select what you need to do', 'clearfy') ?></h4>
|
205 |
+
|
206 |
+
<p style="color:#9e9e9e"><?php _e('After selecting any optimization case, the plugin will automatically enable the necessary settings in safe mode and one click.', 'clearfy') ?></p>
|
207 |
+
|
208 |
<div class="row">
|
209 |
<?php foreach($allow_mods as $mode_name => $mode): ?>
|
210 |
<?php
|
215 |
? $mode['icon']
|
216 |
: null;
|
217 |
?>
|
218 |
+
|
219 |
<div class="col-sm-12">
|
220 |
<?php
|
221 |
$group = WbcrClr_Group::getInstance($mode_name);
|
222 |
+
|
223 |
$filter_mode_options = array();
|
224 |
foreach($group->getOptions() as $option) {
|
225 |
$filter_mode_options[$option->getName()] = $option->getTitle();
|
226 |
}
|
227 |
+
|
228 |
$print_group_options = wbcr_get_escape_json($filter_mode_options);
|
229 |
?>
|
230 |
+
<?php if( $mode_name == 'reset' ): ?>
|
231 |
+
<h4><?php _e('Reset settings', 'clearfy') ?></h4>
|
232 |
+
<p style="color:#9e9e9e"><?php _e('After confirmation, all the settings of the plug-in will return to the default state. Make backup settings by copying data from the export field.', 'clearfy') ?></p>
|
233 |
+
|
234 |
+
<?php endif; ?>
|
235 |
+
<div class="wbcr-clearfy-switch wbcr-clearfy-switch-mode-<?= $mode_name ?>" data-mode="<?= $mode_name ?>" data-mode-options="<?= $print_group_options ?>">
|
236 |
<?php if( !empty($mode_icon) ): ?>
|
237 |
<i class="dashicons <?= $mode_icon; ?>"></i>
|
|
|
238 |
<?php endif; ?>
|
239 |
<span><?= $mode_title ?></span>
|
240 |
+
|
241 |
<div class="wbcr-clearfy-switch-confirmation">
|
242 |
+
<button class="wbcr-clearfy-button-activate-mode">
|
243 |
+
<?php if( $mode_name == 'reset' ): ?>
|
244 |
+
<?php _e('Reset', 'clearfy'); ?>
|
245 |
+
<?php else: ?>
|
246 |
+
<?php _e('Do It!', 'clearfy'); ?>
|
247 |
+
<?php endif; ?>
|
248 |
+
</button>
|
249 |
</div>
|
250 |
</div>
|
251 |
</div>
|
277 |
<div class="col-sm-12">
|
278 |
<div class="wbcr-clearfy-troubleshooting-board wbcr-clearfy-board">
|
279 |
<h4><?php _e('Support', 'clearfy') ?></h4>
|
280 |
+
|
281 |
<p><?php _e('If you faced with any issues, please follow the steps below to get quickly quality support:', 'clearfy') ?></p>
|
282 |
<ol>
|
283 |
<li>
|
284 |
<p><?php _e('Generate a debug report which will contains inforamtion about your configuratin and installed plugins', 'clearfy') ?></p>
|
285 |
+
|
286 |
<p>
|
287 |
<a href="<?= admin_url('options-general.php?page=quick_start-' . $wbcr_clearfy_plugin->pluginName . '&action=gererate_report'); ?>" class="button"><?php _e('Generate Debug Report', 'clearfy') ?></a>
|
288 |
</p>
|
296 |
</div>
|
297 |
</div>
|
298 |
</div>
|
299 |
+
|
300 |
<?php
|
301 |
}
|
302 |
}
|
303 |
|
304 |
+
FactoryPages324::register($wbcr_clearfy_plugin, 'WbcrClr_QuickStartPage');
|
admin/pages/seo.php
CHANGED
@@ -11,7 +11,7 @@
|
|
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
|
@@ -109,11 +109,6 @@
|
|
109 |
'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __('Server headers and response', 'clearfy') . '</strong>' . '<p>' . __('WordPress does not know how to give the Last Modified header in the server\'s responses. You can do this using the settings below.', 'clearfy') . '</p>' . '</div>'
|
110 |
);
|
111 |
|
112 |
-
$options[] = array(
|
113 |
-
'type' => 'separator',
|
114 |
-
'cssClass' => 'factory-separator-dashed'
|
115 |
-
);
|
116 |
-
|
117 |
$options[] = array(
|
118 |
'type' => 'checkbox',
|
119 |
'way' => 'buttons',
|
@@ -145,21 +140,11 @@
|
|
145 |
'default' => false
|
146 |
);
|
147 |
|
148 |
-
$options[] = array(
|
149 |
-
'type' => 'separator',
|
150 |
-
'cssClass' => 'factory-separator-dashed'
|
151 |
-
);
|
152 |
-
|
153 |
$options[] = array(
|
154 |
'type' => 'html',
|
155 |
'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __('For the Yoast SEO plugin', 'clearfy') . '</strong>' . '<p>' . __('These settings will help you eliminate some problems associated with the popular Yoast SEO plugin', 'clearfy') . '</p>' . '</div>'
|
156 |
);
|
157 |
|
158 |
-
$options[] = array(
|
159 |
-
'type' => 'separator',
|
160 |
-
'cssClass' => 'factory-separator-dashed'
|
161 |
-
);
|
162 |
-
|
163 |
$options[] = array(
|
164 |
'type' => 'checkbox',
|
165 |
'way' => 'buttons',
|
@@ -220,30 +205,16 @@ There is currently no UI to do so.', 'clearfy') . ' <br><b>Clearfy: </b>' . __('
|
|
220 |
'default' => false
|
221 |
);
|
222 |
|
223 |
-
|
224 |
-
'type' => 'separator',
|
225 |
-
'cssClass' => 'factory-separator-dashed'
|
226 |
-
);
|
227 |
|
228 |
-
$
|
229 |
-
'type' => 'html',
|
230 |
-
'html' => array($this, '_showFormButton')
|
231 |
-
);*/
|
232 |
-
|
233 |
-
$formOptions = array();
|
234 |
-
|
235 |
-
$formOptions[] = array(
|
236 |
'type' => 'form-group',
|
237 |
'items' => $options,
|
238 |
//'cssClass' => 'postbox'
|
239 |
);
|
240 |
|
241 |
-
return apply_filters('wbcr_clr_seo_form_options', $
|
242 |
}
|
243 |
-
/*public function sfsdfsdf()
|
244 |
-
{
|
245 |
-
echo 'fsdfsdf';
|
246 |
-
}*/
|
247 |
}
|
248 |
|
249 |
-
|
11 |
* The id of the page in the admin menu.
|
12 |
*
|
13 |
* Mainly used to navigate between pages.
|
14 |
+
* @see FactoryPages324_AdminPage
|
15 |
*
|
16 |
* @since 1.0.0
|
17 |
* @var string
|
109 |
'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __('Server headers and response', 'clearfy') . '</strong>' . '<p>' . __('WordPress does not know how to give the Last Modified header in the server\'s responses. You can do this using the settings below.', 'clearfy') . '</p>' . '</div>'
|
110 |
);
|
111 |
|
|
|
|
|
|
|
|
|
|
|
112 |
$options[] = array(
|
113 |
'type' => 'checkbox',
|
114 |
'way' => 'buttons',
|
140 |
'default' => false
|
141 |
);
|
142 |
|
|
|
|
|
|
|
|
|
|
|
143 |
$options[] = array(
|
144 |
'type' => 'html',
|
145 |
'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __('For the Yoast SEO plugin', 'clearfy') . '</strong>' . '<p>' . __('These settings will help you eliminate some problems associated with the popular Yoast SEO plugin', 'clearfy') . '</p>' . '</div>'
|
146 |
);
|
147 |
|
|
|
|
|
|
|
|
|
|
|
148 |
$options[] = array(
|
149 |
'type' => 'checkbox',
|
150 |
'way' => 'buttons',
|
205 |
'default' => false
|
206 |
);
|
207 |
|
208 |
+
$form_options = array();
|
|
|
|
|
|
|
209 |
|
210 |
+
$form_options[] = array(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
211 |
'type' => 'form-group',
|
212 |
'items' => $options,
|
213 |
//'cssClass' => 'postbox'
|
214 |
);
|
215 |
|
216 |
+
return apply_filters('wbcr_clr_seo_form_options', $form_options, $this);
|
217 |
}
|
|
|
|
|
|
|
|
|
218 |
}
|
219 |
|
220 |
+
FactoryPages324::register($wbcr_clearfy_plugin, 'WbcrClr_SeoPage');
|
admin/pages/widgets.php
CHANGED
@@ -11,7 +11,7 @@
|
|
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
|
@@ -163,16 +163,16 @@
|
|
163 |
'default' => false
|
164 |
);
|
165 |
|
166 |
-
$
|
167 |
|
168 |
-
$
|
169 |
'type' => 'form-group',
|
170 |
'items' => $options,
|
171 |
//'cssClass' => 'postbox'
|
172 |
);
|
173 |
|
174 |
-
return apply_filters('wbcr_clr_seo_form_options', $
|
175 |
}
|
176 |
}
|
177 |
|
178 |
-
|
11 |
* The id of the page in the admin menu.
|
12 |
*
|
13 |
* Mainly used to navigate between pages.
|
14 |
+
* @see FactoryPages324_AdminPage
|
15 |
*
|
16 |
* @since 1.0.0
|
17 |
* @var string
|
163 |
'default' => false
|
164 |
);
|
165 |
|
166 |
+
$form_options = array();
|
167 |
|
168 |
+
$form_options[] = array(
|
169 |
'type' => 'form-group',
|
170 |
'items' => $options,
|
171 |
//'cssClass' => 'postbox'
|
172 |
);
|
173 |
|
174 |
+
return apply_filters('wbcr_clr_seo_form_options', $form_options);
|
175 |
}
|
176 |
}
|
177 |
|
178 |
+
FactoryPages324::register($wbcr_clearfy_plugin, 'WbcrClr_WidgetsPage');
|
clearfy.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* Plugin URI: https://wordpress.org/plugins/clearfy/
|
5 |
* Description: Disables unused Wordpress features, improves performance and increases SEO rankings, using Clearfy, which makes WordPress very easy.
|
6 |
* Author: Webcraftic <wordpress.webraftic@gmail.com>
|
7 |
-
* Version: 1.1.
|
8 |
* Text Domain: clearfy
|
9 |
* Domain Path: /languages/
|
10 |
*/
|
@@ -35,7 +35,7 @@
|
|
35 |
$wbcr_clearfy_plugin = new Factory326_Plugin(__FILE__, array(
|
36 |
'name' => 'wbcr_clearfy',
|
37 |
'title' => __('Clearfy', 'clearfy'),
|
38 |
-
'version' => '1.1.
|
39 |
'host' => 'wordpress.org',
|
40 |
'url' => 'https://wordpress.org/plugins/clearfy/',
|
41 |
'assembly' => 'free',
|
@@ -46,9 +46,8 @@
|
|
46 |
$wbcr_clearfy_plugin->load(array(
|
47 |
array('libs/factory/bootstrap', 'factory_bootstrap_330', 'admin'),
|
48 |
array('libs/factory/forms', 'factory_forms_329', 'admin'),
|
49 |
-
array('libs/factory/
|
50 |
-
array('libs/factory/
|
51 |
-
array('libs/factory/clearfy', 'factory_clearfy_101', 'all'),
|
52 |
));
|
53 |
|
54 |
require(WBCR_CLR_PLUGIN_DIR . '/includes/functions.php');
|
@@ -76,7 +75,8 @@
|
|
76 |
$wbcr_clearfy_plugin->loadAddons(array(
|
77 |
'updates_manager' => WBCR_CLR_PLUGIN_DIR . '/components/updates-manager/webcraftic-updates-manager.php',
|
78 |
'comments_plus' => WBCR_CLR_PLUGIN_DIR . '/components/comments-plus/comments-plus.php',
|
79 |
-
'gonzales' => WBCR_CLR_PLUGIN_DIR . '/components/assets-manager/gonzales.php'
|
|
|
80 |
));
|
81 |
}
|
82 |
|
4 |
* Plugin URI: https://wordpress.org/plugins/clearfy/
|
5 |
* Description: Disables unused Wordpress features, improves performance and increases SEO rankings, using Clearfy, which makes WordPress very easy.
|
6 |
* Author: Webcraftic <wordpress.webraftic@gmail.com>
|
7 |
+
* Version: 1.1.8
|
8 |
* Text Domain: clearfy
|
9 |
* Domain Path: /languages/
|
10 |
*/
|
35 |
$wbcr_clearfy_plugin = new Factory326_Plugin(__FILE__, array(
|
36 |
'name' => 'wbcr_clearfy',
|
37 |
'title' => __('Clearfy', 'clearfy'),
|
38 |
+
'version' => '1.1.8',
|
39 |
'host' => 'wordpress.org',
|
40 |
'url' => 'https://wordpress.org/plugins/clearfy/',
|
41 |
'assembly' => 'free',
|
46 |
$wbcr_clearfy_plugin->load(array(
|
47 |
array('libs/factory/bootstrap', 'factory_bootstrap_330', 'admin'),
|
48 |
array('libs/factory/forms', 'factory_forms_329', 'admin'),
|
49 |
+
array('libs/factory/pages', 'factory_pages_324', 'admin'),
|
50 |
+
array('libs/factory/clearfy', 'factory_clearfy_102', 'all'),
|
|
|
51 |
));
|
52 |
|
53 |
require(WBCR_CLR_PLUGIN_DIR . '/includes/functions.php');
|
75 |
$wbcr_clearfy_plugin->loadAddons(array(
|
76 |
'updates_manager' => WBCR_CLR_PLUGIN_DIR . '/components/updates-manager/webcraftic-updates-manager.php',
|
77 |
'comments_plus' => WBCR_CLR_PLUGIN_DIR . '/components/comments-plus/comments-plus.php',
|
78 |
+
'gonzales' => WBCR_CLR_PLUGIN_DIR . '/components/assets-manager/gonzales.php',
|
79 |
+
'disable_admin_notices' => WBCR_CLR_PLUGIN_DIR . '/components/disable-admin-notices/disable-admin-notices.php'
|
80 |
));
|
81 |
}
|
82 |
|
components/assets-manager/admin/boot.php
CHANGED
@@ -25,6 +25,17 @@
|
|
25 |
add_filter('plugin_row_meta', 'wbcr_gnz_set_plugin_meta', 10, 2);
|
26 |
}
|
27 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
function wbcr_gnz_group_options($options)
|
29 |
{
|
30 |
$options[] = array(
|
25 |
add_filter('plugin_row_meta', 'wbcr_gnz_set_plugin_meta', 10, 2);
|
26 |
}
|
27 |
|
28 |
+
function wbcr_gnz_rating_widget_url($page_url, $plugin_name)
|
29 |
+
{
|
30 |
+
if( $plugin_name == 'wbcr_gonzales' ) {
|
31 |
+
return 'https://goo.gl/zyNV6z';
|
32 |
+
}
|
33 |
+
|
34 |
+
return $page_url;
|
35 |
+
}
|
36 |
+
|
37 |
+
add_filter('wbcr_factory_imppage_rating_widget_url', 'wbcr_gnz_rating_widget_url', 10, 2);
|
38 |
+
|
39 |
function wbcr_gnz_group_options($options)
|
40 |
{
|
41 |
$options[] = array(
|
components/assets-manager/admin/pages/assets-manager.php
CHANGED
@@ -5,13 +5,13 @@
|
|
5 |
*
|
6 |
* @since 1.0.0
|
7 |
*/
|
8 |
-
class WbcrGnz_AssetsManagerPage extends
|
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
|
@@ -73,7 +73,7 @@
|
|
73 |
?>
|
74 |
<div class="wbcr-factory-sidebar-widget wbcr-factory-configuration wbcr-factory-warning wbcr-factory-hide">
|
75 |
<p>
|
76 |
-
<strong><?php _e('Make manager quiet after setting optimal configuration', '
|
77 |
</p>
|
78 |
<ul>
|
79 |
<li><b>Q:</b> When I should implement this definition?</li>
|
@@ -182,4 +182,4 @@
|
|
182 |
}
|
183 |
}
|
184 |
|
185 |
-
|
5 |
*
|
6 |
* @since 1.0.0
|
7 |
*/
|
8 |
+
class WbcrGnz_AssetsManagerPage extends FactoryPages324_ImpressiveThemplate {
|
9 |
|
10 |
/**
|
11 |
* The id of the page in the admin menu.
|
12 |
*
|
13 |
* Mainly used to navigate between pages.
|
14 |
+
* @see FactoryPages324_AdminPage
|
15 |
*
|
16 |
* @since 1.0.0
|
17 |
* @var string
|
73 |
?>
|
74 |
<div class="wbcr-factory-sidebar-widget wbcr-factory-configuration wbcr-factory-warning wbcr-factory-hide">
|
75 |
<p>
|
76 |
+
<strong><?php _e('Make manager quiet after setting optimal configuration', 'factory_pages_324'); ?></strong>
|
77 |
</p>
|
78 |
<ul>
|
79 |
<li><b>Q:</b> When I should implement this definition?</li>
|
182 |
}
|
183 |
}
|
184 |
|
185 |
+
FactoryPages324::register($wbcr_gonzales_plugin, 'WbcrGnz_AssetsManagerPage');
|
components/assets-manager/admin/pages/more-features.php
CHANGED
@@ -5,8 +5,8 @@
|
|
5 |
*
|
6 |
* @since 1.0.0
|
7 |
*/
|
8 |
-
class
|
9 |
|
10 |
}
|
11 |
|
12 |
-
|
5 |
*
|
6 |
* @since 1.0.0
|
7 |
*/
|
8 |
+
class WbcrGnz_MoreFeaturesPage extends FactoryClearfy102_MoreFeaturesPage {
|
9 |
|
10 |
}
|
11 |
|
12 |
+
FactoryPages324::register($wbcr_gonzales_plugin, 'WbcrGnz_MoreFeaturesPage');
|
components/assets-manager/assets/css/assets-manager.css
CHANGED
@@ -17,6 +17,7 @@ body {
|
|
17 |
right: 0;
|
18 |
background: rgba(0, 0, 0, 0.5);
|
19 |
overflow-y: auto;
|
|
|
20 |
}
|
21 |
#wbcr-assets-manager {
|
22 |
background: #ffffff;
|
@@ -112,6 +113,7 @@ body {
|
|
112 |
appearance: menulist;
|
113 |
-webkit-appearance: menulist;
|
114 |
color: #827b7b;
|
|
|
115 |
}
|
116 |
#wbcr-assets-manager table select,
|
117 |
#wbcr-assets-manager table select:focus,
|
17 |
right: 0;
|
18 |
background: rgba(0, 0, 0, 0.5);
|
19 |
overflow-y: auto;
|
20 |
+
font-family: "Open Sans", Arial, sans-serif;
|
21 |
}
|
22 |
#wbcr-assets-manager {
|
23 |
background: #ffffff;
|
113 |
appearance: menulist;
|
114 |
-webkit-appearance: menulist;
|
115 |
color: #827b7b;
|
116 |
+
font-family: "Open Sans", Arial, sans-serif;
|
117 |
}
|
118 |
#wbcr-assets-manager table select,
|
119 |
#wbcr-assets-manager table select:focus,
|
components/assets-manager/assets/css/assets-manager.less
CHANGED
@@ -18,6 +18,7 @@ html, body {
|
|
18 |
right: 0;
|
19 |
background: rgba(0, 0, 0, 0.5);
|
20 |
overflow-y: auto;
|
|
|
21 |
}
|
22 |
|
23 |
#wbcr-assets-manager {
|
@@ -121,6 +122,8 @@ html, body {
|
|
121 |
appearance: menulist;
|
122 |
-webkit-appearance: menulist;
|
123 |
color: #827b7b;
|
|
|
|
|
124 |
&, &:focus, &:hover, &:active {
|
125 |
border: 1px solid #d6d2d2;
|
126 |
box-shadow: none;
|
18 |
right: 0;
|
19 |
background: rgba(0, 0, 0, 0.5);
|
20 |
overflow-y: auto;
|
21 |
+
font-family: "Open Sans", Arial, sans-serif;
|
22 |
}
|
23 |
|
24 |
#wbcr-assets-manager {
|
122 |
appearance: menulist;
|
123 |
-webkit-appearance: menulist;
|
124 |
color: #827b7b;
|
125 |
+
font-family: "Open Sans", Arial, sans-serif;
|
126 |
+
|
127 |
&, &:focus, &:hover, &:active {
|
128 |
border: 1px solid #d6d2d2;
|
129 |
box-shadow: none;
|
components/assets-manager/gonzales.php
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* Plugin Name: Webcraftic
|
4 |
* Plugin URI: https://wordpress.org/plugins/gonzales/
|
5 |
-
* Description:
|
6 |
* Author: Webcraftic <wordpress.webraftic@gmail.com>
|
7 |
-
* Version: 1.0.
|
8 |
* Text Domain: gonzales
|
9 |
* Domain Path: /languages/
|
10 |
*/
|
@@ -14,7 +14,7 @@
|
|
14 |
{
|
15 |
?>
|
16 |
<div class="notice notice-error">
|
17 |
-
<p><?php _e('We found that you use the plugin "Clearfy - disable unused functions", this plugin already has the same functions as "
|
18 |
</div>
|
19 |
<?php
|
20 |
}
|
@@ -52,7 +52,7 @@
|
|
52 |
$wbcr_gonzales_plugin = new Factory326_Plugin(__FILE__, array(
|
53 |
'name' => 'wbcr_gonzales',
|
54 |
'title' => __('Webcraftic assets manager', 'gonzales'),
|
55 |
-
'version' => '1.0.
|
56 |
'host' => 'wordpress.org',
|
57 |
'url' => 'https://wordpress.org/plugins/gonzales/',
|
58 |
'assembly' => 'free',
|
@@ -63,8 +63,8 @@
|
|
63 |
$wbcr_gonzales_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', '
|
67 |
-
array('libs/factory/clearfy', '
|
68 |
));
|
69 |
}
|
70 |
|
1 |
<?php
|
2 |
/**
|
3 |
+
* Plugin Name: Webcraftic Assets manager
|
4 |
* Plugin URI: https://wordpress.org/plugins/gonzales/
|
5 |
+
* Description: Increase the speed of the pages by disabling unused scripts (.JS) and styles (.CSS). Make your website REACTIVE!
|
6 |
* Author: Webcraftic <wordpress.webraftic@gmail.com>
|
7 |
+
* Version: 1.0.1
|
8 |
* Text Domain: gonzales
|
9 |
* Domain Path: /languages/
|
10 |
*/
|
14 |
{
|
15 |
?>
|
16 |
<div class="notice notice-error">
|
17 |
+
<p><?php _e('We found that you use the plugin "Clearfy - disable unused functions", this plugin already has the same functions as "Assets manager", so you can disable the "Assets manager" plugin!', 'gonzales'); ?></p>
|
18 |
</div>
|
19 |
<?php
|
20 |
}
|
52 |
$wbcr_gonzales_plugin = new Factory326_Plugin(__FILE__, array(
|
53 |
'name' => 'wbcr_gonzales',
|
54 |
'title' => __('Webcraftic assets manager', 'gonzales'),
|
55 |
+
'version' => '1.0.1',
|
56 |
'host' => 'wordpress.org',
|
57 |
'url' => 'https://wordpress.org/plugins/gonzales/',
|
58 |
'assembly' => 'free',
|
63 |
$wbcr_gonzales_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 |
|
components/assets-manager/includes/class.configurate-assets.php
CHANGED
@@ -591,9 +591,13 @@
|
|
591 |
|
592 |
$home = get_theme_root() . '/../..';
|
593 |
$src = explode('?', $src);
|
|
|
|
|
|
|
|
|
594 |
|
595 |
$src_relative = $home . str_replace(get_home_url(), '', $this->prepareCorrectUrl($src[0]));
|
596 |
-
|
597 |
if( file_exists($src_relative) ) {
|
598 |
$weight = round(filesize($src_relative) / 1024, 1);
|
599 |
}
|
591 |
|
592 |
$home = get_theme_root() . '/../..';
|
593 |
$src = explode('?', $src);
|
594 |
+
|
595 |
+
if( !filter_var($src[0], FILTER_VALIDATE_URL) === false && strpos($src[0], get_home_url()) === false ) {
|
596 |
+
return 0;
|
597 |
+
}
|
598 |
|
599 |
$src_relative = $home . str_replace(get_home_url(), '', $this->prepareCorrectUrl($src[0]));
|
600 |
+
|
601 |
if( file_exists($src_relative) ) {
|
602 |
$weight = round(filesize($src_relative) / 1024, 1);
|
603 |
}
|
components/assets-manager/languages/gonzales-fr_FR.mo
ADDED
Binary file
|
components/assets-manager/languages/gonzales-fr_FR.po
ADDED
@@ -0,0 +1,171 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: clearfy\n"
|
4 |
+
"POT-Creation-Date: 2017-11-16 09:39+0300\n"
|
5 |
+
"PO-Revision-Date: 2017-11-17 13:22+0100\n"
|
6 |
+
"Last-Translator: Robert <soutien@bestgoodeal.eu>\n"
|
7 |
+
"Language-Team: Russian\n"
|
8 |
+
"Language: fr_FR\n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"X-Generator: Poedit 2.0.4\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 |
+
"Report-Msgid-Bugs-To: \n"
|
19 |
+
"X-Poedit-SearchPath-0: .\n"
|
20 |
+
"X-Poedit-SearchPathExcluded-0: libs\n"
|
21 |
+
|
22 |
+
#: admin/pages/assets-manager.php:50
|
23 |
+
msgid "Comments"
|
24 |
+
msgstr "Commentaires"
|
25 |
+
|
26 |
+
#: gonzales.php:82
|
27 |
+
msgid "Webcraftic assets cleanup"
|
28 |
+
msgstr "Nettoyage des actifs webcraftic"
|
29 |
+
|
30 |
+
#: admin/pages/assets-manager.php:33
|
31 |
+
msgid "Webcraftic Assets manager"
|
32 |
+
msgstr "Gestionnaire d'actifs webcraftic"
|
33 |
+
|
34 |
+
#: admin/pages/assets-manager.php:51
|
35 |
+
msgid "General"
|
36 |
+
msgstr "Général"
|
37 |
+
|
38 |
+
#: admin/pages/assets-manager.php:116
|
39 |
+
msgid "Disable assets manager"
|
40 |
+
msgstr "Désactiver le gestionnaire d'actifs"
|
41 |
+
|
42 |
+
#: admin/pages/assets-manager.php:118
|
43 |
+
msgid "Full disable of the module."
|
44 |
+
msgstr "Désactivation complète du module."
|
45 |
+
|
46 |
+
#: admin/pages/assets-manager.php:140
|
47 |
+
msgid "Disable assets manager panel"
|
48 |
+
msgstr "Désactiver le panneau gestion des actifs"
|
49 |
+
|
50 |
+
#: admin/pages/assets-manager.php:142
|
51 |
+
msgid ""
|
52 |
+
"By default in your admin bar there is a button for control the assets "
|
53 |
+
"scripts and styles. With this option, you can turn off the script manager on "
|
54 |
+
"front and back-end."
|
55 |
+
msgstr ""
|
56 |
+
"Par défaut dans votre barre d'administration il y a un bouton pour contrôler "
|
57 |
+
"les scripts et les styles des actifs. Avec cette option, vous pouvez "
|
58 |
+
"désactiver le gestionnaire de scripts à l'avant et back-end."
|
59 |
+
|
60 |
+
#: admin/pages/assets-manager.php:156
|
61 |
+
msgid "Disable assets manager on front"
|
62 |
+
msgstr "Désactiver le gestionnaire d'actifs à l'avant"
|
63 |
+
|
64 |
+
#: admin/pages/assets-manager.php:158
|
65 |
+
msgid "Disables assets manager initialization for frontend."
|
66 |
+
msgstr "Initialisation du gestionnaire d'actifs désactivés pour le frontend."
|
67 |
+
|
68 |
+
#: admin/pages/assets-manager.php:165
|
69 |
+
msgid "Disable assets manager on back-end"
|
70 |
+
msgstr "Désactiver le gestionnaire d'actifs sur back-end"
|
71 |
+
|
72 |
+
#: admin/pages/assets-manager.php:167
|
73 |
+
msgid "Disables assets manager initialization for backend."
|
74 |
+
msgstr "Initialisation du gestionnaire d'actifs désactivés pour backend."
|
75 |
+
|
76 |
+
#: gonzales.php:17
|
77 |
+
msgid ""
|
78 |
+
"We found that you use the plugin \"Clearfy - disable unused functions\", "
|
79 |
+
"this plugin already has the same functions as \"WP Asset CleanUp\", so you "
|
80 |
+
"can disable the \"WP Asset CleanUp\" plugin!"
|
81 |
+
msgstr ""
|
82 |
+
"Nous avons constaté que vous utilisez le plugin \"Clearfy-désactiver les "
|
83 |
+
"fonctions inutilisées\", ce plugin a déjà les mêmes fonctions que \"WP Asset "
|
84 |
+
"Cleanup\", de sorte que vous pouvez désactiver le \"WP Asset Cleanup\" "
|
85 |
+
"plugin!"
|
86 |
+
|
87 |
+
#: plugin/includes/class.configurate-assets.php:80
|
88 |
+
msgid "Script Manager"
|
89 |
+
msgstr "Gestionnaire de scripts"
|
90 |
+
|
91 |
+
#: plugin/includes/class.configurate-assets.php:106
|
92 |
+
msgid "Assets manager"
|
93 |
+
msgstr "Gestionnaire d'actifs"
|
94 |
+
|
95 |
+
#: plugin/includes/class.configurate-assets.php:108
|
96 |
+
msgid ""
|
97 |
+
"Below you can disable/enable CSS and JS files on a per page/post basis, as "
|
98 |
+
"well as by custom post types. We recommend testing this locally or on a "
|
99 |
+
"staging site first, as you could break the appearance of your live site. If "
|
100 |
+
"you aren't sure about a certain script, you can try clicking on it, as a lot "
|
101 |
+
"of authors will mention their plugin or theme in the header of the source "
|
102 |
+
"code."
|
103 |
+
msgstr ""
|
104 |
+
"Ci-dessous vous pouvez désactiver/activer les fichiers CSS et JS sur une "
|
105 |
+
"base par page/post, ainsi que par les types de postes personnalisés. Nous "
|
106 |
+
"vous recommandons de tester cela localement ou sur un site de mise en scène "
|
107 |
+
"d'abord, comme vous pourriez rompre l'apparence de votre site en direct. Si "
|
108 |
+
"vous n'êtes pas sûr d'un certain script, vous pouvez essayer de cliquer "
|
109 |
+
"dessus, comme beaucoup d'auteurs mentionneront leur plugin ou thème dans "
|
110 |
+
"l'en-tête du code source."
|
111 |
+
|
112 |
+
#: plugin/includes/class.configurate-assets.php:109
|
113 |
+
msgid ""
|
114 |
+
"If for some reason you run into trouble, you can always enable everything "
|
115 |
+
"again to reset the settings."
|
116 |
+
msgstr ""
|
117 |
+
"Si pour une raison quelconque vous avez des problèmes, vous pouvez toujours "
|
118 |
+
"activer tout à nouveau pour réinitialiser les paramètres."
|
119 |
+
|
120 |
+
#: plugin/includes/class.configurate-assets.php:118
|
121 |
+
msgid "Save settings"
|
122 |
+
msgstr "Enregistrer les paramètres"
|
123 |
+
|
124 |
+
#: plugin/includes/class.configurate-assets.php:124
|
125 |
+
msgid "Hide panel in adminbar?"
|
126 |
+
msgstr "Masquer le panneau dans la barre d'administration?"
|
127 |
+
|
128 |
+
#: plugin/includes/class.configurate-assets.php:135
|
129 |
+
msgid "State"
|
130 |
+
msgstr "État"
|
131 |
+
|
132 |
+
#: plugin/includes/class.configurate-assets.php:136
|
133 |
+
msgid "Size"
|
134 |
+
msgstr "Taille"
|
135 |
+
|
136 |
+
#: plugin/includes/class.configurate-assets.php:137
|
137 |
+
msgid "Script"
|
138 |
+
msgstr "Script"
|
139 |
+
|
140 |
+
#: plugin/includes/class.configurate-assets.php:138
|
141 |
+
msgid "In use"
|
142 |
+
msgstr "En cours d'utilisation"
|
143 |
+
|
144 |
+
#: plugin/includes/class.configurate-assets.php:139
|
145 |
+
msgid "Disable"
|
146 |
+
msgstr "Désactivé"
|
147 |
+
|
148 |
+
#: plugin/includes/class.configurate-assets.php:140
|
149 |
+
msgid "Enable"
|
150 |
+
msgstr "Activez"
|
151 |
+
|
152 |
+
#: plugin/includes/class.configurate-assets.php:187
|
153 |
+
msgid "In use by"
|
154 |
+
msgstr "Utilisé par"
|
155 |
+
|
156 |
+
#: plugin/includes/class.configurate-assets.php:214
|
157 |
+
msgid "Enabled"
|
158 |
+
msgstr "Activée"
|
159 |
+
|
160 |
+
#: plugin/includes/class.configurate-assets.php:219
|
161 |
+
msgid "Everywhere"
|
162 |
+
msgstr "Partout"
|
163 |
+
|
164 |
+
#: plugin/includes/class.configurate-assets.php:226
|
165 |
+
#: plugin/includes/class.configurate-assets.php:249
|
166 |
+
msgid "Current URL"
|
167 |
+
msgstr "URL actuelle"
|
168 |
+
|
169 |
+
#: plugin/includes/class.configurate-assets.php:235
|
170 |
+
msgid "Disable everwhere to view enable settings."
|
171 |
+
msgstr "Désactivez partout pour afficher les paramètres d'activation."
|
components/assets-manager/languages/gonzales-ru_RU.mo
CHANGED
Binary file
|
components/assets-manager/languages/gonzales-ru_RU.po
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: clearfy\n"
|
4 |
-
"POT-Creation-Date: 2017-11-16 09:
|
5 |
-
"PO-Revision-Date: 2017-11-16
|
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"
|
@@ -19,30 +19,31 @@ msgstr ""
|
|
19 |
"X-Poedit-SearchPathExcluded-0: libs\n"
|
20 |
|
21 |
#: admin/pages/assets-manager.php:33
|
22 |
-
|
23 |
-
|
|
|
24 |
|
25 |
-
#: admin/pages/assets-manager.php:
|
26 |
msgid "Comments"
|
27 |
msgstr ""
|
28 |
|
29 |
-
#: admin/pages/assets-manager.php:
|
30 |
msgid "General"
|
31 |
msgstr "Основные"
|
32 |
|
33 |
-
#: admin/pages/assets-manager.php:
|
34 |
msgid "Disable assets manager"
|
35 |
msgstr "Отключить менеджер скриптов"
|
36 |
|
37 |
-
#: admin/pages/assets-manager.php:
|
38 |
msgid "Full disable of the module."
|
39 |
msgstr "Полностью отключает работу модуля."
|
40 |
|
41 |
-
#: admin/pages/assets-manager.php:
|
42 |
msgid "Disable assets manager panel"
|
43 |
msgstr "Скрыть панель в админбаре"
|
44 |
|
45 |
-
#: admin/pages/assets-manager.php:
|
46 |
msgid ""
|
47 |
"By default in your admin bar there is a button for control the assets "
|
48 |
"scripts and styles. With this option, you can turn off the script manager on "
|
@@ -52,19 +53,19 @@ msgstr ""
|
|
52 |
"скриптами и стилями. Используя эту настроку вы можете скрыть эту панель из "
|
53 |
"админбара, чтобы она не занимала место."
|
54 |
|
55 |
-
#: admin/pages/assets-manager.php:
|
56 |
msgid "Disable assets manager on front"
|
57 |
msgstr "Отключить менеджер скриптов на внешней стороне сайта"
|
58 |
|
59 |
-
#: admin/pages/assets-manager.php:
|
60 |
msgid "Disables assets manager initialization for frontend."
|
61 |
msgstr "Отключает инициализацию менеджера лицензий на внешней стороне сайта."
|
62 |
|
63 |
-
#: admin/pages/assets-manager.php:
|
64 |
msgid "Disable assets manager on back-end"
|
65 |
msgstr "Отключить менеджер скриптов в админпанели"
|
66 |
|
67 |
-
#: admin/pages/assets-manager.php:
|
68 |
msgid "Disables assets manager initialization for backend."
|
69 |
msgstr "Отключает инициализацию менеджера лицензий в админпанели сайта."
|
70 |
|
@@ -79,17 +80,13 @@ msgstr ""
|
|
79 |
"деактивировать плагин \"WP Asset CleanUp\"!"
|
80 |
|
81 |
#: gonzales.php:82
|
82 |
-
msgid "Webcraftic assets
|
83 |
-
msgstr ""
|
84 |
|
85 |
#: plugin/includes/class.configurate-assets.php:80
|
86 |
msgid "Script Manager"
|
87 |
msgstr "Менеджер скриптов"
|
88 |
|
89 |
-
#: plugin/includes/class.configurate-assets.php:106
|
90 |
-
msgid "Assets manager"
|
91 |
-
msgstr "Менеджер скриптов"
|
92 |
-
|
93 |
#: plugin/includes/class.configurate-assets.php:108
|
94 |
msgid ""
|
95 |
"Below you can disable/enable CSS and JS files on a per page/post basis, as "
|
@@ -172,7 +169,7 @@ msgid "Disable everwhere to view enable settings."
|
|
172 |
msgstr ""
|
173 |
"Нужно включить опцию \"повсюду\", чтобы увидеть дополнительные настройки."
|
174 |
|
175 |
-
#~ msgid "Webcraftic
|
176 |
#~ msgstr "Webcraftic менеджер скриптов"
|
177 |
|
178 |
#~ msgid ""
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: clearfy\n"
|
4 |
+
"POT-Creation-Date: 2017-11-16 09:47+0300\n"
|
5 |
+
"PO-Revision-Date: 2017-11-16 13:23+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"
|
19 |
"X-Poedit-SearchPathExcluded-0: libs\n"
|
20 |
|
21 |
#: admin/pages/assets-manager.php:33
|
22 |
+
#: plugin/includes/class.configurate-assets.php:106
|
23 |
+
msgid "Assets manager"
|
24 |
+
msgstr "Менеджер скриптов"
|
25 |
|
26 |
+
#: admin/pages/assets-manager.php:49
|
27 |
msgid "Comments"
|
28 |
msgstr ""
|
29 |
|
30 |
+
#: admin/pages/assets-manager.php:50
|
31 |
msgid "General"
|
32 |
msgstr "Основные"
|
33 |
|
34 |
+
#: admin/pages/assets-manager.php:115
|
35 |
msgid "Disable assets manager"
|
36 |
msgstr "Отключить менеджер скриптов"
|
37 |
|
38 |
+
#: admin/pages/assets-manager.php:117
|
39 |
msgid "Full disable of the module."
|
40 |
msgstr "Полностью отключает работу модуля."
|
41 |
|
42 |
+
#: admin/pages/assets-manager.php:139
|
43 |
msgid "Disable assets manager panel"
|
44 |
msgstr "Скрыть панель в админбаре"
|
45 |
|
46 |
+
#: admin/pages/assets-manager.php:141
|
47 |
msgid ""
|
48 |
"By default in your admin bar there is a button for control the assets "
|
49 |
"scripts and styles. With this option, you can turn off the script manager on "
|
53 |
"скриптами и стилями. Используя эту настроку вы можете скрыть эту панель из "
|
54 |
"админбара, чтобы она не занимала место."
|
55 |
|
56 |
+
#: admin/pages/assets-manager.php:155
|
57 |
msgid "Disable assets manager on front"
|
58 |
msgstr "Отключить менеджер скриптов на внешней стороне сайта"
|
59 |
|
60 |
+
#: admin/pages/assets-manager.php:157
|
61 |
msgid "Disables assets manager initialization for frontend."
|
62 |
msgstr "Отключает инициализацию менеджера лицензий на внешней стороне сайта."
|
63 |
|
64 |
+
#: admin/pages/assets-manager.php:164
|
65 |
msgid "Disable assets manager on back-end"
|
66 |
msgstr "Отключить менеджер скриптов в админпанели"
|
67 |
|
68 |
+
#: admin/pages/assets-manager.php:166
|
69 |
msgid "Disables assets manager initialization for backend."
|
70 |
msgstr "Отключает инициализацию менеджера лицензий в админпанели сайта."
|
71 |
|
80 |
"деактивировать плагин \"WP Asset CleanUp\"!"
|
81 |
|
82 |
#: gonzales.php:82
|
83 |
+
msgid "Webcraftic assets manager"
|
84 |
+
msgstr "Webcraftic менеджер скриптов"
|
85 |
|
86 |
#: plugin/includes/class.configurate-assets.php:80
|
87 |
msgid "Script Manager"
|
88 |
msgstr "Менеджер скриптов"
|
89 |
|
|
|
|
|
|
|
|
|
90 |
#: plugin/includes/class.configurate-assets.php:108
|
91 |
msgid ""
|
92 |
"Below you can disable/enable CSS and JS files on a per page/post basis, as "
|
169 |
msgstr ""
|
170 |
"Нужно включить опцию \"повсюду\", чтобы увидеть дополнительные настройки."
|
171 |
|
172 |
+
#~ msgid "Webcraftic Assets manager"
|
173 |
#~ msgstr "Webcraftic менеджер скриптов"
|
174 |
|
175 |
#~ msgid ""
|
components/assets-manager/readme.txt
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
===
|
2 |
Tags: dequeue script, dequeue style, pagespeed, speed, unload style, gonzales, assets clean, assets, assets cleanup, page speed optimizer, perfmatters, disable script, disable style, disable jquery, disable jquery-migrate, disable fonts
|
3 |
Contributors: webcraftic
|
4 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=VDX7JNTQPNPFW
|
@@ -8,15 +8,13 @@ Requires PHP: 5.2
|
|
8 |
Stable tag: trunk
|
9 |
License: GPLv2
|
10 |
|
11 |
-
|
12 |
|
13 |
== Description ==
|
14 |
|
15 |
-
|
16 |
|
17 |
-
|
18 |
-
|
19 |
-
WP Asset CleanUp scans your page and detects all the assets that are loaded. All you have to do when editing a page/post is just to select the ones you DO NOT wish to load.
|
20 |
|
21 |
THIS PLUGIN’S BENEFITS INCLUDE
|
22 |
|
@@ -27,17 +25,13 @@ Remove possible conflicts between plugins/theme (e.g. 2 JavaScript files that ar
|
|
27 |
Better performance score if you test your URL on websites such as GTmetrix, PageSpeed Insights, Pingdom Website Speed Test
|
28 |
Google will love your website more as it would be faster and fast page load is nowadays a factor in search ranking
|
29 |
Your server access log files (e.g the Apache ones) will be easier to scan and would take less space on your server
|
30 |
-
Plugin works with WordPress Multisite Network enabled!
|
31 |
-
|
32 |
-
NOTE: People that have tested the plugin are so far happy with it and I want to keep a good reputation for it. In case something is not working for you or have any suggestions, please write to me on the forum and I will be happy to assist you.
|
33 |
-
|
34 |
-
== Details ==
|
35 |
|
36 |
-
|
37 |
|
38 |
== Translations ==
|
39 |
|
40 |
* English - default, always included
|
|
|
41 |
* Russian
|
42 |
|
43 |
If you want to help with the translation, please contact me through this site or through the contacts inside the plugin.
|
@@ -50,7 +44,8 @@ If you want to help with the translation, please contact me through this site or
|
|
50 |
|
51 |
== Screenshots ==
|
52 |
1. Control panel
|
|
|
53 |
|
54 |
== Changelog ==
|
55 |
-
= 1.0.
|
56 |
* Plugin release
|
1 |
+
=== WP Asset CleanUp (Gonzales), Assets manager, Page speed optimizer ===
|
2 |
Tags: dequeue script, dequeue style, pagespeed, speed, unload style, gonzales, assets clean, assets, assets cleanup, page speed optimizer, perfmatters, disable script, disable style, disable jquery, disable jquery-migrate, disable fonts
|
3 |
Contributors: webcraftic
|
4 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=VDX7JNTQPNPFW
|
8 |
Stable tag: trunk
|
9 |
License: GPLv2
|
10 |
|
11 |
+
Increase the speed of the pages by disabling unused scripts (.JS) and styles (.CSS). Make your website REACTIVE!
|
12 |
|
13 |
== Description ==
|
14 |
|
15 |
+
You should know that, a lot of WordPress plugins developers forget performance when creating plugins. This means that a lot of them load self scripts/styles on every single post and or page of your site. This is not good, because it slows your site down.
|
16 |
|
17 |
+
That's why we created the WP Asset CleanUp plugin (Gonzales), with it, you can choose which scripts and styles should be loaded on the page, and which ones do not. One example of this would be with the Contact Form 7 plugin. With two clicks you can disable it everywhere except for on your contact page.
|
|
|
|
|
18 |
|
19 |
THIS PLUGIN’S BENEFITS INCLUDE
|
20 |
|
25 |
Better performance score if you test your URL on websites such as GTmetrix, PageSpeed Insights, Pingdom Website Speed Test
|
26 |
Google will love your website more as it would be faster and fast page load is nowadays a factor in search ranking
|
27 |
Your server access log files (e.g the Apache ones) will be easier to scan and would take less space on your server
|
|
|
|
|
|
|
|
|
|
|
28 |
|
29 |
+
We used some useful functions from plugins <strong>Asset Queue Manager</strong>, <strong>WP Asset CleanUp (Page Speed Optimizer)</strong>, <strong>Clearfy – disable unused features</strong>, <strong>wp disable</strong>, <strong>Disabler</strong>, <strong>Admin Tweaks</strong>
|
30 |
|
31 |
== Translations ==
|
32 |
|
33 |
* English - default, always included
|
34 |
+
* French - Thank you very much to user (kingteamdunet)
|
35 |
* Russian
|
36 |
|
37 |
If you want to help with the translation, please contact me through this site or through the contacts inside the plugin.
|
44 |
|
45 |
== Screenshots ==
|
46 |
1. Control panel
|
47 |
+
2. Assets manager
|
48 |
|
49 |
== Changelog ==
|
50 |
+
= 1.0.0 =
|
51 |
* Plugin release
|
components/comments-plus/admin/boot.php
CHANGED
@@ -12,6 +12,17 @@
|
|
12 |
require(WBCR_CMP_PLUGIN_DIR . '/admin/pages/more-features.php');
|
13 |
}
|
14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
function wbcr_cmp_group_options($options)
|
16 |
{
|
17 |
$options[] = array(
|
@@ -54,7 +65,7 @@
|
|
54 |
function wbcr_cmp_allow_quick_mods($mods)
|
55 |
{
|
56 |
$mods['disable_all_comments'] = array(
|
57 |
-
'title' => __('
|
58 |
'icon' => 'dashicons-testimonial'
|
59 |
);
|
60 |
|
12 |
require(WBCR_CMP_PLUGIN_DIR . '/admin/pages/more-features.php');
|
13 |
}
|
14 |
|
15 |
+
function wbcr_cmp_rating_widget_url($page_url, $plugin_name)
|
16 |
+
{
|
17 |
+
if( $plugin_name == 'wbcr_comments_plus' ) {
|
18 |
+
return 'https://goo.gl/v4QkW5';
|
19 |
+
}
|
20 |
+
|
21 |
+
return $page_url;
|
22 |
+
}
|
23 |
+
|
24 |
+
add_filter('wbcr_factory_imppage_rating_widget_url', 'wbcr_cmp_rating_widget_url', 10, 2);
|
25 |
+
|
26 |
function wbcr_cmp_group_options($options)
|
27 |
{
|
28 |
$options[] = array(
|
65 |
function wbcr_cmp_allow_quick_mods($mods)
|
66 |
{
|
67 |
$mods['disable_all_comments'] = array(
|
68 |
+
'title' => __('One click disable all comments', 'comments-plus'),
|
69 |
'icon' => 'dashicons-testimonial'
|
70 |
);
|
71 |
|
components/comments-plus/admin/pages/comments.php
CHANGED
@@ -5,13 +5,13 @@
|
|
5 |
*
|
6 |
* @since 1.0.0
|
7 |
*/
|
8 |
-
class WbcrCmp_CommentsPage extends
|
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
|
@@ -21,7 +21,7 @@
|
|
21 |
|
22 |
public function __construct(Factory326_Plugin $plugin)
|
23 |
{
|
24 |
-
$this->menuTitle = __('
|
25 |
|
26 |
if( !defined('LOADING_COMMENTS_PLUS_AS_ADDON') ) {
|
27 |
$this->internal = false;
|
@@ -29,7 +29,7 @@
|
|
29 |
$this->addLinkToPluginActions = true;
|
30 |
}
|
31 |
|
32 |
-
add_filter('wbcr_factory_imppage_actions_notice', array($this, 'actionsNotice'));
|
33 |
|
34 |
parent::__construct($plugin);
|
35 |
}
|
@@ -46,14 +46,20 @@
|
|
46 |
* @param $notices
|
47 |
* @return array
|
48 |
*/
|
49 |
-
public function actionsNotice($notices)
|
50 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
$notices[] = array(
|
52 |
'conditions' => array(
|
53 |
'wbcr_cmp_clear_comments' => 1
|
54 |
),
|
55 |
'type' => 'success',
|
56 |
-
'message' => __('All comments have been deleted.', '
|
57 |
);
|
58 |
|
59 |
$notices[] = array(
|
@@ -62,7 +68,7 @@
|
|
62 |
'wbcr_cmp_code' => 'interal_error'
|
63 |
),
|
64 |
'type' => 'danger',
|
65 |
-
'message' => __('An error occurred while trying to delete comments. Internal error occured. Please try again later.', '
|
66 |
);
|
67 |
|
68 |
return $notices;
|
@@ -305,4 +311,4 @@
|
|
305 |
}
|
306 |
}
|
307 |
|
308 |
-
|
5 |
*
|
6 |
* @since 1.0.0
|
7 |
*/
|
8 |
+
class WbcrCmp_CommentsPage extends FactoryPages324_ImpressiveThemplate {
|
9 |
|
10 |
/**
|
11 |
* The id of the page in the admin menu.
|
12 |
*
|
13 |
* Mainly used to navigate between pages.
|
14 |
+
* @see FactoryPages324_AdminPage
|
15 |
*
|
16 |
* @since 1.0.0
|
17 |
* @var string
|
21 |
|
22 |
public function __construct(Factory326_Plugin $plugin)
|
23 |
{
|
24 |
+
$this->menuTitle = __('Disable comments', 'comments-plus');
|
25 |
|
26 |
if( !defined('LOADING_COMMENTS_PLUS_AS_ADDON') ) {
|
27 |
$this->internal = false;
|
29 |
$this->addLinkToPluginActions = true;
|
30 |
}
|
31 |
|
32 |
+
add_filter('wbcr_factory_imppage_actions_notice', array($this, 'actionsNotice'), 10, 2);
|
33 |
|
34 |
parent::__construct($plugin);
|
35 |
}
|
46 |
* @param $notices
|
47 |
* @return array
|
48 |
*/
|
49 |
+
public function actionsNotice($notices, $plugin)
|
50 |
{
|
51 |
+
global $wbcr_comments_plus_plugin;
|
52 |
+
|
53 |
+
if( $wbcr_comments_plus_plugin->pluginName != $plugin->pluginName ) {
|
54 |
+
return $notices;
|
55 |
+
}
|
56 |
+
|
57 |
$notices[] = array(
|
58 |
'conditions' => array(
|
59 |
'wbcr_cmp_clear_comments' => 1
|
60 |
),
|
61 |
'type' => 'success',
|
62 |
+
'message' => __('All comments have been deleted.', 'factory_pages_324')
|
63 |
);
|
64 |
|
65 |
$notices[] = array(
|
68 |
'wbcr_cmp_code' => 'interal_error'
|
69 |
),
|
70 |
'type' => 'danger',
|
71 |
+
'message' => __('An error occurred while trying to delete comments. Internal error occured. Please try again later.', 'factory_pages_324')
|
72 |
);
|
73 |
|
74 |
return $notices;
|
311 |
}
|
312 |
}
|
313 |
|
314 |
+
FactoryPages324::register($wbcr_comments_plus_plugin, 'WbcrCmp_CommentsPage');
|
components/comments-plus/admin/pages/more-features.php
CHANGED
@@ -5,8 +5,8 @@
|
|
5 |
*
|
6 |
* @since 1.0.0
|
7 |
*/
|
8 |
-
class WbcrCmp_MoreFeaturesPage extends
|
9 |
|
10 |
}
|
11 |
|
12 |
-
|
5 |
*
|
6 |
* @since 1.0.0
|
7 |
*/
|
8 |
+
class WbcrCmp_MoreFeaturesPage extends FactoryClearfy102_MoreFeaturesPage {
|
9 |
|
10 |
}
|
11 |
|
12 |
+
FactoryPages324::register($wbcr_comments_plus_plugin, 'WbcrCmp_MoreFeaturesPage');
|
components/comments-plus/comments-plus.php
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* Plugin Name: Webcraftic
|
4 |
* Plugin URI: https://wordpress.org/plugins/comments-plus/
|
5 |
* Description: Allows administrators to globally disable comments on their site. Comments can be disabled for individual record types.
|
6 |
* Author: Webcraftic <wordpress.webraftic@gmail.com>
|
7 |
-
* Version: 1.0.
|
8 |
* Text Domain: comments-plus
|
9 |
* Domain Path: /languages/
|
10 |
*/
|
@@ -14,7 +14,7 @@
|
|
14 |
{
|
15 |
?>
|
16 |
<div class="notice notice-error">
|
17 |
-
<p><?php _e('We found that you have the "Clearfy - disable unused features" plugin installed, this plugin already has disable comments functions, so you can deactivate plugin "
|
18 |
</div>
|
19 |
<?php
|
20 |
}
|
@@ -51,8 +51,8 @@
|
|
51 |
|
52 |
$wbcr_comments_plus_plugin = new Factory326_Plugin(__FILE__, array(
|
53 |
'name' => 'wbcr_comments_plus',
|
54 |
-
'title' => __('Webcraftic comments
|
55 |
-
'version' => '1.0.
|
56 |
'host' => 'wordpress.org',
|
57 |
'url' => 'https://wordpress.org/plugins/comments-plus/',
|
58 |
'assembly' => 'free',
|
@@ -63,8 +63,8 @@
|
|
63 |
$wbcr_comments_plus_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', '
|
67 |
-
array('libs/factory/clearfy', '
|
68 |
));
|
69 |
}
|
70 |
|
1 |
<?php
|
2 |
/**
|
3 |
+
* Plugin Name: Webcraftic Disable Comments
|
4 |
* Plugin URI: https://wordpress.org/plugins/comments-plus/
|
5 |
* Description: Allows administrators to globally disable comments on their site. Comments can be disabled for individual record types.
|
6 |
* Author: Webcraftic <wordpress.webraftic@gmail.com>
|
7 |
+
* Version: 1.0.5
|
8 |
* Text Domain: comments-plus
|
9 |
* Domain Path: /languages/
|
10 |
*/
|
14 |
{
|
15 |
?>
|
16 |
<div class="notice notice-error">
|
17 |
+
<p><?php _e('We found that you have the "Clearfy - disable unused features" plugin installed, this plugin already has disable comments functions, so you can deactivate plugin "Disable comments"!'); ?></p>
|
18 |
</div>
|
19 |
<?php
|
20 |
}
|
51 |
|
52 |
$wbcr_comments_plus_plugin = new Factory326_Plugin(__FILE__, array(
|
53 |
'name' => 'wbcr_comments_plus',
|
54 |
+
'title' => __('Webcraftic Disable comments', 'comments-plus'),
|
55 |
+
'version' => '1.0.5',
|
56 |
'host' => 'wordpress.org',
|
57 |
'url' => 'https://wordpress.org/plugins/comments-plus/',
|
58 |
'assembly' => 'free',
|
63 |
$wbcr_comments_plus_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 |
|
components/comments-plus/languages/comments-plus-ru_RU.mo
CHANGED
Binary file
|
components/comments-plus/languages/comments-plus-ru_RU.po
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: clearfy\n"
|
4 |
-
"POT-Creation-Date:
|
5 |
-
"PO-Revision-Date:
|
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"
|
@@ -22,15 +22,15 @@ msgstr ""
|
|
22 |
msgid "Disable comments on the entire site"
|
23 |
msgstr "Отключить комментарии на всем сайте"
|
24 |
|
25 |
-
#: admin/boot.php:25 admin/pages/comments.php:
|
26 |
msgid "Select post types"
|
27 |
msgstr "Выбрать тип записи"
|
28 |
|
29 |
-
#: admin/boot.php:30 admin/pages/comments.php:
|
30 |
msgid "Replace external links in comments on the JavaScript code"
|
31 |
msgstr "Заменить внешние ссылки в комментариях на JavaScript код"
|
32 |
|
33 |
-
#: admin/boot.php:35 admin/pages/comments.php:
|
34 |
msgid "Replace external links from comment authors on the JavaScript code"
|
35 |
msgstr "Заменить внешние ссылки от авторов комментариев на код JavaScript"
|
36 |
|
@@ -38,21 +38,21 @@ msgstr "Заменить внешние ссылки от авторов ком
|
|
38 |
msgid "Disable X-Pingback"
|
39 |
msgstr "Убрать ссылку на X-Pingback и возможность спамить pingback-ами"
|
40 |
|
41 |
-
#: admin/boot.php:45 admin/pages/comments.php:
|
42 |
msgid "Remove field \"site\" in comment form"
|
43 |
msgstr "Удаляет поле \"Сайт\" в форме комментариев"
|
44 |
|
45 |
#: admin/boot.php:57
|
46 |
-
msgid "
|
47 |
-
msgstr "Отключить все комментарии"
|
48 |
|
49 |
#: admin/boot.php:69
|
50 |
msgid "Get ultimate plugin free"
|
51 |
msgstr "Получите полную версию плагина бесплатно"
|
52 |
|
53 |
-
#: admin/pages/comments.php:24
|
54 |
-
msgid "
|
55 |
-
msgstr "
|
56 |
|
57 |
#: admin/pages/comments.php:40
|
58 |
msgid "Comments"
|
@@ -62,11 +62,11 @@ msgstr "Комментарии"
|
|
62 |
msgid "General"
|
63 |
msgstr "Основные"
|
64 |
|
65 |
-
#: admin/pages/comments.php:
|
66 |
msgid "All comments have been deleted."
|
67 |
msgstr "Все комментарии были удалены."
|
68 |
|
69 |
-
#: admin/pages/comments.php:
|
70 |
msgid ""
|
71 |
"An error occurred while trying to delete comments. Internal error occured. "
|
72 |
"Please try again later."
|
@@ -74,23 +74,23 @@ msgstr ""
|
|
74 |
"При попытке удалить комментарии произошла ошибка. Пожалуйста, повторите "
|
75 |
"попытку позже."
|
76 |
|
77 |
-
#: admin/pages/comments.php:
|
78 |
msgid "You are not allowed to view this page."
|
79 |
msgstr "Вам не разрешено просматривать эту страницу."
|
80 |
|
81 |
-
#: admin/pages/comments.php:
|
82 |
msgid "You do not have the selected post types!"
|
83 |
msgstr "Вы не выбрали еще ни одного типа записей!"
|
84 |
|
85 |
-
#: admin/pages/comments.php:
|
86 |
msgid "No comments available for deletion."
|
87 |
msgstr "Нет комментариев для удаления."
|
88 |
|
89 |
-
#: admin/pages/comments.php:
|
90 |
msgid "Are you sure that you desire to delete all comments from the database?"
|
91 |
msgstr "Вы уверены, что хотите удалить все комментарии из базы данных?"
|
92 |
|
93 |
-
#: admin/pages/comments.php:
|
94 |
msgid ""
|
95 |
"Deleting comments will remove existing comment entries in the database and "
|
96 |
"cannot be reverted without a database backup."
|
@@ -99,20 +99,20 @@ msgstr ""
|
|
99 |
"данных, они не могут быть восстановлены без резервного копирования базы "
|
100 |
"данных."
|
101 |
|
102 |
-
#: admin/pages/comments.php:
|
103 |
#, php-format
|
104 |
msgid "You have %s comments"
|
105 |
msgstr "У вас есть %s комментариев"
|
106 |
|
107 |
-
#: admin/pages/comments.php:
|
108 |
msgid "Yes, I'm sure"
|
109 |
msgstr "Да, я уверен"
|
110 |
|
111 |
-
#: admin/pages/comments.php:
|
112 |
msgid "No, return back"
|
113 |
msgstr "Нет, вернуться"
|
114 |
|
115 |
-
#: admin/pages/comments.php:
|
116 |
#, php-format
|
117 |
msgid ""
|
118 |
"Are you sure that you desire to delete all comments from the database for "
|
@@ -121,19 +121,15 @@ msgstr ""
|
|
121 |
"Вы уверены, что хотите удалить все комментарии из базы данных для выбранных "
|
122 |
"типов записей (%s)?"
|
123 |
|
124 |
-
#: admin/pages/comments.php:
|
125 |
-
msgid "Disable comments"
|
126 |
-
msgstr "Отключить комментарии"
|
127 |
-
|
128 |
-
#: admin/pages/comments.php:216
|
129 |
msgid "Not disable"
|
130 |
msgstr "Не отключать"
|
131 |
|
132 |
-
#: admin/pages/comments.php:
|
133 |
msgid "Everywhere"
|
134 |
msgstr "Повсюду"
|
135 |
|
136 |
-
#: admin/pages/comments.php:
|
137 |
#, php-format
|
138 |
msgid ""
|
139 |
"You can delete all comments in the database by clicking on this link (<a "
|
@@ -142,11 +138,11 @@ msgstr ""
|
|
142 |
"Вы можете удалить все комментарии в базе данных, нажав на эту ссылку ( <a "
|
143 |
"href=\"%s\">очистка комментариев в базе данных</a> )."
|
144 |
|
145 |
-
#: admin/pages/comments.php:
|
146 |
msgid "On certain post types"
|
147 |
msgstr "Только выбранные типы записей"
|
148 |
|
149 |
-
#: admin/pages/comments.php:
|
150 |
#, php-format
|
151 |
msgid ""
|
152 |
"You can delete all comments for the selected post types. Select the post "
|
@@ -157,7 +153,7 @@ msgstr ""
|
|
157 |
"записей ниже и сохраните настройки. После этого нажмите ссылку ( <a href=\"%s"
|
158 |
"\">удалите все комментарии для выбранных типов записей в базе данных</a> )."
|
159 |
|
160 |
-
#: admin/pages/comments.php:
|
161 |
msgid ""
|
162 |
"Everywhere - Warning: This option is global and will affect your entire "
|
163 |
"site. Use it only if you want to disable comments everywhere. A complete "
|
@@ -167,7 +163,7 @@ msgstr ""
|
|
167 |
"весь ваш сайт. Используйте его только в том случае, если вы хотите отключить "
|
168 |
"комментарии повсюду. "
|
169 |
|
170 |
-
#: admin/pages/comments.php:
|
171 |
msgid ""
|
172 |
"On certain post types - Disabling comments will also disable trackbacks and "
|
173 |
"pingbacks. All comment-related fields will also be hidden from the edit/"
|
@@ -179,11 +175,11 @@ msgstr ""
|
|
179 |
"от экранов редактирования / быстрого редактирования затронутых сообщений. "
|
180 |
"Эти настройки нельзя переопределять для отдельных сообщений."
|
181 |
|
182 |
-
#: admin/pages/comments.php:
|
183 |
msgid "Select the post types for which comments will be disabled"
|
184 |
msgstr "Выберите типы записей, для которых комментарии будут отключены."
|
185 |
|
186 |
-
#: admin/pages/comments.php:
|
187 |
msgid ""
|
188 |
"Tired of spam in the comments? Do visitors leave \"blank\" comments for the "
|
189 |
"sake of a link to their site?"
|
@@ -191,11 +187,11 @@ msgstr ""
|
|
191 |
"Надоел спам в комментариях? Посетители оставляют «пустые» комментарии ради "
|
192 |
"ссылки на свой сайт?"
|
193 |
|
194 |
-
#: admin/pages/comments.php:
|
195 |
msgid "Removes the \"Site\" field from the comment form."
|
196 |
msgstr "Убирает поле «Сайт» из формы комментирования."
|
197 |
|
198 |
-
#: admin/pages/comments.php:
|
199 |
msgid ""
|
200 |
"Works with the standard comment form, if the form is manually written in "
|
201 |
"your theme-it probably will not work!"
|
@@ -203,12 +199,12 @@ msgstr ""
|
|
203 |
"Работает со стандартной формой комментирования, если в Вашей теме форма "
|
204 |
"прописана вручную - скорей всего не сработает!"
|
205 |
|
206 |
-
#: admin/pages/comments.php:
|
207 |
-
#: admin/pages/comments.php:
|
208 |
msgid "Recommended"
|
209 |
msgstr "Рекомендовано"
|
210 |
|
211 |
-
#: admin/pages/comments.php:
|
212 |
msgid ""
|
213 |
"Superfluous external links from comments, which can be typed from a dozen "
|
214 |
"and more for one article, do not bring anything good for promotion."
|
@@ -216,14 +212,14 @@ msgstr ""
|
|
216 |
"Внешние ссылки в комментариях, которых может быть десятки или больше на "
|
217 |
"одной странице, могут ухудшить продвижение вашего сайта."
|
218 |
|
219 |
-
#: admin/pages/comments.php:
|
220 |
#, php-format
|
221 |
msgid "Replaces the links of this kind of %s, on links of this kind %s"
|
222 |
msgstr ""
|
223 |
"Заменяет ссылки %s, на span тег и устанавливает переход с помощью JavaScript "
|
224 |
"%s"
|
225 |
|
226 |
-
#: admin/pages/comments.php:
|
227 |
msgid ""
|
228 |
"Up to 90 percent of comments in the blog can be left for the sake of an "
|
229 |
"external link. Even nofollow from page weight loss here does not help."
|
@@ -231,7 +227,7 @@ msgstr ""
|
|
231 |
"До 90 процентов комментариев в блоге оставляют ради внешней ссылки. Не "
|
232 |
"поможет даже nofollow от потери веса страницы."
|
233 |
|
234 |
-
#: admin/pages/comments.php:
|
235 |
msgid ""
|
236 |
"Replaces the links of the authors of comments on the JavaScript code, it is "
|
237 |
"impossible to distinguish it from usual links."
|
@@ -239,15 +235,15 @@ msgstr ""
|
|
239 |
"Заменяет ссылки авторов комментариев на JavaScript код, его невозможно "
|
240 |
"отличить от обычной ссылки."
|
241 |
|
242 |
-
#: admin/pages/comments.php:
|
243 |
msgid "In some Wordpress topics this may not work."
|
244 |
msgstr "В некоторых темах Wordpress это может не сработать."
|
245 |
|
246 |
-
#: admin/pages/comments.php:
|
247 |
msgid "Disable XML-RPC"
|
248 |
msgstr "Отключить XML-RPC"
|
249 |
|
250 |
-
#: admin/pages/comments.php:
|
251 |
msgid ""
|
252 |
"A pingback is basically an automated comment that gets created when another "
|
253 |
"blog links to you. A self-pingback is created when you link to an article "
|
@@ -259,7 +255,7 @@ msgstr ""
|
|
259 |
"оставили ссылку на статью в своем блоге. Pingbacks по существу являются не "
|
260 |
"более чем спам и пустая трата ресурсов вашего сайта."
|
261 |
|
262 |
-
#: admin/pages/comments.php:
|
263 |
msgid "Removes the server responses a reference to the xmlrpc file."
|
264 |
msgstr "Удаляет ссылку на xmlrpc-файл и ответ сервера."
|
265 |
|
@@ -267,15 +263,15 @@ msgstr "Удаляет ссылку на xmlrpc-файл и ответ серв
|
|
267 |
msgid ""
|
268 |
"We found that you have the \"Clearfy - disable unused features\" plugin "
|
269 |
"installed, this plugin already has disable comments functions, so you can "
|
270 |
-
"deactivate plugin \"
|
271 |
msgstr ""
|
272 |
"Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
|
273 |
"неиспользуемые функции», этот плагин уже имеет функции отключения "
|
274 |
-
"комментариев, поэтому вы можете отключить плагин
|
275 |
|
276 |
#: comments-plus.php:82
|
277 |
-
msgid "Webcraftic comments
|
278 |
-
msgstr "Webcraftic
|
279 |
|
280 |
#: includes/classes/class.configurate-comments.php:174
|
281 |
#: includes/classes/class.configurate-comments.php:220
|
@@ -293,14 +289,18 @@ msgstr ""
|
|
293 |
"полностью отключены: %s. Многие из приведенных ниже настроек не будут "
|
294 |
"применяться для этих типов сообщений."
|
295 |
|
|
|
|
|
|
|
296 |
#~ msgid ""
|
297 |
#~ "We found that you have the \"Clearfy - disable unused features\" plugin "
|
298 |
#~ "installed, this plugin already has disable comments functions, so you can "
|
299 |
-
#~ "deactivate plugin \"
|
300 |
#~ msgstr ""
|
301 |
#~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
|
302 |
#~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
|
303 |
-
#~ "комментариев, поэтому вы можете отключить плагин
|
|
|
304 |
|
305 |
-
#~ msgid "
|
306 |
-
#~ msgstr "
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: clearfy\n"
|
4 |
+
"POT-Creation-Date: 2018-01-22 00:34+0300\n"
|
5 |
+
"PO-Revision-Date: 2018-01-22 00: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"
|
22 |
msgid "Disable comments on the entire site"
|
23 |
msgstr "Отключить комментарии на всем сайте"
|
24 |
|
25 |
+
#: admin/boot.php:25 admin/pages/comments.php:255
|
26 |
msgid "Select post types"
|
27 |
msgstr "Выбрать тип записи"
|
28 |
|
29 |
+
#: admin/boot.php:30 admin/pages/comments.php:276
|
30 |
msgid "Replace external links in comments on the JavaScript code"
|
31 |
msgstr "Заменить внешние ссылки в комментариях на JavaScript код"
|
32 |
|
33 |
+
#: admin/boot.php:35 admin/pages/comments.php:286
|
34 |
msgid "Replace external links from comment authors on the JavaScript code"
|
35 |
msgstr "Заменить внешние ссылки от авторов комментариев на код JavaScript"
|
36 |
|
38 |
msgid "Disable X-Pingback"
|
39 |
msgstr "Убрать ссылку на X-Pingback и возможность спамить pingback-ами"
|
40 |
|
41 |
+
#: admin/boot.php:45 admin/pages/comments.php:266
|
42 |
msgid "Remove field \"site\" in comment form"
|
43 |
msgstr "Удаляет поле \"Сайт\" в форме комментариев"
|
44 |
|
45 |
#: admin/boot.php:57
|
46 |
+
msgid "One click disable all comments"
|
47 |
+
msgstr "Отключить все комментарии в один клик"
|
48 |
|
49 |
#: admin/boot.php:69
|
50 |
msgid "Get ultimate plugin free"
|
51 |
msgstr "Получите полную версию плагина бесплатно"
|
52 |
|
53 |
+
#: admin/pages/comments.php:24 admin/pages/comments.php:220
|
54 |
+
msgid "Disable comments"
|
55 |
+
msgstr "Отключить комментарии"
|
56 |
|
57 |
#: admin/pages/comments.php:40
|
58 |
msgid "Comments"
|
62 |
msgid "General"
|
63 |
msgstr "Основные"
|
64 |
|
65 |
+
#: admin/pages/comments.php:62
|
66 |
msgid "All comments have been deleted."
|
67 |
msgstr "Все комментарии были удалены."
|
68 |
|
69 |
+
#: admin/pages/comments.php:71
|
70 |
msgid ""
|
71 |
"An error occurred while trying to delete comments. Internal error occured. "
|
72 |
"Please try again later."
|
74 |
"При попытке удалить комментарии произошла ошибка. Пожалуйста, повторите "
|
75 |
"попытку позже."
|
76 |
|
77 |
+
#: admin/pages/comments.php:85
|
78 |
msgid "You are not allowed to view this page."
|
79 |
msgstr "Вам не разрешено просматривать эту страницу."
|
80 |
|
81 |
+
#: admin/pages/comments.php:95
|
82 |
msgid "You do not have the selected post types!"
|
83 |
msgstr "Вы не выбрали еще ни одного типа записей!"
|
84 |
|
85 |
+
#: admin/pages/comments.php:110
|
86 |
msgid "No comments available for deletion."
|
87 |
msgstr "Нет комментариев для удаления."
|
88 |
|
89 |
+
#: admin/pages/comments.php:115
|
90 |
msgid "Are you sure that you desire to delete all comments from the database?"
|
91 |
msgstr "Вы уверены, что хотите удалить все комментарии из базы данных?"
|
92 |
|
93 |
+
#: admin/pages/comments.php:116 admin/pages/comments.php:164
|
94 |
msgid ""
|
95 |
"Deleting comments will remove existing comment entries in the database and "
|
96 |
"cannot be reverted without a database backup."
|
99 |
"данных, они не могут быть восстановлены без резервного копирования базы "
|
100 |
"данных."
|
101 |
|
102 |
+
#: admin/pages/comments.php:117 admin/pages/comments.php:165
|
103 |
#, php-format
|
104 |
msgid "You have %s comments"
|
105 |
msgstr "У вас есть %s комментариев"
|
106 |
|
107 |
+
#: admin/pages/comments.php:121 admin/pages/comments.php:169
|
108 |
msgid "Yes, I'm sure"
|
109 |
msgstr "Да, я уверен"
|
110 |
|
111 |
+
#: admin/pages/comments.php:129 admin/pages/comments.php:177
|
112 |
msgid "No, return back"
|
113 |
msgstr "Нет, вернуться"
|
114 |
|
115 |
+
#: admin/pages/comments.php:163
|
116 |
#, php-format
|
117 |
msgid ""
|
118 |
"Are you sure that you desire to delete all comments from the database for "
|
121 |
"Вы уверены, что хотите удалить все комментарии из базы данных для выбранных "
|
122 |
"типов записей (%s)?"
|
123 |
|
124 |
+
#: admin/pages/comments.php:222
|
|
|
|
|
|
|
|
|
125 |
msgid "Not disable"
|
126 |
msgstr "Не отключать"
|
127 |
|
128 |
+
#: admin/pages/comments.php:225
|
129 |
msgid "Everywhere"
|
130 |
msgstr "Повсюду"
|
131 |
|
132 |
+
#: admin/pages/comments.php:226
|
133 |
#, php-format
|
134 |
msgid ""
|
135 |
"You can delete all comments in the database by clicking on this link (<a "
|
138 |
"Вы можете удалить все комментарии в базе данных, нажав на эту ссылку ( <a "
|
139 |
"href=\"%s\">очистка комментариев в базе данных</a> )."
|
140 |
|
141 |
+
#: admin/pages/comments.php:230
|
142 |
msgid "On certain post types"
|
143 |
msgstr "Только выбранные типы записей"
|
144 |
|
145 |
+
#: admin/pages/comments.php:231
|
146 |
#, php-format
|
147 |
msgid ""
|
148 |
"You can delete all comments for the selected post types. Select the post "
|
153 |
"записей ниже и сохраните настройки. После этого нажмите ссылку ( <a href=\"%s"
|
154 |
"\">удалите все комментарии для выбранных типов записей в базе данных</a> )."
|
155 |
|
156 |
+
#: admin/pages/comments.php:235
|
157 |
msgid ""
|
158 |
"Everywhere - Warning: This option is global and will affect your entire "
|
159 |
"site. Use it only if you want to disable comments everywhere. A complete "
|
163 |
"весь ваш сайт. Используйте его только в том случае, если вы хотите отключить "
|
164 |
"комментарии повсюду. "
|
165 |
|
166 |
+
#: admin/pages/comments.php:235
|
167 |
msgid ""
|
168 |
"On certain post types - Disabling comments will also disable trackbacks and "
|
169 |
"pingbacks. All comment-related fields will also be hidden from the edit/"
|
175 |
"от экранов редактирования / быстрого редактирования затронутых сообщений. "
|
176 |
"Эти настройки нельзя переопределять для отдельных сообщений."
|
177 |
|
178 |
+
#: admin/pages/comments.php:258
|
179 |
msgid "Select the post types for which comments will be disabled"
|
180 |
msgstr "Выберите типы записей, для которых комментарии будут отключены."
|
181 |
|
182 |
+
#: admin/pages/comments.php:268
|
183 |
msgid ""
|
184 |
"Tired of spam in the comments? Do visitors leave \"blank\" comments for the "
|
185 |
"sake of a link to their site?"
|
187 |
"Надоел спам в комментариях? Посетители оставляют «пустые» комментарии ради "
|
188 |
"ссылки на свой сайт?"
|
189 |
|
190 |
+
#: admin/pages/comments.php:268
|
191 |
msgid "Removes the \"Site\" field from the comment form."
|
192 |
msgstr "Убирает поле «Сайт» из формы комментирования."
|
193 |
|
194 |
+
#: admin/pages/comments.php:268
|
195 |
msgid ""
|
196 |
"Works with the standard comment form, if the form is manually written in "
|
197 |
"your theme-it probably will not work!"
|
199 |
"Работает со стандартной формой комментирования, если в Вашей теме форма "
|
200 |
"прописана вручную - скорей всего не сработает!"
|
201 |
|
202 |
+
#: admin/pages/comments.php:276 admin/pages/comments.php:286
|
203 |
+
#: admin/pages/comments.php:296
|
204 |
msgid "Recommended"
|
205 |
msgstr "Рекомендовано"
|
206 |
|
207 |
+
#: admin/pages/comments.php:278
|
208 |
msgid ""
|
209 |
"Superfluous external links from comments, which can be typed from a dozen "
|
210 |
"and more for one article, do not bring anything good for promotion."
|
212 |
"Внешние ссылки в комментариях, которых может быть десятки или больше на "
|
213 |
"одной странице, могут ухудшить продвижение вашего сайта."
|
214 |
|
215 |
+
#: admin/pages/comments.php:278
|
216 |
#, php-format
|
217 |
msgid "Replaces the links of this kind of %s, on links of this kind %s"
|
218 |
msgstr ""
|
219 |
"Заменяет ссылки %s, на span тег и устанавливает переход с помощью JavaScript "
|
220 |
"%s"
|
221 |
|
222 |
+
#: admin/pages/comments.php:288
|
223 |
msgid ""
|
224 |
"Up to 90 percent of comments in the blog can be left for the sake of an "
|
225 |
"external link. Even nofollow from page weight loss here does not help."
|
227 |
"До 90 процентов комментариев в блоге оставляют ради внешней ссылки. Не "
|
228 |
"поможет даже nofollow от потери веса страницы."
|
229 |
|
230 |
+
#: admin/pages/comments.php:288
|
231 |
msgid ""
|
232 |
"Replaces the links of the authors of comments on the JavaScript code, it is "
|
233 |
"impossible to distinguish it from usual links."
|
235 |
"Заменяет ссылки авторов комментариев на JavaScript код, его невозможно "
|
236 |
"отличить от обычной ссылки."
|
237 |
|
238 |
+
#: admin/pages/comments.php:288
|
239 |
msgid "In some Wordpress topics this may not work."
|
240 |
msgstr "В некоторых темах Wordpress это может не сработать."
|
241 |
|
242 |
+
#: admin/pages/comments.php:296
|
243 |
msgid "Disable XML-RPC"
|
244 |
msgstr "Отключить XML-RPC"
|
245 |
|
246 |
+
#: admin/pages/comments.php:298
|
247 |
msgid ""
|
248 |
"A pingback is basically an automated comment that gets created when another "
|
249 |
"blog links to you. A self-pingback is created when you link to an article "
|
255 |
"оставили ссылку на статью в своем блоге. Pingbacks по существу являются не "
|
256 |
"более чем спам и пустая трата ресурсов вашего сайта."
|
257 |
|
258 |
+
#: admin/pages/comments.php:298
|
259 |
msgid "Removes the server responses a reference to the xmlrpc file."
|
260 |
msgstr "Удаляет ссылку на xmlrpc-файл и ответ сервера."
|
261 |
|
263 |
msgid ""
|
264 |
"We found that you have the \"Clearfy - disable unused features\" plugin "
|
265 |
"installed, this plugin already has disable comments functions, so you can "
|
266 |
+
"deactivate plugin \"Disable comments\"!"
|
267 |
msgstr ""
|
268 |
"Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
|
269 |
"неиспользуемые функции», этот плагин уже имеет функции отключения "
|
270 |
+
"комментариев, поэтому вы можете отключить плагин «Отключить комментарии»!"
|
271 |
|
272 |
#: comments-plus.php:82
|
273 |
+
msgid "Webcraftic Disable comments"
|
274 |
+
msgstr "Webcraftic отключить комментарии"
|
275 |
|
276 |
#: includes/classes/class.configurate-comments.php:174
|
277 |
#: includes/classes/class.configurate-comments.php:220
|
289 |
"полностью отключены: %s. Многие из приведенных ниже настроек не будут "
|
290 |
"применяться для этих типов сообщений."
|
291 |
|
292 |
+
#~ msgid "Webcraftic comments tweaks"
|
293 |
+
#~ msgstr "Webcraftic инструменты комментариев"
|
294 |
+
|
295 |
#~ msgid ""
|
296 |
#~ "We found that you have the \"Clearfy - disable unused features\" plugin "
|
297 |
#~ "installed, this plugin already has disable comments functions, so you can "
|
298 |
+
#~ "deactivate plugin \"Comments tweaks\"!"
|
299 |
#~ msgstr ""
|
300 |
#~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
|
301 |
#~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
|
302 |
+
#~ "комментариев, поэтому вы можете отключить плагин «Инструменты "
|
303 |
+
#~ "комментариев»!"
|
304 |
|
305 |
+
#~ msgid "Disable all comments"
|
306 |
+
#~ msgstr "Отключить все комментарии"
|
components/comments-plus/readme.txt
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
=== Comments
|
2 |
Tags: disable comments, disable XML-RPC, remove comments, delete comments, no self pings, wp disable, disable pingback comments, comments manager, webcraftic update manager, clearfy, replace external links, remove comment form, comment form, remove comment form fields, bulk comments management, spam comments cleaner, delete comments by status, no page comment, wp disable comments
|
3 |
Contributors: webcraftic
|
4 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=VDX7JNTQPNPFW
|
@@ -12,79 +12,86 @@ Allows administrators to disable comments on their website. Comments can be disa
|
|
12 |
|
13 |
== Description ==
|
14 |
|
15 |
-
<strong>Disable comments</strong> is a useful tool for administrators
|
16 |
-
Our plugin allows administrators to fully disable or hide the comments on the site in all posts, pages, attachments.
|
17 |
-
It remove all comment related features and options. All related items in the admin panel will be removed (from the menu, dashboard, widgets).
|
18 |
|
19 |
-
|
20 |
|
21 |
-
|
|
|
|
|
|
|
22 |
|
23 |
-
|
24 |
-
It’s makes it very simple.
|
25 |
|
|
|
26 |
|
27 |
-
|
28 |
|
29 |
-
|
30 |
|
31 |
-
|
32 |
|
33 |
-
|
34 |
|
35 |
-
This is because your theme is not checking the comment status of posts in the correct way.
|
36 |
|
37 |
-
|
38 |
|
39 |
-
=
|
40 |
|
41 |
-
|
42 |
|
43 |
-
|
44 |
|
45 |
-
= I
|
46 |
|
47 |
-
|
48 |
|
49 |
-
|
50 |
|
51 |
-
|
52 |
|
53 |
-
|
54 |
|
55 |
-
|
56 |
|
57 |
-
|
58 |
|
59 |
-
|
60 |
|
61 |
-
|
62 |
-
* <strong>Disable comments globally</strong>
|
63 |
-
* <strong>Disable comments on certain Pages</strong>
|
64 |
-
* <strong>Disable comments on posts Only</strong>
|
65 |
-
* <strong>Disable comments on pages Only</strong>
|
66 |
-
* <strong>Disable comments links in the Admin Menu and Admin Bar;</strong>
|
67 |
-
* <strong>Disable comments related sections ("Recent Comments", "Discussion" etc.) and hidden from the WordPress Dashboard;</strong>
|
68 |
-
* <strong>Disable comments related widgets (so your theme cannot use them);</strong>
|
69 |
-
* <strong>Disable comments "Discussion" settings page is hidden;</strong>
|
70 |
-
* <strong>Disable comments in RSS/Atom feeds (and requests for these will be redirected to the parent post);</strong>
|
71 |
-
* <strong>Disable X-Pingback HTTP header and removed from all pages;</strong>
|
72 |
-
* <strong>Disable outgoing pingbacks.</strong>
|
73 |
-
* <strong>Replace external links</strong>
|
74 |
-
* <strong>Remove comment form fields</strong>
|
75 |
-
* <strong>Remove comments, Delete comments</strong>
|
76 |
|
77 |
-
|
78 |
|
79 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
|
81 |
== Advanced Configuration ==
|
82 |
|
83 |
-
|
84 |
|
85 |
-
|
86 |
|
87 |
-
These definitions can be
|
88 |
|
89 |
== Translations ==
|
90 |
|
@@ -108,6 +115,7 @@ If you want to help with the translation, please contact me through this site or
|
|
108 |
* Update plugin core
|
109 |
* Fixed bug reduced plugin weight.
|
110 |
* Fixed JS error with external links option.
|
|
|
111 |
|
112 |
= 1.0.3 =
|
113 |
* Update plugin core
|
1 |
+
=== Disable Comments for Any Post Types (Disable XML-RPC, Disable Self Pingbacks, Remove Comments) ===
|
2 |
Tags: disable comments, disable XML-RPC, remove comments, delete comments, no self pings, wp disable, disable pingback comments, comments manager, webcraftic update manager, clearfy, replace external links, remove comment form, comment form, remove comment form fields, bulk comments management, spam comments cleaner, delete comments by status, no page comment, wp disable comments
|
3 |
Contributors: webcraftic
|
4 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=VDX7JNTQPNPFW
|
12 |
|
13 |
== Description ==
|
14 |
|
15 |
+
<strong>Disable comments</strong> plugin is a useful tool for blog or site administrators that allows fully disabling or hiding comments for any post types, pages or attachments.
|
|
|
|
|
16 |
|
17 |
+
It removes the all comments related features and options:
|
18 |
|
19 |
+
* <strong>disable comments</strong> on frontend at all;
|
20 |
+
* <strong>remove comments</strong> option from WordPress dashboard menu;
|
21 |
+
* <strong>hide comments</strong> option from the admin bar;
|
22 |
+
* <strong>Turn off comments widgets.</strong>
|
23 |
|
24 |
+
In addition, this plugin can <strong>disable XML-RPC</strong> related functions in WordPress including disable pingbacks and disable trackbacks, and helps to prevent the attacks on the xmlrpc.php file. Lastly, it attempts to generate a “403 Denied” error for requests to the /xmlrpc.php URL, but does not affect that file or your server in any way.
|
|
|
25 |
|
26 |
+
If you want <strong>completely remove comments</strong>, you can do this individually for selected post types. You can easily bulk delete all WordPress comments in some clicks. No any other “Delete All Comments” plugins or phpMyAdmin needed.
|
27 |
|
28 |
+
You can disable comments but if you decide to leave them, you need to close comments external links from the search engines. By default when users places comments, the WordPress adds rel=”nofollow” attribute to the comment author URL and for all links in the comments text. However, already for a long time, search engines ignores this and follows links. It makes dozens of superfluous external links from comments that are do not bring anything good for your SEO. <strong>Disable Comments</strong> plugin makes all external links in WordPress comments invisible for search engines with Javascript and improves your blog or website SEO.
|
29 |
|
30 |
+
In addition, if you do not want to disable comments you may need to remove website field from the WordPress comment form. Note: you can remove comment author URL but this feature can be not work with some themes.
|
31 |
|
32 |
+
Generally, the <strong>Disable Comments</strong> plugin uses the intelligent algorithm to <strong>hide comments</strong> and <strong>remove comments</strong>. You just need to turn some toggles on.
|
33 |
|
34 |
+
If you come across any bugs or have suggestions with <strong>Disable Comments</strong>, please use the plugin support forum. I cannot fix them if I do not know about! Please check the FAQ for common issues.
|
35 |
|
|
|
36 |
|
37 |
+
== Frequently Asked Questions ==
|
38 |
|
39 |
+
= Nothing happens after I disable comments on all posts – comment forms are still appears inside my posts. =
|
40 |
|
41 |
+
That is because your theme is not checking the comment status of posts in the correct way.
|
42 |
|
43 |
+
You may like to point your theme’s author to this explanation of what they are doing wrong, and how to fix it.
|
44 |
|
45 |
+
= How can I remove the text “comments are closed” at the bottom of articles when comments are disabled? =
|
46 |
|
47 |
+
The plugin tries to hide it (and any other comment-related elements) as well as possible.
|
48 |
|
49 |
+
If you still see this message, it means that your theme is overrides this behavior and you will have to edit its files manually for fix it. Two common approaches are to either delete or comment out the relevant lines in wp-content/your-theme/comments.php, or to add a declaration to wp-content/your-theme/style.css that hides the message from your visitors. In either case, make know what you are doing!
|
50 |
|
51 |
+
= I only want to disable comments on certain posts, not globally. What do I need to do? =
|
52 |
|
53 |
+
Do not install this plugin!
|
54 |
|
55 |
+
Go to the edit page for the post you want to disable comments. Scroll down to the “Discussion” box, where you will find the comment options for that post. If you do not see a “Discussion” box, then click on “Screen Options” at the top of your screen, and make sure the “Discussion” checkbox is checked.
|
56 |
|
57 |
+
You can also bulk-edit the comment status of multiple posts from the posts screen.
|
58 |
|
59 |
+
= I want to delete comments from my database. What do I need to do? =
|
60 |
|
61 |
+
When you will change the plugin settings, you will be prompt to delete comments from the database.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
|
63 |
+
== Details ==
|
64 |
|
65 |
+
The Disable Comments plugin allows you <strong>completely disable the commenting feature in WordPress</strong>. When this option is on you will get the following changes:
|
66 |
+
|
67 |
+
<strong>* Easy Enable or disable Comments;</strong>
|
68 |
+
<strong>* Disable comments globally;</strong>
|
69 |
+
<strong>* Disable comments on certain Pages;</strong>
|
70 |
+
<strong>* Disable comments on posts Only;</strong>
|
71 |
+
<strong>* Disable comments on pages Only;</strong>
|
72 |
+
<strong>* Disable comments for any post types;</strong>
|
73 |
+
<strong>* Disable comments links in the Admin Menu and Admin Bar;</strong>
|
74 |
+
<strong>* Disable comments related sections (“Recent Comments”, “Discussion” etc.) and hide from the WordPress Dashboard;</strong>
|
75 |
+
<strong>* Disable comments related widgets (so your theme cannot to use them);</strong>
|
76 |
+
<strong>* Disable comments “Discussion” settings page;</strong>
|
77 |
+
<strong>* Disable comments in RSS/Atom feeds (and requests for comments RSS will be redirect to the parent post);</strong>
|
78 |
+
<strong>* Disable X-Pingback HTTP header and remove from all pages;</strong>
|
79 |
+
<strong>* Disable outgoing pingbacks;</strong>
|
80 |
+
<strong>* Making comments external links “nofollow” and invisible for search engines;</strong>
|
81 |
+
<strong>* Remove website/URL field from the comment form;</strong>
|
82 |
+
<strong>* Remove comments, Delete comments in one click.</strong>
|
83 |
+
|
84 |
+
We recently added brand new features into the <strong>Disable Comments plugin</strong>. These are <strong>Disable X-Pingback</strong> function, <strong>Replace external links</strong> and <strong>Remove website/url comment field</strong>.
|
85 |
+
|
86 |
+
Some functions was taken from the following popular plugins: <strong>Clearfy – disable unused features</strong>, <strong>Bulk Comments Management</strong>, <strong>Spam Comments Cleaner</strong>, <strong>Delete Comments By Status</strong>, <strong>No Page Comment</strong>, <strong>WP Disable Comments</strong>, <strong>Hide “Comments are closed”</strong>, <strong>Hide Show Comment</strong>.
|
87 |
|
88 |
== Advanced Configuration ==
|
89 |
|
90 |
+
Site administrators and plugin/theme developers can modify some of the plugin’s behavior through the code:
|
91 |
|
92 |
+
Define DISABLE_COMMENTS_REMOVE_COMMENTS_TEMPLATE and set it to false to prevent the plugin from replacing theme’s comment template with an empty one.
|
93 |
|
94 |
+
These definitions can be make either in your main wp-config.php or in your theme’s functions.php file.
|
95 |
|
96 |
== Translations ==
|
97 |
|
115 |
* Update plugin core
|
116 |
* Fixed bug reduced plugin weight.
|
117 |
* Fixed JS error with external links option.
|
118 |
+
* Add french translation
|
119 |
|
120 |
= 1.0.3 =
|
121 |
* Update plugin core
|
components/disable-admin-notices/admin/ajax/hide-notice.php
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Hides notifications
|
4 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
5 |
+
* @copyright (c) 12.01.2018, Webcraftic
|
6 |
+
* @version 1.0
|
7 |
+
*/
|
8 |
+
|
9 |
+
function wbcr_clearfy_ajax_hide_notices()
|
10 |
+
{
|
11 |
+
global $wbcr_dan_plugin;
|
12 |
+
|
13 |
+
check_ajax_referer($wbcr_dan_plugin->pluginName . '_ajax_hide_notices_nonce', 'security');
|
14 |
+
|
15 |
+
if( !current_user_can('manage_options') ) {
|
16 |
+
echo json_encode(array('error' => __('You don\'t have enough capability to edit this information.', 'disable-admin-notices')));
|
17 |
+
exit;
|
18 |
+
}
|
19 |
+
|
20 |
+
$notice_id = isset($_POST['notice_id'])
|
21 |
+
? sanitize_text_field($_POST['notice_id'])
|
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) ) {
|
33 |
+
echo json_encode(array('error' => __('Undefinded notice id.', 'disable-admin-notices')));
|
34 |
+
exit;
|
35 |
+
}
|
36 |
+
|
37 |
+
$get_hidden_notices = get_option($wbcr_dan_plugin->pluginName . '_hidden_notices');
|
38 |
+
|
39 |
+
if( !is_array($get_hidden_notices) ) {
|
40 |
+
$get_hidden_notices = array();
|
41 |
+
}
|
42 |
+
|
43 |
+
$get_hidden_notices[$notice_id] = rtrim(trim($notice_html));
|
44 |
+
|
45 |
+
update_option($wbcr_dan_plugin->pluginName . '_hidden_notices', $get_hidden_notices);
|
46 |
+
|
47 |
+
echo json_encode(array('success' => __('Success', 'disable-admin-notices')));
|
48 |
+
exit;
|
49 |
+
}
|
50 |
+
|
51 |
+
add_action('wp_ajax_wbcr_clearfy_hide_notices', 'wbcr_clearfy_ajax_hide_notices');
|
components/disable-admin-notices/admin/assets/css/notifications-panel.css
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* Notification panel in admin bar
|
3 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
4 |
+
* @copyright Alex Kovalev 23.08.2017
|
5 |
+
*/
|
6 |
+
#wp-admin-bar-wbcr-han-notify-panel .wbcr-han-adminbar-counter {
|
7 |
+
background-color: #0073aa;
|
8 |
+
border-radius: 50%;
|
9 |
+
color: #fff;
|
10 |
+
font-weight: bold;
|
11 |
+
padding: 2px 6px;
|
12 |
+
font-size: 0.85em;
|
13 |
+
margin-left: 5px;
|
14 |
+
}
|
15 |
+
#wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper {
|
16 |
+
max-height: 500px;
|
17 |
+
overflow-y: scroll;
|
18 |
+
}
|
19 |
+
#wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu {
|
20 |
+
width: 400px;
|
21 |
+
padding: 0;
|
22 |
+
}
|
23 |
+
#wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li {
|
24 |
+
border-left: 4px solid #32373c;
|
25 |
+
padding: 0;
|
26 |
+
}
|
27 |
+
#wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li.wpnc-updated {
|
28 |
+
border-left-color: #7ad03a;
|
29 |
+
}
|
30 |
+
#wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li.wpnc-update-nag {
|
31 |
+
border-left-color: #ffba00;
|
32 |
+
}
|
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 {
|
44 |
+
display: inline;
|
45 |
+
padding: 0;
|
46 |
+
margin: 0;
|
47 |
+
text-decoration: underline;
|
48 |
+
line-height: .5em;
|
49 |
+
}
|
components/disable-admin-notices/admin/assets/css/notifications-panel.less
ADDED
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* Notification panel in admin bar
|
3 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
4 |
+
* @copyright Alex Kovalev 23.08.2017
|
5 |
+
*/
|
6 |
+
|
7 |
+
#wp-admin-bar-wbcr-han-notify-panel {
|
8 |
+
.wbcr-han-adminbar-counter {
|
9 |
+
background-color: #0073aa;
|
10 |
+
border-radius: 50%;
|
11 |
+
color: #fff;
|
12 |
+
font-weight: bold;
|
13 |
+
padding: 2px 6px;
|
14 |
+
font-size: 0.85em;
|
15 |
+
margin-left: 5px;
|
16 |
+
}
|
17 |
+
|
18 |
+
.ab-sub-wrapper {
|
19 |
+
|
20 |
+
max-height: 500px;
|
21 |
+
overflow-y: scroll;
|
22 |
+
|
23 |
+
ul.ab-submenu {
|
24 |
+
width: 400px;
|
25 |
+
padding: 0;
|
26 |
+
|
27 |
+
& > li {
|
28 |
+
border-left: 4px solid #32373c;
|
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;
|
49 |
+
padding: 0;
|
50 |
+
margin: 0;
|
51 |
+
text-decoration: underline;
|
52 |
+
line-height: .5em;
|
53 |
+
}
|
54 |
+
}
|
55 |
+
|
56 |
+
}
|
57 |
+
}
|
58 |
+
}
|
59 |
+
}
|
components/disable-admin-notices/admin/assets/js/general.js
ADDED
@@ -0,0 +1,203 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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);
|
components/disable-admin-notices/admin/boot.php
ADDED
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Admin boot
|
4 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
5 |
+
* @copyright Webcraftic 25.05.2017
|
6 |
+
* @version 1.0
|
7 |
+
*/
|
8 |
+
|
9 |
+
require(WBCR_DAN_PLUGIN_DIR . '/admin/options.php');
|
10 |
+
|
11 |
+
if( !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
|
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 == 'wbcr_dan' ) {
|
23 |
+
return 'https://goo.gl/68ucHp';
|
24 |
+
}
|
25 |
+
|
26 |
+
return $page_url;
|
27 |
+
}
|
28 |
+
|
29 |
+
add_filter('wbcr_factory_imppage_rating_widget_url', 'wbcr_dan_rating_widget_url', 10, 2);
|
30 |
+
|
31 |
+
function wbcr_dan_group_options($options)
|
32 |
+
{
|
33 |
+
$options[] = array(
|
34 |
+
'name' => 'hide_admin_notices',
|
35 |
+
'title' => __('Hide admin notices', 'disable-admin-notices'),
|
36 |
+
'tags' => array(),
|
37 |
+
'values' => array('hide_admin_notices' => 'only_selected')
|
38 |
+
);
|
39 |
+
$options[] = array(
|
40 |
+
'name' => 'show_notices_in_adminbar',
|
41 |
+
'title' => __('Enable hidden notices in adminbar', 'disable-admin-notices'),
|
42 |
+
'tags' => array()
|
43 |
+
);
|
44 |
+
$options[] = array(
|
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 == WBCR_DAN_PLUGIN_BASE ) {
|
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 |
+
|
59 |
+
return $links;
|
60 |
+
}
|
61 |
+
|
62 |
+
add_filter("wbcr_clearfy_group_options", 'wbcr_dan_group_options');
|
63 |
+
|
64 |
+
if( !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
|
65 |
+
add_filter('plugin_row_meta', 'wbcr_dan_set_plugin_meta', 10, 2);
|
66 |
+
}
|
67 |
+
|
68 |
+
|
69 |
+
|
components/disable-admin-notices/admin/options.php
ADDED
@@ -0,0 +1,154 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Options for additionally form
|
4 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
5 |
+
* @copyright (c) 21.01.2018, Webcraftic
|
6 |
+
* @version 1.0
|
7 |
+
*/
|
8 |
+
|
9 |
+
/**
|
10 |
+
* @return array
|
11 |
+
*/
|
12 |
+
function wbcr_dan_get_plugin_options()
|
13 |
+
{
|
14 |
+
$options = array();
|
15 |
+
|
16 |
+
if( defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
|
17 |
+
$options[] = array(
|
18 |
+
'type' => 'html',
|
19 |
+
'html' => '<div class="wbcr-clearfy-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>'
|
20 |
+
);
|
21 |
+
}
|
22 |
+
|
23 |
+
$options[] = array(
|
24 |
+
'type' => 'dropdown',
|
25 |
+
'name' => 'hide_admin_notices',
|
26 |
+
'way' => 'buttons',
|
27 |
+
'title' => __('Hide admin notices', 'disable-admin-notices'),
|
28 |
+
'data' => array(
|
29 |
+
array(
|
30 |
+
'all',
|
31 |
+
__('All notices', 'disable-admin-notices'),
|
32 |
+
__('Hide all notices globally.', 'disable-admin-notices')
|
33 |
+
),
|
34 |
+
array(
|
35 |
+
'only_selected',
|
36 |
+
__('Only selected', 'disable-admin-notices'),
|
37 |
+
__('Hide selected notices only. You will see the link "Hide notification forever" in each notice. Push it and they will not bother you anymore.', 'disable-admin-notices')
|
38 |
+
),
|
39 |
+
array(
|
40 |
+
'not_hide',
|
41 |
+
__("Don't nide", 'disable-admin-notices'),
|
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' => 'grey'),
|
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(
|
49 |
+
'all' => array(
|
50 |
+
'show' => '.factory-control-hide_admin_notices_user_roles',
|
51 |
+
'hide' => '.factory-control-reset_notices_button'
|
52 |
+
),
|
53 |
+
'only_selected' => array(
|
54 |
+
'hide' => '.factory-control-hide_admin_notices_user_roles',
|
55 |
+
'show' => '.factory-control-reset_notices_button'
|
56 |
+
),
|
57 |
+
'not_hide' => array(
|
58 |
+
'hide' => '.factory-control-hide_admin_notices_user_roles, .factory-control-reset_notices_button'
|
59 |
+
)
|
60 |
+
)
|
61 |
+
);
|
62 |
+
|
63 |
+
$options[] = array(
|
64 |
+
'type' => 'checkbox',
|
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' => 'grey'),
|
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 |
+
);
|
72 |
+
|
73 |
+
$options[] = array(
|
74 |
+
'type' => 'html',
|
75 |
+
'html' => 'wbcr_dan_reset_notices_button'
|
76 |
+
);
|
77 |
+
|
78 |
+
$options[] = array(
|
79 |
+
'type' => 'separator'
|
80 |
+
);
|
81 |
+
|
82 |
+
return $options;
|
83 |
+
}
|
84 |
+
|
85 |
+
/**
|
86 |
+
* @param $form
|
87 |
+
* @param $page FactoryPages324_ImpressiveThemplate
|
88 |
+
* @return mixed
|
89 |
+
*/
|
90 |
+
function wbcr_dan_additionally_form_options($form, $page)
|
91 |
+
{
|
92 |
+
if( empty($form) ) {
|
93 |
+
return $form;
|
94 |
+
}
|
95 |
+
|
96 |
+
$options = wbcr_dan_get_plugin_options();
|
97 |
+
|
98 |
+
foreach(array_reverse($options) as $option) {
|
99 |
+
array_unshift($form[0]['items'], $option);
|
100 |
+
}
|
101 |
+
|
102 |
+
return $form;
|
103 |
+
}
|
104 |
+
|
105 |
+
add_filter('wbcr_clr_additionally_form_options', 'wbcr_dan_additionally_form_options', 10, 2);
|
106 |
+
|
107 |
+
/**
|
108 |
+
* @param $html_builder FactoryForms329_Html
|
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 |
+
delete_option($wbcr_dan_plugin->pluginName . '_hidden_notices');
|
121 |
+
|
122 |
+
$reseted = true;
|
123 |
+
}
|
124 |
+
|
125 |
+
$count_hidden_notices = 0;
|
126 |
+
$hidden_notices = get_option($wbcr_dan_plugin->pluginName . '_hidden_notices');
|
127 |
+
|
128 |
+
if( !empty($hidden_notices) ) {
|
129 |
+
$count_hidden_notices = sizeof($hidden_notices);
|
130 |
+
}
|
131 |
+
|
132 |
+
?>
|
133 |
+
<div class="form-group form-group-checkbox factory-control-reset_notices_button">
|
134 |
+
<label for="wbcr_clearfy_reset_notices_button" class="col-sm-6 control-label">
|
135 |
+
<span class="factory-hint-icon factory-hint-icon-grey" data-toggle="factory-tooltip" data-placement="right" title="" data-original-title="<?php _e('Push reset hidden notices if you need to show hidden notices again.', 'disable-admin-notices') ?>">
|
136 |
+
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt="">
|
137 |
+
</span>
|
138 |
+
</label>
|
139 |
+
|
140 |
+
<div class="control-group col-sm-6">
|
141 |
+
<div class="factory-checkbox factory-from-control-checkbox factory-buttons-way btn-group">
|
142 |
+
<form method="post">
|
143 |
+
<?php wp_nonce_field($form_name, 'wbcr_dan_reset_nonce'); ?>
|
144 |
+
<input type="submit" name="wbcr_dan_reset_action" value="<?php printf(__('Reset hidden notices (%s)', 'disable-admin-notices'), $count_hidden_notices) ?>" class="button button-default"/>
|
145 |
+
<?php if( $reseted ): ?>
|
146 |
+
<div style="color:green;margin-top:5px;"><?php _e('Hidden notices are successfully reset, now you can see them again!', 'disable-admin-notices') ?></div>
|
147 |
+
<?php endif; ?>
|
148 |
+
</form>
|
149 |
+
</div>
|
150 |
+
</div>
|
151 |
+
</div>
|
152 |
+
<?php
|
153 |
+
}
|
154 |
+
|
components/disable-admin-notices/admin/pages/more-features.php
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* The page Settings.
|
5 |
+
*
|
6 |
+
* @since 1.0.0
|
7 |
+
*/
|
8 |
+
class WbcrHan_MoreFeaturesPage extends FactoryClearfy102_MoreFeaturesPage {
|
9 |
+
|
10 |
+
}
|
11 |
+
|
12 |
+
FactoryPages324::register($wbcr_dan_plugin, 'WbcrHan_MoreFeaturesPage');
|
components/disable-admin-notices/admin/pages/notices.php
ADDED
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* The page Settings.
|
5 |
+
*
|
6 |
+
* @since 1.0.0
|
7 |
+
*/
|
8 |
+
class WbcrHan_NoticesPage extends FactoryPages324_ImpressiveThemplate {
|
9 |
+
|
10 |
+
/**
|
11 |
+
* The id of the page in the admin menu.
|
12 |
+
*
|
13 |
+
* Mainly used to navigate between pages.
|
14 |
+
* @see FactoryPages324_AdminPage
|
15 |
+
*
|
16 |
+
* @since 1.0.0
|
17 |
+
* @var string
|
18 |
+
*/
|
19 |
+
public $id = "notices";
|
20 |
+
public $page_menu_dashicon = 'dashicons-testimonial';
|
21 |
+
|
22 |
+
public function __construct(Factory326_Plugin $plugin)
|
23 |
+
{
|
24 |
+
$this->menuTitle = __('Hide admin notices', 'disable-admin-notices');
|
25 |
+
|
26 |
+
if( !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
|
27 |
+
$this->internal = false;
|
28 |
+
$this->menuTarget = 'options-general.php';
|
29 |
+
$this->addLinkToPluginActions = true;
|
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()
|
38 |
+
{
|
39 |
+
return defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON')
|
40 |
+
? __('Notices', 'disable-admin-notices')
|
41 |
+
: __('General', 'disable-admin-notices');
|
42 |
+
}
|
43 |
+
|
44 |
+
|
45 |
+
/**
|
46 |
+
* We register notifications for some actions
|
47 |
+
* @param $notices
|
48 |
+
* @param $plugin
|
49 |
+
* @return array
|
50 |
+
*/
|
51 |
+
public function actionsNotice($notices, $plugin)
|
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
|
62 |
+
),
|
63 |
+
'type' => 'success',
|
64 |
+
'message' => __('Hidden notices are successfully reset, now you can see them again!', 'disable-admin-notices')
|
65 |
+
);
|
66 |
+
|
67 |
+
/*$notices[] = array(
|
68 |
+
'conditions' => array(
|
69 |
+
'wbcr_dan_clear_comments_error' => 1,
|
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.', 'factory_pages_324')
|
74 |
+
);*/
|
75 |
+
|
76 |
+
return $notices;
|
77 |
+
}
|
78 |
+
|
79 |
+
/**
|
80 |
+
* Permalinks options.
|
81 |
+
*
|
82 |
+
* @since 1.0.0
|
83 |
+
* @return mixed[]
|
84 |
+
*/
|
85 |
+
public function getOptions()
|
86 |
+
{
|
87 |
+
$options = wbcr_dan_get_plugin_options();
|
88 |
+
|
89 |
+
$formOptions = array();
|
90 |
+
|
91 |
+
$formOptions[] = array(
|
92 |
+
'type' => 'form-group',
|
93 |
+
'items' => $options,
|
94 |
+
//'cssClass' => 'postbox'
|
95 |
+
);
|
96 |
+
|
97 |
+
return apply_filters('wbcr_dan_notices_form_options', $formOptions, $this);
|
98 |
+
}
|
99 |
+
}
|
100 |
+
|
101 |
+
FactoryPages324::register($wbcr_dan_plugin, 'WbcrHan_NoticesPage');
|
components/disable-admin-notices/disable-admin-notices.php
ADDED
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Plugin Name: Webcraftic Disable Admin Notices Individually
|
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.2
|
8 |
+
* Text Domain: disable-admin-notices
|
9 |
+
* Domain Path: /languages/
|
10 |
+
*/
|
11 |
+
|
12 |
+
if( defined('WBCR_DAN_PLUGIN_ACTIVE') || (defined('WBCR_CLEARFY_PLUGIN_ACTIVE') && !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON')) ) {
|
13 |
+
function wbcr_dan_admin_notice_error()
|
14 |
+
{
|
15 |
+
?>
|
16 |
+
<div class="notice notice-error">
|
17 |
+
<p><?php _e('We found that you have the "Clearfy - disable unused features" plugin installed, this plugin already has disable comments functions, so you can deactivate plugin "Disable admin notices"!'); ?></p>
|
18 |
+
</div>
|
19 |
+
<?php
|
20 |
+
}
|
21 |
+
|
22 |
+
add_action('admin_notices', 'wbcr_dan_admin_notice_error');
|
23 |
+
|
24 |
+
return;
|
25 |
+
} else {
|
26 |
+
|
27 |
+
define('WBCR_DAN_PLUGIN_ACTIVE', true);
|
28 |
+
|
29 |
+
define('WBCR_DAN_PLUGIN_DIR', dirname(__FILE__));
|
30 |
+
define('WBCR_DAN_PLUGIN_BASE', plugin_basename(__FILE__));
|
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(WBCR_DAN_PLUGIN_DIR . '/libs/factory/core/boot.php');
|
37 |
+
}
|
38 |
+
|
39 |
+
function wbcr_dan_plugin_init()
|
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 |
+
if( defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
|
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.0',
|
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 |
+
if( defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
|
81 |
+
wbcr_dan_plugin_init();
|
82 |
+
} else {
|
83 |
+
add_action('plugins_loaded', 'wbcr_dan_plugin_init');
|
84 |
+
}
|
85 |
+
}
|
components/disable-admin-notices/includes/classes/class.configurate-notices.php
ADDED
@@ -0,0 +1,244 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* This class configures hide admin notices
|
5 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* @copyright (c) 2017 Webraftic Ltd
|
7 |
+
* @version 1.0
|
8 |
+
*/
|
9 |
+
class WbcrHan_ConfigHideNotices extends WbcrFactoryClearfy_Configurate {
|
10 |
+
|
11 |
+
public function registerActionsAndFilters()
|
12 |
+
{
|
13 |
+
if( is_admin() ) {
|
14 |
+
$hide_notices_type = $this->getOption('hide_admin_notices');
|
15 |
+
if( $hide_notices_type != 'not_hide' ) {
|
16 |
+
add_action('admin_print_scripts', array($this, 'catchNotices'), 999);
|
17 |
+
|
18 |
+
if( empty($hide_notices_type) || $hide_notices_type == 'only_selected' ) {
|
19 |
+
add_action('admin_head', array($this, 'printNotices'), 999);
|
20 |
+
}
|
21 |
+
|
22 |
+
if( !empty($hide_notices_type) && $this->getOption('show_notices_in_adminbar') ) {
|
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 |
+
global $wbcr_dan_plugin;
|
33 |
+
wp_enqueue_style('wpcm_admin', WBCR_DAN_PLUGIN_URL . '/admin/assets/css/notifications-panel.css', array(), $wbcr_dan_plugin->version);
|
34 |
+
}
|
35 |
+
|
36 |
+
public function notificationsPanel(&$wp_admin_bar)
|
37 |
+
{
|
38 |
+
global $wbcr_dan_plugin;
|
39 |
+
|
40 |
+
$notifications = $this->getOption('hidden_notices');
|
41 |
+
|
42 |
+
if( empty($notifications) ) {
|
43 |
+
return;
|
44 |
+
}
|
45 |
+
|
46 |
+
$cont_notifications = sizeof($notifications);
|
47 |
+
|
48 |
+
// Add top menu
|
49 |
+
$wp_admin_bar->add_menu(array(
|
50 |
+
'id' => 'wbcr-han-notify-panel',
|
51 |
+
'parent' => 'top-secondary',
|
52 |
+
'title' => sprintf(__('Notifications %s', 'disable-admin-notices'), '<span class="wbcr-han-adminbar-counter">' . $cont_notifications . '</span>'),
|
53 |
+
'href' => false
|
54 |
+
));
|
55 |
+
|
56 |
+
// loop
|
57 |
+
if( !empty($notifications) ) {
|
58 |
+
$i = 0;
|
59 |
+
foreach($notifications as $notification) {
|
60 |
+
$wp_admin_bar->add_menu(array(
|
61 |
+
'id' => 'wbcr-han-notify-panel-item-' . $i,
|
62 |
+
'parent' => 'wbcr-han-notify-panel',
|
63 |
+
'title' => $notification,
|
64 |
+
'href' => false,
|
65 |
+
'meta' => array(
|
66 |
+
'class' => ''
|
67 |
+
)
|
68 |
+
));
|
69 |
+
|
70 |
+
$i++;
|
71 |
+
}
|
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;
|
83 |
+
|
84 |
+
if( empty($wbcr_dan_plugin_all_notices) ) {
|
85 |
+
return;
|
86 |
+
}
|
87 |
+
?>
|
88 |
+
<style>
|
89 |
+
.wbcr-clearfy-hide-notices {
|
90 |
+
position: relative;
|
91 |
+
padding: 5px 5px 0;
|
92 |
+
background: #fff;
|
93 |
+
}
|
94 |
+
|
95 |
+
.wbcr-clearfy-hide-notices > div {
|
96 |
+
margin: 0 !important;
|
97 |
+
}
|
98 |
+
|
99 |
+
.wbcr-clearfy-hide-notice-link {
|
100 |
+
display: block;
|
101 |
+
text-align: right;
|
102 |
+
margin: 5px 0 5px 5px;
|
103 |
+
font-weight: bold;
|
104 |
+
color: #F44336;
|
105 |
+
}
|
106 |
+
|
107 |
+
.is-dismissible .wbcr-clearfy-hide-notice-link {
|
108 |
+
margin-right: -30px;
|
109 |
+
}
|
110 |
+
|
111 |
+
.wbcr-clearfy-hide-notice-link:active, .wbcr-clearfy-hide-notice-link:focus {
|
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 |
+
jQuery(function() {
|
121 |
+
jQuery(document).on('click', '.wbcr-clearfy-hide-notice-link', function() {
|
122 |
+
var self = jQuery(this),
|
123 |
+
noticeID = jQuery(this).data('notice-id'),
|
124 |
+
noticeHtml = jQuery(this).closest('.wbcr-clearfy-hide-notices').clone();
|
125 |
+
|
126 |
+
noticeHtml.find('.wbcr-clearfy-hide-notice-link').remove();
|
127 |
+
|
128 |
+
if( !noticeID ) {
|
129 |
+
alert('Undefinded error. Please report the bug to our support forum.');
|
130 |
+
}
|
131 |
+
|
132 |
+
jQuery.ajax(wbcr_clearfy_ajax_url, {
|
133 |
+
type: 'post',
|
134 |
+
dataType: 'json',
|
135 |
+
data: {
|
136 |
+
action: 'wbcr_clearfy_hide_notices',
|
137 |
+
security: wbcr_clearfy_ajax_nonce,
|
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 |
+
self.closest('.wbcr-clearfy-hide-notices').parent().hide();
|
148 |
+
}
|
149 |
+
});
|
150 |
+
});
|
151 |
+
});
|
152 |
+
</script>
|
153 |
+
<?php
|
154 |
+
foreach($wbcr_dan_plugin_all_notices as $val) {
|
155 |
+
echo $val;
|
156 |
+
}
|
157 |
+
}
|
158 |
+
|
159 |
+
public function catchNotices()
|
160 |
+
{
|
161 |
+
global $wp_filter, $wbcr_dan_plugin_all_notices;
|
162 |
+
|
163 |
+
$hide_notices_type = $this->getOption('hide_admin_notices');
|
164 |
+
|
165 |
+
if( empty($hide_notices_type) || $hide_notices_type == 'only_selected' ) {
|
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 ) {
|
173 |
+
continue;
|
174 |
+
}
|
175 |
+
|
176 |
+
ob_start();
|
177 |
+
call_user_func_array($callback['function'], array());
|
178 |
+
$cont = ob_get_clean();
|
179 |
+
|
180 |
+
if( empty($cont) ) {
|
181 |
+
continue;
|
182 |
+
}
|
183 |
+
|
184 |
+
$uniq_id1 = md5($cont);
|
185 |
+
$uniq_id2 = md5($callback_name);
|
186 |
+
|
187 |
+
if( is_array($callback['function']) && sizeof($callback['function']) == 2 ) {
|
188 |
+
$class = $callback['function'][0];
|
189 |
+
if( is_object($class) ) {
|
190 |
+
$class_name = get_class($class);
|
191 |
+
$method_name = $callback['function'][1];
|
192 |
+
$uniq_id2 = md5($class_name . ':' . $method_name);
|
193 |
+
}
|
194 |
+
}
|
195 |
+
|
196 |
+
if( !empty($get_hidden_notices) ) {
|
197 |
+
|
198 |
+
$skip_notice = true;
|
199 |
+
foreach((array)$get_hidden_notices as $key => $notice) {
|
200 |
+
$splited_notice_id = explode('_', $key);
|
201 |
+
if( empty($splited_notice_id) || sizeof($splited_notice_id) < 2 ) {
|
202 |
+
continue;
|
203 |
+
}
|
204 |
+
$compare_notice_id_1 = $splited_notice_id[0];
|
205 |
+
$compare_notice_id_2 = $splited_notice_id[1];
|
206 |
+
|
207 |
+
if( $compare_notice_id_1 == $uniq_id1 || $compare_notice_id_2 == $uniq_id2 ) {
|
208 |
+
$skip_notice = false;
|
209 |
+
}
|
210 |
+
}
|
211 |
+
|
212 |
+
if( !$skip_notice ) {
|
213 |
+
continue;
|
214 |
+
}
|
215 |
+
}
|
216 |
+
|
217 |
+
$hide_link = '<a href="#" data-notice-id="' . $uniq_id1 . '_' . $uniq_id2 . '" class="wbcr-clearfy-hide-notice-link">[' . __('Hide notification forever', 'disable-admin-notices') . ']</a>';
|
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-clearfy-hide-notices">$2' . $hide_link . '</div>$3', $cont);
|
222 |
+
|
223 |
+
if( empty($cont) ) {
|
224 |
+
continue;
|
225 |
+
}
|
226 |
+
$content[] = $cont;
|
227 |
+
}
|
228 |
+
}
|
229 |
+
|
230 |
+
$wbcr_dan_plugin_all_notices = $content;
|
231 |
+
}
|
232 |
+
|
233 |
+
if( is_user_admin() ) {
|
234 |
+
if( isset($wp_filter['user_admin_notices']) ) {
|
235 |
+
unset($wp_filter['user_admin_notices']);
|
236 |
+
}
|
237 |
+
} elseif( isset($wp_filter['admin_notices']) ) {
|
238 |
+
unset($wp_filter['admin_notices']);
|
239 |
+
}
|
240 |
+
if( isset($wp_filter['all_admin_notices']) ) {
|
241 |
+
unset($wp_filter['all_admin_notices']);
|
242 |
+
}
|
243 |
+
}
|
244 |
+
}
|
components/disable-admin-notices/languages/disable-admin-notices-ru_RU.mo
ADDED
Binary file
|
components/disable-admin-notices/languages/disable-admin-notices-ru_RU.po
ADDED
@@ -0,0 +1,419 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: clearfy\n"
|
4 |
+
"POT-Creation-Date: 2018-01-21 23:48+0300\n"
|
5 |
+
"PO-Revision-Date: 2018-01-21 23:55+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:16
|
22 |
+
msgid "You don't have enough capability to edit this information."
|
23 |
+
msgstr "Вы не имеете разрешения на редактирование этого!"
|
24 |
+
|
25 |
+
#: admin/ajax/hide-notice.php:33
|
26 |
+
msgid "Undefinded notice id."
|
27 |
+
msgstr "Не передан notice id."
|
28 |
+
|
29 |
+
#: admin/ajax/hide-notice.php:47
|
30 |
+
msgid "Success"
|
31 |
+
msgstr "Успешно"
|
32 |
+
|
33 |
+
#: admin/boot.php:37 admin/options.php:27 admin/pages/notices.php:24
|
34 |
+
msgid "Hide admin notices"
|
35 |
+
msgstr "Скрыть уведомления"
|
36 |
+
|
37 |
+
#: admin/boot.php:43 admin/options.php:67
|
38 |
+
msgid "Enable hidden notices in adminbar"
|
39 |
+
msgstr "Включить уведомления в админбаре"
|
40 |
+
|
41 |
+
#: admin/boot.php:48
|
42 |
+
msgid "Hidden notices"
|
43 |
+
msgstr "Скрытые уведомления"
|
44 |
+
|
45 |
+
#: admin/boot.php:58
|
46 |
+
msgid "Get ultimate plugin free"
|
47 |
+
msgstr "Получите полную версию плагина бесплатно"
|
48 |
+
|
49 |
+
#: admin/options.php:19
|
50 |
+
msgid "Admin notifications, Update nags"
|
51 |
+
msgstr "Уведомления администратора, уведомления об обновлении Wordpress"
|
52 |
+
|
53 |
+
#: admin/options.php:19
|
54 |
+
msgid ""
|
55 |
+
"Do you know the situation, when some plugin offers you to update to premium, "
|
56 |
+
"to collect technical data and shows many annoying notices? You are close "
|
57 |
+
"these notices every now and again but they newly appears and interfere your "
|
58 |
+
"work with WordPress. Even worse, some plugin’s authors delete “close” button "
|
59 |
+
"from notices and they shows in your admin panel forever."
|
60 |
+
msgstr ""
|
61 |
+
"Вам знакома ситуация, когда какой-то плагин просит вас обновиться до премиум-"
|
62 |
+
"версии, получить права на сбор данных о вашем сайте и создает много "
|
63 |
+
"раздражающих уведомлений? Вы закрываете эти уведомления раз за разом, но они "
|
64 |
+
"вновь появляются и мешают вашей работе с WordPress. Хуже того, некоторые "
|
65 |
+
"авторы и вовсе удаляют кнопку “закрыть” из уведомлений, и они висят в шапке "
|
66 |
+
"вашей панели администратора целую вечность."
|
67 |
+
|
68 |
+
#: admin/options.php:31
|
69 |
+
msgid "All notices"
|
70 |
+
msgstr "Все уведомления"
|
71 |
+
|
72 |
+
#: admin/options.php:32
|
73 |
+
msgid "Hide all notices globally."
|
74 |
+
msgstr "Скрыть все уведомления глобально."
|
75 |
+
|
76 |
+
#: admin/options.php:36
|
77 |
+
msgid "Only selected"
|
78 |
+
msgstr "Только выбранные"
|
79 |
+
|
80 |
+
#: admin/options.php:37
|
81 |
+
msgid ""
|
82 |
+
"Hide selected notices only. You will see the link \"Hide notification forever"
|
83 |
+
"\" in each notice. Push it and they will not bother you anymore."
|
84 |
+
msgstr ""
|
85 |
+
"Скрывать только выбранные уведомления. В каждом уведомлении вы увидите "
|
86 |
+
"ссылку \"Скрыть уведомление навсегда\". Нажмите на неё и уведомление будет "
|
87 |
+
"скрыто навсегда и перестанет вас беспокоить."
|
88 |
+
|
89 |
+
#: admin/options.php:41
|
90 |
+
msgid "Don't nide"
|
91 |
+
msgstr "Не скрывать"
|
92 |
+
|
93 |
+
#: admin/options.php:42
|
94 |
+
msgid ""
|
95 |
+
"Do not hide notices and do not show “Hide notification forever” link for "
|
96 |
+
"admin."
|
97 |
+
msgstr ""
|
98 |
+
"Не скрывать уведомления и не показывать ссылку \"Скрыть уведомление навсегда"
|
99 |
+
"\" в уведомлениях администратора."
|
100 |
+
|
101 |
+
#: admin/options.php:46
|
102 |
+
msgid ""
|
103 |
+
"Some plugins shows notifications about premium version, data collecting or "
|
104 |
+
"promote their services. Even if you push close button (that sometimes are "
|
105 |
+
"impossible), notices are shows again in some time. This option allows you to "
|
106 |
+
"control notices. Hide them all or each individually. Some plugins shows "
|
107 |
+
"notifications about premium version, data collecting or promote their "
|
108 |
+
"services. Even if you push close button (that sometimes are impossible), "
|
109 |
+
"notices are shows again in some time. This option allows you to control "
|
110 |
+
"notices. Hide them all or each individually."
|
111 |
+
msgstr ""
|
112 |
+
"Зачастую, плагины отображают уведомления о возможности перехода на премиум "
|
113 |
+
"версию, просят разрешение на сбор данных, рекламируют свои услуги. Даже если "
|
114 |
+
"вы нажмете кнопку закрыть (что не всегда возможно), уведомления всё равно "
|
115 |
+
"отобразятся через какое-то время. С помощью этой настройки, вы можете "
|
116 |
+
"контролировать эти уведомления. Скройте их все сразу или каждое по "
|
117 |
+
"отдельности."
|
118 |
+
|
119 |
+
#: admin/options.php:69
|
120 |
+
msgid ""
|
121 |
+
"By default, the plugin hides all notices, which you specified. If you enable "
|
122 |
+
"this option, the plugin will collect all hidden notices and show them into "
|
123 |
+
"the top admin toolbar. It will not disturb you but will allow to look "
|
124 |
+
"notices at your convenience."
|
125 |
+
msgstr ""
|
126 |
+
"По умолчанию, плагин полностью скрывает отключенные вами уведомления. Если "
|
127 |
+
"включить эту опцию, то плагин будет собирать все скрытые вами уведомления и "
|
128 |
+
"выводить в верхней панели администратора. Это не будет вас раздражать, но и "
|
129 |
+
"позволит просматривать уведомления, когда вам это удобно."
|
130 |
+
|
131 |
+
#: admin/options.php:135
|
132 |
+
msgid "Push reset hidden notices if you need to show hidden notices again."
|
133 |
+
msgstr "Нажмите кнопку \\\"Сбросить скрытые уведомления\\\""
|
134 |
+
|
135 |
+
#: admin/options.php:144
|
136 |
+
#, php-format
|
137 |
+
msgid "Reset hidden notices (%s)"
|
138 |
+
msgstr "Сбросить скрытые уведомления (%s)"
|
139 |
+
|
140 |
+
#: admin/options.php:146 admin/pages/notices.php:64
|
141 |
+
msgid "Hidden notices are successfully reset, now you can see them again!"
|
142 |
+
msgstr ""
|
143 |
+
"Скрытые уведомления успешно восстановлены, теперь вы можете снова видеть их!"
|
144 |
+
|
145 |
+
#: admin/pages/notices.php:40
|
146 |
+
msgid "Notices"
|
147 |
+
msgstr "Уведомления"
|
148 |
+
|
149 |
+
#: admin/pages/notices.php:41
|
150 |
+
msgid "General"
|
151 |
+
msgstr "Основные"
|
152 |
+
|
153 |
+
#: disable-admin-notices.php:17
|
154 |
+
msgid ""
|
155 |
+
"We found that you have the \"Clearfy - disable unused features\" plugin "
|
156 |
+
"installed, this plugin already has disable comments functions, so you can "
|
157 |
+
"deactivate plugin \"Disable admin notices\"!"
|
158 |
+
msgstr ""
|
159 |
+
"Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
|
160 |
+
"неиспользуемые функции», этот плагин уже имеет функции отключения "
|
161 |
+
"комментариев, поэтому вы можете отключить плагин «Скрыть уведомления "
|
162 |
+
"администратора»!"
|
163 |
+
|
164 |
+
#: disable-admin-notices.php:82
|
165 |
+
msgid "Webcraftic disable admin notices"
|
166 |
+
msgstr "Webcraftic отключить уведомления администратора"
|
167 |
+
|
168 |
+
#: includes/classes/class.configurate-notices.php:52
|
169 |
+
#, php-format
|
170 |
+
msgid "Notifications %s"
|
171 |
+
msgstr "Уведомления %s"
|
172 |
+
|
173 |
+
#: includes/classes/class.configurate-notices.php:217
|
174 |
+
msgid "Hide notification forever"
|
175 |
+
msgstr "Скрыть уведомление навсегда"
|
176 |
+
|
177 |
+
#~ msgid "Disable comments on the entire site"
|
178 |
+
#~ msgstr "Отключить комментарии на всем сайте"
|
179 |
+
|
180 |
+
#~ msgid "Select post types"
|
181 |
+
#~ msgstr "Выбрать тип записи"
|
182 |
+
|
183 |
+
#~ msgid "Replace external links in comments on the JavaScript code"
|
184 |
+
#~ msgstr "Заменить внешние ссылки в комментариях на JavaScript код"
|
185 |
+
|
186 |
+
#~ msgid "Replace external links from comment authors on the JavaScript code"
|
187 |
+
#~ msgstr "Заменить внешние ссылки от авторов комментариев на код JavaScript"
|
188 |
+
|
189 |
+
#~ msgid "Disable X-Pingback"
|
190 |
+
#~ msgstr "Убрать ссылку на X-Pingback и возможность спамить pingback-ами"
|
191 |
+
|
192 |
+
#~ msgid "Remove field \"site\" in comment form"
|
193 |
+
#~ msgstr "Удаляет поле \"Сайт\" в форме комментариев"
|
194 |
+
|
195 |
+
#~ msgid "Disable all comments"
|
196 |
+
#~ msgstr "Отключить все комментарии"
|
197 |
+
|
198 |
+
#~ msgid "Comments"
|
199 |
+
#~ msgstr "Комментарии"
|
200 |
+
|
201 |
+
#~ msgid ""
|
202 |
+
#~ "Hide selected notices only. You will see the link \"Hide notification "
|
203 |
+
#~ "forever\" in each notice. Push it and they will not bother you anymore. "
|
204 |
+
#~ "Push <a href=\"%s\">reset hidden notices (%d)</a> if you need to show "
|
205 |
+
#~ "hidden notices again."
|
206 |
+
#~ msgstr ""
|
207 |
+
#~ "Скрывать только выбранные уведомления. В каждом уведомлении вы увидите "
|
208 |
+
#~ "ссылку \"Скрыть уведомление навсегда\". Нажмите на неё и уведомление "
|
209 |
+
#~ "будет скрыто навсегда и перестанет вас беспокоить. Нажмите <a href=\"%s"
|
210 |
+
#~ "\">сбросить скрытые уведомления (%d)</a>, если вам нужно восстановить "
|
211 |
+
#~ "показ скрытых ранее уведомлений."
|
212 |
+
|
213 |
+
#~ msgid "Webcraftic hide admin notices"
|
214 |
+
#~ msgstr "Webcraftic скрыть уведомления администратора"
|
215 |
+
|
216 |
+
#~ msgid "Comments tweaks"
|
217 |
+
#~ msgstr "Инструменты комментариев"
|
218 |
+
|
219 |
+
#~ msgid "All comments have been deleted."
|
220 |
+
#~ msgstr "Все комментарии были удалены."
|
221 |
+
|
222 |
+
#~ msgid ""
|
223 |
+
#~ "An error occurred while trying to delete comments. Internal error "
|
224 |
+
#~ "occured. Please try again later."
|
225 |
+
#~ msgstr ""
|
226 |
+
#~ "При попытке удалить комментарии произошла ошибка. Пожалуйста, повторите "
|
227 |
+
#~ "попытку позже."
|
228 |
+
|
229 |
+
#~ msgid "You are not allowed to view this page."
|
230 |
+
#~ msgstr "Вам не разрешено просматривать эту страницу."
|
231 |
+
|
232 |
+
#~ msgid "You do not have the selected post types!"
|
233 |
+
#~ msgstr "Вы не выбрали еще ни одного типа записей!"
|
234 |
+
|
235 |
+
#~ msgid "No comments available for deletion."
|
236 |
+
#~ msgstr "Нет комментариев для удаления."
|
237 |
+
|
238 |
+
#~ msgid ""
|
239 |
+
#~ "Are you sure that you desire to delete all comments from the database?"
|
240 |
+
#~ msgstr "Вы уверены, что хотите удалить все комментарии из базы данных?"
|
241 |
+
|
242 |
+
#~ msgid ""
|
243 |
+
#~ "Deleting comments will remove existing comment entries in the database "
|
244 |
+
#~ "and cannot be reverted without a database backup."
|
245 |
+
#~ msgstr ""
|
246 |
+
#~ "При удалении комментариев удаляются существующие записи комментариев в "
|
247 |
+
#~ "базе данных, они не могут быть восстановлены без резервного копирования "
|
248 |
+
#~ "базы данных."
|
249 |
+
|
250 |
+
#~ msgid "You have %s comments"
|
251 |
+
#~ msgstr "У вас есть %s комментариев"
|
252 |
+
|
253 |
+
#~ msgid "Yes, I'm sure"
|
254 |
+
#~ msgstr "Да, я уверен"
|
255 |
+
|
256 |
+
#~ msgid "No, return back"
|
257 |
+
#~ msgstr "Нет, вернуться"
|
258 |
+
|
259 |
+
#~ msgid ""
|
260 |
+
#~ "Are you sure that you desire to delete all comments from the database for "
|
261 |
+
#~ "the selected post types (%s)?"
|
262 |
+
#~ msgstr ""
|
263 |
+
#~ "Вы уверены, что хотите удалить все комментарии из базы данных для "
|
264 |
+
#~ "выбранных типов записей (%s)?"
|
265 |
+
|
266 |
+
#~ msgid "Disable comments"
|
267 |
+
#~ msgstr "Отключить комментарии"
|
268 |
+
|
269 |
+
#~ msgid "Not disable"
|
270 |
+
#~ msgstr "Не отключать"
|
271 |
+
|
272 |
+
#~ msgid "Everywhere"
|
273 |
+
#~ msgstr "Повсюду"
|
274 |
+
|
275 |
+
#~ msgid ""
|
276 |
+
#~ "You can delete all comments in the database by clicking on this link (<a "
|
277 |
+
#~ "href=\"%s\">cleaning comments in database</a>)."
|
278 |
+
#~ msgstr ""
|
279 |
+
#~ "Вы можете удалить все комментарии в базе данных, нажав на эту ссылку ( <a "
|
280 |
+
#~ "href=\"%s\">очистка комментариев в базе данных</a> )."
|
281 |
+
|
282 |
+
#~ msgid "On certain post types"
|
283 |
+
#~ msgstr "Только выбранные типы записей"
|
284 |
+
|
285 |
+
#~ msgid ""
|
286 |
+
#~ "You can delete all comments for the selected post types. Select the post "
|
287 |
+
#~ "types below and save the settings. After that, click the link (<a href="
|
288 |
+
#~ "\"%s\">delete all comments for the selected post types in database</a>)."
|
289 |
+
#~ msgstr ""
|
290 |
+
#~ "Вы можете удалить все комментарии для выбранных типов записей. Выберите "
|
291 |
+
#~ "типы записей ниже и сохраните настройки. После этого нажмите ссылку ( <a "
|
292 |
+
#~ "href=\"%s\">удалите все комментарии для выбранных типов записей в базе "
|
293 |
+
#~ "данных</a> )."
|
294 |
+
|
295 |
+
#~ msgid ""
|
296 |
+
#~ "Everywhere - Warning: This option is global and will affect your entire "
|
297 |
+
#~ "site. Use it only if you want to disable comments everywhere. A complete "
|
298 |
+
#~ "description of what this option does is available here"
|
299 |
+
#~ msgstr ""
|
300 |
+
#~ "Повсюду - предупреждение: этот параметр является глобальным и повлияет на "
|
301 |
+
#~ "весь ваш сайт. Используйте его только в том случае, если вы хотите "
|
302 |
+
#~ "отключить комментарии повсюду. "
|
303 |
+
|
304 |
+
#~ msgid ""
|
305 |
+
#~ "On certain post types - Disabling comments will also disable trackbacks "
|
306 |
+
#~ "and pingbacks. All comment-related fields will also be hidden from the "
|
307 |
+
#~ "edit/quick-edit screens of the affected posts. These settings cannot be "
|
308 |
+
#~ "overridden for individual posts."
|
309 |
+
#~ msgstr ""
|
310 |
+
#~ "В некоторых типах сообщений - отключение комментариев также отключает "
|
311 |
+
#~ "трекбэки и pingback. Все поля, связанные с комментариями, также будут "
|
312 |
+
#~ "скрыты от экранов редактирования / быстрого редактирования затронутых "
|
313 |
+
#~ "сообщений. Эти настройки нельзя переопределять для отдельных сообщений."
|
314 |
+
|
315 |
+
#~ msgid "Select the post types for which comments will be disabled"
|
316 |
+
#~ msgstr "Выберите типы записей, для которых комментарии будут отключены."
|
317 |
+
|
318 |
+
#~ msgid ""
|
319 |
+
#~ "Tired of spam in the comments? Do visitors leave \"blank\" comments for "
|
320 |
+
#~ "the sake of a link to their site?"
|
321 |
+
#~ msgstr ""
|
322 |
+
#~ "Надоел спам в комментариях? Посетители оставляют «пустые» комментарии "
|
323 |
+
#~ "ради ссылки на свой сайт?"
|
324 |
+
|
325 |
+
#~ msgid "Removes the \"Site\" field from the comment form."
|
326 |
+
#~ msgstr "Убирает поле «Сайт» из формы комментирования."
|
327 |
+
|
328 |
+
#~ msgid ""
|
329 |
+
#~ "Works with the standard comment form, if the form is manually written in "
|
330 |
+
#~ "your theme-it probably will not work!"
|
331 |
+
#~ msgstr ""
|
332 |
+
#~ "Работает со стандартной формой комментирования, если в Вашей теме форма "
|
333 |
+
#~ "прописана вручную - скорей всего не сработает!"
|
334 |
+
|
335 |
+
#~ msgid "Recommended"
|
336 |
+
#~ msgstr "Рекомендовано"
|
337 |
+
|
338 |
+
#~ msgid ""
|
339 |
+
#~ "Superfluous external links from comments, which can be typed from a dozen "
|
340 |
+
#~ "and more for one article, do not bring anything good for promotion."
|
341 |
+
#~ msgstr ""
|
342 |
+
#~ "Внешние ссылки в комментариях, которых может быть десятки или больше на "
|
343 |
+
#~ "одной странице, могут ухудшить продвижение вашего сайта."
|
344 |
+
|
345 |
+
#~ msgid "Replaces the links of this kind of %s, on links of this kind %s"
|
346 |
+
#~ msgstr ""
|
347 |
+
#~ "Заменяет ссылки %s, на span тег и устанавливает переход с помощью "
|
348 |
+
#~ "JavaScript %s"
|
349 |
+
|
350 |
+
#~ msgid ""
|
351 |
+
#~ "Up to 90 percent of comments in the blog can be left for the sake of an "
|
352 |
+
#~ "external link. Even nofollow from page weight loss here does not help."
|
353 |
+
#~ msgstr ""
|
354 |
+
#~ "До 90 процентов комментариев в блоге оставляют ради внешней ссылки. Не "
|
355 |
+
#~ "поможет даже nofollow от потери веса страницы."
|
356 |
+
|
357 |
+
#~ msgid ""
|
358 |
+
#~ "Replaces the links of the authors of comments on the JavaScript code, it "
|
359 |
+
#~ "is impossible to distinguish it from usual links."
|
360 |
+
#~ msgstr ""
|
361 |
+
#~ "Заменяет ссылки авторов комментариев на JavaScript код, его невозможно "
|
362 |
+
#~ "отличить от обычной ссылки."
|
363 |
+
|
364 |
+
#~ msgid "In some Wordpress topics this may not work."
|
365 |
+
#~ msgstr "В некоторых темах Wordpress это может не сработать."
|
366 |
+
|
367 |
+
#~ msgid "Disable XML-RPC"
|
368 |
+
#~ msgstr "Отключить XML-RPC"
|
369 |
+
|
370 |
+
#~ msgid ""
|
371 |
+
#~ "A pingback is basically an automated comment that gets created when "
|
372 |
+
#~ "another blog links to you. A self-pingback is created when you link to an "
|
373 |
+
#~ "article within your own blog. Pingbacks are essentially nothing more than "
|
374 |
+
#~ "spam and simply waste resources."
|
375 |
+
#~ msgstr ""
|
376 |
+
#~ "Pingback по-существу автоматизированных комментарий, который создается, "
|
377 |
+
#~ "когда другой блог ссылается на вас. Self-pingback создается, когда вы "
|
378 |
+
#~ "оставили ссылку на статью в своем блоге. Pingbacks по существу являются "
|
379 |
+
#~ "не более чем спам и пустая трата ресурсов вашего сайта."
|
380 |
+
|
381 |
+
#~ msgid "Removes the server responses a reference to the xmlrpc file."
|
382 |
+
#~ msgstr "Удаляет ссылку на xmlrpc-файл и ответ сервера."
|
383 |
+
|
384 |
+
#~ msgid ""
|
385 |
+
#~ "We found that you have the \"Clearfy - disable unused features\" plugin "
|
386 |
+
#~ "installed, this plugin already has disable comments functions, so you can "
|
387 |
+
#~ "deactivate plugin \"Comments tweaks\"!"
|
388 |
+
#~ msgstr ""
|
389 |
+
#~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
|
390 |
+
#~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
|
391 |
+
#~ "комментариев, поэтому вы можете отключить плагин «Инструменты "
|
392 |
+
#~ "комментариев»!"
|
393 |
+
|
394 |
+
#~ msgid "Webcraftic comments tweaks"
|
395 |
+
#~ msgstr "Webcraftic инструменты комментариев"
|
396 |
+
|
397 |
+
#~ msgid "Comments are closed."
|
398 |
+
#~ msgstr "Комментарии Закрыты."
|
399 |
+
|
400 |
+
#~ msgid ""
|
401 |
+
#~ "Note: The <em>%s</em> plugin is currently active, and comments are "
|
402 |
+
#~ "completely disabled on: %s. Many of the settings below will not be "
|
403 |
+
#~ "applicable for those post types."
|
404 |
+
#~ msgstr ""
|
405 |
+
#~ "Примечание. Плагин <em>%s</em> в настоящий момент активен, и комментарии "
|
406 |
+
#~ "полностью отключены: %s. Многие из приведенных ниже настроек не будут "
|
407 |
+
#~ "применяться для этих типов сообщений."
|
408 |
+
|
409 |
+
#~ msgid ""
|
410 |
+
#~ "We found that you have the \"Clearfy - disable unused features\" plugin "
|
411 |
+
#~ "installed, this plugin already has disable comments functions, so you can "
|
412 |
+
#~ "deactivate plugin \"Disable comments\"!"
|
413 |
+
#~ msgstr ""
|
414 |
+
#~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
|
415 |
+
#~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
|
416 |
+
#~ "комментариев, поэтому вы можете отключить плагин «Отключить комментарии»!"
|
417 |
+
|
418 |
+
#~ msgid "Webcraftic Disable comments"
|
419 |
+
#~ msgstr "Webcraftic отключить комментарии"
|
components/disable-admin-notices/readme.txt
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== Disable admin notices individually ===
|
2 |
+
Tags: hide admin notices, hide updates nags, hide nags, disable notices, disable update nags, disable nags, disable admin notices
|
3 |
+
Contributors: webcraftic
|
4 |
+
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=VDX7JNTQPNPFW
|
5 |
+
Requires at least: 4.2
|
6 |
+
Tested up to: 4.9
|
7 |
+
Requires PHP: 5.2
|
8 |
+
Stable tag: trunk
|
9 |
+
License: GPLv2
|
10 |
+
|
11 |
+
Disable admin notices plugin gives you the option to hide updates warnings and inline notices in the admin panel.
|
12 |
+
|
13 |
+
== Description ==
|
14 |
+
|
15 |
+
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.
|
16 |
+
|
17 |
+
Our team was tired of this, and we developed a small plugin that solves problems with annoying notices. With this plugin, you can turn off notices forever individually for themes, plugins and the WordPress itself.
|
18 |
+
|
19 |
+
The Hide admin notices plugin adds “Hide notification forever” link for each admin notice. Click this link and plugin will filter this notice and you will never see it. This method will help you to disable only annoying notices from plugins and themes, but important error notifications will continue to work.
|
20 |
+
|
21 |
+
In addition, you can disable all notices globally simply change plugin options. In this case, the plugin hides all admin notices, except of updates notices in the list of installed plug-ins.
|
22 |
+
|
23 |
+
And still, that you could see which notices are shows, we made the special item in the top admin bar that will collect all notices in one place. It is disabled by default to freeing space in the admin menu but you can enable it in plugin options.
|
24 |
+
|
25 |
+
We used some useful functions from plugins <strong>Clearfy – disable unused features</strong>, <strong>WP Hide Plugin Updates and Warnings</strong>, <strong>Hide All Notices</strong>, <strong>WP Nag Hide</strong>, <strong>WP Notification Center</strong>
|
26 |
+
|
27 |
+
#### Recommended separate modules ####
|
28 |
+
|
29 |
+
We invite you to check out a few other related free plugins that our team has also produced that you may find especially useful:
|
30 |
+
|
31 |
+
* [Clearfy – disable unused features](https://wordpress.org/plugins/gonzales/)
|
32 |
+
* [WP Asset manager](https://wordpress.org/plugins/gonzales/)
|
33 |
+
* [Disable Comments for Any Post Types (Disable XML-RPC, Disable Self Pingbacks, Remove Comments)](https://wordpress.org/plugins/comments-plus/)
|
34 |
+
* [Disable updates, Disable automatic updates, Updates manager](https://wordpress.org/plugins/webcraftic-updates-manager/)
|
35 |
+
|
36 |
+
== Translations ==
|
37 |
+
|
38 |
+
* English - default, always included
|
39 |
+
* Russian
|
40 |
+
|
41 |
+
If you want to help with the translation, please contact me through this site or through the contacts inside the plugin.
|
42 |
+
|
43 |
+
== Installation ==
|
44 |
+
|
45 |
+
1. Upload the plugin folder to the `/wp-content/plugins/` directory
|
46 |
+
2. Activate the plugin through the 'Plugins' menu in WordPress
|
47 |
+
3. The plugin settings can be accessed via the 'Settings' menu in the administration area (either your site administration for single-site installs).
|
48 |
+
|
49 |
+
== Screenshots ==
|
50 |
+
1. Shows an example of use
|
51 |
+
2. Control panel
|
52 |
+
3. Notifications panel (optional)
|
53 |
+
|
54 |
+
== Changelog ==
|
55 |
+
= 1.0.0 =
|
56 |
+
* Plugin release
|
components/disable-admin-notices/uninstall.php
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// if uninstall.php is not called by WordPress, die
|
4 |
+
if( !defined('WP_UNINSTALL_PLUGIN') ) {
|
5 |
+
die;
|
6 |
+
}
|
7 |
+
|
8 |
+
// remove plugin options
|
9 |
+
global $wpdb;
|
10 |
+
|
11 |
+
$wpdb->query("DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE 'wbcr_dan_%';");
|
12 |
+
|
components/updates-manager/admin/assets/css/general.css
CHANGED
@@ -3,453 +3,33 @@
|
|
3 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
4 |
* @copyright Alex Kovalev 23.08.2017
|
5 |
*/
|
6 |
-
#WBCR
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
#WBCR .
|
23 |
-
|
24 |
-
|
25 |
-
#
|
26 |
-
|
27 |
-
|
28 |
-
#WBCR .
|
29 |
-
|
30 |
-
|
31 |
-
#WBCR .
|
32 |
-
|
33 |
-
|
34 |
-
#
|
35 |
-
text-align: right;
|
36 |
-
padding-right: 20px;
|
37 |
-
}
|
38 |
-
#WBCR .factory-from-control-list label span {
|
39 |
-
display: inline-block;
|
40 |
-
vertical-align: bottom;
|
41 |
-
}
|
42 |
-
#WBCR .factory-from-control-list label span input[type="checkbox"],
|
43 |
-
#WBCR .factory-from-control-list label span input[type="checkbox"]:focus {
|
44 |
-
outline: none;
|
45 |
-
}
|
46 |
-
#WBCR .wbcr-clearfy-recomended-text {
|
47 |
-
display: block;
|
48 |
-
font-size: 11px;
|
49 |
-
font-weight: lighter;
|
50 |
-
color: #179347;
|
51 |
-
}
|
52 |
-
#WBCR .wbcr-clearfy-group-header {
|
53 |
-
background: #f9f9f9;
|
54 |
-
padding: 30px 0 10px 40px;
|
55 |
-
margin-bottom: 20px;
|
56 |
-
}
|
57 |
-
#WBCR .wbcr-clearfy-group-header strong {
|
58 |
-
font-size: 15px;
|
59 |
-
}
|
60 |
-
#WBCR .wbcr-clearfy-group-header p {
|
61 |
-
color: #8c8888;
|
62 |
-
font-size: 12px;
|
63 |
-
}
|
64 |
-
#WBCR .wbcr-clr-options,
|
65 |
-
#WBCR .wbcr-clr-page {
|
66 |
-
position: relative;
|
67 |
-
background: #fff;
|
68 |
-
padding-left: 230px;
|
69 |
-
}
|
70 |
-
#WBCR .wbcr-clr-options form.form-horizontal,
|
71 |
-
#WBCR .wbcr-clr-page form.form-horizontal {
|
72 |
-
min-height: 800px;
|
73 |
-
padding: 130px 20px 50px 20px;
|
74 |
-
}
|
75 |
-
#WBCR .wbcr-clr-page {
|
76 |
-
min-height: 800px;
|
77 |
-
padding: 80px 20px 50px 230px;
|
78 |
-
}
|
79 |
-
#WBCR .wbcr-clearfy-dashboard-header {
|
80 |
-
position: absolute;
|
81 |
-
z-index: 13;
|
82 |
-
top: 0;
|
83 |
-
left: 0;
|
84 |
-
right: 0;
|
85 |
-
overflow: hidden;
|
86 |
-
background-color: #32373c;
|
87 |
-
color: #fff;
|
88 |
-
border-radius: 5px 5px 0 0;
|
89 |
-
}
|
90 |
-
#WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-header-logo {
|
91 |
-
float: left;
|
92 |
-
padding: 25px 0;
|
93 |
-
font-size: 20px;
|
94 |
-
line-height: 30px;
|
95 |
-
font-weight: 400;
|
96 |
-
text-align: center;
|
97 |
-
width: 170px;
|
98 |
-
background-color: #464b50;
|
99 |
-
color: #ccc;
|
100 |
-
padding-left: 25px;
|
101 |
-
background: none;
|
102 |
-
}
|
103 |
-
#WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-header-title {
|
104 |
-
display: inline-block;
|
105 |
-
vertical-align: middle;
|
106 |
-
}
|
107 |
-
#WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-header-title h2 {
|
108 |
-
font-size: 18px;
|
109 |
-
line-height: 30px;
|
110 |
-
font-weight: 300;
|
111 |
-
margin-top: 26px;
|
112 |
-
padding: 0 !important;
|
113 |
-
overflow: hidden;
|
114 |
-
white-space: nowrap;
|
115 |
-
text-overflow: ellipsis;
|
116 |
-
color: #fff;
|
117 |
-
}
|
118 |
-
#WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-header-title .updated {
|
119 |
-
display: none !important;
|
120 |
-
}
|
121 |
-
#WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-control {
|
122 |
-
position: relative;
|
123 |
-
float: right;
|
124 |
-
margin: 12px;
|
125 |
-
}
|
126 |
-
#WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-control input[type="submit"] {
|
127 |
-
display: inline-block;
|
128 |
-
vertical-align: top;
|
129 |
-
font-size: 13px;
|
130 |
-
font-weight: 600;
|
131 |
-
line-height: 20px;
|
132 |
-
text-transform: uppercase;
|
133 |
-
margin: 10px 0 0;
|
134 |
-
padding: 8px 30px;
|
135 |
-
cursor: pointer;
|
136 |
-
position: relative;
|
137 |
-
overflow: hidden;
|
138 |
-
border: none;
|
139 |
-
border-radius: 50px;
|
140 |
-
box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.08) inset;
|
141 |
-
background-color: #f1f1f1;
|
142 |
-
color: inherit;
|
143 |
-
transition: background-color 0.3s, border-color 0.3s, color 0.3s, opacity 0.3s;
|
144 |
-
text-align: center;
|
145 |
-
outline: none;
|
146 |
-
z-index: 3;
|
147 |
-
}
|
148 |
-
#WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-control input[type="submit"].wbcr-clearfy-type-save {
|
149 |
-
box-shadow: none;
|
150 |
-
min-width: 200px;
|
151 |
-
background-color: #8bc34a;
|
152 |
-
color: #fff;
|
153 |
-
}
|
154 |
-
#WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-control input[type="submit"].wbcr-clearfy-type-save:hover {
|
155 |
-
background: #9dbb7b;
|
156 |
-
color: #fff;
|
157 |
-
}
|
158 |
-
#WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-control input[type="submit"].wbcr-clearfy-type-save:active {
|
159 |
-
box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.3);
|
160 |
-
}
|
161 |
-
#WBCR .wbcr-clearfy-left-navigation-bar {
|
162 |
-
position: absolute;
|
163 |
-
left: 0;
|
164 |
-
top: 0;
|
165 |
-
bottom: 0;
|
166 |
-
width: 230px;
|
167 |
-
background: #e6e6e6;
|
168 |
-
}
|
169 |
-
#WBCR .wbcr-clearfy-left-navigation-bar ul {
|
170 |
-
margin-top: 80px;
|
171 |
-
}
|
172 |
-
#WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab {
|
173 |
-
display: block;
|
174 |
-
background: #efefef;
|
175 |
-
margin: 1px 0;
|
176 |
-
}
|
177 |
-
#WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab a {
|
178 |
-
display: block;
|
179 |
-
width: 100%;
|
180 |
-
padding: 20px 20px;
|
181 |
-
font-size: 12px;
|
182 |
-
color: #9a9a9a;
|
183 |
-
text-decoration: none;
|
184 |
-
text-transform: uppercase;
|
185 |
-
}
|
186 |
-
#WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab a:hover {
|
187 |
-
background: #f7f6f6;
|
188 |
-
}
|
189 |
-
#WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab a,
|
190 |
-
#WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab a:active,
|
191 |
-
#WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab a:hover,
|
192 |
-
#WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab a:active,
|
193 |
-
#WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab a:focus {
|
194 |
-
outline: 0 !important;
|
195 |
-
box-shadow: none !important;
|
196 |
-
}
|
197 |
-
#WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab.wbcr-clearfy-active-tab {
|
198 |
-
background: #fff;
|
199 |
-
}
|
200 |
-
#WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab.wbcr-clearfy-active-tab a {
|
201 |
-
color: #222;
|
202 |
-
}
|
203 |
-
#WBCR .wbcr-clearfy-sidebar-widget {
|
204 |
-
display: inline-block;
|
205 |
-
min-height: 230px;
|
206 |
-
width: 100%;
|
207 |
-
margin-top: 20px;
|
208 |
-
background-color: #fff;
|
209 |
-
padding: 20px 15px;
|
210 |
-
vertical-align: top;
|
211 |
-
}
|
212 |
-
#WBCR .wbcr-clearfy-sidebar-widget .wbcr-clearfy-hint-icon-simple {
|
213 |
-
display: inline-block;
|
214 |
-
width: 16px;
|
215 |
-
height: 16px;
|
216 |
-
line-height: 15px;
|
217 |
-
padding: 0;
|
218 |
-
font-size: 11px;
|
219 |
-
text-align: center;
|
220 |
-
color: #fff;
|
221 |
-
background: #E91E63;
|
222 |
-
border-radius: 3px;
|
223 |
-
}
|
224 |
-
#WBCR .wbcr-clearfy-sidebar-widget .wbcr-clearfy-simple-grey {
|
225 |
-
background: #E91E63;
|
226 |
-
}
|
227 |
-
#WBCR .wbcr-clearfy-sidebar-widget .wbcr-clearfy-simple-red {
|
228 |
-
background: #9e9e9e;
|
229 |
-
}
|
230 |
-
#WBCR .wbcr-clearfy-sidebar-widget .wbcr-clearfy-simple-green {
|
231 |
-
background: #8bc34a;
|
232 |
-
}
|
233 |
-
#WBCR .wbcr-clearfy-sidebar-widget .wbcr-clearfy-icon-5stars {
|
234 |
-
display: block;
|
235 |
-
width: 80px;
|
236 |
-
height: 17px;
|
237 |
-
background: url('../img/5-stars22.png') no-repeat;
|
238 |
-
vertical-align: middle;
|
239 |
-
margin-bottom: 5px;
|
240 |
-
}
|
241 |
-
#WBCR .wbcr-clearfy-board {
|
242 |
-
background: #f9f8f8;
|
243 |
-
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.1);
|
244 |
-
padding: 20px;
|
245 |
-
margin-top: 20px;
|
246 |
-
}
|
247 |
-
#WBCR #wbcr-clearfy-quick-mode-board {
|
248 |
-
padding: 30px;
|
249 |
-
margin-top: 20px;
|
250 |
-
}
|
251 |
-
#WBCR #wbcr-clearfy-quick-mode-board h4 {
|
252 |
-
margin-top: 30px;
|
253 |
-
}
|
254 |
-
#WBCR .wbcr-clearfy-switch-success-message,
|
255 |
-
#WBCR .wbcr-clearfy-switch-error-message {
|
256 |
-
display: none;
|
257 |
-
padding: 15px 20px;
|
258 |
-
font-size: 13px;
|
259 |
-
font-weight: bold;
|
260 |
-
margin: 15px 0 0;
|
261 |
-
border-radius: 4px;
|
262 |
-
}
|
263 |
-
#WBCR .wbcr-clearfy-switch-success-message {
|
264 |
-
background: #e5f9ce;
|
265 |
-
border-bottom: 3px solid #d3eab9;
|
266 |
-
color: #56614a;
|
267 |
-
}
|
268 |
-
#WBCR .wbcr-clearfy-switch-error-message {
|
269 |
-
background: #fdc6c2;
|
270 |
-
border-bottom: 3px solid #e2a19c;
|
271 |
-
color: #bd6963;
|
272 |
-
}
|
273 |
-
#WBCR .wbcr-clearfy-export-import-board {
|
274 |
-
text-align: right;
|
275 |
-
}
|
276 |
-
#WBCR .wbcr-clearfy-export-import-board label {
|
277 |
-
display: block;
|
278 |
-
width: 100%;
|
279 |
-
text-align: left;
|
280 |
-
padding: 7px 0;
|
281 |
-
}
|
282 |
-
#WBCR .wbcr-clearfy-export-import-board #wbcr-clearfy-import-export {
|
283 |
-
width: 100%;
|
284 |
-
box-sizing: border-box;
|
285 |
-
height: 150px;
|
286 |
-
line-height: inherit;
|
287 |
-
margin: 0;
|
288 |
-
padding: 7px 14px;
|
289 |
-
box-shadow: none;
|
290 |
-
border-radius: 3px;
|
291 |
-
border: 1px solid #eee;
|
292 |
-
border-top-color: #dedede;
|
293 |
-
background-color: #f1f1f1;
|
294 |
-
color: #444;
|
295 |
-
transition: border-color 0.3s;
|
296 |
-
-webkit-appearance: none;
|
297 |
-
}
|
298 |
-
#WBCR .wbcr-clearfy-export-import-board .wbcr-clearfy-import-options-button {
|
299 |
-
display: inline-block;
|
300 |
-
margin-top: 10px;
|
301 |
-
}
|
302 |
-
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch {
|
303 |
-
position: relative;
|
304 |
-
padding: 20px;
|
305 |
-
font-size: 11px;
|
306 |
-
text-transform: uppercase;
|
307 |
-
background: #f1f1f1;
|
308 |
-
margin-top: 10px;
|
309 |
-
border: 2px solid #e0dfdf;
|
310 |
-
text-align: center;
|
311 |
-
-webkit-transition: all 0.2s ease-out;
|
312 |
-
-moz-transition: all 0.2s ease-out;
|
313 |
-
-o-transition: all 0.2s ease-out;
|
314 |
-
transition: all 0.2s ease-out;
|
315 |
-
}
|
316 |
-
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch:hover {
|
317 |
-
cursor: pointer;
|
318 |
-
background: #e9e9e9;
|
319 |
-
border: 2px solid #d8d7d7;
|
320 |
-
}
|
321 |
-
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-active {
|
322 |
-
background: #e5f9ce;
|
323 |
-
border: 2px solid #c9deb2;
|
324 |
-
color: #677d4d;
|
325 |
-
}
|
326 |
-
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-active .wbcr-clearfy-switch-confirmation {
|
327 |
-
display: block !important;
|
328 |
-
}
|
329 |
-
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-active:hover .wbcr-clearfy-switch-confirmation {
|
330 |
-
opacity: 1;
|
331 |
-
}
|
332 |
-
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-mode-reset:hover {
|
333 |
-
background: #f7ccc9;
|
334 |
-
color: #c55b5b;
|
335 |
-
border: 2px solid #d8adad;
|
336 |
-
}
|
337 |
-
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-loading {
|
338 |
-
border: 2px solid #efefef;
|
339 |
-
background: #f5f5f5;
|
340 |
-
color: #d6d6d6;
|
341 |
-
}
|
342 |
-
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-loading .wbcr-clearfy-switch-confirmation button {
|
343 |
-
display: none !important;
|
344 |
-
}
|
345 |
-
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch .wbcr-clearfy-switch-confirmation {
|
346 |
-
position: absolute;
|
347 |
-
display: none;
|
348 |
-
opacity: 0;
|
349 |
-
top: 0;
|
350 |
-
left: 0;
|
351 |
-
right: 0;
|
352 |
-
bottom: 0;
|
353 |
-
background: rgba(255, 255, 255, 0.85);
|
354 |
-
-webkit-transition: all 0.3s ease-out;
|
355 |
-
-moz-transition: all 0.3s ease-out;
|
356 |
-
-o-transition: all 0.3s ease-out;
|
357 |
-
transition: all 0.3s ease-out;
|
358 |
-
}
|
359 |
-
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch .wbcr-clearfy-switch-confirmation button {
|
360 |
-
margin-top: 15px;
|
361 |
-
border: 0;
|
362 |
-
box-shadow: none;
|
363 |
-
padding: 5px 10px;
|
364 |
-
font-weight: bold;
|
365 |
-
font-size: 13px;
|
366 |
-
border-radius: 3px;
|
367 |
-
outline: none;
|
368 |
-
}
|
369 |
-
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch .wbcr-clearfy-switch-confirmation button.wbcr-clearfy-confirm-button-accept {
|
370 |
-
background-color: #c9deb2;
|
371 |
-
color: #586549;
|
372 |
-
}
|
373 |
-
#WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch .wbcr-clearfy-switch-confirmation button.wbcr-clearfy-confirm-button-cancel {
|
374 |
-
background-color: #fdd599;
|
375 |
-
color: #a57b3c;
|
376 |
-
margin-left: 10px;
|
377 |
-
}
|
378 |
-
#WBCR .wbcr-clearfy-layer {
|
379 |
-
display: none;
|
380 |
-
position: absolute;
|
381 |
-
top: 0;
|
382 |
-
left: 0;
|
383 |
-
right: 0;
|
384 |
-
bottom: 0;
|
385 |
-
background: rgba(255, 235, 59, 0.18);
|
386 |
-
z-index: 9;
|
387 |
-
}
|
388 |
-
#WBCR .wbcr-clearfy-confirm-popup {
|
389 |
-
display: none;
|
390 |
-
position: absolute;
|
391 |
-
top: 50%;
|
392 |
-
left: 50%;
|
393 |
-
width: 500px;
|
394 |
-
height: 400px;
|
395 |
-
margin: -200px 0 0 -250px;
|
396 |
-
padding: 20px;
|
397 |
-
background: rgba(255, 255, 255, 0.82);
|
398 |
-
box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
|
399 |
-
border: 4px solid rgba(216, 210, 171, 0.44);
|
400 |
-
z-index: 99;
|
401 |
-
}
|
402 |
-
#WBCR .wbcr-clearfy-confirm-popup h3 {
|
403 |
-
font-size: 17px;
|
404 |
-
text-align: center;
|
405 |
-
font-weight: bold;
|
406 |
-
margin: 5px 0 0;
|
407 |
-
}
|
408 |
-
#WBCR .wbcr-clearfy-confirm-popup .wbcr-clearfy-reset-warning-message {
|
409 |
-
display: none;
|
410 |
-
text-align: center;
|
411 |
-
}
|
412 |
-
#WBCR .wbcr-clearfy-confirm-popup .wbcr-clearfy-list-options {
|
413 |
-
display: none;
|
414 |
-
height: 230px;
|
415 |
-
overflow-y: auto;
|
416 |
-
overflow-x: hidden;
|
417 |
-
padding-left: 40px;
|
418 |
-
list-style: decimal;
|
419 |
-
margin: 20px 0;
|
420 |
-
}
|
421 |
-
#WBCR .wbcr-clearfy-confirm-popup.wbcr-clearfy-default-warning-options .wbcr-clearfy-list-options {
|
422 |
-
display: block;
|
423 |
-
}
|
424 |
-
#WBCR .wbcr-clearfy-confirm-popup.wbcr-clearfy-reset-warning-options {
|
425 |
-
height: 200px;
|
426 |
-
margin: -100px 0 0 -250px;
|
427 |
-
}
|
428 |
-
#WBCR .wbcr-clearfy-confirm-popup.wbcr-clearfy-reset-warning-options .wbcr-clearfy-reset-warning-message {
|
429 |
-
display: block;
|
430 |
-
margin: 10px 0;
|
431 |
-
}
|
432 |
-
#WBCR .wbcr-clearfy-confirm-popup .wbcr-clearfy-popup-buttons {
|
433 |
-
text-align: center;
|
434 |
-
padding: 10px;
|
435 |
-
}
|
436 |
-
#WBCR .wbcr-clearfy-confirm-popup .wbcr-clearfy-popup-buttons button {
|
437 |
-
display: inline-block;
|
438 |
-
padding: 7px 25px;
|
439 |
-
box-shadow: none;
|
440 |
-
border: 0;
|
441 |
-
font-weight: bold;
|
442 |
-
}
|
443 |
-
#WBCR .wbcr-clearfy-confirm-popup .wbcr-clearfy-popup-buttons button,
|
444 |
-
#WBCR .wbcr-clearfy-confirm-popup .wbcr-clearfy-popup-buttons button:focus {
|
445 |
-
outline: 0 !important;
|
446 |
-
box-shadow: none !important;
|
447 |
-
}
|
448 |
-
#WBCR .wbcr-clearfy-confirm-popup .wbcr-clearfy-popup-buttons button.wbcr-clearfy-popup-button-ok {
|
449 |
-
background: #FFEB3B;
|
450 |
-
color: #564f0d;
|
451 |
-
}
|
452 |
-
#WBCR .wbcr-clearfy-confirm-popup .wbcr-clearfy-popup-buttons button.wbcr-clearfy-cancel-mode {
|
453 |
-
background: #d6d6d6;
|
454 |
-
color: #5f5d5d;
|
455 |
}
|
3 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
4 |
* @copyright Alex Kovalev 23.08.2017
|
5 |
*/
|
6 |
+
#WBCR .wp-list-table .plugin-update-tr.active td,
|
7 |
+
#WBCR .wp-list-table.plugins .active th.check-column {
|
8 |
+
border-left: 4px solid #e6e6e6 !important;
|
9 |
+
padding-left: 8px !important;
|
10 |
+
}
|
11 |
+
#WBCR .wp-list-table.plugins .row-actions,
|
12 |
+
#WBCR .wp-list-table.plugins .second {
|
13 |
+
padding: 0 0 5px;
|
14 |
+
color: #949292;
|
15 |
+
}
|
16 |
+
#WBCR .wp-list-table.plugins .active td,
|
17 |
+
#WBCR .wp-list-table.plugins .active th {
|
18 |
+
background-color: #ffffff;
|
19 |
+
}
|
20 |
+
#WBCR .wp-list-table.plugins,
|
21 |
+
#WBCR .wp-list-table.plugins td,
|
22 |
+
#WBCR .wp-list-table.plugins th,
|
23 |
+
#WBCR .wp-list-table .row-actions .network_active,
|
24 |
+
#WBCR .wp-list-table .row-actions .network_only {
|
25 |
+
color: #777;
|
26 |
+
}
|
27 |
+
#WBCR .wp-list-table .widefat ol,
|
28 |
+
#WBCR .wp-list-table .widefat p,
|
29 |
+
#WBCR .wp-list-table .widefat tfoot tr td,
|
30 |
+
#WBCR .wp-list-table .widefat tfoot tr th,
|
31 |
+
#WBCR .wp-list-table .widefat thead tr td,
|
32 |
+
#WBCR .wp-list-table .widefat thead tr th,
|
33 |
+
#WBCR .wp-list-table .widefat ul {
|
34 |
+
color: #7d7d7d;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
}
|
components/updates-manager/admin/boot.php
CHANGED
@@ -7,11 +7,24 @@
|
|
7 |
*/
|
8 |
|
9 |
require_once(WBCR_UPM_PLUGIN_DIR . '/admin/pages/updates.php');
|
|
|
|
|
10 |
|
11 |
if( !defined('LOADING_UPDATES_MANAGER_AS_ADDON') ) {
|
12 |
require_once(WBCR_UPM_PLUGIN_DIR . '/admin/pages/more-features.php');
|
13 |
}
|
14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
function wbcr_upm_group_options($options)
|
16 |
{
|
17 |
$options[] = array(
|
@@ -42,6 +55,16 @@
|
|
42 |
'title' => __('Enable updates for VCS Installations', 'webcraftic-updates-manager'),
|
43 |
'tags' => array()
|
44 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
|
46 |
return $options;
|
47 |
}
|
@@ -51,8 +74,8 @@
|
|
51 |
function wbcr_upm_allow_quick_mods($mods)
|
52 |
{
|
53 |
$mods['disable_all_updates'] = array(
|
54 |
-
'title' => __('
|
55 |
-
'icon' => 'dashicons-
|
56 |
);
|
57 |
|
58 |
return $mods;
|
7 |
*/
|
8 |
|
9 |
require_once(WBCR_UPM_PLUGIN_DIR . '/admin/pages/updates.php');
|
10 |
+
require_once(WBCR_UPM_PLUGIN_DIR . '/admin/pages/plugins.php');
|
11 |
+
require_once(WBCR_UPM_PLUGIN_DIR . '/admin/pages/advanced.php');
|
12 |
|
13 |
if( !defined('LOADING_UPDATES_MANAGER_AS_ADDON') ) {
|
14 |
require_once(WBCR_UPM_PLUGIN_DIR . '/admin/pages/more-features.php');
|
15 |
}
|
16 |
|
17 |
+
function wbcr_upm_rating_widget_url($page_url, $plugin_name)
|
18 |
+
{
|
19 |
+
if( $plugin_name == 'wbcr_updates_manager' ) {
|
20 |
+
return 'https://goo.gl/Be2hQU';
|
21 |
+
}
|
22 |
+
|
23 |
+
return $page_url;
|
24 |
+
}
|
25 |
+
|
26 |
+
add_filter('wbcr_factory_imppage_rating_widget_url', 'wbcr_upm_rating_widget_url', 10, 2);
|
27 |
+
|
28 |
function wbcr_upm_group_options($options)
|
29 |
{
|
30 |
$options[] = array(
|
55 |
'title' => __('Enable updates for VCS Installations', 'webcraftic-updates-manager'),
|
56 |
'tags' => array()
|
57 |
);
|
58 |
+
$options[] = array(
|
59 |
+
'name' => 'plugins_update_filters',
|
60 |
+
'title' => __('Plugin filters', 'webcraftic-updates-manager'),
|
61 |
+
'tags' => array()
|
62 |
+
);
|
63 |
+
$options[] = array(
|
64 |
+
'name' => 'updates_nags_only_for_admin',
|
65 |
+
'title' => __('Updates nags only for Admin', 'webcraftic-updates-manager'),
|
66 |
+
'tags' => array('recommended')
|
67 |
+
);
|
68 |
|
69 |
return $options;
|
70 |
}
|
74 |
function wbcr_upm_allow_quick_mods($mods)
|
75 |
{
|
76 |
$mods['disable_all_updates'] = array(
|
77 |
+
'title' => __('One click disable all updates', 'webcraftic-updates-manager'),
|
78 |
+
'icon' => 'dashicons-update'
|
79 |
);
|
80 |
|
81 |
return $mods;
|
components/updates-manager/admin/pages/advanced.php
ADDED
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* The page Settings.
|
5 |
+
*
|
6 |
+
* @since 1.0.0
|
7 |
+
*/
|
8 |
+
class WbcrUpm_AdvancedPage extends FactoryPages324_ImpressiveThemplate {
|
9 |
+
|
10 |
+
/**
|
11 |
+
* The id of the page in the admin menu.
|
12 |
+
*
|
13 |
+
* Mainly used to navigate between pages.
|
14 |
+
* @see FactoryPages324_AdminPage
|
15 |
+
*
|
16 |
+
* @since 1.0.0
|
17 |
+
* @var string
|
18 |
+
*/
|
19 |
+
public $id = "advanced";
|
20 |
+
|
21 |
+
public $type = "page";
|
22 |
+
|
23 |
+
public $page_parent_page = 'updates';
|
24 |
+
|
25 |
+
public $page_menu_dashicon = 'dashicons-cloud';
|
26 |
+
|
27 |
+
public function __construct(Factory326_Plugin $plugin)
|
28 |
+
{
|
29 |
+
$this->menuTitle = __('Advanced', 'webcraftic-updates-manager');
|
30 |
+
|
31 |
+
parent::__construct($plugin);
|
32 |
+
}
|
33 |
+
|
34 |
+
|
35 |
+
public function warningNotice()
|
36 |
+
{
|
37 |
+
parent::warningNotice();
|
38 |
+
|
39 |
+
if( isset($_GET['wbcr_force_update']) ) {
|
40 |
+
$concat = __('Please, wait 90 sec. to see the forced automatic update result.', 'webcraftic-updates-manager') . '<br>';
|
41 |
+
|
42 |
+
$this->printWarningNotice($concat);
|
43 |
+
}
|
44 |
+
}
|
45 |
+
|
46 |
+
public function showPageContent()
|
47 |
+
{
|
48 |
+
$this->warningNotice();
|
49 |
+
?>
|
50 |
+
<h4><?php _e('Force Automatic Updates', 'webcraftic-updates-manager'); ?></h4>
|
51 |
+
<p><?php _e('This will attempt to force automatic updates. This is useful for debugging.', 'webcraftic-updates-manager'); ?></p>
|
52 |
+
<a href="<?php $this->actionUrl('force-plugins-update') ?>" class="button button-default"><?php _e('Force update', 'webcraftic-updates-manager'); ?></a>
|
53 |
+
<?php
|
54 |
+
}
|
55 |
+
|
56 |
+
public function forcePluginsUpdateAction()
|
57 |
+
{
|
58 |
+
if( !current_user_can('install_plugins') ) {
|
59 |
+
return;
|
60 |
+
}
|
61 |
+
|
62 |
+
wp_schedule_single_event(time() + 10, 'wp_update_plugins');
|
63 |
+
wp_schedule_single_event(time() + 10, 'wp_version_check');
|
64 |
+
wp_schedule_single_event(time() + 10, 'wp_update_themes');
|
65 |
+
wp_schedule_single_event(time() + 45, 'wp_maybe_auto_update');
|
66 |
+
|
67 |
+
if( get_option('auto_updater.lock', false) ) {
|
68 |
+
update_option('auto_updater.lock', time() - HOUR_IN_SECONDS * 2);
|
69 |
+
}
|
70 |
+
|
71 |
+
$this->redirectToAction('index', array('wbcr_force_update' => 1));
|
72 |
+
}
|
73 |
+
}
|
74 |
+
|
75 |
+
FactoryPages324::register($wbcr_update_services_plugin, 'WbcrUpm_AdvancedPage');
|
components/updates-manager/admin/pages/more-features.php
CHANGED
@@ -5,8 +5,8 @@
|
|
5 |
*
|
6 |
* @since 1.0.0
|
7 |
*/
|
8 |
-
class WbcrUpm_MoreFeaturesPage extends
|
9 |
|
10 |
}
|
11 |
|
12 |
-
|
5 |
*
|
6 |
* @since 1.0.0
|
7 |
*/
|
8 |
+
class WbcrUpm_MoreFeaturesPage extends FactoryClearfy102_MoreFeaturesPage {
|
9 |
|
10 |
}
|
11 |
|
12 |
+
FactoryPages324::register($wbcr_update_services_plugin, 'WbcrUpm_MoreFeaturesPage');
|
components/updates-manager/admin/pages/plugins.php
ADDED
@@ -0,0 +1,328 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* The page Settings.
|
5 |
+
*
|
6 |
+
* @since 1.0.0
|
7 |
+
*/
|
8 |
+
class WbcrUpm_PluginsPage extends FactoryPages324_ImpressiveThemplate {
|
9 |
+
|
10 |
+
/**
|
11 |
+
* The id of the page in the admin menu.
|
12 |
+
*
|
13 |
+
* Mainly used to navigate between pages.
|
14 |
+
* @see FactoryPages324_AdminPage
|
15 |
+
*
|
16 |
+
* @since 1.0.0
|
17 |
+
* @var string
|
18 |
+
*/
|
19 |
+
public $id = "plugins";
|
20 |
+
|
21 |
+
public $type = "page";
|
22 |
+
|
23 |
+
public $page_parent_page = 'updates';
|
24 |
+
|
25 |
+
public $page_menu_dashicon = 'dashicons-cloud';
|
26 |
+
|
27 |
+
private $is_disable_updates;
|
28 |
+
private $is_auto_updates;
|
29 |
+
private $plugins_update_filters = array();
|
30 |
+
|
31 |
+
public function __construct(Factory326_Plugin $plugin)
|
32 |
+
{
|
33 |
+
$this->menuTitle = __('Plugins', 'webcraftic-updates-manager');
|
34 |
+
|
35 |
+
parent::__construct($plugin);
|
36 |
+
|
37 |
+
$updates_mode = $this->getOption('plugin_updates');
|
38 |
+
|
39 |
+
$this->is_disable_updates = $updates_mode == 'disable_plugin_updates';
|
40 |
+
$this->is_auto_updates = $updates_mode == 'enable_plugin_auto_updates';
|
41 |
+
$this->plugins_update_filters = $this->getOption('plugins_update_filters');
|
42 |
+
}
|
43 |
+
|
44 |
+
public function warningNotice()
|
45 |
+
{
|
46 |
+
parent::warningNotice();
|
47 |
+
|
48 |
+
$concat = __('This page you can individually disable plugin updates and auto updates.', 'webcraftic-updates-manager') . '<br>';
|
49 |
+
|
50 |
+
if( $this->is_disable_updates ) {
|
51 |
+
$concat .= __('- To disable updates individually choose the “Manual or automatic plugin updates” option then save settings and comeback to this page.', 'webcraftic-updates-manager') . '<br>';
|
52 |
+
}
|
53 |
+
|
54 |
+
if( !$this->is_auto_updates ) {
|
55 |
+
$concat .= __('- To configure plugin auto updates individually, choose the “Enable auto updates” option then save settings and comeback to this page.', 'webcraftic-updates-manager');
|
56 |
+
}
|
57 |
+
|
58 |
+
$this->printWarningNotice($concat);
|
59 |
+
}
|
60 |
+
|
61 |
+
/**
|
62 |
+
* Requests assets (js and css) for the page.
|
63 |
+
*
|
64 |
+
* @see FactoryPages324_AdminPage
|
65 |
+
*
|
66 |
+
* @since 1.0.0
|
67 |
+
* @return void
|
68 |
+
*/
|
69 |
+
public function assets($scripts, $styles)
|
70 |
+
{
|
71 |
+
|
72 |
+
parent::assets($scripts, $styles);
|
73 |
+
$this->styles->add(WBCR_UPM_PLUGIN_URL . '/admin/assets/css/general.css');
|
74 |
+
}
|
75 |
+
|
76 |
+
public function savePluginsUpdateFilters()
|
77 |
+
{
|
78 |
+
update_option($this->plugin->pluginName . '_plugins_update_filters', $this->plugins_update_filters);
|
79 |
+
}
|
80 |
+
|
81 |
+
public function disablePluginUpdatesAction()
|
82 |
+
{
|
83 |
+
if( !$this->is_disable_updates ) {
|
84 |
+
$plugin_slug = $this->request->get('plugin_slug', null, true);
|
85 |
+
|
86 |
+
check_admin_referer($this->getResultId() . '_' . $plugin_slug);
|
87 |
+
|
88 |
+
if( !empty($plugin_slug) ) {
|
89 |
+
if( isset($this->plugins_update_filters['disable_updates']) ) {
|
90 |
+
if( !isset($this->plugins_update_filters['disable_updates'][$plugin_slug]) ) {
|
91 |
+
$this->plugins_update_filters['disable_updates'][$plugin_slug] = true;
|
92 |
+
}
|
93 |
+
} else {
|
94 |
+
$this->plugins_update_filters['disable_updates'] = array();
|
95 |
+
$this->plugins_update_filters['disable_updates'][$plugin_slug] = true;
|
96 |
+
}
|
97 |
+
|
98 |
+
$this->savePluginsUpdateFilters();
|
99 |
+
}
|
100 |
+
}
|
101 |
+
|
102 |
+
$this->redirectToAction('index');
|
103 |
+
}
|
104 |
+
|
105 |
+
public function enablePluginUpdatesAction()
|
106 |
+
{
|
107 |
+
if( !$this->is_disable_updates ) {
|
108 |
+
$plugin_slug = $this->request->get('plugin_slug', null, true);
|
109 |
+
|
110 |
+
check_admin_referer($this->getResultId() . '_' . $plugin_slug);
|
111 |
+
|
112 |
+
if( !empty($plugin_slug) ) {
|
113 |
+
if( isset($this->plugins_update_filters['disable_updates']) && isset($this->plugins_update_filters['disable_updates'][$plugin_slug]) ) {
|
114 |
+
unset($this->plugins_update_filters['disable_updates'][$plugin_slug]);
|
115 |
+
$this->savePluginsUpdateFilters();
|
116 |
+
}
|
117 |
+
}
|
118 |
+
}
|
119 |
+
|
120 |
+
$this->redirectToAction('index');
|
121 |
+
}
|
122 |
+
|
123 |
+
public function disablePluginAutoupdatesAction()
|
124 |
+
{
|
125 |
+
if( $this->is_auto_updates ) {
|
126 |
+
$plugin_slug = $this->request->get('plugin_slug', null, true);
|
127 |
+
|
128 |
+
check_admin_referer($this->getResultId() . '_' . $plugin_slug);
|
129 |
+
|
130 |
+
if( !empty($plugin_slug) ) {
|
131 |
+
if( isset($this->plugins_update_filters['disable_auto_updates']) ) {
|
132 |
+
if( !isset($this->plugins_update_filters['disable_auto_updates'][$plugin_slug]) ) {
|
133 |
+
$this->plugins_update_filters['disable_auto_updates'][$plugin_slug] = true;
|
134 |
+
}
|
135 |
+
} else {
|
136 |
+
$this->plugins_update_filters['disable_auto_updates'] = array();
|
137 |
+
$this->plugins_update_filters['disable_auto_updates'][$plugin_slug] = true;
|
138 |
+
}
|
139 |
+
$this->savePluginsUpdateFilters();
|
140 |
+
}
|
141 |
+
}
|
142 |
+
$this->redirectToAction('index');
|
143 |
+
}
|
144 |
+
|
145 |
+
public function enablePluginAutoupdatesAction()
|
146 |
+
{
|
147 |
+
if( $this->is_auto_updates ) {
|
148 |
+
$plugin_slug = $this->request->get('plugin_slug', null, true);
|
149 |
+
|
150 |
+
check_admin_referer($this->getResultId() . '_' . $plugin_slug);
|
151 |
+
|
152 |
+
if( !empty($plugin_slug) ) {
|
153 |
+
if( isset($this->plugins_update_filters['disable_auto_updates']) && isset($this->plugins_update_filters['disable_auto_updates'][$plugin_slug]) ) {
|
154 |
+
unset($this->plugins_update_filters['disable_auto_updates'][$plugin_slug]);
|
155 |
+
$this->savePluginsUpdateFilters();
|
156 |
+
}
|
157 |
+
}
|
158 |
+
}
|
159 |
+
$this->redirectToAction('index');
|
160 |
+
}
|
161 |
+
|
162 |
+
public function showPageContent()
|
163 |
+
{
|
164 |
+
if( isset($_POST['wbcr_upm_apply']) ) {
|
165 |
+
|
166 |
+
$bulk_action = $this->request->post('wbcr_upm_bulk_actions', null, true);
|
167 |
+
$plugin_slugs = $this->request->post('plugin_slugs', array(), true);
|
168 |
+
|
169 |
+
check_admin_referer($this->getResultId() . '_form');
|
170 |
+
|
171 |
+
if( !$this->is_disable_updates ) {
|
172 |
+
if( !empty($bulk_action) && !empty($plugin_slugs) && is_array($plugin_slugs) ) {
|
173 |
+
foreach((array)$plugin_slugs as $slug) {
|
174 |
+
|
175 |
+
if( $bulk_action == 'enable_updates' && isset($this->plugins_update_filters['disable_updates']) && isset($this->plugins_update_filters['disable_updates'][$slug]) ) {
|
176 |
+
unset($this->plugins_update_filters['disable_updates'][$slug]);
|
177 |
+
}
|
178 |
+
|
179 |
+
if( $bulk_action == 'enable_auto_updates' ) {
|
180 |
+
if( $this->is_auto_updates ) {
|
181 |
+
if( isset($this->plugins_update_filters['disable_auto_updates']) && isset($this->plugins_update_filters['disable_auto_updates'][$slug]) ) {
|
182 |
+
unset($this->plugins_update_filters['disable_auto_updates'][$slug]);
|
183 |
+
}
|
184 |
+
}
|
185 |
+
} else {
|
186 |
+
if( $bulk_action == 'disable_auto_updates' && !$this->is_auto_updates ) {
|
187 |
+
continue;
|
188 |
+
}
|
189 |
+
|
190 |
+
$this->plugins_update_filters[$bulk_action][$slug] = true;
|
191 |
+
}
|
192 |
+
}
|
193 |
+
|
194 |
+
$this->savePluginsUpdateFilters();
|
195 |
+
}
|
196 |
+
}
|
197 |
+
}
|
198 |
+
|
199 |
+
?>
|
200 |
+
<style>
|
201 |
+
#the-list tr.inactive .check-column {
|
202 |
+
border-left: 3px solid #D54E21;
|
203 |
+
}
|
204 |
+
|
205 |
+
#the-list tr.inactive {
|
206 |
+
background: #FEF7F1;
|
207 |
+
}
|
208 |
+
</style>
|
209 |
+
|
210 |
+
<?php $this->warningNotice(); ?>
|
211 |
+
<form method="post">
|
212 |
+
<?php wp_nonce_field($this->getResultId() . '_form') ?>
|
213 |
+
<p>
|
214 |
+
<select name="wbcr_upm_bulk_actions" id="wbcr_upm_bulk_actions">
|
215 |
+
<option value="0"><?php _e('Bulk actions', 'webcraftic-updates-manager'); ?></option>
|
216 |
+
<option value="disable_updates"><?php _e('Disable updates', 'webcraftic-updates-manager'); ?></option>
|
217 |
+
<option value="enable_updates"><?php _e('Enable updates', 'webcraftic-updates-manager'); ?></option>
|
218 |
+
<option value="enable_auto_updates"><?php _e('Enable auto-updates', 'webcraftic-updates-manager'); ?></option>
|
219 |
+
<option value="disable_auto_updates"><?php _e('Disable auto-updates', 'webcraftic-updates-manager'); ?></option>
|
220 |
+
</select>
|
221 |
+
<input type="submit" name="wbcr_upm_apply" id="wbcr_upm_apply" class='button button-alt' value='<?php _e("Apply", "webcraftic-updates-manager"); ?>'>
|
222 |
+
</p>
|
223 |
+
<table class="wp-list-table widefat autoupdate striped plugins">
|
224 |
+
<thead>
|
225 |
+
<tr>
|
226 |
+
<td id='cb' class='manage-column column-cb check-column'> </td>
|
227 |
+
<th id='name' class='manage-column column-name column-primary'>
|
228 |
+
<strong><?php _e('Plugin', 'webcraftic-updates-manager'); ?></strong></th>
|
229 |
+
<th id='description' class='manage-column column-description'>
|
230 |
+
<strong><?php _e('Description', 'webcraftic-updates-manager'); ?></strong></th>
|
231 |
+
</tr>
|
232 |
+
</thead>
|
233 |
+
<tbody id="the-list">
|
234 |
+
<?php
|
235 |
+
|
236 |
+
foreach(get_plugins() as $key => $value):
|
237 |
+
|
238 |
+
$slug = $key;
|
239 |
+
$slug_parts = explode('/', $slug);
|
240 |
+
$actual_slug = array_shift($slug_parts);
|
241 |
+
$slug_hash = md5($slug[0]);
|
242 |
+
$description = $name = 'Empty';
|
243 |
+
|
244 |
+
foreach((array)$value as $k => $v) {
|
245 |
+
|
246 |
+
if( $k == "Name" ) {
|
247 |
+
$name = $v;
|
248 |
+
}
|
249 |
+
if( $k == "Description" ) {
|
250 |
+
$description = $v;
|
251 |
+
}
|
252 |
+
}
|
253 |
+
|
254 |
+
$class = 'active';
|
255 |
+
$is_disable_updates = false;
|
256 |
+
$is_auto_updates = true;
|
257 |
+
|
258 |
+
if( !empty($this->plugins_update_filters) ) {
|
259 |
+
|
260 |
+
if( isset($this->plugins_update_filters['disable_auto_updates']) && isset($this->plugins_update_filters['disable_auto_updates'][$actual_slug]) ) {
|
261 |
+
$is_auto_updates = false;
|
262 |
+
}
|
263 |
+
if( (isset($this->plugins_update_filters['disable_updates']) && isset($this->plugins_update_filters['disable_updates'][$actual_slug])) ) {
|
264 |
+
$class = 'inactive';
|
265 |
+
$is_disable_updates = true;
|
266 |
+
}
|
267 |
+
}
|
268 |
+
|
269 |
+
if( $this->is_disable_updates ) {
|
270 |
+
$class = 'inactive';
|
271 |
+
$is_disable_updates = true;
|
272 |
+
}
|
273 |
+
|
274 |
+
?>
|
275 |
+
<tr id="post-<?= esc_attr($slug_hash) ?>" class="<?= $class ?>">
|
276 |
+
<th scope="row" class="check-column">
|
277 |
+
<label class="screen-reader-text" for="cb-select-<?= esc_attr($slug_hash) ?>"><?php _e('Select', 'webcraftic-updates-manager') ?><?= esc_html($name) ?></label>
|
278 |
+
<input id="cb-select-<?= esc_attr($slug_hash) ?>" type="checkbox" name="plugin_slugs[]" value="<?= esc_attr($actual_slug) ?>">
|
279 |
+
<label></label>
|
280 |
+
|
281 |
+
<div class="locked-indicator"></div>
|
282 |
+
</th>
|
283 |
+
<td class="plugin-title column-primary">
|
284 |
+
<strong class="plugin-name">
|
285 |
+
<?= esc_html($name) ?>
|
286 |
+
</strong>
|
287 |
+
|
288 |
+
<div class="row-actions visible status">
|
289 |
+
<?php if( !$this->is_disable_updates ): ?>
|
290 |
+
<?php if( !$is_disable_updates ): ?>
|
291 |
+
<span class="trash"><a href="<?= wp_nonce_url($this->getActionUrl('disable-plugin-updates', array('plugin_slug' => $actual_slug)), $this->getResultId() . '_' . $actual_slug) ?>"><?php _e('Disable updates', 'webcraftic-updates-manager') ?></a></span>
|
292 |
+
<?php else: ?>
|
293 |
+
<span><a href="<?= wp_nonce_url($this->getActionUrl('enable-plugin-updates', array('plugin_slug' => $actual_slug)), $this->getResultId() . '_' . $actual_slug) ?>"><?php _e('Enable updates', 'webcraftic-updates-manager') ?></a></span>
|
294 |
+
<?php endif; ?>
|
295 |
+
<?php else: ?>
|
296 |
+
<span style="text-decoration: underline;"><?php _e('Disable updates', 'webcraftic-updates-manager') ?></span>
|
297 |
+
<?php endif; ?>
|
298 |
+
|
|
299 |
+
<?php if( $this->is_auto_updates && !$is_disable_updates ): ?>
|
300 |
+
<?php if( $is_auto_updates ): ?>
|
301 |
+
<span><a href="<?= wp_nonce_url($this->getActionUrl('disable-plugin-autoupdates', array('plugin_slug' => $actual_slug)), $this->getResultId() . '_' . $actual_slug) ?>"><?php _e('Disable auto-updates', 'webcraftic-updates-manager') ?></a></span>
|
302 |
+
<?php else: ?>
|
303 |
+
<span><a href="<?= wp_nonce_url($this->getActionUrl('enable-plugin-autoupdates', array('plugin_slug' => $actual_slug)), $this->getResultId() . '_' . $actual_slug) ?>"><?php _e('Enable auto-updates', 'webcraftic-updates-manager') ?></a></span>
|
304 |
+
<?php endif; ?>
|
305 |
+
<?php else: ?>
|
306 |
+
<?php if( $is_auto_updates ): ?>
|
307 |
+
<span style="text-decoration: underline;"><?php _e('Disable auto-updates', 'webcraftic-updates-manager') ?></span>
|
308 |
+
<?php else: ?>
|
309 |
+
<span style="text-decoration: underline;"><?php _e('Enable auto-updates', 'webcraftic-updates-manager') ?></span>
|
310 |
+
<?php endif; ?>
|
311 |
+
<?php endif; ?>
|
312 |
+
</div>
|
313 |
+
</td>
|
314 |
+
<td class="column-description desc">
|
315 |
+
<div class="plugin-description">
|
316 |
+
<p><?= esc_html($description) ?></p>
|
317 |
+
</div>
|
318 |
+
</td>
|
319 |
+
</tr>
|
320 |
+
<?php endforeach; ?>
|
321 |
+
</tbody>
|
322 |
+
</table>
|
323 |
+
</form>
|
324 |
+
<?php
|
325 |
+
}
|
326 |
+
}
|
327 |
+
|
328 |
+
FactoryPages324::register($wbcr_update_services_plugin, 'WbcrUpm_PluginsPage');
|
components/updates-manager/admin/pages/updates.php
CHANGED
@@ -5,13 +5,13 @@
|
|
5 |
*
|
6 |
* @since 1.0.0
|
7 |
*/
|
8 |
-
class WbcrUpm_UpdatesPage extends
|
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
|
@@ -124,6 +124,18 @@
|
|
124 |
'default' => false,
|
125 |
);
|
126 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
127 |
/*$options[] = array(
|
128 |
'type' => 'separator',
|
129 |
'cssClass' => 'factory-separator-dashed'
|
@@ -142,8 +154,8 @@
|
|
142 |
//'cssClass' => 'postbox'
|
143 |
);
|
144 |
|
145 |
-
return apply_filters('
|
146 |
}
|
147 |
}
|
148 |
|
149 |
-
|
5 |
*
|
6 |
* @since 1.0.0
|
7 |
*/
|
8 |
+
class WbcrUpm_UpdatesPage extends FactoryPages324_ImpressiveThemplate {
|
9 |
|
10 |
/**
|
11 |
* The id of the page in the admin menu.
|
12 |
*
|
13 |
* Mainly used to navigate between pages.
|
14 |
+
* @see FactoryPages324_AdminPage
|
15 |
*
|
16 |
* @since 1.0.0
|
17 |
* @var string
|
124 |
'default' => false,
|
125 |
);
|
126 |
|
127 |
+
$options[] = array(
|
128 |
+
'type' => 'checkbox',
|
129 |
+
'way' => 'buttons',
|
130 |
+
'name' => 'updates_nags_only_for_admin',
|
131 |
+
'title' => __('Updates nags only for Admin', 'webcraftic-updates-manager'),
|
132 |
+
'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
|
133 |
+
'hint' => __('This plugin allows you to hide the update WordPress reminder from all users that are not assumed Administrators (cannot upgrade plugins).
|
134 |
+
|
135 |
+
If you have multiple users then this means those who are not admins don’t need to see the message. Useful for CMS based sites, so the client doesn’t see the notice.', 'webcraftic-updates-manager'),
|
136 |
+
'default' => false,
|
137 |
+
);
|
138 |
+
|
139 |
/*$options[] = array(
|
140 |
'type' => 'separator',
|
141 |
'cssClass' => 'factory-separator-dashed'
|
154 |
//'cssClass' => 'postbox'
|
155 |
);
|
156 |
|
157 |
+
return apply_filters('wbcr_upm_updates_form_options', $formOptions);
|
158 |
}
|
159 |
}
|
160 |
|
161 |
+
FactoryPages324::register($wbcr_update_services_plugin, 'WbcrUpm_UpdatesPage');
|
components/updates-manager/includes/classes/class.configurate-updates.php
CHANGED
@@ -8,31 +8,42 @@
|
|
8 |
*/
|
9 |
class WbcrUpm_ConfigUpdates extends WbcrFactoryClearfy_Configurate {
|
10 |
|
|
|
11 |
public function registerActionsAndFilters()
|
12 |
{
|
13 |
/**
|
14 |
* Plugin updates
|
15 |
*/
|
|
|
16 |
|
17 |
switch( $this->getOption('plugin_updates') ) {
|
18 |
case 'disable_plugin_updates':
|
19 |
-
|
|
|
|
|
20 |
break;
|
21 |
case 'enable_plugin_auto_updates':
|
22 |
-
add_filter('auto_update_plugin', '
|
23 |
break;
|
24 |
}
|
25 |
|
|
|
|
|
|
|
|
|
|
|
26 |
/**
|
27 |
* Theme updates
|
28 |
*/
|
29 |
|
30 |
switch( $this->getOption('theme_updates') ) {
|
31 |
case 'disable_theme_updates':
|
32 |
-
|
|
|
|
|
33 |
break;
|
34 |
case 'enable_theme_auto_updates':
|
35 |
-
add_filter('
|
36 |
break;
|
37 |
}
|
38 |
|
@@ -71,26 +82,115 @@
|
|
71 |
/**
|
72 |
* disable wp default translation update
|
73 |
*/
|
74 |
-
|
75 |
if( $this->getOption('enable_update_vcs') ) {
|
76 |
add_filter('automatic_updates_is_vcs_checkout', '__return_false', 1);
|
77 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
78 |
}
|
79 |
|
|
|
80 |
public function disableAllCoreUpdates()
|
81 |
{
|
82 |
add_action('admin_init', array($this, 'adminInitForCore'));
|
83 |
|
84 |
-
/*
|
85 |
-
* Disable Core Updates
|
86 |
-
* 2.8 to 3.0
|
87 |
-
*/
|
88 |
-
add_filter('pre_transient_update_core', array($this, 'lastCheckedNow'));
|
89 |
-
/*
|
90 |
-
* 3.0
|
91 |
-
*/
|
92 |
-
add_filter('pre_site_transient_update_core', array($this, 'lastCheckedNow'));
|
93 |
-
|
94 |
/*
|
95 |
* Disable All Automatic Updates
|
96 |
* 3.7+
|
@@ -109,104 +209,6 @@
|
|
109 |
add_filter('automatic_updates_is_vcs_checkout', '__return_true');
|
110 |
}
|
111 |
|
112 |
-
public function disableAllPluginUpdates()
|
113 |
-
{
|
114 |
-
add_action('admin_init', array($this, 'adminInitForPlugins'));
|
115 |
-
|
116 |
-
/*
|
117 |
-
* Disable Plugin Updates
|
118 |
-
* 2.8 to 3.0
|
119 |
-
*/
|
120 |
-
add_action('pre_transient_update_plugins', array($this, 'lastCheckedNow'));
|
121 |
-
/*
|
122 |
-
* 3.0
|
123 |
-
*/
|
124 |
-
add_filter('pre_site_transient_update_plugins', array($this, 'lastCheckedNow'));
|
125 |
-
|
126 |
-
/*
|
127 |
-
* Disable All Automatic Updates
|
128 |
-
* 3.7+
|
129 |
-
*
|
130 |
-
* @author sLa NGjI's @ slangji.wordpress.com
|
131 |
-
*/
|
132 |
-
add_filter('auto_update_plugin', '__return_false');
|
133 |
-
}
|
134 |
-
|
135 |
-
public function disableAllThemesUpdates()
|
136 |
-
{
|
137 |
-
add_action('admin_init', array($this, 'adminInitForThemes'));
|
138 |
-
|
139 |
-
/*
|
140 |
-
* Disable Theme Updates
|
141 |
-
* 2.8 to 3.0
|
142 |
-
*/
|
143 |
-
add_filter('pre_transient_update_themes', array($this, 'lastCheckedNow'));
|
144 |
-
/*
|
145 |
-
* 3.0
|
146 |
-
*/
|
147 |
-
add_filter('pre_site_transient_update_themes', array($this, 'lastCheckedNow'));
|
148 |
-
|
149 |
-
/*
|
150 |
-
* Disable All Automatic Updates
|
151 |
-
* 3.7+
|
152 |
-
*
|
153 |
-
* @author sLa NGjI's @ slangji.wordpress.com
|
154 |
-
*/
|
155 |
-
add_filter('auto_update_theme', '__return_false');
|
156 |
-
}
|
157 |
-
|
158 |
-
public function disableAllTranslationUpdates()
|
159 |
-
{
|
160 |
-
/*
|
161 |
-
* Disable All Automatic Updates
|
162 |
-
* 3.7+
|
163 |
-
*
|
164 |
-
* @author sLa NGjI's @ slangji.wordpress.com
|
165 |
-
*/
|
166 |
-
add_filter('auto_update_translation', '__return_false');
|
167 |
-
|
168 |
-
/*
|
169 |
-
* Disable Theme Translations
|
170 |
-
* 2.8 to 3.0
|
171 |
-
*/
|
172 |
-
add_filter('transient_update_themes', array($this, 'removeTranslations'));
|
173 |
-
/*
|
174 |
-
* 3.0
|
175 |
-
*/
|
176 |
-
add_filter('site_transient_update_themes', array($this, 'removeTranslations'));
|
177 |
-
|
178 |
-
/*
|
179 |
-
* Disable Plugin Translations
|
180 |
-
* 2.8 to 3.0
|
181 |
-
*/
|
182 |
-
add_action('transient_update_plugins', array($this, 'removeTranslations'));
|
183 |
-
/*
|
184 |
-
* 3.0
|
185 |
-
*/
|
186 |
-
add_filter('site_transient_update_plugins', array($this, 'removeTranslations'));
|
187 |
-
|
188 |
-
/*
|
189 |
-
* Disable Core Translations
|
190 |
-
* 2.8 to 3.0
|
191 |
-
*/
|
192 |
-
add_filter('transient_update_core', array($this, 'removeTranslations'));
|
193 |
-
/*
|
194 |
-
* 3.0
|
195 |
-
*/
|
196 |
-
add_filter('site_transient_update_core', array($this, 'removeTranslations'));
|
197 |
-
}
|
198 |
-
|
199 |
-
public function removeTranslations($transient)
|
200 |
-
{
|
201 |
-
|
202 |
-
if( is_object($transient) && isset($transient->translations) ) {
|
203 |
-
$transient->translations = array();
|
204 |
-
}
|
205 |
-
|
206 |
-
return $transient;
|
207 |
-
}
|
208 |
-
|
209 |
-
|
210 |
/**
|
211 |
* Initialize and load the plugin stuff
|
212 |
*
|
@@ -215,38 +217,12 @@
|
|
215 |
*/
|
216 |
function adminInitForPlugins()
|
217 |
{
|
218 |
-
/*
|
219 |
-
* Disable Plugin Updates
|
220 |
-
* 2.8 to 3.0
|
221 |
-
*/
|
222 |
-
remove_action('load-plugins.php', 'wp_update_plugins');
|
223 |
-
remove_action('load-update.php', 'wp_update_plugins');
|
224 |
-
remove_action('admin_init', '_maybe_update_plugins');
|
225 |
-
remove_action('wp_update_plugins', 'wp_update_plugins');
|
226 |
-
wp_clear_scheduled_hook('wp_update_plugins');
|
227 |
-
|
228 |
-
/*
|
229 |
-
* 3.0
|
230 |
-
*/
|
231 |
remove_action('load-update-core.php', 'wp_update_plugins');
|
232 |
wp_clear_scheduled_hook('wp_update_plugins');
|
233 |
}
|
234 |
|
235 |
function adminInitForThemes()
|
236 |
{
|
237 |
-
/*
|
238 |
-
* Disable Theme Updates
|
239 |
-
* 2.8 to 3.0
|
240 |
-
*/
|
241 |
-
remove_action('load-themes.php', 'wp_update_themes');
|
242 |
-
remove_action('load-update.php', 'wp_update_themes');
|
243 |
-
remove_action('admin_init', '_maybe_update_themes');
|
244 |
-
remove_action('wp_update_themes', 'wp_update_themes');
|
245 |
-
wp_clear_scheduled_hook('wp_update_themes');
|
246 |
-
|
247 |
-
/*
|
248 |
-
* 3.0
|
249 |
-
*/
|
250 |
remove_action('load-update-core.php', 'wp_update_themes');
|
251 |
wp_clear_scheduled_hook('wp_update_themes');
|
252 |
}
|
@@ -259,22 +235,6 @@
|
|
259 |
*/
|
260 |
function adminInitForCore()
|
261 |
{
|
262 |
-
/*
|
263 |
-
* Disable Core Updates
|
264 |
-
* 2.8 to 3.0
|
265 |
-
*/
|
266 |
-
remove_action('wp_version_check', 'wp_version_check');
|
267 |
-
remove_action('admin_init', '_maybe_update_core');
|
268 |
-
wp_clear_scheduled_hook('wp_version_check');
|
269 |
-
|
270 |
-
/*
|
271 |
-
* 3.0
|
272 |
-
*/
|
273 |
-
wp_clear_scheduled_hook('wp_version_check');
|
274 |
-
|
275 |
-
/*
|
276 |
-
* 3.7+
|
277 |
-
*/
|
278 |
remove_action('wp_maybe_auto_update', 'wp_maybe_auto_update');
|
279 |
remove_action('admin_init', 'wp_maybe_auto_update');
|
280 |
remove_action('admin_init', 'wp_auto_update_core');
|
8 |
*/
|
9 |
class WbcrUpm_ConfigUpdates extends WbcrFactoryClearfy_Configurate {
|
10 |
|
11 |
+
|
12 |
public function registerActionsAndFilters()
|
13 |
{
|
14 |
/**
|
15 |
* Plugin updates
|
16 |
*/
|
17 |
+
$plugins_update = $this->getOption('plugin_updates');
|
18 |
|
19 |
switch( $this->getOption('plugin_updates') ) {
|
20 |
case 'disable_plugin_updates':
|
21 |
+
add_filter('site_transient_update_plugins', '__return_false', 50);
|
22 |
+
add_action('admin_init', array($this, 'adminInitForPlugins'));
|
23 |
+
add_filter('auto_update_plugin', '__return_false');
|
24 |
break;
|
25 |
case 'enable_plugin_auto_updates':
|
26 |
+
add_filter('auto_update_plugin', array($this, 'pluginsAutoUpdate'), 50, 2);
|
27 |
break;
|
28 |
}
|
29 |
|
30 |
+
if( $plugins_update != 'disable_plugin_updates' ) {
|
31 |
+
add_filter('site_transient_update_plugins', array($this, 'disablePluginNotifications'), 50);
|
32 |
+
add_filter('http_request_args', array($this, 'httpRequestArgsRemovePlugins'), 5, 2);
|
33 |
+
}
|
34 |
+
|
35 |
/**
|
36 |
* Theme updates
|
37 |
*/
|
38 |
|
39 |
switch( $this->getOption('theme_updates') ) {
|
40 |
case 'disable_theme_updates':
|
41 |
+
add_filter('site_transient_update_themes', '__return_false', 50);
|
42 |
+
add_action('admin_init', array($this, 'adminInitForThemes'));
|
43 |
+
add_filter('auto_update_theme', '__return_false');
|
44 |
break;
|
45 |
case 'enable_theme_auto_updates':
|
46 |
+
add_filter('auto_update_theme', '__return_true', 1);
|
47 |
break;
|
48 |
}
|
49 |
|
82 |
/**
|
83 |
* disable wp default translation update
|
84 |
*/
|
|
|
85 |
if( $this->getOption('enable_update_vcs') ) {
|
86 |
add_filter('automatic_updates_is_vcs_checkout', '__return_false', 1);
|
87 |
}
|
88 |
+
|
89 |
+
/**
|
90 |
+
* disable updates nags for all users except admin
|
91 |
+
*/
|
92 |
+
if( $this->getOption('updates_nags_only_for_admin') && !current_user_can('update_core') ) {
|
93 |
+
remove_action('admin_notices', 'update_nag', 3);
|
94 |
+
}
|
95 |
+
}
|
96 |
+
|
97 |
+
/**
|
98 |
+
* Enables plugin automatic updates on an individual basis.
|
99 |
+
*
|
100 |
+
* @param bool $update Whether the item has automatic updates enabled
|
101 |
+
* @param object $item Object holding the asset to be updated
|
102 |
+
* @return bool True of automatic updates enabled, false if not
|
103 |
+
*/
|
104 |
+
public function pluginsAutoUpdate($update, $item)
|
105 |
+
{
|
106 |
+
$filters = get_option($this->plugin->pluginName . '_plugins_update_filters');
|
107 |
+
|
108 |
+
$slug_parts = explode('/', $item->plugin);
|
109 |
+
$actual_slug = array_shift($slug_parts);
|
110 |
+
|
111 |
+
if( !empty($filters) ) {
|
112 |
+
if( isset($filters['disable_auto_updates']) && isset($filters['disable_auto_updates'][$actual_slug]) ) {
|
113 |
+
return false;
|
114 |
+
}
|
115 |
+
|
116 |
+
if( isset($filters['disable_updates']) && isset($filters['disable_updates'][$actual_slug]) ) {
|
117 |
+
return false;
|
118 |
+
}
|
119 |
+
}
|
120 |
+
|
121 |
+
return true;
|
122 |
+
}
|
123 |
+
|
124 |
+
/**
|
125 |
+
* Disables plugin updates on an individual basis.
|
126 |
+
*
|
127 |
+
* @param object $plugins Plugins that may have update notifications
|
128 |
+
* @return object Updated plugins list with updates
|
129 |
+
*/
|
130 |
+
public function disablePluginNotifications($plugins)
|
131 |
+
{
|
132 |
+
if( !isset($plugins->response) || empty($plugins->response) ) {
|
133 |
+
return $plugins;
|
134 |
+
}
|
135 |
+
|
136 |
+
$filters = $this->getOption('plugins_update_filters');
|
137 |
+
|
138 |
+
if( !empty($filters) && isset($filters['disable_updates']) ) {
|
139 |
+
foreach((array)$plugins->response as $slug => $plugin) {
|
140 |
+
$slug_parts = explode('/', $slug);
|
141 |
+
$actual_slug = array_shift($slug_parts);
|
142 |
+
if( isset($filters['disable_updates'][$actual_slug]) ) {
|
143 |
+
unset($plugins->response[$slug]);
|
144 |
+
}
|
145 |
+
}
|
146 |
+
}
|
147 |
+
|
148 |
+
return $plugins;
|
149 |
+
}
|
150 |
+
|
151 |
+
/**
|
152 |
+
* Disables theme and plugin http requests on an individual basis.
|
153 |
+
*
|
154 |
+
* @param array $r Request array
|
155 |
+
* @param string $url URL requested
|
156 |
+
* @return array Updated Request array
|
157 |
+
*/
|
158 |
+
public function httpRequestArgsRemovePlugins($r, $url)
|
159 |
+
{
|
160 |
+
if( 0 !== strpos($url, 'https://api.wordpress.org/plugins/update-check/1.1/') ) {
|
161 |
+
return $r;
|
162 |
+
}
|
163 |
+
|
164 |
+
if( isset($r['body']['plugins']) ) {
|
165 |
+
$r_plugins = json_decode($r['body']['plugins'], true);
|
166 |
+
$filters = get_option($this->plugin->pluginName . '_plugins_update_filters');
|
167 |
+
|
168 |
+
if( isset($r_plugins['plugins']) && !empty($r_plugins['plugins']) ) {
|
169 |
+
foreach($r_plugins['plugins'] as $slug => $plugin) {
|
170 |
+
$slug_parts = explode('/', $slug);
|
171 |
+
$actual_slug = array_shift($slug_parts);
|
172 |
+
|
173 |
+
if( isset($filters['disable_updates']) && isset($filters['disable_updates'][$actual_slug]) ) {
|
174 |
+
unset($r_plugins['plugins'][$slug]);
|
175 |
+
|
176 |
+
if( false !== $key = array_search($slug, $r_plugins['active']) ) {
|
177 |
+
unset($r_plugins['active'][$key]);
|
178 |
+
$r_plugins['active'] = array_values($r_plugins['active']);
|
179 |
+
}
|
180 |
+
}
|
181 |
+
}
|
182 |
+
}
|
183 |
+
$r['body']['plugins'] = json_encode($r_plugins);
|
184 |
+
}
|
185 |
+
|
186 |
+
return $r;
|
187 |
}
|
188 |
|
189 |
+
|
190 |
public function disableAllCoreUpdates()
|
191 |
{
|
192 |
add_action('admin_init', array($this, 'adminInitForCore'));
|
193 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
194 |
/*
|
195 |
* Disable All Automatic Updates
|
196 |
* 3.7+
|
209 |
add_filter('automatic_updates_is_vcs_checkout', '__return_true');
|
210 |
}
|
211 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
212 |
/**
|
213 |
* Initialize and load the plugin stuff
|
214 |
*
|
217 |
*/
|
218 |
function adminInitForPlugins()
|
219 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
220 |
remove_action('load-update-core.php', 'wp_update_plugins');
|
221 |
wp_clear_scheduled_hook('wp_update_plugins');
|
222 |
}
|
223 |
|
224 |
function adminInitForThemes()
|
225 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
226 |
remove_action('load-update-core.php', 'wp_update_themes');
|
227 |
wp_clear_scheduled_hook('wp_update_themes');
|
228 |
}
|
235 |
*/
|
236 |
function adminInitForCore()
|
237 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
238 |
remove_action('wp_maybe_auto_update', 'wp_maybe_auto_update');
|
239 |
remove_action('admin_init', 'wp_maybe_auto_update');
|
240 |
remove_action('admin_init', 'wp_auto_update_core');
|
components/updates-manager/languages/webcraftic-updates-manager-fr_FR.mo
CHANGED
Binary file
|
components/updates-manager/languages/webcraftic-updates-manager-fr_FR.po
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: clearfy\n"
|
4 |
-
"POT-Creation-Date:
|
5 |
-
"PO-Revision-Date:
|
6 |
"Last-Translator: alex.kovalevv@gmail.com <alex.kovalevv@gmail.com>\n"
|
7 |
"Language-Team: Alex Kovalev <alex.kovalevv@gmail.com>\n"
|
8 |
"Language: fr_FR\n"
|
@@ -18,102 +18,182 @@ msgstr ""
|
|
18 |
"X-Poedit-SearchPath-0: .\n"
|
19 |
"X-Poedit-SearchPathExcluded-0: libs\n"
|
20 |
|
21 |
-
#: admin/boot.php:
|
22 |
msgid "Disable plugin updates"
|
23 |
msgstr "Désactiver les mises à jour du plugin"
|
24 |
|
25 |
-
#: admin/boot.php:
|
26 |
msgid "Disable theme updates"
|
27 |
msgstr "Désactiver les mises à jour de thème"
|
28 |
|
29 |
-
#: admin/boot.php:
|
30 |
msgid "Disable Automatic Translation Updates"
|
31 |
msgstr "Désactiver les mises à jour automatiques de traduction"
|
32 |
|
33 |
-
#: admin/boot.php:
|
34 |
msgid "Disable wordPress core updates"
|
35 |
msgstr "Désactiver les mises à jour de base de WordPress"
|
36 |
|
37 |
-
#: admin/boot.php:
|
38 |
msgid "Enable updates for VCS Installations"
|
39 |
msgstr "Activer les mises à jour pour les installations VCS"
|
40 |
|
41 |
-
#: admin/boot.php:
|
42 |
-
msgid "
|
43 |
-
msgstr "
|
|
|
|
|
|
|
|
|
44 |
|
45 |
-
#: admin/boot.php:
|
46 |
msgid "Get ultimate plugin free"
|
47 |
msgstr "Obtenez le plugin ultime gratuitement"
|
48 |
|
49 |
-
#: admin/pages/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
msgid "Updates manager"
|
51 |
msgstr "Gestionnaire des mises à jour"
|
52 |
|
53 |
-
#: admin/pages/updates.php:
|
54 |
msgid "Updates"
|
55 |
msgstr "Mises à jour"
|
56 |
|
57 |
-
#: admin/pages/updates.php:
|
58 |
msgid "General"
|
59 |
msgstr "Général"
|
60 |
|
61 |
-
#: admin/pages/updates.php:
|
62 |
msgid "Plugin Updates"
|
63 |
msgstr "Mises à jour plugin"
|
64 |
|
65 |
-
#: admin/pages/updates.php:
|
66 |
msgid "Manual updates"
|
67 |
msgstr "Mise à jour manuelle"
|
68 |
|
69 |
-
#: admin/pages/updates.php:
|
70 |
msgid "Enable auto updates"
|
71 |
msgstr "Activer les mises à jour automatiques"
|
72 |
|
73 |
-
#: admin/pages/updates.php:
|
74 |
-
#: admin/pages/updates.php:98
|
75 |
-
msgid "Disable updates"
|
76 |
-
msgstr "Désactiver les mises à jour"
|
77 |
-
|
78 |
-
#: admin/pages/updates.php:65
|
79 |
msgid ""
|
80 |
"You can disable all plugin updates or choose manual or automatic update mode."
|
81 |
msgstr ""
|
82 |
"Vous pouvez désactiver toutes les mises à jour du plugin ou choisir le mode "
|
83 |
"de mise à jour manuelle ou automatique."
|
84 |
|
85 |
-
#: admin/pages/updates.php:
|
86 |
msgid "Theme Updates"
|
87 |
msgstr "Mises à jour thème"
|
88 |
|
89 |
-
#: admin/pages/updates.php:
|
90 |
msgid ""
|
91 |
"You can disable all themes updates or choose manual or automatic update mode."
|
92 |
msgstr ""
|
93 |
"Vous pouvez désactiver toutes les mises à jour de thèmes ou choisir le mode "
|
94 |
"de mise à jour manuel ou automatique."
|
95 |
|
96 |
-
#: admin/pages/updates.php:
|
97 |
msgid "WordPress Core Updates"
|
98 |
msgstr "Mises à jour de base de WordPress"
|
99 |
|
100 |
-
#: admin/pages/updates.php:
|
101 |
msgid "Disable auto updates"
|
102 |
msgstr "Désactiver les mises à jour automatiques"
|
103 |
|
104 |
-
#: admin/pages/updates.php:
|
105 |
msgid "Allow minor auto updates"
|
106 |
msgstr "Autoriser les mises à jour mineures"
|
107 |
|
108 |
-
#: admin/pages/updates.php:
|
109 |
msgid "Allow major auto updates"
|
110 |
msgstr "Autoriser les mises à jour automatiques majeures"
|
111 |
|
112 |
-
#: admin/pages/updates.php:
|
113 |
msgid "Allow development auto updates"
|
114 |
msgstr "Autoriser les mises à jour automatiques de développement"
|
115 |
|
116 |
-
#: admin/pages/updates.php:
|
117 |
msgid ""
|
118 |
"You can disable all core WordPress updates, or disable only automatic "
|
119 |
"updates. Also you can select the update mode. By default (minor)"
|
@@ -122,25 +202,25 @@ msgstr ""
|
|
122 |
"désactiver uniquement les mises à jour automatiques. Vous pouvez également "
|
123 |
"sélectionner le mode mise à jour. Par défaut (mineur)"
|
124 |
|
125 |
-
#: admin/pages/updates.php:
|
126 |
msgid "Major - automatically update to major releases (e.g., 4.1, 4.2, 4.3)."
|
127 |
msgstr ""
|
128 |
"Majeure: mise à jour automatique des versions majeures (par exemple, 4.1, "
|
129 |
"4.2, 4.3)."
|
130 |
|
131 |
-
#: admin/pages/updates.php:
|
132 |
msgid ""
|
133 |
"Minor - automatically update to minor releases (e.g., 4.1.1, 4.1.2, 4.1.3).."
|
134 |
msgstr ""
|
135 |
"Mineure - mise à jour automatique des versions mineures (par exemple, 4.1.1, "
|
136 |
"4.1.2, 4.1.3)."
|
137 |
|
138 |
-
#: admin/pages/updates.php:
|
139 |
msgid "Development - update automatically to Bleeding Edge releases."
|
140 |
msgstr ""
|
141 |
"Développement - mise à jour automatique vers les versions Bleeding Edge."
|
142 |
|
143 |
-
#: admin/pages/updates.php:
|
144 |
msgid ""
|
145 |
"Enable Automatic Updates even if a VCS folder (.git, .hg, .svn) was found in "
|
146 |
"the WordPress directory"
|
@@ -148,7 +228,7 @@ msgstr ""
|
|
148 |
"Activer les mises à jour automatiques même si un dossier VCF (.git, .hg, ."
|
149 |
"svn) a été trouvé dans le répertoire WordPress"
|
150 |
|
151 |
-
#:
|
152 |
msgid ""
|
153 |
"We found that you have the \"Clearfy - disable unused features\" plugin "
|
154 |
"installed, this plugin already has update manager functions, so you can "
|
@@ -159,6 +239,9 @@ msgstr ""
|
|
159 |
"de gestionnaire de mise à jour, vous pouvez donc désactiver le plugin "
|
160 |
"\"Gestionnaire de mise à jour\"!"
|
161 |
|
162 |
-
#:
|
163 |
msgid "Webcraftic Updates Manager"
|
164 |
msgstr "Gestionnaire de mises à jour Webcraft"
|
|
|
|
|
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: clearfy\n"
|
4 |
+
"POT-Creation-Date: 2018-01-22 00:12+0300\n"
|
5 |
+
"PO-Revision-Date: 2018-01-22 00:12+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: fr_FR\n"
|
18 |
"X-Poedit-SearchPath-0: .\n"
|
19 |
"X-Poedit-SearchPathExcluded-0: libs\n"
|
20 |
|
21 |
+
#: admin/boot.php:32
|
22 |
msgid "Disable plugin updates"
|
23 |
msgstr "Désactiver les mises à jour du plugin"
|
24 |
|
25 |
+
#: admin/boot.php:38
|
26 |
msgid "Disable theme updates"
|
27 |
msgstr "Désactiver les mises à jour de thème"
|
28 |
|
29 |
+
#: admin/boot.php:44 admin/pages/updates.php:87
|
30 |
msgid "Disable Automatic Translation Updates"
|
31 |
msgstr "Désactiver les mises à jour automatiques de traduction"
|
32 |
|
33 |
+
#: admin/boot.php:49
|
34 |
msgid "Disable wordPress core updates"
|
35 |
msgstr "Désactiver les mises à jour de base de WordPress"
|
36 |
|
37 |
+
#: admin/boot.php:55 admin/pages/updates.php:121
|
38 |
msgid "Enable updates for VCS Installations"
|
39 |
msgstr "Activer les mises à jour pour les installations VCS"
|
40 |
|
41 |
+
#: admin/boot.php:60
|
42 |
+
msgid "Plugin filters"
|
43 |
+
msgstr ""
|
44 |
+
|
45 |
+
#: admin/boot.php:72
|
46 |
+
msgid "One click disable all updates"
|
47 |
+
msgstr ""
|
48 |
|
49 |
+
#: admin/boot.php:84
|
50 |
msgid "Get ultimate plugin free"
|
51 |
msgstr "Obtenez le plugin ultime gratuitement"
|
52 |
|
53 |
+
#: admin/pages/advanced.php:29
|
54 |
+
msgid "Advanced"
|
55 |
+
msgstr ""
|
56 |
+
|
57 |
+
#: admin/pages/advanced.php:40
|
58 |
+
msgid "Please, wait 90 sec. to see the forced automatic update result."
|
59 |
+
msgstr ""
|
60 |
+
|
61 |
+
#: admin/pages/advanced.php:50
|
62 |
+
msgid "Force Automatic Updates"
|
63 |
+
msgstr ""
|
64 |
+
|
65 |
+
#: admin/pages/advanced.php:51
|
66 |
+
msgid ""
|
67 |
+
"This will attempt to force automatic updates. This is useful for debugging."
|
68 |
+
msgstr ""
|
69 |
+
|
70 |
+
#: admin/pages/advanced.php:52
|
71 |
+
msgid "Force update"
|
72 |
+
msgstr ""
|
73 |
+
|
74 |
+
#: admin/pages/plugins.php:33
|
75 |
+
msgid "Plugins"
|
76 |
+
msgstr ""
|
77 |
+
|
78 |
+
#: admin/pages/plugins.php:48
|
79 |
+
msgid "This page you can individually disable plugin updates and auto updates."
|
80 |
+
msgstr ""
|
81 |
+
|
82 |
+
#: admin/pages/plugins.php:51
|
83 |
+
msgid ""
|
84 |
+
"- To disable updates individually choose the “Manual or automatic plugin "
|
85 |
+
"updates” option then save settings and comeback to this page."
|
86 |
+
msgstr ""
|
87 |
+
|
88 |
+
#: admin/pages/plugins.php:55
|
89 |
+
msgid ""
|
90 |
+
"- To configure plugin auto updates individually, choose the “Enable auto "
|
91 |
+
"updates” option then save settings and comeback to this page."
|
92 |
+
msgstr ""
|
93 |
+
|
94 |
+
#: admin/pages/plugins.php:211
|
95 |
+
msgid "Bulk actions"
|
96 |
+
msgstr ""
|
97 |
+
|
98 |
+
#: admin/pages/plugins.php:212 admin/pages/plugins.php:287
|
99 |
+
#: admin/pages/plugins.php:292 admin/pages/updates.php:61
|
100 |
+
#: admin/pages/updates.php:76 admin/pages/updates.php:97
|
101 |
+
msgid "Disable updates"
|
102 |
+
msgstr "Désactiver les mises à jour"
|
103 |
+
|
104 |
+
#: admin/pages/plugins.php:213 admin/pages/plugins.php:289
|
105 |
+
msgid "Enable updates"
|
106 |
+
msgstr ""
|
107 |
+
|
108 |
+
#: admin/pages/plugins.php:214 admin/pages/plugins.php:299
|
109 |
+
#: admin/pages/plugins.php:305
|
110 |
+
msgid "Enable auto-updates"
|
111 |
+
msgstr ""
|
112 |
+
|
113 |
+
#: admin/pages/plugins.php:215 admin/pages/plugins.php:297
|
114 |
+
#: admin/pages/plugins.php:303
|
115 |
+
msgid "Disable auto-updates"
|
116 |
+
msgstr ""
|
117 |
+
|
118 |
+
#: admin/pages/plugins.php:217
|
119 |
+
msgid "Apply"
|
120 |
+
msgstr ""
|
121 |
+
|
122 |
+
#: admin/pages/plugins.php:224
|
123 |
+
msgid "Plugin"
|
124 |
+
msgstr ""
|
125 |
+
|
126 |
+
#: admin/pages/plugins.php:226
|
127 |
+
msgid "Description"
|
128 |
+
msgstr ""
|
129 |
+
|
130 |
+
#: admin/pages/plugins.php:273
|
131 |
+
msgid "Select"
|
132 |
+
msgstr ""
|
133 |
+
|
134 |
+
#: admin/pages/updates.php:25
|
135 |
msgid "Updates manager"
|
136 |
msgstr "Gestionnaire des mises à jour"
|
137 |
|
138 |
+
#: admin/pages/updates.php:39
|
139 |
msgid "Updates"
|
140 |
msgstr "Mises à jour"
|
141 |
|
142 |
+
#: admin/pages/updates.php:40
|
143 |
msgid "General"
|
144 |
msgstr "Général"
|
145 |
|
146 |
+
#: admin/pages/updates.php:57
|
147 |
msgid "Plugin Updates"
|
148 |
msgstr "Mises à jour plugin"
|
149 |
|
150 |
+
#: admin/pages/updates.php:59 admin/pages/updates.php:74
|
151 |
msgid "Manual updates"
|
152 |
msgstr "Mise à jour manuelle"
|
153 |
|
154 |
+
#: admin/pages/updates.php:60 admin/pages/updates.php:75
|
155 |
msgid "Enable auto updates"
|
156 |
msgstr "Activer les mises à jour automatiques"
|
157 |
|
158 |
+
#: admin/pages/updates.php:64
|
|
|
|
|
|
|
|
|
|
|
159 |
msgid ""
|
160 |
"You can disable all plugin updates or choose manual or automatic update mode."
|
161 |
msgstr ""
|
162 |
"Vous pouvez désactiver toutes les mises à jour du plugin ou choisir le mode "
|
163 |
"de mise à jour manuelle ou automatique."
|
164 |
|
165 |
+
#: admin/pages/updates.php:72
|
166 |
msgid "Theme Updates"
|
167 |
msgstr "Mises à jour thème"
|
168 |
|
169 |
+
#: admin/pages/updates.php:79
|
170 |
msgid ""
|
171 |
"You can disable all themes updates or choose manual or automatic update mode."
|
172 |
msgstr ""
|
173 |
"Vous pouvez désactiver toutes les mises à jour de thèmes ou choisir le mode "
|
174 |
"de mise à jour manuel ou automatique."
|
175 |
|
176 |
+
#: admin/pages/updates.php:95
|
177 |
msgid "WordPress Core Updates"
|
178 |
msgstr "Mises à jour de base de WordPress"
|
179 |
|
180 |
+
#: admin/pages/updates.php:98
|
181 |
msgid "Disable auto updates"
|
182 |
msgstr "Désactiver les mises à jour automatiques"
|
183 |
|
184 |
+
#: admin/pages/updates.php:101
|
185 |
msgid "Allow minor auto updates"
|
186 |
msgstr "Autoriser les mises à jour mineures"
|
187 |
|
188 |
+
#: admin/pages/updates.php:105
|
189 |
msgid "Allow major auto updates"
|
190 |
msgstr "Autoriser les mises à jour automatiques majeures"
|
191 |
|
192 |
+
#: admin/pages/updates.php:109
|
193 |
msgid "Allow development auto updates"
|
194 |
msgstr "Autoriser les mises à jour automatiques de développement"
|
195 |
|
196 |
+
#: admin/pages/updates.php:113
|
197 |
msgid ""
|
198 |
"You can disable all core WordPress updates, or disable only automatic "
|
199 |
"updates. Also you can select the update mode. By default (minor)"
|
202 |
"désactiver uniquement les mises à jour automatiques. Vous pouvez également "
|
203 |
"sélectionner le mode mise à jour. Par défaut (mineur)"
|
204 |
|
205 |
+
#: admin/pages/updates.php:113
|
206 |
msgid "Major - automatically update to major releases (e.g., 4.1, 4.2, 4.3)."
|
207 |
msgstr ""
|
208 |
"Majeure: mise à jour automatique des versions majeures (par exemple, 4.1, "
|
209 |
"4.2, 4.3)."
|
210 |
|
211 |
+
#: admin/pages/updates.php:113
|
212 |
msgid ""
|
213 |
"Minor - automatically update to minor releases (e.g., 4.1.1, 4.1.2, 4.1.3).."
|
214 |
msgstr ""
|
215 |
"Mineure - mise à jour automatique des versions mineures (par exemple, 4.1.1, "
|
216 |
"4.1.2, 4.1.3)."
|
217 |
|
218 |
+
#: admin/pages/updates.php:113
|
219 |
msgid "Development - update automatically to Bleeding Edge releases."
|
220 |
msgstr ""
|
221 |
"Développement - mise à jour automatique vers les versions Bleeding Edge."
|
222 |
|
223 |
+
#: admin/pages/updates.php:123
|
224 |
msgid ""
|
225 |
"Enable Automatic Updates even if a VCS folder (.git, .hg, .svn) was found in "
|
226 |
"the WordPress directory"
|
228 |
"Activer les mises à jour automatiques même si un dossier VCF (.git, .hg, ."
|
229 |
"svn) a été trouvé dans le répertoire WordPress"
|
230 |
|
231 |
+
#: webcraftic-updates-manager.php:17
|
232 |
msgid ""
|
233 |
"We found that you have the \"Clearfy - disable unused features\" plugin "
|
234 |
"installed, this plugin already has update manager functions, so you can "
|
239 |
"de gestionnaire de mise à jour, vous pouvez donc désactiver le plugin "
|
240 |
"\"Gestionnaire de mise à jour\"!"
|
241 |
|
242 |
+
#: webcraftic-updates-manager.php:82
|
243 |
msgid "Webcraftic Updates Manager"
|
244 |
msgstr "Gestionnaire de mises à jour Webcraft"
|
245 |
+
|
246 |
+
#~ msgid "Disable all updates"
|
247 |
+
#~ msgstr "Désactiver toutes les mises à jour"
|
components/updates-manager/languages/webcraftic-updates-manager-it-IT.mo
ADDED
Binary file
|
components/updates-manager/languages/webcraftic-updates-manager-it-IT.po
ADDED
@@ -0,0 +1,184 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: clearfy\n"
|
4 |
+
"POT-Creation-Date: 2018-01-14 20:56+0300\n"
|
5 |
+
"PO-Revision-Date: 2018-01-14 20:57+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: it\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/boot.php:21
|
22 |
+
msgid "Disable plugin updates"
|
23 |
+
msgstr ""
|
24 |
+
|
25 |
+
#: admin/boot.php:27
|
26 |
+
msgid "Disable theme updates"
|
27 |
+
msgstr ""
|
28 |
+
|
29 |
+
#: admin/boot.php:33 admin/pages/themes.php:76 admin/pages/updates.php:87
|
30 |
+
msgid "Disable Automatic Translation Updates"
|
31 |
+
msgstr ""
|
32 |
+
|
33 |
+
#: admin/boot.php:38
|
34 |
+
msgid "Disable wordPress core updates"
|
35 |
+
msgstr ""
|
36 |
+
|
37 |
+
#: admin/boot.php:44 admin/pages/themes.php:110 admin/pages/updates.php:121
|
38 |
+
msgid "Enable updates for VCS Installations"
|
39 |
+
msgstr ""
|
40 |
+
|
41 |
+
#: admin/boot.php:56
|
42 |
+
msgid "Disable all updates"
|
43 |
+
msgstr ""
|
44 |
+
|
45 |
+
#: admin/boot.php:68
|
46 |
+
msgid "Get ultimate plugin free"
|
47 |
+
msgstr ""
|
48 |
+
|
49 |
+
#: admin/pages/plugins.php:29
|
50 |
+
msgid "Plugins"
|
51 |
+
msgstr ""
|
52 |
+
|
53 |
+
#: admin/pages/plugins.php:61
|
54 |
+
msgid "Apply"
|
55 |
+
msgstr ""
|
56 |
+
|
57 |
+
#: admin/pages/plugins.php:68
|
58 |
+
msgid "Plugin"
|
59 |
+
msgstr ""
|
60 |
+
|
61 |
+
#: admin/pages/plugins.php:70
|
62 |
+
msgid "Description"
|
63 |
+
msgstr ""
|
64 |
+
|
65 |
+
#: admin/pages/plugins.php:107
|
66 |
+
msgid "Select"
|
67 |
+
msgstr ""
|
68 |
+
|
69 |
+
#: admin/pages/plugins.php:119 admin/pages/themes.php:50
|
70 |
+
#: admin/pages/themes.php:65 admin/pages/themes.php:86
|
71 |
+
#: admin/pages/updates.php:61 admin/pages/updates.php:76
|
72 |
+
#: admin/pages/updates.php:97
|
73 |
+
msgid "Disable updates"
|
74 |
+
msgstr ""
|
75 |
+
|
76 |
+
#: admin/pages/plugins.php:121
|
77 |
+
msgid "Enable auto-updates"
|
78 |
+
msgstr ""
|
79 |
+
|
80 |
+
#: admin/pages/plugins.php:123
|
81 |
+
msgid "Enable manual updates"
|
82 |
+
msgstr ""
|
83 |
+
|
84 |
+
#: admin/pages/themes.php:27
|
85 |
+
msgid "Themes"
|
86 |
+
msgstr ""
|
87 |
+
|
88 |
+
#: admin/pages/themes.php:46 admin/pages/updates.php:57
|
89 |
+
msgid "Plugin Updates"
|
90 |
+
msgstr ""
|
91 |
+
|
92 |
+
#: admin/pages/themes.php:48 admin/pages/themes.php:63
|
93 |
+
#: admin/pages/updates.php:59 admin/pages/updates.php:74
|
94 |
+
msgid "Manual updates"
|
95 |
+
msgstr ""
|
96 |
+
|
97 |
+
#: admin/pages/themes.php:49 admin/pages/themes.php:64
|
98 |
+
#: admin/pages/updates.php:60 admin/pages/updates.php:75
|
99 |
+
msgid "Enable auto updates"
|
100 |
+
msgstr ""
|
101 |
+
|
102 |
+
#: admin/pages/themes.php:53 admin/pages/updates.php:64
|
103 |
+
msgid ""
|
104 |
+
"You can disable all plugin updates or choose manual or automatic update mode."
|
105 |
+
msgstr ""
|
106 |
+
"Puoi disattivare tutti gli aggiornamenti dei plugins o scegliere le modalità "
|
107 |
+
"di aggiornamento automatico e manuale."
|
108 |
+
|
109 |
+
#: admin/pages/themes.php:61 admin/pages/updates.php:72
|
110 |
+
msgid "Theme Updates"
|
111 |
+
msgstr ""
|
112 |
+
|
113 |
+
#: admin/pages/themes.php:68 admin/pages/updates.php:79
|
114 |
+
msgid ""
|
115 |
+
"You can disable all themes updates or choose manual or automatic update mode."
|
116 |
+
msgstr ""
|
117 |
+
|
118 |
+
#: admin/pages/themes.php:84 admin/pages/updates.php:95
|
119 |
+
msgid "WordPress Core Updates"
|
120 |
+
msgstr ""
|
121 |
+
|
122 |
+
#: admin/pages/themes.php:87 admin/pages/updates.php:98
|
123 |
+
msgid "Disable auto updates"
|
124 |
+
msgstr ""
|
125 |
+
|
126 |
+
#: admin/pages/themes.php:90 admin/pages/updates.php:101
|
127 |
+
msgid "Allow minor auto updates"
|
128 |
+
msgstr ""
|
129 |
+
|
130 |
+
#: admin/pages/themes.php:94 admin/pages/updates.php:105
|
131 |
+
msgid "Allow major auto updates"
|
132 |
+
msgstr ""
|
133 |
+
|
134 |
+
#: admin/pages/themes.php:98 admin/pages/updates.php:109
|
135 |
+
msgid "Allow development auto updates"
|
136 |
+
msgstr ""
|
137 |
+
|
138 |
+
#: admin/pages/themes.php:102 admin/pages/updates.php:113
|
139 |
+
msgid ""
|
140 |
+
"You can disable all core WordPress updates, or disable only automatic "
|
141 |
+
"updates. Also you can select the update mode. By default (minor)"
|
142 |
+
msgstr ""
|
143 |
+
|
144 |
+
#: admin/pages/themes.php:102 admin/pages/updates.php:113
|
145 |
+
msgid "Major - automatically update to major releases (e.g., 4.1, 4.2, 4.3)."
|
146 |
+
msgstr ""
|
147 |
+
|
148 |
+
#: admin/pages/themes.php:102 admin/pages/updates.php:113
|
149 |
+
msgid ""
|
150 |
+
"Minor - automatically update to minor releases (e.g., 4.1.1, 4.1.2, 4.1.3).."
|
151 |
+
msgstr ""
|
152 |
+
|
153 |
+
#: admin/pages/themes.php:102 admin/pages/updates.php:113
|
154 |
+
msgid "Development - update automatically to Bleeding Edge releases."
|
155 |
+
msgstr ""
|
156 |
+
|
157 |
+
#: admin/pages/themes.php:112 admin/pages/updates.php:123
|
158 |
+
msgid ""
|
159 |
+
"Enable Automatic Updates even if a VCS folder (.git, .hg, .svn) was found in "
|
160 |
+
"the WordPress directory"
|
161 |
+
msgstr ""
|
162 |
+
|
163 |
+
#: admin/pages/updates.php:25
|
164 |
+
msgid "Updates manager"
|
165 |
+
msgstr ""
|
166 |
+
|
167 |
+
#: admin/pages/updates.php:39
|
168 |
+
msgid "Updates"
|
169 |
+
msgstr ""
|
170 |
+
|
171 |
+
#: admin/pages/updates.php:40
|
172 |
+
msgid "General"
|
173 |
+
msgstr ""
|
174 |
+
|
175 |
+
#: webcraftic-updates-manager.php:17
|
176 |
+
msgid ""
|
177 |
+
"We found that you have the \"Clearfy - disable unused features\" plugin "
|
178 |
+
"installed, this plugin already has update manager functions, so you can "
|
179 |
+
"deactivate plugin \"Update manager\"!"
|
180 |
+
msgstr ""
|
181 |
+
|
182 |
+
#: webcraftic-updates-manager.php:82
|
183 |
+
msgid "Webcraftic Updates Manager"
|
184 |
+
msgstr ""
|
components/updates-manager/languages/webcraftic-updates-manager-ru_RU.mo
CHANGED
Binary file
|
components/updates-manager/languages/webcraftic-updates-manager-ru_RU.po
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: clearfy\n"
|
4 |
-
"POT-Creation-Date:
|
5 |
-
"PO-Revision-Date:
|
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"
|
@@ -18,102 +18,195 @@ msgstr ""
|
|
18 |
"X-Poedit-SearchPath-0: .\n"
|
19 |
"X-Poedit-SearchPathExcluded-0: libs\n"
|
20 |
|
21 |
-
#: admin/boot.php:
|
22 |
msgid "Disable plugin updates"
|
23 |
msgstr "Отключить обновления плагинов"
|
24 |
|
25 |
-
#: admin/boot.php:
|
26 |
msgid "Disable theme updates"
|
27 |
msgstr "Отключить обновления тем"
|
28 |
|
29 |
-
#: admin/boot.php:
|
30 |
msgid "Disable Automatic Translation Updates"
|
31 |
msgstr "Отключить автоматические обновления переводов"
|
32 |
|
33 |
-
#: admin/boot.php:
|
34 |
msgid "Disable wordPress core updates"
|
35 |
msgstr "Отключить обновления ядра Wordpress"
|
36 |
|
37 |
-
#: admin/boot.php:
|
38 |
msgid "Enable updates for VCS Installations"
|
39 |
msgstr "Включить обновления для установок VCS"
|
40 |
|
41 |
-
#: admin/boot.php:
|
42 |
-
msgid "
|
43 |
-
msgstr "
|
44 |
|
45 |
-
#: admin/boot.php:
|
|
|
|
|
|
|
|
|
46 |
msgid "Get ultimate plugin free"
|
47 |
msgstr "Получите полную версию плагина бесплатно"
|
48 |
|
49 |
-
#: admin/pages/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
msgid "Updates manager"
|
51 |
msgstr "Менеджер обновлений"
|
52 |
|
53 |
-
#: admin/pages/updates.php:
|
54 |
msgid "Updates"
|
55 |
msgstr "Обновления"
|
56 |
|
57 |
-
#: admin/pages/updates.php:
|
58 |
msgid "General"
|
59 |
msgstr "Основные"
|
60 |
|
61 |
-
#: admin/pages/updates.php:
|
62 |
msgid "Plugin Updates"
|
63 |
msgstr "Обновления плагина"
|
64 |
|
65 |
-
#: admin/pages/updates.php:
|
66 |
msgid "Manual updates"
|
67 |
msgstr "Ручные"
|
68 |
|
69 |
-
#: admin/pages/updates.php:
|
70 |
msgid "Enable auto updates"
|
71 |
msgstr "Автоматические"
|
72 |
|
73 |
-
#: admin/pages/updates.php:
|
74 |
-
#: admin/pages/updates.php:98
|
75 |
-
msgid "Disable updates"
|
76 |
-
msgstr "Отключить все"
|
77 |
-
|
78 |
-
#: admin/pages/updates.php:65
|
79 |
msgid ""
|
80 |
"You can disable all plugin updates or choose manual or automatic update mode."
|
81 |
msgstr ""
|
82 |
"Вы можете отключить все обновления плагинов или выбрать режим ручного или "
|
83 |
"автоматического обновления."
|
84 |
|
85 |
-
#: admin/pages/updates.php:
|
86 |
msgid "Theme Updates"
|
87 |
msgstr "Обновления тем"
|
88 |
|
89 |
-
#: admin/pages/updates.php:
|
90 |
msgid ""
|
91 |
"You can disable all themes updates or choose manual or automatic update mode."
|
92 |
msgstr ""
|
93 |
"Вы можете отключить все обновления тем или выбрать режим ручного или "
|
94 |
"автоматического обновления."
|
95 |
|
96 |
-
#: admin/pages/updates.php:
|
97 |
msgid "WordPress Core Updates"
|
98 |
msgstr "Базовые обновления Wordpress"
|
99 |
|
100 |
-
#: admin/pages/updates.php:
|
101 |
msgid "Disable auto updates"
|
102 |
msgstr "Отключить автоматические обновления"
|
103 |
|
104 |
-
#: admin/pages/updates.php:
|
105 |
msgid "Allow minor auto updates"
|
106 |
msgstr "Разрешить незначительные автоматические обновления"
|
107 |
|
108 |
-
#: admin/pages/updates.php:
|
109 |
msgid "Allow major auto updates"
|
110 |
msgstr "Разрешить основные автоматические обновления"
|
111 |
|
112 |
-
#: admin/pages/updates.php:
|
113 |
msgid "Allow development auto updates"
|
114 |
msgstr "Разрешить разрабатываемые автоматические обновления"
|
115 |
|
116 |
-
#: admin/pages/updates.php:
|
117 |
msgid ""
|
118 |
"You can disable all core WordPress updates, or disable only automatic "
|
119 |
"updates. Also you can select the update mode. By default (minor)"
|
@@ -122,23 +215,23 @@ msgstr ""
|
|
122 |
"автоматические обновления. Также вы можете выбрать режим обновления. По "
|
123 |
"умолчанию (младший)"
|
124 |
|
125 |
-
#: admin/pages/updates.php:
|
126 |
msgid "Major - automatically update to major releases (e.g., 4.1, 4.2, 4.3)."
|
127 |
msgstr ""
|
128 |
"Основные - автоматически обновления основных версий (4.1, 4.2, 4.3 и т.д)."
|
129 |
|
130 |
-
#: admin/pages/updates.php:
|
131 |
msgid ""
|
132 |
"Minor - automatically update to minor releases (e.g., 4.1.1, 4.1.2, 4.1.3).."
|
133 |
msgstr ""
|
134 |
"Незначительные - автоматически обновления промежуточных версий (4.1.1, "
|
135 |
"4.1.2, 4.1.3 и т.д)."
|
136 |
|
137 |
-
#: admin/pages/updates.php:
|
138 |
msgid "Development - update automatically to Bleeding Edge releases."
|
139 |
msgstr "Разрабатываемые - автоматические обновления до финальных выпусков."
|
140 |
|
141 |
-
#: admin/pages/updates.php:
|
142 |
msgid ""
|
143 |
"Enable Automatic Updates even if a VCS folder (.git, .hg, .svn) was found in "
|
144 |
"the WordPress directory"
|
@@ -159,1550 +252,3 @@ msgstr ""
|
|
159 |
#: webcraftic-updates-manager.php:82
|
160 |
msgid "Webcraftic Updates Manager"
|
161 |
msgstr "Webcraftic менеджер обновлений"
|
162 |
-
|
163 |
-
#~ msgid "Settings"
|
164 |
-
#~ msgstr "Настройки"
|
165 |
-
|
166 |
-
#~ msgid "General1"
|
167 |
-
#~ msgstr "Основные"
|
168 |
-
|
169 |
-
#~ msgid "You don't have enough capability to edit this information."
|
170 |
-
#~ msgstr "У вас недостаточно возможностей для редактирования этой информации."
|
171 |
-
|
172 |
-
#~ msgid "Undefinded mode."
|
173 |
-
#~ msgstr "Неопределенный режим."
|
174 |
-
|
175 |
-
#~ msgid "Settings are not defined or do not exist."
|
176 |
-
#~ msgstr "Настройки не определены или не существуют."
|
177 |
-
|
178 |
-
#~ msgid "Quick start"
|
179 |
-
#~ msgstr "Быстрый старт"
|
180 |
-
|
181 |
-
#~ msgid "Code cleaning"
|
182 |
-
#~ msgstr "Очистка кода"
|
183 |
-
|
184 |
-
#~ msgid "All site Updates"
|
185 |
-
#~ msgstr "Все обновления сайта"
|
186 |
-
|
187 |
-
#~ msgid "Privacy Settings"
|
188 |
-
#~ msgstr "Настройки приватности"
|
189 |
-
|
190 |
-
#~ msgid "SEO"
|
191 |
-
#~ msgstr "SEO"
|
192 |
-
|
193 |
-
#~ msgid "Duplicate pages"
|
194 |
-
#~ msgstr "Дубли страниц"
|
195 |
-
|
196 |
-
#~ msgid "Defence"
|
197 |
-
#~ msgstr "Защита"
|
198 |
-
|
199 |
-
#~ msgid "Widgets"
|
200 |
-
#~ msgstr "Виджеты"
|
201 |
-
|
202 |
-
#~ msgid "Advanced"
|
203 |
-
#~ msgstr "Дополнительно"
|
204 |
-
|
205 |
-
#~ msgid "Clearfy"
|
206 |
-
#~ msgstr "Clearfy"
|
207 |
-
|
208 |
-
#~ msgid "Save settings"
|
209 |
-
#~ msgstr "Сохранить настройки"
|
210 |
-
|
211 |
-
#~ msgid ""
|
212 |
-
#~ "A neutral setting that can not harm your site, but you must be sure that "
|
213 |
-
#~ "you need to use it."
|
214 |
-
#~ msgstr ""
|
215 |
-
#~ "Нейтральная настройка, которая не может нанести вред вашему сайту, но вы "
|
216 |
-
#~ "должны быть уверены, что вам нужно ее использовать."
|
217 |
-
|
218 |
-
#~ msgid ""
|
219 |
-
#~ "When set this option, you must be careful. Plugins and themes may depend "
|
220 |
-
#~ "on this function. You must be sure that you can disable this feature for "
|
221 |
-
#~ "the site."
|
222 |
-
#~ msgstr ""
|
223 |
-
#~ "При включении этой настройки, вы должны быть осторожны. Некоторые плагины "
|
224 |
-
#~ "и темы могут зависеть от этой функции. Вы должны быть уверены, что эту "
|
225 |
-
#~ "функцию можно отключить для сайта."
|
226 |
-
|
227 |
-
#~ msgid "Absolutely safe setting, We recommend to use."
|
228 |
-
#~ msgstr "Абсолютно безопасная настройка, рекомендуем использовать."
|
229 |
-
|
230 |
-
#~ msgid "Hover to the icon to get help for the feature you selected."
|
231 |
-
#~ msgstr ""
|
232 |
-
#~ "Наведите указатель мыши на значок, чтобы получить справку по выбранной "
|
233 |
-
#~ "функции."
|
234 |
-
|
235 |
-
#~ msgid "Do you want the plugin to improved and update?"
|
236 |
-
#~ msgstr "Вы хотите, чтобы плагин улучшался и обновлялся?"
|
237 |
-
|
238 |
-
#~ msgid ""
|
239 |
-
#~ "Help the author, leave a review on wordpress.org. Thanks to feedback, I "
|
240 |
-
#~ "will know that the plugin is really useful to you and is needed."
|
241 |
-
#~ msgstr ""
|
242 |
-
#~ "Помогите автору, оставьте отзыв на wordpress.org. Благодаря отзывам, я "
|
243 |
-
#~ "буду знать, что плагин действительно полезен для вас и необходим."
|
244 |
-
|
245 |
-
#~ msgid "And also write your ideas on how to extend or improve the plugin."
|
246 |
-
#~ msgstr ""
|
247 |
-
#~ "А также напишите свои идеи о том, как расширить или улучшить плагин."
|
248 |
-
|
249 |
-
#~ msgid "Go rate us and push ideas"
|
250 |
-
#~ msgstr "Оставить отзыв или поделиться идеей"
|
251 |
-
|
252 |
-
#~ msgid "Donation for plug-in development"
|
253 |
-
#~ msgstr "Пожертвования на развитие плагина"
|
254 |
-
|
255 |
-
#~ msgid "You do not have permission to edit page."
|
256 |
-
#~ msgstr "У вас недостаточно прав, для редактирования этой страницы."
|
257 |
-
|
258 |
-
#~ msgid "The settings have been updated successfully!"
|
259 |
-
#~ msgstr "Настройки были успешно обновлены!"
|
260 |
-
|
261 |
-
#~ msgid "Remove REST API Links"
|
262 |
-
#~ msgstr "Отключить Rest API"
|
263 |
-
|
264 |
-
#~ msgid "Disable Emojis"
|
265 |
-
#~ msgstr "Отключить Emojis (эмоции)"
|
266 |
-
|
267 |
-
#~ msgid "Remove dns-prefetch"
|
268 |
-
#~ msgstr "Удалить dns-prefetch"
|
269 |
-
|
270 |
-
#~ msgid "Remove RSD Link"
|
271 |
-
#~ msgstr "Удаляет RSD ссылку"
|
272 |
-
|
273 |
-
#~ msgid "Remove wlwmanifest Link"
|
274 |
-
#~ msgstr "Удалить wlwmanifest Link"
|
275 |
-
|
276 |
-
#~ msgid "Remove Shortlink"
|
277 |
-
#~ msgstr "Удалить короткие ссылки"
|
278 |
-
|
279 |
-
#~ msgid "Remove links to previous, next post"
|
280 |
-
#~ msgstr "Удалить ссылки следующая, предыдущая запись"
|
281 |
-
|
282 |
-
#~ msgid "Remove .recentcomments styles"
|
283 |
-
#~ msgstr "Удалить стили .recentcomments"
|
284 |
-
|
285 |
-
#~ msgid "Automatically set the alt attribute"
|
286 |
-
#~ msgstr "Автоматически устанавливать атрибут alt"
|
287 |
-
|
288 |
-
#~ msgid "Replace external links in comments on the JavaScript code"
|
289 |
-
#~ msgstr "Заменить внешние ссылки в комментариях на JavaScript код"
|
290 |
-
|
291 |
-
#~ msgid "Replace external links from comment authors on the JavaScript code"
|
292 |
-
#~ msgstr "Заменить внешние ссылки от авторов комментариев на код JavaScript"
|
293 |
-
|
294 |
-
#~ msgid "Automatically insert the Last Modified header"
|
295 |
-
#~ msgstr "Автоматически вставлять заголовок Last Modified"
|
296 |
-
|
297 |
-
#~ msgid "Return an If-Modified-Since responce"
|
298 |
-
#~ msgstr "Возвращать заголовок If-Modified-Since"
|
299 |
-
|
300 |
-
#~ msgid "Remove duplicate names in breadcrumbs WP SEO by Yoast"
|
301 |
-
#~ msgstr "Удалить дубли имен в хлебных крошках WP SEO Yoast"
|
302 |
-
|
303 |
-
#~ msgid "Remove the tag %s from XML site map"
|
304 |
-
#~ msgstr "Удаляет тег %s из XML карты сайта плагин Yoast SEO."
|
305 |
-
|
306 |
-
#~ msgid "Remove comment from %s section"
|
307 |
-
#~ msgstr "Удалить комментарии из секции %s"
|
308 |
-
|
309 |
-
#~ msgid "Remove archives date"
|
310 |
-
#~ msgstr "Удалить архивы дат"
|
311 |
-
|
312 |
-
#~ msgid "Remove author archives "
|
313 |
-
#~ msgstr "Удалить архивы автора"
|
314 |
-
|
315 |
-
#~ msgid "Remove archives tag"
|
316 |
-
#~ msgstr "Удалить метки архивов"
|
317 |
-
|
318 |
-
#~ msgid "Remove attachment pages"
|
319 |
-
#~ msgstr "Удалить страницы вложений"
|
320 |
-
|
321 |
-
#~ msgid "Remove post pagination"
|
322 |
-
#~ msgstr "Удалить постраничную навигацию записей"
|
323 |
-
|
324 |
-
#~ msgid "Remove ?replytocom"
|
325 |
-
#~ msgstr "Удалить ?replytocom"
|
326 |
-
|
327 |
-
#~ msgid "Remove meta generator"
|
328 |
-
#~ msgstr "Удалить meta generator"
|
329 |
-
|
330 |
-
#~ msgid "Hide author login"
|
331 |
-
#~ msgstr "Убрать возможность узнать логин автора"
|
332 |
-
|
333 |
-
#~ msgid "Hide errors when logging into the site"
|
334 |
-
#~ msgstr "Спрятать ошибки при входе на сайт"
|
335 |
-
|
336 |
-
#~ msgid "Disable X-Pingback"
|
337 |
-
#~ msgstr "Убрать ссылку на X-Pingback и возможность спамить pingback-ами"
|
338 |
-
|
339 |
-
#~ msgid "Remove Version from Stylesheet"
|
340 |
-
#~ msgstr "Удалить версию у файлов стилей"
|
341 |
-
|
342 |
-
#~ msgid "Remove Version from Script"
|
343 |
-
#~ msgstr "Удаляет версию у javascript файлов"
|
344 |
-
|
345 |
-
#~ msgid "Remove the \"Pages\" widget"
|
346 |
-
#~ msgstr "Удалите виджет «Страницы»"
|
347 |
-
|
348 |
-
#~ msgid "Remove calendar widget"
|
349 |
-
#~ msgstr "Удалить виджет календаря"
|
350 |
-
|
351 |
-
#~ msgid "Remove the \"Cloud of tags\" widget"
|
352 |
-
#~ msgstr "Удалите виджет «Облако тегов»"
|
353 |
-
|
354 |
-
#~ msgid "Remove the \"Archives\" widget"
|
355 |
-
#~ msgstr "Удалите виджет «Архивы»"
|
356 |
-
|
357 |
-
#~ msgid "Remove the \"Links\" widget"
|
358 |
-
#~ msgstr "Удалите виджет «Ссылки»"
|
359 |
-
|
360 |
-
#~ msgid "Remove the \"Meta\" widget"
|
361 |
-
#~ msgstr "Удалите виджет «Мета»"
|
362 |
-
|
363 |
-
#~ msgid "Remove the \"Search\" widget"
|
364 |
-
#~ msgstr "Удалите виджет «Поиск»"
|
365 |
-
|
366 |
-
#~ msgid "Remove the \"Text\" widget"
|
367 |
-
#~ msgstr "Удалите виджет «Текст»"
|
368 |
-
|
369 |
-
#~ msgid "Remove the \"Categories\" widget"
|
370 |
-
#~ msgstr "Удалите виджет «Категории»"
|
371 |
-
|
372 |
-
#~ msgid "Remove the \"Recent Posts\" widget"
|
373 |
-
#~ msgstr "Удалите виджет «Последние записи»"
|
374 |
-
|
375 |
-
#~ msgid "Remove the \"Recent Comments\" widget"
|
376 |
-
#~ msgstr "Удалите виджет «Последние комментарии»"
|
377 |
-
|
378 |
-
#~ msgid "Remove the \"RSS\" widget"
|
379 |
-
#~ msgstr "Удалить виджет «RSS»"
|
380 |
-
|
381 |
-
#~ msgid "Remove the \"Menu\" widget"
|
382 |
-
#~ msgstr "Удалите виджет «Меню»"
|
383 |
-
|
384 |
-
#~ msgid "Remove the \"Twenty Eleven Ephemera\" widget"
|
385 |
-
#~ msgstr "Удалите виджет \"Twenty Eleven Ephemera\""
|
386 |
-
|
387 |
-
#~ msgid "Disable revision"
|
388 |
-
#~ msgstr "Отключить ревизии"
|
389 |
-
|
390 |
-
#~ msgid "Limit Post Revisions"
|
391 |
-
#~ msgstr "Установить лимит ревизий"
|
392 |
-
|
393 |
-
#~ msgid "Exclude pages:"
|
394 |
-
#~ msgstr "Исключить страницы:"
|
395 |
-
|
396 |
-
#~ msgid "Create right robots.txt"
|
397 |
-
#~ msgstr "Создайте правильный robots.txt"
|
398 |
-
|
399 |
-
#~ msgid "You can edit the robots.txt file in the box below:"
|
400 |
-
#~ msgstr "Вы можете отредактировать файл robots.txt в поле ниже:"
|
401 |
-
|
402 |
-
#~ msgid "Quick mode"
|
403 |
-
#~ msgstr "Быстрый старт"
|
404 |
-
|
405 |
-
#~ msgid "Remove jQuery Migrate"
|
406 |
-
#~ msgstr "Удалить jQuery Migrate"
|
407 |
-
|
408 |
-
#~ msgid "Disable Embeds"
|
409 |
-
#~ msgstr "Отключить Embeds"
|
410 |
-
|
411 |
-
#~ msgid "Disable RSS feeds"
|
412 |
-
#~ msgstr "Отключить RSS каналы"
|
413 |
-
|
414 |
-
#~ msgid "Remove field \"site\" in comment form"
|
415 |
-
#~ msgstr "Удаляет поле \"Сайт\" в форме комментариев"
|
416 |
-
|
417 |
-
#~ msgid "Removes links to wordpress.org site from the admin bar"
|
418 |
-
#~ msgstr "Удаляет ссылки на wordpress.org сайт из панели администратора"
|
419 |
-
|
420 |
-
#~ msgid "HTML minify"
|
421 |
-
#~ msgstr "Html сжатие"
|
422 |
-
|
423 |
-
#~ msgid "Redirect Http to Https"
|
424 |
-
#~ msgstr "Перенаправление Http на Https"
|
425 |
-
|
426 |
-
#~ msgid "Eclude stylesheet/script file names"
|
427 |
-
#~ msgstr "Исключает файлы стилей/сприптов"
|
428 |
-
|
429 |
-
#~ msgid ""
|
430 |
-
#~ "Tired of spam in the comments? Do visitors leave \"blank\" comments for "
|
431 |
-
#~ "the sake of a link to their site?"
|
432 |
-
#~ msgstr ""
|
433 |
-
#~ "Надоел спам в комментариях? Посетители оставляют «пустые» комментарии "
|
434 |
-
#~ "ради ссылки на свой сайт?"
|
435 |
-
|
436 |
-
#~ msgid "Removes the \"Site\" field from the comment form."
|
437 |
-
#~ msgstr "Убирает поле «Сайт» из формы комментирования."
|
438 |
-
|
439 |
-
#~ msgid ""
|
440 |
-
#~ "Works with the standard comment form, if the form is manually written in "
|
441 |
-
#~ "your theme-it probably will not work!"
|
442 |
-
#~ msgstr ""
|
443 |
-
#~ "Работает со стандартной формой комментирования, если в Вашей теме форма "
|
444 |
-
#~ "прописана вручную - скорей всего не сработает!"
|
445 |
-
|
446 |
-
#~ msgid ""
|
447 |
-
#~ "The first item in the toolbar goes wordpress logo and external links to "
|
448 |
-
#~ "wordpress.org, WP forums and documentation."
|
449 |
-
#~ msgstr ""
|
450 |
-
#~ "Первый элемент в панели инструментов идет логотип wordpress и внешние "
|
451 |
-
#~ "ссылки на wordpress.org, WP форумах и документации."
|
452 |
-
|
453 |
-
#~ msgid "Removes all links to wordpress.org from the toolbar."
|
454 |
-
#~ msgstr "Удаляет все ссылки на wordpress.org с панели инструментов."
|
455 |
-
|
456 |
-
#~ msgid "Revisions"
|
457 |
-
#~ msgstr "Ревизии"
|
458 |
-
|
459 |
-
#~ msgid ""
|
460 |
-
#~ "Editorial (or revision) in WordPress are long-standing. They allow you to "
|
461 |
-
#~ "save a backup copy of the record or page whenever a change is made, and "
|
462 |
-
#~ "then view all versions with the ability to restore any of them."
|
463 |
-
#~ msgstr ""
|
464 |
-
#~ "Редакции (или ревизии) в WordPress, давно. Они позволяют вам сохранить "
|
465 |
-
#~ "резервную копию на запись или на страницу всякий раз, когда вы внесли "
|
466 |
-
#~ "изменения в редакторе Wordpress. В дальнейшем вы можете просмотреть все "
|
467 |
-
#~ "версии с возможностью восстановить любую из них."
|
468 |
-
|
469 |
-
#~ msgid ""
|
470 |
-
#~ "WordPress automatically saves revisions when you are working on posts and "
|
471 |
-
#~ "pages. These can begin to add up pretty quick. By default, there is no "
|
472 |
-
#~ "limit in place. We have seen posts with over 1,000 revisions. Multiply "
|
473 |
-
#~ "this by 50 pages and suddenly you have over 50,000 revisions sitting in "
|
474 |
-
#~ "your database. The problem with this is that you will most likely never "
|
475 |
-
#~ "use them and they can start slowing down your database as well as using "
|
476 |
-
#~ "disk space.\n"
|
477 |
-
#~ "So we recommend either disabling or limiting your revisions. "
|
478 |
-
#~ msgstr ""
|
479 |
-
#~ "WordPress автоматически сохраняет изменения, когда вы работаете над "
|
480 |
-
#~ "сообщениями и страницами. Они могут начать складываться довольно быстро. "
|
481 |
-
#~ "По умолчанию, ограничений нет. Мы видели сообщения с более чем 1000 "
|
482 |
-
#~ "версиями. Умножьте это на 50 страниц, и у вас будет более 50 000 "
|
483 |
-
#~ "исправлений, сидящих в вашей базе данных. Проблема заключается в том, что "
|
484 |
-
#~ "вы, скорее всего, никогда не будете их использовать, и они могут начать "
|
485 |
-
#~ "замедлять работу вашей базы данных, а также использовать дисковое "
|
486 |
-
#~ "пространство.\n"
|
487 |
-
#~ "Поэтому мы рекомендуем либо отключать, либо ограничивать ваши изменения."
|
488 |
-
|
489 |
-
#~ msgid ""
|
490 |
-
#~ "Warning! In the wp-config.php file, a constant WP_POST_REVISIONS is "
|
491 |
-
#~ "found, it determines the number of revisions. Delete it so you can change "
|
492 |
-
#~ "this value through the admin panel."
|
493 |
-
#~ msgstr ""
|
494 |
-
#~ "Предупреждение! В файле wp-config.php найдена константа "
|
495 |
-
#~ "WP_POST_REVISIONS, она определяет количество ревизий. Удалите ее, чтобы "
|
496 |
-
#~ "вы могли изменить это значение через панель администратора."
|
497 |
-
|
498 |
-
#~ msgid ""
|
499 |
-
#~ "By default, WordPress generates all types of different RSS feeds for your "
|
500 |
-
#~ "site. While RSS feeds can be useful if you are running a blog, businesses "
|
501 |
-
#~ "might not always utilize these. Not every site out there has a blog."
|
502 |
-
#~ msgstr ""
|
503 |
-
#~ "По умолчанию WordPress генерирует различные виды RSS-каналов для вашего "
|
504 |
-
#~ "сайта. Иногда RSS-каналы могут быть полезны, если вы используете блог "
|
505 |
-
#~ "например, но если у вас обычный одностаничник, то RSS для вас будет "
|
506 |
-
#~ "бесполезен. "
|
507 |
-
|
508 |
-
#~ msgid ""
|
509 |
-
#~ "Removes a link to the RSS-feed from the %s section, closes and puts the "
|
510 |
-
#~ "redirect from all RSS-feeds."
|
511 |
-
#~ msgstr ""
|
512 |
-
#~ "Удаляет ссылку на RSS-канал из раздела %s, закрывает и ставит "
|
513 |
-
#~ "перенаправления от всех RSS-каналов."
|
514 |
-
|
515 |
-
#~ msgid ""
|
516 |
-
#~ "The WordPress REST API provides API endpoints for WordPress data types "
|
517 |
-
#~ "that allow developers to interact with sites remotely by sending and "
|
518 |
-
#~ "receiving JSON (JavaScript Object Notation) objects. However, a lot of "
|
519 |
-
#~ "sites don’t use this, and therefore in most cases, it is just unnecessary "
|
520 |
-
#~ "code."
|
521 |
-
#~ msgstr ""
|
522 |
-
#~ "WordPress REST API предоставляет API для работы с WordPress данными, это "
|
523 |
-
#~ "позволяет разработчикам взаимодействовать с сайтами удаленно, посредством "
|
524 |
-
#~ "отправки и получения данных в формате JSON (JavaScript Object Notation). "
|
525 |
-
#~ "Однако многие сайты не используют это, и поэтому в большинстве случаев, "
|
526 |
-
#~ "это только ненужный код."
|
527 |
-
|
528 |
-
#~ msgid ""
|
529 |
-
#~ "Removes REST API link tag from the front end and the REST API header link "
|
530 |
-
#~ "from page requests."
|
531 |
-
#~ msgstr "Отключает REST API и удаляет все ссылки из исходного кода страницы."
|
532 |
-
|
533 |
-
#~ msgid "Recommended"
|
534 |
-
#~ msgstr "Рекомендовано"
|
535 |
-
|
536 |
-
#~ msgid ""
|
537 |
-
#~ "Emojis are fun and all, but if you are aren’t using them they actually "
|
538 |
-
#~ "load a JavaScript file (wp-emoji-release.min.js) on every page of your "
|
539 |
-
#~ "website. For a lot of businesses, this is not needed and simply adds load "
|
540 |
-
#~ "time to your site. So we recommend disabling this."
|
541 |
-
#~ msgstr ""
|
542 |
-
#~ "Emojis это смайлы (эмоции), если вы не используете их на своем сайте, в "
|
543 |
-
#~ "исходном коде страницы будет загружаться JavaScript файл (wp-emoji-"
|
544 |
-
#~ "release.min.js), на каждой странице вашего веб-сайта. Для многих сайтов "
|
545 |
-
#~ "это не требуется и просто увеличивает время загрузки страницы. Поэтому мы "
|
546 |
-
#~ "рекомендуем отключить это."
|
547 |
-
|
548 |
-
#~ msgid "Removes WordPress Emojis JavaScript file (wp-emoji-release.min.js)."
|
549 |
-
#~ msgstr "Удаляет код Emojis из исходного кода страницы"
|
550 |
-
|
551 |
-
#~ msgid ""
|
552 |
-
#~ "They started adding jQuery migrate in WordPress 3.6. Most up-to-date "
|
553 |
-
#~ "frontend code and plugins don’t require jquery-migrate.min.js. In most "
|
554 |
-
#~ "cases, this simply adds unnecessary load to your site. You can see this "
|
555 |
-
#~ "running if you launch Chrome Devtools console."
|
556 |
-
#~ msgstr ""
|
557 |
-
#~ "jQuery миграция появилась в WordPress 3.6. Большинство современных веб-"
|
558 |
-
#~ "интерфейсов и плагинов не требуют jquery-migrate.min.js. В большинстве "
|
559 |
-
#~ "случаев это просто ненужная нагрузка на ваш сайт. "
|
560 |
-
|
561 |
-
#~ msgid "Removes jQuery Migrate JavaScript file (jquery-migrate.min.js)."
|
562 |
-
#~ msgstr "Удаляет подключаемый файл (jquery-migrate.min.js)."
|
563 |
-
|
564 |
-
#~ msgid "Warning! If there is a broke on your site, disable this option!"
|
565 |
-
#~ msgstr ""
|
566 |
-
#~ "Предупреждение! Если у вас появились проблемы в работе сайта или "
|
567 |
-
#~ "плагинов, отключите эту опцию!"
|
568 |
-
|
569 |
-
#~ msgid ""
|
570 |
-
#~ "Embeds were released with WordPress 4.4. This is basically the magic that "
|
571 |
-
#~ "auto converts your YouTube videos, Tweets, and URLs into pretty previews "
|
572 |
-
#~ "while you are editing. However, this actually loads a JavaScript file (wp-"
|
573 |
-
#~ "embed.min.js) on every page of your website. If you don’t care about the "
|
574 |
-
#~ "auto converting preview (which we don’t), you can disable this across "
|
575 |
-
#~ "your site."
|
576 |
-
#~ msgstr ""
|
577 |
-
#~ "Встраиваемые объекты были добавлены в WordPress 4.4. Эта функция "
|
578 |
-
#~ "автоматически преобразуют YouTube, Tweets, и URL-адреса в объекты для "
|
579 |
-
#~ "удобного просмотра (плеер, картинки и т.д.). Для того, чтобы объекты "
|
580 |
-
#~ "автоматически преобразовывались на вашем сайте, на каждой странице "
|
581 |
-
#~ "подключается код JavaScript (wp-embed.min.js). Если вы не используете "
|
582 |
-
#~ "функции автоматического преобразования встраиваемых объектов, то можете "
|
583 |
-
#~ "отключить эту функцию."
|
584 |
-
|
585 |
-
#~ msgid "Removes WordPress Embed JavaScript file (wp-embed.min.js)"
|
586 |
-
#~ msgstr ""
|
587 |
-
#~ "Удаляет JavaScript код отвечающий за встраиваемые объекты (wp-embed.min."
|
588 |
-
#~ "js)"
|
589 |
-
|
590 |
-
#~ msgid ""
|
591 |
-
#~ "Since version 4.6.1 in WordPress there are new links in the section %s "
|
592 |
-
#~ "this type of: "
|
593 |
-
#~ msgstr ""
|
594 |
-
#~ "Начиная с версии 4.6.1 в WordPress появляются новые ссылки в секции %s "
|
595 |
-
#~ "пример:"
|
596 |
-
|
597 |
-
#~ msgid "Removes dns-prefetch links from the %s section"
|
598 |
-
#~ msgstr "Удаляет тег link dns-prefetch из секции %s"
|
599 |
-
|
600 |
-
#~ msgid ""
|
601 |
-
#~ "The above link is used by blog clients. If you edit your site from your "
|
602 |
-
#~ "browser then you don’t need this. It is also used by some 3rd party "
|
603 |
-
#~ "applications that utilize XML-RPC requests. In most cases, this is just "
|
604 |
-
#~ "unnecessary code."
|
605 |
-
#~ msgstr ""
|
606 |
-
#~ "Эта ссылка используется клиентами блога. Если вы редактируете сайт из "
|
607 |
-
#~ "вашего браузера, то вам не нужно это. Она также используется в некоторых "
|
608 |
-
#~ "приложениях, которые используют XML-RPC-запросы. В большинстве случаев "
|
609 |
-
#~ "это только ненужный код."
|
610 |
-
|
611 |
-
#~ msgid "Remove RSD (Real Simple Discovery) link tag."
|
612 |
-
#~ msgstr "Удаляет RSD link тег"
|
613 |
-
|
614 |
-
#~ msgid ""
|
615 |
-
#~ "This link is actually used by Windows Live Writer. If you don’t know use "
|
616 |
-
#~ "Windows Live Writer, which we are guessing you don’t, this is just "
|
617 |
-
#~ "unnecessary code."
|
618 |
-
#~ msgstr ""
|
619 |
-
#~ "Эта ссылка используется фактически Windows Live Writer. Если вы не "
|
620 |
-
#~ "знаете, как использовать Windows Live Writer, то это только ненужный код."
|
621 |
-
|
622 |
-
#~ msgid "Remove wlwmanifest (Windows Live Writer) link tag."
|
623 |
-
#~ msgstr "Удаляет тег link wlwmanifest (Windows Live Writer)."
|
624 |
-
|
625 |
-
#~ msgid ""
|
626 |
-
#~ "By default, the following tag shows up in every WordPress install. %s "
|
627 |
-
#~ "This is used for a shortlink to your pages and posts. However, if you are "
|
628 |
-
#~ "already using pretty permalinks, such as domain.com/post, then there is "
|
629 |
-
#~ "no reason to keep this, it is just unnecessary code."
|
630 |
-
#~ msgstr ""
|
631 |
-
#~ "По умолчанию следующий тег печатается на каждой странице ваших записей и "
|
632 |
-
#~ "страниц. %s Это используется, как короткая ссылка на вашу статью. Если вы "
|
633 |
-
#~ "используете постоянные ссылки, то это не нужный код."
|
634 |
-
|
635 |
-
#~ msgid "Remove Shortlink link tag."
|
636 |
-
#~ msgstr "Удаляет тег link shortlink."
|
637 |
-
|
638 |
-
#~ msgid ""
|
639 |
-
#~ "If you use Wordpress as a CMS, then you can delete these links, they can "
|
640 |
-
#~ "only come in handy for a blog."
|
641 |
-
#~ msgstr ""
|
642 |
-
#~ "Если вы используете Wordpress как CMS (а не блог), то вы можете удалить "
|
643 |
-
#~ "эти ссылки, но для блога они могут быть полезны."
|
644 |
-
|
645 |
-
#~ msgid ""
|
646 |
-
#~ "Remove the previous and next post links within the wp_head of your "
|
647 |
-
#~ "wordpress theme."
|
648 |
-
#~ msgstr ""
|
649 |
-
#~ "Удаляет ссылки предидущая и следующая запись в head вашей темы wordpress."
|
650 |
-
|
651 |
-
#~ msgid ""
|
652 |
-
#~ "WP by default for the widget \"recent comments\" prescribes in the code "
|
653 |
-
#~ "styles that are almost impossible to change, because to them apply! "
|
654 |
-
#~ "important."
|
655 |
-
#~ msgstr ""
|
656 |
-
#~ "Wordpress по умолчанию для виджета \"Последние комментари\" прописывает в "
|
657 |
-
#~ "стилях код, которые почти невозможно изменить, потому что к ним "
|
658 |
-
#~ "применяются значение !important."
|
659 |
-
|
660 |
-
#~ msgid "Removes .recentcomments styles from head section."
|
661 |
-
#~ msgstr "Удаляет .recentcomments стили из head секции."
|
662 |
-
|
663 |
-
#~ msgid ""
|
664 |
-
#~ "Reduces the weight of the page by removing line breaks, tabs, spaces, etc."
|
665 |
-
#~ msgstr ""
|
666 |
-
#~ "Уменьшает вес страницы путем удаления разрывов строк, вкладок, пробелов и "
|
667 |
-
#~ "т. Д."
|
668 |
-
|
669 |
-
#~ msgid "Minify pages."
|
670 |
-
#~ msgstr "Минимизировать страницы."
|
671 |
-
|
672 |
-
#~ msgid ""
|
673 |
-
#~ "An attacker can find out the author's login, using a similar request to "
|
674 |
-
#~ "get your site. mysite.com/?author=1"
|
675 |
-
#~ msgstr ""
|
676 |
-
#~ "Злоумышленник может узнать логин автора, с помощью подобного get запроса "
|
677 |
-
#~ "mysite.com/?author=1"
|
678 |
-
|
679 |
-
#~ msgid "Sets the redirect to exclude the possibility of obtaining a login."
|
680 |
-
#~ msgstr ""
|
681 |
-
#~ "Предотвращает возможность узнать логин автора, устанавливая "
|
682 |
-
#~ "перенаправление."
|
683 |
-
|
684 |
-
#~ msgid ""
|
685 |
-
#~ "WP by default shows whether you entered a wrong login or incorrect "
|
686 |
-
#~ "password, which allows attackers to understand if there is a certain user "
|
687 |
-
#~ "on the site, and then start searching through the passwords."
|
688 |
-
#~ msgstr ""
|
689 |
-
#~ "Wordpress по умолчанию показывает, ввели ли вы неправильный логин или "
|
690 |
-
#~ "неправильный пароль, что дает злоумышленникам понять, существует ли "
|
691 |
-
#~ "определенный пользователь на сайте, а после начать перебор паролей."
|
692 |
-
|
693 |
-
#~ msgid ""
|
694 |
-
#~ "Changes in the text of the error so that attackers could not find the "
|
695 |
-
#~ "login."
|
696 |
-
#~ msgstr ""
|
697 |
-
#~ "Меняет текст ошибки так, чтобы злоумышленники не смогли подобрать логин."
|
698 |
-
|
699 |
-
#~ msgid "Disable XML-RPC"
|
700 |
-
#~ msgstr "Отключить XML-RPC"
|
701 |
-
|
702 |
-
#~ msgid ""
|
703 |
-
#~ "A pingback is basically an automated comment that gets created when "
|
704 |
-
#~ "another blog links to you. A self-pingback is created when you link to an "
|
705 |
-
#~ "article within your own blog. Pingbacks are essentially nothing more than "
|
706 |
-
#~ "spam and simply waste resources."
|
707 |
-
#~ msgstr ""
|
708 |
-
#~ "Pingback по-существу автоматизированных комментарий, который создается, "
|
709 |
-
#~ "когда другой блог ссылается на вас. Self-pingback создается, когда вы "
|
710 |
-
#~ "оставили ссылку на статью в своем блоге. Pingbacks по существу являются "
|
711 |
-
#~ "не более чем спам и пустая трата ресурсов вашего сайта."
|
712 |
-
|
713 |
-
#~ msgid "Removes the server responses a reference to the xmlrpc file."
|
714 |
-
#~ msgstr "Удаляет ссылку на xmlrpc-файл и ответ сервера."
|
715 |
-
|
716 |
-
#~ msgid ""
|
717 |
-
#~ "Many duplicates in date archives. Imagine, in addition, that your article "
|
718 |
-
#~ "will be displayed in the main and in the category, you will still receive "
|
719 |
-
#~ "at least 3 duplicates: in archives by year, month and date, for example "
|
720 |
-
#~ "%s."
|
721 |
-
#~ msgstr ""
|
722 |
-
#~ "Огромное количество дублей в архивах дат. Представьте, кроме того, что "
|
723 |
-
#~ "Ваша статья будет выводиться на главной и в категории, Вы еще получите "
|
724 |
-
#~ "как минимум 3 дубля: в архивах по году, месяцу и дате, например %s."
|
725 |
-
|
726 |
-
#~ msgid "Removes all pages with the date archives and puts a redirect."
|
727 |
-
#~ msgstr "Удаляет полностью архивы дат и ставит редирект."
|
728 |
-
|
729 |
-
#~ msgid ""
|
730 |
-
#~ "If the site is only filled by you - a mandatory item. Allows you to get "
|
731 |
-
#~ "rid of duplicates on user archives, for example %s."
|
732 |
-
#~ msgstr ""
|
733 |
-
#~ "Если сайт заполняете только вы - это функция обязательна. Позволяет вам "
|
734 |
-
#~ "избавиться от дубликатов страниц автора, например %s."
|
735 |
-
|
736 |
-
#~ msgid "Removes all pages with the author archives and puts a redirect."
|
737 |
-
#~ msgstr "Удаляет все страницы из архивов автора и ставит перенаправление."
|
738 |
-
|
739 |
-
#~ msgid ""
|
740 |
-
#~ "If you use tags only for the block Similar records, or do not use them at "
|
741 |
-
#~ "all - it will be more correct to close them to avoid duplicates."
|
742 |
-
#~ msgstr ""
|
743 |
-
#~ "Если вы используете теги только для виджета \"Похожие записи\", либо не "
|
744 |
-
#~ "используете их совсем - правильнее будет их закрыть, чтобы избежать "
|
745 |
-
#~ "дублей."
|
746 |
-
|
747 |
-
#~ msgid "Removes all pages with the tag archives and puts a redirect."
|
748 |
-
#~ msgstr "Ставит редирект со страниц тегов на главную."
|
749 |
-
|
750 |
-
#~ msgid ""
|
751 |
-
#~ "Every of the pictures has its own page on the site. Such pages are "
|
752 |
-
#~ "successfully indexed and create duplicates. The site can have thousands "
|
753 |
-
#~ "of same-type attachment pages."
|
754 |
-
#~ msgstr ""
|
755 |
-
#~ "Каждая загруженная картинка имеет свою страничку на сайте, состоящую "
|
756 |
-
#~ "только из одной картинки. Такие страницы успешно индексируются и создают "
|
757 |
-
#~ "дубли. На сайте могут быть тысячи однотипных страниц вложений."
|
758 |
-
|
759 |
-
#~ msgid "Removes attachment pages and puts a redirect."
|
760 |
-
#~ msgstr "Удаляет страницы вложений и ставит редирект на запись."
|
761 |
-
|
762 |
-
#~ msgid ""
|
763 |
-
#~ "In WordPress, any post can be divided into parts (pages), each part will "
|
764 |
-
#~ "have its own address. But this functionality is rarely used, but it can "
|
765 |
-
#~ "create trouble for you. For example, you can add a number to the address "
|
766 |
-
#~ "of any entry of your blog, %s - the post itself will open, which will be "
|
767 |
-
#~ "a duplicate. You can substitute any number."
|
768 |
-
#~ msgstr ""
|
769 |
-
#~ "В WordPress любое содержание можно разделить на части (страницы), каждая "
|
770 |
-
#~ "часть будет иметь свой собственный адрес. Эта функциональность "
|
771 |
-
#~ "используется редко, но это может создать проблемы для вас. Например вы "
|
772 |
-
#~ "можете добавить номер в адрес любой записи вашего блога, %s - откроет "
|
773 |
-
#~ "текущую страницу, которая будет дублироваться."
|
774 |
-
|
775 |
-
#~ msgid ""
|
776 |
-
#~ "Removes the pagination from the post and puts a redirect. Example: %s"
|
777 |
-
#~ msgstr ""
|
778 |
-
#~ "Удаление постраничную навигацию из записи и устанавливет перенаправление. "
|
779 |
-
#~ "Пример: %s"
|
780 |
-
|
781 |
-
#~ msgid ""
|
782 |
-
#~ "WordPress adds %s to the link \"Reply\" in the comments, if you use "
|
783 |
-
#~ "hierarchical comments."
|
784 |
-
#~ msgstr ""
|
785 |
-
#~ "WordPress добавляет %s к ссылке «Ответ» в комментариях, если вы "
|
786 |
-
#~ "используете иерархические комментарии."
|
787 |
-
|
788 |
-
#~ msgid "?relpytocom remove and and puts a redirect."
|
789 |
-
#~ msgstr "Удаляет ?relpytocom и ставит перенаправление."
|
790 |
-
|
791 |
-
#~ msgid ""
|
792 |
-
#~ "Allows attacker to learn the version of WP installed on the site. This "
|
793 |
-
#~ "meta tag has no useful function."
|
794 |
-
#~ msgstr ""
|
795 |
-
#~ "Позволяет злоумышленнику узнать версию Wordpress, установленую на вашем "
|
796 |
-
#~ "сайте. Этот мета-тег не несет никакой пользы."
|
797 |
-
|
798 |
-
#~ msgid "Removes the meta tag from the %s section"
|
799 |
-
#~ msgstr "Удаляет мета-тег из раздел %s"
|
800 |
-
|
801 |
-
#~ msgid ""
|
802 |
-
#~ "To make it more difficult for others to hack your website you can remove "
|
803 |
-
#~ "the WordPress version number from your site, your css and js. Without "
|
804 |
-
#~ "that number it's not possible to see if you run not the current version "
|
805 |
-
#~ "to exploit bugs from the older versions. <br><br>\n"
|
806 |
-
#~ "\t\t\t\t\tAdditionally it can improve the loading speed of your site, "
|
807 |
-
#~ "because without query strings in the URL the css and js files can be "
|
808 |
-
#~ "cached."
|
809 |
-
#~ msgstr ""
|
810 |
-
#~ "Активировав эту функцию вы усложните работу злоумышленника. <br><br>Кроме "
|
811 |
-
#~ "того, это может улучшить скорость загрузки вашего сайта, потому что без "
|
812 |
-
#~ "строки запроса в URL-адрес css и js файлов могут быть кэшированы."
|
813 |
-
|
814 |
-
#~ msgid ""
|
815 |
-
#~ "Removes the wordpress version number from stylesheets (not logged in user "
|
816 |
-
#~ "only)."
|
817 |
-
#~ msgstr ""
|
818 |
-
#~ "Удаляет номер версии из файлов стилей стилей (только для фронтенда)."
|
819 |
-
|
820 |
-
#~ msgid ""
|
821 |
-
#~ "Removes wordpress version number from scripts (not logged in user only)."
|
822 |
-
#~ msgstr "Удаляет номер версии из javascript файлов (только для фронтенда)."
|
823 |
-
|
824 |
-
#~ msgid ""
|
825 |
-
#~ "Enter Stylesheet/Script file names to exclude from version removal (each "
|
826 |
-
#~ "exclude file starts with a new line)"
|
827 |
-
#~ msgstr ""
|
828 |
-
#~ "Введите абсолютный путь к файлу, чтобы исключить его из списка файлов у "
|
829 |
-
#~ "которых, будет удалена версия (каждое исключение, должно быть с новой "
|
830 |
-
#~ "строки)."
|
831 |
-
|
832 |
-
#~ msgid "Example"
|
833 |
-
#~ msgstr "Например"
|
834 |
-
|
835 |
-
#~ msgid "Clearfy - disable unused features"
|
836 |
-
#~ msgstr "Clearfy - отключите бесполезные функции"
|
837 |
-
|
838 |
-
#~ msgid ""
|
839 |
-
#~ "On this page you can quickly configure the plug-in without going into "
|
840 |
-
#~ "details."
|
841 |
-
#~ msgstr ""
|
842 |
-
#~ "На этой странице вы можете быстро настроить плагин, не вдаваясь в "
|
843 |
-
#~ "подробности."
|
844 |
-
|
845 |
-
#~ msgid "Recommended Mode"
|
846 |
-
#~ msgstr "Рекомендуемый режим"
|
847 |
-
|
848 |
-
#~ msgid "Code Clearing"
|
849 |
-
#~ msgstr "Очистка кода"
|
850 |
-
|
851 |
-
#~ msgid "Security"
|
852 |
-
#~ msgstr "Безопасность"
|
853 |
-
|
854 |
-
#~ msgid "Seo optimization"
|
855 |
-
#~ msgstr "Оптимизация SEO"
|
856 |
-
|
857 |
-
#~ msgid "Remove default Widgets"
|
858 |
-
#~ msgstr "Удалить виджеты по умолчанию"
|
859 |
-
|
860 |
-
#~ msgid "Reset all settings"
|
861 |
-
#~ msgstr "Сбросить все настройки"
|
862 |
-
|
863 |
-
#~ msgid "Are you sure you want to enable the this options?"
|
864 |
-
#~ msgstr "Вы действительно хотите включить эти настройки?"
|
865 |
-
|
866 |
-
#~ msgid ""
|
867 |
-
#~ "After confirmation, all the settings of the plug-in will return to the "
|
868 |
-
#~ "default state. Make backup settings by copying data from the export field."
|
869 |
-
#~ msgstr ""
|
870 |
-
#~ "После подтверждения, все настройки плагина вернутся к состоянию по "
|
871 |
-
#~ "умолчанию. Сделайте резервную копию настроек, скопировав данные из поля "
|
872 |
-
#~ "экспорта."
|
873 |
-
|
874 |
-
#~ msgid "Confirm"
|
875 |
-
#~ msgstr "Подтвердить"
|
876 |
-
|
877 |
-
#~ msgid "Cancel"
|
878 |
-
#~ msgstr "Отмена"
|
879 |
-
|
880 |
-
#~ msgid ""
|
881 |
-
#~ "This is the quick plug-in setup mode. Use it if you do not want to "
|
882 |
-
#~ "understand the settings or do not understand what settings you need to "
|
883 |
-
#~ "use."
|
884 |
-
#~ msgstr ""
|
885 |
-
#~ "Это режим быстрой настройки плагина. Используйте его, если вы не хотите "
|
886 |
-
#~ "разбираться в настройках или не понимаете, какие настройки вам нужны."
|
887 |
-
|
888 |
-
#~ msgid "Select mode"
|
889 |
-
#~ msgstr "Выберите режим"
|
890 |
-
|
891 |
-
#~ msgid ""
|
892 |
-
#~ "After selecting the mode, the plug-in automatically activates the "
|
893 |
-
#~ "necessary settings for the mode."
|
894 |
-
#~ msgstr ""
|
895 |
-
#~ "Выбрав режим, плагин автоматически активирует необходимые настройки, для "
|
896 |
-
#~ "выполнения этого режима."
|
897 |
-
|
898 |
-
#~ msgid "Settings successfully updated!"
|
899 |
-
#~ msgstr "Настройки успешно обновлены!"
|
900 |
-
|
901 |
-
#~ msgid ""
|
902 |
-
#~ "During the setup, an unknown error occurred, please try again or contact "
|
903 |
-
#~ "the plug-in support."
|
904 |
-
#~ msgstr ""
|
905 |
-
#~ "Во время установки произошла неизвестная ошибка, повторите попытку или "
|
906 |
-
#~ "обратитесь в службу поддержки плагинов."
|
907 |
-
|
908 |
-
#~ msgid "Import/Export settings"
|
909 |
-
#~ msgstr "Импорт/Экспорт настроек"
|
910 |
-
|
911 |
-
#~ msgid "Import options"
|
912 |
-
#~ msgstr "Импортировать настройки"
|
913 |
-
|
914 |
-
#~ msgid "Support"
|
915 |
-
#~ msgstr "Поддержка"
|
916 |
-
|
917 |
-
#~ msgid ""
|
918 |
-
#~ "If you faced with any issues, please follow the steps below to get "
|
919 |
-
#~ "quickly quality support:"
|
920 |
-
#~ msgstr ""
|
921 |
-
#~ "Если вы столкнулись с какими-либо проблемами, выполните следующие "
|
922 |
-
#~ "действия, чтобы быстро получить качественную поддержку:"
|
923 |
-
|
924 |
-
#~ msgid ""
|
925 |
-
#~ "Generate a debug report which will contains inforamtion about your "
|
926 |
-
#~ "configuratin and installed plugins"
|
927 |
-
#~ msgstr ""
|
928 |
-
#~ "Создайте отчет об ошибках, который будет содержать информацию о вашей "
|
929 |
-
#~ "конфигурации и установленных плагинах."
|
930 |
-
|
931 |
-
#~ msgid "Generate Debug Report"
|
932 |
-
#~ msgstr "Сгенерировать отчет об ошибках"
|
933 |
-
|
934 |
-
#~ msgid ""
|
935 |
-
#~ "Send a message to <b>wordpress.webraftic@gmail.com</b> include the debug "
|
936 |
-
#~ "report into the message body."
|
937 |
-
#~ msgstr ""
|
938 |
-
#~ "Отправьте ваше сообщение на <b>wordpress.webraftic@gmail.com</b>, к "
|
939 |
-
#~ "сообщению прикрепите отчет об ошибках"
|
940 |
-
|
941 |
-
#~ msgid "We guarantee to respond you within 7 business day."
|
942 |
-
#~ msgstr "Мы гарантируем ответ на ваш вопрос в течении 7 дней."
|
943 |
-
|
944 |
-
#~ msgid ""
|
945 |
-
#~ "The alt attribute is mandatory, so most SEO experts say. If you missed or "
|
946 |
-
#~ "did not fill it at all, it will be automatically assigned and will be "
|
947 |
-
#~ "equal to the title of the article."
|
948 |
-
#~ msgstr ""
|
949 |
-
#~ "Атрибут alt является обязательным, поэтому большинство SEO экспертов "
|
950 |
-
#~ "говорят. Если вы пропустили, или не заполнили его, он будет автоматически "
|
951 |
-
#~ "задан из названия статьи."
|
952 |
-
|
953 |
-
#~ msgid "Replaces the %s, on attribute with an article name %s"
|
954 |
-
#~ msgstr "Заменяет %s, на атрибут с названием статьи %s"
|
955 |
-
|
956 |
-
#~ msgid ""
|
957 |
-
#~ "Superfluous external links from comments, which can be typed from a dozen "
|
958 |
-
#~ "and more for one article, do not bring anything good for promotion."
|
959 |
-
#~ msgstr ""
|
960 |
-
#~ "Внешние ссылки в комментариях, которых может быть десятки или больше на "
|
961 |
-
#~ "одной странице, могут ухудшить продвижение вашего сайта."
|
962 |
-
|
963 |
-
#~ msgid "Replaces the links of this kind of %s, on links of this kind %s"
|
964 |
-
#~ msgstr ""
|
965 |
-
#~ "Заменяет ссылки %s, на span тег и устанавливает переход с помощью "
|
966 |
-
#~ "JavaScript %s"
|
967 |
-
|
968 |
-
#~ msgid ""
|
969 |
-
#~ "Up to 90 percent of comments in the blog can be left for the sake of an "
|
970 |
-
#~ "external link. Even nofollow from page weight loss here does not help."
|
971 |
-
#~ msgstr ""
|
972 |
-
#~ "До 90 процентов комментариев в блоге оставляют ради внешней ссылки. Не "
|
973 |
-
#~ "поможет даже nofollow от потери веса страницы."
|
974 |
-
|
975 |
-
#~ msgid ""
|
976 |
-
#~ "Replaces the links of the authors of comments on the JavaScript code, it "
|
977 |
-
#~ "is impossible to distinguish it from usual links."
|
978 |
-
#~ msgstr ""
|
979 |
-
#~ "Заменяет ссылки авторов комментариев на JavaScript код, его невозможно "
|
980 |
-
#~ "отличить от обычной ссылки."
|
981 |
-
|
982 |
-
#~ msgid "In some Wordpress topics this may not work."
|
983 |
-
#~ msgstr "В некоторых темах Wordpress это может не сработать."
|
984 |
-
|
985 |
-
#~ msgid ""
|
986 |
-
#~ "After installation, WP does not contain a robots.txt file and create it "
|
987 |
-
#~ "manually. We re-read about 30 different articles, instructions from "
|
988 |
-
#~ "Yandex and Google to create the perfect robots.txt"
|
989 |
-
#~ msgstr ""
|
990 |
-
#~ "После установки WP не содержит файл robots.txt и создает его вручную. Мы "
|
991 |
-
#~ "перечитывали около 30 различных статей, инструкции от Yandex и Google, "
|
992 |
-
#~ "чтобы создать идеальный файл robots.txt"
|
993 |
-
|
994 |
-
#~ msgid "Automatically creates the perfect robots.txt file"
|
995 |
-
#~ msgstr "Автоматически создает идеальный robots.txt"
|
996 |
-
|
997 |
-
#~ msgid ""
|
998 |
-
#~ "If your site uses an SSL certificate, check this box to enable "
|
999 |
-
#~ "redirection from http to https."
|
1000 |
-
#~ msgstr ""
|
1001 |
-
#~ "Если ваш сайт использует сертификат SSL, установите этот флажок, чтобы "
|
1002 |
-
#~ "включить перенаправление с http на https."
|
1003 |
-
|
1004 |
-
#~ msgid "Puts the redirect from http to https."
|
1005 |
-
#~ msgstr "Передает перенаправление с http на https."
|
1006 |
-
|
1007 |
-
#~ msgid "Warning! Before activation, make sure your site is open https."
|
1008 |
-
#~ msgstr ""
|
1009 |
-
#~ "Внимание! Перед активацией убедитесь, что ваш сайт открывается по https."
|
1010 |
-
|
1011 |
-
#~ msgid "Server headers and response"
|
1012 |
-
#~ msgstr "Заголовки серверов и ответ"
|
1013 |
-
|
1014 |
-
#~ msgid ""
|
1015 |
-
#~ "WordPress does not know how to give the Last Modified header in the "
|
1016 |
-
#~ "server's responses. You can do this using the settings below."
|
1017 |
-
#~ msgstr ""
|
1018 |
-
#~ "WordPress не знает, как отдать заголовок Last Modified. Вы можете сделать "
|
1019 |
-
#~ "это с помощью параметров ниже."
|
1020 |
-
|
1021 |
-
#~ msgid ""
|
1022 |
-
#~ "You can specify a page mask, for example: %s or %s. All pages that "
|
1023 |
-
#~ "contain the string will be excluded. Each exclude must begin with a new "
|
1024 |
-
#~ "line."
|
1025 |
-
#~ msgstr ""
|
1026 |
-
#~ "Можно указать маску страницы, например: %s или %s. Все страницы, которые "
|
1027 |
-
#~ "содержат эти строки, будут исключены. Каждое исключение должно начинаться "
|
1028 |
-
#~ "с новой строки."
|
1029 |
-
|
1030 |
-
#~ msgid "For the Yoast SEO plugin"
|
1031 |
-
#~ msgstr "Для плагина Yoast SEO"
|
1032 |
-
|
1033 |
-
#~ msgid ""
|
1034 |
-
#~ "These settings will help you eliminate some problems associated with the "
|
1035 |
-
#~ "popular Yoast SEO plugin"
|
1036 |
-
#~ msgstr ""
|
1037 |
-
#~ "Эти параметры помогут вам устранить некоторые проблемы, связанные с "
|
1038 |
-
#~ "популярной Yoast SEO plugin"
|
1039 |
-
|
1040 |
-
#~ msgid ""
|
1041 |
-
#~ "The last element in the breadcrumbs in the Yoast SEO plugin duplicates "
|
1042 |
-
#~ "the title of the article. Some SEO-specialists consider this duplication "
|
1043 |
-
#~ "to be superfluous."
|
1044 |
-
#~ msgstr ""
|
1045 |
-
#~ "Последний элемент в хлебных крошках Yoast SEO дублирует название статьи. "
|
1046 |
-
#~ "Некоторые SEO-специалисты считают это дублирование излишним."
|
1047 |
-
|
1048 |
-
#~ msgid ""
|
1049 |
-
#~ "Removes duplication of the name in the breadcrumbs of the WP SEO plugin "
|
1050 |
-
#~ "from Yoast."
|
1051 |
-
#~ msgstr "Удаляет последний элемент в хлебных крошках Yoast SEO."
|
1052 |
-
|
1053 |
-
#~ msgid ""
|
1054 |
-
#~ "Yandex.Webmaster swears on a standard XML card from the plugin Yoast, tk. "
|
1055 |
-
#~ "it has a specific tag"
|
1056 |
-
#~ msgstr ""
|
1057 |
-
#~ "Яндекс вебмастер ругается на стандартной карты XML из плагина Yoast SEO, "
|
1058 |
-
#~ "из-за определенного тега "
|
1059 |
-
|
1060 |
-
#~ msgid "Remove the tag %s from XML site map of the plugin Yoast SEO."
|
1061 |
-
#~ msgstr "Удаляет тег %s из XML карта сайта плагин Yoast SEO."
|
1062 |
-
|
1063 |
-
#~ msgid ""
|
1064 |
-
#~ "Attention! After activation, turn off the site map and enable it back to "
|
1065 |
-
#~ "regenerate it."
|
1066 |
-
#~ msgstr ""
|
1067 |
-
#~ "Внимание! После активации, выключите карту сайта и включите ее обратно, "
|
1068 |
-
#~ "чтобы обновить ее."
|
1069 |
-
|
1070 |
-
#~ msgid ""
|
1071 |
-
#~ "In older versions of Yoast SEO may not work - update the plugin Yoast"
|
1072 |
-
#~ msgstr ""
|
1073 |
-
#~ "В более старых версиях Yoast SEO не может работать - обновите плагин "
|
1074 |
-
#~ "Yoast SEO"
|
1075 |
-
|
1076 |
-
#~ msgid "The Yoast SEO plugin displays a comment of the form %s in %s section"
|
1077 |
-
#~ msgstr "Yoast SEO плагин отображает комментарий формы %s в секции %s"
|
1078 |
-
|
1079 |
-
#~ msgid "Removes the Yoast SEO plugin comment of their section %s"
|
1080 |
-
#~ msgstr "Удаляет комментрии Yoast SEO из %s"
|
1081 |
-
|
1082 |
-
#~ msgid "Header cleaning"
|
1083 |
-
#~ msgstr "Очистка кода"
|
1084 |
-
|
1085 |
-
#~ msgid "<strong>ERROR</strong>: Wrong login or password"
|
1086 |
-
#~ msgstr "<strong>Ошибка</strong>: Неправильный логин или пароль"
|
1087 |
-
|
1088 |
-
#~ msgid "The ZipArchive class does not exist in this version of php."
|
1089 |
-
#~ msgstr "Класса ZipArchive не существует в этой версии php."
|
1090 |
-
|
1091 |
-
#~ msgid "Save changes"
|
1092 |
-
#~ msgstr "Сохранить настройки"
|
1093 |
-
|
1094 |
-
#~ msgid ""
|
1095 |
-
#~ "This page contains additional settings, usually not listed in the "
|
1096 |
-
#~ "recommended list."
|
1097 |
-
#~ msgstr ""
|
1098 |
-
#~ "Эта страница содержит дополнительные параметры, обычно, не перечисленные "
|
1099 |
-
#~ "в списке рекомендованных."
|
1100 |
-
|
1101 |
-
#~ msgid ""
|
1102 |
-
#~ "This page contains the security configuration settings for your site."
|
1103 |
-
#~ msgstr ""
|
1104 |
-
#~ "Эта страница содержит параметры конфигурации безопасности для вашего "
|
1105 |
-
#~ "сайта."
|
1106 |
-
|
1107 |
-
#~ msgid "This page contains settings for setting up duplicate pages."
|
1108 |
-
#~ msgstr "Эта страница содержит параметры для настройки дублирования страниц."
|
1109 |
-
|
1110 |
-
#~ msgid "On this settings page, you can optimize the source code of the page."
|
1111 |
-
#~ msgstr ""
|
1112 |
-
#~ "На этой странице настроек вы можете оптимизировать исходный код страницы."
|
1113 |
-
|
1114 |
-
#~ msgid "On this page you can configure the privacy settings of your site."
|
1115 |
-
#~ msgstr ""
|
1116 |
-
#~ "На этой странице вы можете установить настройки приватности для скриптов "
|
1117 |
-
#~ "на вашем сайте."
|
1118 |
-
|
1119 |
-
#~ msgid "Ok"
|
1120 |
-
#~ msgstr "Принять"
|
1121 |
-
|
1122 |
-
#~ msgid "This page contains important settings for SEO optimization."
|
1123 |
-
#~ msgstr "Эта страница содержит важные настройки SEO оптимизации."
|
1124 |
-
|
1125 |
-
#~ msgid "Header section"
|
1126 |
-
#~ msgstr "Раздел head"
|
1127 |
-
|
1128 |
-
#~ msgid "* Warning! Before activation, make sure your site is open https."
|
1129 |
-
#~ msgstr ""
|
1130 |
-
#~ "* Внимание! Перед активацией убедитесь, что ваш сайт открывается по https."
|
1131 |
-
|
1132 |
-
#~ msgid ""
|
1133 |
-
#~ "You are using the old version of PHP, please update the version of PHP to "
|
1134 |
-
#~ "5.3 and higher. You must deactivate the \"Clearfy - unused features\" "
|
1135 |
-
#~ "plugin, since it will not work with the old version of php."
|
1136 |
-
#~ msgstr ""
|
1137 |
-
#~ "Вы используете старую версию PHP, пожалуйста, обновите версию PHP до 5.3 "
|
1138 |
-
#~ "и выше. Вы должны деактивировать плагин «Clearfy - неиспользуемые "
|
1139 |
-
#~ "функции», так как он не будет работать со старой версией php."
|
1140 |
-
|
1141 |
-
#~ msgid ""
|
1142 |
-
#~ "You do not have sufficient permissions to activate plugins for this site."
|
1143 |
-
#~ msgstr ""
|
1144 |
-
#~ "У вас недостаточно прав для того, чтобы активировать плагины на этом "
|
1145 |
-
#~ "сайте."
|
1146 |
-
|
1147 |
-
#~ msgid ""
|
1148 |
-
#~ "* It works with the standard comment form, if in your subject the form is "
|
1149 |
-
#~ "spelled out manually-most likely it will not work!"
|
1150 |
-
#~ msgstr ""
|
1151 |
-
#~ "* Он работает со стандартной формой комментария, если в вашем предмете "
|
1152 |
-
#~ "форма изложена вручную - скорее всего, она не сработает!"
|
1153 |
-
|
1154 |
-
#~ msgid ""
|
1155 |
-
#~ "Works with the standard comment form, if the form is manually written in "
|
1156 |
-
#~ "your theme - it probably will not work!"
|
1157 |
-
#~ msgstr ""
|
1158 |
-
#~ "Работает со стандартной формой комментирования, если в Вашей теме форма "
|
1159 |
-
#~ "прописана вручную - скорей всего не сработает!"
|
1160 |
-
|
1161 |
-
#~ msgid "Urls pack"
|
1162 |
-
#~ msgstr "URL-адреса"
|
1163 |
-
|
1164 |
-
#~ msgid "Tasks"
|
1165 |
-
#~ msgstr "Задачи"
|
1166 |
-
|
1167 |
-
#~ msgid ""
|
1168 |
-
#~ "By default, WordPress generates all types of different RSS feeds for your "
|
1169 |
-
#~ "site. While RSS feeds can be useful if you are running a blog, businesses "
|
1170 |
-
#~ "might not always utilize these. Not every site out there has a blog.\n"
|
1171 |
-
#~ "<br><b>Clearfy</b>: Removes a link to the RSS-feed from the <head> "
|
1172 |
-
#~ "section, closes and puts the redirect from all RSS-feeds."
|
1173 |
-
#~ msgstr ""
|
1174 |
-
#~ "По умолчанию WordPress генерирует различные виды RSS-каналов для вашего "
|
1175 |
-
#~ "сайта. Иногда RSS-каналы могут быть полезны, если вы используете блог "
|
1176 |
-
#~ "например, но если у вас обычный одностаничник, то RSS для вас будет "
|
1177 |
-
#~ "бесполезен. <br><b>Clearfy</b>: Удаляет ссылку на RSS-канал из раздела "
|
1178 |
-
#~ "<head>, закрывает и ставит перенаправления от всех RSS-каналов."
|
1179 |
-
|
1180 |
-
#~ msgid ""
|
1181 |
-
#~ "Tired of spam in the comments? Do visitors leave \"blank\" comments for "
|
1182 |
-
#~ "the sake of a link to their site?\n"
|
1183 |
-
#~ "<br><b>Clearfy</b>: Removes the \"Site\" field from the comment form.\n"
|
1184 |
-
#~ "<br>--<br><span style=\"color:#dd2b19\"> * Works with the standard "
|
1185 |
-
#~ "comment form, if the form is manually written in your theme - it probably "
|
1186 |
-
#~ "will not work!</span>\n"
|
1187 |
-
#~ msgstr ""
|
1188 |
-
#~ "Надоел спам в комментариях? Посетители оставляют «пустые» комментарии "
|
1189 |
-
#~ "ради ссылки на свой сайт?\n"
|
1190 |
-
#~ "<br><b>Clearfy</b>: Убирает поле «Сайт» из формы комментирования.\n"
|
1191 |
-
#~ "<br>--<br><span style=\"color:#dd2b19\"> * Работает со стандартной формой "
|
1192 |
-
#~ "комментирования, если в Вашей теме форма прописана вручную - скорей всего "
|
1193 |
-
#~ "не сработает!</span>\n"
|
1194 |
-
|
1195 |
-
#~ msgid ""
|
1196 |
-
#~ "The first item in the toolbar goes wordpress logo and external links to "
|
1197 |
-
#~ "wordpress.org, WP forums and documentation.\n"
|
1198 |
-
#~ "\t\t<br><b>Clearfy</b>: Removes all links to wordpress.org from the "
|
1199 |
-
#~ "toolbar."
|
1200 |
-
#~ msgstr ""
|
1201 |
-
#~ "Первый элемент в панели инструментов идет логотип wordpress и внешние "
|
1202 |
-
#~ "ссылки на wordpress.org, WP форумах и документации.<br><b>Clearfy</b>: "
|
1203 |
-
#~ "удаляет все ссылки на wordpress.org с панели инструментов."
|
1204 |
-
|
1205 |
-
#~ msgid ""
|
1206 |
-
#~ "Remove meta generator <span class=\"wbcr-clearfy-recomended-text"
|
1207 |
-
#~ "\">(Recommended)</span>"
|
1208 |
-
#~ msgstr ""
|
1209 |
-
#~ "Удалить meta generator <span class=\"wbcr-clearfy-recomended-text"
|
1210 |
-
#~ "\">(рекомендуется)</span>"
|
1211 |
-
|
1212 |
-
#~ msgid ""
|
1213 |
-
#~ "Allows attacker to learn the version of WP installed on the site. This "
|
1214 |
-
#~ "meta tag has no useful function.\n"
|
1215 |
-
#~ "<br><b>Clearfy</b>: Removes the meta tag from the <head> section"
|
1216 |
-
#~ msgstr ""
|
1217 |
-
#~ "Позволяет злоумышленнику узнать версию Wordpress, установленую на вашем "
|
1218 |
-
#~ "сайте. Этот мета-тег не несет никакой пользы.<br><b>Clearfy</b>: удаляет "
|
1219 |
-
#~ "мета-тег из раздел <head>"
|
1220 |
-
|
1221 |
-
#~ msgid ""
|
1222 |
-
#~ "Hide author login <span class=\"wbcr-clearfy-recomended-text"
|
1223 |
-
#~ "\">(Recommended)</span>"
|
1224 |
-
#~ msgstr ""
|
1225 |
-
#~ "Убрать возможность узнать логин автора<span class=\"wbcr-clearfy-"
|
1226 |
-
#~ "recomended-text\">(Рекомендовано)</span>"
|
1227 |
-
|
1228 |
-
#~ msgid ""
|
1229 |
-
#~ "An attacker can find out the author's login, using a similar request to "
|
1230 |
-
#~ "get your site. mysite.com/?author=1\n"
|
1231 |
-
#~ "\t\t\t<br><b>Clearfy</b>: Sets the redirect to exclude the possibility of "
|
1232 |
-
#~ "obtaining a login."
|
1233 |
-
#~ msgstr ""
|
1234 |
-
#~ "Злоумышленник может узнать логин автора, с помощью подобного get запроса "
|
1235 |
-
#~ "mysite.com/?author=1\n"
|
1236 |
-
#~ "<br><b>Clearfy</b>: Предотвращает возможность узнать логин автора, "
|
1237 |
-
#~ "устанавливая перенаправление."
|
1238 |
-
|
1239 |
-
#~ msgid ""
|
1240 |
-
#~ "Hide errors when logging into the site <span class=\"wbcr-clearfy-"
|
1241 |
-
#~ "recomended-text\">(Recommended)</span>"
|
1242 |
-
#~ msgstr ""
|
1243 |
-
#~ "Спрятать ошибки при входе на сайт <span class=\"wbcr-clearfy-recomended-"
|
1244 |
-
#~ "text\">(Рекомендовано)</span>"
|
1245 |
-
|
1246 |
-
#~ msgid ""
|
1247 |
-
#~ "WP by default shows whether you entered a wrong login or incorrect "
|
1248 |
-
#~ "password, which allows attackers to understand if there is a certain user "
|
1249 |
-
#~ "on the site, and then start searching through the passwords.\n"
|
1250 |
-
#~ "<br><b>Clearfy</b>: Changes in the text of the error so that attackers "
|
1251 |
-
#~ "could not find the login."
|
1252 |
-
#~ msgstr ""
|
1253 |
-
#~ "Wordpress по умолчанию показывает, ввели ли вы неправильный логин или "
|
1254 |
-
#~ "неправильный пароль, что дает злоумышленникам понять, существует ли "
|
1255 |
-
#~ "определенный пользователь на сайте, а после начать перебор паролей.\n"
|
1256 |
-
#~ "<br><b>Clearfy</b>: Меняет текст ошибки так, чтобы злоумышленники не "
|
1257 |
-
#~ "смогли подобрать логин."
|
1258 |
-
|
1259 |
-
#~ msgid ""
|
1260 |
-
#~ "Disable X-Pingback <span class=\"wbcr-clearfy-recomended-text"
|
1261 |
-
#~ "\">(Recommended)</span>"
|
1262 |
-
#~ msgstr ""
|
1263 |
-
#~ "Убрать ссылку на X-Pingback и возможность спамить pingback-ами <span "
|
1264 |
-
#~ "class=\"wbcr-clearfy-recomended-text\">(Рекомендовано)</span>"
|
1265 |
-
|
1266 |
-
#~ msgid ""
|
1267 |
-
#~ "A pingback is basically an automated comment that gets created when "
|
1268 |
-
#~ "another blog links to you. A self-pingback is created when you link to an "
|
1269 |
-
#~ "article within your own blog. Pingbacks are essentially nothing more than "
|
1270 |
-
#~ "spam and simply waste resources.\n"
|
1271 |
-
#~ "\t\t<br><b>Clearfy</b>: Removes the server responses a reference to the "
|
1272 |
-
#~ "xmlrpc file."
|
1273 |
-
#~ msgstr ""
|
1274 |
-
#~ "Pingback по-существу автоматизированных комментарий, который создается, "
|
1275 |
-
#~ "когда другой блог ссылается на вас. Self-pingback создается, когда вы "
|
1276 |
-
#~ "оставили ссылку на статью в своем блоге. Pingbacks по существу являются "
|
1277 |
-
#~ "не более чем спам и пустая трата ресурсов вашего сайта.<br><b>Clearfy</"
|
1278 |
-
#~ "b>: Удаляет ссылку на xmlrpc-файл и ответ сервера."
|
1279 |
-
|
1280 |
-
#~ msgid ""
|
1281 |
-
#~ "Remove archives date <span class=\"wbcr-clearfy-recomended-text"
|
1282 |
-
#~ "\">(Recommended)</span>"
|
1283 |
-
#~ msgstr ""
|
1284 |
-
#~ "Удалить архивы дат <span class=\"wbcr-clearfy-recomended-text"
|
1285 |
-
#~ "\">(Рекомендовано)</span>"
|
1286 |
-
|
1287 |
-
#~ msgid ""
|
1288 |
-
#~ "Many duplicates in date archives. Imagine, in addition, that your article "
|
1289 |
-
#~ "will be displayed in the main and in the category, you will still receive "
|
1290 |
-
#~ "at least 3 duplicates: in archives by year, month and date, for example / "
|
1291 |
-
#~ "2016/2016/02 / / 2016/02/15.\n"
|
1292 |
-
#~ "<br><b>Clearfy</b>: Removes all pages with the date archives and puts a "
|
1293 |
-
#~ "redirect."
|
1294 |
-
#~ msgstr ""
|
1295 |
-
#~ "Огромное количество дублей в архивах дат. Представьте, кроме того, что "
|
1296 |
-
#~ "Ваша статья будет выводиться на главной и в категории, Вы еще получите "
|
1297 |
-
#~ "как минимум 3 дубля: в архивах по году, месяцу и дате, "
|
1298 |
-
#~ "например /2016/ /2016/02/ /2016/02/15.\n"
|
1299 |
-
#~ "<br><b>Clearfy</b>: Удаляет полностью архивы дат и ставит редирект."
|
1300 |
-
|
1301 |
-
#~ msgid ""
|
1302 |
-
#~ "Remove author archives <span class=\"wbcr-clearfy-recomended-text"
|
1303 |
-
#~ "\">(Recommended)</span>"
|
1304 |
-
#~ msgstr ""
|
1305 |
-
#~ "Удалить архивы автора <span class=\"wbcr-clearfy-recomended-text"
|
1306 |
-
#~ "\">(Рекомендовано)</span>"
|
1307 |
-
|
1308 |
-
#~ msgid ""
|
1309 |
-
#~ "If the site is only filled by you - a mandatory item. Allows you to get "
|
1310 |
-
#~ "rid of duplicates on user archives, for example /author/admin/.\n"
|
1311 |
-
#~ "<br><b>Clearfy</b>: Removes all pages with the author archives and puts a "
|
1312 |
-
#~ "redirect."
|
1313 |
-
#~ msgstr ""
|
1314 |
-
#~ "Если сайт заполняете только вы - это функция обязательна. Позволяет вам "
|
1315 |
-
#~ "избавиться от дубликатов страниц автора, например /author/admin /.\n"
|
1316 |
-
#~ "<br><b>Clearfy</b>: удаляет все страницы из архивов автора и ставит "
|
1317 |
-
#~ "перенаправление."
|
1318 |
-
|
1319 |
-
#~ msgid ""
|
1320 |
-
#~ "If you use tags only for the block Similar records, or do not use them at "
|
1321 |
-
#~ "all - it will be more correct to close them to avoid duplicates.\n"
|
1322 |
-
#~ "<br><b>Clearfy</b>: Removes all pages with the tag archives and puts a "
|
1323 |
-
#~ "redirect."
|
1324 |
-
#~ msgstr ""
|
1325 |
-
#~ "Если вы используете теги только для виджета \"Похожие записи\", либо не "
|
1326 |
-
#~ "используете их совсем - правильнее будет их закрыть, чтобы избежать "
|
1327 |
-
#~ "дублей.\n"
|
1328 |
-
#~ "<br><b>Clearfy</b>: Ставит редирект со страниц тегов на главную."
|
1329 |
-
|
1330 |
-
#~ msgid ""
|
1331 |
-
#~ "Remove attachment pages <span class=\"wbcr-clearfy-recomended-text"
|
1332 |
-
#~ "\">(Recommended)</span>"
|
1333 |
-
#~ msgstr ""
|
1334 |
-
#~ "Удалить страницы вложений <span class=\"wbcr-clearfy-recomended-text"
|
1335 |
-
#~ "\">(Рекомендовано)</span>"
|
1336 |
-
|
1337 |
-
#~ msgid ""
|
1338 |
-
#~ "Every of the pictures has its own page on the site. Such pages are "
|
1339 |
-
#~ "successfully indexed and create duplicates. The site can have thousands "
|
1340 |
-
#~ "of same-type attachment pages.\n"
|
1341 |
-
#~ "<br><b>Clearfy</b>: Removes attachment pages and puts a redirect."
|
1342 |
-
#~ msgstr ""
|
1343 |
-
#~ "Каждая загруженная картинка имеет свою страничку на сайте, состоящую "
|
1344 |
-
#~ "только из одной картинки. Такие страницы успешно индексируются и создают "
|
1345 |
-
#~ "дубли. На сайте могут быть тысячи однотипных страниц вложений.\n"
|
1346 |
-
#~ "<br><b>Clearfy</b>: Удаляет страницы вложений и ставит редирект на запись."
|
1347 |
-
|
1348 |
-
#~ msgid ""
|
1349 |
-
#~ "Remove post pagination <span class=\"wbcr-clearfy-recomended-text"
|
1350 |
-
#~ "\">(Recommended)</span>"
|
1351 |
-
#~ msgstr ""
|
1352 |
-
#~ "Удалить постраничную навигацию записей <span class=\"wbcr-clearfy-"
|
1353 |
-
#~ "recomended-text\">(Рекомендовано)</span>"
|
1354 |
-
|
1355 |
-
#~ msgid ""
|
1356 |
-
#~ "In WordPress, any post can be divided into parts (pages), each part will "
|
1357 |
-
#~ "have its own address. But this functionality is rarely used, but it can "
|
1358 |
-
#~ "create trouble for you. For example, you can add a number to the address "
|
1359 |
-
#~ "of any entry of your blog, /privet-mir/1/ - the post itself will open, "
|
1360 |
-
#~ "which will be a duplicate. You can substitute any number.\n"
|
1361 |
-
#~ "<br><b>Clearfy</b>: Removes the pagination from the post and puts a "
|
1362 |
-
#~ "redirect. Example: /post-name/number"
|
1363 |
-
#~ msgstr ""
|
1364 |
-
#~ "В WordPress любое содержание можно разделить на части (страницы), каждая "
|
1365 |
-
#~ "часть будет иметь свой собственный адрес. Эта функциональность "
|
1366 |
-
#~ "используется редко, но это может создать проблемы для вас. Например вы "
|
1367 |
-
#~ "можете добавить номер в адрес любой записи вашего блога, /hello-world/1/ "
|
1368 |
-
#~ "- откроет текущую страницу, которая будет дублироваться.\n"
|
1369 |
-
#~ " <br><b>Clearfy</b>: предотвращает создание пагинации для страницы и "
|
1370 |
-
#~ "ставит перенаправление на ссылки такого типа: /privet-mir/1/ "
|
1371 |
-
|
1372 |
-
#~ msgid ""
|
1373 |
-
#~ "Remove ?replytocom <span class=\"wbcr-clearfy-recomended-text"
|
1374 |
-
#~ "\">(Recommended)</span>"
|
1375 |
-
#~ msgstr ""
|
1376 |
-
#~ "Удалить ?replytocom <span class=\"wbcr-clearfy-recomended-text"
|
1377 |
-
#~ "\">(Рекомендовано)</span>"
|
1378 |
-
|
1379 |
-
#~ msgid ""
|
1380 |
-
#~ "WordPress adds ?replytocom to the link \"Reply\" in the comments, if you "
|
1381 |
-
#~ "use hierarchical comments.\n"
|
1382 |
-
#~ "<br><b>Clearfy</b>: ?relpytocom remove and and puts a redirect."
|
1383 |
-
#~ msgstr ""
|
1384 |
-
#~ "WordPress добавляет ?replytocom к ссылке «Ответ» в комментариях, если вы "
|
1385 |
-
#~ "используете иерархические комментарии.\n"
|
1386 |
-
#~ "<br><b>Clearfy</b>: удаляет ?relpytocom и ставит перенаправление."
|
1387 |
-
|
1388 |
-
#~ msgid ""
|
1389 |
-
#~ "Remove REST API Links <span class=\"wbcr-clearfy-recomended-text"
|
1390 |
-
#~ "\">(Recommended)</span>"
|
1391 |
-
#~ msgstr ""
|
1392 |
-
#~ "Удалите остальные API ссылки <span class=\"wbcr-clearfy-recomended-text"
|
1393 |
-
#~ "\">(рекомендуется)</span>"
|
1394 |
-
|
1395 |
-
#~ msgid ""
|
1396 |
-
#~ "The WordPress REST API provides API endpoints for WordPress data types "
|
1397 |
-
#~ "that allow developers to interact with sites remotely by sending and "
|
1398 |
-
#~ "receiving JSON (JavaScript Object Notation) objects. However, a lot of "
|
1399 |
-
#~ "sites don’t use this, and therefore in most cases, it is just unnecessary "
|
1400 |
-
#~ "code.\n"
|
1401 |
-
#~ "<br><b>Clearfy:</b> Removes REST API link tag from the front end and the "
|
1402 |
-
#~ "REST API header link from page requests."
|
1403 |
-
#~ msgstr ""
|
1404 |
-
#~ "WordPress REST API предоставляет API для работы с WordPress данными, это "
|
1405 |
-
#~ "позволяет разработчикам взаимодействовать с сайтами удаленно, посредством "
|
1406 |
-
#~ "отправки и получения данных в формате JSON (JavaScript Object Notation). "
|
1407 |
-
#~ "Однако многие сайты не используют это, и поэтому в большинстве случаев, "
|
1408 |
-
#~ "это только ненужный код.\n"
|
1409 |
-
#~ "<br><b>Clearfy:</b> Отключает REST API и удаляет все ссылки из исходного "
|
1410 |
-
#~ "кода страницы."
|
1411 |
-
|
1412 |
-
#~ msgid ""
|
1413 |
-
#~ "Disable Emojis <span class=\"wbcr-clearfy-recomended-text"
|
1414 |
-
#~ "\">(Recommended)</span>"
|
1415 |
-
#~ msgstr ""
|
1416 |
-
#~ "Отключить Emojis (эмоции)<span class=\"wbcr-clearfy-recomended-text"
|
1417 |
-
#~ "\">(Рекомендовано)</span>"
|
1418 |
-
|
1419 |
-
#~ msgid ""
|
1420 |
-
#~ "Emojis are fun and all, but if you are aren’t using them they actually "
|
1421 |
-
#~ "load a JavaScript file (wp-emoji-release.min.js) on every page of your "
|
1422 |
-
#~ "website. For a lot of businesses, this is not needed and simply adds load "
|
1423 |
-
#~ "time to your site. So we recommend disabling this.\n"
|
1424 |
-
#~ "<br><b>Clearfy:</b> Removes WordPress Emojis JavaScript file (wp-emoji-"
|
1425 |
-
#~ "release.min.js)."
|
1426 |
-
#~ msgstr ""
|
1427 |
-
#~ "Emojis это смайлы (эмоции), если вы не используете их на своем сайте, в "
|
1428 |
-
#~ "исходном коде страницы будет загружаться JavaScript файл (wp-emoji-"
|
1429 |
-
#~ "release.min.js), на каждой странице вашего веб-сайта. Для многих сайтов "
|
1430 |
-
#~ "это не требуется и просто увеличивает время загрузки страницы. Поэтому мы "
|
1431 |
-
#~ "рекомендуем отключить это.\n"
|
1432 |
-
#~ "<br><b>Clearfy:</b> Удаляет код Emojis из исходного кода страницы"
|
1433 |
-
|
1434 |
-
#~ msgid ""
|
1435 |
-
#~ "Remove dns-prefetch <span class=\"wbcr-clearfy-recomended-text"
|
1436 |
-
#~ "\">(Recommended)</span>"
|
1437 |
-
#~ msgstr ""
|
1438 |
-
#~ "Удалить dns-prefetch <span class=\"wbcr-clearfy-recomended-text"
|
1439 |
-
#~ "\">(Рекомендовано)</span>"
|
1440 |
-
|
1441 |
-
#~ msgid ""
|
1442 |
-
#~ "Since version 4.6.1 in WordPress there are new links in the section <"
|
1443 |
-
#~ "head> this type of: <code><link rel=\"dns-prefetch\" href=\"//s.w."
|
1444 |
-
#~ "org\"></code>\n"
|
1445 |
-
#~ "<br><b>Clearfy</b>: Removes dns-prefetch links from the <head> "
|
1446 |
-
#~ "section"
|
1447 |
-
#~ msgstr ""
|
1448 |
-
#~ "Начиная с версии 4.6.1 в WordPress появляются новые ссылки в секции <"
|
1449 |
-
#~ "head> пример: <code><link rel=\"dns-prefetch\" href = \"//s.w.org"
|
1450 |
-
#~ "\"></code>\n"
|
1451 |
-
#~ "<br><b>Clearfy</b>: Удаляет ссылки из секции <head>"
|
1452 |
-
|
1453 |
-
#~ msgid ""
|
1454 |
-
#~ "Remove RSD Link <span class=\"wbcr-clearfy-recomended-text"
|
1455 |
-
#~ "\">(Recommended)</span>"
|
1456 |
-
#~ msgstr ""
|
1457 |
-
#~ "Удаляет RSD ссылку <span class=\"wbcr-clearfy-recomended-text"
|
1458 |
-
#~ "\">(Рекомендовано)</span>"
|
1459 |
-
|
1460 |
-
#~ msgid ""
|
1461 |
-
#~ "The above link is used by blog clients. If you edit your site from your "
|
1462 |
-
#~ "browser then you don’t need this. It is also used by some 3rd party "
|
1463 |
-
#~ "applications that utilize XML-RPC requests. In most cases, this is just "
|
1464 |
-
#~ "unnecessary code.<br><code><link rel=\"EditURI\" type=\"application/rsd"
|
1465 |
-
#~ "+xml\" title=\"RSD\" href=\"https://yourdomain.com/xmlrpc.php?rsd\"></"
|
1466 |
-
#~ "code>\n"
|
1467 |
-
#~ "<br><b>Clearfy</b>: Remove RSD (Real Simple Discovery) link tag."
|
1468 |
-
#~ msgstr ""
|
1469 |
-
#~ "Эта ссылка используется клиентами блога. Если вы редактируете сайт из "
|
1470 |
-
#~ "вашего браузера, то вам не нужно это. Она также используется в некоторых "
|
1471 |
-
#~ "приложениях, которые используют XML-RPC-запросы. В большинстве случаев "
|
1472 |
-
#~ "это только ненужный код.<br> Пример: <code><link rel=\"EditURI\" type="
|
1473 |
-
#~ "\"application/rsd+xml\" title=\"RSD\" href=\"https://yourdomain.com/"
|
1474 |
-
#~ "xmlrpc.php?rsd\"></code>\n"
|
1475 |
-
#~ "<br><b>Clearfy</b>: Удаляет RSD link тег"
|
1476 |
-
|
1477 |
-
#~ msgid ""
|
1478 |
-
#~ "Remove wlwmanifest Link <span class=\"wbcr-clearfy-recomended-text"
|
1479 |
-
#~ "\">(Recommended)</span>"
|
1480 |
-
#~ msgstr ""
|
1481 |
-
#~ "Удалить wlwmanifest Link <span class=\"wbcr-clearfy-recomended-text"
|
1482 |
-
#~ "\">(рекомендуется)</span>"
|
1483 |
-
|
1484 |
-
#~ msgid ""
|
1485 |
-
#~ "<code><link rel=\"wlwmanifest\" type=\"application/wlwmanifest+xml\" "
|
1486 |
-
#~ "href=\"https://yourdomain.com/wp-includes/wlwmanifest.xml\"></"
|
1487 |
-
#~ "code><br>This link is actually used by Windows Live Writer. If you don’t "
|
1488 |
-
#~ "know use Windows Live Writer, which we are guessing you don’t, this is "
|
1489 |
-
#~ "just unnecessary code.\n"
|
1490 |
-
#~ "<br><b>Clearfy</b>: Remove wlwmanifest (Windows Live Writer) link tag."
|
1491 |
-
#~ msgstr ""
|
1492 |
-
#~ "<code><link rel=\"wlwmanifest\" type=\"application/wlwmanifest+xml\" "
|
1493 |
-
#~ "href=\"https://yourdomain.com/wp-includes/wlwmanifest.xml\"></"
|
1494 |
-
#~ "code><br>Эта ссылка используется фактически Windows Live Writer. Если вы "
|
1495 |
-
#~ "не знаете, как использовать Windows Live Writer, то это только ненужный "
|
1496 |
-
#~ "код.\n"
|
1497 |
-
#~ "<br><b>Clearfy</b>: Удаляет тег link wlwmanifest (Windows Live Writer)."
|
1498 |
-
|
1499 |
-
#~ msgid ""
|
1500 |
-
#~ "Remove Shortlink <span class=\"wbcr-clearfy-recomended-text"
|
1501 |
-
#~ "\">(Recommended)</span>"
|
1502 |
-
#~ msgstr ""
|
1503 |
-
#~ "Удалить короткие ссылки <span class=\"wbcr-clearfy-recomended-text"
|
1504 |
-
#~ "\">(Рекомендовано)</span>"
|
1505 |
-
|
1506 |
-
#~ msgid ""
|
1507 |
-
#~ "By default, the following tag shows up in every WordPress install."
|
1508 |
-
#~ "<br><code><link rel=\"shortlink\" href=\"https://domain.com?p=712\">"
|
1509 |
-
#~ "</code><br>This is used for a shortlink to your pages and posts. However, "
|
1510 |
-
#~ "if you are already using pretty permalinks, such as domain.com/post, then "
|
1511 |
-
#~ "there is no reason to keep this, it is just unnecessary code.\n"
|
1512 |
-
#~ "<br><b>Clearfy</b>: Remove Shortlink link tag."
|
1513 |
-
#~ msgstr ""
|
1514 |
-
#~ "По умолчанию следующий тег печатается на каждой странице ваших записей и "
|
1515 |
-
#~ "страниц.<br><code><link rel=\"shortlink\" href=\"https://domain.com?"
|
1516 |
-
#~ "p=712\"></code><br>Это используется, как короткая ссылка на вашу "
|
1517 |
-
#~ "статью. Если вы используете постоянные ссылки, то это не нужный код.\n"
|
1518 |
-
#~ "<br><b>Clearfy</b>: Удаляет тег link shortlink."
|
1519 |
-
|
1520 |
-
#~ msgid ""
|
1521 |
-
#~ "Remove links to previous, next post <span class=\"wbcr-clearfy-recomended-"
|
1522 |
-
#~ "text\">(Recommended)</span>"
|
1523 |
-
#~ msgstr ""
|
1524 |
-
#~ "Удалить ссылки следующая, предыдущая запись <span class=\"wbcr-clearfy-"
|
1525 |
-
#~ "recomended-text\">(Рекомендовано)</span>"
|
1526 |
-
|
1527 |
-
#~ msgid ""
|
1528 |
-
#~ "If you use Wordpress as a CMS, then you can delete these links, they can "
|
1529 |
-
#~ "only come in handy for a blog.\n"
|
1530 |
-
#~ "<br><b>Clearfy</b>: Remove the previous and next post links within the "
|
1531 |
-
#~ "wp_head of your wordpress theme."
|
1532 |
-
#~ msgstr ""
|
1533 |
-
#~ "Если вы используете Wordpress как CMS (а не блог), то вы можете удалить "
|
1534 |
-
#~ "эти ссылки, но для блога они могут быть полезны.<br><b>Clearfy</b>: "
|
1535 |
-
#~ "Удаляет ссылки предидущая и следующая запись в head вашей темы wordpress."
|
1536 |
-
|
1537 |
-
#~ msgid ""
|
1538 |
-
#~ "Remove .recentcomments styles <span class=\"wbcr-clearfy-recomended-text"
|
1539 |
-
#~ "\">(Recommended)</span>"
|
1540 |
-
#~ msgstr ""
|
1541 |
-
#~ "Удалить стили .recentcomments <span class=\"wbcr-clearfy-recomended-text"
|
1542 |
-
#~ "\">(Рекомендовано)</span>"
|
1543 |
-
|
1544 |
-
#~ msgid ""
|
1545 |
-
#~ "WP by default for the widget \"recent comments\" prescribes in the code "
|
1546 |
-
#~ "styles that are almost impossible to change, because to them apply! "
|
1547 |
-
#~ "important.\n"
|
1548 |
-
#~ "<br><b>Clearfy</b>: Removes .recentcomments styles from head section."
|
1549 |
-
#~ msgstr ""
|
1550 |
-
#~ "Wordpress по умолчанию для виджета \"Последние комментари\" прописывает в "
|
1551 |
-
#~ "стилях код, которые почти невозможно изменить, потому что к ним "
|
1552 |
-
#~ "применяются значение !important.\n"
|
1553 |
-
#~ "<br><b>Clearfy</b>: удаляет .recentcomments стили из head секции."
|
1554 |
-
|
1555 |
-
#~ msgid ""
|
1556 |
-
#~ "Automatically set the alt attribute <span class=\"wbcr-clearfy-recomended-"
|
1557 |
-
#~ "text\">(Recommended)</span>"
|
1558 |
-
#~ msgstr ""
|
1559 |
-
#~ "Автоматически устанавливать атрибут alt <span class=\"wbcr-clearfy-"
|
1560 |
-
#~ "recomended-text\">(Рекомендовано)</span>"
|
1561 |
-
|
1562 |
-
#~ msgid ""
|
1563 |
-
#~ "The alt attribute is mandatory, so most SEO experts say. If you missed or "
|
1564 |
-
#~ "did not fill it at all, it will be automatically assigned and will be "
|
1565 |
-
#~ "equal to the title of the article.\n"
|
1566 |
-
#~ "\t\t\t\t<br><b>Clearfy</b>: Replaces the <code><img scr=\"\" alt="
|
1567 |
-
#~ "\"\"></code>, on attribute with an article name <code><img scr=\"\" "
|
1568 |
-
#~ "alt=\"Hello world\"></code>"
|
1569 |
-
#~ msgstr ""
|
1570 |
-
#~ "Атрибут alt является обязательным, поэтому большинство SEO экспертов "
|
1571 |
-
#~ "говорят. Если вы пропустили, или не заполнили его, он будет автоматически "
|
1572 |
-
#~ "задан из названия статьи.\n"
|
1573 |
-
#~ "<br><b>Clearfy</b>: Заменяет <code><img scr=\"\" alt=\"\"></code>, "
|
1574 |
-
#~ "на атрибут с названием статьи <code><img scr=\"\" alt=\"Hello world"
|
1575 |
-
#~ "\"></code>"
|
1576 |
-
|
1577 |
-
#~ msgid ""
|
1578 |
-
#~ "Replace external links in comments on the JavaScript code <span class="
|
1579 |
-
#~ "\"wbcr-clearfy-recomended-text\">(Recommended)</span>"
|
1580 |
-
#~ msgstr ""
|
1581 |
-
#~ "Заменить внешние ссылки в комментариях на JavaScript код <span class="
|
1582 |
-
#~ "\"wbcr-clearfy-recomended-text\">(Рекомендовано)</span>"
|
1583 |
-
|
1584 |
-
#~ msgid ""
|
1585 |
-
#~ "Superfluous external links from comments, which can be typed from a dozen "
|
1586 |
-
#~ "and more for one article, do not bring anything good for promotion.\n"
|
1587 |
-
#~ "<br><b>Clearfy</b>: Replaces the links of this kind of <code><a href="
|
1588 |
-
#~ "\"http://yourdomain.com\" rel=\"nofollow\">example</a></code>, "
|
1589 |
-
#~ "on links of this kind <code><span class=\"wbcr-clearfy-pseoudo-link\" "
|
1590 |
-
#~ "data-uri=\"http://yourdomain.com\">example</span></code>"
|
1591 |
-
#~ msgstr ""
|
1592 |
-
#~ "Внешние ссылки в комментариях, которых может быть десятки или больше на "
|
1593 |
-
#~ "одной странице, могут ухудшить продвижение вашего сайта.\n"
|
1594 |
-
#~ "\n"
|
1595 |
-
#~ "<br><b>Clearfy</b>: Заменяет ссылки <code><a href=\"http://yourdomain."
|
1596 |
-
#~ "com\" rel=\"nofollow\">example</a></code> , на span тег и "
|
1597 |
-
#~ "устанавливает переход с помощью JavaScript<code><span class=\"wbcr-"
|
1598 |
-
#~ "clearfy-pseoudo-link\" data-uri=\"http://yourdomain.com\">example</"
|
1599 |
-
#~ "span></code>"
|
1600 |
-
|
1601 |
-
#~ msgid ""
|
1602 |
-
#~ "Replace external links from comment authors on the JavaScript code <span "
|
1603 |
-
#~ "class=\"wbcr-clearfy-recomended-text\">(Recommended)</span>"
|
1604 |
-
#~ msgstr ""
|
1605 |
-
#~ "Заменить внешние ссылки от авторов комментариев на код JavaScript <span "
|
1606 |
-
#~ "class=\"wbcr-clearfy-recomended-text\">(Recommended)</span>"
|
1607 |
-
|
1608 |
-
#~ msgid ""
|
1609 |
-
#~ "Up to 90 percent of comments in the blog can be left for the sake of an "
|
1610 |
-
#~ "external link. Even nofollow from page weight loss here does not help.\n"
|
1611 |
-
#~ "<br><b>Clearfy</b>: Replaces the links of the authors of comments on the "
|
1612 |
-
#~ "JavaScript code, it is impossible to distinguish it from usual links.\n"
|
1613 |
-
#~ "<br>--<br><i>In some Wordpress topics this may not work.</i>"
|
1614 |
-
#~ msgstr ""
|
1615 |
-
#~ "До 90 процентов комментариев в блоге оставляют ради внешней ссылки. Не "
|
1616 |
-
#~ "поможет даже nofollow от потери веса страницы.\n"
|
1617 |
-
#~ "<br><b>Clearfy</b>: Заменяет ссылки авторов комментариев на JavaScript "
|
1618 |
-
#~ "код, его невозможно отличить от обычной ссылки.\n"
|
1619 |
-
#~ "<br>--<br><i>В некоторых темах Wordpress это может не сработать.</i>"
|
1620 |
-
|
1621 |
-
#~ msgid ""
|
1622 |
-
#~ "Automatically insert the Last Modified header <span class=\"wbcr-clearfy-"
|
1623 |
-
#~ "recomended-text\">(Recommended)</span>"
|
1624 |
-
#~ msgstr ""
|
1625 |
-
#~ "Автоматически вставлять заголовок Last Modified <span class=\"wbcr-"
|
1626 |
-
#~ "clearfy-recomended-text\">(Рекомендовано)</span>"
|
1627 |
-
|
1628 |
-
#~ msgid ""
|
1629 |
-
#~ "You can specify a page mask, for example: /s= or /manager/. All pages "
|
1630 |
-
#~ "that contain the string will be excluded. Each exclude must begin with a "
|
1631 |
-
#~ "new line."
|
1632 |
-
#~ msgstr ""
|
1633 |
-
#~ "Можно указать маску страницы, например: /s = или /manager/. Все страницы, "
|
1634 |
-
#~ "которые содержат эти строки, будут исключены. Каждое исключение должно "
|
1635 |
-
#~ "начинаться с новой строки."
|
1636 |
-
|
1637 |
-
#~ msgid ""
|
1638 |
-
#~ "Return an If-Modified-Since responce <span class=\"wbcr-clearfy-"
|
1639 |
-
#~ "recomended-text\">(Recommended)</span>"
|
1640 |
-
#~ msgstr ""
|
1641 |
-
#~ "Возвращать заголовок If-Modified-Since <span class=\"wbcr-clearfy-"
|
1642 |
-
#~ "recomended-text\">(Recommended)</span>"
|
1643 |
-
|
1644 |
-
#~ msgid ""
|
1645 |
-
#~ "Remove duplicate names in breadcrumbs WP SEO by Yoast <span class=\"wbcr-"
|
1646 |
-
#~ "clearfy-recomended-text\">(Recommended)</span>"
|
1647 |
-
#~ msgstr ""
|
1648 |
-
#~ "Удалить дубли имен в хлебных крошках WP SEO Yoast <span class=\"wbcr-"
|
1649 |
-
#~ "clearfy-recomended-text\">(Рекомендовано)</span>"
|
1650 |
-
|
1651 |
-
#~ msgid ""
|
1652 |
-
#~ "The last element in the breadcrumbs in the Yoast SEO plugin duplicates "
|
1653 |
-
#~ "the title of the article. Some SEO-specialists consider this duplication "
|
1654 |
-
#~ "to be superfluous.\n"
|
1655 |
-
#~ "<br><b>Clearfy</b>: Removes duplication of the name in the breadcrumbs of "
|
1656 |
-
#~ "the WP SEO plugin from Yoast."
|
1657 |
-
#~ msgstr ""
|
1658 |
-
#~ "Последний элемент в хлебных крошках Yoast SEO дублирует название статьи. "
|
1659 |
-
#~ "Некоторые SEO-специалисты считают это дублирование излишним.\n"
|
1660 |
-
#~ "<br><b>Clearfy</b>: Удаляет последний элемент в хлебных крошках Yoast SEO."
|
1661 |
-
|
1662 |
-
#~ msgid ""
|
1663 |
-
#~ "Remove the tag <image:image> from XML site map <span class=\"wbcr-"
|
1664 |
-
#~ "clearfy-recomended-text\">(Recommended)</span>"
|
1665 |
-
#~ msgstr ""
|
1666 |
-
#~ "Удалить тег <image:image> из XML карты сайта <span class=\"wbcr-"
|
1667 |
-
#~ "clearfy-recomended-text\">(Рекомендовано)</span>"
|
1668 |
-
|
1669 |
-
#~ msgid ""
|
1670 |
-
#~ "Yandex.Webmaster swears on a standard XML card from the plugin Yoast, tk. "
|
1671 |
-
#~ "it has a specific tag <image:image>.\n"
|
1672 |
-
#~ "<br><b>Clearfy</b>: Remove the tag <image:image> from XML site map "
|
1673 |
-
#~ "of the plugin Yoast SEO.\n"
|
1674 |
-
#~ "<br>--<br><span style=\"color:#dd2b19\">Attention! After activation, turn "
|
1675 |
-
#~ "off the site map and enable it back to regenerate it.</span>\n"
|
1676 |
-
#~ "<br><span style=\"color:#dd2b19\">* In older versions of Yoast SEO may "
|
1677 |
-
#~ "not work - update the plugin Yoast</span>"
|
1678 |
-
#~ msgstr ""
|
1679 |
-
#~ "Яндекс вебмастер ругается на стандартной карты XML из плагина Yoast SEO, "
|
1680 |
-
#~ "из-за определенного тега <image:image>.\n"
|
1681 |
-
#~ "<br><b>Clearfy</b>: Удаляет тег <image:image> из XML карта сайта "
|
1682 |
-
#~ "плагин Yoast SEO.\n"
|
1683 |
-
#~ "<br>--<br><span style=\"color:#dd2b19\">Внимание! После активации, "
|
1684 |
-
#~ "выключите карту сайта и включите ее обратно, чтобы обновить ее.</span>\n"
|
1685 |
-
#~ "<br><span style=\"color:#dd2b19\">* В более старых версиях Yoast SEO не "
|
1686 |
-
#~ "может работать - обновите плагин Yoast SEO</span>"
|
1687 |
-
|
1688 |
-
#~ msgid ""
|
1689 |
-
#~ "Remove comment from <head> section <span class=\"wbcr-clearfy-"
|
1690 |
-
#~ "recomended-text\">(Recommended)</span>"
|
1691 |
-
#~ msgstr ""
|
1692 |
-
#~ "Удалить комментарии из секции <head> <span class=\"wbcr-clearfy-"
|
1693 |
-
#~ "recomended-text\">(Рекомендовано)</span>"
|
1694 |
-
|
1695 |
-
#~ msgid ""
|
1696 |
-
#~ "The Yoast SEO plugin displays a comment of the form <!-- This site is "
|
1697 |
-
#~ "optimized with the Yoast SEO plugin v3.1.1 - https://yoast.com/wordpress/"
|
1698 |
-
#~ "plugins/seo/ --> in <head> section\n"
|
1699 |
-
#~ "<br><b>Clearfy</b>: Removes the Yoast SEO plugin comment of their section "
|
1700 |
-
#~ "<head>."
|
1701 |
-
#~ msgstr ""
|
1702 |
-
#~ "Yoast SEO плагин отображает комментарий формы <!-- This site is "
|
1703 |
-
#~ "optimized with the Yoast SEO plugin v3.1.1 - https://yoast.com/wordpress/"
|
1704 |
-
#~ "plugins/seo/ --> в секции <head>\n"
|
1705 |
-
#~ "<br><b>Clearfy</b>: Удаляет комментрии Yoast SEO из <head> ."
|
1706 |
-
|
1707 |
-
#~ msgid "Exclude pages:</span>"
|
1708 |
-
#~ msgstr "</span>"
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: clearfy\n"
|
4 |
+
"POT-Creation-Date: 2018-01-22 00:02+0300\n"
|
5 |
+
"PO-Revision-Date: 2018-01-22 00:11+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"
|
18 |
"X-Poedit-SearchPath-0: .\n"
|
19 |
"X-Poedit-SearchPathExcluded-0: libs\n"
|
20 |
|
21 |
+
#: admin/boot.php:32
|
22 |
msgid "Disable plugin updates"
|
23 |
msgstr "Отключить обновления плагинов"
|
24 |
|
25 |
+
#: admin/boot.php:38
|
26 |
msgid "Disable theme updates"
|
27 |
msgstr "Отключить обновления тем"
|
28 |
|
29 |
+
#: admin/boot.php:44 admin/pages/updates.php:87
|
30 |
msgid "Disable Automatic Translation Updates"
|
31 |
msgstr "Отключить автоматические обновления переводов"
|
32 |
|
33 |
+
#: admin/boot.php:49
|
34 |
msgid "Disable wordPress core updates"
|
35 |
msgstr "Отключить обновления ядра Wordpress"
|
36 |
|
37 |
+
#: admin/boot.php:55 admin/pages/updates.php:121
|
38 |
msgid "Enable updates for VCS Installations"
|
39 |
msgstr "Включить обновления для установок VCS"
|
40 |
|
41 |
+
#: admin/boot.php:60
|
42 |
+
msgid "Plugin filters"
|
43 |
+
msgstr "Фильтры плагинов"
|
44 |
|
45 |
+
#: admin/boot.php:72
|
46 |
+
msgid "One click disable all updates"
|
47 |
+
msgstr "Отключить все обновления в один клик"
|
48 |
+
|
49 |
+
#: admin/boot.php:84
|
50 |
msgid "Get ultimate plugin free"
|
51 |
msgstr "Получите полную версию плагина бесплатно"
|
52 |
|
53 |
+
#: admin/pages/advanced.php:29
|
54 |
+
msgid "Advanced"
|
55 |
+
msgstr "Дополнительно"
|
56 |
+
|
57 |
+
#: admin/pages/advanced.php:40
|
58 |
+
msgid "Please, wait 90 sec. to see the forced automatic update result."
|
59 |
+
msgstr ""
|
60 |
+
"Пожалуйста, подождите 90 сек., чтобы увидеть результат принудительного "
|
61 |
+
"автоматического обновления."
|
62 |
+
|
63 |
+
#: admin/pages/advanced.php:50
|
64 |
+
msgid "Force Automatic Updates"
|
65 |
+
msgstr "Принудительное автоматическое обновление"
|
66 |
+
|
67 |
+
#: admin/pages/advanced.php:51
|
68 |
+
msgid ""
|
69 |
+
"This will attempt to force automatic updates. This is useful for debugging."
|
70 |
+
msgstr ""
|
71 |
+
"Эта возможность вам понадобится для проверки автоматических обновлений. "
|
72 |
+
"Настройте автоматические обновления и нажмите на эту кнопку, чтобы проверить "
|
73 |
+
"работают они или нет."
|
74 |
+
|
75 |
+
#: admin/pages/advanced.php:52
|
76 |
+
msgid "Force update"
|
77 |
+
msgstr "Запустить обновление"
|
78 |
+
|
79 |
+
#: admin/pages/plugins.php:33
|
80 |
+
msgid "Plugins"
|
81 |
+
msgstr "Плагины"
|
82 |
+
|
83 |
+
#: admin/pages/plugins.php:48
|
84 |
+
msgid "This page you can individually disable plugin updates and auto updates."
|
85 |
+
msgstr ""
|
86 |
+
"На этой странице вы можете индивидуально отключить обновления и "
|
87 |
+
"автообновления плагинов."
|
88 |
+
|
89 |
+
#: admin/pages/plugins.php:51
|
90 |
+
msgid ""
|
91 |
+
"- To disable updates individually choose the “Manual or automatic plugin "
|
92 |
+
"updates” option then save settings and comeback to this page."
|
93 |
+
msgstr ""
|
94 |
+
"Чтобы индивидуально отключить обновления, выберите опцию “Ручные или "
|
95 |
+
"автоматические обновления плагинов”, сохраните настройки и вернитесь на эту "
|
96 |
+
"страницу."
|
97 |
+
|
98 |
+
#: admin/pages/plugins.php:55
|
99 |
+
msgid ""
|
100 |
+
"- To configure plugin auto updates individually, choose the “Enable auto "
|
101 |
+
"updates” option then save settings and comeback to this page."
|
102 |
+
msgstr ""
|
103 |
+
"Чтобы индивидуально настроить автоматические обновления плагинов, выберите "
|
104 |
+
"опцию “Автоматические обновления”, сохраните настройки и вернитесь на эту "
|
105 |
+
"страницу."
|
106 |
+
|
107 |
+
#: admin/pages/plugins.php:211
|
108 |
+
msgid "Bulk actions"
|
109 |
+
msgstr "Массовые действия"
|
110 |
+
|
111 |
+
#: admin/pages/plugins.php:212 admin/pages/plugins.php:287
|
112 |
+
#: admin/pages/plugins.php:292 admin/pages/updates.php:61
|
113 |
+
#: admin/pages/updates.php:76 admin/pages/updates.php:97
|
114 |
+
msgid "Disable updates"
|
115 |
+
msgstr "Отключить все обновления"
|
116 |
+
|
117 |
+
#: admin/pages/plugins.php:213 admin/pages/plugins.php:289
|
118 |
+
msgid "Enable updates"
|
119 |
+
msgstr "Включить обновления"
|
120 |
+
|
121 |
+
#: admin/pages/plugins.php:214 admin/pages/plugins.php:299
|
122 |
+
#: admin/pages/plugins.php:305
|
123 |
+
msgid "Enable auto-updates"
|
124 |
+
msgstr "Включить авто-обновления"
|
125 |
+
|
126 |
+
#: admin/pages/plugins.php:215 admin/pages/plugins.php:297
|
127 |
+
#: admin/pages/plugins.php:303
|
128 |
+
msgid "Disable auto-updates"
|
129 |
+
msgstr "Отключить авто-обновления"
|
130 |
+
|
131 |
+
#: admin/pages/plugins.php:217
|
132 |
+
msgid "Apply"
|
133 |
+
msgstr "Применить"
|
134 |
+
|
135 |
+
#: admin/pages/plugins.php:224
|
136 |
+
msgid "Plugin"
|
137 |
+
msgstr "Плагин"
|
138 |
+
|
139 |
+
#: admin/pages/plugins.php:226
|
140 |
+
msgid "Description"
|
141 |
+
msgstr "Описание"
|
142 |
+
|
143 |
+
#: admin/pages/plugins.php:273
|
144 |
+
msgid "Select"
|
145 |
+
msgstr "Выбор"
|
146 |
+
|
147 |
+
#: admin/pages/updates.php:25
|
148 |
msgid "Updates manager"
|
149 |
msgstr "Менеджер обновлений"
|
150 |
|
151 |
+
#: admin/pages/updates.php:39
|
152 |
msgid "Updates"
|
153 |
msgstr "Обновления"
|
154 |
|
155 |
+
#: admin/pages/updates.php:40
|
156 |
msgid "General"
|
157 |
msgstr "Основные"
|
158 |
|
159 |
+
#: admin/pages/updates.php:57
|
160 |
msgid "Plugin Updates"
|
161 |
msgstr "Обновления плагина"
|
162 |
|
163 |
+
#: admin/pages/updates.php:59 admin/pages/updates.php:74
|
164 |
msgid "Manual updates"
|
165 |
msgstr "Ручные"
|
166 |
|
167 |
+
#: admin/pages/updates.php:60 admin/pages/updates.php:75
|
168 |
msgid "Enable auto updates"
|
169 |
msgstr "Автоматические"
|
170 |
|
171 |
+
#: admin/pages/updates.php:64
|
|
|
|
|
|
|
|
|
|
|
172 |
msgid ""
|
173 |
"You can disable all plugin updates or choose manual or automatic update mode."
|
174 |
msgstr ""
|
175 |
"Вы можете отключить все обновления плагинов или выбрать режим ручного или "
|
176 |
"автоматического обновления."
|
177 |
|
178 |
+
#: admin/pages/updates.php:72
|
179 |
msgid "Theme Updates"
|
180 |
msgstr "Обновления тем"
|
181 |
|
182 |
+
#: admin/pages/updates.php:79
|
183 |
msgid ""
|
184 |
"You can disable all themes updates or choose manual or automatic update mode."
|
185 |
msgstr ""
|
186 |
"Вы можете отключить все обновления тем или выбрать режим ручного или "
|
187 |
"автоматического обновления."
|
188 |
|
189 |
+
#: admin/pages/updates.php:95
|
190 |
msgid "WordPress Core Updates"
|
191 |
msgstr "Базовые обновления Wordpress"
|
192 |
|
193 |
+
#: admin/pages/updates.php:98
|
194 |
msgid "Disable auto updates"
|
195 |
msgstr "Отключить автоматические обновления"
|
196 |
|
197 |
+
#: admin/pages/updates.php:101
|
198 |
msgid "Allow minor auto updates"
|
199 |
msgstr "Разрешить незначительные автоматические обновления"
|
200 |
|
201 |
+
#: admin/pages/updates.php:105
|
202 |
msgid "Allow major auto updates"
|
203 |
msgstr "Разрешить основные автоматические обновления"
|
204 |
|
205 |
+
#: admin/pages/updates.php:109
|
206 |
msgid "Allow development auto updates"
|
207 |
msgstr "Разрешить разрабатываемые автоматические обновления"
|
208 |
|
209 |
+
#: admin/pages/updates.php:113
|
210 |
msgid ""
|
211 |
"You can disable all core WordPress updates, or disable only automatic "
|
212 |
"updates. Also you can select the update mode. By default (minor)"
|
215 |
"автоматические обновления. Также вы можете выбрать режим обновления. По "
|
216 |
"умолчанию (младший)"
|
217 |
|
218 |
+
#: admin/pages/updates.php:113
|
219 |
msgid "Major - automatically update to major releases (e.g., 4.1, 4.2, 4.3)."
|
220 |
msgstr ""
|
221 |
"Основные - автоматически обновления основных версий (4.1, 4.2, 4.3 и т.д)."
|
222 |
|
223 |
+
#: admin/pages/updates.php:113
|
224 |
msgid ""
|
225 |
"Minor - automatically update to minor releases (e.g., 4.1.1, 4.1.2, 4.1.3).."
|
226 |
msgstr ""
|
227 |
"Незначительные - автоматически обновления промежуточных версий (4.1.1, "
|
228 |
"4.1.2, 4.1.3 и т.д)."
|
229 |
|
230 |
+
#: admin/pages/updates.php:113
|
231 |
msgid "Development - update automatically to Bleeding Edge releases."
|
232 |
msgstr "Разрабатываемые - автоматические обновления до финальных выпусков."
|
233 |
|
234 |
+
#: admin/pages/updates.php:123
|
235 |
msgid ""
|
236 |
"Enable Automatic Updates even if a VCS folder (.git, .hg, .svn) was found in "
|
237 |
"the WordPress directory"
|
252 |
#: webcraftic-updates-manager.php:82
|
253 |
msgid "Webcraftic Updates Manager"
|
254 |
msgstr "Webcraftic менеджер обновлений"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
components/updates-manager/webcraftic-updates-manager.php
CHANGED
@@ -63,18 +63,18 @@
|
|
63 |
$wbcr_update_services_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', '
|
67 |
-
array('libs/factory/clearfy', '
|
68 |
));
|
69 |
}
|
70 |
|
71 |
// loading other files
|
72 |
if( is_admin() ) {
|
73 |
-
|
74 |
-
require(WBCR_UPM_PLUGIN_DIR . '/includes/classes/class.configurate-updates.php');
|
75 |
-
|
76 |
-
new WbcrUpm_ConfigUpdates($wbcr_update_services_plugin);
|
77 |
}
|
|
|
|
|
|
|
78 |
}
|
79 |
|
80 |
if( defined('LOADING_UPDATES_MANAGER_AS_ADDON') ) {
|
63 |
$wbcr_update_services_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_once(WBCR_UPM_PLUGIN_DIR . '/admin/boot.php');
|
|
|
|
|
|
|
74 |
}
|
75 |
+
|
76 |
+
require(WBCR_UPM_PLUGIN_DIR . '/includes/classes/class.configurate-updates.php');
|
77 |
+
new WbcrUpm_ConfigUpdates($wbcr_update_services_plugin);
|
78 |
}
|
79 |
|
80 |
if( defined('LOADING_UPDATES_MANAGER_AS_ADDON') ) {
|
includes/classes/class.configurate-advanced.php
CHANGED
@@ -26,10 +26,6 @@
|
|
26 |
add_action('wp_print_scripts', array($this, 'disableAutoSave'));
|
27 |
}
|
28 |
|
29 |
-
if( is_admin() && $this->getOption('disable_admin_notices') ) {
|
30 |
-
add_action('admin_print_scripts', array($this, 'disableAdminNotices'));
|
31 |
-
}
|
32 |
-
|
33 |
if( $this->getOption('enable_wordpres_sanitize') ) {
|
34 |
require_once(WBCR_CLR_PLUGIN_DIR . '/includes/classes/class.wordpress-sanitize.php');
|
35 |
|
@@ -196,20 +192,6 @@
|
|
196 |
wp_deregister_script('autosave');
|
197 |
}
|
198 |
|
199 |
-
public function disableAdminNotices()
|
200 |
-
{
|
201 |
-
global $wp_filter;
|
202 |
-
if( is_user_admin() ) {
|
203 |
-
if( isset($wp_filter['user_admin_notices']) ) {
|
204 |
-
unset($wp_filter['user_admin_notices']);
|
205 |
-
}
|
206 |
-
} elseif( isset($wp_filter['admin_notices']) ) {
|
207 |
-
unset($wp_filter['admin_notices']);
|
208 |
-
}
|
209 |
-
if( isset($wp_filter['all_admin_notices']) ) {
|
210 |
-
unset($wp_filter['all_admin_notices']);
|
211 |
-
}
|
212 |
-
}
|
213 |
|
214 |
/*public function removeTopCategoriesCheckbox()
|
215 |
{
|
@@ -283,3 +265,6 @@
|
|
283 |
}
|
284 |
}
|
285 |
|
|
|
|
|
|
26 |
add_action('wp_print_scripts', array($this, 'disableAutoSave'));
|
27 |
}
|
28 |
|
|
|
|
|
|
|
|
|
29 |
if( $this->getOption('enable_wordpres_sanitize') ) {
|
30 |
require_once(WBCR_CLR_PLUGIN_DIR . '/includes/classes/class.wordpress-sanitize.php');
|
31 |
|
192 |
wp_deregister_script('autosave');
|
193 |
}
|
194 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
195 |
|
196 |
/*public function removeTopCategoriesCheckbox()
|
197 |
{
|
265 |
}
|
266 |
}
|
267 |
|
268 |
+
|
269 |
+
|
270 |
+
|
includes/functions.php
CHANGED
@@ -260,25 +260,4 @@
|
|
260 |
}
|
261 |
|
262 |
return $output;
|
263 |
-
}
|
264 |
-
|
265 |
-
/**
|
266 |
-
* Import old options for compatibility of plugins
|
267 |
-
*/
|
268 |
-
function wbcr_clearfy_import_old_options()
|
269 |
-
{
|
270 |
-
global $wpdb, $wbcr_clearfy_plugin;
|
271 |
-
|
272 |
-
$need_import_old_options = get_option($wbcr_clearfy_plugin->pluginName . '_import_options_from_102');
|
273 |
-
|
274 |
-
if( !$need_import_old_options && current_user_can('activate_plugins') ) {
|
275 |
-
$check_old_options = $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}options wo WHERE wo.option_name LIKE 'wbcr-clearfy%'");
|
276 |
-
if( !empty($check_old_options) ) {
|
277 |
-
require_once WBCR_CLR_PLUGIN_DIR . '/updates/010103.php';
|
278 |
-
$updates = new WbcrClearfyUpdate010103($wbcr_clearfy_plugin);
|
279 |
-
$updates->install();
|
280 |
-
}
|
281 |
-
|
282 |
-
update_option($wbcr_clearfy_plugin->pluginName . '_import_options_from_102', true);
|
283 |
-
}
|
284 |
}
|
260 |
}
|
261 |
|
262 |
return $output;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
263 |
}
|
languages/clearfy-it_IT.mo
ADDED
Binary file
|
languages/clearfy-it_IT.po
ADDED
@@ -0,0 +1,1324 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: clearfy\n"
|
4 |
+
"POT-Creation-Date: 2018-01-14 21:35+0300\n"
|
5 |
+
"PO-Revision-Date: 2018-01-14 21:36+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: it_IT\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 |
+
"X-Poedit-SearchPathExcluded-1: components\n"
|
21 |
+
|
22 |
+
#: admin/ajax/configurate.php:16 admin/ajax/import-settings.php:16
|
23 |
+
msgid "You don't have enough capability to edit this information."
|
24 |
+
msgstr "Non hai capacità sufficienti per modificare questa informazione."
|
25 |
+
|
26 |
+
#: admin/ajax/configurate.php:29 admin/ajax/configurate.php:41
|
27 |
+
msgid "Undefinded mode."
|
28 |
+
msgstr "Modalità non definita."
|
29 |
+
|
30 |
+
#: admin/ajax/import-settings.php:23
|
31 |
+
msgid "Settings are not defined or do not exist."
|
32 |
+
msgstr "Impostazioni non definite o inesistenti."
|
33 |
+
|
34 |
+
#: admin/includes/options.php:12 admin/pages/code-clean.php:76
|
35 |
+
msgid "Remove REST API Links"
|
36 |
+
msgstr "Rimuovi Collegamenti API REST"
|
37 |
+
|
38 |
+
#: admin/includes/options.php:17 admin/pages/code-clean.php:86
|
39 |
+
msgid "Disable Emojis"
|
40 |
+
msgstr "Disattiva gli Emoji"
|
41 |
+
|
42 |
+
#: admin/includes/options.php:22 admin/pages/code-clean.php:116
|
43 |
+
msgid "Remove dns-prefetch"
|
44 |
+
msgstr "Rimuovi dns-prefetch"
|
45 |
+
|
46 |
+
#: admin/includes/options.php:27 admin/pages/code-clean.php:125
|
47 |
+
msgid "Remove RSD Link"
|
48 |
+
msgstr "Rimuovi Collegamento RSD"
|
49 |
+
|
50 |
+
#: admin/includes/options.php:32 admin/pages/code-clean.php:135
|
51 |
+
msgid "Remove wlwmanifest Link"
|
52 |
+
msgstr "Rimuovi Collegamento wlwmanifest"
|
53 |
+
|
54 |
+
#: admin/includes/options.php:37 admin/pages/code-clean.php:145
|
55 |
+
msgid "Remove Shortlink"
|
56 |
+
msgstr "Rimuovi Shortlink"
|
57 |
+
|
58 |
+
#: admin/includes/options.php:42 admin/pages/code-clean.php:155
|
59 |
+
msgid "Remove links to previous, next post"
|
60 |
+
msgstr "Rimuovi collegamenti articolo prec./succ."
|
61 |
+
|
62 |
+
#: admin/includes/options.php:47 admin/pages/code-clean.php:165
|
63 |
+
msgid "Remove .recentcomments styles"
|
64 |
+
msgstr "Rimuovi stili .recentcomments"
|
65 |
+
|
66 |
+
#: admin/includes/options.php:52 admin/pages/seo.php:66
|
67 |
+
msgid "Automatically set the alt attribute"
|
68 |
+
msgstr "Imposta automaticamente l'attributo alt"
|
69 |
+
|
70 |
+
#: admin/includes/options.php:57 admin/pages/seo.php:121
|
71 |
+
msgid "Automatically insert the Last Modified header"
|
72 |
+
msgstr "Inserisci automaticamente l'header Ultima Modifica"
|
73 |
+
|
74 |
+
#: admin/includes/options.php:62 admin/pages/seo.php:144
|
75 |
+
msgid "Return an If-Modified-Since responce"
|
76 |
+
msgstr "Ritorna risposta If-Modified-Since"
|
77 |
+
|
78 |
+
#: admin/includes/options.php:67 admin/pages/seo.php:167
|
79 |
+
msgid "Remove duplicate names in breadcrumbs WP SEO by Yoast"
|
80 |
+
msgstr "Rimuovi nomi duplicati nel breadcrumb di WP SEO by Yoast"
|
81 |
+
|
82 |
+
#: admin/includes/options.php:72 admin/pages/seo.php:177
|
83 |
+
#, php-format
|
84 |
+
msgid "Remove the tag %s from XML site map"
|
85 |
+
msgstr "Rimuovi il tag %s dalla site map XML"
|
86 |
+
|
87 |
+
#: admin/includes/options.php:77 admin/pages/seo.php:195
|
88 |
+
msgid "Disable JSON-LD sitelinks searchbox"
|
89 |
+
msgstr "Disattiva casella di ricerca collegamenti JSON-LD"
|
90 |
+
|
91 |
+
#: admin/includes/options.php:82 admin/pages/seo.php:205
|
92 |
+
msgid "Disable Yoast Structured Data"
|
93 |
+
msgstr "Disattiva Yoast Structured Data"
|
94 |
+
|
95 |
+
#: admin/includes/options.php:87 admin/pages/seo.php:217
|
96 |
+
#, php-format
|
97 |
+
msgid "Remove comment from %s section"
|
98 |
+
msgstr "Rimuovi commenti dalla sezione %s"
|
99 |
+
|
100 |
+
#: admin/includes/options.php:92 admin/pages/double-pages.php:66
|
101 |
+
msgid "Remove archives date"
|
102 |
+
msgstr "Rimuovi data archivi"
|
103 |
+
|
104 |
+
#: admin/includes/options.php:97 admin/pages/double-pages.php:76
|
105 |
+
msgid "Remove author archives "
|
106 |
+
msgstr "Rimuovi archivi autori"
|
107 |
+
|
108 |
+
#: admin/includes/options.php:102 admin/pages/double-pages.php:86
|
109 |
+
msgid "Remove archives tag"
|
110 |
+
msgstr "Rimuovi tags archivi"
|
111 |
+
|
112 |
+
#: admin/includes/options.php:107 admin/pages/double-pages.php:96
|
113 |
+
msgid "Remove attachment pages"
|
114 |
+
msgstr "Rimuovi pagina allegati"
|
115 |
+
|
116 |
+
#: admin/includes/options.php:112 admin/pages/double-pages.php:106
|
117 |
+
msgid "Remove post pagination"
|
118 |
+
msgstr "Rimuovi paginazione articoli"
|
119 |
+
|
120 |
+
#: admin/includes/options.php:117 admin/pages/double-pages.php:116
|
121 |
+
msgid "Remove ?replytocom"
|
122 |
+
msgstr "Rimuovi ?replytocom"
|
123 |
+
|
124 |
+
#: admin/includes/options.php:122 admin/pages/privacy.php:66
|
125 |
+
msgid "Remove meta generator"
|
126 |
+
msgstr "Rimuovi generatore meta"
|
127 |
+
|
128 |
+
#: admin/includes/options.php:127 admin/pages/defence.php:64
|
129 |
+
msgid "Hide author login"
|
130 |
+
msgstr "Nascondi login autore"
|
131 |
+
|
132 |
+
#: admin/includes/options.php:132 admin/pages/defence.php:74
|
133 |
+
msgid "Hide errors when logging into the site"
|
134 |
+
msgstr "Nascondi errori all'accesso al sito"
|
135 |
+
|
136 |
+
#: admin/includes/options.php:137 admin/includes/options.php:254
|
137 |
+
#: admin/pages/privacy.php:76
|
138 |
+
msgid "Remove Version from Stylesheet"
|
139 |
+
msgstr "Rimuovi Versione dagli Stylesheets"
|
140 |
+
|
141 |
+
#: admin/includes/options.php:142 admin/includes/options.php:259
|
142 |
+
#: admin/pages/privacy.php:87
|
143 |
+
msgid "Remove Version from Script"
|
144 |
+
msgstr "Rimuovi Versione dagli Scripts"
|
145 |
+
|
146 |
+
#: admin/includes/options.php:147 admin/pages/widgets.php:44
|
147 |
+
msgid "Remove the \"Pages\" widget"
|
148 |
+
msgstr "Rimuovi il widget \"Pagine\""
|
149 |
+
|
150 |
+
#: admin/includes/options.php:152 admin/pages/widgets.php:53
|
151 |
+
msgid "Remove calendar widget"
|
152 |
+
msgstr "Rimuovi il widget \"Calendario\""
|
153 |
+
|
154 |
+
#: admin/includes/options.php:157 admin/pages/widgets.php:62
|
155 |
+
msgid "Remove the \"Cloud of tags\" widget"
|
156 |
+
msgstr "Rimuovi il widget \"Tag Cloud\""
|
157 |
+
|
158 |
+
#: admin/includes/options.php:162 admin/pages/widgets.php:71
|
159 |
+
msgid "Remove the \"Archives\" widget"
|
160 |
+
msgstr "Rimuovi il widget \"Archivi\""
|
161 |
+
|
162 |
+
#: admin/includes/options.php:167 admin/pages/widgets.php:80
|
163 |
+
msgid "Remove the \"Links\" widget"
|
164 |
+
msgstr "Rimuovi il widget \"Collegamenti\""
|
165 |
+
|
166 |
+
#: admin/includes/options.php:172 admin/pages/widgets.php:89
|
167 |
+
msgid "Remove the \"Meta\" widget"
|
168 |
+
msgstr "Rimuovi il widget \"Meta\""
|
169 |
+
|
170 |
+
#: admin/includes/options.php:177 admin/pages/widgets.php:98
|
171 |
+
msgid "Remove the \"Search\" widget"
|
172 |
+
msgstr "Rimuovi il widget \"Ricerca\""
|
173 |
+
|
174 |
+
#: admin/includes/options.php:182 admin/includes/options.php:202
|
175 |
+
#: admin/pages/widgets.php:107
|
176 |
+
msgid "Remove the \"Text\" widget"
|
177 |
+
msgstr "Rimuovi il widget \"Testo\""
|
178 |
+
|
179 |
+
#: admin/includes/options.php:187 admin/pages/widgets.php:116
|
180 |
+
msgid "Remove the \"Categories\" widget"
|
181 |
+
msgstr "Rimuovi il widget \"Categorie\""
|
182 |
+
|
183 |
+
#: admin/includes/options.php:192 admin/pages/widgets.php:125
|
184 |
+
msgid "Remove the \"Recent Posts\" widget"
|
185 |
+
msgstr "Rimuovi il widget \"Articoli Recenti\""
|
186 |
+
|
187 |
+
#: admin/includes/options.php:197 admin/pages/widgets.php:134
|
188 |
+
msgid "Remove the \"Recent Comments\" widget"
|
189 |
+
msgstr "Rimuovi il widget \"Commenti Recenti\""
|
190 |
+
|
191 |
+
#: admin/includes/options.php:207 admin/pages/widgets.php:143
|
192 |
+
msgid "Remove the \"RSS\" widget"
|
193 |
+
msgstr "Rimuovi il widget \"RSS\""
|
194 |
+
|
195 |
+
#: admin/includes/options.php:212 admin/pages/widgets.php:152
|
196 |
+
msgid "Remove the \"Menu\" widget"
|
197 |
+
msgstr "Rimuovi il widget \"Menu\""
|
198 |
+
|
199 |
+
#: admin/includes/options.php:217 admin/pages/widgets.php:161
|
200 |
+
msgid "Remove the \"Twenty Eleven Ephemera\" widget"
|
201 |
+
msgstr "Rimuovi il widget \"Twenty Eleven Ephemera\""
|
202 |
+
|
203 |
+
#: admin/includes/options.php:220 admin/includes/options.php:294
|
204 |
+
#: admin/pages/additionally.php:137
|
205 |
+
msgid "Disable revision"
|
206 |
+
msgstr "Disattiva revisioni"
|
207 |
+
|
208 |
+
#: admin/includes/options.php:221 admin/includes/options.php:299
|
209 |
+
#: admin/pages/additionally.php:170
|
210 |
+
msgid "Limit Post Revisions"
|
211 |
+
msgstr "Limita Revisioni Articoli"
|
212 |
+
|
213 |
+
#: admin/includes/options.php:222 admin/pages/seo.php:135
|
214 |
+
msgid "Exclude pages:"
|
215 |
+
msgstr "Escludi pagine:"
|
216 |
+
|
217 |
+
#: admin/includes/options.php:225 admin/pages/seo.php:76
|
218 |
+
msgid "Create right robots.txt"
|
219 |
+
msgstr "Crea robots.txt corretto"
|
220 |
+
|
221 |
+
#: admin/includes/options.php:230 admin/pages/seo.php:91
|
222 |
+
msgid "You can edit the robots.txt file in the box below:"
|
223 |
+
msgstr "Puoi modificare il file robots.txt nella casella sottostante:"
|
224 |
+
|
225 |
+
#: admin/includes/options.php:233
|
226 |
+
msgid "Quick mode"
|
227 |
+
msgstr "Modalità veloce"
|
228 |
+
|
229 |
+
#: admin/includes/options.php:236 admin/pages/code-clean.php:96
|
230 |
+
msgid "Remove jQuery Migrate"
|
231 |
+
msgstr "Rimuovi jQuery Migrate"
|
232 |
+
|
233 |
+
#: admin/includes/options.php:239 admin/pages/code-clean.php:106
|
234 |
+
msgid "Disable Embeds"
|
235 |
+
msgstr "Disattiva Embeds"
|
236 |
+
|
237 |
+
#: admin/includes/options.php:240 admin/pages/code-clean.php:66
|
238 |
+
msgid "Disable RSS feeds"
|
239 |
+
msgstr "Disattiva Feeds RSS"
|
240 |
+
|
241 |
+
#: admin/includes/options.php:243
|
242 |
+
msgid "Removes links to wordpress.org site from the admin bar"
|
243 |
+
msgstr "Rimuovi collegamenti a wordpress.org dalla barra admin"
|
244 |
+
|
245 |
+
#: admin/includes/options.php:246 admin/pages/code-clean.php:175
|
246 |
+
msgid "HTML minify"
|
247 |
+
msgstr "Minimizza HTML"
|
248 |
+
|
249 |
+
#: admin/includes/options.php:249
|
250 |
+
msgid "Redirect Http to Https"
|
251 |
+
msgstr "Redirigi HTTP su HTTPS"
|
252 |
+
|
253 |
+
#: admin/includes/options.php:264 admin/pages/privacy.php:98
|
254 |
+
msgid "Eclude stylesheet/script file names"
|
255 |
+
msgstr "Escludi nomi di file stylesheet/script"
|
256 |
+
|
257 |
+
#: admin/includes/options.php:269 admin/pages/additionally.php:68
|
258 |
+
msgid "Enable Sanitization of WordPress"
|
259 |
+
msgstr "Attiva Sanitizzazione di WordPress"
|
260 |
+
|
261 |
+
#: admin/includes/options.php:274 admin/pages/additionally.php:78
|
262 |
+
msgid "Disable admin notice"
|
263 |
+
msgstr "Disattiva notifiche admin"
|
264 |
+
|
265 |
+
#: admin/includes/options.php:279 admin/pages/additionally.php:94
|
266 |
+
msgid "Disable admin top bar"
|
267 |
+
msgstr "Disattiva barra superiore admin"
|
268 |
+
|
269 |
+
#: admin/includes/options.php:284 admin/pages/additionally.php:112
|
270 |
+
msgid "Remove admin bar WP logo"
|
271 |
+
msgstr "Rimuovi logo WP dalla barra admin"
|
272 |
+
|
273 |
+
#: admin/includes/options.php:289 admin/pages/additionally.php:122
|
274 |
+
msgid "Replace \"Howdy\" text with \"Welcome\""
|
275 |
+
msgstr "Sostituisci testo \"Howdy\" con \"Welcome\""
|
276 |
+
|
277 |
+
#: admin/includes/options.php:304 admin/pages/additionally.php:194
|
278 |
+
msgid "Disable autosave"
|
279 |
+
msgstr "Disattiva salvataggio automatico"
|
280 |
+
|
281 |
+
#: admin/includes/options.php:309 admin/pages/additionally.php:204
|
282 |
+
msgid "Disable Texturization - Smart Quotes"
|
283 |
+
msgstr "Disattiva Texturization - Smart Quotes"
|
284 |
+
|
285 |
+
#: admin/includes/options.php:314 admin/pages/additionally.php:214
|
286 |
+
msgid "Disable capitalization in Wordpress branding"
|
287 |
+
msgstr "Disattiva iniziali maiuscole nel branding di WordPress"
|
288 |
+
|
289 |
+
#: admin/includes/options.php:319 admin/pages/additionally.php:224
|
290 |
+
msgid "Disable auto inserted paragraphs (i.e. p tags)"
|
291 |
+
msgstr "Disattiva inserimento automatico paragrafi (tags p)"
|
292 |
+
|
293 |
+
#: admin/includes/options.php:324 admin/pages/additionally.php:239
|
294 |
+
msgid "Disable Heartbeat"
|
295 |
+
msgstr "Disattiva Heartbeat"
|
296 |
+
|
297 |
+
#: admin/includes/options.php:329 admin/pages/additionally.php:268
|
298 |
+
msgid "Heartbeat frequency"
|
299 |
+
msgstr "Frequenza hearbeat"
|
300 |
+
|
301 |
+
#: admin/includes/options.php:334 admin/pages/code-clean.php:185
|
302 |
+
#: admin/pages/privacy.php:107
|
303 |
+
msgid "Remove html comments"
|
304 |
+
msgstr "Rimuovi HTML dai commenti"
|
305 |
+
|
306 |
+
#: admin/pages/additionally.php:27
|
307 |
+
msgid "Advanced"
|
308 |
+
msgstr "Avanzate"
|
309 |
+
|
310 |
+
#: admin/pages/additionally.php:50
|
311 |
+
msgid ""
|
312 |
+
"Warning! In the wp-config.php file, a constant WP_POST_REVISIONS is found, "
|
313 |
+
"it determines the number of revisions. Delete it so you can change this "
|
314 |
+
"value through the admin panel."
|
315 |
+
msgstr ""
|
316 |
+
"Attenzione! Nel file wp-config.php, si trova la costante WP_POST_REVISIONS, "
|
317 |
+
"la quale determina il numero di revisioni. Eliminala per poter cambiare "
|
318 |
+
"questo valore attraverso il pannello amministrativo."
|
319 |
+
|
320 |
+
#: admin/pages/additionally.php:70
|
321 |
+
msgid ""
|
322 |
+
"File names and some titles can have special characters, which can cause "
|
323 |
+
"problems when creating permalinks."
|
324 |
+
msgstr ""
|
325 |
+
"I nomi dei file ed alcuni titoli possono avere caratteri speciali, che "
|
326 |
+
"possono causare problemi durante la creazione dei permalinks."
|
327 |
+
|
328 |
+
#: admin/pages/additionally.php:70
|
329 |
+
msgid ""
|
330 |
+
"Removes symbols, spaces, latin and other languages characters from uploaded "
|
331 |
+
"files and gives them \"permalink\" structure (clean characters, only "
|
332 |
+
"lowercase and dahes)."
|
333 |
+
msgstr ""
|
334 |
+
"Rimuove simboli, spazi, caratteri latini e di altre lingue dai files "
|
335 |
+
"caricati e gli dà una struttura da \"permalink\" (caratteri puliti, solo "
|
336 |
+
"minuscole e trattini)."
|
337 |
+
|
338 |
+
#: admin/pages/additionally.php:80
|
339 |
+
msgid ""
|
340 |
+
"Whenever there’s a major release available, a notification will display at "
|
341 |
+
"the top of your admin area, letting you know your version is out-of-date and "
|
342 |
+
"you need to update the core code.<br>\n"
|
343 |
+
"For many people, this nag can be annoying. And if you developer websites for "
|
344 |
+
"clients, you may want to hide it. After all, who wants to let their clients "
|
345 |
+
"know their software is old?"
|
346 |
+
msgstr ""
|
347 |
+
"Quando viene rilasciata una major release, una notifica compare in cima alla "
|
348 |
+
"tua area amministrativa, permettendoti di sapere che la tua versione del "
|
349 |
+
"core non è aggiornata.<br>\n"
|
350 |
+
"Per molte persone, questo messaggio può essere fastidioso, e se sviluppi "
|
351 |
+
"siti per i tuoi clienti potresti volerla nascondere. In fin dei conti, chi "
|
352 |
+
"vuole far sapere ai propri clienti che il loro software è obsoleto?"
|
353 |
+
|
354 |
+
#: admin/pages/additionally.php:81
|
355 |
+
msgid "Disable admin notices."
|
356 |
+
msgstr "Disattiva notifiche admin."
|
357 |
+
|
358 |
+
#: admin/pages/additionally.php:87
|
359 |
+
msgid "Admin bar"
|
360 |
+
msgstr "Barra admin"
|
361 |
+
|
362 |
+
#: admin/pages/additionally.php:87
|
363 |
+
msgid "In this group of settings, you can manage the adminbar."
|
364 |
+
msgstr "In questo gruppo di impostazioni, puoi gestire la barra admin."
|
365 |
+
|
366 |
+
#: admin/pages/additionally.php:96
|
367 |
+
msgid "Default enable"
|
368 |
+
msgstr "Attivata"
|
369 |
+
|
370 |
+
#: admin/pages/additionally.php:97
|
371 |
+
msgid "For all users"
|
372 |
+
msgstr "Per tutti gli utenti"
|
373 |
+
|
374 |
+
#: admin/pages/additionally.php:100
|
375 |
+
msgid "For all users except administrator"
|
376 |
+
msgstr "Per tutti gli utenti, eccetto l'amministratore"
|
377 |
+
|
378 |
+
#: admin/pages/additionally.php:104
|
379 |
+
msgid ""
|
380 |
+
"In some cases, you need to disable the floating top admin panel. You can "
|
381 |
+
"disable this panel."
|
382 |
+
msgstr ""
|
383 |
+
"In alcuni casi, può essere utile disattivare la barra admin in cima alla "
|
384 |
+
"pagina. Questo può essere fatto da qui."
|
385 |
+
|
386 |
+
#: admin/pages/additionally.php:104
|
387 |
+
msgid "Disable admin top bar."
|
388 |
+
msgstr "Disattiva barra admin."
|
389 |
+
|
390 |
+
#: admin/pages/additionally.php:114
|
391 |
+
msgid "Enable this if you want to remove wp logo from admin bar."
|
392 |
+
msgstr "Attiva questa opzione se vuoi rimuovere il logo WP dalla barra admin."
|
393 |
+
|
394 |
+
#: admin/pages/additionally.php:124
|
395 |
+
msgid "Replaces the welcome text in admin bar."
|
396 |
+
msgstr "Sostituisce il testo di benvenuto nella barra admin."
|
397 |
+
|
398 |
+
#: admin/pages/additionally.php:130
|
399 |
+
msgid "Posts"
|
400 |
+
msgstr "Articoli"
|
401 |
+
|
402 |
+
#: admin/pages/additionally.php:130
|
403 |
+
msgid "In this group of options, you can manage revisions and post autosave."
|
404 |
+
msgstr ""
|
405 |
+
"In questo gruppo di opzioni, puoi gestire le revisioni ed il salvataggio "
|
406 |
+
"automatico degli articoli."
|
407 |
+
|
408 |
+
#: admin/pages/additionally.php:172 admin/pages/additionally.php:270
|
409 |
+
msgid "Wordpress default"
|
410 |
+
msgstr "Predefinite WordPress"
|
411 |
+
|
412 |
+
#: admin/pages/additionally.php:173 admin/pages/additionally.php:174
|
413 |
+
#: admin/pages/additionally.php:175 admin/pages/additionally.php:176
|
414 |
+
#: admin/pages/additionally.php:177 admin/pages/additionally.php:178
|
415 |
+
#: admin/pages/additionally.php:179 admin/pages/additionally.php:180
|
416 |
+
#: admin/pages/additionally.php:181 admin/pages/additionally.php:182
|
417 |
+
msgid "revisions"
|
418 |
+
msgstr "revisioni"
|
419 |
+
|
420 |
+
#: admin/pages/additionally.php:185
|
421 |
+
msgid ""
|
422 |
+
"WordPress automatically saves revisions when you are working on posts and "
|
423 |
+
"pages. These can begin to add up pretty quick. By default, there is no limit "
|
424 |
+
"in place. We have seen posts with over 1,000 revisions. Multiply this by 50 "
|
425 |
+
"pages and suddenly you have over 50,000 revisions sitting in your database. "
|
426 |
+
"The problem with this is that you will most likely never use them and they "
|
427 |
+
"can start slowing down your database as well as using disk space.\n"
|
428 |
+
"So we recommend either disabling or limiting your revisions. "
|
429 |
+
msgstr ""
|
430 |
+
"WordPress salva automaticamente le revisioni quando lavori sugli articoli e "
|
431 |
+
"sulle pagine. Queste possono iniziare ad impilarsi in fretta. Per "
|
432 |
+
"impostazione predefinita, non esiste nessun limite a ciò. Abbiamo visto "
|
433 |
+
"articoli con oltre 1'000 revisioni: moltiplica questo valore per 50 pagine e "
|
434 |
+
"ti ritrovi con 50'000 revisioni inutili nel tuo database. Il problema è che "
|
435 |
+
"molto probabilmente non ne farai mai uso, e possono iniziare a rallentare il "
|
436 |
+
"tuo database, oltre a sprecare spazio su disco.\n"
|
437 |
+
"Per questo motivo, consigliamo di disattivare o limitare il numero di "
|
438 |
+
"revisioni."
|
439 |
+
|
440 |
+
#: admin/pages/additionally.php:196
|
441 |
+
msgid ""
|
442 |
+
"WordPress by default automatically saves a draft every 60 seconds (1 "
|
443 |
+
"minute). There are reasons why you might want to change this."
|
444 |
+
msgstr ""
|
445 |
+
"WordPress per impostazione predefinita salva una bozza ogni 60 secondi (un "
|
446 |
+
"minuto). Se dovessi voler cambiare questo valore, lo puoi fare."
|
447 |
+
|
448 |
+
#: admin/pages/additionally.php:196
|
449 |
+
msgid "Disables automatic saving of drafts."
|
450 |
+
msgstr "Disattiva il salvataggio automatico delle bozze."
|
451 |
+
|
452 |
+
#: admin/pages/additionally.php:206
|
453 |
+
msgid ""
|
454 |
+
"Function of text formatting. This function makes the text more correct, "
|
455 |
+
"readable and visually appealing. But sometimes this function may prevent you "
|
456 |
+
"from using certain codes and symbols."
|
457 |
+
msgstr ""
|
458 |
+
"Funzione di formattazione testo. Questa funzione corregge il testo, "
|
459 |
+
"rendendolo leggibile ed esteticamente gradevole. Ma a volte questa funzione "
|
460 |
+
"può impedirti di usare certi simboli e codici durante la scrittura."
|
461 |
+
|
462 |
+
#: admin/pages/additionally.php:206
|
463 |
+
msgid "Disable Texturization - Smart Quotes."
|
464 |
+
msgstr "Disattiva Texturization - Smart Quotes."
|
465 |
+
|
466 |
+
#: admin/pages/additionally.php:216
|
467 |
+
msgid ""
|
468 |
+
"Replaces the incorrectly written letter \"p\" in the middle of WordPress "
|
469 |
+
"(you need to write with the capital P in the middle)."
|
470 |
+
msgstr ""
|
471 |
+
"Sostituisce la lettera \"p\" scritta sbagliata in mezzo alla parola "
|
472 |
+
"WordPress (la cui P centrale deve essere maiuscola)."
|
473 |
+
|
474 |
+
#: admin/pages/additionally.php:216
|
475 |
+
msgid "Disable capitalization in Wordpress branding."
|
476 |
+
msgstr "Disattiva correzione maiuscole nel branding di WordPress."
|
477 |
+
|
478 |
+
#: admin/pages/additionally.php:226
|
479 |
+
msgid ""
|
480 |
+
"Replaces the double shifting of a string to an HTML p ... /p construct, and "
|
481 |
+
"a single one on br."
|
482 |
+
msgstr ""
|
483 |
+
"Sostituisce la correzione di una stringa doppia in un costrutto HTML p ... /"
|
484 |
+
"p, e di una singola in br."
|
485 |
+
|
486 |
+
#: admin/pages/additionally.php:226
|
487 |
+
msgid "Disable auto inserted paragraphs."
|
488 |
+
msgstr "Disattiva inserimento automatico paragrafi."
|
489 |
+
|
490 |
+
#: admin/pages/additionally.php:232
|
491 |
+
msgid "Heartbeat"
|
492 |
+
msgstr "Heartbeat"
|
493 |
+
|
494 |
+
#: admin/pages/additionally.php:232
|
495 |
+
msgid ""
|
496 |
+
"The WordPress Heartbeat API uses /wp-admin/admin-ajax.php to run AJAX calls "
|
497 |
+
"from the web-browser. While this is great and all it can also cause high CPU "
|
498 |
+
"usage and crazy amounts of PHP calls. For example, if you leave your "
|
499 |
+
"dashboard open it will keep sending POST requests to this file on a regular "
|
500 |
+
"interval, every 15 seconds. Here is an example below of it happening."
|
501 |
+
msgstr ""
|
502 |
+
"La API Heartbeat di WordPress usa /wp-admin/admin-ajax.php per eseguire "
|
503 |
+
"chiamate AJAX dal browser web. Può sembrare una cosa positiva, ma rischia di "
|
504 |
+
"causare un utilizzo eccessivo della CPU ed una quantità smisurata di "
|
505 |
+
"chiamate PHP. Per esempio, se lasci la tua bacheca aperta continuerà ad "
|
506 |
+
"inviare richieste POST a questo file ad intervalli regolari, ogni 15 "
|
507 |
+
"secondi. Qui di seguito puoi vederne un esempio in azione."
|
508 |
+
|
509 |
+
#: admin/pages/additionally.php:241
|
510 |
+
msgid "Default"
|
511 |
+
msgstr "Predefinito"
|
512 |
+
|
513 |
+
#: admin/pages/additionally.php:242
|
514 |
+
msgid "Everywhere"
|
515 |
+
msgstr "Dappertutto"
|
516 |
+
|
517 |
+
#: admin/pages/additionally.php:243
|
518 |
+
msgid "On dashboard page"
|
519 |
+
msgstr "Sulla bacheca"
|
520 |
+
|
521 |
+
#: admin/pages/additionally.php:244
|
522 |
+
msgid "Only allow when editing Posts/Pages"
|
523 |
+
msgstr "Consenti solo durante la modifica di articoli/pagine"
|
524 |
+
|
525 |
+
#: admin/pages/additionally.php:271 admin/pages/additionally.php:272
|
526 |
+
#: admin/pages/additionally.php:273 admin/pages/additionally.php:274
|
527 |
+
#: admin/pages/additionally.php:275 admin/pages/additionally.php:276
|
528 |
+
#: admin/pages/additionally.php:277 admin/pages/additionally.php:278
|
529 |
+
#: admin/pages/additionally.php:279
|
530 |
+
msgid "seconds"
|
531 |
+
msgstr "secondi"
|
532 |
+
|
533 |
+
#: admin/pages/additionally.php:282
|
534 |
+
msgid ""
|
535 |
+
"You can disable all plugin updates or choose manual or automatic update mode."
|
536 |
+
msgstr ""
|
537 |
+
"Puoi disattivare tutti gli aggiornamenti dei plugins o scegliere le modalità "
|
538 |
+
"di aggiornamento automatico e manuale."
|
539 |
+
|
540 |
+
#: admin/pages/code-clean.php:27
|
541 |
+
msgid "Code cleaning"
|
542 |
+
msgstr "Pulizia del codice"
|
543 |
+
|
544 |
+
#: admin/pages/code-clean.php:68
|
545 |
+
msgid ""
|
546 |
+
"By default, WordPress generates all types of different RSS feeds for your "
|
547 |
+
"site. While RSS feeds can be useful if you are running a blog, businesses "
|
548 |
+
"might not always utilize these. Not every site out there has a blog."
|
549 |
+
msgstr ""
|
550 |
+
"Per impostazione predefinita, WordPress genera tutti i tipi di feeds RSS per "
|
551 |
+
"il tuo sito. Mentre i feeds RSS possono essere utili se stai gestendo un "
|
552 |
+
"blog, le aziende non sempre li usano. Non tutti i siti su internet hanno un "
|
553 |
+
"blog."
|
554 |
+
|
555 |
+
#: admin/pages/code-clean.php:68
|
556 |
+
#, php-format
|
557 |
+
msgid ""
|
558 |
+
"Removes a link to the RSS-feed from the %s section, closes and puts the "
|
559 |
+
"redirect from all RSS-feeds."
|
560 |
+
msgstr ""
|
561 |
+
"Rimuove il collegamento al feed RSS dalla sezione %s, chiude il feed e mette "
|
562 |
+
"un redirect da tutti i feeds RSS."
|
563 |
+
|
564 |
+
#: admin/pages/code-clean.php:78
|
565 |
+
msgid ""
|
566 |
+
"The WordPress REST API provides API endpoints for WordPress data types that "
|
567 |
+
"allow developers to interact with sites remotely by sending and receiving "
|
568 |
+
"JSON (JavaScript Object Notation) objects. However, a lot of sites don’t use "
|
569 |
+
"this, and therefore in most cases, it is just unnecessary code."
|
570 |
+
msgstr ""
|
571 |
+
"La API REST di WordPress offre degli endpoints API per i tipi di dati di "
|
572 |
+
"WordPress che permettono agli sviluppatori di interagire con i siti "
|
573 |
+
"remotamente inviando e ricevendo oggetti JSON (JavaScript Object Notation). "
|
574 |
+
"Tuttavia, tanti siti non la usano, quindi in tanti casi è solo codice "
|
575 |
+
"superfluo."
|
576 |
+
|
577 |
+
#: admin/pages/code-clean.php:78
|
578 |
+
msgid ""
|
579 |
+
"Removes REST API link tag from the front end and the REST API header link "
|
580 |
+
"from page requests."
|
581 |
+
msgstr ""
|
582 |
+
"Rimuove il link tag API REST dal front-end e il collegamento nell'header "
|
583 |
+
"alla API REST dalle richieste di pagina."
|
584 |
+
|
585 |
+
#: admin/pages/code-clean.php:86 admin/pages/code-clean.php:116
|
586 |
+
#: admin/pages/code-clean.php:125 admin/pages/code-clean.php:135
|
587 |
+
#: admin/pages/code-clean.php:145 admin/pages/code-clean.php:155
|
588 |
+
#: admin/pages/code-clean.php:165 admin/pages/defence.php:64
|
589 |
+
#: admin/pages/defence.php:74 admin/pages/defence.php:84
|
590 |
+
#: admin/pages/double-pages.php:66 admin/pages/double-pages.php:76
|
591 |
+
#: admin/pages/double-pages.php:96 admin/pages/double-pages.php:106
|
592 |
+
#: admin/pages/double-pages.php:116 admin/pages/privacy.php:66
|
593 |
+
#: admin/pages/privacy.php:76 admin/pages/privacy.php:87 admin/pages/seo.php:66
|
594 |
+
#: admin/pages/seo.php:121 admin/pages/seo.php:144 admin/pages/seo.php:167
|
595 |
+
#: admin/pages/seo.php:177 admin/pages/seo.php:217
|
596 |
+
msgid "Recommended"
|
597 |
+
msgstr "Consigliate"
|
598 |
+
|
599 |
+
#: admin/pages/code-clean.php:88
|
600 |
+
msgid ""
|
601 |
+
"Emojis are fun and all, but if you are aren’t using them they actually load "
|
602 |
+
"a JavaScript file (wp-emoji-release.min.js) on every page of your website. "
|
603 |
+
"For a lot of businesses, this is not needed and simply adds load time to "
|
604 |
+
"your site. So we recommend disabling this."
|
605 |
+
msgstr ""
|
606 |
+
"Gli emoji saranno pure carini, ma se non li usi caricano un file JavaScript "
|
607 |
+
"(wp-emoji-release.min.js) su ogni pagina del tuo sito. Per tante aziende, "
|
608 |
+
"questo non è necessario e non fa altro che aggiungersi ai tempi di "
|
609 |
+
"caricamento del sito, quindi consigliamo di disattivarlo."
|
610 |
+
|
611 |
+
#: admin/pages/code-clean.php:88
|
612 |
+
msgid "Removes WordPress Emojis JavaScript file (wp-emoji-release.min.js)."
|
613 |
+
msgstr "Rimuove il file JavaScript Emoji WordPress (wp-emoji-release.min.js)"
|
614 |
+
|
615 |
+
#: admin/pages/code-clean.php:98
|
616 |
+
msgid ""
|
617 |
+
"They started adding jQuery migrate in WordPress 3.6. Most up-to-date "
|
618 |
+
"frontend code and plugins don’t require jquery-migrate.min.js. In most "
|
619 |
+
"cases, this simply adds unnecessary load to your site. You can see this "
|
620 |
+
"running if you launch Chrome Devtools console."
|
621 |
+
msgstr ""
|
622 |
+
"Da WordPress 3.6, è stato aggiunto jQuery Migrate. Solitamente, jquery-"
|
623 |
+
"migrate.min.js non è richiesto se il codice front-end e i plugin sono stati "
|
624 |
+
"scritti correttamente. In molti casi, questo aggiunge tempi di caricamento "
|
625 |
+
"non necessari al tuo sito. Puoi valutarne l'impatto lanciando la console di "
|
626 |
+
"sviluppo del tuo browser."
|
627 |
+
|
628 |
+
#: admin/pages/code-clean.php:98
|
629 |
+
msgid "Removes jQuery Migrate JavaScript file (jquery-migrate.min.js)."
|
630 |
+
msgstr "Rimuove il file JavaScript di jQuery Migrate (jquery-migrate.min.js)."
|
631 |
+
|
632 |
+
#: admin/pages/code-clean.php:98
|
633 |
+
msgid "Warning! If there is a broke on your site, disable this option!"
|
634 |
+
msgstr ""
|
635 |
+
"Attenzione! Se qualcosa nel sito dovesse smettere di funzionare, disattiva "
|
636 |
+
"questa opzione!"
|
637 |
+
|
638 |
+
#: admin/pages/code-clean.php:108
|
639 |
+
msgid ""
|
640 |
+
"Embeds were released with WordPress 4.4. This is basically the magic that "
|
641 |
+
"auto converts your YouTube videos, Tweets, and URLs into pretty previews "
|
642 |
+
"while you are editing. However, this actually loads a JavaScript file (wp-"
|
643 |
+
"embed.min.js) on every page of your website. If you don’t care about the "
|
644 |
+
"auto converting preview (which we don’t), you can disable this across your "
|
645 |
+
"site."
|
646 |
+
msgstr ""
|
647 |
+
"Gli embeds sono stati rilasciati con WordPress 4.4. Questa è in pratica la "
|
648 |
+
"magia che converte automaticamente i tuoi video di YouTube, tweets e URL in "
|
649 |
+
"anteprime durante la modifica dei contenuti. Tuttavia, questo carica un file "
|
650 |
+
"JavaScript (wp-embed.min.js) su tutte le pagine del sito. Se non ti "
|
651 |
+
"interessa la conversione automatica delle anteprime, puoi disattivarla su "
|
652 |
+
"tutto il sito."
|
653 |
+
|
654 |
+
#: admin/pages/code-clean.php:108
|
655 |
+
msgid "Removes WordPress Embed JavaScript file (wp-embed.min.js)"
|
656 |
+
msgstr "Rimuove il File JavaScript Embed di WordPress (wp-embed.min.js)"
|
657 |
+
|
658 |
+
#: admin/pages/code-clean.php:118
|
659 |
+
#, php-format
|
660 |
+
msgid ""
|
661 |
+
"Since version 4.6.1 in WordPress there are new links in the section %s this "
|
662 |
+
"type of: "
|
663 |
+
msgstr ""
|
664 |
+
"Dalla versione 4.6.1, ci sono nuovi collegamenti nella sezione %s di "
|
665 |
+
"WordPress di questo tipo:"
|
666 |
+
|
667 |
+
#: admin/pages/code-clean.php:118
|
668 |
+
#, php-format
|
669 |
+
msgid "Removes dns-prefetch links from the %s section"
|
670 |
+
msgstr "Rimuove i collegamenti dns-prefetch dalla sezione %s"
|
671 |
+
|
672 |
+
#: admin/pages/code-clean.php:127
|
673 |
+
msgid ""
|
674 |
+
"The above link is used by blog clients. If you edit your site from your "
|
675 |
+
"browser then you don’t need this. It is also used by some 3rd party "
|
676 |
+
"applications that utilize XML-RPC requests. In most cases, this is just "
|
677 |
+
"unnecessary code."
|
678 |
+
msgstr ""
|
679 |
+
"Il collegamento sopra è usato dai client di blog. Se modifichi il tuo sito "
|
680 |
+
"dal tuo browser, non ne hai bisogno. È anche usato da alcune applicazioni di "
|
681 |
+
"terze parti che utilizzano le richieste XML-RPC. In molti casi, questo è "
|
682 |
+
"solo codice superfluo."
|
683 |
+
|
684 |
+
#: admin/pages/code-clean.php:127
|
685 |
+
msgid "Remove RSD (Real Simple Discovery) link tag."
|
686 |
+
msgstr "Rimuovi il link tag RSD (Real Simple Discovery)."
|
687 |
+
|
688 |
+
#: admin/pages/code-clean.php:137
|
689 |
+
msgid ""
|
690 |
+
"This link is actually used by Windows Live Writer. If you don’t know use "
|
691 |
+
"Windows Live Writer, which we are guessing you don’t, this is just "
|
692 |
+
"unnecessary code."
|
693 |
+
msgstr ""
|
694 |
+
"Questo collegamento viene usato da Windows Live Writer. Se non sai di cosa "
|
695 |
+
"si tratta, è solo codice non necessario."
|
696 |
+
|
697 |
+
#: admin/pages/code-clean.php:137
|
698 |
+
msgid "Remove wlwmanifest (Windows Live Writer) link tag."
|
699 |
+
msgstr "Rimuovi il link tag wlwmanifest (Windows Live Writer)."
|
700 |
+
|
701 |
+
#: admin/pages/code-clean.php:147
|
702 |
+
#, php-format
|
703 |
+
msgid ""
|
704 |
+
"By default, the following tag shows up in every WordPress install. %s This "
|
705 |
+
"is used for a shortlink to your pages and posts. However, if you are already "
|
706 |
+
"using pretty permalinks, such as domain.com/post, then there is no reason to "
|
707 |
+
"keep this, it is just unnecessary code."
|
708 |
+
msgstr ""
|
709 |
+
"Per impostazione predefinita, il tag seguente compare in ogni installazione "
|
710 |
+
"di WordPress. %s viene usato come shortlink verso le tue pagine ed articoli. "
|
711 |
+
"Tuttavia, se usi già i permalink user-friendly, come dominio.com/articolo, "
|
712 |
+
"non c'è ragione per tenerlo: è solo codice superfluo."
|
713 |
+
|
714 |
+
#: admin/pages/code-clean.php:147
|
715 |
+
msgid "Remove Shortlink link tag."
|
716 |
+
msgstr "Rimuovi link tag Shortlink."
|
717 |
+
|
718 |
+
#: admin/pages/code-clean.php:157
|
719 |
+
msgid ""
|
720 |
+
"If you use Wordpress as a CMS, then you can delete these links, they can "
|
721 |
+
"only come in handy for a blog."
|
722 |
+
msgstr ""
|
723 |
+
"Se usi WordPress come un CMS, puoi eliminare questi collegamenti, che "
|
724 |
+
"risultano solo utili per i blog."
|
725 |
+
|
726 |
+
#: admin/pages/code-clean.php:157
|
727 |
+
msgid ""
|
728 |
+
"Remove the previous and next post links within the wp_head of your wordpress "
|
729 |
+
"theme."
|
730 |
+
msgstr ""
|
731 |
+
"Rimuovi i collegamenti \"articolo precedente/successivo\" dal wp_head del "
|
732 |
+
"tuo tema WordPress."
|
733 |
+
|
734 |
+
#: admin/pages/code-clean.php:167
|
735 |
+
msgid ""
|
736 |
+
"WP by default for the widget \"recent comments\" prescribes in the code "
|
737 |
+
"styles that are almost impossible to change, because to them apply! "
|
738 |
+
"important."
|
739 |
+
msgstr ""
|
740 |
+
"Per impostazione predefinita, il widget \"commenti recenti\" ha uno stile "
|
741 |
+
"quasi impossibile da personalizzare, perché vi sono state applicate le "
|
742 |
+
"regole CSS con la direttiva !important."
|
743 |
+
|
744 |
+
#: admin/pages/code-clean.php:167
|
745 |
+
msgid "Removes .recentcomments styles from head section."
|
746 |
+
msgstr "Rimuove stili .recentcomments dall'intestazione."
|
747 |
+
|
748 |
+
#: admin/pages/code-clean.php:177
|
749 |
+
msgid ""
|
750 |
+
"Reduces the weight of the page by removing line breaks, tabs, spaces, etc."
|
751 |
+
msgstr ""
|
752 |
+
"Riduce il peso della pagina rimuovendo ritorni a capo, tabulazioni, spazi, "
|
753 |
+
"ecc."
|
754 |
+
|
755 |
+
#: admin/pages/code-clean.php:177
|
756 |
+
msgid "Minify pages."
|
757 |
+
msgstr "Minimizza pagine."
|
758 |
+
|
759 |
+
#: admin/pages/code-clean.php:187 admin/pages/privacy.php:109
|
760 |
+
msgid ""
|
761 |
+
"This function will remove all html comments in the source code, except for "
|
762 |
+
"special and hidden comments. This is necessary to hide the version of "
|
763 |
+
"installed plugins."
|
764 |
+
msgstr ""
|
765 |
+
"Questa funzione rimuoverà tutti i commenti HTML dal codice sorgente, eccetto "
|
766 |
+
"per i commenti speciali e nascosti. Questo è necessario per nascondere la "
|
767 |
+
"versione dei plugins installati."
|
768 |
+
|
769 |
+
#: admin/pages/code-clean.php:187 admin/pages/privacy.php:109
|
770 |
+
msgid "Remove html comments in source code."
|
771 |
+
msgstr "Rimuovi commenti HTML dal codice sorgente."
|
772 |
+
|
773 |
+
#: admin/pages/components.php:32
|
774 |
+
msgid "Components"
|
775 |
+
msgstr "Componenti"
|
776 |
+
|
777 |
+
#: admin/pages/defence.php:25
|
778 |
+
msgid "Defence"
|
779 |
+
msgstr "Difesa"
|
780 |
+
|
781 |
+
#: admin/pages/defence.php:66
|
782 |
+
msgid ""
|
783 |
+
"An attacker can find out the author's login, using a similar request to get "
|
784 |
+
"your site. mysite.com/?author=1"
|
785 |
+
msgstr ""
|
786 |
+
"Un malintenzionato può dedurre il login dell'autore, usando una richiesta "
|
787 |
+
"come questa verso il tuo sito: mysite.com/?author=1"
|
788 |
+
|
789 |
+
#: admin/pages/defence.php:66
|
790 |
+
msgid "Sets the redirect to exclude the possibility of obtaining a login."
|
791 |
+
msgstr "Imposta il redirect per escludere la possibilità di ottnere un login."
|
792 |
+
|
793 |
+
#: admin/pages/defence.php:76
|
794 |
+
msgid ""
|
795 |
+
"WP by default shows whether you entered a wrong login or incorrect password, "
|
796 |
+
"which allows attackers to understand if there is a certain user on the site, "
|
797 |
+
"and then start searching through the passwords."
|
798 |
+
msgstr ""
|
799 |
+
"WP per impostazione predefinita mostra se hai inserito un login o una "
|
800 |
+
"password sbagliati, il che permette ai malintenzionati di sapere se esiste "
|
801 |
+
"un dato utente sul sito, per poi tentare un attacco brute-force."
|
802 |
+
|
803 |
+
#: admin/pages/defence.php:76
|
804 |
+
msgid ""
|
805 |
+
"Changes in the text of the error so that attackers could not find the login."
|
806 |
+
msgstr ""
|
807 |
+
"Cambia il testo dell'errore in maniera che i malintenzionati non possano "
|
808 |
+
"scoprire il login."
|
809 |
+
|
810 |
+
#: admin/pages/defence.php:84
|
811 |
+
msgid "Disable XML-RPC"
|
812 |
+
msgstr "Disattiva XML-RPC"
|
813 |
+
|
814 |
+
#: admin/pages/defence.php:86
|
815 |
+
msgid ""
|
816 |
+
"A pingback is basically an automated comment that gets created when another "
|
817 |
+
"blog links to you. A self-pingback is created when you link to an article "
|
818 |
+
"within your own blog. Pingbacks are essentially nothing more than spam and "
|
819 |
+
"simply waste resources."
|
820 |
+
msgstr ""
|
821 |
+
"Un pingback è praticamente un commento automatico che viene creato quando un "
|
822 |
+
"altro blog crea un collegamento verso il tuo. Un auto-pingback viene creato "
|
823 |
+
"quando crei un collegamento ad un articolo all'interno del tuo blog. I "
|
824 |
+
"pingback possono essere visti come spam, e quindi uno spreco di risorse."
|
825 |
+
|
826 |
+
#: admin/pages/defence.php:86
|
827 |
+
msgid "Removes the server responses a reference to the xmlrpc file."
|
828 |
+
msgstr "Rimuovi i riferimenti al file XML-RPC dalle risposte del server"
|
829 |
+
|
830 |
+
#: admin/pages/double-pages.php:27
|
831 |
+
msgid "Duplicate pages"
|
832 |
+
msgstr "Pagine duplicate"
|
833 |
+
|
834 |
+
#: admin/pages/double-pages.php:68
|
835 |
+
#, php-format
|
836 |
+
msgid ""
|
837 |
+
"Many duplicates in date archives. Imagine, in addition, that your article "
|
838 |
+
"will be displayed in the main and in the category, you will still receive at "
|
839 |
+
"least 3 duplicates: in archives by year, month and date, for example %s."
|
840 |
+
msgstr ""
|
841 |
+
"Gli archivi per data contengono molte pagine duplicate. Oltre al caso in cui "
|
842 |
+
"il tuo articolo venga mostrato nella pagina principale e nelle categorie, ne "
|
843 |
+
"rimarranno comunque altri tre duplicati: negli archivi per anno, per mese e "
|
844 |
+
"per giorno, per esempio %s."
|
845 |
+
|
846 |
+
#: admin/pages/double-pages.php:68
|
847 |
+
msgid "Removes all pages with the date archives and puts a redirect."
|
848 |
+
msgstr ""
|
849 |
+
"Rimuove tutte le pagine con gli archivi per data ed imposta un redirect."
|
850 |
+
|
851 |
+
#: admin/pages/double-pages.php:78
|
852 |
+
#, php-format
|
853 |
+
msgid ""
|
854 |
+
"If the site is only filled by you - a mandatory item. Allows you to get rid "
|
855 |
+
"of duplicates on user archives, for example %s."
|
856 |
+
msgstr ""
|
857 |
+
"Se il sito è gestito contenutisticamente soltanto da te, questa opzione è "
|
858 |
+
"altamente raccomandata. Ti permette di rimuovere i duplicati dagli archivi "
|
859 |
+
"utente, per esempio %s."
|
860 |
+
|
861 |
+
#: admin/pages/double-pages.php:78
|
862 |
+
msgid "Removes all pages with the author archives and puts a redirect."
|
863 |
+
msgstr ""
|
864 |
+
"Rimuove tutte le pagine con gli archivi per autore ed imposta un redirect."
|
865 |
+
|
866 |
+
#: admin/pages/double-pages.php:88
|
867 |
+
msgid ""
|
868 |
+
"If you use tags only for the block Similar records, or do not use them at "
|
869 |
+
"all - it will be more correct to close them to avoid duplicates."
|
870 |
+
msgstr ""
|
871 |
+
"Se usi i tags solo per il blocco \"Elementi simili\", o se non li usi "
|
872 |
+
"proprio, conviene chiuderli per evitare duplicati."
|
873 |
+
|
874 |
+
#: admin/pages/double-pages.php:88
|
875 |
+
msgid "Removes all pages with the tag archives and puts a redirect."
|
876 |
+
msgstr "Rimuove tutte le pagine con gli archivi tags ed imposta un redirect."
|
877 |
+
|
878 |
+
#: admin/pages/double-pages.php:98
|
879 |
+
msgid ""
|
880 |
+
"Every of the pictures has its own page on the site. Such pages are "
|
881 |
+
"successfully indexed and create duplicates. The site can have thousands of "
|
882 |
+
"same-type attachment pages."
|
883 |
+
msgstr ""
|
884 |
+
"Tutte le immagini hanno la propria pagina sul sito. Queste pagine sono "
|
885 |
+
"indicizzate, portando alla creazione di duplicati. Il sito può avere "
|
886 |
+
"migliaia di pagine allegato dello stesso tipo."
|
887 |
+
|
888 |
+
#: admin/pages/double-pages.php:98
|
889 |
+
msgid "Removes attachment pages and puts a redirect."
|
890 |
+
msgstr "Rimuove le pagine allegato ed imposta un redirect."
|
891 |
+
|
892 |
+
#: admin/pages/double-pages.php:108
|
893 |
+
#, php-format
|
894 |
+
msgid ""
|
895 |
+
"In WordPress, any post can be divided into parts (pages), each part will "
|
896 |
+
"have its own address. But this functionality is rarely used, but it can "
|
897 |
+
"create trouble for you. For example, you can add a number to the address of "
|
898 |
+
"any entry of your blog, %s - the post itself will open, which will be a "
|
899 |
+
"duplicate. You can substitute any number."
|
900 |
+
msgstr ""
|
901 |
+
|
902 |
+
#: admin/pages/double-pages.php:108
|
903 |
+
#, php-format
|
904 |
+
msgid "Removes the pagination from the post and puts a redirect. Example: %s"
|
905 |
+
msgstr ""
|
906 |
+
"Rimuove la paginazione degli articoli ed imposta un redirect. Esempio: %s"
|
907 |
+
|
908 |
+
#: admin/pages/double-pages.php:118
|
909 |
+
#, php-format
|
910 |
+
msgid ""
|
911 |
+
"WordPress adds %s to the link \"Reply\" in the comments, if you use "
|
912 |
+
"hierarchical comments."
|
913 |
+
msgstr ""
|
914 |
+
"WordPress aggiunge %s al collegamento \"Rispondi\" nei commenti, se utilizzi "
|
915 |
+
"i commenti gerarchici."
|
916 |
+
|
917 |
+
#: admin/pages/double-pages.php:118
|
918 |
+
msgid "?relpytocom remove and and puts a redirect."
|
919 |
+
msgstr "Rimuove ?relpytocom ed imposta un redirect."
|
920 |
+
|
921 |
+
#: admin/pages/privacy.php:27
|
922 |
+
msgid "Privacy Settings"
|
923 |
+
msgstr "Impostazioni di Privacy"
|
924 |
+
|
925 |
+
#: admin/pages/privacy.php:68
|
926 |
+
msgid ""
|
927 |
+
"Allows attacker to learn the version of WP installed on the site. This meta "
|
928 |
+
"tag has no useful function."
|
929 |
+
msgstr ""
|
930 |
+
"Permette ai malintenzionati di conoscere la versione di WordPress installata "
|
931 |
+
"sul sito. Questo meta tag non ha alcuno scopo utile."
|
932 |
+
|
933 |
+
#: admin/pages/privacy.php:68
|
934 |
+
#, php-format
|
935 |
+
msgid "Removes the meta tag from the %s section"
|
936 |
+
msgstr "Rimuove il tag meta dalla sezione %s"
|
937 |
+
|
938 |
+
#: admin/pages/privacy.php:78 admin/pages/privacy.php:89
|
939 |
+
msgid ""
|
940 |
+
"To make it more difficult for others to hack your website you can remove the "
|
941 |
+
"WordPress version number from your site, your css and js. Without that "
|
942 |
+
"number it's not possible to see if you run not the current version to "
|
943 |
+
"exploit bugs from the older versions. <br><br>\n"
|
944 |
+
"\t\t\t\t\tAdditionally it can improve the loading speed of your site, "
|
945 |
+
"because without query strings in the URL the css and js files can be cached."
|
946 |
+
msgstr ""
|
947 |
+
"Per complicare la vita agli hacker sul tuo sito, puoi rimuovere il numero di "
|
948 |
+
"versione WordPress da sito, css e js. Senza quel numero, non è possibile "
|
949 |
+
"vedere se non stai eseguendo la versione più attuale e capire se si possono "
|
950 |
+
"sfruttare exploits noti delle versioni precedenti.<br><br>\n"
|
951 |
+
"Questo può anche migliorare le prestazioni del tuo sito, perché senza le "
|
952 |
+
"querystrings negli URL i files js e css possono essere messi in cache."
|
953 |
+
|
954 |
+
#: admin/pages/privacy.php:79
|
955 |
+
msgid ""
|
956 |
+
"Removes the wordpress version number from stylesheets (not logged in user "
|
957 |
+
"only)."
|
958 |
+
msgstr ""
|
959 |
+
"Rimuove il numero di versione WordPress dagli stylesheets (solo per gli "
|
960 |
+
"utenti non autenticati)."
|
961 |
+
|
962 |
+
#: admin/pages/privacy.php:90
|
963 |
+
msgid ""
|
964 |
+
"Removes wordpress version number from scripts (not logged in user only)."
|
965 |
+
msgstr ""
|
966 |
+
"Rimuove il numero di versione WordPress dagli scripts (solo per gli utenti "
|
967 |
+
"non autenticati)."
|
968 |
+
|
969 |
+
#: admin/pages/privacy.php:100
|
970 |
+
msgid ""
|
971 |
+
"Enter Stylesheet/Script file names to exclude from version removal (each "
|
972 |
+
"exclude file starts with a new line)"
|
973 |
+
msgstr ""
|
974 |
+
"Inserisci i nomi dei files di stylesheet/script da escludere dalla rimozione "
|
975 |
+
"della versione. Qualsiasi esclusione deve cominciare su una nuova riga."
|
976 |
+
|
977 |
+
#: admin/pages/privacy.php:100
|
978 |
+
msgid "Example"
|
979 |
+
msgstr "Esempio"
|
980 |
+
|
981 |
+
#: admin/pages/quick-start.php:35
|
982 |
+
msgid "Clearfy menu"
|
983 |
+
msgstr "Menu Clearfy"
|
984 |
+
|
985 |
+
#: admin/pages/quick-start.php:42
|
986 |
+
msgid "Quick start"
|
987 |
+
msgstr "Avvio veloce"
|
988 |
+
|
989 |
+
#: admin/pages/quick-start.php:76
|
990 |
+
msgid ""
|
991 |
+
"On this page you can quickly configure the plug-in without going into "
|
992 |
+
"details."
|
993 |
+
msgstr ""
|
994 |
+
"Su questa pagina puoi configurare velocemente il plugin senza entrare nei "
|
995 |
+
"dettagli."
|
996 |
+
|
997 |
+
#: admin/pages/quick-start.php:169
|
998 |
+
msgid "Reset all settings"
|
999 |
+
msgstr "Reimposta Configurazione"
|
1000 |
+
|
1001 |
+
#: admin/pages/quick-start.php:170
|
1002 |
+
msgid "Recommended Mode"
|
1003 |
+
msgstr "Impostazioni Raccomandate"
|
1004 |
+
|
1005 |
+
#: admin/pages/quick-start.php:171
|
1006 |
+
msgid "Code Clearing"
|
1007 |
+
msgstr "Pulizia del Codice"
|
1008 |
+
|
1009 |
+
#: admin/pages/quick-start.php:172
|
1010 |
+
msgid "Security"
|
1011 |
+
msgstr "Sicurezza"
|
1012 |
+
|
1013 |
+
#: admin/pages/quick-start.php:173
|
1014 |
+
msgid "Seo optimization"
|
1015 |
+
msgstr "Ottimizzazione SEO"
|
1016 |
+
|
1017 |
+
#: admin/pages/quick-start.php:175
|
1018 |
+
msgid "Remove default Widgets"
|
1019 |
+
msgstr "Rimuovi Widgets Predefiniti"
|
1020 |
+
|
1021 |
+
#: admin/pages/quick-start.php:182
|
1022 |
+
msgid "Are you sure you want to enable the this options?"
|
1023 |
+
msgstr "Sei sicuro di voler attivare queste opzioni?"
|
1024 |
+
|
1025 |
+
#: admin/pages/quick-start.php:185
|
1026 |
+
msgid ""
|
1027 |
+
"After confirmation, all the settings of the plug-in will return to the "
|
1028 |
+
"default state. Make backup settings by copying data from the export field."
|
1029 |
+
msgstr ""
|
1030 |
+
"Dopo la conferma, tutte le impostazioni del plugin ritorneranno allo stato "
|
1031 |
+
"iniziale. Fai un backup delle impostazioni copiando i dati dal campo di "
|
1032 |
+
"esportazione."
|
1033 |
+
|
1034 |
+
#: admin/pages/quick-start.php:189
|
1035 |
+
msgid "Confirm"
|
1036 |
+
msgstr "Conferma"
|
1037 |
+
|
1038 |
+
#: admin/pages/quick-start.php:190
|
1039 |
+
msgid "Cancel"
|
1040 |
+
msgstr "Annulla"
|
1041 |
+
|
1042 |
+
#: admin/pages/quick-start.php:196
|
1043 |
+
msgid ""
|
1044 |
+
"This is the quick plug-in setup mode. Use it if you do not want to "
|
1045 |
+
"understand the settings or do not understand what settings you need to use."
|
1046 |
+
msgstr ""
|
1047 |
+
"Questa è la modalità di configurazione veloce del plugin. Usala se non vuoi "
|
1048 |
+
"soffermarti sulle singole impostazioni o se non sai che impostazioni "
|
1049 |
+
"scegliere."
|
1050 |
+
|
1051 |
+
#: admin/pages/quick-start.php:197
|
1052 |
+
msgid "Select mode"
|
1053 |
+
msgstr "Scegli modalità"
|
1054 |
+
|
1055 |
+
#: admin/pages/quick-start.php:199
|
1056 |
+
msgid ""
|
1057 |
+
"After selecting the mode, the plug-in automatically activates the necessary "
|
1058 |
+
"settings for the mode."
|
1059 |
+
msgstr ""
|
1060 |
+
"Dopo aver selezionato la modalità, il plugin ne attiva automaticamente le "
|
1061 |
+
"impostazioni necessarie."
|
1062 |
+
|
1063 |
+
#: admin/pages/quick-start.php:231
|
1064 |
+
msgid "Activate"
|
1065 |
+
msgstr "Attiva"
|
1066 |
+
|
1067 |
+
#: admin/pages/quick-start.php:232
|
1068 |
+
msgid "Deactivate"
|
1069 |
+
msgstr "Disattiva"
|
1070 |
+
|
1071 |
+
#: admin/pages/quick-start.php:244
|
1072 |
+
msgid "Settings successfully updated!"
|
1073 |
+
msgstr "Impostazioni aggiornate con successo!"
|
1074 |
+
|
1075 |
+
#: admin/pages/quick-start.php:247
|
1076 |
+
msgid ""
|
1077 |
+
"During the setup, an unknown error occurred, please try again or contact the "
|
1078 |
+
"plug-in support."
|
1079 |
+
msgstr ""
|
1080 |
+
"Durante la configurazione, si è verificato un errore sconosciuto, riprova "
|
1081 |
+
"oppure contatta il supporto del plugin."
|
1082 |
+
|
1083 |
+
#: admin/pages/quick-start.php:254
|
1084 |
+
msgid "Import/Export settings"
|
1085 |
+
msgstr "Importa/Esporta Impostazioni"
|
1086 |
+
|
1087 |
+
#: admin/pages/quick-start.php:257
|
1088 |
+
msgid "Import options"
|
1089 |
+
msgstr "Importa opzioni"
|
1090 |
+
|
1091 |
+
#: admin/pages/quick-start.php:263
|
1092 |
+
msgid "Support"
|
1093 |
+
msgstr "Supporto"
|
1094 |
+
|
1095 |
+
#: admin/pages/quick-start.php:265
|
1096 |
+
msgid ""
|
1097 |
+
"If you faced with any issues, please follow the steps below to get quickly "
|
1098 |
+
"quality support:"
|
1099 |
+
msgstr ""
|
1100 |
+
"Se incontri qualsiasi problema, segui i passaggi di seguito per ottenere "
|
1101 |
+
"subito un supporto di qualità:"
|
1102 |
+
|
1103 |
+
#: admin/pages/quick-start.php:268
|
1104 |
+
msgid ""
|
1105 |
+
"Generate a debug report which will contains inforamtion about your "
|
1106 |
+
"configuratin and installed plugins"
|
1107 |
+
msgstr ""
|
1108 |
+
"Genera un report di debug, contenente le informazioni sulla tua "
|
1109 |
+
"configurazione e sui plugins installati."
|
1110 |
+
|
1111 |
+
#: admin/pages/quick-start.php:271
|
1112 |
+
msgid "Generate Debug Report"
|
1113 |
+
msgstr "Genera Report di Debug"
|
1114 |
+
|
1115 |
+
#: admin/pages/quick-start.php:275
|
1116 |
+
msgid ""
|
1117 |
+
"Send a message to <b>wordpress.webraftic@gmail.com</b> include the debug "
|
1118 |
+
"report into the message body."
|
1119 |
+
msgstr ""
|
1120 |
+
"Invia un messaggio a <b>wordpress.webraftic@gmail.com</b> includendo il "
|
1121 |
+
"report di debug nel corpo del messaggio."
|
1122 |
+
|
1123 |
+
#: admin/pages/quick-start.php:278
|
1124 |
+
msgid "We guarantee to respond you within 7 business day."
|
1125 |
+
msgstr "Garantiamo la risposta entro i 7 giorni lavorativi."
|
1126 |
+
|
1127 |
+
#: admin/pages/seo.php:27
|
1128 |
+
msgid "SEO"
|
1129 |
+
msgstr "SEO"
|
1130 |
+
|
1131 |
+
#: admin/pages/seo.php:68
|
1132 |
+
msgid ""
|
1133 |
+
"The alt attribute is mandatory, so most SEO experts say. If you missed or "
|
1134 |
+
"did not fill it at all, it will be automatically assigned and will be equal "
|
1135 |
+
"to the title of the article."
|
1136 |
+
msgstr ""
|
1137 |
+
"L'attributo \"alt\" è obbligatorio, secondo molti esperti di SEO. Se te lo "
|
1138 |
+
"sei dimenticato o non l'hai proprio riempito, sarà assegnato automaticamente "
|
1139 |
+
"per essere uguale al titolo dell'articolo."
|
1140 |
+
|
1141 |
+
#: admin/pages/seo.php:68
|
1142 |
+
#, php-format
|
1143 |
+
msgid "Replaces the %s, on attribute with an article name %s"
|
1144 |
+
msgstr ""
|
1145 |
+
|
1146 |
+
#: admin/pages/seo.php:78
|
1147 |
+
msgid ""
|
1148 |
+
"After installation, WP does not contain a robots.txt file and create it "
|
1149 |
+
"manually. We re-read about 30 different articles, instructions from Yandex "
|
1150 |
+
"and Google to create the perfect robots.txt"
|
1151 |
+
msgstr ""
|
1152 |
+
|
1153 |
+
#: admin/pages/seo.php:78
|
1154 |
+
msgid "Automatically creates the perfect robots.txt file"
|
1155 |
+
msgstr "Crea automaticamente il file robots.txt ideale"
|
1156 |
+
|
1157 |
+
#: admin/pages/seo.php:109
|
1158 |
+
msgid "Server headers and response"
|
1159 |
+
msgstr "Headers e risposte del server"
|
1160 |
+
|
1161 |
+
#: admin/pages/seo.php:109
|
1162 |
+
msgid ""
|
1163 |
+
"WordPress does not know how to give the Last Modified header in the server's "
|
1164 |
+
"responses. You can do this using the settings below."
|
1165 |
+
msgstr ""
|
1166 |
+
"WordPress non sa come impostare l'header \"Last Modified\" nelle risposte "
|
1167 |
+
"del server. Puoi farlo utilizzando le impostazioni qui sotto."
|
1168 |
+
|
1169 |
+
#: admin/pages/seo.php:137
|
1170 |
+
#, php-format
|
1171 |
+
msgid ""
|
1172 |
+
"You can specify a page mask, for example: %s or %s. All pages that contain "
|
1173 |
+
"the string will be excluded. Each exclude must begin with a new line."
|
1174 |
+
msgstr ""
|
1175 |
+
"Puoi specificare un filtro pagina, per esempio: %s o %s. Tutte le pagine che "
|
1176 |
+
"contengono la stringa saranno escluse. Qualsiasi esclusione deve cominciare "
|
1177 |
+
"su una nuova riga."
|
1178 |
+
|
1179 |
+
#: admin/pages/seo.php:155
|
1180 |
+
msgid "For the Yoast SEO plugin"
|
1181 |
+
msgstr "Per il plugin Yoast SEO"
|
1182 |
+
|
1183 |
+
#: admin/pages/seo.php:155
|
1184 |
+
msgid ""
|
1185 |
+
"These settings will help you eliminate some problems associated with the "
|
1186 |
+
"popular Yoast SEO plugin"
|
1187 |
+
msgstr ""
|
1188 |
+
"Queste impostazioni ti aiuteranno ad eliminare alcuni problemi associati con "
|
1189 |
+
"il popolare plugin Yoast SEO"
|
1190 |
+
|
1191 |
+
#: admin/pages/seo.php:169
|
1192 |
+
msgid ""
|
1193 |
+
"The last element in the breadcrumbs in the Yoast SEO plugin duplicates the "
|
1194 |
+
"title of the article. Some SEO-specialists consider this duplication to be "
|
1195 |
+
"superfluous."
|
1196 |
+
msgstr ""
|
1197 |
+
"L'ultimo elemento nel breadcrumb del plugin Yoast SEO duplica il titolo "
|
1198 |
+
"dell'articolo. Alcuni specialisti di SEO considerano questa duplicazione "
|
1199 |
+
"superflua."
|
1200 |
+
|
1201 |
+
#: admin/pages/seo.php:169
|
1202 |
+
msgid ""
|
1203 |
+
"Removes duplication of the name in the breadcrumbs of the WP SEO plugin from "
|
1204 |
+
"Yoast."
|
1205 |
+
msgstr "Rimuove la duplicazione del nome nel breadcrumb del plugin Yoast SEO."
|
1206 |
+
|
1207 |
+
#: admin/pages/seo.php:179
|
1208 |
+
msgid ""
|
1209 |
+
"Yandex.Webmaster swears on a standard XML card from the plugin Yoast, tk. it "
|
1210 |
+
"has a specific tag"
|
1211 |
+
msgstr ""
|
1212 |
+
|
1213 |
+
#: admin/pages/seo.php:179
|
1214 |
+
#, php-format
|
1215 |
+
msgid "Remove the tag %s from XML site map of the plugin Yoast SEO."
|
1216 |
+
msgstr "Rimuovi il tag %s dalla site map XML del plugin Yoast SEO."
|
1217 |
+
|
1218 |
+
#: admin/pages/seo.php:179
|
1219 |
+
msgid ""
|
1220 |
+
"Attention! After activation, turn off the site map and enable it back to "
|
1221 |
+
"regenerate it."
|
1222 |
+
msgstr ""
|
1223 |
+
"Attenzione! Dopo l'attivazione, disattiva la site map e riattivala per "
|
1224 |
+
"rigenerarla."
|
1225 |
+
|
1226 |
+
#: admin/pages/seo.php:179
|
1227 |
+
msgid "In older versions of Yoast SEO may not work - update the plugin Yoast"
|
1228 |
+
msgstr ""
|
1229 |
+
"Nelle versioni vecchie di Yoast SEO, questo potrebbe non funzionare: "
|
1230 |
+
"assicurati che il plugin sia aggiornato."
|
1231 |
+
|
1232 |
+
#: admin/pages/seo.php:197
|
1233 |
+
msgid ""
|
1234 |
+
"If you’re not familiar with Search Action it’s the mark-up that helps search "
|
1235 |
+
"engines add a shiny Sitelinks Search Box below your search engine results. "
|
1236 |
+
"For the majority of webmasters the extra search box is an absolutely "
|
1237 |
+
"fantastic feature but for many it’s not required or wanted, especially if a "
|
1238 |
+
"site only has a few pages or if the site uses a customised search platform "
|
1239 |
+
"that only searches blog posts and not pages."
|
1240 |
+
msgstr ""
|
1241 |
+
"Se non conosci l'Azione di Ricerca, è il markup che permette ai motori di "
|
1242 |
+
"ricerca di aggiungere una casella di ricerca sitelink sotto ai tuoi "
|
1243 |
+
"risultati del motore di ricerca. Per la maggior parte dei webmaster, la "
|
1244 |
+
"casella di ricerca aggiuntiva è un'ottima caratteristica, ma per altri può "
|
1245 |
+
"non essere richiesta o desiderata, specialmente se un sito ha soltanto poche "
|
1246 |
+
"pagine o se utilizza una piattaforma di ricerca personalizzata che ricerca "
|
1247 |
+
"solo gli articoli e non le pagine."
|
1248 |
+
|
1249 |
+
#: admin/pages/seo.php:197
|
1250 |
+
msgid ""
|
1251 |
+
"Disable JSON-LD sitelinks searchbox using WordPress in plugin Yoast SEO."
|
1252 |
+
msgstr ""
|
1253 |
+
"Disattiva casella di ricerca sitelinks JSON-LD di WordPress nel plugin Yoast "
|
1254 |
+
"SEO."
|
1255 |
+
|
1256 |
+
#: admin/pages/seo.php:207
|
1257 |
+
msgid ""
|
1258 |
+
"Prevents output of the script tag of type application/ld+json containing\n"
|
1259 |
+
"schema.org data from the popular Yoast SEO and Yoast SEO Premium plugins.\n"
|
1260 |
+
"There is currently no UI to do so."
|
1261 |
+
msgstr ""
|
1262 |
+
"Blocca l'output dello script tag di tipo application/id+json contenente i "
|
1263 |
+
"dati\n"
|
1264 |
+
"dallo schema.org dei famosi plugin Yoast SEO e Yoast SEO Premium.\n"
|
1265 |
+
"Attualmente, non è possibile rimuoverli tramite interfaccia utente."
|
1266 |
+
|
1267 |
+
#: admin/pages/seo.php:209
|
1268 |
+
msgid "Disable Structured Data in plugin Yoast SEO."
|
1269 |
+
msgstr "Disattiva Dati Strutturati nel plugin Yoast SEO."
|
1270 |
+
|
1271 |
+
#: admin/pages/seo.php:219
|
1272 |
+
#, php-format
|
1273 |
+
msgid "The Yoast SEO plugin displays a comment of the form %s in %s section"
|
1274 |
+
msgstr "Il plugin Yoast SEO mostra un commento nel formato %s nella sezione %s"
|
1275 |
+
|
1276 |
+
#: admin/pages/seo.php:219
|
1277 |
+
#, php-format
|
1278 |
+
msgid "Removes the Yoast SEO plugin comment of their section %s"
|
1279 |
+
msgstr "Rimuove il commento della sezione %s del plugin Yoast SEO"
|
1280 |
+
|
1281 |
+
#: admin/pages/widgets.php:25
|
1282 |
+
msgid "Widgets"
|
1283 |
+
msgstr "Widgets"
|
1284 |
+
|
1285 |
+
#: clearfy.php:63
|
1286 |
+
msgid "Clearfy"
|
1287 |
+
msgstr "Clearfy"
|
1288 |
+
|
1289 |
+
#: clearfy.php:112
|
1290 |
+
msgid "Irks! An error has occurred."
|
1291 |
+
msgstr ""
|
1292 |
+
|
1293 |
+
#: includes/classes/class.configurate-advanced.php:247
|
1294 |
+
msgid "Howdy"
|
1295 |
+
msgstr "Ciao"
|
1296 |
+
|
1297 |
+
#: includes/classes/class.configurate-advanced.php:247
|
1298 |
+
msgid "Welcome"
|
1299 |
+
msgstr "Benvenuto/a"
|
1300 |
+
|
1301 |
+
#: includes/classes/class.configurate-security.php:30
|
1302 |
+
msgid "<strong>ERROR</strong>: Wrong login or password"
|
1303 |
+
msgstr "<strong>ERRORE</strong>: Login o password errati"
|
1304 |
+
|
1305 |
+
#: includes/classes/class.zip-archive.php:10
|
1306 |
+
msgid "The ZipArchive class does not exist in this version of php."
|
1307 |
+
msgstr ""
|
1308 |
+
|
1309 |
+
#~ msgid "Comments tweaks"
|
1310 |
+
#~ msgstr "Personalizzazioni commenti"
|
1311 |
+
|
1312 |
+
#~ msgid "Webcraftic comments tweaks"
|
1313 |
+
#~ msgstr "Personalizzazioni commenti Webcraftic"
|
1314 |
+
|
1315 |
+
#~ msgid "Webcraftic Clearfy - disable unused features"
|
1316 |
+
#~ msgstr "Webcraftic Clearfy - disattiva caratteristiche inutilizzate"
|
1317 |
+
|
1318 |
+
#~ msgid ""
|
1319 |
+
#~ "Disables unused Wordpress features, improves performance and increases "
|
1320 |
+
#~ "SEO rankings, using Clearfy, which makes WordPress very easy."
|
1321 |
+
#~ msgstr ""
|
1322 |
+
#~ "Disattiva caratteristiche inutilizzare di WordPress, migliora le "
|
1323 |
+
#~ "prestazione ed aumenta il posizionamento SEO tramite la semplicità di "
|
1324 |
+
#~ "Clarify."
|
languages/clearfy-ru_RU.mo
CHANGED
Binary file
|
languages/clearfy-ru_RU.po
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: clearfy\n"
|
4 |
-
"POT-Creation-Date:
|
5 |
-
"PO-Revision-Date:
|
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"
|
@@ -23,7 +23,7 @@ msgstr ""
|
|
23 |
msgid "You don't have enough capability to edit this information."
|
24 |
msgstr "У вас недостаточно возможностей для редактирования этой информации."
|
25 |
|
26 |
-
#: admin/ajax/configurate.php:
|
27 |
msgid "Undefinded mode."
|
28 |
msgstr "Неопределенный режим."
|
29 |
|
@@ -67,230 +67,234 @@ msgstr "Удалить стили .recentcomments"
|
|
67 |
msgid "Automatically set the alt attribute"
|
68 |
msgstr "Автоматически устанавливать атрибут alt"
|
69 |
|
70 |
-
#: admin/includes/options.php:57 admin/pages/seo.php:
|
71 |
msgid "Automatically insert the Last Modified header"
|
72 |
msgstr "Автоматически вставлять заголовок Last Modified"
|
73 |
|
74 |
-
#: admin/includes/options.php:62 admin/pages/seo.php:
|
75 |
msgid "Return an If-Modified-Since responce"
|
76 |
msgstr "Возвращать заголовок If-Modified-Since"
|
77 |
|
78 |
-
#: admin/includes/options.php:67 admin/pages/seo.php:
|
79 |
msgid "Remove duplicate names in breadcrumbs WP SEO by Yoast"
|
80 |
msgstr "Удалить дубли имен в хлебных крошках WP SEO Yoast"
|
81 |
|
82 |
-
#: admin/includes/options.php:72 admin/pages/seo.php:
|
83 |
#, php-format
|
84 |
msgid "Remove the tag %s from XML site map"
|
85 |
msgstr "Удаляет тег %s из XML карты сайта плагин Yoast SEO."
|
86 |
|
87 |
-
#: admin/includes/options.php:77 admin/pages/seo.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
#, php-format
|
89 |
msgid "Remove comment from %s section"
|
90 |
msgstr "Удалить комментарии из секции %s"
|
91 |
|
92 |
-
#: admin/includes/options.php:
|
93 |
msgid "Remove archives date"
|
94 |
msgstr "Удалить архивы дат"
|
95 |
|
96 |
-
#: admin/includes/options.php:
|
97 |
msgid "Remove author archives "
|
98 |
msgstr "Удалить архивы автора"
|
99 |
|
100 |
-
#: admin/includes/options.php:
|
101 |
msgid "Remove archives tag"
|
102 |
msgstr "Удалить метки архивов"
|
103 |
|
104 |
-
#: admin/includes/options.php:
|
105 |
msgid "Remove attachment pages"
|
106 |
msgstr "Удалить страницы вложений"
|
107 |
|
108 |
-
#: admin/includes/options.php:
|
109 |
msgid "Remove post pagination"
|
110 |
msgstr "Удалить постраничную навигацию записей"
|
111 |
|
112 |
-
#: admin/includes/options.php:
|
113 |
msgid "Remove ?replytocom"
|
114 |
msgstr "Удалить ?replytocom"
|
115 |
|
116 |
-
#: admin/includes/options.php:
|
117 |
msgid "Remove meta generator"
|
118 |
msgstr "Удалить meta generator"
|
119 |
|
120 |
-
#: admin/includes/options.php:
|
121 |
msgid "Hide author login"
|
122 |
msgstr "Убрать возможность узнать логин автора"
|
123 |
|
124 |
-
#: admin/includes/options.php:
|
125 |
msgid "Hide errors when logging into the site"
|
126 |
msgstr "Спрятать ошибки при входе на сайт"
|
127 |
|
128 |
-
#: admin/includes/options.php:
|
129 |
#: admin/pages/privacy.php:76
|
130 |
msgid "Remove Version from Stylesheet"
|
131 |
msgstr "Удалить версию у файлов стилей"
|
132 |
|
133 |
-
#: admin/includes/options.php:
|
134 |
#: admin/pages/privacy.php:87
|
135 |
msgid "Remove Version from Script"
|
136 |
msgstr "Удаляет версию у javascript файлов"
|
137 |
|
138 |
-
#: admin/includes/options.php:
|
139 |
msgid "Remove the \"Pages\" widget"
|
140 |
msgstr "Удалите виджет «Страницы»"
|
141 |
|
142 |
-
#: admin/includes/options.php:
|
143 |
msgid "Remove calendar widget"
|
144 |
msgstr "Удалить виджет календаря"
|
145 |
|
146 |
-
#: admin/includes/options.php:
|
147 |
msgid "Remove the \"Cloud of tags\" widget"
|
148 |
msgstr "Удалите виджет «Облако тегов»"
|
149 |
|
150 |
-
#: admin/includes/options.php:
|
151 |
msgid "Remove the \"Archives\" widget"
|
152 |
msgstr "Удалите виджет «Архивы»"
|
153 |
|
154 |
-
#: admin/includes/options.php:
|
155 |
msgid "Remove the \"Links\" widget"
|
156 |
msgstr "Удалите виджет «Ссылки»"
|
157 |
|
158 |
-
#: admin/includes/options.php:
|
159 |
msgid "Remove the \"Meta\" widget"
|
160 |
msgstr "Удалите виджет «Мета»"
|
161 |
|
162 |
-
#: admin/includes/options.php:
|
163 |
msgid "Remove the \"Search\" widget"
|
164 |
msgstr "Удалите виджет «Поиск»"
|
165 |
|
166 |
-
#: admin/includes/options.php:
|
167 |
#: admin/pages/widgets.php:107
|
168 |
msgid "Remove the \"Text\" widget"
|
169 |
msgstr "Удалите виджет «Текст»"
|
170 |
|
171 |
-
#: admin/includes/options.php:
|
172 |
msgid "Remove the \"Categories\" widget"
|
173 |
msgstr "Удалите виджет «Категории»"
|
174 |
|
175 |
-
#: admin/includes/options.php:
|
176 |
msgid "Remove the \"Recent Posts\" widget"
|
177 |
msgstr "Удалите виджет «Последние записи»"
|
178 |
|
179 |
-
#: admin/includes/options.php:
|
180 |
msgid "Remove the \"Recent Comments\" widget"
|
181 |
msgstr "Удалите виджет «Последние комментарии»"
|
182 |
|
183 |
-
#: admin/includes/options.php:
|
184 |
msgid "Remove the \"RSS\" widget"
|
185 |
msgstr "Удалить виджет «RSS»"
|
186 |
|
187 |
-
#: admin/includes/options.php:
|
188 |
msgid "Remove the \"Menu\" widget"
|
189 |
msgstr "Удалите виджет «Меню»"
|
190 |
|
191 |
-
#: admin/includes/options.php:
|
192 |
msgid "Remove the \"Twenty Eleven Ephemera\" widget"
|
193 |
msgstr "Удалите виджет \"Twenty Eleven Ephemera\""
|
194 |
|
195 |
-
#: admin/includes/options.php:
|
196 |
-
#: admin/pages/additionally.php:
|
197 |
msgid "Disable revision"
|
198 |
msgstr "Отключить ревизии"
|
199 |
|
200 |
-
#: admin/includes/options.php:
|
201 |
-
#: admin/pages/additionally.php:
|
202 |
msgid "Limit Post Revisions"
|
203 |
msgstr "Установить лимит ревизий"
|
204 |
|
205 |
-
#: admin/includes/options.php:
|
206 |
msgid "Exclude pages:"
|
207 |
msgstr "Исключить страницы:"
|
208 |
|
209 |
-
#: admin/includes/options.php:
|
210 |
msgid "Create right robots.txt"
|
211 |
msgstr "Создайте правильный robots.txt"
|
212 |
|
213 |
-
#: admin/includes/options.php:
|
214 |
msgid "You can edit the robots.txt file in the box below:"
|
215 |
msgstr "Вы можете отредактировать файл robots.txt в поле ниже:"
|
216 |
|
217 |
-
#: admin/includes/options.php:
|
218 |
msgid "Quick mode"
|
219 |
msgstr "Быстрый старт"
|
220 |
|
221 |
-
#: admin/includes/options.php:
|
222 |
msgid "Remove jQuery Migrate"
|
223 |
msgstr "Удалить jQuery Migrate"
|
224 |
|
225 |
-
#: admin/includes/options.php:
|
226 |
msgid "Disable Embeds"
|
227 |
msgstr "Отключить Embeds"
|
228 |
|
229 |
-
#: admin/includes/options.php:
|
230 |
msgid "Disable RSS feeds"
|
231 |
msgstr "Отключить RSS каналы"
|
232 |
|
233 |
-
#: admin/includes/options.php:
|
234 |
msgid "Removes links to wordpress.org site from the admin bar"
|
235 |
msgstr "Удаляет ссылки на wordpress.org сайт из панели администратора"
|
236 |
|
237 |
-
#: admin/includes/options.php:
|
238 |
msgid "HTML minify"
|
239 |
msgstr "Html сжатие"
|
240 |
|
241 |
-
#: admin/includes/options.php:
|
242 |
msgid "Redirect Http to Https"
|
243 |
msgstr "Перенаправление Http на Https"
|
244 |
|
245 |
-
#: admin/includes/options.php:
|
246 |
msgid "Eclude stylesheet/script file names"
|
247 |
msgstr "Исключает файлы стилей/сприптов"
|
248 |
|
249 |
-
#: admin/includes/options.php:
|
250 |
msgid "Enable Sanitization of WordPress"
|
251 |
msgstr "Включить Wordpress Sanitization"
|
252 |
|
253 |
-
#: admin/includes/options.php:
|
254 |
-
msgid "Disable admin notice"
|
255 |
-
msgstr "Скрыть уведомления в админ панели"
|
256 |
-
|
257 |
-
#: admin/includes/options.php:269 admin/pages/additionally.php:94
|
258 |
msgid "Disable admin top bar"
|
259 |
msgstr "Скрыть верхнюю панель администратора"
|
260 |
|
261 |
-
#: admin/includes/options.php:
|
262 |
msgid "Remove admin bar WP logo"
|
263 |
msgstr "Удалить логотип Wordpress из админбара"
|
264 |
|
265 |
-
#: admin/includes/options.php:
|
266 |
msgid "Replace \"Howdy\" text with \"Welcome\""
|
267 |
msgstr "Заменить текст \"Привет\", на \"Добро пожаловать\""
|
268 |
|
269 |
-
#: admin/includes/options.php:
|
270 |
msgid "Disable autosave"
|
271 |
msgstr "Отключить автосохранения"
|
272 |
|
273 |
-
#: admin/includes/options.php:
|
274 |
msgid "Disable Texturization - Smart Quotes"
|
275 |
msgstr "Отключить \"Умные кавычки\""
|
276 |
|
277 |
-
#: admin/includes/options.php:
|
278 |
msgid "Disable capitalization in Wordpress branding"
|
279 |
msgstr "Отключить верблюжий шрифт в WordPress брендинге"
|
280 |
|
281 |
-
#: admin/includes/options.php:
|
282 |
msgid "Disable auto inserted paragraphs (i.e. p tags)"
|
283 |
msgstr "Отключить автоматические параграфы (т.е p теги)"
|
284 |
|
285 |
-
#: admin/includes/options.php:
|
286 |
msgid "Disable Heartbeat"
|
287 |
msgstr "Отключить пульсацию Wordpress"
|
288 |
|
289 |
-
#: admin/includes/options.php:
|
290 |
msgid "Heartbeat frequency"
|
291 |
msgstr "Интервал пульсации Wordpress"
|
292 |
|
293 |
-
#: admin/includes/options.php:
|
294 |
#: admin/pages/privacy.php:107
|
295 |
msgid "Remove html comments"
|
296 |
msgstr "Удалить html комментарии"
|
@@ -299,7 +303,7 @@ msgstr "Удалить html комментарии"
|
|
299 |
msgid "Advanced"
|
300 |
msgstr "Дополнительно"
|
301 |
|
302 |
-
#: admin/pages/additionally.php:
|
303 |
msgid ""
|
304 |
"Warning! In the wp-config.php file, a constant WP_POST_REVISIONS is found, "
|
305 |
"it determines the number of revisions. Delete it so you can change this "
|
@@ -310,66 +314,82 @@ msgstr ""
|
|
310 |
"значение через панель администратора."
|
311 |
|
312 |
#: admin/pages/additionally.php:70
|
313 |
-
msgid ""
|
314 |
-
|
315 |
-
"problems when creating permalinks."
|
316 |
-
msgstr ""
|
317 |
-
"Имена файлов и некоторые заголовки могут иметь специальные символы, что "
|
318 |
-
"может вызвать проблемы при создании постоянных ссылок."
|
319 |
|
320 |
#: admin/pages/additionally.php:70
|
321 |
msgid ""
|
322 |
-
"
|
323 |
-
"
|
324 |
-
"
|
|
|
|
|
325 |
msgstr ""
|
326 |
-
"
|
327 |
-
"
|
328 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
329 |
|
330 |
#: admin/pages/additionally.php:80
|
331 |
-
msgid ""
|
332 |
-
|
333 |
-
"the top of your admin area, letting you know your version is out-of-date and "
|
334 |
-
"you need to update the core code.<br>\n"
|
335 |
-
"For many people, this nag can be annoying. And if you developer websites for "
|
336 |
-
"clients, you may want to hide it. After all, who wants to let their clients "
|
337 |
-
"know their software is old?"
|
338 |
-
msgstr ""
|
339 |
-
"Всякий раз, когда доступна основная версия плагинов, тем, вы будете видеть "
|
340 |
-
"уведомление, что вам необходимо обновить базовый код. Также некоторые "
|
341 |
-
"плагины могут выводить уведомления о переходе на премиум версию или "
|
342 |
-
"активацию темы.<br>\n"
|
343 |
-
"Для многих людей это может быть раздражающим. И если вы создаете веб-сайты "
|
344 |
-
"для клиентов, вы можете скрыть их. В конце концов, кто хочет, чтобы их "
|
345 |
-
"клиенты знали, что их программное обеспечение устарело?"
|
346 |
|
347 |
#: admin/pages/additionally.php:81
|
348 |
-
msgid "
|
349 |
-
msgstr "
|
350 |
|
351 |
-
#: admin/pages/additionally.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
352 |
msgid "Admin bar"
|
353 |
msgstr "Верхняя панель администратора"
|
354 |
|
355 |
-
#: admin/pages/additionally.php:
|
356 |
msgid "In this group of settings, you can manage the adminbar."
|
357 |
msgstr ""
|
358 |
"В этой группе настроек вы можете управлять верхней панелью администратора."
|
359 |
|
360 |
-
#: admin/pages/additionally.php:
|
361 |
msgid "Default enable"
|
362 |
msgstr "Включен (по умолчанию)"
|
363 |
|
364 |
-
#: admin/pages/additionally.php:
|
365 |
msgid "For all users"
|
366 |
msgstr "Для всех пользователей"
|
367 |
|
368 |
-
#: admin/pages/additionally.php:
|
369 |
msgid "For all users except administrator"
|
370 |
msgstr "Для всех, кроме администратора"
|
371 |
|
372 |
-
#: admin/pages/additionally.php:
|
373 |
msgid ""
|
374 |
"In some cases, you need to disable the floating top admin panel. You can "
|
375 |
"disable this panel."
|
@@ -377,43 +397,39 @@ msgstr ""
|
|
377 |
"В некоторых случаях вам необходимо отключить админбар. Вы можете это сделать "
|
378 |
"с помощью текущей опции."
|
379 |
|
380 |
-
#: admin/pages/additionally.php:
|
381 |
msgid "Disable admin top bar."
|
382 |
msgstr "Отключить верхнюю панель администратора."
|
383 |
|
384 |
-
#: admin/pages/additionally.php:
|
385 |
msgid "Enable this if you want to remove wp logo from admin bar."
|
386 |
msgstr ""
|
387 |
"Включите это, если вы хотите удалить логотип Wordpress из верхней панели "
|
388 |
"администратора."
|
389 |
|
390 |
-
#: admin/pages/additionally.php:
|
391 |
msgid "Replaces the welcome text in admin bar."
|
392 |
msgstr "Заменяет текст приветствия в панели администратора."
|
393 |
|
394 |
-
#: admin/pages/additionally.php:
|
395 |
msgid "Posts"
|
396 |
msgstr "Записи"
|
397 |
|
398 |
-
#: admin/pages/additionally.php:
|
399 |
msgid "In this group of options, you can manage revisions and post autosave."
|
400 |
msgstr ""
|
401 |
"В этой группе опций вы можете управлять ревизиями и автосохранением записей "
|
402 |
"и страниц."
|
403 |
|
404 |
-
#: admin/pages/additionally.php:
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
#: admin/pages/additionally.php:
|
409 |
-
#: admin/pages/additionally.php:175 admin/pages/additionally.php:176
|
410 |
-
#: admin/pages/additionally.php:177 admin/pages/additionally.php:178
|
411 |
-
#: admin/pages/additionally.php:179 admin/pages/additionally.php:180
|
412 |
-
#: admin/pages/additionally.php:181 admin/pages/additionally.php:182
|
413 |
msgid "revisions"
|
414 |
msgstr "ревизии"
|
415 |
|
416 |
-
#: admin/pages/additionally.php:
|
417 |
msgid ""
|
418 |
"WordPress automatically saves revisions when you are working on posts and "
|
419 |
"pages. These can begin to add up pretty quick. By default, there is no limit "
|
@@ -432,7 +448,7 @@ msgstr ""
|
|
432 |
"базы данных, а также использовать дисковое пространство.\n"
|
433 |
"Поэтому мы рекомендуем либо отключать, либо ограничивать ваши изменения."
|
434 |
|
435 |
-
#: admin/pages/additionally.php:
|
436 |
msgid ""
|
437 |
"WordPress by default automatically saves a draft every 60 seconds (1 "
|
438 |
"minute). There are reasons why you might want to change this."
|
@@ -440,11 +456,11 @@ msgstr ""
|
|
440 |
"WordPress по умолчанию автоматически сохраняет черновик каждые 60 секунд (1 "
|
441 |
"минута). Есть причины, по которым вы можете изменить это."
|
442 |
|
443 |
-
#: admin/pages/additionally.php:
|
444 |
msgid "Disables automatic saving of drafts."
|
445 |
msgstr "Отключает автоматическое сохранение черновиков."
|
446 |
|
447 |
-
#: admin/pages/additionally.php:
|
448 |
msgid ""
|
449 |
"Function of text formatting. This function makes the text more correct, "
|
450 |
"readable and visually appealing. But sometimes this function may prevent you "
|
@@ -454,11 +470,11 @@ msgstr ""
|
|
454 |
"читаемым и визуально привлекательным. Но иногда эта функция может помешать "
|
455 |
"вам использовать определенные коды и символы."
|
456 |
|
457 |
-
#: admin/pages/additionally.php:
|
458 |
msgid "Disable Texturization - Smart Quotes."
|
459 |
msgstr "Отключить умные кавычки"
|
460 |
|
461 |
-
#: admin/pages/additionally.php:
|
462 |
msgid ""
|
463 |
"Replaces the incorrectly written letter \"p\" in the middle of WordPress "
|
464 |
"(you need to write with the capital P in the middle)."
|
@@ -466,70 +482,46 @@ msgstr ""
|
|
466 |
"Заменяет неправильно написанную букву «p» в середине WordPress (вам нужно "
|
467 |
"написать ее верхнем регистре P в середине)."
|
468 |
|
469 |
-
#: admin/pages/additionally.php:
|
470 |
msgid "Disable capitalization in Wordpress branding."
|
471 |
msgstr "Отключить верблюжий шрифт в брендинге Wordpress."
|
472 |
|
473 |
-
#: admin/pages/additionally.php:
|
474 |
msgid ""
|
475 |
"Replaces the double shifting of a string to an HTML p ... /p construct, and "
|
476 |
"a single one on br."
|
477 |
msgstr ""
|
478 |
"Заменяет двойное смещение строки на конструкцию HTML p ... / p и одну на br."
|
479 |
|
480 |
-
#: admin/pages/additionally.php:
|
481 |
msgid "Disable auto inserted paragraphs."
|
482 |
msgstr "Отключить автоматически вставленные абзацы."
|
483 |
|
484 |
-
#: admin/pages/additionally.php:
|
485 |
-
msgid "
|
486 |
-
msgstr "
|
|
|
|
|
|
|
|
|
487 |
|
488 |
-
#: admin/pages/additionally.php:
|
489 |
msgid ""
|
490 |
-
"
|
491 |
-
"
|
492 |
-
"usage and crazy amounts of PHP calls. For example, if you leave your "
|
493 |
-
"dashboard open it will keep sending POST requests to this file on a regular "
|
494 |
-
"interval, every 15 seconds. Here is an example below of it happening."
|
495 |
msgstr ""
|
496 |
-
"
|
497 |
-
"
|
498 |
-
"также вызвать высокую загрузку процессора и большое количество обращений к "
|
499 |
-
"серверу. Например, если вы оставите свою панель управления открытой, она "
|
500 |
-
"будет регулярно отправлять POST-запросы в этот файл через каждые 15 секунд. "
|
501 |
-
"Ниже приведен пример ниже."
|
502 |
-
|
503 |
-
#: admin/pages/additionally.php:241
|
504 |
-
msgid "Default"
|
505 |
-
msgstr "По умолчанию"
|
506 |
-
|
507 |
-
#: admin/pages/additionally.php:242
|
508 |
-
msgid "Everywhere"
|
509 |
-
msgstr "Повсюду"
|
510 |
-
|
511 |
-
#: admin/pages/additionally.php:243
|
512 |
-
msgid "On dashboard page"
|
513 |
-
msgstr "В панели инструментов"
|
514 |
-
|
515 |
-
#: admin/pages/additionally.php:244
|
516 |
-
msgid "Only allow when editing Posts/Pages"
|
517 |
-
msgstr "Когда редактируете записи/страницы"
|
518 |
-
|
519 |
-
#: admin/pages/additionally.php:271 admin/pages/additionally.php:272
|
520 |
-
#: admin/pages/additionally.php:273 admin/pages/additionally.php:274
|
521 |
-
#: admin/pages/additionally.php:275 admin/pages/additionally.php:276
|
522 |
-
#: admin/pages/additionally.php:277 admin/pages/additionally.php:278
|
523 |
-
#: admin/pages/additionally.php:279
|
524 |
-
msgid "seconds"
|
525 |
-
msgstr "секунды"
|
526 |
|
527 |
-
#: admin/pages/additionally.php:
|
528 |
msgid ""
|
529 |
-
"
|
|
|
|
|
530 |
msgstr ""
|
531 |
-
"
|
532 |
-
"
|
|
|
533 |
|
534 |
#: admin/pages/code-clean.php:27
|
535 |
msgid "Code cleaning"
|
@@ -583,8 +575,8 @@ msgstr "Отключает REST API и удаляет все ссылки из
|
|
583 |
#: admin/pages/double-pages.php:96 admin/pages/double-pages.php:106
|
584 |
#: admin/pages/double-pages.php:116 admin/pages/privacy.php:66
|
585 |
#: admin/pages/privacy.php:76 admin/pages/privacy.php:87 admin/pages/seo.php:66
|
586 |
-
#: admin/pages/seo.php:
|
587 |
-
#: admin/pages/seo.php:
|
588 |
msgid "Recommended"
|
589 |
msgstr "Рекомендовано"
|
590 |
|
@@ -981,35 +973,35 @@ msgstr ""
|
|
981 |
"На этой странице вы можете быстро настроить плагин, не вдаваясь в "
|
982 |
"подробности."
|
983 |
|
984 |
-
#: admin/pages/quick-start.php:169
|
985 |
-
msgid "Reset all settings"
|
986 |
-
msgstr "Сбросить все настройки"
|
987 |
-
|
988 |
#: admin/pages/quick-start.php:170
|
989 |
-
msgid "
|
990 |
-
msgstr "
|
991 |
|
992 |
-
#: admin/pages/quick-start.php:
|
993 |
-
msgid "
|
994 |
-
msgstr "Очистка кода"
|
995 |
|
996 |
-
#: admin/pages/quick-start.php:
|
997 |
-
msgid "
|
998 |
-
msgstr "
|
999 |
|
1000 |
-
#: admin/pages/quick-start.php:
|
1001 |
-
msgid "
|
1002 |
-
msgstr "
|
1003 |
|
1004 |
-
#: admin/pages/quick-start.php:
|
1005 |
-
msgid "
|
1006 |
-
msgstr "Удалить виджеты по умолчанию"
|
1007 |
|
1008 |
-
#: admin/pages/quick-start.php:
|
|
|
|
|
|
|
|
|
1009 |
msgid "Are you sure you want to enable the this options?"
|
1010 |
msgstr "Вы действительно хотите включить эти настройки?"
|
1011 |
|
1012 |
-
#: admin/pages/quick-start.php:
|
1013 |
msgid ""
|
1014 |
"After confirmation, all the settings of the plug-in will return to the "
|
1015 |
"default state. Make backup settings by copying data from the export field."
|
@@ -1018,47 +1010,59 @@ msgstr ""
|
|
1018 |
"умолчанию. Сделайте резервную копию настроек, скопировав данные из поля "
|
1019 |
"экспорта."
|
1020 |
|
1021 |
-
#: admin/pages/quick-start.php:
|
1022 |
msgid "Confirm"
|
1023 |
msgstr "Подтвердить"
|
1024 |
|
1025 |
-
#: admin/pages/quick-start.php:
|
1026 |
msgid "Cancel"
|
1027 |
msgstr "Отмена"
|
1028 |
|
1029 |
-
#: admin/pages/quick-start.php:
|
1030 |
msgid ""
|
1031 |
-
"
|
1032 |
-
"
|
|
|
|
|
|
|
|
|
1033 |
msgstr ""
|
1034 |
-
"Это
|
1035 |
-
"
|
|
|
|
|
|
|
|
|
1036 |
|
1037 |
-
#: admin/pages/quick-start.php:
|
1038 |
-
msgid "Select
|
1039 |
-
msgstr "
|
1040 |
|
1041 |
-
#: admin/pages/quick-start.php:
|
1042 |
msgid ""
|
1043 |
-
"After selecting
|
1044 |
-
"settings
|
1045 |
msgstr ""
|
1046 |
-
"
|
1047 |
-
"
|
1048 |
-
|
1049 |
-
#: admin/pages/quick-start.php:230
|
1050 |
-
msgid "Activate"
|
1051 |
-
msgstr "Включить"
|
1052 |
|
1053 |
#: admin/pages/quick-start.php:231
|
1054 |
-
msgid "
|
1055 |
-
msgstr "
|
|
|
|
|
|
|
|
|
1056 |
|
1057 |
-
#: admin/pages/quick-start.php:
|
|
|
|
|
|
|
|
|
1058 |
msgid "Settings successfully updated!"
|
1059 |
msgstr "Настройки успешно обновлены!"
|
1060 |
|
1061 |
-
#: admin/pages/quick-start.php:
|
1062 |
msgid ""
|
1063 |
"During the setup, an unknown error occurred, please try again or contact the "
|
1064 |
"plug-in support."
|
@@ -1066,19 +1070,19 @@ msgstr ""
|
|
1066 |
"Во время установки произошла неизвестная ошибка, повторите попытку или "
|
1067 |
"обратитесь в службу поддержки плагинов."
|
1068 |
|
1069 |
-
#: admin/pages/quick-start.php:
|
1070 |
msgid "Import/Export settings"
|
1071 |
msgstr "Импорт/Экспорт настроек"
|
1072 |
|
1073 |
-
#: admin/pages/quick-start.php:
|
1074 |
msgid "Import options"
|
1075 |
msgstr "Импортировать настройки"
|
1076 |
|
1077 |
-
#: admin/pages/quick-start.php:
|
1078 |
msgid "Support"
|
1079 |
msgstr "Поддержка"
|
1080 |
|
1081 |
-
#: admin/pages/quick-start.php:
|
1082 |
msgid ""
|
1083 |
"If you faced with any issues, please follow the steps below to get quickly "
|
1084 |
"quality support:"
|
@@ -1086,7 +1090,7 @@ msgstr ""
|
|
1086 |
"Если вы столкнулись с какими-либо проблемами, выполните следующие действия, "
|
1087 |
"чтобы быстро получить качественную поддержку:"
|
1088 |
|
1089 |
-
#: admin/pages/quick-start.php:
|
1090 |
msgid ""
|
1091 |
"Generate a debug report which will contains inforamtion about your "
|
1092 |
"configuratin and installed plugins"
|
@@ -1094,11 +1098,11 @@ msgstr ""
|
|
1094 |
"Создайте отчет об ошибках, который будет содержать информацию о вашей "
|
1095 |
"конфигурации и установленных плагинах."
|
1096 |
|
1097 |
-
#: admin/pages/quick-start.php:
|
1098 |
msgid "Generate Debug Report"
|
1099 |
msgstr "Сгенерировать отчет об ошибках"
|
1100 |
|
1101 |
-
#: admin/pages/quick-start.php:
|
1102 |
msgid ""
|
1103 |
"Send a message to <b>wordpress.webraftic@gmail.com</b> include the debug "
|
1104 |
"report into the message body."
|
@@ -1106,7 +1110,7 @@ msgstr ""
|
|
1106 |
"Отправьте ваше сообщение на <b>wordpress.webraftic@gmail.com</b>, к "
|
1107 |
"сообщению прикрепите отчет об ошибках"
|
1108 |
|
1109 |
-
#: admin/pages/quick-start.php:
|
1110 |
msgid "We guarantee to respond you within 7 business day."
|
1111 |
msgstr "Мы гарантируем ответ на ваш вопрос в течении 7 дней."
|
1112 |
|
@@ -1143,23 +1147,6 @@ msgstr ""
|
|
1143 |
msgid "Automatically creates the perfect robots.txt file"
|
1144 |
msgstr "Автоматически создает идеальный robots.txt"
|
1145 |
|
1146 |
-
#: admin/pages/seo.php:103
|
1147 |
-
msgid ""
|
1148 |
-
"If your site uses an SSL certificate, check this box to enable redirection "
|
1149 |
-
"from http to https."
|
1150 |
-
msgstr ""
|
1151 |
-
"Если ваш сайт использует сертификат SSL, установите этот флажок, чтобы "
|
1152 |
-
"включить перенаправление с http на https."
|
1153 |
-
|
1154 |
-
#: admin/pages/seo.php:103
|
1155 |
-
msgid "Puts the redirect from http to https."
|
1156 |
-
msgstr "Передает перенаправление с http на https."
|
1157 |
-
|
1158 |
-
#: admin/pages/seo.php:103
|
1159 |
-
msgid "Warning! Before activation, make sure your site is open https."
|
1160 |
-
msgstr ""
|
1161 |
-
"Внимание! Перед активацией убедитесь, что ваш сайт открывается по https."
|
1162 |
-
|
1163 |
#: admin/pages/seo.php:109
|
1164 |
msgid "Server headers and response"
|
1165 |
msgstr "Заголовки серверов и ответ"
|
@@ -1172,7 +1159,7 @@ msgstr ""
|
|
1172 |
"WordPress не знает, как отдать заголовок Last Modified. Вы можете сделать "
|
1173 |
"это с помощью параметров ниже."
|
1174 |
|
1175 |
-
#: admin/pages/seo.php:
|
1176 |
#, php-format
|
1177 |
msgid ""
|
1178 |
"You can specify a page mask, for example: %s or %s. All pages that contain "
|
@@ -1182,11 +1169,11 @@ msgstr ""
|
|
1182 |
"содержат эти строки, будут исключены. Каждое исключение должно начинаться с "
|
1183 |
"новой строки."
|
1184 |
|
1185 |
-
#: admin/pages/seo.php:
|
1186 |
msgid "For the Yoast SEO plugin"
|
1187 |
msgstr "Для плагина Yoast SEO"
|
1188 |
|
1189 |
-
#: admin/pages/seo.php:
|
1190 |
msgid ""
|
1191 |
"These settings will help you eliminate some problems associated with the "
|
1192 |
"popular Yoast SEO plugin"
|
@@ -1194,7 +1181,7 @@ msgstr ""
|
|
1194 |
"Эти параметры помогут вам устранить некоторые проблемы, связанные с "
|
1195 |
"популярной Yoast SEO plugin"
|
1196 |
|
1197 |
-
#: admin/pages/seo.php:
|
1198 |
msgid ""
|
1199 |
"The last element in the breadcrumbs in the Yoast SEO plugin duplicates the "
|
1200 |
"title of the article. Some SEO-specialists consider this duplication to be "
|
@@ -1203,13 +1190,13 @@ msgstr ""
|
|
1203 |
"Последний элемент в хлебных крошках Yoast SEO дублирует название статьи. "
|
1204 |
"Некоторые SEO-специалисты считают это дублирование излишним."
|
1205 |
|
1206 |
-
#: admin/pages/seo.php:
|
1207 |
msgid ""
|
1208 |
"Removes duplication of the name in the breadcrumbs of the WP SEO plugin from "
|
1209 |
"Yoast."
|
1210 |
msgstr "Удаляет последний элемент в хлебных крошках Yoast SEO."
|
1211 |
|
1212 |
-
#: admin/pages/seo.php:
|
1213 |
msgid ""
|
1214 |
"Yandex.Webmaster swears on a standard XML card from the plugin Yoast, tk. it "
|
1215 |
"has a specific tag"
|
@@ -1217,12 +1204,12 @@ msgstr ""
|
|
1217 |
"Яндекс вебмастер ругается на стандартной карты XML из плагина Yoast SEO, из-"
|
1218 |
"за определенного тега "
|
1219 |
|
1220 |
-
#: admin/pages/seo.php:
|
1221 |
#, php-format
|
1222 |
msgid "Remove the tag %s from XML site map of the plugin Yoast SEO."
|
1223 |
msgstr "Удаляет тег %s из XML карта сайта плагин Yoast SEO."
|
1224 |
|
1225 |
-
#: admin/pages/seo.php:
|
1226 |
msgid ""
|
1227 |
"Attention! After activation, turn off the site map and enable it back to "
|
1228 |
"regenerate it."
|
@@ -1230,17 +1217,13 @@ msgstr ""
|
|
1230 |
"Внимание! После активации, выключите карту сайта и включите ее обратно, "
|
1231 |
"чтобы обновить ее."
|
1232 |
|
1233 |
-
#: admin/pages/seo.php:
|
1234 |
msgid "In older versions of Yoast SEO may not work - update the plugin Yoast"
|
1235 |
msgstr ""
|
1236 |
"В более старых версиях Yoast SEO не может работать - обновите плагин Yoast "
|
1237 |
"SEO"
|
1238 |
|
1239 |
-
#: admin/pages/seo.php:
|
1240 |
-
msgid "Disable JSON-LD sitelinks searchbox"
|
1241 |
-
msgstr "Отключить ссылки JSON-LD"
|
1242 |
-
|
1243 |
-
#: admin/pages/seo.php:189
|
1244 |
msgid ""
|
1245 |
"If you’re not familiar with Search Action it’s the mark-up that helps search "
|
1246 |
"engines add a shiny Sitelinks Search Box below your search engine results. "
|
@@ -1250,16 +1233,12 @@ msgid ""
|
|
1250 |
"that only searches blog posts and not pages."
|
1251 |
msgstr ""
|
1252 |
|
1253 |
-
#: admin/pages/seo.php:
|
1254 |
msgid ""
|
1255 |
"Disable JSON-LD sitelinks searchbox using WordPress in plugin Yoast SEO."
|
1256 |
msgstr "Отключает JSON-LD ссылки используемые Wordpress в плагине Yoast SEO."
|
1257 |
|
1258 |
-
#: admin/pages/seo.php:
|
1259 |
-
msgid "Disable Yoast Structured Data"
|
1260 |
-
msgstr "Отключить структурирование данных"
|
1261 |
-
|
1262 |
-
#: admin/pages/seo.php:201
|
1263 |
msgid ""
|
1264 |
"Prevents output of the script tag of type application/ld+json containing\n"
|
1265 |
"schema.org data from the popular Yoast SEO and Yoast SEO Premium plugins.\n"
|
@@ -1268,16 +1247,16 @@ msgstr ""
|
|
1268 |
"Удаляет тег application/ld+json(содержащего данные schema.org) из исходного "
|
1269 |
"кода страницы, при использовании плагинов Yoast SEO и Yoast SEO Premium."
|
1270 |
|
1271 |
-
#: admin/pages/seo.php:
|
1272 |
msgid "Disable Structured Data in plugin Yoast SEO."
|
1273 |
msgstr "Отключает структурированные данные в плагине Yoast SEO"
|
1274 |
|
1275 |
-
#: admin/pages/seo.php:
|
1276 |
#, php-format
|
1277 |
msgid "The Yoast SEO plugin displays a comment of the form %s in %s section"
|
1278 |
msgstr "Yoast SEO плагин отображает комментарий формы %s в секции %s"
|
1279 |
|
1280 |
-
#: admin/pages/seo.php:
|
1281 |
#, php-format
|
1282 |
msgid "Removes the Yoast SEO plugin comment of their section %s"
|
1283 |
msgstr "Удаляет комментрии Yoast SEO из %s"
|
@@ -1290,11 +1269,11 @@ msgstr "Виджеты"
|
|
1290 |
msgid "Clearfy"
|
1291 |
msgstr "Clearfy"
|
1292 |
|
1293 |
-
#: includes/classes/class.configurate-advanced.php:
|
1294 |
msgid "Howdy"
|
1295 |
msgstr "Привет"
|
1296 |
|
1297 |
-
#: includes/classes/class.configurate-advanced.php:
|
1298 |
msgid "Welcome"
|
1299 |
msgstr "Добро пожаловать"
|
1300 |
|
@@ -1306,6 +1285,98 @@ msgstr "<strong>Ошибка</strong>: Неправильный логин ил
|
|
1306 |
msgid "The ZipArchive class does not exist in this version of php."
|
1307 |
msgstr "Класса ZipArchive не существует в этой версии php."
|
1308 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1309 |
#~ msgid "Replace external links in comments on the JavaScript code"
|
1310 |
#~ msgstr "Заменить внешние ссылки в комментариях на JavaScript код"
|
1311 |
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: clearfy\n"
|
4 |
+
"POT-Creation-Date: 2018-01-22 13:43+0300\n"
|
5 |
+
"PO-Revision-Date: 2018-01-22 13:44+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"
|
23 |
msgid "You don't have enough capability to edit this information."
|
24 |
msgstr "У вас недостаточно возможностей для редактирования этой информации."
|
25 |
|
26 |
+
#: admin/ajax/configurate.php:25 admin/ajax/configurate.php:37
|
27 |
msgid "Undefinded mode."
|
28 |
msgstr "Неопределенный режим."
|
29 |
|
67 |
msgid "Automatically set the alt attribute"
|
68 |
msgstr "Автоматически устанавливать атрибут alt"
|
69 |
|
70 |
+
#: admin/includes/options.php:57 admin/pages/seo.php:116
|
71 |
msgid "Automatically insert the Last Modified header"
|
72 |
msgstr "Автоматически вставлять заголовок Last Modified"
|
73 |
|
74 |
+
#: admin/includes/options.php:62 admin/pages/seo.php:139
|
75 |
msgid "Return an If-Modified-Since responce"
|
76 |
msgstr "Возвращать заголовок If-Modified-Since"
|
77 |
|
78 |
+
#: admin/includes/options.php:67 admin/pages/seo.php:152
|
79 |
msgid "Remove duplicate names in breadcrumbs WP SEO by Yoast"
|
80 |
msgstr "Удалить дубли имен в хлебных крошках WP SEO Yoast"
|
81 |
|
82 |
+
#: admin/includes/options.php:72 admin/pages/seo.php:162
|
83 |
#, php-format
|
84 |
msgid "Remove the tag %s from XML site map"
|
85 |
msgstr "Удаляет тег %s из XML карты сайта плагин Yoast SEO."
|
86 |
|
87 |
+
#: admin/includes/options.php:77 admin/pages/seo.php:180
|
88 |
+
msgid "Disable JSON-LD sitelinks searchbox"
|
89 |
+
msgstr "Отключить ссылки JSON-LD"
|
90 |
+
|
91 |
+
#: admin/includes/options.php:82 admin/pages/seo.php:190
|
92 |
+
msgid "Disable Yoast Structured Data"
|
93 |
+
msgstr "Отключить структурирование данных"
|
94 |
+
|
95 |
+
#: admin/includes/options.php:87 admin/pages/seo.php:202
|
96 |
#, php-format
|
97 |
msgid "Remove comment from %s section"
|
98 |
msgstr "Удалить комментарии из секции %s"
|
99 |
|
100 |
+
#: admin/includes/options.php:92 admin/pages/double-pages.php:66
|
101 |
msgid "Remove archives date"
|
102 |
msgstr "Удалить архивы дат"
|
103 |
|
104 |
+
#: admin/includes/options.php:97 admin/pages/double-pages.php:76
|
105 |
msgid "Remove author archives "
|
106 |
msgstr "Удалить архивы автора"
|
107 |
|
108 |
+
#: admin/includes/options.php:102 admin/pages/double-pages.php:86
|
109 |
msgid "Remove archives tag"
|
110 |
msgstr "Удалить метки архивов"
|
111 |
|
112 |
+
#: admin/includes/options.php:107 admin/pages/double-pages.php:96
|
113 |
msgid "Remove attachment pages"
|
114 |
msgstr "Удалить страницы вложений"
|
115 |
|
116 |
+
#: admin/includes/options.php:112 admin/pages/double-pages.php:106
|
117 |
msgid "Remove post pagination"
|
118 |
msgstr "Удалить постраничную навигацию записей"
|
119 |
|
120 |
+
#: admin/includes/options.php:117 admin/pages/double-pages.php:116
|
121 |
msgid "Remove ?replytocom"
|
122 |
msgstr "Удалить ?replytocom"
|
123 |
|
124 |
+
#: admin/includes/options.php:122 admin/pages/privacy.php:66
|
125 |
msgid "Remove meta generator"
|
126 |
msgstr "Удалить meta generator"
|
127 |
|
128 |
+
#: admin/includes/options.php:127 admin/pages/defence.php:64
|
129 |
msgid "Hide author login"
|
130 |
msgstr "Убрать возможность узнать логин автора"
|
131 |
|
132 |
+
#: admin/includes/options.php:132 admin/pages/defence.php:74
|
133 |
msgid "Hide errors when logging into the site"
|
134 |
msgstr "Спрятать ошибки при входе на сайт"
|
135 |
|
136 |
+
#: admin/includes/options.php:137 admin/includes/options.php:254
|
137 |
#: admin/pages/privacy.php:76
|
138 |
msgid "Remove Version from Stylesheet"
|
139 |
msgstr "Удалить версию у файлов стилей"
|
140 |
|
141 |
+
#: admin/includes/options.php:142 admin/includes/options.php:259
|
142 |
#: admin/pages/privacy.php:87
|
143 |
msgid "Remove Version from Script"
|
144 |
msgstr "Удаляет версию у javascript файлов"
|
145 |
|
146 |
+
#: admin/includes/options.php:147 admin/pages/widgets.php:44
|
147 |
msgid "Remove the \"Pages\" widget"
|
148 |
msgstr "Удалите виджет «Страницы»"
|
149 |
|
150 |
+
#: admin/includes/options.php:152 admin/pages/widgets.php:53
|
151 |
msgid "Remove calendar widget"
|
152 |
msgstr "Удалить виджет календаря"
|
153 |
|
154 |
+
#: admin/includes/options.php:157 admin/pages/widgets.php:62
|
155 |
msgid "Remove the \"Cloud of tags\" widget"
|
156 |
msgstr "Удалите виджет «Облако тегов»"
|
157 |
|
158 |
+
#: admin/includes/options.php:162 admin/pages/widgets.php:71
|
159 |
msgid "Remove the \"Archives\" widget"
|
160 |
msgstr "Удалите виджет «Архивы»"
|
161 |
|
162 |
+
#: admin/includes/options.php:167 admin/pages/widgets.php:80
|
163 |
msgid "Remove the \"Links\" widget"
|
164 |
msgstr "Удалите виджет «Ссылки»"
|
165 |
|
166 |
+
#: admin/includes/options.php:172 admin/pages/widgets.php:89
|
167 |
msgid "Remove the \"Meta\" widget"
|
168 |
msgstr "Удалите виджет «Мета»"
|
169 |
|
170 |
+
#: admin/includes/options.php:177 admin/pages/widgets.php:98
|
171 |
msgid "Remove the \"Search\" widget"
|
172 |
msgstr "Удалите виджет «Поиск»"
|
173 |
|
174 |
+
#: admin/includes/options.php:182 admin/includes/options.php:202
|
175 |
#: admin/pages/widgets.php:107
|
176 |
msgid "Remove the \"Text\" widget"
|
177 |
msgstr "Удалите виджет «Текст»"
|
178 |
|
179 |
+
#: admin/includes/options.php:187 admin/pages/widgets.php:116
|
180 |
msgid "Remove the \"Categories\" widget"
|
181 |
msgstr "Удалите виджет «Категории»"
|
182 |
|
183 |
+
#: admin/includes/options.php:192 admin/pages/widgets.php:125
|
184 |
msgid "Remove the \"Recent Posts\" widget"
|
185 |
msgstr "Удалите виджет «Последние записи»"
|
186 |
|
187 |
+
#: admin/includes/options.php:197 admin/pages/widgets.php:134
|
188 |
msgid "Remove the \"Recent Comments\" widget"
|
189 |
msgstr "Удалите виджет «Последние комментарии»"
|
190 |
|
191 |
+
#: admin/includes/options.php:207 admin/pages/widgets.php:143
|
192 |
msgid "Remove the \"RSS\" widget"
|
193 |
msgstr "Удалить виджет «RSS»"
|
194 |
|
195 |
+
#: admin/includes/options.php:212 admin/pages/widgets.php:152
|
196 |
msgid "Remove the \"Menu\" widget"
|
197 |
msgstr "Удалите виджет «Меню»"
|
198 |
|
199 |
+
#: admin/includes/options.php:217 admin/pages/widgets.php:161
|
200 |
msgid "Remove the \"Twenty Eleven Ephemera\" widget"
|
201 |
msgstr "Удалите виджет \"Twenty Eleven Ephemera\""
|
202 |
|
203 |
+
#: admin/includes/options.php:220 admin/includes/options.php:289
|
204 |
+
#: admin/pages/additionally.php:187
|
205 |
msgid "Disable revision"
|
206 |
msgstr "Отключить ревизии"
|
207 |
|
208 |
+
#: admin/includes/options.php:221 admin/includes/options.php:294
|
209 |
+
#: admin/pages/additionally.php:220
|
210 |
msgid "Limit Post Revisions"
|
211 |
msgstr "Установить лимит ревизий"
|
212 |
|
213 |
+
#: admin/includes/options.php:222 admin/pages/seo.php:130
|
214 |
msgid "Exclude pages:"
|
215 |
msgstr "Исключить страницы:"
|
216 |
|
217 |
+
#: admin/includes/options.php:225 admin/pages/seo.php:76
|
218 |
msgid "Create right robots.txt"
|
219 |
msgstr "Создайте правильный robots.txt"
|
220 |
|
221 |
+
#: admin/includes/options.php:230 admin/pages/seo.php:91
|
222 |
msgid "You can edit the robots.txt file in the box below:"
|
223 |
msgstr "Вы можете отредактировать файл robots.txt в поле ниже:"
|
224 |
|
225 |
+
#: admin/includes/options.php:233
|
226 |
msgid "Quick mode"
|
227 |
msgstr "Быстрый старт"
|
228 |
|
229 |
+
#: admin/includes/options.php:236 admin/pages/code-clean.php:96
|
230 |
msgid "Remove jQuery Migrate"
|
231 |
msgstr "Удалить jQuery Migrate"
|
232 |
|
233 |
+
#: admin/includes/options.php:239 admin/pages/code-clean.php:106
|
234 |
msgid "Disable Embeds"
|
235 |
msgstr "Отключить Embeds"
|
236 |
|
237 |
+
#: admin/includes/options.php:240 admin/pages/code-clean.php:66
|
238 |
msgid "Disable RSS feeds"
|
239 |
msgstr "Отключить RSS каналы"
|
240 |
|
241 |
+
#: admin/includes/options.php:243
|
242 |
msgid "Removes links to wordpress.org site from the admin bar"
|
243 |
msgstr "Удаляет ссылки на wordpress.org сайт из панели администратора"
|
244 |
|
245 |
+
#: admin/includes/options.php:246 admin/pages/code-clean.php:175
|
246 |
msgid "HTML minify"
|
247 |
msgstr "Html сжатие"
|
248 |
|
249 |
+
#: admin/includes/options.php:249
|
250 |
msgid "Redirect Http to Https"
|
251 |
msgstr "Перенаправление Http на Https"
|
252 |
|
253 |
+
#: admin/includes/options.php:264 admin/pages/privacy.php:98
|
254 |
msgid "Eclude stylesheet/script file names"
|
255 |
msgstr "Исключает файлы стилей/сприптов"
|
256 |
|
257 |
+
#: admin/includes/options.php:269 admin/pages/additionally.php:289
|
258 |
msgid "Enable Sanitization of WordPress"
|
259 |
msgstr "Включить Wordpress Sanitization"
|
260 |
|
261 |
+
#: admin/includes/options.php:274 admin/pages/additionally.php:144
|
|
|
|
|
|
|
|
|
262 |
msgid "Disable admin top bar"
|
263 |
msgstr "Скрыть верхнюю панель администратора"
|
264 |
|
265 |
+
#: admin/includes/options.php:279 admin/pages/additionally.php:162
|
266 |
msgid "Remove admin bar WP logo"
|
267 |
msgstr "Удалить логотип Wordpress из админбара"
|
268 |
|
269 |
+
#: admin/includes/options.php:284 admin/pages/additionally.php:172
|
270 |
msgid "Replace \"Howdy\" text with \"Welcome\""
|
271 |
msgstr "Заменить текст \"Привет\", на \"Добро пожаловать\""
|
272 |
|
273 |
+
#: admin/includes/options.php:299 admin/pages/additionally.php:244
|
274 |
msgid "Disable autosave"
|
275 |
msgstr "Отключить автосохранения"
|
276 |
|
277 |
+
#: admin/includes/options.php:304 admin/pages/additionally.php:254
|
278 |
msgid "Disable Texturization - Smart Quotes"
|
279 |
msgstr "Отключить \"Умные кавычки\""
|
280 |
|
281 |
+
#: admin/includes/options.php:309 admin/pages/additionally.php:264
|
282 |
msgid "Disable capitalization in Wordpress branding"
|
283 |
msgstr "Отключить верблюжий шрифт в WordPress брендинге"
|
284 |
|
285 |
+
#: admin/includes/options.php:314 admin/pages/additionally.php:274
|
286 |
msgid "Disable auto inserted paragraphs (i.e. p tags)"
|
287 |
msgstr "Отключить автоматические параграфы (т.е p теги)"
|
288 |
|
289 |
+
#: admin/includes/options.php:319 admin/pages/additionally.php:77
|
290 |
msgid "Disable Heartbeat"
|
291 |
msgstr "Отключить пульсацию Wordpress"
|
292 |
|
293 |
+
#: admin/includes/options.php:324 admin/pages/additionally.php:106
|
294 |
msgid "Heartbeat frequency"
|
295 |
msgstr "Интервал пульсации Wordpress"
|
296 |
|
297 |
+
#: admin/includes/options.php:329 admin/pages/code-clean.php:185
|
298 |
#: admin/pages/privacy.php:107
|
299 |
msgid "Remove html comments"
|
300 |
msgstr "Удалить html комментарии"
|
303 |
msgid "Advanced"
|
304 |
msgstr "Дополнительно"
|
305 |
|
306 |
+
#: admin/pages/additionally.php:54
|
307 |
msgid ""
|
308 |
"Warning! In the wp-config.php file, a constant WP_POST_REVISIONS is found, "
|
309 |
"it determines the number of revisions. Delete it so you can change this "
|
314 |
"значение через панель администратора."
|
315 |
|
316 |
#: admin/pages/additionally.php:70
|
317 |
+
msgid "Heartbeat"
|
318 |
+
msgstr "Пульсация"
|
|
|
|
|
|
|
|
|
319 |
|
320 |
#: admin/pages/additionally.php:70
|
321 |
msgid ""
|
322 |
+
"The WordPress Heartbeat API uses /wp-admin/admin-ajax.php to run AJAX calls "
|
323 |
+
"from the web-browser. While this is great and all it can also cause high CPU "
|
324 |
+
"usage and crazy amounts of PHP calls. For example, if you leave your "
|
325 |
+
"dashboard open it will keep sending POST requests to this file on a regular "
|
326 |
+
"interval, every 15 seconds. Here is an example below of it happening."
|
327 |
msgstr ""
|
328 |
+
"API WordPress использует пульсацию в /wp-admin/admin-ajax.php для запуска "
|
329 |
+
"вызовов AJAX из веб-браузера. Хотя это очень полезно, но все же это может "
|
330 |
+
"также вызвать высокую загрузку процессора и большое количество обращений к "
|
331 |
+
"серверу. Например, если вы оставите свою панель управления открытой, она "
|
332 |
+
"будет регулярно отправлять POST-запросы в этот файл через каждые 15 секунд. "
|
333 |
+
"Ниже приведен пример ниже."
|
334 |
+
|
335 |
+
#: admin/pages/additionally.php:79
|
336 |
+
msgid "Default"
|
337 |
+
msgstr "По умолчанию"
|
338 |
|
339 |
#: admin/pages/additionally.php:80
|
340 |
+
msgid "Everywhere"
|
341 |
+
msgstr "Повсюду"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
342 |
|
343 |
#: admin/pages/additionally.php:81
|
344 |
+
msgid "On dashboard page"
|
345 |
+
msgstr "В панели инструментов"
|
346 |
|
347 |
+
#: admin/pages/additionally.php:82
|
348 |
+
msgid "Only allow when editing Posts/Pages"
|
349 |
+
msgstr "Когда редактируете записи/страницы"
|
350 |
+
|
351 |
+
#: admin/pages/additionally.php:108 admin/pages/additionally.php:222
|
352 |
+
msgid "Wordpress default"
|
353 |
+
msgstr "Wordpress по умолчанию"
|
354 |
+
|
355 |
+
#: admin/pages/additionally.php:109 admin/pages/additionally.php:110
|
356 |
+
#: admin/pages/additionally.php:111 admin/pages/additionally.php:112
|
357 |
+
#: admin/pages/additionally.php:113 admin/pages/additionally.php:114
|
358 |
+
#: admin/pages/additionally.php:115 admin/pages/additionally.php:116
|
359 |
+
#: admin/pages/additionally.php:117
|
360 |
+
msgid "seconds"
|
361 |
+
msgstr "секунды"
|
362 |
+
|
363 |
+
#: admin/pages/additionally.php:120
|
364 |
+
msgid ""
|
365 |
+
"Select the heartbeat frequency wordpress. We recommend you 60 seconds, "
|
366 |
+
"default is 20 seconds."
|
367 |
+
msgstr ""
|
368 |
+
"Установите частоту пульсации Wordpress. Мы рекомендуем вам 60 секунд, "
|
369 |
+
"значение по умолчанию — 20 секунд."
|
370 |
+
|
371 |
+
#: admin/pages/additionally.php:137
|
372 |
msgid "Admin bar"
|
373 |
msgstr "Верхняя панель администратора"
|
374 |
|
375 |
+
#: admin/pages/additionally.php:137
|
376 |
msgid "In this group of settings, you can manage the adminbar."
|
377 |
msgstr ""
|
378 |
"В этой группе настроек вы можете управлять верхней панелью администратора."
|
379 |
|
380 |
+
#: admin/pages/additionally.php:146
|
381 |
msgid "Default enable"
|
382 |
msgstr "Включен (по умолчанию)"
|
383 |
|
384 |
+
#: admin/pages/additionally.php:147
|
385 |
msgid "For all users"
|
386 |
msgstr "Для всех пользователей"
|
387 |
|
388 |
+
#: admin/pages/additionally.php:150
|
389 |
msgid "For all users except administrator"
|
390 |
msgstr "Для всех, кроме администратора"
|
391 |
|
392 |
+
#: admin/pages/additionally.php:154
|
393 |
msgid ""
|
394 |
"In some cases, you need to disable the floating top admin panel. You can "
|
395 |
"disable this panel."
|
397 |
"В некоторых случаях вам необходимо отключить админбар. Вы можете это сделать "
|
398 |
"с помощью текущей опции."
|
399 |
|
400 |
+
#: admin/pages/additionally.php:154
|
401 |
msgid "Disable admin top bar."
|
402 |
msgstr "Отключить верхнюю панель администратора."
|
403 |
|
404 |
+
#: admin/pages/additionally.php:164
|
405 |
msgid "Enable this if you want to remove wp logo from admin bar."
|
406 |
msgstr ""
|
407 |
"Включите это, если вы хотите удалить логотип Wordpress из верхней панели "
|
408 |
"администратора."
|
409 |
|
410 |
+
#: admin/pages/additionally.php:174
|
411 |
msgid "Replaces the welcome text in admin bar."
|
412 |
msgstr "Заменяет текст приветствия в панели администратора."
|
413 |
|
414 |
+
#: admin/pages/additionally.php:180
|
415 |
msgid "Posts"
|
416 |
msgstr "Записи"
|
417 |
|
418 |
+
#: admin/pages/additionally.php:180
|
419 |
msgid "In this group of options, you can manage revisions and post autosave."
|
420 |
msgstr ""
|
421 |
"В этой группе опций вы можете управлять ревизиями и автосохранением записей "
|
422 |
"и страниц."
|
423 |
|
424 |
+
#: admin/pages/additionally.php:223 admin/pages/additionally.php:224
|
425 |
+
#: admin/pages/additionally.php:225 admin/pages/additionally.php:226
|
426 |
+
#: admin/pages/additionally.php:227 admin/pages/additionally.php:228
|
427 |
+
#: admin/pages/additionally.php:229 admin/pages/additionally.php:230
|
428 |
+
#: admin/pages/additionally.php:231 admin/pages/additionally.php:232
|
|
|
|
|
|
|
|
|
429 |
msgid "revisions"
|
430 |
msgstr "ревизии"
|
431 |
|
432 |
+
#: admin/pages/additionally.php:235
|
433 |
msgid ""
|
434 |
"WordPress automatically saves revisions when you are working on posts and "
|
435 |
"pages. These can begin to add up pretty quick. By default, there is no limit "
|
448 |
"базы данных, а также использовать дисковое пространство.\n"
|
449 |
"Поэтому мы рекомендуем либо отключать, либо ограничивать ваши изменения."
|
450 |
|
451 |
+
#: admin/pages/additionally.php:246
|
452 |
msgid ""
|
453 |
"WordPress by default automatically saves a draft every 60 seconds (1 "
|
454 |
"minute). There are reasons why you might want to change this."
|
456 |
"WordPress по умолчанию автоматически сохраняет черновик каждые 60 секунд (1 "
|
457 |
"минута). Есть причины, по которым вы можете изменить это."
|
458 |
|
459 |
+
#: admin/pages/additionally.php:246
|
460 |
msgid "Disables automatic saving of drafts."
|
461 |
msgstr "Отключает автоматическое сохранение черновиков."
|
462 |
|
463 |
+
#: admin/pages/additionally.php:256
|
464 |
msgid ""
|
465 |
"Function of text formatting. This function makes the text more correct, "
|
466 |
"readable and visually appealing. But sometimes this function may prevent you "
|
470 |
"читаемым и визуально привлекательным. Но иногда эта функция может помешать "
|
471 |
"вам использовать определенные коды и символы."
|
472 |
|
473 |
+
#: admin/pages/additionally.php:256
|
474 |
msgid "Disable Texturization - Smart Quotes."
|
475 |
msgstr "Отключить умные кавычки"
|
476 |
|
477 |
+
#: admin/pages/additionally.php:266
|
478 |
msgid ""
|
479 |
"Replaces the incorrectly written letter \"p\" in the middle of WordPress "
|
480 |
"(you need to write with the capital P in the middle)."
|
482 |
"Заменяет неправильно написанную букву «p» в середине WordPress (вам нужно "
|
483 |
"написать ее верхнем регистре P в середине)."
|
484 |
|
485 |
+
#: admin/pages/additionally.php:266
|
486 |
msgid "Disable capitalization in Wordpress branding."
|
487 |
msgstr "Отключить верблюжий шрифт в брендинге Wordpress."
|
488 |
|
489 |
+
#: admin/pages/additionally.php:276
|
490 |
msgid ""
|
491 |
"Replaces the double shifting of a string to an HTML p ... /p construct, and "
|
492 |
"a single one on br."
|
493 |
msgstr ""
|
494 |
"Заменяет двойное смещение строки на конструкцию HTML p ... / p и одну на br."
|
495 |
|
496 |
+
#: admin/pages/additionally.php:276
|
497 |
msgid "Disable auto inserted paragraphs."
|
498 |
msgstr "Отключить автоматически вставленные абзацы."
|
499 |
|
500 |
+
#: admin/pages/additionally.php:282
|
501 |
+
msgid "Others"
|
502 |
+
msgstr "Другие"
|
503 |
+
|
504 |
+
#: admin/pages/additionally.php:282
|
505 |
+
msgid "Other useful features."
|
506 |
+
msgstr "Другие полезные функции."
|
507 |
|
508 |
+
#: admin/pages/additionally.php:291
|
509 |
msgid ""
|
510 |
+
"File names and some titles can have special characters, which can cause "
|
511 |
+
"problems when creating permalinks."
|
|
|
|
|
|
|
512 |
msgstr ""
|
513 |
+
"Имена файлов и некоторые заголовки могут иметь специальные символы, что "
|
514 |
+
"может вызвать проблемы при создании постоянных ссылок."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
515 |
|
516 |
+
#: admin/pages/additionally.php:291
|
517 |
msgid ""
|
518 |
+
"Removes symbols, spaces, latin and other languages characters from uploaded "
|
519 |
+
"files and gives them \"permalink\" structure (clean characters, only "
|
520 |
+
"lowercase and dahes)."
|
521 |
msgstr ""
|
522 |
+
"Удаляет символы, пробелы, латинские и другие языки из имен загружаемых "
|
523 |
+
"файлов и дает им структуру «permalink» (чистые символы, только строчные "
|
524 |
+
"буквы и тире)."
|
525 |
|
526 |
#: admin/pages/code-clean.php:27
|
527 |
msgid "Code cleaning"
|
575 |
#: admin/pages/double-pages.php:96 admin/pages/double-pages.php:106
|
576 |
#: admin/pages/double-pages.php:116 admin/pages/privacy.php:66
|
577 |
#: admin/pages/privacy.php:76 admin/pages/privacy.php:87 admin/pages/seo.php:66
|
578 |
+
#: admin/pages/seo.php:116 admin/pages/seo.php:139 admin/pages/seo.php:152
|
579 |
+
#: admin/pages/seo.php:162 admin/pages/seo.php:202
|
580 |
msgid "Recommended"
|
581 |
msgstr "Рекомендовано"
|
582 |
|
973 |
"На этой странице вы можете быстро настроить плагин, не вдаваясь в "
|
974 |
"подробности."
|
975 |
|
|
|
|
|
|
|
|
|
976 |
#: admin/pages/quick-start.php:170
|
977 |
+
msgid "Set the recommened for me"
|
978 |
+
msgstr "Установить рекомендуемые для меня"
|
979 |
|
980 |
+
#: admin/pages/quick-start.php:173
|
981 |
+
msgid "One click code clearing"
|
982 |
+
msgstr "Очистка кода в один клик"
|
983 |
|
984 |
+
#: admin/pages/quick-start.php:174
|
985 |
+
msgid "One click security"
|
986 |
+
msgstr "Улучшить безопасность в один клик"
|
987 |
|
988 |
+
#: admin/pages/quick-start.php:176
|
989 |
+
msgid "One click seo optimization"
|
990 |
+
msgstr "Оптимизировать SEO в один клик"
|
991 |
|
992 |
+
#: admin/pages/quick-start.php:180
|
993 |
+
msgid "One click remove default Widgets"
|
994 |
+
msgstr "Удалить виджеты по умолчанию в один клик"
|
995 |
|
996 |
+
#: admin/pages/quick-start.php:185
|
997 |
+
msgid "Reset all settings"
|
998 |
+
msgstr "Сбросить все настройки"
|
999 |
+
|
1000 |
+
#: admin/pages/quick-start.php:189
|
1001 |
msgid "Are you sure you want to enable the this options?"
|
1002 |
msgstr "Вы действительно хотите включить эти настройки?"
|
1003 |
|
1004 |
+
#: admin/pages/quick-start.php:192 admin/pages/quick-start.php:232
|
1005 |
msgid ""
|
1006 |
"After confirmation, all the settings of the plug-in will return to the "
|
1007 |
"default state. Make backup settings by copying data from the export field."
|
1010 |
"умолчанию. Сделайте резервную копию настроек, скопировав данные из поля "
|
1011 |
"экспорта."
|
1012 |
|
1013 |
+
#: admin/pages/quick-start.php:196
|
1014 |
msgid "Confirm"
|
1015 |
msgstr "Подтвердить"
|
1016 |
|
1017 |
+
#: admin/pages/quick-start.php:197
|
1018 |
msgid "Cancel"
|
1019 |
msgstr "Отмена"
|
1020 |
|
1021 |
+
#: admin/pages/quick-start.php:203
|
1022 |
msgid ""
|
1023 |
+
"These are quick optimization options for your website. You can activate the "
|
1024 |
+
"groups of necessary settings in one click. With the fast optimization mode, "
|
1025 |
+
"we are enable the only safe settings that do not break your website. That is "
|
1026 |
+
"why we recommend you to look at each setting of the plugin individually. The "
|
1027 |
+
"settings with grey and red question mark will not be active, until you do it "
|
1028 |
+
"yourself."
|
1029 |
msgstr ""
|
1030 |
+
"Это настройки быстрой оптимизации вашего сайта. Вы можете активировать "
|
1031 |
+
"нужные вам группы настроек в один клик. В быстром режиме оптимизации мы "
|
1032 |
+
"активируем только безопасные настройки, которые не нарушат работу вашего "
|
1033 |
+
"сайта. Поэтому, мы рекомендуем вам ознакомится с каждой опцией плагина "
|
1034 |
+
"индивидуально. Настройки с серым и красным знаком вопроса не будут "
|
1035 |
+
"активированы, пока вы сами не примите решение об их включении."
|
1036 |
|
1037 |
+
#: admin/pages/quick-start.php:204
|
1038 |
+
msgid "Select what you need to do"
|
1039 |
+
msgstr "Выберите, что вам нужно сделать"
|
1040 |
|
1041 |
+
#: admin/pages/quick-start.php:206
|
1042 |
msgid ""
|
1043 |
+
"After selecting any optimization case, the plugin will automatically enable "
|
1044 |
+
"the necessary settings in safe mode and one click."
|
1045 |
msgstr ""
|
1046 |
+
"После выбора варианта оптимизации, плагин автоматически включит необходимые "
|
1047 |
+
"и безопасные настройки в один клик."
|
|
|
|
|
|
|
|
|
1048 |
|
1049 |
#: admin/pages/quick-start.php:231
|
1050 |
+
msgid "Reset settings"
|
1051 |
+
msgstr "Сбросить настройки"
|
1052 |
+
|
1053 |
+
#: admin/pages/quick-start.php:244
|
1054 |
+
msgid "Reset"
|
1055 |
+
msgstr "Сбросить"
|
1056 |
|
1057 |
+
#: admin/pages/quick-start.php:246
|
1058 |
+
msgid "Do It!"
|
1059 |
+
msgstr "Сделать!"
|
1060 |
+
|
1061 |
+
#: admin/pages/quick-start.php:260
|
1062 |
msgid "Settings successfully updated!"
|
1063 |
msgstr "Настройки успешно обновлены!"
|
1064 |
|
1065 |
+
#: admin/pages/quick-start.php:263
|
1066 |
msgid ""
|
1067 |
"During the setup, an unknown error occurred, please try again or contact the "
|
1068 |
"plug-in support."
|
1070 |
"Во время установки произошла неизвестная ошибка, повторите попытку или "
|
1071 |
"обратитесь в службу поддержки плагинов."
|
1072 |
|
1073 |
+
#: admin/pages/quick-start.php:270
|
1074 |
msgid "Import/Export settings"
|
1075 |
msgstr "Импорт/Экспорт настроек"
|
1076 |
|
1077 |
+
#: admin/pages/quick-start.php:273
|
1078 |
msgid "Import options"
|
1079 |
msgstr "Импортировать настройки"
|
1080 |
|
1081 |
+
#: admin/pages/quick-start.php:279
|
1082 |
msgid "Support"
|
1083 |
msgstr "Поддержка"
|
1084 |
|
1085 |
+
#: admin/pages/quick-start.php:281
|
1086 |
msgid ""
|
1087 |
"If you faced with any issues, please follow the steps below to get quickly "
|
1088 |
"quality support:"
|
1090 |
"Если вы столкнулись с какими-либо проблемами, выполните следующие действия, "
|
1091 |
"чтобы быстро получить качественную поддержку:"
|
1092 |
|
1093 |
+
#: admin/pages/quick-start.php:284
|
1094 |
msgid ""
|
1095 |
"Generate a debug report which will contains inforamtion about your "
|
1096 |
"configuratin and installed plugins"
|
1098 |
"Создайте отчет об ошибках, который будет содержать информацию о вашей "
|
1099 |
"конфигурации и установленных плагинах."
|
1100 |
|
1101 |
+
#: admin/pages/quick-start.php:287
|
1102 |
msgid "Generate Debug Report"
|
1103 |
msgstr "Сгенерировать отчет об ошибках"
|
1104 |
|
1105 |
+
#: admin/pages/quick-start.php:291
|
1106 |
msgid ""
|
1107 |
"Send a message to <b>wordpress.webraftic@gmail.com</b> include the debug "
|
1108 |
"report into the message body."
|
1110 |
"Отправьте ваше сообщение на <b>wordpress.webraftic@gmail.com</b>, к "
|
1111 |
"сообщению прикрепите отчет об ошибках"
|
1112 |
|
1113 |
+
#: admin/pages/quick-start.php:294
|
1114 |
msgid "We guarantee to respond you within 7 business day."
|
1115 |
msgstr "Мы гарантируем ответ на ваш вопрос в течении 7 дней."
|
1116 |
|
1147 |
msgid "Automatically creates the perfect robots.txt file"
|
1148 |
msgstr "Автоматически создает идеальный robots.txt"
|
1149 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1150 |
#: admin/pages/seo.php:109
|
1151 |
msgid "Server headers and response"
|
1152 |
msgstr "Заголовки серверов и ответ"
|
1159 |
"WordPress не знает, как отдать заголовок Last Modified. Вы можете сделать "
|
1160 |
"это с помощью параметров ниже."
|
1161 |
|
1162 |
+
#: admin/pages/seo.php:132
|
1163 |
#, php-format
|
1164 |
msgid ""
|
1165 |
"You can specify a page mask, for example: %s or %s. All pages that contain "
|
1169 |
"содержат эти строки, будут исключены. Каждое исключение должно начинаться с "
|
1170 |
"новой строки."
|
1171 |
|
1172 |
+
#: admin/pages/seo.php:145
|
1173 |
msgid "For the Yoast SEO plugin"
|
1174 |
msgstr "Для плагина Yoast SEO"
|
1175 |
|
1176 |
+
#: admin/pages/seo.php:145
|
1177 |
msgid ""
|
1178 |
"These settings will help you eliminate some problems associated with the "
|
1179 |
"popular Yoast SEO plugin"
|
1181 |
"Эти параметры помогут вам устранить некоторые проблемы, связанные с "
|
1182 |
"популярной Yoast SEO plugin"
|
1183 |
|
1184 |
+
#: admin/pages/seo.php:154
|
1185 |
msgid ""
|
1186 |
"The last element in the breadcrumbs in the Yoast SEO plugin duplicates the "
|
1187 |
"title of the article. Some SEO-specialists consider this duplication to be "
|
1190 |
"Последний элемент в хлебных крошках Yoast SEO дублирует название статьи. "
|
1191 |
"Некоторые SEO-специалисты считают это дублирование излишним."
|
1192 |
|
1193 |
+
#: admin/pages/seo.php:154
|
1194 |
msgid ""
|
1195 |
"Removes duplication of the name in the breadcrumbs of the WP SEO plugin from "
|
1196 |
"Yoast."
|
1197 |
msgstr "Удаляет последний элемент в хлебных крошках Yoast SEO."
|
1198 |
|
1199 |
+
#: admin/pages/seo.php:164
|
1200 |
msgid ""
|
1201 |
"Yandex.Webmaster swears on a standard XML card from the plugin Yoast, tk. it "
|
1202 |
"has a specific tag"
|
1204 |
"Яндекс вебмастер ругается на стандартной карты XML из плагина Yoast SEO, из-"
|
1205 |
"за определенного тега "
|
1206 |
|
1207 |
+
#: admin/pages/seo.php:164
|
1208 |
#, php-format
|
1209 |
msgid "Remove the tag %s from XML site map of the plugin Yoast SEO."
|
1210 |
msgstr "Удаляет тег %s из XML карта сайта плагин Yoast SEO."
|
1211 |
|
1212 |
+
#: admin/pages/seo.php:164
|
1213 |
msgid ""
|
1214 |
"Attention! After activation, turn off the site map and enable it back to "
|
1215 |
"regenerate it."
|
1217 |
"Внимание! После активации, выключите карту сайта и включите ее обратно, "
|
1218 |
"чтобы обновить ее."
|
1219 |
|
1220 |
+
#: admin/pages/seo.php:164
|
1221 |
msgid "In older versions of Yoast SEO may not work - update the plugin Yoast"
|
1222 |
msgstr ""
|
1223 |
"В более старых версиях Yoast SEO не может работать - обновите плагин Yoast "
|
1224 |
"SEO"
|
1225 |
|
1226 |
+
#: admin/pages/seo.php:182
|
|
|
|
|
|
|
|
|
1227 |
msgid ""
|
1228 |
"If you’re not familiar with Search Action it’s the mark-up that helps search "
|
1229 |
"engines add a shiny Sitelinks Search Box below your search engine results. "
|
1233 |
"that only searches blog posts and not pages."
|
1234 |
msgstr ""
|
1235 |
|
1236 |
+
#: admin/pages/seo.php:182
|
1237 |
msgid ""
|
1238 |
"Disable JSON-LD sitelinks searchbox using WordPress in plugin Yoast SEO."
|
1239 |
msgstr "Отключает JSON-LD ссылки используемые Wordpress в плагине Yoast SEO."
|
1240 |
|
1241 |
+
#: admin/pages/seo.php:192
|
|
|
|
|
|
|
|
|
1242 |
msgid ""
|
1243 |
"Prevents output of the script tag of type application/ld+json containing\n"
|
1244 |
"schema.org data from the popular Yoast SEO and Yoast SEO Premium plugins.\n"
|
1247 |
"Удаляет тег application/ld+json(содержащего данные schema.org) из исходного "
|
1248 |
"кода страницы, при использовании плагинов Yoast SEO и Yoast SEO Premium."
|
1249 |
|
1250 |
+
#: admin/pages/seo.php:194
|
1251 |
msgid "Disable Structured Data in plugin Yoast SEO."
|
1252 |
msgstr "Отключает структурированные данные в плагине Yoast SEO"
|
1253 |
|
1254 |
+
#: admin/pages/seo.php:204
|
1255 |
#, php-format
|
1256 |
msgid "The Yoast SEO plugin displays a comment of the form %s in %s section"
|
1257 |
msgstr "Yoast SEO плагин отображает комментарий формы %s в секции %s"
|
1258 |
|
1259 |
+
#: admin/pages/seo.php:204
|
1260 |
#, php-format
|
1261 |
msgid "Removes the Yoast SEO plugin comment of their section %s"
|
1262 |
msgstr "Удаляет комментрии Yoast SEO из %s"
|
1269 |
msgid "Clearfy"
|
1270 |
msgstr "Clearfy"
|
1271 |
|
1272 |
+
#: includes/classes/class.configurate-advanced.php:247
|
1273 |
msgid "Howdy"
|
1274 |
msgstr "Привет"
|
1275 |
|
1276 |
+
#: includes/classes/class.configurate-advanced.php:247
|
1277 |
msgid "Welcome"
|
1278 |
msgstr "Добро пожаловать"
|
1279 |
|
1285 |
msgid "The ZipArchive class does not exist in this version of php."
|
1286 |
msgstr "Класса ZipArchive не существует в этой версии php."
|
1287 |
|
1288 |
+
#~ msgid ""
|
1289 |
+
#~ "This is the “One click optimization” solution. Use it if you do not want "
|
1290 |
+
#~ "to understand the settings or do not understand what settings you need to "
|
1291 |
+
#~ "use. Use our automatic presets to activate safe plugin settings."
|
1292 |
+
#~ msgstr ""
|
1293 |
+
#~ "Это страница быстрой настройки в \"один клик\". Если вы не хотите "
|
1294 |
+
#~ "разбираться в настройках плагина или вам сложно понять их, то это "
|
1295 |
+
#~ "отличный способ для вас быстро настроить плагин. Используйте наши шаблоны "
|
1296 |
+
#~ "ниже, чтобы активировать рекомендованные нами настройки оптимизации."
|
1297 |
+
|
1298 |
+
#~ msgid ""
|
1299 |
+
#~ "This is the quick plug-in setup mode. Use it if you do not want to "
|
1300 |
+
#~ "understand the settings or do not understand what settings you need to "
|
1301 |
+
#~ "use."
|
1302 |
+
#~ msgstr ""
|
1303 |
+
#~ "Это режим быстрой настройки плагина. Используйте его, если вы не хотите "
|
1304 |
+
#~ "разбираться в настройках или не понимаете, какие настройки вам нужны."
|
1305 |
+
|
1306 |
+
#~ msgid "Select mode"
|
1307 |
+
#~ msgstr "Выберите режим"
|
1308 |
+
|
1309 |
+
#~ msgid ""
|
1310 |
+
#~ "After selecting the mode, the plug-in automatically activates the "
|
1311 |
+
#~ "necessary settings for the mode."
|
1312 |
+
#~ msgstr ""
|
1313 |
+
#~ "Выбрав режим, плагин автоматически активирует необходимые настройки, для "
|
1314 |
+
#~ "выполнения этого режима."
|
1315 |
+
|
1316 |
+
#~ msgid "Disable admin notice"
|
1317 |
+
#~ msgstr "Скрыть уведомления в админ панели"
|
1318 |
+
|
1319 |
+
#~ msgid ""
|
1320 |
+
#~ "Whenever there’s a major release available, a notification will display "
|
1321 |
+
#~ "at the top of your admin area, letting you know your version is out-of-"
|
1322 |
+
#~ "date and you need to update the core code.<br>\n"
|
1323 |
+
#~ "For many people, this nag can be annoying. And if you developer websites "
|
1324 |
+
#~ "for clients, you may want to hide it. After all, who wants to let their "
|
1325 |
+
#~ "clients know their software is old?"
|
1326 |
+
#~ msgstr ""
|
1327 |
+
#~ "Всякий раз, когда доступна основная версия плагинов, тем, вы будете "
|
1328 |
+
#~ "видеть уведомление, что вам необходимо обновить базовый код. Также "
|
1329 |
+
#~ "некоторые плагины могут выводить уведомления о переходе на премиум версию "
|
1330 |
+
#~ "или активацию темы.<br>\n"
|
1331 |
+
#~ "Для многих людей это может быть раздражающим. И если вы создаете веб-"
|
1332 |
+
#~ "сайты для клиентов, вы можете скрыть их. В конце концов, кто хочет, чтобы "
|
1333 |
+
#~ "их клиенты знали, что их программное обеспечение устарело?"
|
1334 |
+
|
1335 |
+
#~ msgid "Disable admin notices."
|
1336 |
+
#~ msgstr "Отключить уведомления администратора"
|
1337 |
+
|
1338 |
+
#~ msgid ""
|
1339 |
+
#~ "You can disable all plugin updates or choose manual or automatic update "
|
1340 |
+
#~ "mode."
|
1341 |
+
#~ msgstr ""
|
1342 |
+
#~ "Вы можете отключить все обновления плагинов или выбрать режим ручного или "
|
1343 |
+
#~ "автоматического обновления."
|
1344 |
+
|
1345 |
+
#~ msgid "Recommended Mode"
|
1346 |
+
#~ msgstr "Рекомендуемый режим"
|
1347 |
+
|
1348 |
+
#~ msgid "Code Clearing"
|
1349 |
+
#~ msgstr "Очистка кода"
|
1350 |
+
|
1351 |
+
#~ msgid "Security"
|
1352 |
+
#~ msgstr "Безопасность"
|
1353 |
+
|
1354 |
+
#~ msgid "Seo optimization"
|
1355 |
+
#~ msgstr "Оптимизация SEO"
|
1356 |
+
|
1357 |
+
#~ msgid "Remove default Widgets"
|
1358 |
+
#~ msgstr "Удалить виджеты по умолчанию"
|
1359 |
+
|
1360 |
+
#~ msgid "Activate"
|
1361 |
+
#~ msgstr "Включить"
|
1362 |
+
|
1363 |
+
#~ msgid "Deactivate"
|
1364 |
+
#~ msgstr "Отключить"
|
1365 |
+
|
1366 |
+
#~ msgid ""
|
1367 |
+
#~ "If your site uses an SSL certificate, check this box to enable "
|
1368 |
+
#~ "redirection from http to https."
|
1369 |
+
#~ msgstr ""
|
1370 |
+
#~ "Если ваш сайт использует сертификат SSL, установите этот флажок, чтобы "
|
1371 |
+
#~ "включить перенаправление с http на https."
|
1372 |
+
|
1373 |
+
#~ msgid "Puts the redirect from http to https."
|
1374 |
+
#~ msgstr "Передает перенаправление с http на https."
|
1375 |
+
|
1376 |
+
#~ msgid "Warning! Before activation, make sure your site is open https."
|
1377 |
+
#~ msgstr ""
|
1378 |
+
#~ "Внимание! Перед активацией убедитесь, что ваш сайт открывается по https."
|
1379 |
+
|
1380 |
#~ msgid "Replace external links in comments on the JavaScript code"
|
1381 |
#~ msgstr "Заменить внешние ссылки в комментариях на JavaScript код"
|
1382 |
|
libs/factory/bootstrap/assets/flat/css/bootstrap.accordion.css
DELETED
@@ -1,33 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* Light Weight jQuery Accordions
|
3 |
-
*/
|
4 |
-
|
5 |
-
.factory-bootstrap-330 .factory-accordion {
|
6 |
-
margin: 0 0 30px;
|
7 |
-
border-top: 1px solid #DDD;
|
8 |
-
border-right: 1px solid #DDD;
|
9 |
-
border-left: 1px solid #DDD;
|
10 |
-
-webkit-border-radius: 4px;
|
11 |
-
-moz-border-radius: 4px;
|
12 |
-
border-radius: 4px;
|
13 |
-
}
|
14 |
-
.factory-bootstrap-330 .factory-accordion > h3 {
|
15 |
-
border-bottom: 1px solid #DDD;
|
16 |
-
cursor: pointer;
|
17 |
-
padding: 8px 15px;
|
18 |
-
margin: 0;
|
19 |
-
}
|
20 |
-
.factory-bootstrap-330 .factory-accordion > div {
|
21 |
-
display: none;
|
22 |
-
margin:0;
|
23 |
-
border-bottom: 1px solid #DDD;
|
24 |
-
}
|
25 |
-
.factory-bootstrap-330 .factory-accordion-item {
|
26 |
-
display: none;
|
27 |
-
}
|
28 |
-
.factory-bootstrap-330 .inner-factory-accordion-item {
|
29 |
-
padding: 10px 0;
|
30 |
-
}
|
31 |
-
.factory-bootstrap-330 .factory-accordion > h3.active:hover {
|
32 |
-
cursor: default;
|
33 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/bootstrap.blue.css
DELETED
@@ -1,48 +0,0 @@
|
|
1 |
-
.factory-bootstrap-330 .btn-primary {
|
2 |
-
background: #e1a948;
|
3 |
-
border-color: #d39323;
|
4 |
-
color: white;
|
5 |
-
-webkit-box-shadow: inset 0 1px 0 #ecc88a, 0 1px 0 rgba(0, 0, 0, 0.15);
|
6 |
-
box-shadow: inset 0 1px 0 #ecc88a, 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: #db9825;
|
11 |
-
border-color: #bd831f;
|
12 |
-
color: white;
|
13 |
-
-webkit-box-shadow: inset 0 1px 0 #e8be74, 0 1px 0 rgba(0, 0, 0, 0.15);
|
14 |
-
box-shadow: inset 0 1px 0 #e8be74, 0 1px 0 rgba(0, 0, 0, 0.15);
|
15 |
-
}
|
16 |
-
.factory-bootstrap-330 .btn-primary:active {
|
17 |
-
background: #db9825;
|
18 |
-
border-color: #bd831f;
|
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: #d1cdc7 !important;
|
26 |
-
background: #db9825 !important;
|
27 |
-
border-color: #bd831f !important;
|
28 |
-
text-shadow: none !important;
|
29 |
-
}
|
30 |
-
|
31 |
-
.factory-bootstrap-330 .btn-group .btn.active.value {
|
32 |
-
background-color: #e1a948;
|
33 |
-
-webkit-box-shadow: inset 0 1px 2px #d39323;
|
34 |
-
box-shadow: inset 0 1px 2px #d39323;
|
35 |
-
border-top: 1px solid #d39323;
|
36 |
-
border-bottom: 1px solid #d39323;
|
37 |
-
border-left: 1px solid #d39323;
|
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: #e1a948;
|
47 |
-
border-color: #d39323;
|
48 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/bootstrap.coffee.css
DELETED
@@ -1,48 +0,0 @@
|
|
1 |
-
.factory-bootstrap-330 .btn-primary {
|
2 |
-
background: #c7a589;
|
3 |
-
border-color: #b78a66;
|
4 |
-
color: white;
|
5 |
-
-webkit-box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15);
|
6 |
-
box-shadow: inset 0 1px 0 #e0cdbd, 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: #ba906d;
|
11 |
-
border-color: #ae7d55;
|
12 |
-
color: white;
|
13 |
-
-webkit-box-shadow: inset 0 1px 0 #d7bfac, 0 1px 0 rgba(0, 0, 0, 0.15);
|
14 |
-
box-shadow: inset 0 1px 0 #d7bfac, 0 1px 0 rgba(0, 0, 0, 0.15);
|
15 |
-
}
|
16 |
-
.factory-bootstrap-330 .btn-primary:active {
|
17 |
-
background: #ba906d;
|
18 |
-
border-color: #ae7d55;
|
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: #d1cbc7 !important;
|
26 |
-
background: #ba906d !important;
|
27 |
-
border-color: #ae7d55 !important;
|
28 |
-
text-shadow: none !important;
|
29 |
-
}
|
30 |
-
|
31 |
-
.factory-bootstrap-330 .btn-group .btn.active.value {
|
32 |
-
background-color: #c7a589;
|
33 |
-
-webkit-box-shadow: inset 0 1px 2px #b78a66;
|
34 |
-
box-shadow: inset 0 1px 2px #b78a66;
|
35 |
-
border-top: 1px solid #b78a66;
|
36 |
-
border-bottom: 1px solid #b78a66;
|
37 |
-
border-left: 1px solid #b78a66;
|
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: #c7a589;
|
47 |
-
border-color: #b78a66;
|
48 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/bootstrap.datepicker.css
DELETED
@@ -1,782 +0,0 @@
|
|
1 |
-
/*!
|
2 |
-
* Datepicker for Bootstrap v1.5.0-dev (https://github.com/eternicode/bootstrap-datepicker)
|
3 |
-
*
|
4 |
-
* Copyright 2012 Stefan Petre
|
5 |
-
* Improvements by Andrew Rowls
|
6 |
-
* Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
|
7 |
-
*/
|
8 |
-
.datepicker {
|
9 |
-
border-radius: 4px;
|
10 |
-
direction: ltr;
|
11 |
-
}
|
12 |
-
.datepicker-inline {
|
13 |
-
width: 220px;
|
14 |
-
}
|
15 |
-
.datepicker.datepicker-rtl {
|
16 |
-
direction: rtl;
|
17 |
-
}
|
18 |
-
.datepicker.datepicker-rtl table tr td span {
|
19 |
-
float: right;
|
20 |
-
}
|
21 |
-
.datepicker-dropdown {
|
22 |
-
top: 0;
|
23 |
-
left: 0;
|
24 |
-
}
|
25 |
-
.datepicker-dropdown:before {
|
26 |
-
content: '';
|
27 |
-
display: inline-block;
|
28 |
-
border-left: 7px solid transparent;
|
29 |
-
border-right: 7px solid transparent;
|
30 |
-
border-bottom: 7px solid #ccc;
|
31 |
-
border-top: 0;
|
32 |
-
border-bottom-color: rgba(0, 0, 0, 0.2);
|
33 |
-
position: absolute;
|
34 |
-
}
|
35 |
-
.datepicker-dropdown:after {
|
36 |
-
content: '';
|
37 |
-
display: inline-block;
|
38 |
-
border-left: 6px solid transparent;
|
39 |
-
border-right: 6px solid transparent;
|
40 |
-
border-bottom: 6px solid #fff;
|
41 |
-
border-top: 0;
|
42 |
-
position: absolute;
|
43 |
-
}
|
44 |
-
.datepicker-dropdown.datepicker-orient-left:before {
|
45 |
-
left: 6px;
|
46 |
-
}
|
47 |
-
.datepicker-dropdown.datepicker-orient-left:after {
|
48 |
-
left: 7px;
|
49 |
-
}
|
50 |
-
.datepicker-dropdown.datepicker-orient-right:before {
|
51 |
-
right: 6px;
|
52 |
-
}
|
53 |
-
.datepicker-dropdown.datepicker-orient-right:after {
|
54 |
-
right: 7px;
|
55 |
-
}
|
56 |
-
.datepicker-dropdown.datepicker-orient-top:before {
|
57 |
-
top: -7px;
|
58 |
-
}
|
59 |
-
.datepicker-dropdown.datepicker-orient-top:after {
|
60 |
-
top: -6px;
|
61 |
-
}
|
62 |
-
.datepicker-dropdown.datepicker-orient-bottom:before {
|
63 |
-
bottom: -7px;
|
64 |
-
border-bottom: 0;
|
65 |
-
border-top: 7px solid #999;
|
66 |
-
}
|
67 |
-
.datepicker-dropdown.datepicker-orient-bottom:after {
|
68 |
-
bottom: -6px;
|
69 |
-
border-bottom: 0;
|
70 |
-
border-top: 6px solid #fff;
|
71 |
-
}
|
72 |
-
.datepicker > div {
|
73 |
-
display: none;
|
74 |
-
}
|
75 |
-
.datepicker.days .datepicker-days,
|
76 |
-
.datepicker.months .datepicker-months,
|
77 |
-
.datepicker.years .datepicker-years {
|
78 |
-
display: block;
|
79 |
-
}
|
80 |
-
.datepicker table {
|
81 |
-
margin: 0;
|
82 |
-
-webkit-touch-callout: none;
|
83 |
-
-webkit-user-select: none;
|
84 |
-
-khtml-user-select: none;
|
85 |
-
-moz-user-select: none;
|
86 |
-
-ms-user-select: none;
|
87 |
-
user-select: none;
|
88 |
-
}
|
89 |
-
.datepicker table tr td,
|
90 |
-
.datepicker table tr th {
|
91 |
-
text-align: center;
|
92 |
-
width: 30px;
|
93 |
-
height: 30px;
|
94 |
-
border-radius: 4px;
|
95 |
-
border: none;
|
96 |
-
}
|
97 |
-
.table-striped .datepicker table tr td,
|
98 |
-
.table-striped .datepicker table tr th {
|
99 |
-
background-color: transparent;
|
100 |
-
}
|
101 |
-
.datepicker table tr td.day:hover,
|
102 |
-
.datepicker table tr td.day.focused {
|
103 |
-
background: #eeeeee;
|
104 |
-
cursor: pointer;
|
105 |
-
}
|
106 |
-
.datepicker table tr td.old,
|
107 |
-
.datepicker table tr td.new {
|
108 |
-
color: #999999;
|
109 |
-
}
|
110 |
-
.datepicker table tr td.disabled,
|
111 |
-
.datepicker table tr td.disabled:hover {
|
112 |
-
background: none;
|
113 |
-
color: #999999;
|
114 |
-
cursor: default;
|
115 |
-
}
|
116 |
-
.datepicker table tr td.today,
|
117 |
-
.datepicker table tr td.today:hover,
|
118 |
-
.datepicker table tr td.today.disabled,
|
119 |
-
.datepicker table tr td.today.disabled:hover {
|
120 |
-
color: #000000;
|
121 |
-
background-color: #ffdb99;
|
122 |
-
border-color: #ffb733;
|
123 |
-
}
|
124 |
-
.datepicker table tr td.today:hover,
|
125 |
-
.datepicker table tr td.today:hover:hover,
|
126 |
-
.datepicker table tr td.today.disabled:hover,
|
127 |
-
.datepicker table tr td.today.disabled:hover:hover,
|
128 |
-
.datepicker table tr td.today:focus,
|
129 |
-
.datepicker table tr td.today:hover:focus,
|
130 |
-
.datepicker table tr td.today.disabled:focus,
|
131 |
-
.datepicker table tr td.today.disabled:hover:focus,
|
132 |
-
.datepicker table tr td.today:active,
|
133 |
-
.datepicker table tr td.today:hover:active,
|
134 |
-
.datepicker table tr td.today.disabled:active,
|
135 |
-
.datepicker table tr td.today.disabled:hover:active,
|
136 |
-
.datepicker table tr td.today.active,
|
137 |
-
.datepicker table tr td.today:hover.active,
|
138 |
-
.datepicker table tr td.today.disabled.active,
|
139 |
-
.datepicker table tr td.today.disabled:hover.active,
|
140 |
-
.open .dropdown-toggle.datepicker table tr td.today,
|
141 |
-
.open .dropdown-toggle.datepicker table tr td.today:hover,
|
142 |
-
.open .dropdown-toggle.datepicker table tr td.today.disabled,
|
143 |
-
.open .dropdown-toggle.datepicker table tr td.today.disabled:hover {
|
144 |
-
color: #000000;
|
145 |
-
background-color: #ffcd70;
|
146 |
-
border-color: #f59e00;
|
147 |
-
}
|
148 |
-
.datepicker table tr td.today:active,
|
149 |
-
.datepicker table tr td.today:hover:active,
|
150 |
-
.datepicker table tr td.today.disabled:active,
|
151 |
-
.datepicker table tr td.today.disabled:hover:active,
|
152 |
-
.datepicker table tr td.today.active,
|
153 |
-
.datepicker table tr td.today:hover.active,
|
154 |
-
.datepicker table tr td.today.disabled.active,
|
155 |
-
.datepicker table tr td.today.disabled:hover.active,
|
156 |
-
.open .dropdown-toggle.datepicker table tr td.today,
|
157 |
-
.open .dropdown-toggle.datepicker table tr td.today:hover,
|
158 |
-
.open .dropdown-toggle.datepicker table tr td.today.disabled,
|
159 |
-
.open .dropdown-toggle.datepicker table tr td.today.disabled:hover {
|
160 |
-
background-image: none;
|
161 |
-
}
|
162 |
-
.datepicker table tr td.today.disabled,
|
163 |
-
.datepicker table tr td.today:hover.disabled,
|
164 |
-
.datepicker table tr td.today.disabled.disabled,
|
165 |
-
.datepicker table tr td.today.disabled:hover.disabled,
|
166 |
-
.datepicker table tr td.today[disabled],
|
167 |
-
.datepicker table tr td.today:hover[disabled],
|
168 |
-
.datepicker table tr td.today.disabled[disabled],
|
169 |
-
.datepicker table tr td.today.disabled:hover[disabled],
|
170 |
-
fieldset[disabled] .datepicker table tr td.today,
|
171 |
-
fieldset[disabled] .datepicker table tr td.today:hover,
|
172 |
-
fieldset[disabled] .datepicker table tr td.today.disabled,
|
173 |
-
fieldset[disabled] .datepicker table tr td.today.disabled:hover,
|
174 |
-
.datepicker table tr td.today.disabled:hover,
|
175 |
-
.datepicker table tr td.today:hover.disabled:hover,
|
176 |
-
.datepicker table tr td.today.disabled.disabled:hover,
|
177 |
-
.datepicker table tr td.today.disabled:hover.disabled:hover,
|
178 |
-
.datepicker table tr td.today[disabled]:hover,
|
179 |
-
.datepicker table tr td.today:hover[disabled]:hover,
|
180 |
-
.datepicker table tr td.today.disabled[disabled]:hover,
|
181 |
-
.datepicker table tr td.today.disabled:hover[disabled]:hover,
|
182 |
-
fieldset[disabled] .datepicker table tr td.today:hover,
|
183 |
-
fieldset[disabled] .datepicker table tr td.today:hover:hover,
|
184 |
-
fieldset[disabled] .datepicker table tr td.today.disabled:hover,
|
185 |
-
fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,
|
186 |
-
.datepicker table tr td.today.disabled:focus,
|
187 |
-
.datepicker table tr td.today:hover.disabled:focus,
|
188 |
-
.datepicker table tr td.today.disabled.disabled:focus,
|
189 |
-
.datepicker table tr td.today.disabled:hover.disabled:focus,
|
190 |
-
.datepicker table tr td.today[disabled]:focus,
|
191 |
-
.datepicker table tr td.today:hover[disabled]:focus,
|
192 |
-
.datepicker table tr td.today.disabled[disabled]:focus,
|
193 |
-
.datepicker table tr td.today.disabled:hover[disabled]:focus,
|
194 |
-
fieldset[disabled] .datepicker table tr td.today:focus,
|
195 |
-
fieldset[disabled] .datepicker table tr td.today:hover:focus,
|
196 |
-
fieldset[disabled] .datepicker table tr td.today.disabled:focus,
|
197 |
-
fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,
|
198 |
-
.datepicker table tr td.today.disabled:active,
|
199 |
-
.datepicker table tr td.today:hover.disabled:active,
|
200 |
-
.datepicker table tr td.today.disabled.disabled:active,
|
201 |
-
.datepicker table tr td.today.disabled:hover.disabled:active,
|
202 |
-
.datepicker table tr td.today[disabled]:active,
|
203 |
-
.datepicker table tr td.today:hover[disabled]:active,
|
204 |
-
.datepicker table tr td.today.disabled[disabled]:active,
|
205 |
-
.datepicker table tr td.today.disabled:hover[disabled]:active,
|
206 |
-
fieldset[disabled] .datepicker table tr td.today:active,
|
207 |
-
fieldset[disabled] .datepicker table tr td.today:hover:active,
|
208 |
-
fieldset[disabled] .datepicker table tr td.today.disabled:active,
|
209 |
-
fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,
|
210 |
-
.datepicker table tr td.today.disabled.active,
|
211 |
-
.datepicker table tr td.today:hover.disabled.active,
|
212 |
-
.datepicker table tr td.today.disabled.disabled.active,
|
213 |
-
.datepicker table tr td.today.disabled:hover.disabled.active,
|
214 |
-
.datepicker table tr td.today[disabled].active,
|
215 |
-
.datepicker table tr td.today:hover[disabled].active,
|
216 |
-
.datepicker table tr td.today.disabled[disabled].active,
|
217 |
-
.datepicker table tr td.today.disabled:hover[disabled].active,
|
218 |
-
fieldset[disabled] .datepicker table tr td.today.active,
|
219 |
-
fieldset[disabled] .datepicker table tr td.today:hover.active,
|
220 |
-
fieldset[disabled] .datepicker table tr td.today.disabled.active,
|
221 |
-
fieldset[disabled] .datepicker table tr td.today.disabled:hover.active {
|
222 |
-
background-color: #ffdb99;
|
223 |
-
border-color: #ffb733;
|
224 |
-
}
|
225 |
-
.datepicker table tr td.today:hover:hover {
|
226 |
-
color: #000;
|
227 |
-
}
|
228 |
-
.datepicker table tr td.today.active:hover {
|
229 |
-
color: #fff;
|
230 |
-
}
|
231 |
-
.datepicker table tr td.range,
|
232 |
-
.datepicker table tr td.range:hover,
|
233 |
-
.datepicker table tr td.range.disabled,
|
234 |
-
.datepicker table tr td.range.disabled:hover {
|
235 |
-
background: #eeeeee;
|
236 |
-
border-radius: 0;
|
237 |
-
}
|
238 |
-
.datepicker table tr td.range.today,
|
239 |
-
.datepicker table tr td.range.today:hover,
|
240 |
-
.datepicker table tr td.range.today.disabled,
|
241 |
-
.datepicker table tr td.range.today.disabled:hover {
|
242 |
-
color: #000000;
|
243 |
-
background-color: #f7ca77;
|
244 |
-
border-color: #f1a417;
|
245 |
-
border-radius: 0;
|
246 |
-
}
|
247 |
-
.datepicker table tr td.range.today:hover,
|
248 |
-
.datepicker table tr td.range.today:hover:hover,
|
249 |
-
.datepicker table tr td.range.today.disabled:hover,
|
250 |
-
.datepicker table tr td.range.today.disabled:hover:hover,
|
251 |
-
.datepicker table tr td.range.today:focus,
|
252 |
-
.datepicker table tr td.range.today:hover:focus,
|
253 |
-
.datepicker table tr td.range.today.disabled:focus,
|
254 |
-
.datepicker table tr td.range.today.disabled:hover:focus,
|
255 |
-
.datepicker table tr td.range.today:active,
|
256 |
-
.datepicker table tr td.range.today:hover:active,
|
257 |
-
.datepicker table tr td.range.today.disabled:active,
|
258 |
-
.datepicker table tr td.range.today.disabled:hover:active,
|
259 |
-
.datepicker table tr td.range.today.active,
|
260 |
-
.datepicker table tr td.range.today:hover.active,
|
261 |
-
.datepicker table tr td.range.today.disabled.active,
|
262 |
-
.datepicker table tr td.range.today.disabled:hover.active,
|
263 |
-
.open .dropdown-toggle.datepicker table tr td.range.today,
|
264 |
-
.open .dropdown-toggle.datepicker table tr td.range.today:hover,
|
265 |
-
.open .dropdown-toggle.datepicker table tr td.range.today.disabled,
|
266 |
-
.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
|
267 |
-
color: #000000;
|
268 |
-
background-color: #f4bb51;
|
269 |
-
border-color: #bf800c;
|
270 |
-
}
|
271 |
-
.datepicker table tr td.range.today:active,
|
272 |
-
.datepicker table tr td.range.today:hover:active,
|
273 |
-
.datepicker table tr td.range.today.disabled:active,
|
274 |
-
.datepicker table tr td.range.today.disabled:hover:active,
|
275 |
-
.datepicker table tr td.range.today.active,
|
276 |
-
.datepicker table tr td.range.today:hover.active,
|
277 |
-
.datepicker table tr td.range.today.disabled.active,
|
278 |
-
.datepicker table tr td.range.today.disabled:hover.active,
|
279 |
-
.open .dropdown-toggle.datepicker table tr td.range.today,
|
280 |
-
.open .dropdown-toggle.datepicker table tr td.range.today:hover,
|
281 |
-
.open .dropdown-toggle.datepicker table tr td.range.today.disabled,
|
282 |
-
.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
|
283 |
-
background-image: none;
|
284 |
-
}
|
285 |
-
.datepicker table tr td.range.today.disabled,
|
286 |
-
.datepicker table tr td.range.today:hover.disabled,
|
287 |
-
.datepicker table tr td.range.today.disabled.disabled,
|
288 |
-
.datepicker table tr td.range.today.disabled:hover.disabled,
|
289 |
-
.datepicker table tr td.range.today[disabled],
|
290 |
-
.datepicker table tr td.range.today:hover[disabled],
|
291 |
-
.datepicker table tr td.range.today.disabled[disabled],
|
292 |
-
.datepicker table tr td.range.today.disabled:hover[disabled],
|
293 |
-
fieldset[disabled] .datepicker table tr td.range.today,
|
294 |
-
fieldset[disabled] .datepicker table tr td.range.today:hover,
|
295 |
-
fieldset[disabled] .datepicker table tr td.range.today.disabled,
|
296 |
-
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
|
297 |
-
.datepicker table tr td.range.today.disabled:hover,
|
298 |
-
.datepicker table tr td.range.today:hover.disabled:hover,
|
299 |
-
.datepicker table tr td.range.today.disabled.disabled:hover,
|
300 |
-
.datepicker table tr td.range.today.disabled:hover.disabled:hover,
|
301 |
-
.datepicker table tr td.range.today[disabled]:hover,
|
302 |
-
.datepicker table tr td.range.today:hover[disabled]:hover,
|
303 |
-
.datepicker table tr td.range.today.disabled[disabled]:hover,
|
304 |
-
.datepicker table tr td.range.today.disabled:hover[disabled]:hover,
|
305 |
-
fieldset[disabled] .datepicker table tr td.range.today:hover,
|
306 |
-
fieldset[disabled] .datepicker table tr td.range.today:hover:hover,
|
307 |
-
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
|
308 |
-
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,
|
309 |
-
.datepicker table tr td.range.today.disabled:focus,
|
310 |
-
.datepicker table tr td.range.today:hover.disabled:focus,
|
311 |
-
.datepicker table tr td.range.today.disabled.disabled:focus,
|
312 |
-
.datepicker table tr td.range.today.disabled:hover.disabled:focus,
|
313 |
-
.datepicker table tr td.range.today[disabled]:focus,
|
314 |
-
.datepicker table tr td.range.today:hover[disabled]:focus,
|
315 |
-
.datepicker table tr td.range.today.disabled[disabled]:focus,
|
316 |
-
.datepicker table tr td.range.today.disabled:hover[disabled]:focus,
|
317 |
-
fieldset[disabled] .datepicker table tr td.range.today:focus,
|
318 |
-
fieldset[disabled] .datepicker table tr td.range.today:hover:focus,
|
319 |
-
fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,
|
320 |
-
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,
|
321 |
-
.datepicker table tr td.range.today.disabled:active,
|
322 |
-
.datepicker table tr td.range.today:hover.disabled:active,
|
323 |
-
.datepicker table tr td.range.today.disabled.disabled:active,
|
324 |
-
.datepicker table tr td.range.today.disabled:hover.disabled:active,
|
325 |
-
.datepicker table tr td.range.today[disabled]:active,
|
326 |
-
.datepicker table tr td.range.today:hover[disabled]:active,
|
327 |
-
.datepicker table tr td.range.today.disabled[disabled]:active,
|
328 |
-
.datepicker table tr td.range.today.disabled:hover[disabled]:active,
|
329 |
-
fieldset[disabled] .datepicker table tr td.range.today:active,
|
330 |
-
fieldset[disabled] .datepicker table tr td.range.today:hover:active,
|
331 |
-
fieldset[disabled] .datepicker table tr td.range.today.disabled:active,
|
332 |
-
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,
|
333 |
-
.datepicker table tr td.range.today.disabled.active,
|
334 |
-
.datepicker table tr td.range.today:hover.disabled.active,
|
335 |
-
.datepicker table tr td.range.today.disabled.disabled.active,
|
336 |
-
.datepicker table tr td.range.today.disabled:hover.disabled.active,
|
337 |
-
.datepicker table tr td.range.today[disabled].active,
|
338 |
-
.datepicker table tr td.range.today:hover[disabled].active,
|
339 |
-
.datepicker table tr td.range.today.disabled[disabled].active,
|
340 |
-
.datepicker table tr td.range.today.disabled:hover[disabled].active,
|
341 |
-
fieldset[disabled] .datepicker table tr td.range.today.active,
|
342 |
-
fieldset[disabled] .datepicker table tr td.range.today:hover.active,
|
343 |
-
fieldset[disabled] .datepicker table tr td.range.today.disabled.active,
|
344 |
-
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active {
|
345 |
-
background-color: #f7ca77;
|
346 |
-
border-color: #f1a417;
|
347 |
-
}
|
348 |
-
.datepicker table tr td.selected,
|
349 |
-
.datepicker table tr td.selected:hover,
|
350 |
-
.datepicker table tr td.selected.disabled,
|
351 |
-
.datepicker table tr td.selected.disabled:hover {
|
352 |
-
color: #ffffff;
|
353 |
-
background-color: #999999;
|
354 |
-
border-color: #555555;
|
355 |
-
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
356 |
-
}
|
357 |
-
.datepicker table tr td.selected:hover,
|
358 |
-
.datepicker table tr td.selected:hover:hover,
|
359 |
-
.datepicker table tr td.selected.disabled:hover,
|
360 |
-
.datepicker table tr td.selected.disabled:hover:hover,
|
361 |
-
.datepicker table tr td.selected:focus,
|
362 |
-
.datepicker table tr td.selected:hover:focus,
|
363 |
-
.datepicker table tr td.selected.disabled:focus,
|
364 |
-
.datepicker table tr td.selected.disabled:hover:focus,
|
365 |
-
.datepicker table tr td.selected:active,
|
366 |
-
.datepicker table tr td.selected:hover:active,
|
367 |
-
.datepicker table tr td.selected.disabled:active,
|
368 |
-
.datepicker table tr td.selected.disabled:hover:active,
|
369 |
-
.datepicker table tr td.selected.active,
|
370 |
-
.datepicker table tr td.selected:hover.active,
|
371 |
-
.datepicker table tr td.selected.disabled.active,
|
372 |
-
.datepicker table tr td.selected.disabled:hover.active,
|
373 |
-
.open .dropdown-toggle.datepicker table tr td.selected,
|
374 |
-
.open .dropdown-toggle.datepicker table tr td.selected:hover,
|
375 |
-
.open .dropdown-toggle.datepicker table tr td.selected.disabled,
|
376 |
-
.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
|
377 |
-
color: #ffffff;
|
378 |
-
background-color: #858585;
|
379 |
-
border-color: #373737;
|
380 |
-
}
|
381 |
-
.datepicker table tr td.selected:active,
|
382 |
-
.datepicker table tr td.selected:hover:active,
|
383 |
-
.datepicker table tr td.selected.disabled:active,
|
384 |
-
.datepicker table tr td.selected.disabled:hover:active,
|
385 |
-
.datepicker table tr td.selected.active,
|
386 |
-
.datepicker table tr td.selected:hover.active,
|
387 |
-
.datepicker table tr td.selected.disabled.active,
|
388 |
-
.datepicker table tr td.selected.disabled:hover.active,
|
389 |
-
.open .dropdown-toggle.datepicker table tr td.selected,
|
390 |
-
.open .dropdown-toggle.datepicker table tr td.selected:hover,
|
391 |
-
.open .dropdown-toggle.datepicker table tr td.selected.disabled,
|
392 |
-
.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
|
393 |
-
background-image: none;
|
394 |
-
}
|
395 |
-
.datepicker table tr td.selected.disabled,
|
396 |
-
.datepicker table tr td.selected:hover.disabled,
|
397 |
-
.datepicker table tr td.selected.disabled.disabled,
|
398 |
-
.datepicker table tr td.selected.disabled:hover.disabled,
|
399 |
-
.datepicker table tr td.selected[disabled],
|
400 |
-
.datepicker table tr td.selected:hover[disabled],
|
401 |
-
.datepicker table tr td.selected.disabled[disabled],
|
402 |
-
.datepicker table tr td.selected.disabled:hover[disabled],
|
403 |
-
fieldset[disabled] .datepicker table tr td.selected,
|
404 |
-
fieldset[disabled] .datepicker table tr td.selected:hover,
|
405 |
-
fieldset[disabled] .datepicker table tr td.selected.disabled,
|
406 |
-
fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
|
407 |
-
.datepicker table tr td.selected.disabled:hover,
|
408 |
-
.datepicker table tr td.selected:hover.disabled:hover,
|
409 |
-
.datepicker table tr td.selected.disabled.disabled:hover,
|
410 |
-
.datepicker table tr td.selected.disabled:hover.disabled:hover,
|
411 |
-
.datepicker table tr td.selected[disabled]:hover,
|
412 |
-
.datepicker table tr td.selected:hover[disabled]:hover,
|
413 |
-
.datepicker table tr td.selected.disabled[disabled]:hover,
|
414 |
-
.datepicker table tr td.selected.disabled:hover[disabled]:hover,
|
415 |
-
fieldset[disabled] .datepicker table tr td.selected:hover,
|
416 |
-
fieldset[disabled] .datepicker table tr td.selected:hover:hover,
|
417 |
-
fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
|
418 |
-
fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,
|
419 |
-
.datepicker table tr td.selected.disabled:focus,
|
420 |
-
.datepicker table tr td.selected:hover.disabled:focus,
|
421 |
-
.datepicker table tr td.selected.disabled.disabled:focus,
|
422 |
-
.datepicker table tr td.selected.disabled:hover.disabled:focus,
|
423 |
-
.datepicker table tr td.selected[disabled]:focus,
|
424 |
-
.datepicker table tr td.selected:hover[disabled]:focus,
|
425 |
-
.datepicker table tr td.selected.disabled[disabled]:focus,
|
426 |
-
.datepicker table tr td.selected.disabled:hover[disabled]:focus,
|
427 |
-
fieldset[disabled] .datepicker table tr td.selected:focus,
|
428 |
-
fieldset[disabled] .datepicker table tr td.selected:hover:focus,
|
429 |
-
fieldset[disabled] .datepicker table tr td.selected.disabled:focus,
|
430 |
-
fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,
|
431 |
-
.datepicker table tr td.selected.disabled:active,
|
432 |
-
.datepicker table tr td.selected:hover.disabled:active,
|
433 |
-
.datepicker table tr td.selected.disabled.disabled:active,
|
434 |
-
.datepicker table tr td.selected.disabled:hover.disabled:active,
|
435 |
-
.datepicker table tr td.selected[disabled]:active,
|
436 |
-
.datepicker table tr td.selected:hover[disabled]:active,
|
437 |
-
.datepicker table tr td.selected.disabled[disabled]:active,
|
438 |
-
.datepicker table tr td.selected.disabled:hover[disabled]:active,
|
439 |
-
fieldset[disabled] .datepicker table tr td.selected:active,
|
440 |
-
fieldset[disabled] .datepicker table tr td.selected:hover:active,
|
441 |
-
fieldset[disabled] .datepicker table tr td.selected.disabled:active,
|
442 |
-
fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,
|
443 |
-
.datepicker table tr td.selected.disabled.active,
|
444 |
-
.datepicker table tr td.selected:hover.disabled.active,
|
445 |
-
.datepicker table tr td.selected.disabled.disabled.active,
|
446 |
-
.datepicker table tr td.selected.disabled:hover.disabled.active,
|
447 |
-
.datepicker table tr td.selected[disabled].active,
|
448 |
-
.datepicker table tr td.selected:hover[disabled].active,
|
449 |
-
.datepicker table tr td.selected.disabled[disabled].active,
|
450 |
-
.datepicker table tr td.selected.disabled:hover[disabled].active,
|
451 |
-
fieldset[disabled] .datepicker table tr td.selected.active,
|
452 |
-
fieldset[disabled] .datepicker table tr td.selected:hover.active,
|
453 |
-
fieldset[disabled] .datepicker table tr td.selected.disabled.active,
|
454 |
-
fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active {
|
455 |
-
background-color: #999999;
|
456 |
-
border-color: #555555;
|
457 |
-
}
|
458 |
-
.datepicker table tr td.active,
|
459 |
-
.datepicker table tr td.active:hover,
|
460 |
-
.datepicker table tr td.active.disabled,
|
461 |
-
.datepicker table tr td.active.disabled:hover {
|
462 |
-
color: #ffffff;
|
463 |
-
background-color: #428bca;
|
464 |
-
border-color: #357ebd;
|
465 |
-
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
466 |
-
}
|
467 |
-
.datepicker table tr td.active:hover,
|
468 |
-
.datepicker table tr td.active:hover:hover,
|
469 |
-
.datepicker table tr td.active.disabled:hover,
|
470 |
-
.datepicker table tr td.active.disabled:hover:hover,
|
471 |
-
.datepicker table tr td.active:focus,
|
472 |
-
.datepicker table tr td.active:hover:focus,
|
473 |
-
.datepicker table tr td.active.disabled:focus,
|
474 |
-
.datepicker table tr td.active.disabled:hover:focus,
|
475 |
-
.datepicker table tr td.active:active,
|
476 |
-
.datepicker table tr td.active:hover:active,
|
477 |
-
.datepicker table tr td.active.disabled:active,
|
478 |
-
.datepicker table tr td.active.disabled:hover:active,
|
479 |
-
.datepicker table tr td.active.active,
|
480 |
-
.datepicker table tr td.active:hover.active,
|
481 |
-
.datepicker table tr td.active.disabled.active,
|
482 |
-
.datepicker table tr td.active.disabled:hover.active,
|
483 |
-
.open .dropdown-toggle.datepicker table tr td.active,
|
484 |
-
.open .dropdown-toggle.datepicker table tr td.active:hover,
|
485 |
-
.open .dropdown-toggle.datepicker table tr td.active.disabled,
|
486 |
-
.open .dropdown-toggle.datepicker table tr td.active.disabled:hover {
|
487 |
-
color: #ffffff;
|
488 |
-
background-color: #3276b1;
|
489 |
-
border-color: #285e8e;
|
490 |
-
}
|
491 |
-
.datepicker table tr td.active:active,
|
492 |
-
.datepicker table tr td.active:hover:active,
|
493 |
-
.datepicker table tr td.active.disabled:active,
|
494 |
-
.datepicker table tr td.active.disabled:hover:active,
|
495 |
-
.datepicker table tr td.active.active,
|
496 |
-
.datepicker table tr td.active:hover.active,
|
497 |
-
.datepicker table tr td.active.disabled.active,
|
498 |
-
.datepicker table tr td.active.disabled:hover.active,
|
499 |
-
.open .dropdown-toggle.datepicker table tr td.active,
|
500 |
-
.open .dropdown-toggle.datepicker table tr td.active:hover,
|
501 |
-
.open .dropdown-toggle.datepicker table tr td.active.disabled,
|
502 |
-
.open .dropdown-toggle.datepicker table tr td.active.disabled:hover {
|
503 |
-
background-image: none;
|
504 |
-
}
|
505 |
-
.datepicker table tr td.active.disabled,
|
506 |
-
.datepicker table tr td.active:hover.disabled,
|
507 |
-
.datepicker table tr td.active.disabled.disabled,
|
508 |
-
.datepicker table tr td.active.disabled:hover.disabled,
|
509 |
-
.datepicker table tr td.active[disabled],
|
510 |
-
.datepicker table tr td.active:hover[disabled],
|
511 |
-
.datepicker table tr td.active.disabled[disabled],
|
512 |
-
.datepicker table tr td.active.disabled:hover[disabled],
|
513 |
-
fieldset[disabled] .datepicker table tr td.active,
|
514 |
-
fieldset[disabled] .datepicker table tr td.active:hover,
|
515 |
-
fieldset[disabled] .datepicker table tr td.active.disabled,
|
516 |
-
fieldset[disabled] .datepicker table tr td.active.disabled:hover,
|
517 |
-
.datepicker table tr td.active.disabled:hover,
|
518 |
-
.datepicker table tr td.active:hover.disabled:hover,
|
519 |
-
.datepicker table tr td.active.disabled.disabled:hover,
|
520 |
-
.datepicker table tr td.active.disabled:hover.disabled:hover,
|
521 |
-
.datepicker table tr td.active[disabled]:hover,
|
522 |
-
.datepicker table tr td.active:hover[disabled]:hover,
|
523 |
-
.datepicker table tr td.active.disabled[disabled]:hover,
|
524 |
-
.datepicker table tr td.active.disabled:hover[disabled]:hover,
|
525 |
-
fieldset[disabled] .datepicker table tr td.active:hover,
|
526 |
-
fieldset[disabled] .datepicker table tr td.active:hover:hover,
|
527 |
-
fieldset[disabled] .datepicker table tr td.active.disabled:hover,
|
528 |
-
fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,
|
529 |
-
.datepicker table tr td.active.disabled:focus,
|
530 |
-
.datepicker table tr td.active:hover.disabled:focus,
|
531 |
-
.datepicker table tr td.active.disabled.disabled:focus,
|
532 |
-
.datepicker table tr td.active.disabled:hover.disabled:focus,
|
533 |
-
.datepicker table tr td.active[disabled]:focus,
|
534 |
-
.datepicker table tr td.active:hover[disabled]:focus,
|
535 |
-
.datepicker table tr td.active.disabled[disabled]:focus,
|
536 |
-
.datepicker table tr td.active.disabled:hover[disabled]:focus,
|
537 |
-
fieldset[disabled] .datepicker table tr td.active:focus,
|
538 |
-
fieldset[disabled] .datepicker table tr td.active:hover:focus,
|
539 |
-
fieldset[disabled] .datepicker table tr td.active.disabled:focus,
|
540 |
-
fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,
|
541 |
-
.datepicker table tr td.active.disabled:active,
|
542 |
-
.datepicker table tr td.active:hover.disabled:active,
|
543 |
-
.datepicker table tr td.active.disabled.disabled:active,
|
544 |
-
.datepicker table tr td.active.disabled:hover.disabled:active,
|
545 |
-
.datepicker table tr td.active[disabled]:active,
|
546 |
-
.datepicker table tr td.active:hover[disabled]:active,
|
547 |
-
.datepicker table tr td.active.disabled[disabled]:active,
|
548 |
-
.datepicker table tr td.active.disabled:hover[disabled]:active,
|
549 |
-
fieldset[disabled] .datepicker table tr td.active:active,
|
550 |
-
fieldset[disabled] .datepicker table tr td.active:hover:active,
|
551 |
-
fieldset[disabled] .datepicker table tr td.active.disabled:active,
|
552 |
-
fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,
|
553 |
-
.datepicker table tr td.active.disabled.active,
|
554 |
-
.datepicker table tr td.active:hover.disabled.active,
|
555 |
-
.datepicker table tr td.active.disabled.disabled.active,
|
556 |
-
.datepicker table tr td.active.disabled:hover.disabled.active,
|
557 |
-
.datepicker table tr td.active[disabled].active,
|
558 |
-
.datepicker table tr td.active:hover[disabled].active,
|
559 |
-
.datepicker table tr td.active.disabled[disabled].active,
|
560 |
-
.datepicker table tr td.active.disabled:hover[disabled].active,
|
561 |
-
fieldset[disabled] .datepicker table tr td.active.active,
|
562 |
-
fieldset[disabled] .datepicker table tr td.active:hover.active,
|
563 |
-
fieldset[disabled] .datepicker table tr td.active.disabled.active,
|
564 |
-
fieldset[disabled] .datepicker table tr td.active.disabled:hover.active {
|
565 |
-
background-color: #428bca;
|
566 |
-
border-color: #357ebd;
|
567 |
-
}
|
568 |
-
.datepicker table tr td span {
|
569 |
-
display: block;
|
570 |
-
width: 23%;
|
571 |
-
height: 54px;
|
572 |
-
line-height: 54px;
|
573 |
-
float: left;
|
574 |
-
margin: 1%;
|
575 |
-
cursor: pointer;
|
576 |
-
border-radius: 4px;
|
577 |
-
}
|
578 |
-
.datepicker table tr td span:hover {
|
579 |
-
background: #eeeeee;
|
580 |
-
}
|
581 |
-
.datepicker table tr td span.disabled,
|
582 |
-
.datepicker table tr td span.disabled:hover {
|
583 |
-
background: none;
|
584 |
-
color: #999999;
|
585 |
-
cursor: default;
|
586 |
-
}
|
587 |
-
.datepicker table tr td span.active,
|
588 |
-
.datepicker table tr td span.active:hover,
|
589 |
-
.datepicker table tr td span.active.disabled,
|
590 |
-
.datepicker table tr td span.active.disabled:hover {
|
591 |
-
color: #ffffff;
|
592 |
-
background-color: #428bca;
|
593 |
-
border-color: #357ebd;
|
594 |
-
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
595 |
-
}
|
596 |
-
.datepicker table tr td span.active:hover,
|
597 |
-
.datepicker table tr td span.active:hover:hover,
|
598 |
-
.datepicker table tr td span.active.disabled:hover,
|
599 |
-
.datepicker table tr td span.active.disabled:hover:hover,
|
600 |
-
.datepicker table tr td span.active:focus,
|
601 |
-
.datepicker table tr td span.active:hover:focus,
|
602 |
-
.datepicker table tr td span.active.disabled:focus,
|
603 |
-
.datepicker table tr td span.active.disabled:hover:focus,
|
604 |
-
.datepicker table tr td span.active:active,
|
605 |
-
.datepicker table tr td span.active:hover:active,
|
606 |
-
.datepicker table tr td span.active.disabled:active,
|
607 |
-
.datepicker table tr td span.active.disabled:hover:active,
|
608 |
-
.datepicker table tr td span.active.active,
|
609 |
-
.datepicker table tr td span.active:hover.active,
|
610 |
-
.datepicker table tr td span.active.disabled.active,
|
611 |
-
.datepicker table tr td span.active.disabled:hover.active,
|
612 |
-
.open .dropdown-toggle.datepicker table tr td span.active,
|
613 |
-
.open .dropdown-toggle.datepicker table tr td span.active:hover,
|
614 |
-
.open .dropdown-toggle.datepicker table tr td span.active.disabled,
|
615 |
-
.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
|
616 |
-
color: #ffffff;
|
617 |
-
background-color: #3276b1;
|
618 |
-
border-color: #285e8e;
|
619 |
-
}
|
620 |
-
.datepicker table tr td span.active:active,
|
621 |
-
.datepicker table tr td span.active:hover:active,
|
622 |
-
.datepicker table tr td span.active.disabled:active,
|
623 |
-
.datepicker table tr td span.active.disabled:hover:active,
|
624 |
-
.datepicker table tr td span.active.active,
|
625 |
-
.datepicker table tr td span.active:hover.active,
|
626 |
-
.datepicker table tr td span.active.disabled.active,
|
627 |
-
.datepicker table tr td span.active.disabled:hover.active,
|
628 |
-
.open .dropdown-toggle.datepicker table tr td span.active,
|
629 |
-
.open .dropdown-toggle.datepicker table tr td span.active:hover,
|
630 |
-
.open .dropdown-toggle.datepicker table tr td span.active.disabled,
|
631 |
-
.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
|
632 |
-
background-image: none;
|
633 |
-
}
|
634 |
-
.datepicker table tr td span.active.disabled,
|
635 |
-
.datepicker table tr td span.active:hover.disabled,
|
636 |
-
.datepicker table tr td span.active.disabled.disabled,
|
637 |
-
.datepicker table tr td span.active.disabled:hover.disabled,
|
638 |
-
.datepicker table tr td span.active[disabled],
|
639 |
-
.datepicker table tr td span.active:hover[disabled],
|
640 |
-
.datepicker table tr td span.active.disabled[disabled],
|
641 |
-
.datepicker table tr td span.active.disabled:hover[disabled],
|
642 |
-
fieldset[disabled] .datepicker table tr td span.active,
|
643 |
-
fieldset[disabled] .datepicker table tr td span.active:hover,
|
644 |
-
fieldset[disabled] .datepicker table tr td span.active.disabled,
|
645 |
-
fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
|
646 |
-
.datepicker table tr td span.active.disabled:hover,
|
647 |
-
.datepicker table tr td span.active:hover.disabled:hover,
|
648 |
-
.datepicker table tr td span.active.disabled.disabled:hover,
|
649 |
-
.datepicker table tr td span.active.disabled:hover.disabled:hover,
|
650 |
-
.datepicker table tr td span.active[disabled]:hover,
|
651 |
-
.datepicker table tr td span.active:hover[disabled]:hover,
|
652 |
-
.datepicker table tr td span.active.disabled[disabled]:hover,
|
653 |
-
.datepicker table tr td span.active.disabled:hover[disabled]:hover,
|
654 |
-
fieldset[disabled] .datepicker table tr td span.active:hover,
|
655 |
-
fieldset[disabled] .datepicker table tr td span.active:hover:hover,
|
656 |
-
fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
|
657 |
-
fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,
|
658 |
-
.datepicker table tr td span.active.disabled:focus,
|
659 |
-
.datepicker table tr td span.active:hover.disabled:focus,
|
660 |
-
.datepicker table tr td span.active.disabled.disabled:focus,
|
661 |
-
.datepicker table tr td span.active.disabled:hover.disabled:focus,
|
662 |
-
.datepicker table tr td span.active[disabled]:focus,
|
663 |
-
.datepicker table tr td span.active:hover[disabled]:focus,
|
664 |
-
.datepicker table tr td span.active.disabled[disabled]:focus,
|
665 |
-
.datepicker table tr td span.active.disabled:hover[disabled]:focus,
|
666 |
-
fieldset[disabled] .datepicker table tr td span.active:focus,
|
667 |
-
fieldset[disabled] .datepicker table tr td span.active:hover:focus,
|
668 |
-
fieldset[disabled] .datepicker table tr td span.active.disabled:focus,
|
669 |
-
fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,
|
670 |
-
.datepicker table tr td span.active.disabled:active,
|
671 |
-
.datepicker table tr td span.active:hover.disabled:active,
|
672 |
-
.datepicker table tr td span.active.disabled.disabled:active,
|
673 |
-
.datepicker table tr td span.active.disabled:hover.disabled:active,
|
674 |
-
.datepicker table tr td span.active[disabled]:active,
|
675 |
-
.datepicker table tr td span.active:hover[disabled]:active,
|
676 |
-
.datepicker table tr td span.active.disabled[disabled]:active,
|
677 |
-
.datepicker table tr td span.active.disabled:hover[disabled]:active,
|
678 |
-
fieldset[disabled] .datepicker table tr td span.active:active,
|
679 |
-
fieldset[disabled] .datepicker table tr td span.active:hover:active,
|
680 |
-
fieldset[disabled] .datepicker table tr td span.active.disabled:active,
|
681 |
-
fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,
|
682 |
-
.datepicker table tr td span.active.disabled.active,
|
683 |
-
.datepicker table tr td span.active:hover.disabled.active,
|
684 |
-
.datepicker table tr td span.active.disabled.disabled.active,
|
685 |
-
.datepicker table tr td span.active.disabled:hover.disabled.active,
|
686 |
-
.datepicker table tr td span.active[disabled].active,
|
687 |
-
.datepicker table tr td span.active:hover[disabled].active,
|
688 |
-
.datepicker table tr td span.active.disabled[disabled].active,
|
689 |
-
.datepicker table tr td span.active.disabled:hover[disabled].active,
|
690 |
-
fieldset[disabled] .datepicker table tr td span.active.active,
|
691 |
-
fieldset[disabled] .datepicker table tr td span.active:hover.active,
|
692 |
-
fieldset[disabled] .datepicker table tr td span.active.disabled.active,
|
693 |
-
fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active {
|
694 |
-
background-color: #428bca;
|
695 |
-
border-color: #357ebd;
|
696 |
-
}
|
697 |
-
.datepicker table tr td span.old,
|
698 |
-
.datepicker table tr td span.new {
|
699 |
-
color: #999999;
|
700 |
-
}
|
701 |
-
.datepicker .datepicker-switch {
|
702 |
-
width: 145px;
|
703 |
-
}
|
704 |
-
.datepicker thead tr:first-child th,
|
705 |
-
.datepicker tfoot tr th {
|
706 |
-
cursor: pointer;
|
707 |
-
}
|
708 |
-
.datepicker thead tr:first-child th:hover,
|
709 |
-
.datepicker tfoot tr th:hover {
|
710 |
-
background: #eeeeee;
|
711 |
-
}
|
712 |
-
.datepicker .cw {
|
713 |
-
font-size: 10px;
|
714 |
-
width: 12px;
|
715 |
-
padding: 0 2px 0 5px;
|
716 |
-
vertical-align: middle;
|
717 |
-
}
|
718 |
-
.datepicker thead tr:first-child .cw {
|
719 |
-
cursor: default;
|
720 |
-
background-color: transparent;
|
721 |
-
}
|
722 |
-
.input-group.date .input-group-addon {
|
723 |
-
cursor: pointer;
|
724 |
-
}
|
725 |
-
.input-daterange {
|
726 |
-
width: 100%;
|
727 |
-
}
|
728 |
-
.input-daterange input {
|
729 |
-
text-align: center;
|
730 |
-
}
|
731 |
-
.input-daterange input:first-child {
|
732 |
-
border-radius: 3px 0 0 3px;
|
733 |
-
}
|
734 |
-
.input-daterange input:last-child {
|
735 |
-
border-radius: 0 3px 3px 0;
|
736 |
-
}
|
737 |
-
.input-daterange .input-group-addon {
|
738 |
-
width: auto;
|
739 |
-
min-width: 16px;
|
740 |
-
padding: 4px 5px;
|
741 |
-
font-weight: normal;
|
742 |
-
line-height: 1.42857143;
|
743 |
-
text-align: center;
|
744 |
-
text-shadow: 0 1px 0 #fff;
|
745 |
-
vertical-align: middle;
|
746 |
-
background-color: #eeeeee;
|
747 |
-
border: solid #cccccc;
|
748 |
-
border-width: 1px 0;
|
749 |
-
margin-left: -5px;
|
750 |
-
margin-right: -5px;
|
751 |
-
}
|
752 |
-
.datepicker.dropdown-menu {
|
753 |
-
position: absolute;
|
754 |
-
top: 100%;
|
755 |
-
left: 0;
|
756 |
-
z-index: 1000;
|
757 |
-
float: left;
|
758 |
-
display: none;
|
759 |
-
min-width: 160px;
|
760 |
-
list-style: none;
|
761 |
-
background-color: #ffffff;
|
762 |
-
border: 1px solid #ccc;
|
763 |
-
border: 1px solid rgba(0, 0, 0, 0.2);
|
764 |
-
border-radius: 5px;
|
765 |
-
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
766 |
-
-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
767 |
-
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
768 |
-
-webkit-background-clip: padding-box;
|
769 |
-
-moz-background-clip: padding;
|
770 |
-
background-clip: padding-box;
|
771 |
-
*border-right-width: 2px;
|
772 |
-
*border-bottom-width: 2px;
|
773 |
-
color: #333333;
|
774 |
-
font-size: 13px;
|
775 |
-
line-height: 1.42857143;
|
776 |
-
}
|
777 |
-
.datepicker.dropdown-menu th,
|
778 |
-
.datepicker.datepicker-inline th,
|
779 |
-
.datepicker.dropdown-menu td,
|
780 |
-
.datepicker.datepicker-inline td {
|
781 |
-
padding: 0px 5px;
|
782 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/bootstrap.datetimepicker.css
ADDED
@@ -0,0 +1,432 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.ectoplasm.css
DELETED
@@ -1,48 +0,0 @@
|
|
1 |
-
.factory-bootstrap-330 .btn-primary {
|
2 |
-
background: #a3b745;
|
3 |
-
border-color: #839237;
|
4 |
-
color: white;
|
5 |
-
-webkit-box-shadow: inset 0 1px 0 #c0cd7b, 0 1px 0 rgba(0, 0, 0, 0.15);
|
6 |
-
box-shadow: inset 0 1px 0 #c0cd7b, 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: #89993a;
|
11 |
-
border-color: #727f30;
|
12 |
-
color: white;
|
13 |
-
-webkit-box-shadow: inset 0 1px 0 #b7c669, 0 1px 0 rgba(0, 0, 0, 0.15);
|
14 |
-
box-shadow: inset 0 1px 0 #b7c669, 0 1px 0 rgba(0, 0, 0, 0.15);
|
15 |
-
}
|
16 |
-
.factory-bootstrap-330 .btn-primary:active {
|
17 |
-
background: #89993a;
|
18 |
-
border-color: #727f30;
|
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: #cfd1c7 !important;
|
26 |
-
background: #89993a !important;
|
27 |
-
border-color: #727f30 !important;
|
28 |
-
text-shadow: none !important;
|
29 |
-
}
|
30 |
-
|
31 |
-
.factory-bootstrap-330 .btn-group .btn.active.value {
|
32 |
-
background-color: #a3b745;
|
33 |
-
-webkit-box-shadow: inset 0 1px 2px #839237;
|
34 |
-
box-shadow: inset 0 1px 2px #839237;
|
35 |
-
border-top: 1px solid #839237;
|
36 |
-
border-bottom: 1px solid #839237;
|
37 |
-
border-left: 1px solid #839237;
|
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: #a3b745;
|
47 |
-
border-color: #839237;
|
48 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/bootstrap.form-metabox.css
DELETED
@@ -1,56 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* Form Metaboxes
|
3 |
-
*/
|
4 |
-
|
5 |
-
.factory-form-metabox {
|
6 |
-
padding: 15px 10px 10px 10px;
|
7 |
-
}
|
8 |
-
.factory-form-metabox .control-group:last-child {
|
9 |
-
margin-bottom: 0px;
|
10 |
-
}
|
11 |
-
|
12 |
-
/**
|
13 |
-
* Side form metaboxes
|
14 |
-
*/
|
15 |
-
|
16 |
-
#side-sortables .factory-bootstrap-330 .control-label {
|
17 |
-
float: left;
|
18 |
-
width: 100%;
|
19 |
-
text-align: left;
|
20 |
-
position: relative;
|
21 |
-
top: 1px;
|
22 |
-
}
|
23 |
-
#side-sortables .factory-bootstrap-330 .control-icon {
|
24 |
-
float: left;
|
25 |
-
margin: 0 6px 0 0;
|
26 |
-
}
|
27 |
-
#side-sortables .factory-bootstrap-330 input
|
28 |
-
{
|
29 |
-
float: right;
|
30 |
-
position: relative;
|
31 |
-
top: -25px;
|
32 |
-
}
|
33 |
-
#side-sortables .factory-bootstrap-330 .help-block {
|
34 |
-
|
35 |
-
}
|
36 |
-
#side-sortables .factory-bootstrap-330 .col-sm-10 {
|
37 |
-
margin: 0px;
|
38 |
-
width: 100%;
|
39 |
-
}
|
40 |
-
#side-sortables .factory-bootstrap-330 .form-group {
|
41 |
-
float: none;
|
42 |
-
margin-top: 0px;
|
43 |
-
width: auto;
|
44 |
-
overflow: auto;
|
45 |
-
}
|
46 |
-
#side-sortables .factory-bootstrap-330 .form-group {
|
47 |
-
margin-bottom: 0px;
|
48 |
-
border-top: 1px solid #f7f7f7;
|
49 |
-
padding-top: 15px;
|
50 |
-
margin-top: 15px;
|
51 |
-
}
|
52 |
-
#side-sortables .factory-bootstrap-330 .form-group:first-child {
|
53 |
-
border-top: 0px;
|
54 |
-
padding-top: 0px;
|
55 |
-
margin-top: 0px;
|
56 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/bootstrap.midnight.css
DELETED
@@ -1,48 +0,0 @@
|
|
1 |
-
.factory-bootstrap-330 .btn-primary {
|
2 |
-
background: #e14d43;
|
3 |
-
border-color: #d02a21;
|
4 |
-
color: white;
|
5 |
-
-webkit-box-shadow: inset 0 1px 0 #ec8a85, 0 1px 0 rgba(0, 0, 0, 0.15);
|
6 |
-
box-shadow: inset 0 1px 0 #ec8a85, 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: #d92c23;
|
11 |
-
border-color: #ba251e;
|
12 |
-
color: white;
|
13 |
-
-webkit-box-shadow: inset 0 1px 0 #e8756f, 0 1px 0 rgba(0, 0, 0, 0.15);
|
14 |
-
box-shadow: inset 0 1px 0 #e8756f, 0 1px 0 rgba(0, 0, 0, 0.15);
|
15 |
-
}
|
16 |
-
.factory-bootstrap-330 .btn-primary:active {
|
17 |
-
background: #d92c23;
|
18 |
-
border-color: #ba251e;
|
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: #d1c7c7 !important;
|
26 |
-
background: #d92c23 !important;
|
27 |
-
border-color: #ba251e !important;
|
28 |
-
text-shadow: none !important;
|
29 |
-
}
|
30 |
-
|
31 |
-
.factory-bootstrap-330 .btn-group .btn.active.value {
|
32 |
-
background-color: #e14d43;
|
33 |
-
-webkit-box-shadow: inset 0 1px 2px #d02a21;
|
34 |
-
box-shadow: inset 0 1px 2px #d02a21;
|
35 |
-
border-top: 1px solid #d02a21;
|
36 |
-
border-bottom: 1px solid #d02a21;
|
37 |
-
border-left: 1px solid #d02a21;
|
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: #e14d43;
|
47 |
-
border-color: #d02a21;
|
48 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/bootstrap.ocean.css
DELETED
@@ -1,48 +0,0 @@
|
|
1 |
-
.factory-bootstrap-330 .btn-primary {
|
2 |
-
background: #9ebaa0;
|
3 |
-
border-color: #80a583;
|
4 |
-
color: white;
|
5 |
-
-webkit-box-shadow: inset 0 1px 0 #cbdacc, 0 1px 0 rgba(0, 0, 0, 0.15);
|
6 |
-
box-shadow: inset 0 1px 0 #cbdacc, 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: #86a988;
|
11 |
-
border-color: #719a74;
|
12 |
-
color: white;
|
13 |
-
-webkit-box-shadow: inset 0 1px 0 #bccfbd, 0 1px 0 rgba(0, 0, 0, 0.15);
|
14 |
-
box-shadow: inset 0 1px 0 #bccfbd, 0 1px 0 rgba(0, 0, 0, 0.15);
|
15 |
-
}
|
16 |
-
.factory-bootstrap-330 .btn-primary:active {
|
17 |
-
background: #86a988;
|
18 |
-
border-color: #719a74;
|
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: #c7d1c8 !important;
|
26 |
-
background: #86a988 !important;
|
27 |
-
border-color: #719a74 !important;
|
28 |
-
text-shadow: none !important;
|
29 |
-
}
|
30 |
-
|
31 |
-
.factory-bootstrap-330 .btn-group .btn.active.value {
|
32 |
-
background-color: #9ebaa0;
|
33 |
-
-webkit-box-shadow: inset 0 1px 2px #80a583;
|
34 |
-
box-shadow: inset 0 1px 2px #80a583;
|
35 |
-
border-top: 1px solid #80a583;
|
36 |
-
border-bottom: 1px solid #80a583;
|
37 |
-
border-left: 1px solid #80a583;
|
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: #9ebaa0;
|
47 |
-
border-color: #80a583;
|
48 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/bootstrap.sunrise.css
DELETED
@@ -1,48 +0,0 @@
|
|
1 |
-
.factory-bootstrap-330 .btn-primary {
|
2 |
-
background: #dd823b;
|
3 |
-
border-color: #c36822;
|
4 |
-
color: white;
|
5 |
-
-webkit-box-shadow: inset 0 1px 0 #e8ab7c, 0 1px 0 rgba(0, 0, 0, 0.15);
|
6 |
-
box-shadow: inset 0 1px 0 #e8ab7c, 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: #cc6c23;
|
11 |
-
border-color: #ad5c1e;
|
12 |
-
color: white;
|
13 |
-
-webkit-box-shadow: inset 0 1px 0 #e59d66, 0 1px 0 rgba(0, 0, 0, 0.15);
|
14 |
-
box-shadow: inset 0 1px 0 #e59d66, 0 1px 0 rgba(0, 0, 0, 0.15);
|
15 |
-
}
|
16 |
-
.factory-bootstrap-330 .btn-primary:active {
|
17 |
-
background: #cc6c23;
|
18 |
-
border-color: #ad5c1e;
|
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: #d1cbc7 !important;
|
26 |
-
background: #cc6c23 !important;
|
27 |
-
border-color: #ad5c1e !important;
|
28 |
-
text-shadow: none !important;
|
29 |
-
}
|
30 |
-
|
31 |
-
.factory-bootstrap-330 .btn-group .btn.active.value {
|
32 |
-
background-color: #dd823b;
|
33 |
-
-webkit-box-shadow: inset 0 1px 2px #c36822;
|
34 |
-
box-shadow: inset 0 1px 2px #c36822;
|
35 |
-
border-top: 1px solid #c36822;
|
36 |
-
border-bottom: 1px solid #c36822;
|
37 |
-
border-left: 1px solid #c36822;
|
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: #dd823b;
|
47 |
-
border-color: #c36822;
|
48 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/bootstrap.tab.css
DELETED
@@ -1,112 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* Tabs
|
3 |
-
*/
|
4 |
-
|
5 |
-
.factory-bootstrap-330 .factory-tab {
|
6 |
-
overflow: hidden;
|
7 |
-
margin-bottom: 25px;
|
8 |
-
}
|
9 |
-
|
10 |
-
.factory-bootstrap-330 .factory-tab .form-group {
|
11 |
-
overflow: hidden;
|
12 |
-
}
|
13 |
-
|
14 |
-
.factory-bootstrap-330 .factory-tab + .form-group {
|
15 |
-
margin-top: 30px;
|
16 |
-
}
|
17 |
-
|
18 |
-
.factory-bootstrap-330 .nav-tabs a {
|
19 |
-
text-decoration: none;
|
20 |
-
}
|
21 |
-
|
22 |
-
.factory-bootstrap-330 .factory-align-horizontal .nav-tabs {
|
23 |
-
border-bottom: 0px;
|
24 |
-
}
|
25 |
-
|
26 |
-
.factory-bootstrap-330 .factory-align-vertical .factory-headers {
|
27 |
-
float: left;
|
28 |
-
width: 150px;
|
29 |
-
}
|
30 |
-
|
31 |
-
.factory-bootstrap-330 .factory-align-vertical .factory-headers .nav-tabs {
|
32 |
-
border-bottom: 0px;
|
33 |
-
display: block;
|
34 |
-
margin: 0px;
|
35 |
-
-webkit-border-bottom-left-radius: 4px;
|
36 |
-
-moz-border-radius-bottomleft: 4px;
|
37 |
-
border-bottom-left-radius: 4px;
|
38 |
-
}
|
39 |
-
|
40 |
-
.factory-bootstrap-330 .factory-tab .factory-bodies {
|
41 |
-
background-color: #fff;
|
42 |
-
-webkit-border-radius: 0 3px 3px 3px;
|
43 |
-
-moz-border-radius: 0 3px 3px 3px;
|
44 |
-
border-radius: 0 3px 3px 3px;
|
45 |
-
border: 1px solid #DDD;
|
46 |
-
padding: 30px 15px 25px 10px;
|
47 |
-
}
|
48 |
-
|
49 |
-
.factory-bootstrap-330 .factory-align-vertical .factory-bodies {
|
50 |
-
min-height: 250px;
|
51 |
-
margin-left: 150px;
|
52 |
-
|
53 |
-
}
|
54 |
-
|
55 |
-
.factory-bootstrap-330 .factory-align-vertical .factory-bodies .actory-tab-item {
|
56 |
-
clear: both;
|
57 |
-
}
|
58 |
-
|
59 |
-
.factory-bootstrap-330 .form-horizontal .factory-align-vertical .form-group {
|
60 |
-
margin-left: -5px;
|
61 |
-
}
|
62 |
-
|
63 |
-
.factory-bootstrap-330 .factory-align-vertical .nav-tabs li {
|
64 |
-
float: none;
|
65 |
-
}
|
66 |
-
|
67 |
-
.factory-bootstrap-330 .factory-align-vertical .nav-tabs li a {
|
68 |
-
margin-right: -1px;
|
69 |
-
margin-bottom: 0px;
|
70 |
-
position: relative;
|
71 |
-
z-index: 10;
|
72 |
-
padding: 10px 0 9px 15px;
|
73 |
-
|
74 |
-
-webkit-border-radius: 3px;
|
75 |
-
-webkit-border-top-right-radius: 0px;
|
76 |
-
-webkit-border-bottom-right-radius: 0px;
|
77 |
-
-moz-border-radius: 3px;
|
78 |
-
-moz-border-radius-topright: 0px;
|
79 |
-
-moz-border-radius-bottomright: 0px;
|
80 |
-
border-radius: 3px;
|
81 |
-
border-top-right-radius: 0px;
|
82 |
-
border-bottom-right-radius: 0px;
|
83 |
-
}
|
84 |
-
|
85 |
-
.factory-bootstrap-330 .factory-align-vertical .nav-tabs > .active > a {
|
86 |
-
border: 1px solid #DDD !important;
|
87 |
-
border-right: 1px solid #fff !important;
|
88 |
-
}
|
89 |
-
|
90 |
-
.factory-bootstrap-330 .factory-align-vertical .nav-tabs > li a:hover {
|
91 |
-
color: #21759B;
|
92 |
-
z-index: 5;
|
93 |
-
border-color: transparent;
|
94 |
-
}
|
95 |
-
|
96 |
-
.factory-bootstrap-330 .factory-align-vertical .control-label {
|
97 |
-
width: 20%;
|
98 |
-
max-width: 140px;
|
99 |
-
}
|
100 |
-
|
101 |
-
.factory-bootstrap-330 .factory-align-vertical .factory-tab-item {
|
102 |
-
|
103 |
-
}
|
104 |
-
|
105 |
-
.factory-bootstrap-330 .factory-align-vertical .control-group {
|
106 |
-
width: 80%;
|
107 |
-
}
|
108 |
-
|
109 |
-
.factory-bootstrap-330 .factory-align-vertical .control-group input[type=text],
|
110 |
-
.factory-bootstrap-330 .factory-align-vertical .control-group textarea {
|
111 |
-
width: 90%;
|
112 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/bootstrap.wp-editor.css
DELETED
@@ -1,28 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* WP Editor
|
3 |
-
*/
|
4 |
-
|
5 |
-
.factory-bootstrap-330 .wp-editor-wrap * {
|
6 |
-
-webkit-box-sizing: content-box;
|
7 |
-
-moz-box-sizing: content-box;
|
8 |
-
box-sizing: content-box;
|
9 |
-
}
|
10 |
-
.factory-bootstrap-330 .wp-editor-wrap .button,
|
11 |
-
.factory-bootstrap-330 .wp-editor-wrap textarea,
|
12 |
-
.factory-bootstrap-330 .wp-editor-wrap input {
|
13 |
-
-webkit-box-sizing: border-box;
|
14 |
-
-moz-box-sizing: border-box;
|
15 |
-
box-sizing: border-box;
|
16 |
-
}
|
17 |
-
.factory-bootstrap-330 .switch-tmce,
|
18 |
-
.factory-bootstrap-330 .switch-html {
|
19 |
-
color: #777;
|
20 |
-
}
|
21 |
-
.factory-bootstrap-330 .tmce-active .switch-tmce,
|
22 |
-
.factory-bootstrap-330 .html-active .switch-html {
|
23 |
-
color: #555;
|
24 |
-
}
|
25 |
-
.factory-bootstrap-330 .switch-tmce:hover,
|
26 |
-
.factory-bootstrap-330 .switch-html:hover {
|
27 |
-
color: #777;
|
28 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/control.color-and-opacity.css
DELETED
@@ -1,24 +0,0 @@
|
|
1 |
-
.factory-bootstrap-330 .factory-color-and-opacity .factory-preview-wrap {
|
2 |
-
|
3 |
-
}
|
4 |
-
|
5 |
-
.factory-bootstrap-330 .factory-control-row {
|
6 |
-
padding-left: 105px;
|
7 |
-
position: relative;
|
8 |
-
}
|
9 |
-
.factory-bootstrap-330 .factory-control-row .factory-color-wrap {
|
10 |
-
position: absolute;
|
11 |
-
left: 0px;
|
12 |
-
top: 0px;
|
13 |
-
}
|
14 |
-
.factory-bootstrap-330 .factory-control-row .factory-opacity-wrap {
|
15 |
-
width: 100%;
|
16 |
-
}
|
17 |
-
|
18 |
-
.factory-bootstrap-330 .factory-picker-target {
|
19 |
-
|
20 |
-
}
|
21 |
-
|
22 |
-
.factory-bootstrap-330 .iris-picker {
|
23 |
-
margin-top: 10px;
|
24 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/control.color.css
DELETED
@@ -1,44 +0,0 @@
|
|
1 |
-
.factory-bootstrap-330 .factory-color {
|
2 |
-
position: relative;
|
3 |
-
}
|
4 |
-
|
5 |
-
.factory-bootstrap-330 .factory-color .factory-color-hex {
|
6 |
-
display: inline-block;
|
7 |
-
width: 65px;
|
8 |
-
text-align: left;
|
9 |
-
vertical-align: top;
|
10 |
-
border-radius: 0px;
|
11 |
-
border-top-right-radius: 3px;
|
12 |
-
border-bottom-right-radius: 3px;
|
13 |
-
border-radius: 3px;
|
14 |
-
z-index: 1;
|
15 |
-
position: relative;
|
16 |
-
margin-left: 26px;
|
17 |
-
border-top-left-radius: 0px;
|
18 |
-
border-bottom-left-radius: 0px;
|
19 |
-
}
|
20 |
-
|
21 |
-
.factory-bootstrap-330 .factory-color .factory-pattern,
|
22 |
-
.factory-bootstrap-330 .factory-color .factory-background {
|
23 |
-
cursor: pointer;
|
24 |
-
}
|
25 |
-
|
26 |
-
.factory-bootstrap-330 .factory-color .factory-pattern,
|
27 |
-
.factory-bootstrap-330 .factory-color .factory-background {
|
28 |
-
height: 26px;
|
29 |
-
width: 26px;
|
30 |
-
position: absolute;
|
31 |
-
border-radius: 5px;
|
32 |
-
background: transparent url('../../images/color_picker_pattern.jpg') center center repeat;
|
33 |
-
-moz-box-sizing: border-box;
|
34 |
-
box-sizing: border-box;
|
35 |
-
border-bottom: 2px solid rgba(0, 0, 0, 0.34);
|
36 |
-
z-index: 1;
|
37 |
-
border-top-right-radius: 0px !important;
|
38 |
-
border-bottom-right-radius: 0px !important;
|
39 |
-
}
|
40 |
-
|
41 |
-
.factory-bootstrap-330 .factory-color .factory-background {
|
42 |
-
z-index: 2;
|
43 |
-
border-radius: 3px;
|
44 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/control.dropdown-and-colors.css
DELETED
@@ -1,16 +0,0 @@
|
|
1 |
-
.factory-bootstrap-330 .factory-dropdown-and-colors .factory-colors-wrap,
|
2 |
-
.factory-bootstrap-330 .factory-dropdown-and-colors .factory-dropdown-wrap {
|
3 |
-
display: inline-block;
|
4 |
-
}
|
5 |
-
|
6 |
-
.factory-bootstrap-330 .factory-dropdown-and-colors .factory-dropdown-wrap {
|
7 |
-
min-width: 200px;
|
8 |
-
max-width: 300px;
|
9 |
-
}
|
10 |
-
|
11 |
-
/*.factory-bootstrap-330 .factory-from-radio-label, .factory-bootstrap-330 .factory-from-radio-label > span {
|
12 |
-
-webkit-transition: all 0.3s;
|
13 |
-
-moz-transition: all 0.3s;
|
14 |
-
-o-transition: all 0.3s;
|
15 |
-
transition: all 0.3s;
|
16 |
-
}*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/control.fonts.css
DELETED
@@ -1,24 +0,0 @@
|
|
1 |
-
.factory-bootstrap-330 .factory-font .factory-control-row {
|
2 |
-
padding:0;
|
3 |
-
vertical-align: top;
|
4 |
-
}
|
5 |
-
.factory-bootstrap-330 .factory-font .factory-color-wrap {
|
6 |
-
position:static;
|
7 |
-
display:inline-block;
|
8 |
-
vertical-align: top;
|
9 |
-
}
|
10 |
-
.factory-bootstrap-330 .factory-font .factory-size-wrap {
|
11 |
-
display:inline-block;
|
12 |
-
width: 70px;
|
13 |
-
vertical-align: top;
|
14 |
-
}
|
15 |
-
.factory-bootstrap-330 .iris-picker {
|
16 |
-
margin-top: 10px;
|
17 |
-
}
|
18 |
-
.factory-bootstrap-330 .factory-font .factory-family-wrap {
|
19 |
-
padding-bottom: 10px;
|
20 |
-
}
|
21 |
-
|
22 |
-
.factory-bootstrap-330 .factory-font .chosen-results {
|
23 |
-
max-height: 150px;
|
24 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/control.integer.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
|
|
libs/factory/bootstrap/assets/flat/css/control.list.css
DELETED
@@ -1,67 +0,0 @@
|
|
1 |
-
|
2 |
-
.factory-bootstrap-330 .factory-list li input {
|
3 |
-
margin: 0 5px 0 0;
|
4 |
-
position: relative;
|
5 |
-
top: 1px;
|
6 |
-
outline: none !important;
|
7 |
-
}
|
8 |
-
.factory-bootstrap-330 .factory-list li span {
|
9 |
-
vertical-align: bottom;
|
10 |
-
line-height: 100%;
|
11 |
-
}
|
12 |
-
|
13 |
-
/* erorrs */
|
14 |
-
|
15 |
-
.factory-bootstrap-330 .factory-list .factory-error {
|
16 |
-
position: relative;
|
17 |
-
display: inline-block;
|
18 |
-
}
|
19 |
-
.factory-bootstrap-330 .factory-list .factory-error i {
|
20 |
-
color: #f47665;
|
21 |
-
margin: 0 7px 0 1px;
|
22 |
-
cursor: help;
|
23 |
-
}
|
24 |
-
.factory-bootstrap-330 .factory-list .factory-error-text {
|
25 |
-
display: none;
|
26 |
-
position: absolute;
|
27 |
-
width: 300px;
|
28 |
-
}
|
29 |
-
.factory-bootstrap-330 .factory-list .factory-error-text,
|
30 |
-
.factory-bootstrap-330 .factory-list-error {
|
31 |
-
background-color: rgba(0,0,0,0.8);
|
32 |
-
white-space: normal;
|
33 |
-
z-index: 10;
|
34 |
-
padding: 10px 12px 12px 12px;
|
35 |
-
font-weight: normal;
|
36 |
-
line-height: 150%;
|
37 |
-
border-radius: 4px;
|
38 |
-
color: #fff;
|
39 |
-
font-size: 13px;
|
40 |
-
margin-top: 2px;
|
41 |
-
}
|
42 |
-
.factory-bootstrap-330 .factory-list-error {
|
43 |
-
padding: 5px 10px;
|
44 |
-
max-width: 500px;
|
45 |
-
display: inline-block;
|
46 |
-
}
|
47 |
-
.factory-bootstrap-330 .factory-list-error i {
|
48 |
-
margin: 0 7px 0 1px;
|
49 |
-
}
|
50 |
-
.factory-bootstrap-330 .factory-list .factory-error-text a {
|
51 |
-
color: #fff;
|
52 |
-
font-weight: bold;
|
53 |
-
}
|
54 |
-
.factory-bootstrap-330 .factory-list .factory-has-error:hover .factory-error-text {
|
55 |
-
display: block;
|
56 |
-
}
|
57 |
-
.factory-bootstrap-330 .factory-list .factory-has-error {
|
58 |
-
cursor: default;
|
59 |
-
}
|
60 |
-
.opanda-connect-buttons .opanda-has-error .opanda-error {
|
61 |
-
display: inline-block;
|
62 |
-
}
|
63 |
-
|
64 |
-
.factory-bootstrap-330 .factory-checklist-way.factory-empty {
|
65 |
-
font-style: italic;
|
66 |
-
margin-top: 7px;
|
67 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/control.multiple-textbox.css
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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/control.pattern.css
DELETED
@@ -1,187 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* Pattern Control
|
3 |
-
*
|
4 |
-
* @author Alex Kovalev <alex@byonepress.com>
|
5 |
-
* @author Paul Kashtanoff <paul@byonepress.com>
|
6 |
-
* @copyright (c) 2013-2014, OnePress Ltd
|
7 |
-
*
|
8 |
-
* @package factory-forms
|
9 |
-
* @since 3.1.0
|
10 |
-
*/
|
11 |
-
|
12 |
-
.factory-bootstrap-330 .factory-pattern .factory-pattern-controls {
|
13 |
-
vertical-align: middle;
|
14 |
-
}
|
15 |
-
|
16 |
-
/**
|
17 |
-
* Preview
|
18 |
-
*/
|
19 |
-
|
20 |
-
.factory-bootstrap-330 .factory-pattern .factory-preview-wrap {
|
21 |
-
display: inline-block;
|
22 |
-
vertical-align: middle;
|
23 |
-
}
|
24 |
-
.factory-bootstrap-330 .factory-pattern .factory-preview {
|
25 |
-
width: 100px;
|
26 |
-
height: 26px;
|
27 |
-
background:transparent url('../assets/images/color_picker_pattern.jpg') repeat;
|
28 |
-
border:0;
|
29 |
-
border-radius:3px;
|
30 |
-
cursor:pointer;
|
31 |
-
-moz-box-sizing: border-box;
|
32 |
-
box-sizing: border-box;
|
33 |
-
border-bottom: 2px solid rgba(0,0,0,0.34) !important;
|
34 |
-
position: relative;
|
35 |
-
|
36 |
-
}
|
37 |
-
.factory-bootstrap-330 .factory-pattern .factory-preview.factory-empty {
|
38 |
-
background:transparent url('../assets/images/color_picker_pattern.jpg') repeat !important;
|
39 |
-
}
|
40 |
-
|
41 |
-
/**
|
42 |
-
* Preview Arrow
|
43 |
-
*/
|
44 |
-
|
45 |
-
.factory-bootstrap-330 .factory-pattern .factory-preview span {
|
46 |
-
position:absolute;
|
47 |
-
top:0;
|
48 |
-
left:76px;
|
49 |
-
background: #111111;
|
50 |
-
width: 26px;
|
51 |
-
height: 26px;
|
52 |
-
border-radius:0 3px 3px 0;
|
53 |
-
-moz-border-radius:0 3px 3px 0;
|
54 |
-
-webkit-border-radius:0 3px 3px 0;
|
55 |
-
z-index:99;
|
56 |
-
border-bottom: 2px solid #000;
|
57 |
-
}
|
58 |
-
.factory-bootstrap-330 .factory-pattern .factory-preview span:hover {
|
59 |
-
background: #161616;
|
60 |
-
}
|
61 |
-
.factory-bootstrap-330 .factory-pattern .factory-preview span:after {
|
62 |
-
content: '';
|
63 |
-
width: 0;
|
64 |
-
height: 0;
|
65 |
-
border: transparent solid 5px;
|
66 |
-
border-top-color: #96a6a6;
|
67 |
-
position: absolute;
|
68 |
-
top: 10px;
|
69 |
-
right: 7px;
|
70 |
-
z-index: 1;
|
71 |
-
}
|
72 |
-
.factory-bootstrap-330 .factory-pattern.factory-patterns-panel-active .factory-preview span:after {
|
73 |
-
border-top-color: transparent;
|
74 |
-
border-bottom-color: #96a6a6;
|
75 |
-
top: 4px;
|
76 |
-
}
|
77 |
-
|
78 |
-
/**
|
79 |
-
* Color Picker
|
80 |
-
*/
|
81 |
-
|
82 |
-
.factory-bootstrap-330 .factory-pattern .factory-color-panel {
|
83 |
-
padding: 10px;
|
84 |
-
margin-top: 10px;
|
85 |
-
background: rgba(255,255,255,0.04);
|
86 |
-
border-radius: 3px;
|
87 |
-
display: none;
|
88 |
-
}
|
89 |
-
.factory-bootstrap-330 .factory-pattern.factory-color-panel-active .factory-color-panel {
|
90 |
-
display: block;
|
91 |
-
}
|
92 |
-
.factory-bootstrap-330 .factory-pattern .factory-color-label {
|
93 |
-
margin-right: 5px;
|
94 |
-
}
|
95 |
-
.factory-bootstrap-330 .factory-pattern .factory-color-label,
|
96 |
-
.factory-bootstrap-330 .factory-pattern .factory-color {
|
97 |
-
display: inline-block;
|
98 |
-
vertical-align: middle;
|
99 |
-
}
|
100 |
-
.factory-bootstrap-330 .factory-pattern .factory-color-panel .factory-hint {
|
101 |
-
margin-top: 7px;
|
102 |
-
}
|
103 |
-
|
104 |
-
/**
|
105 |
-
* Available Patterns
|
106 |
-
*/
|
107 |
-
|
108 |
-
.factory-bootstrap-330 .factory-pattern .factory-patterns-panel {
|
109 |
-
display: none;
|
110 |
-
margin-top: 10px;
|
111 |
-
padding: 2px 0 0;
|
112 |
-
border-top: 1px solid #272727;
|
113 |
-
overflow: visible;
|
114 |
-
}
|
115 |
-
.factory-bootstrap-330 .factory-pattern .factory-patterns-group {
|
116 |
-
clear: both;
|
117 |
-
padding: 2px 0 0;
|
118 |
-
border-bottom: 1px solid #272727;
|
119 |
-
padding-bottom: 10px;
|
120 |
-
}
|
121 |
-
.factory-bootstrap-330 .factory-pattern .factory-patterns-group-title {
|
122 |
-
margin-top: 10px;
|
123 |
-
}
|
124 |
-
.factory-bootstrap-330 .factory-pattern .factory-patterns-row {
|
125 |
-
padding-top: 10px;
|
126 |
-
}
|
127 |
-
.factory-bootstrap-330 .factory-pattern.factory-patterns-panel-active .factory-patterns-panel {
|
128 |
-
display: block;
|
129 |
-
}
|
130 |
-
.factory-bootstrap-330 .factory-pattern .factory-patterns-item,
|
131 |
-
.factory-bootstrap-330 .factory-pattern .factory-patterns-item div {
|
132 |
-
width: 46px;
|
133 |
-
height: 46px;
|
134 |
-
}
|
135 |
-
.factory-bootstrap-330 .factory-pattern .factory-patterns-item {
|
136 |
-
display: inline-block;
|
137 |
-
cursor: pointer;
|
138 |
-
position: relative;
|
139 |
-
vertical-align: top;
|
140 |
-
}
|
141 |
-
.factory-bootstrap-330 .factory-pattern .factory-patterns-item + .factory-patterns-item {
|
142 |
-
margin-left: 10px;
|
143 |
-
}
|
144 |
-
.factory-bootstrap-330 .factory-pattern .factory-patterns-item div {
|
145 |
-
position: absolute;
|
146 |
-
border-radius: 100%;
|
147 |
-
border: 4px solid #333;
|
148 |
-
}
|
149 |
-
.factory-bootstrap-330 .factory-pattern .factory-patterns-item:hover .factory-pattern-holder {
|
150 |
-
width: 64px;
|
151 |
-
height: 64px;
|
152 |
-
top: -10px;
|
153 |
-
left: -10px;
|
154 |
-
border: 1px solid #333;
|
155 |
-
z-index: 10;
|
156 |
-
}
|
157 |
-
.factory-bootstrap-330 .factory-pattern .factory-no-preview {
|
158 |
-
background: #2f2f2f;
|
159 |
-
line-height: 46px;
|
160 |
-
border-radius: 100%;
|
161 |
-
text-align: center;
|
162 |
-
font-size: 20px;
|
163 |
-
}
|
164 |
-
.factory-bootstrap-330 .factory-pattern .factory-no-preview:hover {
|
165 |
-
background: #333;
|
166 |
-
}
|
167 |
-
|
168 |
-
|
169 |
-
/**
|
170 |
-
* Control Buttons
|
171 |
-
*/
|
172 |
-
|
173 |
-
.factory-bootstrap-330 .factory-pattern .factory-button .fa {
|
174 |
-
font-size: 14px;
|
175 |
-
margin-right: 1px;
|
176 |
-
}
|
177 |
-
.factory-bootstrap-330 .factory-pattern .factory-button span {
|
178 |
-
position: relative;
|
179 |
-
top: -1px;
|
180 |
-
}
|
181 |
-
.factory-bootstrap-330 .factory-pattern .factory-button + .factory-button {
|
182 |
-
margin-left: 3px;
|
183 |
-
}
|
184 |
-
.factory-bootstrap-330 .factory-pattern .factory-change-color-btn {
|
185 |
-
margin-left: 5px;
|
186 |
-
}
|
187 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/control.radio-colors.css
DELETED
@@ -1,39 +0,0 @@
|
|
1 |
-
.factory-bootstrap-330 .factory-from-radio-label, .factory-bootstrap-330 .factory-from-radio-label > span {
|
2 |
-
-webkit-transition: all 0.3s;
|
3 |
-
-moz-transition: all 0.3s;
|
4 |
-
-o-transition: all 0.3s;
|
5 |
-
transition: all 0.3s;
|
6 |
-
}
|
7 |
-
|
8 |
-
.factory-bootstrap-330 .factory-from-radio-label {
|
9 |
-
position: relative;
|
10 |
-
width: 30px;
|
11 |
-
height: 30px;
|
12 |
-
border-radius: 3px;
|
13 |
-
background-color: #fff;
|
14 |
-
border: 1px solid rgba(0, 0, 0, 0.1);
|
15 |
-
}
|
16 |
-
|
17 |
-
.factory-bootstrap-330 .factory-from-radio-label:hover {
|
18 |
-
background-color: #f5f2f2;
|
19 |
-
border: 1px solid rgba(0, 0, 0, 0.2);
|
20 |
-
}
|
21 |
-
|
22 |
-
.factory-bootstrap-330 .factory-from-radio-label > span {
|
23 |
-
display: block;
|
24 |
-
position: absolute;
|
25 |
-
top: 2px;
|
26 |
-
left: 2px;
|
27 |
-
right: 2px;
|
28 |
-
bottom: 2px;
|
29 |
-
text-indent: -9999px;
|
30 |
-
background-color: #fff;
|
31 |
-
}
|
32 |
-
|
33 |
-
.factory-bootstrap-330 .factory-from-radio-label .factory-radio-color:checked + span {
|
34 |
-
border: 5px solid #fff;
|
35 |
-
}
|
36 |
-
|
37 |
-
.factory-bootstrap-330 .factory-radio-color {
|
38 |
-
opacity: 0;
|
39 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/holder.conrol-group.css
DELETED
@@ -1,32 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* jQuery Control gropup holder
|
3 |
-
*/
|
4 |
-
|
5 |
-
.factory-control-group .factory-header {
|
6 |
-
margin-bottom: 7px;
|
7 |
-
display: block;
|
8 |
-
}
|
9 |
-
.factory-control-group-nav {
|
10 |
-
width:284px;
|
11 |
-
margin:10px 8px;
|
12 |
-
}
|
13 |
-
.factory-control-group-nav li{
|
14 |
-
display:inline-block;
|
15 |
-
padding:8px 15px;
|
16 |
-
margin:0;
|
17 |
-
background-color: #444;
|
18 |
-
color:#fff;
|
19 |
-
border-radius:2px;
|
20 |
-
-moz-border-radius:2px;
|
21 |
-
-webkit-border-radius:2px;
|
22 |
-
cursor:pointer;
|
23 |
-
}
|
24 |
-
.factory-control-group-nav li.current{
|
25 |
-
background-color: #222;
|
26 |
-
}
|
27 |
-
.factory-control-group-item {
|
28 |
-
display:none;
|
29 |
-
}
|
30 |
-
.factory-control-group-item.current {
|
31 |
-
display:block;
|
32 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/plugin.chosen.css
DELETED
@@ -1,494 +0,0 @@
|
|
1 |
-
/*!
|
2 |
-
Chosen, a Select Box Enhancer for jQuery and Prototype
|
3 |
-
by Patrick Filler for Harvest, http://getharvest.com
|
4 |
-
|
5 |
-
Version 1.1.0
|
6 |
-
Full source at https://github.com/harvesthq/chosen
|
7 |
-
Copyright (c) 2011 Harvest http://getharvest.com
|
8 |
-
|
9 |
-
MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
|
10 |
-
This file is generated by `grunt build`, do not edit it by hand.
|
11 |
-
*/
|
12 |
-
|
13 |
-
/* @group Base */
|
14 |
-
.chosen-container {
|
15 |
-
position: relative;
|
16 |
-
display: inline-block;
|
17 |
-
vertical-align: middle;
|
18 |
-
font-size: 13px;
|
19 |
-
zoom: 1;
|
20 |
-
*display: inline;
|
21 |
-
-webkit-user-select: none;
|
22 |
-
-moz-user-select: none;
|
23 |
-
user-select: none;
|
24 |
-
}
|
25 |
-
|
26 |
-
.chosen-container .chosen-drop {
|
27 |
-
position: absolute;
|
28 |
-
top: 100%;
|
29 |
-
left: -9999px;
|
30 |
-
z-index: 1010;
|
31 |
-
-webkit-box-sizing: border-box;
|
32 |
-
-moz-box-sizing: border-box;
|
33 |
-
box-sizing: border-box;
|
34 |
-
width: 100%;
|
35 |
-
border: 1px solid #aaa;
|
36 |
-
border-top: 0;
|
37 |
-
background: #fff;
|
38 |
-
box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);
|
39 |
-
}
|
40 |
-
|
41 |
-
.chosen-container.chosen-with-drop .chosen-drop {
|
42 |
-
left: 0;
|
43 |
-
}
|
44 |
-
|
45 |
-
.chosen-container a {
|
46 |
-
cursor: pointer;
|
47 |
-
}
|
48 |
-
|
49 |
-
/* @end */
|
50 |
-
/* @group Single Chosen */
|
51 |
-
.chosen-container-single .chosen-single {
|
52 |
-
position: relative;
|
53 |
-
display: block;
|
54 |
-
overflow: hidden;
|
55 |
-
padding: 0 0 0 8px;
|
56 |
-
height: 23px;
|
57 |
-
border: 1px solid #aaa;
|
58 |
-
border-radius: 5px;
|
59 |
-
background-color: #fff;
|
60 |
-
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #ffffff), color-stop(50%, #f6f6f6), color-stop(52%, #eeeeee), color-stop(100%, #f4f4f4));
|
61 |
-
background: -webkit-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
|
62 |
-
background: -moz-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
|
63 |
-
background: -o-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
|
64 |
-
background: linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
|
65 |
-
background-clip: padding-box;
|
66 |
-
box-shadow: 0 0 3px white inset, 0 1px 1px rgba(0, 0, 0, 0.1);
|
67 |
-
color: #444;
|
68 |
-
text-decoration: none;
|
69 |
-
white-space: nowrap;
|
70 |
-
line-height: 24px;
|
71 |
-
-moz-box-sizing: border-box;
|
72 |
-
box-sizing: border-box;
|
73 |
-
}
|
74 |
-
|
75 |
-
.chosen-container-single .chosen-default {
|
76 |
-
color: #999;
|
77 |
-
}
|
78 |
-
|
79 |
-
.chosen-container-single .chosen-single span {
|
80 |
-
display: block;
|
81 |
-
overflow: hidden;
|
82 |
-
margin-right: 26px;
|
83 |
-
text-overflow: ellipsis;
|
84 |
-
white-space: nowrap;
|
85 |
-
}
|
86 |
-
|
87 |
-
.chosen-container-single .chosen-single-with-deselect span {
|
88 |
-
margin-right: 38px;
|
89 |
-
}
|
90 |
-
|
91 |
-
.chosen-container-single .chosen-single abbr {
|
92 |
-
position: absolute;
|
93 |
-
top: 6px;
|
94 |
-
right: 26px;
|
95 |
-
display: block;
|
96 |
-
width: 12px;
|
97 |
-
height: 12px;
|
98 |
-
background: url('../../images/chosen-sprite.png') -42px 1px no-repeat;
|
99 |
-
font-size: 1px;
|
100 |
-
}
|
101 |
-
|
102 |
-
.chosen-container-single .chosen-single abbr:hover {
|
103 |
-
background-position: -42px -10px;
|
104 |
-
}
|
105 |
-
|
106 |
-
.chosen-container-single.chosen-disabled .chosen-single abbr:hover {
|
107 |
-
background-position: -42px -10px;
|
108 |
-
}
|
109 |
-
|
110 |
-
.chosen-container-single .chosen-single div {
|
111 |
-
position: absolute;
|
112 |
-
top: 0;
|
113 |
-
right: 0;
|
114 |
-
display: block;
|
115 |
-
width: 18px;
|
116 |
-
height: 100%;
|
117 |
-
}
|
118 |
-
|
119 |
-
.chosen-container-single .chosen-single div b {
|
120 |
-
display: block;
|
121 |
-
width: 100%;
|
122 |
-
height: 100%;
|
123 |
-
background: url('../../images/chosen-sprite.png') no-repeat 0px 2px;
|
124 |
-
}
|
125 |
-
|
126 |
-
.chosen-container-single .chosen-search {
|
127 |
-
position: relative;
|
128 |
-
z-index: 1010;
|
129 |
-
margin: 0;
|
130 |
-
padding: 3px 4px;
|
131 |
-
white-space: nowrap;
|
132 |
-
}
|
133 |
-
|
134 |
-
.chosen-container-single .chosen-search input[type="text"] {
|
135 |
-
-webkit-box-sizing: border-box;
|
136 |
-
-moz-box-sizing: border-box;
|
137 |
-
box-sizing: border-box;
|
138 |
-
margin: 1px 0;
|
139 |
-
padding: 4px 20px 4px 5px;
|
140 |
-
width: 100%;
|
141 |
-
height: auto;
|
142 |
-
outline: 0;
|
143 |
-
border: 1px solid #aaa;
|
144 |
-
background: white url('../../images/chosen-sprite.png') no-repeat 100% -20px;
|
145 |
-
font-size: 1em;
|
146 |
-
font-family: sans-serif;
|
147 |
-
line-height: normal;
|
148 |
-
border-radius: 0;
|
149 |
-
}
|
150 |
-
|
151 |
-
.chosen-container-single .chosen-drop {
|
152 |
-
margin-top: -1px;
|
153 |
-
border-radius: 0 0 4px 4px;
|
154 |
-
background-clip: padding-box;
|
155 |
-
}
|
156 |
-
|
157 |
-
.chosen-container-single.chosen-container-single-nosearch .chosen-search {
|
158 |
-
position: absolute;
|
159 |
-
left: -9999px;
|
160 |
-
}
|
161 |
-
|
162 |
-
/* @end */
|
163 |
-
/* @group Results */
|
164 |
-
.chosen-container .chosen-results {
|
165 |
-
position: relative;
|
166 |
-
overflow-x: hidden;
|
167 |
-
overflow-y: auto;
|
168 |
-
margin: 0 4px 4px 0;
|
169 |
-
padding: 0 0 0 4px;
|
170 |
-
max-height: 240px;
|
171 |
-
-webkit-overflow-scrolling: touch;
|
172 |
-
}
|
173 |
-
|
174 |
-
.chosen-container .chosen-results li {
|
175 |
-
display: none;
|
176 |
-
margin: 0;
|
177 |
-
padding: 5px 6px;
|
178 |
-
list-style: none;
|
179 |
-
line-height: 15px;
|
180 |
-
-webkit-touch-callout: none;
|
181 |
-
}
|
182 |
-
|
183 |
-
.chosen-container .chosen-results li.active-result {
|
184 |
-
display: list-item;
|
185 |
-
cursor: pointer;
|
186 |
-
}
|
187 |
-
|
188 |
-
.chosen-container .chosen-results li.disabled-result {
|
189 |
-
display: list-item;
|
190 |
-
color: #ccc;
|
191 |
-
cursor: default;
|
192 |
-
}
|
193 |
-
|
194 |
-
.chosen-container .chosen-results li.highlighted {
|
195 |
-
background-color: #3875d7;
|
196 |
-
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #3875d7), color-stop(90%, #2a62bc));
|
197 |
-
background-image: -webkit-linear-gradient(#3875d7 20%, #2a62bc 90%);
|
198 |
-
background-image: -moz-linear-gradient(#3875d7 20%, #2a62bc 90%);
|
199 |
-
background-image: -o-linear-gradient(#3875d7 20%, #2a62bc 90%);
|
200 |
-
background-image: linear-gradient(#3875d7 20%, #2a62bc 90%);
|
201 |
-
color: #fff;
|
202 |
-
}
|
203 |
-
|
204 |
-
.chosen-container .chosen-results li.no-results {
|
205 |
-
display: list-item;
|
206 |
-
background: #f4f4f4;
|
207 |
-
}
|
208 |
-
|
209 |
-
.chosen-container .chosen-results li.group-result {
|
210 |
-
display: list-item;
|
211 |
-
font-weight: bold;
|
212 |
-
cursor: default;
|
213 |
-
}
|
214 |
-
|
215 |
-
.chosen-container .chosen-results li.group-option {
|
216 |
-
padding-left: 15px;
|
217 |
-
}
|
218 |
-
|
219 |
-
.chosen-container .chosen-results li em {
|
220 |
-
font-style: normal;
|
221 |
-
text-decoration: underline;
|
222 |
-
}
|
223 |
-
|
224 |
-
/* @end */
|
225 |
-
/* @group Multi Chosen */
|
226 |
-
.chosen-container-multi .chosen-choices {
|
227 |
-
position: relative;
|
228 |
-
overflow: hidden;
|
229 |
-
-webkit-box-sizing: border-box;
|
230 |
-
-moz-box-sizing: border-box;
|
231 |
-
box-sizing: border-box;
|
232 |
-
margin: 0;
|
233 |
-
padding: 0;
|
234 |
-
width: 100%;
|
235 |
-
height: auto !important;
|
236 |
-
height: 1%;
|
237 |
-
border: 1px solid #aaa;
|
238 |
-
background-color: #fff;
|
239 |
-
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
|
240 |
-
background-image: -webkit-linear-gradient(#eeeeee 1%, #ffffff 15%);
|
241 |
-
background-image: -moz-linear-gradient(#eeeeee 1%, #ffffff 15%);
|
242 |
-
background-image: -o-linear-gradient(#eeeeee 1%, #ffffff 15%);
|
243 |
-
background-image: linear-gradient(#eeeeee 1%, #ffffff 15%);
|
244 |
-
cursor: text;
|
245 |
-
}
|
246 |
-
|
247 |
-
.chosen-container-multi .chosen-choices li {
|
248 |
-
float: left;
|
249 |
-
list-style: none;
|
250 |
-
}
|
251 |
-
|
252 |
-
.chosen-container-multi .chosen-choices li.search-field {
|
253 |
-
margin: 0;
|
254 |
-
padding: 0;
|
255 |
-
white-space: nowrap;
|
256 |
-
}
|
257 |
-
|
258 |
-
.chosen-container-multi .chosen-choices li.search-field input[type="text"] {
|
259 |
-
margin: 1px 0;
|
260 |
-
padding: 5px;
|
261 |
-
height: 15px;
|
262 |
-
outline: 0;
|
263 |
-
border: 0 !important;
|
264 |
-
background: transparent !important;
|
265 |
-
box-shadow: none;
|
266 |
-
color: #666;
|
267 |
-
font-size: 100%;
|
268 |
-
font-family: sans-serif;
|
269 |
-
line-height: normal;
|
270 |
-
border-radius: 0;
|
271 |
-
}
|
272 |
-
|
273 |
-
.chosen-container-multi .chosen-choices li.search-field .default {
|
274 |
-
color: #999;
|
275 |
-
}
|
276 |
-
|
277 |
-
.chosen-container-multi .chosen-choices li.search-choice {
|
278 |
-
position: relative;
|
279 |
-
margin: 3px 0 3px 5px;
|
280 |
-
padding: 3px 20px 3px 5px;
|
281 |
-
border: 1px solid #aaa;
|
282 |
-
border-radius: 3px;
|
283 |
-
background-color: #e4e4e4;
|
284 |
-
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
|
285 |
-
background-image: -webkit-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
|
286 |
-
background-image: -moz-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
|
287 |
-
background-image: -o-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
|
288 |
-
background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
|
289 |
-
background-clip: padding-box;
|
290 |
-
box-shadow: 0 0 2px white inset, 0 1px 0 rgba(0, 0, 0, 0.05);
|
291 |
-
color: #333;
|
292 |
-
line-height: 13px;
|
293 |
-
cursor: default;
|
294 |
-
}
|
295 |
-
|
296 |
-
.chosen-container-multi .chosen-choices li.search-choice .search-choice-close {
|
297 |
-
position: absolute;
|
298 |
-
top: 4px;
|
299 |
-
right: 3px;
|
300 |
-
display: block;
|
301 |
-
width: 12px;
|
302 |
-
height: 12px;
|
303 |
-
background: url('../../images/chosen-sprite.png') -42px 1px no-repeat;
|
304 |
-
font-size: 1px;
|
305 |
-
}
|
306 |
-
|
307 |
-
.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover {
|
308 |
-
background-position: -42px -10px;
|
309 |
-
}
|
310 |
-
|
311 |
-
.chosen-container-multi .chosen-choices li.search-choice-disabled {
|
312 |
-
padding-right: 5px;
|
313 |
-
border: 1px solid #ccc;
|
314 |
-
background-color: #e4e4e4;
|
315 |
-
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
|
316 |
-
background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
|
317 |
-
background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
|
318 |
-
background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
|
319 |
-
background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
|
320 |
-
color: #666;
|
321 |
-
}
|
322 |
-
|
323 |
-
.chosen-container-multi .chosen-choices li.search-choice-focus {
|
324 |
-
background: #d4d4d4;
|
325 |
-
}
|
326 |
-
|
327 |
-
.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close {
|
328 |
-
background-position: -42px -10px;
|
329 |
-
}
|
330 |
-
|
331 |
-
.chosen-container-multi .chosen-results {
|
332 |
-
margin: 0;
|
333 |
-
padding: 0;
|
334 |
-
}
|
335 |
-
|
336 |
-
.chosen-container-multi .chosen-drop .result-selected {
|
337 |
-
display: list-item;
|
338 |
-
color: #ccc;
|
339 |
-
cursor: default;
|
340 |
-
}
|
341 |
-
|
342 |
-
/* @end */
|
343 |
-
/* @group Active */
|
344 |
-
.chosen-container-active .chosen-single {
|
345 |
-
border: 1px solid #5897fb;
|
346 |
-
box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
|
347 |
-
}
|
348 |
-
|
349 |
-
.chosen-container-active.chosen-with-drop .chosen-single {
|
350 |
-
border: 1px solid #aaa;
|
351 |
-
-moz-border-radius-bottomright: 0;
|
352 |
-
border-bottom-right-radius: 0;
|
353 |
-
-moz-border-radius-bottomleft: 0;
|
354 |
-
border-bottom-left-radius: 0;
|
355 |
-
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #eeeeee), color-stop(80%, #ffffff));
|
356 |
-
background-image: -webkit-linear-gradient(#eeeeee 20%, #ffffff 80%);
|
357 |
-
background-image: -moz-linear-gradient(#eeeeee 20%, #ffffff 80%);
|
358 |
-
background-image: -o-linear-gradient(#eeeeee 20%, #ffffff 80%);
|
359 |
-
background-image: linear-gradient(#eeeeee 20%, #ffffff 80%);
|
360 |
-
box-shadow: 0 1px 0 #fff inset;
|
361 |
-
}
|
362 |
-
|
363 |
-
.chosen-container-active.chosen-with-drop .chosen-single div {
|
364 |
-
border-left: none;
|
365 |
-
background: transparent;
|
366 |
-
}
|
367 |
-
|
368 |
-
.chosen-container-active.chosen-with-drop .chosen-single div b {
|
369 |
-
background-position: -18px 2px;
|
370 |
-
}
|
371 |
-
|
372 |
-
.chosen-container-active .chosen-choices {
|
373 |
-
border: 1px solid #5897fb;
|
374 |
-
box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
|
375 |
-
}
|
376 |
-
|
377 |
-
.chosen-container-active .chosen-choices li.search-field input[type="text"] {
|
378 |
-
color: #111 !important;
|
379 |
-
}
|
380 |
-
|
381 |
-
/* @end */
|
382 |
-
/* @group Disabled Support */
|
383 |
-
.chosen-disabled {
|
384 |
-
opacity: 0.5 !important;
|
385 |
-
cursor: default;
|
386 |
-
}
|
387 |
-
|
388 |
-
.chosen-disabled .chosen-single {
|
389 |
-
cursor: default;
|
390 |
-
}
|
391 |
-
|
392 |
-
.chosen-disabled .chosen-choices .search-choice .search-choice-close {
|
393 |
-
cursor: default;
|
394 |
-
}
|
395 |
-
|
396 |
-
/* @end */
|
397 |
-
/* @group Right to Left */
|
398 |
-
.chosen-rtl {
|
399 |
-
text-align: right;
|
400 |
-
}
|
401 |
-
|
402 |
-
.chosen-rtl .chosen-single {
|
403 |
-
overflow: visible;
|
404 |
-
padding: 0 8px 0 0;
|
405 |
-
}
|
406 |
-
|
407 |
-
.chosen-rtl .chosen-single span {
|
408 |
-
margin-right: 0;
|
409 |
-
margin-left: 26px;
|
410 |
-
direction: rtl;
|
411 |
-
}
|
412 |
-
|
413 |
-
.chosen-rtl .chosen-single-with-deselect span {
|
414 |
-
margin-left: 38px;
|
415 |
-
}
|
416 |
-
|
417 |
-
.chosen-rtl .chosen-single div {
|
418 |
-
right: auto;
|
419 |
-
left: 3px;
|
420 |
-
}
|
421 |
-
|
422 |
-
.chosen-rtl .chosen-single abbr {
|
423 |
-
right: auto;
|
424 |
-
left: 26px;
|
425 |
-
}
|
426 |
-
|
427 |
-
.chosen-rtl .chosen-choices li {
|
428 |
-
float: right;
|
429 |
-
}
|
430 |
-
|
431 |
-
.chosen-rtl .chosen-choices li.search-field input[type="text"] {
|
432 |
-
direction: rtl;
|
433 |
-
}
|
434 |
-
|
435 |
-
.chosen-rtl .chosen-choices li.search-choice {
|
436 |
-
margin: 3px 5px 3px 0;
|
437 |
-
padding: 3px 5px 3px 19px;
|
438 |
-
}
|
439 |
-
|
440 |
-
.chosen-rtl .chosen-choices li.search-choice .search-choice-close {
|
441 |
-
right: auto;
|
442 |
-
left: 4px;
|
443 |
-
}
|
444 |
-
|
445 |
-
.chosen-rtl.chosen-container-single-nosearch .chosen-search,
|
446 |
-
.chosen-rtl .chosen-drop {
|
447 |
-
left: 9999px;
|
448 |
-
}
|
449 |
-
|
450 |
-
.chosen-rtl.chosen-container-single .chosen-results {
|
451 |
-
margin: 0 0 4px 4px;
|
452 |
-
padding: 0 4px 0 0;
|
453 |
-
}
|
454 |
-
|
455 |
-
.chosen-rtl .chosen-results li.group-option {
|
456 |
-
padding-right: 15px;
|
457 |
-
padding-left: 0;
|
458 |
-
}
|
459 |
-
|
460 |
-
.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div {
|
461 |
-
border-right: none;
|
462 |
-
}
|
463 |
-
|
464 |
-
.chosen-rtl .chosen-search input[type="text"] {
|
465 |
-
padding: 4px 5px 4px 20px;
|
466 |
-
background: white url('../../images/chosen-sprite.png') no-repeat -30px -20px;
|
467 |
-
direction: rtl;
|
468 |
-
}
|
469 |
-
|
470 |
-
.chosen-rtl.chosen-container-single .chosen-single div b {
|
471 |
-
background-position: 6px 2px;
|
472 |
-
}
|
473 |
-
|
474 |
-
.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b {
|
475 |
-
background-position: -12px 2px;
|
476 |
-
}
|
477 |
-
|
478 |
-
/* @end */
|
479 |
-
/* @group Retina compatibility */
|
480 |
-
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-resolution: 144dpi) {
|
481 |
-
.chosen-rtl .chosen-search input[type="text"],
|
482 |
-
.chosen-container-single .chosen-single abbr,
|
483 |
-
.chosen-container-single .chosen-single div b,
|
484 |
-
.chosen-container-single .chosen-search input[type="text"],
|
485 |
-
.chosen-container-multi .chosen-choices .search-choice .search-choice-close,
|
486 |
-
.chosen-container .chosen-results-scroll-down span,
|
487 |
-
.chosen-container .chosen-results-scroll-up span {
|
488 |
-
background-image: url('../../images/chosen-sprite@2x.png') !important;
|
489 |
-
background-size: 52px 37px !important;
|
490 |
-
background-repeat: no-repeat !important;
|
491 |
-
}
|
492 |
-
}
|
493 |
-
|
494 |
-
/* @end */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/plugin.gradient-picker.css
DELETED
@@ -1,149 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* jQuery gradient generator
|
3 |
-
*/
|
4 |
-
.factory-bootstrap-330 .factory-gradient-picker-wrap {
|
5 |
-
margin-bottom: 20px;
|
6 |
-
}
|
7 |
-
|
8 |
-
.factory-bootstrap-330 .gradientPicker-preview {
|
9 |
-
width: 100%;
|
10 |
-
height: 30px;
|
11 |
-
border-radius: 3px;
|
12 |
-
background: transparent url('../../images/color_picker_pattern.jpg') repeat;
|
13 |
-
}
|
14 |
-
|
15 |
-
.factory-bootstrap-330 .factory-color-picker-container {
|
16 |
-
display: none;
|
17 |
-
padding-top: 15px;
|
18 |
-
}
|
19 |
-
|
20 |
-
.factory-bootstrap-330 .factory-point,
|
21 |
-
.factory-bootstrap-330 .factory-point-color {
|
22 |
-
position: absolute;
|
23 |
-
width: 10px;
|
24 |
-
height: 10px;
|
25 |
-
border: 0;
|
26 |
-
font-size: 0;
|
27 |
-
border-radius: 50% 50% 100% 100%;
|
28 |
-
-moz-border-radius: 50% 50% 100% 100%;
|
29 |
-
-webkit-border-radius: 50% 50% 100% 100%;
|
30 |
-
cursor: pointer;
|
31 |
-
overflow: hidden;
|
32 |
-
}
|
33 |
-
|
34 |
-
.factory-bootstrap-330 .factory-point-color {
|
35 |
-
border-radius: 0px;
|
36 |
-
}
|
37 |
-
|
38 |
-
.factory-bootstrap-330 .factory-point {
|
39 |
-
background: transparent url('../../images/color_picker_pattern.jpg') repeat;
|
40 |
-
}
|
41 |
-
|
42 |
-
.factory-bootstrap-330 .factory-current-point {
|
43 |
-
-ms-transform: rotate(180deg);
|
44 |
-
-webkit-transform: rotate(180deg);
|
45 |
-
transform: rotate(180deg);
|
46 |
-
}
|
47 |
-
|
48 |
-
.factory-bootstrap-330 .factory-points {
|
49 |
-
position: relative;
|
50 |
-
height: 10px;
|
51 |
-
width: 100%;
|
52 |
-
cursor: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ1JREFUeNq8VAEKwCAITOn%2FX3ZzTBCxUicTBsvsOO9EIKJhAwCe5H0H4xBvLQgOegV8yZ8AZwJHc8zKI4c53bk6IGNqMH3GCJuMlkeG4p4G1e5Lq1KXatmCM7AdrbLLq7FC0agycx7oXOmk8%2FY%2FPNjRR7s6ZFHFqY5AcasLFDPtpAC7WH7aNkxgO9gdLNv3oWdKiKXX7r8bu6rlJcAA9ZRfMt5oHoIAAAAASUVORK5CYII%3D') 5 0, pointer;
|
53 |
-
}
|
54 |
-
|
55 |
-
.factory-bootstrap-330 .gradientPicker-iris-wrap {
|
56 |
-
display: none;
|
57 |
-
position: absolute;
|
58 |
-
left: 0;
|
59 |
-
top: 78px;
|
60 |
-
width: 212px;
|
61 |
-
height: 212px;
|
62 |
-
background: #111;
|
63 |
-
border: 1px solid #222;
|
64 |
-
border-radius: 5px;
|
65 |
-
-moz-border-radius: 5px;
|
66 |
-
-webkit-border-radius: 5px;
|
67 |
-
z-index: 9999;
|
68 |
-
|
69 |
-
}
|
70 |
-
|
71 |
-
.factory-bootstrap-330 .gradientPicker-iris-wrap .iris-border, .factory-bootstrap-330 .gradientPicker-iris-wrap .iris-picker {
|
72 |
-
border: 0;
|
73 |
-
background: #111;
|
74 |
-
}
|
75 |
-
|
76 |
-
/* Preset Gradients */
|
77 |
-
|
78 |
-
.factory-bootstrap-330 .gradientPicker-pallets {
|
79 |
-
padding: 8px 0px 3px 0px;
|
80 |
-
margin-bottom: 10px;
|
81 |
-
border-bottom: 1px solid #323232;
|
82 |
-
border-top: 1px solid #323232;
|
83 |
-
font-size: 0px;
|
84 |
-
line-height: 0px;
|
85 |
-
text-align: center;
|
86 |
-
}
|
87 |
-
|
88 |
-
.factory-bootstrap-330 .factory-preset-gradient,
|
89 |
-
.factory-bootstrap-330 .factory-secondary-color {
|
90 |
-
width: 22px;
|
91 |
-
height: 22px;
|
92 |
-
border-radius: 100%;
|
93 |
-
}
|
94 |
-
|
95 |
-
.factory-bootstrap-330 .factory-preset-gradient {
|
96 |
-
display: inline-block;
|
97 |
-
cursor: pointer;
|
98 |
-
margin-bottom: 3px;
|
99 |
-
position: relative;
|
100 |
-
}
|
101 |
-
|
102 |
-
.factory-bootstrap-330 .factory-preset-gradient:hover {
|
103 |
-
opacity: 0.9;
|
104 |
-
}
|
105 |
-
|
106 |
-
.factory-bootstrap-330 .factory-preset-gradient + .factory-preset-gradient {
|
107 |
-
margin-left: 5px;
|
108 |
-
}
|
109 |
-
|
110 |
-
.factory-bootstrap-330 .factory-secondary-color-wrap {
|
111 |
-
width: 11px;
|
112 |
-
height: 22px;
|
113 |
-
position: absolute;
|
114 |
-
overflow: hidden;
|
115 |
-
right: 0px;
|
116 |
-
}
|
117 |
-
|
118 |
-
.factory-bootstrap-330 .factory-secondary-color {
|
119 |
-
position: absolute;
|
120 |
-
left: -11px;
|
121 |
-
background-color: red;
|
122 |
-
}
|
123 |
-
|
124 |
-
.factory-bootstrap-330 .gradientPicker-filldirection {
|
125 |
-
width: 200px;
|
126 |
-
margin-top: 5px;
|
127 |
-
}
|
128 |
-
|
129 |
-
.factory-bootstrap-330 .gradientPicker-ptConfig .color-chooser {
|
130 |
-
float: left;
|
131 |
-
}
|
132 |
-
|
133 |
-
/**
|
134 |
-
* Color
|
135 |
-
*/
|
136 |
-
|
137 |
-
.factory-bootstrap-330 .factory-color-picker-container .factory-slider {
|
138 |
-
padding-left: 75px;
|
139 |
-
padding-right: 60px;
|
140 |
-
position: relative;
|
141 |
-
}
|
142 |
-
|
143 |
-
.factory-bootstrap-330 .factory-color-picker-container .factory-color-hex {
|
144 |
-
top: 0;
|
145 |
-
left: 0;
|
146 |
-
position: absolute;
|
147 |
-
width: 65px;
|
148 |
-
}
|
149 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/flat/css/plugin.nouislider.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
.noUi-target,.noUi-target *{-webkit-touch-callout:none;-webkit-user-select:none;-ms-touch-action:none;-ms-user-select:none;-moz-user-select:none;-moz-box-sizing:border-box;box-sizing:border-box}.noUi-base{width:100%;height:100%;position:relative}.noUi-origin{position:absolute;right:0;top:0;left:0;bottom:0}.noUi-handle{position:relative;z-index:1}.noUi-stacking .noUi-handle{z-index:10}.noUi-stacking+.noUi-origin{*z-index:-1}.noUi-state-tap .noUi-origin{-webkit-transition:left .3s,top .3s;transition:left .3s,top .3s}.noUi-state-drag *{cursor:inherit!important}.noUi-horizontal{height:18px}.noUi-horizontal .noUi-handle{width:34px;height:28px;left:-17px;top:-6px}.noUi-horizontal.noUi-extended{padding:0 15px}.noUi-horizontal.noUi-extended .noUi-origin{right:-15px}.noUi-vertical{width:18px}.noUi-vertical .noUi-handle{width:28px;height:34px;left:-6px;top:-17px}.noUi-vertical.noUi-extended{padding:15px 0}.noUi-vertical.noUi-extended .noUi-origin{bottom:-15px}.noUi-background{background:#FAFAFA;box-shadow:inset 0 1px 1px #f0f0f0}.noUi-connect{background:#3FB8AF;box-shadow:inset 0 0 3px rgba(51,51,51,.45);-webkit-transition:background 450ms;transition:background 450ms}.noUi-origin{border-radius:2px}.noUi-target{border-radius:4px;border:1px solid #D3D3D3;box-shadow:inset 0 1px 1px #F0F0F0,0 3px 6px -5px #BBB}.noUi-target.noUi-connect{box-shadow:inset 0 0 3px rgba(51,51,51,.45),0 3px 6px -5px #BBB}.noUi-dragable{cursor:w-resize}.noUi-vertical .noUi-dragable{cursor:n-resize}.noUi-handle{border:1px solid #D9D9D9;border-radius:3px;background:#FFF;cursor:default;box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #EBEBEB,0 3px 6px -3px #BBB}.noUi-active{box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #DDD,0 3px 6px -3px #BBB}.noUi-handle:after,.noUi-handle:before{content:"";display:block;position:absolute;height:14px;width:1px;background:#E8E7E6;left:14px;top:6px}.noUi-handle:after{left:17px}.noUi-vertical .noUi-handle:after,.noUi-vertical .noUi-handle:before{width:14px;height:1px;left:6px;top:14px}.noUi-vertical .noUi-handle:after{top:17px}[disabled] .noUi-connect,[disabled].noUi-connect{background:#B8B8B8}[disabled] .noUi-handle{cursor:not-allowed}
|
|
libs/factory/bootstrap/assets/flat/css/plugin.paddings-editor.css
DELETED
@@ -1,109 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* jQuery Paddings
|
3 |
-
*
|
4 |
-
* @uses plugin.nouislider
|
5 |
-
*/
|
6 |
-
|
7 |
-
.factory-bootstrap-330 .factory-paddings-editor {
|
8 |
-
padding-left: 135px;
|
9 |
-
height: 90px;
|
10 |
-
position: relative;
|
11 |
-
}
|
12 |
-
|
13 |
-
.factory-bootstrap-330 .factory-paddings-editor .factory-rectangle {
|
14 |
-
width: 120px;
|
15 |
-
height: 90px;
|
16 |
-
border-radius: 10px;
|
17 |
-
background-color: #a6b6b6;
|
18 |
-
position: relative;
|
19 |
-
overflow: hidden;
|
20 |
-
cursor: pointer;
|
21 |
-
-moz-box-sizing: content-box;
|
22 |
-
box-sizing: content-box;
|
23 |
-
position: absolute;
|
24 |
-
top: 0px;
|
25 |
-
left: 0px;
|
26 |
-
}
|
27 |
-
.factory-bootstrap-330 .factory-paddings-editor .factory-side {
|
28 |
-
width: 100%;
|
29 |
-
height: 100%;
|
30 |
-
position: absolute;
|
31 |
-
}
|
32 |
-
|
33 |
-
|
34 |
-
.factory-bootstrap-330 .factory-paddings-editor .factory-side-center {
|
35 |
-
width: 30px;
|
36 |
-
height: 30px;
|
37 |
-
border-radius: 100%;
|
38 |
-
background-color: #bac9c9;
|
39 |
-
position: absolute;
|
40 |
-
top: 30px;
|
41 |
-
left: 45px;
|
42 |
-
-moz-box-sizing: content-box;
|
43 |
-
box-sizing: content-box;
|
44 |
-
}
|
45 |
-
.factory-bootstrap-330 .factory-paddings-editor .factory-side-center:hover {
|
46 |
-
background-color: #c0cece;
|
47 |
-
}
|
48 |
-
.factory-bootstrap-330 .factory-paddings-editor .factory-side-center.factory-active {
|
49 |
-
background-color: #829595;
|
50 |
-
}
|
51 |
-
|
52 |
-
.factory-bootstrap-330 .factory-paddings-editor .factory-side-top {
|
53 |
-
height: 30px; /* = ( rectangle_height - center_button_height ) / 2 */
|
54 |
-
top: 0px;
|
55 |
-
left: 0px;
|
56 |
-
}
|
57 |
-
.factory-bootstrap-330 .factory-paddings-editor .factory-side-right {
|
58 |
-
width: 45px; /* = ( rectangle_width - center_button_width ) / 2 */
|
59 |
-
top: 0px;
|
60 |
-
right: 0px;
|
61 |
-
}
|
62 |
-
.factory-bootstrap-330 .factory-paddings-editor .factory-side-bottom {
|
63 |
-
height: 30px; /* = ( rectangle_height - center_button_height ) / 2 */
|
64 |
-
bottom: 0px;
|
65 |
-
left: 0px;
|
66 |
-
}
|
67 |
-
.factory-bootstrap-330 .factory-paddings-editor .factory-side-left {
|
68 |
-
width: 45px; /* = ( rectangle_width - center_button_width ) / 2 */
|
69 |
-
top: 0px;
|
70 |
-
left: 0px;
|
71 |
-
}
|
72 |
-
|
73 |
-
.factory-bootstrap-330 .factory-paddings-editor .factory-rectangle .factory-visible-value {
|
74 |
-
color: #1b1f1f;
|
75 |
-
background-color: rgba(255,255,255,0.3);
|
76 |
-
border-radius: 3px;
|
77 |
-
padding: 2px;
|
78 |
-
line-height: 13px;
|
79 |
-
display: inline-block;
|
80 |
-
}
|
81 |
-
.factory-bootstrap-330 .factory-paddings-editor .factory-rectangle .factory-side.factory-active .factory-visible-value {
|
82 |
-
background-color: rgba(255,255,255,0.3);
|
83 |
-
border-radius: 3px;
|
84 |
-
padding: 2px;
|
85 |
-
line-height: 13px;
|
86 |
-
display: inline-block;
|
87 |
-
}
|
88 |
-
.factory-bootstrap-330 .factory-paddings-editor .factory-visible-value em {
|
89 |
-
font-style: normal;
|
90 |
-
}
|
91 |
-
|
92 |
-
.factory-bootstrap-330 .factory-paddings-editor .factory-side-top,
|
93 |
-
.factory-bootstrap-330 .factory-paddings-editor .factory-side-bottom {
|
94 |
-
text-align: center;
|
95 |
-
line-height: 30px; /* = side_height */
|
96 |
-
}
|
97 |
-
.factory-bootstrap-330 .factory-paddings-editor .factory-side-left,
|
98 |
-
.factory-bootstrap-330 .factory-paddings-editor .factory-side-right {
|
99 |
-
line-height: 90px; /* = side_height */
|
100 |
-
text-align: center;
|
101 |
-
}
|
102 |
-
|
103 |
-
.factory-bootstrap-330 .factory-paddings-editor .factory-slider-container {
|
104 |
-
font-style: italic;
|
105 |
-
}
|
106 |
-
.factory-bootstrap-330 .factory-paddings-editor .factory-slider {
|
107 |
-
padding-right: 0px;
|
108 |
-
margin-top: 7px
|
109 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/images/chosen-sprite.png
DELETED
Binary file
|
libs/factory/bootstrap/assets/images/chosen-sprite@2x.png
DELETED
Binary file
|
libs/factory/bootstrap/assets/images/color_picker_pattern.jpg
DELETED
Binary file
|
libs/factory/bootstrap/assets/images/drop-menu_arrow.png
DELETED
Binary file
|
libs/factory/bootstrap/assets/images/no-pattern-background-control.png
DELETED
Binary file
|
libs/factory/bootstrap/assets/js/bootstrap.accordion.js
DELETED
@@ -1,49 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* Light Weight jQuery Accordions
|
3 |
-
*/
|
4 |
-
|
5 |
-
;(function ( $, window, document, undefined ) {
|
6 |
-
"use strict"; // jshint ;_;
|
7 |
-
|
8 |
-
$.fn.factoryBootstrap330_accordion = function(){
|
9 |
-
return this.each(function () {
|
10 |
-
var $self = $(this);
|
11 |
-
var startAnimation = false;
|
12 |
-
|
13 |
-
$('.'+$self.attr('class')+' > div:first').show();
|
14 |
-
$('.'+$self.attr('class')+' > div:first')
|
15 |
-
.add('.'+$self.attr('class')+' > h3:first')
|
16 |
-
.addClass('active');
|
17 |
-
|
18 |
-
$('.'+$self.attr('class')+' > h3').on('click', function() {
|
19 |
-
var selfOn = $(this);
|
20 |
-
var target = selfOn.next();
|
21 |
-
|
22 |
-
if(!selfOn.hasClass('active') && !startAnimation){
|
23 |
-
startAnimation = true;
|
24 |
-
selfOn.parent().children('div').slideUp(500);
|
25 |
-
|
26 |
-
$('.'+$self.attr('class')+' > h3').removeClass('active');
|
27 |
-
selfOn.addClass('active');
|
28 |
-
target.addClass('active').slideDown({
|
29 |
-
duration: 500,
|
30 |
-
complete: function(){
|
31 |
-
startAnimation = false;
|
32 |
-
$self.trigger('shown.bs.accordion', [selfOn]);
|
33 |
-
},
|
34 |
-
progress: function() {
|
35 |
-
$self.trigger('progress.bs.accordion', [selfOn]);
|
36 |
-
}
|
37 |
-
});
|
38 |
-
}
|
39 |
-
|
40 |
-
return false;
|
41 |
-
});
|
42 |
-
});
|
43 |
-
}
|
44 |
-
|
45 |
-
$(function(){
|
46 |
-
$('.factory-bootstrap-330 .factory-accordion').factoryBootstrap330_accordion();
|
47 |
-
});
|
48 |
-
|
49 |
-
})( jQuery, window, document );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/bootstrap.affix.js
DELETED
@@ -1,127 +0,0 @@
|
|
1 |
-
|
2 |
-
/* ========================================================================
|
3 |
-
* Bootstrap: affix.js v3.0.3
|
4 |
-
* http://getbootstrap.com/javascript/#affix
|
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 |
-
|
22 |
-
+function ($) { "use strict";
|
23 |
-
|
24 |
-
// AFFIX CLASS DEFINITION
|
25 |
-
// ======================
|
26 |
-
|
27 |
-
var Affix = function (element, options) {
|
28 |
-
this.options = $.extend({}, Affix.DEFAULTS, options)
|
29 |
-
this.$window = $(window)
|
30 |
-
.on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
|
31 |
-
.on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
|
32 |
-
|
33 |
-
this.$element = $(element)
|
34 |
-
this.affixed =
|
35 |
-
this.unpin = null
|
36 |
-
|
37 |
-
this.checkPosition()
|
38 |
-
}
|
39 |
-
|
40 |
-
Affix.RESET = 'affix affix-top affix-bottom'
|
41 |
-
|
42 |
-
Affix.DEFAULTS = {
|
43 |
-
offset: 0
|
44 |
-
}
|
45 |
-
|
46 |
-
Affix.prototype.checkPositionWithEventLoop = function () {
|
47 |
-
setTimeout($.proxy(this.checkPosition, this), 1)
|
48 |
-
}
|
49 |
-
|
50 |
-
Affix.prototype.checkPosition = function () {
|
51 |
-
if (!this.$element.is(':visible')) return
|
52 |
-
|
53 |
-
var scrollHeight = $(document).height()
|
54 |
-
var scrollTop = this.$window.scrollTop()
|
55 |
-
var position = this.$element.offset()
|
56 |
-
var offset = this.options.offset
|
57 |
-
var offsetTop = offset.top
|
58 |
-
var offsetBottom = offset.bottom
|
59 |
-
|
60 |
-
if (typeof offset != 'object') offsetBottom = offsetTop = offset
|
61 |
-
if (typeof offsetTop == 'function') offsetTop = offset.top()
|
62 |
-
if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
|
63 |
-
|
64 |
-
var affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? false :
|
65 |
-
offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :
|
66 |
-
offsetTop != null && (scrollTop <= offsetTop) ? 'top' : false
|
67 |
-
|
68 |
-
if (this.affixed === affix) return
|
69 |
-
if (this.unpin) this.$element.css('top', '')
|
70 |
-
|
71 |
-
this.affixed = affix
|
72 |
-
this.unpin = affix == 'bottom' ? position.top - scrollTop : null
|
73 |
-
|
74 |
-
this.$element.removeClass(Affix.RESET).addClass('affix' + (affix ? '-' + affix : ''))
|
75 |
-
|
76 |
-
if (affix == 'bottom') {
|
77 |
-
this.$element.offset({ top: document.body.offsetHeight - offsetBottom - this.$element.height() })
|
78 |
-
}
|
79 |
-
}
|
80 |
-
|
81 |
-
|
82 |
-
// AFFIX PLUGIN DEFINITION
|
83 |
-
// =======================
|
84 |
-
|
85 |
-
var old = $.fn.affix
|
86 |
-
|
87 |
-
$.fn.affix = function (option) {
|
88 |
-
return this.each(function () {
|
89 |
-
var $this = $(this)
|
90 |
-
var data = $this.data('bs.affix')
|
91 |
-
var options = typeof option == 'object' && option
|
92 |
-
|
93 |
-
if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
|
94 |
-
if (typeof option == 'string') data[option]()
|
95 |
-
})
|
96 |
-
}
|
97 |
-
|
98 |
-
$.fn.affix.Constructor = Affix
|
99 |
-
|
100 |
-
|
101 |
-
// AFFIX NO CONFLICT
|
102 |
-
// =================
|
103 |
-
|
104 |
-
$.fn.affix.noConflict = function () {
|
105 |
-
$.fn.affix = old
|
106 |
-
return this
|
107 |
-
}
|
108 |
-
|
109 |
-
|
110 |
-
// AFFIX DATA-API
|
111 |
-
// ==============
|
112 |
-
|
113 |
-
$(window).on('load', function () {
|
114 |
-
$('[data-spy="affix"]').each(function () {
|
115 |
-
var $spy = $(this)
|
116 |
-
var data = $spy.data()
|
117 |
-
|
118 |
-
data.offset = data.offset || {}
|
119 |
-
|
120 |
-
if (data.offsetBottom) data.offset.bottom = data.offsetBottom
|
121 |
-
if (data.offsetTop) data.offset.top = data.offsetTop
|
122 |
-
|
123 |
-
$spy.affix(data)
|
124 |
-
})
|
125 |
-
})
|
126 |
-
|
127 |
-
}(jQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/bootstrap.alert.js
DELETED
@@ -1,98 +0,0 @@
|
|
1 |
-
/* ========================================================================
|
2 |
-
* Bootstrap: alert.js v3.0.3
|
3 |
-
* http://getbootstrap.com/javascript/#alerts
|
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 |
-
// ALERT CLASS DEFINITION
|
24 |
-
// ======================
|
25 |
-
|
26 |
-
var dismiss = '[data-dismiss="alert"]'
|
27 |
-
var Alert = function (el) {
|
28 |
-
$(el).on('click', dismiss, this.close)
|
29 |
-
}
|
30 |
-
|
31 |
-
Alert.prototype.close = function (e) {
|
32 |
-
var $this = $(this)
|
33 |
-
var selector = $this.attr('data-target')
|
34 |
-
|
35 |
-
if (!selector) {
|
36 |
-
selector = $this.attr('href')
|
37 |
-
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
|
38 |
-
}
|
39 |
-
|
40 |
-
var $parent = $(selector)
|
41 |
-
|
42 |
-
if (e) e.preventDefault()
|
43 |
-
|
44 |
-
if (!$parent.length) {
|
45 |
-
$parent = $this.hasClass('alert') ? $this : $this.parent()
|
46 |
-
}
|
47 |
-
|
48 |
-
$parent.trigger(e = $.Event('close.bs.alert'))
|
49 |
-
|
50 |
-
if (e.isDefaultPrevented()) return
|
51 |
-
|
52 |
-
$parent.removeClass('in')
|
53 |
-
|
54 |
-
function removeElement() {
|
55 |
-
$parent.trigger('closed.bs.alert').remove()
|
56 |
-
}
|
57 |
-
|
58 |
-
$.support.transition && $parent.hasClass('fade') ?
|
59 |
-
$parent
|
60 |
-
.one($.support.transition.end, removeElement)
|
61 |
-
.emulateTransitionEnd(150) :
|
62 |
-
removeElement()
|
63 |
-
}
|
64 |
-
|
65 |
-
|
66 |
-
// ALERT PLUGIN DEFINITION
|
67 |
-
// =======================
|
68 |
-
|
69 |
-
var old = $.fn.alert
|
70 |
-
|
71 |
-
$.fn.alert = function (option) {
|
72 |
-
return this.each(function () {
|
73 |
-
var $this = $(this)
|
74 |
-
var data = $this.data('bs.alert')
|
75 |
-
|
76 |
-
if (!data) $this.data('bs.alert', (data = new Alert(this)))
|
77 |
-
if (typeof option == 'string') data[option].call($this)
|
78 |
-
})
|
79 |
-
}
|
80 |
-
|
81 |
-
$.fn.alert.Constructor = Alert
|
82 |
-
|
83 |
-
|
84 |
-
// ALERT NO CONFLICT
|
85 |
-
// =================
|
86 |
-
|
87 |
-
$.fn.alert.noConflict = function () {
|
88 |
-
$.fn.alert = old
|
89 |
-
return this
|
90 |
-
}
|
91 |
-
|
92 |
-
|
93 |
-
// ALERT DATA-API
|
94 |
-
// ==============
|
95 |
-
|
96 |
-
$(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
|
97 |
-
|
98 |
-
}(jQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/bootstrap.button.js
DELETED
@@ -1,115 +0,0 @@
|
|
1 |
-
/* ========================================================================
|
2 |
-
* Bootstrap: button.js v3.0.3
|
3 |
-
* http://getbootstrap.com/javascript/#buttons
|
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 |
-
// BUTTON PUBLIC CLASS DEFINITION
|
24 |
-
// ==============================
|
25 |
-
|
26 |
-
var Button = function (element, options) {
|
27 |
-
this.$element = $(element)
|
28 |
-
this.options = $.extend({}, Button.DEFAULTS, options)
|
29 |
-
}
|
30 |
-
|
31 |
-
Button.DEFAULTS = {
|
32 |
-
loadingText: 'loading...'
|
33 |
-
}
|
34 |
-
|
35 |
-
Button.prototype.setState = function (state) {
|
36 |
-
var d = 'disabled'
|
37 |
-
var $el = this.$element
|
38 |
-
var val = $el.is('input') ? 'val' : 'html'
|
39 |
-
var data = $el.data()
|
40 |
-
|
41 |
-
state = state + 'Text'
|
42 |
-
|
43 |
-
if (!data.resetText) $el.data('resetText', $el[val]())
|
44 |
-
|
45 |
-
$el[val](data[state] || this.options[state])
|
46 |
-
|
47 |
-
// push to event loop to allow forms to submit
|
48 |
-
setTimeout(function () {
|
49 |
-
state == 'loadingText' ?
|
50 |
-
$el.addClass(d).attr(d, d) :
|
51 |
-
$el.removeClass(d).removeAttr(d);
|
52 |
-
}, 0)
|
53 |
-
}
|
54 |
-
|
55 |
-
Button.prototype.toggle = function () {
|
56 |
-
var $parent = this.$element.closest('[data-toggle="buttons"]')
|
57 |
-
var changed = true
|
58 |
-
|
59 |
-
if ($parent.length) {
|
60 |
-
var $input = this.$element.find('input')
|
61 |
-
if ($input.prop('type') === 'radio') {
|
62 |
-
// see if clicking on current one
|
63 |
-
if ($input.prop('checked') && this.$element.hasClass('active'))
|
64 |
-
changed = false
|
65 |
-
else
|
66 |
-
$parent.find('.active').removeClass('active')
|
67 |
-
}
|
68 |
-
if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
|
69 |
-
}
|
70 |
-
|
71 |
-
if (changed) this.$element.toggleClass('active')
|
72 |
-
}
|
73 |
-
|
74 |
-
|
75 |
-
// BUTTON PLUGIN DEFINITION
|
76 |
-
// ========================
|
77 |
-
|
78 |
-
var old = $.fn.button
|
79 |
-
|
80 |
-
$.fn.button = function (option) {
|
81 |
-
return this.each(function () {
|
82 |
-
var $this = $(this)
|
83 |
-
var data = $this.data('bs.button')
|
84 |
-
var options = typeof option == 'object' && option
|
85 |
-
|
86 |
-
if (!data) $this.data('bs.button', (data = new Button(this, options)))
|
87 |
-
|
88 |
-
if (option == 'toggle') data.toggle()
|
89 |
-
else if (option) data.setState(option)
|
90 |
-
})
|
91 |
-
}
|
92 |
-
|
93 |
-
$.fn.button.Constructor = Button
|
94 |
-
|
95 |
-
|
96 |
-
// BUTTON NO CONFLICT
|
97 |
-
// ==================
|
98 |
-
|
99 |
-
$.fn.button.noConflict = function () {
|
100 |
-
$.fn.button = old
|
101 |
-
return this
|
102 |
-
}
|
103 |
-
|
104 |
-
|
105 |
-
// BUTTON DATA-API
|
106 |
-
// ===============
|
107 |
-
|
108 |
-
$(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) {
|
109 |
-
var $btn = $(e.target)
|
110 |
-
if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
|
111 |
-
$btn.button('toggle')
|
112 |
-
e.preventDefault()
|
113 |
-
})
|
114 |
-
|
115 |
-
}(jQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/bootstrap.carousel.js
DELETED
@@ -1,217 +0,0 @@
|
|
1 |
-
/* ========================================================================
|
2 |
-
* Bootstrap: carousel.js v3.0.3
|
3 |
-
* http://getbootstrap.com/javascript/#carousel
|
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 |
-
// CAROUSEL CLASS DEFINITION
|
24 |
-
// =========================
|
25 |
-
|
26 |
-
var Carousel = function (element, options) {
|
27 |
-
this.$element = $(element)
|
28 |
-
this.$indicators = this.$element.find('.carousel-indicators')
|
29 |
-
this.options = options
|
30 |
-
this.paused =
|
31 |
-
this.sliding =
|
32 |
-
this.interval =
|
33 |
-
this.$active =
|
34 |
-
this.$items = null
|
35 |
-
|
36 |
-
this.options.pause == 'hover' && this.$element
|
37 |
-
.on('mouseenter', $.proxy(this.pause, this))
|
38 |
-
.on('mouseleave', $.proxy(this.cycle, this))
|
39 |
-
}
|
40 |
-
|
41 |
-
Carousel.DEFAULTS = {
|
42 |
-
interval: 5000
|
43 |
-
, pause: 'hover'
|
44 |
-
, wrap: true
|
45 |
-
}
|
46 |
-
|
47 |
-
Carousel.prototype.cycle = function (e) {
|
48 |
-
e || (this.paused = false)
|
49 |
-
|
50 |
-
this.interval && clearInterval(this.interval)
|
51 |
-
|
52 |
-
this.options.interval
|
53 |
-
&& !this.paused
|
54 |
-
&& (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
|
55 |
-
|
56 |
-
return this
|
57 |
-
}
|
58 |
-
|
59 |
-
Carousel.prototype.getActiveIndex = function () {
|
60 |
-
this.$active = this.$element.find('.item.active')
|
61 |
-
this.$items = this.$active.parent().children()
|
62 |
-
|
63 |
-
return this.$items.index(this.$active)
|
64 |
-
}
|
65 |
-
|
66 |
-
Carousel.prototype.to = function (pos) {
|
67 |
-
var that = this
|
68 |
-
var activeIndex = this.getActiveIndex()
|
69 |
-
|
70 |
-
if (pos > (this.$items.length - 1) || pos < 0) return
|
71 |
-
|
72 |
-
if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) })
|
73 |
-
if (activeIndex == pos) return this.pause().cycle()
|
74 |
-
|
75 |
-
return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
|
76 |
-
}
|
77 |
-
|
78 |
-
Carousel.prototype.pause = function (e) {
|
79 |
-
e || (this.paused = true)
|
80 |
-
|
81 |
-
if (this.$element.find('.next, .prev').length && $.support.transition.end) {
|
82 |
-
this.$element.trigger($.support.transition.end)
|
83 |
-
this.cycle(true)
|
84 |
-
}
|
85 |
-
|
86 |
-
this.interval = clearInterval(this.interval)
|
87 |
-
|
88 |
-
return this
|
89 |
-
}
|
90 |
-
|
91 |
-
Carousel.prototype.next = function () {
|
92 |
-
if (this.sliding) return
|
93 |
-
return this.slide('next')
|
94 |
-
}
|
95 |
-
|
96 |
-
Carousel.prototype.prev = function () {
|
97 |
-
if (this.sliding) return
|
98 |
-
return this.slide('prev')
|
99 |
-
}
|
100 |
-
|
101 |
-
Carousel.prototype.slide = function (type, next) {
|
102 |
-
var $active = this.$element.find('.item.active')
|
103 |
-
var $next = next || $active[type]()
|
104 |
-
var isCycling = this.interval
|
105 |
-
var direction = type == 'next' ? 'left' : 'right'
|
106 |
-
var fallback = type == 'next' ? 'first' : 'last'
|
107 |
-
var that = this
|
108 |
-
|
109 |
-
if (!$next.length) {
|
110 |
-
if (!this.options.wrap) return
|
111 |
-
$next = this.$element.find('.item')[fallback]()
|
112 |
-
}
|
113 |
-
|
114 |
-
this.sliding = true
|
115 |
-
|
116 |
-
isCycling && this.pause()
|
117 |
-
|
118 |
-
var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction })
|
119 |
-
|
120 |
-
if ($next.hasClass('active')) return
|
121 |
-
|
122 |
-
if (this.$indicators.length) {
|
123 |
-
this.$indicators.find('.active').removeClass('active')
|
124 |
-
this.$element.one('slid.bs.carousel', function () {
|
125 |
-
var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
|
126 |
-
$nextIndicator && $nextIndicator.addClass('active')
|
127 |
-
})
|
128 |
-
}
|
129 |
-
|
130 |
-
if ($.support.transition && this.$element.hasClass('slide')) {
|
131 |
-
this.$element.trigger(e)
|
132 |
-
if (e.isDefaultPrevented()) return
|
133 |
-
$next.addClass(type)
|
134 |
-
$next[0].offsetWidth // force reflow
|
135 |
-
$active.addClass(direction)
|
136 |
-
$next.addClass(direction)
|
137 |
-
$active
|
138 |
-
.one($.support.transition.end, function () {
|
139 |
-
$next.removeClass([type, direction].join(' ')).addClass('active')
|
140 |
-
$active.removeClass(['active', direction].join(' '))
|
141 |
-
that.sliding = false
|
142 |
-
setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0)
|
143 |
-
})
|
144 |
-
.emulateTransitionEnd(600)
|
145 |
-
} else {
|
146 |
-
this.$element.trigger(e)
|
147 |
-
if (e.isDefaultPrevented()) return
|
148 |
-
$active.removeClass('active')
|
149 |
-
$next.addClass('active')
|
150 |
-
this.sliding = false
|
151 |
-
this.$element.trigger('slid.bs.carousel')
|
152 |
-
}
|
153 |
-
|
154 |
-
isCycling && this.cycle()
|
155 |
-
|
156 |
-
return this
|
157 |
-
}
|
158 |
-
|
159 |
-
|
160 |
-
// CAROUSEL PLUGIN DEFINITION
|
161 |
-
// ==========================
|
162 |
-
|
163 |
-
var old = $.fn.carousel
|
164 |
-
|
165 |
-
$.fn.carousel = function (option) {
|
166 |
-
return this.each(function () {
|
167 |
-
var $this = $(this)
|
168 |
-
var data = $this.data('bs.carousel')
|
169 |
-
var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
|
170 |
-
var action = typeof option == 'string' ? option : options.slide
|
171 |
-
|
172 |
-
if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
|
173 |
-
if (typeof option == 'number') data.to(option)
|
174 |
-
else if (action) data[action]()
|
175 |
-
else if (options.interval) data.pause().cycle()
|
176 |
-
})
|
177 |
-
}
|
178 |
-
|
179 |
-
$.fn.carousel.Constructor = Carousel
|
180 |
-
|
181 |
-
|
182 |
-
// CAROUSEL NO CONFLICT
|
183 |
-
// ====================
|
184 |
-
|
185 |
-
$.fn.carousel.noConflict = function () {
|
186 |
-
$.fn.carousel = old
|
187 |
-
return this
|
188 |
-
}
|
189 |
-
|
190 |
-
|
191 |
-
// CAROUSEL DATA-API
|
192 |
-
// =================
|
193 |
-
|
194 |
-
$(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
|
195 |
-
var $this = $(this), href
|
196 |
-
var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
|
197 |
-
var options = $.extend({}, $target.data(), $this.data())
|
198 |
-
var slideIndex = $this.attr('data-slide-to')
|
199 |
-
if (slideIndex) options.interval = false
|
200 |
-
|
201 |
-
$target.carousel(options)
|
202 |
-
|
203 |
-
if (slideIndex = $this.attr('data-slide-to')) {
|
204 |
-
$target.data('bs.carousel').to(slideIndex)
|
205 |
-
}
|
206 |
-
|
207 |
-
e.preventDefault()
|
208 |
-
})
|
209 |
-
|
210 |
-
$(window).on('load', function () {
|
211 |
-
$('[data-ride="carousel"]').each(function () {
|
212 |
-
var $carousel = $(this)
|
213 |
-
$carousel.carousel($carousel.data())
|
214 |
-
})
|
215 |
-
})
|
216 |
-
|
217 |
-
}(jQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/bootstrap.collapse.js
DELETED
@@ -1,167 +0,0 @@
|
|
1 |
-
/* ========================================================================
|
2 |
-
* Bootstrap: collapse.js v3.0.3
|
3 |
-
* http://getbootstrap.com/javascript/#collapse
|
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 |
-
// COLLAPSE PUBLIC CLASS DEFINITION
|
24 |
-
// ================================
|
25 |
-
|
26 |
-
var Collapse = function (element, options) {
|
27 |
-
this.$element = $(element)
|
28 |
-
this.options = $.extend({}, Collapse.DEFAULTS, options)
|
29 |
-
this.transitioning = null
|
30 |
-
|
31 |
-
if (this.options.parent) this.$parent = $(this.options.parent)
|
32 |
-
if (this.options.toggle) this.toggle()
|
33 |
-
}
|
34 |
-
|
35 |
-
Collapse.DEFAULTS = {
|
36 |
-
toggle: true
|
37 |
-
}
|
38 |
-
|
39 |
-
Collapse.prototype.dimension = function () {
|
40 |
-
var hasWidth = this.$element.hasClass('width')
|
41 |
-
return hasWidth ? 'width' : 'height'
|
42 |
-
}
|
43 |
-
|
44 |
-
Collapse.prototype.show = function () {
|
45 |
-
if (this.transitioning || this.$element.hasClass('in')) return
|
46 |
-
|
47 |
-
var startEvent = $.Event('show.bs.collapse')
|
48 |
-
this.$element.trigger(startEvent)
|
49 |
-
if (startEvent.isDefaultPrevented()) return
|
50 |
-
|
51 |
-
var actives = this.$parent && this.$parent.find('> .panel > .in')
|
52 |
-
|
53 |
-
if (actives && actives.length) {
|
54 |
-
var hasData = actives.data('bs.collapse')
|
55 |
-
if (hasData && hasData.transitioning) return
|
56 |
-
actives.collapse('hide')
|
57 |
-
hasData || actives.data('bs.collapse', null)
|
58 |
-
}
|
59 |
-
|
60 |
-
var dimension = this.dimension()
|
61 |
-
|
62 |
-
this.$element
|
63 |
-
.removeClass('collapse')
|
64 |
-
.addClass('collapsing')
|
65 |
-
[dimension](0)
|
66 |
-
|
67 |
-
this.transitioning = 1
|
68 |
-
|
69 |
-
var complete = function () {
|
70 |
-
this.$element
|
71 |
-
.removeClass('collapsing')
|
72 |
-
.addClass('in')
|
73 |
-
[dimension]('auto')
|
74 |
-
this.transitioning = 0
|
75 |
-
this.$element.trigger('shown.bs.collapse')
|
76 |
-
}
|
77 |
-
|
78 |
-
if (!$.support.transition) return complete.call(this)
|
79 |
-
|
80 |
-
var scrollSize = $.camelCase(['scroll', dimension].join('-'))
|
81 |
-
|
82 |
-
this.$element
|
83 |
-
.one($.support.transition.end, $.proxy(complete, this))
|
84 |
-
.emulateTransitionEnd(350)
|
85 |
-
[dimension](this.$element[0][scrollSize])
|
86 |
-
}
|
87 |
-
|
88 |
-
Collapse.prototype.hide = function () {
|
89 |
-
if (this.transitioning || !this.$element.hasClass('in')) return
|
90 |
-
|
91 |
-
var startEvent = $.Event('hide.bs.collapse')
|
92 |
-
this.$element.trigger(startEvent)
|
93 |
-
if (startEvent.isDefaultPrevented()) return
|
94 |
-
|
95 |
-
var dimension = this.dimension()
|
96 |
-
|
97 |
-
this.$element
|
98 |
-
[dimension](this.$element[dimension]())
|
99 |
-
[0].offsetHeight
|
100 |
-
|
101 |
-
this.$element
|
102 |
-
.addClass('collapsing')
|
103 |
-
.removeClass('collapse')
|
104 |
-
.removeClass('in')
|
105 |
-
|
106 |
-
this.transitioning = 1
|
107 |
-
|
108 |
-
var complete = function () {
|
109 |
-
this.transitioning = 0
|
110 |
-
this.$element
|
111 |
-
.trigger('hidden.bs.collapse')
|
112 |
-
.removeClass('collapsing')
|
113 |
-
.addClass('collapse')
|
114 |
-
}
|
115 |
-
|
116 |
-
if (!$.support.transition) return complete.call(this)
|
117 |
-
|
118 |
-
this.$element
|
119 |
-
[dimension](0)
|
120 |
-
.one($.support.transition.end, $.proxy(complete, this))
|
121 |
-
.emulateTransitionEnd(350)
|
122 |
-
}
|
123 |
-
|
124 |
-
Collapse.prototype.toggle = function () {
|
125 |
-
this[this.$element.hasClass('in') ? 'hide' : 'show']()
|
126 |
-
}
|
127 |
-
|
128 |
-
|
129 |
-
// COLLAPSE PLUGIN DEFINITION
|
130 |
-
// ==========================
|
131 |
-
|
132 |
-
$.fn.factoryBootstrap330_collapse = function (option) {
|
133 |
-
return this.each(function () {
|
134 |
-
var $this = $(this)
|
135 |
-
var data = $this.data('bs.collapse')
|
136 |
-
var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
|
137 |
-
|
138 |
-
if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
|
139 |
-
if (typeof option == 'string') data[option]()
|
140 |
-
})
|
141 |
-
}
|
142 |
-
|
143 |
-
$.fn.factoryBootstrap330_collapse.Constructor = Collapse
|
144 |
-
|
145 |
-
// COLLAPSE DATA-API
|
146 |
-
// =================
|
147 |
-
|
148 |
-
$(document).on('click.bs.collapse.data-api', '[data-toggle=factory-collapse]', function (e) {
|
149 |
-
var $this = $(this), href
|
150 |
-
var target = $this.attr('data-target')
|
151 |
-
|| e.preventDefault()
|
152 |
-
|| (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
|
153 |
-
var $target = $(target)
|
154 |
-
var data = $target.data('bs.collapse')
|
155 |
-
var option = data ? 'toggle' : $this.data()
|
156 |
-
var parent = $this.attr('data-parent')
|
157 |
-
var $parent = parent && $(parent)
|
158 |
-
|
159 |
-
if (!data || !data.transitioning) {
|
160 |
-
if ($parent) $parent.find('[data-toggle=factory-collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed')
|
161 |
-
$this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
|
162 |
-
}
|
163 |
-
|
164 |
-
$target.collapse(option)
|
165 |
-
})
|
166 |
-
|
167 |
-
}(jQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/bootstrap.datepicker.js
DELETED
@@ -1,1966 +0,0 @@
|
|
1 |
-
/*!
|
2 |
-
* Datepicker for Bootstrap v1.5.0-dev (https://github.com/eternicode/bootstrap-datepicker)
|
3 |
-
*
|
4 |
-
* Copyright 2012 Stefan Petre
|
5 |
-
* Improvements by Andrew Rowls
|
6 |
-
* Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
|
7 |
-
*/
|
8 |
-
(function($, undefined) {
|
9 |
-
|
10 |
-
function UTCDate() {
|
11 |
-
return new Date(Date.UTC.apply(Date, arguments));
|
12 |
-
}
|
13 |
-
|
14 |
-
function UTCToday() {
|
15 |
-
var today = new Date();
|
16 |
-
return UTCDate(today.getFullYear(), today.getMonth(), today.getDate());
|
17 |
-
}
|
18 |
-
|
19 |
-
function isUTCEquals(date1, date2) {
|
20 |
-
return (
|
21 |
-
date1.getUTCFullYear() === date2.getUTCFullYear() &&
|
22 |
-
date1.getUTCMonth() === date2.getUTCMonth() &&
|
23 |
-
date1.getUTCDate() === date2.getUTCDate()
|
24 |
-
);
|
25 |
-
}
|
26 |
-
|
27 |
-
function alias(method) {
|
28 |
-
return function() {
|
29 |
-
return this[method].apply(this, arguments);
|
30 |
-
};
|
31 |
-
}
|
32 |
-
|
33 |
-
var DateArray = (function() {
|
34 |
-
var extras = {
|
35 |
-
get: function(i) {
|
36 |
-
return this.slice(i)[0];
|
37 |
-
},
|
38 |
-
contains: function(d) {
|
39 |
-
// Array.indexOf is not cross-browser;
|
40 |
-
// $.inArray doesn't work with Dates
|
41 |
-
var val = d && d.valueOf();
|
42 |
-
for( var i = 0, l = this.length; i < l; i++ ) {
|
43 |
-
if( this[i].valueOf() === val ) {
|
44 |
-
return i;
|
45 |
-
}
|
46 |
-
}
|
47 |
-
return -1;
|
48 |
-
},
|
49 |
-
remove: function(i) {
|
50 |
-
this.splice(i, 1);
|
51 |
-
},
|
52 |
-
replace: function(new_array) {
|
53 |
-
if( !new_array ) {
|
54 |
-
return;
|
55 |
-
}
|
56 |
-
if( !$.isArray(new_array) ) {
|
57 |
-
new_array = [new_array];
|
58 |
-
}
|
59 |
-
this.clear();
|
60 |
-
this.push.apply(this, new_array);
|
61 |
-
},
|
62 |
-
clear: function() {
|
63 |
-
this.length = 0;
|
64 |
-
},
|
65 |
-
copy: function() {
|
66 |
-
var a = new DateArray();
|
67 |
-
a.replace(this);
|
68 |
-
return a;
|
69 |
-
}
|
70 |
-
};
|
71 |
-
|
72 |
-
return function() {
|
73 |
-
var a = [];
|
74 |
-
a.push.apply(a, arguments);
|
75 |
-
$.extend(a, extras);
|
76 |
-
return a;
|
77 |
-
};
|
78 |
-
})();
|
79 |
-
|
80 |
-
// Picker object
|
81 |
-
|
82 |
-
var Datepicker = function(element, options) {
|
83 |
-
this._process_options(options);
|
84 |
-
|
85 |
-
this.dates = new DateArray();
|
86 |
-
this.viewDate = this.o.defaultViewDate;
|
87 |
-
this.focusDate = null;
|
88 |
-
|
89 |
-
this.element = $(element);
|
90 |
-
this.isInline = false;
|
91 |
-
this.isInput = this.element.is('input');
|
92 |
-
this.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .btn') : false;
|
93 |
-
this.hasInput = this.component && this.element.find('input').length;
|
94 |
-
if( this.component && this.component.length === 0 ) {
|
95 |
-
this.component = false;
|
96 |
-
}
|
97 |
-
|
98 |
-
this.picker = $(DPGlobal.template);
|
99 |
-
this._buildEvents();
|
100 |
-
this._attachEvents();
|
101 |
-
|
102 |
-
if( this.isInline ) {
|
103 |
-
this.picker.addClass('datepicker-inline').appendTo(this.element);
|
104 |
-
}
|
105 |
-
else {
|
106 |
-
this.picker.addClass('datepicker-dropdown dropdown-menu');
|
107 |
-
}
|
108 |
-
|
109 |
-
if( this.o.rtl ) {
|
110 |
-
this.picker.addClass('datepicker-rtl');
|
111 |
-
}
|
112 |
-
|
113 |
-
this.viewMode = this.o.startView;
|
114 |
-
|
115 |
-
if( this.o.calendarWeeks ) {
|
116 |
-
this.picker.find('tfoot .today, tfoot .clear')
|
117 |
-
.attr('colspan', function(i, val) {
|
118 |
-
return parseInt(val) + 1;
|
119 |
-
});
|
120 |
-
}
|
121 |
-
|
122 |
-
this._allow_update = false;
|
123 |
-
|
124 |
-
this.setStartDate(this._o.startDate);
|
125 |
-
this.setEndDate(this._o.endDate);
|
126 |
-
this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled);
|
127 |
-
this.setDatesDisabled(this.o.datesDisabled);
|
128 |
-
|
129 |
-
this.fillDow();
|
130 |
-
this.fillMonths();
|
131 |
-
|
132 |
-
this._allow_update = true;
|
133 |
-
|
134 |
-
this.update();
|
135 |
-
this.showMode();
|
136 |
-
|
137 |
-
if( this.isInline ) {
|
138 |
-
this.show();
|
139 |
-
}
|
140 |
-
};
|
141 |
-
|
142 |
-
Datepicker.prototype = {
|
143 |
-
constructor: Datepicker,
|
144 |
-
|
145 |
-
_process_options: function(opts) {
|
146 |
-
// Store raw options for reference
|
147 |
-
this._o = $.extend({}, this._o, opts);
|
148 |
-
// Processed options
|
149 |
-
var o = this.o = $.extend({}, this._o);
|
150 |
-
|
151 |
-
// Check if "de-DE" style date is available, if not language should
|
152 |
-
// fallback to 2 letter code eg "de"
|
153 |
-
var lang = o.language;
|
154 |
-
if( !dates[lang] ) {
|
155 |
-
lang = lang.split('-')[0];
|
156 |
-
if( !dates[lang] ) {
|
157 |
-
lang = defaults.language;
|
158 |
-
}
|
159 |
-
}
|
160 |
-
o.language = lang;
|
161 |
-
|
162 |
-
switch( o.startView ) {
|
163 |
-
case 2:
|
164 |
-
case 'decade':
|
165 |
-
o.startView = 2;
|
166 |
-
break;
|
167 |
-
case 1:
|
168 |
-
case 'year':
|
169 |
-
o.startView = 1;
|
170 |
-
break;
|
171 |
-
default:
|
172 |
-
o.startView = 0;
|
173 |
-
}
|
174 |
-
|
175 |
-
switch( o.minViewMode ) {
|
176 |
-
case 1:
|
177 |
-
case 'months':
|
178 |
-
o.minViewMode = 1;
|
179 |
-
break;
|
180 |
-
case 2:
|
181 |
-
case 'years':
|
182 |
-
o.minViewMode = 2;
|
183 |
-
break;
|
184 |
-
default:
|
185 |
-
o.minViewMode = 0;
|
186 |
-
}
|
187 |
-
|
188 |
-
o.startView = Math.max(o.startView, o.minViewMode);
|
189 |
-
|
190 |
-
// true, false, or Number > 0
|
191 |
-
if( o.multidate !== true ) {
|
192 |
-
o.multidate = Number(o.multidate) || false;
|
193 |
-
if( o.multidate !== false ) {
|
194 |
-
o.multidate = Math.max(0, o.multidate);
|
195 |
-
}
|
196 |
-
}
|
197 |
-
o.multidateSeparator = String(o.multidateSeparator);
|
198 |
-
|
199 |
-
o.weekStart %= 7;
|
200 |
-
o.weekEnd = ((o.weekStart + 6) % 7);
|
201 |
-
|
202 |
-
var format = DPGlobal.parseFormat(o.format);
|
203 |
-
if( o.startDate !== -Infinity ) {
|
204 |
-
if( !!o.startDate ) {
|
205 |
-
if( o.startDate instanceof Date ) {
|
206 |
-
o.startDate = this._local_to_utc(this._zero_time(o.startDate));
|
207 |
-
} else {
|
208 |
-
o.startDate = DPGlobal.parseDate(o.startDate, format, o.language);
|
209 |
-
}
|
210 |
-
}
|
211 |
-
else {
|
212 |
-
o.startDate = -Infinity;
|
213 |
-
}
|
214 |
-
}
|
215 |
-
if( o.endDate !== Infinity ) {
|
216 |
-
if( !!o.endDate ) {
|
217 |
-
if( o.endDate instanceof Date ) {
|
218 |
-
o.endDate = this._local_to_utc(this._zero_time(o.endDate));
|
219 |
-
} else {
|
220 |
-
o.endDate = DPGlobal.parseDate(o.endDate, format, o.language);
|
221 |
-
}
|
222 |
-
}
|
223 |
-
else {
|
224 |
-
o.endDate = Infinity;
|
225 |
-
}
|
226 |
-
}
|
227 |
-
|
228 |
-
o.daysOfWeekDisabled = o.daysOfWeekDisabled || [];
|
229 |
-
if( !$.isArray(o.daysOfWeekDisabled) ) {
|
230 |
-
o.daysOfWeekDisabled = o.daysOfWeekDisabled.split(/[,\s]*/);
|
231 |
-
}
|
232 |
-
o.daysOfWeekDisabled = $.map(o.daysOfWeekDisabled, function(d) {
|
233 |
-
return parseInt(d, 10);
|
234 |
-
});
|
235 |
-
|
236 |
-
o.datesDisabled = o.datesDisabled || [];
|
237 |
-
if( !$.isArray(o.datesDisabled) ) {
|
238 |
-
var datesDisabled = [];
|
239 |
-
datesDisabled.push(DPGlobal.parseDate(o.datesDisabled, format, o.language));
|
240 |
-
o.datesDisabled = datesDisabled;
|
241 |
-
}
|
242 |
-
o.datesDisabled = $.map(o.datesDisabled, function(d) {
|
243 |
-
return DPGlobal.parseDate(d, format, o.language);
|
244 |
-
});
|
245 |
-
|
246 |
-
var plc = String(o.orientation).toLowerCase().split(/\s+/g),
|
247 |
-
_plc = o.orientation.toLowerCase();
|
248 |
-
plc = $.grep(plc, function(word) {
|
249 |
-
return /^auto|left|right|top|bottom$/.test(word);
|
250 |
-
});
|
251 |
-
o.orientation = {
|
252 |
-
x: 'auto',
|
253 |
-
y: 'auto'
|
254 |
-
};
|
255 |
-
if( !_plc || _plc === 'auto' ) {
|
256 |
-
;
|
257 |
-
}// no action
|
258 |
-
else if( plc.length === 1 ) {
|
259 |
-
switch( plc[0] ) {
|
260 |
-
case 'top':
|
261 |
-
case 'bottom':
|
262 |
-
o.orientation.y = plc[0];
|
263 |
-
break;
|
264 |
-
case 'left':
|
265 |
-
case 'right':
|
266 |
-
o.orientation.x = plc[0];
|
267 |
-
break;
|
268 |
-
}
|
269 |
-
}
|
270 |
-
else {
|
271 |
-
_plc = $.grep(plc, function(word) {
|
272 |
-
return /^left|right$/.test(word);
|
273 |
-
});
|
274 |
-
o.orientation.x = _plc[0] || 'auto';
|
275 |
-
|
276 |
-
_plc = $.grep(plc, function(word) {
|
277 |
-
return /^top|bottom$/.test(word);
|
278 |
-
});
|
279 |
-
o.orientation.y = _plc[0] || 'auto';
|
280 |
-
}
|
281 |
-
if( o.defaultViewDate ) {
|
282 |
-
var year = o.defaultViewDate.year || new Date().getFullYear();
|
283 |
-
var month = o.defaultViewDate.month || 0;
|
284 |
-
var day = o.defaultViewDate.day || 1;
|
285 |
-
o.defaultViewDate = UTCDate(year, month, day);
|
286 |
-
} else {
|
287 |
-
o.defaultViewDate = UTCToday();
|
288 |
-
}
|
289 |
-
o.showOnFocus = o.showOnFocus !== undefined ? o.showOnFocus : true;
|
290 |
-
},
|
291 |
-
_events: [],
|
292 |
-
_secondaryEvents: [],
|
293 |
-
_applyEvents: function(evs) {
|
294 |
-
for( var i = 0, el, ch, ev; i < evs.length; i++ ) {
|
295 |
-
el = evs[i][0];
|
296 |
-
if( evs[i].length === 2 ) {
|
297 |
-
ch = undefined;
|
298 |
-
ev = evs[i][1];
|
299 |
-
}
|
300 |
-
else if( evs[i].length === 3 ) {
|
301 |
-
ch = evs[i][1];
|
302 |
-
ev = evs[i][2];
|
303 |
-
}
|
304 |
-
el.on(ev, ch);
|
305 |
-
}
|
306 |
-
},
|
307 |
-
_unapplyEvents: function(evs) {
|
308 |
-
for( var i = 0, el, ev, ch; i < evs.length; i++ ) {
|
309 |
-
el = evs[i][0];
|
310 |
-
if( evs[i].length === 2 ) {
|
311 |
-
ch = undefined;
|
312 |
-
ev = evs[i][1];
|
313 |
-
}
|
314 |
-
else if( evs[i].length === 3 ) {
|
315 |
-
ch = evs[i][1];
|
316 |
-
ev = evs[i][2];
|
317 |
-
}
|
318 |
-
el.off(ev, ch);
|
319 |
-
}
|
320 |
-
},
|
321 |
-
_buildEvents: function() {
|
322 |
-
var events = {
|
323 |
-
keyup: $.proxy(function(e) {
|
324 |
-
if( $.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1 ) {
|
325 |
-
this.update();
|
326 |
-
}
|
327 |
-
}, this),
|
328 |
-
keydown: $.proxy(this.keydown, this),
|
329 |
-
paste: $.proxy(this.paste, this)
|
330 |
-
};
|
331 |
-
|
332 |
-
if( this.o.showOnFocus === true ) {
|
333 |
-
events.focus = $.proxy(this.show, this);
|
334 |
-
}
|
335 |
-
|
336 |
-
if( this.isInput ) { // single input
|
337 |
-
this._events = [
|
338 |
-
[this.element, events]
|
339 |
-
];
|
340 |
-
}
|
341 |
-
else if( this.component && this.hasInput ) { // component: input + button
|
342 |
-
this._events = [
|
343 |
-
// For components that are not readonly, allow keyboard nav
|
344 |
-
[this.element.find('input'), events],
|
345 |
-
[
|
346 |
-
this.component, {
|
347 |
-
click: $.proxy(this.show, this)
|
348 |
-
}
|
349 |
-
]
|
350 |
-
];
|
351 |
-
}
|
352 |
-
else if( this.element.is('div') ) { // inline datepicker
|
353 |
-
this.isInline = true;
|
354 |
-
}
|
355 |
-
else {
|
356 |
-
this._events = [
|
357 |
-
[
|
358 |
-
this.element, {
|
359 |
-
click: $.proxy(this.show, this)
|
360 |
-
}
|
361 |
-
]
|
362 |
-
];
|
363 |
-
}
|
364 |
-
this._events.push(
|
365 |
-
// Component: listen for blur on element descendants
|
366 |
-
[
|
367 |
-
this.element, '*', {
|
368 |
-
blur: $.proxy(function(e) {
|
369 |
-
this._focused_from = e.target;
|
370 |
-
}, this)
|
371 |
-
}
|
372 |
-
],
|
373 |
-
// Input: listen for blur on element
|
374 |
-
[
|
375 |
-
this.element, {
|
376 |
-
blur: $.proxy(function(e) {
|
377 |
-
this._focused_from = e.target;
|
378 |
-
}, this)
|
379 |
-
}
|
380 |
-
]
|
381 |
-
);
|
382 |
-
|
383 |
-
if( this.o.immediateUpdates ) {
|
384 |
-
// Trigger input updates immediately on changed year/month
|
385 |
-
this._events.push([
|
386 |
-
this.element, {
|
387 |
-
'changeYear changeMonth': $.proxy(function(e) {
|
388 |
-
this.update(e.date);
|
389 |
-
}, this)
|
390 |
-
}
|
391 |
-
]);
|
392 |
-
}
|
393 |
-
|
394 |
-
this._secondaryEvents = [
|
395 |
-
[
|
396 |
-
this.picker, {
|
397 |
-
click: $.proxy(this.click, this)
|
398 |
-
}
|
399 |
-
],
|
400 |
-
[
|
401 |
-
$(window), {
|
402 |
-
resize: $.proxy(this.place, this)
|
403 |
-
}
|
404 |
-
],
|
405 |
-
[
|
406 |
-
$(document), {
|
407 |
-
mousedown: $.proxy(function(e) {
|
408 |
-
// Clicked outside the datepicker, hide it
|
409 |
-
if( !(
|
410 |
-
this.element.is(e.target) ||
|
411 |
-
this.element.find(e.target).length ||
|
412 |
-
this.picker.is(e.target) ||
|
413 |
-
this.picker.find(e.target).length
|
414 |
-
) ) {
|
415 |
-
$(this.picker).hide();
|
416 |
-
}
|
417 |
-
}, this)
|
418 |
-
}
|
419 |
-
]
|
420 |
-
];
|
421 |
-
},
|
422 |
-
_attachEvents: function() {
|
423 |
-
this._detachEvents();
|
424 |
-
this._applyEvents(this._events);
|
425 |
-
},
|
426 |
-
_detachEvents: function() {
|
427 |
-
this._unapplyEvents(this._events);
|
428 |
-
},
|
429 |
-
_attachSecondaryEvents: function() {
|
430 |
-
this._detachSecondaryEvents();
|
431 |
-
this._applyEvents(this._secondaryEvents);
|
432 |
-
},
|
433 |
-
_detachSecondaryEvents: function() {
|
434 |
-
this._unapplyEvents(this._secondaryEvents);
|
435 |
-
},
|
436 |
-
_trigger: function(event, altdate) {
|
437 |
-
var date = altdate || this.dates.get(-1),
|
438 |
-
local_date = this._utc_to_local(date);
|
439 |
-
|
440 |
-
this.element.trigger({
|
441 |
-
type: event,
|
442 |
-
date: local_date,
|
443 |
-
dates: $.map(this.dates, this._utc_to_local),
|
444 |
-
format: $.proxy(function(ix, format) {
|
445 |
-
if( arguments.length === 0 ) {
|
446 |
-
ix = this.dates.length - 1;
|
447 |
-
format = this.o.format;
|
448 |
-
}
|
449 |
-
else if( typeof ix === 'string' ) {
|
450 |
-
format = ix;
|
451 |
-
ix = this.dates.length - 1;
|
452 |
-
}
|
453 |
-
format = format || this.o.format;
|
454 |
-
var date = this.dates.get(ix);
|
455 |
-
return DPGlobal.formatDate(date, format, this.o.language);
|
456 |
-
}, this)
|
457 |
-
});
|
458 |
-
},
|
459 |
-
|
460 |
-
show: function() {
|
461 |
-
if( this.element.attr('readonly') && this.o.enableOnReadonly === false ) {
|
462 |
-
return;
|
463 |
-
}
|
464 |
-
if( !this.isInline ) {
|
465 |
-
this.picker.appendTo(this.o.container);
|
466 |
-
}
|
467 |
-
this.place();
|
468 |
-
this.picker.show();
|
469 |
-
this._attachSecondaryEvents();
|
470 |
-
this._trigger('show');
|
471 |
-
if( (window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && this.o.disableTouchKeyboard ) {
|
472 |
-
$(this.element).blur();
|
473 |
-
}
|
474 |
-
return this;
|
475 |
-
},
|
476 |
-
|
477 |
-
hide: function() {
|
478 |
-
if( this.isInline ) {
|
479 |
-
return this;
|
480 |
-
}
|
481 |
-
if( !this.picker.is(':visible') ) {
|
482 |
-
return this;
|
483 |
-
}
|
484 |
-
this.focusDate = null;
|
485 |
-
this.picker.hide().detach();
|
486 |
-
this._detachSecondaryEvents();
|
487 |
-
this.viewMode = this.o.startView;
|
488 |
-
this.showMode();
|
489 |
-
|
490 |
-
if(
|
491 |
-
this.o.forceParse &&
|
492 |
-
(
|
493 |
-
this.isInput && this.element.val() ||
|
494 |
-
this.hasInput && this.element.find('input').val()
|
495 |
-
)
|
496 |
-
) {
|
497 |
-
this.setValue();
|
498 |
-
}
|
499 |
-
this._trigger('hide');
|
500 |
-
return this;
|
501 |
-
},
|
502 |
-
|
503 |
-
remove: function() {
|
504 |
-
this.hide();
|
505 |
-
this._detachEvents();
|
506 |
-
this._detachSecondaryEvents();
|
507 |
-
this.picker.remove();
|
508 |
-
delete this.element.data().datepicker;
|
509 |
-
if( !this.isInput ) {
|
510 |
-
delete this.element.data().date;
|
511 |
-
}
|
512 |
-
return this;
|
513 |
-
},
|
514 |
-
|
515 |
-
paste: function(evt) {
|
516 |
-
var dateString;
|
517 |
-
if( evt.originalEvent.clipboardData && evt.originalEvent.clipboardData.types
|
518 |
-
&& $.inArray('text/plain', evt.originalEvent.clipboardData.types) !== -1 ) {
|
519 |
-
dateString = evt.originalEvent.clipboardData.getData('text/plain');
|
520 |
-
}
|
521 |
-
else if( window.clipboardData ) {
|
522 |
-
dateString = window.clipboardData.getData('Text');
|
523 |
-
}
|
524 |
-
else {
|
525 |
-
return;
|
526 |
-
}
|
527 |
-
this.setDate(dateString);
|
528 |
-
this.update();
|
529 |
-
evt.preventDefault();
|
530 |
-
},
|
531 |
-
|
532 |
-
_utc_to_local: function(utc) {
|
533 |
-
return utc && new Date(utc.getTime() + (utc.getTimezoneOffset() * 60000));
|
534 |
-
},
|
535 |
-
_local_to_utc: function(local) {
|
536 |
-
return local && new Date(local.getTime() - (local.getTimezoneOffset() * 60000));
|
537 |
-
},
|
538 |
-
_zero_time: function(local) {
|
539 |
-
return local && new Date(local.getFullYear(), local.getMonth(), local.getDate());
|
540 |
-
},
|
541 |
-
_zero_utc_time: function(utc) {
|
542 |
-
return utc && new Date(Date.UTC(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate()));
|
543 |
-
},
|
544 |
-
|
545 |
-
getDates: function() {
|
546 |
-
return $.map(this.dates, this._utc_to_local);
|
547 |
-
},
|
548 |
-
|
549 |
-
getUTCDates: function() {
|
550 |
-
return $.map(this.dates, function(d) {
|
551 |
-
return new Date(d);
|
552 |
-
});
|
553 |
-
},
|
554 |
-
|
555 |
-
getDate: function() {
|
556 |
-
return this._utc_to_local(this.getUTCDate());
|
557 |
-
},
|
558 |
-
|
559 |
-
getUTCDate: function() {
|
560 |
-
var selected_date = this.dates.get(-1);
|
561 |
-
if( typeof selected_date !== 'undefined' ) {
|
562 |
-
return new Date(selected_date);
|
563 |
-
} else {
|
564 |
-
return null;
|
565 |
-
}
|
566 |
-
},
|
567 |
-
|
568 |
-
clearDates: function() {
|
569 |
-
var element;
|
570 |
-
if( this.isInput ) {
|
571 |
-
element = this.element;
|
572 |
-
} else if( this.component ) {
|
573 |
-
element = this.element.find('input');
|
574 |
-
}
|
575 |
-
|
576 |
-
if( element ) {
|
577 |
-
element.val('').change();
|
578 |
-
}
|
579 |
-
|
580 |
-
this.update();
|
581 |
-
this._trigger('changeDate');
|
582 |
-
|
583 |
-
if( this.o.autoclose ) {
|
584 |
-
this.hide();
|
585 |
-
}
|
586 |
-
},
|
587 |
-
setDates: function() {
|
588 |
-
var args = $.isArray(arguments[0]) ? arguments[0] : arguments;
|
589 |
-
this.update.apply(this, args);
|
590 |
-
this._trigger('changeDate');
|
591 |
-
this.setValue();
|
592 |
-
return this;
|
593 |
-
},
|
594 |
-
|
595 |
-
setUTCDates: function() {
|
596 |
-
var args = $.isArray(arguments[0]) ? arguments[0] : arguments;
|
597 |
-
this.update.apply(this, $.map(args, this._utc_to_local));
|
598 |
-
this._trigger('changeDate');
|
599 |
-
this.setValue();
|
600 |
-
return this;
|
601 |
-
},
|
602 |
-
|
603 |
-
setDate: alias('setDates'),
|
604 |
-
setUTCDate: alias('setUTCDates'),
|
605 |
-
|
606 |
-
setValue: function() {
|
607 |
-
var formatted = this.getFormattedDate();
|
608 |
-
if( !this.isInput ) {
|
609 |
-
if( this.component ) {
|
610 |
-
this.element.find('input').val(formatted).change();
|
611 |
-
}
|
612 |
-
}
|
613 |
-
else {
|
614 |
-
this.element.val(formatted).change();
|
615 |
-
}
|
616 |
-
return this;
|
617 |
-
},
|
618 |
-
|
619 |
-
getFormattedDate: function(format) {
|
620 |
-
if( format === undefined ) {
|
621 |
-
format = this.o.format;
|
622 |
-
}
|
623 |
-
|
624 |
-
var lang = this.o.language;
|
625 |
-
return $.map(this.dates, function(d) {
|
626 |
-
return DPGlobal.formatDate(d, format, lang);
|
627 |
-
}).join(this.o.multidateSeparator);
|
628 |
-
},
|
629 |
-
|
630 |
-
setStartDate: function(startDate) {
|
631 |
-
this._process_options({startDate: startDate});
|
632 |
-
this.update();
|
633 |
-
this.updateNavArrows();
|
634 |
-
return this;
|
635 |
-
},
|
636 |
-
|
637 |
-
setEndDate: function(endDate) {
|
638 |
-
this._process_options({endDate: endDate});
|
639 |
-
this.update();
|
640 |
-
this.updateNavArrows();
|
641 |
-
return this;
|
642 |
-
},
|
643 |
-
|
644 |
-
setDaysOfWeekDisabled: function(daysOfWeekDisabled) {
|
645 |
-
this._process_options({daysOfWeekDisabled: daysOfWeekDisabled});
|
646 |
-
this.update();
|
647 |
-
this.updateNavArrows();
|
648 |
-
return this;
|
649 |
-
},
|
650 |
-
|
651 |
-
setDatesDisabled: function(datesDisabled) {
|
652 |
-
this._process_options({datesDisabled: datesDisabled});
|
653 |
-
this.update();
|
654 |
-
this.updateNavArrows();
|
655 |
-
},
|
656 |
-
|
657 |
-
place: function() {
|
658 |
-
if( this.isInline ) {
|
659 |
-
return this;
|
660 |
-
}
|
661 |
-
var calendarWidth = this.picker.outerWidth(),
|
662 |
-
calendarHeight = this.picker.outerHeight(),
|
663 |
-
visualPadding = 10,
|
664 |
-
windowWidth = $(this.o.container).width(),
|
665 |
-
windowHeight = $(this.o.container).height(),
|
666 |
-
scrollTop = $(this.o.container).scrollTop(),
|
667 |
-
appendOffset = $(this.o.container).offset();
|
668 |
-
|
669 |
-
var parentsZindex = [];
|
670 |
-
this.element.parents().each(function() {
|
671 |
-
var itemZIndex = $(this).css('z-index');
|
672 |
-
if( itemZIndex !== 'auto' && itemZIndex !== 0 ) {
|
673 |
-
parentsZindex.push(parseInt(itemZIndex));
|
674 |
-
}
|
675 |
-
});
|
676 |
-
var zIndex = Math.max.apply(Math, parentsZindex) + 10;
|
677 |
-
var offset = this.component ? this.component.parent().offset() : this.element.offset();
|
678 |
-
var height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);
|
679 |
-
var width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);
|
680 |
-
var left = offset.left - appendOffset.left,
|
681 |
-
top = offset.top - appendOffset.top;
|
682 |
-
|
683 |
-
this.picker.removeClass(
|
684 |
-
'datepicker-orient-top datepicker-orient-bottom ' +
|
685 |
-
'datepicker-orient-right datepicker-orient-left'
|
686 |
-
);
|
687 |
-
|
688 |
-
if( this.o.orientation.x !== 'auto' ) {
|
689 |
-
this.picker.addClass('datepicker-orient-' + this.o.orientation.x);
|
690 |
-
if( this.o.orientation.x === 'right' ) {
|
691 |
-
left -= calendarWidth - width;
|
692 |
-
}
|
693 |
-
}
|
694 |
-
// auto x orientation is best-placement: if it crosses a window
|
695 |
-
// edge, fudge it sideways
|
696 |
-
else {
|
697 |
-
if( offset.left < 0 ) {
|
698 |
-
// component is outside the window on the left side. Move it into visible range
|
699 |
-
this.picker.addClass('datepicker-orient-left');
|
700 |
-
left -= offset.left - visualPadding;
|
701 |
-
} else if( left + calendarWidth > windowWidth ) {
|
702 |
-
// the calendar passes the widow right edge. Align it to component right side
|
703 |
-
this.picker.addClass('datepicker-orient-right');
|
704 |
-
left = offset.left + width - calendarWidth;
|
705 |
-
} else {
|
706 |
-
// Default to left
|
707 |
-
this.picker.addClass('datepicker-orient-left');
|
708 |
-
}
|
709 |
-
}
|
710 |
-
|
711 |
-
// auto y orientation is best-situation: top or bottom, no fudging,
|
712 |
-
// decision based on which shows more of the calendar
|
713 |
-
var yorient = this.o.orientation.y,
|
714 |
-
top_overflow, bottom_overflow;
|
715 |
-
if( yorient === 'auto' ) {
|
716 |
-
top_overflow = -scrollTop + top - calendarHeight;
|
717 |
-
bottom_overflow = scrollTop + windowHeight - (top + height + calendarHeight);
|
718 |
-
if( Math.max(top_overflow, bottom_overflow) === bottom_overflow ) {
|
719 |
-
yorient = 'top';
|
720 |
-
} else {
|
721 |
-
yorient = 'bottom';
|
722 |
-
}
|
723 |
-
}
|
724 |
-
this.picker.addClass('datepicker-orient-' + yorient);
|
725 |
-
if( yorient === 'top' ) {
|
726 |
-
top += height;
|
727 |
-
} else {
|
728 |
-
top -= calendarHeight + parseInt(this.picker.css('padding-top'));
|
729 |
-
}
|
730 |
-
|
731 |
-
if( this.o.rtl ) {
|
732 |
-
var right = windowWidth - (left + width);
|
733 |
-
this.picker.css({
|
734 |
-
top: top,
|
735 |
-
right: right,
|
736 |
-
zIndex: zIndex
|
737 |
-
});
|
738 |
-
} else {
|
739 |
-
this.picker.css({
|
740 |
-
top: top,
|
741 |
-
left: left,
|
742 |
-
zIndex: zIndex
|
743 |
-
});
|
744 |
-
}
|
745 |
-
return this;
|
746 |
-
},
|
747 |
-
|
748 |
-
_allow_update: true,
|
749 |
-
update: function() {
|
750 |
-
if( !this._allow_update ) {
|
751 |
-
return this;
|
752 |
-
}
|
753 |
-
|
754 |
-
var oldDates = this.dates.copy(),
|
755 |
-
dates = [],
|
756 |
-
fromArgs = false;
|
757 |
-
if( arguments.length ) {
|
758 |
-
$.each(arguments, $.proxy(function(i, date) {
|
759 |
-
if( date instanceof Date ) {
|
760 |
-
date = this._local_to_utc(date);
|
761 |
-
}
|
762 |
-
dates.push(date);
|
763 |
-
}, this));
|
764 |
-
fromArgs = true;
|
765 |
-
}
|
766 |
-
else {
|
767 |
-
dates = this.isInput
|
768 |
-
? this.element.val()
|
769 |
-
: this.element.data('date') || this.element.find('input').val();
|
770 |
-
if( dates && this.o.multidate ) {
|
771 |
-
dates = dates.split(this.o.multidateSeparator);
|
772 |
-
} else {
|
773 |
-
dates = [dates];
|
774 |
-
}
|
775 |
-
delete this.element.data().date;
|
776 |
-
}
|
777 |
-
|
778 |
-
dates = $.map(dates, $.proxy(function(date) {
|
779 |
-
return DPGlobal.parseDate(date, this.o.format, this.o.language);
|
780 |
-
}, this));
|
781 |
-
dates = $.grep(dates, $.proxy(function(date) {
|
782 |
-
return (
|
783 |
-
date < this.o.startDate ||
|
784 |
-
date > this.o.endDate || !date
|
785 |
-
);
|
786 |
-
}, this), true);
|
787 |
-
this.dates.replace(dates);
|
788 |
-
|
789 |
-
if( this.dates.length ) {
|
790 |
-
this.viewDate = new Date(this.dates.get(-1));
|
791 |
-
} else if( this.viewDate < this.o.startDate ) {
|
792 |
-
this.viewDate = new Date(this.o.startDate);
|
793 |
-
} else if( this.viewDate > this.o.endDate ) {
|
794 |
-
this.viewDate = new Date(this.o.endDate);
|
795 |
-
}
|
796 |
-
|
797 |
-
if( fromArgs ) {
|
798 |
-
// setting date by clicking
|
799 |
-
this.setValue();
|
800 |
-
}
|
801 |
-
else if( dates.length ) {
|
802 |
-
// setting date by typing
|
803 |
-
if( String(oldDates) !== String(this.dates) ) {
|
804 |
-
this._trigger('changeDate');
|
805 |
-
}
|
806 |
-
}
|
807 |
-
if( !this.dates.length && oldDates.length ) {
|
808 |
-
this._trigger('clearDate');
|
809 |
-
}
|
810 |
-
|
811 |
-
this.fill();
|
812 |
-
return this;
|
813 |
-
},
|
814 |
-
|
815 |
-
fillDow: function() {
|
816 |
-
var dowCnt = this.o.weekStart,
|
817 |
-
html = '<tr>';
|
818 |
-
if( this.o.calendarWeeks ) {
|
819 |
-
this.picker.find('.datepicker-days thead tr:first-child .datepicker-switch')
|
820 |
-
.attr('colspan', function(i, val) {
|
821 |
-
return parseInt(val) + 1;
|
822 |
-
});
|
823 |
-
var cell = '<th class="cw"> </th>';
|
824 |
-
html += cell;
|
825 |
-
}
|
826 |
-
while( dowCnt < this.o.weekStart + 7 ) {
|
827 |
-
html += '<th class="dow">' + dates[this.o.language].daysMin[(dowCnt++) % 7] + '</th>';
|
828 |
-
}
|
829 |
-
html += '</tr>';
|
830 |
-
this.picker.find('.datepicker-days thead').append(html);
|
831 |
-
},
|
832 |
-
|
833 |
-
fillMonths: function() {
|
834 |
-
var html = '',
|
835 |
-
i = 0;
|
836 |
-
while( i < 12 ) {
|
837 |
-
html += '<span class="month">' + dates[this.o.language].monthsShort[i++] + '</span>';
|
838 |
-
}
|
839 |
-
this.picker.find('.datepicker-months td').html(html);
|
840 |
-
},
|
841 |
-
|
842 |
-
setRange: function(range) {
|
843 |
-
if( !range || !range.length ) {
|
844 |
-
delete this.range;
|
845 |
-
} else {
|
846 |
-
this.range = $.map(range, function(d) {
|
847 |
-
return d.valueOf();
|
848 |
-
});
|
849 |
-
}
|
850 |
-
this.fill();
|
851 |
-
},
|
852 |
-
|
853 |
-
getClassNames: function(date) {
|
854 |
-
var cls = [],
|
855 |
-
year = this.viewDate.getUTCFullYear(),
|
856 |
-
month = this.viewDate.getUTCMonth(),
|
857 |
-
today = new Date();
|
858 |
-
if( date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month) ) {
|
859 |
-
cls.push('old');
|
860 |
-
}
|
861 |
-
else if( date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month) ) {
|
862 |
-
cls.push('new');
|
863 |
-
}
|
864 |
-
if( this.focusDate && date.valueOf() === this.focusDate.valueOf() ) {
|
865 |
-
cls.push('focused');
|
866 |
-
}
|
867 |
-
// Compare internal UTC date with local today, not UTC today
|
868 |
-
if( this.o.todayHighlight &&
|
869 |
-
date.getUTCFullYear() === today.getFullYear() &&
|
870 |
-
date.getUTCMonth() === today.getMonth() &&
|
871 |
-
date.getUTCDate() === today.getDate() ) {
|
872 |
-
cls.push('today');
|
873 |
-
}
|
874 |
-
if( this.dates.contains(date) !== -1 ) {
|
875 |
-
cls.push('active');
|
876 |
-
}
|
877 |
-
if( date.valueOf() < this.o.startDate || date.valueOf() > this.o.endDate ||
|
878 |
-
$.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1 ) {
|
879 |
-
cls.push('disabled');
|
880 |
-
}
|
881 |
-
if( this.o.datesDisabled.length > 0 &&
|
882 |
-
$.grep(this.o.datesDisabled, function(d) {
|
883 |
-
return isUTCEquals(date, d);
|
884 |
-
}).length > 0 ) {
|
885 |
-
cls.push('disabled', 'disabled-date');
|
886 |
-
}
|
887 |
-
|
888 |
-
if( this.range ) {
|
889 |
-
if( date > this.range[0] && date < this.range[this.range.length - 1] ) {
|
890 |
-
cls.push('range');
|
891 |
-
}
|
892 |
-
if( $.inArray(date.valueOf(), this.range) !== -1 ) {
|
893 |
-
cls.push('selected');
|
894 |
-
}
|
895 |
-
}
|
896 |
-
return cls;
|
897 |
-
},
|
898 |
-
|
899 |
-
fill: function() {
|
900 |
-
var d = new Date(this.viewDate),
|
901 |
-
year = d.getUTCFullYear(),
|
902 |
-
month = d.getUTCMonth(),
|
903 |
-
startYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,
|
904 |
-
startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,
|
905 |
-
endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,
|
906 |
-
endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,
|
907 |
-
todaytxt = dates[this.o.language].today || dates['en'].today || '',
|
908 |
-
cleartxt = dates[this.o.language].clear || dates['en'].clear || '',
|
909 |
-
tooltip;
|
910 |
-
if( isNaN(year) || isNaN(month) ) {
|
911 |
-
return;
|
912 |
-
}
|
913 |
-
this.picker.find('.datepicker-days thead .datepicker-switch')
|
914 |
-
.text(dates[this.o.language].months[month] + ' ' + year);
|
915 |
-
this.picker.find('tfoot .today')
|
916 |
-
.text(todaytxt)
|
917 |
-
.toggle(this.o.todayBtn !== false);
|
918 |
-
this.picker.find('tfoot .clear')
|
919 |
-
.text(cleartxt)
|
920 |
-
.toggle(this.o.clearBtn !== false);
|
921 |
-
this.updateNavArrows();
|
922 |
-
this.fillMonths();
|
923 |
-
var prevMonth = UTCDate(year, month - 1, 28),
|
924 |
-
day = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());
|
925 |
-
prevMonth.setUTCDate(day);
|
926 |
-
prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7) % 7);
|
927 |
-
var nextMonth = new Date(prevMonth);
|
928 |
-
nextMonth.setUTCDate(nextMonth.getUTCDate() + 42);
|
929 |
-
nextMonth = nextMonth.valueOf();
|
930 |
-
var html = [];
|
931 |
-
var clsName;
|
932 |
-
while( prevMonth.valueOf() < nextMonth ) {
|
933 |
-
if( prevMonth.getUTCDay() === this.o.weekStart ) {
|
934 |
-
html.push('<tr>');
|
935 |
-
if( this.o.calendarWeeks ) {
|
936 |
-
// ISO 8601: First week contains first thursday.
|
937 |
-
// ISO also states week starts on Monday, but we can be more abstract here.
|
938 |
-
var
|
939 |
-
// Start of current week: based on weekstart/current date
|
940 |
-
ws = new Date(+prevMonth + (this.o.weekStart - prevMonth.getUTCDay() - 7) % 7 * 864e5),
|
941 |
-
// Thursday of this week
|
942 |
-
th = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),
|
943 |
-
// First Thursday of year, year from thursday
|
944 |
-
yth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay()) % 7 * 864e5),
|
945 |
-
// Calendar week: ms between thursdays, div ms per day, div 7 days
|
946 |
-
calWeek = (th - yth) / 864e5 / 7 + 1;
|
947 |
-
html.push('<td class="cw">' + calWeek + '</td>');
|
948 |
-
|
949 |
-
}
|
950 |
-
}
|
951 |
-
clsName = this.getClassNames(prevMonth);
|
952 |
-
clsName.push('day');
|
953 |
-
|
954 |
-
if( this.o.beforeShowDay !== $.noop ) {
|
955 |
-
var before = this.o.beforeShowDay(this._utc_to_local(prevMonth));
|
956 |
-
if( before === undefined ) {
|
957 |
-
before = {};
|
958 |
-
} else if( typeof(before) === 'boolean' ) {
|
959 |
-
before = {enabled: before};
|
960 |
-
} else if( typeof(before) === 'string' ) {
|
961 |
-
before = {classes: before};
|
962 |
-
}
|
963 |
-
if( before.enabled === false ) {
|
964 |
-
clsName.push('disabled');
|
965 |
-
}
|
966 |
-
if( before.classes ) {
|
967 |
-
clsName = clsName.concat(before.classes.split(/\s+/));
|
968 |
-
}
|
969 |
-
if( before.tooltip ) {
|
970 |
-
tooltip = before.tooltip;
|
971 |
-
}
|
972 |
-
}
|
973 |
-
|
974 |
-
clsName = $.unique(clsName);
|
975 |
-
html.push('<td class="' + clsName.join(' ') + '"' + (tooltip
|
976 |
-
? ' title="' + tooltip + '"'
|
977 |
-
: '') + '>' + prevMonth.getUTCDate() + '</td>');
|
978 |
-
tooltip = null;
|
979 |
-
if( prevMonth.getUTCDay() === this.o.weekEnd ) {
|
980 |
-
html.push('</tr>');
|
981 |
-
}
|
982 |
-
prevMonth.setUTCDate(prevMonth.getUTCDate() + 1);
|
983 |
-
}
|
984 |
-
this.picker.find('.datepicker-days tbody').empty().append(html.join(''));
|
985 |
-
|
986 |
-
var months = this.picker.find('.datepicker-months')
|
987 |
-
.find('th:eq(1)')
|
988 |
-
.text(year)
|
989 |
-
.end()
|
990 |
-
.find('span').removeClass('active');
|
991 |
-
|
992 |
-
$.each(this.dates, function(i, d) {
|
993 |
-
if( d.getUTCFullYear() === year ) {
|
994 |
-
months.eq(d.getUTCMonth()).addClass('active');
|
995 |
-
}
|
996 |
-
});
|
997 |
-
|
998 |
-
if( year < startYear || year > endYear ) {
|
999 |
-
months.addClass('disabled');
|
1000 |
-
}
|
1001 |
-
if( year === startYear ) {
|
1002 |
-
months.slice(0, startMonth).addClass('disabled');
|
1003 |
-
}
|
1004 |
-
if( year === endYear ) {
|
1005 |
-
months.slice(endMonth + 1).addClass('disabled');
|
1006 |
-
}
|
1007 |
-
|
1008 |
-
if( this.o.beforeShowMonth !== $.noop ) {
|
1009 |
-
var that = this;
|
1010 |
-
$.each(months, function(i, month) {
|
1011 |
-
if( !$(month).hasClass('disabled') ) {
|
1012 |
-
var moDate = new Date(year, i, 1);
|
1013 |
-
var before = that.o.beforeShowMonth(moDate);
|
1014 |
-
if( before === false ) {
|
1015 |
-
$(month).addClass('disabled');
|
1016 |
-
}
|
1017 |
-
}
|
1018 |
-
});
|
1019 |
-
}
|
1020 |
-
|
1021 |
-
html = '';
|
1022 |
-
year = parseInt(year / 10, 10) * 10;
|
1023 |
-
var yearCont = this.picker.find('.datepicker-years')
|
1024 |
-
.find('th:eq(1)')
|
1025 |
-
.text(year + '-' + (year + 9))
|
1026 |
-
.end()
|
1027 |
-
.find('td');
|
1028 |
-
year -= 1;
|
1029 |
-
var years = $.map(this.dates, function(d) {
|
1030 |
-
return d.getUTCFullYear();
|
1031 |
-
}),
|
1032 |
-
classes;
|
1033 |
-
for( var i = -1; i < 11; i++ ) {
|
1034 |
-
classes = ['year'];
|
1035 |
-
if( i === -1 ) {
|
1036 |
-
classes.push('old');
|
1037 |
-
} else if( i === 10 ) {
|
1038 |
-
classes.push('new');
|
1039 |
-
}
|
1040 |
-
if( $.inArray(year, years) !== -1 ) {
|
1041 |
-
classes.push('active');
|
1042 |
-
}
|
1043 |
-
if( year < startYear || year > endYear ) {
|
1044 |
-
classes.push('disabled');
|
1045 |
-
}
|
1046 |
-
html += '<span class="' + classes.join(' ') + '">' + year + '</span>';
|
1047 |
-
year += 1;
|
1048 |
-
}
|
1049 |
-
yearCont.html(html);
|
1050 |
-
},
|
1051 |
-
|
1052 |
-
updateNavArrows: function() {
|
1053 |
-
if( !this._allow_update ) {
|
1054 |
-
return;
|
1055 |
-
}
|
1056 |
-
|
1057 |
-
var d = new Date(this.viewDate),
|
1058 |
-
year = d.getUTCFullYear(),
|
1059 |
-
month = d.getUTCMonth();
|
1060 |
-
switch( this.viewMode ) {
|
1061 |
-
case 0:
|
1062 |
-
if( this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() && month <= this.o.startDate.getUTCMonth() ) {
|
1063 |
-
this.picker.find('.prev').css({visibility: 'hidden'});
|
1064 |
-
}
|
1065 |
-
else {
|
1066 |
-
this.picker.find('.prev').css({visibility: 'visible'});
|
1067 |
-
}
|
1068 |
-
if( this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() && month >= this.o.endDate.getUTCMonth() ) {
|
1069 |
-
this.picker.find('.next').css({visibility: 'hidden'});
|
1070 |
-
}
|
1071 |
-
else {
|
1072 |
-
this.picker.find('.next').css({visibility: 'visible'});
|
1073 |
-
}
|
1074 |
-
break;
|
1075 |
-
case 1:
|
1076 |
-
case 2:
|
1077 |
-
if( this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() ) {
|
1078 |
-
this.picker.find('.prev').css({visibility: 'hidden'});
|
1079 |
-
}
|
1080 |
-
else {
|
1081 |
-
this.picker.find('.prev').css({visibility: 'visible'});
|
1082 |
-
}
|
1083 |
-
if( this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() ) {
|
1084 |
-
this.picker.find('.next').css({visibility: 'hidden'});
|
1085 |
-
}
|
1086 |
-
else {
|
1087 |
-
this.picker.find('.next').css({visibility: 'visible'});
|
1088 |
-
}
|
1089 |
-
break;
|
1090 |
-
}
|
1091 |
-
},
|
1092 |
-
|
1093 |
-
click: function(e) {
|
1094 |
-
e.preventDefault();
|
1095 |
-
var target = $(e.target).closest('span, td, th'),
|
1096 |
-
year, month, day;
|
1097 |
-
if( target.length === 1 ) {
|
1098 |
-
switch( target[0].nodeName.toLowerCase() ) {
|
1099 |
-
case 'th':
|
1100 |
-
switch( target[0].className ) {
|
1101 |
-
case 'datepicker-switch':
|
1102 |
-
this.showMode(1);
|
1103 |
-
break;
|
1104 |
-
case 'prev':
|
1105 |
-
case 'next':
|
1106 |
-
var dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev'
|
1107 |
-
? -1
|
1108 |
-
: 1);
|
1109 |
-
switch( this.viewMode ) {
|
1110 |
-
case 0:
|
1111 |
-
this.viewDate = this.moveMonth(this.viewDate, dir);
|
1112 |
-
this._trigger('changeMonth', this.viewDate);
|
1113 |
-
break;
|
1114 |
-
case 1:
|
1115 |
-
case 2:
|
1116 |
-
this.viewDate = this.moveYear(this.viewDate, dir);
|
1117 |
-
if( this.viewMode === 1 ) {
|
1118 |
-
this._trigger('changeYear', this.viewDate);
|
1119 |
-
}
|
1120 |
-
break;
|
1121 |
-
}
|
1122 |
-
this.fill();
|
1123 |
-
break;
|
1124 |
-
case 'today':
|
1125 |
-
var date = new Date();
|
1126 |
-
date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);
|
1127 |
-
|
1128 |
-
this.showMode(-2);
|
1129 |
-
var which = this.o.todayBtn === 'linked' ? null : 'view';
|
1130 |
-
this._setDate(date, which);
|
1131 |
-
break;
|
1132 |
-
case 'clear':
|
1133 |
-
this.clearDates();
|
1134 |
-
break;
|
1135 |
-
}
|
1136 |
-
break;
|
1137 |
-
case 'span':
|
1138 |
-
if( !target.hasClass('disabled') ) {
|
1139 |
-
this.viewDate.setUTCDate(1);
|
1140 |
-
if( target.hasClass('month') ) {
|
1141 |
-
day = 1;
|
1142 |
-
month = target.parent().find('span').index(target);
|
1143 |
-
year = this.viewDate.getUTCFullYear();
|
1144 |
-
this.viewDate.setUTCMonth(month);
|
1145 |
-
this._trigger('changeMonth', this.viewDate);
|
1146 |
-
if( this.o.minViewMode === 1 ) {
|
1147 |
-
this._setDate(UTCDate(year, month, day));
|
1148 |
-
this.showMode();
|
1149 |
-
} else {
|
1150 |
-
this.showMode(-1);
|
1151 |
-
}
|
1152 |
-
}
|
1153 |
-
else {
|
1154 |
-
day = 1;
|
1155 |
-
month = 0;
|
1156 |
-
year = parseInt(target.text(), 10) || 0;
|
1157 |
-
this.viewDate.setUTCFullYear(year);
|
1158 |
-
this._trigger('changeYear', this.viewDate);
|
1159 |
-
if( this.o.minViewMode === 2 ) {
|
1160 |
-
this._setDate(UTCDate(year, month, day));
|
1161 |
-
}
|
1162 |
-
this.showMode(-1);
|
1163 |
-
}
|
1164 |
-
this.fill();
|
1165 |
-
}
|
1166 |
-
break;
|
1167 |
-
case 'td':
|
1168 |
-
if( target.hasClass('day') && !target.hasClass('disabled') ) {
|
1169 |
-
day = parseInt(target.text(), 10) || 1;
|
1170 |
-
year = this.viewDate.getUTCFullYear();
|
1171 |
-
month = this.viewDate.getUTCMonth();
|
1172 |
-
if( target.hasClass('old') ) {
|
1173 |
-
if( month === 0 ) {
|
1174 |
-
month = 11;
|
1175 |
-
year -= 1;
|
1176 |
-
}
|
1177 |
-
else {
|
1178 |
-
month -= 1;
|
1179 |
-
}
|
1180 |
-
}
|
1181 |
-
else if( target.hasClass('new') ) {
|
1182 |
-
if( month === 11 ) {
|
1183 |
-
month = 0;
|
1184 |
-
year += 1;
|
1185 |
-
}
|
1186 |
-
else {
|
1187 |
-
month += 1;
|
1188 |
-
}
|
1189 |
-
}
|
1190 |
-
this._setDate(UTCDate(year, month, day));
|
1191 |
-
}
|
1192 |
-
break;
|
1193 |
-
}
|
1194 |
-
}
|
1195 |
-
if( this.picker.is(':visible') && this._focused_from ) {
|
1196 |
-
$(this._focused_from).focus();
|
1197 |
-
}
|
1198 |
-
delete this._focused_from;
|
1199 |
-
},
|
1200 |
-
|
1201 |
-
_toggle_multidate: function(date) {
|
1202 |
-
var ix = this.dates.contains(date);
|
1203 |
-
if( !date ) {
|
1204 |
-
this.dates.clear();
|
1205 |
-
}
|
1206 |
-
|
1207 |
-
if( ix !== -1 ) {
|
1208 |
-
if( this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive ) {
|
1209 |
-
this.dates.remove(ix);
|
1210 |
-
}
|
1211 |
-
} else if( this.o.multidate === false ) {
|
1212 |
-
this.dates.clear();
|
1213 |
-
this.dates.push(date);
|
1214 |
-
}
|
1215 |
-
else {
|
1216 |
-
this.dates.push(date);
|
1217 |
-
}
|
1218 |
-
|
1219 |
-
if( typeof this.o.multidate === 'number' ) {
|
1220 |
-
while( this.dates.length > this.o.multidate ) {
|
1221 |
-
this.dates.remove(0);
|
1222 |
-
}
|
1223 |
-
}
|
1224 |
-
},
|
1225 |
-
|
1226 |
-
_setDate: function(date, which) {
|
1227 |
-
if( !which || which === 'date' ) {
|
1228 |
-
this._toggle_multidate(date && new Date(date));
|
1229 |
-
}
|
1230 |
-
if( !which || which === 'view' ) {
|
1231 |
-
this.viewDate = date && new Date(date);
|
1232 |
-
}
|
1233 |
-
|
1234 |
-
this.fill();
|
1235 |
-
this.setValue();
|
1236 |
-
if( !which || which !== 'view' ) {
|
1237 |
-
this._trigger('changeDate');
|
1238 |
-
}
|
1239 |
-
var element;
|
1240 |
-
if( this.isInput ) {
|
1241 |
-
element = this.element;
|
1242 |
-
}
|
1243 |
-
else if( this.component ) {
|
1244 |
-
element = this.element.find('input');
|
1245 |
-
}
|
1246 |
-
if( element ) {
|
1247 |
-
element.change();
|
1248 |
-
}
|
1249 |
-
if( this.o.autoclose && (!which || which === 'date') ) {
|
1250 |
-
this.hide();
|
1251 |
-
}
|
1252 |
-
},
|
1253 |
-
|
1254 |
-
moveMonth: function(date, dir) {
|
1255 |
-
if( !date ) {
|
1256 |
-
return undefined;
|
1257 |
-
}
|
1258 |
-
if( !dir ) {
|
1259 |
-
return date;
|
1260 |
-
}
|
1261 |
-
var new_date = new Date(date.valueOf()),
|
1262 |
-
day = new_date.getUTCDate(),
|
1263 |
-
month = new_date.getUTCMonth(),
|
1264 |
-
mag = Math.abs(dir),
|
1265 |
-
new_month, test;
|
1266 |
-
dir = dir > 0 ? 1 : -1;
|
1267 |
-
if( mag === 1 ) {
|
1268 |
-
test = dir === -1
|
1269 |
-
// If going back one month, make sure month is not current month
|
1270 |
-
// (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)
|
1271 |
-
? function() {
|
1272 |
-
return new_date.getUTCMonth() === month;
|
1273 |
-
}
|
1274 |
-
// If going forward one month, make sure month is as expected
|
1275 |
-
// (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)
|
1276 |
-
: function() {
|
1277 |
-
return new_date.getUTCMonth() !== new_month;
|
1278 |
-
};
|
1279 |
-
new_month = month + dir;
|
1280 |
-
new_date.setUTCMonth(new_month);
|
1281 |
-
// Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11
|
1282 |
-
if( new_month < 0 || new_month > 11 ) {
|
1283 |
-
new_month = (new_month + 12) % 12;
|
1284 |
-
}
|
1285 |
-
}
|
1286 |
-
else {
|
1287 |
-
// For magnitudes >1, move one month at a time...
|
1288 |
-
for( var i = 0; i < mag; i++ )
|
1289 |
-
// ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...
|
1290 |
-
{
|
1291 |
-
new_date = this.moveMonth(new_date, dir);
|
1292 |
-
}
|
1293 |
-
// ...then reset the day, keeping it in the new month
|
1294 |
-
new_month = new_date.getUTCMonth();
|
1295 |
-
new_date.setUTCDate(day);
|
1296 |
-
test = function() {
|
1297 |
-
return new_month !== new_date.getUTCMonth();
|
1298 |
-
};
|
1299 |
-
}
|
1300 |
-
// Common date-resetting loop -- if date is beyond end of month, make it
|
1301 |
-
// end of month
|
1302 |
-
while( test() ) {
|
1303 |
-
new_date.setUTCDate(--day);
|
1304 |
-
new_date.setUTCMonth(new_month);
|
1305 |
-
}
|
1306 |
-
return new_date;
|
1307 |
-
},
|
1308 |
-
|
1309 |
-
moveYear: function(date, dir) {
|
1310 |
-
return this.moveMonth(date, dir * 12);
|
1311 |
-
},
|
1312 |
-
|
1313 |
-
dateWithinRange: function(date) {
|
1314 |
-
return date >= this.o.startDate && date <= this.o.endDate;
|
1315 |
-
},
|
1316 |
-
|
1317 |
-
keydown: function(e) {
|
1318 |
-
if( !this.picker.is(':visible') ) {
|
1319 |
-
if( e.keyCode === 40 || e.keyCode === 27 ) // allow down to re-show picker
|
1320 |
-
{
|
1321 |
-
this.show();
|
1322 |
-
}
|
1323 |
-
return;
|
1324 |
-
}
|
1325 |
-
var dateChanged = false,
|
1326 |
-
dir, newDate, newViewDate,
|
1327 |
-
focusDate = this.focusDate || this.viewDate;
|
1328 |
-
switch( e.keyCode ) {
|
1329 |
-
case 27: // escape
|
1330 |
-
if( this.focusDate ) {
|
1331 |
-
this.focusDate = null;
|
1332 |
-
this.viewDate = this.dates.get(-1) || this.viewDate;
|
1333 |
-
this.fill();
|
1334 |
-
}
|
1335 |
-
else {
|
1336 |
-
this.hide();
|
1337 |
-
}
|
1338 |
-
e.preventDefault();
|
1339 |
-
break;
|
1340 |
-
case 37: // left
|
1341 |
-
case 39: // right
|
1342 |
-
if( !this.o.keyboardNavigation ) {
|
1343 |
-
break;
|
1344 |
-
}
|
1345 |
-
dir = e.keyCode === 37 ? -1 : 1;
|
1346 |
-
if( e.ctrlKey ) {
|
1347 |
-
newDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir);
|
1348 |
-
newViewDate = this.moveYear(focusDate, dir);
|
1349 |
-
this._trigger('changeYear', this.viewDate);
|
1350 |
-
}
|
1351 |
-
else if( e.shiftKey ) {
|
1352 |
-
newDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir);
|
1353 |
-
newViewDate = this.moveMonth(focusDate, dir);
|
1354 |
-
this._trigger('changeMonth', this.viewDate);
|
1355 |
-
}
|
1356 |
-
else {
|
1357 |
-
newDate = new Date(this.dates.get(-1) || UTCToday());
|
1358 |
-
newDate.setUTCDate(newDate.getUTCDate() + dir);
|
1359 |
-
newViewDate = new Date(focusDate);
|
1360 |
-
newViewDate.setUTCDate(focusDate.getUTCDate() + dir);
|
1361 |
-
}
|
1362 |
-
if( this.dateWithinRange(newViewDate) ) {
|
1363 |
-
this.focusDate = this.viewDate = newViewDate;
|
1364 |
-
this.setValue();
|
1365 |
-
this.fill();
|
1366 |
-
e.preventDefault();
|
1367 |
-
}
|
1368 |
-
break;
|
1369 |
-
case 38: // up
|
1370 |
-
case 40: // down
|
1371 |
-
if( !this.o.keyboardNavigation ) {
|
1372 |
-
break;
|
1373 |
-
}
|
1374 |
-
dir = e.keyCode === 38 ? -1 : 1;
|
1375 |
-
if( e.ctrlKey ) {
|
1376 |
-
newDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir);
|
1377 |
-
newViewDate = this.moveYear(focusDate, dir);
|
1378 |
-
this._trigger('changeYear', this.viewDate);
|
1379 |
-
}
|
1380 |
-
else if( e.shiftKey ) {
|
1381 |
-
newDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir);
|
1382 |
-
newViewDate = this.moveMonth(focusDate, dir);
|
1383 |
-
this._trigger('changeMonth', this.viewDate);
|
1384 |
-
}
|
1385 |
-
else {
|
1386 |
-
newDate = new Date(this.dates.get(-1) || UTCToday());
|
1387 |
-
newDate.setUTCDate(newDate.getUTCDate() + dir * 7);
|
1388 |
-
newViewDate = new Date(focusDate);
|
1389 |
-
newViewDate.setUTCDate(focusDate.getUTCDate() + dir * 7);
|
1390 |
-
}
|
1391 |
-
if( this.dateWithinRange(newViewDate) ) {
|
1392 |
-
this.focusDate = this.viewDate = newViewDate;
|
1393 |
-
this.setValue();
|
1394 |
-
this.fill();
|
1395 |
-
e.preventDefault();
|
1396 |
-
}
|
1397 |
-
break;
|
1398 |
-
case 32: // spacebar
|
1399 |
-
// Spacebar is used in manually typing dates in some formats.
|
1400 |
-
// As such, its behavior should not be hijacked.
|
1401 |
-
break;
|
1402 |
-
case 13: // enter
|
1403 |
-
focusDate = this.focusDate || this.dates.get(-1) || this.viewDate;
|
1404 |
-
if( this.o.keyboardNavigation ) {
|
1405 |
-
this._toggle_multidate(focusDate);
|
1406 |
-
dateChanged = true;
|
1407 |
-
}
|
1408 |
-
this.focusDate = null;
|
1409 |
-
this.viewDate = this.dates.get(-1) || this.viewDate;
|
1410 |
-
this.setValue();
|
1411 |
-
this.fill();
|
1412 |
-
if( this.picker.is(':visible') ) {
|
1413 |
-
e.preventDefault();
|
1414 |
-
if( typeof e.stopPropagation === 'function' ) {
|
1415 |
-
e.stopPropagation(); // All modern browsers, IE9+
|
1416 |
-
} else {
|
1417 |
-
e.cancelBubble = true; // IE6,7,8 ignore "stopPropagation"
|
1418 |
-
}
|
1419 |
-
if( this.o.autoclose ) {
|
1420 |
-
this.hide();
|
1421 |
-
}
|
1422 |
-
}
|
1423 |
-
break;
|
1424 |
-
case 9: // tab
|
1425 |
-
this.focusDate = null;
|
1426 |
-
this.viewDate = this.dates.get(-1) || this.viewDate;
|
1427 |
-
this.fill();
|
1428 |
-
this.hide();
|
1429 |
-
break;
|
1430 |
-
}
|
1431 |
-
if( dateChanged ) {
|
1432 |
-
if( this.dates.length ) {
|
1433 |
-
this._trigger('changeDate');
|
1434 |
-
} else {
|
1435 |
-
this._trigger('clearDate');
|
1436 |
-
}
|
1437 |
-
var element;
|
1438 |
-
if( this.isInput ) {
|
1439 |
-
element = this.element;
|
1440 |
-
}
|
1441 |
-
else if( this.component ) {
|
1442 |
-
element = this.element.find('input');
|
1443 |
-
}
|
1444 |
-
if( element ) {
|
1445 |
-
element.change();
|
1446 |
-
}
|
1447 |
-
}
|
1448 |
-
},
|
1449 |
-
|
1450 |
-
showMode: function(dir) {
|
1451 |
-
if( dir ) {
|
1452 |
-
this.viewMode = Math.max(this.o.minViewMode, Math.min(2, this.viewMode + dir));
|
1453 |
-
}
|
1454 |
-
this.picker
|
1455 |
-
.children('div')
|
1456 |
-
.hide()
|
1457 |
-
.filter('.datepicker-' + DPGlobal.modes[this.viewMode].clsName)
|
1458 |
-
.css('display', 'block');
|
1459 |
-
this.updateNavArrows();
|
1460 |
-
}
|
1461 |
-
};
|
1462 |
-
|
1463 |
-
var DateRangePicker = function(element, options) {
|
1464 |
-
this.element = $(element);
|
1465 |
-
this.inputs = $.map(options.inputs, function(i) {
|
1466 |
-
return i.jquery ? i[0] : i;
|
1467 |
-
});
|
1468 |
-
delete options.inputs;
|
1469 |
-
|
1470 |
-
datepickerPlugin.call($(this.inputs), options)
|
1471 |
-
.on('changeDate', $.proxy(this.dateUpdated, this));
|
1472 |
-
|
1473 |
-
this.pickers = $.map(this.inputs, function(i) {
|
1474 |
-
return $(i).data('datepicker');
|
1475 |
-
});
|
1476 |
-
this.updateDates();
|
1477 |
-
};
|
1478 |
-
DateRangePicker.prototype = {
|
1479 |
-
updateDates: function() {
|
1480 |
-
this.dates = $.map(this.pickers, function(i) {
|
1481 |
-
return i.getUTCDate();
|
1482 |
-
});
|
1483 |
-
this.updateRanges();
|
1484 |
-
},
|
1485 |
-
updateRanges: function() {
|
1486 |
-
var range = $.map(this.dates, function(d) {
|
1487 |
-
return d.valueOf();
|
1488 |
-
});
|
1489 |
-
$.each(this.pickers, function(i, p) {
|
1490 |
-
p.setRange(range);
|
1491 |
-
});
|
1492 |
-
},
|
1493 |
-
dateUpdated: function(e) {
|
1494 |
-
// `this.updating` is a workaround for preventing infinite recursion
|
1495 |
-
// between `changeDate` triggering and `setUTCDate` calling. Until
|
1496 |
-
// there is a better mechanism.
|
1497 |
-
if( this.updating ) {
|
1498 |
-
return;
|
1499 |
-
}
|
1500 |
-
this.updating = true;
|
1501 |
-
|
1502 |
-
var dp = $(e.target).data('datepicker'),
|
1503 |
-
new_date = dp.getUTCDate(),
|
1504 |
-
i = $.inArray(e.target, this.inputs),
|
1505 |
-
j = i - 1,
|
1506 |
-
k = i + 1,
|
1507 |
-
l = this.inputs.length;
|
1508 |
-
if( i === -1 ) {
|
1509 |
-
return;
|
1510 |
-
}
|
1511 |
-
|
1512 |
-
$.each(this.pickers, function(i, p) {
|
1513 |
-
if( !p.getUTCDate() ) {
|
1514 |
-
p.setUTCDate(new_date);
|
1515 |
-
}
|
1516 |
-
});
|
1517 |
-
|
1518 |
-
if( new_date < this.dates[j] ) {
|
1519 |
-
// Date being moved earlier/left
|
1520 |
-
while( j >= 0 && new_date < this.dates[j] ) {
|
1521 |
-
this.pickers[j--].setUTCDate(new_date);
|
1522 |
-
}
|
1523 |
-
}
|
1524 |
-
else if( new_date > this.dates[k] ) {
|
1525 |
-
// Date being moved later/right
|
1526 |
-
while( k < l && new_date > this.dates[k] ) {
|
1527 |
-
this.pickers[k++].setUTCDate(new_date);
|
1528 |
-
}
|
1529 |
-
}
|
1530 |
-
this.updateDates();
|
1531 |
-
|
1532 |
-
delete this.updating;
|
1533 |
-
},
|
1534 |
-
remove: function() {
|
1535 |
-
$.map(this.pickers, function(p) {
|
1536 |
-
p.remove();
|
1537 |
-
});
|
1538 |
-
delete this.element.data().datepicker;
|
1539 |
-
}
|
1540 |
-
};
|
1541 |
-
|
1542 |
-
function opts_from_el(el, prefix) {
|
1543 |
-
// Derive options from element data-attrs
|
1544 |
-
var data = $(el).data(),
|
1545 |
-
out = {}, inkey,
|
1546 |
-
replace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');
|
1547 |
-
prefix = new RegExp('^' + prefix.toLowerCase());
|
1548 |
-
function re_lower(_, a) {
|
1549 |
-
return a.toLowerCase();
|
1550 |
-
}
|
1551 |
-
|
1552 |
-
for( var key in data ) {
|
1553 |
-
if( prefix.test(key) ) {
|
1554 |
-
inkey = key.replace(replace, re_lower);
|
1555 |
-
out[inkey] = data[key];
|
1556 |
-
}
|
1557 |
-
}
|
1558 |
-
return out;
|
1559 |
-
}
|
1560 |
-
|
1561 |
-
function opts_from_locale(lang) {
|
1562 |
-
// Derive options from locale plugins
|
1563 |
-
var out = {};
|
1564 |
-
// Check if "de-DE" style date is available, if not language should
|
1565 |
-
// fallback to 2 letter code eg "de"
|
1566 |
-
if( !dates[lang] ) {
|
1567 |
-
lang = lang.split('-')[0];
|
1568 |
-
if( !dates[lang] ) {
|
1569 |
-
return;
|
1570 |
-
}
|
1571 |
-
}
|
1572 |
-
var d = dates[lang];
|
1573 |
-
$.each(locale_opts, function(i, k) {
|
1574 |
-
if( k in d ) {
|
1575 |
-
out[k] = d[k];
|
1576 |
-
}
|
1577 |
-
});
|
1578 |
-
return out;
|
1579 |
-
}
|
1580 |
-
|
1581 |
-
var old = $.fn.datepicker;
|
1582 |
-
var datepickerPlugin = function(option) {
|
1583 |
-
var args = Array.apply(null, arguments);
|
1584 |
-
args.shift();
|
1585 |
-
var internal_return;
|
1586 |
-
this.each(function() {
|
1587 |
-
var $this = $(this),
|
1588 |
-
data = $this.data('datepicker'),
|
1589 |
-
options = typeof option === 'object' && option;
|
1590 |
-
if( !data ) {
|
1591 |
-
var elopts = opts_from_el(this, 'date'),
|
1592 |
-
// Preliminary otions
|
1593 |
-
xopts = $.extend({}, defaults, elopts, options),
|
1594 |
-
locopts = opts_from_locale(xopts.language),
|
1595 |
-
// Options priority: js args, data-attrs, locales, defaults
|
1596 |
-
opts = $.extend({}, defaults, locopts, elopts, options);
|
1597 |
-
if( $this.hasClass('input-daterange') || opts.inputs ) {
|
1598 |
-
var ropts = {
|
1599 |
-
inputs: opts.inputs || $this.find('input').toArray()
|
1600 |
-
};
|
1601 |
-
$this.data('datepicker', (data = new DateRangePicker(this, $.extend(opts, ropts))));
|
1602 |
-
}
|
1603 |
-
else {
|
1604 |
-
$this.data('datepicker', (data = new Datepicker(this, opts)));
|
1605 |
-
}
|
1606 |
-
}
|
1607 |
-
if( typeof option === 'string' && typeof data[option] === 'function' ) {
|
1608 |
-
internal_return = data[option].apply(data, args);
|
1609 |
-
if( internal_return !== undefined ) {
|
1610 |
-
return false;
|
1611 |
-
}
|
1612 |
-
}
|
1613 |
-
});
|
1614 |
-
if( internal_return !== undefined ) {
|
1615 |
-
return internal_return;
|
1616 |
-
} else {
|
1617 |
-
return this;
|
1618 |
-
}
|
1619 |
-
};
|
1620 |
-
$.fn.datepicker = datepickerPlugin;
|
1621 |
-
|
1622 |
-
var defaults = $.fn.datepicker.defaults = {
|
1623 |
-
autoclose: false,
|
1624 |
-
beforeShowDay: $.noop,
|
1625 |
-
beforeShowMonth: $.noop,
|
1626 |
-
calendarWeeks: false,
|
1627 |
-
clearBtn: false,
|
1628 |
-
toggleActive: false,
|
1629 |
-
daysOfWeekDisabled: [],
|
1630 |
-
datesDisabled: [],
|
1631 |
-
endDate: Infinity,
|
1632 |
-
forceParse: true,
|
1633 |
-
format: 'mm/dd/yyyy',
|
1634 |
-
keyboardNavigation: true,
|
1635 |
-
language: 'en',
|
1636 |
-
minViewMode: 0,
|
1637 |
-
multidate: false,
|
1638 |
-
multidateSeparator: ',',
|
1639 |
-
orientation: "auto",
|
1640 |
-
rtl: false,
|
1641 |
-
startDate: -Infinity,
|
1642 |
-
startView: 0,
|
1643 |
-
todayBtn: false,
|
1644 |
-
todayHighlight: false,
|
1645 |
-
weekStart: 0,
|
1646 |
-
disableTouchKeyboard: false,
|
1647 |
-
enableOnReadonly: true,
|
1648 |
-
container: 'body',
|
1649 |
-
immediateUpdates: false
|
1650 |
-
};
|
1651 |
-
var locale_opts = $.fn.datepicker.locale_opts = [
|
1652 |
-
'format',
|
1653 |
-
'rtl',
|
1654 |
-
'weekStart'
|
1655 |
-
];
|
1656 |
-
$.fn.datepicker.Constructor = Datepicker;
|
1657 |
-
var dates = $.fn.datepicker.dates = {
|
1658 |
-
en: {
|
1659 |
-
days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
|
1660 |
-
daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
|
1661 |
-
daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
|
1662 |
-
months: [
|
1663 |
-
"January",
|
1664 |
-
"February",
|
1665 |
-
"March",
|
1666 |
-
"April",
|
1667 |
-
"May",
|
1668 |
-
"June",
|
1669 |
-
"July",
|
1670 |
-
"August",
|
1671 |
-
"September",
|
1672 |
-
"October",
|
1673 |
-
"November",
|
1674 |
-
"December"
|
1675 |
-
],
|
1676 |
-
monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
|
1677 |
-
today: "Today",
|
1678 |
-
clear: "Clear"
|
1679 |
-
},
|
1680 |
-
ru: {
|
1681 |
-
days: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"],
|
1682 |
-
daysShort: ["Вск", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Суб"],
|
1683 |
-
daysMin: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"],
|
1684 |
-
months: [
|
1685 |
-
"Январь",
|
1686 |
-
"Февраль",
|
1687 |
-
"Март",
|
1688 |
-
"Апрель",
|
1689 |
-
"Май",
|
1690 |
-
"Июнь",
|
1691 |
-
"Июль",
|
1692 |
-
"Август",
|
1693 |
-
"Сентябрь",
|
1694 |
-
"Октябрь",
|
1695 |
-
"Ноябрь",
|
1696 |
-
"Декабрь"
|
1697 |
-
],
|
1698 |
-
monthsShort: ["Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"],
|
1699 |
-
today: "Сегодня",
|
1700 |
-
clear: "Очистить",
|
1701 |
-
format: "dd/mm/yyyy",
|
1702 |
-
weekStart: 1,
|
1703 |
-
monthsTitle: 'Месяцы'
|
1704 |
-
}
|
1705 |
-
};
|
1706 |
-
|
1707 |
-
var DPGlobal = {
|
1708 |
-
modes: [
|
1709 |
-
{
|
1710 |
-
clsName: 'days',
|
1711 |
-
navFnc: 'Month',
|
1712 |
-
navStep: 1
|
1713 |
-
},
|
1714 |
-
{
|
1715 |
-
clsName: 'months',
|
1716 |
-
navFnc: 'FullYear',
|
1717 |
-
navStep: 1
|
1718 |
-
},
|
1719 |
-
{
|
1720 |
-
clsName: 'years',
|
1721 |
-
navFnc: 'FullYear',
|
1722 |
-
navStep: 10
|
1723 |
-
}
|
1724 |
-
],
|
1725 |
-
isLeapYear: function(year) {
|
1726 |
-
return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0));
|
1727 |
-
},
|
1728 |
-
getDaysInMonth: function(year, month) {
|
1729 |
-
return [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];
|
1730 |
-
},
|
1731 |
-
validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,
|
1732 |
-
nonpunctuation: /[^ -\/:-@\[\u3400-\u9fff-`{-~\t\n\r]+/g,
|
1733 |
-
parseFormat: function(format) {
|
1734 |
-
// IE treats \0 as a string end in inputs (truncating the value),
|
1735 |
-
// so it's a bad format delimiter, anyway
|
1736 |
-
var separators = format.replace(this.validParts, '\0').split('\0'),
|
1737 |
-
parts = format.match(this.validParts);
|
1738 |
-
if( !separators || !separators.length || !parts || parts.length === 0 ) {
|
1739 |
-
throw new Error("Invalid date format.");
|
1740 |
-
}
|
1741 |
-
return {
|
1742 |
-
separators: separators,
|
1743 |
-
parts: parts
|
1744 |
-
};
|
1745 |
-
},
|
1746 |
-
parseDate: function(date, format, language) {
|
1747 |
-
if( !date ) {
|
1748 |
-
return undefined;
|
1749 |
-
}
|
1750 |
-
if( date instanceof Date ) {
|
1751 |
-
return date;
|
1752 |
-
}
|
1753 |
-
if( typeof format === 'string' ) {
|
1754 |
-
format = DPGlobal.parseFormat(format);
|
1755 |
-
}
|
1756 |
-
var part_re = /([\-+]\d+)([dmwy])/,
|
1757 |
-
parts = date.match(/([\-+]\d+)([dmwy])/g),
|
1758 |
-
part, dir, i;
|
1759 |
-
if( /^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(date) ) {
|
1760 |
-
date = new Date();
|
1761 |
-
for( i = 0; i < parts.length; i++ ) {
|
1762 |
-
part = part_re.exec(parts[i]);
|
1763 |
-
dir = parseInt(part[1]);
|
1764 |
-
switch( part[2] ) {
|
1765 |
-
case 'd':
|
1766 |
-
date.setUTCDate(date.getUTCDate() + dir);
|
1767 |
-
break;
|
1768 |
-
case 'm':
|
1769 |
-
date = Datepicker.prototype.moveMonth.call(Datepicker.prototype, date, dir);
|
1770 |
-
break;
|
1771 |
-
case 'w':
|
1772 |
-
date.setUTCDate(date.getUTCDate() + dir * 7);
|
1773 |
-
break;
|
1774 |
-
case 'y':
|
1775 |
-
date = Datepicker.prototype.moveYear.call(Datepicker.prototype, date, dir);
|
1776 |
-
break;
|
1777 |
-
}
|
1778 |
-
}
|
1779 |
-
return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0);
|
1780 |
-
}
|
1781 |
-
parts = date && date.match(this.nonpunctuation) || [];
|
1782 |
-
date = new Date();
|
1783 |
-
var parsed = {},
|
1784 |
-
setters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],
|
1785 |
-
setters_map = {
|
1786 |
-
yyyy: function(d, v) {
|
1787 |
-
return d.setUTCFullYear(v);
|
1788 |
-
},
|
1789 |
-
yy: function(d, v) {
|
1790 |
-
return d.setUTCFullYear(2000 + v);
|
1791 |
-
},
|
1792 |
-
m: function(d, v) {
|
1793 |
-
if( isNaN(d) ) {
|
1794 |
-
return d;
|
1795 |
-
}
|
1796 |
-
v -= 1;
|
1797 |
-
while( v < 0 ) {
|
1798 |
-
v += 12;
|
1799 |
-
}
|
1800 |
-
v %= 12;
|
1801 |
-
d.setUTCMonth(v);
|
1802 |
-
while( d.getUTCMonth() !== v ) {
|
1803 |
-
d.setUTCDate(d.getUTCDate() - 1);
|
1804 |
-
}
|
1805 |
-
return d;
|
1806 |
-
},
|
1807 |
-
d: function(d, v) {
|
1808 |
-
return d.setUTCDate(v);
|
1809 |
-
}
|
1810 |
-
},
|
1811 |
-
val, filtered;
|
1812 |
-
setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];
|
1813 |
-
setters_map['dd'] = setters_map['d'];
|
1814 |
-
date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);
|
1815 |
-
var fparts = format.parts.slice();
|
1816 |
-
// Remove noop parts
|
1817 |
-
if( parts.length !== fparts.length ) {
|
1818 |
-
fparts = $(fparts).filter(function(i, p) {
|
1819 |
-
return $.inArray(p, setters_order) !== -1;
|
1820 |
-
}).toArray();
|
1821 |
-
}
|
1822 |
-
// Process remainder
|
1823 |
-
function match_part() {
|
1824 |
-
var m = this.slice(0, parts[i].length),
|
1825 |
-
p = parts[i].slice(0, m.length);
|
1826 |
-
return m.toLowerCase() === p.toLowerCase();
|
1827 |
-
}
|
1828 |
-
|
1829 |
-
if( parts.length === fparts.length ) {
|
1830 |
-
var cnt;
|
1831 |
-
for( i = 0, cnt = fparts.length; i < cnt; i++ ) {
|
1832 |
-
val = parseInt(parts[i], 10);
|
1833 |
-
part = fparts[i];
|
1834 |
-
if( isNaN(val) ) {
|
1835 |
-
switch( part ) {
|
1836 |
-
case 'MM':
|
1837 |
-
filtered = $(dates[language].months).filter(match_part);
|
1838 |
-
val = $.inArray(filtered[0], dates[language].months) + 1;
|
1839 |
-
break;
|
1840 |
-
case 'M':
|
1841 |
-
filtered = $(dates[language].monthsShort).filter(match_part);
|
1842 |
-
val = $.inArray(filtered[0], dates[language].monthsShort) + 1;
|
1843 |
-
break;
|
1844 |
-
}
|
1845 |
-
}
|
1846 |
-
parsed[part] = val;
|
1847 |
-
}
|
1848 |
-
var _date, s;
|
1849 |
-
for( i = 0; i < setters_order.length; i++ ) {
|
1850 |
-
s = setters_order[i];
|
1851 |
-
if( s in parsed && !isNaN(parsed[s]) ) {
|
1852 |
-
_date = new Date(date);
|
1853 |
-
setters_map[s](_date, parsed[s]);
|
1854 |
-
if( !isNaN(_date) ) {
|
1855 |
-
date = _date;
|
1856 |
-
}
|
1857 |
-
}
|
1858 |
-
}
|
1859 |
-
}
|
1860 |
-
return date;
|
1861 |
-
},
|
1862 |
-
formatDate: function(date, format, language) {
|
1863 |
-
if( !date ) {
|
1864 |
-
return '';
|
1865 |
-
}
|
1866 |
-
if( typeof format === 'string' ) {
|
1867 |
-
format = DPGlobal.parseFormat(format);
|
1868 |
-
}
|
1869 |
-
var val = {
|
1870 |
-
d: date.getUTCDate(),
|
1871 |
-
D: dates[language].daysShort[date.getUTCDay()],
|
1872 |
-
DD: dates[language].days[date.getUTCDay()],
|
1873 |
-
m: date.getUTCMonth() + 1,
|
1874 |
-
M: dates[language].monthsShort[date.getUTCMonth()],
|
1875 |
-
MM: dates[language].months[date.getUTCMonth()],
|
1876 |
-
yy: date.getUTCFullYear().toString().substring(2),
|
1877 |
-
yyyy: date.getUTCFullYear()
|
1878 |
-
};
|
1879 |
-
val.dd = (val.d < 10 ? '0' : '') + val.d;
|
1880 |
-
val.mm = (val.m < 10 ? '0' : '') + val.m;
|
1881 |
-
date = [];
|
1882 |
-
var seps = $.extend([], format.separators);
|
1883 |
-
for( var i = 0, cnt = format.parts.length; i <= cnt; i++ ) {
|
1884 |
-
if( seps.length ) {
|
1885 |
-
date.push(seps.shift());
|
1886 |
-
}
|
1887 |
-
date.push(val[format.parts[i]]);
|
1888 |
-
}
|
1889 |
-
return date.join('');
|
1890 |
-
},
|
1891 |
-
headTemplate: '<thead>' +
|
1892 |
-
'<tr>' +
|
1893 |
-
'<th class="prev">«</th>' +
|
1894 |
-
'<th colspan="5" class="datepicker-switch"></th>' +
|
1895 |
-
'<th class="next">»</th>' +
|
1896 |
-
'</tr>' +
|
1897 |
-
'</thead>',
|
1898 |
-
contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>',
|
1899 |
-
footTemplate: '<tfoot>' +
|
1900 |
-
'<tr>' +
|
1901 |
-
'<th colspan="7" class="today"></th>' +
|
1902 |
-
'</tr>' +
|
1903 |
-
'<tr>' +
|
1904 |
-
'<th colspan="7" class="clear"></th>' +
|
1905 |
-
'</tr>' +
|
1906 |
-
'</tfoot>'
|
1907 |
-
};
|
1908 |
-
DPGlobal.template = '<div class="datepicker">' +
|
1909 |
-
'<div class="datepicker-days">' +
|
1910 |
-
'<table class=" table-condensed">' +
|
1911 |
-
DPGlobal.headTemplate +
|
1912 |
-
'<tbody></tbody>' +
|
1913 |
-
DPGlobal.footTemplate +
|
1914 |
-
'</table>' +
|
1915 |
-
'</div>' +
|
1916 |
-
'<div class="datepicker-months">' +
|
1917 |
-
'<table class="table-condensed">' +
|
1918 |
-
DPGlobal.headTemplate +
|
1919 |
-
DPGlobal.contTemplate +
|
1920 |
-
DPGlobal.footTemplate +
|
1921 |
-
'</table>' +
|
1922 |
-
'</div>' +
|
1923 |
-
'<div class="datepicker-years">' +
|
1924 |
-
'<table class="table-condensed">' +
|
1925 |
-
DPGlobal.headTemplate +
|
1926 |
-
DPGlobal.contTemplate +
|
1927 |
-
DPGlobal.footTemplate +
|
1928 |
-
'</table>' +
|
1929 |
-
'</div>' +
|
1930 |
-
'</div>';
|
1931 |
-
|
1932 |
-
$.fn.datepicker.DPGlobal = DPGlobal;
|
1933 |
-
|
1934 |
-
/* DATEPICKER NO CONFLICT
|
1935 |
-
* =================== */
|
1936 |
-
|
1937 |
-
$.fn.datepicker.noConflict = function() {
|
1938 |
-
$.fn.datepicker = old;
|
1939 |
-
return this;
|
1940 |
-
};
|
1941 |
-
|
1942 |
-
/* DATEPICKER VERSION
|
1943 |
-
* =================== */
|
1944 |
-
$.fn.datepicker.version = "1.4.1-dev";
|
1945 |
-
|
1946 |
-
/* DATEPICKER DATA-API
|
1947 |
-
* ================== */
|
1948 |
-
|
1949 |
-
$(document).on(
|
1950 |
-
'focus.datepicker.data-api click.datepicker.data-api',
|
1951 |
-
'[data-provide="datepicker"]',
|
1952 |
-
function(e) {
|
1953 |
-
var $this = $(this);
|
1954 |
-
if( $this.data('datepicker') ) {
|
1955 |
-
return;
|
1956 |
-
}
|
1957 |
-
e.preventDefault();
|
1958 |
-
// component click requires us to explicitly show it
|
1959 |
-
datepickerPlugin.call($this, 'show');
|
1960 |
-
}
|
1961 |
-
);
|
1962 |
-
$(function() {
|
1963 |
-
datepickerPlugin.call($('[data-provide="datepicker-inline"]'));
|
1964 |
-
});
|
1965 |
-
|
1966 |
-
}(window.jQuery));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/bootstrap.datetimepicker.js
ADDED
@@ -0,0 +1,2746 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.modal.js
DELETED
@@ -1,246 +0,0 @@
|
|
1 |
-
/* ========================================================================
|
2 |
-
* Bootstrap: modal.js v3.0.3
|
3 |
-
* http://getbootstrap.com/javascript/#modals
|
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 |
-
// MODAL CLASS DEFINITION
|
24 |
-
// ======================
|
25 |
-
|
26 |
-
var Modal = function (element, options) {
|
27 |
-
this.options = options
|
28 |
-
this.$element = $(element)
|
29 |
-
this.$backdrop =
|
30 |
-
this.isShown = null
|
31 |
-
|
32 |
-
if (this.options.remote) this.$element.load(this.options.remote)
|
33 |
-
}
|
34 |
-
|
35 |
-
Modal.DEFAULTS = {
|
36 |
-
backdrop: true
|
37 |
-
, keyboard: true
|
38 |
-
, show: true
|
39 |
-
}
|
40 |
-
|
41 |
-
Modal.prototype.toggle = function (_relatedTarget) {
|
42 |
-
return this[!this.isShown ? 'show' : 'hide'](_relatedTarget)
|
43 |
-
}
|
44 |
-
|
45 |
-
Modal.prototype.show = function (_relatedTarget) {
|
46 |
-
var that = this
|
47 |
-
var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
|
48 |
-
|
49 |
-
this.$element.trigger(e)
|
50 |
-
|
51 |
-
if (this.isShown || e.isDefaultPrevented()) return
|
52 |
-
|
53 |
-
this.isShown = true
|
54 |
-
|
55 |
-
this.escape()
|
56 |
-
|
57 |
-
this.$element.on('click.dismiss.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
|
58 |
-
|
59 |
-
this.backdrop(function () {
|
60 |
-
var transition = $.support.transition && that.$element.hasClass('fade')
|
61 |
-
|
62 |
-
if (!that.$element.parent().length) {
|
63 |
-
that.$element.appendTo(document.body) // don't move modals dom position
|
64 |
-
}
|
65 |
-
|
66 |
-
that.$element.show()
|
67 |
-
|
68 |
-
if (transition) {
|
69 |
-
that.$element[0].offsetWidth // force reflow
|
70 |
-
}
|
71 |
-
|
72 |
-
that.$element
|
73 |
-
.addClass('in')
|
74 |
-
.attr('aria-hidden', false)
|
75 |
-
|
76 |
-
that.enforceFocus()
|
77 |
-
|
78 |
-
var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
|
79 |
-
|
80 |
-
transition ?
|
81 |
-
that.$element.find('.modal-dialog') // wait for modal to slide in
|
82 |
-
.one($.support.transition.end, function () {
|
83 |
-
that.$element.focus().trigger(e)
|
84 |
-
})
|
85 |
-
.emulateTransitionEnd(300) :
|
86 |
-
that.$element.focus().trigger(e)
|
87 |
-
})
|
88 |
-
}
|
89 |
-
|
90 |
-
Modal.prototype.hide = function (e) {
|
91 |
-
if (e) e.preventDefault()
|
92 |
-
|
93 |
-
e = $.Event('hide.bs.modal')
|
94 |
-
|
95 |
-
this.$element.trigger(e)
|
96 |
-
|
97 |
-
if (!this.isShown || e.isDefaultPrevented()) return
|
98 |
-
|
99 |
-
this.isShown = false
|
100 |
-
|
101 |
-
this.escape()
|
102 |
-
|
103 |
-
$(document).off('focusin.bs.modal')
|
104 |
-
|
105 |
-
this.$element
|
106 |
-
.removeClass('in')
|
107 |
-
.attr('aria-hidden', true)
|
108 |
-
.off('click.dismiss.modal')
|
109 |
-
|
110 |
-
$.support.transition && this.$element.hasClass('fade') ?
|
111 |
-
this.$element
|
112 |
-
.one($.support.transition.end, $.proxy(this.hideModal, this))
|
113 |
-
.emulateTransitionEnd(300) :
|
114 |
-
this.hideModal()
|
115 |
-
}
|
116 |
-
|
117 |
-
Modal.prototype.enforceFocus = function () {
|
118 |
-
$(document)
|
119 |
-
.off('focusin.bs.modal') // guard against infinite focus loop
|
120 |
-
.on('focusin.bs.modal', $.proxy(function (e) {
|
121 |
-
if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
|
122 |
-
this.$element.focus()
|
123 |
-
}
|
124 |
-
}, this))
|
125 |
-
}
|
126 |
-
|
127 |
-
Modal.prototype.escape = function () {
|
128 |
-
if (this.isShown && this.options.keyboard) {
|
129 |
-
this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) {
|
130 |
-
e.which == 27 && this.hide();
|
131 |
-
}, this))
|
132 |
-
} else if (!this.isShown) {
|
133 |
-
this.$element.off('keyup.dismiss.bs.modal')
|
134 |
-
}
|
135 |
-
}
|
136 |
-
|
137 |
-
Modal.prototype.hideModal = function () {
|
138 |
-
var that = this
|
139 |
-
this.$element.hide()
|
140 |
-
this.backdrop(function () {
|
141 |
-
that.removeBackdrop()
|
142 |
-
that.$element.trigger('hidden.bs.modal')
|
143 |
-
})
|
144 |
-
}
|
145 |
-
|
146 |
-
Modal.prototype.removeBackdrop = function () {
|
147 |
-
this.$backdrop && this.$backdrop.remove()
|
148 |
-
this.$backdrop = null
|
149 |
-
}
|
150 |
-
|
151 |
-
Modal.prototype.backdrop = function (callback) {
|
152 |
-
var that = this
|
153 |
-
var animate = this.$element.hasClass('fade') ? 'fade' : ''
|
154 |
-
|
155 |
-
if (this.isShown && this.options.backdrop) {
|
156 |
-
var doAnimate = $.support.transition && animate
|
157 |
-
|
158 |
-
this.$backdrop = $('<div class="factory-bootstrap-330-modal-backdrop ' + animate + '" />')
|
159 |
-
.appendTo(document.body)
|
160 |
-
|
161 |
-
this.$element.on('click.dismiss.modal', $.proxy(function (e) {
|
162 |
-
if (e.target !== e.currentTarget) return
|
163 |
-
this.options.backdrop == 'static'
|
164 |
-
? this.$element[0].focus.call(this.$element[0])
|
165 |
-
: this.hide.call(this)
|
166 |
-
}, this))
|
167 |
-
|
168 |
-
if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
|
169 |
-
|
170 |
-
this.$backdrop.addClass('in')
|
171 |
-
|
172 |
-
if (!callback) return
|
173 |
-
|
174 |
-
doAnimate ?
|
175 |
-
this.$backdrop
|
176 |
-
.one($.support.transition.end, callback)
|
177 |
-
.emulateTransitionEnd(150) :
|
178 |
-
callback()
|
179 |
-
|
180 |
-
} else if (!this.isShown && this.$backdrop) {
|
181 |
-
this.$backdrop.removeClass('in')
|
182 |
-
|
183 |
-
$.support.transition && this.$element.hasClass('fade')?
|
184 |
-
this.$backdrop
|
185 |
-
.one($.support.transition.end, callback)
|
186 |
-
.emulateTransitionEnd(150) :
|
187 |
-
callback()
|
188 |
-
|
189 |
-
} else if (callback) {
|
190 |
-
callback()
|
191 |
-
}
|
192 |
-
}
|
193 |
-
|
194 |
-
|
195 |
-
// MODAL PLUGIN DEFINITION
|
196 |
-
// =======================
|
197 |
-
|
198 |
-
var old = $.fn.factoryBootstrap330_modal
|
199 |
-
|
200 |
-
$.fn.factoryBootstrap330_modal = function (option, _relatedTarget) {
|
201 |
-
return this.each(function () {
|
202 |
-
var $this = $(this)
|
203 |
-
var data = $this.data('bs.modal')
|
204 |
-
var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
|
205 |
-
|
206 |
-
if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
|
207 |
-
if (typeof option == 'string') data[option](_relatedTarget)
|
208 |
-
else if (options.show) data.show(_relatedTarget)
|
209 |
-
})
|
210 |
-
}
|
211 |
-
|
212 |
-
$.fn.factoryBootstrap330_modal.Constructor = Modal
|
213 |
-
|
214 |
-
|
215 |
-
// MODAL NO CONFLICT
|
216 |
-
// =================
|
217 |
-
|
218 |
-
$.fn.factoryBootstrap330_modal.noConflict = function () {
|
219 |
-
$.fn.factoryBootstrap330_modal = old
|
220 |
-
return this
|
221 |
-
}
|
222 |
-
|
223 |
-
|
224 |
-
// MODAL DATA-API
|
225 |
-
// ==============
|
226 |
-
|
227 |
-
$(document).on('click.bs.modal.data-api', '[data-toggle="factory-modal"]', function (e) {
|
228 |
-
var $this = $(this)
|
229 |
-
var href = $this.attr('href')
|
230 |
-
var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
|
231 |
-
var option = $target.data('factory-modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
|
232 |
-
|
233 |
-
e.preventDefault()
|
234 |
-
|
235 |
-
$target
|
236 |
-
.factoryBootstrap330_modal(option, this)
|
237 |
-
.one('hide', function () {
|
238 |
-
$this.is(':visible') && $this.focus()
|
239 |
-
})
|
240 |
-
})
|
241 |
-
|
242 |
-
$(document)
|
243 |
-
.on('show.bs.modal', '.modal', function () { $(document.body).addClass('modal-open') })
|
244 |
-
.on('hidden.bs.modal', '.modal', function () { $(document.body).removeClass('modal-open') })
|
245 |
-
|
246 |
-
}(jQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/bootstrap.popover.js
DELETED
@@ -1,117 +0,0 @@
|
|
1 |
-
/* ========================================================================
|
2 |
-
* Bootstrap: popover.js v3.0.3
|
3 |
-
* http://getbootstrap.com/javascript/#popovers
|
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 |
-
// POPOVER PUBLIC CLASS DEFINITION
|
24 |
-
// ===============================
|
25 |
-
|
26 |
-
var Popover = function (element, options) {
|
27 |
-
this.init('popover', element, options)
|
28 |
-
}
|
29 |
-
|
30 |
-
if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
|
31 |
-
|
32 |
-
Popover.DEFAULTS = $.extend({} , $.fn.tooltip.Constructor.DEFAULTS, {
|
33 |
-
placement: 'right'
|
34 |
-
, trigger: 'click'
|
35 |
-
, content: ''
|
36 |
-
, template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
|
37 |
-
})
|
38 |
-
|
39 |
-
|
40 |
-
// NOTE: POPOVER EXTENDS tooltip.js
|
41 |
-
// ================================
|
42 |
-
|
43 |
-
Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
|
44 |
-
|
45 |
-
Popover.prototype.constructor = Popover
|
46 |
-
|
47 |
-
Popover.prototype.getDefaults = function () {
|
48 |
-
return Popover.DEFAULTS
|
49 |
-
}
|
50 |
-
|
51 |
-
Popover.prototype.setContent = function () {
|
52 |
-
var $tip = this.tip()
|
53 |
-
var title = this.getTitle()
|
54 |
-
var content = this.getContent()
|
55 |
-
|
56 |
-
$tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
|
57 |
-
$tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content)
|
58 |
-
|
59 |
-
$tip.removeClass('fade top bottom left right in')
|
60 |
-
|
61 |
-
// IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
|
62 |
-
// this manually by checking the contents.
|
63 |
-
if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
|
64 |
-
}
|
65 |
-
|
66 |
-
Popover.prototype.hasContent = function () {
|
67 |
-
return this.getTitle() || this.getContent()
|
68 |
-
}
|
69 |
-
|
70 |
-
Popover.prototype.getContent = function () {
|
71 |
-
var $e = this.$element
|
72 |
-
var o = this.options
|
73 |
-
|
74 |
-
return $e.attr('data-content')
|
75 |
-
|| (typeof o.content == 'function' ?
|
76 |
-
o.content.call($e[0]) :
|
77 |
-
o.content)
|
78 |
-
}
|
79 |
-
|
80 |
-
Popover.prototype.arrow = function () {
|
81 |
-
return this.$arrow = this.$arrow || this.tip().find('.arrow')
|
82 |
-
}
|
83 |
-
|
84 |
-
Popover.prototype.tip = function () {
|
85 |
-
if (!this.$tip) this.$tip = $(this.options.template)
|
86 |
-
return this.$tip
|
87 |
-
}
|
88 |
-
|
89 |
-
|
90 |
-
// POPOVER PLUGIN DEFINITION
|
91 |
-
// =========================
|
92 |
-
|
93 |
-
var old = $.fn.popover
|
94 |
-
|
95 |
-
$.fn.popover = function (option) {
|
96 |
-
return this.each(function () {
|
97 |
-
var $this = $(this)
|
98 |
-
var data = $this.data('bs.popover')
|
99 |
-
var options = typeof option == 'object' && option
|
100 |
-
|
101 |
-
if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
|
102 |
-
if (typeof option == 'string') data[option]()
|
103 |
-
})
|
104 |
-
}
|
105 |
-
|
106 |
-
$.fn.popover.Constructor = Popover
|
107 |
-
|
108 |
-
|
109 |
-
// POPOVER NO CONFLICT
|
110 |
-
// ===================
|
111 |
-
|
112 |
-
$.fn.popover.noConflict = function () {
|
113 |
-
$.fn.popover = old
|
114 |
-
return this
|
115 |
-
}
|
116 |
-
|
117 |
-
}(jQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/bootstrap.scrollspy.js
DELETED
@@ -1,158 +0,0 @@
|
|
1 |
-
/* ========================================================================
|
2 |
-
* Bootstrap: scrollspy.js v3.0.3
|
3 |
-
* http://getbootstrap.com/javascript/#scrollspy
|
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 |
-
// SCROLLSPY CLASS DEFINITION
|
24 |
-
// ==========================
|
25 |
-
|
26 |
-
function ScrollSpy(element, options) {
|
27 |
-
var href
|
28 |
-
var process = $.proxy(this.process, this)
|
29 |
-
|
30 |
-
this.$element = $(element).is('body') ? $(window) : $(element)
|
31 |
-
this.$body = $('body')
|
32 |
-
this.$scrollElement = this.$element.on('scroll.bs.scroll-spy.data-api', process)
|
33 |
-
this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
|
34 |
-
this.selector = (this.options.target
|
35 |
-
|| ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
|
36 |
-
|| '') + ' .nav li > a'
|
37 |
-
this.offsets = $([])
|
38 |
-
this.targets = $([])
|
39 |
-
this.activeTarget = null
|
40 |
-
|
41 |
-
this.refresh()
|
42 |
-
this.process()
|
43 |
-
}
|
44 |
-
|
45 |
-
ScrollSpy.DEFAULTS = {
|
46 |
-
offset: 10
|
47 |
-
}
|
48 |
-
|
49 |
-
ScrollSpy.prototype.refresh = function () {
|
50 |
-
var offsetMethod = this.$element[0] == window ? 'offset' : 'position'
|
51 |
-
|
52 |
-
this.offsets = $([])
|
53 |
-
this.targets = $([])
|
54 |
-
|
55 |
-
var self = this
|
56 |
-
var $targets = this.$body
|
57 |
-
.find(this.selector)
|
58 |
-
.map(function () {
|
59 |
-
var $el = $(this)
|
60 |
-
var href = $el.data('target') || $el.attr('href')
|
61 |
-
var $href = /^#\w/.test(href) && $(href)
|
62 |
-
|
63 |
-
return ($href
|
64 |
-
&& $href.length
|
65 |
-
&& [[ $href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null
|
66 |
-
})
|
67 |
-
.sort(function (a, b) { return a[0] - b[0] })
|
68 |
-
.each(function () {
|
69 |
-
self.offsets.push(this[0])
|
70 |
-
self.targets.push(this[1])
|
71 |
-
})
|
72 |
-
}
|
73 |
-
|
74 |
-
ScrollSpy.prototype.process = function () {
|
75 |
-
var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
|
76 |
-
var scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
|
77 |
-
var maxScroll = scrollHeight - this.$scrollElement.height()
|
78 |
-
var offsets = this.offsets
|
79 |
-
var targets = this.targets
|
80 |
-
var activeTarget = this.activeTarget
|
81 |
-
var i
|
82 |
-
|
83 |
-
if (scrollTop >= maxScroll) {
|
84 |
-
return activeTarget != (i = targets.last()[0]) && this.activate(i)
|
85 |
-
}
|
86 |
-
|
87 |
-
for (i = offsets.length; i--;) {
|
88 |
-
activeTarget != targets[i]
|
89 |
-
&& scrollTop >= offsets[i]
|
90 |
-
&& (!offsets[i + 1] || scrollTop <= offsets[i + 1])
|
91 |
-
&& this.activate( targets[i] )
|
92 |
-
}
|
93 |
-
}
|
94 |
-
|
95 |
-
ScrollSpy.prototype.activate = function (target) {
|
96 |
-
this.activeTarget = target
|
97 |
-
|
98 |
-
$(this.selector)
|
99 |
-
.parents('.active')
|
100 |
-
.removeClass('active')
|
101 |
-
|
102 |
-
var selector = this.selector
|
103 |
-
+ '[data-target="' + target + '"],'
|
104 |
-
+ this.selector + '[href="' + target + '"]'
|
105 |
-
|
106 |
-
var active = $(selector)
|
107 |
-
.parents('li')
|
108 |
-
.addClass('active')
|
109 |
-
|
110 |
-
if (active.parent('.dropdown-menu').length) {
|
111 |
-
active = active
|
112 |
-
.closest('li.dropdown')
|
113 |
-
.addClass('active')
|
114 |
-
}
|
115 |
-
|
116 |
-
active.trigger('activate.bs.scrollspy')
|
117 |
-
}
|
118 |
-
|
119 |
-
|
120 |
-
// SCROLLSPY PLUGIN DEFINITION
|
121 |
-
// ===========================
|
122 |
-
|
123 |
-
var old = $.fn.scrollspy
|
124 |
-
|
125 |
-
$.fn.scrollspy = function (option) {
|
126 |
-
return this.each(function () {
|
127 |
-
var $this = $(this)
|
128 |
-
var data = $this.data('bs.scrollspy')
|
129 |
-
var options = typeof option == 'object' && option
|
130 |
-
|
131 |
-
if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
|
132 |
-
if (typeof option == 'string') data[option]()
|
133 |
-
})
|
134 |
-
}
|
135 |
-
|
136 |
-
$.fn.scrollspy.Constructor = ScrollSpy
|
137 |
-
|
138 |
-
|
139 |
-
// SCROLLSPY NO CONFLICT
|
140 |
-
// =====================
|
141 |
-
|
142 |
-
$.fn.scrollspy.noConflict = function () {
|
143 |
-
$.fn.scrollspy = old
|
144 |
-
return this
|
145 |
-
}
|
146 |
-
|
147 |
-
|
148 |
-
// SCROLLSPY DATA-API
|
149 |
-
// ==================
|
150 |
-
|
151 |
-
$(window).on('load', function () {
|
152 |
-
$('[data-spy="scroll"]').each(function () {
|
153 |
-
var $spy = $(this)
|
154 |
-
$spy.scrollspy($spy.data())
|
155 |
-
})
|
156 |
-
})
|
157 |
-
|
158 |
-
}(jQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/bootstrap.tab.js
DELETED
@@ -1,135 +0,0 @@
|
|
1 |
-
/* ========================================================================
|
2 |
-
* Bootstrap: tab.js v3.0.3
|
3 |
-
* http://getbootstrap.com/javascript/#tabs
|
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 |
-
// TAB CLASS DEFINITION
|
24 |
-
// ====================
|
25 |
-
|
26 |
-
var Tab = function (element) {
|
27 |
-
this.element = $(element)
|
28 |
-
}
|
29 |
-
|
30 |
-
Tab.prototype.show = function () {
|
31 |
-
var $this = this.element
|
32 |
-
var $ul = $this.closest('ul:not(.dropdown-menu)')
|
33 |
-
var selector = $this.data('target')
|
34 |
-
|
35 |
-
if (!selector) {
|
36 |
-
selector = $this.attr('href')
|
37 |
-
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
|
38 |
-
}
|
39 |
-
|
40 |
-
if ($this.parent('li').hasClass('active')) return
|
41 |
-
|
42 |
-
var previous = $ul.find('.active:last a')[0]
|
43 |
-
var e = $.Event('show.bs.tab', {
|
44 |
-
relatedTarget: previous
|
45 |
-
})
|
46 |
-
|
47 |
-
$this.trigger(e)
|
48 |
-
|
49 |
-
if (e.isDefaultPrevented()) return
|
50 |
-
|
51 |
-
var $target = $(selector)
|
52 |
-
|
53 |
-
this.activate($this.parent('li'), $ul)
|
54 |
-
this.activate($target, $target.parent(), function () {
|
55 |
-
$this.trigger({
|
56 |
-
type: 'shown.bs.tab'
|
57 |
-
, relatedTarget: previous
|
58 |
-
})
|
59 |
-
})
|
60 |
-
}
|
61 |
-
|
62 |
-
Tab.prototype.activate = function (element, container, callback) {
|
63 |
-
var $active = container.find('> .active')
|
64 |
-
var transition = callback
|
65 |
-
&& $.support.transition
|
66 |
-
&& $active.hasClass('fade')
|
67 |
-
|
68 |
-
function next() {
|
69 |
-
$active
|
70 |
-
.removeClass('active')
|
71 |
-
.find('> .dropdown-menu > .active')
|
72 |
-
.removeClass('active')
|
73 |
-
|
74 |
-
element.addClass('active')
|
75 |
-
|
76 |
-
if (transition) {
|
77 |
-
element[0].offsetWidth // reflow for transition
|
78 |
-
element.addClass('in')
|
79 |
-
} else {
|
80 |
-
element.removeClass('fade')
|
81 |
-
}
|
82 |
-
|
83 |
-
if (element.parent('.dropdown-menu')) {
|
84 |
-
element.closest('li.dropdown').addClass('active')
|
85 |
-
}
|
86 |
-
|
87 |
-
callback && callback()
|
88 |
-
}
|
89 |
-
|
90 |
-
transition ?
|
91 |
-
$active
|
92 |
-
.one($.support.transition.end, next)
|
93 |
-
.emulateTransitionEnd(150) :
|
94 |
-
next()
|
95 |
-
|
96 |
-
$active.removeClass('in')
|
97 |
-
}
|
98 |
-
|
99 |
-
|
100 |
-
// TAB PLUGIN DEFINITION
|
101 |
-
// =====================
|
102 |
-
|
103 |
-
var old = $.fn.tab
|
104 |
-
|
105 |
-
$.fn.tab = function ( option ) {
|
106 |
-
return this.each(function () {
|
107 |
-
var $this = $(this)
|
108 |
-
var data = $this.data('bs.tab')
|
109 |
-
|
110 |
-
if (!data) $this.data('bs.tab', (data = new Tab(this)))
|
111 |
-
if (typeof option == 'string') data[option]()
|
112 |
-
})
|
113 |
-
}
|
114 |
-
|
115 |
-
$.fn.tab.Constructor = Tab
|
116 |
-
|
117 |
-
|
118 |
-
// TAB NO CONFLICT
|
119 |
-
// ===============
|
120 |
-
|
121 |
-
$.fn.tab.noConflict = function () {
|
122 |
-
$.fn.tab = old
|
123 |
-
return this
|
124 |
-
}
|
125 |
-
|
126 |
-
|
127 |
-
// TAB DATA-API
|
128 |
-
// ============
|
129 |
-
|
130 |
-
$(document).on('click.bs.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
|
131 |
-
e.preventDefault()
|
132 |
-
$(this).tab('show')
|
133 |
-
})
|
134 |
-
|
135 |
-
}(jQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/bootstrap.transition.js
DELETED
@@ -1,63 +0,0 @@
|
|
1 |
-
/* ========================================================================
|
2 |
-
* Bootstrap: transition.js v3.0.3
|
3 |
-
* http://getbootstrap.com/javascript/#transitions
|
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 |
-
// CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
|
24 |
-
// ============================================================
|
25 |
-
|
26 |
-
function transitionEnd() {
|
27 |
-
var el = document.createElement('bootstrap')
|
28 |
-
|
29 |
-
var transEndEventNames = {
|
30 |
-
'WebkitTransition' : 'webkitTransitionEnd'
|
31 |
-
, 'MozTransition' : 'transitionend'
|
32 |
-
, 'OTransition' : 'oTransitionEnd otransitionend'
|
33 |
-
, 'transition' : 'transitionend'
|
34 |
-
}
|
35 |
-
|
36 |
-
for (var name in transEndEventNames) {
|
37 |
-
if (el.style[name] !== undefined) {
|
38 |
-
return { end: transEndEventNames[name] }
|
39 |
-
}
|
40 |
-
}
|
41 |
-
}
|
42 |
-
|
43 |
-
// http://blog.alexmaccaw.com/css-transitions
|
44 |
-
$.fn.emulateTransitionEnd = function (duration) {
|
45 |
-
var called = false, $el = this
|
46 |
-
$(this).one($.support.transition.end, function () { called = true })
|
47 |
-
var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
|
48 |
-
setTimeout(callback, duration)
|
49 |
-
return this
|
50 |
-
}
|
51 |
-
|
52 |
-
$(function () {
|
53 |
-
$.support.transition = transitionEnd()
|
54 |
-
});
|
55 |
-
|
56 |
-
// issue #SLWP-49
|
57 |
-
$(function () {
|
58 |
-
$(function () {
|
59 |
-
$.support.transition = transitionEnd();
|
60 |
-
});
|
61 |
-
});
|
62 |
-
|
63 |
-
}(jQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/control.color-and-opacity.js
DELETED
@@ -1,32 +0,0 @@
|
|
1 |
-
( function( $, undef ){
|
2 |
-
$(function(){
|
3 |
-
|
4 |
-
$(function(){
|
5 |
-
|
6 |
-
$(".factory-bootstrap-330 .factory-color-and-opacity").each(function(){
|
7 |
-
var $colorOpacityControl = $(this);
|
8 |
-
|
9 |
-
var $colorControl = $colorOpacityControl.find('.factory-color');
|
10 |
-
var $integerControl = $colorOpacityControl.find('.factory-integer');
|
11 |
-
|
12 |
-
|
13 |
-
// apply to change opacity of the preview
|
14 |
-
$integerControl.change(function(){
|
15 |
-
var opacityValue = $integerControl.find(".factory-result").val() / 100;
|
16 |
-
|
17 |
-
|
18 |
-
$colorControl.find('.factory-background').css('opacity', opacityValue );
|
19 |
-
|
20 |
-
|
21 |
-
});
|
22 |
-
|
23 |
-
$integerControl.change();
|
24 |
-
|
25 |
-
$integerControl.on("click.color.factory", function(e){
|
26 |
-
e.stopPropagation();
|
27 |
-
});
|
28 |
-
});
|
29 |
-
});
|
30 |
-
|
31 |
-
});
|
32 |
-
}( jQuery ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/control.color.js
DELETED
@@ -1,88 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* Factory Botstrap Color Control
|
3 |
-
*
|
4 |
-
* @uses plugin.iris.js
|
5 |
-
*
|
6 |
-
* @author Paul Kashtanoff <paul@byonepress.com>
|
7 |
-
* @copyright (c) 2013-2014, OnePress Ltd
|
8 |
-
*
|
9 |
-
* @package factory-forms
|
10 |
-
* @since 3.1.0
|
11 |
-
*/
|
12 |
-
|
13 |
-
;( function( $ ){
|
14 |
-
|
15 |
-
$.widget( "factoryBootstrap330.colorControl", {
|
16 |
-
|
17 |
-
_create: function() {
|
18 |
-
|
19 |
-
this.$element = this.element;
|
20 |
-
this.$picker = this.$element.find('.factory-color-hex');
|
21 |
-
this.$preview = this.$element.find('.factory-preview');
|
22 |
-
this.$background = this.$element.find('.factory-background');
|
23 |
-
|
24 |
-
this._init();
|
25 |
-
},
|
26 |
-
|
27 |
-
_init: function( event ) {
|
28 |
-
var self = this;
|
29 |
-
|
30 |
-
var irisOptions = {
|
31 |
-
width: 216,
|
32 |
-
palettes: ['#16a086', '#27ae61', '#2a80b9', '#8f44ad', '#2d3e50', '#f49c14', '#c1392b', '#bec3c7'],
|
33 |
-
hide: true,
|
34 |
-
change: function(event, ui) {
|
35 |
-
self.$background.css({ background: ui.color.toString() });
|
36 |
-
|
37 |
-
self.$element.trigger('change.color.factory', [ ui.color.toString() ]);
|
38 |
-
self.$element.trigger('updated.color.factory', [ ui.color.toString() ]);
|
39 |
-
}
|
40 |
-
};
|
41 |
-
|
42 |
-
var picketTarget = this.$element.data('picker-target');
|
43 |
-
if ( picketTarget ) irisOptions.target = $(picketTarget);
|
44 |
-
|
45 |
-
this.$picker.factoryBootstrap330_iris(irisOptions);
|
46 |
-
this.$picker.off('focus');
|
47 |
-
|
48 |
-
$(document).on("click.color.factory", function(){
|
49 |
-
self.$picker.factoryBootstrap330_iris("hide");
|
50 |
-
});
|
51 |
-
|
52 |
-
this.$picker.add(this.$background).on("click.color.factory", function(e){
|
53 |
-
e.stopPropagation();
|
54 |
-
self.$picker.factoryBootstrap330_iris("show");
|
55 |
-
});
|
56 |
-
},
|
57 |
-
|
58 |
-
togglePicker: function() {
|
59 |
-
if( this.$element.hasClass('factory-picker-active') ) this.hidePicker();
|
60 |
-
else this.showPicker();
|
61 |
-
},
|
62 |
-
|
63 |
-
hidePicker: function() {
|
64 |
-
this.$element.removeClass('factory-picker-active');
|
65 |
-
this.$picker.factoryBootstrap330_iris( 'hide' );
|
66 |
-
},
|
67 |
-
|
68 |
-
showPicker: function() {
|
69 |
-
this.$element.addClass('factory-picker-active');
|
70 |
-
this.$picker.factoryBootstrap330_iris( 'show' );
|
71 |
-
},
|
72 |
-
|
73 |
-
getValue: function() {
|
74 |
-
return this.$picker.val();
|
75 |
-
},
|
76 |
-
|
77 |
-
setValue: function( value, trigger ) {
|
78 |
-
this.$picker.val(value);
|
79 |
-
if ( trigger ) self.$picker.trigger('change');
|
80 |
-
}
|
81 |
-
});
|
82 |
-
|
83 |
-
$(function(){
|
84 |
-
$.widget.bridge( "factoryBootstrap330_colorControl", $.factoryBootstrap330.colorControl );
|
85 |
-
$(".factory-bootstrap-330 .factory-color").factoryBootstrap330_colorControl({});
|
86 |
-
});
|
87 |
-
|
88 |
-
}( jQuery ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/control.dropdown-and-colors.js
DELETED
@@ -1,61 +0,0 @@
|
|
1 |
-
(function($) {
|
2 |
-
var dropdownAndColors = function(element) {
|
3 |
-
var $this = $(element);
|
4 |
-
var radioControlsWrap = $this.find('.factory-colors-inner-wrap');
|
5 |
-
|
6 |
-
$this.find('select').change(function() {
|
7 |
-
var selected = $this.find('select option:selected'),
|
8 |
-
colors = selected.data('colors');
|
9 |
-
|
10 |
-
var radioName = radioControlsWrap.data('radio-name');
|
11 |
-
|
12 |
-
if( !radioName || !colors ) {
|
13 |
-
//$this.fadeOut();
|
14 |
-
return;
|
15 |
-
}
|
16 |
-
|
17 |
-
radioControlsWrap.html('');
|
18 |
-
|
19 |
-
for( var i = 0; i < colors.length; i++ ) {
|
20 |
-
var colorItem = colors[i];
|
21 |
-
|
22 |
-
var radioItem = $('<span class="factory-form-radio-item">' +
|
23 |
-
'<label class="factory-from-radio-label">' +
|
24 |
-
'<input type="radio" name="' + radioName + '" class="factory-radio-color" value="' + colorItem[0] + '" checked="checked">' +
|
25 |
-
'<span style="background-color:' + colorItem[1] + '"></span>' +
|
26 |
-
'</label></span>');
|
27 |
-
|
28 |
-
radioControlsWrap.append(radioItem);
|
29 |
-
}
|
30 |
-
});
|
31 |
-
};
|
32 |
-
|
33 |
-
$.fn.factoryBootstrap330_dropdownAndColors = function(option) {
|
34 |
-
// call an method
|
35 |
-
if( typeof option === "string" ) {
|
36 |
-
var data = $(this).data('factory.dropdownAndColors.control');
|
37 |
-
if( !data ) {
|
38 |
-
return null;
|
39 |
-
}
|
40 |
-
return data[option]();
|
41 |
-
}
|
42 |
-
|
43 |
-
// creating an object
|
44 |
-
else {
|
45 |
-
return this.each(function() {
|
46 |
-
var $this = $(this);
|
47 |
-
var data = $this.data('factory.dropdownAndColors.control');
|
48 |
-
if( !data ) {
|
49 |
-
$this.data('factory.dropdownAndColors.control', (data = new dropdownAndColors(this)));
|
50 |
-
}
|
51 |
-
});
|
52 |
-
}
|
53 |
-
};
|
54 |
-
|
55 |
-
$.fn.factoryBootstrap330_dropdownAndColors.Constructor = dropdownAndColors;
|
56 |
-
|
57 |
-
$(function() {
|
58 |
-
$(".factory-bootstrap-330 .factory-dropdown-and-colors").factoryBootstrap330_dropdownAndColors();
|
59 |
-
});
|
60 |
-
|
61 |
-
}(jQuery) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/control.fonts.js
DELETED
@@ -1,196 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* Font Control
|
3 |
-
*
|
4 |
-
* @author Paul Kashtanoff <paul@byonepress.com>
|
5 |
-
* @copyright (c) 2013-2014, OnePress Ltd
|
6 |
-
*
|
7 |
-
* @package factory-forms
|
8 |
-
* @since 3.1.0
|
9 |
-
*/
|
10 |
-
;( function( $ ){
|
11 |
-
|
12 |
-
$.widget( "factoryBootstrap330.fontControl", {
|
13 |
-
|
14 |
-
_create: function() {
|
15 |
-
|
16 |
-
this.$element = this.element;
|
17 |
-
|
18 |
-
this.$family = this.$element.find(".factory-family-wrap select");
|
19 |
-
this.$googleFontData = this.$element.find(".factory-google-font-data");
|
20 |
-
|
21 |
-
this.fontSelectorName = this.$family.attr('name');
|
22 |
-
|
23 |
-
this.googleFontsOptions = {
|
24 |
-
frameName: this.element.data('google-fonts-frame-name')
|
25 |
-
};
|
26 |
-
|
27 |
-
if ( !this.googleFontsOptions.frameName )
|
28 |
-
this.googleFontsOptions.frameName = 'preview';
|
29 |
-
|
30 |
-
this._initUI();
|
31 |
-
this._bindEvents();
|
32 |
-
},
|
33 |
-
|
34 |
-
_initUI: function() {
|
35 |
-
this.$family.chosen();
|
36 |
-
},
|
37 |
-
|
38 |
-
_bindEvents: function() {
|
39 |
-
var self = this;
|
40 |
-
|
41 |
-
this.$family.change(function( data ){
|
42 |
-
var $option = self._getCurrentOption();
|
43 |
-
var isGoogleFont = $option.data('google-font');
|
44 |
-
|
45 |
-
if ( isGoogleFont ) {
|
46 |
-
|
47 |
-
var family = $option.data('family');
|
48 |
-
var variants = $option.data('variants').split(',');
|
49 |
-
var subsets = $option.data('subsets').split(',');
|
50 |
-
|
51 |
-
self._loadGoogleFont( family, variants, subsets );
|
52 |
-
} else {
|
53 |
-
self.$googleFontData.val("");
|
54 |
-
}
|
55 |
-
});
|
56 |
-
},
|
57 |
-
|
58 |
-
_getCurrentOption: function() {
|
59 |
-
var value = this.$family.val();
|
60 |
-
return this._getOptionByValue( value );
|
61 |
-
},
|
62 |
-
|
63 |
-
_getOptionByValue: function( value ) {
|
64 |
-
var $option = this.$family.find("option[value='" + value + "']");
|
65 |
-
return $option;
|
66 |
-
},
|
67 |
-
|
68 |
-
_loadGoogleFont: function( family, variants, subsets ) {
|
69 |
-
|
70 |
-
// these filters allow extrenal apps to manage which variants
|
71 |
-
// and subsets have to be laoded and which should be skipped
|
72 |
-
|
73 |
-
var variants = this._filterGoogleFontVariantsBeforeLoading( family, variants, subsets );
|
74 |
-
var subsets = this._filterGoogleFontSubsetsBeforeLoading( family, variants, subsets );
|
75 |
-
|
76 |
-
this.$googleFontData.val(this._encode64(JSON.stringify({
|
77 |
-
name: family,
|
78 |
-
styles: variants,
|
79 |
-
subsets: subsets
|
80 |
-
})));
|
81 |
-
|
82 |
-
// the target is a place (current window or an iframe)
|
83 |
-
// where the font should be loaded
|
84 |
-
|
85 |
-
var $target = this._getTargetToLoadGoogleFont();
|
86 |
-
|
87 |
-
// the id is used to prevent loading multiple
|
88 |
-
// fonts for a single font control
|
89 |
-
|
90 |
-
var linkId = this.fontSelectorName + "-font-loader";
|
91 |
-
|
92 |
-
// removes the previous link with the same id
|
93 |
-
|
94 |
-
var $link = $target.find('#' + linkId);
|
95 |
-
if ( $target.find('#' + linkId).length > 0 ) {
|
96 |
-
$link.remove();
|
97 |
-
}
|
98 |
-
|
99 |
-
// builds an URL for loading the font
|
100 |
-
|
101 |
-
var url = 'http://fonts.googleapis.com/css';
|
102 |
-
|
103 |
-
if ( variants && variants.length ) family = family + ":" + variants.join(",");
|
104 |
-
url = url + '?family=' + family;
|
105 |
-
|
106 |
-
if ( subsets && subsets.length ) url = url + '&subset=' + subsets.join(",");
|
107 |
-
|
108 |
-
$('<link id="' + linkId + '" rel="stylesheet" type="text/css" href="' + url + '" >').appendTo( $target );
|
109 |
-
},
|
110 |
-
|
111 |
-
/**
|
112 |
-
* Calls external filters to modify the list of the google font variants to be loaded.
|
113 |
-
* @since 3.2.8
|
114 |
-
*/
|
115 |
-
_filterGoogleFontVariantsBeforeLoading: function( family, variants, subsets ) {
|
116 |
-
var self = this;
|
117 |
-
$(document).trigger('factory-filter-google-font-variants', [variants, self.$element, family, subsets]);
|
118 |
-
return variants;
|
119 |
-
},
|
120 |
-
|
121 |
-
/**
|
122 |
-
* Calls external filters to modify the list of the google font subsets to be loaded.
|
123 |
-
* @since 3.2.8
|
124 |
-
*/
|
125 |
-
_filterGoogleFontSubsetsBeforeLoading: function( family, variants, subsets ) {
|
126 |
-
var self = this;
|
127 |
-
$(document).trigger('factory-filter-google-font-subsets', [subsets, self.$element, variants, subsets]);
|
128 |
-
return subsets;
|
129 |
-
},
|
130 |
-
|
131 |
-
/**
|
132 |
-
* Returns a target element where the google font link element should be appended.
|
133 |
-
* @since 3.2.8
|
134 |
-
*/
|
135 |
-
_getTargetToLoadGoogleFont: function() {
|
136 |
-
|
137 |
-
var frameName = this.googleFontsOptions.frameName;
|
138 |
-
var $target = $('head');
|
139 |
-
|
140 |
-
if ( frameName ) {
|
141 |
-
|
142 |
-
var $frame = $('iframe[name="' + frameName + '"]');
|
143 |
-
if ( $frame.length === 0 ) return console.error('The preview container not found.');
|
144 |
-
|
145 |
-
$target = $frame.contents().find('head');
|
146 |
-
}
|
147 |
-
|
148 |
-
return $target;
|
149 |
-
},
|
150 |
-
|
151 |
-
_base64KeyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
|
152 |
-
|
153 |
-
_encode64: function(input) {
|
154 |
-
input = escape(input);
|
155 |
-
var output = "";
|
156 |
-
var chr1, chr2, chr3 = "";
|
157 |
-
var enc1, enc2, enc3, enc4 = "";
|
158 |
-
var i = 0;
|
159 |
-
|
160 |
-
do {
|
161 |
-
chr1 = input.charCodeAt(i++);
|
162 |
-
chr2 = input.charCodeAt(i++);
|
163 |
-
chr3 = input.charCodeAt(i++);
|
164 |
-
|
165 |
-
enc1 = chr1 >> 2;
|
166 |
-
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
|
167 |
-
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
|
168 |
-
enc4 = chr3 & 63;
|
169 |
-
|
170 |
-
if (isNaN(chr2)) {
|
171 |
-
enc3 = enc4 = 64;
|
172 |
-
} else if (isNaN(chr3)) {
|
173 |
-
enc4 = 64;
|
174 |
-
}
|
175 |
-
|
176 |
-
output = output +
|
177 |
-
this._base64KeyStr.charAt(enc1) +
|
178 |
-
this._base64KeyStr.charAt(enc2) +
|
179 |
-
this._base64KeyStr.charAt(enc3) +
|
180 |
-
this._base64KeyStr.charAt(enc4);
|
181 |
-
|
182 |
-
chr1 = chr2 = chr3 = "";
|
183 |
-
enc1 = enc2 = enc3 = enc4 = "";
|
184 |
-
|
185 |
-
} while (i < input.length);
|
186 |
-
|
187 |
-
return output;
|
188 |
-
}
|
189 |
-
});
|
190 |
-
|
191 |
-
$(function(){
|
192 |
-
$.widget.bridge( "factoryBootstrap330_fontControl", $.factoryBootstrap330.fontControl );
|
193 |
-
$(".factory-bootstrap-330 .factory-font").factoryBootstrap330_fontControl({});
|
194 |
-
});
|
195 |
-
|
196 |
-
}( jQuery ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/control.gradient.js
DELETED
@@ -1,51 +0,0 @@
|
|
1 |
-
( function( $ ){
|
2 |
-
|
3 |
-
// GRADIENT CONTROL CLASS DEFINITION
|
4 |
-
// ================================
|
5 |
-
|
6 |
-
var GradientControl = function (el) {
|
7 |
-
this.$element = $(el);
|
8 |
-
this.$picker = this.$element.find(".factory-gradient-picker");
|
9 |
-
this.$result = this.$element.find(".factory-result");
|
10 |
-
|
11 |
-
this.init();
|
12 |
-
};
|
13 |
-
|
14 |
-
GradientControl.prototype.init = function() {
|
15 |
-
var self = this;
|
16 |
-
|
17 |
-
var directions = this.$element.data('directions');
|
18 |
-
var points = this.$element.data('points');
|
19 |
-
var arrPoints = points ? points.split(',') : [];
|
20 |
-
|
21 |
-
this.$picker.gradientPicker({
|
22 |
-
change: function(points, styles) {
|
23 |
-
self.$result.val(styles).trigger('keyup');
|
24 |
-
},
|
25 |
-
fillDirection: directions,
|
26 |
-
controlPoints: arrPoints
|
27 |
-
});
|
28 |
-
};
|
29 |
-
|
30 |
-
// GRADIENT CONTROL DEFINITION
|
31 |
-
// ================================
|
32 |
-
|
33 |
-
$.fn.factoryBootstrap330_gradientControl = function (option) {
|
34 |
-
return this.each(function () {
|
35 |
-
var $this = $(this);
|
36 |
-
var data = $this.data('factory.gradient-control');
|
37 |
-
if (!data) $this.data('factory.gradient-control', (data = new GradientControl(this)));
|
38 |
-
if (typeof option === 'string') data[option].call(data);
|
39 |
-
});
|
40 |
-
};
|
41 |
-
|
42 |
-
$.fn.factoryBootstrap330_gradientControl.Constructor = GradientControl;
|
43 |
-
|
44 |
-
// GRADIENT CREATING
|
45 |
-
// ================================
|
46 |
-
|
47 |
-
$(function(){
|
48 |
-
$(".factory-bootstrap-330 .factory-gradient").factoryBootstrap330_gradientControl();
|
49 |
-
});
|
50 |
-
|
51 |
-
}( jQuery ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/control.integer.js
DELETED
@@ -1,102 +0,0 @@
|
|
1 |
-
( function( $ ){
|
2 |
-
|
3 |
-
// INTEGER CONTROL CLASS DEFINITION
|
4 |
-
// ================================
|
5 |
-
|
6 |
-
var IntegerControl = function (el) {
|
7 |
-
this.$element = $(el);
|
8 |
-
|
9 |
-
if ( this.$element.hasClass('factory-has-slider') ) {
|
10 |
-
this.createSlider();
|
11 |
-
}
|
12 |
-
};
|
13 |
-
|
14 |
-
IntegerControl.prototype.createSlider = function() {
|
15 |
-
var self = this;
|
16 |
-
|
17 |
-
var $container = this.$element.find(".factory-slider-container");
|
18 |
-
this.$bar = $container.find(".factory-bar");
|
19 |
-
|
20 |
-
this.$result = $container.find(".factory-result");
|
21 |
-
this.$visibleValue = $container.find(".factory-visible-value");
|
22 |
-
|
23 |
-
this.units = $container.data('units');
|
24 |
-
this.rangeStart = $container.data('range-start');
|
25 |
-
this.rangeEnd = $container.data('range-end');
|
26 |
-
this.step = $container.data('step');
|
27 |
-
if ( !this.step ) this.step = 1;
|
28 |
-
|
29 |
-
var value = this.$result.val();
|
30 |
-
|
31 |
-
var setValue = function( value ) {
|
32 |
-
self.setValue( value );
|
33 |
-
}
|
34 |
-
|
35 |
-
this.$bar.noUiSlider({
|
36 |
-
start: parseInt( value ),
|
37 |
-
range: {min: self.rangeStart, max: self.rangeEnd},
|
38 |
-
connect: "lower",
|
39 |
-
step: self.step
|
40 |
-
});
|
41 |
-
|
42 |
-
this.$bar.on("slide set", function(){
|
43 |
-
self.setValue( parseInt( self.$bar.val() ) );
|
44 |
-
});
|
45 |
-
};
|
46 |
-
|
47 |
-
IntegerControl.prototype.setValue = function ( value, force) {
|
48 |
-
this.$result.val( value );
|
49 |
-
|
50 |
-
if ( this.$visibleValue.length > 0 ) {
|
51 |
-
if ( this.units ) this.$visibleValue.text(value + this.units);
|
52 |
-
else this.$visibleValue.text(value);
|
53 |
-
}
|
54 |
-
|
55 |
-
if ( force ) {
|
56 |
-
this.$bar.noUiSlider({ start: value }, true);
|
57 |
-
}
|
58 |
-
|
59 |
-
this.$result.trigger('keyup');
|
60 |
-
this.$element.trigger('change');
|
61 |
-
};
|
62 |
-
|
63 |
-
IntegerControl.prototype.getValue = function () {
|
64 |
-
return this.$result.val();
|
65 |
-
};
|
66 |
-
|
67 |
-
IntegerControl.prototype.api = function () {
|
68 |
-
return this;
|
69 |
-
};
|
70 |
-
|
71 |
-
// INTEGER CONTROL DEFINITION
|
72 |
-
// ================================
|
73 |
-
|
74 |
-
$.fn.factoryBootstrap330_integerControl = function (option) {
|
75 |
-
|
76 |
-
// call an method
|
77 |
-
if ( typeof option === "string" ) {
|
78 |
-
var data = $(this).data('factory.integer-control');
|
79 |
-
if ( !data ) return null;
|
80 |
-
return data[option]();
|
81 |
-
}
|
82 |
-
|
83 |
-
// creating an object
|
84 |
-
else {
|
85 |
-
return this.each(function () {
|
86 |
-
var $this = $(this);
|
87 |
-
var data = $this.data('factory.integer-control');
|
88 |
-
if (!data) $this.data('factory.integer-control', (data = new IntegerControl(this)));
|
89 |
-
});
|
90 |
-
}
|
91 |
-
};
|
92 |
-
|
93 |
-
$.fn.factoryBootstrap330_integerControl.Constructor = IntegerControl;
|
94 |
-
|
95 |
-
// AUTO CREATING
|
96 |
-
// ================================
|
97 |
-
|
98 |
-
$(function(){
|
99 |
-
$(".factory-bootstrap-330 .factory-integer").factoryBootstrap330_integerControl();
|
100 |
-
});
|
101 |
-
|
102 |
-
}( jQuery ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/control.multiple-textbox.js
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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/assets/js/control.pattern.js
DELETED
@@ -1,218 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* Pattern Control
|
3 |
-
*
|
4 |
-
* @author Alex Kovalev <alex@byonepress.com>
|
5 |
-
* @author Paul Kashtanoff <paul@byonepress.com>
|
6 |
-
* @copyright (c) 2013-2014, OnePress Ltd
|
7 |
-
*
|
8 |
-
* @package factory-forms
|
9 |
-
* @since 3.1.0
|
10 |
-
*/
|
11 |
-
;( function( $ ){
|
12 |
-
|
13 |
-
$.widget( "factoryBootstrap330.patternControl", {
|
14 |
-
|
15 |
-
_create: function() {
|
16 |
-
|
17 |
-
this.$element = this.element;
|
18 |
-
this.$preview = this.$element.find(".factory-preview");
|
19 |
-
|
20 |
-
this.$patternResult = this.$element.find(".factory-pattern-result");
|
21 |
-
this.$colorResult = this.$element.find(".factory-color-result");
|
22 |
-
|
23 |
-
this.$patterns = this.$element.find(".factory-patterns-panel");
|
24 |
-
this.$patternItems = this.$element.find(".factory-patterns-item");
|
25 |
-
|
26 |
-
this.$btnUpload = this.$element.find(".factory-upload-btn");
|
27 |
-
|
28 |
-
this.$btnChangeColor = this.$element.find(".factory-change-color-btn");
|
29 |
-
this.$colorPanel = this.$element.find(".factory-color-panel");
|
30 |
-
this.$colorContol = this.$element.find(".factory-color");
|
31 |
-
|
32 |
-
this._initMainPanel();
|
33 |
-
this._initColorPickerPanel();
|
34 |
-
this._initPatternsPanel();
|
35 |
-
},
|
36 |
-
|
37 |
-
/**
|
38 |
-
* Inits the Main Panel with the dropdown and buttons.
|
39 |
-
*
|
40 |
-
* @since 3.1.0
|
41 |
-
* @return void
|
42 |
-
*/
|
43 |
-
_initMainPanel: function( ) {
|
44 |
-
var self = this;
|
45 |
-
|
46 |
-
// a click on a preview opens the patterns panel
|
47 |
-
|
48 |
-
this.$preview.on('click', function(){
|
49 |
-
|
50 |
-
self.togglePatternsPanel();
|
51 |
-
return false;
|
52 |
-
});
|
53 |
-
|
54 |
-
// the button showing the panel to a pattern change color
|
55 |
-
|
56 |
-
this.$btnChangeColor.on('click', function(){
|
57 |
-
|
58 |
-
self.toggleColorPanel();
|
59 |
-
return false;
|
60 |
-
});
|
61 |
-
},
|
62 |
-
|
63 |
-
/**
|
64 |
-
* Toggles the panel with which the user can choose another color for a pattern.
|
65 |
-
*
|
66 |
-
* @since 3.1.0
|
67 |
-
* @returns void
|
68 |
-
*/
|
69 |
-
togglePatternsPanel: function() {
|
70 |
-
|
71 |
-
if ( this.$element.hasClass('factory-patterns-panel-active') ) this.hidePatternsPanel();
|
72 |
-
else this.showPatternsPanel();
|
73 |
-
},
|
74 |
-
|
75 |
-
/**
|
76 |
-
* Hides the panel with which the user can choose another color for a pattern.
|
77 |
-
*
|
78 |
-
* @since 3.1.0
|
79 |
-
* @returns void
|
80 |
-
*/
|
81 |
-
hidePatternsPanel: function() {
|
82 |
-
|
83 |
-
this.$element.removeClass('factory-patterns-panel-active');
|
84 |
-
},
|
85 |
-
|
86 |
-
/**
|
87 |
-
* Shows the panel with which the user can choose another color for a pattern.
|
88 |
-
*
|
89 |
-
* @since 3.1.0
|
90 |
-
* @returns void
|
91 |
-
*/
|
92 |
-
showPatternsPanel: function() {
|
93 |
-
|
94 |
-
this.$element.addClass('factory-patterns-panel-active');
|
95 |
-
},
|
96 |
-
|
97 |
-
/**
|
98 |
-
* Returns true if the pattern has the color options set.
|
99 |
-
*
|
100 |
-
* @since 3.1.0
|
101 |
-
* @returns bool
|
102 |
-
*/
|
103 |
-
hasColor: function() {
|
104 |
-
|
105 |
-
return this.$element.hasClass('factory-color-panel-active');
|
106 |
-
},
|
107 |
-
|
108 |
-
/**
|
109 |
-
* Toggles the panel with which the user can choose another color for a pattern.
|
110 |
-
*
|
111 |
-
* @since 3.1.0
|
112 |
-
* @returns void
|
113 |
-
*/
|
114 |
-
toggleColorPanel: function() {
|
115 |
-
|
116 |
-
if ( this.hasColor() ) this.hideColorPanel();
|
117 |
-
else this.showColorPanel();
|
118 |
-
},
|
119 |
-
|
120 |
-
/**
|
121 |
-
* Hides the panel with which the user can choose another color for a pattern.
|
122 |
-
*
|
123 |
-
* @since 3.1.0
|
124 |
-
* @returns void
|
125 |
-
*/
|
126 |
-
hideColorPanel: function() {
|
127 |
-
|
128 |
-
this.$element.removeClass('factory-color-panel-active');
|
129 |
-
this.$btnChangeColor.removeClass('button-active');
|
130 |
-
this.$colorResult.val('');
|
131 |
-
this.$colorResult.trigger('change');
|
132 |
-
this.$element.trigger('change');
|
133 |
-
},
|
134 |
-
|
135 |
-
/**
|
136 |
-
* Shows the panel with which the user can choose another color for a pattern.
|
137 |
-
*
|
138 |
-
* @since 3.1.0
|
139 |
-
* @returns void
|
140 |
-
*/
|
141 |
-
showColorPanel: function() {
|
142 |
-
|
143 |
-
this.$element.addClass('factory-color-panel-active');
|
144 |
-
this.$btnChangeColor.addClass('button-active');
|
145 |
-
this.$colorResult.val( this.$colorContol.factoryBootstrap330_colorControl('getValue') );
|
146 |
-
this.$colorResult.trigger('change');
|
147 |
-
this.$element.trigger('change');
|
148 |
-
},
|
149 |
-
|
150 |
-
/**
|
151 |
-
* Inits the Color Picker panel.
|
152 |
-
*
|
153 |
-
* @since 3.1.0
|
154 |
-
* @return void
|
155 |
-
*/
|
156 |
-
_initColorPickerPanel: function() {
|
157 |
-
var self = this;
|
158 |
-
|
159 |
-
this.$colorContol.bind('updated.color.factory', function( e, color ){
|
160 |
-
self.$colorResult.val( color );
|
161 |
-
return false;
|
162 |
-
});
|
163 |
-
},
|
164 |
-
|
165 |
-
/**
|
166 |
-
* Inits the Patterns Panel.
|
167 |
-
*
|
168 |
-
* @since 3.1.0
|
169 |
-
* @return void
|
170 |
-
*/
|
171 |
-
_initPatternsPanel: function() {
|
172 |
-
var self = this;
|
173 |
-
|
174 |
-
// the upload button
|
175 |
-
|
176 |
-
var _custom_media = true,
|
177 |
-
_orig_send_attachment = wp.media.editor.send.attachment;
|
178 |
-
|
179 |
-
this.$btnUpload.on('click', function(){
|
180 |
-
|
181 |
-
_custom_media = true;
|
182 |
-
wp.media.editor.send.attachment = function(props, attachment){
|
183 |
-
if ( _custom_media ) {
|
184 |
-
self.$preview.css({background:'url('+attachment.url+') repeat', border:'0', fontSize:'0'});
|
185 |
-
self.$patternResult.attr('value', attachment.url).trigger('change');
|
186 |
-
} else {
|
187 |
-
return _orig_send_attachment.apply( this, [props, attachment] );
|
188 |
-
};
|
189 |
-
}
|
190 |
-
|
191 |
-
wp.media.editor.open( self.$btnUpload );
|
192 |
-
$('.add_media').on('click', function(){
|
193 |
-
_custom_media = false;
|
194 |
-
});
|
195 |
-
|
196 |
-
return false;
|
197 |
-
});
|
198 |
-
|
199 |
-
// selecting a pattern
|
200 |
-
|
201 |
-
this.$patternItems.on('click', function(){
|
202 |
-
|
203 |
-
if( $(this).data('pattern') ) {
|
204 |
-
var puthImage = $(this).data('pattern');
|
205 |
-
self.$preview.removeClass('factory-empty');
|
206 |
-
self.$preview.css({ background: 'url('+puthImage+') repeat' });
|
207 |
-
self.$patternResult.attr('value', puthImage).trigger('change');
|
208 |
-
}
|
209 |
-
});
|
210 |
-
}
|
211 |
-
});
|
212 |
-
|
213 |
-
$(function(){
|
214 |
-
$.widget.bridge( "factoryBootstrap330_patternControl", $.factoryBootstrap330.patternControl );
|
215 |
-
$(".factory-bootstrap-330 .factory-pattern").factoryBootstrap330_patternControl({});
|
216 |
-
});
|
217 |
-
|
218 |
-
}( jQuery ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/global.color-functions.js
DELETED
@@ -1,28 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* Конвертирует hex в rgb
|
3 |
-
*/
|
4 |
-
function hexToRgb(hex) {
|
5 |
-
// Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF")
|
6 |
-
var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
|
7 |
-
hex = hex.replace(shorthandRegex, function(m, r, g, b) {
|
8 |
-
return r + r + g + g + b + b;
|
9 |
-
});
|
10 |
-
|
11 |
-
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
12 |
-
return result ? {
|
13 |
-
r: parseInt(result[1], 16),
|
14 |
-
g: parseInt(result[2], 16),
|
15 |
-
b: parseInt(result[3], 16)
|
16 |
-
} : null;
|
17 |
-
}
|
18 |
-
|
19 |
-
/**
|
20 |
-
* Конвертирует rgb в hex
|
21 |
-
*/
|
22 |
-
function rgb2hex(rgb){
|
23 |
-
rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
|
24 |
-
return "#" +
|
25 |
-
("0" + parseInt(rgb[1],10).toString(16)).slice(-2) +
|
26 |
-
("0" + parseInt(rgb[2],10).toString(16)).slice(-2) +
|
27 |
-
("0" + parseInt(rgb[3],10).toString(16)).slice(-2);
|
28 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/holder.conrol-group.js
DELETED
@@ -1,20 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
*jQuery Control group holder
|
3 |
-
*/
|
4 |
-
(function( $ ) {
|
5 |
-
$(document).ready(function(){
|
6 |
-
$('.factory-control-group-nav-label').on('click', function(){
|
7 |
-
var parent = $(this).parents('.factory-control-group');
|
8 |
-
|
9 |
-
if( !$(this).hasClass('active') ) {
|
10 |
-
$('.factory-control-group-nav-label', parent).add('.factory-control-group-item', parent).removeClass('current');
|
11 |
-
$('.factory-control-is-active', parent).val(0);
|
12 |
-
|
13 |
-
$(this).add($("." + $(this).data('control-id'), parent)).addClass('current');
|
14 |
-
parent.children('input[type="hidden"]').val($(this).data('control-name')).trigger('change');
|
15 |
-
$('.factory-control-is-active', $("." + $(this).data('control-id'), parent)).val(1);
|
16 |
-
}
|
17 |
-
return false;
|
18 |
-
});
|
19 |
-
});
|
20 |
-
}(jQuery));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/holder.more-link.js
DELETED
@@ -1,37 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* Factory More Link
|
3 |
-
*/
|
4 |
-
|
5 |
-
;(function ( $, window, document, undefined ) {
|
6 |
-
"use strict"; // jshint ;_;
|
7 |
-
|
8 |
-
var pluginName = 'factoryBootstrap330_moreLink';
|
9 |
-
|
10 |
-
$.fn[pluginName] = function ( param1, param2 ) {
|
11 |
-
|
12 |
-
return this.each(function () {
|
13 |
-
var $this = $(this);
|
14 |
-
|
15 |
-
$this.find(".factory-more-link-show").click(function(){
|
16 |
-
$( $(this).attr('href') ).fadeIn();
|
17 |
-
$(this).hide();
|
18 |
-
return false;
|
19 |
-
});
|
20 |
-
|
21 |
-
$this.find(".factory-more-link-hide").click(function(){
|
22 |
-
var content = $( $(this).attr('href') );
|
23 |
-
content.fadeOut(300, function(){
|
24 |
-
content.parents(".factory-more-link").find(".factory-more-link-show").show();
|
25 |
-
});
|
26 |
-
return false;
|
27 |
-
});
|
28 |
-
});
|
29 |
-
};
|
30 |
-
|
31 |
-
// auto init
|
32 |
-
|
33 |
-
$(function(){
|
34 |
-
$('.factory-bootstrap-330 .factory-more-link').factoryBootstrap330_moreLink();
|
35 |
-
});
|
36 |
-
|
37 |
-
})( jQuery, window, document );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/plugin.chosen.js
DELETED
@@ -1,1211 +0,0 @@
|
|
1 |
-
/*!
|
2 |
-
Chosen, a Select Box Enhancer for jQuery and Prototype
|
3 |
-
by Patrick Filler for Harvest, http://getharvest.com
|
4 |
-
|
5 |
-
Version 1.1.0
|
6 |
-
Full source at https://github.com/harvesthq/chosen
|
7 |
-
Copyright (c) 2011 Harvest http://getharvest.com
|
8 |
-
|
9 |
-
MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
|
10 |
-
This file is generated by `grunt build`, do not edit it by hand.
|
11 |
-
*/
|
12 |
-
|
13 |
-
(function() {
|
14 |
-
var $, AbstractChosen, Chosen, SelectParser, _ref,
|
15 |
-
__hasProp = {}.hasOwnProperty,
|
16 |
-
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
|
17 |
-
|
18 |
-
SelectParser = (function() {
|
19 |
-
function SelectParser() {
|
20 |
-
this.options_index = 0;
|
21 |
-
this.parsed = [];
|
22 |
-
}
|
23 |
-
|
24 |
-
SelectParser.prototype.add_node = function(child) {
|
25 |
-
if (child.nodeName.toUpperCase() === "OPTGROUP") {
|
26 |
-
return this.add_group(child);
|
27 |
-
} else {
|
28 |
-
return this.add_option(child);
|
29 |
-
}
|
30 |
-
};
|
31 |
-
|
32 |
-
SelectParser.prototype.add_group = function(group) {
|
33 |
-
var group_position, option, _i, _len, _ref, _results;
|
34 |
-
group_position = this.parsed.length;
|
35 |
-
this.parsed.push({
|
36 |
-
array_index: group_position,
|
37 |
-
group: true,
|
38 |
-
label: this.escapeExpression(group.label),
|
39 |
-
children: 0,
|
40 |
-
disabled: group.disabled
|
41 |
-
});
|
42 |
-
_ref = group.childNodes;
|
43 |
-
_results = [];
|
44 |
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
45 |
-
option = _ref[_i];
|
46 |
-
_results.push(this.add_option(option, group_position, group.disabled));
|
47 |
-
}
|
48 |
-
return _results;
|
49 |
-
};
|
50 |
-
|
51 |
-
SelectParser.prototype.add_option = function(option, group_position, group_disabled) {
|
52 |
-
if (option.nodeName.toUpperCase() === "OPTION") {
|
53 |
-
if (option.text !== "") {
|
54 |
-
if (group_position != null) {
|
55 |
-
this.parsed[group_position].children += 1;
|
56 |
-
}
|
57 |
-
this.parsed.push({
|
58 |
-
array_index: this.parsed.length,
|
59 |
-
options_index: this.options_index,
|
60 |
-
value: option.value,
|
61 |
-
text: option.text,
|
62 |
-
html: option.innerHTML,
|
63 |
-
selected: option.selected,
|
64 |
-
disabled: group_disabled === true ? group_disabled : option.disabled,
|
65 |
-
group_array_index: group_position,
|
66 |
-
classes: option.className,
|
67 |
-
style: option.style.cssText
|
68 |
-
});
|
69 |
-
} else {
|
70 |
-
this.parsed.push({
|
71 |
-
array_index: this.parsed.length,
|
72 |
-
options_index: this.options_index,
|
73 |
-
empty: true
|
74 |
-
});
|
75 |
-
}
|
76 |
-
return this.options_index += 1;
|
77 |
-
}
|
78 |
-
};
|
79 |
-
|
80 |
-
SelectParser.prototype.escapeExpression = function(text) {
|
81 |
-
var map, unsafe_chars;
|
82 |
-
if ((text == null) || text === false) {
|
83 |
-
return "";
|
84 |
-
}
|
85 |
-
if (!/[\&\<\>\"\'\`]/.test(text)) {
|
86 |
-
return text;
|
87 |
-
}
|
88 |
-
map = {
|
89 |
-
"<": "<",
|
90 |
-
">": ">",
|
91 |
-
'"': """,
|
92 |
-
"'": "'",
|
93 |
-
"`": "`"
|
94 |
-
};
|
95 |
-
unsafe_chars = /&(?!\w+;)|[\<\>\"\'\`]/g;
|
96 |
-
return text.replace(unsafe_chars, function(chr) {
|
97 |
-
return map[chr] || "&";
|
98 |
-
});
|
99 |
-
};
|
100 |
-
|
101 |
-
return SelectParser;
|
102 |
-
|
103 |
-
})();
|
104 |
-
|
105 |
-
SelectParser.select_to_array = function(select) {
|
106 |
-
var child, parser, _i, _len, _ref;
|
107 |
-
parser = new SelectParser();
|
108 |
-
_ref = select.childNodes;
|
109 |
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
110 |
-
child = _ref[_i];
|
111 |
-
parser.add_node(child);
|
112 |
-
}
|
113 |
-
return parser.parsed;
|
114 |
-
};
|
115 |
-
|
116 |
-
AbstractChosen = (function() {
|
117 |
-
function AbstractChosen(form_field, options) {
|
118 |
-
this.form_field = form_field;
|
119 |
-
this.options = options != null ? options : {};
|
120 |
-
if (!AbstractChosen.browser_is_supported()) {
|
121 |
-
return;
|
122 |
-
}
|
123 |
-
this.is_multiple = this.form_field.multiple;
|
124 |
-
this.set_default_text();
|
125 |
-
this.set_default_values();
|
126 |
-
this.setup();
|
127 |
-
this.set_up_html();
|
128 |
-
this.register_observers();
|
129 |
-
}
|
130 |
-
|
131 |
-
AbstractChosen.prototype.set_default_values = function() {
|
132 |
-
var _this = this;
|
133 |
-
this.click_test_action = function(evt) {
|
134 |
-
return _this.test_active_click(evt);
|
135 |
-
};
|
136 |
-
this.activate_action = function(evt) {
|
137 |
-
return _this.activate_field(evt);
|
138 |
-
};
|
139 |
-
this.active_field = false;
|
140 |
-
this.mouse_on_container = false;
|
141 |
-
this.results_showing = false;
|
142 |
-
this.result_highlighted = null;
|
143 |
-
this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === "" ? this.options.allow_single_deselect : false;
|
144 |
-
this.disable_search_threshold = this.options.disable_search_threshold || 0;
|
145 |
-
this.disable_search = this.options.disable_search || false;
|
146 |
-
this.enable_split_word_search = this.options.enable_split_word_search != null ? this.options.enable_split_word_search : true;
|
147 |
-
this.group_search = this.options.group_search != null ? this.options.group_search : true;
|
148 |
-
this.search_contains = this.options.search_contains || false;
|
149 |
-
this.single_backstroke_delete = this.options.single_backstroke_delete != null ? this.options.single_backstroke_delete : true;
|
150 |
-
this.max_selected_options = this.options.max_selected_options || Infinity;
|
151 |
-
this.inherit_select_classes = this.options.inherit_select_classes || false;
|
152 |
-
this.display_selected_options = this.options.display_selected_options != null ? this.options.display_selected_options : true;
|
153 |
-
return this.display_disabled_options = this.options.display_disabled_options != null ? this.options.display_disabled_options : true;
|
154 |
-
};
|
155 |
-
|
156 |
-
AbstractChosen.prototype.set_default_text = function() {
|
157 |
-
if (this.form_field.getAttribute("data-placeholder")) {
|
158 |
-
this.default_text = this.form_field.getAttribute("data-placeholder");
|
159 |
-
} else if (this.is_multiple) {
|
160 |
-
this.default_text = this.options.placeholder_text_multiple || this.options.placeholder_text || AbstractChosen.default_multiple_text;
|
161 |
-
} else {
|
162 |
-
this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text;
|
163 |
-
}
|
164 |
-
return this.results_none_found = this.form_field.getAttribute("data-no_results_text") || this.options.no_results_text || AbstractChosen.default_no_result_text;
|
165 |
-
};
|
166 |
-
|
167 |
-
AbstractChosen.prototype.mouse_enter = function() {
|
168 |
-
return this.mouse_on_container = true;
|
169 |
-
};
|
170 |
-
|
171 |
-
AbstractChosen.prototype.mouse_leave = function() {
|
172 |
-
return this.mouse_on_container = false;
|
173 |
-
};
|
174 |
-
|
175 |
-
AbstractChosen.prototype.input_focus = function(evt) {
|
176 |
-
var _this = this;
|
177 |
-
if (this.is_multiple) {
|
178 |
-
if (!this.active_field) {
|
179 |
-
return setTimeout((function() {
|
180 |
-
return _this.container_mousedown();
|
181 |
-
}), 50);
|
182 |
-
}
|
183 |
-
} else {
|
184 |
-
if (!this.active_field) {
|
185 |
-
return this.activate_field();
|
186 |
-
}
|
187 |
-
}
|
188 |
-
};
|
189 |
-
|
190 |
-
AbstractChosen.prototype.input_blur = function(evt) {
|
191 |
-
var _this = this;
|
192 |
-
if (!this.mouse_on_container) {
|
193 |
-
this.active_field = false;
|
194 |
-
return setTimeout((function() {
|
195 |
-
return _this.blur_test();
|
196 |
-
}), 100);
|
197 |
-
}
|
198 |
-
};
|
199 |
-
|
200 |
-
AbstractChosen.prototype.results_option_build = function(options) {
|
201 |
-
var content, data, _i, _len, _ref;
|
202 |
-
content = '';
|
203 |
-
_ref = this.results_data;
|
204 |
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
205 |
-
data = _ref[_i];
|
206 |
-
if (data.group) {
|
207 |
-
content += this.result_add_group(data);
|
208 |
-
} else {
|
209 |
-
content += this.result_add_option(data);
|
210 |
-
}
|
211 |
-
if (options != null ? options.first : void 0) {
|
212 |
-
if (data.selected && this.is_multiple) {
|
213 |
-
this.choice_build(data);
|
214 |
-
} else if (data.selected && !this.is_multiple) {
|
215 |
-
this.single_set_selected_text(data.text);
|
216 |
-
}
|
217 |
-
}
|
218 |
-
}
|
219 |
-
return content;
|
220 |
-
};
|
221 |
-
|
222 |
-
AbstractChosen.prototype.result_add_option = function(option) {
|
223 |
-
var classes, option_el;
|
224 |
-
if (!option.search_match) {
|
225 |
-
return '';
|
226 |
-
}
|
227 |
-
if (!this.include_option_in_results(option)) {
|
228 |
-
return '';
|
229 |
-
}
|
230 |
-
classes = [];
|
231 |
-
if (!option.disabled && !(option.selected && this.is_multiple)) {
|
232 |
-
classes.push("active-result");
|
233 |
-
}
|
234 |
-
if (option.disabled && !(option.selected && this.is_multiple)) {
|
235 |
-
classes.push("disabled-result");
|
236 |
-
}
|
237 |
-
if (option.selected) {
|
238 |
-
classes.push("result-selected");
|
239 |
-
}
|
240 |
-
if (option.group_array_index != null) {
|
241 |
-
classes.push("group-option");
|
242 |
-
}
|
243 |
-
if (option.classes !== "") {
|
244 |
-
classes.push(option.classes);
|
245 |
-
}
|
246 |
-
option_el = document.createElement("li");
|
247 |
-
option_el.className = classes.join(" ");
|
248 |
-
option_el.style.cssText = option.style;
|
249 |
-
option_el.setAttribute("data-option-array-index", option.array_index);
|
250 |
-
option_el.innerHTML = option.search_text;
|
251 |
-
return this.outerHTML(option_el);
|
252 |
-
};
|
253 |
-
|
254 |
-
AbstractChosen.prototype.result_add_group = function(group) {
|
255 |
-
var group_el;
|
256 |
-
if (!(group.search_match || group.group_match)) {
|
257 |
-
return '';
|
258 |
-
}
|
259 |
-
if (!(group.active_options > 0)) {
|
260 |
-
return '';
|
261 |
-
}
|
262 |
-
group_el = document.createElement("li");
|
263 |
-
group_el.className = "group-result";
|
264 |
-
group_el.innerHTML = group.search_text;
|
265 |
-
return this.outerHTML(group_el);
|
266 |
-
};
|
267 |
-
|
268 |
-
AbstractChosen.prototype.results_update_field = function() {
|
269 |
-
this.set_default_text();
|
270 |
-
if (!this.is_multiple) {
|
271 |
-
this.results_reset_cleanup();
|
272 |
-
}
|
273 |
-
this.result_clear_highlight();
|
274 |
-
this.results_build();
|
275 |
-
if (this.results_showing) {
|
276 |
-
return this.winnow_results();
|
277 |
-
}
|
278 |
-
};
|
279 |
-
|
280 |
-
AbstractChosen.prototype.reset_single_select_options = function() {
|
281 |
-
var result, _i, _len, _ref, _results;
|
282 |
-
_ref = this.results_data;
|
283 |
-
_results = [];
|
284 |
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
285 |
-
result = _ref[_i];
|
286 |
-
if (result.selected) {
|
287 |
-
_results.push(result.selected = false);
|
288 |
-
} else {
|
289 |
-
_results.push(void 0);
|
290 |
-
}
|
291 |
-
}
|
292 |
-
return _results;
|
293 |
-
};
|
294 |
-
|
295 |
-
AbstractChosen.prototype.results_toggle = function() {
|
296 |
-
if (this.results_showing) {
|
297 |
-
return this.results_hide();
|
298 |
-
} else {
|
299 |
-
return this.results_show();
|
300 |
-
}
|
301 |
-
};
|
302 |
-
|
303 |
-
AbstractChosen.prototype.results_search = function(evt) {
|
304 |
-
if (this.results_showing) {
|
305 |
-
return this.winnow_results();
|
306 |
-
} else {
|
307 |
-
return this.results_show();
|
308 |
-
}
|
309 |
-
};
|
310 |
-
|
311 |
-
AbstractChosen.prototype.winnow_results = function() {
|
312 |
-
var escapedSearchText, option, regex, regexAnchor, results, results_group, searchText, startpos, text, zregex, _i, _len, _ref;
|
313 |
-
this.no_results_clear();
|
314 |
-
results = 0;
|
315 |
-
searchText = this.get_search_text();
|
316 |
-
escapedSearchText = searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
|
317 |
-
regexAnchor = this.search_contains ? "" : "^";
|
318 |
-
regex = new RegExp(regexAnchor + escapedSearchText, 'i');
|
319 |
-
zregex = new RegExp(escapedSearchText, 'i');
|
320 |
-
_ref = this.results_data;
|
321 |
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
322 |
-
option = _ref[_i];
|
323 |
-
option.search_match = false;
|
324 |
-
results_group = null;
|
325 |
-
if (this.include_option_in_results(option)) {
|
326 |
-
if (option.group) {
|
327 |
-
option.group_match = false;
|
328 |
-
option.active_options = 0;
|
329 |
-
}
|
330 |
-
if ((option.group_array_index != null) && this.results_data[option.group_array_index]) {
|
331 |
-
results_group = this.results_data[option.group_array_index];
|
332 |
-
if (results_group.active_options === 0 && results_group.search_match) {
|
333 |
-
results += 1;
|
334 |
-
}
|
335 |
-
results_group.active_options += 1;
|
336 |
-
}
|
337 |
-
if (!(option.group && !this.group_search)) {
|
338 |
-
option.search_text = option.group ? option.label : option.html;
|
339 |
-
option.search_match = this.search_string_match(option.search_text, regex);
|
340 |
-
if (option.search_match && !option.group) {
|
341 |
-
results += 1;
|
342 |
-
}
|
343 |
-
if (option.search_match) {
|
344 |
-
if (searchText.length) {
|
345 |
-
startpos = option.search_text.search(zregex);
|
346 |
-
text = option.search_text.substr(0, startpos + searchText.length) + '</em>' + option.search_text.substr(startpos + searchText.length);
|
347 |
-
option.search_text = text.substr(0, startpos) + '<em>' + text.substr(startpos);
|
348 |
-
}
|
349 |
-
if (results_group != null) {
|
350 |
-
results_group.group_match = true;
|
351 |
-
}
|
352 |
-
} else if ((option.group_array_index != null) && this.results_data[option.group_array_index].search_match) {
|
353 |
-
option.search_match = true;
|
354 |
-
}
|
355 |
-
}
|
356 |
-
}
|
357 |
-
}
|
358 |
-
this.result_clear_highlight();
|
359 |
-
if (results < 1 && searchText.length) {
|
360 |
-
this.update_results_content("");
|
361 |
-
return this.no_results(searchText);
|
362 |
-
} else {
|
363 |
-
this.update_results_content(this.results_option_build());
|
364 |
-
return this.winnow_results_set_highlight();
|
365 |
-
}
|
366 |
-
};
|
367 |
-
|
368 |
-
AbstractChosen.prototype.search_string_match = function(search_string, regex) {
|
369 |
-
var part, parts, _i, _len;
|
370 |
-
if (regex.test(search_string)) {
|
371 |
-
return true;
|
372 |
-
} else if (this.enable_split_word_search && (search_string.indexOf(" ") >= 0 || search_string.indexOf("[") === 0)) {
|
373 |
-
parts = search_string.replace(/\[|\]/g, "").split(" ");
|
374 |
-
if (parts.length) {
|
375 |
-
for (_i = 0, _len = parts.length; _i < _len; _i++) {
|
376 |
-
part = parts[_i];
|
377 |
-
if (regex.test(part)) {
|
378 |
-
return true;
|
379 |
-
}
|
380 |
-
}
|
381 |
-
}
|
382 |
-
}
|
383 |
-
};
|
384 |
-
|
385 |
-
AbstractChosen.prototype.choices_count = function() {
|
386 |
-
var option, _i, _len, _ref;
|
387 |
-
if (this.selected_option_count != null) {
|
388 |
-
return this.selected_option_count;
|
389 |
-
}
|
390 |
-
this.selected_option_count = 0;
|
391 |
-
_ref = this.form_field.options;
|
392 |
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
393 |
-
option = _ref[_i];
|
394 |
-
if (option.selected) {
|
395 |
-
this.selected_option_count += 1;
|
396 |
-
}
|
397 |
-
}
|
398 |
-
return this.selected_option_count;
|
399 |
-
};
|
400 |
-
|
401 |
-
AbstractChosen.prototype.choices_click = function(evt) {
|
402 |
-
evt.preventDefault();
|
403 |
-
if (!(this.results_showing || this.is_disabled)) {
|
404 |
-
return this.results_show();
|
405 |
-
}
|
406 |
-
};
|
407 |
-
|
408 |
-
AbstractChosen.prototype.keyup_checker = function(evt) {
|
409 |
-
var stroke, _ref;
|
410 |
-
stroke = (_ref = evt.which) != null ? _ref : evt.keyCode;
|
411 |
-
this.search_field_scale();
|
412 |
-
switch (stroke) {
|
413 |
-
case 8:
|
414 |
-
if (this.is_multiple && this.backstroke_length < 1 && this.choices_count() > 0) {
|
415 |
-
return this.keydown_backstroke();
|
416 |
-
} else if (!this.pending_backstroke) {
|
417 |
-
this.result_clear_highlight();
|
418 |
-
return this.results_search();
|
419 |
-
}
|
420 |
-
break;
|
421 |
-
case 13:
|
422 |
-
evt.preventDefault();
|
423 |
-
if (this.results_showing) {
|
424 |
-
return this.result_select(evt);
|
425 |
-
}
|
426 |
-
break;
|
427 |
-
case 27:
|
428 |
-
if (this.results_showing) {
|
429 |
-
this.results_hide();
|
430 |
-
}
|
431 |
-
return true;
|
432 |
-
case 9:
|
433 |
-
case 38:
|
434 |
-
case 40:
|
435 |
-
case 16:
|
436 |
-
case 91:
|
437 |
-
case 17:
|
438 |
-
break;
|
439 |
-
default:
|
440 |
-
return this.results_search();
|
441 |
-
}
|
442 |
-
};
|
443 |
-
|
444 |
-
AbstractChosen.prototype.clipboard_event_checker = function(evt) {
|
445 |
-
var _this = this;
|
446 |
-
return setTimeout((function() {
|
447 |
-
return _this.results_search();
|
448 |
-
}), 50);
|
449 |
-
};
|
450 |
-
|
451 |
-
AbstractChosen.prototype.container_width = function() {
|
452 |
-
if (this.options.width != null) {
|
453 |
-
return this.options.width;
|
454 |
-
} else {
|
455 |
-
return "" + this.form_field.offsetWidth + "px";
|
456 |
-
}
|
457 |
-
};
|
458 |
-
|
459 |
-
AbstractChosen.prototype.include_option_in_results = function(option) {
|
460 |
-
if (this.is_multiple && (!this.display_selected_options && option.selected)) {
|
461 |
-
return false;
|
462 |
-
}
|
463 |
-
if (!this.display_disabled_options && option.disabled) {
|
464 |
-
return false;
|
465 |
-
}
|
466 |
-
if (option.empty) {
|
467 |
-
return false;
|
468 |
-
}
|
469 |
-
return true;
|
470 |
-
};
|
471 |
-
|
472 |
-
AbstractChosen.prototype.search_results_touchstart = function(evt) {
|
473 |
-
this.touch_started = true;
|
474 |
-
return this.search_results_mouseover(evt);
|
475 |
-
};
|
476 |
-
|
477 |
-
AbstractChosen.prototype.search_results_touchmove = function(evt) {
|
478 |
-
this.touch_started = false;
|
479 |
-
return this.search_results_mouseout(evt);
|
480 |
-
};
|
481 |
-
|
482 |
-
AbstractChosen.prototype.search_results_touchend = function(evt) {
|
483 |
-
if (this.touch_started) {
|
484 |
-
return this.search_results_mouseup(evt);
|
485 |
-
}
|
486 |
-
};
|
487 |
-
|
488 |
-
AbstractChosen.prototype.outerHTML = function(element) {
|
489 |
-
var tmp;
|
490 |
-
if (element.outerHTML) {
|
491 |
-
return element.outerHTML;
|
492 |
-
}
|
493 |
-
tmp = document.createElement("div");
|
494 |
-
tmp.appendChild(element);
|
495 |
-
return tmp.innerHTML;
|
496 |
-
};
|
497 |
-
|
498 |
-
AbstractChosen.browser_is_supported = function() {
|
499 |
-
if (window.navigator.appName === "Microsoft Internet Explorer") {
|
500 |
-
return document.documentMode >= 8;
|
501 |
-
}
|
502 |
-
if (/iP(od|hone)/i.test(window.navigator.userAgent)) {
|
503 |
-
return false;
|
504 |
-
}
|
505 |
-
if (/Android/i.test(window.navigator.userAgent)) {
|
506 |
-
if (/Mobile/i.test(window.navigator.userAgent)) {
|
507 |
-
return false;
|
508 |
-
}
|
509 |
-
}
|
510 |
-
return true;
|
511 |
-
};
|
512 |
-
|
513 |
-
AbstractChosen.default_multiple_text = "Select Some Options";
|
514 |
-
|
515 |
-
AbstractChosen.default_single_text = "Select an Option";
|
516 |
-
|
517 |
-
AbstractChosen.default_no_result_text = "No results match";
|
518 |
-
|
519 |
-
return AbstractChosen;
|
520 |
-
|
521 |
-
})();
|
522 |
-
|
523 |
-
$ = jQuery;
|
524 |
-
|
525 |
-
$.fn.extend({
|
526 |
-
chosen: function(options) {
|
527 |
-
if (!AbstractChosen.browser_is_supported()) {
|
528 |
-
return this;
|
529 |
-
}
|
530 |
-
return this.each(function(input_field) {
|
531 |
-
var $this, chosen;
|
532 |
-
$this = $(this);
|
533 |
-
chosen = $this.data('chosen');
|
534 |
-
if (options === 'destroy' && chosen) {
|
535 |
-
chosen.destroy();
|
536 |
-
} else if (!chosen) {
|
537 |
-
$this.data('chosen', new Chosen(this, options));
|
538 |
-
}
|
539 |
-
});
|
540 |
-
}
|
541 |
-
});
|
542 |
-
|
543 |
-
Chosen = (function(_super) {
|
544 |
-
__extends(Chosen, _super);
|
545 |
-
|
546 |
-
function Chosen() {
|
547 |
-
_ref = Chosen.__super__.constructor.apply(this, arguments);
|
548 |
-
return _ref;
|
549 |
-
}
|
550 |
-
|
551 |
-
Chosen.prototype.setup = function() {
|
552 |
-
this.form_field_jq = $(this.form_field);
|
553 |
-
this.current_selectedIndex = this.form_field.selectedIndex;
|
554 |
-
return this.is_rtl = this.form_field_jq.hasClass("chosen-rtl");
|
555 |
-
};
|
556 |
-
|
557 |
-
Chosen.prototype.set_up_html = function() {
|
558 |
-
var container_classes, container_props;
|
559 |
-
container_classes = ["chosen-container"];
|
560 |
-
container_classes.push("chosen-container-" + (this.is_multiple ? "multi" : "single"));
|
561 |
-
if (this.inherit_select_classes && this.form_field.className) {
|
562 |
-
container_classes.push(this.form_field.className);
|
563 |
-
}
|
564 |
-
if (this.is_rtl) {
|
565 |
-
container_classes.push("chosen-rtl");
|
566 |
-
}
|
567 |
-
container_props = {
|
568 |
-
'class': container_classes.join(' '),
|
569 |
-
'style': "width: " + (this.container_width()) + ";",
|
570 |
-
'title': this.form_field.title
|
571 |
-
};
|
572 |
-
if (this.form_field.id.length) {
|
573 |
-
container_props.id = this.form_field.id.replace(/[^\w]/g, '_') + "_chosen";
|
574 |
-
}
|
575 |
-
this.container = $("<div />", container_props);
|
576 |
-
if (this.is_multiple) {
|
577 |
-
this.container.html('<ul class="chosen-choices"><li class="search-field"><input type="text" value="' + this.default_text + '" class="default" autocomplete="off" style="width:25px;" /></li></ul><div class="chosen-drop"><ul class="chosen-results"></ul></div>');
|
578 |
-
} else {
|
579 |
-
this.container.html('<a class="chosen-single chosen-default" tabindex="-1"><span>' + this.default_text + '</span><div><b></b></div></a><div class="chosen-drop"><div class="chosen-search"><input type="text" autocomplete="off" /></div><ul class="chosen-results"></ul></div>');
|
580 |
-
}
|
581 |
-
this.form_field_jq.hide().after(this.container);
|
582 |
-
this.dropdown = this.container.find('div.chosen-drop').first();
|
583 |
-
this.search_field = this.container.find('input').first();
|
584 |
-
this.search_results = this.container.find('ul.chosen-results').first();
|
585 |
-
this.search_field_scale();
|
586 |
-
this.search_no_results = this.container.find('li.no-results').first();
|
587 |
-
if (this.is_multiple) {
|
588 |
-
this.search_choices = this.container.find('ul.chosen-choices').first();
|
589 |
-
this.search_container = this.container.find('li.search-field').first();
|
590 |
-
} else {
|
591 |
-
this.search_container = this.container.find('div.chosen-search').first();
|
592 |
-
this.selected_item = this.container.find('.chosen-single').first();
|
593 |
-
}
|
594 |
-
this.results_build();
|
595 |
-
this.set_tab_index();
|
596 |
-
this.set_label_behavior();
|
597 |
-
return this.form_field_jq.trigger("chosen:ready", {
|
598 |
-
chosen: this
|
599 |
-
});
|
600 |
-
};
|
601 |
-
|
602 |
-
Chosen.prototype.register_observers = function() {
|
603 |
-
var _this = this;
|
604 |
-
this.container.bind('mousedown.chosen', function(evt) {
|
605 |
-
_this.container_mousedown(evt);
|
606 |
-
});
|
607 |
-
this.container.bind('mouseup.chosen', function(evt) {
|
608 |
-
_this.container_mouseup(evt);
|
609 |
-
});
|
610 |
-
this.container.bind('mouseenter.chosen', function(evt) {
|
611 |
-
_this.mouse_enter(evt);
|
612 |
-
});
|
613 |
-
this.container.bind('mouseleave.chosen', function(evt) {
|
614 |
-
_this.mouse_leave(evt);
|
615 |
-
});
|
616 |
-
this.search_results.bind('mouseup.chosen', function(evt) {
|
617 |
-
_this.search_results_mouseup(evt);
|
618 |
-
});
|
619 |
-
this.search_results.bind('mouseover.chosen', function(evt) {
|
620 |
-
_this.search_results_mouseover(evt);
|
621 |
-
});
|
622 |
-
this.search_results.bind('mouseout.chosen', function(evt) {
|
623 |
-
_this.search_results_mouseout(evt);
|
624 |
-
});
|
625 |
-
this.search_results.bind('mousewheel.chosen DOMMouseScroll.chosen', function(evt) {
|
626 |
-
_this.search_results_mousewheel(evt);
|
627 |
-
});
|
628 |
-
this.search_results.bind('touchstart.chosen', function(evt) {
|
629 |
-
_this.search_results_touchstart(evt);
|
630 |
-
});
|
631 |
-
this.search_results.bind('touchmove.chosen', function(evt) {
|
632 |
-
_this.search_results_touchmove(evt);
|
633 |
-
});
|
634 |
-
this.search_results.bind('touchend.chosen', function(evt) {
|
635 |
-
_this.search_results_touchend(evt);
|
636 |
-
});
|
637 |
-
this.form_field_jq.bind("chosen:updated.chosen", function(evt) {
|
638 |
-
_this.results_update_field(evt);
|
639 |
-
});
|
640 |
-
this.form_field_jq.bind("chosen:activate.chosen", function(evt) {
|
641 |
-
_this.activate_field(evt);
|
642 |
-
});
|
643 |
-
this.form_field_jq.bind("chosen:open.chosen", function(evt) {
|
644 |
-
_this.container_mousedown(evt);
|
645 |
-
});
|
646 |
-
this.form_field_jq.bind("chosen:close.chosen", function(evt) {
|
647 |
-
_this.input_blur(evt);
|
648 |
-
});
|
649 |
-
this.search_field.bind('blur.chosen', function(evt) {
|
650 |
-
_this.input_blur(evt);
|
651 |
-
});
|
652 |
-
this.search_field.bind('keyup.chosen', function(evt) {
|
653 |
-
_this.keyup_checker(evt);
|
654 |
-
});
|
655 |
-
this.search_field.bind('keydown.chosen', function(evt) {
|
656 |
-
_this.keydown_checker(evt);
|
657 |
-
});
|
658 |
-
this.search_field.bind('focus.chosen', function(evt) {
|
659 |
-
_this.input_focus(evt);
|
660 |
-
});
|
661 |
-
this.search_field.bind('cut.chosen', function(evt) {
|
662 |
-
_this.clipboard_event_checker(evt);
|
663 |
-
});
|
664 |
-
this.search_field.bind('paste.chosen', function(evt) {
|
665 |
-
_this.clipboard_event_checker(evt);
|
666 |
-
});
|
667 |
-
if (this.is_multiple) {
|
668 |
-
return this.search_choices.bind('click.chosen', function(evt) {
|
669 |
-
_this.choices_click(evt);
|
670 |
-
});
|
671 |
-
} else {
|
672 |
-
return this.container.bind('click.chosen', function(evt) {
|
673 |
-
evt.preventDefault();
|
674 |
-
});
|
675 |
-
}
|
676 |
-
};
|
677 |
-
|
678 |
-
Chosen.prototype.destroy = function() {
|
679 |
-
$(this.container[0].ownerDocument).unbind("click.chosen", this.click_test_action);
|
680 |
-
if (this.search_field[0].tabIndex) {
|
681 |
-
this.form_field_jq[0].tabIndex = this.search_field[0].tabIndex;
|
682 |
-
}
|
683 |
-
this.container.remove();
|
684 |
-
this.form_field_jq.removeData('chosen');
|
685 |
-
return this.form_field_jq.show();
|
686 |
-
};
|
687 |
-
|
688 |
-
Chosen.prototype.search_field_disabled = function() {
|
689 |
-
this.is_disabled = this.form_field_jq[0].disabled;
|
690 |
-
if (this.is_disabled) {
|
691 |
-
this.container.addClass('chosen-disabled');
|
692 |
-
this.search_field[0].disabled = true;
|
693 |
-
if (!this.is_multiple) {
|
694 |
-
this.selected_item.unbind("focus.chosen", this.activate_action);
|
695 |
-
}
|
696 |
-
return this.close_field();
|
697 |
-
} else {
|
698 |
-
this.container.removeClass('chosen-disabled');
|
699 |
-
this.search_field[0].disabled = false;
|
700 |
-
if (!this.is_multiple) {
|
701 |
-
return this.selected_item.bind("focus.chosen", this.activate_action);
|
702 |
-
}
|
703 |
-
}
|
704 |
-
};
|
705 |
-
|
706 |
-
Chosen.prototype.container_mousedown = function(evt) {
|
707 |
-
if (!this.is_disabled) {
|
708 |
-
if (evt && evt.type === "mousedown" && !this.results_showing) {
|
709 |
-
evt.preventDefault();
|
710 |
-
}
|
711 |
-
if (!((evt != null) && ($(evt.target)).hasClass("search-choice-close"))) {
|
712 |
-
if (!this.active_field) {
|
713 |
-
if (this.is_multiple) {
|
714 |
-
this.search_field.val("");
|
715 |
-
}
|
716 |
-
$(this.container[0].ownerDocument).bind('click.chosen', this.click_test_action);
|
717 |
-
this.results_show();
|
718 |
-
} else if (!this.is_multiple && evt && (($(evt.target)[0] === this.selected_item[0]) || $(evt.target).parents("a.chosen-single").length)) {
|
719 |
-
evt.preventDefault();
|
720 |
-
this.results_toggle();
|
721 |
-
}
|
722 |
-
return this.activate_field();
|
723 |
-
}
|
724 |
-
}
|
725 |
-
};
|
726 |
-
|
727 |
-
Chosen.prototype.container_mouseup = function(evt) {
|
728 |
-
if (evt.target.nodeName === "ABBR" && !this.is_disabled) {
|
729 |
-
return this.results_reset(evt);
|
730 |
-
}
|
731 |
-
};
|
732 |
-
|
733 |
-
Chosen.prototype.search_results_mousewheel = function(evt) {
|
734 |
-
var delta;
|
735 |
-
if (evt.originalEvent) {
|
736 |
-
delta = -evt.originalEvent.wheelDelta || evt.originalEvent.detail;
|
737 |
-
}
|
738 |
-
if (delta != null) {
|
739 |
-
evt.preventDefault();
|
740 |
-
if (evt.type === 'DOMMouseScroll') {
|
741 |
-
delta = delta * 40;
|
742 |
-
}
|
743 |
-
return this.search_results.scrollTop(delta + this.search_results.scrollTop());
|
744 |
-
}
|
745 |
-
};
|
746 |
-
|
747 |
-
Chosen.prototype.blur_test = function(evt) {
|
748 |
-
if (!this.active_field && this.container.hasClass("chosen-container-active")) {
|
749 |
-
return this.close_field();
|
750 |
-
}
|
751 |
-
};
|
752 |
-
|
753 |
-
Chosen.prototype.close_field = function() {
|
754 |
-
$(this.container[0].ownerDocument).unbind("click.chosen", this.click_test_action);
|
755 |
-
this.active_field = false;
|
756 |
-
this.results_hide();
|
757 |
-
this.container.removeClass("chosen-container-active");
|
758 |
-
this.clear_backstroke();
|
759 |
-
this.show_search_field_default();
|
760 |
-
return this.search_field_scale();
|
761 |
-
};
|
762 |
-
|
763 |
-
Chosen.prototype.activate_field = function() {
|
764 |
-
this.container.addClass("chosen-container-active");
|
765 |
-
this.active_field = true;
|
766 |
-
this.search_field.val(this.search_field.val());
|
767 |
-
return this.search_field.focus();
|
768 |
-
};
|
769 |
-
|
770 |
-
Chosen.prototype.test_active_click = function(evt) {
|
771 |
-
var active_container;
|
772 |
-
active_container = $(evt.target).closest('.chosen-container');
|
773 |
-
if (active_container.length && this.container[0] === active_container[0]) {
|
774 |
-
return this.active_field = true;
|
775 |
-
} else {
|
776 |
-
return this.close_field();
|
777 |
-
}
|
778 |
-
};
|
779 |
-
|
780 |
-
Chosen.prototype.results_build = function() {
|
781 |
-
this.parsing = true;
|
782 |
-
this.selected_option_count = null;
|
783 |
-
this.results_data = SelectParser.select_to_array(this.form_field);
|
784 |
-
if (this.is_multiple) {
|
785 |
-
this.search_choices.find("li.search-choice").remove();
|
786 |
-
} else if (!this.is_multiple) {
|
787 |
-
this.single_set_selected_text();
|
788 |
-
if (this.disable_search || this.form_field.options.length <= this.disable_search_threshold) {
|
789 |
-
this.search_field[0].readOnly = true;
|
790 |
-
this.container.addClass("chosen-container-single-nosearch");
|
791 |
-
} else {
|
792 |
-
this.search_field[0].readOnly = false;
|
793 |
-
this.container.removeClass("chosen-container-single-nosearch");
|
794 |
-
}
|
795 |
-
}
|
796 |
-
this.update_results_content(this.results_option_build({
|
797 |
-
first: true
|
798 |
-
}));
|
799 |
-
this.search_field_disabled();
|
800 |
-
this.show_search_field_default();
|
801 |
-
this.search_field_scale();
|
802 |
-
return this.parsing = false;
|
803 |
-
};
|
804 |
-
|
805 |
-
Chosen.prototype.result_do_highlight = function(el) {
|
806 |
-
var high_bottom, high_top, maxHeight, visible_bottom, visible_top;
|
807 |
-
if (el.length) {
|
808 |
-
this.result_clear_highlight();
|
809 |
-
this.result_highlight = el;
|
810 |
-
this.result_highlight.addClass("highlighted");
|
811 |
-
maxHeight = parseInt(this.search_results.css("maxHeight"), 10);
|
812 |
-
visible_top = this.search_results.scrollTop();
|
813 |
-
visible_bottom = maxHeight + visible_top;
|
814 |
-
high_top = this.result_highlight.position().top + this.search_results.scrollTop();
|
815 |
-
high_bottom = high_top + this.result_highlight.outerHeight();
|
816 |
-
if (high_bottom >= visible_bottom) {
|
817 |
-
return this.search_results.scrollTop((high_bottom - maxHeight) > 0 ? high_bottom - maxHeight : 0);
|
818 |
-
} else if (high_top < visible_top) {
|
819 |
-
return this.search_results.scrollTop(high_top);
|
820 |
-
}
|
821 |
-
}
|
822 |
-
};
|
823 |
-
|
824 |
-
Chosen.prototype.result_clear_highlight = function() {
|
825 |
-
if (this.result_highlight) {
|
826 |
-
this.result_highlight.removeClass("highlighted");
|
827 |
-
}
|
828 |
-
return this.result_highlight = null;
|
829 |
-
};
|
830 |
-
|
831 |
-
Chosen.prototype.results_show = function() {
|
832 |
-
if (this.is_multiple && this.max_selected_options <= this.choices_count()) {
|
833 |
-
this.form_field_jq.trigger("chosen:maxselected", {
|
834 |
-
chosen: this
|
835 |
-
});
|
836 |
-
return false;
|
837 |
-
}
|
838 |
-
this.container.addClass("chosen-with-drop");
|
839 |
-
this.results_showing = true;
|
840 |
-
this.search_field.focus();
|
841 |
-
this.search_field.val(this.search_field.val());
|
842 |
-
this.winnow_results();
|
843 |
-
return this.form_field_jq.trigger("chosen:showing_dropdown", {
|
844 |
-
chosen: this
|
845 |
-
});
|
846 |
-
};
|
847 |
-
|
848 |
-
Chosen.prototype.update_results_content = function(content) {
|
849 |
-
return this.search_results.html(content);
|
850 |
-
};
|
851 |
-
|
852 |
-
Chosen.prototype.results_hide = function() {
|
853 |
-
if (this.results_showing) {
|
854 |
-
this.result_clear_highlight();
|
855 |
-
this.container.removeClass("chosen-with-drop");
|
856 |
-
this.form_field_jq.trigger("chosen:hiding_dropdown", {
|
857 |
-
chosen: this
|
858 |
-
});
|
859 |
-
}
|
860 |
-
return this.results_showing = false;
|
861 |
-
};
|
862 |
-
|
863 |
-
Chosen.prototype.set_tab_index = function(el) {
|
864 |
-
var ti;
|
865 |
-
if (this.form_field.tabIndex) {
|
866 |
-
ti = this.form_field.tabIndex;
|
867 |
-
this.form_field.tabIndex = -1;
|
868 |
-
return this.search_field[0].tabIndex = ti;
|
869 |
-
}
|
870 |
-
};
|
871 |
-
|
872 |
-
Chosen.prototype.set_label_behavior = function() {
|
873 |
-
var _this = this;
|
874 |
-
this.form_field_label = this.form_field_jq.parents("label");
|
875 |
-
if (!this.form_field_label.length && this.form_field.id.length) {
|
876 |
-
this.form_field_label = $("label[for='" + this.form_field.id + "']");
|
877 |
-
}
|
878 |
-
if (this.form_field_label.length > 0) {
|
879 |
-
return this.form_field_label.bind('click.chosen', function(evt) {
|
880 |
-
if (_this.is_multiple) {
|
881 |
-
return _this.container_mousedown(evt);
|
882 |
-
} else {
|
883 |
-
return _this.activate_field();
|
884 |
-
}
|
885 |
-
});
|
886 |
-
}
|
887 |
-
};
|
888 |
-
|
889 |
-
Chosen.prototype.show_search_field_default = function() {
|
890 |
-
if (this.is_multiple && this.choices_count() < 1 && !this.active_field) {
|
891 |
-
this.search_field.val(this.default_text);
|
892 |
-
return this.search_field.addClass("default");
|
893 |
-
} else {
|
894 |
-
this.search_field.val("");
|
895 |
-
return this.search_field.removeClass("default");
|
896 |
-
}
|
897 |
-
};
|
898 |
-
|
899 |
-
Chosen.prototype.search_results_mouseup = function(evt) {
|
900 |
-
var target;
|
901 |
-
target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first();
|
902 |
-
if (target.length) {
|
903 |
-
this.result_highlight = target;
|
904 |
-
this.result_select(evt);
|
905 |
-
return this.search_field.focus();
|
906 |
-
}
|
907 |
-
};
|
908 |
-
|
909 |
-
Chosen.prototype.search_results_mouseover = function(evt) {
|
910 |
-
var target;
|
911 |
-
target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first();
|
912 |
-
if (target) {
|
913 |
-
return this.result_do_highlight(target);
|
914 |
-
}
|
915 |
-
};
|
916 |
-
|
917 |
-
Chosen.prototype.search_results_mouseout = function(evt) {
|
918 |
-
if ($(evt.target).hasClass("active-result" || $(evt.target).parents('.active-result').first())) {
|
919 |
-
return this.result_clear_highlight();
|
920 |
-
}
|
921 |
-
};
|
922 |
-
|
923 |
-
Chosen.prototype.choice_build = function(item) {
|
924 |
-
var choice, close_link,
|
925 |
-
_this = this;
|
926 |
-
choice = $('<li />', {
|
927 |
-
"class": "search-choice"
|
928 |
-
}).html("<span>" + item.html + "</span>");
|
929 |
-
if (item.disabled) {
|
930 |
-
choice.addClass('search-choice-disabled');
|
931 |
-
} else {
|
932 |
-
close_link = $('<a />', {
|
933 |
-
"class": 'search-choice-close',
|
934 |
-
'data-option-array-index': item.array_index
|
935 |
-
});
|
936 |
-
close_link.bind('click.chosen', function(evt) {
|
937 |
-
return _this.choice_destroy_link_click(evt);
|
938 |
-
});
|
939 |
-
choice.append(close_link);
|
940 |
-
}
|
941 |
-
return this.search_container.before(choice);
|
942 |
-
};
|
943 |
-
|
944 |
-
Chosen.prototype.choice_destroy_link_click = function(evt) {
|
945 |
-
evt.preventDefault();
|
946 |
-
evt.stopPropagation();
|
947 |
-
if (!this.is_disabled) {
|
948 |
-
return this.choice_destroy($(evt.target));
|
949 |
-
}
|
950 |
-
};
|
951 |
-
|
952 |
-
Chosen.prototype.choice_destroy = function(link) {
|
953 |
-
if (this.result_deselect(link[0].getAttribute("data-option-array-index"))) {
|
954 |
-
this.show_search_field_default();
|
955 |
-
if (this.is_multiple && this.choices_count() > 0 && this.search_field.val().length < 1) {
|
956 |
-
this.results_hide();
|
957 |
-
}
|
958 |
-
link.parents('li').first().remove();
|
959 |
-
return this.search_field_scale();
|
960 |
-
}
|
961 |
-
};
|
962 |
-
|
963 |
-
Chosen.prototype.results_reset = function() {
|
964 |
-
this.reset_single_select_options();
|
965 |
-
this.form_field.options[0].selected = true;
|
966 |
-
this.single_set_selected_text();
|
967 |
-
this.show_search_field_default();
|
968 |
-
this.results_reset_cleanup();
|
969 |
-
this.form_field_jq.trigger("change");
|
970 |
-
if (this.active_field) {
|
971 |
-
return this.results_hide();
|
972 |
-
}
|
973 |
-
};
|
974 |
-
|
975 |
-
Chosen.prototype.results_reset_cleanup = function() {
|
976 |
-
this.current_selectedIndex = this.form_field.selectedIndex;
|
977 |
-
return this.selected_item.find("abbr").remove();
|
978 |
-
};
|
979 |
-
|
980 |
-
Chosen.prototype.result_select = function(evt) {
|
981 |
-
var high, item;
|
982 |
-
if (this.result_highlight) {
|
983 |
-
high = this.result_highlight;
|
984 |
-
this.result_clear_highlight();
|
985 |
-
if (this.is_multiple && this.max_selected_options <= this.choices_count()) {
|
986 |
-
this.form_field_jq.trigger("chosen:maxselected", {
|
987 |
-
chosen: this
|
988 |
-
});
|
989 |
-
return false;
|
990 |
-
}
|
991 |
-
if (this.is_multiple) {
|
992 |
-
high.removeClass("active-result");
|
993 |
-
} else {
|
994 |
-
this.reset_single_select_options();
|
995 |
-
}
|
996 |
-
item = this.results_data[high[0].getAttribute("data-option-array-index")];
|
997 |
-
item.selected = true;
|
998 |
-
this.form_field.options[item.options_index].selected = true;
|
999 |
-
this.selected_option_count = null;
|
1000 |
-
if (this.is_multiple) {
|
1001 |
-
this.choice_build(item);
|
1002 |
-
} else {
|
1003 |
-
this.single_set_selected_text(item.text);
|
1004 |
-
}
|
1005 |
-
if (!((evt.metaKey || evt.ctrlKey) && this.is_multiple)) {
|
1006 |
-
this.results_hide();
|
1007 |
-
}
|
1008 |
-
this.search_field.val("");
|
1009 |
-
if (this.is_multiple || this.form_field.selectedIndex !== this.current_selectedIndex) {
|
1010 |
-
this.form_field_jq.trigger("change", {
|
1011 |
-
'selected': this.form_field.options[item.options_index].value
|
1012 |
-
});
|
1013 |
-
}
|
1014 |
-
this.current_selectedIndex = this.form_field.selectedIndex;
|
1015 |
-
return this.search_field_scale();
|
1016 |
-
}
|
1017 |
-
};
|
1018 |
-
|
1019 |
-
Chosen.prototype.single_set_selected_text = function(text) {
|
1020 |
-
if (text == null) {
|
1021 |
-
text = this.default_text;
|
1022 |
-
}
|
1023 |
-
if (text === this.default_text) {
|
1024 |
-
this.selected_item.addClass("chosen-default");
|
1025 |
-
} else {
|
1026 |
-
this.single_deselect_control_build();
|
1027 |
-
this.selected_item.removeClass("chosen-default");
|
1028 |
-
}
|
1029 |
-
return this.selected_item.find("span").text(text);
|
1030 |
-
};
|
1031 |
-
|
1032 |
-
Chosen.prototype.result_deselect = function(pos) {
|
1033 |
-
var result_data;
|
1034 |
-
result_data = this.results_data[pos];
|
1035 |
-
if (!this.form_field.options[result_data.options_index].disabled) {
|
1036 |
-
result_data.selected = false;
|
1037 |
-
this.form_field.options[result_data.options_index].selected = false;
|
1038 |
-
this.selected_option_count = null;
|
1039 |
-
this.result_clear_highlight();
|
1040 |
-
if (this.results_showing) {
|
1041 |
-
this.winnow_results();
|
1042 |
-
}
|
1043 |
-
this.form_field_jq.trigger("change", {
|
1044 |
-
deselected: this.form_field.options[result_data.options_index].value
|
1045 |
-
});
|
1046 |
-
this.search_field_scale();
|
1047 |
-
return true;
|
1048 |
-
} else {
|
1049 |
-
return false;
|
1050 |
-
}
|
1051 |
-
};
|
1052 |
-
|
1053 |
-
Chosen.prototype.single_deselect_control_build = function() {
|
1054 |
-
if (!this.allow_single_deselect) {
|
1055 |
-
return;
|
1056 |
-
}
|
1057 |
-
if (!this.selected_item.find("abbr").length) {
|
1058 |
-
this.selected_item.find("span").first().after("<abbr class=\"search-choice-close\"></abbr>");
|
1059 |
-
}
|
1060 |
-
return this.selected_item.addClass("chosen-single-with-deselect");
|
1061 |
-
};
|
1062 |
-
|
1063 |
-
Chosen.prototype.get_search_text = function() {
|
1064 |
-
if (this.search_field.val() === this.default_text) {
|
1065 |
-
return "";
|
1066 |
-
} else {
|
1067 |
-
return $('<div/>').text($.trim(this.search_field.val())).html();
|
1068 |
-
}
|
1069 |
-
};
|
1070 |
-
|
1071 |
-
Chosen.prototype.winnow_results_set_highlight = function() {
|
1072 |
-
var do_high, selected_results;
|
1073 |
-
selected_results = !this.is_multiple ? this.search_results.find(".result-selected.active-result") : [];
|
1074 |
-
do_high = selected_results.length ? selected_results.first() : this.search_results.find(".active-result").first();
|
1075 |
-
if (do_high != null) {
|
1076 |
-
return this.result_do_highlight(do_high);
|
1077 |
-
}
|
1078 |
-
};
|
1079 |
-
|
1080 |
-
Chosen.prototype.no_results = function(terms) {
|
1081 |
-
var no_results_html;
|
1082 |
-
no_results_html = $('<li class="no-results">' + this.results_none_found + ' "<span></span>"</li>');
|
1083 |
-
no_results_html.find("span").first().html(terms);
|
1084 |
-
this.search_results.append(no_results_html);
|
1085 |
-
return this.form_field_jq.trigger("chosen:no_results", {
|
1086 |
-
chosen: this
|
1087 |
-
});
|
1088 |
-
};
|
1089 |
-
|
1090 |
-
Chosen.prototype.no_results_clear = function() {
|
1091 |
-
return this.search_results.find(".no-results").remove();
|
1092 |
-
};
|
1093 |
-
|
1094 |
-
Chosen.prototype.keydown_arrow = function() {
|
1095 |
-
var next_sib;
|
1096 |
-
if (this.results_showing && this.result_highlight) {
|
1097 |
-
next_sib = this.result_highlight.nextAll("li.active-result").first();
|
1098 |
-
if (next_sib) {
|
1099 |
-
return this.result_do_highlight(next_sib);
|
1100 |
-
}
|
1101 |
-
} else {
|
1102 |
-
return this.results_show();
|
1103 |
-
}
|
1104 |
-
};
|
1105 |
-
|
1106 |
-
Chosen.prototype.keyup_arrow = function() {
|
1107 |
-
var prev_sibs;
|
1108 |
-
if (!this.results_showing && !this.is_multiple) {
|
1109 |
-
return this.results_show();
|
1110 |
-
} else if (this.result_highlight) {
|
1111 |
-
prev_sibs = this.result_highlight.prevAll("li.active-result");
|
1112 |
-
if (prev_sibs.length) {
|
1113 |
-
return this.result_do_highlight(prev_sibs.first());
|
1114 |
-
} else {
|
1115 |
-
if (this.choices_count() > 0) {
|
1116 |
-
this.results_hide();
|
1117 |
-
}
|
1118 |
-
return this.result_clear_highlight();
|
1119 |
-
}
|
1120 |
-
}
|
1121 |
-
};
|
1122 |
-
|
1123 |
-
Chosen.prototype.keydown_backstroke = function() {
|
1124 |
-
var next_available_destroy;
|
1125 |
-
if (this.pending_backstroke) {
|
1126 |
-
this.choice_destroy(this.pending_backstroke.find("a").first());
|
1127 |
-
return this.clear_backstroke();
|
1128 |
-
} else {
|
1129 |
-
next_available_destroy = this.search_container.siblings("li.search-choice").last();
|
1130 |
-
if (next_available_destroy.length && !next_available_destroy.hasClass("search-choice-disabled")) {
|
1131 |
-
this.pending_backstroke = next_available_destroy;
|
1132 |
-
if (this.single_backstroke_delete) {
|
1133 |
-
return this.keydown_backstroke();
|
1134 |
-
} else {
|
1135 |
-
return this.pending_backstroke.addClass("search-choice-focus");
|
1136 |
-
}
|
1137 |
-
}
|
1138 |
-
}
|
1139 |
-
};
|
1140 |
-
|
1141 |
-
Chosen.prototype.clear_backstroke = function() {
|
1142 |
-
if (this.pending_backstroke) {
|
1143 |
-
this.pending_backstroke.removeClass("search-choice-focus");
|
1144 |
-
}
|
1145 |
-
return this.pending_backstroke = null;
|
1146 |
-
};
|
1147 |
-
|
1148 |
-
Chosen.prototype.keydown_checker = function(evt) {
|
1149 |
-
var stroke, _ref1;
|
1150 |
-
stroke = (_ref1 = evt.which) != null ? _ref1 : evt.keyCode;
|
1151 |
-
this.search_field_scale();
|
1152 |
-
if (stroke !== 8 && this.pending_backstroke) {
|
1153 |
-
this.clear_backstroke();
|
1154 |
-
}
|
1155 |
-
switch (stroke) {
|
1156 |
-
case 8:
|
1157 |
-
this.backstroke_length = this.search_field.val().length;
|
1158 |
-
break;
|
1159 |
-
case 9:
|
1160 |
-
if (this.results_showing && !this.is_multiple) {
|
1161 |
-
this.result_select(evt);
|
1162 |
-
}
|
1163 |
-
this.mouse_on_container = false;
|
1164 |
-
break;
|
1165 |
-
case 13:
|
1166 |
-
evt.preventDefault();
|
1167 |
-
break;
|
1168 |
-
case 38:
|
1169 |
-
evt.preventDefault();
|
1170 |
-
this.keyup_arrow();
|
1171 |
-
break;
|
1172 |
-
case 40:
|
1173 |
-
evt.preventDefault();
|
1174 |
-
this.keydown_arrow();
|
1175 |
-
break;
|
1176 |
-
}
|
1177 |
-
};
|
1178 |
-
|
1179 |
-
Chosen.prototype.search_field_scale = function() {
|
1180 |
-
var div, f_width, h, style, style_block, styles, w, _i, _len;
|
1181 |
-
if (this.is_multiple) {
|
1182 |
-
h = 0;
|
1183 |
-
w = 0;
|
1184 |
-
style_block = "position:absolute; left: -1000px; top: -1000px; display:none;";
|
1185 |
-
styles = ['font-size', 'font-style', 'font-weight', 'font-family', 'line-height', 'text-transform', 'letter-spacing'];
|
1186 |
-
for (_i = 0, _len = styles.length; _i < _len; _i++) {
|
1187 |
-
style = styles[_i];
|
1188 |
-
style_block += style + ":" + this.search_field.css(style) + ";";
|
1189 |
-
}
|
1190 |
-
div = $('<div />', {
|
1191 |
-
'style': style_block
|
1192 |
-
});
|
1193 |
-
div.text(this.search_field.val());
|
1194 |
-
$('body').append(div);
|
1195 |
-
w = div.width() + 25;
|
1196 |
-
div.remove();
|
1197 |
-
f_width = this.container.outerWidth();
|
1198 |
-
if (w > f_width - 10) {
|
1199 |
-
w = f_width - 10;
|
1200 |
-
}
|
1201 |
-
return this.search_field.css({
|
1202 |
-
'width': w + 'px'
|
1203 |
-
});
|
1204 |
-
}
|
1205 |
-
};
|
1206 |
-
|
1207 |
-
return Chosen;
|
1208 |
-
|
1209 |
-
})(AbstractChosen);
|
1210 |
-
|
1211 |
-
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/plugin.color.js
DELETED
@@ -1,595 +0,0 @@
|
|
1 |
-
|
2 |
-
/**
|
3 |
-
* jQuery Color
|
4 |
-
* A utility class for working with colors in JavaScript.
|
5 |
-
*/
|
6 |
-
|
7 |
-
(function(global, undef) {
|
8 |
-
|
9 |
-
var Color = function( color, type ) {
|
10 |
-
if ( ! ( this instanceof Color ) )
|
11 |
-
return new Color( color, type );
|
12 |
-
|
13 |
-
return this._init( color, type );
|
14 |
-
};
|
15 |
-
|
16 |
-
Color.fn = Color.prototype = {
|
17 |
-
_color: 0,
|
18 |
-
_alpha: 1,
|
19 |
-
error: false,
|
20 |
-
// for preserving hue/sat in fromHsl().toHsl() flows
|
21 |
-
_hsl: { h: 0, s: 0, l: 0 },
|
22 |
-
// for preserving hue/sat in fromHsv().toHsv() flows
|
23 |
-
_hsv: { h: 0, s: 0, v: 0 },
|
24 |
-
// for setting hsl or hsv space - needed for .h() & .s() functions to function properly
|
25 |
-
_hSpace: 'hsl',
|
26 |
-
_init: function( color ) {
|
27 |
-
var func = 'noop';
|
28 |
-
switch ( typeof color ) {
|
29 |
-
case 'object':
|
30 |
-
// alpha?
|
31 |
-
if ( color.a !== undef )
|
32 |
-
this.a( color.a );
|
33 |
-
func = ( color.r !== undef ) ? 'fromRgb' :
|
34 |
-
( color.l !== undef ) ? 'fromHsl' :
|
35 |
-
( color.v !== undef ) ? 'fromHsv' : func;
|
36 |
-
return this[func]( color );
|
37 |
-
case 'string':
|
38 |
-
return this.fromCSS( color );
|
39 |
-
case 'number':
|
40 |
-
return this.fromInt( parseInt( color, 10 ) );
|
41 |
-
}
|
42 |
-
return this;
|
43 |
-
},
|
44 |
-
|
45 |
-
_error: function() {
|
46 |
-
this.error = true;
|
47 |
-
return this;
|
48 |
-
},
|
49 |
-
|
50 |
-
clone: function() {
|
51 |
-
var newColor = new Color( this.toInt() ),
|
52 |
-
copy = ['_alpha', '_hSpace', '_hsl', '_hsv', 'error'];
|
53 |
-
for ( var i = copy.length - 1; i >= 0; i-- ) {
|
54 |
-
newColor[ copy[i] ] = this[ copy[i] ];
|
55 |
-
}
|
56 |
-
return newColor;
|
57 |
-
},
|
58 |
-
|
59 |
-
setHSpace: function( space ) {
|
60 |
-
this._hSpace = ( space === 'hsv' ) ? space : 'hsl';
|
61 |
-
return this;
|
62 |
-
},
|
63 |
-
|
64 |
-
noop: function() {
|
65 |
-
return this;
|
66 |
-
},
|
67 |
-
|
68 |
-
fromCSS: function( color ) {
|
69 |
-
var list,
|
70 |
-
leadingRE = /^(rgb|hs(l|v))a?\(/;
|
71 |
-
this.error = false;
|
72 |
-
|
73 |
-
// whitespace and semicolon trim
|
74 |
-
color = color.replace(/^\s+/, '').replace(/\s+$/, '').replace(/;$/, '');
|
75 |
-
|
76 |
-
if ( color.match(leadingRE) && color.match(/\)$/) ) {
|
77 |
-
list = color.replace(/(\s|%)/g, '').replace(leadingRE, '').replace(/,?\);?$/, '').split(',');
|
78 |
-
|
79 |
-
if ( list.length < 3 )
|
80 |
-
return this._error();
|
81 |
-
|
82 |
-
if ( list.length === 4 ) {
|
83 |
-
this.a( parseFloat( list.pop() ) );
|
84 |
-
// error state has been set to true in .a() if we passed NaN
|
85 |
-
if ( this.error )
|
86 |
-
return this;
|
87 |
-
}
|
88 |
-
|
89 |
-
for (var i = list.length - 1; i >= 0; i--) {
|
90 |
-
list[i] = parseInt(list[i], 10);
|
91 |
-
if ( isNaN( list[i] ) )
|
92 |
-
return this._error();
|
93 |
-
}
|
94 |
-
|
95 |
-
if ( color.match(/^rgb/) ) {
|
96 |
-
return this.fromRgb( {
|
97 |
-
r: list[0],
|
98 |
-
g: list[1],
|
99 |
-
b: list[2]
|
100 |
-
} );
|
101 |
-
} else if ( color.match(/^hsv/) ) {
|
102 |
-
return this.fromHsv( {
|
103 |
-
h: list[0],
|
104 |
-
s: list[1],
|
105 |
-
v: list[2]
|
106 |
-
} );
|
107 |
-
} else {
|
108 |
-
return this.fromHsl( {
|
109 |
-
h: list[0],
|
110 |
-
s: list[1],
|
111 |
-
l: list[2]
|
112 |
-
} );
|
113 |
-
}
|
114 |
-
} else {
|
115 |
-
// must be hex amirite?
|
116 |
-
return this.fromHex( color );
|
117 |
-
}
|
118 |
-
},
|
119 |
-
|
120 |
-
fromRgb: function( rgb, preserve ) {
|
121 |
-
if ( typeof rgb !== 'object' || rgb.r === undef || rgb.g === undef || rgb.b === undef )
|
122 |
-
return this._error();
|
123 |
-
|
124 |
-
this.error = false;
|
125 |
-
return this.fromInt( parseInt( ( rgb.r << 16 ) + ( rgb.g << 8 ) + rgb.b, 10 ), preserve );
|
126 |
-
},
|
127 |
-
|
128 |
-
fromHex: function( color ) {
|
129 |
-
color = color.replace(/^#/, '').replace(/^0x/, '');
|
130 |
-
if ( color.length === 3 ) {
|
131 |
-
color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];
|
132 |
-
}
|
133 |
-
|
134 |
-
// rough error checking - this is where things go squirrely the most
|
135 |
-
this.error = ! /^[0-9A-F]{6}$/i.test( color );
|
136 |
-
return this.fromInt( parseInt( color, 16 ) );
|
137 |
-
},
|
138 |
-
|
139 |
-
fromHsl: function( hsl ) {
|
140 |
-
var r, g, b, q, p, h, s, l;
|
141 |
-
|
142 |
-
if ( typeof hsl !== 'object' || hsl.h === undef || hsl.s === undef || hsl.l === undef )
|
143 |
-
return this._error();
|
144 |
-
|
145 |
-
this._hsl = hsl; // store it
|
146 |
-
this._hSpace = 'hsl'; // implicit
|
147 |
-
h = hsl.h / 360; s = hsl.s / 100; l = hsl.l / 100;
|
148 |
-
if ( s === 0 ) {
|
149 |
-
r = g = b = l; // achromatic
|
150 |
-
}
|
151 |
-
else {
|
152 |
-
q = l < 0.5 ? l * ( 1 + s ) : l + s - l * s;
|
153 |
-
p = 2 * l - q;
|
154 |
-
r = this.hue2rgb( p, q, h + 1/3 );
|
155 |
-
g = this.hue2rgb( p, q, h );
|
156 |
-
b = this.hue2rgb( p, q, h - 1/3 );
|
157 |
-
}
|
158 |
-
return this.fromRgb( {
|
159 |
-
r: r * 255,
|
160 |
-
g: g * 255,
|
161 |
-
b: b * 255
|
162 |
-
}, true ); // true preserves hue/sat
|
163 |
-
},
|
164 |
-
|
165 |
-
fromHsv: function( hsv ) {
|
166 |
-
var h, s, v, r, g, b, i, f, p, q, t;
|
167 |
-
if ( typeof hsv !== 'object' || hsv.h === undef || hsv.s === undef || hsv.v === undef )
|
168 |
-
return this._error();
|
169 |
-
|
170 |
-
this._hsv = hsv; // store it
|
171 |
-
this._hSpace = 'hsv'; // implicit
|
172 |
-
|
173 |
-
h = hsv.h / 360; s = hsv.s / 100; v = hsv.v / 100;
|
174 |
-
i = Math.floor( h * 6 );
|
175 |
-
f = h * 6 - i;
|
176 |
-
p = v * ( 1 - s );
|
177 |
-
q = v * ( 1 - f * s );
|
178 |
-
t = v * ( 1 - ( 1 - f ) * s );
|
179 |
-
|
180 |
-
switch( i % 6 ) {
|
181 |
-
case 0:
|
182 |
-
r = v; g = t; b = p;
|
183 |
-
break;
|
184 |
-
case 1:
|
185 |
-
r = q; g = v; b = p;
|
186 |
-
break;
|
187 |
-
case 2:
|
188 |
-
r = p; g = v; b = t;
|
189 |
-
break;
|
190 |
-
case 3:
|
191 |
-
r = p; g = q; b = v;
|
192 |
-
break;
|
193 |
-
case 4:
|
194 |
-
r = t; g = p; b = v;
|
195 |
-
break;
|
196 |
-
case 5:
|
197 |
-
r = v; g = p; b = q;
|
198 |
-
break;
|
199 |
-
}
|
200 |
-
|
201 |
-
return this.fromRgb( {
|
202 |
-
r: r * 255,
|
203 |
-
g: g * 255,
|
204 |
-
b: b * 255
|
205 |
-
}, true ); // true preserves hue/sat
|
206 |
-
|
207 |
-
},
|
208 |
-
// everything comes down to fromInt
|
209 |
-
fromInt: function( color, preserve ) {
|
210 |
-
this._color = parseInt( color, 10 );
|
211 |
-
|
212 |
-
if ( isNaN( this._color ) )
|
213 |
-
this._color = 0;
|
214 |
-
|
215 |
-
// let's coerce things
|
216 |
-
if ( this._color > 16777215 )
|
217 |
-
this._color = 16777215;
|
218 |
-
else if ( this._color < 0 )
|
219 |
-
this._color = 0;
|
220 |
-
|
221 |
-
// let's not do weird things
|
222 |
-
if ( preserve === undef ) {
|
223 |
-
this._hsv.h = this._hsv.s = this._hsl.h = this._hsl.s = 0;
|
224 |
-
}
|
225 |
-
// EVENT GOES HERE
|
226 |
-
return this;
|
227 |
-
},
|
228 |
-
|
229 |
-
hue2rgb: function( p, q, t ) {
|
230 |
-
if ( t < 0 ) {
|
231 |
-
t += 1;
|
232 |
-
}
|
233 |
-
if ( t > 1 ) {
|
234 |
-
t -= 1;
|
235 |
-
}
|
236 |
-
if ( t < 1/6 ) {
|
237 |
-
return p + ( q - p ) * 6 * t;
|
238 |
-
}
|
239 |
-
if ( t < 1/2 ) {
|
240 |
-
return q;
|
241 |
-
}
|
242 |
-
if ( t < 2/3 ) {
|
243 |
-
return p + ( q - p ) * ( 2/3 - t ) * 6;
|
244 |
-
}
|
245 |
-
return p;
|
246 |
-
},
|
247 |
-
|
248 |
-
toString: function() {
|
249 |
-
var hex = parseInt( this._color, 10 ).toString( 16 );
|
250 |
-
if ( this.error )
|
251 |
-
return '';
|
252 |
-
// maybe left pad it
|
253 |
-
if ( hex.length < 6 ) {
|
254 |
-
for (var i = 6 - hex.length - 1; i >= 0; i--) {
|
255 |
-
hex = '0' + hex;
|
256 |
-
}
|
257 |
-
}
|
258 |
-
return '#' + hex;
|
259 |
-
},
|
260 |
-
|
261 |
-
toCSS: function( type, alpha ) {
|
262 |
-
type = type || 'hex';
|
263 |
-
alpha = parseFloat( alpha || this._alpha );
|
264 |
-
switch ( type ) {
|
265 |
-
case 'rgb':
|
266 |
-
case 'rgba':
|
267 |
-
var rgb = this.toRgb();
|
268 |
-
if ( alpha < 1 ) {
|
269 |
-
return "rgba( " + rgb.r + ", " + rgb.g + ", " + rgb.b + ", " + alpha + " )";
|
270 |
-
}
|
271 |
-
else {
|
272 |
-
return "rgb( " + rgb.r + ", " + rgb.g + ", " + rgb.b + " )";
|
273 |
-
}
|
274 |
-
break;
|
275 |
-
case 'hsl':
|
276 |
-
case 'hsla':
|
277 |
-
var hsl = this.toHsl();
|
278 |
-
if ( alpha < 1 ) {
|
279 |
-
return "hsla( " + hsl.h + ", " + hsl.s + "%, " + hsl.l + "%, " + alpha + " )";
|
280 |
-
}
|
281 |
-
else {
|
282 |
-
return "hsl( " + hsl.h + ", " + hsl.s + "%, " + hsl.l + "% )";
|
283 |
-
}
|
284 |
-
break;
|
285 |
-
default:
|
286 |
-
return this.toString();
|
287 |
-
}
|
288 |
-
},
|
289 |
-
|
290 |
-
toRgb: function() {
|
291 |
-
return {
|
292 |
-
r: 255 & ( this._color >> 16 ),
|
293 |
-
g: 255 & ( this._color >> 8 ),
|
294 |
-
b: 255 & ( this._color )
|
295 |
-
};
|
296 |
-
},
|
297 |
-
|
298 |
-
toHsl: function() {
|
299 |
-
var rgb = this.toRgb();
|
300 |
-
var r = rgb.r / 255, g = rgb.g / 255, b = rgb.b / 255;
|
301 |
-
var max = Math.max( r, g, b ), min = Math.min( r, g, b );
|
302 |
-
var h, s, l = ( max + min ) / 2;
|
303 |
-
|
304 |
-
if ( max === min ) {
|
305 |
-
h = s = 0; // achromatic
|
306 |
-
} else {
|
307 |
-
var d = max - min;
|
308 |
-
s = l > 0.5 ? d / ( 2 - max - min ) : d / ( max + min );
|
309 |
-
switch ( max ) {
|
310 |
-
case r: h = ( g - b ) / d + ( g < b ? 6 : 0 );
|
311 |
-
break;
|
312 |
-
case g: h = ( b - r ) / d + 2;
|
313 |
-
break;
|
314 |
-
case b: h = ( r - g ) / d + 4;
|
315 |
-
break;
|
316 |
-
}
|
317 |
-
h /= 6;
|
318 |
-
}
|
319 |
-
|
320 |
-
// maintain hue & sat if we've been manipulating things in the HSL space.
|
321 |
-
h = Math.round( h * 360 );
|
322 |
-
if ( h === 0 && this._hsl.h !== h ) {
|
323 |
-
h = this._hsl.h;
|
324 |
-
}
|
325 |
-
s = Math.round( s * 100 );
|
326 |
-
if ( s === 0 && this._hsl.s ) {
|
327 |
-
s = this._hsl.s;
|
328 |
-
}
|
329 |
-
|
330 |
-
return {
|
331 |
-
h: h,
|
332 |
-
s: s,
|
333 |
-
l: Math.round( l * 100 )
|
334 |
-
};
|
335 |
-
|
336 |
-
},
|
337 |
-
|
338 |
-
toHsv: function() {
|
339 |
-
var rgb = this.toRgb();
|
340 |
-
var r = rgb.r / 255, g = rgb.g / 255, b = rgb.b / 255;
|
341 |
-
var max = Math.max( r, g, b ), min = Math.min( r, g, b );
|
342 |
-
var h, s, v = max;
|
343 |
-
var d = max - min;
|
344 |
-
s = max === 0 ? 0 : d / max;
|
345 |
-
|
346 |
-
if ( max === min ) {
|
347 |
-
h = s = 0; // achromatic
|
348 |
-
} else {
|
349 |
-
switch( max ){
|
350 |
-
case r:
|
351 |
-
h = ( g - b ) / d + ( g < b ? 6 : 0 );
|
352 |
-
break;
|
353 |
-
case g:
|
354 |
-
h = ( b - r ) / d + 2;
|
355 |
-
break;
|
356 |
-
case b:
|
357 |
-
h = ( r - g ) / d + 4;
|
358 |
-
break;
|
359 |
-
}
|
360 |
-
h /= 6;
|
361 |
-
}
|
362 |
-
|
363 |
-
// maintain hue & sat if we've been manipulating things in the HSV space.
|
364 |
-
h = Math.round( h * 360 );
|
365 |
-
if ( h === 0 && this._hsv.h !== h ) {
|
366 |
-
h = this._hsv.h;
|
367 |
-
}
|
368 |
-
s = Math.round( s * 100 );
|
369 |
-
if ( s === 0 && this._hsv.s ) {
|
370 |
-
s = this._hsv.s;
|
371 |
-
}
|
372 |
-
|
373 |
-
return {
|
374 |
-
h: h,
|
375 |
-
s: s,
|
376 |
-
v: Math.round( v * 100 )
|
377 |
-
};
|
378 |
-
},
|
379 |
-
|
380 |
-
toInt: function() {
|
381 |
-
return this._color;
|
382 |
-
},
|
383 |
-
|
384 |
-
toIEOctoHex: function() {
|
385 |
-
// AARRBBGG
|
386 |
-
var hex = this.toString();
|
387 |
-
var AA = parseInt( 255 * this._alpha, 10 ).toString(16);
|
388 |
-
if ( AA.length === 1 ) {
|
389 |
-
AA = '0' + AA;
|
390 |
-
}
|
391 |
-
return '#' + AA + hex.replace(/^#/, '' );
|
392 |
-
},
|
393 |
-
|
394 |
-
toLuminosity: function() {
|
395 |
-
var rgb = this.toRgb();
|
396 |
-
return 0.2126 * Math.pow( rgb.r / 255, 2.2 ) + 0.7152 * Math.pow( rgb.g / 255, 2.2 ) + 0.0722 * Math.pow( rgb.b / 255, 2.2);
|
397 |
-
},
|
398 |
-
|
399 |
-
getDistanceLuminosityFrom: function( color ) {
|
400 |
-
if ( ! ( color instanceof Color ) ) {
|
401 |
-
throw 'getDistanceLuminosityFrom requires a Color object';
|
402 |
-
}
|
403 |
-
var lum1 = this.toLuminosity();
|
404 |
-
var lum2 = color.toLuminosity();
|
405 |
-
if ( lum1 > lum2 ) {
|
406 |
-
return ( lum1 + 0.05 ) / ( lum2 + 0.05 );
|
407 |
-
}
|
408 |
-
else {
|
409 |
-
return ( lum2 + 0.05 ) / ( lum1 + 0.05 );
|
410 |
-
}
|
411 |
-
},
|
412 |
-
|
413 |
-
getMaxContrastColor: function() {
|
414 |
-
var lum = this.toLuminosity();
|
415 |
-
var hex = ( lum >= 0.5 ) ? '000000' : 'ffffff';
|
416 |
-
return new Color( hex );
|
417 |
-
},
|
418 |
-
|
419 |
-
getReadableContrastingColor: function( bgColor, minContrast ) {
|
420 |
-
if ( ! bgColor instanceof Color ) {
|
421 |
-
return this;
|
422 |
-
}
|
423 |
-
|
424 |
-
// you shouldn't use less than 5, but you might want to.
|
425 |
-
var targetContrast = ( minContrast === undef ) ? 5 : minContrast;
|
426 |
-
// working things
|
427 |
-
var contrast = bgColor.getDistanceLuminosityFrom( this );
|
428 |
-
var maxContrastColor = bgColor.getMaxContrastColor();
|
429 |
-
var maxContrast = maxContrastColor.getDistanceLuminosityFrom( bgColor );
|
430 |
-
|
431 |
-
// if current max contrast is less than the target contrast, we had wishful thinking.
|
432 |
-
// still, go max
|
433 |
-
if ( maxContrast <= targetContrast ) {
|
434 |
-
return maxContrastColor;
|
435 |
-
}
|
436 |
-
// or, we might already have sufficient contrast
|
437 |
-
else if ( contrast >= targetContrast ) {
|
438 |
-
return this;
|
439 |
-
}
|
440 |
-
|
441 |
-
var incr = ( 0 === maxContrastColor.toInt() ) ? -1 : 1;
|
442 |
-
while ( contrast < targetContrast ) {
|
443 |
-
this.l( incr, true ); // 2nd arg turns this into an incrementer
|
444 |
-
contrast = this.getDistanceLuminosityFrom( bgColor );
|
445 |
-
// infininite loop prevention: you never know.
|
446 |
-
if ( this._color === 0 || this._color === 16777215 ) {
|
447 |
-
break;
|
448 |
-
}
|
449 |
-
}
|
450 |
-
|
451 |
-
return this;
|
452 |
-
|
453 |
-
},
|
454 |
-
|
455 |
-
a: function( val ) {
|
456 |
-
if ( val === undef )
|
457 |
-
return this._alpha;
|
458 |
-
|
459 |
-
var a = parseFloat( val );
|
460 |
-
|
461 |
-
if ( isNaN( a ) )
|
462 |
-
return this._error();
|
463 |
-
|
464 |
-
this._alpha = a;
|
465 |
-
return this;
|
466 |
-
},
|
467 |
-
|
468 |
-
// TRANSFORMS
|
469 |
-
|
470 |
-
darken: function( amount ) {
|
471 |
-
amount = amount || 5;
|
472 |
-
return this.l( - amount, true );
|
473 |
-
},
|
474 |
-
|
475 |
-
lighten: function( amount ) {
|
476 |
-
amount = amount || 5;
|
477 |
-
return this.l( amount, true );
|
478 |
-
},
|
479 |
-
|
480 |
-
saturate: function( amount ) {
|
481 |
-
amount = amount || 15;
|
482 |
-
return this.s( amount, true );
|
483 |
-
},
|
484 |
-
|
485 |
-
desaturate: function( amount ) {
|
486 |
-
amount = amount || 15;
|
487 |
-
return this.s( - amount, true );
|
488 |
-
},
|
489 |
-
|
490 |
-
toGrayscale: function() {
|
491 |
-
return this.setHSpace('hsl').s( 0 );
|
492 |
-
},
|
493 |
-
|
494 |
-
getComplement: function() {
|
495 |
-
return this.h( 180, true );
|
496 |
-
},
|
497 |
-
|
498 |
-
getSplitComplement: function( step ) {
|
499 |
-
step = step || 1;
|
500 |
-
var incr = 180 + ( step * 30 );
|
501 |
-
return this.h( incr, true );
|
502 |
-
},
|
503 |
-
|
504 |
-
getAnalog: function( step ) {
|
505 |
-
step = step || 1;
|
506 |
-
var incr = step * 30;
|
507 |
-
return this.h( incr, true );
|
508 |
-
},
|
509 |
-
|
510 |
-
getTetrad: function( step ) {
|
511 |
-
step = step || 1;
|
512 |
-
var incr = step * 60;
|
513 |
-
return this.h( incr, true );
|
514 |
-
},
|
515 |
-
|
516 |
-
getTriad: function( step ) {
|
517 |
-
step = step || 1;
|
518 |
-
var incr = step * 120;
|
519 |
-
return this.h( incr, true );
|
520 |
-
},
|
521 |
-
|
522 |
-
_partial: function( key ) {
|
523 |
-
var prop = shortProps[key];
|
524 |
-
return function( val, incr ) {
|
525 |
-
var color = this._spaceFunc('to', prop.space);
|
526 |
-
|
527 |
-
// GETTER
|
528 |
-
if ( val === undef )
|
529 |
-
return color[key];
|
530 |
-
|
531 |
-
// INCREMENT
|
532 |
-
if ( incr === true )
|
533 |
-
val = color[key] + val;
|
534 |
-
|
535 |
-
// MOD & RANGE
|
536 |
-
if ( prop.mod )
|
537 |
-
val = val % prop.mod;
|
538 |
-
if ( prop.range )
|
539 |
-
val = ( val < prop.range[0] ) ? prop.range[0] : ( val > prop.range[1] ) ? prop.range[1] : val;
|
540 |
-
|
541 |
-
// NEW VALUE
|
542 |
-
color[key] = val;
|
543 |
-
|
544 |
-
return this._spaceFunc('from', prop.space, color);
|
545 |
-
};
|
546 |
-
},
|
547 |
-
|
548 |
-
_spaceFunc: function( dir, s, val ) {
|
549 |
-
var space = s || this._hSpace,
|
550 |
-
funcName = dir + space.charAt(0).toUpperCase() + space.substr(1);
|
551 |
-
return this[funcName](val);
|
552 |
-
}
|
553 |
-
};
|
554 |
-
|
555 |
-
var shortProps = {
|
556 |
-
h: {
|
557 |
-
mod: 360
|
558 |
-
},
|
559 |
-
s: {
|
560 |
-
range: [0,100]
|
561 |
-
},
|
562 |
-
l: {
|
563 |
-
space: 'hsl',
|
564 |
-
range: [0,100]
|
565 |
-
},
|
566 |
-
v: {
|
567 |
-
space: 'hsv',
|
568 |
-
range: [0,100]
|
569 |
-
},
|
570 |
-
r: {
|
571 |
-
space: 'rgb',
|
572 |
-
range: [0,255]
|
573 |
-
},
|
574 |
-
g: {
|
575 |
-
space: 'rgb',
|
576 |
-
range: [0,255]
|
577 |
-
},
|
578 |
-
b: {
|
579 |
-
space: 'rgb',
|
580 |
-
range: [0,255]
|
581 |
-
}
|
582 |
-
};
|
583 |
-
|
584 |
-
for ( var key in shortProps ) {
|
585 |
-
if ( shortProps.hasOwnProperty( key ) )
|
586 |
-
Color.fn[key] = Color.fn._partial(key);
|
587 |
-
}
|
588 |
-
|
589 |
-
// play nicely with Node + browser
|
590 |
-
if ( typeof exports === 'object' )
|
591 |
-
module.exports = Color;
|
592 |
-
else
|
593 |
-
global.Color = Color;
|
594 |
-
|
595 |
-
}(this));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/plugin.ddslick.js
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
(function (a) { function g(a, b) { var c = a.data("ddslick"); var d = a.find(".dd-selected"), e = d.siblings(".dd-selected-value"), f = a.find(".dd-options"), g = d.siblings(".dd-pointer"), h = a.find(".dd-option").eq(b), k = h.closest("li"), l = c.settings, m = c.settings.data[b]; a.find(".dd-option").removeClass("dd-option-selected"); h.addClass("dd-option-selected"); c.selectedIndex = b; c.selectedItem = k; c.selectedData = m; if (l.showSelectedHTML) { d.html((m.imageSrc ? '<img class="dd-selected-image' + (l.imagePosition == "right" ? " dd-image-right" : "") + '" src="' + m.imageSrc + '" />' : "") + (m.text ? '<label class="dd-selected-text">' + m.text + "</label>" : "") + (m.description ? '<small class="dd-selected-description dd-desc' + (l.truncateDescription ? " dd-selected-description-truncated" : "") + '" >' + m.description + "</small>" : "")) } else d.html(m.text); e.val(m.value); c.original.val(m.value); a.data("ddslick", c); i(a); j(a); if (typeof l.onSelected == "function") { l.onSelected.call(this, c) } } function h(b) { var c = b.find(".dd-select"), d = c.siblings(".dd-options"), e = c.find(".dd-pointer"), f = d.is(":visible"); a(".dd-click-off-close").not(d).slideUp(50); a(".dd-pointer").removeClass("dd-pointer-up"); if (f) { d.slideUp("fast"); e.removeClass("dd-pointer-up") } else { d.slideDown("fast"); e.addClass("dd-pointer-up") } k(b) } function i(a) { a.find(".dd-options").slideUp(50); a.find(".dd-pointer").removeClass("dd-pointer-up").removeClass("dd-pointer-up") } function j(a) { var b = a.find(".dd-select").css("height"); var c = a.find(".dd-selected-description"); var d = a.find(".dd-selected-image"); if (c.length <= 0 && d.length > 0) { a.find(".dd-selected-text").css("lineHeight", b) } } function k(b) { b.find(".dd-option").each(function () { var c = a(this); var d = c.css("height"); var e = c.find(".dd-option-description"); var f = b.find(".dd-option-image"); if (e.length <= 0 && f.length > 0) { c.find(".dd-option-text").css("lineHeight", d) } }) } a.fn.ddslick = function (c) { if (b[c]) { return b[c].apply(this, Array.prototype.slice.call(arguments, 1)) } else if (typeof c === "object" || !c) { return b.init.apply(this, arguments) } else { a.error("Method " + c + " does not exists.") } }; var b = {}, c = { data: [], keepJSONItemsOnTop: false, width: 260, height: null, background: "#eee", selectText: "", defaultSelectedIndex: null, truncateDescription: true, imagePosition: "left", showSelectedHTML: true, clickOffToClose: true, onSelected: function () { } }, d = '<div class="dd-select"><input class="dd-selected-value" type="hidden" /><a class="dd-selected"></a><span class="dd-pointer dd-pointer-down"></span></div>', e = '<ul class="dd-options"></ul>', f = '<style id="css-ddslick" type="text/css">' + ".dd-select{ border-radius:2px; border:solid 1px #ccc; position:relative; cursor:pointer;}" + ".dd-desc { color:#aaa; display:block; overflow: hidden; font-weight:normal; line-height: 1.4em; }" + ".dd-selected{ overflow:hidden; display:block; padding:10px; font-weight:bold;}" + ".dd-pointer{ width:0; height:0; position:absolute; right:10px; top:50%; margin-top:-3px;}" + ".dd-pointer-down{ border:solid 5px transparent; border-top:solid 5px #000; }" + ".dd-pointer-up{border:solid 5px transparent !important; border-bottom:solid 5px #000 !important; margin-top:-8px;}" + ".dd-options{ border:solid 1px #ccc; border-top:none; list-style:none; box-shadow:0px 1px 5px #ddd; display:none; position:absolute; z-index:2000; margin:0; padding:0;background:#fff; overflow:auto;}" + ".dd-option{ padding:10px; display:block; border-bottom:solid 1px #ddd; overflow:hidden; text-decoration:none; color:#333; cursor:pointer;-webkit-transition: all 0.25s ease-in-out; -moz-transition: all 0.25s ease-in-out;-o-transition: all 0.25s ease-in-out;-ms-transition: all 0.25s ease-in-out; }" + ".dd-options > li:last-child > .dd-option{ border-bottom:none;}" + ".dd-option:hover{ background:#f3f3f3; color:#000;}" + ".dd-selected-description-truncated { text-overflow: ellipsis; white-space:nowrap; }" + ".dd-option-selected { background:#f6f6f6; }" + ".dd-option-image, .dd-selected-image { vertical-align:middle; float:left; margin-right:5px; max-width:64px;}" + ".dd-image-right { float:right; margin-right:15px; margin-left:5px;}" + ".dd-container{ position:relative;} .dd-selected-text { font-weight:bold}</style>"; if (a("#css-ddslick").length <= 0) { a(f).appendTo("head") } b.init = function (b) { var b = a.extend({}, c, b); return this.each(function () { var c = a(this), f = c.data("ddslick"); if (!f) { var i = [], j = b.data; c.find("option").each(function () { var b = a(this), c = b.data(); i.push({ text: a.trim(b.text()), value: b.val(), selected: b.is(":selected"), description: c.description, imageSrc: c.imagesrc }) }); if (b.keepJSONItemsOnTop) a.merge(b.data, i); else b.data = a.merge(i, b.data); var k = c, l = a('<div id="' + c.attr("id") + '"></div>'); c.replaceWith(l); c = l; c.addClass("dd-container").append(d).append(e); var i = c.find(".dd-select"), m = c.find(".dd-options"); m.css({ width: b.width }); i.css({ width: b.width, background: b.background }); c.css({ width: b.width }); if (b.height != null) m.css({ height: b.height, overflow: "auto" }); a.each(b.data, function (a, c) { if (c.selected) b.defaultSelectedIndex = a; m.append("<li>" + '<a class="dd-option">' + (c.value ? ' <input class="dd-option-value" type="hidden" value="' + c.value + '" />' : "") + (c.imageSrc ? ' <img class="dd-option-image' + (b.imagePosition == "right" ? " dd-image-right" : "") + '" src="' + c.imageSrc + '" />' : "") + (c.text ? ' <label class="dd-option-text">' + c.text + "</label>" : "") + (c.description ? ' <small class="dd-option-description dd-desc">' + c.description + "</small>" : "") + "</a>" + "</li>") }); var n = { settings: b, original: k, selectedIndex: -1, selectedItem: null, selectedData: null }; c.data("ddslick", n); if (b.selectText.length > 0 && b.defaultSelectedIndex == null) { c.find(".dd-selected").html(b.selectText) } else { var o = b.defaultSelectedIndex != null && b.defaultSelectedIndex >= 0 && b.defaultSelectedIndex < b.data.length ? b.defaultSelectedIndex : 0; g(c, o) } c.find(".dd-select").on("click.ddslick", function () { h(c) }); c.find(".dd-option").on("click.ddslick", function () { g(c, a(this).closest("li").index()) }); if (b.clickOffToClose) { m.addClass("dd-click-off-close"); c.on("click.ddslick", function (a) { a.stopPropagation() }); a("body").on("click", function () { a(".dd-click-off-close").slideUp(50).siblings(".dd-select").find(".dd-pointer").removeClass("dd-pointer-up") }) } } }) }; b.select = function (b) { return this.each(function () { if (b.index) g(a(this), b.index) }) }; b.open = function () { return this.each(function () { var b = a(this), c = b.data("ddslick"); if (c) h(b) }) }; b.close = function () { return this.each(function () { var b = a(this), c = b.data("ddslick"); if (c) i(b) }) }; b.destroy = function () { return this.each(function () { var b = a(this), c = b.data("ddslick"); if (c) { var d = c.original; b.removeData("ddslick").unbind(".ddslick").replaceWith(d) } }) } })(jQuery);
|
|
libs/factory/bootstrap/assets/js/plugin.gradient-picker.js
DELETED
@@ -1,585 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
*jQuery gradient generator
|
3 |
-
@author Matt Crinklaw-Vogt (tantaman)
|
4 |
-
*/
|
5 |
-
(function( $ ) {
|
6 |
-
|
7 |
-
if (!$.event.special.destroyed) {
|
8 |
-
$.event.special.destroyed = {
|
9 |
-
remove: function(o) {
|
10 |
-
if (o.handler) {
|
11 |
-
o.handler();
|
12 |
-
}
|
13 |
-
}
|
14 |
-
}
|
15 |
-
}
|
16 |
-
|
17 |
-
|
18 |
-
//Сортирует в порядке убывания
|
19 |
-
function ctrlPtComparator(l,r) {
|
20 |
-
return l.position - r.position;
|
21 |
-
}
|
22 |
-
//Преобразует и инициализирует объекты вне области видимости
|
23 |
-
function bind(fn, ctx) {
|
24 |
-
if (typeof fn.bind === "function") {
|
25 |
-
return fn.bind(ctx);
|
26 |
-
} else {
|
27 |
-
return function() {
|
28 |
-
fn.apply(ctx, arguments);
|
29 |
-
}
|
30 |
-
}
|
31 |
-
}
|
32 |
-
|
33 |
-
var agent = window.navigator.userAgent;
|
34 |
-
var browserPrefix = ["-webkit-", "-moz-", "-ms-"];
|
35 |
-
var x,y = 0;
|
36 |
-
|
37 |
-
function GradientSelection($el, opts) {
|
38 |
-
var self = this;
|
39 |
-
|
40 |
-
this.$el = $el;
|
41 |
-
|
42 |
-
this.$presets = this.$el.find('.gradientPicker-pallets');
|
43 |
-
this.$presetsItems = this.$presets.find('.factory-preset-gradient');
|
44 |
-
|
45 |
-
this.$preview = this.$el.find(".gradientPicker-preview");
|
46 |
-
this.$pointsContainer = this.$el.find(".factory-points");
|
47 |
-
|
48 |
-
this.$colorPickerContainer = this.$el.find(".factory-color-picker-container");
|
49 |
-
this.$colorPicker = this.$el.find(".factory-color-picker");
|
50 |
-
this.$colorHex = this.$el.find(".factory-color-hex");
|
51 |
-
this.$opacitySliderContainer = this.$el.find(".factory-slider-container");
|
52 |
-
this.$opacitySlider = this.$el.find(".factory-bar");
|
53 |
-
|
54 |
-
this.$el.css("position", "relative");
|
55 |
-
this.opts = opts;
|
56 |
-
|
57 |
-
this._createPresetGradients();
|
58 |
-
this._createPreview();
|
59 |
-
this._createColorPicker();
|
60 |
-
this._createDirectionDropdown();
|
61 |
-
|
62 |
-
this.controlPoints = [];
|
63 |
-
|
64 |
-
opts.controlPoints = opts.controlPoints || [];
|
65 |
-
for (var i = 0; i < opts.controlPoints.length; ++i) {
|
66 |
-
var ctrlPt = this.createCtrlPt(opts.controlPoints[i]);
|
67 |
-
this.controlPoints.push(ctrlPt);
|
68 |
-
}
|
69 |
-
|
70 |
-
// if the gradient is not specified by default
|
71 |
-
// then we're using the first preset gradient
|
72 |
-
|
73 |
-
if ( this.controlPoints.length === 0 ) {
|
74 |
-
this.controlPoints.push( this.createCtrlPt( this.$presetsItems.data('primary') + " 0% 1" ) );
|
75 |
-
this.controlPoints.push( this.createCtrlPt( this.$presetsItems.data('secondary') + " 100% 1" ) );
|
76 |
-
}
|
77 |
-
|
78 |
-
// hides a color picker on losing the focus
|
79 |
-
$(document).on('click.gp.factory', function(){
|
80 |
-
self.hideColorPicker();
|
81 |
-
});
|
82 |
-
|
83 |
-
// doesn't hide on clicks inside the picker container
|
84 |
-
this.$colorPickerContainer.on('click.gp.factory', function(e){
|
85 |
-
e.stopPropagation();
|
86 |
-
});
|
87 |
-
|
88 |
-
this.$pointsContainer.on('click.gp.factory',function(e){
|
89 |
-
e.stopPropagation();
|
90 |
-
self.placePoint(e);
|
91 |
-
});
|
92 |
-
|
93 |
-
this.updatePreview();
|
94 |
-
}
|
95 |
-
|
96 |
-
GradientSelection.prototype = {
|
97 |
-
|
98 |
-
/* ----------------------------------------------------------------------------- */
|
99 |
-
/* Markup & Events
|
100 |
-
/* ----------------------------------------------------------------------------- */
|
101 |
-
|
102 |
-
/**
|
103 |
-
* Creates a panel with preset gradients.
|
104 |
-
*
|
105 |
-
* @returns void
|
106 |
-
*/
|
107 |
-
_createPresetGradients: function() {
|
108 |
-
var self = this;
|
109 |
-
|
110 |
-
// painting the preset gradients
|
111 |
-
this.$presetsItems.each(function(){
|
112 |
-
var $item = $(this);
|
113 |
-
|
114 |
-
var $secondaryColorWrap = $('<span class="factory-secondary-color-wrap"></span>').appendTo( $item );
|
115 |
-
var $secondaryColor = $('<span class="factory-secondary-color"></span>').appendTo($secondaryColorWrap);
|
116 |
-
|
117 |
-
$item.css("background", $item.data('primary'));
|
118 |
-
$secondaryColor.css("background", $item.data('secondary'));
|
119 |
-
});
|
120 |
-
|
121 |
-
// set gradient on clicl
|
122 |
-
this.$presetsItems.click(function(){
|
123 |
-
var primaryColor = $(this).data('primary');
|
124 |
-
var secondaryColor = $(this).data('secondary');
|
125 |
-
self.setGradient([primaryColor + " 0% 1", secondaryColor + " 100% 1"]);
|
126 |
-
});
|
127 |
-
},
|
128 |
-
|
129 |
-
/**
|
130 |
-
* Creates the gradient preview.
|
131 |
-
* @returns {undefined}
|
132 |
-
*/
|
133 |
-
_createPreview: function() {
|
134 |
-
|
135 |
-
var canvas = this.$preview[0];
|
136 |
-
|
137 |
-
canvas.width = canvas.clientWidth === 0 ? 210 : canvas.clientWidth;
|
138 |
-
canvas.height = canvas.clientHeight === 0 ? 30 : canvas.clientHeight;
|
139 |
-
|
140 |
-
this.g2d = canvas.getContext("2d");
|
141 |
-
},
|
142 |
-
|
143 |
-
/**
|
144 |
-
* Creates a color picker for points.
|
145 |
-
*
|
146 |
-
* @return void
|
147 |
-
*/
|
148 |
-
_createColorPicker: function() {
|
149 |
-
var self = this;
|
150 |
-
|
151 |
-
this.$colorPicker.factoryBootstrap330_iris({
|
152 |
-
width: 217,
|
153 |
-
palettes: ['#16a086', '#27ae61', '#2a80b9', '#8f44ad', '#2d3e50', '#f49c14', '#c1392b', '#bec3c7'],
|
154 |
-
hide: true,
|
155 |
-
change: function(event, ui) {
|
156 |
-
self.currentPoint.updateColor( ui.color.toString() );
|
157 |
-
if ( !self._colorLock ) self.$colorHex.val( ui.color.toString() );
|
158 |
-
}
|
159 |
-
});
|
160 |
-
|
161 |
-
self.$colorHex.on('change paste keyup', function(){
|
162 |
-
self._colorLock = true;
|
163 |
-
self.$colorPicker.factoryBootstrap330_iris('color', self.$colorHex.val());
|
164 |
-
self._cancelColorLock();
|
165 |
-
});
|
166 |
-
|
167 |
-
this.$opacitySlider.noUiSlider({
|
168 |
-
start: 100,
|
169 |
-
range: {'min': 0, 'max': 100 },
|
170 |
-
step: 1
|
171 |
-
});
|
172 |
-
|
173 |
-
this.$opacitySlider.on('slide', function(){
|
174 |
-
var value = parseInt( self.$opacitySlider.val() );
|
175 |
-
var valueWithUnits = value + "%";
|
176 |
-
|
177 |
-
self.$opacitySliderContainer.find(".factory-visible-value").text(valueWithUnits);
|
178 |
-
self.currentPoint.updateOpacity( value / 100 );
|
179 |
-
});
|
180 |
-
|
181 |
-
this.$opacitySlider.on('set', function(){
|
182 |
-
self.$result.val( self.getValue() );
|
183 |
-
self.$result.trigger('change');
|
184 |
-
});
|
185 |
-
},
|
186 |
-
|
187 |
-
/**
|
188 |
-
* The code that allows to a dead loop when editing the hex value directly.
|
189 |
-
*/
|
190 |
-
|
191 |
-
_repeatColorLock: false,
|
192 |
-
_colorLock: false,
|
193 |
-
_colorLockTimer: false,
|
194 |
-
|
195 |
-
_cancelColorLock: function( force ) {
|
196 |
-
var self = this;
|
197 |
-
|
198 |
-
if ( self._colorLockTimer && !force ) {
|
199 |
-
this._repeatColorLock = true;
|
200 |
-
return false;
|
201 |
-
}
|
202 |
-
|
203 |
-
this._colorLockTimer = setTimeout(function(){
|
204 |
-
|
205 |
-
if ( self._repeatColorLock ) {
|
206 |
-
self._repeatColorLock = false;
|
207 |
-
self._cancelColorLock( true );
|
208 |
-
return false;
|
209 |
-
}
|
210 |
-
|
211 |
-
self._colorLock = false;
|
212 |
-
self._colorLockTimer = false;
|
213 |
-
self._repeatColorLock = false;
|
214 |
-
|
215 |
-
}, 500);
|
216 |
-
},
|
217 |
-
|
218 |
-
/**
|
219 |
-
* Creates the gradient direction dropdown.
|
220 |
-
*
|
221 |
-
* @returns void
|
222 |
-
*/
|
223 |
-
_createDirectionDropdown: function() {
|
224 |
-
var self = this;
|
225 |
-
|
226 |
-
var resVertical = factory && factory.res && factory.res.resVertical || 'vertical';
|
227 |
-
var resHorizontal = factory && factory.res && factory.res.resHorizontal || 'horizontal';
|
228 |
-
|
229 |
-
this.$directionDropdown =
|
230 |
-
$('<select class="gradientPicker-filldirection">'+
|
231 |
-
'<option value="vertical"'+ (self.opts.fillDirection === 'top' ? ' selected' : '') +'>' + resVertical + '</option>'+
|
232 |
-
'<option value="horizontal"'+ (self.opts.fillDirection === 'left' ? ' selected' : '') +'>' + resHorizontal + '</option>'+
|
233 |
-
'</select>');
|
234 |
-
|
235 |
-
this.$el.append( this.$directionDropdown );
|
236 |
-
this.$directionDropdown.chosen();
|
237 |
-
|
238 |
-
this.$directionDropdown.change(function(){
|
239 |
-
self.setGradientDirection( $(this).val() );
|
240 |
-
});
|
241 |
-
},
|
242 |
-
|
243 |
-
/* ----------------------------------------------------------------------------- */
|
244 |
-
/* Actions
|
245 |
-
/* ----------------------------------------------------------------------------- */
|
246 |
-
|
247 |
-
/**
|
248 |
-
* Shows a color picker for the given point.
|
249 |
-
*
|
250 |
-
* @param ControlPoint point
|
251 |
-
* @returns void
|
252 |
-
*/
|
253 |
-
showColorPicker: function( point ) {
|
254 |
-
this.currentPoint = point;
|
255 |
-
|
256 |
-
$(".factory-current-point").removeClass('factory-current-point');
|
257 |
-
point.$el.addClass('factory-current-point');
|
258 |
-
|
259 |
-
this.$colorPickerContainer.show();
|
260 |
-
this.$colorPicker.factoryBootstrap330_iris( 'show' );
|
261 |
-
this.$colorPicker.factoryBootstrap330_iris( 'option', 'color', point.color );
|
262 |
-
|
263 |
-
this.$opacitySlider.val( point.opacity * 100 );
|
264 |
-
this.$opacitySlider.trigger('slide');
|
265 |
-
},
|
266 |
-
|
267 |
-
hideColorPicker: function() {
|
268 |
-
$(".factory-current-point").removeClass('factory-current-point');
|
269 |
-
this.currentPoint = false;
|
270 |
-
this.$colorPickerContainer.hide();
|
271 |
-
},
|
272 |
-
|
273 |
-
isColorPickerShown: function() {
|
274 |
-
return this.currentPoint;
|
275 |
-
},
|
276 |
-
|
277 |
-
docClicked: function() {
|
278 |
-
//this.ctrlPtConfig.hide();
|
279 |
-
$('.gradientPicker-iris-wrap').hide();
|
280 |
-
$('.gradientPicker-ctrlPt').removeClass('open');
|
281 |
-
},
|
282 |
-
|
283 |
-
createCtrlPt: function(ctrlPtSetup) {
|
284 |
-
return new ControlPoint(this, ctrlPtSetup, this.opts.orientation)
|
285 |
-
},
|
286 |
-
|
287 |
-
/**
|
288 |
-
* Upadtes given options.
|
289 |
-
*
|
290 |
-
* @param array opts
|
291 |
-
* @param bool recreatPoints
|
292 |
-
* @returns void
|
293 |
-
*/
|
294 |
-
updateOptions: function( opts, recreatPoints ) {
|
295 |
-
$.extend(this.opts, opts);
|
296 |
-
|
297 |
-
if( recreatPoints ) {
|
298 |
-
this.controlPoints = [];
|
299 |
-
this.$pointsContainer.html('');
|
300 |
-
for (var i = 0; i < this.opts.controlPoints.length; ++i) {
|
301 |
-
var ctrlPt = this.createCtrlPt(this.opts.controlPoints[i]);
|
302 |
-
this.controlPoints.push(ctrlPt);
|
303 |
-
}
|
304 |
-
}
|
305 |
-
|
306 |
-
this.updatePreview();
|
307 |
-
|
308 |
-
switch ( this.opts.fillDirection ) {
|
309 |
-
case 'top':
|
310 |
-
fillDirectCheck = 'horizontal';
|
311 |
-
break;
|
312 |
-
case 'left':
|
313 |
-
fillDirectCheck = 'vertical';
|
314 |
-
break;
|
315 |
-
default:
|
316 |
-
fillDirectCheck = false;
|
317 |
-
break;
|
318 |
-
}
|
319 |
-
if( fillDirectCheck )
|
320 |
-
$('.gradientPicker-filldirection', this.$el).find('option[value="' + fillDirectCheck + '"]').prop('selected', true);
|
321 |
-
|
322 |
-
|
323 |
-
},
|
324 |
-
|
325 |
-
/**
|
326 |
-
* Refreshes the gradient preview.
|
327 |
-
*
|
328 |
-
* @returns void
|
329 |
-
*/
|
330 |
-
updatePreview: function() {
|
331 |
-
|
332 |
-
var result = [];
|
333 |
-
this.controlPoints.sort(ctrlPtComparator);
|
334 |
-
|
335 |
-
this.g2d.clearRect ( 0, 0, this.g2d.canvas.width , this.g2d.canvas.height );
|
336 |
-
|
337 |
-
if (this.opts.orientation === "horizontal") {
|
338 |
-
var grad = this.g2d.createLinearGradient(0, 0, this.g2d.canvas.width, 0);
|
339 |
-
|
340 |
-
for (var i = 0; i < this.controlPoints.length; ++i) {
|
341 |
-
var pt = this.controlPoints[i];
|
342 |
-
|
343 |
-
grad.addColorStop(pt.position, "rgba(" + hexToRgb(pt.color).r + "," + hexToRgb(pt.color).g + "," + hexToRgb(pt.color).b + ", "+pt.opacity+")");
|
344 |
-
result.push({
|
345 |
-
position: pt.position,
|
346 |
-
color: pt.color,
|
347 |
-
opacity: pt.opacity
|
348 |
-
});
|
349 |
-
}
|
350 |
-
} else {
|
351 |
-
|
352 |
-
}
|
353 |
-
|
354 |
-
this.g2d.fillStyle = grad;
|
355 |
-
this.g2d.fillRect(0, 0, this.g2d.canvas.width, this.g2d.canvas.height);
|
356 |
-
|
357 |
-
if (this.opts.generateStyles)
|
358 |
-
var styles = this._generatePreviewStyles();
|
359 |
-
|
360 |
-
this.opts.change(result, styles);
|
361 |
-
},
|
362 |
-
|
363 |
-
removeControlPoint: function(ctrlPt) {
|
364 |
-
var cpidx = this.controlPoints.indexOf(ctrlPt);
|
365 |
-
|
366 |
-
if (cpidx != -1) {
|
367 |
-
this.controlPoints.splice(cpidx, 1);
|
368 |
-
ctrlPt.$el.remove();
|
369 |
-
}
|
370 |
-
},
|
371 |
-
|
372 |
-
/**
|
373 |
-
* Adds a new point.
|
374 |
-
*/
|
375 |
-
placePoint: function(e) {
|
376 |
-
e.stopPropagation();
|
377 |
-
|
378 |
-
var offset = $(e.target).offset();
|
379 |
-
var x = e.pageX - offset.left;
|
380 |
-
var y = e.pageY - offset.top;
|
381 |
-
|
382 |
-
var imgData = this.g2d.getImageData(x,y,1,1);
|
383 |
-
var colorStr = "rgb(" + imgData.data[0] + "," + imgData.data[1] + "," + imgData.data[2] + ")";
|
384 |
-
var opacity = ( 1 / 255 ) * imgData.data[3];
|
385 |
-
|
386 |
-
var cp = this.createCtrlPt({
|
387 |
-
position: x / this.g2d.canvas.width,
|
388 |
-
color: rgb2hex(colorStr),
|
389 |
-
opacity: opacity
|
390 |
-
});
|
391 |
-
|
392 |
-
this.controlPoints.push(cp);
|
393 |
-
this.controlPoints.sort(ctrlPtComparator);
|
394 |
-
|
395 |
-
this.showColorPicker( cp );
|
396 |
-
},
|
397 |
-
|
398 |
-
setGradient: function( controlPoints ) {
|
399 |
-
this.updateOptions({ controlPoints: controlPoints }, true);
|
400 |
-
this.updatePreview();
|
401 |
-
},
|
402 |
-
|
403 |
-
setGradientDirection: function( direction ){
|
404 |
-
switch ( direction ) {
|
405 |
-
case 'horizontal':
|
406 |
-
this.updateOptions({type: "linear", fillDirection: "top"}, false);
|
407 |
-
break;
|
408 |
-
case 'vertical':
|
409 |
-
this.updateOptions({type: "linear", fillDirection: "left"}, false);
|
410 |
-
break;
|
411 |
-
}
|
412 |
-
},
|
413 |
-
|
414 |
-
_generatePreviewStyles: function() {
|
415 |
-
|
416 |
-
var gradientOption = {};
|
417 |
-
gradientOption['filldirection'] = this.opts.fillDirection;
|
418 |
-
gradientOption['color_points'] = [];
|
419 |
-
|
420 |
-
for (var i = 0; i < this.controlPoints.length; ++i) {
|
421 |
-
var pt = this.controlPoints[i];
|
422 |
-
gradientOption['color_points'].push( pt.color + " " + ((pt.position*100)|0) + "% " + pt.opacity );
|
423 |
-
}
|
424 |
-
|
425 |
-
return JSON.stringify(gradientOption);
|
426 |
-
},
|
427 |
-
|
428 |
-
_genPalletsBackground: function(primaryColor, secondaryColor) {
|
429 |
-
cssRules = 'linear-gradient(90deg, '+primaryColor+' 0%, '+secondaryColor+' 100%)';
|
430 |
-
|
431 |
-
if (agent.indexOf('WebKit') >= 0)
|
432 |
-
crossBrowserRule = browserPrefix[0] + cssRules;
|
433 |
-
else if (agent.indexOf('Mozilla') >= 0)
|
434 |
-
crossBrowserRule = browserPrefix[1] + cssRules;
|
435 |
-
else if (agent.indexOf('Microsoft') >= 0)
|
436 |
-
crossBrowserRule = browserPrefix[2] + cssRules;
|
437 |
-
else
|
438 |
-
crossBrowserRule = cssRules;
|
439 |
-
|
440 |
-
return crossBrowserRule;
|
441 |
-
}
|
442 |
-
};
|
443 |
-
|
444 |
-
/**
|
445 |
-
* Gradient Control Point
|
446 |
-
*/
|
447 |
-
function ControlPoint(parent, initialState, orientation) {
|
448 |
-
var self = this;
|
449 |
-
|
450 |
-
this.parent = parent;
|
451 |
-
this.$container = parent.$pointsContainer;
|
452 |
-
|
453 |
-
this.$el = $('<span class="factory-point"></span>');
|
454 |
-
this.$pointColor = $('<span class="factory-point-color"></span>').appendTo( this.$el );
|
455 |
-
|
456 |
-
this.$container.append( this.$el );
|
457 |
-
|
458 |
-
if (typeof initialState === "string") {
|
459 |
-
initialState = initialState.split(" ");
|
460 |
-
this.position = parseFloat(initialState[1])/100;
|
461 |
-
this.color = initialState[0];
|
462 |
-
this.opacity = initialState[2];
|
463 |
-
} else {
|
464 |
-
this.position = initialState.position;
|
465 |
-
this.color = initialState.color;
|
466 |
-
this.opacity = initialState.opacity;
|
467 |
-
}
|
468 |
-
|
469 |
-
this.outerWidth = this.$el.outerWidth();
|
470 |
-
|
471 |
-
this.$pointColor.css({
|
472 |
-
"background-color": self.color,
|
473 |
-
"opacity": self.opacity
|
474 |
-
});
|
475 |
-
|
476 |
-
if (orientation === "horizontal") {
|
477 |
-
var pxLeft = (self.$container.width() - this.$el.outerWidth()) * (this.position);
|
478 |
-
this.$el.css("left", pxLeft);
|
479 |
-
} else {
|
480 |
-
var pxTop = (self.$container.height() - this.$el.outerHeight()) * (this.position);
|
481 |
-
this.$el.css("top", pxTop);
|
482 |
-
}
|
483 |
-
|
484 |
-
this.drag = bind(this.drag, this);
|
485 |
-
this.stop = bind(this.stop, this);
|
486 |
-
|
487 |
-
this.$el.disableSelection().css('webkit-user-select','none').draggable({
|
488 |
-
axis: (orientation === "horizontal") ? "x" : "y",
|
489 |
-
drag: this.drag,
|
490 |
-
stop: this.stop,
|
491 |
-
containment: self.$container,
|
492 |
-
cancel: null
|
493 |
-
});
|
494 |
-
|
495 |
-
// shows the locker picker on click
|
496 |
-
this.$el.on('click.gp.factory', function(e){
|
497 |
-
if ( self.parent.currentPoint === self ) self.parent.hideColorPicker( self );
|
498 |
-
else self.parent.showColorPicker( self );
|
499 |
-
e.stopPropagation();
|
500 |
-
});
|
501 |
-
}
|
502 |
-
|
503 |
-
ControlPoint.prototype = {
|
504 |
-
|
505 |
-
updateColor: function( color ) {
|
506 |
-
this.color = color;
|
507 |
-
this.$pointColor.css( 'background-color', color );
|
508 |
-
|
509 |
-
this.parent.updatePreview();
|
510 |
-
},
|
511 |
-
|
512 |
-
updateOpacity: function( opacity ) {
|
513 |
-
this.opacity = opacity;
|
514 |
-
this.$pointColor.css( 'opacity', opacity );
|
515 |
-
|
516 |
-
this.parent.updatePreview();
|
517 |
-
},
|
518 |
-
|
519 |
-
drag: function(e, ui) {
|
520 |
-
|
521 |
-
var stopPointPosition = eval( this.$el.parent().offset().top + this.$el.parent().height() + 20 );
|
522 |
-
|
523 |
-
if( e.pageY > stopPointPosition ) {
|
524 |
-
this.remove();
|
525 |
-
}
|
526 |
-
|
527 |
-
// convert position to a %
|
528 |
-
var left = ui.position.left;
|
529 |
-
this.position = (left / (this.$container.width() - this.outerWidth));
|
530 |
-
|
531 |
-
this.parent.updatePreview();
|
532 |
-
},
|
533 |
-
|
534 |
-
stop: function() {
|
535 |
-
this.parent.updatePreview();
|
536 |
-
},
|
537 |
-
|
538 |
-
remove: function() {
|
539 |
-
this.parent.removeControlPoint(this);
|
540 |
-
this.parent.hideColorPicker();
|
541 |
-
this.parent.updatePreview();
|
542 |
-
}
|
543 |
-
};
|
544 |
-
|
545 |
-
var methods = {
|
546 |
-
init: function(opts) {
|
547 |
-
//orientation - Позиция пикера
|
548 |
-
//type - linear, radial
|
549 |
-
//fillDirection - направление градиента
|
550 |
-
opts = $.extend({
|
551 |
-
controlPoints: ["#FFF 0% 1", "#000 100% 1"],
|
552 |
-
orientation: "horizontal",
|
553 |
-
type: "linear",
|
554 |
-
fillDirection: "left",
|
555 |
-
generateStyles: true,
|
556 |
-
change: function() {}
|
557 |
-
}, opts);
|
558 |
-
|
559 |
-
this.each(function() {
|
560 |
-
var $this = $(this);
|
561 |
-
var gradSel = new GradientSelection($this, opts);
|
562 |
-
$this.data("gradientPicker-sel", gradSel);
|
563 |
-
});
|
564 |
-
},
|
565 |
-
|
566 |
-
update: function(opts) {
|
567 |
-
this.each(function() {
|
568 |
-
var $this = $(this);
|
569 |
-
var gradSel = $this.data("gradientPicker-sel");
|
570 |
-
if (gradSel != null) {
|
571 |
-
gradSel.updateOptions(opts, true);
|
572 |
-
}
|
573 |
-
});
|
574 |
-
}
|
575 |
-
};
|
576 |
-
|
577 |
-
$.fn.gradientPicker = function(method, opts) {
|
578 |
-
if (typeof method === "string" && method !== "init") {
|
579 |
-
methods[method].call(this, opts);
|
580 |
-
} else {
|
581 |
-
opts = method;
|
582 |
-
methods.init.call(this, opts);
|
583 |
-
}
|
584 |
-
};
|
585 |
-
})( jQuery );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/plugin.iris.js
DELETED
@@ -1,893 +0,0 @@
|
|
1 |
-
/*! Iris Color Picker - v1.0.4 - 2013-11-18
|
2 |
-
* https://github.com/Automattic/Iris
|
3 |
-
* Copyright (c) 2013 Matt Wiebe; Licensed GPLv2 */
|
4 |
-
/* global Color, jQuery */
|
5 |
-
(function( $, undef ){
|
6 |
-
var _html, nonGradientIE, gradientType, vendorPrefixes, _css, Iris, UA, isIE, IEVersion;
|
7 |
-
|
8 |
-
_html = '<div class="iris-picker"><div class="iris-picker-inner"><div class="iris-square"><a class="iris-square-value" href="#"><span class="iris-square-handle ui-slider-handle"></span></a><div class="iris-square-inner iris-square-horiz"></div><div class="iris-square-inner iris-square-vert"></div></div><div class="iris-slider iris-strip"><div class="iris-slider-offset"></div></div></div></div>';
|
9 |
-
// Even IE9 dosen't support gradients. Elaborate sigh.
|
10 |
-
UA = navigator.userAgent.toLowerCase();
|
11 |
-
isIE = navigator.appName === 'Microsoft Internet Explorer';
|
12 |
-
IEVersion = isIE ? parseFloat( UA.match( /msie ([0-9]{1,}[\.0-9]{0,})/ )[1] ) : 0;
|
13 |
-
nonGradientIE = ( isIE && IEVersion < 10 );
|
14 |
-
gradientType = false;
|
15 |
-
// we don't bother with an unprefixed version, as it has a different syntax
|
16 |
-
vendorPrefixes = [ '-moz-', '-webkit-', '-o-', '-ms-' ];
|
17 |
-
// This is manually copied from iris.min.css until I can figure out how to do it without
|
18 |
-
_css = '.iris-picker{display:block;position:relative}.iris-picker,.iris-picker *{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input+.iris-picker{margin-top:4px}.iris-error{background-color:#ffafaf}.iris-border{border-radius:3px;border:1px solid #aaa;width:200px;background-color:#fff}.iris-picker-inner{position:absolute;top:0;right:0;left:0;bottom:0}.iris-border .iris-picker-inner{top:10px;right:10px;left:10px;bottom:10px}.iris-picker .iris-square-inner{position:absolute;left:0;right:0;top:0;bottom:0}.iris-picker .iris-square,.iris-picker .iris-slider,.iris-picker .iris-square-inner,.iris-picker .iris-palette{border-radius:3px;box-shadow:inset 0 0 5px rgba(0,0,0,.4);height:100%;width:12.5%;float:left;margin-right:5%}.iris-picker .iris-square{width:76%;margin-right:10%;position:relative}.iris-picker .iris-square-inner{width:auto;margin:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-square-inner,.iris-ie-9 .iris-palette{box-shadow:none;border-radius:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-palette{outline:1px solid rgba(0,0,0,.1)}.iris-ie-lt9 .iris-square,.iris-ie-lt9 .iris-slider,.iris-ie-lt9 .iris-square-inner,.iris-ie-lt9 .iris-palette{outline:1px solid #aaa}.iris-ie-lt9 .iris-square .ui-slider-handle{outline:1px solid #aaa;background-color:#fff;-ms-filter:"alpha(Opacity=30)"}.iris-ie-lt9 .iris-square .iris-square-handle{background:0;border:3px solid #fff;-ms-filter:"alpha(Opacity=50)"}.iris-picker .iris-strip{margin-right:0;position:relative}.iris-picker .iris-strip .ui-slider-handle{position:absolute;background:0;margin:0;right:-3px;left:-3px;border:4px solid #aaa;border-width:4px 3px;width:auto;height:6px;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.iris-strip .ui-slider-handle:before{content:" ";position:absolute;left:-2px;right:-2px;top:-3px;bottom:-3px;border:2px solid #fff;border-radius:3px}.iris-picker .iris-slider-offset{position:absolute;top:11px;left:0;right:0;bottom:-3px;width:auto;height:auto;background:transparent;border:0;top:none;border-radius:0}.iris-picker .iris-square-handle{background:transparent;border:5px solid #aaa;border-radius:50%;border-color:rgba(128,128,128,.5);box-shadow:none;width:12px;height:12px;position:absolute;left:-10px;top:-10px;cursor:move;opacity:1;z-index:10}.iris-picker .ui-state-focus .iris-square-handle{opacity:.8}.iris-picker .iris-square-handle:hover{border-color:#999}.iris-picker .iris-square-value:focus .iris-square-handle{box-shadow:0 0 2px rgba(0,0,0,.75);opacity:.8}.iris-picker .iris-square-handle:hover::after{border-color:#fff}.iris-picker .iris-square-handle::after{position:absolute;bottom:-4px;right:-4px;left:-4px;top:-4px;border:3px solid #f9f9f9;border-color:rgba(255,255,255,.8);border-radius:50%;content:" "}.iris-picker .iris-square-value{width:8px;height:8px;position:absolute}.iris-ie-lt9 .iris-square-value,.iris-mozilla .iris-square-value{width:1px;height:1px}.iris-palette-container{position:absolute;bottom:0;left:0;margin:0;padding:0}.iris-border .iris-palette-container{left:10px;bottom:10px}.iris-picker .iris-palette{margin:0;cursor:pointer}';
|
19 |
-
// Bail for IE <= 7
|
20 |
-
if ( nonGradientIE && IEVersion <= 7 ) {
|
21 |
-
$.fn.iris = $.noop;
|
22 |
-
$.support.iris = false;
|
23 |
-
return;
|
24 |
-
}
|
25 |
-
|
26 |
-
$.support.factoryBootstrap330_iris = true;
|
27 |
-
|
28 |
-
function testGradientType() {
|
29 |
-
var el, base;
|
30 |
-
|
31 |
-
if ( nonGradientIE ) {
|
32 |
-
gradientType = 'filter';
|
33 |
-
}
|
34 |
-
else {
|
35 |
-
el = $( '<div id="iris-gradtest" />' );
|
36 |
-
base = 'linear-gradient(top,#fff,#000)';
|
37 |
-
$.each( vendorPrefixes, function( i, val ){
|
38 |
-
el.css( 'backgroundImage', val + base );
|
39 |
-
if ( el.css( 'backgroundImage').match( 'gradient' ) ) {
|
40 |
-
gradientType = i;
|
41 |
-
return false;
|
42 |
-
}
|
43 |
-
});
|
44 |
-
// check for legacy webkit gradient syntax
|
45 |
-
if ( gradientType === false ) {
|
46 |
-
el.css( 'background', '-webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#000))' );
|
47 |
-
if ( el.css( 'backgroundImage').match( 'gradient' ) ) {
|
48 |
-
gradientType = 'webkit';
|
49 |
-
}
|
50 |
-
}
|
51 |
-
el.remove();
|
52 |
-
}
|
53 |
-
|
54 |
-
}
|
55 |
-
|
56 |
-
/**
|
57 |
-
* Only for CSS3 gradients. oldIE will use a separate function.
|
58 |
-
*
|
59 |
-
* Accepts as many color stops as necessary from 2nd arg on, or 2nd
|
60 |
-
* arg can be an array of color stops
|
61 |
-
*
|
62 |
-
* @param {string} origin Gradient origin - top or left, defaults to left.
|
63 |
-
* @return {string} Appropriate CSS3 gradient string for use in
|
64 |
-
*/
|
65 |
-
function createGradient( origin, stops ) {
|
66 |
-
origin = ( origin === 'top' ) ? 'top' : 'left';
|
67 |
-
stops = $.isArray( stops ) ? stops : Array.prototype.slice.call( arguments, 1 );
|
68 |
-
if ( gradientType === 'webkit' ) {
|
69 |
-
return legacyWebkitGradient( origin, stops );
|
70 |
-
} else {
|
71 |
-
return vendorPrefixes[ gradientType ] + 'linear-gradient(' + origin + ', ' + stops.join(', ') + ')';
|
72 |
-
}
|
73 |
-
}
|
74 |
-
|
75 |
-
/**
|
76 |
-
* Stupid gradients for a stupid browser.
|
77 |
-
*/
|
78 |
-
function stupidIEGradient( origin, stops ) {
|
79 |
-
var type, self, lastIndex, filter, startPosProp, endPosProp, dimensionProp, template, html;
|
80 |
-
|
81 |
-
origin = ( origin === 'top' ) ? 'top' : 'left';
|
82 |
-
stops = $.isArray( stops ) ? stops : Array.prototype.slice.call( arguments, 1 );
|
83 |
-
// 8 hex: AARRGGBB
|
84 |
-
// GradientType: 0 vertical, 1 horizontal
|
85 |
-
type = ( origin === 'top' ) ? 0 : 1;
|
86 |
-
self = $( this );
|
87 |
-
lastIndex = stops.length - 1;
|
88 |
-
filter = 'filter';
|
89 |
-
startPosProp = ( type === 1 ) ? 'left' : 'top';
|
90 |
-
endPosProp = ( type === 1 ) ? 'right' : 'bottom';
|
91 |
-
dimensionProp = ( type === 1 ) ? 'height' : 'width';
|
92 |
-
template = '<div class="iris-ie-gradient-shim" style="position:absolute;' + dimensionProp + ':100%;' + startPosProp + ':%start%;' + endPosProp + ':%end%;' + filter + ':%filter%;" data-color:"%color%"></div>';
|
93 |
-
html = '';
|
94 |
-
// need a positioning context
|
95 |
-
if ( self.css('position') === 'static' ) {
|
96 |
-
self.css( {position: 'relative' } );
|
97 |
-
}
|
98 |
-
|
99 |
-
stops = fillColorStops( stops );
|
100 |
-
$.each(stops, function( i, startColor ) {
|
101 |
-
var endColor, endStop, filterVal;
|
102 |
-
|
103 |
-
// we want two at a time. if we're on the last pair, bail.
|
104 |
-
if ( i === lastIndex ) {
|
105 |
-
return false;
|
106 |
-
}
|
107 |
-
|
108 |
-
endColor = stops[ i + 1 ];
|
109 |
-
//if our pairs are at the same color stop, moving along.
|
110 |
-
if ( startColor.stop === endColor.stop ) {
|
111 |
-
return;
|
112 |
-
}
|
113 |
-
|
114 |
-
endStop = 100 - parseFloat( endColor.stop ) + '%';
|
115 |
-
startColor.octoHex = new Color( startColor.color ).toIEOctoHex();
|
116 |
-
endColor.octoHex = new Color( endColor.color ).toIEOctoHex();
|
117 |
-
|
118 |
-
filterVal = 'progid:DXImageTransform.Microsoft.Gradient(GradientType=' + type + ', StartColorStr=\'' + startColor.octoHex + '\', EndColorStr=\'' + endColor.octoHex + '\')';
|
119 |
-
html += template.replace( '%start%', startColor.stop ).replace( '%end%', endStop ).replace( '%filter%', filterVal );
|
120 |
-
});
|
121 |
-
self.find( '.iris-ie-gradient-shim' ).remove();
|
122 |
-
$( html ).prependTo( self );
|
123 |
-
}
|
124 |
-
|
125 |
-
function legacyWebkitGradient( origin, colorList ) {
|
126 |
-
var stops = [];
|
127 |
-
origin = ( origin === 'top' ) ? '0% 0%,0% 100%,' : '0% 100%,100% 100%,';
|
128 |
-
colorList = fillColorStops( colorList );
|
129 |
-
$.each( colorList, function( i, val ){
|
130 |
-
stops.push( 'color-stop(' + ( parseFloat( val.stop ) / 100 ) + ', ' + val.color + ')' );
|
131 |
-
});
|
132 |
-
return '-webkit-gradient(linear,' + origin + stops.join(',') + ')';
|
133 |
-
}
|
134 |
-
|
135 |
-
function fillColorStops( colorList ) {
|
136 |
-
var colors = [],
|
137 |
-
percs = [],
|
138 |
-
newColorList = [],
|
139 |
-
lastIndex = colorList.length - 1;
|
140 |
-
|
141 |
-
$.each( colorList, function( index, val ) {
|
142 |
-
var color = val,
|
143 |
-
perc = false,
|
144 |
-
match = val.match( /1?[0-9]{1,2}%$/ );
|
145 |
-
|
146 |
-
if ( match ) {
|
147 |
-
color = val.replace( /\s?1?[0-9]{1,2}%$/, '' );
|
148 |
-
perc = match.shift();
|
149 |
-
}
|
150 |
-
colors.push( color );
|
151 |
-
percs.push( perc );
|
152 |
-
});
|
153 |
-
|
154 |
-
// back fill first and last
|
155 |
-
if ( percs[0] === false ) {
|
156 |
-
percs[0] = '0%';
|
157 |
-
}
|
158 |
-
|
159 |
-
if ( percs[lastIndex] === false ) {
|
160 |
-
percs[lastIndex] = '100%';
|
161 |
-
}
|
162 |
-
|
163 |
-
percs = backFillColorStops( percs );
|
164 |
-
|
165 |
-
$.each( percs, function( i ){
|
166 |
-
newColorList[i] = { color: colors[i], stop: percs[i] };
|
167 |
-
});
|
168 |
-
return newColorList;
|
169 |
-
}
|
170 |
-
|
171 |
-
function backFillColorStops( stops ) {
|
172 |
-
var first = 0,
|
173 |
-
last = stops.length - 1,
|
174 |
-
i = 0,
|
175 |
-
foundFirst = false,
|
176 |
-
incr,
|
177 |
-
steps,
|
178 |
-
step,
|
179 |
-
firstVal;
|
180 |
-
|
181 |
-
if ( stops.length <= 2 || $.inArray( false, stops ) < 0 ) {
|
182 |
-
return stops;
|
183 |
-
}
|
184 |
-
while ( i < stops.length - 1 ) {
|
185 |
-
if ( ! foundFirst && stops[i] === false ) {
|
186 |
-
first = i - 1;
|
187 |
-
foundFirst = true;
|
188 |
-
} else if ( foundFirst && stops[i] !== false ) {
|
189 |
-
last = i;
|
190 |
-
i = stops.length;
|
191 |
-
}
|
192 |
-
i++;
|
193 |
-
}
|
194 |
-
steps = last - first;
|
195 |
-
firstVal = parseInt( stops[first].replace('%'), 10 );
|
196 |
-
incr = ( parseFloat( stops[last].replace('%') ) - firstVal ) / steps;
|
197 |
-
i = first + 1;
|
198 |
-
step = 1;
|
199 |
-
while ( i < last ) {
|
200 |
-
stops[i] = ( firstVal + ( step * incr ) ) + '%';
|
201 |
-
step++;
|
202 |
-
i++;
|
203 |
-
}
|
204 |
-
return backFillColorStops( stops );
|
205 |
-
}
|
206 |
-
|
207 |
-
$.fn.factoryBootstrap330_gradient = function() {
|
208 |
-
var args = arguments;
|
209 |
-
return this.each( function() {
|
210 |
-
// this'll be oldishIE
|
211 |
-
if ( nonGradientIE ) {
|
212 |
-
stupidIEGradient.apply( this, args );
|
213 |
-
} else {
|
214 |
-
// new hotness
|
215 |
-
$( this ).css( 'backgroundImage', createGradient.apply( this, args ) );
|
216 |
-
}
|
217 |
-
});
|
218 |
-
};
|
219 |
-
|
220 |
-
$.fn.factoryBootstrap330_raninbowGradient = function( origin, args ) {
|
221 |
-
var opts, template, i, steps;
|
222 |
-
|
223 |
-
origin = origin || 'top';
|
224 |
-
opts = $.extend( {}, { s: 100, l: 50 }, args );
|
225 |
-
template = 'hsl(%h%,' + opts.s + '%,' + opts.l + '%)';
|
226 |
-
i = 0;
|
227 |
-
steps = [];
|
228 |
-
while ( i <= 360 ) {
|
229 |
-
steps.push( template.replace('%h%', i) );
|
230 |
-
i += 30;
|
231 |
-
}
|
232 |
-
return this.each(function() {
|
233 |
-
$(this).factoryBootstrap330_gradient( origin, steps );
|
234 |
-
});
|
235 |
-
};
|
236 |
-
|
237 |
-
// the colorpicker widget def.
|
238 |
-
Iris = {
|
239 |
-
options: {
|
240 |
-
color: false,
|
241 |
-
mode: 'hsl',
|
242 |
-
controls: {
|
243 |
-
horiz: 's', // horizontal defaults to saturation
|
244 |
-
vert: 'l', // vertical defaults to lightness
|
245 |
-
strip: 'h' // right strip defaults to hue
|
246 |
-
},
|
247 |
-
hide: true, // hide the color picker by default
|
248 |
-
border: true, // draw a border around the collection of UI elements
|
249 |
-
target: false, // a DOM element / jQuery selector that the element will be appended within. Only used when called on an input.
|
250 |
-
width: 200, // the width of the collection of UI elements
|
251 |
-
palettes: false // show a palette of basic colors beneath the square.
|
252 |
-
},
|
253 |
-
_color: '',
|
254 |
-
_palettes: [ '#000', '#fff', '#d33', '#d93', '#ee2', '#81d742', '#1e73be', '#8224e3' ],
|
255 |
-
_inited: false,
|
256 |
-
_defaultHSLControls: {
|
257 |
-
horiz: 's',
|
258 |
-
vert: 'l',
|
259 |
-
strip: 'h'
|
260 |
-
},
|
261 |
-
_defaultHSVControls: {
|
262 |
-
horiz: 'h',
|
263 |
-
vert: 'v',
|
264 |
-
strip: 's'
|
265 |
-
},
|
266 |
-
_scale: {
|
267 |
-
h: 360,
|
268 |
-
s: 100,
|
269 |
-
l: 100,
|
270 |
-
v: 100
|
271 |
-
},
|
272 |
-
_create: function() {
|
273 |
-
var self = this,
|
274 |
-
el = self.element,
|
275 |
-
color = self.options.color || el.val();
|
276 |
-
|
277 |
-
if ( gradientType === false ) {
|
278 |
-
testGradientType();
|
279 |
-
}
|
280 |
-
|
281 |
-
if ( el.is( 'input' ) ) {
|
282 |
-
if ( self.options.target ) {
|
283 |
-
self.picker = $( _html ).appendTo( self.options.target );
|
284 |
-
} else {
|
285 |
-
self.picker = $( _html ).insertAfter( el );
|
286 |
-
}
|
287 |
-
|
288 |
-
self._addInputListeners( el );
|
289 |
-
} else {
|
290 |
-
el.append( _html );
|
291 |
-
self.picker = el.find( '.iris-picker' );
|
292 |
-
}
|
293 |
-
|
294 |
-
// Browsers / Versions
|
295 |
-
// Feature detection doesn't work for these, and $.browser is deprecated
|
296 |
-
if ( isIE ) {
|
297 |
-
if ( IEVersion === 9 ) {
|
298 |
-
self.picker.addClass( 'iris-ie-9' );
|
299 |
-
} else if ( IEVersion <= 8 ) {
|
300 |
-
self.picker.addClass( 'iris-ie-lt9' );
|
301 |
-
}
|
302 |
-
} else if ( UA.indexOf('compatible') < 0 && UA.indexOf('khtml') < 0 && UA.match( /mozilla/ ) ) {
|
303 |
-
self.picker.addClass( 'iris-mozilla' );
|
304 |
-
}
|
305 |
-
|
306 |
-
if ( self.options.palettes ) {
|
307 |
-
self._addPalettes();
|
308 |
-
}
|
309 |
-
|
310 |
-
self._color = new Color( color ).setHSpace( self.options.mode );
|
311 |
-
self.options.color = self._color.toString();
|
312 |
-
|
313 |
-
// prep 'em for re-use
|
314 |
-
self.controls = {
|
315 |
-
square: self.picker.find( '.iris-square' ),
|
316 |
-
squareDrag: self.picker.find( '.iris-square-value' ),
|
317 |
-
horiz: self.picker.find( '.iris-square-horiz' ),
|
318 |
-
vert: self.picker.find( '.iris-square-vert' ),
|
319 |
-
strip: self.picker.find( '.iris-strip' ),
|
320 |
-
stripSlider: self.picker.find( '.iris-strip .iris-slider-offset' )
|
321 |
-
};
|
322 |
-
|
323 |
-
// small sanity check - if we chose hsv, change default controls away from hsl
|
324 |
-
if ( self.options.mode === 'hsv' && self._has('l', self.options.controls) ) {
|
325 |
-
self.options.controls = self._defaultHSVControls;
|
326 |
-
} else if ( self.options.mode === 'hsl' && self._has('v', self.options.controls) ) {
|
327 |
-
self.options.controls = self._defaultHSLControls;
|
328 |
-
}
|
329 |
-
|
330 |
-
// store it. HSL gets squirrely
|
331 |
-
self.hue = self._color.h();
|
332 |
-
|
333 |
-
if ( self.options.hide ) {
|
334 |
-
self.picker.hide();
|
335 |
-
}
|
336 |
-
|
337 |
-
if ( self.options.border ) {
|
338 |
-
self.picker.addClass( 'iris-border' );
|
339 |
-
}
|
340 |
-
|
341 |
-
self._initControls();
|
342 |
-
self.active = 'external';
|
343 |
-
self._dimensions();
|
344 |
-
self._change();
|
345 |
-
},
|
346 |
-
_has: function(needle, haystack) {
|
347 |
-
var ret = false;
|
348 |
-
$.each(haystack, function(i,v){
|
349 |
-
if ( needle === v ) {
|
350 |
-
ret = true;
|
351 |
-
// exit the loop
|
352 |
-
return false;
|
353 |
-
}
|
354 |
-
});
|
355 |
-
return ret;
|
356 |
-
},
|
357 |
-
_addPalettes: function () {
|
358 |
-
var container = $( '<div class="iris-palette-container" />' ),
|
359 |
-
palette = $( '<a class="iris-palette" tabindex="0" />' ),
|
360 |
-
colors = $.isArray( this.options.palettes ) ? this.options.palettes : this._palettes;
|
361 |
-
|
362 |
-
// do we have an existing container? Empty and reuse it.
|
363 |
-
if ( this.picker.find( '.iris-palette-container' ).length ) {
|
364 |
-
container = this.picker.find( '.iris-palette-container' ).detach().html( '' );
|
365 |
-
}
|
366 |
-
|
367 |
-
$.each(colors, function(index, val) {
|
368 |
-
palette.clone().data( 'color', val )
|
369 |
-
.css( 'backgroundColor', val ).appendTo( container )
|
370 |
-
.height( 10 ).width( 10 );
|
371 |
-
});
|
372 |
-
|
373 |
-
this.picker.append(container);
|
374 |
-
},
|
375 |
-
_paint: function() {
|
376 |
-
var self = this;
|
377 |
-
self._paintDimension( 'top', 'strip' );
|
378 |
-
self._paintDimension( 'top', 'vert' );
|
379 |
-
self._paintDimension( 'left', 'horiz' );
|
380 |
-
},
|
381 |
-
_paintDimension: function( origin, control ) {
|
382 |
-
var self = this,
|
383 |
-
c = self._color,
|
384 |
-
mode = self.options.mode,
|
385 |
-
color = self._getHSpaceColor(),
|
386 |
-
target = self.controls[ control ],
|
387 |
-
controlOpts = self.options.controls,
|
388 |
-
stops;
|
389 |
-
|
390 |
-
// don't paint the active control
|
391 |
-
if ( control === self.active || ( self.active === 'square' && control !== 'strip' ) ) {
|
392 |
-
return;
|
393 |
-
}
|
394 |
-
|
395 |
-
switch ( controlOpts[ control ] ) {
|
396 |
-
case 'h':
|
397 |
-
if ( mode === 'hsv' ) {
|
398 |
-
color = c.clone();
|
399 |
-
switch ( control ) {
|
400 |
-
case 'horiz':
|
401 |
-
color[controlOpts.vert](100);
|
402 |
-
break;
|
403 |
-
case 'vert':
|
404 |
-
color[controlOpts.horiz](100);
|
405 |
-
break;
|
406 |
-
case 'strip':
|
407 |
-
color.setHSpace('hsl');
|
408 |
-
break;
|
409 |
-
}
|
410 |
-
stops = color.toHsl();
|
411 |
-
} else {
|
412 |
-
if ( control === 'strip' ) {
|
413 |
-
stops = { s: color.s, l: color.l };
|
414 |
-
} else {
|
415 |
-
stops = { s: 100, l: color.l };
|
416 |
-
}
|
417 |
-
}
|
418 |
-
|
419 |
-
target.factoryBootstrap330_raninbowGradient( origin, stops );
|
420 |
-
break;
|
421 |
-
case 's':
|
422 |
-
if ( mode === 'hsv' ) {
|
423 |
-
if ( control === 'vert' ) {
|
424 |
-
stops = [ c.clone().a(0).s(0).toCSS('rgba'), c.clone().a(1).s(0).toCSS('rgba') ];
|
425 |
-
} else if ( control === 'strip' ) {
|
426 |
-
stops = [ c.clone().s(100).toCSS('hsl'), c.clone().s(0).toCSS('hsl') ];
|
427 |
-
} else if ( control === 'horiz' ) {
|
428 |
-
stops = [ '#fff', 'hsl(' + color.h + ',100%,50%)' ];
|
429 |
-
}
|
430 |
-
} else { // implicit mode === 'hsl'
|
431 |
-
if ( control === 'vert' && self.options.controls.horiz === 'h' ) {
|
432 |
-
stops = ['hsla(0, 0%, ' + color.l + '%, 0)', 'hsla(0, 0%, ' + color.l + '%, 1)'];
|
433 |
-
} else {
|
434 |
-
stops = ['hsl('+ color.h +',0%,50%)', 'hsl(' + color.h + ',100%,50%)'];
|
435 |
-
}
|
436 |
-
}
|
437 |
-
|
438 |
-
|
439 |
-
target.factoryBootstrap330_gradient( origin, stops );
|
440 |
-
break;
|
441 |
-
case 'l':
|
442 |
-
if ( control === 'strip' ) {
|
443 |
-
stops = ['hsl(' + color.h + ',100%,100%)', 'hsl(' + color.h + ', ' + color.s + '%,50%)', 'hsl('+ color.h +',100%,0%)'];
|
444 |
-
} else {
|
445 |
-
stops = ['#fff', 'rgba(255,255,255,0) 50%', 'rgba(0,0,0,0) 50%', 'rgba(0,0,0,1)'];
|
446 |
-
}
|
447 |
-
target.factoryBootstrap330_gradient( origin, stops );
|
448 |
-
break;
|
449 |
-
case 'v':
|
450 |
-
if ( control === 'strip' ) {
|
451 |
-
stops = [ c.clone().v(100).toCSS(), c.clone().v(0).toCSS() ];
|
452 |
-
} else {
|
453 |
-
stops = ['rgba(0,0,0,0)', '#000'];
|
454 |
-
}
|
455 |
-
target.factoryBootstrap330_gradient( origin, stops );
|
456 |
-
break;
|
457 |
-
default:
|
458 |
-
break;
|
459 |
-
}
|
460 |
-
},
|
461 |
-
|
462 |
-
_getHSpaceColor: function() {
|
463 |
-
return ( this.options.mode === 'hsv' ) ? this._color.toHsv() : this._color.toHsl();
|
464 |
-
},
|
465 |
-
|
466 |
-
_dimensions: function( reset ) {
|
467 |
-
// whatever size
|
468 |
-
var self = this,
|
469 |
-
opts = self.options,
|
470 |
-
controls = self.controls,
|
471 |
-
square = controls.square,
|
472 |
-
strip = self.picker.find( '.iris-strip' ),
|
473 |
-
squareWidth = '77.5%',
|
474 |
-
stripWidth = '12%',
|
475 |
-
totalPadding = 20,
|
476 |
-
innerWidth = opts.border ? opts.width - totalPadding : opts.width,
|
477 |
-
controlsHeight,
|
478 |
-
paletteCount = $.isArray( opts.palettes ) ? opts.palettes.length : self._palettes.length,
|
479 |
-
paletteMargin, paletteWidth, paletteContainerWidth;
|
480 |
-
|
481 |
-
if ( reset ) {
|
482 |
-
square.css( 'width', '' );
|
483 |
-
strip.css( 'width', '' );
|
484 |
-
self.picker.css( {width: '', height: ''} );
|
485 |
-
}
|
486 |
-
|
487 |
-
squareWidth = innerWidth * ( parseFloat( squareWidth ) / 100 );
|
488 |
-
stripWidth = innerWidth * ( parseFloat( stripWidth ) / 100 );
|
489 |
-
controlsHeight = opts.border ? squareWidth + totalPadding : squareWidth;
|
490 |
-
|
491 |
-
square.width( squareWidth ).height( squareWidth );
|
492 |
-
strip.height( squareWidth ).width( stripWidth );
|
493 |
-
self.picker.css( { width: opts.width, height: controlsHeight } );
|
494 |
-
|
495 |
-
if ( ! opts.palettes ) {
|
496 |
-
return self.picker.css( 'paddingBottom', '' );
|
497 |
-
}
|
498 |
-
|
499 |
-
// single margin at 2%
|
500 |
-
paletteMargin = squareWidth * 2 / 100;
|
501 |
-
paletteContainerWidth = squareWidth - ( ( paletteCount - 1 ) * paletteMargin );
|
502 |
-
paletteWidth = paletteContainerWidth / paletteCount;
|
503 |
-
self.picker.find('.iris-palette').each( function( i ) {
|
504 |
-
var margin = i === 0 ? 0 : paletteMargin;
|
505 |
-
$( this ).css({
|
506 |
-
width: paletteWidth,
|
507 |
-
height: paletteWidth,
|
508 |
-
marginLeft: margin
|
509 |
-
});
|
510 |
-
});
|
511 |
-
self.picker.css( 'paddingBottom', paletteWidth + paletteMargin );
|
512 |
-
strip.height( paletteWidth + paletteMargin + squareWidth );
|
513 |
-
},
|
514 |
-
|
515 |
-
_addInputListeners: function( input ) {
|
516 |
-
var self = this,
|
517 |
-
debounceTimeout = 100,
|
518 |
-
callback = function( event ){
|
519 |
-
var color = new Color( input.val() ),
|
520 |
-
val = input.val().replace( /^#/, '' );
|
521 |
-
|
522 |
-
input.removeClass( 'iris-error' );
|
523 |
-
// we gave a bad color
|
524 |
-
if ( color.error ) {
|
525 |
-
// don't error on an empty input - we want those allowed
|
526 |
-
if ( val !== '' ) {
|
527 |
-
input.addClass( 'iris-error' );
|
528 |
-
}
|
529 |
-
} else {
|
530 |
-
if ( color.toString() !== self._color.toString() ) {
|
531 |
-
// let's not do this on keyup for hex shortcodes
|
532 |
-
if ( ! ( event.type === 'keyup' && val.match( /^[0-9a-fA-F]{3}$/ ) ) ) {
|
533 |
-
self._setOption( 'color', color.toString() );
|
534 |
-
}
|
535 |
-
}
|
536 |
-
}
|
537 |
-
};
|
538 |
-
|
539 |
-
input.on( 'change', callback ).on( 'keyup', self._debounce( callback, debounceTimeout ) );
|
540 |
-
|
541 |
-
// If we initialized hidden, show on first focus. The rest is up to you.
|
542 |
-
if ( self.options.hide ) {
|
543 |
-
input.one( 'focus', function() {
|
544 |
-
self.show();
|
545 |
-
});
|
546 |
-
}
|
547 |
-
},
|
548 |
-
|
549 |
-
_initControls: function() {
|
550 |
-
var self = this,
|
551 |
-
controls = self.controls,
|
552 |
-
square = controls.square,
|
553 |
-
controlOpts = self.options.controls,
|
554 |
-
stripScale = self._scale[controlOpts.strip];
|
555 |
-
|
556 |
-
controls.stripSlider.slider({
|
557 |
-
orientation: 'vertical',
|
558 |
-
max: stripScale,
|
559 |
-
slide: function( event, ui ) {
|
560 |
-
self.active = 'strip';
|
561 |
-
// "reverse" for hue.
|
562 |
-
if ( controlOpts.strip === 'h' ) {
|
563 |
-
ui.value = stripScale - ui.value;
|
564 |
-
}
|
565 |
-
|
566 |
-
self._color[controlOpts.strip]( ui.value );
|
567 |
-
self._change.apply( self, arguments );
|
568 |
-
}
|
569 |
-
});
|
570 |
-
|
571 |
-
controls.squareDrag.draggable({
|
572 |
-
containment: 'parent',
|
573 |
-
zIndex: 1000,
|
574 |
-
cursor: 'move',
|
575 |
-
drag: function( event, ui ) {
|
576 |
-
self._squareDrag( event, ui );
|
577 |
-
},
|
578 |
-
start: function() {
|
579 |
-
square.addClass( 'iris-dragging' );
|
580 |
-
$(this).addClass( 'ui-state-focus' );
|
581 |
-
},
|
582 |
-
stop: function() {
|
583 |
-
square.removeClass( 'iris-dragging' );
|
584 |
-
$(this).removeClass( 'ui-state-focus' );
|
585 |
-
}
|
586 |
-
}).on( 'mousedown mouseup', function( event ) {
|
587 |
-
var focusClass = 'ui-state-focus';
|
588 |
-
event.preventDefault();
|
589 |
-
if (event.type === 'mousedown' ) {
|
590 |
-
self.picker.find( '.' + focusClass ).removeClass( focusClass ).blur();
|
591 |
-
$(this).addClass( focusClass ).focus();
|
592 |
-
} else {
|
593 |
-
$(this).removeClass( focusClass );
|
594 |
-
}
|
595 |
-
}).on( 'keydown', function( event ) {
|
596 |
-
var container = controls.square,
|
597 |
-
draggable = controls.squareDrag,
|
598 |
-
position = draggable.position(),
|
599 |
-
distance = self.options.width / 100; // Distance in pixels the draggable should be moved: 1 "stop"
|
600 |
-
|
601 |
-
// make alt key go "10"
|
602 |
-
if ( event.altKey ) {
|
603 |
-
distance *= 10;
|
604 |
-
}
|
605 |
-
|
606 |
-
// Reposition if one of the directional keys is pressed
|
607 |
-
switch ( event.keyCode ) {
|
608 |
-
case 37: position.left -= distance; break; // Left
|
609 |
-
case 38: position.top -= distance; break; // Up
|
610 |
-
case 39: position.left += distance; break; // Right
|
611 |
-
case 40: position.top += distance; break; // Down
|
612 |
-
default: return true; // Exit and bubble
|
613 |
-
}
|
614 |
-
|
615 |
-
// Keep draggable within container
|
616 |
-
position.left = Math.max( 0, Math.min( position.left, container.width() ) );
|
617 |
-
position.top = Math.max( 0, Math.min( position.top, container.height() ) );
|
618 |
-
|
619 |
-
draggable.css(position);
|
620 |
-
self._squareDrag( event, { position: position });
|
621 |
-
event.preventDefault();
|
622 |
-
});
|
623 |
-
|
624 |
-
// allow clicking on the square to move there and keep dragging
|
625 |
-
square.mousedown( function( event ) {
|
626 |
-
var squareOffset, pos;
|
627 |
-
// only left click
|
628 |
-
if ( event.which !== 1 ) {
|
629 |
-
return;
|
630 |
-
}
|
631 |
-
|
632 |
-
// prevent bubbling from the handle: no infinite loops
|
633 |
-
if ( ! $( event.target ).is( 'div' ) ) {
|
634 |
-
return;
|
635 |
-
}
|
636 |
-
|
637 |
-
squareOffset = self.controls.square.offset();
|
638 |
-
pos = {
|
639 |
-
top: event.pageY - squareOffset.top,
|
640 |
-
left: event.pageX - squareOffset.left
|
641 |
-
};
|
642 |
-
event.preventDefault();
|
643 |
-
self._squareDrag( event, { position: pos } );
|
644 |
-
event.target = self.controls.squareDrag.get(0);
|
645 |
-
self.controls.squareDrag.css( pos ).trigger( event );
|
646 |
-
});
|
647 |
-
|
648 |
-
// palettes
|
649 |
-
if ( self.options.palettes ) {
|
650 |
-
self._paletteListeners();
|
651 |
-
}
|
652 |
-
},
|
653 |
-
|
654 |
-
_paletteListeners: function() {
|
655 |
-
var self = this;
|
656 |
-
self.picker.find('.iris-palette-container').on('click.palette', '.iris-palette', function() {
|
657 |
-
self._color.fromCSS( $(this).data('color') );
|
658 |
-
self.active = 'external';
|
659 |
-
self._change();
|
660 |
-
}).on( 'keydown.palette', '.iris-palette', function( event ) {
|
661 |
-
if ( ! ( event.keyCode === 13 || event.keyCode === 32 ) ) {
|
662 |
-
return true;
|
663 |
-
}
|
664 |
-
event.stopPropagation();
|
665 |
-
$( this ).click();
|
666 |
-
});
|
667 |
-
},
|
668 |
-
|
669 |
-
_squareDrag: function( event, ui ) {
|
670 |
-
var self = this,
|
671 |
-
controlOpts = self.options.controls,
|
672 |
-
dimensions = self._squareDimensions(),
|
673 |
-
vertVal = Math.round( ( dimensions.h - ui.position.top ) / dimensions.h * self._scale[controlOpts.vert] ),
|
674 |
-
horizVal = self._scale[controlOpts.horiz] - Math.round( ( dimensions.w - ui.position.left ) / dimensions.w * self._scale[controlOpts.horiz] );
|
675 |
-
|
676 |
-
self._color[controlOpts.horiz]( horizVal )[controlOpts.vert]( vertVal );
|
677 |
-
|
678 |
-
self.active = 'square';
|
679 |
-
self._change.apply( self, arguments );
|
680 |
-
},
|
681 |
-
|
682 |
-
_setOption: function( key, value ) {
|
683 |
-
var self = this,
|
684 |
-
oldValue = self.options[key],
|
685 |
-
doDimensions = false,
|
686 |
-
hexLessColor,
|
687 |
-
newColor,
|
688 |
-
method;
|
689 |
-
|
690 |
-
// ensure the new value is set. We can reset to oldValue if some check wasn't met.
|
691 |
-
self.options[key] = value;
|
692 |
-
|
693 |
-
switch(key) {
|
694 |
-
case 'color':
|
695 |
-
// cast to string in case we have a number
|
696 |
-
value = '' + value;
|
697 |
-
hexLessColor = value.replace( /^#/, '' );
|
698 |
-
newColor = new Color( value ).setHSpace( self.options.mode );
|
699 |
-
if ( newColor.error ) {
|
700 |
-
self.options[key] = oldValue;
|
701 |
-
} else {
|
702 |
-
self._color = newColor;
|
703 |
-
self.options.color = self.options[key] = self._color.toString();
|
704 |
-
self.active = 'external';
|
705 |
-
self._change();
|
706 |
-
}
|
707 |
-
break;
|
708 |
-
case 'palettes':
|
709 |
-
doDimensions = true;
|
710 |
-
|
711 |
-
if ( value ) {
|
712 |
-
self._addPalettes();
|
713 |
-
} else {
|
714 |
-
self.picker.find('.iris-palette-container').remove();
|
715 |
-
}
|
716 |
-
|
717 |
-
// do we need to add events?
|
718 |
-
if ( ! oldValue ) {
|
719 |
-
self._paletteListeners();
|
720 |
-
}
|
721 |
-
break;
|
722 |
-
case 'width':
|
723 |
-
doDimensions = true;
|
724 |
-
break;
|
725 |
-
case 'border':
|
726 |
-
doDimensions = true;
|
727 |
-
method = value ? 'addClass' : 'removeClass';
|
728 |
-
self.picker[method]('iris-border');
|
729 |
-
break;
|
730 |
-
case 'mode':
|
731 |
-
case 'controls':
|
732 |
-
// if nothing's changed, let's bail, since this causes re-rendering the whole widget
|
733 |
-
if ( oldValue === value ) {
|
734 |
-
return;
|
735 |
-
}
|
736 |
-
|
737 |
-
// we're using these poorly named variables because they're already scoped.
|
738 |
-
// method is the element that Iris was called on. oldValue will be the options
|
739 |
-
method = self.element;
|
740 |
-
oldValue = self.options;
|
741 |
-
oldValue.hide = ! self.picker.is( ':visible' );
|
742 |
-
self.destroy();
|
743 |
-
self.picker.remove();
|
744 |
-
return $(self.element).iris(oldValue);
|
745 |
-
}
|
746 |
-
|
747 |
-
// Do we need to recalc dimensions?
|
748 |
-
if ( doDimensions ) {
|
749 |
-
self._dimensions(true);
|
750 |
-
}
|
751 |
-
},
|
752 |
-
|
753 |
-
_squareDimensions: function( forceRefresh ) {
|
754 |
-
var square = this.controls.square,
|
755 |
-
dimensions,
|
756 |
-
control;
|
757 |
-
|
758 |
-
if ( forceRefresh !== undef && square.data('dimensions') ) {
|
759 |
-
return square.data('dimensions');
|
760 |
-
}
|
761 |
-
|
762 |
-
control = this.controls.squareDrag;
|
763 |
-
dimensions = {
|
764 |
-
w: square.width(),
|
765 |
-
h: square.height()
|
766 |
-
};
|
767 |
-
square.data( 'dimensions', dimensions );
|
768 |
-
return dimensions;
|
769 |
-
},
|
770 |
-
|
771 |
-
_isNonHueControl: function( active, type ) {
|
772 |
-
if ( active === 'square' && this.options.controls.strip === 'h' ) {
|
773 |
-
return true;
|
774 |
-
} else if ( type === 'external' || ( type === 'h' && active === 'strip' ) ) {
|
775 |
-
return false;
|
776 |
-
}
|
777 |
-
|
778 |
-
return true;
|
779 |
-
},
|
780 |
-
|
781 |
-
_change: function() {
|
782 |
-
var self = this,
|
783 |
-
controls = self.controls,
|
784 |
-
color = self._getHSpaceColor(),
|
785 |
-
actions = [ 'square', 'strip' ],
|
786 |
-
controlOpts = self.options.controls,
|
787 |
-
type = controlOpts[self.active] || 'external',
|
788 |
-
oldHue = self.hue;
|
789 |
-
|
790 |
-
if ( self.active === 'strip' ) {
|
791 |
-
// take no action on any of the square sliders if we adjusted the strip
|
792 |
-
actions = [];
|
793 |
-
} else if ( self.active !== 'external' ) {
|
794 |
-
// for non-strip, non-external, strip should never change
|
795 |
-
actions.pop(); // conveniently the last item
|
796 |
-
}
|
797 |
-
|
798 |
-
$.each( actions, function(index, item) {
|
799 |
-
var value, dimensions, cssObj;
|
800 |
-
if ( item !== self.active ) {
|
801 |
-
switch ( item ) {
|
802 |
-
case 'strip':
|
803 |
-
// reverse for hue
|
804 |
-
value = ( controlOpts.strip === 'h' ) ? self._scale[controlOpts.strip] - color[controlOpts.strip] : color[controlOpts.strip];
|
805 |
-
controls.stripSlider.slider( 'value', value );
|
806 |
-
break;
|
807 |
-
case 'square':
|
808 |
-
dimensions = self._squareDimensions();
|
809 |
-
cssObj = {
|
810 |
-
left: color[controlOpts.horiz] / self._scale[controlOpts.horiz] * dimensions.w,
|
811 |
-
top: dimensions.h - ( color[controlOpts.vert] / self._scale[controlOpts.vert] * dimensions.h )
|
812 |
-
};
|
813 |
-
|
814 |
-
self.controls.squareDrag.css( cssObj );
|
815 |
-
break;
|
816 |
-
}
|
817 |
-
}
|
818 |
-
});
|
819 |
-
|
820 |
-
// Ensure that we don't change hue if we triggered a hue reset
|
821 |
-
if ( color.h !== oldHue && self._isNonHueControl( self.active, type ) ) {
|
822 |
-
self._color.h(oldHue);
|
823 |
-
}
|
824 |
-
|
825 |
-
// store hue for repeating above check next time
|
826 |
-
self.hue = self._color.h();
|
827 |
-
|
828 |
-
self.options.color = self._color.toString();
|
829 |
-
|
830 |
-
// only run after the first time
|
831 |
-
if ( self._inited ) {
|
832 |
-
self._trigger( 'change', { type: self.active }, { color: self._color } );
|
833 |
-
}
|
834 |
-
|
835 |
-
if ( self.element.is( ':input' ) && ! self._color.error ) {
|
836 |
-
self.element.removeClass( 'iris-error' );
|
837 |
-
if ( self.element.val() !== self._color.toString() ) {
|
838 |
-
self.element.val( self._color.toString() );
|
839 |
-
}
|
840 |
-
}
|
841 |
-
|
842 |
-
self._paint();
|
843 |
-
self._inited = true;
|
844 |
-
self.active = false;
|
845 |
-
},
|
846 |
-
// taken from underscore.js _.debounce method
|
847 |
-
_debounce: function( func, wait, immediate ) {
|
848 |
-
var timeout, result;
|
849 |
-
return function() {
|
850 |
-
var context = this,
|
851 |
-
args = arguments,
|
852 |
-
later,
|
853 |
-
callNow;
|
854 |
-
|
855 |
-
later = function() {
|
856 |
-
timeout = null;
|
857 |
-
if ( ! immediate) {
|
858 |
-
result = func.apply( context, args );
|
859 |
-
}
|
860 |
-
};
|
861 |
-
|
862 |
-
callNow = immediate && !timeout;
|
863 |
-
clearTimeout( timeout );
|
864 |
-
timeout = setTimeout( later, wait );
|
865 |
-
if ( callNow ) {
|
866 |
-
result = func.apply( context, args );
|
867 |
-
}
|
868 |
-
return result;
|
869 |
-
};
|
870 |
-
},
|
871 |
-
show: function() {
|
872 |
-
this.picker.show();
|
873 |
-
},
|
874 |
-
hide: function() {
|
875 |
-
this.picker.hide();
|
876 |
-
},
|
877 |
-
toggle: function() {
|
878 |
-
this.picker.toggle();
|
879 |
-
},
|
880 |
-
color: function(newColor) {
|
881 |
-
if ( newColor === true ) {
|
882 |
-
return this._color.clone();
|
883 |
-
} else if ( newColor === undef ) {
|
884 |
-
return this._color.toString();
|
885 |
-
}
|
886 |
-
this.option('color', newColor);
|
887 |
-
}
|
888 |
-
};
|
889 |
-
// initialize the widget
|
890 |
-
$.widget( 'a8c.factoryBootstrap330_iris', Iris );
|
891 |
-
// add CSS
|
892 |
-
$( '<style id="iris-css">' + _css + '</style>' ).appendTo( 'head' );
|
893 |
-
}( jQuery ));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/plugin.nouislider.js
DELETED
@@ -1,24 +0,0 @@
|
|
1 |
-
/*! $.noUiSlider - WTFPL - refreshless.com/nouislider/ */
|
2 |
-
(function(e){function h(a){throw new RangeError("noUiSlider: "+a);}function x(a,b,d){(a[b]||a[d])&&a[b]===a[d]&&h("(Link) '"+b+"' can't match '"+d+"'.'")}function t(a){return"number"===typeof a&&!isNaN(a)&&isFinite(a)}function H(a){return e.isArray(a)?a:[a]}function D(a,b){a.addClass(b);setTimeout(function(){a.removeClass(b)},300)}function y(a,b){return 100*b/(a[1]-a[0])}function I(a,b){if(b>=a.d.slice(-1)[0])return 100;for(var d=1,c,g,e;b>=a.d[d];)d++;c=a.d[d-1];g=a.d[d];e=a.c[d-1];c=[c,g];return e+
|
3 |
-
y(c,0>c[0]?b+Math.abs(c[0]):b-c[0])/(100/(a.c[d]-e))}function J(a,b){for(var d=1,c;b>=a.c[d];)d++;if(a.m)return c=a.c[d-1],d=a.c[d],b-c>(d-c)/2?d:c;a.h[d-1]?(c=a.h[d-1],d=a.c[d-1]+Math.round((b-a.c[d-1])/c)*c):d=b;return d}function s(a){void 0===a&&(a={});"object"!==typeof a&&h("(Format) 'format' option must be an object.");var b={};e(K).each(function(d,c){void 0===a[c]?b[c]=z[d]:typeof a[c]===typeof z[d]?("decimals"===c&&(0>a[c]||7<a[c])&&h("(Format) 'format.decimals' option must be between 0 and 7."),
|
4 |
-
b[c]=a[c]):h("(Format) 'format."+c+"' must be a "+typeof z[d]+".")});x(b,"mark","thousand");x(b,"prefix","negative");x(b,"prefix","negativeBefore");this.B=b}function q(a,b){if(!(this instanceof q))throw Error("Link: Don't use Link as a function. Use the 'new' keyword.");if(!a)throw new RangeError("Link: missing parameters.");this.g=a.format||{};this.update=!b;var d=this,c=a.target||function(){},g=a.method,f="string"===typeof c&&0===c.indexOf("-tooltip-"),h="string"===typeof c&&0!==c.indexOf("-"),
|
5 |
-
n="function"===typeof c,r=c instanceof e||e.zepto&&e.zepto.isZ(c),E=r&&c.is("input, select, textarea"),l=r&&"function"===typeof g,s=r&&"string"===typeof g&&c[g];if(f)this.method=g||"html",this.j=e(c.replace("-tooltip-","")||"<div/>")[0];else if(h)this.method="val",this.j=document.createElement("input"),this.j.name=c,this.j.type="hidden";else if(n)this.target=!1,this.method=c;else{if(r){if(g&&(l||s)){this.target=c;this.method=g;return}if(!g&&E){this.method="val";this.target=c;this.target.on("change",
|
6 |
-
function(a){a=e(a.target).val();var b=d.q;d.u.val([b?null:a,b?a:null],{link:d})});return}if(!g&&!E){this.method="html";this.target=c;return}}throw new RangeError("Link: Invalid Link.");}}function L(a,b){t(b)||h("'step' is not numeric.");a.h[0]=b}function M(a,b){("object"!==typeof b||e.isArray(b))&&h("'range' is not an object.");e.each(b,function(b,c){var g;"number"===typeof c&&(c=[c]);e.isArray(c)||h("'range' contains invalid value.");g="min"===b?0:"max"===b?100:parseFloat(b);t(g)&&t(c[0])||h("'range' value isn't numeric.");
|
7 |
-
a.c.push(g);a.d.push(c[0]);g?a.h.push(isNaN(c[1])?!1:c[1]):isNaN(c[1])||(a.h[0]=c[1])});e.each(a.h,function(b,c){if(!c)return!0;a.h[b]=y([a.d[b],a.d[b+1]],c)/(100/(a.c[b+1]-a.c[b]))})}function N(a,b){"number"===typeof b&&(b=[b]);(!e.isArray(b)||!b.length||2<b.length)&&h("'start' option is incorrect.");a.a=b.length;a.start=b}function O(a,b){a.m=b;"boolean"!==typeof b&&h("'snap' option must be a boolean.")}function P(a,b){"lower"===b&&1===a.a?a.i=1:"upper"===b&&1===a.a?a.i=2:!0===b&&2===a.a?a.i=3:!1===
|
8 |
-
b?a.i=0:h("'connect' option was doesn't match handle count.")}function Q(a,b){switch(b){case "horizontal":a.k=0;break;case "vertical":a.k=1;break;default:h("'orientation' option is invalid.")}}function R(a,b){2<a.c.length&&h("'margin' option is only supported on linear sliders.");a.margin=y(a.d,b);t(b)||h("'margin' option must be numeric.")}function S(a,b){switch(b){case "ltr":a.dir=0;break;case "rtl":a.dir=1;a.i=[0,2,1,3][a.i];break;default:h("'direction' option was not recognized.")}}function T(a,
|
9 |
-
b){"string"!==typeof b&&h("'behaviour' must be a string containing options.");var d=0<=b.indexOf("snap");a.n={p:0<=b.indexOf("tap")||d,extend:0<=b.indexOf("extend"),s:0<=b.indexOf("drag"),fixed:0<=b.indexOf("fixed"),m:d}}function U(a,b,d){a.o=[b.lower,b.upper];a.g=new s(b.format);e.each(a.o,function(a,g){e.isArray(g)||h("'serialization."+(a?"upper":"lower")+"' must be an array.");e.each(g,function(){this instanceof q||h("'serialization."+(a?"upper":"lower")+"' can only contain Link instances.");this.q=
|
10 |
-
a;this.u=d;this.scope=this.scope||d;this.g=new s(e.extend({},b.format,this.g))})});a.dir&&1<a.a&&a.o.reverse()}function V(a,b){var d={c:[],d:[],h:[!1],margin:0},c;c={step:{e:!1,f:L},range:{e:!0,f:M},start:{e:!0,f:N},snap:{e:!1,f:O},connect:{e:!0,f:P},orientation:{e:!1,f:Q},margin:{e:!1,f:R},direction:{e:!0,f:S},behaviour:{e:!0,f:T},serialization:{e:!0,f:U}};a=e.extend({connect:!1,direction:"ltr",behaviour:"tap",orientation:"horizontal"},a);a.serialization=e.extend({lower:[],upper:[],format:{}},a.serialization);
|
11 |
-
e.each(c,function(c,e){if(void 0===a[c])if(e.e)h("'"+c+"' is required.");else return!0;e.f(d,a[c],b)});d.style=d.k?"top":"left";return d}function W(a,b){var d=e("<div><div/></div>").addClass(f[2]),c=["-lower","-upper"];a.dir&&c.reverse();d.children().addClass(f[3]+" "+f[3]+c[b]);return d}function X(a,b){b.j&&(b=new q({target:e(b.j).clone().appendTo(a),method:b.method,format:b.g},!0));return b}function Y(a,b){var d,c=[];for(d=0;d<a.a;d++){var e=c,f=d,h=a.o[d],n=b[d].children(),r=void 0,l=[];l.push(new q({format:a.g},
|
12 |
-
!0));for(r=0;r<h.length;r++)l.push(X(n,h[r]));e[f]=l}return c}function Z(a,b,d){switch(a){case 1:b.addClass(f[7]);d[0].addClass(f[6]);break;case 3:d[1].addClass(f[6]);case 2:d[0].addClass(f[7]);case 0:b.addClass(f[6])}}function aa(a,b){var d,c=[];for(d=0;d<a.a;d++)c.push(W(a,d).appendTo(b));return c}function ba(a,b){b.addClass([f[0],f[8+a.dir],f[4+a.k]].join(" "));return e("<div/>").appendTo(b).addClass(f[1])}function ca(a,b,d){function c(){return u[["width","height"][b.k]]()}function g(a){var b,
|
13 |
-
c=[m.val()];for(b=0;b<a.length;b++)m.trigger(a[b],c)}function h(a,c,d){var g=a[0]!==k[0][0]?1:0,p=v[0]+b.margin,F=v[1]-b.margin;d&&1<k.length&&(c=g?Math.max(c,p):Math.min(c,F));100>c&&(c=J(b,c));c=Math.max(Math.min(parseFloat(c.toFixed(7)),100),0);if(c===v[g])return 1===k.length?!1:c===p||c===F?0:!1;a.css(b.style,c+"%");a.is(":first-child")&&a.toggleClass(f[17],50<c);v[g]=c;b.dir&&(c=100-c);e(w[g]).each(function(){this.write(b,c,a.children(),m)});return!0}function q(a,b,c){c||D(m,f[14]);h(a,b,!1);
|
14 |
-
g(["slide","set","change"])}function n(a,c,d,e){a=a.replace(/\s/g,".nui ")+".nui";c.on(a,function(a){var c=m.attr("disabled");if(m.hasClass(f[14])||void 0!==c&&null!==c)return!1;a.preventDefault();var c=0===a.type.indexOf("touch"),g=0===a.type.indexOf("mouse"),B=0===a.type.indexOf("pointer"),A,h,k=a;0===a.type.indexOf("MSPointer")&&(B=!0);a.originalEvent&&(a=a.originalEvent);c&&(A=a.changedTouches[0].pageX,h=a.changedTouches[0].pageY);if(g||B)B||void 0!==window.pageXOffset||(window.pageXOffset=document.documentElement.scrollLeft,
|
15 |
-
window.pageYOffset=document.documentElement.scrollTop),A=a.clientX+window.pageXOffset,h=a.clientY+window.pageYOffset;k.v=[A,h];k.cursor=g;a=k;a.l=a.v[b.k];d(a,e)})}function r(a,b){var d=b.a||k,e,f=!1,f=100*(a.l-b.start)/c(),m=d[0][0]!==k[0][0]?1:0;var n=b.w;e=f+n[0];f+=n[1];1<d.length?(0>e&&(f+=Math.abs(e)),100<f&&(e-=f-100),e=[Math.max(Math.min(e,100),0),Math.max(Math.min(f,100),0)]):e=[e,f];f=h(d[0],e[m],1===d.length);1<d.length&&(f=h(d[1],e[m?0:1],!1)||f);f&&g(["slide"])}function s(a){e("."+f[15]).removeClass(f[15]);
|
16 |
-
a.cursor&&e("body").css("cursor","").off(".nui");C.off(".nui");m.removeClass(f[12]);g(["set","change"])}function t(a,b){1===b.a.length&&b.a[0].children().addClass(f[15]);a.stopPropagation();n(l.move,C,r,{start:a.l,a:b.a,w:[v[0],v[k.length-1]]});n(l.end,C,s,null);a.cursor&&(e("body").css("cursor",e(a.target).css("cursor")),1<k.length&&m.addClass(f[12]),e("body").on("selectstart.nui",!1))}function x(a){var d=a.l,g=0;a.stopPropagation();e.each(k,function(){g+=this.offset()[b.style]});g=d<g/2||1===k.length?
|
17 |
-
0:1;d-=u.offset()[b.style];d=100*d/c();q(k[g],d,b.n.m);b.n.m&&t(a,{a:[k[g]]})}function y(a){var c=(a=a.l<u.offset()[b.style])?0:100;a=a?0:k.length-1;q(k[a],c,!1)}var m=e(a),v=[-1,-1],u,w,k;if(!m.is(":empty"))throw Error("Slider was already initialized.");u=ba(b,m);k=aa(b,u);w=Y(b,k);Z(b.i,m,k);(function(a){var b;if(!a.fixed)for(b=0;b<k.length;b++)n(l.start,k[b].children(),t,{a:[k[b]]});a.p&&n(l.start,u,x,{a:k});a.extend&&(m.addClass(f[16]),a.p&&n(l.start,m,y,{a:k}));a.s&&(b=u.find("."+f[7]).addClass(f[10]),
|
18 |
-
a.fixed&&(b=b.add(u.children().not(b).children())),n(l.start,b,t,{a:k}))})(b.n);a.F=function(a,c,d,n,p){var l;b.dir&&1<b.a&&a.reverse();p&&D(m,f[14]);for(l=0;l<(1<k.length?3:1);l++)p=d||w[l%2][0],p=p.valueOf(a[l%2]),!1!==p&&(p=I(b,p),b.dir&&(p=100-p),!0!==h(k[l%2],p,!0)&&e(w[l%2]).each(function(){this.write(b,v[l%2],k[l%2].children(),m,n)}));!0===c&&g(["set"])};a.D=function(){var a,c=[];for(a=0;a<b.a;a++)c[a]=w[a][0].A;return 1===c.length?c[0]:b.dir&&1<b.a?c.reverse():c};a.r=function(){e.each(w,function(){e.each(this,
|
19 |
-
function(){this.target&&this.target.off(".nui")})});e(this).off(".nui").removeClass(f.join(" ")).empty();return d};m.val(b.start)}function da(a){this.length||h("Can't initialize slider on empty selection.");var b=V(a,this);return this.each(function(){ca(this,b,a)})}function ea(a){return this.each(function(){var b=e(this).val(),d=this.r(),c=e.extend({},d,a);e(this).noUiSlider(c);d.start===c.start&&e(this).val(b)})}var C=e(document),G=e.fn.val,l=window.navigator.G?{start:"pointerdown",move:"pointermove",
|
20 |
-
end:"pointerup"}:window.navigator.msPointerEnabled?{start:"MSPointerDown",move:"MSPointerMove",end:"MSPointerUp"}:{start:"mousedown touchstart",move:"mousemove touchmove",end:"mouseup touchend"},f="noUi-target noUi-base noUi-origin noUi-handle noUi-horizontal noUi-vertical noUi-background noUi-connect noUi-ltr noUi-rtl noUi-dragable noUi-state-drag noUi-state-tap noUi-active noUi-extended noUi-stacking".split(" "),K="decimals mark thousand prefix postfix encoder decoder negative negativeBefore".split(" "),
|
21 |
-
z=[2,".","","","",function(a){return a},function(a){return a},"-",""];s.prototype.b=function(a){return this.B[a]};s.prototype.C=function(a){function b(a){return a.split("").reverse().join("")}a=this.b("encoder")(a);var d="",c="",e="",f="";0>a&&(d=this.b("negative"),c=this.b("negativeBefore"));a=Math.abs(a).toFixed(this.b("decimals")).toString();a=a.split(".");0===parseFloat(a)&&(a[0]="0");this.b("thousand")?(e=b(a[0]).match(/.{1,3}/g),e=b(e.join(b(this.b("thousand"))))):e=a[0];this.b("mark")&&1<a.length&&
|
22 |
-
(f=this.b("mark")+a[1]);return c+this.b("prefix")+d+e+f+this.b("postfix")};s.prototype.t=function(a){function b(a){return a.replace(/[\-\/\\\^$*+?.()|\[\]{}]/g,"\\$&")}var d;if(null===a||void 0===a)return!1;a=a.toString();d=a.replace(RegExp("^"+b(this.b("negativeBefore"))),"");a!==d?(a=d,d="-"):d="";a=a.replace(RegExp("^"+b(this.b("prefix"))),"");this.b.negative&&(d="",a=a.replace(RegExp("^"+b(this.b("negative"))),"-"));a=a.replace(RegExp(b(this.b("postfix"))+"$"),"").replace(RegExp(b(this.b("thousand")),
|
23 |
-
"g"),"").replace(this.b("mark"),".");a=this.b("decoder")(parseFloat(d+a));return isNaN(a)?!1:a};q.prototype.write=function(a,b,d,c,e){if(!this.update||!1!==e){if(100<=b)b=a.d.slice(-1)[0];else{e=1;for(var f,h,l;b>=a.c[e];)e++;f=a.d[e-1];h=a.d[e];l=a.c[e-1];f=[f,h];b=100/(a.c[e]-l)*(b-l)*(f[1]-f[0])/100+f[0]}this.A=b=this.format(b);if("function"===typeof this.method)this.method.call(this.target[0]||c[0],b,d,c);else this.target[this.method](b,d,c)}};q.prototype.format=function(a){return this.g.C(a)};
|
24 |
-
q.prototype.valueOf=function(a){return this.g.t(a)};e.noUiSlider={Link:q};e.fn.noUiSlider=function(a,b){return(b?ea:da).call(this,a)};e.fn.val=function(){var a=Array.prototype.slice.call(arguments,0),b,d,c,g;if(!a.length)return this.hasClass(f[0])?this[0].D():G.apply(this);"object"===typeof a[1]?(b=a[1].set,d=a[1].link,c=a[1].update,g=a[1].animate):!0===a[1]&&(b=!0);return this.each(function(){e(this).hasClass(f[0])?this.F(H(a[0]),b,d,c,g):G.apply(e(this),a)})}})(window.jQuery||window.Zepto);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/js/plugin.paddings-editor.js
DELETED
@@ -1,254 +0,0 @@
|
|
1 |
-
( function( $ ){
|
2 |
-
|
3 |
-
var PaddingsEditor = function (element) {
|
4 |
-
this.$element = $(element);
|
5 |
-
this.$rectangle = this.$element.find(".factory-rectangle");
|
6 |
-
this.$center = this.$element.find(".factory-side-center");
|
7 |
-
this.$bar = this.$element.find(".factory-bar");
|
8 |
-
this.$sides = this.$element.find(".factory-side");
|
9 |
-
this.$result = this.$element.find(".factory-result");
|
10 |
-
|
11 |
-
this.units = this.$element.data('units');
|
12 |
-
this.rangeStart = this.$element.data('range-start');
|
13 |
-
this.rangeEnd = this.$element.data('range-end');
|
14 |
-
this.step = this.$element.data('step');
|
15 |
-
|
16 |
-
this._createCanvas();
|
17 |
-
this._createSlider();
|
18 |
-
this._initMouse();
|
19 |
-
|
20 |
-
this.selectSide('center');
|
21 |
-
};
|
22 |
-
|
23 |
-
/**
|
24 |
-
* Creates canvas for drawing control.
|
25 |
-
*/
|
26 |
-
PaddingsEditor.prototype._createCanvas = function() {
|
27 |
-
var self = this;
|
28 |
-
|
29 |
-
this._recalculateSizes();
|
30 |
-
this.$canvas = $("<canvas width='" + self.elementWidth + "' height='" + self.elementHeight + "'>")
|
31 |
-
.appendTo(this.$rectangle);
|
32 |
-
|
33 |
-
this.canvasContext = this.$canvas.get(0).getContext('2d');
|
34 |
-
|
35 |
-
this._redraw();
|
36 |
-
};
|
37 |
-
|
38 |
-
/**
|
39 |
-
* Creates slider.
|
40 |
-
*/
|
41 |
-
PaddingsEditor.prototype._createSlider = function() {
|
42 |
-
var self = this;
|
43 |
-
|
44 |
-
this.$bar.noUiSlider({
|
45 |
-
start: parseInt( self.$center.data('value') ),
|
46 |
-
range: {'min': self.rangeStart, 'max': self.rangeEnd },
|
47 |
-
step: self.step
|
48 |
-
});
|
49 |
-
|
50 |
-
this.$bar.on('slide', function(){
|
51 |
-
var value = parseInt( self.$bar.val() );
|
52 |
-
var valueWithUnits = value + self.units;
|
53 |
-
|
54 |
-
if ( self.activeSide === 'center' ) {
|
55 |
-
self.$sides.data('value', value);
|
56 |
-
self.$sides.find(".factory-visible-value").text( valueWithUnits );
|
57 |
-
} else {
|
58 |
-
self.$activeSide.data('value', value);
|
59 |
-
self.$activeSide.find(".factory-visible-value").text( valueWithUnits );
|
60 |
-
}
|
61 |
-
});
|
62 |
-
|
63 |
-
this.$bar.on('set', function(){
|
64 |
-
self.$result.val( self.getValue() );
|
65 |
-
self.$result.trigger('change');
|
66 |
-
});
|
67 |
-
};
|
68 |
-
|
69 |
-
/**
|
70 |
-
* Returns a current value.
|
71 |
-
*/
|
72 |
-
PaddingsEditor.prototype.getValue = function() {
|
73 |
-
var topValue = this.$element.find(".factory-side-top").data('value');
|
74 |
-
var rightValue = this.$element.find(".factory-side-right").data('value');
|
75 |
-
var bottomValue = this.$element.find(".factory-side-bottom").data('value');
|
76 |
-
var leftValue = this.$element.find(".factory-side-left").data('value');
|
77 |
-
return topValue + this.units + " " + rightValue + this.units + " " + bottomValue + this.units + " " + leftValue + this.units;
|
78 |
-
}
|
79 |
-
|
80 |
-
/**
|
81 |
-
* Selects a given side by its name.
|
82 |
-
*/
|
83 |
-
PaddingsEditor.prototype.selectSide = function( side ) {
|
84 |
-
if ( this.activeSide === side ) return;
|
85 |
-
|
86 |
-
this.activeSide = side;
|
87 |
-
this.$activeSide = this.$element.find(".factory-side-" + this.activeSide);
|
88 |
-
|
89 |
-
this.$element.find(".factory-side.factory-active").removeClass("factory-active");
|
90 |
-
this.$activeSide.addClass("factory-active");
|
91 |
-
|
92 |
-
this._redraw();
|
93 |
-
this.$bar.val( this.$activeSide.data('value') );
|
94 |
-
}
|
95 |
-
|
96 |
-
PaddingsEditor.prototype._initMouse = function() {
|
97 |
-
var self = this;
|
98 |
-
|
99 |
-
this._recalculateSizes();
|
100 |
-
|
101 |
-
this.$rectangle.on('mousemove.paddings-editor', function(e){
|
102 |
-
self.hoveredSide = self._getCurrentSide(e.pageX, e.pageY);
|
103 |
-
|
104 |
-
if ( self.hoveredSide === self.lastHoveredSide ) return;
|
105 |
-
self.lastHoveredSide = self.hoveredSide;
|
106 |
-
|
107 |
-
self._redraw();
|
108 |
-
});
|
109 |
-
|
110 |
-
this.$rectangle.on('mouseleave.paddings-editor', function(e){
|
111 |
-
self.hoveredSide = self.lastHoveredSide = null;
|
112 |
-
self._redraw();
|
113 |
-
});
|
114 |
-
|
115 |
-
this.$rectangle.on('click.paddings-editor', function(e){
|
116 |
-
var side = self._getCurrentSide(e.pageX, e.pageY);
|
117 |
-
self.selectSide( side );
|
118 |
-
});
|
119 |
-
};
|
120 |
-
|
121 |
-
/**
|
122 |
-
* Returns a current side by mouse pointer position.
|
123 |
-
*/
|
124 |
-
PaddingsEditor.prototype._getCurrentSide = function(pageX, pageY) {
|
125 |
-
var offset = this.$element.offset();
|
126 |
-
|
127 |
-
var offsetX = pageX - offset.left;
|
128 |
-
var offsetY = pageY - offset.top;
|
129 |
-
|
130 |
-
var dX = offsetX - this.centerX;
|
131 |
-
var dY = offsetY - this.centerY;
|
132 |
-
var dL = Math.sqrt ( Math.pow(dX,2) + Math.pow(dY,2) );
|
133 |
-
if ( dL <= this.centerR ) return "center";
|
134 |
-
|
135 |
-
// for line #1 (from bottom-left corner to top-right conner)
|
136 |
-
var a1 = this.elementHeight;
|
137 |
-
var b1 = this.elementWidth;
|
138 |
-
var c1 = -this.elementWidth * this.elementHeight;
|
139 |
-
|
140 |
-
var resultY1 = - ( c1 + a1 * offsetX ) / b1;
|
141 |
-
|
142 |
-
// for line #2 (from bottom-left corner to top-right conner)
|
143 |
-
var a2 = -this.elementHeight;
|
144 |
-
var b2 = this.elementWidth;
|
145 |
-
var c2 = 0;
|
146 |
-
|
147 |
-
var resultY2 = - ( c2 + a2 * offsetX ) / b2;
|
148 |
-
|
149 |
-
if ( resultY1 < offsetY && resultY2 > offsetY ) return "right";
|
150 |
-
if ( resultY1 > offsetY && resultY2 < offsetY ) return "left";
|
151 |
-
if ( resultY1 > offsetY && resultY2 > offsetY ) return "top";
|
152 |
-
if ( resultY1 < offsetY && resultY2 < offsetY ) return "bottom";
|
153 |
-
return null;
|
154 |
-
}
|
155 |
-
|
156 |
-
/**
|
157 |
-
* Redraws the canvas.
|
158 |
-
*/
|
159 |
-
PaddingsEditor.prototype._redraw = function() {
|
160 |
-
this.canvasContext.clearRect ( 0, 0, this.elementWidth, this.elementHeight );
|
161 |
-
|
162 |
-
this._highlightSide('top', '#a6b6b6');
|
163 |
-
this._highlightSide('bottom', '#a6b6b6');
|
164 |
-
this._highlightSide('left', '#aec0c0');
|
165 |
-
this._highlightSide('right', '#aec0c0');
|
166 |
-
|
167 |
-
this._highlightSide(this.hoveredSide, '#c0cece');
|
168 |
-
if ( this.activeSide ) this._highlightSide(this.activeSide, '#829595');
|
169 |
-
}
|
170 |
-
|
171 |
-
/**
|
172 |
-
* Hightlights hovered area.
|
173 |
-
*/
|
174 |
-
PaddingsEditor.prototype._highlightSide = function( side, style ) {
|
175 |
-
|
176 |
-
if ( !side ) return;
|
177 |
-
if ( side === 'center' ) return;
|
178 |
-
|
179 |
-
this.canvasContext.fillStyle = style;
|
180 |
-
this.canvasContext.beginPath();
|
181 |
-
|
182 |
-
if ( 'top' === side ) {
|
183 |
-
|
184 |
-
this.canvasContext.moveTo(0, 0);
|
185 |
-
this.canvasContext.lineTo(this.centerX, this.centerY);
|
186 |
-
this.canvasContext.lineTo(this.elementWidth, 0);
|
187 |
-
|
188 |
-
} else if ( 'bottom' === side ) {
|
189 |
-
|
190 |
-
this.canvasContext.moveTo(0, this.elementHeight);
|
191 |
-
this.canvasContext.lineTo(this.centerX, this.centerY);
|
192 |
-
this.canvasContext.lineTo(this.elementWidth, this.elementHeight);
|
193 |
-
|
194 |
-
} else if ( 'left' === side ) {
|
195 |
-
|
196 |
-
this.canvasContext.moveTo(0, 0);
|
197 |
-
this.canvasContext.lineTo(this.centerX, this.centerY);
|
198 |
-
this.canvasContext.lineTo(0, this.elementHeight);
|
199 |
-
|
200 |
-
} else if ( 'right' === side ) {
|
201 |
-
|
202 |
-
this.canvasContext.moveTo(this.elementWidth, 0);
|
203 |
-
this.canvasContext.lineTo(this.centerX, this.centerY);
|
204 |
-
this.canvasContext.lineTo(this.elementWidth, this.elementHeight);
|
205 |
-
}
|
206 |
-
|
207 |
-
this.canvasContext.closePath();
|
208 |
-
this.canvasContext.fill();
|
209 |
-
};
|
210 |
-
|
211 |
-
PaddingsEditor.prototype._recalculateSizes = function() {
|
212 |
-
|
213 |
-
this.elementOffset = this.$element.offset();
|
214 |
-
this.elementWidth = this.$rectangle.innerWidth();
|
215 |
-
this.elementHeight = this.$rectangle.innerHeight();
|
216 |
-
this.centerSize = this.$center.innerWidth();
|
217 |
-
|
218 |
-
this.centerR = this.centerSize / 2;
|
219 |
-
this.centerX = this.elementWidth / 2;
|
220 |
-
this.centerY = this.elementHeight / 2;
|
221 |
-
}
|
222 |
-
|
223 |
-
// INTEGER CONTROL DEFINITION
|
224 |
-
// ================================
|
225 |
-
|
226 |
-
$.fn.factoryBootstrap330_paddingsEditor = function (option) {
|
227 |
-
|
228 |
-
// call an method
|
229 |
-
if ( typeof option === "string" ) {
|
230 |
-
var data = $(this).data('factory.paddings-editor');
|
231 |
-
if ( !data ) return null;
|
232 |
-
return data[option]();
|
233 |
-
}
|
234 |
-
|
235 |
-
// creating an object
|
236 |
-
else {
|
237 |
-
return this.each(function () {
|
238 |
-
var $this = $(this);
|
239 |
-
var data = $this.data('factory.paddings-editor');
|
240 |
-
if (!data) $this.data('factory.paddings-editor', (data = new PaddingsEditor(this)));
|
241 |
-
});
|
242 |
-
}
|
243 |
-
};
|
244 |
-
|
245 |
-
$.fn.factoryBootstrap330_paddingsEditor.Constructor = PaddingsEditor;
|
246 |
-
|
247 |
-
// AUTO CREATING
|
248 |
-
// ================================
|
249 |
-
|
250 |
-
$(function(){
|
251 |
-
$(".factory-bootstrap-330 .factory-paddings-editor").factoryBootstrap330_paddingsEditor();
|
252 |
-
});
|
253 |
-
|
254 |
-
}( jQuery ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/clearfy/boot.php
CHANGED
@@ -9,24 +9,24 @@
|
|
9 |
* @since 1.0.0
|
10 |
*/
|
11 |
|
12 |
-
if( defined('
|
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 |
}
|
9 |
* @since 1.0.0
|
10 |
*/
|
11 |
|
12 |
+
if( defined('FACTORY_CLEARFY_102_LOADED') ) {
|
13 |
return;
|
14 |
}
|
15 |
+
define('FACTORY_CLEARFY_102_LOADED', true);
|
16 |
|
17 |
+
define('FACTORY_CLEARFY_102_DIR', dirname(__FILE__));
|
18 |
+
define('FACTORY_CLEARFY_102_URL', plugins_url(null, __FILE__));
|
19 |
|
20 |
+
load_plugin_textdomain('factory_clearfy_102', false, dirname(plugin_basename(__FILE__)) . '/langs');
|
21 |
|
22 |
+
require(FACTORY_CLEARFY_102_DIR . '/includes/functions.php');
|
23 |
+
require(FACTORY_CLEARFY_102_DIR . '/includes/class.configurate.php');
|
24 |
|
25 |
// module provides function only for the admin area
|
26 |
if( !is_admin() ) {
|
27 |
return;
|
28 |
}
|
29 |
|
30 |
+
if( defined('FACTORY_PAGES_324_LOADED') ) {
|
31 |
+
require(FACTORY_CLEARFY_102_DIR . '/pages/more-features.php');
|
32 |
}
|
libs/factory/clearfy/includes/class.configurate.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
/**
|
4 |
* Core plugin
|
5 |
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -7,7 +7,7 @@
|
|
7 |
* @version 1.0
|
8 |
*/
|
9 |
abstract class WbcrFactoryClearfy_Configurate {
|
10 |
-
|
11 |
public function __construct(Factory326_Plugin $plugin)
|
12 |
{
|
13 |
$this->plugin = $plugin;
|
@@ -30,4 +30,4 @@
|
|
30 |
{
|
31 |
return get_option($this->plugin->pluginName . '_' . $option_name, $default);
|
32 |
}
|
33 |
-
}
|
1 |
<?php
|
2 |
+
|
3 |
/**
|
4 |
* Core plugin
|
5 |
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
7 |
* @version 1.0
|
8 |
*/
|
9 |
abstract class WbcrFactoryClearfy_Configurate {
|
10 |
+
|
11 |
public function __construct(Factory326_Plugin $plugin)
|
12 |
{
|
13 |
$this->plugin = $plugin;
|
30 |
{
|
31 |
return get_option($this->plugin->pluginName . '_' . $option_name, $default);
|
32 |
}
|
33 |
+
}
|
libs/factory/clearfy/langs/{factory_clearfy_101-fr-FR.mo → factory_clearfy_102-fr-FR.mo}
RENAMED
File without changes
|
libs/factory/clearfy/langs/{factory_clearfy_101-fr-FR.po → factory_clearfy_102-fr-FR.po}
RENAMED
@@ -1,129 +1,129 @@
|
|
1 |
-
msgid ""
|
2 |
-
msgstr ""
|
3 |
-
"Project-Id-Version: clearfy\n"
|
4 |
-
"POT-Creation-Date: 2017-11-09 10:35+0300\n"
|
5 |
-
"PO-Revision-Date: 2017-11-09 13:50+0100\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: fr\n"
|
9 |
-
"MIME-Version: 1.0\n"
|
10 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
-
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"X-Generator: Poedit 2.0.4\n"
|
13 |
-
"X-Poedit-Basepath: ..\n"
|
14 |
-
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
15 |
-
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
16 |
-
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
-
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
|
18 |
-
"X-Poedit-SearchPath-0: .\n"
|
19 |
-
|
20 |
-
#: pages/more-features.php:29
|
21 |
-
msgid "More features (<b>free</b>)"
|
22 |
-
msgstr "Plus de fonctionnalités (<b>gratuit</b>)"
|
23 |
-
|
24 |
-
#: pages/more-features.php:36
|
25 |
-
msgid "install the ultimate version of the plugin for free!"
|
26 |
-
msgstr "installez la version ultime du plugin gratuitement!"
|
27 |
-
|
28 |
-
#: pages/more-features.php:47
|
29 |
-
msgid "Code cleaning"
|
30 |
-
msgstr "Nettoyage du code"
|
31 |
-
|
32 |
-
#: pages/more-features.php:49
|
33 |
-
msgid "Clears the source code of the page from unused code."
|
34 |
-
msgstr "Efface le code source de la page du code inutilisé."
|
35 |
-
|
36 |
-
#: pages/more-features.php:56
|
37 |
-
msgid "Improve SEO"
|
38 |
-
msgstr "Améliorer le référencement"
|
39 |
-
|
40 |
-
#: pages/more-features.php:58
|
41 |
-
msgid ""
|
42 |
-
"Removes duplicate pages, closes external links, changes the headers of the "
|
43 |
-
"server."
|
44 |
-
msgstr ""
|
45 |
-
"Supprime les pages en double, ferme les liens externes, modifie les en-têtes "
|
46 |
-
"du serveur."
|
47 |
-
|
48 |
-
#: pages/more-features.php:65
|
49 |
-
msgid "Site ptotection"
|
50 |
-
msgstr "Protection du site"
|
51 |
-
|
52 |
-
#: pages/more-features.php:67
|
53 |
-
msgid "Enables and disables features that improve the protection of your site."
|
54 |
-
msgstr ""
|
55 |
-
"Active et désactive les fonctionnalités qui améliorent la protection de "
|
56 |
-
"votre site."
|
57 |
-
|
58 |
-
#: pages/more-features.php:74
|
59 |
-
msgid "Disable comments"
|
60 |
-
msgstr "Désactiver les commentaires"
|
61 |
-
|
62 |
-
#: pages/more-features.php:76
|
63 |
-
msgid "Disables comments on the entire site or on specific pages."
|
64 |
-
msgstr ""
|
65 |
-
"Désactive les commentaires sur l'intégralité du site ou sur des pages "
|
66 |
-
"spécifiques."
|
67 |
-
|
68 |
-
#: pages/more-features.php:83
|
69 |
-
msgid "Manage updates"
|
70 |
-
msgstr "Gérer les mises à jour"
|
71 |
-
|
72 |
-
#: pages/more-features.php:85
|
73 |
-
msgid ""
|
74 |
-
"Enables or disables automatically updates for plugins, themes and core. It "
|
75 |
-
"is also possible\n"
|
76 |
-
"\t\t\t\t\t\t\tto disable all updates."
|
77 |
-
msgstr ""
|
78 |
-
"Active ou désactive automatiquement les mises à jour pour les plugins, les "
|
79 |
-
"thèmes et le core. C'est aussi possible\n"
|
80 |
-
"\t\t\t\t\t\t\tdésactiver toutes les mises à jour."
|
81 |
-
|
82 |
-
#: pages/more-features.php:93
|
83 |
-
msgid "Manage widgets"
|
84 |
-
msgstr "Gérer les widgets"
|
85 |
-
|
86 |
-
#: pages/more-features.php:95
|
87 |
-
msgid "Allows you to remove unused widgets."
|
88 |
-
msgstr "Vous permet de supprimer les widgets inutilisés."
|
89 |
-
|
90 |
-
#: pages/more-features.php:102
|
91 |
-
msgid "Speed Optimization"
|
92 |
-
msgstr "Optimisation de la vitesse"
|
93 |
-
|
94 |
-
#: pages/more-features.php:104
|
95 |
-
msgid ""
|
96 |
-
"Increases performance by disabling unused functions and reducing the number "
|
97 |
-
"of requests."
|
98 |
-
msgstr ""
|
99 |
-
"Augmente les performances en désactivant les fonctions inutilisées et en "
|
100 |
-
"réduisant le nombre de requêtes."
|
101 |
-
|
102 |
-
#: pages/more-features.php:111
|
103 |
-
msgid "Site privacy"
|
104 |
-
msgstr "Confidentialité du site"
|
105 |
-
|
106 |
-
#: pages/more-features.php:113
|
107 |
-
msgid ""
|
108 |
-
"Allows you to hide the version of the site and plugins. Allows you to hide "
|
109 |
-
"your\n"
|
110 |
-
"\t\t\t\t\t\t\tWordPress."
|
111 |
-
msgstr ""
|
112 |
-
"Vous permet de masquer la version du site et des plugins. Vous permet de "
|
113 |
-
"cacher votre\n"
|
114 |
-
"\t\t\t\t\t\t\tWordPress."
|
115 |
-
|
116 |
-
#: pages/more-features.php:121
|
117 |
-
msgid "Easy setup"
|
118 |
-
msgstr "Configuration facile"
|
119 |
-
|
120 |
-
#: pages/more-features.php:123
|
121 |
-
msgid ""
|
122 |
-
"In quick mode, you can easily configure the plugin according to your needs."
|
123 |
-
msgstr ""
|
124 |
-
"En mode rapide, vous pouvez facilement configurer le plugin en fonction de "
|
125 |
-
"vos besoins."
|
126 |
-
|
127 |
-
#: pages/more-features.php:130
|
128 |
-
msgid "Get the ultimate plugin 100% FREE"
|
129 |
-
msgstr "Obtenez le plugin ultime 100% GRATUIT"
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: clearfy\n"
|
4 |
+
"POT-Creation-Date: 2017-11-09 10:35+0300\n"
|
5 |
+
"PO-Revision-Date: 2017-11-09 13:50+0100\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: fr\n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"X-Generator: Poedit 2.0.4\n"
|
13 |
+
"X-Poedit-Basepath: ..\n"
|
14 |
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
15 |
+
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
16 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
|
18 |
+
"X-Poedit-SearchPath-0: .\n"
|
19 |
+
|
20 |
+
#: pages/more-features.php:29
|
21 |
+
msgid "More features (<b>free</b>)"
|
22 |
+
msgstr "Plus de fonctionnalités (<b>gratuit</b>)"
|
23 |
+
|
24 |
+
#: pages/more-features.php:36
|
25 |
+
msgid "install the ultimate version of the plugin for free!"
|
26 |
+
msgstr "installez la version ultime du plugin gratuitement!"
|
27 |
+
|
28 |
+
#: pages/more-features.php:47
|
29 |
+
msgid "Code cleaning"
|
30 |
+
msgstr "Nettoyage du code"
|
31 |
+
|
32 |
+
#: pages/more-features.php:49
|
33 |
+
msgid "Clears the source code of the page from unused code."
|
34 |
+
msgstr "Efface le code source de la page du code inutilisé."
|
35 |
+
|
36 |
+
#: pages/more-features.php:56
|
37 |
+
msgid "Improve SEO"
|
38 |
+
msgstr "Améliorer le référencement"
|
39 |
+
|
40 |
+
#: pages/more-features.php:58
|
41 |
+
msgid ""
|
42 |
+
"Removes duplicate pages, closes external links, changes the headers of the "
|
43 |
+
"server."
|
44 |
+
msgstr ""
|
45 |
+
"Supprime les pages en double, ferme les liens externes, modifie les en-têtes "
|
46 |
+
"du serveur."
|
47 |
+
|
48 |
+
#: pages/more-features.php:65
|
49 |
+
msgid "Site ptotection"
|
50 |
+
msgstr "Protection du site"
|
51 |
+
|
52 |
+
#: pages/more-features.php:67
|
53 |
+
msgid "Enables and disables features that improve the protection of your site."
|
54 |
+
msgstr ""
|
55 |
+
"Active et désactive les fonctionnalités qui améliorent la protection de "
|
56 |
+
"votre site."
|
57 |
+
|
58 |
+
#: pages/more-features.php:74
|
59 |
+
msgid "Disable comments"
|
60 |
+
msgstr "Désactiver les commentaires"
|
61 |
+
|
62 |
+
#: pages/more-features.php:76
|
63 |
+
msgid "Disables comments on the entire site or on specific pages."
|
64 |
+
msgstr ""
|
65 |
+
"Désactive les commentaires sur l'intégralité du site ou sur des pages "
|
66 |
+
"spécifiques."
|
67 |
+
|
68 |
+
#: pages/more-features.php:83
|
69 |
+
msgid "Manage updates"
|
70 |
+
msgstr "Gérer les mises à jour"
|
71 |
+
|
72 |
+
#: pages/more-features.php:85
|
73 |
+
msgid ""
|
74 |
+
"Enables or disables automatically updates for plugins, themes and core. It "
|
75 |
+
"is also possible\n"
|
76 |
+
"\t\t\t\t\t\t\tto disable all updates."
|
77 |
+
msgstr ""
|
78 |
+
"Active ou désactive automatiquement les mises à jour pour les plugins, les "
|
79 |
+
"thèmes et le core. C'est aussi possible\n"
|
80 |
+
"\t\t\t\t\t\t\tdésactiver toutes les mises à jour."
|
81 |
+
|
82 |
+
#: pages/more-features.php:93
|
83 |
+
msgid "Manage widgets"
|
84 |
+
msgstr "Gérer les widgets"
|
85 |
+
|
86 |
+
#: pages/more-features.php:95
|
87 |
+
msgid "Allows you to remove unused widgets."
|
88 |
+
msgstr "Vous permet de supprimer les widgets inutilisés."
|
89 |
+
|
90 |
+
#: pages/more-features.php:102
|
91 |
+
msgid "Speed Optimization"
|
92 |
+
msgstr "Optimisation de la vitesse"
|
93 |
+
|
94 |
+
#: pages/more-features.php:104
|
95 |
+
msgid ""
|
96 |
+
"Increases performance by disabling unused functions and reducing the number "
|
97 |
+
"of requests."
|
98 |
+
msgstr ""
|
99 |
+
"Augmente les performances en désactivant les fonctions inutilisées et en "
|
100 |
+
"réduisant le nombre de requêtes."
|
101 |
+
|
102 |
+
#: pages/more-features.php:111
|
103 |
+
msgid "Site privacy"
|
104 |
+
msgstr "Confidentialité du site"
|
105 |
+
|
106 |
+
#: pages/more-features.php:113
|
107 |
+
msgid ""
|
108 |
+
"Allows you to hide the version of the site and plugins. Allows you to hide "
|
109 |
+
"your\n"
|
110 |
+
"\t\t\t\t\t\t\tWordPress."
|
111 |
+
msgstr ""
|
112 |
+
"Vous permet de masquer la version du site et des plugins. Vous permet de "
|
113 |
+
"cacher votre\n"
|
114 |
+
"\t\t\t\t\t\t\tWordPress."
|
115 |
+
|
116 |
+
#: pages/more-features.php:121
|
117 |
+
msgid "Easy setup"
|
118 |
+
msgstr "Configuration facile"
|
119 |
+
|
120 |
+
#: pages/more-features.php:123
|
121 |
+
msgid ""
|
122 |
+
"In quick mode, you can easily configure the plugin according to your needs."
|
123 |
+
msgstr ""
|
124 |
+
"En mode rapide, vous pouvez facilement configurer le plugin en fonction de "
|
125 |
+
"vos besoins."
|
126 |
+
|
127 |
+
#: pages/more-features.php:130
|
128 |
+
msgid "Get the ultimate plugin 100% FREE"
|
129 |
+
msgstr "Obtenez le plugin ultime 100% GRATUIT"
|
libs/factory/clearfy/langs/{factory_clearfy_101-ru_RU.mo → factory_clearfy_102-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/clearfy/langs/{factory_clearfy_101-ru_RU.po → factory_clearfy_102-ru_RU.po}
RENAMED
File without changes
|
libs/factory/clearfy/pages/more-features.php
CHANGED
@@ -5,13 +5,13 @@
|
|
5 |
*
|
6 |
* @since 1.0.0
|
7 |
*/
|
8 |
-
class
|
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
|
@@ -26,14 +26,14 @@
|
|
26 |
|
27 |
public function __construct(Factory326_Plugin $plugin)
|
28 |
{
|
29 |
-
$this->menuTitle = __('More features (<b>free</b>)', '
|
30 |
|
31 |
parent::__construct($plugin);
|
32 |
}
|
33 |
|
34 |
public function getPageTitle()
|
35 |
{
|
36 |
-
return __('install the ultimate version of the plugin for free!', '
|
37 |
}
|
38 |
|
39 |
public function showPageContent()
|
@@ -42,92 +42,92 @@
|
|
42 |
<div class="row">
|
43 |
<div class="col-sm-4">
|
44 |
<div class="wbcr-factory-feature-box">
|
45 |
-
<
|
46 |
|
47 |
-
<h3><?php _e('Code cleaning', '
|
48 |
|
49 |
-
<p><?php _e('Clears the source code of the page from unused code.', '
|
50 |
</div>
|
51 |
</div>
|
52 |
<div class="col-sm-4">
|
53 |
<div class="wbcr-factory-feature-box">
|
54 |
-
<
|
55 |
|
56 |
-
<h3><?php _e('Improve SEO', '
|
57 |
|
58 |
-
<p><?php _e('Removes duplicate pages, closes external links, changes the headers of the server.', '
|
59 |
</div>
|
60 |
</div>
|
61 |
<div class="col-sm-4">
|
62 |
<div class="wbcr-factory-feature-box">
|
63 |
-
<
|
64 |
|
65 |
-
<h3><?php _e('Site ptotection', '
|
66 |
|
67 |
-
<p><?php _e('Enables and disables features that improve the protection of your site.', '
|
68 |
</div>
|
69 |
</div>
|
70 |
<div class="col-sm-4">
|
71 |
<div class="wbcr-factory-feature-box">
|
72 |
-
<
|
73 |
|
74 |
-
<h3><?php _e('Disable comments', '
|
75 |
|
76 |
-
<p><?php _e('Disables comments on the entire site or on specific pages.', '
|
77 |
</div>
|
78 |
</div>
|
79 |
<div class="col-sm-4">
|
80 |
<div class="wbcr-factory-feature-box">
|
81 |
-
<
|
82 |
|
83 |
-
<h3><?php _e('Manage updates', '
|
84 |
|
85 |
<p><?php _e('Enables or disables automatically updates for plugins, themes and core. It is also possible
|
86 |
-
to disable all updates.', '
|
87 |
</div>
|
88 |
</div>
|
89 |
<div class="col-sm-4">
|
90 |
<div class="wbcr-factory-feature-box">
|
91 |
-
<
|
92 |
|
93 |
-
<h3><?php _e('Manage widgets', '
|
94 |
|
95 |
-
<p><?php _e('Allows you to remove unused widgets.', '
|
96 |
</div>
|
97 |
</div>
|
98 |
<div class="col-sm-4">
|
99 |
<div class="wbcr-factory-feature-box">
|
100 |
-
<
|
101 |
|
102 |
-
<h3><?php _e('Speed Optimization', '
|
103 |
|
104 |
-
<p><?php _e('Increases performance by disabling unused functions and reducing the number of requests.', '
|
105 |
</div>
|
106 |
</div>
|
107 |
<div class="col-sm-4">
|
108 |
<div class="wbcr-factory-feature-box">
|
109 |
-
<
|
110 |
|
111 |
-
<h3><?php _e('Site privacy', '
|
112 |
|
113 |
<p><?php _e('Allows you to hide the version of the site and plugins. Allows you to hide your
|
114 |
-
WordPress.', '
|
115 |
</div>
|
116 |
</div>
|
117 |
<div class="col-sm-4">
|
118 |
<div class="wbcr-factory-feature-box">
|
119 |
-
<
|
120 |
|
121 |
-
<h3><?php _e('Easy setup', '
|
122 |
|
123 |
-
<p><?php _e('In quick mode, you can easily configure the plugin according to your needs.', '
|
124 |
</div>
|
125 |
</div>
|
126 |
</div>
|
127 |
|
128 |
<div class="wbcr-factory-buttons-wrap">
|
129 |
<a href="https://goo.gl/TcMcS4" class="wbcr-factory-premium-button" target="_blank">
|
130 |
-
<?php _e('Get the ultimate plugin 100% FREE', '
|
131 |
</a>
|
132 |
</div>
|
133 |
<?php
|
5 |
*
|
6 |
* @since 1.0.0
|
7 |
*/
|
8 |
+
class FactoryClearfy102_MoreFeaturesPage extends FactoryPages324_ImpressiveThemplate {
|
9 |
|
10 |
/**
|
11 |
* The id of the page in the admin menu.
|
12 |
*
|
13 |
* Mainly used to navigate between pages.
|
14 |
+
* @see FactoryPages324_AdminPage
|
15 |
*
|
16 |
* @since 1.0.0
|
17 |
* @var string
|
26 |
|
27 |
public function __construct(Factory326_Plugin $plugin)
|
28 |
{
|
29 |
+
$this->menuTitle = __('More features (<b>free</b>)', 'factory_clearfy_102');
|
30 |
|
31 |
parent::__construct($plugin);
|
32 |
}
|
33 |
|
34 |
public function getPageTitle()
|
35 |
{
|
36 |
+
return __('install the ultimate version of the plugin for free!', 'factory_clearfy_102');
|
37 |
}
|
38 |
|
39 |
public function showPageContent()
|
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 |
+
<h3><?php _e('Code cleaning', 'factory_clearfy_102')?></h3>
|
48 |
|
49 |
+
<p><?php _e('Clears the source code of the page from unused code.', 'factory_clearfy_102')?></p>
|
50 |
</div>
|
51 |
</div>
|
52 |
<div class="col-sm-4">
|
53 |
<div class="wbcr-factory-feature-box">
|
54 |
+
<span class="dashicons dashicons-chart-bar"></span>
|
55 |
|
56 |
+
<h3><?php _e('Improve SEO', 'factory_clearfy_102')?></h3>
|
57 |
|
58 |
+
<p><?php _e('Removes duplicate pages, closes external links, changes the headers of the server.', 'factory_clearfy_102')?></p>
|
59 |
</div>
|
60 |
</div>
|
61 |
<div class="col-sm-4">
|
62 |
<div class="wbcr-factory-feature-box">
|
63 |
+
<span class="dashicons dashicons-shield-alt"></span>
|
64 |
|
65 |
+
<h3><?php _e('Site ptotection', 'factory_clearfy_102')?></h3>
|
66 |
|
67 |
+
<p><?php _e('Enables and disables features that improve the protection of your site.', 'factory_clearfy_102')?></p>
|
68 |
</div>
|
69 |
</div>
|
70 |
<div class="col-sm-4">
|
71 |
<div class="wbcr-factory-feature-box">
|
72 |
+
<span class="dashicons dashicons-welcome-comments"></span>
|
73 |
|
74 |
+
<h3><?php _e('Disable comments', 'factory_clearfy_102')?></h3>
|
75 |
|
76 |
+
<p><?php _e('Disables comments on the entire site or on specific pages.', 'factory_clearfy_102')?></p>
|
77 |
</div>
|
78 |
</div>
|
79 |
<div class="col-sm-4">
|
80 |
<div class="wbcr-factory-feature-box">
|
81 |
+
<span class="dashicons dashicons-update"></span>
|
82 |
|
83 |
+
<h3><?php _e('Manage updates', 'factory_clearfy_102')?></h3>
|
84 |
|
85 |
<p><?php _e('Enables or disables automatically updates for plugins, themes and core. It is also possible
|
86 |
+
to disable all updates.', 'factory_clearfy_102')?></p>
|
87 |
</div>
|
88 |
</div>
|
89 |
<div class="col-sm-4">
|
90 |
<div class="wbcr-factory-feature-box">
|
91 |
+
<span class="dashicons dashicons-admin-plugins"></span>
|
92 |
|
93 |
+
<h3><?php _e('Manage widgets', 'factory_clearfy_102')?></h3>
|
94 |
|
95 |
+
<p><?php _e('Allows you to remove unused widgets.', 'factory_clearfy_102')?></p>
|
96 |
</div>
|
97 |
</div>
|
98 |
<div class="col-sm-4">
|
99 |
<div class="wbcr-factory-feature-box">
|
100 |
+
<span class="dashicons dashicons-dashboard"></span>
|
101 |
|
102 |
+
<h3><?php _e('Speed Optimization', 'factory_clearfy_102')?></h3>
|
103 |
|
104 |
+
<p><?php _e('Increases performance by disabling unused functions and reducing the number of requests.', 'factory_clearfy_102')?></p>
|
105 |
</div>
|
106 |
</div>
|
107 |
<div class="col-sm-4">
|
108 |
<div class="wbcr-factory-feature-box">
|
109 |
+
<span class="dashicons dashicons-visibility"></span>
|
110 |
|
111 |
+
<h3><?php _e('Site privacy', 'factory_clearfy_102')?></h3>
|
112 |
|
113 |
<p><?php _e('Allows you to hide the version of the site and plugins. Allows you to hide your
|
114 |
+
WordPress.', 'factory_clearfy_102')?></p>
|
115 |
</div>
|
116 |
</div>
|
117 |
<div class="col-sm-4">
|
118 |
<div class="wbcr-factory-feature-box">
|
119 |
+
<span class="dashicons dashicons-admin-settings"></span>
|
120 |
|
121 |
+
<h3><?php _e('Easy setup', 'factory_clearfy_102')?></h3>
|
122 |
|
123 |
+
<p><?php _e('In quick mode, you can easily configure the plugin according to your needs.', 'factory_clearfy_102')?></p>
|
124 |
</div>
|
125 |
</div>
|
126 |
</div>
|
127 |
|
128 |
<div class="wbcr-factory-buttons-wrap">
|
129 |
<a href="https://goo.gl/TcMcS4" class="wbcr-factory-premium-button" target="_blank">
|
130 |
+
<?php _e('Get the ultimate plugin 100% FREE', 'factory_clearfy_102')?>
|
131 |
</a>
|
132 |
</div>
|
133 |
<?php
|
libs/factory/forms/boot.php
CHANGED
@@ -119,6 +119,16 @@
|
|
119 |
'class' => 'FactoryForms329_TextboxControl',
|
120 |
'include' => FACTORY_FORMS_329_DIR . '/controls/textbox.php'
|
121 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
122 |
array(
|
123 |
'type' => 'url',
|
124 |
'class' => 'FactoryForms329_UrlControl',
|
119 |
'class' => 'FactoryForms329_TextboxControl',
|
120 |
'include' => FACTORY_FORMS_329_DIR . '/controls/textbox.php'
|
121 |
),
|
122 |
+
array(
|
123 |
+
'type' => 'multiple-textbox',
|
124 |
+
'class' => 'FactoryForms329_MultipleTextboxControl',
|
125 |
+
'include' => FACTORY_FORMS_329_DIR . '/controls/multiple-textbox.php'
|
126 |
+
),
|
127 |
+
array(
|
128 |
+
'type' => 'datetimepicker-range',
|
129 |
+
'class' => 'FactoryForms329_DatepickerRangeControl',
|
130 |
+
'include' => FACTORY_FORMS_329_DIR . '/controls/datepicker-range.php'
|
131 |
+
),
|
132 |
array(
|
133 |
'type' => 'url',
|
134 |
'class' => 'FactoryForms329_UrlControl',
|
libs/factory/forms/controls/customs/html.php
CHANGED
@@ -1,38 +1,37 @@
|
|
1 |
<?php
|
2 |
-
/**
|
3 |
-
* Html Markup
|
4 |
-
*
|
5 |
-
* @author Paul Kashtanoff <paul@byonepress.com>
|
6 |
-
* @copyright (c) 2013, OnePress Ltd
|
7 |
-
*
|
8 |
-
* @package factory-forms
|
9 |
-
* @since 1.0.0
|
10 |
-
*/
|
11 |
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
public function html( ) {
|
23 |
-
$html = $this->getOption('html', '');
|
24 |
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
+
/**
|
4 |
+
* Html Markup
|
5 |
+
*
|
6 |
+
* @author Paul Kashtanoff <paul@byonepress.com>
|
7 |
+
* @copyright (c) 2013, OnePress Ltd
|
8 |
+
*
|
9 |
+
* @package factory-forms
|
10 |
+
* @since 1.0.0
|
11 |
+
*/
|
12 |
+
class FactoryForms329_Html extends FactoryForms329_CustomElement {
|
|
|
|
|
13 |
|
14 |
+
public $type = 'html';
|
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 |
+
// if the data options is a valid callback for an object method
|
27 |
+
if( (is_array($html) && count($html) == 2 && gettype($html[0]) == 'object') || function_exists($html) ) {
|
28 |
+
|
29 |
+
call_user_func($html, $this);
|
30 |
+
|
31 |
+
return;
|
32 |
+
}
|
33 |
+
|
34 |
+
// if the data options is an array of values
|
35 |
+
echo $html;
|
36 |
+
}
|
37 |
+
}
|
libs/factory/forms/controls/datepicker-range.php
ADDED
@@ -0,0 +1,96 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Datepicker range control
|
5 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* @copyright (c) 22.11.2017, Webcraftic
|
7 |
+
*
|
8 |
+
* Example:
|
9 |
+
* 'type' => 'datetimepicker-range',
|
10 |
+
* 'name' => 'facebook_start_date_filter',
|
11 |
+
* 'range_1' => array(
|
12 |
+
* 'format' => 'YYYY/MM/DD HH:mm',
|
13 |
+
* 'default' => date('Y/m/d H:i', strtotime('-1 week'))
|
14 |
+
* ),
|
15 |
+
* 'range_2' => array(
|
16 |
+
* 'format' => 'YYYY/MM/DD HH:mm',
|
17 |
+
* 'default' => date('Y/m/d H:i')
|
18 |
+
* ),
|
19 |
+
* 'title' => __('Выберите период', 'wpcr-scrapes'),
|
20 |
+
* 'hint' => __('Если Вкл., вы сможете установить настройки выбора записей за установленный период времени.', 'wpcr-scrapes')
|
21 |
+
*
|
22 |
+
* @package factory-forms
|
23 |
+
* @since 1.0.0
|
24 |
+
*/
|
25 |
+
class FactoryForms329_DatepickerRangeControl extends FactoryForms329_ComplexControl {
|
26 |
+
|
27 |
+
public $type = 'datetimepicker-range';
|
28 |
+
|
29 |
+
public function __construct($options, $form, $provider = null)
|
30 |
+
{
|
31 |
+
parent::__construct($options, $form, $provider);
|
32 |
+
|
33 |
+
if( !isset($options['range_1']) ) {
|
34 |
+
$options['range_1'] = array();
|
35 |
+
}
|
36 |
+
|
37 |
+
$options['range_1'] = array_merge(array(
|
38 |
+
'scope' => isset($options['scope'])
|
39 |
+
? $options['scope']
|
40 |
+
: 'factory',
|
41 |
+
'name' => $this->options['name'] . '__range_1',
|
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 |
+
$options['range_2'] = array_merge(array(
|
51 |
+
'scope' => isset($options['scope'])
|
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 |
+
$locale_parts = explode('_', get_locale());
|
76 |
+
|
77 |
+
$locale = isset($locale_parts[0])
|
78 |
+
? $locale_parts[0]
|
79 |
+
: 'en';
|
80 |
+
|
81 |
+
$control->addHtmlAttr('data-date-locale', $locale);
|
82 |
+
}
|
83 |
+
}
|
84 |
+
|
85 |
+
public function render()
|
86 |
+
{
|
87 |
+
?>
|
88 |
+
<div class='input-group date factory-datetimepicker-input-group' style="display:inline-block; width: 200px">
|
89 |
+
<?php $this->range_1->render(); ?>
|
90 |
+
</div>
|
91 |
+
<div class='input-group date factory-datetimepicker-input-group' style="display:inline-block; width: 200px">
|
92 |
+
<?php $this->range_2->render(); ?>
|
93 |
+
</div>
|
94 |
+
<?php
|
95 |
+
}
|
96 |
+
}
|
libs/factory/forms/controls/dropdown.php
CHANGED
@@ -278,12 +278,11 @@
|
|
278 |
<?php foreach($items as $item) {
|
279 |
|
280 |
$hint = isset($item[2])
|
281 |
-
?
|
282 |
: null;
|
283 |
$hint = isset($item['hint'])
|
284 |
-
?
|
285 |
: null;
|
286 |
-
|
287 |
$value = isset($item[0])
|
288 |
? esc_attr($item[0])
|
289 |
: null;
|
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;
|
libs/factory/forms/controls/gradient.php
CHANGED
@@ -35,7 +35,9 @@
|
|
35 |
$value = esc_attr($this->getValue());
|
36 |
|
37 |
if( !empty($value) ) {
|
38 |
-
|
|
|
|
|
39 |
$points = '';
|
40 |
|
41 |
foreach($values->color_points as $splitVlaues) {
|
@@ -43,6 +45,7 @@
|
|
43 |
}
|
44 |
|
45 |
$points = rtrim($points, ',');
|
|
|
46 |
$this->addHtmlData('points', $points);
|
47 |
$this->addHtmlData('directions', $values->filldirection);
|
48 |
} else {
|
35 |
$value = esc_attr($this->getValue());
|
36 |
|
37 |
if( !empty($value) ) {
|
38 |
+
|
39 |
+
$values = json_decode(stripcslashes(htmlspecialchars_decode($value)));
|
40 |
+
|
41 |
$points = '';
|
42 |
|
43 |
foreach($values->color_points as $splitVlaues) {
|
45 |
}
|
46 |
|
47 |
$points = rtrim($points, ',');
|
48 |
+
|
49 |
$this->addHtmlData('points', $points);
|
50 |
$this->addHtmlData('directions', $values->filldirection);
|
51 |
} else {
|
libs/factory/forms/controls/multiple-textbox.php
ADDED
@@ -0,0 +1,108 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Control multiple textbox
|
5 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* @copyright (c) 22.11.2017, Webcraftic
|
7 |
+
*
|
8 |
+
* @package factory-forms
|
9 |
+
* @since 1.0.0
|
10 |
+
*/
|
11 |
+
class FactoryForms329_MultipleTextboxControl extends FactoryForms329_Control {
|
12 |
+
|
13 |
+
public $type = 'multiple-textbox';
|
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 |
+
$nameOnForm = $this->getNameOnForm();
|
25 |
+
|
26 |
+
if( $this->getOption('maxLength', false) ) {
|
27 |
+
$this->addHtmlAttr('maxlength', intval($this->getOption('maxLength')));
|
28 |
+
}
|
29 |
+
|
30 |
+
if( $this->getOption('placeholder', false) ) {
|
31 |
+
$this->addHtmlAttr('placeholder', $this->getOption('placeholder'));
|
32 |
+
}
|
33 |
+
|
34 |
+
$this->addCssClass('form-control');
|
35 |
+
$this->addHtmlAttr('type', 'text');
|
36 |
+
//$this->addHtmlAttr('id', $nameOnForm);
|
37 |
+
$this->addCssClass(str_replace('_', '-', $nameOnForm));
|
38 |
+
$this->addHtmlAttr('name', $nameOnForm . '[]');
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Shows the html markup of the control.
|
43 |
+
*
|
44 |
+
* @since 1.0.0
|
45 |
+
* @return void
|
46 |
+
*/
|
47 |
+
public function html()
|
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 |
+
<div class="factory-multiple-textbox-group">
|
60 |
+
<div class="factory-mtextbox-items">
|
61 |
+
<?php if( empty($values) ): ?>
|
62 |
+
<div class="factory-mtextbox-item">
|
63 |
+
<input <?php $this->attrs() ?>/>
|
64 |
+
</div>
|
65 |
+
<?php else: ?>
|
66 |
+
<?php $counter = 0; ?>
|
67 |
+
<?php foreach($values as $value): ?>
|
68 |
+
<div class="factory-mtextbox-item">
|
69 |
+
<input value="<?= esc_attr($value) ?>"<?php $this->attrs() ?>/>
|
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 |
+
<?php $counter++; ?>
|
76 |
+
<?php endforeach; ?>
|
77 |
+
<?php endif; ?>
|
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 |
+
$value = sanitize_text_field($value);
|
105 |
+
|
106 |
+
return $value;
|
107 |
+
}
|
108 |
+
}
|
libs/factory/forms/controls/pattern.php
CHANGED
@@ -26,8 +26,10 @@
|
|
26 |
{
|
27 |
parent::__construct($options, $form, $provider);
|
28 |
|
29 |
-
if( !isset($options['color']) )
|
30 |
$options['color'] = array();
|
|
|
|
|
31 |
$options['color'] = array_merge($options['color'], array(
|
32 |
'name' => $this->options['name'] . '_color_picker',
|
33 |
'default' => isset($this->options['default'])
|
@@ -35,8 +37,10 @@
|
|
35 |
: null,
|
36 |
'pickerTarget' => '.factory-control-' . $this->options['name'] . ' .factory-picker-target'
|
37 |
));
|
38 |
-
|
|
|
39 |
$options['color']['default'] = '#1e8cbe';
|
|
|
40 |
|
41 |
$name = $this->getOption('name');
|
42 |
|
@@ -74,8 +78,10 @@
|
|
74 |
}
|
75 |
|
76 |
$hasColor = !empty($values['color']);
|
77 |
-
|
|
|
78 |
$this->addCssClass('factory-color-panel-active');
|
|
|
79 |
|
80 |
?>
|
81 |
<div <?php $this->attrs() ?>>
|
@@ -83,7 +89,7 @@
|
|
83 |
<div class="factory-preview-wrap">
|
84 |
<div <?php echo (!empty($values['url']))
|
85 |
? 'style="background:url(' . esc_url($values['url']) . ') repeat; border:0; font-size:0;"'
|
86 |
-
: ''; ?> class="factory-preview <?php echo $name; ?>"><span></span></div>
|
87 |
</div>
|
88 |
<a href="#" class="button button-default factory-button factory-change-color-btn <?php if( $hasColor ) {
|
89 |
echo 'button-active';
|
26 |
{
|
27 |
parent::__construct($options, $form, $provider);
|
28 |
|
29 |
+
if( !isset($options['color']) ) {
|
30 |
$options['color'] = array();
|
31 |
+
}
|
32 |
+
|
33 |
$options['color'] = array_merge($options['color'], array(
|
34 |
'name' => $this->options['name'] . '_color_picker',
|
35 |
'default' => isset($this->options['default'])
|
37 |
: null,
|
38 |
'pickerTarget' => '.factory-control-' . $this->options['name'] . ' .factory-picker-target'
|
39 |
));
|
40 |
+
|
41 |
+
if( !$options['color']['default'] ) {
|
42 |
$options['color']['default'] = '#1e8cbe';
|
43 |
+
}
|
44 |
|
45 |
$name = $this->getOption('name');
|
46 |
|
78 |
}
|
79 |
|
80 |
$hasColor = !empty($values['color']);
|
81 |
+
|
82 |
+
if( $hasColor ) {
|
83 |
$this->addCssClass('factory-color-panel-active');
|
84 |
+
}
|
85 |
|
86 |
?>
|
87 |
<div <?php $this->attrs() ?>>
|
89 |
<div class="factory-preview-wrap">
|
90 |
<div <?php echo (!empty($values['url']))
|
91 |
? 'style="background:url(' . esc_url($values['url']) . ') repeat; border:0; font-size:0;"'
|
92 |
+
: ''; ?> class="factory-preview <?php echo $this->getOption('name'); ?>"><span></span></div>
|
93 |
</div>
|
94 |
<a href="#" class="button button-default factory-button factory-change-color-btn <?php if( $hasColor ) {
|
95 |
echo 'button-active';
|
libs/factory/forms/controls/wp-editor.php
CHANGED
@@ -28,8 +28,11 @@
|
|
28 |
*/
|
29 |
protected function beforeHtml()
|
30 |
{
|
31 |
-
|
|
|
32 |
$this->options['tinymce'] = array();
|
|
|
|
|
33 |
if( !isset($this->options['tinymce']['content_css']) ) {
|
34 |
$this->options['tinymce']['content_css'] = FACTORY_FORMS_329_URL . '/assets/css/editor.css';
|
35 |
}
|
@@ -44,7 +47,8 @@
|
|
44 |
public function html()
|
45 |
{
|
46 |
$nameOnForm = $this->getNameOnForm();
|
47 |
-
|
|
|
48 |
|
49 |
?>
|
50 |
<div class='factory-form-wp-editor'>
|
@@ -57,4 +61,23 @@
|
|
57 |
</div>
|
58 |
<?php
|
59 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
60 |
}
|
28 |
*/
|
29 |
protected function beforeHtml()
|
30 |
{
|
31 |
+
|
32 |
+
if( empty($this->options['tinymce']) ) {
|
33 |
$this->options['tinymce'] = array();
|
34 |
+
}
|
35 |
+
|
36 |
if( !isset($this->options['tinymce']['content_css']) ) {
|
37 |
$this->options['tinymce']['content_css'] = FACTORY_FORMS_329_URL . '/assets/css/editor.css';
|
38 |
}
|
47 |
public function html()
|
48 |
{
|
49 |
$nameOnForm = $this->getNameOnForm();
|
50 |
+
|
51 |
+
$value = $this->getValue();
|
52 |
|
53 |
?>
|
54 |
<div class='factory-form-wp-editor'>
|
61 |
</div>
|
62 |
<?php
|
63 |
}
|
64 |
+
|
65 |
+
/**
|
66 |
+
* Returns a submit value of the control by a given name.
|
67 |
+
*
|
68 |
+
* @since 1.0.0
|
69 |
+
* @return mixed
|
70 |
+
*/
|
71 |
+
public function getSubmitValue($name, $subName)
|
72 |
+
{
|
73 |
+
$nameOnForm = $this->getNameOnForm($name);
|
74 |
+
$value = isset($_POST[$nameOnForm])
|
75 |
+
? $_POST[$nameOnForm]
|
76 |
+
: null;
|
77 |
+
if( is_array($value) ) {
|
78 |
+
$value = implode(',', $value);
|
79 |
+
}
|
80 |
+
|
81 |
+
return wp_kses_post($value);
|
82 |
+
}
|
83 |
}
|
libs/factory/forms/includes/form-element.class.php
CHANGED
@@ -353,6 +353,17 @@
|
|
353 |
echo $this->getName();
|
354 |
}
|
355 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
356 |
/**
|
357 |
* Returns an element type.
|
358 |
*
|
353 |
echo $this->getName();
|
354 |
}
|
355 |
|
356 |
+
/**
|
357 |
+
* Returns a form name
|
358 |
+
*
|
359 |
+
* @since 1.0.0
|
360 |
+
* @return string
|
361 |
+
*/
|
362 |
+
public function getFormName()
|
363 |
+
{
|
364 |
+
return $this->form->name;
|
365 |
+
}
|
366 |
+
|
367 |
/**
|
368 |
* Returns an element type.
|
369 |
*
|
libs/factory/forms/layouts/bootstrap-3/bootstrap-3.php
CHANGED
@@ -95,8 +95,8 @@
|
|
95 |
if( $hintType == 'icon' ): ?>
|
96 |
<?php $hintIconColor = $control->getLayoutOption('hint-icon-color', 'green'); ?>
|
97 |
<span class="factory-hint-icon factory-hint-icon-<?= $hintIconColor ?>" data-toggle="factory-tooltip" data-placement="right" title="<?php $control->hint(true) ?>">
|
98 |
-
<!--<i class="fa fa-question" aria-hidden="true"></i>-->
|
99 |
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt=""/>
|
|
|
100 |
</span>
|
101 |
<?php endif; ?>
|
102 |
<?php if( $control->getLayoutOption('hint-position', 'bottom') == 'left' ): ?>
|
95 |
if( $hintType == 'icon' ): ?>
|
96 |
<?php $hintIconColor = $control->getLayoutOption('hint-icon-color', 'green'); ?>
|
97 |
<span class="factory-hint-icon factory-hint-icon-<?= $hintIconColor ?>" data-toggle="factory-tooltip" data-placement="right" title="<?php $control->hint(true) ?>">
|
|
|
98 |
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt=""/>
|
99 |
+
|
100 |
</span>
|
101 |
<?php endif; ?>
|
102 |
<?php if( $control->getLayoutOption('hint-position', 'bottom') == 'left' ): ?>
|
libs/factory/notices/ajax.php
DELETED
@@ -1,38 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Ajax actions bound with the notices.
|
4 |
-
*
|
5 |
-
* @author Paul Kashtanoff <paul@byonepress.com>
|
6 |
-
* @copyright (c) 2013, OnePress Ltd
|
7 |
-
*
|
8 |
-
* @package factory-notices
|
9 |
-
* @since 1.0.0
|
10 |
-
*/
|
11 |
-
|
12 |
-
function factory_notices_323_hide()
|
13 |
-
{
|
14 |
-
$id = empty($_POST['id'])
|
15 |
-
? null
|
16 |
-
: (int)$_POST['id'];
|
17 |
-
|
18 |
-
$never = (empty($_POST['never']) || $_POST['never'] == 'false')
|
19 |
-
? false
|
20 |
-
: true;
|
21 |
-
|
22 |
-
if( !$id )
|
23 |
-
exit;
|
24 |
-
|
25 |
-
$notices = get_option("factory_notices_closed", array());
|
26 |
-
$notices[$id] = array(
|
27 |
-
'never' => $never,
|
28 |
-
'time' => time()
|
29 |
-
);
|
30 |
-
|
31 |
-
delete_option('factory_notices_closed');
|
32 |
-
add_option('factory_notices_closed', $notices);
|
33 |
-
|
34 |
-
echo 'ok';
|
35 |
-
exit;
|
36 |
-
}
|
37 |
-
|
38 |
-
add_action('wp_ajax_factory_notices_323_hide', 'factory_notices_323_hide');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/notices/assets/css/notices.css
DELETED
@@ -1,255 +0,0 @@
|
|
1 |
-
/*!
|
2 |
-
* Factory Notices
|
3 |
-
*
|
4 |
-
* @author Paul Kashtanoff <paul@byonepress.com>
|
5 |
-
* @copyright (c) 2013, OnePress Ltd
|
6 |
-
*
|
7 |
-
* @package factory-notices
|
8 |
-
* @since 1.0.0
|
9 |
-
*/
|
10 |
-
|
11 |
-
.factory-notices-323-notices.updated {
|
12 |
-
padding: 0px;
|
13 |
-
border: 0px;
|
14 |
-
background-color: transparent;
|
15 |
-
box-shadow: none;
|
16 |
-
}
|
17 |
-
|
18 |
-
.factory-notices-323-notices .factory-notice + .factory-notice {
|
19 |
-
margin-top: 10px;
|
20 |
-
}
|
21 |
-
|
22 |
-
/**
|
23 |
-
* Hero Offer
|
24 |
-
*/
|
25 |
-
|
26 |
-
.factory-notices-323-notices .factory-hero {
|
27 |
-
position: relative;
|
28 |
-
background: url("../img/offer-bg.png") center center;
|
29 |
-
background-size: cover;
|
30 |
-
background-color: #314860;
|
31 |
-
border-radius: 4px;
|
32 |
-
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.15);
|
33 |
-
padding: 0px;
|
34 |
-
font-size: 18px;
|
35 |
-
font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", Verdana, "Bitstream Vera Sans", sans-serif;
|
36 |
-
font-weight: normal;
|
37 |
-
color: #fff;
|
38 |
-
text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.4);
|
39 |
-
line-height: 130%;
|
40 |
-
border: 1px solid #404b57;
|
41 |
-
}
|
42 |
-
|
43 |
-
.factory-notices-323-notices .factory-hero .factory-inner-wrap {
|
44 |
-
overflow: hidden;
|
45 |
-
padding: 15px 15px 20px 15px;
|
46 |
-
}
|
47 |
-
|
48 |
-
.factory-notices-323-notices .factory-hero .factory-header {
|
49 |
-
font-weight: bold;
|
50 |
-
text-transform: uppercase;
|
51 |
-
}
|
52 |
-
|
53 |
-
.factory-notices-323-notices .factory-hero .factory-message,
|
54 |
-
.factory-notices-323-notices .factory-hero .factory-header {
|
55 |
-
display: inline;
|
56 |
-
}
|
57 |
-
|
58 |
-
.factory-notices-323-notices .factory-hero .factory-message-container {
|
59 |
-
float: left;
|
60 |
-
width: 68.421053%;
|
61 |
-
}
|
62 |
-
|
63 |
-
.factory-notices-323-notices .factory-hero .factory-message-container a {
|
64 |
-
color: #fff;
|
65 |
-
text-decoration: underline;
|
66 |
-
}
|
67 |
-
|
68 |
-
.factory-notices-323-notices .factory-hero .factory-buttons {
|
69 |
-
position: absolute;
|
70 |
-
bottom: 10px;
|
71 |
-
right: 10px;
|
72 |
-
}
|
73 |
-
|
74 |
-
.factory-notices-323-notices .factory-hero .factory-button {
|
75 |
-
display: inline-block;
|
76 |
-
line-height: 1.2;
|
77 |
-
text-align: center;
|
78 |
-
-moz-box-shadow: inset 0 0 2px #fff, 0 1px 5px rgba(0, 0, 0, 0.3);
|
79 |
-
-webkit-box-shadow: inset 0 0 2px #fff, 0 1px 5px rgba(0, 0, 0, 0.3);
|
80 |
-
box-shadow: inset 0 0 2px #fff, 0 1px 5px rgba(0, 0, 0, 0.3);
|
81 |
-
padding: 9px 15px 8px 15px;
|
82 |
-
border-radius: 5px;
|
83 |
-
background: #1b9772;
|
84 |
-
border: 1px solid #2e3847;
|
85 |
-
color: #fff;
|
86 |
-
font-size: 16px;
|
87 |
-
font-weight: bold;
|
88 |
-
text-decoration: none;
|
89 |
-
text-shadow: 0px 1px 2px rgba(0, 0, 0, 0.5);
|
90 |
-
-webkit-transition-duration: .3s;
|
91 |
-
-moz-transition-duration: .3s;
|
92 |
-
cursor: pointer;
|
93 |
-
}
|
94 |
-
|
95 |
-
.factory-notices-323-notices .factory-hero .factory-button:hover {
|
96 |
-
color: #fff !important;
|
97 |
-
background-color: #f0a000;
|
98 |
-
border-color: #c87800;
|
99 |
-
-webkit-transition-duration: .3s;
|
100 |
-
outline: none;
|
101 |
-
-moz-box-shadow: inset 0 0 2px #fff, 0 1px 7px rgba(240, 160, 0, 0.5);
|
102 |
-
-webkit-box-shadow: inset 0 0 2px #fff, 0 1px 7px rgba(240, 160, 0, 0.5);
|
103 |
-
box-shadow: inset 0 0 2px #fff, 0 1px 7 spx rgba(240, 160, 0, 0.5);
|
104 |
-
}
|
105 |
-
|
106 |
-
.factory-notices-323-notices .factory-hero .highlighted {
|
107 |
-
background-color: rgba(255, 255, 255, 0.12);
|
108 |
-
padding: 0 7px;
|
109 |
-
display: inline-block;
|
110 |
-
border-radius: 3px;
|
111 |
-
font-weight: bold;
|
112 |
-
text-decoration: none !important;
|
113 |
-
-webkit-transition-duration: .3s;
|
114 |
-
-moz-transition-duration: .3s;
|
115 |
-
}
|
116 |
-
|
117 |
-
.factory-notices-323-notices .factory-hero .highlighted:hover {
|
118 |
-
background-color: rgba(255, 255, 255, 0.3);
|
119 |
-
}
|
120 |
-
|
121 |
-
/**
|
122 |
-
* Alert Danger
|
123 |
-
*/
|
124 |
-
|
125 |
-
.factory-notices-323-notices .alert-danger .factory-inner-wrap {
|
126 |
-
min-height: 90px;
|
127 |
-
padding-left: 110px;
|
128 |
-
background: url("../img/alert-danger-icon.png") no-repeat top left;
|
129 |
-
}
|
130 |
-
|
131 |
-
.factory-notices-323-notices .alert-danger .factory-close {
|
132 |
-
opacity: 1;
|
133 |
-
}
|
134 |
-
|
135 |
-
.factory-notices-323-notices .alert-danger .factory-close .fa {
|
136 |
-
color: #b23e3a;
|
137 |
-
text-shadow: none;
|
138 |
-
}
|
139 |
-
|
140 |
-
.factory-notices-323-notices .alert .factory-button {
|
141 |
-
margin-right: 5px;
|
142 |
-
white-space: normal;
|
143 |
-
}
|
144 |
-
|
145 |
-
.factory-notices-323-notices .alert .factory-hide-noties-button {
|
146 |
-
color: #808080 !important;
|
147 |
-
}
|
148 |
-
|
149 |
-
/**
|
150 |
-
* Call to action
|
151 |
-
*/
|
152 |
-
|
153 |
-
.factory-notices-323-notices .call-to-action {
|
154 |
-
padding: 15px;
|
155 |
-
margin-bottom: 20px;
|
156 |
-
border: 1px solid transparent;
|
157 |
-
border-radius: 4px;
|
158 |
-
background-color: #f7f7f7;
|
159 |
-
color: #111;
|
160 |
-
border: 2px solid #0074a2;
|
161 |
-
}
|
162 |
-
|
163 |
-
.factory-notices-323-notices2 .call-to-action .factory-inner-wrap {
|
164 |
-
min-height: 90px;
|
165 |
-
padding-left: 110px;
|
166 |
-
background: url("../img/call-to-action-icon-4.png") no-repeat top left;
|
167 |
-
}
|
168 |
-
|
169 |
-
.factory-notices-323-notices .call-to-action h4 {
|
170 |
-
margin-top: 0;
|
171 |
-
color: inherit;
|
172 |
-
margin-bottom: 10px;
|
173 |
-
}
|
174 |
-
|
175 |
-
.factory-notices-323-notices .call-to-action .actions {
|
176 |
-
padding-top: 10px;
|
177 |
-
}
|
178 |
-
|
179 |
-
.factory-notices-323-notices .call-to-action .close {
|
180 |
-
position: relative;
|
181 |
-
top: -8px;
|
182 |
-
right: -7px;
|
183 |
-
}
|
184 |
-
|
185 |
-
.factory-notices-323-notices .call-to-action .factory-button {
|
186 |
-
margin-right: 5px;
|
187 |
-
}
|
188 |
-
|
189 |
-
.factory-notices-323-notices .call-to-action .factory-icon {
|
190 |
-
font-size: 100px;
|
191 |
-
line-height: 100px;
|
192 |
-
float: left;
|
193 |
-
margin-right: 15px;
|
194 |
-
color: #0085ba;
|
195 |
-
position: relative;
|
196 |
-
top: -5px;
|
197 |
-
text-shadow: 0 1px 0 #fff;
|
198 |
-
}
|
199 |
-
|
200 |
-
/**
|
201 |
-
* Popups
|
202 |
-
*/
|
203 |
-
|
204 |
-
.factory-popup {
|
205 |
-
max-width: 600px;
|
206 |
-
background-color: #fff;
|
207 |
-
padding: 40px;
|
208 |
-
-moz-box-sizing: border-box;
|
209 |
-
box-sizing: border-box;
|
210 |
-
border-radius: 5px;
|
211 |
-
position: fixed;
|
212 |
-
visibility: hidden;
|
213 |
-
top: 50%;
|
214 |
-
left: 50%;
|
215 |
-
box-shadow: 0 0 25px rgba(0, 0, 0, 0.1);
|
216 |
-
z-index: 151;
|
217 |
-
}
|
218 |
-
|
219 |
-
.factory-popup-overlay {
|
220 |
-
position: fixed;
|
221 |
-
top: 0;
|
222 |
-
left: 0;
|
223 |
-
right: 0;
|
224 |
-
bottom: 0;
|
225 |
-
background: rgba(0, 0, 0, 0.35);
|
226 |
-
z-index: 150;
|
227 |
-
}
|
228 |
-
|
229 |
-
.factory-popup .factory-corner-close {
|
230 |
-
position: absolute;
|
231 |
-
top: -11px;
|
232 |
-
right: -11px;
|
233 |
-
color: #bbb;
|
234 |
-
font-size: 18px;
|
235 |
-
background-color: #fff;
|
236 |
-
height: 20px;
|
237 |
-
width: 20px;
|
238 |
-
padding: 7px;
|
239 |
-
text-align: center;
|
240 |
-
border-radius: 100%;
|
241 |
-
-moz-box-sizing: content-box;
|
242 |
-
box-sizing: content-box;
|
243 |
-
}
|
244 |
-
|
245 |
-
/**
|
246 |
-
* Plugins
|
247 |
-
*/
|
248 |
-
.plugin-update-tr.before-tr td {
|
249 |
-
box-shadow: none !important;
|
250 |
-
}
|
251 |
-
|
252 |
-
.plugin-update-tr.before-tr td .update-message {
|
253 |
-
margin-bottom: 0 !important;
|
254 |
-
}
|
255 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/notices/assets/img/alert-danger-icon.png
DELETED
Binary file
|
libs/factory/notices/assets/img/close-icon-for-dark-bg.png
DELETED
Binary file
|
libs/factory/notices/assets/img/key-not-bound.png
DELETED
Binary file
|
libs/factory/notices/assets/js/notices.js
DELETED
@@ -1,92 +0,0 @@
|
|
1 |
-
/*!
|
2 |
-
* Factory Notices
|
3 |
-
*
|
4 |
-
* @author Paul Kashtanoff <paul@byonepress.com>
|
5 |
-
* @copyright (c) 2013, OnePress Ltd
|
6 |
-
*
|
7 |
-
* @package factory-notices
|
8 |
-
* @since 1.0.0
|
9 |
-
*/
|
10 |
-
|
11 |
-
(function($) {
|
12 |
-
|
13 |
-
if( window.factory_notices_323_hide_notice ) {
|
14 |
-
return;
|
15 |
-
}
|
16 |
-
|
17 |
-
$(function() {
|
18 |
-
|
19 |
-
// plugins
|
20 |
-
var pluginNotice = $('.plugin-update-tr').prev();
|
21 |
-
pluginNotice.hasClass('plugin-update-tr') && pluginNotice.addClass('before-tr');
|
22 |
-
pluginNotice.data('slug') && !pluginNotice.hasClass('update') && pluginNotice.addClass('update');
|
23 |
-
|
24 |
-
// notices
|
25 |
-
$(".factory-notice .factory-close").click(function() {
|
26 |
-
var id = $(this).parents(".factory-notice").attr('id');
|
27 |
-
factory_notices_323_hide_notice(id, false);
|
28 |
-
return false;
|
29 |
-
});
|
30 |
-
|
31 |
-
// popups
|
32 |
-
var $popups = $(".factory-popup").appendTo($('body'));
|
33 |
-
var oneShown = false;
|
34 |
-
$popups.each(function() {
|
35 |
-
var $popup = $(this);
|
36 |
-
|
37 |
-
// shows only one popup every time
|
38 |
-
if( oneShown ) {
|
39 |
-
$(this).remove();
|
40 |
-
return true;
|
41 |
-
}
|
42 |
-
|
43 |
-
oneShown = true;
|
44 |
-
|
45 |
-
var width = $(this).innerWidth();
|
46 |
-
var height = $(this).innerHeight();
|
47 |
-
|
48 |
-
$(this).css({
|
49 |
-
'marginTop': -parseInt(( height / 2 )) + 'px',
|
50 |
-
'marginLeft': -parseInt(( width / 2 )) + 'px',
|
51 |
-
'visibility': 'visible'
|
52 |
-
});
|
53 |
-
|
54 |
-
var $overlay = $("<div class='factory-popup-overlay'></div>").appendTo($('body'));
|
55 |
-
|
56 |
-
$popup.find('.factory-corner-close').click(function() {
|
57 |
-
$overlay.fadeOut(300);
|
58 |
-
$popup.fadeOut(300);
|
59 |
-
});
|
60 |
-
|
61 |
-
$popup.find('.factory-close').click(function() {
|
62 |
-
var href = $(this).attr('href');
|
63 |
-
var closeType = $(this).data('close');
|
64 |
-
|
65 |
-
if( 'quick-hide' === closeType ) {
|
66 |
-
$overlay.hide();
|
67 |
-
$popup.fadeOut(300);
|
68 |
-
} else {
|
69 |
-
var id = $(this).parents(".factory-notice-item").attr('id');
|
70 |
-
factory_notices_323_hide_notice(id, false);
|
71 |
-
}
|
72 |
-
|
73 |
-
return ( '#' === href ) ? false : true;
|
74 |
-
});
|
75 |
-
});
|
76 |
-
});
|
77 |
-
|
78 |
-
window.factory_notices_323_hide_notice = function(id, never) {
|
79 |
-
var item = $("#" + id).fadeOut(300, function() {
|
80 |
-
item.remove();
|
81 |
-
$.ajax({
|
82 |
-
url: ajaxurl,
|
83 |
-
type: "post",
|
84 |
-
data: {
|
85 |
-
id: id,
|
86 |
-
action: "factory_notices_323_hide",
|
87 |
-
never: never ? true : false
|
88 |
-
}
|
89 |
-
});
|
90 |
-
});
|
91 |
-
}
|
92 |
-
})(jQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/notices/boot.php
DELETED
@@ -1,28 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Factory Notices
|
4 |
-
*
|
5 |
-
* @author Paul Kashtanoff <paul@byonepress.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
-
* @copyright (c) 2013, OnePress Ltd, (c) 2017 Webcraftic Ltd
|
7 |
-
*
|
8 |
-
* @package factory-notices
|
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('FACTORY_NOTICES_323_LOADED') ) {
|
18 |
-
return;
|
19 |
-
}
|
20 |
-
define('FACTORY_NOTICES_323_LOADED', true);
|
21 |
-
|
22 |
-
define('FACTORY_NOTICES_323_DIR', dirname(__FILE__));
|
23 |
-
define('FACTORY_NOTICES_323_URL', plugins_url(null, __FILE__));
|
24 |
-
|
25 |
-
#comp merge
|
26 |
-
require(FACTORY_NOTICES_323_DIR . '/ajax.php');
|
27 |
-
require(FACTORY_NOTICES_323_DIR . '/notices.php');
|
28 |
-
#endcomp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/notices/notices.php
DELETED
@@ -1,195 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* A group of classes and methods to create and manage notices.
|
4 |
-
*
|
5 |
-
* @author Paul Kashtanoff <paul@byonepress.com>
|
6 |
-
* @copyright (c) 2013, OnePress Ltd
|
7 |
-
*
|
8 |
-
* @package factory-notices
|
9 |
-
* @since 1.0.0
|
10 |
-
*/
|
11 |
-
|
12 |
-
// creating a license manager for each plugin created via the factory
|
13 |
-
add_action('factory_notices_323_plugin_created', 'factory_notices_323_plugin_created');
|
14 |
-
function factory_notices_323_plugin_created( $plugin ) {
|
15 |
-
new FactoryNotices323( $plugin );
|
16 |
-
}
|
17 |
-
|
18 |
-
/**
|
19 |
-
* A class to manage notices.
|
20 |
-
*
|
21 |
-
* @since 1.0.0
|
22 |
-
*/
|
23 |
-
class FactoryNotices323 {
|
24 |
-
|
25 |
-
public function __construct( $plugin ) {
|
26 |
-
$this->plugin = $plugin;
|
27 |
-
add_action('current_screen', array( $this, 'currentScreenAction') );
|
28 |
-
}
|
29 |
-
|
30 |
-
public function currentScreenAction() {
|
31 |
-
|
32 |
-
$this->notices = apply_filters('factory_notices_' . $this->plugin->pluginName, array());
|
33 |
-
if ( count( $this->notices ) == 0 ) return;
|
34 |
-
|
35 |
-
$screen = get_current_screen();
|
36 |
-
|
37 |
-
$this->hasNotices = false;
|
38 |
-
foreach ($this->notices as $notice) {
|
39 |
-
|
40 |
-
$where = empty( $notice['where'] ) ? array('plugins','dashboard','edit') : $notice['where'];
|
41 |
-
$screen = get_current_screen();
|
42 |
-
|
43 |
-
if ( in_array($screen->base, $where) ) {
|
44 |
-
$this->hasNotices = true;
|
45 |
-
break;
|
46 |
-
};
|
47 |
-
}
|
48 |
-
|
49 |
-
if ( $this->hasNotices ) {
|
50 |
-
add_action('factory_bootstrap_enqueue_scripts_' . $this->plugin->pluginName, array( $this, 'enqueueBootstrapScripts' ));
|
51 |
-
add_action('admin_enqueue_scripts', array( $this, 'enqueueScripts' ));
|
52 |
-
add_action('admin_notices', array( $this, 'showNotices' ));
|
53 |
-
}
|
54 |
-
}
|
55 |
-
|
56 |
-
public function enqueueBootstrapScripts() {
|
57 |
-
$this->plugin->bootstrap->enqueueStyle('bootstrap.core');
|
58 |
-
}
|
59 |
-
|
60 |
-
public function enqueueScripts() {
|
61 |
-
wp_enqueue_style('factory-notices-323-css', FACTORY_NOTICES_323_URL . '/assets/css/notices.css');
|
62 |
-
wp_enqueue_script('factory-notices-323-js', FACTORY_NOTICES_323_URL . '/assets/js/notices.js');
|
63 |
-
}
|
64 |
-
|
65 |
-
public function showNotices() {
|
66 |
-
|
67 |
-
if ( count( $this->notices ) == 0 ) return;
|
68 |
-
|
69 |
-
if (
|
70 |
-
!current_user_can('activate_plugins') ||
|
71 |
-
!current_user_can('edit_plugins') ||
|
72 |
-
!current_user_can('install_plugins')) return;
|
73 |
-
|
74 |
-
?>
|
75 |
-
|
76 |
-
<?php if ( $this->hasNotices ) { ?>
|
77 |
-
<div class="updated factory-bootstrap-330 factory-fontawesome-000 factory-notices-323-notices">
|
78 |
-
<?php
|
79 |
-
foreach ($this->notices as $notice) {
|
80 |
-
$this->showNotice($notice);
|
81 |
-
}
|
82 |
-
?>
|
83 |
-
</div>
|
84 |
-
<?php } ?>
|
85 |
-
<?php
|
86 |
-
}
|
87 |
-
|
88 |
-
/**
|
89 |
-
* Shows a notice.
|
90 |
-
*
|
91 |
-
* The data has the followin format:
|
92 |
-
* "id" => an id of the notice
|
93 |
-
* "where" => a place where the notice should be visible (plugins, dashboard and so on)
|
94 |
-
* "header" => a header of the notice
|
95 |
-
* "message" => a message of the notice
|
96 |
-
* "class" => an extra class to add to the notice
|
97 |
-
* "close" => if true, then the close icon will be available to dissmish the notice
|
98 |
-
*
|
99 |
-
* @since 1.0.0
|
100 |
-
* @param type $data
|
101 |
-
* @return void
|
102 |
-
*/
|
103 |
-
public function showNotice( $data ) {
|
104 |
-
|
105 |
-
$type = empty( $data['type'] ) ? 'offer' : $data['type'];
|
106 |
-
$subtype = empty( $data['subtype'] ) ? 'none' : $data['subtype'];
|
107 |
-
|
108 |
-
$position = empty( $data['position'] ) ? 'notice' : $data['position'];
|
109 |
-
$layout = empty( $data['layout'] ) ? 'standard' : $data['layout'];
|
110 |
-
|
111 |
-
// checking if we should show a notice on a current page
|
112 |
-
$where = empty( $data['where'] ) ? array('plugins','dashboard', 'edit') : $data['where'];
|
113 |
-
$screen = get_current_screen();
|
114 |
-
|
115 |
-
if ( !in_array($screen->base, $where) ) return;
|
116 |
-
|
117 |
-
// setups a content of the notice to display
|
118 |
-
$header = empty( $data['header'] ) ? null : $data['header'];
|
119 |
-
$message = empty( $data['message'] ) ? null : $data['message'];
|
120 |
-
|
121 |
-
$hasHeader = !empty( $header );
|
122 |
-
$hasMessage = !empty( $message );
|
123 |
-
$hasClose = isset( $data['close'] ) ? $data['close'] : false;
|
124 |
-
$hasIcon = isset( $data['icon'] );
|
125 |
-
|
126 |
-
if ( !isset( $data['buttons'] ) ) $data['buttons'] = array();
|
127 |
-
|
128 |
-
$classes = array();
|
129 |
-
if ( !empty( $data['class'] ) ) $classes[] = $data['class'];
|
130 |
-
if ( !empty( $data['plugin'] ) ) $classes[] = 'notice-' . $data['plugin'];
|
131 |
-
if ( $hasIcon ) $classes[] = 'factory-has-icon';
|
132 |
-
|
133 |
-
?>
|
134 |
-
<div class="factory-notice-item factory-<?php echo $position ?> <?php echo implode(' ', $classes) ?>" id="<?php echo $data['id'] ?>">
|
135 |
-
<div class="factory-inner-wrap">
|
136 |
-
<?php if ( $hasClose ) { ?>
|
137 |
-
<a href="#" class="factory-close close factory-corner-close" data-close="<?php echo $data['close'] ?>" title="Dismiss this message."><i class="fa fa-times"></i></a>
|
138 |
-
<?php } ?>
|
139 |
-
<?php if ( $hasIcon ) { ?>
|
140 |
-
<i class="factory-icon <?php echo $data['icon'] ?>"></i>
|
141 |
-
<?php } ?>
|
142 |
-
<div class="factory-message-container">
|
143 |
-
<?php if ( $hasHeader ) { ?>
|
144 |
-
<h4 class="factory-header alert-heading"><?php echo $header ?></h4>
|
145 |
-
<?php } ?>
|
146 |
-
<span class="factory-message"><?php echo $message ?></span>
|
147 |
-
</div>
|
148 |
-
|
149 |
-
<?php if ( !empty( $data['buttons'] ) ) { ?>
|
150 |
-
<div class="factory-buttons actions">
|
151 |
-
<?php foreach( $data['buttons'] as $buttonData ) { ?>
|
152 |
-
<?php $this->renderNoticeButton( $buttonData, $data['id'] ) ?>
|
153 |
-
<?php } ?>
|
154 |
-
</div>
|
155 |
-
<?php } ?>
|
156 |
-
</div>
|
157 |
-
</div>
|
158 |
-
<?php
|
159 |
-
}
|
160 |
-
|
161 |
-
/**
|
162 |
-
* Show a notice button.
|
163 |
-
*
|
164 |
-
* @since 1.0.0
|
165 |
-
* @return void
|
166 |
-
*/
|
167 |
-
public function renderNoticeButton( $data, $id ) {
|
168 |
-
$title = $data['title'];
|
169 |
-
$action = $data['action'];
|
170 |
-
|
171 |
-
$classes = array();
|
172 |
-
if ( !empty( $data['class'] ) ) $classes[] = $data['class'];
|
173 |
-
|
174 |
-
$onclick = '';
|
175 |
-
if ( $action == 'x' ) {
|
176 |
-
$onclick = "factory_notices_323_hide_notice('$id', false); return false;";
|
177 |
-
$action = '#';
|
178 |
-
}
|
179 |
-
|
180 |
-
if ( $action == 'xx' ) {
|
181 |
-
$action = '#';
|
182 |
-
$onclick = "factory_notices_323_hide_notice('$id', true); return false;";
|
183 |
-
}
|
184 |
-
|
185 |
-
?>
|
186 |
-
<a href="<?php echo $action ?>" onclick="<?php echo $onclick ?>" class="factory-button <?php echo implode(' ', $classes) ?>">
|
187 |
-
<?php echo $title ?>
|
188 |
-
</a>
|
189 |
-
<?php
|
190 |
-
}
|
191 |
-
|
192 |
-
public static function resiter( $className, $plugin ) {
|
193 |
-
|
194 |
-
}
|
195 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/pages/boot.php
CHANGED
@@ -14,23 +14,23 @@
|
|
14 |
return;
|
15 |
}
|
16 |
|
17 |
-
if( defined('
|
18 |
return;
|
19 |
}
|
20 |
-
define('
|
21 |
|
22 |
-
define('
|
23 |
-
define('
|
24 |
|
25 |
if( !defined('FACTORY_FLAT_ADMIN') ) {
|
26 |
define('FACTORY_FLAT_ADMIN', true);
|
27 |
}
|
28 |
|
29 |
-
load_plugin_textdomain('
|
30 |
|
31 |
-
require(
|
32 |
-
require(
|
33 |
-
require(
|
34 |
-
require(
|
35 |
-
require(
|
36 |
|
14 |
return;
|
15 |
}
|
16 |
|
17 |
+
if( defined('FACTORY_PAGES_324_LOADED') ) {
|
18 |
return;
|
19 |
}
|
20 |
+
define('FACTORY_PAGES_324_LOADED', true);
|
21 |
|
22 |
+
define('FACTORY_PAGES_324_DIR', dirname(__FILE__));
|
23 |
+
define('FACTORY_PAGES_324_URL', plugins_url(null, __FILE__));
|
24 |
|
25 |
if( !defined('FACTORY_FLAT_ADMIN') ) {
|
26 |
define('FACTORY_FLAT_ADMIN', true);
|
27 |
}
|
28 |
|
29 |
+
load_plugin_textdomain('factory_pages_324', false, dirname(plugin_basename(__FILE__)) . '/langs');
|
30 |
|
31 |
+
require(FACTORY_PAGES_324_DIR . '/pages.php');
|
32 |
+
require(FACTORY_PAGES_324_DIR . '/includes/request.class.php');
|
33 |
+
require(FACTORY_PAGES_324_DIR . '/includes/page.class.php');
|
34 |
+
require(FACTORY_PAGES_324_DIR . '/includes/admin-page.class.php');
|
35 |
+
require(FACTORY_PAGES_324_DIR . '/templates/impressive-page.class.php');
|
36 |
|
libs/factory/pages/includes/admin-page.class.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
|
5 |
/**
|
6 |
* Visible page title.
|
@@ -139,13 +139,21 @@
|
|
139 |
$this->styles->connect();
|
140 |
}
|
141 |
|
142 |
-
|
|
|
|
|
|
|
|
|
143 |
{
|
|
|
|
|
|
|
|
|
144 |
if( $this->plugin ) {
|
145 |
-
return $
|
146 |
}
|
147 |
|
148 |
-
return $
|
149 |
}
|
150 |
|
151 |
/**
|
1 |
<?php
|
2 |
|
3 |
+
class FactoryPages324_AdminPage extends FactoryPages324_Page {
|
4 |
|
5 |
/**
|
6 |
* Visible page title.
|
139 |
$this->styles->connect();
|
140 |
}
|
141 |
|
142 |
+
/**
|
143 |
+
* @param null $id
|
144 |
+
* @return mixed|string
|
145 |
+
*/
|
146 |
+
public function getResultId($id = null)
|
147 |
{
|
148 |
+
$id = !empty($id)
|
149 |
+
? $id
|
150 |
+
: $this->id;
|
151 |
+
|
152 |
if( $this->plugin ) {
|
153 |
+
return $id . '-' . $this->plugin->pluginName;
|
154 |
}
|
155 |
|
156 |
+
return $id;
|
157 |
}
|
158 |
|
159 |
/**
|
libs/factory/pages/includes/page.class.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
|
5 |
/**
|
6 |
* Current Factory Plugin.
|
@@ -17,7 +17,7 @@
|
|
17 |
public function __construct($plugin = null)
|
18 |
{
|
19 |
$this->plugin = $plugin;
|
20 |
-
$this->request = new
|
21 |
|
22 |
if( $plugin ) {
|
23 |
$this->scripts = $this->plugin->newScriptList();
|
1 |
<?php
|
2 |
|
3 |
+
class FactoryPages324_Page {
|
4 |
|
5 |
/**
|
6 |
* Current Factory Plugin.
|
17 |
public function __construct($plugin = null)
|
18 |
{
|
19 |
$this->plugin = $plugin;
|
20 |
+
$this->request = new FactoryPages324_Request();
|
21 |
|
22 |
if( $plugin ) {
|
23 |
$this->scripts = $this->plugin->newScriptList();
|
libs/factory/pages/includes/request.class.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
|
5 |
/**
|
6 |
* @param null $param
|
@@ -33,9 +33,15 @@
|
|
33 |
|
34 |
if( !empty($param) ) {
|
35 |
if( isset($method[$param]) && !empty($method[$param]) ) {
|
36 |
-
|
37 |
-
|
38 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
}
|
40 |
|
41 |
return $default;
|
1 |
<?php
|
2 |
|
3 |
+
class FactoryPages324_Request {
|
4 |
|
5 |
/**
|
6 |
* @param null $param
|
33 |
|
34 |
if( !empty($param) ) {
|
35 |
if( isset($method[$param]) && !empty($method[$param]) ) {
|
36 |
+
if( is_array($method[$param]) ) {
|
37 |
+
return !empty($sanitize)
|
38 |
+
? array_map($sanitize_function_name, $method[$param])
|
39 |
+
: $method[$param];
|
40 |
+
} else {
|
41 |
+
return !empty($sanitize)
|
42 |
+
? call_user_func($sanitize_function_name, $method[$param])
|
43 |
+
: $method[$param];
|
44 |
+
}
|
45 |
}
|
46 |
|
47 |
return $default;
|
libs/factory/pages/langs/{factory_pages_322-fr_FR.mo → factory_pages_324-fr_FR.mo}
RENAMED
File without changes
|
libs/factory/pages/langs/{factory_pages_322-fr_FR.po → factory_pages_324-fr_FR.po}
RENAMED
File without changes
|
libs/factory/pages/langs/{factory_pages_322-ru_RU.mo → factory_pages_324-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/pages/langs/{factory_pages_322-ru_RU.po → factory_pages_324-ru_RU.po}
RENAMED
File without changes
|
libs/factory/pages/pages.php
CHANGED
@@ -9,14 +9,14 @@
|
|
9 |
* @since 1.0.0
|
10 |
*/
|
11 |
|
12 |
-
add_action('admin_menu', '
|
13 |
|
14 |
/**
|
15 |
* A base class to manage pages.
|
16 |
*
|
17 |
* @since 1.0.0
|
18 |
*/
|
19 |
-
class
|
20 |
|
21 |
private static $pages = array();
|
22 |
|
@@ -44,6 +44,6 @@ class FactoryPages322 {
|
|
44 |
}
|
45 |
}
|
46 |
|
47 |
-
function
|
48 |
return $pureId . '-' . $plugin->pluginName;
|
49 |
}
|
9 |
* @since 1.0.0
|
10 |
*/
|
11 |
|
12 |
+
add_action('admin_menu', 'FactoryPages324::actionAdminMenu');
|
13 |
|
14 |
/**
|
15 |
* A base class to manage pages.
|
16 |
*
|
17 |
* @since 1.0.0
|
18 |
*/
|
19 |
+
class FactoryPages324 {
|
20 |
|
21 |
private static $pages = array();
|
22 |
|
44 |
}
|
45 |
}
|
46 |
|
47 |
+
function factory_pages_324_get_page_id( $plugin, $pureId ) {
|
48 |
return $pureId . '-' . $plugin->pluginName;
|
49 |
}
|
libs/factory/pages/templates/assets/css/impressive.page.template.css
CHANGED
@@ -66,10 +66,29 @@
|
|
66 |
}
|
67 |
#WBCR .wbcr-factory-impressive-page-template-000 .wbcr-factory-page-inner-wrap {
|
68 |
margin-left: 230px;
|
69 |
-
padding:
|
70 |
vertical-align: top;
|
71 |
background: #fff;
|
72 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
#WBCR .wbcr-factory-impressive-page-template-000 .wbcr-factory-page-header {
|
74 |
position: absolute;
|
75 |
z-index: 13;
|
@@ -206,6 +225,15 @@
|
|
206 |
#WBCR .wbcr-factory-impressive-page-template-000 .wbcr-factory-content-section.wbcr-fullwidth {
|
207 |
width: 100%;
|
208 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
209 |
#WBCR .wbcr-factory-impressive-page-template-000 .wbcr-factory-right-sidebar-section {
|
210 |
width: 40%;
|
211 |
padding: 20px;
|
@@ -290,9 +318,12 @@
|
|
290 |
padding: 30px;
|
291 |
border: 1px solid #f3f1e7;
|
292 |
}
|
293 |
-
#WBCR .wbcr-factory-impressive-page-template-000 .wbcr-factory-page-more_features .wbcr-factory-feature-box .
|
294 |
-
|
|
|
|
|
295 |
color: #FFC107;
|
|
|
296 |
}
|
297 |
#WBCR .wbcr-factory-impressive-page-template-000 .wbcr-factory-page-more_features .wbcr-factory-feature-box h3 {
|
298 |
color: #7b6111;
|
66 |
}
|
67 |
#WBCR .wbcr-factory-impressive-page-template-000 .wbcr-factory-page-inner-wrap {
|
68 |
margin-left: 230px;
|
69 |
+
padding: 80px 0 0 0;
|
70 |
vertical-align: top;
|
71 |
background: #fff;
|
72 |
}
|
73 |
+
#WBCR .wbcr-factory-impressive-page-template-000 .wbcr-factory-page-inner-wrap .nav-tab-wrapper,
|
74 |
+
#WBCR .wbcr-factory-impressive-page-template-000 .wbcr-factory-page-inner-wrap h2.nav-tab-wrapper,
|
75 |
+
#WBCR .wbcr-factory-impressive-page-template-000 .wbcr-factory-page-inner-wrap h1.nav-tab-wrapper {
|
76 |
+
border: 0;
|
77 |
+
}
|
78 |
+
#WBCR .wbcr-factory-impressive-page-template-000 .wbcr-factory-page-inner-wrap .nav-tab-active {
|
79 |
+
background: #f7f7f7;
|
80 |
+
}
|
81 |
+
#WBCR .wbcr-factory-impressive-page-template-000 .wbcr-factory-page-inner-wrap .nav-tab:first-child {
|
82 |
+
margin-left: 80px;
|
83 |
+
}
|
84 |
+
#WBCR .wbcr-factory-impressive-page-template-000 .wbcr-factory-page-inner-wrap .nav-tab:hover {
|
85 |
+
background: #f7f7f7;
|
86 |
+
}
|
87 |
+
#WBCR .wbcr-factory-impressive-page-template-000 .wbcr-factory-page-inner-wrap .nav-tab:active,
|
88 |
+
#WBCR .wbcr-factory-impressive-page-template-000 .wbcr-factory-page-inner-wrap .nav-tab:focus {
|
89 |
+
box-shadow: none;
|
90 |
+
outline: none;
|
91 |
+
}
|
92 |
#WBCR .wbcr-factory-impressive-page-template-000 .wbcr-factory-page-header {
|
93 |
position: absolute;
|
94 |
z-index: 13;
|
225 |
#WBCR .wbcr-factory-impressive-page-template-000 .wbcr-factory-content-section.wbcr-fullwidth {
|
226 |
width: 100%;
|
227 |
}
|
228 |
+
#WBCR .wbcr-factory-impressive-page-template-000 .wbcr-factory-content-section .nav-tab-wrapper {
|
229 |
+
margin-top: 15px;
|
230 |
+
}
|
231 |
+
#WBCR .wbcr-factory-impressive-page-template-000 .wbcr-factory-content-section .wbcr-factory-content {
|
232 |
+
background: #f7f7f7;
|
233 |
+
padding: 40px 20px;
|
234 |
+
border: 1px solid #dad8d8;
|
235 |
+
box-shadow: -1px 0px 1px rgba(0, 0, 0, 0.1);
|
236 |
+
}
|
237 |
#WBCR .wbcr-factory-impressive-page-template-000 .wbcr-factory-right-sidebar-section {
|
238 |
width: 40%;
|
239 |
padding: 20px;
|
318 |
padding: 30px;
|
319 |
border: 1px solid #f3f1e7;
|
320 |
}
|
321 |
+
#WBCR .wbcr-factory-impressive-page-template-000 .wbcr-factory-page-more_features .wbcr-factory-feature-box .dashicons {
|
322 |
+
width: 50px;
|
323 |
+
height: 50px;
|
324 |
+
font-size: 50px;
|
325 |
color: #FFC107;
|
326 |
+
line-height: normal;
|
327 |
}
|
328 |
#WBCR .wbcr-factory-impressive-page-template-000 .wbcr-factory-page-more_features .wbcr-factory-feature-box h3 {
|
329 |
color: #7b6111;
|
libs/factory/pages/templates/assets/css/impressive.page.template.less
CHANGED
@@ -89,11 +89,29 @@
|
|
89 |
//display: inline-block;
|
90 |
//min-height: 800px;
|
91 |
margin-left: 230px;
|
92 |
-
padding: 120px 0 20px 20px;
|
|
|
93 |
vertical-align: top;
|
94 |
background: #fff;
|
95 |
//min-height: 800px;
|
96 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
97 |
}
|
98 |
|
99 |
.wbcr-factory-page-header {
|
@@ -244,6 +262,15 @@
|
|
244 |
&.wbcr-fullwidth {
|
245 |
width: 100%;
|
246 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
247 |
}
|
248 |
|
249 |
.wbcr-factory-right-sidebar-section {
|
@@ -345,9 +372,12 @@
|
|
345 |
background: #fdfcf7;
|
346 |
padding: 30px;
|
347 |
border: 1px solid #f3f1e7;
|
348 |
-
.
|
349 |
-
|
|
|
|
|
350 |
color: #FFC107;
|
|
|
351 |
}
|
352 |
h3 {
|
353 |
color: #7b6111;
|
89 |
//display: inline-block;
|
90 |
//min-height: 800px;
|
91 |
margin-left: 230px;
|
92 |
+
//padding: 120px 0 20px 20px;
|
93 |
+
padding: 80px 0 0 0;
|
94 |
vertical-align: top;
|
95 |
background: #fff;
|
96 |
//min-height: 800px;
|
97 |
+
.nav-tab-wrapper, h2.nav-tab-wrapper, h1.nav-tab-wrapper {
|
98 |
+
border: 0;
|
99 |
+
}
|
100 |
+
.nav-tab-active {
|
101 |
+
background: #f7f7f7;
|
102 |
+
}
|
103 |
+
.nav-tab:first-child {
|
104 |
+
margin-left: 80px;
|
105 |
+
}
|
106 |
+
.nav-tab:hover {
|
107 |
+
background: #f7f7f7;
|
108 |
+
}
|
109 |
+
.nav-tab {
|
110 |
+
&:active, &:focus {
|
111 |
+
box-shadow: none;
|
112 |
+
outline: none;
|
113 |
+
}
|
114 |
+
}
|
115 |
}
|
116 |
|
117 |
.wbcr-factory-page-header {
|
262 |
&.wbcr-fullwidth {
|
263 |
width: 100%;
|
264 |
}
|
265 |
+
.nav-tab-wrapper {
|
266 |
+
margin-top: 15px;
|
267 |
+
}
|
268 |
+
.wbcr-factory-content {
|
269 |
+
background: #f7f7f7;
|
270 |
+
padding: 40px 20px;
|
271 |
+
border: 1px solid #dad8d8;
|
272 |
+
box-shadow: -1px 0px 1px rgba(0, 0, 0, 0.1);
|
273 |
+
}
|
274 |
}
|
275 |
|
276 |
.wbcr-factory-right-sidebar-section {
|
372 |
background: #fdfcf7;
|
373 |
padding: 30px;
|
374 |
border: 1px solid #f3f1e7;
|
375 |
+
.dashicons {
|
376 |
+
width: 50px;
|
377 |
+
height: 50px;
|
378 |
+
font-size: 50px;
|
379 |
color: #FFC107;
|
380 |
+
line-height: normal;
|
381 |
}
|
382 |
h3 {
|
383 |
color: #7b6111;
|
libs/factory/pages/templates/impressive-page.class.php
CHANGED
@@ -5,13 +5,13 @@
|
|
5 |
* Author: Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
* Version: 1.0.0
|
7 |
*/
|
8 |
-
abstract class
|
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
|
@@ -22,8 +22,10 @@
|
|
22 |
public $internal = true;
|
23 |
|
24 |
public $type = 'options';
|
|
|
|
|
25 |
|
26 |
-
public $page_menu_dashicon
|
27 |
|
28 |
public $page_menu_position = 10;
|
29 |
|
@@ -36,7 +38,7 @@
|
|
36 |
public function __construct(Factory326_Plugin $plugin)
|
37 |
{
|
38 |
|
39 |
-
$this->menuIcon =
|
40 |
|
41 |
parent::__construct($plugin);
|
42 |
|
@@ -46,18 +48,19 @@
|
|
46 |
? ' ' . $this->page_menu_dashicon
|
47 |
: '';
|
48 |
|
49 |
-
$this->titlePluginActionLink = __('Settings', '
|
50 |
|
51 |
//if( $this->type == 'options' ) {
|
52 |
//$this->show_right_sidebar_in_options = true;
|
53 |
//$this->show_bottom_sidebar = false;
|
54 |
//}
|
55 |
-
|
56 |
$factory_impressive_page_menu[$plugin->pluginName][$this->getResultId()] = array(
|
57 |
'type' => $this->type, // page, options
|
58 |
'url' => $this->getBaseUrl(),
|
59 |
'title' => '<span class="dashicons' . $dashicon . '"></span> ' . $this->getMenuTitle(),
|
60 |
-
'position' => $this->page_menu_position
|
|
|
61 |
);
|
62 |
}
|
63 |
|
@@ -82,7 +85,7 @@
|
|
82 |
/**
|
83 |
* Requests assets (js and css) for the page.
|
84 |
*
|
85 |
-
* @see
|
86 |
*
|
87 |
* @since 1.0.0
|
88 |
* @return void
|
@@ -95,22 +98,18 @@
|
|
95 |
$this->scripts->request(array(
|
96 |
'control.checkbox',
|
97 |
'control.dropdown',
|
98 |
-
'bootstrap.tooltip'
|
99 |
-
'holder.more-link',
|
100 |
-
'bootstrap.tab',
|
101 |
), 'bootstrap');
|
102 |
|
103 |
$this->styles->request(array(
|
104 |
'bootstrap.core',
|
105 |
'bootstrap.form-group',
|
106 |
'bootstrap.separator',
|
107 |
-
'bootstrap.tab',
|
108 |
-
'holder.more-link',
|
109 |
'control.dropdown',
|
110 |
'control.checkbox'
|
111 |
), 'bootstrap');
|
112 |
|
113 |
-
$this->styles->add(
|
114 |
//$this->styles->add('https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css');
|
115 |
}
|
116 |
|
@@ -177,7 +176,7 @@
|
|
177 |
public function warningNotice()
|
178 |
{
|
179 |
/*if( WP_CACHE ) {
|
180 |
-
$this->printWarningNotice(__("It seems that a caching/performance plugin is active on this site. Please manually invalidate that plugin's cache after making any changes to the settings below.", '
|
181 |
}*/
|
182 |
}
|
183 |
|
@@ -194,13 +193,13 @@
|
|
194 |
$this->plugin->pluginName . '_saved' => '1'
|
195 |
),
|
196 |
'type' => 'success',
|
197 |
-
'message' => __('The settings have been updated successfully!', '
|
198 |
-
? '<br>' . __("It seems that a caching/performance plugin is active on this site. Please manually invalidate that plugin's cache after making any changes to the settings below.", '
|
199 |
: '')
|
200 |
)
|
201 |
);
|
202 |
|
203 |
-
$notices = apply_filters('wbcr_factory_imppage_actions_notice', $notices);
|
204 |
|
205 |
foreach($notices as $key => $notice) {
|
206 |
$show_message = true;
|
@@ -230,25 +229,109 @@
|
|
230 |
protected function showPageMenu()
|
231 |
{
|
232 |
global $factory_impressive_page_menu;
|
233 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
234 |
function factory_page_menu_sort($a, $b)
|
235 |
{
|
236 |
return $a['position'] < $b['position'];
|
237 |
}
|
238 |
|
239 |
-
uasort($
|
240 |
|
241 |
?>
|
242 |
<ul>
|
243 |
-
<?php foreach($
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
249 |
</ul>
|
250 |
<?php
|
251 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
252 |
|
253 |
protected function showHeader()
|
254 |
{
|
@@ -265,7 +348,7 @@
|
|
265 |
<?php endif; ?>
|
266 |
<?php if( $this->type == 'options' ): ?>
|
267 |
<div class="wbcr-factory-control">
|
268 |
-
<input name="<?= $this->plugin->pluginName ?>_save_action" class="wbcr-factory-type-save" type="submit" value="<?php _e('Save settings', '
|
269 |
<?php wp_nonce_field('wbcr_factory_save_action', 'wbcr_factory_save'); ?>
|
270 |
</div><?php endif; ?>
|
271 |
</div>
|
@@ -368,7 +451,7 @@
|
|
368 |
if( isset($_POST[$this->plugin->pluginName . '_save_action']) && isset($_POST['wbcr_factory_save']) ) {
|
369 |
|
370 |
if( !wp_verify_nonce($_POST['wbcr_factory_save'], 'wbcr_factory_save_action') || !current_user_can('manage_options') ) {
|
371 |
-
wp_die(__('You do not have permission to edit page.', '
|
372 |
exit;
|
373 |
}
|
374 |
|
@@ -406,15 +489,23 @@
|
|
406 |
<?php $this->showPageMenu() ?>
|
407 |
</div>
|
408 |
<?php
|
409 |
-
$min_height =
|
|
|
|
|
|
|
|
|
|
|
410 |
?>
|
411 |
-
<div class="wbcr-factory-page-inner-wrap"
|
412 |
<div class="wbcr-factory-content-section<?php if( !$this->show_right_sidebar_in_options ): echo ' wbcr-fullwidth'; endif ?>">
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
|
|
|
|
|
|
418 |
</div>
|
419 |
<?php if( $this->show_right_sidebar_in_options ): ?>
|
420 |
<div class="wbcr-factory-right-sidebar-section">
|
@@ -439,17 +530,31 @@
|
|
439 |
|
440 |
protected function showPage()
|
441 |
{
|
|
|
442 |
?>
|
443 |
<div id="WBCR" class="wrap">
|
444 |
<div class="wbcr-factory-impressive-page-template-000 factory-bootstrap-330 factory-fontawesome-000">
|
445 |
<div class="wbcr-factory-page wbcr-factory-page-<?= $this->id ?>">
|
446 |
<?php $this->showHeader(); ?>
|
447 |
-
|
448 |
<div class="wbcr-factory-left-navigation-bar">
|
449 |
<?php $this->showPageMenu() ?>
|
450 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
451 |
<div class="wbcr-factory-page-inner-wrap">
|
452 |
-
<?php
|
|
|
|
|
|
|
|
|
|
|
453 |
</div>
|
454 |
</div>
|
455 |
<div class="clearfix"></div>
|
@@ -469,24 +574,24 @@
|
|
469 |
<span class="wbcr-factory-hint-icon-simple wbcr-factory-simple-red">
|
470 |
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt=""/>
|
471 |
</span>
|
472 |
-
- <?php _e('A neutral setting that can not harm your site, but you must be sure that you need to use it.', '
|
473 |
</li>
|
474 |
<li>
|
475 |
<span class="wbcr-factory-hint-icon-simple wbcr-factory-simple-grey">
|
476 |
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt=""/>
|
477 |
</span>
|
478 |
-
- <?php _e('When set this option, you must be careful. Plugins and themes may depend on this function. You must be sure that you can disable this feature for the site.', '
|
479 |
</li>
|
480 |
<li>
|
481 |
<span class="wbcr-factory-hint-icon-simple wbcr-factory-simple-green">
|
482 |
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt=""/>
|
483 |
</span>
|
484 |
-
- <?php _e('Absolutely safe setting, We recommend to use.', '
|
485 |
</li>
|
486 |
</ul>
|
487 |
----------<br>
|
488 |
|
489 |
-
<p><?php _e('Hover to the icon to get help for the feature you selected.', '
|
490 |
</div>
|
491 |
<?php
|
492 |
}
|
@@ -498,21 +603,23 @@
|
|
498 |
} else {
|
499 |
$page_url = $args[0];
|
500 |
}
|
|
|
|
|
501 |
|
502 |
?>
|
503 |
<div class="wbcr-factory-sidebar-widget">
|
504 |
<p>
|
505 |
-
<strong><?php _e('Do you want the plugin to improved and update?', '
|
506 |
</p>
|
507 |
|
508 |
-
<p><?php _e('Help the author, leave a review on wordpress.org. Thanks to feedback, I will know that the plugin is really useful to you and is needed.', '
|
509 |
|
510 |
-
<p><?php _e('And also write your ideas on how to extend or improve the plugin.', '
|
511 |
|
512 |
<p>
|
513 |
<i class="wbcr-factory-icon-5stars"></i>
|
514 |
<a href="<?= $page_url ?>" title="Go rate us" target="_blank">
|
515 |
-
<strong><?php _e('Go rate us and push ideas', '
|
516 |
</a>
|
517 |
</p>
|
518 |
</div>
|
@@ -524,7 +631,7 @@
|
|
524 |
?>
|
525 |
<div class="wbcr-factory-sidebar-widget">
|
526 |
<p>
|
527 |
-
<strong><?php _e('Donation for plugin development', '
|
528 |
</p>
|
529 |
|
530 |
<?php if( get_locale() !== 'ru_RU' ): ?>
|
@@ -533,7 +640,7 @@
|
|
533 |
<input type="hidden" name="hosted_button_id" value="VDX7JNTQPNPFW">
|
534 |
|
535 |
<div class="wbcr-factory-donation-price">5$</div>
|
536 |
-
<input type="image" src="<?=
|
537 |
</form>
|
538 |
<?php else: ?>
|
539 |
<iframe frameborder="0" allowtransparency="true" scrolling="no" src="https://money.yandex.ru/embed/donate.xml?account=410011242846510&quickpay=donate&payment-type-choice=on&mobile-payment-type-choice=on&default-sum=300&targets=%D0%9D%D0%B0+%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%BA%D1%83+%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D0%B0+%D0%B8+%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D1%83+%D0%BD%D0%BE%D0%B2%D1%8B%D1%85+%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9.+&target-visibility=on&project-name=Webcraftic&project-site=&button-text=05&comment=on&hint=%D0%9A%D0%B0%D0%BA%D1%83%D1%8E+%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8E+%D0%BD%D1%83%D0%B6%D0%BD%D0%BE+%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%B8%D1%82%D1%8C+%D0%B2+%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%3F&mail=on&successURL=" width="508" height="187"></iframe>
|
5 |
* Author: Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
* Version: 1.0.0
|
7 |
*/
|
8 |
+
abstract class FactoryPages324_ImpressiveThemplate extends FactoryPages324_AdminPage {
|
9 |
|
10 |
/**
|
11 |
* The id of the page in the admin menu.
|
12 |
*
|
13 |
* Mainly used to navigate between pages.
|
14 |
+
* @see FactoryPages324_AdminPage
|
15 |
*
|
16 |
* @since 1.0.0
|
17 |
* @var string
|
22 |
public $internal = true;
|
23 |
|
24 |
public $type = 'options';
|
25 |
+
|
26 |
+
public $page_parent_page;
|
27 |
|
28 |
+
public $page_menu_dashicon;
|
29 |
|
30 |
public $page_menu_position = 10;
|
31 |
|
38 |
public function __construct(Factory326_Plugin $plugin)
|
39 |
{
|
40 |
|
41 |
+
$this->menuIcon = FACTORY_PAGES_324_URL . '/templates/assets/img/webcraftic-plugin-icon.png';
|
42 |
|
43 |
parent::__construct($plugin);
|
44 |
|
48 |
? ' ' . $this->page_menu_dashicon
|
49 |
: '';
|
50 |
|
51 |
+
$this->titlePluginActionLink = __('Settings', 'factory_pages_324');
|
52 |
|
53 |
//if( $this->type == 'options' ) {
|
54 |
//$this->show_right_sidebar_in_options = true;
|
55 |
//$this->show_bottom_sidebar = false;
|
56 |
//}
|
57 |
+
|
58 |
$factory_impressive_page_menu[$plugin->pluginName][$this->getResultId()] = array(
|
59 |
'type' => $this->type, // page, options
|
60 |
'url' => $this->getBaseUrl(),
|
61 |
'title' => '<span class="dashicons' . $dashicon . '"></span> ' . $this->getMenuTitle(),
|
62 |
+
'position' => $this->page_menu_position,
|
63 |
+
'parent' => $this->page_parent_page
|
64 |
);
|
65 |
}
|
66 |
|
85 |
/**
|
86 |
* Requests assets (js and css) for the page.
|
87 |
*
|
88 |
+
* @see FactoryPages324_AdminPage
|
89 |
*
|
90 |
* @since 1.0.0
|
91 |
* @return void
|
98 |
$this->scripts->request(array(
|
99 |
'control.checkbox',
|
100 |
'control.dropdown',
|
101 |
+
'bootstrap.tooltip'
|
|
|
|
|
102 |
), 'bootstrap');
|
103 |
|
104 |
$this->styles->request(array(
|
105 |
'bootstrap.core',
|
106 |
'bootstrap.form-group',
|
107 |
'bootstrap.separator',
|
|
|
|
|
108 |
'control.dropdown',
|
109 |
'control.checkbox'
|
110 |
), 'bootstrap');
|
111 |
|
112 |
+
$this->styles->add(FACTORY_PAGES_324_URL . '/templates/assets/css/impressive.page.template.css');
|
113 |
//$this->styles->add('https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css');
|
114 |
}
|
115 |
|
176 |
public function warningNotice()
|
177 |
{
|
178 |
/*if( WP_CACHE ) {
|
179 |
+
$this->printWarningNotice(__("It seems that a caching/performance plugin is active on this site. Please manually invalidate that plugin's cache after making any changes to the settings below.", 'factory_pages_324'));
|
180 |
}*/
|
181 |
}
|
182 |
|
193 |
$this->plugin->pluginName . '_saved' => '1'
|
194 |
),
|
195 |
'type' => 'success',
|
196 |
+
'message' => __('The settings have been updated successfully!', 'factory_pages_324') . (WP_CACHE
|
197 |
+
? '<br>' . __("It seems that a caching/performance plugin is active on this site. Please manually invalidate that plugin's cache after making any changes to the settings below.", 'factory_pages_324')
|
198 |
: '')
|
199 |
)
|
200 |
);
|
201 |
|
202 |
+
$notices = apply_filters('wbcr_factory_imppage_actions_notice', $notices, $this->plugin, $this->id);
|
203 |
|
204 |
foreach($notices as $key => $notice) {
|
205 |
$show_message = true;
|
229 |
protected function showPageMenu()
|
230 |
{
|
231 |
global $factory_impressive_page_menu;
|
232 |
+
|
233 |
+
$page_menu = $factory_impressive_page_menu[$this->plugin->pluginName];
|
234 |
+
$self_page_id = $this->getResultId();
|
235 |
+
$current_page = isset($page_menu[$self_page_id])
|
236 |
+
? $page_menu[$self_page_id]
|
237 |
+
: null;
|
238 |
+
|
239 |
+
$parent_page_id = !empty($current_page['parent'])
|
240 |
+
? $this->getResultId($current_page['parent'])
|
241 |
+
: null;
|
242 |
+
|
243 |
function factory_page_menu_sort($a, $b)
|
244 |
{
|
245 |
return $a['position'] < $b['position'];
|
246 |
}
|
247 |
|
248 |
+
uasort($page_menu, 'factory_page_menu_sort');
|
249 |
|
250 |
?>
|
251 |
<ul>
|
252 |
+
<?php foreach($page_menu as $page_screen => $page): ?>
|
253 |
+
<?php
|
254 |
+
if( !empty($page['parent']) ) {
|
255 |
+
continue;
|
256 |
+
}
|
257 |
+
$active_tab = '';
|
258 |
+
if( $page_screen == $self_page_id || $page_screen == $parent_page_id ) {
|
259 |
+
$active_tab = ' wbcr-factory-active-tab';
|
260 |
+
}
|
261 |
+
?>
|
262 |
+
<li class="wbcr-factory-nav-tab<?= $active_tab ?>">
|
263 |
+
<a href="<?php echo $page['url'] ?>" id="<?= $page_screen ?>-tab"><?php echo $page['title'] ?></a>
|
264 |
+
</li>
|
265 |
+
<?php endforeach; ?>
|
266 |
</ul>
|
267 |
<?php
|
268 |
}
|
269 |
+
|
270 |
+
protected function showPageSubMenu()
|
271 |
+
{
|
272 |
+
global $factory_impressive_page_menu;
|
273 |
+
$self_page_id = $this->getResultId();
|
274 |
+
$page_menu = $factory_impressive_page_menu[$this->plugin->pluginName];
|
275 |
+
$current_page = isset($page_menu[$self_page_id])
|
276 |
+
? $page_menu[$self_page_id]
|
277 |
+
: null;
|
278 |
+
|
279 |
+
$page_submenu = array();
|
280 |
+
foreach($page_menu as $page_screen => $page) {
|
281 |
+
if( !empty($page['parent']) ) {
|
282 |
+
$page_parent_id = $this->getResultId($page['parent']);
|
283 |
+
|
284 |
+
if( isset($page_menu[$page_parent_id]) ) {
|
285 |
+
$page['title'] = strip_tags($page['title']);
|
286 |
+
$page_submenu[$page_parent_id][$page_screen] = $page;
|
287 |
+
}
|
288 |
+
}
|
289 |
+
}
|
290 |
+
|
291 |
+
if( empty($page_submenu) ) {
|
292 |
+
return;
|
293 |
+
}
|
294 |
+
|
295 |
+
$get_menu_id = null;
|
296 |
+
$has_parent = !empty($current_page) && !empty($current_page['parent']);
|
297 |
+
$parent_page_id = $has_parent
|
298 |
+
? $this->getResultId($current_page['parent'])
|
299 |
+
: null;
|
300 |
+
|
301 |
+
if( ($has_parent && isset($page_submenu[$parent_page_id])) ) {
|
302 |
+
$get_menu_id = $parent_page_id;
|
303 |
+
} else if( !$has_parent && isset($page_submenu[$self_page_id]) ) {
|
304 |
+
$get_menu_id = $self_page_id;
|
305 |
+
}
|
306 |
+
|
307 |
+
if( !isset($page_submenu[$get_menu_id]) ) {
|
308 |
+
return;
|
309 |
+
}
|
310 |
+
|
311 |
+
$unshift = array();
|
312 |
+
if( isset($page_menu[$get_menu_id]) ) {
|
313 |
+
$page_menu[$get_menu_id]['title'] = strip_tags($page_menu[$get_menu_id]['title']);
|
314 |
+
|
315 |
+
$unshift[$get_menu_id][$get_menu_id] = $page_menu[$get_menu_id];
|
316 |
+
$page_submenu[$get_menu_id] = $unshift[$get_menu_id] + $page_submenu[$get_menu_id];
|
317 |
+
}
|
318 |
+
|
319 |
+
?>
|
320 |
+
<h2 class="nav-tab-wrapper wp-clearfix">
|
321 |
+
<?php foreach((array)$page_submenu[$get_menu_id] as $page_screen => $page): ?>
|
322 |
+
<?php
|
323 |
+
$active_tab = '';
|
324 |
+
if( $page_screen == $this->getResultId() ) {
|
325 |
+
$active_tab = ' nav-tab-active';
|
326 |
+
}
|
327 |
+
?>
|
328 |
+
<a href="<?php echo $page['url'] ?>" id="<?= $page_screen ?>-tab" class="nav-tab<?= $active_tab ?>">
|
329 |
+
<?php echo $page['title'] ?>
|
330 |
+
</a>
|
331 |
+
<?php endforeach; ?>
|
332 |
+
</h2>
|
333 |
+
<?php
|
334 |
+
}
|
335 |
|
336 |
protected function showHeader()
|
337 |
{
|
348 |
<?php endif; ?>
|
349 |
<?php if( $this->type == 'options' ): ?>
|
350 |
<div class="wbcr-factory-control">
|
351 |
+
<input name="<?= $this->plugin->pluginName ?>_save_action" class="wbcr-factory-type-save" type="submit" value="<?php _e('Save settings', 'factory_pages_324'); ?>">
|
352 |
<?php wp_nonce_field('wbcr_factory_save_action', 'wbcr_factory_save'); ?>
|
353 |
</div><?php endif; ?>
|
354 |
</div>
|
451 |
if( isset($_POST[$this->plugin->pluginName . '_save_action']) && isset($_POST['wbcr_factory_save']) ) {
|
452 |
|
453 |
if( !wp_verify_nonce($_POST['wbcr_factory_save'], 'wbcr_factory_save_action') || !current_user_can('manage_options') ) {
|
454 |
+
wp_die(__('You do not have permission to edit page.', 'factory_pages_324'));
|
455 |
exit;
|
456 |
}
|
457 |
|
489 |
<?php $this->showPageMenu() ?>
|
490 |
</div>
|
491 |
<?php
|
492 |
+
$min_height = 0;
|
493 |
+
foreach($factory_impressive_page_menu[$this->plugin->pluginName] as $page) {
|
494 |
+
if( !isset($page['parent']) || empty($page['parent']) ) {
|
495 |
+
$min_height += 61;
|
496 |
+
}
|
497 |
+
}
|
498 |
?>
|
499 |
+
<div class="wbcr-factory-page-inner-wrap">
|
500 |
<div class="wbcr-factory-content-section<?php if( !$this->show_right_sidebar_in_options ): echo ' wbcr-fullwidth'; endif ?>">
|
501 |
+
<?php $this->showPageSubMenu() ?>
|
502 |
+
<div class="wbcr-factory-content" style="min-height:<?= $min_height ?>px">
|
503 |
+
<form method="post" class="form-horizontal">
|
504 |
+
<?php $this->showHeader(); ?>
|
505 |
+
<?php $this->showActionsNotice(); ?>
|
506 |
+
<?php $form->html(); ?>
|
507 |
+
</form>
|
508 |
+
</div>
|
509 |
</div>
|
510 |
<?php if( $this->show_right_sidebar_in_options ): ?>
|
511 |
<div class="wbcr-factory-right-sidebar-section">
|
530 |
|
531 |
protected function showPage()
|
532 |
{
|
533 |
+
global $factory_impressive_page_menu;
|
534 |
?>
|
535 |
<div id="WBCR" class="wrap">
|
536 |
<div class="wbcr-factory-impressive-page-template-000 factory-bootstrap-330 factory-fontawesome-000">
|
537 |
<div class="wbcr-factory-page wbcr-factory-page-<?= $this->id ?>">
|
538 |
<?php $this->showHeader(); ?>
|
539 |
+
|
540 |
<div class="wbcr-factory-left-navigation-bar">
|
541 |
<?php $this->showPageMenu() ?>
|
542 |
</div>
|
543 |
+
<?php
|
544 |
+
$min_height = 0;
|
545 |
+
foreach($factory_impressive_page_menu[$this->plugin->pluginName] as $page) {
|
546 |
+
if( !isset($page['parent']) || empty($page['parent']) ) {
|
547 |
+
$min_height += 61;
|
548 |
+
}
|
549 |
+
}
|
550 |
+
?>
|
551 |
<div class="wbcr-factory-page-inner-wrap">
|
552 |
+
<div class="wbcr-factory-content-section<?php if( !$this->show_right_sidebar_in_options ): echo ' wbcr-fullwidth'; endif ?>">
|
553 |
+
<?php $this->showPageSubMenu() ?>
|
554 |
+
<div class="wbcr-factory-content" style="min-height:<?= $min_height ?>px">
|
555 |
+
<?php $this->showPageContent() ?>
|
556 |
+
</div>
|
557 |
+
</div>
|
558 |
</div>
|
559 |
</div>
|
560 |
<div class="clearfix"></div>
|
574 |
<span class="wbcr-factory-hint-icon-simple wbcr-factory-simple-red">
|
575 |
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt=""/>
|
576 |
</span>
|
577 |
+
- <?php _e('A neutral setting that can not harm your site, but you must be sure that you need to use it.', 'factory_pages_324'); ?>
|
578 |
</li>
|
579 |
<li>
|
580 |
<span class="wbcr-factory-hint-icon-simple wbcr-factory-simple-grey">
|
581 |
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt=""/>
|
582 |
</span>
|
583 |
+
- <?php _e('When set this option, you must be careful. Plugins and themes may depend on this function. You must be sure that you can disable this feature for the site.', 'factory_pages_324'); ?>
|
584 |
</li>
|
585 |
<li>
|
586 |
<span class="wbcr-factory-hint-icon-simple wbcr-factory-simple-green">
|
587 |
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt=""/>
|
588 |
</span>
|
589 |
+
- <?php _e('Absolutely safe setting, We recommend to use.', 'factory_pages_324'); ?>
|
590 |
</li>
|
591 |
</ul>
|
592 |
----------<br>
|
593 |
|
594 |
+
<p><?php _e('Hover to the icon to get help for the feature you selected.', 'factory_pages_324'); ?></p>
|
595 |
</div>
|
596 |
<?php
|
597 |
}
|
603 |
} else {
|
604 |
$page_url = $args[0];
|
605 |
}
|
606 |
+
|
607 |
+
$page_url = apply_filters('wbcr_factory_imppage_rating_widget_url', $page_url, $this->plugin->pluginName, $this->getResultId());
|
608 |
|
609 |
?>
|
610 |
<div class="wbcr-factory-sidebar-widget">
|
611 |
<p>
|
612 |
+
<strong><?php _e('Do you want the plugin to improved and update?', 'factory_pages_324'); ?></strong>
|
613 |
</p>
|
614 |
|
615 |
+
<p><?php _e('Help the author, leave a review on wordpress.org. Thanks to feedback, I will know that the plugin is really useful to you and is needed.', 'factory_pages_324'); ?></p>
|
616 |
|
617 |
+
<p><?php _e('And also write your ideas on how to extend or improve the plugin.', 'factory_pages_324'); ?></p>
|
618 |
|
619 |
<p>
|
620 |
<i class="wbcr-factory-icon-5stars"></i>
|
621 |
<a href="<?= $page_url ?>" title="Go rate us" target="_blank">
|
622 |
+
<strong><?php _e('Go rate us and push ideas', 'factory_pages_324'); ?></strong>
|
623 |
</a>
|
624 |
</p>
|
625 |
</div>
|
631 |
?>
|
632 |
<div class="wbcr-factory-sidebar-widget">
|
633 |
<p>
|
634 |
+
<strong><?php _e('Donation for plugin development', 'factory_pages_324'); ?></strong>
|
635 |
</p>
|
636 |
|
637 |
<?php if( get_locale() !== 'ru_RU' ): ?>
|
640 |
<input type="hidden" name="hosted_button_id" value="VDX7JNTQPNPFW">
|
641 |
|
642 |
<div class="wbcr-factory-donation-price">5$</div>
|
643 |
+
<input type="image" src="<?= FACTORY_PAGES_324_URL ?>/templates/assets/img/paypal-donate.png" border="0" name="submit" alt="PayPal – The safer, easier way to pay online!">
|
644 |
</form>
|
645 |
<?php else: ?>
|
646 |
<iframe frameborder="0" allowtransparency="true" scrolling="no" src="https://money.yandex.ru/embed/donate.xml?account=410011242846510&quickpay=donate&payment-type-choice=on&mobile-payment-type-choice=on&default-sum=300&targets=%D0%9D%D0%B0+%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%BA%D1%83+%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D0%B0+%D0%B8+%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D1%83+%D0%BD%D0%BE%D0%B2%D1%8B%D1%85+%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9.+&target-visibility=on&project-name=Webcraftic&project-site=&button-text=05&comment=on&hint=%D0%9A%D0%B0%D0%BA%D1%83%D1%8E+%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8E+%D0%BD%D1%83%D0%B6%D0%BD%D0%BE+%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%B8%D1%82%D1%8C+%D0%B2+%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%3F&mail=on&successURL=" width="508" height="187"></iframe>
|
readme.txt
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
-
=== Clearfy
|
2 |
-
Tags: disable comments, disable updates, disable emoji, disable embeds, remove querystrings, disable rest api, bicycles by falbar,
|
3 |
Contributors: webcraftic
|
4 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=VDX7JNTQPNPFW
|
5 |
Requires at least: 4.2
|
@@ -14,6 +14,8 @@ Disables unused Wordpress features, improves performance and increases SEO ranki
|
|
14 |
|
15 |
Our company has been developing plugins and themes for Wordpress for many years and every time we develop a website for our clients, we face a number of problems. Our clients` websites are highly specialized and most of the functions that Wordpress provides are not required for the operation of their sites. These functions are simply not used by our clients, but still they consume hosting resources or create SEO optimization problems, sometimes they just disturb editors in their daily work. Fortunately for you, we made a decision to release a universal plugin to enable and disable unused Wordpress options.
|
16 |
|
|
|
|
|
17 |
Previously, ordinary webmasters had to hire a developer and pay a huge amount of money to solve typical tasks for disabling functions and optimizing Wordpress. Now most of your problems have been shifted to our shoulders and we are ready to solve them. All you need to do is to download the free plugin Cleary. We personally tested all functions of the plugin on our sites and achieved good results of WordPress performance. Testing was done on such popular resources as Pingdom, GTmetrix, PageSpeed and YSlow.
|
18 |
|
19 |
We also noticed a very important feature: improvement of pages indexing and increase of the website`s traffic, due to simple seo optimization.
|
@@ -71,10 +73,7 @@ All features of the plugin:
|
|
71 |
* <strong>Disable WPautop</strong>
|
72 |
* <strong>Disable Heartbeat</strong>
|
73 |
* <strong>Heartbeat frequency</strong>
|
74 |
-
|
75 |
-
NEW FEAUTURES!
|
76 |
-
|
77 |
-
* <strong>WP Asset CleanUp Manager (Gonzales)</strong>
|
78 |
* <strong>Disable JSON-LD sitelinks searchbox for Yoast SEO</strong>
|
79 |
* <strong>Disable Yoast Structured Data for Yoast SEO</strong>
|
80 |
|
@@ -95,8 +94,9 @@ Everyone must have this plugin. Tell your friends and colleagues about it, so yo
|
|
95 |
|
96 |
We invite you to check out a few other related free plugins that our team has also produced that you may find especially useful:
|
97 |
|
98 |
-
* [
|
99 |
-
* [
|
|
|
100 |
* [Disable updates, Updates manager, Disable automatic updates](https://wordpress.org/plugins/webcraftic-updates-manager/)
|
101 |
|
102 |
== Translations ==
|
@@ -104,6 +104,7 @@ We invite you to check out a few other related free plugins that our team has al
|
|
104 |
* English - default, always included
|
105 |
* Russian
|
106 |
* French - Thank you very much to user (kingteamdunet)
|
|
|
107 |
|
108 |
If you want to help with the translation, please contact me through this site or through the contacts inside the plugin.
|
109 |
|
@@ -125,6 +126,17 @@ This section describes how to install the plugin and get it working.
|
|
125 |
5. Features
|
126 |
|
127 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
= 1.1.7 =
|
129 |
* Fixed bug with disable embeds option
|
130 |
* Fixed bug with core update
|
1 |
+
=== Clearfy – disable tweaker and WordPress optimization plugin ===
|
2 |
+
Tags: wp disable, disable comments, disable updates, disable emoji, disable embeds, remove querystrings, disable rest api, bicycles by falbar, remove rss feeds, remove meta generator, yoast seo remove comments, yoast seo, yoast seo breadcrumbs, disable embeds,remove embeds, remove rsd link, dns-prefetch, remove dns-prefetch, meta generator, rsd link, wlw manifest link, remove wlw manifest link, canonical link, remove canonical link, shortlink link, remove shortlink link, emoji, attachment pages, remove attachment pages, rss feeds, disable rss feeds, rest api, disable rest api, remove rest api, clearfy, archives date, post pagination, archives author, hide login errors, recent comments, tag, rpc, xml, xml rpc, xmlrpc, admin bar, remove querystrings, reduce HTTP requests, disable heartbeat, disable revision, heartbeat, revision, clean, optimize, remove rest-api, remove rest-api, remove jquery migrate, html minify, robots.txt editor, plugin updates, disable plugin updates, disable core updates, core updates, enable automatic updates, disable widgets, disable default widgets, remove html comments
|
3 |
Contributors: webcraftic
|
4 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=VDX7JNTQPNPFW
|
5 |
Requires at least: 4.2
|
14 |
|
15 |
Our company has been developing plugins and themes for Wordpress for many years and every time we develop a website for our clients, we face a number of problems. Our clients` websites are highly specialized and most of the functions that Wordpress provides are not required for the operation of their sites. These functions are simply not used by our clients, but still they consume hosting resources or create SEO optimization problems, sometimes they just disturb editors in their daily work. Fortunately for you, we made a decision to release a universal plugin to enable and disable unused Wordpress options.
|
16 |
|
17 |
+
[youtube https://youtu.be/TtrX7YKdalY&feature=youtu.be]
|
18 |
+
|
19 |
Previously, ordinary webmasters had to hire a developer and pay a huge amount of money to solve typical tasks for disabling functions and optimizing Wordpress. Now most of your problems have been shifted to our shoulders and we are ready to solve them. All you need to do is to download the free plugin Cleary. We personally tested all functions of the plugin on our sites and achieved good results of WordPress performance. Testing was done on such popular resources as Pingdom, GTmetrix, PageSpeed and YSlow.
|
20 |
|
21 |
We also noticed a very important feature: improvement of pages indexing and increase of the website`s traffic, due to simple seo optimization.
|
73 |
* <strong>Disable WPautop</strong>
|
74 |
* <strong>Disable Heartbeat</strong>
|
75 |
* <strong>Heartbeat frequency</strong>
|
76 |
+
* <strong>WP Asset Manager</strong>
|
|
|
|
|
|
|
77 |
* <strong>Disable JSON-LD sitelinks searchbox for Yoast SEO</strong>
|
78 |
* <strong>Disable Yoast Structured Data for Yoast SEO</strong>
|
79 |
|
94 |
|
95 |
We invite you to check out a few other related free plugins that our team has also produced that you may find especially useful:
|
96 |
|
97 |
+
* [Disable admin notices individually](https://wordpress.org/plugins/disable-admin-notices/)
|
98 |
+
* [WP Asset Manager](https://wordpress.org/plugins/gonzales/)
|
99 |
+
* [Disable comments, Disable XML-RPC, Disable self pings)](https://wordpress.org/plugins/comments-plus/)
|
100 |
* [Disable updates, Updates manager, Disable automatic updates](https://wordpress.org/plugins/webcraftic-updates-manager/)
|
101 |
|
102 |
== Translations ==
|
104 |
* English - default, always included
|
105 |
* Russian
|
106 |
* French - Thank you very much to user (kingteamdunet)
|
107 |
+
* Italian (70%)
|
108 |
|
109 |
If you want to help with the translation, please contact me through this site or through the contacts inside the plugin.
|
110 |
|
126 |
5. Features
|
127 |
|
128 |
== Changelog ==
|
129 |
+
= 1.1.8 =
|
130 |
+
* Added new feature <strong>You will see the link "Hide notification forever" in each notice. Push it and they will not bother you anymore.</strong>
|
131 |
+
* Added new feature <strong>Disable/Enable plugin updates individually.</strong>
|
132 |
+
* Added new feature <strong>Disable/Enable plugin auto updates individually.</strong>
|
133 |
+
* Added new feature <strong>Updates nags only for Admin. This plugin allows you to hide the update WordPress reminder from all users that are not assumed Administrators (cannot upgrade plugins).</strong>
|
134 |
+
* Translation into Italian
|
135 |
+
* Fixed quick mode
|
136 |
+
* Updated interface style
|
137 |
+
* Fixed a problem with the fonts in the update manager
|
138 |
+
* Fixed problem with auto update of plugins and themes
|
139 |
+
|
140 |
= 1.1.7 =
|
141 |
* Fixed bug with disable embeds option
|
142 |
* Fixed bug with core update
|
updates/010108.php
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php #comp-page builds: premium
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Updates for altering the table used to store statistics data.
|
5 |
+
* Adds new columns and renames existing ones in order to add support for the new social buttons.
|
6 |
+
*/
|
7 |
+
class WbcrClearfyUpdate010108 extends Factory326_Update {
|
8 |
+
|
9 |
+
public function install()
|
10 |
+
{
|
11 |
+
global $wpdb, $wbcr_clearfy_plugin;
|
12 |
+
|
13 |
+
delete_option($wbcr_clearfy_plugin->pluginName . '_quick_modes');
|
14 |
+
delete_option($wbcr_clearfy_plugin->pluginName . '_disable_admin_notices');
|
15 |
+
}
|
16 |
+
}
|